Update prebuilt Clang to match Android kernel.
Bug: 132428451
Change-Id: I8f6e2cb23f381fc0c02ddea99b867e58e925e5be
diff --git a/linux-x64/clang/include/c++/v1/__bit_reference b/linux-x64/clang/include/c++/v1/__bit_reference
index c208af2..4fd1d2f 100644
--- a/linux-x64/clang/include/c++/v1/__bit_reference
+++ b/linux-x64/clang/include/c++/v1/__bit_reference
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/__bsd_locale_defaults.h b/linux-x64/clang/include/c++/v1/__bsd_locale_defaults.h
index cbc407d..2ace2a2 100644
--- a/linux-x64/clang/include/c++/v1/__bsd_locale_defaults.h
+++ b/linux-x64/clang/include/c++/v1/__bsd_locale_defaults.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------- __bsd_locale_defaults.h -----------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// The BSDs have lots of *_l functions. We don't want to define those symbols
diff --git a/linux-x64/clang/include/c++/v1/__bsd_locale_fallbacks.h b/linux-x64/clang/include/c++/v1/__bsd_locale_fallbacks.h
index 3097b01..a807fe0 100644
--- a/linux-x64/clang/include/c++/v1/__bsd_locale_fallbacks.h
+++ b/linux-x64/clang/include/c++/v1/__bsd_locale_fallbacks.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------- __bsd_locale_fallbacks.h ----------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// The BSDs have lots of *_l functions. This file provides reimplementations
diff --git a/linux-x64/clang/include/c++/v1/__config b/linux-x64/clang/include/c++/v1/__config
index bababbc..3ca6615 100644
--- a/linux-x64/clang/include/c++/v1/__config
+++ b/linux-x64/clang/include/c++/v1/__config
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- __config ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -33,7 +32,7 @@
# define _GNUC_VER_NEW 0
#endif
-#define _LIBCPP_VERSION 8000
+#define _LIBCPP_VERSION 9000
#ifndef _LIBCPP_ABI_VERSION
# define _LIBCPP_ABI_VERSION 1
@@ -95,6 +94,8 @@
// Use the smallest possible integer type to represent the index of the variant.
// Previously libc++ used "unsigned int" exclusivly.
# define _LIBCPP_ABI_VARIANT_INDEX_TYPE_OPTIMIZATION
+// Unstable attempt to provide a more optimized std::function
+# define _LIBCPP_ABI_OPTIMIZED_FUNCTION
#elif _LIBCPP_ABI_VERSION == 1
# if !defined(_LIBCPP_OBJECT_FORMAT_COFF)
// Enable compiling copies of now inline methods into the dylib to support
@@ -119,7 +120,9 @@
#define _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_X##_LIBCPP_Y
#define _LIBCPP_CONCAT(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y)
-#define _LIBCPP_NAMESPACE _LIBCPP_CONCAT(__,_LIBCPP_ABI_VERSION)
+#ifndef _LIBCPP_ABI_NAMESPACE
+# define _LIBCPP_ABI_NAMESPACE _LIBCPP_CONCAT(__,_LIBCPP_ABI_VERSION)
+#endif
#if __cplusplus < 201103L
#define _LIBCPP_CXX03_LANG
@@ -349,6 +352,18 @@
# endif // __linux__
#endif
+#ifndef _LIBCPP_CXX03_LANG
+# define _LIBCPP_ALIGNOF(_Tp) alignof(_Tp)
+#elif defined(_LIBCPP_COMPILER_CLANG)
+# define _LIBCPP_ALIGNOF(_Tp) _Alignof(_Tp)
+#else
+// This definition is potentially buggy, but it's only taken with GCC in C++03,
+// which we barely support anyway. See llvm.org/PR39713
+# define _LIBCPP_ALIGNOF(_Tp) __alignof(_Tp)
+#endif
+
+#define _LIBCPP_PREFERRED_ALIGNOF(_Tp) __alignof(_Tp)
+
#if defined(_LIBCPP_COMPILER_CLANG)
// _LIBCPP_ALTERNATE_STRING_LAYOUT is an old name for
@@ -363,7 +378,7 @@
# define _ALIGNAS_TYPE(x) alignas(x)
# define _ALIGNAS(x) alignas(x)
#else
-# define _ALIGNAS_TYPE(x) __attribute__((__aligned__(__alignof(x))))
+# define _ALIGNAS_TYPE(x) __attribute__((__aligned__(_LIBCPP_ALIGNOF(x))))
# define _ALIGNAS(x) __attribute__((__aligned__(x)))
#endif
@@ -463,16 +478,6 @@
#define _LIBCPP_IS_LITERAL(T) __is_literal(T)
#endif
-// Inline namespaces are available in Clang regardless of C++ dialect.
-#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {inline namespace _LIBCPP_NAMESPACE {
-#define _LIBCPP_END_NAMESPACE_STD } }
-#define _VSTD std::_LIBCPP_NAMESPACE
-
-namespace std {
- inline namespace _LIBCPP_NAMESPACE {
- }
-}
-
#if !defined(_LIBCPP_HAS_NO_ASAN) && !__has_feature(address_sanitizer)
#define _LIBCPP_HAS_NO_ASAN
#endif
@@ -492,10 +497,15 @@
#define _LIBCPP_ALWAYS_INLINE __attribute__ ((__always_inline__))
+// No apple compilers support ""d and ""y at this time.
+#if _LIBCPP_CLANG_VER < 800 || defined(__apple_build_version__)
+#define _LIBCPP_HAS_NO_CXX20_CHRONO_LITERALS
+#endif
+
#elif defined(_LIBCPP_COMPILER_GCC)
#define _ALIGNAS(x) __attribute__((__aligned__(x)))
-#define _ALIGNAS_TYPE(x) __attribute__((__aligned__(__alignof(x))))
+#define _ALIGNAS_TYPE(x) __attribute__((__aligned__(_LIBCPP_ALIGNOF(x))))
#define _LIBCPP_NORETURN __attribute__((noreturn))
@@ -562,15 +572,6 @@
#endif // __GXX_EXPERIMENTAL_CXX0X__
-#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { inline namespace _LIBCPP_NAMESPACE {
-#define _LIBCPP_END_NAMESPACE_STD } }
-#define _VSTD std::_LIBCPP_NAMESPACE
-
-namespace std {
- inline namespace _LIBCPP_NAMESPACE {
- }
-}
-
#if !defined(_LIBCPP_HAS_NO_ASAN) && !defined(__SANITIZE_ADDRESS__)
#define _LIBCPP_HAS_NO_ASAN
#endif
@@ -606,13 +607,6 @@
#define _ALIGNAS_TYPE(x) alignas(x)
#define _LIBCPP_HAS_NO_VARIADICS
-#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {
-#define _LIBCPP_END_NAMESPACE_STD }
-#define _VSTD std
-
-namespace std {
-}
-
#define _LIBCPP_WEAK
#define _LIBCPP_HAS_NO_ASAN
@@ -624,7 +618,7 @@
#elif defined(_LIBCPP_COMPILER_IBM)
#define _ALIGNAS(x) __attribute__((__aligned__(x)))
-#define _ALIGNAS_TYPE(x) __attribute__((__aligned__(__alignof(x))))
+#define _ALIGNAS_TYPE(x) __attribute__((__aligned__(_LIBCPP_ALIGNOF(x))))
#define _ATTRIBUTE(x) __attribute__((x))
#define _LIBCPP_NORETURN __attribute__((noreturn))
@@ -640,15 +634,6 @@
#define __MULTILOCALE_API
#endif
-#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {inline namespace _LIBCPP_NAMESPACE {
-#define _LIBCPP_END_NAMESPACE_STD } }
-#define _VSTD std::_LIBCPP_NAMESPACE
-
-namespace std {
- inline namespace _LIBCPP_NAMESPACE {
- }
-}
-
#define _LIBCPP_HAS_NO_ASAN
#define _LIBCPP_ALWAYS_INLINE __attribute__ ((__always_inline__))
@@ -657,20 +642,6 @@
#endif // _LIBCPP_COMPILER_[CLANG|GCC|MSVC|IBM]
-#if _LIBCPP_STD_VER >= 17
-#define _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM \
- _LIBCPP_BEGIN_NAMESPACE_STD inline namespace __fs { namespace filesystem {
-#else
-#define _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM \
- _LIBCPP_BEGIN_NAMESPACE_STD namespace __fs { namespace filesystem {
-#endif
-
-#define _LIBCPP_END_NAMESPACE_FILESYSTEM \
- _LIBCPP_END_NAMESPACE_STD } }
-
-#define _VSTD_FS _VSTD::__fs::filesystem
-
-
#if defined(_LIBCPP_OBJECT_FORMAT_COFF)
#ifdef _DLL
@@ -684,21 +655,23 @@
# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS
# define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS
# define _LIBCPP_OVERRIDABLE_FUNC_VIS
+# define _LIBCPP_EXPORTED_FROM_ABI
#elif defined(_LIBCPP_BUILDING_LIBRARY)
# define _LIBCPP_DLL_VIS __declspec(dllexport)
# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS
# define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS _LIBCPP_DLL_VIS
# define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_DLL_VIS
+# define _LIBCPP_EXPORTED_FROM_ABI __declspec(dllexport)
#else
# define _LIBCPP_DLL_VIS __declspec(dllimport)
# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS _LIBCPP_DLL_VIS
# define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS
# define _LIBCPP_OVERRIDABLE_FUNC_VIS
+# define _LIBCPP_EXPORTED_FROM_ABI __declspec(dllimport)
#endif
#define _LIBCPP_TYPE_VIS _LIBCPP_DLL_VIS
#define _LIBCPP_FUNC_VIS _LIBCPP_DLL_VIS
-#define _LIBCPP_EXTERN_VIS _LIBCPP_DLL_VIS
#define _LIBCPP_EXCEPTION_ABI _LIBCPP_DLL_VIS
#define _LIBCPP_HIDDEN
#define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
@@ -752,8 +725,12 @@
# endif
#endif
-#ifndef _LIBCPP_EXTERN_VIS
-#define _LIBCPP_EXTERN_VIS
+#ifndef _LIBCPP_EXPORTED_FROM_ABI
+# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
+# define _LIBCPP_EXPORTED_FROM_ABI __attribute__((__visibility__("default")))
+# else
+# define _LIBCPP_EXPORTED_FROM_ABI
+# endif
#endif
#ifndef _LIBCPP_OVERRIDABLE_FUNC_VIS
@@ -794,6 +771,15 @@
# define _LIBCPP_INTERNAL_LINKAGE _LIBCPP_ALWAYS_INLINE
#endif
+#if __has_attribute(exclude_from_explicit_instantiation)
+# define _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION __attribute__ ((__exclude_from_explicit_instantiation__))
+#else
+ // Try to approximate the effect of exclude_from_explicit_instantiation
+ // (which is that entities are not assumed to be provided by explicit
+ // template instantitations in the dylib) by always inlining those entities.
+# define _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION _LIBCPP_ALWAYS_INLINE
+#endif
+
#ifndef _LIBCPP_HIDE_FROM_ABI_PER_TU
# ifndef _LIBCPP_HIDE_FROM_ABI_PER_TU_BY_DEFAULT
# define _LIBCPP_HIDE_FROM_ABI_PER_TU 0
@@ -806,7 +792,7 @@
# if _LIBCPP_HIDE_FROM_ABI_PER_TU
# define _LIBCPP_HIDE_FROM_ABI _LIBCPP_HIDDEN _LIBCPP_INTERNAL_LINKAGE
# else
-# define _LIBCPP_HIDE_FROM_ABI _LIBCPP_HIDDEN _LIBCPP_ALWAYS_INLINE
+# define _LIBCPP_HIDE_FROM_ABI _LIBCPP_HIDDEN _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION
# endif
#endif
@@ -822,7 +808,25 @@
// Just so we can migrate to the new macros gradually.
#define _LIBCPP_INLINE_VISIBILITY _LIBCPP_HIDE_FROM_ABI
-#define _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY _LIBCPP_HIDE_FROM_ABI_AFTER_V1
+
+// Inline namespaces are available in Clang/GCC/MSVC regardless of C++ dialect.
+#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { inline namespace _LIBCPP_ABI_NAMESPACE {
+#define _LIBCPP_END_NAMESPACE_STD } }
+#define _VSTD std::_LIBCPP_ABI_NAMESPACE
+_LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD
+
+#if _LIBCPP_STD_VER >= 17
+#define _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM \
+ _LIBCPP_BEGIN_NAMESPACE_STD inline namespace __fs { namespace filesystem {
+#else
+#define _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM \
+ _LIBCPP_BEGIN_NAMESPACE_STD namespace __fs { namespace filesystem {
+#endif
+
+#define _LIBCPP_END_NAMESPACE_FILESYSTEM \
+ _LIBCPP_END_NAMESPACE_STD } }
+
+#define _VSTD_FS _VSTD::__fs::filesystem
#ifndef _LIBCPP_PREFERRED_OVERLOAD
# if __has_attribute(__enable_if__)
@@ -981,10 +985,18 @@
#define _DECLARE_C99_LDBL_MATH 1
#endif
+#if defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_NO_VCRUNTIME)
+# define _LIBCPP_DEFER_NEW_TO_VCRUNTIME
+#endif
+
// If we are getting operator new from the MSVC CRT, then allocation overloads
// for align_val_t were added in 19.12, aka VS 2017 version 15.3.
#if defined(_LIBCPP_MSVCRT) && defined(_MSC_VER) && _MSC_VER < 1912
-#define _LIBCPP_HAS_NO_ALIGNED_ALLOCATION
+# define _LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION
+#elif defined(_LIBCPP_DEFER_NEW_TO_VCRUNTIME) && !defined(__cpp_aligned_new)
+ // We're defering to Microsoft's STL to provide aligned new et al. We don't
+ // have it unless the language feature test macro is defined.
+# define _LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION
#endif
#if defined(__APPLE__)
@@ -992,16 +1004,11 @@
defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__)
# define __MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
# endif
-# if defined(__MAC_OS_X_VERSION_MIN_REQUIRED)
-# if __MAC_OS_X_VERSION_MIN_REQUIRED < 1060
-# define _LIBCPP_HAS_NO_ALIGNED_ALLOCATION
-# endif
-# endif
#endif // defined(__APPLE__)
#if !defined(_LIBCPP_HAS_NO_ALIGNED_ALLOCATION) && \
- !defined(_LIBCPP_BUILDING_LIBRARY) && \
- (!defined(__cpp_aligned_new) || __cpp_aligned_new < 201606)
+ (defined(_LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION) || \
+ (!defined(__cpp_aligned_new) || __cpp_aligned_new < 201606))
# define _LIBCPP_HAS_NO_ALIGNED_ALLOCATION
#endif
@@ -1013,6 +1020,10 @@
#define _LIBCPP_WCTYPE_IS_MASK
#endif
+#if _LIBCPP_STD_VER <= 17 || !defined(__cpp_char8_t)
+#define _LIBCPP_NO_HAS_CHAR8_T
+#endif
+
// Deprecation macros.
// Deprecations warnings are only enabled when _LIBCPP_ENABLE_DEPRECATION_WARNINGS is defined.
#if defined(_LIBCPP_ENABLE_DEPRECATION_WARNINGS)
@@ -1149,6 +1160,7 @@
defined(__Fuchsia__) || \
defined(__NetBSD__) || \
defined(__linux__) || \
+ defined(__GNU__) || \
defined(__APPLE__) || \
defined(__CloudABI__) || \
defined(__sun__) || \
@@ -1254,8 +1266,12 @@
# define _LIBCPP_DIAGNOSE_ERROR(...)
#endif
-#if __has_attribute(fallthough) || _GNUC_VER >= 700
// Use a function like macro to imply that it must be followed by a semicolon
+#if __cplusplus > 201402L && __has_cpp_attribute(fallthrough)
+# define _LIBCPP_FALLTHROUGH() [[fallthrough]]
+#elif __has_cpp_attribute(clang::fallthrough)
+# define _LIBCPP_FALLTHROUGH() [[clang::fallthrough]]
+#elif __has_attribute(fallthough) || _GNUC_VER >= 700
# define _LIBCPP_FALLTHROUGH() __attribute__((__fallthrough__))
#else
# define _LIBCPP_FALLTHROUGH() ((void)0)
@@ -1309,9 +1325,15 @@
__attribute__((availability(ios,strict,introduced=10.0))) \
__attribute__((availability(tvos,strict,introduced=10.0))) \
__attribute__((availability(watchos,strict,introduced=3.0)))
-# define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS __attribute__((unavailable))
-# define _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH __attribute__((unavailable))
-# define _LIBCPP_AVAILABILITY_BAD_ANY_CAST __attribute__((unavailable))
+# define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS \
+ __attribute__((availability(macosx,strict,introduced=10.14))) \
+ __attribute__((availability(ios,strict,introduced=12.0))) \
+ __attribute__((availability(tvos,strict,introduced=12.0))) \
+ __attribute__((availability(watchos,strict,introduced=5.0)))
+# define _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS \
+ _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS
+# define _LIBCPP_AVAILABILITY_BAD_ANY_CAST \
+ _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS
# define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS \
__attribute__((availability(macosx,strict,introduced=10.12))) \
__attribute__((availability(ios,strict,introduced=10.0))) \
@@ -1335,8 +1357,8 @@
__attribute__((availability(ios,strict,introduced=7.0)))
#else
# define _LIBCPP_AVAILABILITY_SHARED_MUTEX
+# define _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS
# define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS
-# define _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH
# define _LIBCPP_AVAILABILITY_BAD_ANY_CAST
# define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS
# define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE
@@ -1348,26 +1370,30 @@
// Define availability that depends on _LIBCPP_NO_EXCEPTIONS.
#ifdef _LIBCPP_NO_EXCEPTIONS
-# define _LIBCPP_AVAILABILITY_DYNARRAY
# define _LIBCPP_AVAILABILITY_FUTURE
# define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST
+# define _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS
+# define _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
#else
-# define _LIBCPP_AVAILABILITY_DYNARRAY _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH
-# define _LIBCPP_AVAILABILITY_FUTURE _LIBCPP_AVAILABILITY_FUTURE_ERROR
-# define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST \
- _LIBCPP_AVAILABILITY_BAD_ANY_CAST
+# define _LIBCPP_AVAILABILITY_FUTURE _LIBCPP_AVAILABILITY_FUTURE_ERROR
+# define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST _LIBCPP_AVAILABILITY_BAD_ANY_CAST
+# define _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS
+# define _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS
#endif
-// Availability of stream API in the dylib got dropped and re-added. The
-// extern template should effectively be available at:
-// availability(macosx,introduced=10.9)
-// availability(ios,introduced=7.0)
-#if defined(_LIBCPP_USE_AVAILABILITY_APPLE) && \
+// The stream API was dropped and re-added in the dylib shipped on macOS
+// and iOS. We can only assume the dylib to provide these definitions for
+// macosx >= 10.9 and ios >= 7.0. Otherwise, the definitions are available
+// from the headers, but not from the dylib. Explicit instantiation
+// declarations for streams exist conditionally to this; if we provide
+// an explicit instantiation declaration and we try to deploy to a dylib
+// that does not provide those symbols, we'll get a load-time error.
+#if !defined(_LIBCPP_BUILDING_LIBRARY) && \
((defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \
__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1090) || \
(defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && \
__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 70000))
-#define _LIBCPP_AVAILABILITY_NO_STREAMS_EXTERN_TEMPLATE
+# define _LIBCPP_DO_NOT_ASSUME_STREAMS_EXPLICIT_INSTANTIATION_IN_DYLIB
#endif
#if defined(_LIBCPP_COMPILER_IBM)
@@ -1410,6 +1436,8 @@
# endif // defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_BUILDING_LIBRARY)
#endif // _LIBCPP_NO_AUTO_LINK
+#define _LIBCPP_UNUSED_VAR(x) ((void)(x))
+
#endif // __cplusplus
#endif // _LIBCPP_CONFIG
diff --git a/linux-x64/clang/include/c++/v1/__cxxabi_config.h b/linux-x64/clang/include/c++/v1/__cxxabi_config.h
index 46f5914..c5e6e89 100644
--- a/linux-x64/clang/include/c++/v1/__cxxabi_config.h
+++ b/linux-x64/clang/include/c++/v1/__cxxabi_config.h
@@ -1,9 +1,8 @@
//===-------------------------- __cxxabi_config.h -------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/__debug b/linux-x64/clang/include/c++/v1/__debug
index d01bacd..6ccb72c 100644
--- a/linux-x64/clang/include/c++/v1/__debug
+++ b/linux-x64/clang/include/c++/v1/__debug
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- __debug ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -74,7 +73,7 @@
/// __libcpp_debug_function - The handler function called when a _LIBCPP_ASSERT
/// fails.
-extern _LIBCPP_EXTERN_VIS __libcpp_debug_function_type __libcpp_debug_function;
+extern _LIBCPP_EXPORTED_FROM_ABI __libcpp_debug_function_type __libcpp_debug_function;
/// __libcpp_abort_debug_function - A debug handler that aborts when called.
_LIBCPP_NORETURN _LIBCPP_FUNC_VIS
diff --git a/linux-x64/clang/include/c++/v1/__errc b/linux-x64/clang/include/c++/v1/__errc
index d0f00b7..a8ad29f 100644
--- a/linux-x64/clang/include/c++/v1/__errc
+++ b/linux-x64/clang/include/c++/v1/__errc
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- __errc ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/__functional_03 b/linux-x64/clang/include/c++/v1/__functional_03
index 0a3bfba..a90cbb7 100644
--- a/linux-x64/clang/include/c++/v1/__functional_03
+++ b/linux-x64/clang/include/c++/v1/__functional_03
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/__functional_base b/linux-x64/clang/include/c++/v1/__functional_base
index 1887974..8da8324 100644
--- a/linux-x64/clang/include/c++/v1/__functional_base
+++ b/linux-x64/clang/include/c++/v1/__functional_base
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -562,7 +561,7 @@
struct _LIBCPP_TEMPLATE_VIS allocator_arg_t { };
#if defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_LIBRARY)
-extern const allocator_arg_t allocator_arg;
+extern _LIBCPP_EXPORTED_FROM_ABI const allocator_arg_t allocator_arg;
#else
/* _LIBCPP_INLINE_VAR */ constexpr allocator_arg_t allocator_arg = allocator_arg_t();
#endif
diff --git a/linux-x64/clang/include/c++/v1/__functional_base_03 b/linux-x64/clang/include/c++/v1/__functional_base_03
index 8407dcf..e6dac90 100644
--- a/linux-x64/clang/include/c++/v1/__functional_base_03
+++ b/linux-x64/clang/include/c++/v1/__functional_base_03
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/__hash_table b/linux-x64/clang/include/c++/v1/__hash_table
index c77de96..4409d6d 100644
--- a/linux-x64/clang/include/c++/v1/__hash_table
+++ b/linux-x64/clang/include/c++/v1/__hash_table
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -35,15 +34,6 @@
template <class _Key, class _Tp>
struct __hash_value_type;
-template <class _Key, class _Cp, class _Hash,
- bool = is_empty<_Hash>::value && !__libcpp_is_final<_Hash>::value>
-class __unordered_map_hasher;
-
-template <class _Key, class _Cp, class _Pred,
- bool = is_empty<_Pred>::value && !__libcpp_is_final<_Pred>::value
- >
-class __unordered_map_equal;
-
#ifndef _LIBCPP_CXX03_LANG
template <class _Tp>
struct __is_hash_value_type_imp : false_type {};
@@ -418,7 +408,7 @@
_LIBCPP_DEBUG_MODE(__get_db()->__insert_i(this));
}
- _LIBCPP_INLINE_VISIBILITY
+ _LIBCPP_INLINE_VISIBILITY
__hash_const_iterator(const __non_const_iterator& __x) _NOEXCEPT
: __node_(__x.__node_)
{
@@ -871,35 +861,32 @@
};
#endif
+template <class _Key, class _Hash, class _Equal>
+struct __enforce_unordered_container_requirements {
#ifndef _LIBCPP_CXX03_LANG
-template <class _Key, class _Hash, class _Equal, class _Alloc>
-struct __diagnose_hash_table_helper {
- static constexpr bool __trigger_diagnostics()
- _LIBCPP_DIAGNOSE_WARNING(__check_hash_requirements<_Key, _Hash>::value
- && !__invokable<_Hash const&, _Key const&>::value,
- "the specified hash functor does not provide a const call operator")
- _LIBCPP_DIAGNOSE_WARNING(is_copy_constructible<_Equal>::value
- && !__invokable<_Equal const&, _Key const&, _Key const&>::value,
- "the specified comparator type does not provide a const call operator")
- {
static_assert(__check_hash_requirements<_Key, _Hash>::value,
- "the specified hash does not meet the Hash requirements");
+ "the specified hash does not meet the Hash requirements");
static_assert(is_copy_constructible<_Equal>::value,
- "the specified comparator is required to be copy constructible");
- return true;
- }
+ "the specified comparator is required to be copy constructible");
+#endif
+ typedef int type;
};
-template <class _Key, class _Value, class _Hash, class _Equal, class _Alloc>
-struct __diagnose_hash_table_helper<
- __hash_value_type<_Key, _Value>,
- __unordered_map_hasher<_Key, __hash_value_type<_Key, _Value>, _Hash>,
- __unordered_map_equal<_Key, __hash_value_type<_Key, _Value>, _Equal>,
- _Alloc>
-: __diagnose_hash_table_helper<_Key, _Hash, _Equal, _Alloc>
-{
-};
-#endif // _LIBCPP_CXX03_LANG
+template <class _Key, class _Hash, class _Equal>
+#ifndef _LIBCPP_CXX03_LANG
+ _LIBCPP_DIAGNOSE_WARNING(!__invokable<_Equal const&, _Key const&, _Key const&>::value,
+ "the specified comparator type does not provide a const call operator")
+ _LIBCPP_DIAGNOSE_WARNING(!__invokable<_Hash const&, _Key const&>::value,
+ "the specified hash functor does not provide a const call operator")
+#endif
+typename __enforce_unordered_container_requirements<_Key, _Hash, _Equal>::type
+__diagnose_unordered_container_requirements(int);
+
+// This dummy overload is used so that the compiler won't emit a spurious
+// "no matching function for call to __diagnose_unordered_xxx" diagnostic
+// when the overload above causes a hard error.
+template <class _Key, class _Hash, class _Equal>
+int __diagnose_unordered_container_requirements(void*);
template <class _Tp, class _Hash, class _Equal, class _Alloc>
class __hash_table
@@ -963,10 +950,6 @@
typedef allocator_traits<__pointer_allocator> __pointer_alloc_traits;
typedef typename __bucket_list_deleter::pointer __node_pointer_pointer;
-#ifndef _LIBCPP_CXX03_LANG
- static_assert(__diagnose_hash_table_helper<_Tp, _Hash, _Equal, _Alloc>::__trigger_diagnostics(), "");
-#endif
-
// --- Member data begin ---
__bucket_list __bucket_list_;
__compressed_pair<__first_node, __node_allocator> __p1_;
@@ -1058,8 +1041,26 @@
);
}
+private:
+ _LIBCPP_INLINE_VISIBILITY
+ __next_pointer __node_insert_multi_prepare(size_t __cp_hash,
+ value_type& __cp_val);
+ _LIBCPP_INLINE_VISIBILITY
+ void __node_insert_multi_perform(__node_pointer __cp,
+ __next_pointer __pn) _NOEXCEPT;
+
+ _LIBCPP_INLINE_VISIBILITY
+ __next_pointer __node_insert_unique_prepare(size_t __nd_hash,
+ value_type& __nd_val);
+ _LIBCPP_INLINE_VISIBILITY
+ void __node_insert_unique_perform(__node_pointer __ptr) _NOEXCEPT;
+
+public:
+ _LIBCPP_INLINE_VISIBILITY
pair<iterator, bool> __node_insert_unique(__node_pointer __nd);
+ _LIBCPP_INLINE_VISIBILITY
iterator __node_insert_multi(__node_pointer __nd);
+ _LIBCPP_INLINE_VISIBILITY
iterator __node_insert_multi(const_iterator __p,
__node_pointer __nd);
@@ -1170,6 +1171,9 @@
_LIBCPP_INLINE_VISIBILITY
iterator __node_handle_insert_unique(const_iterator __hint,
_NodeHandle&& __nh);
+ template <class _Table>
+ _LIBCPP_INLINE_VISIBILITY
+ void __node_handle_merge_unique(_Table& __source);
template <class _NodeHandle>
_LIBCPP_INLINE_VISIBILITY
@@ -1177,6 +1181,9 @@
template <class _NodeHandle>
_LIBCPP_INLINE_VISIBILITY
iterator __node_handle_insert_multi(const_iterator __hint, _NodeHandle&& __nh);
+ template <class _Table>
+ _LIBCPP_INLINE_VISIBILITY
+ void __node_handle_merge_multi(_Table& __source);
template <class _NodeHandle>
_LIBCPP_INLINE_VISIBILITY
@@ -1849,73 +1856,112 @@
}
}
+
+// Prepare the container for an insertion of the value __value with the hash
+// __hash. This does a lookup into the container to see if __value is already
+// present, and performs a rehash if necessary. Returns a pointer to the
+// existing element if it exists, otherwise nullptr.
+//
+// Note that this function does forward exceptions if key_eq() throws, and never
+// mutates __value or actually inserts into the map.
template <class _Tp, class _Hash, class _Equal, class _Alloc>
-pair<typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator, bool>
-__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique(__node_pointer __nd)
+_LIBCPP_INLINE_VISIBILITY
+typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__next_pointer
+__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique_prepare(
+ size_t __hash, value_type& __value)
{
- __nd->__hash_ = hash_function()(__nd->__value_);
size_type __bc = bucket_count();
- bool __inserted = false;
- __next_pointer __ndptr;
- size_t __chash;
+
if (__bc != 0)
{
- __chash = __constrain_hash(__nd->__hash_, __bc);
- __ndptr = __bucket_list_[__chash];
+ size_t __chash = __constrain_hash(__hash, __bc);
+ __next_pointer __ndptr = __bucket_list_[__chash];
if (__ndptr != nullptr)
{
for (__ndptr = __ndptr->__next_; __ndptr != nullptr &&
__constrain_hash(__ndptr->__hash(), __bc) == __chash;
__ndptr = __ndptr->__next_)
{
- if (key_eq()(__ndptr->__upcast()->__value_, __nd->__value_))
- goto __done;
+ if (key_eq()(__ndptr->__upcast()->__value_, __value))
+ return __ndptr;
}
}
}
+ if (size()+1 > __bc * max_load_factor() || __bc == 0)
{
- if (size()+1 > __bc * max_load_factor() || __bc == 0)
- {
- rehash(_VSTD::max<size_type>(2 * __bc + !__is_hash_power2(__bc),
- size_type(ceil(float(size() + 1) / max_load_factor()))));
- __bc = bucket_count();
- __chash = __constrain_hash(__nd->__hash_, __bc);
- }
- // insert_after __bucket_list_[__chash], or __first_node if bucket is null
- __next_pointer __pn = __bucket_list_[__chash];
- if (__pn == nullptr)
- {
- __pn =__p1_.first().__ptr();
- __nd->__next_ = __pn->__next_;
- __pn->__next_ = __nd->__ptr();
- // fix up __bucket_list_
- __bucket_list_[__chash] = __pn;
- if (__nd->__next_ != nullptr)
- __bucket_list_[__constrain_hash(__nd->__next_->__hash(), __bc)] = __nd->__ptr();
- }
- else
- {
- __nd->__next_ = __pn->__next_;
- __pn->__next_ = __nd->__ptr();
- }
- __ndptr = __nd->__ptr();
- // increment size
- ++size();
- __inserted = true;
+ rehash(_VSTD::max<size_type>(2 * __bc + !__is_hash_power2(__bc),
+ size_type(ceil(float(size() + 1) / max_load_factor()))));
}
-__done:
-#if _LIBCPP_DEBUG_LEVEL >= 2
- return pair<iterator, bool>(iterator(__ndptr, this), __inserted);
-#else
- return pair<iterator, bool>(iterator(__ndptr), __inserted);
-#endif
+ return nullptr;
+}
+
+// Insert the node __nd into the container by pushing it into the right bucket,
+// and updating size(). Assumes that __nd->__hash is up-to-date, and that
+// rehashing has already occurred and that no element with the same key exists
+// in the map.
+template <class _Tp, class _Hash, class _Equal, class _Alloc>
+_LIBCPP_INLINE_VISIBILITY
+void
+__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique_perform(
+ __node_pointer __nd) _NOEXCEPT
+{
+ size_type __bc = bucket_count();
+ size_t __chash = __constrain_hash(__nd->__hash(), __bc);
+ // insert_after __bucket_list_[__chash], or __first_node if bucket is null
+ __next_pointer __pn = __bucket_list_[__chash];
+ if (__pn == nullptr)
+ {
+ __pn =__p1_.first().__ptr();
+ __nd->__next_ = __pn->__next_;
+ __pn->__next_ = __nd->__ptr();
+ // fix up __bucket_list_
+ __bucket_list_[__chash] = __pn;
+ if (__nd->__next_ != nullptr)
+ __bucket_list_[__constrain_hash(__nd->__next_->__hash(), __bc)] = __nd->__ptr();
+ }
+ else
+ {
+ __nd->__next_ = __pn->__next_;
+ __pn->__next_ = __nd->__ptr();
+ }
+ ++size();
}
template <class _Tp, class _Hash, class _Equal, class _Alloc>
-typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator
-__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi(__node_pointer __cp)
+pair<typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator, bool>
+__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique(__node_pointer __nd)
{
- __cp->__hash_ = hash_function()(__cp->__value_);
+ __nd->__hash_ = hash_function()(__nd->__value_);
+ __next_pointer __existing_node =
+ __node_insert_unique_prepare(__nd->__hash(), __nd->__value_);
+
+ // Insert the node, unless it already exists in the container.
+ bool __inserted = false;
+ if (__existing_node == nullptr)
+ {
+ __node_insert_unique_perform(__nd);
+ __existing_node = __nd->__ptr();
+ __inserted = true;
+ }
+#if _LIBCPP_DEBUG_LEVEL >= 2
+ return pair<iterator, bool>(iterator(__existing_node, this), __inserted);
+#else
+ return pair<iterator, bool>(iterator(__existing_node), __inserted);
+#endif
+}
+
+// Prepare the container for an insertion of the value __cp_val with the hash
+// __cp_hash. This does a lookup into the container to see if __cp_value is
+// already present, and performs a rehash if necessary. Returns a pointer to the
+// last occurance of __cp_val in the map.
+//
+// Note that this function does forward exceptions if key_eq() throws, and never
+// mutates __value or actually inserts into the map.
+template <class _Tp, class _Hash, class _Equal, class _Alloc>
+typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__next_pointer
+__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi_prepare(
+ size_t __cp_hash, value_type& __cp_val)
+{
size_type __bc = bucket_count();
if (size()+1 > __bc * max_load_factor() || __bc == 0)
{
@@ -1923,8 +1969,44 @@
size_type(ceil(float(size() + 1) / max_load_factor()))));
__bc = bucket_count();
}
- size_t __chash = __constrain_hash(__cp->__hash_, __bc);
+ size_t __chash = __constrain_hash(__cp_hash, __bc);
__next_pointer __pn = __bucket_list_[__chash];
+ if (__pn != nullptr)
+ {
+ for (bool __found = false; __pn->__next_ != nullptr &&
+ __constrain_hash(__pn->__next_->__hash(), __bc) == __chash;
+ __pn = __pn->__next_)
+ {
+ // __found key_eq() action
+ // false false loop
+ // true true loop
+ // false true set __found to true
+ // true false break
+ if (__found != (__pn->__next_->__hash() == __cp_hash &&
+ key_eq()(__pn->__next_->__upcast()->__value_, __cp_val)))
+ {
+ if (!__found)
+ __found = true;
+ else
+ break;
+ }
+ }
+ }
+ return __pn;
+}
+
+// Insert the node __cp into the container after __pn (which is the last node in
+// the bucket that compares equal to __cp). Rehashing, and checking for
+// uniqueness has already been performed (in __node_insert_multi_prepare), so
+// all we need to do is update the bucket and size(). Assumes that __cp->__hash
+// is up-to-date.
+template <class _Tp, class _Hash, class _Equal, class _Alloc>
+void
+__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi_perform(
+ __node_pointer __cp, __next_pointer __pn) _NOEXCEPT
+{
+ size_type __bc = bucket_count();
+ size_t __chash = __constrain_hash(__cp->__hash_, __bc);
if (__pn == nullptr)
{
__pn =__p1_.first().__ptr();
@@ -1938,24 +2020,6 @@
}
else
{
- for (bool __found = false; __pn->__next_ != nullptr &&
- __constrain_hash(__pn->__next_->__hash(), __bc) == __chash;
- __pn = __pn->__next_)
- {
- // __found key_eq() action
- // false false loop
- // true true loop
- // false true set __found to true
- // true false break
- if (__found != (__pn->__next_->__hash() == __cp->__hash_ &&
- key_eq()(__pn->__next_->__upcast()->__value_, __cp->__value_)))
- {
- if (!__found)
- __found = true;
- else
- break;
- }
- }
__cp->__next_ = __pn->__next_;
__pn->__next_ = __cp->__ptr();
if (__cp->__next_ != nullptr)
@@ -1966,6 +2030,17 @@
}
}
++size();
+}
+
+
+template <class _Tp, class _Hash, class _Equal, class _Alloc>
+typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator
+__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi(__node_pointer __cp)
+{
+ __cp->__hash_ = hash_function()(__cp->__value_);
+ __next_pointer __pn = __node_insert_multi_prepare(__cp->__hash(), __cp->__value_);
+ __node_insert_multi_perform(__cp, __pn);
+
#if _LIBCPP_DEBUG_LEVEL >= 2
return iterator(__cp->__ptr(), this);
#else
@@ -2217,6 +2292,32 @@
}
template <class _Tp, class _Hash, class _Equal, class _Alloc>
+template <class _Table>
+_LIBCPP_INLINE_VISIBILITY
+void
+__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_merge_unique(
+ _Table& __source)
+{
+ static_assert(is_same<__node, typename _Table::__node>::value, "");
+
+ for (typename _Table::iterator __it = __source.begin();
+ __it != __source.end();)
+ {
+ __node_pointer __src_ptr = __it.__node_->__upcast();
+ size_t __hash = hash_function()(__src_ptr->__value_);
+ __next_pointer __existing_node =
+ __node_insert_unique_prepare(__hash, __src_ptr->__value_);
+ auto __prev_iter = __it++;
+ if (__existing_node == nullptr)
+ {
+ (void)__source.remove(__prev_iter).release();
+ __src_ptr->__hash_ = __hash;
+ __node_insert_unique_perform(__src_ptr);
+ }
+ }
+}
+
+template <class _Tp, class _Hash, class _Equal, class _Alloc>
template <class _NodeHandle>
_LIBCPP_INLINE_VISIBILITY
typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator
@@ -2244,11 +2345,33 @@
return __result;
}
+template <class _Tp, class _Hash, class _Equal, class _Alloc>
+template <class _Table>
+_LIBCPP_INLINE_VISIBILITY
+void
+__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_merge_multi(
+ _Table& __source)
+{
+ static_assert(is_same<typename _Table::__node, __node>::value, "");
+
+ for (typename _Table::iterator __it = __source.begin();
+ __it != __source.end();)
+ {
+ __node_pointer __src_ptr = __it.__node_->__upcast();
+ size_t __src_hash = hash_function()(__src_ptr->__value_);
+ __next_pointer __pn =
+ __node_insert_multi_prepare(__src_hash, __src_ptr->__value_);
+ (void)__source.remove(__it++).release();
+ __src_ptr->__hash_ = __src_hash;
+ __node_insert_multi_perform(__src_ptr, __pn);
+ }
+}
#endif // _LIBCPP_STD_VER > 14
template <class _Tp, class _Hash, class _Equal, class _Alloc>
void
__hash_table<_Tp, _Hash, _Equal, _Alloc>::rehash(size_type __n)
+_LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK
{
if (__n == 1)
__n = 2;
diff --git a/linux-x64/clang/include/c++/v1/__libcpp_version b/linux-x64/clang/include/c++/v1/__libcpp_version
index e002b36..d58c55a 100644
--- a/linux-x64/clang/include/c++/v1/__libcpp_version
+++ b/linux-x64/clang/include/c++/v1/__libcpp_version
@@ -1 +1 @@
-8000
+9000
diff --git a/linux-x64/clang/include/c++/v1/__locale b/linux-x64/clang/include/c++/v1/__locale
index f43e7b4..d1d66f9 100644
--- a/linux-x64/clang/include/c++/v1/__locale
+++ b/linux-x64/clang/include/c++/v1/__locale
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -1255,13 +1254,13 @@
};
template <>
-struct __narrow_to_utf8<16>
+struct _LIBCPP_TEMPLATE_VIS __narrow_to_utf8<16>
: public codecvt<char16_t, char, mbstate_t>
{
_LIBCPP_INLINE_VISIBILITY
__narrow_to_utf8() : codecvt<char16_t, char, mbstate_t>(1) {}
- ~__narrow_to_utf8();
+ _LIBCPP_EXPORTED_FROM_ABI ~__narrow_to_utf8();
template <class _OutputIterator, class _CharT>
_LIBCPP_INLINE_VISIBILITY
@@ -1289,13 +1288,13 @@
};
template <>
-struct __narrow_to_utf8<32>
+struct _LIBCPP_TEMPLATE_VIS __narrow_to_utf8<32>
: public codecvt<char32_t, char, mbstate_t>
{
_LIBCPP_INLINE_VISIBILITY
__narrow_to_utf8() : codecvt<char32_t, char, mbstate_t>(1) {}
- ~__narrow_to_utf8();
+ _LIBCPP_EXPORTED_FROM_ABI ~__narrow_to_utf8();
template <class _OutputIterator, class _CharT>
_LIBCPP_INLINE_VISIBILITY
@@ -1345,13 +1344,13 @@
};
template <>
-struct __widen_from_utf8<16>
+struct _LIBCPP_TEMPLATE_VIS __widen_from_utf8<16>
: public codecvt<char16_t, char, mbstate_t>
{
_LIBCPP_INLINE_VISIBILITY
__widen_from_utf8() : codecvt<char16_t, char, mbstate_t>(1) {}
- ~__widen_from_utf8();
+ _LIBCPP_EXPORTED_FROM_ABI ~__widen_from_utf8();
template <class _OutputIterator>
_LIBCPP_INLINE_VISIBILITY
@@ -1379,13 +1378,13 @@
};
template <>
-struct __widen_from_utf8<32>
+struct _LIBCPP_TEMPLATE_VIS __widen_from_utf8<32>
: public codecvt<char32_t, char, mbstate_t>
{
_LIBCPP_INLINE_VISIBILITY
__widen_from_utf8() : codecvt<char32_t, char, mbstate_t>(1) {}
- ~__widen_from_utf8();
+ _LIBCPP_EXPORTED_FROM_ABI ~__widen_from_utf8();
template <class _OutputIterator>
_LIBCPP_INLINE_VISIBILITY
diff --git a/linux-x64/clang/include/c++/v1/__mutex_base b/linux-x64/clang/include/c++/v1/__mutex_base
index 4659ca9..008be95 100644
--- a/linux-x64/clang/include/c++/v1/__mutex_base
+++ b/linux-x64/clang/include/c++/v1/__mutex_base
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -76,9 +75,9 @@
#if defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_LIBRARY)
-extern const defer_lock_t defer_lock;
-extern const try_to_lock_t try_to_lock;
-extern const adopt_lock_t adopt_lock;
+extern _LIBCPP_EXPORTED_FROM_ABI const defer_lock_t defer_lock;
+extern _LIBCPP_EXPORTED_FROM_ABI const try_to_lock_t try_to_lock;
+extern _LIBCPP_EXPORTED_FROM_ABI const adopt_lock_t adopt_lock;
#else
diff --git a/linux-x64/clang/include/c++/v1/__node_handle b/linux-x64/clang/include/c++/v1/__node_handle
index 567f8b0..7f3bd9d 100644
--- a/linux-x64/clang/include/c++/v1/__node_handle
+++ b/linux-x64/clang/include/c++/v1/__node_handle
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -26,9 +25,6 @@
#if _LIBCPP_STD_VER > 14
-// FIXME: Uncomment this when we support the 'merge' functionality.
-// #define __cpp_lib_node_extract 201606L
-
// Specialized in __tree & __hash_table for their _NodeType.
template <class _NodeType, class _Alloc>
struct __generic_container_node_destructor;
diff --git a/linux-x64/clang/include/c++/v1/__nullptr b/linux-x64/clang/include/c++/v1/__nullptr
index aa3b4d2..45529a7 100644
--- a/linux-x64/clang/include/c++/v1/__nullptr
+++ b/linux-x64/clang/include/c++/v1/__nullptr
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- __nullptr --------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/__sso_allocator b/linux-x64/clang/include/c++/v1/__sso_allocator
index 4002736..3930128 100644
--- a/linux-x64/clang/include/c++/v1/__sso_allocator
+++ b/linux-x64/clang/include/c++/v1/__sso_allocator
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -55,14 +54,14 @@
__allocated_ = true;
return (pointer)&buf_;
}
- return static_cast<pointer>(_VSTD::__libcpp_allocate(__n * sizeof(_Tp), __alignof(_Tp)));
+ return static_cast<pointer>(_VSTD::__libcpp_allocate(__n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp)));
}
- _LIBCPP_INLINE_VISIBILITY void deallocate(pointer __p, size_type)
+ _LIBCPP_INLINE_VISIBILITY void deallocate(pointer __p, size_type __n)
{
if (__p == (pointer)&buf_)
__allocated_ = false;
else
- _VSTD::__libcpp_deallocate(__p, __alignof(_Tp));
+ _VSTD::__libcpp_deallocate(__p, __n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp));
}
_LIBCPP_INLINE_VISIBILITY size_type max_size() const throw() {return size_type(~0) / sizeof(_Tp);}
diff --git a/linux-x64/clang/include/c++/v1/__std_stream b/linux-x64/clang/include/c++/v1/__std_stream
index db90795..5a9a470 100644
--- a/linux-x64/clang/include/c++/v1/__std_stream
+++ b/linux-x64/clang/include/c++/v1/__std_stream
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/__string b/linux-x64/clang/include/c++/v1/__string
index 44c5598..a88b976 100644
--- a/linux-x64/clang/include/c++/v1/__string
+++ b/linux-x64/clang/include/c++/v1/__string
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- __string ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -47,6 +46,7 @@
template <> struct char_traits<char>;
template <> struct char_traits<wchar_t>;
+template <> struct char_traits<char8_t>; // c++20
} // std
@@ -389,6 +389,102 @@
}
+#ifndef _LIBCPP_NO_HAS_CHAR8_T
+
+template <>
+struct _LIBCPP_TEMPLATE_VIS char_traits<char8_t>
+{
+ typedef char8_t char_type;
+ typedef unsigned int int_type;
+ typedef streamoff off_type;
+ typedef u8streampos pos_type;
+ typedef mbstate_t state_type;
+
+ static inline constexpr void assign(char_type& __c1, const char_type& __c2) noexcept
+ {__c1 = __c2;}
+ static inline constexpr bool eq(char_type __c1, char_type __c2) noexcept
+ {return __c1 == __c2;}
+ static inline constexpr bool lt(char_type __c1, char_type __c2) noexcept
+ {return __c1 < __c2;}
+
+ static constexpr
+ int compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT;
+
+ static constexpr
+ size_t length(const char_type* __s) _NOEXCEPT;
+
+ _LIBCPP_INLINE_VISIBILITY static constexpr
+ const char_type* find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT;
+
+ static char_type* move(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
+ {return __n == 0 ? __s1 : (char_type*) memmove(__s1, __s2, __n);}
+
+ static char_type* copy(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
+ {
+ _LIBCPP_ASSERT(__s2 < __s1 || __s2 >= __s1+__n, "char_traits::copy overlapped range");
+ return __n == 0 ? __s1 : (char_type*)memcpy(__s1, __s2, __n);
+ }
+
+ static char_type* assign(char_type* __s, size_t __n, char_type __a) _NOEXCEPT
+ {return __n == 0 ? __s : (char_type*)memset(__s, to_int_type(__a), __n);}
+
+ static inline constexpr int_type not_eof(int_type __c) noexcept
+ {return eq_int_type(__c, eof()) ? ~eof() : __c;}
+ static inline constexpr char_type to_char_type(int_type __c) noexcept
+ {return char_type(__c);}
+ static inline constexpr int_type to_int_type(char_type __c) noexcept
+ {return int_type(__c);}
+ static inline constexpr bool eq_int_type(int_type __c1, int_type __c2) noexcept
+ {return __c1 == __c2;}
+ static inline constexpr int_type eof() noexcept
+ {return int_type(EOF);}
+};
+
+// TODO use '__builtin_strlen' if it ever supports char8_t ??
+inline constexpr
+size_t
+char_traits<char8_t>::length(const char_type* __s) _NOEXCEPT
+{
+ size_t __len = 0;
+ for (; !eq(*__s, char_type(0)); ++__s)
+ ++__len;
+ return __len;
+}
+
+inline constexpr
+int
+char_traits<char8_t>::compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
+{
+#if __has_feature(cxx_constexpr_string_builtins)
+ return __builtin_memcmp(__s1, __s2, __n);
+#else
+ for (; __n; --__n, ++__s1, ++__s2)
+ {
+ if (lt(*__s1, *__s2))
+ return -1;
+ if (lt(*__s2, *__s1))
+ return 1;
+ }
+ return 0;
+#endif
+}
+
+// TODO use '__builtin_char_memchr' if it ever supports char8_t ??
+inline constexpr
+const char8_t*
+char_traits<char8_t>::find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT
+{
+ for (; __n; --__n)
+ {
+ if (eq(*__s, __a))
+ return __s;
+ ++__s;
+ }
+ return 0;
+}
+
+#endif // #_LIBCPP_NO_HAS_CHAR8_T
+
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
template <>
diff --git a/linux-x64/clang/include/c++/v1/__threading_support b/linux-x64/clang/include/c++/v1/__threading_support
index 2024900..baa1222 100644
--- a/linux-x64/clang/include/c++/v1/__threading_support
+++ b/linux-x64/clang/include/c++/v1/__threading_support
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/__tree b/linux-x64/clang/include/c++/v1/__tree
index 3b3586c..9f0931e 100644
--- a/linux-x64/clang/include/c++/v1/__tree
+++ b/linux-x64/clang/include/c++/v1/__tree
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -27,6 +26,13 @@
_LIBCPP_BEGIN_NAMESPACE_STD
+#if defined(__GNUC__) && !defined(__clang__) // gcc.gnu.org/PR37804
+template <class, class, class, class> class _LIBCPP_TEMPLATE_VIS map;
+template <class, class, class, class> class _LIBCPP_TEMPLATE_VIS multimap;
+template <class, class, class> class _LIBCPP_TEMPLATE_VIS set;
+template <class, class, class> class _LIBCPP_TEMPLATE_VIS multiset;
+#endif
+
template <class _Tp, class _Compare, class _Allocator> class __tree;
template <class _Tp, class _NodePtr, class _DiffType>
class _LIBCPP_TEMPLATE_VIS __tree_iterator;
@@ -40,10 +46,6 @@
template <class _Key, class _Value>
struct __value_type;
-template <class _Key, class _CP, class _Compare,
- bool = is_empty<_Compare>::value && !__libcpp_is_final<_Compare>::value>
-class __map_value_compare;
-
template <class _Allocator> class __map_node_destructor;
template <class _TreeIterator> class _LIBCPP_TEMPLATE_VIS __map_iterator;
template <class _TreeIterator> class _LIBCPP_TEMPLATE_VIS __map_const_iterator;
@@ -966,24 +968,12 @@
};
+template<class _Tp, class _Compare>
#ifndef _LIBCPP_CXX03_LANG
-template <class _Tp, class _Compare, class _Allocator>
-struct __diagnose_tree_helper {
- static constexpr bool __trigger_diagnostics()
- _LIBCPP_DIAGNOSE_WARNING(!__invokable<_Compare const&, _Tp const&, _Tp const&>::value,
- "the specified comparator type does not provide a const call operator")
- { return true; }
-};
-
-template <class _Key, class _Value, class _KeyComp, class _Alloc>
-struct __diagnose_tree_helper<
- __value_type<_Key, _Value>,
- __map_value_compare<_Key, __value_type<_Key, _Value>, _KeyComp>,
- _Alloc
-> : __diagnose_tree_helper<_Key, _KeyComp, _Alloc>
-{
-};
-#endif // !_LIBCPP_CXX03_LANG
+ _LIBCPP_DIAGNOSE_WARNING(!std::__invokable<_Compare const&, _Tp const&, _Tp const&>::value,
+ "the specified comparator type does not provide a const call operator")
+#endif
+int __diagnose_non_const_comparator();
template <class _Tp, class _Compare, class _Allocator>
class __tree
@@ -1341,15 +1331,20 @@
#endif // !_LIBCPP_CXX03_LANG
+ _LIBCPP_INLINE_VISIBILITY
pair<iterator, bool> __node_insert_unique(__node_pointer __nd);
+ _LIBCPP_INLINE_VISIBILITY
iterator __node_insert_unique(const_iterator __p,
__node_pointer __nd);
+ _LIBCPP_INLINE_VISIBILITY
iterator __node_insert_multi(__node_pointer __nd);
+ _LIBCPP_INLINE_VISIBILITY
iterator __node_insert_multi(const_iterator __p, __node_pointer __nd);
- _LIBCPP_INLINE_VISIBILITY iterator __remove_node_pointer(__node_pointer);
+ _LIBCPP_INLINE_VISIBILITY iterator
+ __remove_node_pointer(__node_pointer) _NOEXCEPT;
#if _LIBCPP_STD_VER > 14
template <class _NodeHandle, class _InsertReturnType>
@@ -1358,6 +1353,9 @@
template <class _NodeHandle>
_LIBCPP_INLINE_VISIBILITY
iterator __node_handle_insert_unique(const_iterator, _NodeHandle&&);
+ template <class _Tree>
+ _LIBCPP_INLINE_VISIBILITY
+ void __node_handle_merge_unique(_Tree& __source);
template <class _NodeHandle>
_LIBCPP_INLINE_VISIBILITY
@@ -1365,6 +1363,9 @@
template <class _NodeHandle>
_LIBCPP_INLINE_VISIBILITY
iterator __node_handle_insert_multi(const_iterator, _NodeHandle&&);
+ template <class _Tree>
+ _LIBCPP_INLINE_VISIBILITY
+ void __node_handle_merge_multi(_Tree& __source);
template <class _NodeHandle>
@@ -1384,7 +1385,7 @@
void __insert_node_at(__parent_pointer __parent,
__node_base_pointer& __child,
- __node_base_pointer __new_node);
+ __node_base_pointer __new_node) _NOEXCEPT;
template <class _Key>
iterator find(const _Key& __v);
@@ -1844,10 +1845,6 @@
{
static_assert((is_copy_constructible<value_compare>::value),
"Comparator must be copy-constructible.");
-#ifndef _LIBCPP_CXX03_LANG
- static_assert((__diagnose_tree_helper<_Tp, _Compare, _Allocator>::
- __trigger_diagnostics()), "");
-#endif
destroy(__root());
}
@@ -2129,10 +2126,9 @@
}
template <class _Tp, class _Compare, class _Allocator>
-void
-__tree<_Tp, _Compare, _Allocator>::__insert_node_at(__parent_pointer __parent,
- __node_base_pointer& __child,
- __node_base_pointer __new_node)
+void __tree<_Tp, _Compare, _Allocator>::__insert_node_at(
+ __parent_pointer __parent, __node_base_pointer& __child,
+ __node_base_pointer __new_node) _NOEXCEPT
{
__new_node->__left_ = nullptr;
__new_node->__right_ = nullptr;
@@ -2384,7 +2380,7 @@
template <class _Tp, class _Compare, class _Allocator>
typename __tree<_Tp, _Compare, _Allocator>::iterator
-__tree<_Tp, _Compare, _Allocator>::__remove_node_pointer(__node_pointer __ptr)
+__tree<_Tp, _Compare, _Allocator>::__remove_node_pointer(__node_pointer __ptr) _NOEXCEPT
{
iterator __r(__ptr);
++__r;
@@ -2472,6 +2468,30 @@
}
template <class _Tp, class _Compare, class _Allocator>
+template <class _Tree>
+_LIBCPP_INLINE_VISIBILITY
+void
+__tree<_Tp, _Compare, _Allocator>::__node_handle_merge_unique(_Tree& __source)
+{
+ static_assert(is_same<typename _Tree::__node_pointer, __node_pointer>::value, "");
+
+ for (typename _Tree::iterator __i = __source.begin();
+ __i != __source.end();)
+ {
+ __node_pointer __src_ptr = __i.__get_np();
+ __parent_pointer __parent;
+ __node_base_pointer& __child =
+ __find_equal(__parent, _NodeTypes::__get_key(__src_ptr->__value_));
+ ++__i;
+ if (__child != nullptr)
+ continue;
+ __source.__remove_node_pointer(__src_ptr);
+ __insert_node_at(__parent, __child,
+ static_cast<__node_base_pointer>(__src_ptr));
+ }
+}
+
+template <class _Tp, class _Compare, class _Allocator>
template <class _NodeHandle>
_LIBCPP_INLINE_VISIBILITY
typename __tree<_Tp, _Compare, _Allocator>::iterator
@@ -2507,6 +2527,28 @@
return iterator(__ptr);
}
+template <class _Tp, class _Compare, class _Allocator>
+template <class _Tree>
+_LIBCPP_INLINE_VISIBILITY
+void
+__tree<_Tp, _Compare, _Allocator>::__node_handle_merge_multi(_Tree& __source)
+{
+ static_assert(is_same<typename _Tree::__node_pointer, __node_pointer>::value, "");
+
+ for (typename _Tree::iterator __i = __source.begin();
+ __i != __source.end();)
+ {
+ __node_pointer __src_ptr = __i.__get_np();
+ __parent_pointer __parent;
+ __node_base_pointer& __child = __find_leaf_high(
+ __parent, _NodeTypes::__get_key(__src_ptr->__value_));
+ ++__i;
+ __source.__remove_node_pointer(__src_ptr);
+ __insert_node_at(__parent, __child,
+ static_cast<__node_base_pointer>(__src_ptr));
+ }
+}
+
#endif // _LIBCPP_STD_VER > 14
template <class _Tp, class _Compare, class _Allocator>
diff --git a/linux-x64/clang/include/c++/v1/__tuple b/linux-x64/clang/include/c++/v1/__tuple
index 69d6ee9..89134b5 100644
--- a/linux-x64/clang/include/c++/v1/__tuple
+++ b/linux-x64/clang/include/c++/v1/__tuple
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -22,36 +21,36 @@
_LIBCPP_BEGIN_NAMESPACE_STD
-template <class _Tp> class _LIBCPP_TEMPLATE_VIS tuple_size;
+template <class _Tp> struct _LIBCPP_TEMPLATE_VIS tuple_size;
#if !defined(_LIBCPP_CXX03_LANG)
template <class _Tp, class...>
using __enable_if_tuple_size_imp = _Tp;
template <class _Tp>
-class _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp<
+struct _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp<
const _Tp,
typename enable_if<!is_volatile<_Tp>::value>::type,
integral_constant<size_t, sizeof(tuple_size<_Tp>)>>>
: public integral_constant<size_t, tuple_size<_Tp>::value> {};
template <class _Tp>
-class _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp<
+struct _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp<
volatile _Tp,
typename enable_if<!is_const<_Tp>::value>::type,
integral_constant<size_t, sizeof(tuple_size<_Tp>)>>>
: public integral_constant<size_t, tuple_size<_Tp>::value> {};
template <class _Tp>
-class _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp<
+struct _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp<
const volatile _Tp,
integral_constant<size_t, sizeof(tuple_size<_Tp>)>>>
: public integral_constant<size_t, tuple_size<_Tp>::value> {};
#else
-template <class _Tp> class _LIBCPP_TEMPLATE_VIS tuple_size<const _Tp> : public tuple_size<_Tp> {};
-template <class _Tp> class _LIBCPP_TEMPLATE_VIS tuple_size<volatile _Tp> : public tuple_size<_Tp> {};
-template <class _Tp> class _LIBCPP_TEMPLATE_VIS tuple_size<const volatile _Tp> : public tuple_size<_Tp> {};
+template <class _Tp> struct _LIBCPP_TEMPLATE_VIS tuple_size<const _Tp> : public tuple_size<_Tp> {};
+template <class _Tp> struct _LIBCPP_TEMPLATE_VIS tuple_size<volatile _Tp> : public tuple_size<_Tp> {};
+template <class _Tp> struct _LIBCPP_TEMPLATE_VIS tuple_size<const volatile _Tp> : public tuple_size<_Tp> {};
#endif
template <size_t _Ip, class _Tp> class _LIBCPP_TEMPLATE_VIS tuple_element;
@@ -165,7 +164,7 @@
template <class... _Tp> struct __tuple_like<tuple<_Tp...> > : true_type {};
template <class ..._Tp>
-class _LIBCPP_TEMPLATE_VIS tuple_size<tuple<_Tp...> >
+struct _LIBCPP_TEMPLATE_VIS tuple_size<tuple<_Tp...> >
: public integral_constant<size_t, sizeof...(_Tp)>
{
};
@@ -291,7 +290,7 @@
template <class ..._Tp>
-class _LIBCPP_TEMPLATE_VIS tuple_size<__tuple_types<_Tp...> >
+struct _LIBCPP_TEMPLATE_VIS tuple_size<__tuple_types<_Tp...> >
: public integral_constant<size_t, sizeof...(_Tp)>
{
};
diff --git a/linux-x64/clang/include/c++/v1/__undef_macros b/linux-x64/clang/include/c++/v1/__undef_macros
index 60ab1db..4923ee6 100644
--- a/linux-x64/clang/include/c++/v1/__undef_macros
+++ b/linux-x64/clang/include/c++/v1/__undef_macros
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/algorithm b/linux-x64/clang/include/c++/v1/algorithm
index 9ce6aa0..7da753a 100644
--- a/linux-x64/clang/include/c++/v1/algorithm
+++ b/linux-x64/clang/include/c++/v1/algorithm
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- algorithm ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -750,6 +749,32 @@
bool operator()(const _T1& __x, const _T2& __y) {return __p_(__y, __x);}
};
+// Perform division by two quickly for positive integers (llvm.org/PR39129)
+
+template <typename _Integral>
+_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
+typename enable_if
+<
+ is_integral<_Integral>::value,
+ _Integral
+>::type
+__half_positive(_Integral __value)
+{
+ return static_cast<_Integral>(static_cast<typename make_unsigned<_Integral>::type>(__value) / 2);
+}
+
+template <typename _Tp>
+_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
+typename enable_if
+<
+ !is_integral<_Tp>::value,
+ _Tp
+>::type
+__half_positive(_Tp __value)
+{
+ return __value / 2;
+}
+
#ifdef _LIBCPP_DEBUG
template <class _Compare>
@@ -1585,6 +1610,18 @@
return __i.base();
}
+template <class _Tp>
+inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG
+typename enable_if
+<
+ is_trivially_copy_assignable<_Tp>::value,
+ const _Tp*
+>::type
+__unwrap_iter(__wrap_iter<const _Tp*> __i)
+{
+ return __i.base();
+}
+
#else
template <class _Tp>
@@ -2964,7 +3001,7 @@
{
_Dp __uid;
__rs_default __g = __rs_get();
- for (--__last, --__d; __first < __last; ++__first, --__d)
+ for (--__last, (void) --__d; __first < __last; ++__first, (void) --__d)
{
difference_type __i = __uid(__g, _Pp(0, __d));
if (__i != difference_type(0))
@@ -2986,7 +3023,7 @@
difference_type __d = __last - __first;
if (__d > 1)
{
- for (--__last; __first < __last; ++__first, --__d)
+ for (--__last; __first < __last; ++__first, (void) --__d)
{
difference_type __i = __rand(__d);
if (__i != difference_type(0))
@@ -3202,7 +3239,7 @@
difference_type __len = _VSTD::distance(__first, __last);
while (__len != 0)
{
- difference_type __l2 = __len / 2;
+ difference_type __l2 = _VSTD::__half_positive(__len);
_ForwardIterator __m = __first;
_VSTD::advance(__m, __l2);
if (__pred(*__m))
@@ -3611,6 +3648,7 @@
// stable, 4-10 compares, 0-9 swaps
template <class _Compare, class _ForwardIterator>
+_LIBCPP_HIDDEN
unsigned
__sort5(_ForwardIterator __x1, _ForwardIterator __x2, _ForwardIterator __x3,
_ForwardIterator __x4, _ForwardIterator __x5, _Compare __c)
@@ -4069,7 +4107,7 @@
difference_type __len = _VSTD::distance(__first, __last);
while (__len != 0)
{
- difference_type __l2 = __len / 2;
+ difference_type __l2 = _VSTD::__half_positive(__len);
_ForwardIterator __m = __first;
_VSTD::advance(__m, __l2);
if (__comp(*__m, __value_))
@@ -4088,14 +4126,8 @@
_ForwardIterator
lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp)
{
-#ifdef _LIBCPP_DEBUG
- typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref;
- __debug_less<_Compare> __c(__comp);
- return __lower_bound<_Comp_ref>(__first, __last, __value_, __c);
-#else // _LIBCPP_DEBUG
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref;
return __lower_bound<_Comp_ref>(__first, __last, __value_, __comp);
-#endif // _LIBCPP_DEBUG
}
template <class _ForwardIterator, class _Tp>
@@ -4117,7 +4149,7 @@
difference_type __len = _VSTD::distance(__first, __last);
while (__len != 0)
{
- difference_type __l2 = __len / 2;
+ difference_type __l2 = _VSTD::__half_positive(__len);
_ForwardIterator __m = __first;
_VSTD::advance(__m, __l2);
if (__comp(__value_, *__m))
@@ -4136,14 +4168,8 @@
_ForwardIterator
upper_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp)
{
-#ifdef _LIBCPP_DEBUG
- typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref;
- __debug_less<_Compare> __c(__comp);
- return __upper_bound<_Comp_ref>(__first, __last, __value_, __c);
-#else // _LIBCPP_DEBUG
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref;
return __upper_bound<_Comp_ref>(__first, __last, __value_, __comp);
-#endif // _LIBCPP_DEBUG
}
template <class _ForwardIterator, class _Tp>
@@ -4165,7 +4191,7 @@
difference_type __len = _VSTD::distance(__first, __last);
while (__len != 0)
{
- difference_type __l2 = __len / 2;
+ difference_type __l2 = _VSTD::__half_positive(__len);
_ForwardIterator __m = __first;
_VSTD::advance(__m, __l2);
if (__comp(*__m, __value_))
diff --git a/linux-x64/clang/include/c++/v1/any b/linux-x64/clang/include/c++/v1/any
index e2945bd..f3518c3 100644
--- a/linux-x64/clang/include/c++/v1/any
+++ b/linux-x64/clang/include/c++/v1/any
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------------ any -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -94,7 +93,7 @@
#endif
namespace std {
-class _LIBCPP_EXCEPTION_ABI bad_any_cast : public bad_cast
+class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_ANY_CAST bad_any_cast : public bad_cast
{
public:
virtual const char* what() const _NOEXCEPT;
@@ -106,6 +105,7 @@
#if _LIBCPP_STD_VER > 14
_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
+_LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST
void __throw_bad_any_cast()
{
#ifndef _LIBCPP_NO_EXCEPTIONS
@@ -577,6 +577,7 @@
template <class _ValueType>
inline _LIBCPP_INLINE_VISIBILITY
+_LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST
_ValueType any_cast(any const & __v)
{
using _RawValueType = __uncvref_t<_ValueType>;
@@ -591,6 +592,7 @@
template <class _ValueType>
inline _LIBCPP_INLINE_VISIBILITY
+_LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST
_ValueType any_cast(any & __v)
{
using _RawValueType = __uncvref_t<_ValueType>;
@@ -605,6 +607,7 @@
template <class _ValueType>
inline _LIBCPP_INLINE_VISIBILITY
+_LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST
_ValueType any_cast(any && __v)
{
using _RawValueType = __uncvref_t<_ValueType>;
diff --git a/linux-x64/clang/include/c++/v1/array b/linux-x64/clang/include/c++/v1/array
index 8f4e111..05c4b65 100644
--- a/linux-x64/clang/include/c++/v1/array
+++ b/linux-x64/clang/include/c++/v1/array
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- array -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -91,7 +90,7 @@
template <class T, size_t N >
void swap(array<T,N>& x, array<T,N>& y) noexcept(noexcept(x.swap(y))); // C++17
-template <class T> class tuple_size;
+template <class T> struct tuple_size;
template <size_t I, class T> class tuple_element;
template <class T, size_t N> struct tuple_size<array<T, N>>;
template <size_t I, class T, size_t N> struct tuple_element<I, array<T, N>>;
@@ -430,7 +429,7 @@
}
template <class _Tp, size_t _Size>
-class _LIBCPP_TEMPLATE_VIS tuple_size<array<_Tp, _Size> >
+struct _LIBCPP_TEMPLATE_VIS tuple_size<array<_Tp, _Size> >
: public integral_constant<size_t, _Size> {};
template <size_t _Ip, class _Tp, size_t _Size>
diff --git a/linux-x64/clang/include/c++/v1/atomic b/linux-x64/clang/include/c++/v1/atomic
index d37e7b4..60057f1 100644
--- a/linux-x64/clang/include/c++/v1/atomic
+++ b/linux-x64/clang/include/c++/v1/atomic
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- atomic -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/bit b/linux-x64/clang/include/c++/v1/bit
index db3812e..a2ca3bc 100644
--- a/linux-x64/clang/include/c++/v1/bit
+++ b/linux-x64/clang/include/c++/v1/bit
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------------ bit ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===---------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/bitset b/linux-x64/clang/include/c++/v1/bitset
index 6e28596..9fb91e9 100644
--- a/linux-x64/clang/include/c++/v1/bitset
+++ b/linux-x64/clang/include/c++/v1/bitset
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- bitset ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -991,7 +990,7 @@
size_t
bitset<_Size>::count() const _NOEXCEPT
{
- return static_cast<size_t>(_VSTD::count(base::__make_iter(0), base::__make_iter(_Size), true));
+ return static_cast<size_t>(__count_bool_true(base::__make_iter(0), _Size));
}
template <size_t _Size>
diff --git a/linux-x64/clang/include/c++/v1/cassert b/linux-x64/clang/include/c++/v1/cassert
index 3775990..25a0a74 100644
--- a/linux-x64/clang/include/c++/v1/cassert
+++ b/linux-x64/clang/include/c++/v1/cassert
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- cassert -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/ccomplex b/linux-x64/clang/include/c++/v1/ccomplex
index 6ed1164..0d2e0f5 100644
--- a/linux-x64/clang/include/c++/v1/ccomplex
+++ b/linux-x64/clang/include/c++/v1/ccomplex
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- ccomplex ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/cctype b/linux-x64/clang/include/c++/v1/cctype
index 7fc8134..55fc9eb 100644
--- a/linux-x64/clang/include/c++/v1/cctype
+++ b/linux-x64/clang/include/c++/v1/cctype
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- cctype ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/cerrno b/linux-x64/clang/include/c++/v1/cerrno
index bab13b8..a9268a2 100644
--- a/linux-x64/clang/include/c++/v1/cerrno
+++ b/linux-x64/clang/include/c++/v1/cerrno
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- cerrno ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/cfenv b/linux-x64/clang/include/c++/v1/cfenv
index 4fc6304..6cd91db 100644
--- a/linux-x64/clang/include/c++/v1/cfenv
+++ b/linux-x64/clang/include/c++/v1/cfenv
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- cfenv -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/cfloat b/linux-x64/clang/include/c++/v1/cfloat
index 0abe84b..da22c6f 100644
--- a/linux-x64/clang/include/c++/v1/cfloat
+++ b/linux-x64/clang/include/c++/v1/cfloat
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- cfloat -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/charconv b/linux-x64/clang/include/c++/v1/charconv
index 7cb790e..ec9baa8 100644
--- a/linux-x64/clang/include/c++/v1/charconv
+++ b/linux-x64/clang/include/c++/v1/charconv
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------------ charconv ------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -87,8 +86,16 @@
#pragma GCC system_header
#endif
+_LIBCPP_PUSH_MACROS
+#include <__undef_macros>
+
_LIBCPP_BEGIN_NAMESPACE_STD
+namespace __itoa {
+_LIBCPP_FUNC_VIS char* __u64toa(uint64_t __value, char* __buffer);
+_LIBCPP_FUNC_VIS char* __u32toa(uint32_t __value, char* __buffer);
+}
+
#if _LIBCPP_STD_VER > 11
enum class _LIBCPP_ENUM_VIS chars_format
@@ -147,9 +154,6 @@
UINT32_C(1000000000),
};
-_LIBCPP_FUNC_VIS char* __u64toa(uint64_t __value, char* __buffer);
-_LIBCPP_FUNC_VIS char* __u32toa(uint32_t __value, char* __buffer);
-
template <typename _Tp, typename = void>
struct _LIBCPP_HIDDEN __traits_base
{
@@ -607,4 +611,6 @@
_LIBCPP_END_NAMESPACE_STD
+_LIBCPP_POP_MACROS
+
#endif // _LIBCPP_CHARCONV
diff --git a/linux-x64/clang/include/c++/v1/chrono b/linux-x64/clang/include/c++/v1/chrono
index 0691101..a003751 100644
--- a/linux-x64/clang/include/c++/v1/chrono
+++ b/linux-x64/clang/include/c++/v1/chrono
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- chrono ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -33,9 +32,9 @@
struct duration_values
{
public:
- static constexpr Rep zero();
- static constexpr Rep max();
- static constexpr Rep min();
+ static constexpr Rep zero(); // noexcept in C++20
+ static constexpr Rep max(); // noexcept in C++20
+ static constexpr Rep min(); // noexcept in C++20
};
// duration
@@ -92,9 +91,9 @@
// special values
- static constexpr duration zero();
- static constexpr duration min();
- static constexpr duration max();
+ static constexpr duration zero(); // noexcept in C++20
+ static constexpr duration min(); // noexcept in C++20
+ static constexpr duration max(); // noexcept in C++20
};
typedef duration<long long, nano> nanoseconds;
@@ -134,8 +133,8 @@
// special values
- static constexpr time_point min();
- static constexpr time_point max();
+ static constexpr time_point min(); // noexcept in C++20
+ static constexpr time_point max(); // noexcept in C++20
};
} // chrono
@@ -748,6 +747,7 @@
parse(const basic_string<charT, traits, Alloc>& format, Parsable& tp,
basic_string<charT, traits, Alloc>& abbrev, minutes& offset);
+// calendrical constants
inline constexpr last_spec last{}; // C++20
inline constexpr chrono::weekday Sunday{0}; // C++20
inline constexpr chrono::weekday Monday{1}; // C++20
@@ -807,6 +807,11 @@
_LIBCPP_PUSH_MACROS
#include <__undef_macros>
+#ifndef _LIBCPP_CXX03_LANG
+_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM
+struct _FilesystemClock;
+_LIBCPP_END_NAMESPACE_FILESYSTEM
+#endif // !_LIBCPP_CXX03_LANG
_LIBCPP_BEGIN_NAMESPACE_STD
@@ -923,9 +928,9 @@
struct _LIBCPP_TEMPLATE_VIS duration_values
{
public:
- _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep zero() {return _Rep(0);}
- _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep max() {return numeric_limits<_Rep>::max();}
- _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep min() {return numeric_limits<_Rep>::lowest();}
+ _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep zero() _NOEXCEPT {return _Rep(0);}
+ _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep max() _NOEXCEPT {return numeric_limits<_Rep>::max();}
+ _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep min() _NOEXCEPT {return numeric_limits<_Rep>::lowest();}
};
#if _LIBCPP_STD_VER > 14
@@ -1080,9 +1085,9 @@
// special values
- _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR duration zero() {return duration(duration_values<rep>::zero());}
- _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR duration min() {return duration(duration_values<rep>::min());}
- _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR duration max() {return duration(duration_values<rep>::max());}
+ _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR duration zero() _NOEXCEPT {return duration(duration_values<rep>::zero());}
+ _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR duration min() _NOEXCEPT {return duration(duration_values<rep>::min());}
+ _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR duration max() _NOEXCEPT {return duration(duration_values<rep>::max());}
};
typedef duration<long long, nano> nanoseconds;
@@ -1091,7 +1096,12 @@
typedef duration<long long > seconds;
typedef duration< long, ratio< 60> > minutes;
typedef duration< long, ratio<3600> > hours;
-
+#if _LIBCPP_STD_VER > 17
+typedef duration< int, ratio_multiply<ratio<24>, hours::period>> days;
+typedef duration< int, ratio_multiply<ratio<7>, days::period>> weeks;
+typedef duration< int, ratio_multiply<ratio<146097, 400>, days::period>> years;
+typedef duration< int, ratio_divide<years::period, ratio<12>>> months;
+#endif
// Duration ==
template <class _LhsDuration, class _RhsDuration>
@@ -1363,8 +1373,8 @@
// special values
- _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR time_point min() {return time_point(duration::min());}
- _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR time_point max() {return time_point(duration::max());}
+ _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR time_point min() _NOEXCEPT {return time_point(duration::min());}
+ _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR time_point max() _NOEXCEPT {return time_point(duration::max());}
};
} // chrono
@@ -1574,6 +1584,1152 @@
typedef system_clock high_resolution_clock;
#endif
+#if _LIBCPP_STD_VER > 17
+// [time.clock.file], type file_clock
+using file_clock = _VSTD_FS::_FilesystemClock;
+
+template<class _Duration>
+using file_time = time_point<file_clock, _Duration>;
+
+
+template <class _Duration>
+using sys_time = time_point<system_clock, _Duration>;
+using sys_seconds = sys_time<seconds>;
+using sys_days = sys_time<days>;
+
+struct local_t {};
+template<class Duration>
+using local_time = time_point<local_t, Duration>;
+using local_seconds = local_time<seconds>;
+using local_days = local_time<days>;
+
+
+struct _LIBCPP_TYPE_VIS last_spec { explicit last_spec() = default; };
+
+class _LIBCPP_TYPE_VIS day {
+private:
+ unsigned char __d;
+public:
+ day() = default;
+ explicit inline constexpr day(unsigned __val) noexcept : __d(static_cast<unsigned char>(__val)) {}
+ inline constexpr day& operator++() noexcept { ++__d; return *this; }
+ inline constexpr day operator++(int) noexcept { day __tmp = *this; ++(*this); return __tmp; }
+ inline constexpr day& operator--() noexcept { --__d; return *this; }
+ inline constexpr day operator--(int) noexcept { day __tmp = *this; --(*this); return __tmp; }
+ constexpr day& operator+=(const days& __dd) noexcept;
+ constexpr day& operator-=(const days& __dd) noexcept;
+ explicit inline constexpr operator unsigned() const noexcept { return __d; }
+ inline constexpr bool ok() const noexcept { return __d >= 1 && __d <= 31; }
+ };
+
+
+inline constexpr
+bool operator==(const day& __lhs, const day& __rhs) noexcept
+{ return static_cast<unsigned>(__lhs) == static_cast<unsigned>(__rhs); }
+
+inline constexpr
+bool operator!=(const day& __lhs, const day& __rhs) noexcept
+{ return !(__lhs == __rhs); }
+
+inline constexpr
+bool operator< (const day& __lhs, const day& __rhs) noexcept
+{ return static_cast<unsigned>(__lhs) < static_cast<unsigned>(__rhs); }
+
+inline constexpr
+bool operator> (const day& __lhs, const day& __rhs) noexcept
+{ return __rhs < __lhs; }
+
+inline constexpr
+bool operator<=(const day& __lhs, const day& __rhs) noexcept
+{ return !(__rhs < __lhs);}
+
+inline constexpr
+bool operator>=(const day& __lhs, const day& __rhs) noexcept
+{ return !(__lhs < __rhs); }
+
+inline constexpr
+day operator+ (const day& __lhs, const days& __rhs) noexcept
+{ return day(static_cast<unsigned>(__lhs) + __rhs.count()); }
+
+inline constexpr
+day operator+ (const days& __lhs, const day& __rhs) noexcept
+{ return __rhs + __lhs; }
+
+inline constexpr
+day operator- (const day& __lhs, const days& __rhs) noexcept
+{ return __lhs + -__rhs; }
+
+inline constexpr
+days operator-(const day& __lhs, const day& __rhs) noexcept
+{ return days(static_cast<int>(static_cast<unsigned>(__lhs)) -
+ static_cast<int>(static_cast<unsigned>(__rhs))); }
+
+inline constexpr day& day::operator+=(const days& __dd) noexcept
+{ *this = *this + __dd; return *this; }
+
+inline constexpr day& day::operator-=(const days& __dd) noexcept
+{ *this = *this - __dd; return *this; }
+
+
+class _LIBCPP_TYPE_VIS month {
+private:
+ unsigned char __m;
+public:
+ month() = default;
+ explicit inline constexpr month(unsigned __val) noexcept : __m(static_cast<unsigned char>(__val)) {}
+ inline constexpr month& operator++() noexcept { ++__m; return *this; }
+ inline constexpr month operator++(int) noexcept { month __tmp = *this; ++(*this); return __tmp; }
+ inline constexpr month& operator--() noexcept { --__m; return *this; }
+ inline constexpr month operator--(int) noexcept { month __tmp = *this; --(*this); return __tmp; }
+ constexpr month& operator+=(const months& __m1) noexcept;
+ constexpr month& operator-=(const months& __m1) noexcept;
+ explicit inline constexpr operator unsigned() const noexcept { return __m; }
+ inline constexpr bool ok() const noexcept { return __m >= 1 && __m <= 12; }
+};
+
+
+inline constexpr
+bool operator==(const month& __lhs, const month& __rhs) noexcept
+{ return static_cast<unsigned>(__lhs) == static_cast<unsigned>(__rhs); }
+
+inline constexpr
+bool operator!=(const month& __lhs, const month& __rhs) noexcept
+{ return !(__lhs == __rhs); }
+
+inline constexpr
+bool operator< (const month& __lhs, const month& __rhs) noexcept
+{ return static_cast<unsigned>(__lhs) < static_cast<unsigned>(__rhs); }
+
+inline constexpr
+bool operator> (const month& __lhs, const month& __rhs) noexcept
+{ return __rhs < __lhs; }
+
+inline constexpr
+bool operator<=(const month& __lhs, const month& __rhs) noexcept
+{ return !(__rhs < __lhs); }
+
+inline constexpr
+bool operator>=(const month& __lhs, const month& __rhs) noexcept
+{ return !(__lhs < __rhs); }
+
+inline constexpr
+month operator+ (const month& __lhs, const months& __rhs) noexcept
+{
+ auto const __mu = static_cast<long long>(static_cast<unsigned>(__lhs)) + (__rhs.count() - 1);
+ auto const __yr = (__mu >= 0 ? __mu : __mu - 11) / 12;
+ return month{static_cast<unsigned>(__mu - __yr * 12 + 1)};
+}
+
+inline constexpr
+month operator+ (const months& __lhs, const month& __rhs) noexcept
+{ return __rhs + __lhs; }
+
+inline constexpr
+month operator- (const month& __lhs, const months& __rhs) noexcept
+{ return __lhs + -__rhs; }
+
+inline constexpr
+months operator-(const month& __lhs, const month& __rhs) noexcept
+{
+ auto const __dm = static_cast<unsigned>(__lhs) - static_cast<unsigned>(__rhs);
+ return months(__dm <= 11 ? __dm : __dm + 12);
+}
+
+inline constexpr month& month::operator+=(const months& __dm) noexcept
+{ *this = *this + __dm; return *this; }
+
+inline constexpr month& month::operator-=(const months& __dm) noexcept
+{ *this = *this - __dm; return *this; }
+
+
+class _LIBCPP_TYPE_VIS year {
+private:
+ short __y;
+public:
+ year() = default;
+ explicit inline constexpr year(int __val) noexcept : __y(static_cast<short>(__val)) {}
+
+ inline constexpr year& operator++() noexcept { ++__y; return *this; }
+ inline constexpr year operator++(int) noexcept { year __tmp = *this; ++(*this); return __tmp; }
+ inline constexpr year& operator--() noexcept { --__y; return *this; }
+ inline constexpr year operator--(int) noexcept { year __tmp = *this; --(*this); return __tmp; }
+ constexpr year& operator+=(const years& __dy) noexcept;
+ constexpr year& operator-=(const years& __dy) noexcept;
+ inline constexpr year operator+() const noexcept { return *this; }
+ inline constexpr year operator-() const noexcept { return year{-__y}; }
+
+ inline constexpr bool is_leap() const noexcept { return __y % 4 == 0 && (__y % 100 != 0 || __y % 400 == 0); }
+ explicit inline constexpr operator int() const noexcept { return __y; }
+ constexpr bool ok() const noexcept;
+ static inline constexpr year min() noexcept { return year{-32767}; }
+ static inline constexpr year max() noexcept { return year{ 32767}; }
+};
+
+
+inline constexpr
+bool operator==(const year& __lhs, const year& __rhs) noexcept
+{ return static_cast<int>(__lhs) == static_cast<int>(__rhs); }
+
+inline constexpr
+bool operator!=(const year& __lhs, const year& __rhs) noexcept
+{ return !(__lhs == __rhs); }
+
+inline constexpr
+bool operator< (const year& __lhs, const year& __rhs) noexcept
+{ return static_cast<int>(__lhs) < static_cast<int>(__rhs); }
+
+inline constexpr
+bool operator> (const year& __lhs, const year& __rhs) noexcept
+{ return __rhs < __lhs; }
+
+inline constexpr
+bool operator<=(const year& __lhs, const year& __rhs) noexcept
+{ return !(__rhs < __lhs); }
+
+inline constexpr
+bool operator>=(const year& __lhs, const year& __rhs) noexcept
+{ return !(__lhs < __rhs); }
+
+inline constexpr
+year operator+ (const year& __lhs, const years& __rhs) noexcept
+{ return year(static_cast<int>(__lhs) + __rhs.count()); }
+
+inline constexpr
+year operator+ (const years& __lhs, const year& __rhs) noexcept
+{ return __rhs + __lhs; }
+
+inline constexpr
+year operator- (const year& __lhs, const years& __rhs) noexcept
+{ return __lhs + -__rhs; }
+
+inline constexpr
+years operator-(const year& __lhs, const year& __rhs) noexcept
+{ return years{static_cast<int>(__lhs) - static_cast<int>(__rhs)}; }
+
+
+inline constexpr year& year::operator+=(const years& __dy) noexcept
+{ *this = *this + __dy; return *this; }
+
+inline constexpr year& year::operator-=(const years& __dy) noexcept
+{ *this = *this - __dy; return *this; }
+
+inline constexpr bool year::ok() const noexcept
+{ return static_cast<int>(min()) <= __y && __y <= static_cast<int>(max()); }
+
+class _LIBCPP_TYPE_VIS weekday_indexed;
+class _LIBCPP_TYPE_VIS weekday_last;
+
+class _LIBCPP_TYPE_VIS weekday {
+private:
+ unsigned char __wd;
+public:
+ weekday() = default;
+ inline explicit constexpr weekday(unsigned __val) noexcept : __wd(static_cast<unsigned char>(__val)) {}
+ inline constexpr weekday(const sys_days& __sysd) noexcept
+ : __wd(__weekday_from_days(__sysd.time_since_epoch().count())) {}
+ inline explicit constexpr weekday(const local_days& __locd) noexcept
+ : __wd(__weekday_from_days(__locd.time_since_epoch().count())) {}
+
+ inline constexpr weekday& operator++() noexcept { __wd = (__wd == 6 ? 0 : __wd + 1); return *this; }
+ inline constexpr weekday operator++(int) noexcept { weekday __tmp = *this; ++(*this); return __tmp; }
+ inline constexpr weekday& operator--() noexcept { __wd = (__wd == 0 ? 6 : __wd - 1); return *this; }
+ inline constexpr weekday operator--(int) noexcept { weekday __tmp = *this; --(*this); return __tmp; }
+ constexpr weekday& operator+=(const days& __dd) noexcept;
+ constexpr weekday& operator-=(const days& __dd) noexcept;
+ inline explicit constexpr operator unsigned() const noexcept { return __wd; }
+ inline constexpr bool ok() const noexcept { return __wd <= 6; }
+ constexpr weekday_indexed operator[](unsigned __index) const noexcept;
+ constexpr weekday_last operator[](last_spec) const noexcept;
+
+ static constexpr unsigned char __weekday_from_days(int __days) noexcept;
+};
+
+
+// https://howardhinnant.github.io/date_algorithms.html#weekday_from_days
+inline constexpr
+unsigned char weekday::__weekday_from_days(int __days) noexcept
+{
+ return static_cast<unsigned char>(
+ static_cast<unsigned>(__days >= -4 ? (__days+4) % 7 : (__days+5) % 7 + 6)
+ );
+}
+
+inline constexpr
+bool operator==(const weekday& __lhs, const weekday& __rhs) noexcept
+{ return static_cast<unsigned>(__lhs) == static_cast<unsigned>(__rhs); }
+
+inline constexpr
+bool operator!=(const weekday& __lhs, const weekday& __rhs) noexcept
+{ return !(__lhs == __rhs); }
+
+inline constexpr
+bool operator< (const weekday& __lhs, const weekday& __rhs) noexcept
+{ return static_cast<unsigned>(__lhs) < static_cast<unsigned>(__rhs); }
+
+inline constexpr
+bool operator> (const weekday& __lhs, const weekday& __rhs) noexcept
+{ return __rhs < __lhs; }
+
+inline constexpr
+bool operator<=(const weekday& __lhs, const weekday& __rhs) noexcept
+{ return !(__rhs < __lhs);}
+
+inline constexpr
+bool operator>=(const weekday& __lhs, const weekday& __rhs) noexcept
+{ return !(__lhs < __rhs); }
+
+constexpr weekday operator+(const weekday& __lhs, const days& __rhs) noexcept
+{
+ auto const __mu = static_cast<long long>(static_cast<unsigned>(__lhs)) + __rhs.count();
+ auto const __yr = (__mu >= 0 ? __mu : __mu - 6) / 7;
+ return weekday{static_cast<unsigned>(__mu - __yr * 7)};
+}
+
+constexpr weekday operator+(const days& __lhs, const weekday& __rhs) noexcept
+{ return __rhs + __lhs; }
+
+constexpr weekday operator-(const weekday& __lhs, const days& __rhs) noexcept
+{ return __lhs + -__rhs; }
+
+constexpr days operator-(const weekday& __lhs, const weekday& __rhs) noexcept
+{
+ const int __wdu = static_cast<unsigned>(__lhs) - static_cast<unsigned>(__rhs);
+ const int __wk = (__wdu >= 0 ? __wdu : __wdu-6) / 7;
+ return days{__wdu - __wk * 7};
+}
+
+inline constexpr weekday& weekday::operator+=(const days& __dd) noexcept
+{ *this = *this + __dd; return *this; }
+
+inline constexpr weekday& weekday::operator-=(const days& __dd) noexcept
+{ *this = *this - __dd; return *this; }
+
+
+class _LIBCPP_TYPE_VIS weekday_indexed {
+private:
+ _VSTD::chrono::weekday __wd;
+ unsigned char __idx;
+public:
+ weekday_indexed() = default;
+ inline constexpr weekday_indexed(const _VSTD::chrono::weekday& __wdval, unsigned __idxval) noexcept
+ : __wd{__wdval}, __idx(__idxval) {}
+ inline constexpr _VSTD::chrono::weekday weekday() const noexcept { return __wd; }
+ inline constexpr unsigned index() const noexcept { return __idx; }
+ inline constexpr bool ok() const noexcept { return __wd.ok() && __idx >= 1 && __idx <= 5; }
+};
+
+inline constexpr
+bool operator==(const weekday_indexed& __lhs, const weekday_indexed& __rhs) noexcept
+{ return __lhs.weekday() == __rhs.weekday() && __lhs.index() == __rhs.index(); }
+
+inline constexpr
+bool operator!=(const weekday_indexed& __lhs, const weekday_indexed& __rhs) noexcept
+{ return !(__lhs == __rhs); }
+
+
+class _LIBCPP_TYPE_VIS weekday_last {
+private:
+ _VSTD::chrono::weekday __wd;
+public:
+ explicit constexpr weekday_last(const _VSTD::chrono::weekday& __val) noexcept
+ : __wd{__val} {}
+ constexpr _VSTD::chrono::weekday weekday() const noexcept { return __wd; }
+ constexpr bool ok() const noexcept { return __wd.ok(); }
+};
+
+inline constexpr
+bool operator==(const weekday_last& __lhs, const weekday_last& __rhs) noexcept
+{ return __lhs.weekday() == __rhs.weekday(); }
+
+inline constexpr
+bool operator!=(const weekday_last& __lhs, const weekday_last& __rhs) noexcept
+{ return !(__lhs == __rhs); }
+
+inline constexpr
+weekday_indexed weekday::operator[](unsigned __index) const noexcept { return weekday_indexed{*this, __index}; }
+
+inline constexpr
+weekday_last weekday::operator[](last_spec) const noexcept { return weekday_last{*this}; }
+
+
+inline constexpr last_spec last{};
+inline constexpr weekday Sunday{0};
+inline constexpr weekday Monday{1};
+inline constexpr weekday Tuesday{2};
+inline constexpr weekday Wednesday{3};
+inline constexpr weekday Thursday{4};
+inline constexpr weekday Friday{5};
+inline constexpr weekday Saturday{6};
+
+inline constexpr month January{1};
+inline constexpr month February{2};
+inline constexpr month March{3};
+inline constexpr month April{4};
+inline constexpr month May{5};
+inline constexpr month June{6};
+inline constexpr month July{7};
+inline constexpr month August{8};
+inline constexpr month September{9};
+inline constexpr month October{10};
+inline constexpr month November{11};
+inline constexpr month December{12};
+
+
+class _LIBCPP_TYPE_VIS month_day {
+private:
+ chrono::month __m;
+ chrono::day __d;
+public:
+ month_day() = default;
+ constexpr month_day(const chrono::month& __mval, const chrono::day& __dval) noexcept
+ : __m{__mval}, __d{__dval} {}
+ inline constexpr chrono::month month() const noexcept { return __m; }
+ inline constexpr chrono::day day() const noexcept { return __d; }
+ constexpr bool ok() const noexcept;
+};
+
+inline constexpr
+bool month_day::ok() const noexcept
+{
+ if (!__m.ok()) return false;
+ const unsigned __dval = static_cast<unsigned>(__d);
+ if (__dval < 1 || __dval > 31) return false;
+ if (__dval <= 29) return true;
+// Now we've got either 30 or 31
+ const unsigned __mval = static_cast<unsigned>(__m);
+ if (__mval == 2) return false;
+ if (__mval == 4 || __mval == 6 || __mval == 9 || __mval == 11)
+ return __dval == 30;
+ return true;
+}
+
+inline constexpr
+bool operator==(const month_day& __lhs, const month_day& __rhs) noexcept
+{ return __lhs.month() == __rhs.month() && __lhs.day() == __rhs.day(); }
+
+inline constexpr
+bool operator!=(const month_day& __lhs, const month_day& __rhs) noexcept
+{ return !(__lhs == __rhs); }
+
+inline constexpr
+month_day operator/(const month& __lhs, const day& __rhs) noexcept
+{ return month_day{__lhs, __rhs}; }
+
+constexpr
+month_day operator/(const day& __lhs, const month& __rhs) noexcept
+{ return __rhs / __lhs; }
+
+inline constexpr
+month_day operator/(const month& __lhs, int __rhs) noexcept
+{ return __lhs / day(__rhs); }
+
+constexpr
+month_day operator/(int __lhs, const day& __rhs) noexcept
+{ return month(__lhs) / __rhs; }
+
+constexpr
+month_day operator/(const day& __lhs, int __rhs) noexcept
+{ return month(__rhs) / __lhs; }
+
+
+inline constexpr
+bool operator< (const month_day& __lhs, const month_day& __rhs) noexcept
+{ return __lhs.month() != __rhs.month() ? __lhs.month() < __rhs.month() : __lhs.day() < __rhs.day(); }
+
+inline constexpr
+bool operator> (const month_day& __lhs, const month_day& __rhs) noexcept
+{ return __rhs < __lhs; }
+
+inline constexpr
+bool operator<=(const month_day& __lhs, const month_day& __rhs) noexcept
+{ return !(__rhs < __lhs);}
+
+inline constexpr
+bool operator>=(const month_day& __lhs, const month_day& __rhs) noexcept
+{ return !(__lhs < __rhs); }
+
+
+
+class _LIBCPP_TYPE_VIS month_day_last {
+private:
+ chrono::month __m;
+public:
+ explicit constexpr month_day_last(const chrono::month& __val) noexcept
+ : __m{__val} {}
+ inline constexpr chrono::month month() const noexcept { return __m; }
+ inline constexpr bool ok() const noexcept { return __m.ok(); }
+};
+
+inline constexpr
+bool operator==(const month_day_last& __lhs, const month_day_last& __rhs) noexcept
+{ return __lhs.month() == __rhs.month(); }
+
+inline constexpr
+bool operator!=(const month_day_last& __lhs, const month_day_last& __rhs) noexcept
+{ return !(__lhs == __rhs); }
+
+inline constexpr
+bool operator< (const month_day_last& __lhs, const month_day_last& __rhs) noexcept
+{ return __lhs.month() < __rhs.month(); }
+
+inline constexpr
+bool operator> (const month_day_last& __lhs, const month_day_last& __rhs) noexcept
+{ return __rhs < __lhs; }
+
+inline constexpr
+bool operator<=(const month_day_last& __lhs, const month_day_last& __rhs) noexcept
+{ return !(__rhs < __lhs);}
+
+inline constexpr
+bool operator>=(const month_day_last& __lhs, const month_day_last& __rhs) noexcept
+{ return !(__lhs < __rhs); }
+
+inline constexpr
+month_day_last operator/(const month& __lhs, last_spec) noexcept
+{ return month_day_last{__lhs}; }
+
+inline constexpr
+month_day_last operator/(last_spec, const month& __rhs) noexcept
+{ return month_day_last{__rhs}; }
+
+inline constexpr
+month_day_last operator/(int __lhs, last_spec) noexcept
+{ return month_day_last{month(__lhs)}; }
+
+inline constexpr
+month_day_last operator/(last_spec, int __rhs) noexcept
+{ return month_day_last{month(__rhs)}; }
+
+
+class _LIBCPP_TYPE_VIS month_weekday {
+private:
+ chrono::month __m;
+ chrono::weekday_indexed __wdi;
+public:
+ month_weekday() = default;
+ constexpr month_weekday(const chrono::month& __mval, const chrono::weekday_indexed& __wdival) noexcept
+ : __m{__mval}, __wdi{__wdival} {}
+ inline constexpr chrono::month month() const noexcept { return __m; }
+ inline constexpr chrono::weekday_indexed weekday_indexed() const noexcept { return __wdi; }
+ inline constexpr bool ok() const noexcept { return __m.ok() && __wdi.ok(); }
+};
+
+inline constexpr
+bool operator==(const month_weekday& __lhs, const month_weekday& __rhs) noexcept
+{ return __lhs.month() == __rhs.month() && __lhs.weekday_indexed() == __rhs.weekday_indexed(); }
+
+inline constexpr
+bool operator!=(const month_weekday& __lhs, const month_weekday& __rhs) noexcept
+{ return !(__lhs == __rhs); }
+
+inline constexpr
+month_weekday operator/(const month& __lhs, const weekday_indexed& __rhs) noexcept
+{ return month_weekday{__lhs, __rhs}; }
+
+inline constexpr
+month_weekday operator/(int __lhs, const weekday_indexed& __rhs) noexcept
+{ return month_weekday{month(__lhs), __rhs}; }
+
+inline constexpr
+month_weekday operator/(const weekday_indexed& __lhs, const month& __rhs) noexcept
+{ return month_weekday{__rhs, __lhs}; }
+
+inline constexpr
+month_weekday operator/(const weekday_indexed& __lhs, int __rhs) noexcept
+{ return month_weekday{month(__rhs), __lhs}; }
+
+
+class _LIBCPP_TYPE_VIS month_weekday_last {
+ chrono::month __m;
+ chrono::weekday_last __wdl;
+ public:
+ constexpr month_weekday_last(const chrono::month& __mval, const chrono::weekday_last& __wdlval) noexcept
+ : __m{__mval}, __wdl{__wdlval} {}
+ inline constexpr chrono::month month() const noexcept { return __m; }
+ inline constexpr chrono::weekday_last weekday_last() const noexcept { return __wdl; }
+ inline constexpr bool ok() const noexcept { return __m.ok() && __wdl.ok(); }
+};
+
+inline constexpr
+bool operator==(const month_weekday_last& __lhs, const month_weekday_last& __rhs) noexcept
+{ return __lhs.month() == __rhs.month() && __lhs.weekday_last() == __rhs.weekday_last(); }
+
+inline constexpr
+bool operator!=(const month_weekday_last& __lhs, const month_weekday_last& __rhs) noexcept
+{ return !(__lhs == __rhs); }
+
+
+inline constexpr
+month_weekday_last operator/(const month& __lhs, const weekday_last& __rhs) noexcept
+{ return month_weekday_last{__lhs, __rhs}; }
+
+inline constexpr
+month_weekday_last operator/(int __lhs, const weekday_last& __rhs) noexcept
+{ return month_weekday_last{month(__lhs), __rhs}; }
+
+inline constexpr
+month_weekday_last operator/(const weekday_last& __lhs, const month& __rhs) noexcept
+{ return month_weekday_last{__rhs, __lhs}; }
+
+inline constexpr
+month_weekday_last operator/(const weekday_last& __lhs, int __rhs) noexcept
+{ return month_weekday_last{month(__rhs), __lhs}; }
+
+
+class _LIBCPP_TYPE_VIS year_month {
+ chrono::year __y;
+ chrono::month __m;
+public:
+ year_month() = default;
+ constexpr year_month(const chrono::year& __yval, const chrono::month& __mval) noexcept
+ : __y{__yval}, __m{__mval} {}
+ inline constexpr chrono::year year() const noexcept { return __y; }
+ inline constexpr chrono::month month() const noexcept { return __m; }
+ inline constexpr year_month& operator+=(const months& __dm) noexcept { this->__m += __dm; return *this; }
+ inline constexpr year_month& operator-=(const months& __dm) noexcept { this->__m -= __dm; return *this; }
+ inline constexpr year_month& operator+=(const years& __dy) noexcept { this->__y += __dy; return *this; }
+ inline constexpr year_month& operator-=(const years& __dy) noexcept { this->__y -= __dy; return *this; }
+ inline constexpr bool ok() const noexcept { return __y.ok() && __m.ok(); }
+};
+
+inline constexpr
+year_month operator/(const year& __y, const month& __m) noexcept { return year_month{__y, __m}; }
+
+inline constexpr
+year_month operator/(const year& __y, int __m) noexcept { return year_month{__y, month(__m)}; }
+
+inline constexpr
+bool operator==(const year_month& __lhs, const year_month& __rhs) noexcept
+{ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month(); }
+
+inline constexpr
+bool operator!=(const year_month& __lhs, const year_month& __rhs) noexcept
+{ return !(__lhs == __rhs); }
+
+inline constexpr
+bool operator< (const year_month& __lhs, const year_month& __rhs) noexcept
+{ return __lhs.year() != __rhs.year() ? __lhs.year() < __rhs.year() : __lhs.month() < __rhs.month(); }
+
+inline constexpr
+bool operator> (const year_month& __lhs, const year_month& __rhs) noexcept
+{ return __rhs < __lhs; }
+
+inline constexpr
+bool operator<=(const year_month& __lhs, const year_month& __rhs) noexcept
+{ return !(__rhs < __lhs);}
+
+inline constexpr
+bool operator>=(const year_month& __lhs, const year_month& __rhs) noexcept
+{ return !(__lhs < __rhs); }
+
+constexpr year_month operator+(const year_month& __lhs, const months& __rhs) noexcept
+{
+ int __dmi = static_cast<int>(static_cast<unsigned>(__lhs.month())) - 1 + __rhs.count();
+ const int __dy = (__dmi >= 0 ? __dmi : __dmi-11) / 12;
+ __dmi = __dmi - __dy * 12 + 1;
+ return (__lhs.year() + years(__dy)) / month(static_cast<unsigned>(__dmi));
+}
+
+constexpr year_month operator+(const months& __lhs, const year_month& __rhs) noexcept
+{ return __rhs + __lhs; }
+
+constexpr year_month operator+(const year_month& __lhs, const years& __rhs) noexcept
+{ return (__lhs.year() + __rhs) / __lhs.month(); }
+
+constexpr year_month operator+(const years& __lhs, const year_month& __rhs) noexcept
+{ return __rhs + __lhs; }
+
+constexpr months operator-(const year_month& __lhs, const year_month& __rhs) noexcept
+{ return (__lhs.year() - __rhs.year()) + months(static_cast<unsigned>(__lhs.month()) - static_cast<unsigned>(__rhs.month())); }
+
+constexpr year_month operator-(const year_month& __lhs, const months& __rhs) noexcept
+{ return __lhs + -__rhs; }
+
+constexpr year_month operator-(const year_month& __lhs, const years& __rhs) noexcept
+{ return __lhs + -__rhs; }
+
+class year_month_day_last;
+
+class _LIBCPP_TYPE_VIS year_month_day {
+private:
+ chrono::year __y;
+ chrono::month __m;
+ chrono::day __d;
+public:
+ year_month_day() = default;
+ inline constexpr year_month_day(
+ const chrono::year& __yval, const chrono::month& __mval, const chrono::day& __dval) noexcept
+ : __y{__yval}, __m{__mval}, __d{__dval} {}
+ constexpr year_month_day(const year_month_day_last& __ymdl) noexcept;
+ inline constexpr year_month_day(const sys_days& __sysd) noexcept
+ : year_month_day(__from_days(__sysd.time_since_epoch())) {}
+ inline explicit constexpr year_month_day(const local_days& __locd) noexcept
+ : year_month_day(__from_days(__locd.time_since_epoch())) {}
+
+ constexpr year_month_day& operator+=(const months& __dm) noexcept;
+ constexpr year_month_day& operator-=(const months& __dm) noexcept;
+ constexpr year_month_day& operator+=(const years& __dy) noexcept;
+ constexpr year_month_day& operator-=(const years& __dy) noexcept;
+
+ inline constexpr chrono::year year() const noexcept { return __y; }
+ inline constexpr chrono::month month() const noexcept { return __m; }
+ inline constexpr chrono::day day() const noexcept { return __d; }
+ inline constexpr operator sys_days() const noexcept { return sys_days{__to_days()}; }
+ inline explicit constexpr operator local_days() const noexcept { return local_days{__to_days()}; }
+
+ constexpr bool ok() const noexcept;
+
+ static constexpr year_month_day __from_days(days __d) noexcept;
+ constexpr days __to_days() const noexcept;
+};
+
+
+// https://howardhinnant.github.io/date_algorithms.html#civil_from_days
+inline constexpr
+year_month_day
+year_month_day::__from_days(days __d) noexcept
+{
+ static_assert(std::numeric_limits<unsigned>::digits >= 18, "");
+ static_assert(std::numeric_limits<int>::digits >= 20 , "");
+ const int __z = __d.count() + 719468;
+ const int __era = (__z >= 0 ? __z : __z - 146096) / 146097;
+ const unsigned __doe = static_cast<unsigned>(__z - __era * 146097); // [0, 146096]
+ const unsigned __yoe = (__doe - __doe/1460 + __doe/36524 - __doe/146096) / 365; // [0, 399]
+ const int __yr = static_cast<int>(__yoe) + __era * 400;
+ const unsigned __doy = __doe - (365 * __yoe + __yoe/4 - __yoe/100); // [0, 365]
+ const unsigned __mp = (5 * __doy + 2)/153; // [0, 11]
+ const unsigned __dy = __doy - (153 * __mp + 2)/5 + 1; // [1, 31]
+ const unsigned __mth = __mp + (__mp < 10 ? 3 : -9); // [1, 12]
+ return year_month_day{chrono::year{__yr + (__mth <= 2)}, chrono::month{__mth}, chrono::day{__dy}};
+}
+
+// https://howardhinnant.github.io/date_algorithms.html#days_from_civil
+inline constexpr days year_month_day::__to_days() const noexcept
+{
+ static_assert(std::numeric_limits<unsigned>::digits >= 18, "");
+ static_assert(std::numeric_limits<int>::digits >= 20 , "");
+
+ const int __yr = static_cast<int>(__y) - (__m <= February);
+ const unsigned __mth = static_cast<unsigned>(__m);
+ const unsigned __dy = static_cast<unsigned>(__d);
+
+ const int __era = (__yr >= 0 ? __yr : __yr - 399) / 400;
+ const unsigned __yoe = static_cast<unsigned>(__yr - __era * 400); // [0, 399]
+ const unsigned __doy = (153 * (__mth + (__mth > 2 ? -3 : 9)) + 2) / 5 + __dy-1; // [0, 365]
+ const unsigned __doe = __yoe * 365 + __yoe/4 - __yoe/100 + __doy; // [0, 146096]
+ return days{__era * 146097 + static_cast<int>(__doe) - 719468};
+}
+
+inline constexpr
+bool operator==(const year_month_day& __lhs, const year_month_day& __rhs) noexcept
+{ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month() && __lhs.day() == __rhs.day(); }
+
+inline constexpr
+bool operator!=(const year_month_day& __lhs, const year_month_day& __rhs) noexcept
+{ return !(__lhs == __rhs); }
+
+inline constexpr
+bool operator< (const year_month_day& __lhs, const year_month_day& __rhs) noexcept
+{
+ if (__lhs.year() < __rhs.year()) return true;
+ if (__lhs.year() > __rhs.year()) return false;
+ if (__lhs.month() < __rhs.month()) return true;
+ if (__lhs.month() > __rhs.month()) return false;
+ return __lhs.day() < __rhs.day();
+}
+
+inline constexpr
+bool operator> (const year_month_day& __lhs, const year_month_day& __rhs) noexcept
+{ return __rhs < __lhs; }
+
+inline constexpr
+bool operator<=(const year_month_day& __lhs, const year_month_day& __rhs) noexcept
+{ return !(__rhs < __lhs);}
+
+inline constexpr
+bool operator>=(const year_month_day& __lhs, const year_month_day& __rhs) noexcept
+{ return !(__lhs < __rhs); }
+
+inline constexpr
+year_month_day operator/(const year_month& __lhs, const day& __rhs) noexcept
+{ return year_month_day{__lhs.year(), __lhs.month(), __rhs}; }
+
+inline constexpr
+year_month_day operator/(const year_month& __lhs, int __rhs) noexcept
+{ return __lhs / day(__rhs); }
+
+inline constexpr
+year_month_day operator/(const year& __lhs, const month_day& __rhs) noexcept
+{ return __lhs / __rhs.month() / __rhs.day(); }
+
+inline constexpr
+year_month_day operator/(int __lhs, const month_day& __rhs) noexcept
+{ return year(__lhs) / __rhs; }
+
+inline constexpr
+year_month_day operator/(const month_day& __lhs, const year& __rhs) noexcept
+{ return __rhs / __lhs; }
+
+inline constexpr
+year_month_day operator/(const month_day& __lhs, int __rhs) noexcept
+{ return year(__rhs) / __lhs; }
+
+
+inline constexpr
+year_month_day operator+(const year_month_day& __lhs, const months& __rhs) noexcept
+{ return (__lhs.year()/__lhs.month() + __rhs)/__lhs.day(); }
+
+inline constexpr
+year_month_day operator+(const months& __lhs, const year_month_day& __rhs) noexcept
+{ return __rhs + __lhs; }
+
+inline constexpr
+year_month_day operator-(const year_month_day& __lhs, const months& __rhs) noexcept
+{ return __lhs + -__rhs; }
+
+inline constexpr
+year_month_day operator+(const year_month_day& __lhs, const years& __rhs) noexcept
+{ return (__lhs.year() + __rhs) / __lhs.month() / __lhs.day(); }
+
+inline constexpr
+year_month_day operator+(const years& __lhs, const year_month_day& __rhs) noexcept
+{ return __rhs + __lhs; }
+
+inline constexpr
+year_month_day operator-(const year_month_day& __lhs, const years& __rhs) noexcept
+{ return __lhs + -__rhs; }
+
+inline constexpr year_month_day& year_month_day::operator+=(const months& __dm) noexcept { *this = *this + __dm; return *this; }
+inline constexpr year_month_day& year_month_day::operator-=(const months& __dm) noexcept { *this = *this - __dm; return *this; }
+inline constexpr year_month_day& year_month_day::operator+=(const years& __dy) noexcept { *this = *this + __dy; return *this; }
+inline constexpr year_month_day& year_month_day::operator-=(const years& __dy) noexcept { *this = *this - __dy; return *this; }
+
+class _LIBCPP_TYPE_VIS year_month_day_last {
+private:
+ chrono::year __y;
+ chrono::month_day_last __mdl;
+public:
+ constexpr year_month_day_last(const year& __yval, const month_day_last& __mdlval) noexcept
+ : __y{__yval}, __mdl{__mdlval} {}
+
+ constexpr year_month_day_last& operator+=(const months& __m) noexcept;
+ constexpr year_month_day_last& operator-=(const months& __m) noexcept;
+ constexpr year_month_day_last& operator+=(const years& __y) noexcept;
+ constexpr year_month_day_last& operator-=(const years& __y) noexcept;
+
+ inline constexpr chrono::year year() const noexcept { return __y; }
+ inline constexpr chrono::month month() const noexcept { return __mdl.month(); }
+ inline constexpr chrono::month_day_last month_day_last() const noexcept { return __mdl; }
+ constexpr chrono::day day() const noexcept;
+ inline constexpr operator sys_days() const noexcept { return sys_days{year()/month()/day()}; }
+ inline explicit constexpr operator local_days() const noexcept { return local_days{year()/month()/day()}; }
+ inline constexpr bool ok() const noexcept { return __y.ok() && __mdl.ok(); }
+};
+
+inline constexpr
+chrono::day year_month_day_last::day() const noexcept
+{
+ constexpr chrono::day __d[] =
+ {
+ chrono::day(31), chrono::day(28), chrono::day(31),
+ chrono::day(30), chrono::day(31), chrono::day(30),
+ chrono::day(31), chrono::day(31), chrono::day(30),
+ chrono::day(31), chrono::day(30), chrono::day(31)
+ };
+ return month() != February || !__y.is_leap() ?
+ __d[static_cast<unsigned>(month()) - 1] : chrono::day{29};
+}
+
+inline constexpr
+bool operator==(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept
+{ return __lhs.year() == __rhs.year() && __lhs.month_day_last() == __rhs.month_day_last(); }
+
+inline constexpr
+bool operator!=(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept
+{ return !(__lhs == __rhs); }
+
+inline constexpr
+bool operator< (const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept
+{
+ if (__lhs.year() < __rhs.year()) return true;
+ if (__lhs.year() > __rhs.year()) return false;
+ return __lhs.month_day_last() < __rhs.month_day_last();
+}
+
+inline constexpr
+bool operator> (const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept
+{ return __rhs < __lhs; }
+
+inline constexpr
+bool operator<=(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept
+{ return !(__rhs < __lhs);}
+
+inline constexpr
+bool operator>=(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept
+{ return !(__lhs < __rhs); }
+
+inline constexpr year_month_day_last operator/(const year_month& __lhs, last_spec) noexcept
+{ return year_month_day_last{__lhs.year(), month_day_last{__lhs.month()}}; }
+
+inline constexpr year_month_day_last operator/(const year& __lhs, const month_day_last& __rhs) noexcept
+{ return year_month_day_last{__lhs, __rhs}; }
+
+inline constexpr year_month_day_last operator/(int __lhs, const month_day_last& __rhs) noexcept
+{ return year_month_day_last{year{__lhs}, __rhs}; }
+
+inline constexpr year_month_day_last operator/(const month_day_last& __lhs, const year& __rhs) noexcept
+{ return __rhs / __lhs; }
+
+inline constexpr year_month_day_last operator/(const month_day_last& __lhs, int __rhs) noexcept
+{ return year{__rhs} / __lhs; }
+
+
+inline constexpr
+year_month_day_last operator+(const year_month_day_last& __lhs, const months& __rhs) noexcept
+{ return (__lhs.year() / __lhs.month() + __rhs) / last; }
+
+inline constexpr
+year_month_day_last operator+(const months& __lhs, const year_month_day_last& __rhs) noexcept
+{ return __rhs + __lhs; }
+
+inline constexpr
+year_month_day_last operator-(const year_month_day_last& __lhs, const months& __rhs) noexcept
+{ return __lhs + (-__rhs); }
+
+inline constexpr
+year_month_day_last operator+(const year_month_day_last& __lhs, const years& __rhs) noexcept
+{ return year_month_day_last{__lhs.year() + __rhs, __lhs.month_day_last()}; }
+
+inline constexpr
+year_month_day_last operator+(const years& __lhs, const year_month_day_last& __rhs) noexcept
+{ return __rhs + __lhs; }
+
+inline constexpr
+year_month_day_last operator-(const year_month_day_last& __lhs, const years& __rhs) noexcept
+{ return __lhs + (-__rhs); }
+
+inline constexpr year_month_day_last& year_month_day_last::operator+=(const months& __dm) noexcept { *this = *this + __dm; return *this; }
+inline constexpr year_month_day_last& year_month_day_last::operator-=(const months& __dm) noexcept { *this = *this - __dm; return *this; }
+inline constexpr year_month_day_last& year_month_day_last::operator+=(const years& __dy) noexcept { *this = *this + __dy; return *this; }
+inline constexpr year_month_day_last& year_month_day_last::operator-=(const years& __dy) noexcept { *this = *this - __dy; return *this; }
+
+inline constexpr year_month_day::year_month_day(const year_month_day_last& __ymdl) noexcept
+ : __y{__ymdl.year()}, __m{__ymdl.month()}, __d{__ymdl.day()} {}
+
+inline constexpr bool year_month_day::ok() const noexcept
+{
+ if (!__y.ok() || !__m.ok()) return false;
+ return chrono::day{1} <= __d && __d <= (__y / __m / last).day();
+}
+
+class _LIBCPP_TYPE_VIS year_month_weekday {
+ chrono::year __y;
+ chrono::month __m;
+ chrono::weekday_indexed __wdi;
+public:
+ year_month_weekday() = default;
+ constexpr year_month_weekday(const chrono::year& __yval, const chrono::month& __mval,
+ const chrono::weekday_indexed& __wdival) noexcept
+ : __y{__yval}, __m{__mval}, __wdi{__wdival} {}
+ constexpr year_month_weekday(const sys_days& __sysd) noexcept
+ : year_month_weekday(__from_days(__sysd.time_since_epoch())) {}
+ inline explicit constexpr year_month_weekday(const local_days& __locd) noexcept
+ : year_month_weekday(__from_days(__locd.time_since_epoch())) {}
+ constexpr year_month_weekday& operator+=(const months& m) noexcept;
+ constexpr year_month_weekday& operator-=(const months& m) noexcept;
+ constexpr year_month_weekday& operator+=(const years& y) noexcept;
+ constexpr year_month_weekday& operator-=(const years& y) noexcept;
+
+ inline constexpr chrono::year year() const noexcept { return __y; }
+ inline constexpr chrono::month month() const noexcept { return __m; }
+ inline constexpr chrono::weekday weekday() const noexcept { return __wdi.weekday(); }
+ inline constexpr unsigned index() const noexcept { return __wdi.index(); }
+ inline constexpr chrono::weekday_indexed weekday_indexed() const noexcept { return __wdi; }
+
+ inline constexpr operator sys_days() const noexcept { return sys_days{__to_days()}; }
+ inline explicit constexpr operator local_days() const noexcept { return local_days{__to_days()}; }
+ inline constexpr bool ok() const noexcept
+ {
+ if (!__y.ok() || !__m.ok() || !__wdi.ok()) return false;
+ // TODO: make sure it's a valid date
+ return true;
+ }
+
+ static constexpr year_month_weekday __from_days(days __d) noexcept;
+ constexpr days __to_days() const noexcept;
+};
+
+inline constexpr
+year_month_weekday year_month_weekday::__from_days(days __d) noexcept
+{
+ const sys_days __sysd{__d};
+ const chrono::weekday __wd = chrono::weekday(__sysd);
+ const year_month_day __ymd = year_month_day(__sysd);
+ return year_month_weekday{__ymd.year(), __ymd.month(),
+ __wd[(static_cast<unsigned>(__ymd.day())-1)/7+1]};
+}
+
+inline constexpr
+days year_month_weekday::__to_days() const noexcept
+{
+ const sys_days __sysd = sys_days(__y/__m/1);
+ return (__sysd + (__wdi.weekday() - chrono::weekday(__sysd) + days{(__wdi.index()-1)*7}))
+ .time_since_epoch();
+}
+
+inline constexpr
+bool operator==(const year_month_weekday& __lhs, const year_month_weekday& __rhs) noexcept
+{ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month() && __lhs.weekday_indexed() == __rhs.weekday_indexed(); }
+
+inline constexpr
+bool operator!=(const year_month_weekday& __lhs, const year_month_weekday& __rhs) noexcept
+{ return !(__lhs == __rhs); }
+
+inline constexpr
+year_month_weekday operator/(const year_month& __lhs, const weekday_indexed& __rhs) noexcept
+{ return year_month_weekday{__lhs.year(), __lhs.month(), __rhs}; }
+
+inline constexpr
+year_month_weekday operator/(const year& __lhs, const month_weekday& __rhs) noexcept
+{ return year_month_weekday{__lhs, __rhs.month(), __rhs.weekday_indexed()}; }
+
+inline constexpr
+year_month_weekday operator/(int __lhs, const month_weekday& __rhs) noexcept
+{ return year(__lhs) / __rhs; }
+
+inline constexpr
+year_month_weekday operator/(const month_weekday& __lhs, const year& __rhs) noexcept
+{ return __rhs / __lhs; }
+
+inline constexpr
+year_month_weekday operator/(const month_weekday& __lhs, int __rhs) noexcept
+{ return year(__rhs) / __lhs; }
+
+
+inline constexpr
+year_month_weekday operator+(const year_month_weekday& __lhs, const months& __rhs) noexcept
+{ return (__lhs.year() / __lhs.month() + __rhs) / __lhs.weekday_indexed(); }
+
+inline constexpr
+year_month_weekday operator+(const months& __lhs, const year_month_weekday& __rhs) noexcept
+{ return __rhs + __lhs; }
+
+inline constexpr
+year_month_weekday operator-(const year_month_weekday& __lhs, const months& __rhs) noexcept
+{ return __lhs + (-__rhs); }
+
+inline constexpr
+year_month_weekday operator+(const year_month_weekday& __lhs, const years& __rhs) noexcept
+{ return year_month_weekday{__lhs.year() + __rhs, __lhs.month(), __lhs.weekday_indexed()}; }
+
+inline constexpr
+year_month_weekday operator+(const years& __lhs, const year_month_weekday& __rhs) noexcept
+{ return __rhs + __lhs; }
+
+inline constexpr
+year_month_weekday operator-(const year_month_weekday& __lhs, const years& __rhs) noexcept
+{ return __lhs + (-__rhs); }
+
+
+inline constexpr year_month_weekday& year_month_weekday::operator+=(const months& __dm) noexcept { *this = *this + __dm; return *this; }
+inline constexpr year_month_weekday& year_month_weekday::operator-=(const months& __dm) noexcept { *this = *this - __dm; return *this; }
+inline constexpr year_month_weekday& year_month_weekday::operator+=(const years& __dy) noexcept { *this = *this + __dy; return *this; }
+inline constexpr year_month_weekday& year_month_weekday::operator-=(const years& __dy) noexcept { *this = *this - __dy; return *this; }
+
+class _LIBCPP_TYPE_VIS year_month_weekday_last {
+private:
+ chrono::year __y;
+ chrono::month __m;
+ chrono::weekday_last __wdl;
+public:
+ constexpr year_month_weekday_last(const chrono::year& __yval, const chrono::month& __mval,
+ const chrono::weekday_last& __wdlval) noexcept
+ : __y{__yval}, __m{__mval}, __wdl{__wdlval} {}
+ constexpr year_month_weekday_last& operator+=(const months& __dm) noexcept;
+ constexpr year_month_weekday_last& operator-=(const months& __dm) noexcept;
+ constexpr year_month_weekday_last& operator+=(const years& __dy) noexcept;
+ constexpr year_month_weekday_last& operator-=(const years& __dy) noexcept;
+
+ inline constexpr chrono::year year() const noexcept { return __y; }
+ inline constexpr chrono::month month() const noexcept { return __m; }
+ inline constexpr chrono::weekday weekday() const noexcept { return __wdl.weekday(); }
+ inline constexpr chrono::weekday_last weekday_last() const noexcept { return __wdl; }
+ inline constexpr operator sys_days() const noexcept { return sys_days{__to_days()}; }
+ inline explicit constexpr operator local_days() const noexcept { return local_days{__to_days()}; }
+ inline constexpr bool ok() const noexcept { return __y.ok() && __m.ok() && __wdl.ok(); }
+
+ constexpr days __to_days() const noexcept;
+
+};
+
+inline constexpr
+days year_month_weekday_last::__to_days() const noexcept
+{
+ const sys_days __last = sys_days{__y/__m/last};
+ return (__last - (chrono::weekday{__last} - __wdl.weekday())).time_since_epoch();
+
+}
+
+inline constexpr
+bool operator==(const year_month_weekday_last& __lhs, const year_month_weekday_last& __rhs) noexcept
+{ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month() && __lhs.weekday_last() == __rhs.weekday_last(); }
+
+inline constexpr
+bool operator!=(const year_month_weekday_last& __lhs, const year_month_weekday_last& __rhs) noexcept
+{ return !(__lhs == __rhs); }
+
+
+inline constexpr
+year_month_weekday_last operator/(const year_month& __lhs, const weekday_last& __rhs) noexcept
+{ return year_month_weekday_last{__lhs.year(), __lhs.month(), __rhs}; }
+
+inline constexpr
+year_month_weekday_last operator/(const year& __lhs, const month_weekday_last& __rhs) noexcept
+{ return year_month_weekday_last{__lhs, __rhs.month(), __rhs.weekday_last()}; }
+
+inline constexpr
+year_month_weekday_last operator/(int __lhs, const month_weekday_last& __rhs) noexcept
+{ return year(__lhs) / __rhs; }
+
+inline constexpr
+year_month_weekday_last operator/(const month_weekday_last& __lhs, const year& __rhs) noexcept
+{ return __rhs / __lhs; }
+
+inline constexpr
+year_month_weekday_last operator/(const month_weekday_last& __lhs, int __rhs) noexcept
+{ return year(__rhs) / __lhs; }
+
+
+inline constexpr
+year_month_weekday_last operator+(const year_month_weekday_last& __lhs, const months& __rhs) noexcept
+{ return (__lhs.year() / __lhs.month() + __rhs) / __lhs.weekday_last(); }
+
+inline constexpr
+year_month_weekday_last operator+(const months& __lhs, const year_month_weekday_last& __rhs) noexcept
+{ return __rhs + __lhs; }
+
+inline constexpr
+year_month_weekday_last operator-(const year_month_weekday_last& __lhs, const months& __rhs) noexcept
+{ return __lhs + (-__rhs); }
+
+inline constexpr
+year_month_weekday_last operator+(const year_month_weekday_last& __lhs, const years& __rhs) noexcept
+{ return year_month_weekday_last{__lhs.year() + __rhs, __lhs.month(), __lhs.weekday_last()}; }
+
+inline constexpr
+year_month_weekday_last operator+(const years& __lhs, const year_month_weekday_last& __rhs) noexcept
+{ return __rhs + __lhs; }
+
+inline constexpr
+year_month_weekday_last operator-(const year_month_weekday_last& __lhs, const years& __rhs) noexcept
+{ return __lhs + (-__rhs); }
+
+inline constexpr year_month_weekday_last& year_month_weekday_last::operator+=(const months& __dm) noexcept { *this = *this + __dm; return *this; }
+inline constexpr year_month_weekday_last& year_month_weekday_last::operator-=(const months& __dm) noexcept { *this = *this - __dm; return *this; }
+inline constexpr year_month_weekday_last& year_month_weekday_last::operator+=(const years& __dy) noexcept { *this = *this + __dy; return *this; }
+inline constexpr year_month_weekday_last& year_month_weekday_last::operator-=(const years& __dy) noexcept { *this = *this - __dy; return *this; }
+
+#endif // _LIBCPP_STD_VER > 17
} // chrono
#if _LIBCPP_STD_VER > 11
@@ -1648,6 +2804,17 @@
return chrono::duration<long double, nano> (__ns);
}
+#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_CXX20_CHRONO_LITERALS)
+ constexpr chrono::day operator ""d(unsigned long long __d) noexcept
+ {
+ return chrono::day(static_cast<unsigned>(__d));
+ }
+
+ constexpr chrono::year operator ""y(unsigned long long __y) noexcept
+ {
+ return chrono::year(static_cast<int>(__y));
+ }
+#endif
}}
namespace chrono { // hoist the literals into namespace std::chrono
@@ -1658,6 +2825,40 @@
_LIBCPP_END_NAMESPACE_STD
+#ifndef _LIBCPP_CXX03_LANG
+_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM
+struct _FilesystemClock {
+#if !defined(_LIBCPP_HAS_NO_INT128)
+ typedef __int128_t rep;
+ typedef nano period;
+#else
+ typedef long long rep;
+ typedef nano period;
+#endif
+
+ typedef chrono::duration<rep, period> duration;
+ typedef chrono::time_point<_FilesystemClock> time_point;
+
+ static _LIBCPP_CONSTEXPR_AFTER_CXX11 const bool is_steady = false;
+
+ _LIBCPP_FUNC_VIS static time_point now() noexcept;
+
+ _LIBCPP_INLINE_VISIBILITY
+ static time_t to_time_t(const time_point& __t) noexcept {
+ typedef chrono::duration<rep> __secs;
+ return time_t(
+ chrono::duration_cast<__secs>(__t.time_since_epoch()).count());
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ static time_point from_time_t(time_t __t) noexcept {
+ typedef chrono::duration<rep> __secs;
+ return time_point(__secs(__t));
+ }
+};
+_LIBCPP_END_NAMESPACE_FILESYSTEM
+#endif // !_LIBCPP_CXX03_LANG
+
_LIBCPP_POP_MACROS
#endif // _LIBCPP_CHRONO
diff --git a/linux-x64/clang/include/c++/v1/cinttypes b/linux-x64/clang/include/c++/v1/cinttypes
index 3f61b06..55af85c 100644
--- a/linux-x64/clang/include/c++/v1/cinttypes
+++ b/linux-x64/clang/include/c++/v1/cinttypes
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- cinttypes --------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/ciso646 b/linux-x64/clang/include/c++/v1/ciso646
index b2efc72..172f167 100644
--- a/linux-x64/clang/include/c++/v1/ciso646
+++ b/linux-x64/clang/include/c++/v1/ciso646
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- ciso646 ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/climits b/linux-x64/clang/include/c++/v1/climits
index 81ffecd..43eb2d3 100644
--- a/linux-x64/clang/include/c++/v1/climits
+++ b/linux-x64/clang/include/c++/v1/climits
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- climits ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/clocale b/linux-x64/clang/include/c++/v1/clocale
index 05fa9c6..bff4e92 100644
--- a/linux-x64/clang/include/c++/v1/clocale
+++ b/linux-x64/clang/include/c++/v1/clocale
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- clocale ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/cmath b/linux-x64/clang/include/c++/v1/cmath
index f5f62ad..3af9f54 100644
--- a/linux-x64/clang/include/c++/v1/cmath
+++ b/linux-x64/clang/include/c++/v1/cmath
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- cmath -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/codecvt b/linux-x64/clang/include/c++/v1/codecvt
index 5eb9d15..5ea411e 100644
--- a/linux-x64/clang/include/c++/v1/codecvt
+++ b/linux-x64/clang/include/c++/v1/codecvt
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- codecvt -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/compare b/linux-x64/clang/include/c++/v1/compare
index 07f88f0..e05257b 100644
--- a/linux-x64/clang/include/c++/v1/compare
+++ b/linux-x64/clang/include/c++/v1/compare
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- compare -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/complex b/linux-x64/clang/include/c++/v1/complex
index 8cf6a94..ff702b4 100644
--- a/linux-x64/clang/include/c++/v1/complex
+++ b/linux-x64/clang/include/c++/v1/complex
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- complex ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/complex.h b/linux-x64/clang/include/c++/v1/complex.h
index c235966..b78733b 100644
--- a/linux-x64/clang/include/c++/v1/complex.h
+++ b/linux-x64/clang/include/c++/v1/complex.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- complex.h --------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/condition_variable b/linux-x64/clang/include/c++/v1/condition_variable
index c45a326..8c73344 100644
--- a/linux-x64/clang/include/c++/v1/condition_variable
+++ b/linux-x64/clang/include/c++/v1/condition_variable
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------- condition_variable ----------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/csetjmp b/linux-x64/clang/include/c++/v1/csetjmp
index 58a9c73..ed94b50 100644
--- a/linux-x64/clang/include/c++/v1/csetjmp
+++ b/linux-x64/clang/include/c++/v1/csetjmp
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- csetjmp ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/csignal b/linux-x64/clang/include/c++/v1/csignal
index 9728266..99abd02 100644
--- a/linux-x64/clang/include/c++/v1/csignal
+++ b/linux-x64/clang/include/c++/v1/csignal
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- csignal ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/cstdarg b/linux-x64/clang/include/c++/v1/cstdarg
index c8b6999..e8147d4 100644
--- a/linux-x64/clang/include/c++/v1/cstdarg
+++ b/linux-x64/clang/include/c++/v1/cstdarg
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- cstdarg ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/cstdbool b/linux-x64/clang/include/c++/v1/cstdbool
index 2c764a6..fad4714 100644
--- a/linux-x64/clang/include/c++/v1/cstdbool
+++ b/linux-x64/clang/include/c++/v1/cstdbool
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- cstdbool ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/cstddef b/linux-x64/clang/include/c++/v1/cstddef
index b4c42b1..bd62d6d 100644
--- a/linux-x64/clang/include/c++/v1/cstddef
+++ b/linux-x64/clang/include/c++/v1/cstddef
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- cstddef ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/cstdint b/linux-x64/clang/include/c++/v1/cstdint
index 7a187d3..f72fa06 100644
--- a/linux-x64/clang/include/c++/v1/cstdint
+++ b/linux-x64/clang/include/c++/v1/cstdint
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- cstdint ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/cstdio b/linux-x64/clang/include/c++/v1/cstdio
index 00b989f..6755693 100644
--- a/linux-x64/clang/include/c++/v1/cstdio
+++ b/linux-x64/clang/include/c++/v1/cstdio
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- cstdio ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/cstdlib b/linux-x64/clang/include/c++/v1/cstdlib
index 00c604e..68b3ded 100644
--- a/linux-x64/clang/include/c++/v1/cstdlib
+++ b/linux-x64/clang/include/c++/v1/cstdlib
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- cstdlib ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/cstring b/linux-x64/clang/include/c++/v1/cstring
index d550695..8bc96a0 100644
--- a/linux-x64/clang/include/c++/v1/cstring
+++ b/linux-x64/clang/include/c++/v1/cstring
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- cstring ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/ctgmath b/linux-x64/clang/include/c++/v1/ctgmath
index 535eb7d..ba1eeea 100644
--- a/linux-x64/clang/include/c++/v1/ctgmath
+++ b/linux-x64/clang/include/c++/v1/ctgmath
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- ctgmath -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/ctime b/linux-x64/clang/include/c++/v1/ctime
index 8264fe3..cb8474f 100644
--- a/linux-x64/clang/include/c++/v1/ctime
+++ b/linux-x64/clang/include/c++/v1/ctime
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- ctime -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/ctype.h b/linux-x64/clang/include/c++/v1/ctype.h
index e97ff3c..dcc7935 100644
--- a/linux-x64/clang/include/c++/v1/ctype.h
+++ b/linux-x64/clang/include/c++/v1/ctype.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- ctype.h ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/cwchar b/linux-x64/clang/include/c++/v1/cwchar
index d268e8b..451c621 100644
--- a/linux-x64/clang/include/c++/v1/cwchar
+++ b/linux-x64/clang/include/c++/v1/cwchar
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- cwchar -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/cwctype b/linux-x64/clang/include/c++/v1/cwctype
index 25b2489..575fd56 100644
--- a/linux-x64/clang/include/c++/v1/cwctype
+++ b/linux-x64/clang/include/c++/v1/cwctype
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- cwctype ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/cxxabi.h b/linux-x64/clang/include/c++/v1/cxxabi.h
index 2596560..2c2d073 100644
--- a/linux-x64/clang/include/c++/v1/cxxabi.h
+++ b/linux-x64/clang/include/c++/v1/cxxabi.h
@@ -1,9 +1,8 @@
//===--------------------------- cxxabi.h ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -160,8 +159,8 @@
extern _LIBCXXABI_FUNC_VIS bool __cxa_uncaught_exception() throw();
extern _LIBCXXABI_FUNC_VIS unsigned int __cxa_uncaught_exceptions() throw();
-#ifdef __linux__
-// Linux TLS support. Not yet an official part of the Itanium ABI.
+#if defined(__linux__) || defined(__Fuchsia__)
+// Linux and Fuchsia TLS support. Not yet an official part of the Itanium ABI.
// https://sourceware.org/glibc/wiki/Destructor%20support%20for%20thread_local%20variables
extern _LIBCXXABI_FUNC_VIS int __cxa_thread_atexit(void (*)(void *), void *,
void *) throw();
diff --git a/linux-x64/clang/include/c++/v1/deque b/linux-x64/clang/include/c++/v1/deque
index 414c7a8..60a1130 100644
--- a/linux-x64/clang/include/c++/v1/deque
+++ b/linux-x64/clang/include/c++/v1/deque
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- deque -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -150,6 +149,11 @@
void swap(deque<T,Allocator>& x, deque<T,Allocator>& y)
noexcept(noexcept(x.swap(y)));
+template <class T, class Allocator, class U>
+ void erase(deque<T, Allocator>& c, const U& value); // C++20
+template <class T, class Allocator, class Predicate>
+ void erase_if(deque<T, Allocator>& c, Predicate pred); // C++20
+
} // std
*/
@@ -987,7 +991,7 @@
#if _LIBCPP_STD_VER >= 14
_NOEXCEPT;
#else
- _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value ||
+ _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value ||
__is_nothrow_swappable<allocator_type>::value);
#endif
protected:
@@ -1156,7 +1160,7 @@
#if _LIBCPP_STD_VER >= 14
_NOEXCEPT
#else
- _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value ||
+ _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value ||
__is_nothrow_swappable<allocator_type>::value)
#endif
{
@@ -2342,7 +2346,7 @@
_Dp(__a, __base::__block_size));
__buf.push_back(__hold.get());
__hold.release();
-
+
for (typename __base::__map_pointer __i = __base::__map_.begin();
__i != __base::__map_.end(); ++__i)
__buf.push_back(*__i);
@@ -2604,6 +2608,7 @@
void
deque<_Tp, _Allocator>::pop_back()
{
+ _LIBCPP_ASSERT(!empty(), "deque::pop_back called for empty deque");
allocator_type& __a = __base::__alloc();
size_type __p = __base::size() + __base::__start_ - 1;
__alloc_traits::destroy(__a, __to_raw_pointer(*(__base::__map_.begin() +
@@ -2854,7 +2859,7 @@
#if _LIBCPP_STD_VER >= 14
_NOEXCEPT
#else
- _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value ||
+ _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value ||
__is_nothrow_swappable<allocator_type>::value)
#endif
{
@@ -2927,6 +2932,19 @@
__x.swap(__y);
}
+#if _LIBCPP_STD_VER > 17
+template <class _Tp, class _Allocator, class _Up>
+inline _LIBCPP_INLINE_VISIBILITY
+void erase(deque<_Tp, _Allocator>& __c, const _Up& __v)
+{ __c.erase(_VSTD::remove(__c.begin(), __c.end(), __v), __c.end()); }
+
+template <class _Tp, class _Allocator, class _Predicate>
+inline _LIBCPP_INLINE_VISIBILITY
+void erase_if(deque<_Tp, _Allocator>& __c, _Predicate __pred)
+{ __c.erase(_VSTD::remove_if(__c.begin(), __c.end(), __pred), __c.end()); }
+#endif
+
+
_LIBCPP_END_NAMESPACE_STD
_LIBCPP_POP_MACROS
diff --git a/linux-x64/clang/include/c++/v1/errno.h b/linux-x64/clang/include/c++/v1/errno.h
index ee64291..447319e 100644
--- a/linux-x64/clang/include/c++/v1/errno.h
+++ b/linux-x64/clang/include/c++/v1/errno.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- errno.h -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/exception b/linux-x64/clang/include/c++/v1/exception
index 7fd9279..63d8ad2 100644
--- a/linux-x64/clang/include/c++/v1/exception
+++ b/linux-x64/clang/include/c++/v1/exception
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- exception ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -164,7 +163,7 @@
};
template<class _Ep>
-exception_ptr
+_LIBCPP_INLINE_VISIBILITY exception_ptr
make_exception_ptr(_Ep __e) _NOEXCEPT
{
#ifndef _LIBCPP_NO_EXCEPTIONS
@@ -223,7 +222,7 @@
template <class _E> void *__GetExceptionInfo(_E);
template<class _Ep>
-exception_ptr
+_LIBCPP_INLINE_VISIBILITY exception_ptr
make_exception_ptr(_Ep __e) _NOEXCEPT
{
return __copy_exception_ptr(_VSTD::addressof(__e), __GetExceptionInfo(__e));
diff --git a/linux-x64/clang/include/c++/v1/experimental/__config b/linux-x64/clang/include/c++/v1/experimental/__config
index c6f1776..d3667b5 100644
--- a/linux-x64/clang/include/c++/v1/experimental/__config
+++ b/linux-x64/clang/include/c++/v1/experimental/__config
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- __config ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/experimental/__memory b/linux-x64/clang/include/c++/v1/experimental/__memory
index 229fea6..4cf8978 100644
--- a/linux-x64/clang/include/c++/v1/experimental/__memory
+++ b/linux-x64/clang/include/c++/v1/experimental/__memory
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/experimental/algorithm b/linux-x64/clang/include/c++/v1/experimental/algorithm
index eb3bad6..79fd7b1 100644
--- a/linux-x64/clang/include/c++/v1/experimental/algorithm
+++ b/linux-x64/clang/include/c++/v1/experimental/algorithm
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- algorithm ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/experimental/any b/linux-x64/clang/include/c++/v1/experimental/any
index 1dcdd0f..c8050e3 100644
--- a/linux-x64/clang/include/c++/v1/experimental/any
+++ b/linux-x64/clang/include/c++/v1/experimental/any
@@ -1,11 +1,20 @@
// -*- C++ -*-
-//===------------------------------ any -----------------------------------===//
+//===------------------------------- any ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
+#ifndef _LIBCPP_EXPERIMENTAL_ANY
+#define _LIBCPP_EXPERIMENTAL_ANY
-#error "<experimental/any> has been removed. Use <any> instead."
+#include <__config>
+
+#ifdef _LIBCPP_WARNING
+_LIBCPP_WARNING("<experimental/any> has been removed. Use <any> instead.")
+#else
+# warning "<experimental/any> has been removed. Use <any> instead."
+#endif
+
+#endif // _LIBCPP_EXPERIMENTAL_ANY
diff --git a/linux-x64/clang/include/c++/v1/experimental/chrono b/linux-x64/clang/include/c++/v1/experimental/chrono
index 591cf71..f3ceaae 100644
--- a/linux-x64/clang/include/c++/v1/experimental/chrono
+++ b/linux-x64/clang/include/c++/v1/experimental/chrono
@@ -1,11 +1,20 @@
// -*- C++ -*-
-//===------------------------------ chrono ---------------------------------===//
+//===---------------------------- chrono ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
+#ifndef _LIBCPP_EXPERIMENTAL_CHRONO
+#define _LIBCPP_EXPERIMENTAL_CHRONO
-#error "<experimental/chrono> has been removed. Use <chrono> instead."
+#include <__config>
+
+#ifdef _LIBCPP_WARNING
+_LIBCPP_WARNING("<experimental/chrono> has been removed. Use <chrono> instead.")
+#else
+# warning "<experimental/chrono> has been removed. Use <chrono> instead."
+#endif
+
+#endif // _LIBCPP_EXPERIMENTAL_CHRONO
diff --git a/linux-x64/clang/include/c++/v1/experimental/coroutine b/linux-x64/clang/include/c++/v1/experimental/coroutine
index 1eb224a..13e3262 100644
--- a/linux-x64/clang/include/c++/v1/experimental/coroutine
+++ b/linux-x64/clang/include/c++/v1/experimental/coroutine
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------- coroutine -----------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -214,7 +213,7 @@
_LIBCPP_INLINE_VISIBILITY
_Promise& promise() const {
return *static_cast<_Promise*>(
- __builtin_coro_promise(this->__handle_, __alignof(_Promise), false));
+ __builtin_coro_promise(this->__handle_, _LIBCPP_ALIGNOF(_Promise), false));
}
public:
@@ -254,7 +253,7 @@
coroutine_handle __tmp;
__tmp.__handle_ = __builtin_coro_promise(
_VSTD::addressof(const_cast<_RawPromise&>(__promise)),
- __alignof(_Promise), true);
+ _LIBCPP_ALIGNOF(_Promise), true);
return __tmp;
}
};
@@ -272,7 +271,7 @@
_LIBCPP_INLINE_VISIBILITY
_Promise& promise() const {
return *static_cast<_Promise*>(
- __builtin_coro_promise(this->__handle_, __alignof(_Promise), false));
+ __builtin_coro_promise(this->__handle_, _LIBCPP_ALIGNOF(_Promise), false));
}
_LIBCPP_CONSTEXPR explicit operator bool() const _NOEXCEPT { return true; }
diff --git a/linux-x64/clang/include/c++/v1/experimental/deque b/linux-x64/clang/include/c++/v1/experimental/deque
index f849574..73c2787 100644
--- a/linux-x64/clang/include/c++/v1/experimental/deque
+++ b/linux-x64/clang/include/c++/v1/experimental/deque
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- deque ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/experimental/dynarray b/linux-x64/clang/include/c++/v1/experimental/dynarray
deleted file mode 100644
index a60c87c..0000000
--- a/linux-x64/clang/include/c++/v1/experimental/dynarray
+++ /dev/null
@@ -1,305 +0,0 @@
-// -*- C++ -*-
-//===-------------------------- dynarray ----------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef _LIBCPP_DYNARRAY
-#define _LIBCPP_DYNARRAY
-
-/*
- dynarray synopsis
-
-namespace std { namespace experimental {
-
-template< typename T >
-class dynarray
-{
- // types:
- typedef T value_type;
- typedef T& reference;
- typedef const T& const_reference;
- typedef T* pointer;
- typedef const T* const_pointer;
- typedef implementation-defined iterator;
- typedef implementation-defined const_iterator;
- typedef reverse_iterator<iterator> reverse_iterator;
- typedef reverse_iterator<const_iterator> const_reverse_iterator;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
-
-public:
- // construct/copy/destroy:
- explicit dynarray(size_type c);
- dynarray(size_type c, const T& v);
- dynarray(const dynarray& d);
- dynarray(initializer_list<T>);
-
- template <class Alloc>
- dynarray(allocator_arg_t, const Alloc& a, size_type c, const Alloc& alloc);
- template <class Alloc>
- dynarray(allocator_arg_t, const Alloc& a, size_type c, const T& v, const Alloc& alloc);
- template <class Alloc>
- dynarray(allocator_arg_t, const Alloc& a, const dynarray& d, const Alloc& alloc);
- template <class Alloc>
- dynarray(allocator_arg_t, const Alloc& a, initializer_list<T>, const Alloc& alloc);
- dynarray& operator=(const dynarray&) = delete;
- ~dynarray();
-
- // iterators:
- iterator begin() noexcept;
- const_iterator begin() const noexcept;
- const_iterator cbegin() const noexcept;
- iterator end() noexcept;
- const_iterator end() const noexcept;
- const_iterator cend() const noexcept;
-
- reverse_iterator rbegin() noexcept;
- const_reverse_iterator rbegin() const noexcept;
- const_reverse_iterator crbegin() const noexcept;
- reverse_iterator rend() noexcept;
- const_reverse_iterator rend() const noexcept;
- const_reverse_iterator crend() const noexcept;
-
- // capacity:
- size_type size() const noexcept;
- size_type max_size() const noexcept;
- bool empty() const noexcept;
-
- // element access:
- reference operator[](size_type n);
- const_reference operator[](size_type n) const;
-
- reference front();
- const_reference front() const;
- reference back();
- const_reference back() const;
-
- const_reference at(size_type n) const;
- reference at(size_type n);
-
- // data access:
- T* data() noexcept;
- const T* data() const noexcept;
-
- // mutating member functions:
- void fill(const T& v);
-};
-
-}} // std::experimental
-
-*/
-#include <__config>
-#if _LIBCPP_STD_VER > 11
-
-#include <__functional_base>
-#include <iterator>
-#include <stdexcept>
-#include <initializer_list>
-#include <new>
-#include <algorithm>
-
-#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
-#pragma GCC system_header
-#endif
-
-_LIBCPP_PUSH_MACROS
-#include <__undef_macros>
-
-namespace std { namespace experimental { inline namespace __array_extensions_v1 {
-
-template <class _Tp>
-struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_DYNARRAY dynarray
-{
-public:
- // types:
- typedef dynarray __self;
- typedef _Tp value_type;
- typedef value_type& reference;
- typedef const value_type& const_reference;
- typedef value_type* iterator;
- typedef const value_type* const_iterator;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef std::reverse_iterator<iterator> reverse_iterator;
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-
-private:
- size_t __size_;
- value_type * __base_;
- _LIBCPP_INLINE_VISIBILITY dynarray () noexcept : __size_(0), __base_(nullptr) {}
-
- static inline _LIBCPP_INLINE_VISIBILITY
- value_type* __allocate(size_t __count) {
- if (numeric_limits<size_t>::max() / sizeof (value_type) <= __count)
- __throw_bad_array_length();
-
- return static_cast<value_type *>(
- _VSTD::__libcpp_allocate(sizeof(value_type) * __count, __alignof(value_type)));
- }
-
- static inline _LIBCPP_INLINE_VISIBILITY
- void __deallocate_value(value_type* __ptr ) noexcept {
- _VSTD::__libcpp_deallocate(static_cast<void *>(__ptr), __alignof(value_type));
- }
-
-public:
-
- _LIBCPP_INLINE_VISIBILITY
- explicit dynarray(size_type __c);
- _LIBCPP_INLINE_VISIBILITY
- dynarray(size_type __c, const value_type& __v);
- _LIBCPP_INLINE_VISIBILITY
- dynarray(const dynarray& __d);
- _LIBCPP_INLINE_VISIBILITY
- dynarray(initializer_list<value_type>);
-
-// We're not implementing these right now.
-// Updated with the resolution of LWG issue #2255
-// template <typename _Alloc>
-// dynarray(allocator_arg_t, const _Alloc& __alloc, size_type __c);
-// template <typename _Alloc>
-// dynarray(allocator_arg_t, const _Alloc& __alloc, size_type __c, const value_type& __v);
-// template <typename _Alloc>
-// dynarray(allocator_arg_t, const _Alloc& __alloc, const dynarray& __d);
-// template <typename _Alloc>
-// dynarray(allocator_arg_t, const _Alloc& __alloc, initializer_list<value_type>);
-
- dynarray& operator=(const dynarray&) = delete;
- _LIBCPP_INLINE_VISIBILITY
- ~dynarray();
-
- // iterators:
- inline _LIBCPP_INLINE_VISIBILITY iterator begin() noexcept { return iterator(data()); }
- inline _LIBCPP_INLINE_VISIBILITY const_iterator begin() const noexcept { return const_iterator(data()); }
- inline _LIBCPP_INLINE_VISIBILITY const_iterator cbegin() const noexcept { return const_iterator(data()); }
- inline _LIBCPP_INLINE_VISIBILITY iterator end() noexcept { return iterator(data() + __size_); }
- inline _LIBCPP_INLINE_VISIBILITY const_iterator end() const noexcept { return const_iterator(data() + __size_); }
- inline _LIBCPP_INLINE_VISIBILITY const_iterator cend() const noexcept { return const_iterator(data() + __size_); }
-
- inline _LIBCPP_INLINE_VISIBILITY reverse_iterator rbegin() noexcept { return reverse_iterator(end()); }
- inline _LIBCPP_INLINE_VISIBILITY const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator(end()); }
- inline _LIBCPP_INLINE_VISIBILITY const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(end()); }
- inline _LIBCPP_INLINE_VISIBILITY reverse_iterator rend() noexcept { return reverse_iterator(begin()); }
- inline _LIBCPP_INLINE_VISIBILITY const_reverse_iterator rend() const noexcept { return const_reverse_iterator(begin()); }
- inline _LIBCPP_INLINE_VISIBILITY const_reverse_iterator crend() const noexcept { return const_reverse_iterator(begin()); }
-
- // capacity:
- inline _LIBCPP_INLINE_VISIBILITY size_type size() const noexcept { return __size_; }
- inline _LIBCPP_INLINE_VISIBILITY size_type max_size() const noexcept { return __size_; }
- inline _LIBCPP_INLINE_VISIBILITY bool empty() const noexcept { return __size_ == 0; }
-
- // element access:
- inline _LIBCPP_INLINE_VISIBILITY reference operator[](size_type __n) { return data()[__n]; }
- inline _LIBCPP_INLINE_VISIBILITY const_reference operator[](size_type __n) const { return data()[__n]; }
-
- inline _LIBCPP_INLINE_VISIBILITY reference front() { return data()[0]; }
- inline _LIBCPP_INLINE_VISIBILITY const_reference front() const { return data()[0]; }
- inline _LIBCPP_INLINE_VISIBILITY reference back() { return data()[__size_-1]; }
- inline _LIBCPP_INLINE_VISIBILITY const_reference back() const { return data()[__size_-1]; }
-
- inline _LIBCPP_INLINE_VISIBILITY const_reference at(size_type __n) const;
- inline _LIBCPP_INLINE_VISIBILITY reference at(size_type __n);
-
- // data access:
- inline _LIBCPP_INLINE_VISIBILITY _Tp* data() noexcept { return __base_; }
- inline _LIBCPP_INLINE_VISIBILITY const _Tp* data() const noexcept { return __base_; }
-
- // mutating member functions:
- inline _LIBCPP_INLINE_VISIBILITY void fill(const value_type& __v) { fill_n(begin(), __size_, __v); }
-};
-
-template <class _Tp>
-inline
-dynarray<_Tp>::dynarray(size_type __c) : dynarray ()
-{
- __base_ = __allocate (__c);
- value_type *__data = data ();
- for ( __size_ = 0; __size_ < __c; ++__size_, ++__data )
- ::new (__data) value_type;
-}
-
-template <class _Tp>
-inline
-dynarray<_Tp>::dynarray(size_type __c, const value_type& __v) : dynarray ()
-{
- __base_ = __allocate (__c);
- value_type *__data = data ();
- for ( __size_ = 0; __size_ < __c; ++__size_, ++__data )
- ::new (__data) value_type (__v);
-}
-
-template <class _Tp>
-inline
-dynarray<_Tp>::dynarray(initializer_list<value_type> __il) : dynarray ()
-{
- size_t sz = __il.size();
- __base_ = __allocate (sz);
- value_type *__data = data ();
- auto src = __il.begin();
- for ( __size_ = 0; __size_ < sz; ++__size_, ++__data, ++src )
- ::new (__data) value_type (*src);
-}
-
-template <class _Tp>
-inline
-dynarray<_Tp>::dynarray(const dynarray& __d) : dynarray ()
-{
- size_t sz = __d.size();
- __base_ = __allocate (sz);
- value_type *__data = data ();
- auto src = __d.begin();
- for ( __size_ = 0; __size_ < sz; ++__size_, ++__data, ++src )
- ::new (__data) value_type (*src);
-}
-
-template <class _Tp>
-inline
-dynarray<_Tp>::~dynarray()
-{
- value_type *__data = data () + __size_;
- for ( size_t i = 0; i < __size_; ++i )
- (--__data)->value_type::~value_type();
- __deallocate_value( __base_ );
-}
-
-template <class _Tp>
-inline _LIBCPP_INLINE_VISIBILITY
-typename dynarray<_Tp>::reference
-dynarray<_Tp>::at(size_type __n)
-{
- if (__n >= __size_)
- __throw_out_of_range("dynarray::at");
-
- return data()[__n];
-}
-
-template <class _Tp>
-inline _LIBCPP_INLINE_VISIBILITY
-typename dynarray<_Tp>::const_reference
-dynarray<_Tp>::at(size_type __n) const
-{
- if (__n >= __size_)
- __throw_out_of_range("dynarray::at");
-
- return data()[__n];
-}
-
-}}}
-
-
-_LIBCPP_BEGIN_NAMESPACE_STD
-template <class _Tp, class _Alloc>
-struct _LIBCPP_TEMPLATE_VIS uses_allocator<std::experimental::dynarray<_Tp>, _Alloc> : true_type {};
-_LIBCPP_END_NAMESPACE_STD
-
-_LIBCPP_POP_MACROS
-
-#endif // if _LIBCPP_STD_VER > 11
-#endif // _LIBCPP_DYNARRAY
diff --git a/linux-x64/clang/include/c++/v1/experimental/filesystem b/linux-x64/clang/include/c++/v1/experimental/filesystem
index 28d8dcf..d2e6237 100644
--- a/linux-x64/clang/include/c++/v1/experimental/filesystem
+++ b/linux-x64/clang/include/c++/v1/experimental/filesystem
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- filesystem -------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef _LIBCPP_EXPERIMENTAL_FILESYSTEM
diff --git a/linux-x64/clang/include/c++/v1/experimental/forward_list b/linux-x64/clang/include/c++/v1/experimental/forward_list
index 55e195f..93f6deb 100644
--- a/linux-x64/clang/include/c++/v1/experimental/forward_list
+++ b/linux-x64/clang/include/c++/v1/experimental/forward_list
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- forward_list -----------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/experimental/functional b/linux-x64/clang/include/c++/v1/experimental/functional
index f63dfb0..8c55f4f 100644
--- a/linux-x64/clang/include/c++/v1/experimental/functional
+++ b/linux-x64/clang/include/c++/v1/experimental/functional
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- functional --------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/experimental/iterator b/linux-x64/clang/include/c++/v1/experimental/iterator
index ea672e9..6a6e51d 100644
--- a/linux-x64/clang/include/c++/v1/experimental/iterator
+++ b/linux-x64/clang/include/c++/v1/experimental/iterator
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------- iterator -------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/experimental/list b/linux-x64/clang/include/c++/v1/experimental/list
index 1678ee3..adc64a8 100644
--- a/linux-x64/clang/include/c++/v1/experimental/list
+++ b/linux-x64/clang/include/c++/v1/experimental/list
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- list ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/experimental/map b/linux-x64/clang/include/c++/v1/experimental/map
index cff2c5e..965d758 100644
--- a/linux-x64/clang/include/c++/v1/experimental/map
+++ b/linux-x64/clang/include/c++/v1/experimental/map
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------- map ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/experimental/memory_resource b/linux-x64/clang/include/c++/v1/experimental/memory_resource
index 221ce5b..f999fb9 100644
--- a/linux-x64/clang/include/c++/v1/experimental/memory_resource
+++ b/linux-x64/clang/include/c++/v1/experimental/memory_resource
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------ memory_resource -----------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -98,7 +97,7 @@
// 8.5, memory.resource
class _LIBCPP_TYPE_VIS memory_resource
{
- static const size_t __max_align = alignof(max_align_t);
+ static const size_t __max_align = _LIBCPP_ALIGNOF(max_align_t);
// 8.5.2, memory.resource.public
public:
@@ -190,7 +189,7 @@
" 'n' exceeds maximum supported size");
}
return static_cast<_ValueType*>(
- __res_->allocate(__n * sizeof(_ValueType), alignof(_ValueType))
+ __res_->allocate(__n * sizeof(_ValueType), _LIBCPP_ALIGNOF(_ValueType))
);
}
@@ -198,7 +197,7 @@
void deallocate(_ValueType * __p, size_t __n) _NOEXCEPT {
_LIBCPP_ASSERT(__n <= __max_size(),
"deallocate called for size which exceeds max_size()");
- __res_->deallocate(__p, __n * sizeof(_ValueType), alignof(_ValueType));
+ __res_->deallocate(__p, __n * sizeof(_ValueType), _LIBCPP_ALIGNOF(_ValueType));
}
template <class _Tp, class ..._Ts>
@@ -345,7 +344,7 @@
&& is_same<typename _CTraits::pointer, char*>::value
&& is_same<typename _CTraits::void_pointer, void*>::value, "");
- static const size_t _MaxAlign = alignof(max_align_t);
+ static const size_t _MaxAlign = _LIBCPP_ALIGNOF(max_align_t);
using _Alloc = typename _CTraits::template rebind_alloc<
typename aligned_storage<_MaxAlign, _MaxAlign>::type
diff --git a/linux-x64/clang/include/c++/v1/experimental/numeric b/linux-x64/clang/include/c++/v1/experimental/numeric
index 14a6640..4ea1306 100644
--- a/linux-x64/clang/include/c++/v1/experimental/numeric
+++ b/linux-x64/clang/include/c++/v1/experimental/numeric
@@ -1,11 +1,20 @@
// -*- C++ -*-
//===--------------------------- numeric ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
+#ifndef _LIBCPP_EXPERIMENTAL_NUMERIC
+#define _LIBCPP_EXPERIMENTAL_NUMERIC
-#error "<experimental/numeric> has been removed. Use <numeric> instead."
+#include <__config>
+
+#ifdef _LIBCPP_WARNING
+_LIBCPP_WARNING("<experimental/numeric> has been removed. Use <numeric> instead.")
+#else
+# warning "<experimental/numeric> has been removed. Use <numeric> instead."
+#endif
+
+#endif // _LIBCPP_EXPERIMENTAL_NUMERIC
diff --git a/linux-x64/clang/include/c++/v1/experimental/optional b/linux-x64/clang/include/c++/v1/experimental/optional
index d68cefd..1749cd6 100644
--- a/linux-x64/clang/include/c++/v1/experimental/optional
+++ b/linux-x64/clang/include/c++/v1/experimental/optional
@@ -1,11 +1,20 @@
// -*- C++ -*-
//===-------------------------- optional ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
+#ifndef _LIBCPP_EXPERIMENTAL_OPTIONAL
+#define _LIBCPP_EXPERIMENTAL_OPTIONAL
-#error "<experimental/optional> has been removed. Use <optional> instead."
+#include <__config>
+
+#ifdef _LIBCPP_WARNING
+_LIBCPP_WARNING("<experimental/optional> has been removed. Use <optional> instead.")
+#else
+# warning "<experimental/optional> has been removed. Use <optional> instead."
+#endif
+
+#endif // _LIBCPP_EXPERIMENTAL_OPTIONAL
diff --git a/linux-x64/clang/include/c++/v1/experimental/propagate_const b/linux-x64/clang/include/c++/v1/experimental/propagate_const
index 1885485..092b013 100644
--- a/linux-x64/clang/include/c++/v1/experimental/propagate_const
+++ b/linux-x64/clang/include/c++/v1/experimental/propagate_const
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------ propagate_const -----------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/experimental/ratio b/linux-x64/clang/include/c++/v1/experimental/ratio
index 9c2bf2e..4cd4fa0 100644
--- a/linux-x64/clang/include/c++/v1/experimental/ratio
+++ b/linux-x64/clang/include/c++/v1/experimental/ratio
@@ -1,11 +1,20 @@
// -*- C++ -*-
-//===------------------------------ ratio ---------------------------------===//
+//===----------------------------- ratio ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
+#ifndef _LIBCPP_EXPERIMENTAL_RATIO
+#define _LIBCPP_EXPERIMENTAL_RATIO
-#error "<experimental/ratio> has been removed. Use <ratio> instead."
+#include <__config>
+
+#ifdef _LIBCPP_WARNING
+_LIBCPP_WARNING("<experimental/ratio> has been removed. Use <ratio> instead.")
+#else
+# warning "<experimental/ratio> has been removed. Use <ratio> instead."
+#endif
+
+#endif // _LIBCPP_EXPERIMENTAL_RATIO
diff --git a/linux-x64/clang/include/c++/v1/experimental/regex b/linux-x64/clang/include/c++/v1/experimental/regex
index d38891c..17193cf 100644
--- a/linux-x64/clang/include/c++/v1/experimental/regex
+++ b/linux-x64/clang/include/c++/v1/experimental/regex
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------- regex ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/experimental/set b/linux-x64/clang/include/c++/v1/experimental/set
index 20cf6d4..52f4df3 100644
--- a/linux-x64/clang/include/c++/v1/experimental/set
+++ b/linux-x64/clang/include/c++/v1/experimental/set
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- list ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/experimental/simd b/linux-x64/clang/include/c++/v1/experimental/simd
index 6580443..39ac35e 100644
--- a/linux-x64/clang/include/c++/v1/experimental/simd
+++ b/linux-x64/clang/include/c++/v1/experimental/simd
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------------- simd ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef _LIBCPP_EXPERIMENTAL_SIMD
diff --git a/linux-x64/clang/include/c++/v1/experimental/string b/linux-x64/clang/include/c++/v1/experimental/string
index 8b85451..264ff92 100644
--- a/linux-x64/clang/include/c++/v1/experimental/string
+++ b/linux-x64/clang/include/c++/v1/experimental/string
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- string ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/experimental/string_view b/linux-x64/clang/include/c++/v1/experimental/string_view
index f13bff5..4b59e6d 100644
--- a/linux-x64/clang/include/c++/v1/experimental/string_view
+++ b/linux-x64/clang/include/c++/v1/experimental/string_view
@@ -1,11 +1,20 @@
// -*- C++ -*-
//===------------------------ string_view ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
+#ifndef _LIBCPP_EXPERIMENTAL_STRING_VIEW
+#define _LIBCPP_EXPERIMENTAL_STRING_VIEW
-#error "<experimental/string_view> has been removed. Use <string_view> instead."
+#include <__config>
+
+#ifdef _LIBCPP_WARNING
+_LIBCPP_WARNING("<experimental/string_view> has been removed. Use <string_view> instead.")
+#else
+# warning "<experimental/string_view> has been removed. Use <string_view> instead."
+#endif
+
+#endif // _LIBCPP_EXPERIMENTAL_STRING_VIEW
diff --git a/linux-x64/clang/include/c++/v1/experimental/system_error b/linux-x64/clang/include/c++/v1/experimental/system_error
index 7937357..094e6d3 100644
--- a/linux-x64/clang/include/c++/v1/experimental/system_error
+++ b/linux-x64/clang/include/c++/v1/experimental/system_error
@@ -1,11 +1,20 @@
// -*- C++ -*-
//===-------------------------- system_error ------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
+#ifndef _LIBCPP_EXPERIMENTAL_SYSTEM_ERROR
+#define _LIBCPP_EXPERIMENTAL_SYSTEM_ERROR
-#error "<experimental/system_error> has been removed. Use <system_error> instead."
+#include <__config>
+
+#ifdef _LIBCPP_WARNING
+_LIBCPP_WARNING("<experimental/system_error> has been removed. Use <system_error> instead.")
+#else
+# warning "<experimental/system_error> has been removed. Use <system_error> instead."
+#endif
+
+#endif // _LIBCPP_EXPERIMENTAL_SYSTEM_ERROR
diff --git a/linux-x64/clang/include/c++/v1/experimental/tuple b/linux-x64/clang/include/c++/v1/experimental/tuple
index 1f37a62..827ef37 100644
--- a/linux-x64/clang/include/c++/v1/experimental/tuple
+++ b/linux-x64/clang/include/c++/v1/experimental/tuple
@@ -1,11 +1,20 @@
// -*- C++ -*-
//===----------------------------- tuple ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
+#ifndef _LIBCPP_EXPERIMENTAL_TUPLE
+#define _LIBCPP_EXPERIMENTAL_TUPLE
-#error "<experimental/tuple> has been removed. Use <tuple> instead."
+#include <__config>
+
+#ifdef _LIBCPP_WARNING
+_LIBCPP_WARNING("<experimental/tuple> has been removed. Use <tuple> instead.")
+#else
+# warning "<experimental/tuple> has been removed. Use <tuple> instead."
+#endif
+
+#endif // _LIBCPP_EXPERIMENTAL_TUPLE
diff --git a/linux-x64/clang/include/c++/v1/experimental/type_traits b/linux-x64/clang/include/c++/v1/experimental/type_traits
index afe4915..3127c0e 100644
--- a/linux-x64/clang/include/c++/v1/experimental/type_traits
+++ b/linux-x64/clang/include/c++/v1/experimental/type_traits
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- type_traits -------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/experimental/unordered_map b/linux-x64/clang/include/c++/v1/experimental/unordered_map
index 1f998c2..eca9cea 100644
--- a/linux-x64/clang/include/c++/v1/experimental/unordered_map
+++ b/linux-x64/clang/include/c++/v1/experimental/unordered_map
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------- unordered_map ------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/experimental/unordered_set b/linux-x64/clang/include/c++/v1/experimental/unordered_set
index d00a837..323868f 100644
--- a/linux-x64/clang/include/c++/v1/experimental/unordered_set
+++ b/linux-x64/clang/include/c++/v1/experimental/unordered_set
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------- unordered_set ------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/experimental/utility b/linux-x64/clang/include/c++/v1/experimental/utility
index 8effa71..0bca0f7 100644
--- a/linux-x64/clang/include/c++/v1/experimental/utility
+++ b/linux-x64/clang/include/c++/v1/experimental/utility
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- utility ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/experimental/vector b/linux-x64/clang/include/c++/v1/experimental/vector
index bd10492..9b81012 100644
--- a/linux-x64/clang/include/c++/v1/experimental/vector
+++ b/linux-x64/clang/include/c++/v1/experimental/vector
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- vector ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/ext/__hash b/linux-x64/clang/include/c++/v1/ext/__hash
index 318cb1f..98a9544 100644
--- a/linux-x64/clang/include/c++/v1/ext/__hash
+++ b/linux-x64/clang/include/c++/v1/ext/__hash
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------- hash_set ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/ext/hash_map b/linux-x64/clang/include/c++/v1/ext/hash_map
index 998e8f6..d06a9e3 100644
--- a/linux-x64/clang/include/c++/v1/ext/hash_map
+++ b/linux-x64/clang/include/c++/v1/ext/hash_map
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- hash_map ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/ext/hash_set b/linux-x64/clang/include/c++/v1/ext/hash_set
index 38f81ed..21e6687 100644
--- a/linux-x64/clang/include/c++/v1/ext/hash_set
+++ b/linux-x64/clang/include/c++/v1/ext/hash_set
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------- hash_set ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/fenv.h b/linux-x64/clang/include/c++/v1/fenv.h
new file mode 100644
index 0000000..7cede4b
--- /dev/null
+++ b/linux-x64/clang/include/c++/v1/fenv.h
@@ -0,0 +1,115 @@
+// -*- C++ -*-
+//===---------------------------- math.h ----------------------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef _LIBCPP_FENV_H
+#define _LIBCPP_FENV_H
+
+
+/*
+ fenv.h synopsis
+
+This entire header is C99 / C++0X
+
+Macros:
+
+ FE_DIVBYZERO
+ FE_INEXACT
+ FE_INVALID
+ FE_OVERFLOW
+ FE_UNDERFLOW
+ FE_ALL_EXCEPT
+ FE_DOWNWARD
+ FE_TONEAREST
+ FE_TOWARDZERO
+ FE_UPWARD
+ FE_DFL_ENV
+
+Types:
+
+ fenv_t
+ fexcept_t
+
+int feclearexcept(int excepts);
+int fegetexceptflag(fexcept_t* flagp, int excepts);
+int feraiseexcept(int excepts);
+int fesetexceptflag(const fexcept_t* flagp, int excepts);
+int fetestexcept(int excepts);
+int fegetround();
+int fesetround(int round);
+int fegetenv(fenv_t* envp);
+int feholdexcept(fenv_t* envp);
+int fesetenv(const fenv_t* envp);
+int feupdateenv(const fenv_t* envp);
+
+
+*/
+
+#include <__config>
+#include_next <fenv.h>
+
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+
+extern "C++" {
+
+#ifdef feclearexcept
+#undef feclearexcept
+#endif
+
+#ifdef fegetexceptflag
+#undef fegetexceptflag
+#endif
+
+
+#ifdef feraiseexcept
+#undef feraiseexcept
+#endif
+
+#ifdef fesetexceptflag
+#undef fesetexceptflag
+#endif
+
+
+#ifdef fetestexcept
+#undef fetestexcept
+#endif
+
+#ifdef fegetround
+#undef fegetround
+#endif
+
+#ifdef fesetround
+#undef fesetround
+#endif
+
+#ifdef fegetenv
+#undef fegetenv
+#endif
+
+#ifdef feholdexcept
+#undef feholdexcept
+#endif
+
+
+#ifdef fesetenv
+#undef fesetenv
+#endif
+
+#ifdef feupdateenv
+#undef feupdateenv
+#endif
+
+} // extern "C++"
+
+#endif // defined(__cplusplus)
+
+#endif // _LIBCPP_FENV_H
diff --git a/linux-x64/clang/include/c++/v1/filesystem b/linux-x64/clang/include/c++/v1/filesystem
index 339bb25..7a151d9 100644
--- a/linux-x64/clang/include/c++/v1/filesystem
+++ b/linux-x64/clang/include/c++/v1/filesystem
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- filesystem -------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef _LIBCPP_FILESYSTEM
@@ -259,36 +258,6 @@
_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM
-struct _FilesystemClock {
-#if !defined(_LIBCPP_HAS_NO_INT128)
- typedef __int128_t rep;
- typedef nano period;
-#else
- typedef long long rep;
- typedef nano period;
-#endif
-
- typedef chrono::duration<rep, period> duration;
- typedef chrono::time_point<_FilesystemClock> time_point;
-
- static _LIBCPP_CONSTEXPR_AFTER_CXX11 const bool is_steady = false;
-
- _LIBCPP_FUNC_VIS static time_point now() noexcept;
-
- _LIBCPP_INLINE_VISIBILITY
- static time_t to_time_t(const time_point& __t) noexcept {
- typedef chrono::duration<rep> __secs;
- return time_t(
- chrono::duration_cast<__secs>(__t.time_since_epoch()).count());
- }
-
- _LIBCPP_INLINE_VISIBILITY
- static time_point from_time_t(time_t __t) noexcept {
- typedef chrono::duration<rep> __secs;
- return time_point(__secs(__t));
- }
-};
-
typedef chrono::time_point<_FilesystemClock> file_time_type;
struct _LIBCPP_TYPE_VIS space_info {
@@ -1181,6 +1150,31 @@
return __is;
}
+ friend _LIBCPP_INLINE_VISIBILITY bool operator==(const path& __lhs, const path& __rhs) noexcept {
+ return __lhs.compare(__rhs) == 0;
+ }
+ friend _LIBCPP_INLINE_VISIBILITY bool operator!=(const path& __lhs, const path& __rhs) noexcept {
+ return __lhs.compare(__rhs) != 0;
+ }
+ friend _LIBCPP_INLINE_VISIBILITY bool operator<(const path& __lhs, const path& __rhs) noexcept {
+ return __lhs.compare(__rhs) < 0;
+ }
+ friend _LIBCPP_INLINE_VISIBILITY bool operator<=(const path& __lhs, const path& __rhs) noexcept {
+ return __lhs.compare(__rhs) <= 0;
+ }
+ friend _LIBCPP_INLINE_VISIBILITY bool operator>(const path& __lhs, const path& __rhs) noexcept {
+ return __lhs.compare(__rhs) > 0;
+ }
+ friend _LIBCPP_INLINE_VISIBILITY bool operator>=(const path& __lhs, const path& __rhs) noexcept {
+ return __lhs.compare(__rhs) >= 0;
+ }
+
+ friend _LIBCPP_INLINE_VISIBILITY path operator/(const path& __lhs,
+ const path& __rhs) {
+ path __result(__lhs);
+ __result /= __rhs;
+ return __result;
+ }
private:
inline _LIBCPP_INLINE_VISIBILITY path&
__assign_view(__string_view const& __s) noexcept {
@@ -1197,43 +1191,6 @@
_LIBCPP_FUNC_VIS
size_t hash_value(const path& __p) noexcept;
-inline _LIBCPP_INLINE_VISIBILITY bool operator==(const path& __lhs,
- const path& __rhs) noexcept {
- return __lhs.compare(__rhs) == 0;
-}
-
-inline _LIBCPP_INLINE_VISIBILITY bool operator!=(const path& __lhs,
- const path& __rhs) noexcept {
- return __lhs.compare(__rhs) != 0;
-}
-
-inline _LIBCPP_INLINE_VISIBILITY bool operator<(const path& __lhs,
- const path& __rhs) noexcept {
- return __lhs.compare(__rhs) < 0;
-}
-
-inline _LIBCPP_INLINE_VISIBILITY bool operator<=(const path& __lhs,
- const path& __rhs) noexcept {
- return __lhs.compare(__rhs) <= 0;
-}
-
-inline _LIBCPP_INLINE_VISIBILITY bool operator>(const path& __lhs,
- const path& __rhs) noexcept {
- return __lhs.compare(__rhs) > 0;
-}
-
-inline _LIBCPP_INLINE_VISIBILITY bool operator>=(const path& __lhs,
- const path& __rhs) noexcept {
- return __lhs.compare(__rhs) >= 0;
-}
-
-inline _LIBCPP_INLINE_VISIBILITY path operator/(const path& __lhs,
- const path& __rhs) {
- path __result(__lhs);
- __result /= __rhs;
- return __result;
-}
-
template <class _Source>
_LIBCPP_INLINE_VISIBILITY
typename enable_if<__is_pathable<_Source>::value, path>::type
@@ -1390,7 +1347,6 @@
return __storage_->__what_.c_str();
}
- _LIBCPP_FUNC_VIS
void __create_what(int __num_paths);
private:
@@ -1408,13 +1364,11 @@
template <class... _Args>
_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
#ifndef _LIBCPP_NO_EXCEPTIONS
- void
- __throw_filesystem_error(_Args&&... __args) {
+void __throw_filesystem_error(_Args&&... __args) {
throw filesystem_error(std::forward<_Args>(__args)...);
}
#else
- void
- __throw_filesystem_error(_Args&&...) {
+void __throw_filesystem_error(_Args&&...) {
_VSTD::abort();
}
#endif
diff --git a/linux-x64/clang/include/c++/v1/float.h b/linux-x64/clang/include/c++/v1/float.h
index 759ac8e..5c1e1db 100644
--- a/linux-x64/clang/include/c++/v1/float.h
+++ b/linux-x64/clang/include/c++/v1/float.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- float.h ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/forward_list b/linux-x64/clang/include/c++/v1/forward_list
index f9a71f0..bbea71e 100644
--- a/linux-x64/clang/include/c++/v1/forward_list
+++ b/linux-x64/clang/include/c++/v1/forward_list
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------- forward_list ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -167,6 +166,11 @@
void swap(forward_list<T, Allocator>& x, forward_list<T, Allocator>& y)
noexcept(noexcept(x.swap(y)));
+template <class T, class Allocator, class U>
+ void erase(forward_list<T, Allocator>& c, const U& value); // C++20
+template <class T, class Allocator, class Predicate>
+ void erase_if(forward_list<T, Allocator>& c, Predicate pred); // C++20
+
} // std
*/
@@ -1744,6 +1748,18 @@
__x.swap(__y);
}
+#if _LIBCPP_STD_VER > 17
+template <class _Tp, class _Allocator, class _Predicate>
+inline _LIBCPP_INLINE_VISIBILITY
+void erase_if(forward_list<_Tp, _Allocator>& __c, _Predicate __pred)
+{ __c.remove_if(__pred); }
+
+template <class _Tp, class _Allocator, class _Up>
+inline _LIBCPP_INLINE_VISIBILITY
+void erase(forward_list<_Tp, _Allocator>& __c, const _Up& __v)
+{ _VSTD::erase_if(__c, [&](auto& __elem) { return __elem == __v; }); }
+#endif
+
_LIBCPP_END_NAMESPACE_STD
_LIBCPP_POP_MACROS
diff --git a/linux-x64/clang/include/c++/v1/fstream b/linux-x64/clang/include/c++/v1/fstream
index 332b474..1902ce9 100644
--- a/linux-x64/clang/include/c++/v1/fstream
+++ b/linux-x64/clang/include/c++/v1/fstream
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------- fstream ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -702,6 +701,7 @@
__file_ = 0;
else
__rt = 0;
+ setbuf(0, 0);
}
return __rt;
}
diff --git a/linux-x64/clang/include/c++/v1/functional b/linux-x64/clang/include/c++/v1/functional
index 61c87b0..def8a75 100644
--- a/linux-x64/clang/include/c++/v1/functional
+++ b/linux-x64/clang/include/c++/v1/functional
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------ functional ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -68,6 +67,11 @@
template <class T> void cref(const T&& t) = delete;
template <class T> reference_wrapper<const T> cref(reference_wrapper<T> t) noexcept;
+template <class T> struct unwrap_reference; // since C++20
+template <class T> struct unwrap_ref_decay : unwrap_reference<decay_t<T>> { }; // since C++20
+template <class T> using unwrap_reference_t = typename unwrap_reference<T>::type; // since C++20
+template <class T> using unwrap_ref_decay_t = typename unwrap_ref_decay<T>::type; // since C++20
+
template <class T> // <class T=void> in C++14
struct plus : binary_function<T, T, T>
{
@@ -1468,6 +1472,82 @@
namespace __function {
+// __alloc_func holds a functor and an allocator.
+
+template <class _Fp, class _Ap, class _FB> class __alloc_func;
+
+template <class _Fp, class _Ap, class _Rp, class... _ArgTypes>
+class __alloc_func<_Fp, _Ap, _Rp(_ArgTypes...)>
+{
+ __compressed_pair<_Fp, _Ap> __f_;
+
+ public:
+ typedef _Fp _Target;
+ typedef _Ap _Alloc;
+
+ _LIBCPP_INLINE_VISIBILITY
+ const _Target& __target() const { return __f_.first(); }
+
+ // WIN32 APIs may define __allocator, so use __get_allocator instead.
+ _LIBCPP_INLINE_VISIBILITY
+ const _Alloc& __get_allocator() const { return __f_.second(); }
+
+ _LIBCPP_INLINE_VISIBILITY
+ explicit __alloc_func(_Target&& __f)
+ : __f_(piecewise_construct, _VSTD::forward_as_tuple(_VSTD::move(__f)),
+ _VSTD::forward_as_tuple())
+ {
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ explicit __alloc_func(const _Target& __f, const _Alloc& __a)
+ : __f_(piecewise_construct, _VSTD::forward_as_tuple(__f),
+ _VSTD::forward_as_tuple(__a))
+ {
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ explicit __alloc_func(const _Target& __f, _Alloc&& __a)
+ : __f_(piecewise_construct, _VSTD::forward_as_tuple(__f),
+ _VSTD::forward_as_tuple(_VSTD::move(__a)))
+ {
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ explicit __alloc_func(_Target&& __f, _Alloc&& __a)
+ : __f_(piecewise_construct, _VSTD::forward_as_tuple(_VSTD::move(__f)),
+ _VSTD::forward_as_tuple(_VSTD::move(__a)))
+ {
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ _Rp operator()(_ArgTypes&&... __arg)
+ {
+ typedef __invoke_void_return_wrapper<_Rp> _Invoker;
+ return _Invoker::__call(__f_.first(),
+ _VSTD::forward<_ArgTypes>(__arg)...);
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ __alloc_func* __clone() const
+ {
+ typedef allocator_traits<_Alloc> __alloc_traits;
+ typedef
+ typename __rebind_alloc_helper<__alloc_traits, __alloc_func>::type
+ _AA;
+ _AA __a(__f_.second());
+ typedef __allocator_destructor<_AA> _Dp;
+ unique_ptr<__alloc_func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
+ ::new ((void*)__hold.get()) __alloc_func(__f_.first(), _Alloc(__a));
+ return __hold.release();
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ void destroy() _NOEXCEPT { __f_.~__compressed_pair<_Target, _Alloc>(); }
+};
+
+// __base provides an abstract interface for copyable functors.
+
template<class _Fp> class __base;
template<class _Rp, class ..._ArgTypes>
@@ -1489,37 +1569,37 @@
#endif // _LIBCPP_NO_RTTI
};
+// __func implements __base for a given functor type.
+
template<class _FD, class _Alloc, class _FB> class __func;
template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes>
class __func<_Fp, _Alloc, _Rp(_ArgTypes...)>
: public __base<_Rp(_ArgTypes...)>
{
- __compressed_pair<_Fp, _Alloc> __f_;
+ __alloc_func<_Fp, _Alloc, _Rp(_ArgTypes...)> __f_;
public:
_LIBCPP_INLINE_VISIBILITY
explicit __func(_Fp&& __f)
- : __f_(piecewise_construct, _VSTD::forward_as_tuple(_VSTD::move(__f)),
- _VSTD::forward_as_tuple()) {}
+ : __f_(_VSTD::move(__f)) {}
+
_LIBCPP_INLINE_VISIBILITY
explicit __func(const _Fp& __f, const _Alloc& __a)
- : __f_(piecewise_construct, _VSTD::forward_as_tuple(__f),
- _VSTD::forward_as_tuple(__a)) {}
+ : __f_(__f, __a) {}
_LIBCPP_INLINE_VISIBILITY
explicit __func(const _Fp& __f, _Alloc&& __a)
- : __f_(piecewise_construct, _VSTD::forward_as_tuple(__f),
- _VSTD::forward_as_tuple(_VSTD::move(__a))) {}
+ : __f_(__f, _VSTD::move(__a)) {}
_LIBCPP_INLINE_VISIBILITY
explicit __func(_Fp&& __f, _Alloc&& __a)
- : __f_(piecewise_construct, _VSTD::forward_as_tuple(_VSTD::move(__f)),
- _VSTD::forward_as_tuple(_VSTD::move(__a))) {}
+ : __f_(_VSTD::move(__f), _VSTD::move(__a)) {}
+
virtual __base<_Rp(_ArgTypes...)>* __clone() const;
virtual void __clone(__base<_Rp(_ArgTypes...)>*) const;
virtual void destroy() _NOEXCEPT;
virtual void destroy_deallocate() _NOEXCEPT;
- virtual _Rp operator()(_ArgTypes&& ... __arg);
+ virtual _Rp operator()(_ArgTypes&&... __arg);
#ifndef _LIBCPP_NO_RTTI
virtual const void* target(const type_info&) const _NOEXCEPT;
virtual const std::type_info& target_type() const _NOEXCEPT;
@@ -1532,10 +1612,10 @@
{
typedef allocator_traits<_Alloc> __alloc_traits;
typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap;
- _Ap __a(__f_.second());
+ _Ap __a(__f_.__get_allocator());
typedef __allocator_destructor<_Ap> _Dp;
unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
- ::new (__hold.get()) __func(__f_.first(), _Alloc(__a));
+ ::new ((void*)__hold.get()) __func(__f_.__target(), _Alloc(__a));
return __hold.release();
}
@@ -1543,14 +1623,14 @@
void
__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::__clone(__base<_Rp(_ArgTypes...)>* __p) const
{
- ::new (__p) __func(__f_.first(), __f_.second());
+ ::new (__p) __func(__f_.__target(), __f_.__get_allocator());
}
template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes>
void
__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::destroy() _NOEXCEPT
{
- __f_.~__compressed_pair<_Fp, _Alloc>();
+ __f_.destroy();
}
template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes>
@@ -1559,8 +1639,8 @@
{
typedef allocator_traits<_Alloc> __alloc_traits;
typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap;
- _Ap __a(__f_.second());
- __f_.~__compressed_pair<_Fp, _Alloc>();
+ _Ap __a(__f_.__get_allocator());
+ __f_.destroy();
__a.deallocate(this, 1);
}
@@ -1568,8 +1648,7 @@
_Rp
__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::operator()(_ArgTypes&& ... __arg)
{
- typedef __invoke_void_return_wrapper<_Rp> _Invoker;
- return _Invoker::__call(__f_.first(), _VSTD::forward<_ArgTypes>(__arg)...);
+ return __f_(_VSTD::forward<_ArgTypes>(__arg)...);
}
#ifndef _LIBCPP_NO_RTTI
@@ -1579,7 +1658,7 @@
__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::target(const type_info& __ti) const _NOEXCEPT
{
if (__ti == typeid(_Fp))
- return &__f_.first();
+ return &__f_.__target();
return (const void*)0;
}
@@ -1592,6 +1671,493 @@
#endif // _LIBCPP_NO_RTTI
+// __value_func creates a value-type from a __func.
+
+template <class _Fp> class __value_func;
+
+template <class _Rp, class... _ArgTypes> class __value_func<_Rp(_ArgTypes...)>
+{
+ typename aligned_storage<3 * sizeof(void*)>::type __buf_;
+
+ typedef __base<_Rp(_ArgTypes...)> __func;
+ __func* __f_;
+
+ _LIBCPP_NO_CFI static __func* __as_base(void* p)
+ {
+ return reinterpret_cast<__func*>(p);
+ }
+
+ public:
+ _LIBCPP_INLINE_VISIBILITY
+ __value_func() _NOEXCEPT : __f_(0) {}
+
+ template <class _Fp, class _Alloc>
+ _LIBCPP_INLINE_VISIBILITY __value_func(_Fp&& __f, const _Alloc __a)
+ : __f_(0)
+ {
+ typedef allocator_traits<_Alloc> __alloc_traits;
+ typedef __function::__func<_Fp, _Alloc, _Rp(_ArgTypes...)> _Fun;
+ typedef typename __rebind_alloc_helper<__alloc_traits, _Fun>::type
+ _FunAlloc;
+
+ if (__function::__not_null(__f))
+ {
+ _FunAlloc __af(__a);
+ if (sizeof(_Fun) <= sizeof(__buf_) &&
+ is_nothrow_copy_constructible<_Fp>::value &&
+ is_nothrow_copy_constructible<_FunAlloc>::value)
+ {
+ __f_ =
+ ::new ((void*)&__buf_) _Fun(_VSTD::move(__f), _Alloc(__af));
+ }
+ else
+ {
+ typedef __allocator_destructor<_FunAlloc> _Dp;
+ unique_ptr<__func, _Dp> __hold(__af.allocate(1), _Dp(__af, 1));
+ ::new ((void*)__hold.get()) _Fun(_VSTD::move(__f), _Alloc(__a));
+ __f_ = __hold.release();
+ }
+ }
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ __value_func(const __value_func& __f)
+ {
+ if (__f.__f_ == 0)
+ __f_ = 0;
+ else if ((void*)__f.__f_ == &__f.__buf_)
+ {
+ __f_ = __as_base(&__buf_);
+ __f.__f_->__clone(__f_);
+ }
+ else
+ __f_ = __f.__f_->__clone();
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ __value_func(__value_func&& __f) _NOEXCEPT
+ {
+ if (__f.__f_ == 0)
+ __f_ = 0;
+ else if ((void*)__f.__f_ == &__f.__buf_)
+ {
+ __f_ = __as_base(&__buf_);
+ __f.__f_->__clone(__f_);
+ }
+ else
+ {
+ __f_ = __f.__f_;
+ __f.__f_ = 0;
+ }
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ ~__value_func()
+ {
+ if ((void*)__f_ == &__buf_)
+ __f_->destroy();
+ else if (__f_)
+ __f_->destroy_deallocate();
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ __value_func& operator=(__value_func&& __f)
+ {
+ *this = nullptr;
+ if (__f.__f_ == 0)
+ __f_ = 0;
+ else if ((void*)__f.__f_ == &__f.__buf_)
+ {
+ __f_ = __as_base(&__buf_);
+ __f.__f_->__clone(__f_);
+ }
+ else
+ {
+ __f_ = __f.__f_;
+ __f.__f_ = 0;
+ }
+ return *this;
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ __value_func& operator=(nullptr_t)
+ {
+ __func* __f = __f_;
+ __f_ = 0;
+ if ((void*)__f == &__buf_)
+ __f->destroy();
+ else if (__f)
+ __f->destroy_deallocate();
+ return *this;
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ _Rp operator()(_ArgTypes&&... __args) const
+ {
+ if (__f_ == 0)
+ __throw_bad_function_call();
+ return (*__f_)(_VSTD::forward<_ArgTypes>(__args)...);
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ void swap(__value_func& __f) _NOEXCEPT
+ {
+ if (&__f == this)
+ return;
+ if ((void*)__f_ == &__buf_ && (void*)__f.__f_ == &__f.__buf_)
+ {
+ typename aligned_storage<sizeof(__buf_)>::type __tempbuf;
+ __func* __t = __as_base(&__tempbuf);
+ __f_->__clone(__t);
+ __f_->destroy();
+ __f_ = 0;
+ __f.__f_->__clone(__as_base(&__buf_));
+ __f.__f_->destroy();
+ __f.__f_ = 0;
+ __f_ = __as_base(&__buf_);
+ __t->__clone(__as_base(&__f.__buf_));
+ __t->destroy();
+ __f.__f_ = __as_base(&__f.__buf_);
+ }
+ else if ((void*)__f_ == &__buf_)
+ {
+ __f_->__clone(__as_base(&__f.__buf_));
+ __f_->destroy();
+ __f_ = __f.__f_;
+ __f.__f_ = __as_base(&__f.__buf_);
+ }
+ else if ((void*)__f.__f_ == &__f.__buf_)
+ {
+ __f.__f_->__clone(__as_base(&__buf_));
+ __f.__f_->destroy();
+ __f.__f_ = __f_;
+ __f_ = __as_base(&__buf_);
+ }
+ else
+ _VSTD::swap(__f_, __f.__f_);
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ _LIBCPP_EXPLICIT operator bool() const _NOEXCEPT { return __f_ != 0; }
+
+#ifndef _LIBCPP_NO_RTTI
+ _LIBCPP_INLINE_VISIBILITY
+ const std::type_info& target_type() const _NOEXCEPT
+ {
+ if (__f_ == 0)
+ return typeid(void);
+ return __f_->target_type();
+ }
+
+ template <typename _Tp>
+ _LIBCPP_INLINE_VISIBILITY const _Tp* target() const _NOEXCEPT
+ {
+ if (__f_ == 0)
+ return 0;
+ return (const _Tp*)__f_->target(typeid(_Tp));
+ }
+#endif // _LIBCPP_NO_RTTI
+};
+
+// Storage for a functor object, to be used with __policy to manage copy and
+// destruction.
+union __policy_storage
+{
+ mutable char __small[sizeof(void*) * 2];
+ void* __large;
+};
+
+// True if _Fun can safely be held in __policy_storage.__small.
+template <typename _Fun>
+struct __use_small_storage
+ : public _VSTD::integral_constant<
+ bool, sizeof(_Fun) <= sizeof(__policy_storage) &&
+ _LIBCPP_ALIGNOF(_Fun) <= _LIBCPP_ALIGNOF(__policy_storage) &&
+ _VSTD::is_trivially_copy_constructible<_Fun>::value &&
+ _VSTD::is_trivially_destructible<_Fun>::value> {};
+
+// Policy contains information about how to copy, destroy, and move the
+// underlying functor. You can think of it as a vtable of sorts.
+struct __policy
+{
+ // Used to copy or destroy __large values. null for trivial objects.
+ void* (*const __clone)(const void*);
+ void (*const __destroy)(void*);
+
+ // True if this is the null policy (no value).
+ const bool __is_null;
+
+ // The target type. May be null if RTTI is disabled.
+ const std::type_info* const __type_info;
+
+ // Returns a pointer to a static policy object suitable for the functor
+ // type.
+ template <typename _Fun>
+ _LIBCPP_INLINE_VISIBILITY static const __policy* __create()
+ {
+ return __choose_policy<_Fun>(__use_small_storage<_Fun>());
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ static const __policy* __create_empty()
+ {
+ static const _LIBCPP_CONSTEXPR __policy __policy_ = {nullptr, nullptr,
+ true,
+#ifndef _LIBCPP_NO_RTTI
+ &typeid(void)
+#else
+ nullptr
+#endif
+ };
+ return &__policy_;
+ }
+
+ private:
+ template <typename _Fun> static void* __large_clone(const void* __s)
+ {
+ const _Fun* __f = static_cast<const _Fun*>(__s);
+ return __f->__clone();
+ }
+
+ template <typename _Fun> static void __large_destroy(void* __s)
+ {
+ typedef allocator_traits<typename _Fun::_Alloc> __alloc_traits;
+ typedef typename __rebind_alloc_helper<__alloc_traits, _Fun>::type
+ _FunAlloc;
+ _Fun* __f = static_cast<_Fun*>(__s);
+ _FunAlloc __a(__f->__get_allocator());
+ __f->destroy();
+ __a.deallocate(__f, 1);
+ }
+
+ template <typename _Fun>
+ _LIBCPP_INLINE_VISIBILITY static const __policy*
+ __choose_policy(/* is_small = */ false_type)
+ {
+ static const _LIBCPP_CONSTEXPR __policy __policy_ = {
+ &__large_clone<_Fun>, &__large_destroy<_Fun>, false,
+#ifndef _LIBCPP_NO_RTTI
+ &typeid(typename _Fun::_Target)
+#else
+ nullptr
+#endif
+ };
+ return &__policy_;
+ }
+
+ template <typename _Fun>
+ _LIBCPP_INLINE_VISIBILITY static const __policy*
+ __choose_policy(/* is_small = */ true_type)
+ {
+ static const _LIBCPP_CONSTEXPR __policy __policy_ = {
+ nullptr, nullptr, false,
+#ifndef _LIBCPP_NO_RTTI
+ &typeid(typename _Fun::_Target)
+#else
+ nullptr
+#endif
+ };
+ return &__policy_;
+ }
+};
+
+// Used to choose between perfect forwarding or pass-by-value. Pass-by-value is
+// faster for types that can be passed in registers.
+template <typename _Tp>
+using __fast_forward =
+ typename _VSTD::conditional<_VSTD::is_scalar<_Tp>::value, _Tp, _Tp&&>::type;
+
+// __policy_invoker calls an instance of __alloc_func held in __policy_storage.
+
+template <class _Fp> struct __policy_invoker;
+
+template <class _Rp, class... _ArgTypes>
+struct __policy_invoker<_Rp(_ArgTypes...)>
+{
+ typedef _Rp (*__Call)(const __policy_storage*,
+ __fast_forward<_ArgTypes>...);
+
+ __Call __call_;
+
+ // Creates an invoker that throws bad_function_call.
+ _LIBCPP_INLINE_VISIBILITY
+ __policy_invoker() : __call_(&__call_empty) {}
+
+ // Creates an invoker that calls the given instance of __func.
+ template <typename _Fun>
+ _LIBCPP_INLINE_VISIBILITY static __policy_invoker __create()
+ {
+ return __policy_invoker(&__call_impl<_Fun>);
+ }
+
+ private:
+ _LIBCPP_INLINE_VISIBILITY
+ explicit __policy_invoker(__Call __c) : __call_(__c) {}
+
+ static _Rp __call_empty(const __policy_storage*,
+ __fast_forward<_ArgTypes>...)
+ {
+ __throw_bad_function_call();
+ }
+
+ template <typename _Fun>
+ static _Rp __call_impl(const __policy_storage* __buf,
+ __fast_forward<_ArgTypes>... __args)
+ {
+ _Fun* __f = reinterpret_cast<_Fun*>(__use_small_storage<_Fun>::value
+ ? &__buf->__small
+ : __buf->__large);
+ return (*__f)(_VSTD::forward<_ArgTypes>(__args)...);
+ }
+};
+
+// __policy_func uses a __policy and __policy_invoker to create a type-erased,
+// copyable functor.
+
+template <class _Fp> class __policy_func;
+
+template <class _Rp, class... _ArgTypes> class __policy_func<_Rp(_ArgTypes...)>
+{
+ // Inline storage for small objects.
+ __policy_storage __buf_;
+
+ // Calls the value stored in __buf_. This could technically be part of
+ // policy, but storing it here eliminates a level of indirection inside
+ // operator().
+ typedef __function::__policy_invoker<_Rp(_ArgTypes...)> __invoker;
+ __invoker __invoker_;
+
+ // The policy that describes how to move / copy / destroy __buf_. Never
+ // null, even if the function is empty.
+ const __policy* __policy_;
+
+ public:
+ _LIBCPP_INLINE_VISIBILITY
+ __policy_func() : __policy_(__policy::__create_empty()) {}
+
+ template <class _Fp, class _Alloc>
+ _LIBCPP_INLINE_VISIBILITY __policy_func(_Fp&& __f, const _Alloc& __a)
+ : __policy_(__policy::__create_empty())
+ {
+ typedef __alloc_func<_Fp, _Alloc, _Rp(_ArgTypes...)> _Fun;
+ typedef allocator_traits<_Alloc> __alloc_traits;
+ typedef typename __rebind_alloc_helper<__alloc_traits, _Fun>::type
+ _FunAlloc;
+
+ if (__function::__not_null(__f))
+ {
+ __invoker_ = __invoker::template __create<_Fun>();
+ __policy_ = __policy::__create<_Fun>();
+
+ _FunAlloc __af(__a);
+ if (__use_small_storage<_Fun>())
+ {
+ ::new ((void*)&__buf_.__small)
+ _Fun(_VSTD::move(__f), _Alloc(__af));
+ }
+ else
+ {
+ typedef __allocator_destructor<_FunAlloc> _Dp;
+ unique_ptr<_Fun, _Dp> __hold(__af.allocate(1), _Dp(__af, 1));
+ ::new ((void*)__hold.get())
+ _Fun(_VSTD::move(__f), _Alloc(__af));
+ __buf_.__large = __hold.release();
+ }
+ }
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ __policy_func(const __policy_func& __f)
+ : __buf_(__f.__buf_), __invoker_(__f.__invoker_),
+ __policy_(__f.__policy_)
+ {
+ if (__policy_->__clone)
+ __buf_.__large = __policy_->__clone(__f.__buf_.__large);
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ __policy_func(__policy_func&& __f)
+ : __buf_(__f.__buf_), __invoker_(__f.__invoker_),
+ __policy_(__f.__policy_)
+ {
+ if (__policy_->__destroy)
+ {
+ __f.__policy_ = __policy::__create_empty();
+ __f.__invoker_ = __invoker();
+ }
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ ~__policy_func()
+ {
+ if (__policy_->__destroy)
+ __policy_->__destroy(__buf_.__large);
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ __policy_func& operator=(__policy_func&& __f)
+ {
+ *this = nullptr;
+ __buf_ = __f.__buf_;
+ __invoker_ = __f.__invoker_;
+ __policy_ = __f.__policy_;
+ __f.__policy_ = __policy::__create_empty();
+ __f.__invoker_ = __invoker();
+ return *this;
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ __policy_func& operator=(nullptr_t)
+ {
+ const __policy* __p = __policy_;
+ __policy_ = __policy::__create_empty();
+ __invoker_ = __invoker();
+ if (__p->__destroy)
+ __p->__destroy(__buf_.__large);
+ return *this;
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ _Rp operator()(_ArgTypes&&... __args) const
+ {
+ return __invoker_.__call_(_VSTD::addressof(__buf_),
+ _VSTD::forward<_ArgTypes>(__args)...);
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ void swap(__policy_func& __f)
+ {
+ _VSTD::swap(__invoker_, __f.__invoker_);
+ _VSTD::swap(__policy_, __f.__policy_);
+ _VSTD::swap(__buf_, __f.__buf_);
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ explicit operator bool() const _NOEXCEPT
+ {
+ return !__policy_->__is_null;
+ }
+
+#ifndef _LIBCPP_NO_RTTI
+ _LIBCPP_INLINE_VISIBILITY
+ const std::type_info& target_type() const _NOEXCEPT
+ {
+ return *__policy_->__type_info;
+ }
+
+ template <typename _Tp>
+ _LIBCPP_INLINE_VISIBILITY const _Tp* target() const _NOEXCEPT
+ {
+ if (__policy_->__is_null || typeid(_Tp) != *__policy_->__type_info)
+ return nullptr;
+ if (__policy_->__clone) // Out of line storage.
+ return reinterpret_cast<const _Tp*>(__buf_.__large);
+ else
+ return reinterpret_cast<const _Tp*>(&__buf_.__small);
+ }
+#endif // _LIBCPP_NO_RTTI
+};
+
} // __function
template<class _Rp, class ..._ArgTypes>
@@ -1599,13 +2165,13 @@
: public __function::__maybe_derive_from_unary_function<_Rp(_ArgTypes...)>,
public __function::__maybe_derive_from_binary_function<_Rp(_ArgTypes...)>
{
- typedef __function::__base<_Rp(_ArgTypes...)> __base;
- typename aligned_storage<3*sizeof(void*)>::type __buf_;
- __base* __f_;
+#ifndef _LIBCPP_ABI_OPTIMIZED_FUNCTION
+ typedef __function::__value_func<_Rp(_ArgTypes...)> __func;
+#else
+ typedef __function::__policy_func<_Rp(_ArgTypes...)> __func;
+#endif
- _LIBCPP_NO_CFI static __base *__as_base(void *p) {
- return reinterpret_cast<__base*>(p);
- }
+ __func __f_;
template <class _Fp, bool = __lazy_and<
integral_constant<bool, !is_same<__uncvref_t<_Fp>, function>::value>,
@@ -1632,9 +2198,9 @@
// construct/copy/destroy:
_LIBCPP_INLINE_VISIBILITY
- function() _NOEXCEPT : __f_(0) {}
+ function() _NOEXCEPT { }
_LIBCPP_INLINE_VISIBILITY
- function(nullptr_t) _NOEXCEPT : __f_(0) {}
+ function(nullptr_t) _NOEXCEPT {}
function(const function&);
function(function&&) _NOEXCEPT;
template<class _Fp, class = _EnableIfCallable<_Fp>>
@@ -1643,10 +2209,10 @@
#if _LIBCPP_STD_VER <= 14
template<class _Alloc>
_LIBCPP_INLINE_VISIBILITY
- function(allocator_arg_t, const _Alloc&) _NOEXCEPT : __f_(0) {}
+ function(allocator_arg_t, const _Alloc&) _NOEXCEPT {}
template<class _Alloc>
_LIBCPP_INLINE_VISIBILITY
- function(allocator_arg_t, const _Alloc&, nullptr_t) _NOEXCEPT : __f_(0) {}
+ function(allocator_arg_t, const _Alloc&, nullptr_t) _NOEXCEPT {}
template<class _Alloc>
function(allocator_arg_t, const _Alloc&, const function&);
template<class _Alloc>
@@ -1675,7 +2241,9 @@
// function capacity:
_LIBCPP_INLINE_VISIBILITY
- _LIBCPP_EXPLICIT operator bool() const _NOEXCEPT {return __f_;}
+ _LIBCPP_EXPLICIT operator bool() const _NOEXCEPT {
+ return static_cast<bool>(__f_);
+ }
// deleted overloads close possible hole in the type system
template<class _R2, class... _ArgTypes2>
@@ -1695,125 +2263,38 @@
};
template<class _Rp, class ..._ArgTypes>
-function<_Rp(_ArgTypes...)>::function(const function& __f)
-{
- if (__f.__f_ == 0)
- __f_ = 0;
- else if ((void *)__f.__f_ == &__f.__buf_)
- {
- __f_ = __as_base(&__buf_);
- __f.__f_->__clone(__f_);
- }
- else
- __f_ = __f.__f_->__clone();
-}
+function<_Rp(_ArgTypes...)>::function(const function& __f) : __f_(__f.__f_) {}
#if _LIBCPP_STD_VER <= 14
template<class _Rp, class ..._ArgTypes>
template <class _Alloc>
function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc&,
- const function& __f)
-{
- if (__f.__f_ == 0)
- __f_ = 0;
- else if ((void *)__f.__f_ == &__f.__buf_)
- {
- __f_ = __as_base(&__buf_);
- __f.__f_->__clone(__f_);
- }
- else
- __f_ = __f.__f_->__clone();
-}
+ const function& __f) : __f_(__f.__f_) {}
#endif
-template<class _Rp, class ..._ArgTypes>
+template <class _Rp, class... _ArgTypes>
function<_Rp(_ArgTypes...)>::function(function&& __f) _NOEXCEPT
-{
- if (__f.__f_ == 0)
- __f_ = 0;
- else if ((void *)__f.__f_ == &__f.__buf_)
- {
- __f_ = __as_base(&__buf_);
- __f.__f_->__clone(__f_);
- }
- else
- {
- __f_ = __f.__f_;
- __f.__f_ = 0;
- }
-}
+ : __f_(_VSTD::move(__f.__f_)) {}
#if _LIBCPP_STD_VER <= 14
template<class _Rp, class ..._ArgTypes>
template <class _Alloc>
function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc&,
- function&& __f)
-{
- if (__f.__f_ == 0)
- __f_ = 0;
- else if ((void *)__f.__f_ == &__f.__buf_)
- {
- __f_ = __as_base(&__buf_);
- __f.__f_->__clone(__f_);
- }
- else
- {
- __f_ = __f.__f_;
- __f.__f_ = 0;
- }
-}
+ function&& __f)
+ : __f_(_VSTD::move(__f.__f_)) {}
#endif
-template<class _Rp, class ..._ArgTypes>
+template <class _Rp, class... _ArgTypes>
template <class _Fp, class>
function<_Rp(_ArgTypes...)>::function(_Fp __f)
- : __f_(0)
-{
- if (__function::__not_null(__f))
- {
- typedef __function::__func<_Fp, allocator<_Fp>, _Rp(_ArgTypes...)> _FF;
- if (sizeof(_FF) <= sizeof(__buf_) && is_nothrow_copy_constructible<_Fp>::value)
- {
- __f_ = ::new((void*)&__buf_) _FF(_VSTD::move(__f));
- }
- else
- {
- typedef allocator<_FF> _Ap;
- _Ap __a;
- typedef __allocator_destructor<_Ap> _Dp;
- unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
- ::new (__hold.get()) _FF(_VSTD::move(__f), allocator<_Fp>(__a));
- __f_ = __hold.release();
- }
- }
-}
+ : __f_(_VSTD::move(__f), allocator<_Fp>()) {}
#if _LIBCPP_STD_VER <= 14
-template<class _Rp, class ..._ArgTypes>
+template <class _Rp, class... _ArgTypes>
template <class _Fp, class _Alloc, class>
-function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc& __a0, _Fp __f)
- : __f_(0)
-{
- typedef allocator_traits<_Alloc> __alloc_traits;
- if (__function::__not_null(__f))
- {
- typedef __function::__func<_Fp, _Alloc, _Rp(_ArgTypes...)> _FF;
- typedef typename __rebind_alloc_helper<__alloc_traits, _FF>::type _Ap;
- _Ap __a(__a0);
- if (sizeof(_FF) <= sizeof(__buf_) &&
- is_nothrow_copy_constructible<_Fp>::value && is_nothrow_copy_constructible<_Ap>::value)
- {
- __f_ = ::new((void*)&__buf_) _FF(_VSTD::move(__f), _Alloc(__a));
- }
- else
- {
- typedef __allocator_destructor<_Ap> _Dp;
- unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
- ::new (__hold.get()) _FF(_VSTD::move(__f), _Alloc(__a));
- __f_ = __hold.release();
- }
- }
-}
+function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc& __a,
+ _Fp __f)
+ : __f_(_VSTD::move(__f), __a) {}
#endif
template<class _Rp, class ..._ArgTypes>
@@ -1828,19 +2309,7 @@
function<_Rp(_ArgTypes...)>&
function<_Rp(_ArgTypes...)>::operator=(function&& __f) _NOEXCEPT
{
- *this = nullptr;
- if (__f.__f_ == 0)
- __f_ = 0;
- else if ((void *)__f.__f_ == &__f.__buf_)
- {
- __f_ = __as_base(&__buf_);
- __f.__f_->__clone(__f_);
- }
- else
- {
- __f_ = __f.__f_;
- __f.__f_ = 0;
- }
+ __f_ = std::move(__f.__f_);
return *this;
}
@@ -1848,12 +2317,7 @@
function<_Rp(_ArgTypes...)>&
function<_Rp(_ArgTypes...)>::operator=(nullptr_t) _NOEXCEPT
{
- __base* __t = __f_;
- __f_ = 0;
- if ((void *)__t == &__buf_)
- __t->destroy();
- else if (__t)
- __t->destroy_deallocate();
+ __f_ = nullptr;
return *this;
}
@@ -1867,60 +2331,20 @@
}
template<class _Rp, class ..._ArgTypes>
-function<_Rp(_ArgTypes...)>::~function()
-{
- if ((void *)__f_ == &__buf_)
- __f_->destroy();
- else if (__f_)
- __f_->destroy_deallocate();
-}
+function<_Rp(_ArgTypes...)>::~function() {}
template<class _Rp, class ..._ArgTypes>
void
function<_Rp(_ArgTypes...)>::swap(function& __f) _NOEXCEPT
{
- if (_VSTD::addressof(__f) == this)
- return;
- if ((void *)__f_ == &__buf_ && (void *)__f.__f_ == &__f.__buf_)
- {
- typename aligned_storage<sizeof(__buf_)>::type __tempbuf;
- __base* __t = __as_base(&__tempbuf);
- __f_->__clone(__t);
- __f_->destroy();
- __f_ = 0;
- __f.__f_->__clone(__as_base(&__buf_));
- __f.__f_->destroy();
- __f.__f_ = 0;
- __f_ = __as_base(&__buf_);
- __t->__clone(__as_base(&__f.__buf_));
- __t->destroy();
- __f.__f_ = __as_base(&__f.__buf_);
- }
- else if ((void *)__f_ == &__buf_)
- {
- __f_->__clone(__as_base(&__f.__buf_));
- __f_->destroy();
- __f_ = __f.__f_;
- __f.__f_ = __as_base(&__f.__buf_);
- }
- else if ((void *)__f.__f_ == &__f.__buf_)
- {
- __f.__f_->__clone(__as_base(&__buf_));
- __f.__f_->destroy();
- __f.__f_ = __f_;
- __f_ = __as_base(&__buf_);
- }
- else
- _VSTD::swap(__f_, __f.__f_);
+ __f_.swap(__f.__f_);
}
template<class _Rp, class ..._ArgTypes>
_Rp
function<_Rp(_ArgTypes...)>::operator()(_ArgTypes... __arg) const
{
- if (__f_ == 0)
- __throw_bad_function_call();
- return (*__f_)(_VSTD::forward<_ArgTypes>(__arg)...);
+ return __f_(_VSTD::forward<_ArgTypes>(__arg)...);
}
#ifndef _LIBCPP_NO_RTTI
@@ -1929,9 +2353,7 @@
const std::type_info&
function<_Rp(_ArgTypes...)>::target_type() const _NOEXCEPT
{
- if (__f_ == 0)
- return typeid(void);
- return __f_->target_type();
+ return __f_.target_type();
}
template<class _Rp, class ..._ArgTypes>
@@ -1939,9 +2361,7 @@
_Tp*
function<_Rp(_ArgTypes...)>::target() _NOEXCEPT
{
- if (__f_ == 0)
- return nullptr;
- return (_Tp*) const_cast<void *>(__f_->target(typeid(_Tp)));
+ return (_Tp*)(__f_.template target<_Tp>());
}
template<class _Rp, class ..._ArgTypes>
@@ -1949,9 +2369,7 @@
const _Tp*
function<_Rp(_ArgTypes...)>::target() const _NOEXCEPT
{
- if (__f_ == 0)
- return nullptr;
- return (const _Tp*)__f_->target(typeid(_Tp));
+ return __f_.template target<_Tp>();
}
#endif // _LIBCPP_NO_RTTI
@@ -2527,6 +2945,26 @@
#endif // _LIBCPP_STD_VER > 14
+#if _LIBCPP_STD_VER > 17
+template <class _Tp>
+using unwrap_reference_t = typename unwrap_reference<_Tp>::type;
+
+template <class _Tp>
+using unwrap_ref_decay_t = typename unwrap_ref_decay<_Tp>::type;
+#endif // > C++17
+
+template <class _Container, class _Predicate>
+inline void __libcpp_erase_if_container( _Container& __c, _Predicate __pred)
+{
+ for (typename _Container::iterator __iter = __c.begin(), __last = __c.end(); __iter != __last;)
+ {
+ if (__pred(*__iter))
+ __iter = __c.erase(__iter);
+ else
+ ++__iter;
+ }
+}
+
_LIBCPP_END_NAMESPACE_STD
#endif // _LIBCPP_FUNCTIONAL
diff --git a/linux-x64/clang/include/c++/v1/future b/linux-x64/clang/include/c++/v1/future
index b3ffc7e..50bdd2d 100644
--- a/linux-x64/clang/include/c++/v1/future
+++ b/linux-x64/clang/include/c++/v1/future
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- future -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/initializer_list b/linux-x64/clang/include/c++/v1/initializer_list
index b934637..6c4493b 100644
--- a/linux-x64/clang/include/c++/v1/initializer_list
+++ b/linux-x64/clang/include/c++/v1/initializer_list
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------- initializer_list -----------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/inttypes.h b/linux-x64/clang/include/c++/v1/inttypes.h
index 058f54b..0f1d4f4 100644
--- a/linux-x64/clang/include/c++/v1/inttypes.h
+++ b/linux-x64/clang/include/c++/v1/inttypes.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- inttypes.h -------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/iomanip b/linux-x64/clang/include/c++/v1/iomanip
index 36c1116..82b7603 100644
--- a/linux-x64/clang/include/c++/v1/iomanip
+++ b/linux-x64/clang/include/c++/v1/iomanip
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- iomanip ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/ios b/linux-x64/clang/include/c++/v1/ios
index 040b2d4..96e84eb 100644
--- a/linux-x64/clang/include/c++/v1/ios
+++ b/linux-x64/clang/include/c++/v1/ios
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- ios -------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -426,6 +425,16 @@
virtual ~failure() throw();
};
+_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
+void __throw_failure(char const* __msg) {
+#ifndef _LIBCPP_NO_EXCEPTIONS
+ throw ios_base::failure(__msg);
+#else
+ ((void)__msg);
+ _VSTD::abort();
+#endif
+}
+
class _LIBCPP_TYPE_VIS ios_base::Init
{
public:
diff --git a/linux-x64/clang/include/c++/v1/iosfwd b/linux-x64/clang/include/c++/v1/iosfwd
index d438485..0ffe75f 100644
--- a/linux-x64/clang/include/c++/v1/iosfwd
+++ b/linux-x64/clang/include/c++/v1/iosfwd
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- iosfwd -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -18,6 +17,12 @@
{
template<class charT> struct char_traits;
+template<> struct char_traits<char>;
+template<> struct char_traits<char8_t>; // C++20
+template<> struct char_traits<char16_t>;
+template<> struct char_traits<char32_t>;
+template<> struct char_traits<wchar_t>;
+
template<class T> class allocator;
class ios_base;
@@ -98,6 +103,14 @@
class _LIBCPP_TYPE_VIS ios_base;
template<class _CharT> struct _LIBCPP_TEMPLATE_VIS char_traits;
+template<> struct char_traits<char>;
+#ifndef _LIBCPP_NO_HAS_CHAR8_T
+template<> struct char_traits<char8_t>;
+#endif
+template<> struct char_traits<char16_t>;
+template<> struct char_traits<char32_t>;
+template<> struct char_traits<wchar_t>;
+
template<class _Tp> class _LIBCPP_TEMPLATE_VIS allocator;
template <class _CharT, class _Traits = char_traits<_CharT> >
@@ -175,6 +188,9 @@
template <class _State> class _LIBCPP_TEMPLATE_VIS fpos;
typedef fpos<mbstate_t> streampos;
typedef fpos<mbstate_t> wstreampos;
+#ifndef _LIBCPP_NO_HAS_CHAR8_T
+typedef fpos<mbstate_t> u8streampos;
+#endif
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
typedef fpos<mbstate_t> u16streampos;
typedef fpos<mbstate_t> u32streampos;
diff --git a/linux-x64/clang/include/c++/v1/iostream b/linux-x64/clang/include/c++/v1/iostream
index 136a849..595620b 100644
--- a/linux-x64/clang/include/c++/v1/iostream
+++ b/linux-x64/clang/include/c++/v1/iostream
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- iostream ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/istream b/linux-x64/clang/include/c++/v1/istream
index 71c162b..bedd738 100644
--- a/linux-x64/clang/include/c++/v1/istream
+++ b/linux-x64/clang/include/c++/v1/istream
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- istream ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -160,6 +159,7 @@
*/
#include <__config>
+#include <version>
#include <ostream>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
@@ -186,7 +186,7 @@
typedef typename traits_type::off_type off_type;
// 27.7.1.1.1 Constructor/destructor:
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
explicit basic_istream(basic_streambuf<char_type, traits_type>* __sb) : __gc_(0)
{ this->init(__sb); }
virtual ~basic_istream();
@@ -200,7 +200,7 @@
basic_istream& operator=(basic_istream&& __rhs);
#endif
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
void swap(basic_istream& __rhs) {
_VSTD::swap(__gc_, __rhs.__gc_);
basic_ios<char_type, traits_type>::swap(__rhs);
@@ -216,16 +216,16 @@
class _LIBCPP_TEMPLATE_VIS sentry;
// 27.7.1.2 Formatted input:
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
basic_istream& operator>>(basic_istream& (*__pf)(basic_istream&))
{ return __pf(*this); }
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
basic_istream& operator>>(basic_ios<char_type, traits_type>&
(*__pf)(basic_ios<char_type, traits_type>&))
{ __pf(*this); return *this; }
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
basic_istream& operator>>(ios_base& (*__pf)(ios_base&))
{ __pf(*this); return *this; }
@@ -249,7 +249,7 @@
streamsize gcount() const {return __gc_;}
int_type get();
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
basic_istream& get(char_type& __c) {
int_type __ch = get();
if (__ch != traits_type::eof())
@@ -257,19 +257,19 @@
return *this;
}
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
basic_istream& get(char_type* __s, streamsize __n)
{ return get(__s, __n, this->widen('\n')); }
basic_istream& get(char_type* __s, streamsize __n, char_type __dlm);
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
basic_istream& get(basic_streambuf<char_type, traits_type>& __sb)
{ return get(__sb, this->widen('\n')); }
basic_istream& get(basic_streambuf<char_type, traits_type>& __sb, char_type __dlm);
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
basic_istream& getline(char_type* __s, streamsize __n)
{ return getline(__s, __n, this->widen('\n')); }
@@ -517,8 +517,9 @@
}
template<class _CharT, class _Traits>
+_LIBCPP_INLINE_VISIBILITY
basic_istream<_CharT, _Traits>&
-operator>>(basic_istream<_CharT, _Traits>& __is, _CharT* __s)
+__input_c_string(basic_istream<_CharT, _Traits>& __is, _CharT* __p, size_t __n)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
try
@@ -527,13 +528,10 @@
typename basic_istream<_CharT, _Traits>::sentry __sen(__is);
if (__sen)
{
- streamsize __n = __is.width();
- if (__n <= 0)
- __n = numeric_limits<streamsize>::max() / sizeof(_CharT) - 1;
- streamsize __c = 0;
+ auto __s = __p;
const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__is.getloc());
ios_base::iostate __err = ios_base::goodbit;
- while (__c < __n-1)
+ while (__s != __p + (__n-1))
{
typename _Traits::int_type __i = __is.rdbuf()->sgetc();
if (_Traits::eq_int_type(__i, _Traits::eof()))
@@ -545,12 +543,11 @@
if (__ct.is(__ct.space, __ch))
break;
*__s++ = __ch;
- ++__c;
__is.rdbuf()->sbumpc();
}
*__s = _CharT();
__is.width(0);
- if (__c == 0)
+ if (__s == __p)
__err |= ios_base::failbit;
__is.setstate(__err);
}
@@ -564,6 +561,48 @@
return __is;
}
+#if _LIBCPP_STD_VER > 17
+
+template<class _CharT, class _Traits, size_t _Np>
+inline _LIBCPP_INLINE_VISIBILITY
+basic_istream<_CharT, _Traits>&
+operator>>(basic_istream<_CharT, _Traits>& __is, _CharT (&__buf)[_Np])
+{
+ auto __n = _Np;
+ if (__is.width() > 0)
+ __n = _VSTD::min(size_t(__is.width()), _Np);
+ return _VSTD::__input_c_string(__is, __buf, __n);
+}
+
+template<class _Traits, size_t _Np>
+inline _LIBCPP_INLINE_VISIBILITY
+basic_istream<char, _Traits>&
+operator>>(basic_istream<char, _Traits>& __is, unsigned char (&__buf)[_Np])
+{
+ return __is >> (char(&)[_Np])__buf;
+}
+
+template<class _Traits, size_t _Np>
+inline _LIBCPP_INLINE_VISIBILITY
+basic_istream<char, _Traits>&
+operator>>(basic_istream<char, _Traits>& __is, signed char (&__buf)[_Np])
+{
+ return __is >> (char(&)[_Np])__buf;
+}
+
+#else
+
+template<class _CharT, class _Traits>
+inline _LIBCPP_INLINE_VISIBILITY
+basic_istream<_CharT, _Traits>&
+operator>>(basic_istream<_CharT, _Traits>& __is, _CharT* __s)
+{
+ streamsize __n = __is.width();
+ if (__n <= 0)
+ __n = numeric_limits<streamsize>::max() / sizeof(_CharT) - 1;
+ return _VSTD::__input_c_string(__is, __s, size_t(__n));
+}
+
template<class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
basic_istream<char, _Traits>&
@@ -580,6 +619,8 @@
return __is >> (char*)__s;
}
+#endif // _LIBCPP_STD_VER > 17
+
template<class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
operator>>(basic_istream<_CharT, _Traits>& __is, _CharT& __c)
@@ -1238,7 +1279,7 @@
typedef typename traits_type::off_type off_type;
// constructor/destructor
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
explicit basic_iostream(basic_streambuf<char_type, traits_type>* __sb)
: basic_istream<_CharT, _Traits>(__sb)
{}
@@ -1253,7 +1294,7 @@
inline _LIBCPP_INLINE_VISIBILITY
basic_iostream& operator=(basic_iostream&& __rhs);
#endif
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
void swap(basic_iostream& __rhs)
{ basic_istream<char_type, traits_type>::swap(__rhs); }
public:
@@ -1463,7 +1504,7 @@
return __is;
}
-#ifndef _LIBCPP_AVAILABILITY_NO_STREAMS_EXTERN_TEMPLATE
+#ifndef _LIBCPP_DO_NOT_ASSUME_STREAMS_EXPLICIT_INSTANTIATION_IN_DYLIB
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_istream<char>)
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_istream<wchar_t>)
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_iostream<char>)
diff --git a/linux-x64/clang/include/c++/v1/iterator b/linux-x64/clang/include/c++/v1/iterator
index aed0525..242f188 100644
--- a/linux-x64/clang/include/c++/v1/iterator
+++ b/linux-x64/clang/include/c++/v1/iterator
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- iterator ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -438,6 +437,23 @@
struct _LIBCPP_TEMPLATE_VIS random_access_iterator_tag : public bidirectional_iterator_tag {};
template <class _Tp>
+struct __has_iterator_typedefs
+{
+private:
+ struct __two {char __lx; char __lxx;};
+ template <class _Up> static __two __test(...);
+ template <class _Up> static char __test(typename std::__void_t<typename _Up::iterator_category>::type* = 0,
+ typename std::__void_t<typename _Up::difference_type>::type* = 0,
+ typename std::__void_t<typename _Up::value_type>::type* = 0,
+ typename std::__void_t<typename _Up::reference>::type* = 0,
+ typename std::__void_t<typename _Up::pointer>::type* = 0
+ );
+public:
+ static const bool value = sizeof(__test<_Tp>(0,0,0,0,0)) == 1;
+};
+
+
+template <class _Tp>
struct __has_iterator_category
{
private:
@@ -479,7 +495,7 @@
template <class _Iter>
struct _LIBCPP_TEMPLATE_VIS iterator_traits
- : __iterator_traits<_Iter, __has_iterator_category<_Iter>::value> {};
+ : __iterator_traits<_Iter, __has_iterator_typedefs<_Iter>::value> {};
template<class _Tp>
struct _LIBCPP_TEMPLATE_VIS iterator_traits<_Tp*>
diff --git a/linux-x64/clang/include/c++/v1/limits b/linux-x64/clang/include/c++/v1/limits
index f530507..82c1ea1 100644
--- a/linux-x64/clang/include/c++/v1/limits
+++ b/linux-x64/clang/include/c++/v1/limits
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- limits ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -82,6 +81,7 @@
template<> class numeric_limits<cv signed char>;
template<> class numeric_limits<cv unsigned char>;
template<> class numeric_limits<cv wchar_t>;
+template<> class numeric_limits<cv char8_t>; // C++20
template<> class numeric_limits<cv char16_t>;
template<> class numeric_limits<cv char32_t>;
@@ -118,6 +118,7 @@
_LIBCPP_PUSH_MACROS
#include <__undef_macros>
+#include <version>
_LIBCPP_BEGIN_NAMESPACE_STD
diff --git a/linux-x64/clang/include/c++/v1/limits.h b/linux-x64/clang/include/c++/v1/limits.h
index 1867b10..4a212f8 100644
--- a/linux-x64/clang/include/c++/v1/limits.h
+++ b/linux-x64/clang/include/c++/v1/limits.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- limits.h ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/list b/linux-x64/clang/include/c++/v1/list
index 8f0e1db..2afe2a2 100644
--- a/linux-x64/clang/include/c++/v1/list
+++ b/linux-x64/clang/include/c++/v1/list
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- list ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -169,6 +168,11 @@
void swap(list<T,Alloc>& x, list<T,Alloc>& y)
noexcept(noexcept(x.swap(y)));
+template <class T, class Allocator, class U>
+ void erase(list<T, Allocator>& c, const U& value); // C++20
+template <class T, class Allocator, class Predicate>
+ void erase_if(list<T, Allocator>& c, Predicate pred); // C++20
+
} // std
*/
@@ -1170,7 +1174,7 @@
base::__end_.__next_ = __f;
}
-// Link in nodes [__f, __l] at the front of the list
+// Link in nodes [__f, __l] at the back of the list
template <class _Tp, class _Alloc>
inline
void
@@ -2450,6 +2454,18 @@
__x.swap(__y);
}
+#if _LIBCPP_STD_VER > 17
+template <class _Tp, class _Allocator, class _Predicate>
+inline _LIBCPP_INLINE_VISIBILITY
+void erase_if(list<_Tp, _Allocator>& __c, _Predicate __pred)
+{ __c.remove_if(__pred); }
+
+template <class _Tp, class _Allocator, class _Up>
+inline _LIBCPP_INLINE_VISIBILITY
+void erase(list<_Tp, _Allocator>& __c, const _Up& __v)
+{ _VSTD::erase_if(__c, [&](auto& __elem) { return __elem == __v; }); }
+#endif
+
_LIBCPP_END_NAMESPACE_STD
_LIBCPP_POP_MACROS
diff --git a/linux-x64/clang/include/c++/v1/locale b/linux-x64/clang/include/c++/v1/locale
index e240799..c3c05eb 100644
--- a/linux-x64/clang/include/c++/v1/locale
+++ b/linux-x64/clang/include/c++/v1/locale
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- locale ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -187,6 +186,7 @@
#include <streambuf>
#include <iterator>
#include <limits>
+#include <version>
#ifndef __APPLE__
#include <cstdarg>
#endif
@@ -546,7 +546,7 @@
__exp = 'P';
else if ((__x & 0x5F) == __exp)
{
- __exp |= 0x80;
+ __exp |= (char) 0x80;
if (__in_units)
{
__in_units = false;
@@ -727,7 +727,7 @@
num_get<_CharT, _InputIterator>::id;
template <class _Tp>
-_Tp
+_LIBCPP_HIDDEN _Tp
__num_get_signed_integral(const char* __a, const char* __a_end,
ios_base::iostate& __err, int __base)
{
@@ -762,7 +762,7 @@
}
template <class _Tp>
-_Tp
+_LIBCPP_HIDDEN _Tp
__num_get_unsigned_integral(const char* __a, const char* __a_end,
ios_base::iostate& __err, int __base)
{
@@ -2408,6 +2408,23 @@
string_type __analyze(char __fmt, const ctype<_CharT>&);
};
+#define _LIBCPP_TIME_GET_STORAGE_EXPLICIT_INSTANTIATION(_CharT) \
+template <> _LIBCPP_FUNC_VIS time_base::dateorder __time_get_storage<_CharT>::__do_date_order() const; \
+template <> _LIBCPP_FUNC_VIS __time_get_storage<_CharT>::__time_get_storage(const char*); \
+template <> _LIBCPP_FUNC_VIS __time_get_storage<_CharT>::__time_get_storage(const string&); \
+template <> _LIBCPP_FUNC_VIS void __time_get_storage<_CharT>::init(const ctype<_CharT>&); \
+template <> _LIBCPP_FUNC_VIS __time_get_storage<_CharT>::string_type __time_get_storage<_CharT>::__analyze(char, const ctype<_CharT>&); \
+extern template _LIBCPP_FUNC_VIS time_base::dateorder __time_get_storage<_CharT>::__do_date_order() const; \
+extern template _LIBCPP_FUNC_VIS __time_get_storage<_CharT>::__time_get_storage(const char*); \
+extern template _LIBCPP_FUNC_VIS __time_get_storage<_CharT>::__time_get_storage(const string&); \
+extern template _LIBCPP_FUNC_VIS void __time_get_storage<_CharT>::init(const ctype<_CharT>&); \
+extern template _LIBCPP_FUNC_VIS __time_get_storage<_CharT>::string_type __time_get_storage<_CharT>::__analyze(char, const ctype<_CharT>&); \
+/**/
+
+_LIBCPP_TIME_GET_STORAGE_EXPLICIT_INSTANTIATION(char)
+_LIBCPP_TIME_GET_STORAGE_EXPLICIT_INSTANTIATION(wchar_t)
+#undef _LIBCPP_TIME_GET_STORAGE_EXPLICIT_INSTANTIATION
+
template <class _CharT, class _InputIterator = istreambuf_iterator<_CharT> >
class _LIBCPP_TEMPLATE_VIS time_get_byname
: public time_get<_CharT, _InputIterator>,
@@ -3550,6 +3567,7 @@
__cat = static_cast<catalog>((static_cast<size_t>(__cat) >> 1));
return __cat;
#else // !_LIBCPP_HAS_CATOPEN
+ _LIBCPP_UNUSED_VAR(__nm);
return -1;
#endif // _LIBCPP_HAS_CATOPEN
}
@@ -3573,6 +3591,9 @@
__n, __n + strlen(__n));
return __w;
#else // !_LIBCPP_HAS_CATOPEN
+ _LIBCPP_UNUSED_VAR(__c);
+ _LIBCPP_UNUSED_VAR(__set);
+ _LIBCPP_UNUSED_VAR(__msgid);
return __dflt;
#endif // _LIBCPP_HAS_CATOPEN
}
@@ -3586,6 +3607,8 @@
__c <<= 1;
nl_catd __cat = (nl_catd)__c;
catclose(__cat);
+#else // !_LIBCPP_HAS_CATOPEN
+ _LIBCPP_UNUSED_VAR(__c);
#endif // _LIBCPP_HAS_CATOPEN
}
diff --git a/linux-x64/clang/include/c++/v1/locale.h b/linux-x64/clang/include/c++/v1/locale.h
index cad7b8b..a21ee38 100644
--- a/linux-x64/clang/include/c++/v1/locale.h
+++ b/linux-x64/clang/include/c++/v1/locale.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- locale.h --------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/map b/linux-x64/clang/include/c++/v1/map
index cfd8280..e21dd5a 100644
--- a/linux-x64/clang/include/c++/v1/map
+++ b/linux-x64/clang/include/c++/v1/map
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------- map ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -167,6 +166,15 @@
iterator erase(const_iterator first, const_iterator last);
void clear() noexcept;
+ template<class C2>
+ void merge(map<Key, T, C2, Allocator>& source); // C++17
+ template<class C2>
+ void merge(map<Key, T, C2, Allocator>&& source); // C++17
+ template<class C2>
+ void merge(multimap<Key, T, C2, Allocator>& source); // C++17
+ template<class C2>
+ void merge(multimap<Key, T, C2, Allocator>&& source); // C++17
+
void swap(map& m)
noexcept(allocator_traits<allocator_type>::is_always_equal::value &&
is_nothrow_swappable<key_compare>::value); // C++17
@@ -245,6 +253,10 @@
swap(map<Key, T, Compare, Allocator>& x, map<Key, T, Compare, Allocator>& y)
noexcept(noexcept(x.swap(y)));
+template <class Key, class T, class Compare, class Allocator, class Predicate>
+ void erase_if(map<Key, T, Compare, Allocator>& c, Predicate pred); // C++20
+
+
template <class Key, class T, class Compare = less<Key>,
class Allocator = allocator<pair<const Key, T>>>
class multimap
@@ -368,6 +380,15 @@
iterator erase(const_iterator first, const_iterator last);
void clear() noexcept;
+ template<class C2>
+ void merge(multimap<Key, T, C2, Allocator>& source); // C++17
+ template<class C2>
+ void merge(multimap<Key, T, C2, Allocator>&& source); // C++17
+ template<class C2>
+ void merge(map<Key, T, C2, Allocator>& source); // C++17
+ template<class C2>
+ void merge(map<Key, T, C2, Allocator>&& source); // C++17
+
void swap(multimap& m)
noexcept(allocator_traits<allocator_type>::is_always_equal::value &&
is_nothrow_swappable<key_compare>::value); // C++17
@@ -447,6 +468,9 @@
multimap<Key, T, Compare, Allocator>& y)
noexcept(noexcept(x.swap(y)));
+template <class Key, class T, class Compare, class Allocator, class Predicate>
+ void erase_if(multimap<Key, T, Compare, Allocator>& c, Predicate pred); // C++20
+
} // std
*/
@@ -468,7 +492,8 @@
_LIBCPP_BEGIN_NAMESPACE_STD
-template <class _Key, class _CP, class _Compare, bool _IsSmall>
+template <class _Key, class _CP, class _Compare,
+ bool = is_empty<_Compare>::value && !__libcpp_is_final<_Compare>::value>
class __map_value_compare
: private _Compare
{
@@ -882,6 +907,7 @@
typedef value_type& reference;
typedef const value_type& const_reference;
+ static_assert(sizeof(__diagnose_non_const_comparator<_Key, _Compare>()), "");
static_assert((is_same<typename allocator_type::value_type, value_type>::value),
"Allocator::value_type must be same type as value_type");
@@ -926,6 +952,11 @@
typedef __insert_return_type<iterator, node_type> insert_return_type;
#endif
+ template <class _Key2, class _Value2, class _Comp2, class _Alloc2>
+ friend class _LIBCPP_TEMPLATE_VIS map;
+ template <class _Key2, class _Value2, class _Comp2, class _Alloc2>
+ friend class _LIBCPP_TEMPLATE_VIS multimap;
+
_LIBCPP_INLINE_VISIBILITY
map()
_NOEXCEPT_(
@@ -1300,6 +1331,38 @@
{
return __tree_.template __node_handle_extract<node_type>(__it.__i_);
}
+ template <class _Compare2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(map<key_type, mapped_type, _Compare2, allocator_type>& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ __tree_.__node_handle_merge_unique(__source.__tree_);
+ }
+ template <class _Compare2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(map<key_type, mapped_type, _Compare2, allocator_type>&& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ __tree_.__node_handle_merge_unique(__source.__tree_);
+ }
+ template <class _Compare2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(multimap<key_type, mapped_type, _Compare2, allocator_type>& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ __tree_.__node_handle_merge_unique(__source.__tree_);
+ }
+ template <class _Compare2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(multimap<key_type, mapped_type, _Compare2, allocator_type>&& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ __tree_.__node_handle_merge_unique(__source.__tree_);
+ }
#endif
_LIBCPP_INLINE_VISIBILITY
@@ -1472,10 +1535,8 @@
{
__parent_pointer __parent;
__node_base_pointer& __child = __tree_.__find_equal(__parent, __k);
-#ifndef _LIBCPP_NO_EXCEPTIONS
if (__child == nullptr)
- throw out_of_range("map::at: key not found");
-#endif // _LIBCPP_NO_EXCEPTIONS
+ __throw_out_of_range("map::at: key not found");
return static_cast<__node_pointer>(__child)->__value_.__get_value().second;
}
@@ -1485,10 +1546,8 @@
{
__parent_pointer __parent;
__node_base_pointer __child = __tree_.__find_equal(__parent, __k);
-#ifndef _LIBCPP_NO_EXCEPTIONS
if (__child == nullptr)
- throw out_of_range("map::at: key not found");
-#endif // _LIBCPP_NO_EXCEPTIONS
+ __throw_out_of_range("map::at: key not found");
return static_cast<__node_pointer>(__child)->__value_.__get_value().second;
}
@@ -1557,6 +1616,14 @@
__x.swap(__y);
}
+#if _LIBCPP_STD_VER > 17
+template <class _Key, class _Tp, class _Compare, class _Allocator, class _Predicate>
+inline _LIBCPP_INLINE_VISIBILITY
+void erase_if(map<_Key, _Tp, _Compare, _Allocator>& __c, _Predicate __pred)
+{ __libcpp_erase_if_container(__c, __pred); }
+#endif
+
+
template <class _Key, class _Tp, class _Compare = less<_Key>,
class _Allocator = allocator<pair<const _Key, _Tp> > >
class _LIBCPP_TEMPLATE_VIS multimap
@@ -1571,6 +1638,7 @@
typedef value_type& reference;
typedef const value_type& const_reference;
+ static_assert(sizeof(__diagnose_non_const_comparator<_Key, _Compare>()), "");
static_assert((is_same<typename allocator_type::value_type, value_type>::value),
"Allocator::value_type must be same type as value_type");
@@ -1615,6 +1683,11 @@
typedef __map_node_handle<typename __base::__node, allocator_type> node_type;
#endif
+ template <class _Key2, class _Value2, class _Comp2, class _Alloc2>
+ friend class _LIBCPP_TEMPLATE_VIS map;
+ template <class _Key2, class _Value2, class _Comp2, class _Alloc2>
+ friend class _LIBCPP_TEMPLATE_VIS multimap;
+
_LIBCPP_INLINE_VISIBILITY
multimap()
_NOEXCEPT_(
@@ -1882,6 +1955,38 @@
return __tree_.template __node_handle_extract<node_type>(
__it.__i_);
}
+ template <class _Compare2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(multimap<key_type, mapped_type, _Compare2, allocator_type>& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ return __tree_.__node_handle_merge_multi(__source.__tree_);
+ }
+ template <class _Compare2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(multimap<key_type, mapped_type, _Compare2, allocator_type>&& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ return __tree_.__node_handle_merge_multi(__source.__tree_);
+ }
+ template <class _Compare2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(map<key_type, mapped_type, _Compare2, allocator_type>& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ return __tree_.__node_handle_merge_multi(__source.__tree_);
+ }
+ template <class _Compare2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(map<key_type, mapped_type, _Compare2, allocator_type>&& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ return __tree_.__node_handle_merge_multi(__source.__tree_);
+ }
#endif
_LIBCPP_INLINE_VISIBILITY
@@ -2056,6 +2161,13 @@
__x.swap(__y);
}
+#if _LIBCPP_STD_VER > 17
+template <class _Key, class _Tp, class _Compare, class _Allocator, class _Predicate>
+inline _LIBCPP_INLINE_VISIBILITY
+void erase_if(multimap<_Key, _Tp, _Compare, _Allocator>& __c, _Predicate __pred)
+{ __libcpp_erase_if_container(__c, __pred); }
+#endif
+
_LIBCPP_END_NAMESPACE_STD
#endif // _LIBCPP_MAP
diff --git a/linux-x64/clang/include/c++/v1/math.h b/linux-x64/clang/include/c++/v1/math.h
index 3cc72aa..6f9a76b 100644
--- a/linux-x64/clang/include/c++/v1/math.h
+++ b/linux-x64/clang/include/c++/v1/math.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- math.h ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/memory b/linux-x64/clang/include/c++/v1/memory
index 6e292a5..3398629 100644
--- a/linux-x64/clang/include/c++/v1/memory
+++ b/linux-x64/clang/include/c++/v1/memory
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- memory ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -43,7 +42,7 @@
template <class U> using rebind = U*;
- static pointer pointer_to(<details>) noexcept;
+ static pointer pointer_to(<details>) noexcept; // constexpr in C++20
};
template <class T> constexpr T* to_address(T* p) noexcept; // C++20
@@ -984,7 +983,7 @@
private:
struct __nat {};
public:
- _LIBCPP_INLINE_VISIBILITY
+ _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
static pointer pointer_to(typename conditional<is_void<element_type>::value,
__nat, element_type>::type& __r) _NOEXCEPT
{return _VSTD::addressof(__r);}
@@ -1460,29 +1459,21 @@
#else // _LIBCPP_CXX03_LANG
-#ifndef _LIBCPP_HAS_NO_VARIADICS
+template <class _Alloc, class _Pointer, class _Tp, class = void>
+struct __has_construct : std::false_type {};
-template <class _Alloc, class _Pointer, class ..._Args>
-struct __has_construct
- : false_type
-{
-};
+template <class _Alloc, class _Pointer, class _Tp>
+struct __has_construct<_Alloc, _Pointer, _Tp, typename __void_t<
+ decltype(_VSTD::declval<_Alloc>().construct(_VSTD::declval<_Pointer>(), _VSTD::declval<_Tp>()))
+>::type> : std::true_type {};
-#else // _LIBCPP_HAS_NO_VARIADICS
-
-template <class _Alloc, class _Pointer, class _Args>
-struct __has_construct
- : false_type
-{
-};
-
-#endif // _LIBCPP_HAS_NO_VARIADICS
+template <class _Alloc, class _Pointer, class = void>
+struct __has_destroy : false_type {};
template <class _Alloc, class _Pointer>
-struct __has_destroy
- : false_type
-{
-};
+struct __has_destroy<_Alloc, _Pointer, typename __void_t<
+ decltype(_VSTD::declval<_Alloc>().destroy(_VSTD::declval<_Pointer>()))
+>::type> : std::true_type {};
template <class _Alloc>
struct __has_max_size
@@ -1510,6 +1501,12 @@
typedef typename _Alloc::difference_type type;
};
+template <class _Tp>
+struct __is_default_allocator : false_type {};
+
+template <class _Tp>
+struct __is_default_allocator<_VSTD::allocator<_Tp> > : true_type {};
+
template <class _Alloc>
struct _LIBCPP_TEMPLATE_VIS allocator_traits
{
@@ -1571,9 +1568,10 @@
}
template <class _Tp, class _A0>
_LIBCPP_INLINE_VISIBILITY
- static void construct(allocator_type&, _Tp* __p, const _A0& __a0)
+ static void construct(allocator_type& __a, _Tp* __p, const _A0& __a0)
{
- ::new ((void*)__p) _Tp(__a0);
+ __construct(__has_construct<allocator_type, _Tp*, const _A0&>(),
+ __a, __p, __a0);
}
template <class _Tp, class _A0, class _A1>
_LIBCPP_INLINE_VISIBILITY
@@ -1613,7 +1611,7 @@
void
__construct_forward(allocator_type& __a, _Ptr __begin1, _Ptr __end1, _Ptr& __begin2)
{
- for (; __begin1 != __end1; ++__begin1, ++__begin2)
+ for (; __begin1 != __end1; ++__begin1, (void) ++__begin2)
construct(__a, _VSTD::__to_raw_pointer(__begin2), _VSTD::move_if_noexcept(*__begin1));
}
@@ -1622,7 +1620,7 @@
static
typename enable_if
<
- (is_same<allocator_type, allocator<_Tp> >::value
+ (__is_default_allocator<allocator_type>::value
|| !__has_construct<allocator_type, _Tp*, _Tp>::value) &&
is_trivially_move_constructible<_Tp>::value,
void
@@ -1647,23 +1645,25 @@
construct(__a, _VSTD::__to_raw_pointer(__begin2), *__begin1);
}
- template <class _Tp>
+ template <class _SourceTp, class _DestTp,
+ class _RawSourceTp = typename remove_const<_SourceTp>::type,
+ class _RawDestTp = typename remove_const<_DestTp>::type>
_LIBCPP_INLINE_VISIBILITY
static
typename enable_if
<
- (is_same<allocator_type, allocator<_Tp> >::value
- || !__has_construct<allocator_type, _Tp*, _Tp>::value) &&
- is_trivially_move_constructible<_Tp>::value,
+ is_trivially_move_constructible<_DestTp>::value &&
+ is_same<_RawSourceTp, _RawDestTp>::value &&
+ (__is_default_allocator<allocator_type>::value ||
+ !__has_construct<allocator_type, _DestTp*, _SourceTp&>::value),
void
>::type
- __construct_range_forward(allocator_type&, _Tp* __begin1, _Tp* __end1, _Tp*& __begin2)
+ __construct_range_forward(allocator_type&, _SourceTp* __begin1, _SourceTp* __end1, _DestTp*& __begin2)
{
- typedef typename remove_const<_Tp>::type _Vp;
ptrdiff_t _Np = __end1 - __begin1;
if (_Np > 0)
{
- _VSTD::memcpy(const_cast<_Vp*>(__begin2), __begin1, _Np * sizeof(_Tp));
+ _VSTD::memcpy(const_cast<_RawDestTp*>(__begin2), __begin1, _Np * sizeof(_DestTp));
__begin2 += _Np;
}
}
@@ -1686,7 +1686,7 @@
static
typename enable_if
<
- (is_same<allocator_type, allocator<_Tp> >::value
+ (__is_default_allocator<allocator_type>::value
|| !__has_construct<allocator_type, _Tp*, _Tp>::value) &&
is_trivially_move_constructible<_Tp>::value,
void
@@ -1721,6 +1721,19 @@
{
::new ((void*)__p) _Tp(_VSTD::forward<_Args>(__args)...);
}
+#else // _LIBCPP_HAS_NO_VARIADICS
+ template <class _Tp, class _A0>
+ _LIBCPP_INLINE_VISIBILITY
+ static void __construct(true_type, allocator_type& __a, _Tp* __p,
+ const _A0& __a0)
+ {__a.construct(__p, __a0);}
+ template <class _Tp, class _A0>
+ _LIBCPP_INLINE_VISIBILITY
+ static void __construct(false_type, allocator_type&, _Tp* __p,
+ const _A0& __a0)
+ {
+ ::new ((void*)__p) _Tp(__a0);
+ }
#endif // _LIBCPP_HAS_NO_VARIADICS
template <class _Tp>
@@ -1797,10 +1810,10 @@
if (__n > max_size())
__throw_length_error("allocator<T>::allocate(size_t n)"
" 'n' exceeds maximum supported size");
- return static_cast<pointer>(_VSTD::__libcpp_allocate(__n * sizeof(_Tp), __alignof(_Tp)));
+ return static_cast<pointer>(_VSTD::__libcpp_allocate(__n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp)));
}
- _LIBCPP_INLINE_VISIBILITY void deallocate(pointer __p, size_type) _NOEXCEPT
- {_VSTD::__libcpp_deallocate((void*)__p, __alignof(_Tp));}
+ _LIBCPP_INLINE_VISIBILITY void deallocate(pointer __p, size_type __n) _NOEXCEPT
+ {_VSTD::__libcpp_deallocate((void*)__p, __n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp));}
_LIBCPP_INLINE_VISIBILITY size_type max_size() const _NOEXCEPT
{return size_type(~0) / sizeof(_Tp);}
#if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS)
@@ -1898,10 +1911,10 @@
if (__n > max_size())
__throw_length_error("allocator<const T>::allocate(size_t n)"
" 'n' exceeds maximum supported size");
- return static_cast<pointer>(_VSTD::__libcpp_allocate(__n * sizeof(_Tp), __alignof(_Tp)));
+ return static_cast<pointer>(_VSTD::__libcpp_allocate(__n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp)));
}
- _LIBCPP_INLINE_VISIBILITY void deallocate(pointer __p, size_type) _NOEXCEPT
- {_VSTD::__libcpp_deallocate((void*) const_cast<_Tp *>(__p), __alignof(_Tp));}
+ _LIBCPP_INLINE_VISIBILITY void deallocate(pointer __p, size_type __n) _NOEXCEPT
+ {_VSTD::__libcpp_deallocate((void*) const_cast<_Tp *>(__p), __n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp));}
_LIBCPP_INLINE_VISIBILITY size_type max_size() const _NOEXCEPT
{return size_type(~0) / sizeof(_Tp);}
#if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS)
@@ -2017,7 +2030,7 @@
while (__n > 0)
{
#if !defined(_LIBCPP_HAS_NO_ALIGNED_ALLOCATION)
- if (__is_overaligned_for_new(__alignof(_Tp)))
+ if (__is_overaligned_for_new(_LIBCPP_ALIGNOF(_Tp)))
{
std::align_val_t __al =
std::align_val_t(std::alignment_of<_Tp>::value);
@@ -2028,7 +2041,7 @@
__n * sizeof(_Tp), nothrow));
}
#else
- if (__is_overaligned_for_new(__alignof(_Tp)))
+ if (__is_overaligned_for_new(_LIBCPP_ALIGNOF(_Tp)))
{
// Since aligned operator new is unavailable, return an empty
// buffer rather than one with invalid alignment.
@@ -2052,7 +2065,7 @@
inline _LIBCPP_INLINE_VISIBILITY
void return_temporary_buffer(_Tp* __p) _NOEXCEPT
{
- _VSTD::__libcpp_deallocate((void*)__p, __alignof(_Tp));
+ _VSTD::__libcpp_deallocate_unsized((void*)__p, _LIBCPP_ALIGNOF(_Tp));
}
#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR)
@@ -5628,7 +5641,7 @@
struct __temp_value {
typedef allocator_traits<_Alloc> _Traits;
- typename aligned_storage<sizeof(_Tp), alignof(_Tp)>::type __v;
+ typename aligned_storage<sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp)>::type __v;
_Alloc &__a;
_Tp *__addr() { return reinterpret_cast<_Tp *>(addressof(__v)); }
diff --git a/linux-x64/clang/include/c++/v1/module.modulemap b/linux-x64/clang/include/c++/v1/module.modulemap
index 681c80b..bbfe90e 100644
--- a/linux-x64/clang/include/c++/v1/module.modulemap
+++ b/linux-x64/clang/include/c++/v1/module.modulemap
@@ -24,7 +24,10 @@
header "errno.h"
export *
}
- // <fenv.h> provided by C library.
+ module fenv_h {
+ header "fenv.h"
+ export *
+ }
// <float.h> provided by compiler or C library.
module inttypes_h {
header "inttypes.h"
@@ -524,10 +527,6 @@
header "experimental/deque"
export *
}
- module dynarray {
- header "experimental/dynarray"
- export *
- }
module filesystem {
header "experimental/filesystem"
export *
diff --git a/linux-x64/clang/include/c++/v1/mutex b/linux-x64/clang/include/c++/v1/mutex
index 6d2de2b..98bd581 100644
--- a/linux-x64/clang/include/c++/v1/mutex
+++ b/linux-x64/clang/include/c++/v1/mutex
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- mutex ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/new b/linux-x64/clang/include/c++/v1/new
index 7c3076c..b5e8fb4 100644
--- a/linux-x64/clang/include/c++/v1/new
+++ b/linux-x64/clang/include/c++/v1/new
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------------- new ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -27,12 +26,6 @@
virtual const char* what() const noexcept;
};
-class bad_array_length : public bad_alloc // FIXME: Not part of C++
-{
-public:
- bad_array_length() noexcept;
-};
-
class bad_array_new_length : public bad_alloc // C++14
{
public:
@@ -104,16 +97,23 @@
#pragma GCC system_header
#endif
-#if !(defined(_LIBCPP_BUILDING_LIBRARY) || _LIBCPP_STD_VER >= 14 || \
- (defined(__cpp_sized_deallocation) && __cpp_sized_deallocation >= 201309))
+#if !defined(__cpp_sized_deallocation) || __cpp_sized_deallocation < 201309L
+#define _LIBCPP_HAS_NO_LANGUAGE_SIZED_DEALLOCATION
+#endif
+
+#if !defined(_LIBCPP_BUILDING_LIBRARY) && _LIBCPP_STD_VER < 14 && \
+ defined(_LIBCPP_HAS_NO_LANGUAGE_SIZED_DEALLOCATION)
+# define _LIBCPP_HAS_NO_LIBRARY_SIZED_DEALLOCATION
+#endif
+
+#if defined(_LIBCPP_HAS_NO_LIBRARY_SIZED_DEALLOCATION) || \
+ defined(_LIBCPP_HAS_NO_LANGUAGE_SIZED_DEALLOCATION)
# define _LIBCPP_HAS_NO_SIZED_DEALLOCATION
#endif
#if !__has_builtin(__builtin_operator_new) || \
- __has_builtin(__builtin_operator_new) < 201802L || \
- defined(_LIBCPP_HAS_NO_ALIGNED_ALLOCATION) || \
- !defined(__cpp_aligned_new) || __cpp_aligned_new < 201606
-#define _LIBCPP_HAS_NO_BUILTIN_ALIGNED_OPERATOR_NEW_DELETE
+ __has_builtin(__builtin_operator_new) < 201802L
+#define _LIBCPP_HAS_NO_BUILTIN_OVERLOADED_OPERATOR_NEW_DELETE
#endif
namespace std // purposefully not using versioning namespace
@@ -149,33 +149,14 @@
_LIBCPP_NORETURN _LIBCPP_FUNC_VIS void __throw_bad_alloc(); // not in C++ spec
-#if defined(_LIBCPP_BUILDING_LIBRARY) || (_LIBCPP_STD_VER > 11)
-
-class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH
- bad_array_length : public bad_alloc {
-public:
- bad_array_length() _NOEXCEPT;
- virtual ~bad_array_length() _NOEXCEPT;
- virtual const char* what() const _NOEXCEPT;
-};
-
-#define _LIBCPP_BAD_ARRAY_LENGTH_DEFINED
-
-#endif // defined(_LIBCPP_BUILDING_LIBRARY) || (_LIBCPP_STD_VER > 11)
-
-#if !defined(_LIBCPP_ABI_MICROSOFT) || defined(_LIBCPP_NO_VCRUNTIME)
-#if !defined(_LIBCPP_HAS_NO_ALIGNED_ALLOCATION) || _LIBCPP_STD_VER > 14
+#if !defined(_LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION) && \
+ !defined(_LIBCPP_DEFER_NEW_TO_VCRUNTIME)
#ifndef _LIBCPP_CXX03_LANG
enum class _LIBCPP_ENUM_VIS align_val_t : size_t { };
#else
enum align_val_t { __zero = 0, __max = (size_t)-1 };
#endif
#endif
-#elif !defined(__cpp_aligned_new)
-// We're defering to Microsoft's STL to provide aligned new et al. We don't
-// have it unless the language feature test macro is defined.
-#define _LIBCPP_HAS_NO_ALIGNED_ALLOCATION
-#endif
} // std
@@ -185,13 +166,13 @@
#define _THROW_BAD_ALLOC
#endif
-#if !defined(_LIBCPP_ABI_MICROSOFT) || defined(_LIBCPP_NO_VCRUNTIME)
+#if !defined(_LIBCPP_DEFER_NEW_TO_VCRUNTIME)
_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new(std::size_t __sz) _THROW_BAD_ALLOC;
_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new(std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _NOALIAS;
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p) _NOEXCEPT;
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, const std::nothrow_t&) _NOEXCEPT;
-#ifndef _LIBCPP_HAS_NO_SIZED_DEALLOCATION
+#ifndef _LIBCPP_HAS_NO_LIBRARY_SIZED_DEALLOCATION
_LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete(void* __p, std::size_t __sz) _NOEXCEPT;
#endif
@@ -199,16 +180,16 @@
_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new[](std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _NOALIAS;
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p) _NOEXCEPT;
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, const std::nothrow_t&) _NOEXCEPT;
-#ifndef _LIBCPP_HAS_NO_SIZED_DEALLOCATION
+#ifndef _LIBCPP_HAS_NO_LIBRARY_SIZED_DEALLOCATION
_LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete[](void* __p, std::size_t __sz) _NOEXCEPT;
#endif
-#ifndef _LIBCPP_HAS_NO_ALIGNED_ALLOCATION
+#ifndef _LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION
_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new(std::size_t __sz, std::align_val_t) _THROW_BAD_ALLOC;
_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new(std::size_t __sz, std::align_val_t, const std::nothrow_t&) _NOEXCEPT _NOALIAS;
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, std::align_val_t) _NOEXCEPT;
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, std::align_val_t, const std::nothrow_t&) _NOEXCEPT;
-#ifndef _LIBCPP_HAS_NO_SIZED_DEALLOCATION
+#ifndef _LIBCPP_HAS_NO_LIBRARY_SIZED_DEALLOCATION
_LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete(void* __p, std::size_t __sz, std::align_val_t) _NOEXCEPT;
#endif
@@ -216,7 +197,7 @@
_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new[](std::size_t __sz, std::align_val_t, const std::nothrow_t&) _NOEXCEPT _NOALIAS;
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, std::align_val_t) _NOEXCEPT;
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, std::align_val_t, const std::nothrow_t&) _NOEXCEPT;
-#ifndef _LIBCPP_HAS_NO_SIZED_DEALLOCATION
+#ifndef _LIBCPP_HAS_NO_LIBRARY_SIZED_DEALLOCATION
_LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete[](void* __p, std::size_t __sz, std::align_val_t) _NOEXCEPT;
#endif
#endif
@@ -226,7 +207,7 @@
inline _LIBCPP_INLINE_VISIBILITY void operator delete (void*, void*) _NOEXCEPT {}
inline _LIBCPP_INLINE_VISIBILITY void operator delete[](void*, void*) _NOEXCEPT {}
-#endif // !_LIBCPP_ABI_MICROSOFT || _LIBCPP_NO_VCRUNTIME
+#endif // !_LIBCPP_DEFER_NEW_TO_VCRUNTIME
_LIBCPP_BEGIN_NAMESPACE_STD
@@ -242,7 +223,7 @@
#ifndef _LIBCPP_HAS_NO_ALIGNED_ALLOCATION
if (__is_overaligned_for_new(__align)) {
const align_val_t __align_val = static_cast<align_val_t>(__align);
-# ifdef _LIBCPP_HAS_NO_BUILTIN_ALIGNED_OPERATOR_NEW_DELETE
+# ifdef _LIBCPP_HAS_NO_BUILTIN_OVERLOADED_OPERATOR_NEW_DELETE
return ::operator new(__size, __align_val);
# else
return __builtin_operator_new(__size, __align_val);
@@ -258,40 +239,95 @@
#endif
}
-inline _LIBCPP_INLINE_VISIBILITY void __libcpp_deallocate(void* __ptr, size_t __align) {
-#ifndef _LIBCPP_HAS_NO_ALIGNED_ALLOCATION
- if (__is_overaligned_for_new(__align)) {
- const align_val_t __align_val = static_cast<align_val_t>(__align);
-# ifdef _LIBCPP_HAS_NO_BUILTIN_ALIGNED_OPERATOR_NEW_DELETE
- return ::operator delete(__ptr, __align_val);
-# else
- return __builtin_operator_delete(__ptr, __align_val);
-# endif
+struct _DeallocateCaller {
+ static inline _LIBCPP_INLINE_VISIBILITY
+ void __do_deallocate_handle_size_align(void *__ptr, size_t __size, size_t __align) {
+#if defined(_LIBCPP_HAS_NO_ALIGNED_ALLOCATION)
+ ((void)__align);
+ return __do_deallocate_handle_size(__ptr, __size);
+#else
+ if (__is_overaligned_for_new(__align)) {
+ const align_val_t __align_val = static_cast<align_val_t>(__align);
+ return __do_deallocate_handle_size(__ptr, __size, __align_val);
+ } else {
+ return __do_deallocate_handle_size(__ptr, __size);
+ }
+#endif
}
+
+ static inline _LIBCPP_INLINE_VISIBILITY
+ void __do_deallocate_handle_align(void *__ptr, size_t __align) {
+#if defined(_LIBCPP_HAS_NO_ALIGNED_ALLOCATION)
+ ((void)__align);
+ return __do_call(__ptr);
#else
- ((void)__align);
+ if (__is_overaligned_for_new(__align)) {
+ const align_val_t __align_val = static_cast<align_val_t>(__align);
+ return __do_call(__ptr, __align_val);
+ } else {
+ return __do_call(__ptr);
+ }
#endif
+ }
+
+ private:
+ static inline void __do_deallocate_handle_size(void *__ptr, size_t __size) {
+#ifdef _LIBCPP_HAS_NO_SIZED_DEALLOCATION
+ ((void)__size);
+ return __do_call(__ptr);
+#else
+ return __do_call(__ptr, __size);
+#endif
+ }
+
+#ifndef _LIBCPP_HAS_NO_ALIGNED_ALLOCATION
+ static inline void __do_deallocate_handle_size(void *__ptr, size_t __size, align_val_t __align) {
+#ifdef _LIBCPP_HAS_NO_SIZED_DEALLOCATION
+ ((void)__size);
+ return __do_call(__ptr, __align);
+#else
+ return __do_call(__ptr, __size, __align);
+#endif
+ }
+#endif
+
+private:
+ template <class _A1, class _A2>
+ static inline void __do_call(void *__ptr, _A1 __a1, _A2 __a2) {
+#if defined(_LIBCPP_HAS_NO_BUILTIN_OPERATOR_NEW_DELETE) || \
+ defined(_LIBCPP_HAS_NO_BUILTIN_OVERLOADED_OPERATOR_NEW_DELETE)
+ return ::operator delete(__ptr, __a1, __a2);
+#else
+ return __builtin_operator_delete(__ptr, __a1, __a2);
+#endif
+ }
+
+ template <class _A1>
+ static inline void __do_call(void *__ptr, _A1 __a1) {
+#if defined(_LIBCPP_HAS_NO_BUILTIN_OPERATOR_NEW_DELETE) || \
+ defined(_LIBCPP_HAS_NO_BUILTIN_OVERLOADED_OPERATOR_NEW_DELETE)
+ return ::operator delete(__ptr, __a1);
+#else
+ return __builtin_operator_delete(__ptr, __a1);
+#endif
+ }
+
+ static inline void __do_call(void *__ptr) {
#ifdef _LIBCPP_HAS_NO_BUILTIN_OPERATOR_NEW_DELETE
- return ::operator delete(__ptr);
+ return ::operator delete(__ptr);
#else
- return __builtin_operator_delete(__ptr);
+ return __builtin_operator_delete(__ptr);
#endif
+ }
+};
+
+inline _LIBCPP_INLINE_VISIBILITY void __libcpp_deallocate(void* __ptr, size_t __size, size_t __align) {
+ _DeallocateCaller::__do_deallocate_handle_size_align(__ptr, __size, __align);
}
-#ifdef _LIBCPP_BAD_ARRAY_LENGTH_DEFINED
-_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
-#ifndef _LIBCPP_NO_EXCEPTIONS
-_LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH
-#endif
-void __throw_bad_array_length()
-{
-#ifndef _LIBCPP_NO_EXCEPTIONS
- throw bad_array_length();
-#else
- _VSTD::abort();
-#endif
+inline _LIBCPP_INLINE_VISIBILITY void __libcpp_deallocate_unsized(void* __ptr, size_t __align) {
+ _DeallocateCaller::__do_deallocate_handle_align(__ptr, __align);
}
-#endif
template <class _Tp>
_LIBCPP_NODISCARD_AFTER_CXX17 inline
diff --git a/linux-x64/clang/include/c++/v1/numeric b/linux-x64/clang/include/c++/v1/numeric
index 4e68239..9941770 100644
--- a/linux-x64/clang/include/c++/v1/numeric
+++ b/linux-x64/clang/include/c++/v1/numeric
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- numeric ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/optional b/linux-x64/clang/include/c++/v1/optional
index 9ef0aac..be584b3 100644
--- a/linux-x64/clang/include/c++/v1/optional
+++ b/linux-x64/clang/include/c++/v1/optional
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- optional ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -105,8 +104,8 @@
// 23.6.3.3, assignment
optional &operator=(nullopt_t) noexcept;
- optional &operator=(const optional &);
- optional &operator=(optional &&) noexcept(see below );
+ optional &operator=(const optional &); // constexpr in C++20
+ optional &operator=(optional &&) noexcept(see below); // constexpr in C++20
template <class U = T> optional &operator=(U &&);
template <class U> optional &operator=(const optional<U> &);
template <class U> optional &operator=(optional<U> &&);
@@ -169,7 +168,7 @@
namespace std // purposefully not using versioning namespace
{
-class _LIBCPP_EXCEPTION_ABI bad_optional_access
+class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS bad_optional_access
: public exception
{
public:
@@ -186,6 +185,7 @@
_LIBCPP_NORETURN
inline _LIBCPP_INLINE_VISIBILITY
+_LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS
void __throw_bad_optional_access() {
#ifndef _LIBCPP_NO_EXCEPTIONS
throw bad_optional_access();
@@ -933,6 +933,7 @@
using __base::__get;
_LIBCPP_INLINE_VISIBILITY
+ _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS
constexpr value_type const& value() const&
{
if (!this->has_value())
@@ -941,6 +942,7 @@
}
_LIBCPP_INLINE_VISIBILITY
+ _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS
constexpr value_type& value() &
{
if (!this->has_value())
@@ -949,6 +951,7 @@
}
_LIBCPP_INLINE_VISIBILITY
+ _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS
constexpr value_type&& value() &&
{
if (!this->has_value())
@@ -957,6 +960,7 @@
}
_LIBCPP_INLINE_VISIBILITY
+ _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS
constexpr value_type const&& value() const&&
{
if (!this->has_value())
diff --git a/linux-x64/clang/include/c++/v1/ostream b/linux-x64/clang/include/c++/v1/ostream
index 5404e0d..b20ac34 100644
--- a/linux-x64/clang/include/c++/v1/ostream
+++ b/linux-x64/clang/include/c++/v1/ostream
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- ostream -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -140,6 +139,7 @@
#include <locale>
#include <iterator>
#include <bitset>
+#include <version>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header
@@ -160,7 +160,7 @@
typedef typename traits_type::off_type off_type;
// 27.7.2.2 Constructor/destructor:
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
explicit basic_ostream(basic_streambuf<char_type, traits_type>* __sb)
{ this->init(__sb); }
virtual ~basic_ostream();
@@ -173,7 +173,7 @@
inline _LIBCPP_INLINE_VISIBILITY
basic_ostream& operator=(basic_ostream&& __rhs);
#endif
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
void swap(basic_ostream& __rhs)
{ basic_ios<char_type, traits_type>::swap(__rhs); }
@@ -190,16 +190,16 @@
class _LIBCPP_TEMPLATE_VIS sentry;
// 27.7.2.6 Formatted output:
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
basic_ostream& operator<<(basic_ostream& (*__pf)(basic_ostream&))
{ return __pf(*this); }
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
basic_ostream& operator<<(basic_ios<char_type, traits_type>&
(*__pf)(basic_ios<char_type,traits_type>&))
{ __pf(*this); return *this; }
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
basic_ostream& operator<<(ios_base& (*__pf)(ios_base&))
{ __pf(*this); return *this; }
@@ -224,11 +224,11 @@
basic_ostream& flush();
// 27.7.2.5 seeks:
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
pos_type tellp();
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
basic_ostream& seekp(pos_type __pos);
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
basic_ostream& seekp(off_type __off, ios_base::seekdir __dir);
protected:
@@ -1092,7 +1092,7 @@
use_facet<ctype<_CharT> >(__os.getloc()).widen('1'));
}
-#ifndef _LIBCPP_AVAILABILITY_NO_STREAMS_EXTERN_TEMPLATE
+#ifndef _LIBCPP_DO_NOT_ASSUME_STREAMS_EXPLICIT_INSTANTIATION_IN_DYLIB
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream<char>)
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream<wchar_t>)
#endif
diff --git a/linux-x64/clang/include/c++/v1/queue b/linux-x64/clang/include/c++/v1/queue
index 4677e52..55be800 100644
--- a/linux-x64/clang/include/c++/v1/queue
+++ b/linux-x64/clang/include/c++/v1/queue
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- queue ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/random b/linux-x64/clang/include/c++/v1/random
index 724bd0f..a732395 100644
--- a/linux-x64/clang/include/c++/v1/random
+++ b/linux-x64/clang/include/c++/v1/random
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- random -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/ratio b/linux-x64/clang/include/c++/v1/ratio
index 7ee5ec2..fa7a4bb 100644
--- a/linux-x64/clang/include/c++/v1/ratio
+++ b/linux-x64/clang/include/c++/v1/ratio
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- ratio -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/regex b/linux-x64/clang/include/c++/v1/regex
index 1858500..c381b51 100644
--- a/linux-x64/clang/include/c++/v1/regex
+++ b/linux-x64/clang/include/c++/v1/regex
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- regex ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -990,6 +989,10 @@
#if defined(__mips__) && defined(__GLIBC__)
static const char_class_type __regex_word = static_cast<char_class_type>(_ISbit(15));
+#elif defined(__NetBSD__)
+ // NetBSD defines classes up to 0x2000
+ // see sys/ctype_bits.h, _CTYPE_Q
+ static const char_class_type __regex_word = 0x8000;
#else
static const char_class_type __regex_word = 0x80;
#endif
@@ -6136,7 +6139,7 @@
_LIBCPP_INLINE_VISIBILITY
reference operator*() const {return __match_;}
_LIBCPP_INLINE_VISIBILITY
- pointer operator->() const {return &__match_;}
+ pointer operator->() const {return _VSTD::addressof(__match_);}
regex_iterator& operator++();
_LIBCPP_INLINE_VISIBILITY
@@ -6160,7 +6163,7 @@
const regex_type& __re, regex_constants::match_flag_type __m)
: __begin_(__a),
__end_(__b),
- __pregex_(&__re),
+ __pregex_(_VSTD::addressof(__re)),
__flags_(__m)
{
_VSTD::regex_search(__begin_, __end_, __match_, *__pregex_, __flags_);
@@ -6401,7 +6404,7 @@
regex_constants::match_flag_type __m)
: __position_(__a, __b, __re, __m),
__n_(0),
- __subs_(__submatches, __submatches + _Np)
+ __subs_(begin(__submatches), end(__submatches))
{
__init(__a, __b);
}
diff --git a/linux-x64/clang/include/c++/v1/scoped_allocator b/linux-x64/clang/include/c++/v1/scoped_allocator
index bdbb013..237cd42 100644
--- a/linux-x64/clang/include/c++/v1/scoped_allocator
+++ b/linux-x64/clang/include/c++/v1/scoped_allocator
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- scoped_allocator --------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/set b/linux-x64/clang/include/c++/v1/set
index f2ce6ea..1783722 100644
--- a/linux-x64/clang/include/c++/v1/set
+++ b/linux-x64/clang/include/c++/v1/set
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- set -------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -128,6 +127,15 @@
iterator erase(const_iterator first, const_iterator last);
void clear() noexcept;
+ template<class C2>
+ void merge(set<Key, C2, Allocator>& source); // C++17
+ template<class C2>
+ void merge(set<Key, C2, Allocator>&& source); // C++17
+ template<class C2>
+ void merge(multiset<Key, C2, Allocator>& source); // C++17
+ template<class C2>
+ void merge(multiset<Key, C2, Allocator>&& source); // C++17
+
void swap(set& s)
noexcept(
__is_nothrow_swappable<key_compare>::value &&
@@ -207,6 +215,9 @@
swap(set<Key, Compare, Allocator>& x, set<Key, Compare, Allocator>& y)
noexcept(noexcept(x.swap(y)));
+template <class Key, class Compare, class Allocator, class Predicate>
+ void erase_if(set<Key, Compare, Allocator>& c, Predicate pred); // C++20
+
template <class Key, class Compare = less<Key>,
class Allocator = allocator<Key>>
class multiset
@@ -316,6 +327,15 @@
iterator erase(const_iterator first, const_iterator last);
void clear() noexcept;
+ template<class C2>
+ void merge(multiset<Key, C2, Allocator>& source); // C++17
+ template<class C2>
+ void merge(multiset<Key, C2, Allocator>&& source); // C++17
+ template<class C2>
+ void merge(set<Key, C2, Allocator>& source); // C++17
+ template<class C2>
+ void merge(set<Key, C2, Allocator>&& source); // C++17
+
void swap(multiset& s)
noexcept(
__is_nothrow_swappable<key_compare>::value &&
@@ -394,6 +414,9 @@
swap(multiset<Key, Compare, Allocator>& x, multiset<Key, Compare, Allocator>& y)
noexcept(noexcept(x.swap(y)));
+template <class Key, class Compare, class Allocator, class Predicate>
+ void erase_if(multiset<Key, Compare, Allocator>& c, Predicate pred); // C++20
+
} // std
*/
@@ -410,6 +433,9 @@
_LIBCPP_BEGIN_NAMESPACE_STD
+template <class _Key, class _Compare, class _Allocator>
+class multiset;
+
template <class _Key, class _Compare = less<_Key>,
class _Allocator = allocator<_Key> >
class _LIBCPP_TEMPLATE_VIS set
@@ -424,6 +450,7 @@
typedef value_type& reference;
typedef const value_type& const_reference;
+ static_assert(sizeof(__diagnose_non_const_comparator<_Key, _Compare>()), "");
static_assert((is_same<typename allocator_type::value_type, value_type>::value),
"Allocator::value_type must be same type as value_type");
@@ -449,6 +476,11 @@
typedef __insert_return_type<iterator, node_type> insert_return_type;
#endif
+ template <class _Key2, class _Compare2, class _Alloc2>
+ friend class _LIBCPP_TEMPLATE_VIS set;
+ template <class _Key2, class _Compare2, class _Alloc2>
+ friend class _LIBCPP_TEMPLATE_VIS multiset;
+
_LIBCPP_INLINE_VISIBILITY
set()
_NOEXCEPT_(
@@ -487,7 +519,7 @@
#if _LIBCPP_STD_VER > 11
template <class _InputIterator>
- _LIBCPP_INLINE_VISIBILITY
+ _LIBCPP_INLINE_VISIBILITY
set(_InputIterator __f, _InputIterator __l, const allocator_type& __a)
: set(__f, __l, key_compare(), __a) {}
#endif
@@ -543,7 +575,7 @@
}
#if _LIBCPP_STD_VER > 11
- _LIBCPP_INLINE_VISIBILITY
+ _LIBCPP_INLINE_VISIBILITY
set(initializer_list<value_type> __il, const allocator_type& __a)
: set(__il, key_compare(), __a) {}
#endif
@@ -681,6 +713,38 @@
{
return __tree_.template __node_handle_extract<node_type>(__it);
}
+ template <class _Compare2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(set<key_type, _Compare2, allocator_type>& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ __tree_.__node_handle_merge_unique(__source.__tree_);
+ }
+ template <class _Compare2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(set<key_type, _Compare2, allocator_type>&& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ __tree_.__node_handle_merge_unique(__source.__tree_);
+ }
+ template <class _Compare2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(multiset<key_type, _Compare2, allocator_type>& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ __tree_.__node_handle_merge_unique(__source.__tree_);
+ }
+ template <class _Compare2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(multiset<key_type, _Compare2, allocator_type>&& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ __tree_.__node_handle_merge_unique(__source.__tree_);
+ }
#endif
_LIBCPP_INLINE_VISIBILITY
@@ -853,6 +917,13 @@
__x.swap(__y);
}
+#if _LIBCPP_STD_VER > 17
+template <class _Key, class _Compare, class _Allocator, class _Predicate>
+inline _LIBCPP_INLINE_VISIBILITY
+void erase_if(set<_Key, _Compare, _Allocator>& __c, _Predicate __pred)
+{ __libcpp_erase_if_container(__c, __pred); }
+#endif
+
template <class _Key, class _Compare = less<_Key>,
class _Allocator = allocator<_Key> >
class _LIBCPP_TEMPLATE_VIS multiset
@@ -867,6 +938,7 @@
typedef value_type& reference;
typedef const value_type& const_reference;
+ static_assert(sizeof(__diagnose_non_const_comparator<_Key, _Compare>()), "");
static_assert((is_same<typename allocator_type::value_type, value_type>::value),
"Allocator::value_type must be same type as value_type");
@@ -891,6 +963,11 @@
typedef __set_node_handle<typename __base::__node, allocator_type> node_type;
#endif
+ template <class _Key2, class _Compare2, class _Alloc2>
+ friend class _LIBCPP_TEMPLATE_VIS set;
+ template <class _Key2, class _Compare2, class _Alloc2>
+ friend class _LIBCPP_TEMPLATE_VIS multiset;
+
// construct/copy/destroy:
_LIBCPP_INLINE_VISIBILITY
multiset()
@@ -921,7 +998,7 @@
#if _LIBCPP_STD_VER > 11
template <class _InputIterator>
- _LIBCPP_INLINE_VISIBILITY
+ _LIBCPP_INLINE_VISIBILITY
multiset(_InputIterator __f, _InputIterator __l, const allocator_type& __a)
: multiset(__f, __l, key_compare(), __a) {}
#endif
@@ -985,7 +1062,7 @@
}
#if _LIBCPP_STD_VER > 11
- _LIBCPP_INLINE_VISIBILITY
+ _LIBCPP_INLINE_VISIBILITY
multiset(initializer_list<value_type> __il, const allocator_type& __a)
: multiset(__il, key_compare(), __a) {}
#endif
@@ -1122,6 +1199,38 @@
{
return __tree_.template __node_handle_extract<node_type>(__it);
}
+ template <class _Compare2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(multiset<key_type, _Compare2, allocator_type>& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ __tree_.__node_handle_merge_multi(__source.__tree_);
+ }
+ template <class _Compare2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(multiset<key_type, _Compare2, allocator_type>&& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ __tree_.__node_handle_merge_multi(__source.__tree_);
+ }
+ template <class _Compare2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(set<key_type, _Compare2, allocator_type>& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ __tree_.__node_handle_merge_multi(__source.__tree_);
+ }
+ template <class _Compare2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(set<key_type, _Compare2, allocator_type>&& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ __tree_.__node_handle_merge_multi(__source.__tree_);
+ }
#endif
_LIBCPP_INLINE_VISIBILITY
@@ -1295,6 +1404,13 @@
__x.swap(__y);
}
+#if _LIBCPP_STD_VER > 17
+template <class _Key, class _Compare, class _Allocator, class _Predicate>
+inline _LIBCPP_INLINE_VISIBILITY
+void erase_if(multiset<_Key, _Compare, _Allocator>& __c, _Predicate __pred)
+{ __libcpp_erase_if_container(__c, __pred); }
+#endif
+
_LIBCPP_END_NAMESPACE_STD
#endif // _LIBCPP_SET
diff --git a/linux-x64/clang/include/c++/v1/setjmp.h b/linux-x64/clang/include/c++/v1/setjmp.h
index 464b4a5..f30a8d4 100644
--- a/linux-x64/clang/include/c++/v1/setjmp.h
+++ b/linux-x64/clang/include/c++/v1/setjmp.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- setjmp.h ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/shared_mutex b/linux-x64/clang/include/c++/v1/shared_mutex
index fbde0cf..fcafd8c 100644
--- a/linux-x64/clang/include/c++/v1/shared_mutex
+++ b/linux-x64/clang/include/c++/v1/shared_mutex
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------ shared_mutex --------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -144,7 +143,8 @@
_LIBCPP_BEGIN_NAMESPACE_STD
-struct _LIBCPP_TYPE_VIS _LIBCPP_AVAILABILITY_SHARED_MUTEX __shared_mutex_base
+struct _LIBCPP_TYPE_VIS _LIBCPP_AVAILABILITY_SHARED_MUTEX _LIBCPP_THREAD_SAFETY_ANNOTATION(capability("shared_mutex"))
+__shared_mutex_base
{
mutex __mut_;
condition_variable __gate1_;
@@ -161,14 +161,14 @@
__shared_mutex_base& operator=(const __shared_mutex_base&) = delete;
// Exclusive ownership
- void lock(); // blocking
- bool try_lock();
- void unlock();
+ void lock() _LIBCPP_THREAD_SAFETY_ANNOTATION(acquire_capability()); // blocking
+ bool try_lock() _LIBCPP_THREAD_SAFETY_ANNOTATION(try_acquire_capability(true));
+ void unlock() _LIBCPP_THREAD_SAFETY_ANNOTATION(release_capability());
// Shared ownership
- void lock_shared(); // blocking
- bool try_lock_shared();
- void unlock_shared();
+ void lock_shared() _LIBCPP_THREAD_SAFETY_ANNOTATION(acquire_shared_capability()); // blocking
+ bool try_lock_shared() _LIBCPP_THREAD_SAFETY_ANNOTATION(try_acquire_shared_capability(true));
+ void unlock_shared() _LIBCPP_THREAD_SAFETY_ANNOTATION(release_shared_capability());
// typedef implementation-defined native_handle_type; // See 30.2.3
// native_handle_type native_handle(); // See 30.2.3
diff --git a/linux-x64/clang/include/c++/v1/span b/linux-x64/clang/include/c++/v1/span
index ea7aecb..774f698 100644
--- a/linux-x64/clang/include/c++/v1/span
+++ b/linux-x64/clang/include/c++/v1/span
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------------ span ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===---------------------------------------------------------------------===//
@@ -23,20 +22,6 @@
template <class ElementType, ptrdiff_t Extent = dynamic_extent>
class span;
-// [span.comparison], span comparison operators
-template <class T, ptrdiff_t X, class U, ptrdiff_t Y>
- constexpr bool operator==(span<T, X> l, span<U, Y> r);
-template <class T, ptrdiff_t X, class U, ptrdiff_t Y>
- constexpr bool operator!=(span<T, X> l, span<U, Y> r);
-template <class T, ptrdiff_t X, class U, ptrdiff_t Y>
- constexpr bool operator<(span<T, X> l, span<U, Y> r);
-template <class T, ptrdiff_t X, class U, ptrdiff_t Y>
- constexpr bool operator<=(span<T, X> l, span<U, Y> r);
-template <class T, ptrdiff_t X, class U, ptrdiff_t Y>
- constexpr bool operator>(span<T, X> l, span<U, Y> r);
-template <class T, ptrdiff_t X, class U, ptrdiff_t Y>
- constexpr bool operator>=(span<T, X> l, span<U, Y> r);
-
// [span.objectrep], views of object representation
template <class ElementType, ptrdiff_t Extent>
span<const byte, ((Extent == dynamic_extent) ? dynamic_extent :
@@ -539,36 +524,6 @@
index_type __size;
};
-template <class _Tp1, ptrdiff_t _Extent1, class _Tp2, ptrdiff_t _Extent2>
- constexpr bool
- operator==(const span<_Tp1, _Extent1>& __lhs, const span<_Tp2, _Extent2>& __rhs)
- { return equal(__lhs.begin(), __lhs.end(), __rhs.begin(), __rhs.end()); }
-
-template <class _Tp1, ptrdiff_t _Extent1, class _Tp2, ptrdiff_t _Extent2>
- constexpr bool
- operator!=(const span<_Tp1, _Extent1>& __lhs, const span<_Tp2, _Extent2>& __rhs)
- { return !(__rhs == __lhs); }
-
-template <class _Tp1, ptrdiff_t _Extent1, class _Tp2, ptrdiff_t _Extent2>
- constexpr bool
- operator< (const span<_Tp1, _Extent1>& __lhs, const span<_Tp2, _Extent2>& __rhs)
- { return lexicographical_compare (__lhs.begin(), __lhs.end(), __rhs.begin(), __rhs.end()); }
-
-template <class _Tp1, ptrdiff_t _Extent1, class _Tp2, ptrdiff_t _Extent2>
- constexpr bool
- operator<=(const span<_Tp1, _Extent1>& __lhs, const span<_Tp2, _Extent2>& __rhs)
- { return !(__rhs < __lhs); }
-
-template <class _Tp1, ptrdiff_t _Extent1, class _Tp2, ptrdiff_t _Extent2>
- constexpr bool
- operator> (const span<_Tp1, _Extent1>& __lhs, const span<_Tp2, _Extent2>& __rhs)
- { return __rhs < __lhs; }
-
-template <class _Tp1, ptrdiff_t _Extent1, class _Tp2, ptrdiff_t _Extent2>
- constexpr bool
- operator>=(const span<_Tp1, _Extent1>& __lhs, const span<_Tp2, _Extent2>& __rhs)
- { return !(__lhs < __rhs); }
-
// as_bytes & as_writeable_bytes
template <class _Tp, ptrdiff_t _Extent>
auto as_bytes(span<_Tp, _Extent> __s) noexcept
diff --git a/linux-x64/clang/include/c++/v1/sstream b/linux-x64/clang/include/c++/v1/sstream
index 9c3ee13..14c9197 100644
--- a/linux-x64/clang/include/c++/v1/sstream
+++ b/linux-x64/clang/include/c++/v1/sstream
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- sstream ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -559,7 +558,7 @@
char_type* __p = const_cast<char_type*>(__str_.data());
this->setg(__p, __p + __ninp, __hm_);
}
- return this->sputc(__c);
+ return this->sputc(traits_type::to_char_type(__c));
}
return traits_type::not_eof(__c);
}
diff --git a/linux-x64/clang/include/c++/v1/stack b/linux-x64/clang/include/c++/v1/stack
index 2b3f8ae..b50ca5c 100644
--- a/linux-x64/clang/include/c++/v1/stack
+++ b/linux-x64/clang/include/c++/v1/stack
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- stack -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/stdbool.h b/linux-x64/clang/include/c++/v1/stdbool.h
index 86a127f..81a7cb3 100644
--- a/linux-x64/clang/include/c++/v1/stdbool.h
+++ b/linux-x64/clang/include/c++/v1/stdbool.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- stdbool.h --------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef _LIBCPP_STDBOOL_H
diff --git a/linux-x64/clang/include/c++/v1/stddef.h b/linux-x64/clang/include/c++/v1/stddef.h
index f65065d..6497dcd 100644
--- a/linux-x64/clang/include/c++/v1/stddef.h
+++ b/linux-x64/clang/include/c++/v1/stddef.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- stddef.h ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/stdexcept b/linux-x64/clang/include/c++/v1/stdexcept
index 3ec7934..6eda619 100644
--- a/linux-x64/clang/include/c++/v1/stdexcept
+++ b/linux-x64/clang/include/c++/v1/stdexcept
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- stdexcept --------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/stdint.h b/linux-x64/clang/include/c++/v1/stdint.h
index 468f6cd..c892298 100644
--- a/linux-x64/clang/include/c++/v1/stdint.h
+++ b/linux-x64/clang/include/c++/v1/stdint.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- stdint.h --------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/stdio.h b/linux-x64/clang/include/c++/v1/stdio.h
index 77a314b..e08e6bc 100644
--- a/linux-x64/clang/include/c++/v1/stdio.h
+++ b/linux-x64/clang/include/c++/v1/stdio.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- stdio.h ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/stdlib.h b/linux-x64/clang/include/c++/v1/stdlib.h
index f11c5e7..2087544 100644
--- a/linux-x64/clang/include/c++/v1/stdlib.h
+++ b/linux-x64/clang/include/c++/v1/stdlib.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- stdlib.h ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/streambuf b/linux-x64/clang/include/c++/v1/streambuf
index 37a6532..48c07d5 100644
--- a/linux-x64/clang/include/c++/v1/streambuf
+++ b/linux-x64/clang/include/c++/v1/streambuf
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------- streambuf ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -138,7 +137,7 @@
virtual ~basic_streambuf();
// 27.6.2.2.1 locales:
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
locale pubimbue(const locale& __loc) {
imbue(__loc);
locale __r = __loc_;
@@ -146,70 +145,70 @@
return __r;
}
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
locale getloc() const { return __loc_; }
// 27.6.2.2.2 buffer and positioning:
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
basic_streambuf* pubsetbuf(char_type* __s, streamsize __n)
{ return setbuf(__s, __n); }
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
pos_type pubseekoff(off_type __off, ios_base::seekdir __way,
ios_base::openmode __which = ios_base::in | ios_base::out)
{ return seekoff(__off, __way, __which); }
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
pos_type pubseekpos(pos_type __sp,
ios_base::openmode __which = ios_base::in | ios_base::out)
{ return seekpos(__sp, __which); }
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
int pubsync() { return sync(); }
// Get and put areas:
// 27.6.2.2.3 Get area:
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
streamsize in_avail() {
if (__ninp_ < __einp_)
return static_cast<streamsize>(__einp_ - __ninp_);
return showmanyc();
}
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
int_type snextc() {
if (sbumpc() == traits_type::eof())
return traits_type::eof();
return sgetc();
}
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
int_type sbumpc() {
if (__ninp_ == __einp_)
return uflow();
return traits_type::to_int_type(*__ninp_++);
}
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
int_type sgetc() {
if (__ninp_ == __einp_)
return underflow();
return traits_type::to_int_type(*__ninp_);
}
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
streamsize sgetn(char_type* __s, streamsize __n)
{ return xsgetn(__s, __n); }
// 27.6.2.2.4 Putback:
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
int_type sputbackc(char_type __c) {
if (__binp_ == __ninp_ || !traits_type::eq(__c, __ninp_[-1]))
return pbackfail(traits_type::to_int_type(__c));
return traits_type::to_int_type(*--__ninp_);
}
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
int_type sungetc() {
if (__binp_ == __ninp_)
return pbackfail();
@@ -217,7 +216,7 @@
}
// 27.6.2.2.5 Put area:
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
int_type sputc(char_type __c) {
if (__nout_ == __eout_)
return overflow(traits_type::to_int_type(__c));
@@ -225,7 +224,7 @@
return traits_type::to_int_type(__c);
}
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
streamsize sputn(const char_type* __s, streamsize __n)
{ return xsputn(__s, __n); }
@@ -240,10 +239,10 @@
_LIBCPP_INLINE_VISIBILITY char_type* gptr() const {return __ninp_;}
_LIBCPP_INLINE_VISIBILITY char_type* egptr() const {return __einp_;}
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
void gbump(int __n) { __ninp_ += __n; }
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
void setg(char_type* __gbeg, char_type* __gnext, char_type* __gend) {
__binp_ = __gbeg;
__ninp_ = __gnext;
@@ -255,13 +254,13 @@
_LIBCPP_INLINE_VISIBILITY char_type* pptr() const {return __nout_;}
_LIBCPP_INLINE_VISIBILITY char_type* epptr() const {return __eout_;}
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
void pbump(int __n) { __nout_ += __n; }
_LIBCPP_INLINE_VISIBILITY
void __pbump(streamsize __n) { __nout_ += __n; }
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
void setp(char_type* __pbeg, char_type* __pend) {
__bout_ = __nout_ = __pbeg;
__eout_ = __pend;
@@ -486,7 +485,7 @@
return traits_type::eof();
}
-#ifndef _LIBCPP_AVAILABILITY_NO_STREAMS_EXTERN_TEMPLATE
+#ifndef _LIBCPP_DO_NOT_ASSUME_STREAMS_EXPLICIT_INSTANTIATION_IN_DYLIB
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_streambuf<char>)
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_streambuf<wchar_t>)
diff --git a/linux-x64/clang/include/c++/v1/string b/linux-x64/clang/include/c++/v1/string
index c79164c..e6d1614 100644
--- a/linux-x64/clang/include/c++/v1/string
+++ b/linux-x64/clang/include/c++/v1/string
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- string -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -437,6 +436,11 @@
basic_istream<charT, traits>&
getline(basic_istream<charT, traits>& is, basic_string<charT, traits, Allocator>& str);
+template<class charT, class traits, class Allocator, class U>
+void erase(basic_string<charT, traits, Allocator>& c, const U& value); // C++20
+template<class charT, class traits, class Allocator, class Predicate>
+void erase_if(basic_string<charT, traits, Allocator>& c, Predicate pred); // C++20
+
typedef basic_string<char> string;
typedef basic_string<wchar_t> wstring;
typedef basic_string<char16_t> u16string;
@@ -580,6 +584,7 @@
operator+(_CharT __x, const basic_string<_CharT,_Traits,_Allocator>& __y);
template<class _CharT, class _Traits, class _Allocator>
+inline _LIBCPP_INLINE_VISIBILITY
basic_string<_CharT, _Traits, _Allocator>
operator+(const basic_string<_CharT, _Traits, _Allocator>& __x, const _CharT* __y);
@@ -807,7 +812,9 @@
basic_string(basic_string&& __str, const allocator_type& __a);
#endif // _LIBCPP_CXX03_LANG
+#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
template <class = typename enable_if<__is_allocator<_Allocator>::value, nullptr_t>::type>
+#endif
_LIBCPP_INLINE_VISIBILITY
basic_string(const _CharT* __s) {
_LIBCPP_ASSERT(__s != nullptr, "basic_string(const char*) detected nullptr");
@@ -817,7 +824,9 @@
# endif
}
+#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
template <class = typename enable_if<__is_allocator<_Allocator>::value, nullptr_t>::type>
+#endif
_LIBCPP_INLINE_VISIBILITY
basic_string(const _CharT* __s, const _Allocator& __a);
@@ -828,7 +837,9 @@
_LIBCPP_INLINE_VISIBILITY
basic_string(size_type __n, _CharT __c);
+#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
template <class = typename enable_if<__is_allocator<_Allocator>::value, nullptr_t>::type>
+#endif
_LIBCPP_INLINE_VISIBILITY
basic_string(size_type __n, _CharT __c, const _Allocator& __a);
@@ -949,7 +960,11 @@
void resize(size_type __n, value_type __c);
_LIBCPP_INLINE_VISIBILITY void resize(size_type __n) {resize(__n, value_type());}
- void reserve(size_type __res_arg = 0);
+ void reserve(size_type __res_arg);
+ _LIBCPP_INLINE_VISIBILITY void __resize_default_init(size_type __n);
+
+ _LIBCPP_INLINE_VISIBILITY
+ void reserve() _NOEXCEPT {reserve(0);}
_LIBCPP_INLINE_VISIBILITY
void shrink_to_fit() _NOEXCEPT {reserve();}
_LIBCPP_INLINE_VISIBILITY
@@ -1003,6 +1018,10 @@
basic_string& append(const value_type* __s, size_type __n);
basic_string& append(const value_type* __s);
basic_string& append(size_type __n, value_type __c);
+
+ _LIBCPP_INLINE_VISIBILITY
+ void __append_default_init(size_type __n);
+
template <class _ForwardIterator>
_LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
basic_string& __append_forward_unsafe(_ForwardIterator, _ForwardIterator);
@@ -1665,7 +1684,7 @@
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
void
basic_string<_CharT, _Traits, _Allocator>::__invalidate_all_iterators()
{
@@ -1675,7 +1694,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
void
basic_string<_CharT, _Traits, _Allocator>::__invalidate_iterators_past(size_type
#if _LIBCPP_DEBUG_LEVEL >= 2
@@ -1705,7 +1724,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>::basic_string()
_NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value)
{
@@ -1716,7 +1735,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(const allocator_type& __a)
#if _LIBCPP_STD_VER <= 14
_NOEXCEPT_(is_nothrow_copy_constructible<allocator_type>::value)
@@ -1781,7 +1800,9 @@
}
template <class _CharT, class _Traits, class _Allocator>
+#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
template <class>
+#endif
basic_string<_CharT, _Traits, _Allocator>::basic_string(const _CharT* __s, const _Allocator& __a)
: __r_(__second_tag(), __a)
{
@@ -1793,7 +1814,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(const _CharT* __s, size_type __n)
{
_LIBCPP_ASSERT(__n == 0 || __s != nullptr, "basic_string(const char*, n) detected nullptr");
@@ -1804,7 +1825,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(const _CharT* __s, size_type __n, const _Allocator& __a)
: __r_(__second_tag(), __a)
{
@@ -1845,7 +1866,7 @@
#ifndef _LIBCPP_CXX03_LANG
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(basic_string&& __str)
#if _LIBCPP_STD_VER <= 14
_NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value)
@@ -1863,7 +1884,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(basic_string&& __str, const allocator_type& __a)
: __r_(__second_tag(), __a)
{
@@ -1908,7 +1929,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(size_type __n, _CharT __c)
{
__init(__n, __c);
@@ -1918,7 +1939,9 @@
}
template <class _CharT, class _Traits, class _Allocator>
+#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
template <class>
+#endif
basic_string<_CharT, _Traits, _Allocator>::basic_string(size_type __n, _CharT __c, const _Allocator& __a)
: __r_(__second_tag(), __a)
{
@@ -1944,7 +1967,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(const basic_string& __str, size_type __pos,
const _Allocator& __a)
: __r_(__second_tag(), __a)
@@ -2055,7 +2078,7 @@
template <class _CharT, class _Traits, class _Allocator>
template<class _InputIterator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(_InputIterator __first, _InputIterator __last)
{
__init(__first, __last);
@@ -2066,7 +2089,7 @@
template <class _CharT, class _Traits, class _Allocator>
template<class _InputIterator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(_InputIterator __first, _InputIterator __last,
const allocator_type& __a)
: __r_(__second_tag(), __a)
@@ -2080,7 +2103,7 @@
#ifndef _LIBCPP_CXX03_LANG
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(
initializer_list<_CharT> __il)
{
@@ -2091,7 +2114,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(
initializer_list<_CharT> __il, const _Allocator& __a)
@@ -2255,7 +2278,7 @@
#ifndef _LIBCPP_CXX03_LANG
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
void
basic_string<_CharT, _Traits, _Allocator>::__move_assign(basic_string& __str, false_type)
_NOEXCEPT_(__alloc_traits::is_always_equal::value)
@@ -2267,7 +2290,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
void
basic_string<_CharT, _Traits, _Allocator>::__move_assign(basic_string& __str, true_type)
#if _LIBCPP_STD_VER > 14
@@ -2283,7 +2306,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::operator=(basic_string&& __str)
_NOEXCEPT_((__noexcept_move_assign_container<_Allocator, __alloc_traits>::value))
@@ -2417,6 +2440,23 @@
}
template <class _CharT, class _Traits, class _Allocator>
+inline void
+basic_string<_CharT, _Traits, _Allocator>::__append_default_init(size_type __n)
+{
+ if (__n)
+ {
+ size_type __cap = capacity();
+ size_type __sz = size();
+ if (__cap - __sz < __n)
+ __grow_by(__cap, __sz + __n - __cap, __sz, __sz, 0);
+ pointer __p = __get_pointer();
+ __sz += __n;
+ __set_size(__sz);
+ traits_type::assign(__p[__sz], value_type());
+ }
+}
+
+template <class _CharT, class _Traits, class _Allocator>
void
basic_string<_CharT, _Traits, _Allocator>::push_back(value_type __c)
{
@@ -2500,7 +2540,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::append(const basic_string& __str)
{
@@ -2677,7 +2717,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::insert(size_type __pos1, const basic_string& __str)
{
@@ -2747,7 +2787,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::iterator
basic_string<_CharT, _Traits, _Allocator>::insert(const_iterator __pos, size_type __n, value_type __c)
{
@@ -2867,7 +2907,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::replace(size_type __pos1, size_type __n1, const basic_string& __str)
{
@@ -2911,7 +2951,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::replace(const_iterator __i1, const_iterator __i2, const basic_string& __str)
{
@@ -2920,7 +2960,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::replace(const_iterator __i1, const_iterator __i2, const value_type* __s, size_type __n)
{
@@ -2928,7 +2968,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::replace(const_iterator __i1, const_iterator __i2, const value_type* __s)
{
@@ -2936,7 +2976,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::replace(const_iterator __i1, const_iterator __i2, size_type __n, value_type __c)
{
@@ -2968,7 +3008,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::iterator
basic_string<_CharT, _Traits, _Allocator>::erase(const_iterator __pos)
{
@@ -2986,7 +3026,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::iterator
basic_string<_CharT, _Traits, _Allocator>::erase(const_iterator __first, const_iterator __last)
{
@@ -3003,7 +3043,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
void
basic_string<_CharT, _Traits, _Allocator>::pop_back()
{
@@ -3025,7 +3065,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
void
basic_string<_CharT, _Traits, _Allocator>::clear() _NOEXCEPT
{
@@ -3043,7 +3083,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
void
basic_string<_CharT, _Traits, _Allocator>::__erase_to_end(size_type __pos)
{
@@ -3072,7 +3112,18 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline void
+basic_string<_CharT, _Traits, _Allocator>::__resize_default_init(size_type __n)
+{
+ size_type __sz = size();
+ if (__n > __sz) {
+ __append_default_init(__n - __sz);
+ } else
+ __erase_to_end(__n);
+}
+
+template <class _CharT, class _Traits, class _Allocator>
+inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::max_size() const _NOEXCEPT
{
@@ -3148,7 +3199,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::const_reference
basic_string<_CharT, _Traits, _Allocator>::operator[](size_type __pos) const _NOEXCEPT
{
@@ -3157,7 +3208,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::reference
basic_string<_CharT, _Traits, _Allocator>::operator[](size_type __pos) _NOEXCEPT
{
@@ -3184,7 +3235,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::reference
basic_string<_CharT, _Traits, _Allocator>::front()
{
@@ -3193,7 +3244,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::const_reference
basic_string<_CharT, _Traits, _Allocator>::front() const
{
@@ -3202,7 +3253,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::reference
basic_string<_CharT, _Traits, _Allocator>::back()
{
@@ -3211,7 +3262,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::const_reference
basic_string<_CharT, _Traits, _Allocator>::back() const
{
@@ -3232,7 +3283,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
basic_string<_CharT, _Traits, _Allocator>
basic_string<_CharT, _Traits, _Allocator>::substr(size_type __pos, size_type __n) const
{
@@ -3240,7 +3291,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
void
basic_string<_CharT, _Traits, _Allocator>::swap(basic_string& __str)
#if _LIBCPP_STD_VER >= 14
@@ -3288,7 +3339,7 @@
}
template<class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find(const basic_string& __str,
size_type __pos) const _NOEXCEPT
@@ -3313,7 +3364,7 @@
}
template<class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find(const value_type* __s,
size_type __pos) const _NOEXCEPT
@@ -3346,7 +3397,7 @@
}
template<class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::rfind(const basic_string& __str,
size_type __pos) const _NOEXCEPT
@@ -3371,7 +3422,7 @@
}
template<class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::rfind(const value_type* __s,
size_type __pos) const _NOEXCEPT
@@ -3404,7 +3455,7 @@
}
template<class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_first_of(const basic_string& __str,
size_type __pos) const _NOEXCEPT
@@ -3429,7 +3480,7 @@
}
template<class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_first_of(const value_type* __s,
size_type __pos) const _NOEXCEPT
@@ -3440,7 +3491,7 @@
}
template<class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_first_of(value_type __c,
size_type __pos) const _NOEXCEPT
@@ -3462,7 +3513,7 @@
}
template<class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_last_of(const basic_string& __str,
size_type __pos) const _NOEXCEPT
@@ -3487,7 +3538,7 @@
}
template<class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_last_of(const value_type* __s,
size_type __pos) const _NOEXCEPT
@@ -3498,7 +3549,7 @@
}
template<class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_last_of(value_type __c,
size_type __pos) const _NOEXCEPT
@@ -3520,7 +3571,7 @@
}
template<class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_first_not_of(const basic_string& __str,
size_type __pos) const _NOEXCEPT
@@ -3545,7 +3596,7 @@
}
template<class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_first_not_of(const value_type* __s,
size_type __pos) const _NOEXCEPT
@@ -3556,7 +3607,7 @@
}
template<class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_first_not_of(value_type __c,
size_type __pos) const _NOEXCEPT
@@ -3579,7 +3630,7 @@
}
template<class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_last_not_of(const basic_string& __str,
size_type __pos) const _NOEXCEPT
@@ -3604,7 +3655,7 @@
}
template<class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_last_not_of(const value_type* __s,
size_type __pos) const _NOEXCEPT
@@ -3615,7 +3666,7 @@
}
template<class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_last_not_of(value_type __c,
size_type __pos) const _NOEXCEPT
@@ -3650,7 +3701,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
int
basic_string<_CharT, _Traits, _Allocator>::compare(const basic_string& __str) const _NOEXCEPT
{
@@ -3696,7 +3747,7 @@
}
template <class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
int
basic_string<_CharT, _Traits, _Allocator>::compare(size_type __pos1,
size_type __n1,
@@ -3754,7 +3805,7 @@
// __invariants
template<class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
bool
basic_string<_CharT, _Traits, _Allocator>::__invariants() const
{
@@ -3772,7 +3823,7 @@
// __clear_and_shrink
template<class _CharT, class _Traits, class _Allocator>
-inline _LIBCPP_INLINE_VISIBILITY
+inline
void
basic_string<_CharT, _Traits, _Allocator>::__clear_and_shrink() _NOEXCEPT
{
@@ -4026,6 +4077,7 @@
}
template<class _CharT, class _Traits, class _Allocator>
+inline
basic_string<_CharT, _Traits, _Allocator>
operator+(const basic_string<_CharT, _Traits, _Allocator>& __lhs, const _CharT* __rhs)
{
@@ -4122,11 +4174,13 @@
__lhs.swap(__rhs);
}
-#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
+#ifndef _LIBCPP_NO_HAS_CHAR8_T
+typedef basic_string<char8_t> u8string;
+#endif
+#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
typedef basic_string<char16_t> u16string;
typedef basic_string<char32_t> u32string;
-
#endif // _LIBCPP_HAS_NO_UNICODE_CHARS
_LIBCPP_FUNC_VIS int stoi (const string& __str, size_t* __idx = 0, int __base = 10);
@@ -4226,6 +4280,18 @@
#endif // _LIBCPP_CXX03_LANG
+#if _LIBCPP_STD_VER > 17
+template<class _CharT, class _Traits, class _Allocator, class _Up>
+inline _LIBCPP_INLINE_VISIBILITY
+void erase(basic_string<_CharT, _Traits, _Allocator>& __str, const _Up& __v)
+{ __str.erase(_VSTD::remove(__str.begin(), __str.end(), __v), __str.end()); }
+
+template<class _CharT, class _Traits, class _Allocator, class _Predicate>
+inline _LIBCPP_INLINE_VISIBILITY
+void erase_if(basic_string<_CharT, _Traits, _Allocator>& __str, _Predicate __pred)
+{ __str.erase(_VSTD::remove_if(__str.begin(), __str.end(), __pred), __str.end()); }
+#endif
+
#if _LIBCPP_DEBUG_LEVEL >= 2
template<class _CharT, class _Traits, class _Allocator>
@@ -4283,6 +4349,14 @@
return basic_string<wchar_t> (__str, __len);
}
+#ifndef _LIBCPP_NO_HAS_CHAR8_T
+ inline _LIBCPP_INLINE_VISIBILITY
+ basic_string<char8_t> operator "" s(const char8_t *__str, size_t __len) _NOEXCEPT
+ {
+ return basic_string<char8_t> (__str, __len);
+ }
+#endif
+
inline _LIBCPP_INLINE_VISIBILITY
basic_string<char16_t> operator "" s( const char16_t *__str, size_t __len )
{
diff --git a/linux-x64/clang/include/c++/v1/string.h b/linux-x64/clang/include/c++/v1/string.h
index a1ce56c..e09251d 100644
--- a/linux-x64/clang/include/c++/v1/string.h
+++ b/linux-x64/clang/include/c++/v1/string.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- string.h ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/string_view b/linux-x64/clang/include/c++/v1/string_view
index 55dce72..79565c2 100644
--- a/linux-x64/clang/include/c++/v1/string_view
+++ b/linux-x64/clang/include/c++/v1/string_view
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------ string_view ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -769,6 +768,9 @@
}
typedef basic_string_view<char> string_view;
+#ifndef _LIBCPP_NO_HAS_CHAR8_T
+typedef basic_string_view<char8_t> u8string_view;
+#endif
typedef basic_string_view<char16_t> u16string_view;
typedef basic_string_view<char32_t> u32string_view;
typedef basic_string_view<wchar_t> wstring_view;
@@ -778,17 +780,12 @@
struct _LIBCPP_TEMPLATE_VIS hash<basic_string_view<_CharT, _Traits> >
: public unary_function<basic_string_view<_CharT, _Traits>, size_t>
{
- size_t operator()(const basic_string_view<_CharT, _Traits> __val) const _NOEXCEPT;
+ _LIBCPP_INLINE_VISIBILITY
+ size_t operator()(const basic_string_view<_CharT, _Traits> __val) const _NOEXCEPT {
+ return __do_string_hash(__val.data(), __val.data() + __val.size());
+ }
};
-template<class _CharT, class _Traits>
-size_t
-hash<basic_string_view<_CharT, _Traits> >::operator()(
- const basic_string_view<_CharT, _Traits> __val) const _NOEXCEPT
-{
- return __do_string_hash(__val.data(), __val.data() + __val.size());
-}
-
#if _LIBCPP_STD_VER > 11
inline namespace literals
@@ -807,6 +804,14 @@
return basic_string_view<wchar_t> (__str, __len);
}
+#ifndef _LIBCPP_NO_HAS_CHAR8_T
+ inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
+ basic_string_view<char8_t> operator "" sv(const char8_t *__str, size_t __len) _NOEXCEPT
+ {
+ return basic_string_view<char8_t> (__str, __len);
+ }
+#endif
+
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
basic_string_view<char16_t> operator "" sv(const char16_t *__str, size_t __len) _NOEXCEPT
{
diff --git a/linux-x64/clang/include/c++/v1/strstream b/linux-x64/clang/include/c++/v1/strstream
index b00b9d8..31999bb 100644
--- a/linux-x64/clang/include/c++/v1/strstream
+++ b/linux-x64/clang/include/c++/v1/strstream
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- strstream --------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/support/android/locale_bionic.h b/linux-x64/clang/include/c++/v1/support/android/locale_bionic.h
index 50fcf5c..5b16071 100644
--- a/linux-x64/clang/include/c++/v1/support/android/locale_bionic.h
+++ b/linux-x64/clang/include/c++/v1/support/android/locale_bionic.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------- support/android/locale_bionic.h ------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/support/fuchsia/xlocale.h b/linux-x64/clang/include/c++/v1/support/fuchsia/xlocale.h
index 1de2fca..b86ce9e 100644
--- a/linux-x64/clang/include/c++/v1/support/fuchsia/xlocale.h
+++ b/linux-x64/clang/include/c++/v1/support/fuchsia/xlocale.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------- support/fuchsia/xlocale.h ------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/support/ibm/limits.h b/linux-x64/clang/include/c++/v1/support/ibm/limits.h
index efdb359..d1c59f0 100644
--- a/linux-x64/clang/include/c++/v1/support/ibm/limits.h
+++ b/linux-x64/clang/include/c++/v1/support/ibm/limits.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------- support/ibm/limits.h ---------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/support/ibm/locale_mgmt_aix.h b/linux-x64/clang/include/c++/v1/support/ibm/locale_mgmt_aix.h
index e3b7a78..e452dc3 100644
--- a/linux-x64/clang/include/c++/v1/support/ibm/locale_mgmt_aix.h
+++ b/linux-x64/clang/include/c++/v1/support/ibm/locale_mgmt_aix.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------- support/ibm/locale_mgmt_aix.h --------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/support/ibm/support.h b/linux-x64/clang/include/c++/v1/support/ibm/support.h
index 0abfa7f..0569cbe 100644
--- a/linux-x64/clang/include/c++/v1/support/ibm/support.h
+++ b/linux-x64/clang/include/c++/v1/support/ibm/support.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===----------------------- support/ibm/support.h ----------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/support/ibm/xlocale.h b/linux-x64/clang/include/c++/v1/support/ibm/xlocale.h
index f39c0ba..9f0522c 100644
--- a/linux-x64/clang/include/c++/v1/support/ibm/xlocale.h
+++ b/linux-x64/clang/include/c++/v1/support/ibm/xlocale.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------- support/ibm/xlocale.h -------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/support/musl/xlocale.h b/linux-x64/clang/include/c++/v1/support/musl/xlocale.h
index 3e31c99..722d13f 100644
--- a/linux-x64/clang/include/c++/v1/support/musl/xlocale.h
+++ b/linux-x64/clang/include/c++/v1/support/musl/xlocale.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------- support/musl/xlocale.h ------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// This adds support for the extended locale functions that are currently
diff --git a/linux-x64/clang/include/c++/v1/support/newlib/xlocale.h b/linux-x64/clang/include/c++/v1/support/newlib/xlocale.h
index 09f9e39..25fa798 100644
--- a/linux-x64/clang/include/c++/v1/support/newlib/xlocale.h
+++ b/linux-x64/clang/include/c++/v1/support/newlib/xlocale.h
@@ -1,9 +1,8 @@
//===----------------------------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/support/solaris/floatingpoint.h b/linux-x64/clang/include/c++/v1/support/solaris/floatingpoint.h
index 999d144..5f1628f 100644
--- a/linux-x64/clang/include/c++/v1/support/solaris/floatingpoint.h
+++ b/linux-x64/clang/include/c++/v1/support/solaris/floatingpoint.h
@@ -1,9 +1,8 @@
//===----------------------------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/support/solaris/wchar.h b/linux-x64/clang/include/c++/v1/support/solaris/wchar.h
index 0e8e660..9dc9ac3 100644
--- a/linux-x64/clang/include/c++/v1/support/solaris/wchar.h
+++ b/linux-x64/clang/include/c++/v1/support/solaris/wchar.h
@@ -1,9 +1,8 @@
//===----------------------------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/support/solaris/xlocale.h b/linux-x64/clang/include/c++/v1/support/solaris/xlocale.h
index e20ef7a..05131f0 100644
--- a/linux-x64/clang/include/c++/v1/support/solaris/xlocale.h
+++ b/linux-x64/clang/include/c++/v1/support/solaris/xlocale.h
@@ -1,9 +1,8 @@
//===----------------------------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/support/win32/limits_msvc_win32.h b/linux-x64/clang/include/c++/v1/support/win32/limits_msvc_win32.h
index 1ab2e0b..7bb8355 100644
--- a/linux-x64/clang/include/c++/v1/support/win32/limits_msvc_win32.h
+++ b/linux-x64/clang/include/c++/v1/support/win32/limits_msvc_win32.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------ support/win32/limits_msvc_win32.h -----------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/support/win32/locale_win32.h b/linux-x64/clang/include/c++/v1/support/win32/locale_win32.h
index c7c6d78..0d03d83 100644
--- a/linux-x64/clang/include/c++/v1/support/win32/locale_win32.h
+++ b/linux-x64/clang/include/c++/v1/support/win32/locale_win32.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------- support/win32/locale_win32.h -------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/support/xlocale/__nop_locale_mgmt.h b/linux-x64/clang/include/c++/v1/support/xlocale/__nop_locale_mgmt.h
index 0d3f23a..f33d389 100644
--- a/linux-x64/clang/include/c++/v1/support/xlocale/__nop_locale_mgmt.h
+++ b/linux-x64/clang/include/c++/v1/support/xlocale/__nop_locale_mgmt.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------ support/xlocale/__nop_locale_mgmt.h -----------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/support/xlocale/__posix_l_fallback.h b/linux-x64/clang/include/c++/v1/support/xlocale/__posix_l_fallback.h
index b9a0939..f3df6c4 100644
--- a/linux-x64/clang/include/c++/v1/support/xlocale/__posix_l_fallback.h
+++ b/linux-x64/clang/include/c++/v1/support/xlocale/__posix_l_fallback.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------- support/xlocale/__posix_l_fallback.h -----------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// These are reimplementations of some extended locale functions ( *_l ) that
diff --git a/linux-x64/clang/include/c++/v1/support/xlocale/__strtonum_fallback.h b/linux-x64/clang/include/c++/v1/support/xlocale/__strtonum_fallback.h
index 50b4db3..df38598 100644
--- a/linux-x64/clang/include/c++/v1/support/xlocale/__strtonum_fallback.h
+++ b/linux-x64/clang/include/c++/v1/support/xlocale/__strtonum_fallback.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------- support/xlocale/__strtonum_fallback.h -----------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// These are reimplementations of some extended locale functions ( *_l ) that
diff --git a/linux-x64/clang/include/c++/v1/system_error b/linux-x64/clang/include/c++/v1/system_error
index 6e2c838..05ef079 100644
--- a/linux-x64/clang/include/c++/v1/system_error
+++ b/linux-x64/clang/include/c++/v1/system_error
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===---------------------------- system_error ----------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/tgmath.h b/linux-x64/clang/include/c++/v1/tgmath.h
index aba8749..2dc1f77 100644
--- a/linux-x64/clang/include/c++/v1/tgmath.h
+++ b/linux-x64/clang/include/c++/v1/tgmath.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- tgmath.h ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/thread b/linux-x64/clang/include/c++/v1/thread
index 0629d70..df06ff7 100644
--- a/linux-x64/clang/include/c++/v1/thread
+++ b/linux-x64/clang/include/c++/v1/thread
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- thread -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -151,7 +150,7 @@
__thread_specific_ptr(const __thread_specific_ptr&);
__thread_specific_ptr& operator=(const __thread_specific_ptr&);
- static void _LIBCPP_TLS_DESTRUCTOR_CC __at_thread_exit(void*);
+ _LIBCPP_HIDDEN static void _LIBCPP_TLS_DESTRUCTOR_CC __at_thread_exit(void*);
public:
typedef _Tp* pointer;
diff --git a/linux-x64/clang/include/c++/v1/tuple b/linux-x64/clang/include/c++/v1/tuple
index fb5428e..f7e7ee1 100644
--- a/linux-x64/clang/include/c++/v1/tuple
+++ b/linux-x64/clang/include/c++/v1/tuple
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- tuple ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -65,7 +64,7 @@
template <class U1, class U2>
tuple& operator=(const pair<U1, U2>&); // iff sizeof...(T) == 2
template <class U1, class U2>
- tuple& operator=(pair<U1, U2>&&); //iffsizeof...(T) == 2
+ tuple& operator=(pair<U1, U2>&&); // iff sizeof...(T) == 2
void swap(tuple&) noexcept(AND(swap(declval<T&>(), declval<T&>())...));
};
@@ -84,8 +83,8 @@
constexpr T make_from_tuple(Tuple&& t); // C++17
// 20.4.1.4, tuple helper classes:
-template <class T> class tuple_size; // undefined
-template <class... T> class tuple_size<tuple<T...>>;
+template <class T> struct tuple_size; // undefined
+template <class... T> struct tuple_size<tuple<T...>>;
template <class T>
inline constexpr size_t tuple_size_v = tuple_size<T>::value; // C++17
template <size_t I, class T> class tuple_element; // undefined
@@ -1078,30 +1077,12 @@
_LIBCPP_INLINE_VAR constexpr __ignore_t<unsigned char> ignore = __ignore_t<unsigned char>();
}
-template <class _Tp>
-struct __make_tuple_return_impl
-{
- typedef _Tp type;
-};
-
-template <class _Tp>
-struct __make_tuple_return_impl<reference_wrapper<_Tp> >
-{
- typedef _Tp& type;
-};
-
-template <class _Tp>
-struct __make_tuple_return
-{
- typedef typename __make_tuple_return_impl<typename decay<_Tp>::type>::type type;
-};
-
template <class... _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
-tuple<typename __make_tuple_return<_Tp>::type...>
+tuple<typename __unwrap_ref_decay<_Tp>::type...>
make_tuple(_Tp&&... __t)
{
- return tuple<typename __make_tuple_return<_Tp>::type...>(_VSTD::forward<_Tp>(__t)...);
+ return tuple<typename __unwrap_ref_decay<_Tp>::type...>(_VSTD::forward<_Tp>(__t)...);
}
template <class... _Tp>
@@ -1139,6 +1120,7 @@
bool
operator==(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
{
+ static_assert (sizeof...(_Tp) == sizeof...(_Up), "Can't compare tuples of different sizes");
return __tuple_equal<sizeof...(_Tp)>()(__x, __y);
}
@@ -1182,6 +1164,7 @@
bool
operator<(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
{
+ static_assert (sizeof...(_Tp) == sizeof...(_Up), "Can't compare tuples of different sizes");
return __tuple_less<sizeof...(_Tp)>()(__x, __y);
}
diff --git a/linux-x64/clang/include/c++/v1/type_traits b/linux-x64/clang/include/c++/v1/type_traits
index 7ff67bf..37b7ca1 100644
--- a/linux-x64/clang/include/c++/v1/type_traits
+++ b/linux-x64/clang/include/c++/v1/type_traits
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------ type_traits ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -709,6 +708,9 @@
template <> struct __libcpp_is_integral<signed char> : public true_type {};
template <> struct __libcpp_is_integral<unsigned char> : public true_type {};
template <> struct __libcpp_is_integral<wchar_t> : public true_type {};
+#ifndef _LIBCPP_NO_HAS_CHAR8_T
+template <> struct __libcpp_is_integral<char8_t> : public true_type {};
+#endif
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
template <> struct __libcpp_is_integral<char16_t> : public true_type {};
template <> struct __libcpp_is_integral<char32_t> : public true_type {};
@@ -738,12 +740,6 @@
// is_floating_point
template <class _Tp> struct __libcpp_is_floating_point : public false_type {};
-#ifdef __clang__
-template <> struct __libcpp_is_floating_point<__fp16> : public true_type {};
-#endif
-#ifdef __FLT16_MANT_DIG__
-template <> struct __libcpp_is_floating_point<_Float16> : public true_type {};
-#endif
template <> struct __libcpp_is_floating_point<float> : public true_type {};
template <> struct __libcpp_is_floating_point<double> : public true_type {};
template <> struct __libcpp_is_floating_point<long double> : public true_type {};
@@ -1655,7 +1651,7 @@
// alignment_of
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS alignment_of
- : public integral_constant<size_t, __alignof__(_Tp)> {};
+ : public integral_constant<size_t, _LIBCPP_ALIGNOF(_Tp)> {};
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
template <class _Tp>
@@ -1685,7 +1681,7 @@
template <class _Tp>
struct __align_type
{
- static const size_t value = alignment_of<_Tp>::value;
+ static const size_t value = _LIBCPP_PREFERRED_ALIGNOF(_Tp);
typedef _Tp type;
};
@@ -1818,8 +1814,8 @@
template <size_t _Len, class _Type0, class ..._Types>
struct aligned_union
{
- static const size_t alignment_value = __static_max<__alignof__(_Type0),
- __alignof__(_Types)...>::value;
+ static const size_t alignment_value = __static_max<_LIBCPP_PREFERRED_ALIGNOF(_Type0),
+ _LIBCPP_PREFERRED_ALIGNOF(_Types)...>::value;
static const size_t __len = __static_max<_Len, sizeof(_Type0),
sizeof(_Types)...>::value;
typedef typename aligned_storage<__len, alignment_value>::type type;
@@ -4364,28 +4360,31 @@
#undef _LIBCPP_INVOKE_RETURN
// __invokable
-
template <class _Ret, class _Fp, class ..._Args>
struct __invokable_r
{
- // FIXME: Check that _Ret, _Fp, and _Args... are all complete types, cv void,
- // or incomplete array types as required by the standard.
- using _Result = decltype(
- _VSTD::__invoke(_VSTD::declval<_Fp>(), _VSTD::declval<_Args>()...));
+ template <class _XFp, class ..._XArgs>
+ static auto __try_call(int) -> decltype(
+ _VSTD::__invoke(_VSTD::declval<_XFp>(), _VSTD::declval<_XArgs>()...));
+ template <class _XFp, class ..._XArgs>
+ static __nat __try_call(...);
- using type =
- typename conditional<
- !is_same<_Result, __nat>::value,
- typename conditional<
- is_void<_Ret>::value,
- true_type,
- is_convertible<_Result, _Ret>
- >::type,
- false_type
- >::type;
- static const bool value = type::value;
+ // FIXME: Check that _Ret, _Fp, and _Args... are all complete types, cv void,
+ // or incomplete array types as required by the standard.
+ using _Result = decltype(__try_call<_Fp, _Args...>(0));
+
+ using type =
+ typename conditional<
+ !is_same<_Result, __nat>::value,
+ typename conditional<
+ is_void<_Ret>::value,
+ true_type,
+ is_convertible<_Result, _Ret>
+ >::type,
+ false_type
+ >::type;
+ static const bool value = type::value;
};
-
template <class _Fp, class ..._Args>
using __invokable = __invokable_r<void, _Fp, _Args...>;
diff --git a/linux-x64/clang/include/c++/v1/typeindex b/linux-x64/clang/include/c++/v1/typeindex
index 0565ca9..bff1e65 100644
--- a/linux-x64/clang/include/c++/v1/typeindex
+++ b/linux-x64/clang/include/c++/v1/typeindex
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- typeindex ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/typeinfo b/linux-x64/clang/include/c++/v1/typeinfo
index 92f1e22..5bcb6b2 100644
--- a/linux-x64/clang/include/c++/v1/typeinfo
+++ b/linux-x64/clang/include/c++/v1/typeinfo
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- typeinfo ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -73,59 +72,31 @@
#include <vcruntime_typeinfo.h>
#else
-#if !defined(_LIBCPP_ABI_MICROSOFT)
-#if defined(_LIBCPP_NONUNIQUE_RTTI_BIT)
-#define _LIBCPP_HAS_NONUNIQUE_TYPEINFO
-#else
-#define _LIBCPP_HAS_UNIQUE_TYPEINFO
-#endif
+#if defined(_LIBCPP_NONUNIQUE_RTTI_BIT) && !defined(_LIBCPP_ABI_MICROSOFT)
+# define _LIBCPP_HAS_NONUNIQUE_TYPEINFO
#endif
namespace std // purposefully not using versioning namespace
{
+#if defined(_LIBCPP_ABI_MICROSOFT)
+
class _LIBCPP_EXCEPTION_ABI type_info
{
type_info& operator=(const type_info&);
type_info(const type_info&);
-#if defined(_LIBCPP_HAS_NONUNIQUE_TYPEINFO)
- _LIBCPP_INLINE_VISIBILITY
- int __compare_nonunique_names(const type_info &__arg) const _NOEXCEPT
- { return __builtin_strcmp(name(), __arg.name()); }
-#endif
-
-#if defined(_LIBCPP_ABI_MICROSOFT)
mutable struct {
const char *__undecorated_name;
const char __decorated_name[1];
} __data;
int __compare(const type_info &__rhs) const _NOEXCEPT;
-#endif // _LIBCPP_ABI_MICROSOFT
-
-protected:
-#if !defined(_LIBCPP_ABI_MICROSOFT)
-#if defined(_LIBCPP_HAS_NONUNIQUE_TYPEINFO)
- // A const char* with the non-unique RTTI bit possibly set.
- uintptr_t __type_name;
-
- _LIBCPP_INLINE_VISIBILITY
- explicit type_info(const char* __n)
- : __type_name(reinterpret_cast<uintptr_t>(__n)) {}
-#else
- const char *__type_name;
-
- _LIBCPP_INLINE_VISIBILITY
- explicit type_info(const char* __n) : __type_name(__n) {}
-#endif
-#endif // ! _LIBCPP_ABI_MICROSOFT
public:
_LIBCPP_AVAILABILITY_TYPEINFO_VTABLE
virtual ~type_info();
-#if defined(_LIBCPP_ABI_MICROSOFT)
const char *name() const _NOEXCEPT;
_LIBCPP_INLINE_VISIBILITY
@@ -139,8 +110,48 @@
bool operator==(const type_info& __arg) const _NOEXCEPT {
return __compare(__arg) == 0;
}
-#else
-#if defined(_LIBCPP_HAS_NONUNIQUE_TYPEINFO)
+
+ _LIBCPP_INLINE_VISIBILITY
+ bool operator!=(const type_info& __arg) const _NOEXCEPT
+ { return !operator==(__arg); }
+};
+
+#elif defined(_LIBCPP_HAS_NONUNIQUE_TYPEINFO)
+
+// This implementation of type_info does not assume always a unique copy of
+// the RTTI for a given type inside a program. It packs the pointer to the
+// type name into a uintptr_t and reserves the high bit of that pointer (which
+// is assumed to be free for use under the ABI in use) to represent whether
+// that specific copy of the RTTI can be assumed unique inside the program.
+// To implement equality-comparison of type_infos, we check whether BOTH
+// type_infos are guaranteed unique, and if so, we simply compare the addresses
+// of their type names instead of doing a deep string comparison, which is
+// faster. If at least one of the type_infos can't guarantee uniqueness, we
+// have no choice but to fall back to a deep string comparison.
+//
+// Note that the compiler is the one setting (or unsetting) the high bit of
+// the pointer when it constructs the type_info, depending on whether it can
+// guarantee uniqueness for that specific type_info.
+class _LIBCPP_EXCEPTION_ABI type_info
+{
+ type_info& operator=(const type_info&);
+ type_info(const type_info&);
+
+ _LIBCPP_INLINE_VISIBILITY
+ int __compare_nonunique_names(const type_info &__arg) const _NOEXCEPT
+ { return __builtin_strcmp(name(), __arg.name()); }
+
+protected:
+ uintptr_t __type_name;
+
+ _LIBCPP_INLINE_VISIBILITY
+ explicit type_info(const char* __n)
+ : __type_name(reinterpret_cast<uintptr_t>(__n)) {}
+
+public:
+ _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE
+ virtual ~type_info();
+
_LIBCPP_INLINE_VISIBILITY
const char* name() const _NOEXCEPT
{
@@ -179,7 +190,35 @@
return false;
return __compare_nonunique_names(__arg) == 0;
}
-#else
+
+ _LIBCPP_INLINE_VISIBILITY
+ bool operator!=(const type_info& __arg) const _NOEXCEPT
+ { return !operator==(__arg); }
+};
+
+#else // !_LIBCPP_ABI_MICROSOFT && !_LIBCPP_HAS_NONUNIQUE_TYPEINFO
+
+// This implementation of type_info assumes a unique copy of the RTTI for a
+// given type inside a program. This is a valid assumption when abiding to
+// Itanium ABI (http://itanium-cxx-abi.github.io/cxx-abi/abi.html#vtable-components).
+// Under this assumption, we can always compare the addresses of the type names
+// to implement equality-comparison of type_infos instead of having to perform
+// a deep string comparison.
+class _LIBCPP_EXCEPTION_ABI type_info
+{
+ type_info& operator=(const type_info&);
+ type_info(const type_info&);
+
+protected:
+ const char *__type_name;
+
+ _LIBCPP_INLINE_VISIBILITY
+ explicit type_info(const char* __n) : __type_name(__n) {}
+
+public:
+ _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE
+ virtual ~type_info();
+
_LIBCPP_INLINE_VISIBILITY
const char* name() const _NOEXCEPT
{ return __type_name; }
@@ -195,14 +234,14 @@
_LIBCPP_INLINE_VISIBILITY
bool operator==(const type_info& __arg) const _NOEXCEPT
{ return __type_name == __arg.__type_name; }
-#endif
-#endif // _LIBCPP_ABI_MICROSOFT
_LIBCPP_INLINE_VISIBILITY
bool operator!=(const type_info& __arg) const _NOEXCEPT
{ return !operator==(__arg); }
};
+#endif
+
class _LIBCPP_EXCEPTION_ABI bad_cast
: public exception
{
diff --git a/linux-x64/clang/include/c++/v1/unordered_map b/linux-x64/clang/include/c++/v1/unordered_map
index fc3cfb6..7ae9805 100644
--- a/linux-x64/clang/include/c++/v1/unordered_map
+++ b/linux-x64/clang/include/c++/v1/unordered_map
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- unordered_map -----------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -153,6 +152,15 @@
iterator erase(const_iterator first, const_iterator last);
void clear() noexcept;
+ template<class H2, class P2>
+ void merge(unordered_map<Key, T, H2, P2, Allocator>& source); // C++17
+ template<class H2, class P2>
+ void merge(unordered_map<Key, T, H2, P2, Allocator>&& source); // C++17
+ template<class H2, class P2>
+ void merge(unordered_multimap<Key, T, H2, P2, Allocator>& source); // C++17
+ template<class H2, class P2>
+ void merge(unordered_multimap<Key, T, H2, P2, Allocator>&& source); // C++17
+
void swap(unordered_map&)
noexcept(
(!allocator_type::propagate_on_container_swap::value ||
@@ -325,6 +333,15 @@
iterator erase(const_iterator first, const_iterator last);
void clear() noexcept;
+ template<class H2, class P2>
+ void merge(unordered_multimap<Key, T, H2, P2, Allocator>& source); // C++17
+ template<class H2, class P2>
+ void merge(unordered_multimap<Key, T, H2, P2, Allocator>&& source); // C++17
+ template<class H2, class P2>
+ void merge(unordered_map<Key, T, H2, P2, Allocator>& source); // C++17
+ template<class H2, class P2>
+ void merge(unordered_map<Key, T, H2, P2, Allocator>&& source); // C++17
+
void swap(unordered_multimap&)
noexcept(
(!allocator_type::propagate_on_container_swap::value ||
@@ -366,6 +383,12 @@
unordered_multimap<Key, T, Hash, Pred, Alloc>& y)
noexcept(noexcept(x.swap(y)));
+template <class K, class T, class H, class P, class A, class Predicate>
+ void erase_if(unordered_set<K, T, H, P, A>& c, Predicate pred); // C++20
+
+template <class K, class T, class H, class P, class A, class Predicate>
+ void erase_if(unordered_multiset<K, T, H, P, A>& c, Predicate pred); // C++20
+
template <class Key, class T, class Hash, class Pred, class Alloc>
bool
operator==(const unordered_multimap<Key, T, Hash, Pred, Alloc>& x,
@@ -396,7 +419,8 @@
_LIBCPP_BEGIN_NAMESPACE_STD
-template <class _Key, class _Cp, class _Hash, bool _IsEmpty>
+template <class _Key, class _Cp, class _Hash,
+ bool = is_empty<_Hash>::value && !__libcpp_is_final<_Hash>::value>
class __unordered_map_hasher
: private _Hash
{
@@ -464,7 +488,8 @@
__x.swap(__y);
}
-template <class _Key, class _Cp, class _Pred, bool _IsEmpty>
+template <class _Key, class _Cp, class _Pred,
+ bool = is_empty<_Pred>::value && !__libcpp_is_final<_Pred>::value>
class __unordered_map_equal
: private _Pred
{
@@ -808,6 +833,9 @@
template <class> friend class _LIBCPP_TEMPLATE_VIS __hash_const_local_iterator;
};
+template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
+class unordered_multimap;
+
template <class _Key, class _Tp, class _Hash = hash<_Key>, class _Pred = equal_to<_Key>,
class _Alloc = allocator<pair<const _Key, _Tp> > >
class _LIBCPP_TEMPLATE_VIS unordered_map
@@ -824,6 +852,7 @@
typedef const value_type& const_reference;
static_assert((is_same<value_type, typename allocator_type::value_type>::value),
"Invalid allocator::value_type");
+ static_assert(sizeof(__diagnose_unordered_container_requirements<_Key, _Hash, _Pred>(0)), "");
private:
typedef __hash_value_type<key_type, mapped_type> __value_type;
@@ -865,6 +894,11 @@
typedef __insert_return_type<iterator, node_type> insert_return_type;
#endif
+ template <class _Key2, class _Tp2, class _Hash2, class _Pred2, class _Alloc2>
+ friend class _LIBCPP_TEMPLATE_VIS unordered_map;
+ template <class _Key2, class _Tp2, class _Hash2, class _Pred2, class _Alloc2>
+ friend class _LIBCPP_TEMPLATE_VIS unordered_multimap;
+
_LIBCPP_INLINE_VISIBILITY
unordered_map()
_NOEXCEPT_(is_nothrow_default_constructible<__table>::value)
@@ -1188,6 +1222,39 @@
return __table_.template __node_handle_extract<node_type>(
__it.__i_);
}
+
+ template <class _H2, class _P2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(unordered_map<key_type, mapped_type, _H2, _P2, allocator_type>& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ return __table_.__node_handle_merge_unique(__source.__table_);
+ }
+ template <class _H2, class _P2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(unordered_map<key_type, mapped_type, _H2, _P2, allocator_type>&& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ return __table_.__node_handle_merge_unique(__source.__table_);
+ }
+ template <class _H2, class _P2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(unordered_multimap<key_type, mapped_type, _H2, _P2, allocator_type>& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ return __table_.__node_handle_merge_unique(__source.__table_);
+ }
+ template <class _H2, class _P2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(unordered_multimap<key_type, mapped_type, _H2, _P2, allocator_type>&& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ return __table_.__node_handle_merge_unique(__source.__table_);
+ }
#endif
_LIBCPP_INLINE_VISIBILITY
@@ -1535,10 +1602,8 @@
unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::at(const key_type& __k)
{
iterator __i = find(__k);
-#ifndef _LIBCPP_NO_EXCEPTIONS
if (__i == end())
- throw out_of_range("unordered_map::at: key not found");
-#endif // _LIBCPP_NO_EXCEPTIONS
+ __throw_out_of_range("unordered_map::at: key not found");
return __i->second;
}
@@ -1547,10 +1612,8 @@
unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::at(const key_type& __k) const
{
const_iterator __i = find(__k);
-#ifndef _LIBCPP_NO_EXCEPTIONS
if (__i == end())
- throw out_of_range("unordered_map::at: key not found");
-#endif // _LIBCPP_NO_EXCEPTIONS
+ __throw_out_of_range("unordered_map::at: key not found");
return __i->second;
}
@@ -1564,6 +1627,13 @@
__x.swap(__y);
}
+#if _LIBCPP_STD_VER > 17
+template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc, class _Predicate>
+inline _LIBCPP_INLINE_VISIBILITY
+void erase_if(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __c, _Predicate __pred)
+{ __libcpp_erase_if_container(__c, __pred); }
+#endif
+
template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
bool
operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
@@ -1608,6 +1678,7 @@
typedef const value_type& const_reference;
static_assert((is_same<value_type, typename allocator_type::value_type>::value),
"Invalid allocator::value_type");
+ static_assert(sizeof(__diagnose_unordered_container_requirements<_Key, _Hash, _Pred>(0)), "");
private:
typedef __hash_value_type<key_type, mapped_type> __value_type;
@@ -1646,6 +1717,11 @@
typedef __map_node_handle<__node, allocator_type> node_type;
#endif
+ template <class _Key2, class _Tp2, class _Hash2, class _Pred2, class _Alloc2>
+ friend class _LIBCPP_TEMPLATE_VIS unordered_map;
+ template <class _Key2, class _Tp2, class _Hash2, class _Pred2, class _Alloc2>
+ friend class _LIBCPP_TEMPLATE_VIS unordered_multimap;
+
_LIBCPP_INLINE_VISIBILITY
unordered_multimap()
_NOEXCEPT_(is_nothrow_default_constructible<__table>::value)
@@ -1847,6 +1923,39 @@
return __table_.template __node_handle_extract<node_type>(
__it.__i_);
}
+
+ template <class _H2, class _P2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(unordered_multimap<key_type, mapped_type, _H2, _P2, allocator_type>& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ return __table_.__node_handle_merge_multi(__source.__table_);
+ }
+ template <class _H2, class _P2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(unordered_multimap<key_type, mapped_type, _H2, _P2, allocator_type>&& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ return __table_.__node_handle_merge_multi(__source.__table_);
+ }
+ template <class _H2, class _P2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(unordered_map<key_type, mapped_type, _H2, _P2, allocator_type>& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ return __table_.__node_handle_merge_multi(__source.__table_);
+ }
+ template <class _H2, class _P2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(unordered_map<key_type, mapped_type, _H2, _P2, allocator_type>&& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ return __table_.__node_handle_merge_multi(__source.__table_);
+ }
#endif
_LIBCPP_INLINE_VISIBILITY
@@ -2142,6 +2251,13 @@
__x.swap(__y);
}
+#if _LIBCPP_STD_VER > 17
+template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc, class _Predicate>
+inline _LIBCPP_INLINE_VISIBILITY
+void erase_if(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __c, _Predicate __pred)
+{ __libcpp_erase_if_container(__c, __pred); }
+#endif
+
template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
bool
operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
diff --git a/linux-x64/clang/include/c++/v1/unordered_set b/linux-x64/clang/include/c++/v1/unordered_set
index a219fa6..4cfaa86 100644
--- a/linux-x64/clang/include/c++/v1/unordered_set
+++ b/linux-x64/clang/include/c++/v1/unordered_set
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- unordered_set -----------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -127,6 +126,15 @@
iterator erase(const_iterator first, const_iterator last);
void clear() noexcept;
+ template<class H2, class P2>
+ void merge(unordered_set<Key, H2, P2, Allocator>& source); // C++17
+ template<class H2, class P2>
+ void merge(unordered_set<Key, H2, P2, Allocator>&& source); // C++17
+ template<class H2, class P2>
+ void merge(unordered_multiset<Key, H2, P2, Allocator>& source); // C++17
+ template<class H2, class P2>
+ void merge(unordered_multiset<Key, H2, P2, Allocator>&& source); // C++17
+
void swap(unordered_set&)
noexcept(allocator_traits<Allocator>::is_always_equal::value &&
noexcept(swap(declval<hasher&>(), declval<hasher&>())) &&
@@ -282,6 +290,15 @@
iterator erase(const_iterator first, const_iterator last);
void clear() noexcept;
+ template<class H2, class P2>
+ void merge(unordered_multiset<Key, H2, P2, Allocator>& source); // C++17
+ template<class H2, class P2>
+ void merge(unordered_multiset<Key, H2, P2, Allocator>&& source); // C++17
+ template<class H2, class P2>
+ void merge(unordered_set<Key, H2, P2, Allocator>& source); // C++17
+ template<class H2, class P2>
+ void merge(unordered_set<Key, H2, P2, Allocator>&& source); // C++17
+
void swap(unordered_multiset&)
noexcept(allocator_traits<Allocator>::is_always_equal::value &&
noexcept(swap(declval<hasher&>(), declval<hasher&>())) &&
@@ -321,6 +338,13 @@
unordered_multiset<Value, Hash, Pred, Alloc>& y)
noexcept(noexcept(x.swap(y)));
+template <class K, class T, class H, class P, class A, class Predicate>
+ void erase_if(unordered_set<K, T, H, P, A>& c, Predicate pred); // C++20
+
+template <class K, class T, class H, class P, class A, class Predicate>
+ void erase_if(unordered_multiset<K, T, H, P, A>& c, Predicate pred); // C++20
+
+
template <class Value, class Hash, class Pred, class Alloc>
bool
operator==(const unordered_multiset<Value, Hash, Pred, Alloc>& x,
@@ -348,6 +372,9 @@
_LIBCPP_BEGIN_NAMESPACE_STD
+template <class _Value, class _Hash, class _Pred, class _Alloc>
+class unordered_multiset;
+
template <class _Value, class _Hash = hash<_Value>, class _Pred = equal_to<_Value>,
class _Alloc = allocator<_Value> >
class _LIBCPP_TEMPLATE_VIS unordered_set
@@ -363,6 +390,7 @@
typedef const value_type& const_reference;
static_assert((is_same<value_type, typename allocator_type::value_type>::value),
"Invalid allocator::value_type");
+ static_assert(sizeof(__diagnose_unordered_container_requirements<_Value, _Hash, _Pred>(0)), "");
private:
typedef __hash_table<value_type, hasher, key_equal, allocator_type> __table;
@@ -385,6 +413,11 @@
typedef __insert_return_type<iterator, node_type> insert_return_type;
#endif
+ template <class _Value2, class _Hash2, class _Pred2, class _Alloc2>
+ friend class _LIBCPP_TEMPLATE_VIS unordered_set;
+ template <class _Value2, class _Hash2, class _Pred2, class _Alloc2>
+ friend class _LIBCPP_TEMPLATE_VIS unordered_multiset;
+
_LIBCPP_INLINE_VISIBILITY
unordered_set()
_NOEXCEPT_(is_nothrow_default_constructible<__table>::value)
@@ -590,6 +623,39 @@
{
return __table_.template __node_handle_extract<node_type>(__it);
}
+
+ template<class _H2, class _P2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(unordered_set<key_type, _H2, _P2, allocator_type>& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ __table_.__node_handle_merge_unique(__source.__table_);
+ }
+ template<class _H2, class _P2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(unordered_set<key_type, _H2, _P2, allocator_type>&& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ __table_.__node_handle_merge_unique(__source.__table_);
+ }
+ template<class _H2, class _P2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(unordered_multiset<key_type, _H2, _P2, allocator_type>& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ __table_.__node_handle_merge_unique(__source.__table_);
+ }
+ template<class _H2, class _P2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(unordered_multiset<key_type, _H2, _P2, allocator_type>&& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ __table_.__node_handle_merge_unique(__source.__table_);
+ }
#endif
_LIBCPP_INLINE_VISIBILITY
@@ -874,6 +940,13 @@
__x.swap(__y);
}
+#if _LIBCPP_STD_VER > 17
+template <class _Value, class _Hash, class _Pred, class _Alloc, class _Predicate>
+inline _LIBCPP_INLINE_VISIBILITY
+void erase_if(unordered_set<_Value, _Hash, _Pred, _Alloc>& __c, _Predicate __pred)
+{ __libcpp_erase_if_container(__c, __pred); }
+#endif
+
template <class _Value, class _Hash, class _Pred, class _Alloc>
bool
operator==(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x,
@@ -917,6 +990,7 @@
typedef const value_type& const_reference;
static_assert((is_same<value_type, typename allocator_type::value_type>::value),
"Invalid allocator::value_type");
+ static_assert(sizeof(__diagnose_unordered_container_requirements<_Value, _Hash, _Pred>(0)), "");
private:
typedef __hash_table<value_type, hasher, key_equal, allocator_type> __table;
@@ -938,6 +1012,11 @@
typedef __set_node_handle<typename __table::__node, allocator_type> node_type;
#endif
+ template <class _Value2, class _Hash2, class _Pred2, class _Alloc2>
+ friend class _LIBCPP_TEMPLATE_VIS unordered_set;
+ template <class _Value2, class _Hash2, class _Pred2, class _Alloc2>
+ friend class _LIBCPP_TEMPLATE_VIS unordered_multiset;
+
_LIBCPP_INLINE_VISIBILITY
unordered_multiset()
_NOEXCEPT_(is_nothrow_default_constructible<__table>::value)
@@ -1102,6 +1181,39 @@
{
return __table_.template __node_handle_extract<node_type>(__key);
}
+
+ template <class _H2, class _P2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(unordered_multiset<key_type, _H2, _P2, allocator_type>& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ return __table_.__node_handle_merge_multi(__source.__table_);
+ }
+ template <class _H2, class _P2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(unordered_multiset<key_type, _H2, _P2, allocator_type>&& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ return __table_.__node_handle_merge_multi(__source.__table_);
+ }
+ template <class _H2, class _P2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(unordered_set<key_type, _H2, _P2, allocator_type>& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ return __table_.__node_handle_merge_multi(__source.__table_);
+ }
+ template <class _H2, class _P2>
+ _LIBCPP_INLINE_VISIBILITY
+ void merge(unordered_set<key_type, _H2, _P2, allocator_type>&& __source)
+ {
+ _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
+ "merging container with incompatible allocator");
+ return __table_.__node_handle_merge_multi(__source.__table_);
+ }
#endif
_LIBCPP_INLINE_VISIBILITY
@@ -1398,6 +1510,13 @@
__x.swap(__y);
}
+#if _LIBCPP_STD_VER > 17
+template <class _Value, class _Hash, class _Pred, class _Alloc, class _Predicate>
+inline _LIBCPP_INLINE_VISIBILITY
+void erase_if(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __c, _Predicate __pred)
+{ __libcpp_erase_if_container(__c, __pred); }
+#endif
+
template <class _Value, class _Hash, class _Pred, class _Alloc>
bool
operator==(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x,
diff --git a/linux-x64/clang/include/c++/v1/utility b/linux-x64/clang/include/c++/v1/utility
index 5388585..770d160 100644
--- a/linux-x64/clang/include/c++/v1/utility
+++ b/linux-x64/clang/include/c++/v1/utility
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- utility -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -103,7 +102,7 @@
struct piecewise_construct_t { };
inline constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t();
-template <class T> class tuple_size;
+template <class T> struct tuple_size;
template <size_t I, class T> class tuple_element;
template <class T1, class T2> struct tuple_size<pair<T1, T2> >;
@@ -297,12 +296,13 @@
struct _LIBCPP_TEMPLATE_VIS piecewise_construct_t { };
#if defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_LIBRARY)
-extern const piecewise_construct_t piecewise_construct;// = piecewise_construct_t();
+extern _LIBCPP_EXPORTED_FROM_ABI const piecewise_construct_t piecewise_construct;// = piecewise_construct_t();
#else
/* _LIBCPP_INLINE_VAR */ constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t();
#endif
#if defined(_LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR)
+template <class, class>
struct __non_trivially_copyable_base {
_LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
__non_trivially_copyable_base() _NOEXCEPT {}
@@ -314,7 +314,7 @@
template <class _T1, class _T2>
struct _LIBCPP_TEMPLATE_VIS pair
#if defined(_LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR)
-: private __non_trivially_copyable_base
+: private __non_trivially_copyable_base<_T1, _T2>
#endif
{
typedef _T1 first_type;
@@ -409,13 +409,17 @@
_CheckArgsDep<_Dummy>::template __enable_default<_T1, _T2>()
> = false>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
- pair() : first(), second() {}
+ pair() _NOEXCEPT_(is_nothrow_default_constructible<first_type>::value &&
+ is_nothrow_default_constructible<second_type>::value)
+ : first(), second() {}
template <bool _Dummy = true, _EnableB<
_CheckArgsDep<_Dummy>::template __enable_explicit<_T1 const&, _T2 const&>()
> = false>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
explicit pair(_T1 const& __t1, _T2 const& __t2)
+ _NOEXCEPT_(is_nothrow_copy_constructible<first_type>::value &&
+ is_nothrow_copy_constructible<second_type>::value)
: first(__t1), second(__t2) {}
template<bool _Dummy = true, _EnableB<
@@ -423,6 +427,8 @@
> = false>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
pair(_T1 const& __t1, _T2 const& __t2)
+ _NOEXCEPT_(is_nothrow_copy_constructible<first_type>::value &&
+ is_nothrow_copy_constructible<second_type>::value)
: first(__t1), second(__t2) {}
template<class _U1, class _U2, _EnableB<
@@ -430,6 +436,8 @@
> = false>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
explicit pair(_U1&& __u1, _U2&& __u2)
+ _NOEXCEPT_((is_nothrow_constructible<first_type, _U1>::value &&
+ is_nothrow_constructible<second_type, _U2>::value))
: first(_VSTD::forward<_U1>(__u1)), second(_VSTD::forward<_U2>(__u2)) {}
template<class _U1, class _U2, _EnableB<
@@ -437,6 +445,8 @@
> = false>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
pair(_U1&& __u1, _U2&& __u2)
+ _NOEXCEPT_((is_nothrow_constructible<first_type, _U1>::value &&
+ is_nothrow_constructible<second_type, _U2>::value))
: first(_VSTD::forward<_U1>(__u1)), second(_VSTD::forward<_U2>(__u2)) {}
template<class _U1, class _U2, _EnableB<
@@ -444,6 +454,8 @@
> = false>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
explicit pair(pair<_U1, _U2> const& __p)
+ _NOEXCEPT_((is_nothrow_constructible<first_type, _U1 const&>::value &&
+ is_nothrow_constructible<second_type, _U2 const&>::value))
: first(__p.first), second(__p.second) {}
template<class _U1, class _U2, _EnableB<
@@ -451,6 +463,8 @@
> = false>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
pair(pair<_U1, _U2> const& __p)
+ _NOEXCEPT_((is_nothrow_constructible<first_type, _U1 const&>::value &&
+ is_nothrow_constructible<second_type, _U2 const&>::value))
: first(__p.first), second(__p.second) {}
template<class _U1, class _U2, _EnableB<
@@ -458,6 +472,8 @@
> = false>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
explicit pair(pair<_U1, _U2>&&__p)
+ _NOEXCEPT_((is_nothrow_constructible<first_type, _U1&&>::value &&
+ is_nothrow_constructible<second_type, _U2&&>::value))
: first(_VSTD::forward<_U1>(__p.first)), second(_VSTD::forward<_U2>(__p.second)) {}
template<class _U1, class _U2, _EnableB<
@@ -465,6 +481,8 @@
> = false>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
pair(pair<_U1, _U2>&& __p)
+ _NOEXCEPT_((is_nothrow_constructible<first_type, _U1&&>::value &&
+ is_nothrow_constructible<second_type, _U2&&>::value))
: first(_VSTD::forward<_U1>(__p.first)), second(_VSTD::forward<_U2>(__p.second)) {}
template<class _Tuple, _EnableB<
@@ -487,6 +505,8 @@
_LIBCPP_INLINE_VISIBILITY
pair(piecewise_construct_t __pc,
tuple<_Args1...> __first_args, tuple<_Args2...> __second_args)
+ _NOEXCEPT_((is_nothrow_constructible<first_type, _Args1...>::value &&
+ is_nothrow_constructible<second_type, _Args2...>::value))
: pair(__pc, __first_args, __second_args,
typename __make_tuple_indices<sizeof...(_Args1)>::type(),
typename __make_tuple_indices<sizeof...(_Args2) >::type()) {}
@@ -616,32 +636,37 @@
__x.swap(__y);
}
+template <class _Tp>
+struct __unwrap_reference { typedef _Tp type; };
+
+template <class _Tp>
+struct __unwrap_reference<reference_wrapper<_Tp> > { typedef _Tp& type; };
+
+#if _LIBCPP_STD_VER > 17
+template <class _Tp>
+struct unwrap_reference : __unwrap_reference<_Tp> { };
+
+template <class _Tp>
+struct unwrap_ref_decay : unwrap_reference<typename decay<_Tp>::type> { };
+#endif // > C++17
+
+template <class _Tp>
+struct __unwrap_ref_decay
+#if _LIBCPP_STD_VER > 17
+ : unwrap_ref_decay<_Tp>
+#else
+ : __unwrap_reference<typename decay<_Tp>::type>
+#endif
+{ };
+
#ifndef _LIBCPP_CXX03_LANG
-template <class _Tp>
-struct __make_pair_return_impl
-{
- typedef _Tp type;
-};
-
-template <class _Tp>
-struct __make_pair_return_impl<reference_wrapper<_Tp>>
-{
- typedef _Tp& type;
-};
-
-template <class _Tp>
-struct __make_pair_return
-{
- typedef typename __make_pair_return_impl<typename decay<_Tp>::type>::type type;
-};
-
template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
-pair<typename __make_pair_return<_T1>::type, typename __make_pair_return<_T2>::type>
+pair<typename __unwrap_ref_decay<_T1>::type, typename __unwrap_ref_decay<_T2>::type>
make_pair(_T1&& __t1, _T2&& __t2)
{
- return pair<typename __make_pair_return<_T1>::type, typename __make_pair_return<_T2>::type>
+ return pair<typename __unwrap_ref_decay<_T1>::type, typename __unwrap_ref_decay<_T2>::type>
(_VSTD::forward<_T1>(__t1), _VSTD::forward<_T2>(__t2));
}
@@ -658,7 +683,7 @@
#endif // _LIBCPP_CXX03_LANG
template <class _T1, class _T2>
- class _LIBCPP_TEMPLATE_VIS tuple_size<pair<_T1, _T2> >
+ struct _LIBCPP_TEMPLATE_VIS tuple_size<pair<_T1, _T2> >
: public integral_constant<size_t, 2> {};
template <size_t _Ip, class _T1, class _T2>
@@ -989,8 +1014,10 @@
{
case 3:
__h ^= __data[2] << 16;
+ _LIBCPP_FALLTHROUGH();
case 2:
__h ^= __data[1] << 8;
+ _LIBCPP_FALLTHROUGH();
case 1:
__h ^= __data[0];
__h *= __m;
diff --git a/linux-x64/clang/include/c++/v1/valarray b/linux-x64/clang/include/c++/v1/valarray
index 8d3892a..c9ca08c 100644
--- a/linux-x64/clang/include/c++/v1/valarray
+++ b/linux-x64/clang/include/c++/v1/valarray
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===-------------------------- valarray ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -803,7 +802,7 @@
// construct/destroy:
_LIBCPP_INLINE_VISIBILITY
valarray() : __begin_(0), __end_(0) {}
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
explicit valarray(size_t __n);
_LIBCPP_INLINE_VISIBILITY
valarray(const value_type& __x, size_t __n);
@@ -818,7 +817,7 @@
valarray(const gslice_array<value_type>& __ga);
valarray(const mask_array<value_type>& __ma);
valarray(const indirect_array<value_type>& __ia);
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
~valarray();
// assignment:
@@ -1054,7 +1053,8 @@
const _Up*
end(const valarray<_Up>& __v);
- void __clear();
+ _LIBCPP_INLINE_VISIBILITY
+ void __clear(size_t __capacity);
valarray& __assign_range(const value_type* __f, const value_type* __l);
};
@@ -2739,7 +2739,7 @@
__r.__begin_ =
__r.__end_ =
static_cast<result_type*>(
- _VSTD::__libcpp_allocate(__n * sizeof(result_type), __alignof(result_type)));
+ _VSTD::__libcpp_allocate(__n * sizeof(result_type), _LIBCPP_ALIGNOF(result_type)));
for (size_t __i = 0; __i != __n; ++__r.__end_, ++__i)
::new (__r.__end_) result_type(__expr_[__i]);
}
@@ -2757,18 +2757,18 @@
if (__n)
{
__begin_ = __end_ = static_cast<value_type*>(
- _VSTD::__libcpp_allocate(__n * sizeof(value_type), __alignof(value_type)));
+ _VSTD::__libcpp_allocate(__n * sizeof(value_type), _LIBCPP_ALIGNOF(value_type)));
#ifndef _LIBCPP_NO_EXCEPTIONS
try
{
#endif // _LIBCPP_NO_EXCEPTIONS
- for (; __n; --__n, ++__end_)
+ for (size_t __n_left = __n; __n_left; --__n_left, ++__end_)
::new (__end_) value_type();
#ifndef _LIBCPP_NO_EXCEPTIONS
}
catch (...)
{
- __clear();
+ __clear(__n);
throw;
}
#endif // _LIBCPP_NO_EXCEPTIONS
@@ -2792,18 +2792,18 @@
if (__n)
{
__begin_ = __end_ = static_cast<value_type*>(
- _VSTD::__libcpp_allocate(__n * sizeof(value_type), __alignof(value_type)));
+ _VSTD::__libcpp_allocate(__n * sizeof(value_type), _LIBCPP_ALIGNOF(value_type)));
#ifndef _LIBCPP_NO_EXCEPTIONS
try
{
#endif // _LIBCPP_NO_EXCEPTIONS
- for (; __n; ++__end_, ++__p, --__n)
+ for (size_t __n_left = __n; __n_left; ++__end_, ++__p, --__n_left)
::new (__end_) value_type(*__p);
#ifndef _LIBCPP_NO_EXCEPTIONS
}
catch (...)
{
- __clear();
+ __clear(__n);
throw;
}
#endif // _LIBCPP_NO_EXCEPTIONS
@@ -2818,7 +2818,7 @@
if (__v.size())
{
__begin_ = __end_ = static_cast<value_type*>(
- _VSTD::__libcpp_allocate(__v.size() * sizeof(value_type), __alignof(value_type)));
+ _VSTD::__libcpp_allocate(__v.size() * sizeof(value_type), _LIBCPP_ALIGNOF(value_type)));
#ifndef _LIBCPP_NO_EXCEPTIONS
try
{
@@ -2829,7 +2829,7 @@
}
catch (...)
{
- __clear();
+ __clear(__v.size());
throw;
}
#endif // _LIBCPP_NO_EXCEPTIONS
@@ -2852,22 +2852,23 @@
: __begin_(0),
__end_(0)
{
- size_t __n = __il.size();
+ const size_t __n = __il.size();
if (__n)
{
__begin_ = __end_ = static_cast<value_type*>(
-_VSTD::__libcpp_allocate(__n * sizeof(value_type), __alignof(value_type)));
+_VSTD::__libcpp_allocate(__n * sizeof(value_type), _LIBCPP_ALIGNOF(value_type)));
#ifndef _LIBCPP_NO_EXCEPTIONS
try
{
#endif // _LIBCPP_NO_EXCEPTIONS
- for (const value_type* __p = __il.begin(); __n; ++__end_, ++__p, --__n)
+ size_t __n_left = __n;
+ for (const value_type* __p = __il.begin(); __n_left; ++__end_, ++__p, --__n_left)
::new (__end_) value_type(*__p);
#ifndef _LIBCPP_NO_EXCEPTIONS
}
catch (...)
{
- __clear();
+ __clear(__n);
throw;
}
#endif // _LIBCPP_NO_EXCEPTIONS
@@ -2881,22 +2882,23 @@
: __begin_(0),
__end_(0)
{
- size_t __n = __sa.__size_;
+ const size_t __n = __sa.__size_;
if (__n)
{
__begin_ = __end_ = static_cast<value_type*>(
- _VSTD::__libcpp_allocate(__n * sizeof(value_type), __alignof(value_type)));
+ _VSTD::__libcpp_allocate(__n * sizeof(value_type), _LIBCPP_ALIGNOF(value_type)));
#ifndef _LIBCPP_NO_EXCEPTIONS
try
{
#endif // _LIBCPP_NO_EXCEPTIONS
- for (const value_type* __p = __sa.__vp_; __n; ++__end_, __p += __sa.__stride_, --__n)
+ size_t __n_left = __n;
+ for (const value_type* __p = __sa.__vp_; __n_left; ++__end_, __p += __sa.__stride_, --__n_left)
::new (__end_) value_type(*__p);
#ifndef _LIBCPP_NO_EXCEPTIONS
}
catch (...)
{
- __clear();
+ __clear(__n);
throw;
}
#endif // _LIBCPP_NO_EXCEPTIONS
@@ -2908,11 +2910,11 @@
: __begin_(0),
__end_(0)
{
- size_t __n = __ga.__1d_.size();
+ const size_t __n = __ga.__1d_.size();
if (__n)
{
__begin_ = __end_ = static_cast<value_type*>(
- _VSTD::__libcpp_allocate(__n * sizeof(value_type), __alignof(value_type)));
+ _VSTD::__libcpp_allocate(__n * sizeof(value_type), _LIBCPP_ALIGNOF(value_type)));
#ifndef _LIBCPP_NO_EXCEPTIONS
try
{
@@ -2926,7 +2928,7 @@
}
catch (...)
{
- __clear();
+ __clear(__n);
throw;
}
#endif // _LIBCPP_NO_EXCEPTIONS
@@ -2938,11 +2940,11 @@
: __begin_(0),
__end_(0)
{
- size_t __n = __ma.__1d_.size();
+ const size_t __n = __ma.__1d_.size();
if (__n)
{
__begin_ = __end_ = static_cast<value_type*>(
- _VSTD::__libcpp_allocate(__n * sizeof(value_type), __alignof(value_type)));
+ _VSTD::__libcpp_allocate(__n * sizeof(value_type), _LIBCPP_ALIGNOF(value_type)));
#ifndef _LIBCPP_NO_EXCEPTIONS
try
{
@@ -2956,7 +2958,7 @@
}
catch (...)
{
- __clear();
+ __clear(__n);
throw;
}
#endif // _LIBCPP_NO_EXCEPTIONS
@@ -2968,11 +2970,11 @@
: __begin_(0),
__end_(0)
{
- size_t __n = __ia.__1d_.size();
+ const size_t __n = __ia.__1d_.size();
if (__n)
{
__begin_ = __end_ = static_cast<value_type*>(
- _VSTD::__libcpp_allocate(__n * sizeof(value_type), __alignof(value_type)));
+ _VSTD::__libcpp_allocate(__n * sizeof(value_type), _LIBCPP_ALIGNOF(value_type)));
#ifndef _LIBCPP_NO_EXCEPTIONS
try
{
@@ -2986,7 +2988,7 @@
}
catch (...)
{
- __clear();
+ __clear(__n);
throw;
}
#endif // _LIBCPP_NO_EXCEPTIONS
@@ -2997,7 +2999,7 @@
inline
valarray<_Tp>::~valarray()
{
- __clear();
+ __clear(size());
}
template <class _Tp>
@@ -3007,9 +3009,9 @@
size_t __n = __l - __f;
if (size() != __n)
{
- __clear();
+ __clear(size());
__begin_ = static_cast<value_type*>(
- _VSTD::__libcpp_allocate(__n * sizeof(value_type), __alignof(value_type)));
+ _VSTD::__libcpp_allocate(__n * sizeof(value_type), _LIBCPP_ALIGNOF(value_type)));
__end_ = __begin_ + __n;
_VSTD::uninitialized_copy(__f, __l, __begin_);
} else {
@@ -3034,7 +3036,7 @@
valarray<_Tp>&
valarray<_Tp>::operator=(valarray&& __v) _NOEXCEPT
{
- __clear();
+ __clear(size());
__begin_ = __v.__begin_;
__end_ = __v.__end_;
__v.__begin_ = nullptr;
@@ -3265,7 +3267,7 @@
__r.__begin_ =
__r.__end_ =
static_cast<value_type*>(
- _VSTD::__libcpp_allocate(__n * sizeof(value_type), __alignof(value_type)));
+ _VSTD::__libcpp_allocate(__n * sizeof(value_type), _LIBCPP_ALIGNOF(value_type)));
for (const value_type* __p = __begin_; __n; ++__r.__end_, ++__p, --__n)
::new (__r.__end_) value_type(+*__p);
}
@@ -3283,7 +3285,7 @@
__r.__begin_ =
__r.__end_ =
static_cast<value_type*>(
- _VSTD::__libcpp_allocate(__n * sizeof(value_type), __alignof(value_type)));
+ _VSTD::__libcpp_allocate(__n * sizeof(value_type), _LIBCPP_ALIGNOF(value_type)));
for (const value_type* __p = __begin_; __n; ++__r.__end_, ++__p, --__n)
::new (__r.__end_) value_type(-*__p);
}
@@ -3301,7 +3303,7 @@
__r.__begin_ =
__r.__end_ =
static_cast<value_type*>(
- _VSTD::__libcpp_allocate(__n * sizeof(value_type), __alignof(value_type)));
+ _VSTD::__libcpp_allocate(__n * sizeof(value_type), _LIBCPP_ALIGNOF(value_type)));
for (const value_type* __p = __begin_; __n; ++__r.__end_, ++__p, --__n)
::new (__r.__end_) value_type(~*__p);
}
@@ -3318,7 +3320,7 @@
{
__r.__begin_ =
__r.__end_ =
- static_cast<bool*>(_VSTD::__libcpp_allocate(__n * sizeof(bool), __alignof(bool)));
+ static_cast<bool*>(_VSTD::__libcpp_allocate(__n * sizeof(bool), _LIBCPP_ALIGNOF(bool)));
for (const value_type* __p = __begin_; __n; ++__r.__end_, ++__p, --__n)
::new (__r.__end_) bool(!*__p);
}
@@ -3639,7 +3641,7 @@
__r.__begin_ =
__r.__end_ =
static_cast<value_type*>(
- _VSTD::__libcpp_allocate(__n * sizeof(value_type), __alignof(value_type)));
+ _VSTD::__libcpp_allocate(__n * sizeof(value_type), _LIBCPP_ALIGNOF(value_type)));
const value_type* __sb;
value_type* __tb;
value_type* __te;
@@ -3678,7 +3680,7 @@
__r.__begin_ =
__r.__end_ =
static_cast<value_type*>(
- _VSTD::__libcpp_allocate(__n * sizeof(value_type), __alignof(value_type)));
+ _VSTD::__libcpp_allocate(__n * sizeof(value_type), _LIBCPP_ALIGNOF(value_type)));
__i %= static_cast<int>(__n);
const value_type* __m = __i >= 0 ? __begin_ + __i : __end_ + __i;
for (const value_type* __s = __m; __s != __end_; ++__r.__end_, ++__s)
@@ -3700,7 +3702,7 @@
__r.__begin_ =
__r.__end_ =
static_cast<value_type*>(
- _VSTD::__libcpp_allocate(__n * sizeof(value_type), __alignof(value_type)));
+ _VSTD::__libcpp_allocate(__n * sizeof(value_type), _LIBCPP_ALIGNOF(value_type)));
for (const value_type* __p = __begin_; __n; ++__r.__end_, ++__p, --__n)
::new (__r.__end_) value_type(__f(*__p));
}
@@ -3718,7 +3720,7 @@
__r.__begin_ =
__r.__end_ =
static_cast<value_type*>(
- _VSTD::__libcpp_allocate(__n * sizeof(value_type), __alignof(value_type)));
+ _VSTD::__libcpp_allocate(__n * sizeof(value_type), _LIBCPP_ALIGNOF(value_type)));
for (const value_type* __p = __begin_; __n; ++__r.__end_, ++__p, --__n)
::new (__r.__end_) value_type(__f(*__p));
}
@@ -3726,38 +3728,38 @@
}
template <class _Tp>
-void
-valarray<_Tp>::__clear()
+inline
+void valarray<_Tp>::__clear(size_t __capacity)
{
- if (__begin_ != nullptr)
- {
- while (__end_ != __begin_)
- (--__end_)->~value_type();
- _VSTD::__libcpp_deallocate(__begin_, __alignof(value_type));
- __begin_ = __end_ = nullptr;
- }
+ if (__begin_ != nullptr)
+ {
+ while (__end_ != __begin_)
+ (--__end_)->~value_type();
+ _VSTD::__libcpp_deallocate(__begin_, __capacity * sizeof(value_type), _LIBCPP_ALIGNOF(value_type));
+ __begin_ = __end_ = nullptr;
+ }
}
template <class _Tp>
void
valarray<_Tp>::resize(size_t __n, value_type __x)
{
- __clear();
+ __clear(size());
if (__n)
{
__begin_ = __end_ = static_cast<value_type*>(
- _VSTD::__libcpp_allocate(__n * sizeof(value_type), __alignof(value_type)));
+ _VSTD::__libcpp_allocate(__n * sizeof(value_type), _LIBCPP_ALIGNOF(value_type)));
#ifndef _LIBCPP_NO_EXCEPTIONS
try
{
#endif // _LIBCPP_NO_EXCEPTIONS
- for (; __n; --__n, ++__end_)
+ for (size_t __n_left = __n; __n_left; --__n_left, ++__end_)
::new (__end_) value_type(__x);
#ifndef _LIBCPP_NO_EXCEPTIONS
}
catch (...)
{
- __clear();
+ __clear(__n);
throw;
}
#endif // _LIBCPP_NO_EXCEPTIONS
diff --git a/linux-x64/clang/include/c++/v1/variant b/linux-x64/clang/include/c++/v1/variant
index f9505bf..5d0722b 100644
--- a/linux-x64/clang/include/c++/v1/variant
+++ b/linux-x64/clang/include/c++/v1/variant
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------------ variant -------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -23,8 +22,8 @@
// 20.7.2.1, constructors
constexpr variant() noexcept(see below);
- variant(const variant&);
- variant(variant&&) noexcept(see below);
+ variant(const variant&); // constexpr in C++20
+ variant(variant&&) noexcept(see below); // constexpr in C++20
template <class T> constexpr variant(T&&) noexcept(see below);
@@ -46,8 +45,8 @@
~variant();
// 20.7.2.3, assignment
- variant& operator=(const variant&);
- variant& operator=(variant&&) noexcept(see below);
+ variant& operator=(const variant&); // constexpr in C++20
+ variant& operator=(variant&&) noexcept(see below); // constexpr in C++20
template <class T> variant& operator=(T&&) noexcept(see below);
@@ -219,7 +218,7 @@
namespace std { // explicitly not using versioning namespace
-class _LIBCPP_EXCEPTION_ABI bad_variant_access : public exception {
+class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS bad_variant_access : public exception {
public:
virtual const char* what() const _NOEXCEPT;
};
@@ -232,6 +231,7 @@
_LIBCPP_NORETURN
inline _LIBCPP_INLINE_VISIBILITY
+_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
void __throw_bad_variant_access() {
#ifndef _LIBCPP_NO_EXCEPTIONS
throw bad_variant_access();
@@ -1065,7 +1065,7 @@
#ifndef _LIBCPP_NO_EXCEPTIONS
// EXTENSION: When the move construction of `__lhs` into `__rhs` throws
// and `__tmp` is nothrow move constructible then we move `__tmp` back
- // into `__rhs` and provide the strong exception safety guarentee.
+ // into `__rhs` and provide the strong exception safety guarantee.
try {
this->__generic_construct(*__rhs, _VSTD::move(*__lhs));
} catch (...) {
@@ -1321,6 +1321,7 @@
template <size_t _Ip, class _Vp>
inline _LIBCPP_INLINE_VISIBILITY
+_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
constexpr auto&& __generic_get(_Vp&& __v) {
using __variant_detail::__access::__variant;
if (!__holds_alternative<_Ip>(__v)) {
@@ -1331,6 +1332,7 @@
template <size_t _Ip, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
+_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
constexpr variant_alternative_t<_Ip, variant<_Types...>>& get(
variant<_Types...>& __v) {
static_assert(_Ip < sizeof...(_Types));
@@ -1340,6 +1342,7 @@
template <size_t _Ip, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
+_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
constexpr variant_alternative_t<_Ip, variant<_Types...>>&& get(
variant<_Types...>&& __v) {
static_assert(_Ip < sizeof...(_Types));
@@ -1349,6 +1352,7 @@
template <size_t _Ip, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
+_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
constexpr const variant_alternative_t<_Ip, variant<_Types...>>& get(
const variant<_Types...>& __v) {
static_assert(_Ip < sizeof...(_Types));
@@ -1358,6 +1362,7 @@
template <size_t _Ip, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
+_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
constexpr const variant_alternative_t<_Ip, variant<_Types...>>&& get(
const variant<_Types...>&& __v) {
static_assert(_Ip < sizeof...(_Types));
@@ -1367,6 +1372,7 @@
template <class _Tp, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
+_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
constexpr _Tp& get(variant<_Types...>& __v) {
static_assert(!is_void_v<_Tp>);
return _VSTD::get<__find_exactly_one_t<_Tp, _Types...>::value>(__v);
@@ -1374,6 +1380,7 @@
template <class _Tp, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
+_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
constexpr _Tp&& get(variant<_Types...>&& __v) {
static_assert(!is_void_v<_Tp>);
return _VSTD::get<__find_exactly_one_t<_Tp, _Types...>::value>(
@@ -1382,6 +1389,7 @@
template <class _Tp, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
+_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
constexpr const _Tp& get(const variant<_Types...>& __v) {
static_assert(!is_void_v<_Tp>);
return _VSTD::get<__find_exactly_one_t<_Tp, _Types...>::value>(__v);
@@ -1389,6 +1397,7 @@
template <class _Tp, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
+_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
constexpr const _Tp&& get(const variant<_Types...>&& __v) {
static_assert(!is_void_v<_Tp>);
return _VSTD::get<__find_exactly_one_t<_Tp, _Types...>::value>(
@@ -1521,6 +1530,7 @@
template <class _Visitor, class... _Vs>
inline _LIBCPP_INLINE_VISIBILITY
+_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
constexpr decltype(auto) visit(_Visitor&& __visitor, _Vs&&... __vs) {
using __variant_detail::__visitation::__variant;
bool __results[] = {__vs.valueless_by_exception()...};
diff --git a/linux-x64/clang/include/c++/v1/vector b/linux-x64/clang/include/c++/v1/vector
index de7de09..79d1767 100644
--- a/linux-x64/clang/include/c++/v1/vector
+++ b/linux-x64/clang/include/c++/v1/vector
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===------------------------------ vector --------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -261,6 +260,11 @@
void swap(vector<T,Allocator>& x, vector<T,Allocator>& y)
noexcept(noexcept(x.swap(y)));
+template <class T, class Allocator, class U>
+ void erase(vector<T, Allocator>& c, const U& value); // C++20
+template <class T, class Allocator, class Predicate>
+ void erase_if(vector<T, Allocator>& c, Predicate pred); // C++20
+
} // std
*/
@@ -2606,6 +2610,13 @@
{
size_type __old_size = this->__size_;
this->__size_ += __n;
+ if (__old_size == 0 || ((__old_size - 1) / __bits_per_word) != ((this->__size_ - 1) / __bits_per_word))
+ {
+ if (this->__size_ <= __bits_per_word)
+ this->__begin_[0] = __storage_type(0);
+ else
+ this->__begin_[(this->__size_ - 1) / __bits_per_word] = __storage_type(0);
+ }
_VSTD::fill_n(__make_iter(__old_size), __n, __x);
}
@@ -2620,6 +2631,13 @@
{
size_type __old_size = this->__size_;
this->__size_ += _VSTD::distance(__first, __last);
+ if (__old_size == 0 || ((__old_size - 1) / __bits_per_word) != ((this->__size_ - 1) / __bits_per_word))
+ {
+ if (this->__size_ <= __bits_per_word)
+ this->__begin_[0] = __storage_type(0);
+ else
+ this->__begin_[(this->__size_ - 1) / __bits_per_word] = __storage_type(0);
+ }
_VSTD::copy(__first, __last, __make_iter(__old_size));
}
@@ -3394,6 +3412,18 @@
__x.swap(__y);
}
+#if _LIBCPP_STD_VER > 17
+template <class _Tp, class _Allocator, class _Up>
+inline _LIBCPP_INLINE_VISIBILITY
+void erase(vector<_Tp, _Allocator>& __c, const _Up& __v)
+{ __c.erase(_VSTD::remove(__c.begin(), __c.end(), __v), __c.end()); }
+
+template <class _Tp, class _Allocator, class _Predicate>
+inline _LIBCPP_INLINE_VISIBILITY
+void erase_if(vector<_Tp, _Allocator>& __c, _Predicate __pred)
+{ __c.erase(_VSTD::remove_if(__c.begin(), __c.end(), __pred), __c.end()); }
+#endif
+
_LIBCPP_END_NAMESPACE_STD
_LIBCPP_POP_MACROS
diff --git a/linux-x64/clang/include/c++/v1/version b/linux-x64/clang/include/c++/v1/version
index 80c2797..1037ee5 100644
--- a/linux-x64/clang/include/c++/v1/version
+++ b/linux-x64/clang/include/c++/v1/version
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- version ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -12,86 +11,105 @@
#define _LIBCPP_VERSIONH
/*
- version synopsis
+ version synopsis
- Table 35 — Standard library feature-test macros
-Macro name Value Headers
-__cpp_lib_addressof_constexpr 201603L <memory>
-__cpp_lib_allocator_traits_is_always_equal 201411L <memory> <scoped_allocator> <string>
- <deque> <forward_list> <list> <vector>
- <map> <set> <unordered_map> <unordered_set>
-__cpp_lib_any 201606L <any>
-__cpp_lib_apply 201603L <tuple>
-__cpp_lib_array_constexpr 201603L <iterator> <array>
-__cpp_lib_as_const 201510L <utility>
-__cpp_lib_atomic_is_always_lock_free 201603L <atomic>
-__cpp_lib_atomic_ref 201806L <atomic>
-__cpp_lib_bit_cast 201806L <bit>
-__cpp_lib_bool_constant 201505L <type_traits>
-__cpp_lib_boyer_moore_searcher 201603L <functional>
-__cpp_lib_byte 201603L <cstddef>
-__cpp_lib_chrono 201611L <chrono>
-__cpp_lib_clamp 201603L <algorithm>
-__cpp_lib_complex_udls 201309L <complex>
-__cpp_lib_concepts 201806L <concepts>
-__cpp_lib_constexpr_swap_algorithms 201806L <algorithm>
-__cpp_lib_enable_shared_from_this 201603L <memory>
-__cpp_lib_exchange_function 201304L <utility>
-__cpp_lib_execution 201603L <execution>
-__cpp_lib_filesystem 201703L <filesystem>
-__cpp_lib_gcd_lcm 201606L <numeric>
-__cpp_lib_generic_associative_lookup 201304L <map> <set>
-__cpp_lib_hardware_interference_size 201703L <new>
-__cpp_lib_has_unique_object_representations 201606L <type_traits>
-__cpp_lib_hypot 201603L <cmath>
-__cpp_lib_incomplete_container_elements 201505L <forward_list> <list> <vector>
-__cpp_lib_integer_sequence 201304L <utility>
-__cpp_lib_integral_constant_callable 201304L <type_traits>
-__cpp_lib_invoke 201411L <functional>
-__cpp_lib_is_aggregate 201703L <type_traits>
-__cpp_lib_is_final 201402L <type_traits>
-__cpp_lib_is_invocable 201703L <type_traits>
-__cpp_lib_is_null_pointer 201309L <type_traits>
-__cpp_lib_is_swappable 201603L <type_traits>
-__cpp_lib_launder 201606L <new>
-__cpp_lib_list_remove_return_type 201806L <forward_list> <list>
-__cpp_lib_logical_traits 201510L <type_traits>
-__cpp_lib_make_from_tuple 201606L <tuple>
-__cpp_lib_make_reverse_iterator 201402L <iterator>
-__cpp_lib_make_unique 201304L <memory>
-__cpp_lib_map_try_emplace 201411L <map>
-__cpp_lib_math_special_functions 201603L <cmath>
-__cpp_lib_memory_resource 201603L <memory_resource>
-__cpp_lib_node_extract 201606L <map> <set> <unordered_map> <unordered_set>
-__cpp_lib_nonmember_container_access 201411L <iterator> <array> <deque> <forward_list>
- <list> <map> <regex> <set> <string>
- <unordered_map> <unordered_set> <vector>
-__cpp_lib_not_fn 201603L <functional>
-__cpp_lib_null_iterators 201304L <iterator>
-__cpp_lib_optional 201606L <optional>
-__cpp_lib_parallel_algorithm 201603L <algorithm> <numeric>
-__cpp_lib_quoted_string_io 201304L <iomanip>
-__cpp_lib_raw_memory_algorithms 201606L <memory>
-__cpp_lib_result_of_sfinae 201210L <functional> <type_traits>
-__cpp_lib_robust_nonmodifying_seq_ops 201304L <algorithm>
-__cpp_lib_sample 201603L <algorithm>
-__cpp_lib_scoped_lock 201703L <mutex>
-__cpp_lib_shared_mutex 201505L <shared_mutex>
-__cpp_lib_shared_ptr_arrays 201611L <memory>
-__cpp_lib_shared_ptr_weak_type 201606L <memory>
-__cpp_lib_shared_timed_mutex 201402L <shared_mutex>
-__cpp_lib_string_udls 201304L <string>
-__cpp_lib_string_view 201606L <string> <string_view>
-__cpp_lib_to_chars 201611L <utility>
-__cpp_lib_transformation_trait_aliases 201304L <type_traits>
-__cpp_lib_transparent_operators 201510L <memory> <functional>
-__cpp_lib_tuple_element_t 201402L <tuple>
-__cpp_lib_tuples_by_type 201304L <utility> <tuple>
-__cpp_lib_type_trait_variable_templates 201510L <type_traits>
-__cpp_lib_uncaught_exceptions 201411L <exception>
-__cpp_lib_unordered_map_try_emplace 201411L <unordered_map>
-__cpp_lib_variant 201606L <variant>
-__cpp_lib_void_t 201411L <type_traits>
+Macro name Value Headers
+__cpp_lib_addressof_constexpr 201603L <memory>
+__cpp_lib_allocator_traits_is_always_equal 201411L <memory> <scoped_allocator> <string>
+ <deque> <forward_list> <list>
+ <vector> <map> <set>
+ <unordered_map> <unordered_set>
+__cpp_lib_any 201606L <any>
+__cpp_lib_apply 201603L <tuple>
+__cpp_lib_array_constexpr 201603L <iterator> <array>
+__cpp_lib_as_const 201510L <utility>
+__cpp_lib_atomic_is_always_lock_free 201603L <atomic>
+__cpp_lib_atomic_ref 201806L <atomic>
+__cpp_lib_bind_front 201811L <functional>
+__cpp_lib_bit_cast 201806L <bit>
+__cpp_lib_bool_constant 201505L <type_traits>
+__cpp_lib_boyer_moore_searcher 201603L <functional>
+__cpp_lib_byte 201603L <cstddef>
+__cpp_lib_char8_t 201811L <atomic> <filesystem> <istream>
+ <limits> <locale> <ostream>
+ <string> <string_view>
+__cpp_lib_chrono 201611L <chrono>
+__cpp_lib_chrono_udls 201304L <chrono>
+__cpp_lib_clamp 201603L <algorithm>
+__cpp_lib_complex_udls 201309L <complex>
+__cpp_lib_concepts 201806L <concepts>
+__cpp_lib_constexpr_misc 201811L <array> <functional> <iterator>
+ <string_view> <tuple> <utility>
+__cpp_lib_constexpr_swap_algorithms 201806L <algorithm>
+__cpp_lib_destroying_delete 201806L <new>
+__cpp_lib_enable_shared_from_this 201603L <memory>
+__cpp_lib_erase_if 201811L <string> <deque> <forward_list>
+ <list> <vector> <map>
+ <set> <unordered_map> <unordered_set>
+__cpp_lib_exchange_function 201304L <utility>
+__cpp_lib_execution 201603L <execution>
+__cpp_lib_filesystem 201703L <filesystem>
+__cpp_lib_gcd_lcm 201606L <numeric>
+__cpp_lib_generic_associative_lookup 201304L <map> <set>
+__cpp_lib_generic_unordered_lookup 201811L <unordered_map> <unordered_set>
+__cpp_lib_hardware_interference_size 201703L <new>
+__cpp_lib_has_unique_object_representations 201606L <type_traits>
+__cpp_lib_hypot 201603L <cmath>
+__cpp_lib_incomplete_container_elements 201505L <forward_list> <list> <vector>
+__cpp_lib_integer_sequence 201304L <utility>
+__cpp_lib_integral_constant_callable 201304L <type_traits>
+__cpp_lib_invoke 201411L <functional>
+__cpp_lib_is_aggregate 201703L <type_traits>
+__cpp_lib_is_constant_evaluated 201811L <type_traits>
+__cpp_lib_is_final 201402L <type_traits>
+__cpp_lib_is_invocable 201703L <type_traits>
+__cpp_lib_is_null_pointer 201309L <type_traits>
+__cpp_lib_is_swappable 201603L <type_traits>
+__cpp_lib_launder 201606L <new>
+__cpp_lib_list_remove_return_type 201806L <forward_list> <list>
+__cpp_lib_logical_traits 201510L <type_traits>
+__cpp_lib_make_from_tuple 201606L <tuple>
+__cpp_lib_make_reverse_iterator 201402L <iterator>
+__cpp_lib_make_unique 201304L <memory>
+__cpp_lib_map_try_emplace 201411L <map>
+__cpp_lib_math_special_functions 201603L <cmath>
+__cpp_lib_memory_resource 201603L <memory_resource>
+__cpp_lib_node_extract 201606L <map> <set> <unordered_map>
+ <unordered_set>
+__cpp_lib_nonmember_container_access 201411L <iterator> <array> <deque>
+ <forward_list> <list> <map>
+ <regex> <set> <string>
+ <unordered_map> <unordered_set> <vector>
+__cpp_lib_not_fn 201603L <functional>
+__cpp_lib_null_iterators 201304L <iterator>
+__cpp_lib_optional 201606L <optional>
+__cpp_lib_parallel_algorithm 201603L <algorithm> <numeric>
+__cpp_lib_quoted_string_io 201304L <iomanip>
+__cpp_lib_ranges 201811L <algorithm> <functional> <iterator>
+ <memory> <ranges>
+__cpp_lib_raw_memory_algorithms 201606L <memory>
+__cpp_lib_result_of_sfinae 201210L <functional> <type_traits>
+__cpp_lib_robust_nonmodifying_seq_ops 201304L <algorithm>
+__cpp_lib_sample 201603L <algorithm>
+__cpp_lib_scoped_lock 201703L <mutex>
+__cpp_lib_shared_mutex 201505L <shared_mutex>
+__cpp_lib_shared_ptr_arrays 201611L <memory>
+__cpp_lib_shared_ptr_weak_type 201606L <memory>
+__cpp_lib_shared_timed_mutex 201402L <shared_mutex>
+__cpp_lib_string_udls 201304L <string>
+__cpp_lib_string_view 201606L <string> <string_view>
+__cpp_lib_three_way_comparison 201711L <compare>
+__cpp_lib_to_chars 201611L <utility>
+__cpp_lib_transformation_trait_aliases 201304L <type_traits>
+__cpp_lib_transparent_operators 201510L <functional>
+ 201210L // C++14
+__cpp_lib_tuple_element_t 201402L <tuple>
+__cpp_lib_tuples_by_type 201304L <utility> <tuple>
+__cpp_lib_type_trait_variable_templates 201510L <type_traits>
+__cpp_lib_uncaught_exceptions 201411L <exception>
+__cpp_lib_unordered_map_try_emplace 201411L <unordered_map>
+__cpp_lib_variant 201606L <variant>
+__cpp_lib_void_t 201411L <type_traits>
*/
@@ -102,16 +120,112 @@
#endif
#if _LIBCPP_STD_VER > 11
+# define __cpp_lib_chrono_udls 201304L
+# define __cpp_lib_complex_udls 201309L
+# define __cpp_lib_exchange_function 201304L
+# define __cpp_lib_generic_associative_lookup 201304L
+# define __cpp_lib_integer_sequence 201304L
+# define __cpp_lib_integral_constant_callable 201304L
+# define __cpp_lib_is_final 201402L
+# define __cpp_lib_is_null_pointer 201309L
+# define __cpp_lib_make_reverse_iterator 201402L
+# define __cpp_lib_make_unique 201304L
+# define __cpp_lib_null_iterators 201304L
+# define __cpp_lib_quoted_string_io 201304L
+# define __cpp_lib_result_of_sfinae 201210L
+# define __cpp_lib_robust_nonmodifying_seq_ops 201304L
+# if !defined(_LIBCPP_HAS_NO_THREADS)
+# define __cpp_lib_shared_timed_mutex 201402L
+# endif
+# define __cpp_lib_string_udls 201304L
+# define __cpp_lib_transformation_trait_aliases 201304L
+# define __cpp_lib_transparent_operators 201210L
+# define __cpp_lib_tuple_element_t 201402L
+# define __cpp_lib_tuples_by_type 201304L
#endif
#if _LIBCPP_STD_VER > 14
-# define __cpp_lib_atomic_is_always_lock_free 201603L
+# if !defined(_LIBCPP_HAS_NO_BUILTIN_ADDRESSOF)
+# define __cpp_lib_addressof_constexpr 201603L
+# endif
+# define __cpp_lib_allocator_traits_is_always_equal 201411L
+# define __cpp_lib_any 201606L
+# define __cpp_lib_apply 201603L
+# define __cpp_lib_array_constexpr 201603L
+# define __cpp_lib_as_const 201510L
+# if !defined(_LIBCPP_HAS_NO_THREADS)
+# define __cpp_lib_atomic_is_always_lock_free 201603L
+# endif
+# define __cpp_lib_bool_constant 201505L
+// # define __cpp_lib_boyer_moore_searcher 201603L
+# define __cpp_lib_byte 201603L
+# define __cpp_lib_chrono 201611L
+# define __cpp_lib_clamp 201603L
+# define __cpp_lib_enable_shared_from_this 201603L
+// # define __cpp_lib_execution 201603L
# define __cpp_lib_filesystem 201703L
+# define __cpp_lib_gcd_lcm 201606L
+# define __cpp_lib_hardware_interference_size 201703L
+# if defined(_LIBCPP_HAS_UNIQUE_OBJECT_REPRESENTATIONS)
+# define __cpp_lib_has_unique_object_representations 201606L
+# endif
+# define __cpp_lib_hypot 201603L
+# define __cpp_lib_incomplete_container_elements 201505L
# define __cpp_lib_invoke 201411L
+# if !defined(_LIBCPP_HAS_NO_IS_AGGREGATE)
+# define __cpp_lib_is_aggregate 201703L
+# endif
+# define __cpp_lib_is_invocable 201703L
+# define __cpp_lib_is_swappable 201603L
+# define __cpp_lib_launder 201606L
+# define __cpp_lib_logical_traits 201510L
+# define __cpp_lib_make_from_tuple 201606L
+# define __cpp_lib_map_try_emplace 201411L
+// # define __cpp_lib_math_special_functions 201603L
+// # define __cpp_lib_memory_resource 201603L
+# define __cpp_lib_node_extract 201606L
+# define __cpp_lib_nonmember_container_access 201411L
+# define __cpp_lib_not_fn 201603L
+# define __cpp_lib_optional 201606L
+// # define __cpp_lib_parallel_algorithm 201603L
+# define __cpp_lib_raw_memory_algorithms 201606L
+# define __cpp_lib_sample 201603L
+# define __cpp_lib_scoped_lock 201703L
+# if !defined(_LIBCPP_HAS_NO_THREADS)
+# define __cpp_lib_shared_mutex 201505L
+# endif
+// # define __cpp_lib_shared_ptr_arrays 201611L
+# define __cpp_lib_shared_ptr_weak_type 201606L
+# define __cpp_lib_string_view 201606L
+// # define __cpp_lib_to_chars 201611L
+# undef __cpp_lib_transparent_operators
+# define __cpp_lib_transparent_operators 201510L
+# define __cpp_lib_type_trait_variable_templates 201510L
+# define __cpp_lib_uncaught_exceptions 201411L
+# define __cpp_lib_unordered_map_try_emplace 201411L
+# define __cpp_lib_variant 201606L
# define __cpp_lib_void_t 201411L
#endif
#if _LIBCPP_STD_VER > 17
+# if !defined(_LIBCPP_HAS_NO_THREADS)
+// # define __cpp_lib_atomic_ref 201806L
+# endif
+// # define __cpp_lib_bind_front 201811L
+// # define __cpp_lib_bit_cast 201806L
+# if !defined(_LIBCPP_NO_HAS_CHAR8_T)
+# define __cpp_lib_char8_t 201811L
+# endif
+// # define __cpp_lib_concepts 201806L
+// # define __cpp_lib_constexpr_misc 201811L
+// # define __cpp_lib_constexpr_swap_algorithms 201806L
+// # define __cpp_lib_destroying_delete 201806L
+# define __cpp_lib_erase_if 201811L
+// # define __cpp_lib_generic_unordered_lookup 201811L
+// # define __cpp_lib_is_constant_evaluated 201811L
+// # define __cpp_lib_list_remove_return_type 201806L
+// # define __cpp_lib_ranges 201811L
+// # define __cpp_lib_three_way_comparison 201711L
#endif
-#endif // _LIBCPP_VERSIONH
+#endif // _LIBCPP_VERSIONH
diff --git a/linux-x64/clang/include/c++/v1/wchar.h b/linux-x64/clang/include/c++/v1/wchar.h
index f74fe6d..353c979 100644
--- a/linux-x64/clang/include/c++/v1/wchar.h
+++ b/linux-x64/clang/include/c++/v1/wchar.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- wchar.h ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/c++/v1/wctype.h b/linux-x64/clang/include/c++/v1/wctype.h
index f9c5a47..bdcf372 100644
--- a/linux-x64/clang/include/c++/v1/wctype.h
+++ b/linux-x64/clang/include/c++/v1/wctype.h
@@ -1,10 +1,9 @@
// -*- C++ -*-
//===--------------------------- wctype.h ---------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang-c/BuildSystem.h b/linux-x64/clang/include/clang-c/BuildSystem.h
index 3cfec38..8f26a86 100644
--- a/linux-x64/clang/include/clang-c/BuildSystem.h
+++ b/linux-x64/clang/include/clang-c/BuildSystem.h
@@ -1,9 +1,9 @@
/*==-- clang-c/BuildSystem.h - Utilities for use by build systems -*- C -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/clang-c/CXCompilationDatabase.h b/linux-x64/clang/include/clang-c/CXCompilationDatabase.h
index 6f483ee..2669c1a 100644
--- a/linux-x64/clang/include/clang-c/CXCompilationDatabase.h
+++ b/linux-x64/clang/include/clang-c/CXCompilationDatabase.h
@@ -1,9 +1,9 @@
/*===-- clang-c/CXCompilationDatabase.h - Compilation database ---*- C -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/clang-c/CXErrorCode.h b/linux-x64/clang/include/clang-c/CXErrorCode.h
index caee48d..fed195e 100644
--- a/linux-x64/clang/include/clang-c/CXErrorCode.h
+++ b/linux-x64/clang/include/clang-c/CXErrorCode.h
@@ -1,9 +1,9 @@
/*===-- clang-c/CXErrorCode.h - C Index Error Codes --------------*- C -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/clang-c/CXString.h b/linux-x64/clang/include/clang-c/CXString.h
index 76eeda1..1eb3442 100644
--- a/linux-x64/clang/include/clang-c/CXString.h
+++ b/linux-x64/clang/include/clang-c/CXString.h
@@ -1,9 +1,9 @@
/*===-- clang-c/CXString.h - C Index strings --------------------*- C -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/clang-c/Documentation.h b/linux-x64/clang/include/clang-c/Documentation.h
index 58c8af5..4af8c93 100644
--- a/linux-x64/clang/include/clang-c/Documentation.h
+++ b/linux-x64/clang/include/clang-c/Documentation.h
@@ -1,9 +1,9 @@
/*==-- clang-c/Documentation.h - Utilities for comment processing -*- C -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/clang-c/Index.h b/linux-x64/clang/include/clang-c/Index.h
index 56b510d..38af8aa 100644
--- a/linux-x64/clang/include/clang-c/Index.h
+++ b/linux-x64/clang/include/clang-c/Index.h
@@ -1,9 +1,9 @@
/*===-- clang-c/Index.h - Indexing Public C Interface -------------*- C -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
@@ -32,7 +32,7 @@
* compatible, thus CINDEX_VERSION_MAJOR is expected to remain stable.
*/
#define CINDEX_VERSION_MAJOR 0
-#define CINDEX_VERSION_MINOR 50
+#define CINDEX_VERSION_MINOR 51
#define CINDEX_VERSION_ENCODE(major, minor) ( \
((major) * 10000) \
@@ -2586,7 +2586,8 @@
CXCursor_ObjCRuntimeVisible = 435,
CXCursor_ObjCBoxable = 436,
CXCursor_FlagEnum = 437,
- CXCursor_LastAttr = CXCursor_FlagEnum,
+ CXCursor_ConvergentAttr = 438,
+ CXCursor_LastAttr = CXCursor_ConvergentAttr,
/* Preprocessing */
CXCursor_PreprocessingDirective = 500,
@@ -3297,7 +3298,21 @@
CXType_ObjCObject = 161,
CXType_ObjCTypeParam = 162,
- CXType_Attributed = 163
+ CXType_Attributed = 163,
+
+ CXType_OCLIntelSubgroupAVCMcePayload = 164,
+ CXType_OCLIntelSubgroupAVCImePayload = 165,
+ CXType_OCLIntelSubgroupAVCRefPayload = 166,
+ CXType_OCLIntelSubgroupAVCSicPayload = 167,
+ CXType_OCLIntelSubgroupAVCMceResult = 168,
+ CXType_OCLIntelSubgroupAVCImeResult = 169,
+ CXType_OCLIntelSubgroupAVCRefResult = 170,
+ CXType_OCLIntelSubgroupAVCSicResult = 171,
+ CXType_OCLIntelSubgroupAVCImeResultSingleRefStreamout = 172,
+ CXType_OCLIntelSubgroupAVCImeResultDualRefStreamout = 173,
+ CXType_OCLIntelSubgroupAVCImeSingleRefStreamin = 174,
+
+ CXType_OCLIntelSubgroupAVCImeDualRefStreamin = 175
};
/**
@@ -3322,6 +3337,7 @@
CXCallingConv_Swift = 13,
CXCallingConv_PreserveMost = 14,
CXCallingConv_PreserveAll = 15,
+ CXCallingConv_AArch64VectorCall = 16,
CXCallingConv_Invalid = 100,
CXCallingConv_Unexposed = 200
diff --git a/linux-x64/clang/include/clang-c/Platform.h b/linux-x64/clang/include/clang-c/Platform.h
index e2a4dcc..5284b53 100644
--- a/linux-x64/clang/include/clang-c/Platform.h
+++ b/linux-x64/clang/include/clang-c/Platform.h
@@ -1,9 +1,9 @@
/*===-- clang-c/Platform.h - C Index platform decls -------------*- C -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/clang/ARCMigrate/ARCMT.h b/linux-x64/clang/include/clang/ARCMigrate/ARCMT.h
index 30c24f1..49e94a9 100644
--- a/linux-x64/clang/include/clang/ARCMigrate/ARCMT.h
+++ b/linux-x64/clang/include/clang/ARCMigrate/ARCMT.h
@@ -1,9 +1,8 @@
//===-- ARCMT.h - ARC Migration Rewriter ------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/ARCMigrate/ARCMTActions.h b/linux-x64/clang/include/clang/ARCMigrate/ARCMTActions.h
index 2571ca7..641c259 100644
--- a/linux-x64/clang/include/clang/ARCMigrate/ARCMTActions.h
+++ b/linux-x64/clang/include/clang/ARCMigrate/ARCMTActions.h
@@ -1,9 +1,8 @@
//===--- ARCMTActions.h - ARC Migrate Tool Frontend Actions -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/ARCMigrate/FileRemapper.h b/linux-x64/clang/include/clang/ARCMigrate/FileRemapper.h
index 731307f..76b65b2 100644
--- a/linux-x64/clang/include/clang/ARCMigrate/FileRemapper.h
+++ b/linux-x64/clang/include/clang/ARCMigrate/FileRemapper.h
@@ -1,9 +1,8 @@
//===-- FileRemapper.h - File Remapping Helper ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/AST/APValue.h b/linux-x64/clang/include/clang/AST/APValue.h
index d4057c9..de5546f 100644
--- a/linux-x64/clang/include/clang/AST/APValue.h
+++ b/linux-x64/clang/include/clang/AST/APValue.h
@@ -1,9 +1,8 @@
//===--- APValue.h - Union class for APFloat/APSInt/Complex -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -14,6 +13,7 @@
#ifndef LLVM_CLANG_AST_APVALUE_H
#define LLVM_CLANG_AST_APVALUE_H
+#include "clang/Basic/FixedPoint.h"
#include "clang/Basic/LLVM.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/APSInt.h"
@@ -43,6 +43,7 @@
Uninitialized,
Int,
Float,
+ FixedPoint,
ComplexInt,
ComplexFloat,
LValue,
@@ -175,6 +176,9 @@
explicit APValue(APFloat F) : Kind(Uninitialized) {
MakeFloat(); setFloat(std::move(F));
}
+ explicit APValue(APFixedPoint FX) : Kind(Uninitialized) {
+ MakeFixedPoint(std::move(FX));
+ }
explicit APValue(const APValue *E, unsigned N) : Kind(Uninitialized) {
MakeVector(); setVector(E, N);
}
@@ -233,6 +237,7 @@
bool isUninit() const { return Kind == Uninitialized; }
bool isInt() const { return Kind == Int; }
bool isFloat() const { return Kind == Float; }
+ bool isFixedPoint() const { return Kind == FixedPoint; }
bool isComplexInt() const { return Kind == ComplexInt; }
bool isComplexFloat() const { return Kind == ComplexFloat; }
bool isLValue() const { return Kind == LValue; }
@@ -257,6 +262,12 @@
return const_cast<APValue*>(this)->getInt();
}
+ /// Try to convert this value to an integral constant. This works if it's an
+ /// integer, null pointer, or offset from a null pointer. Returns true on
+ /// success.
+ bool toIntegralConstant(APSInt &Result, QualType SrcTy,
+ const ASTContext &Ctx) const;
+
APFloat &getFloat() {
assert(isFloat() && "Invalid accessor");
return *(APFloat*)(char*)Data.buffer;
@@ -265,6 +276,14 @@
return const_cast<APValue*>(this)->getFloat();
}
+ APFixedPoint &getFixedPoint() {
+ assert(isFixedPoint() && "Invalid accessor");
+ return *(APFixedPoint *)(char *)Data.buffer;
+ }
+ const APFixedPoint &getFixedPoint() const {
+ return const_cast<APValue *>(this)->getFixedPoint();
+ }
+
APSInt &getComplexIntReal() {
assert(isComplexInt() && "Invalid accessor");
return ((ComplexAPSInt*)(char*)Data.buffer)->Real;
@@ -406,6 +425,10 @@
assert(isFloat() && "Invalid accessor");
*(APFloat *)(char *)Data.buffer = std::move(F);
}
+ void setFixedPoint(APFixedPoint FX) {
+ assert(isFixedPoint() && "Invalid accessor");
+ *(APFixedPoint *)(char *)Data.buffer = std::move(FX);
+ }
void setVector(const APValue *E, unsigned N) {
assert(isVector() && "Invalid accessor");
((Vec*)(char*)Data.buffer)->Elts = new APValue[N];
@@ -465,6 +488,11 @@
new ((void*)(char*)Data.buffer) APFloat(0.0);
Kind = Float;
}
+ void MakeFixedPoint(APFixedPoint &&FX) {
+ assert(isUninit() && "Bad state change");
+ new ((void *)(char *)Data.buffer) APFixedPoint(std::move(FX));
+ Kind = FixedPoint;
+ }
void MakeVector() {
assert(isUninit() && "Bad state change");
new ((void*)(char*)Data.buffer) Vec();
diff --git a/linux-x64/clang/include/clang/AST/AST.h b/linux-x64/clang/include/clang/AST/AST.h
index 6db351d..6d0f274 100644
--- a/linux-x64/clang/include/clang/AST/AST.h
+++ b/linux-x64/clang/include/clang/AST/AST.h
@@ -1,9 +1,8 @@
//===--- AST.h - "Umbrella" header for AST library --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/ASTConsumer.h b/linux-x64/clang/include/clang/AST/ASTConsumer.h
index 1167c56..dc216a8 100644
--- a/linux-x64/clang/include/clang/AST/ASTConsumer.h
+++ b/linux-x64/clang/include/clang/AST/ASTConsumer.h
@@ -1,9 +1,8 @@
//===--- ASTConsumer.h - Abstract interface for reading ASTs ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/ASTContext.h b/linux-x64/clang/include/clang/AST/ASTContext.h
index 5b693eb..fe52f81 100644
--- a/linux-x64/clang/include/clang/AST/ASTContext.h
+++ b/linux-x64/clang/include/clang/AST/ASTContext.h
@@ -1,9 +1,8 @@
//===- ASTContext.h - Context to hold long-lived AST nodes ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -15,6 +14,7 @@
#ifndef LLVM_CLANG_AST_ASTCONTEXT_H
#define LLVM_CLANG_AST_ASTCONTEXT_H
+#include "clang/AST/ASTContextAllocate.h"
#include "clang/AST/ASTTypeTraits.h"
#include "clang/AST/CanonicalType.h"
#include "clang/AST/CommentCommandTraits.h"
@@ -569,26 +569,6 @@
IntrusiveRefCntPtr<ExternalASTSource> ExternalSource;
ASTMutationListener *Listener = nullptr;
- /// Contains parents of a node.
- using ParentVector = llvm::SmallVector<ast_type_traits::DynTypedNode, 2>;
-
- /// Maps from a node to its parents. This is used for nodes that have
- /// pointer identity only, which are more common and we can save space by
- /// only storing a unique pointer to them.
- using ParentMapPointers =
- llvm::DenseMap<const void *,
- llvm::PointerUnion4<const Decl *, const Stmt *,
- ast_type_traits::DynTypedNode *,
- ParentVector *>>;
-
- /// Parent map for nodes without pointer identity. We store a full
- /// DynTypedNode for all keys.
- using ParentMapOtherNodes =
- llvm::DenseMap<ast_type_traits::DynTypedNode,
- llvm::PointerUnion4<const Decl *, const Stmt *,
- ast_type_traits::DynTypedNode *,
- ParentVector *>>;
-
/// Container for either a single DynTypedNode or for an ArrayRef to
/// DynTypedNode. For use with ParentMap.
class DynTypedNodeList {
@@ -630,7 +610,17 @@
}
};
- /// Returns the parents of the given node.
+ // A traversal scope limits the parts of the AST visible to certain analyses.
+ // RecursiveASTVisitor::TraverseAST will only visit reachable nodes, and
+ // getParents() will only observe reachable parent edges.
+ //
+ // The scope is defined by a set of "top-level" declarations.
+ // Initially, it is the entire TU: {getTranslationUnitDecl()}.
+ // Changing the scope clears the parent cache, which is expensive to rebuild.
+ std::vector<Decl *> getTraversalScope() const { return TraversalScope; }
+ void setTraversalScope(const std::vector<Decl *> &);
+
+ /// Returns the parents of the given node (within the traversal scope).
///
/// Note that this will lazily compute the parents of all nodes
/// and store them for later retrieval. Thus, the first call is O(n)
@@ -1062,6 +1052,9 @@
CanQualType OCLSamplerTy, OCLEventTy, OCLClkEventTy;
CanQualType OCLQueueTy, OCLReserveIDTy;
CanQualType OMPArraySectionTy;
+#define EXT_OPAQUE_TYPE(ExtType, Id, Ext) \
+ CanQualType Id##Ty;
+#include "clang/Basic/OpenCLExtensionTypes.def"
// Types for deductions in C++0x [stmt.ranged]'s desugaring. Built on demand.
mutable QualType AutoDeductTy; // Deduction against 'auto'.
@@ -2009,6 +2002,9 @@
/// No error
GE_None,
+ /// Missing a type
+ GE_Missing_type,
+
/// Missing a type from <stdio.h>
GE_Missing_stdio,
@@ -2092,6 +2088,16 @@
CharUnits getTypeSizeInChars(QualType T) const;
CharUnits getTypeSizeInChars(const Type *T) const;
+ Optional<CharUnits> getTypeSizeInCharsIfKnown(QualType Ty) const {
+ if (Ty->isIncompleteType() || Ty->isDependentType())
+ return None;
+ return getTypeSizeInChars(Ty);
+ }
+
+ Optional<CharUnits> getTypeSizeInCharsIfKnown(const Type *Ty) const {
+ return getTypeSizeInCharsIfKnown(QualType(Ty, 0));
+ }
+
/// Return the ABI-specified alignment of a (complete) type \p T, in
/// bits.
unsigned getTypeAlign(QualType T) const { return getTypeInfo(T).Align; }
@@ -2630,6 +2636,12 @@
// corresponding saturated type for a given fixed point type.
QualType getCorrespondingSaturatedType(QualType Ty) const;
+ // This method accepts fixed point types and returns the corresponding signed
+ // type. Unlike getCorrespondingUnsignedType(), this only accepts unsigned
+ // fixed point types because there are unsigned integer types like bool and
+ // char8_t that don't have signed equivalents.
+ QualType getCorrespondingSignedFixedPointType(QualType Ty) const;
+
//===--------------------------------------------------------------------===//
// Integer Values
//===--------------------------------------------------------------------===//
@@ -2921,13 +2933,13 @@
// but we include it here so that ASTContext can quickly deallocate them.
llvm::PointerIntPair<StoredDeclsMap *, 1> LastSDM;
- std::unique_ptr<ParentMapPointers> PointerParents;
- std::unique_ptr<ParentMapOtherNodes> OtherParents;
+ std::vector<Decl *> TraversalScope;
+ class ParentMap;
+ std::unique_ptr<ParentMap> Parents;
std::unique_ptr<VTableContextBase> VTContext;
void ReleaseDeclContextMaps();
- void ReleaseParentMapEntries();
public:
enum PragmaSectionFlag : unsigned {
@@ -2976,8 +2988,8 @@
/// This placement form of operator new uses the ASTContext's allocator for
/// obtaining memory.
///
-/// IMPORTANT: These are also declared in clang/AST/AttrIterator.h! Any changes
-/// here need to also be made there.
+/// IMPORTANT: These are also declared in clang/AST/ASTContextAllocate.h!
+/// Any changes here need to also be made there.
///
/// We intentionally avoid using a nothrow specification here so that the calls
/// to this operator will not perform a null check on the result -- the
@@ -3000,7 +3012,7 @@
/// allocator supports it).
/// @return The allocated memory. Could be nullptr.
inline void *operator new(size_t Bytes, const clang::ASTContext &C,
- size_t Alignment) {
+ size_t Alignment /* = 8 */) {
return C.Allocate(Bytes, Alignment);
}
@@ -3038,7 +3050,7 @@
/// allocator supports it).
/// @return The allocated memory. Could be nullptr.
inline void *operator new[](size_t Bytes, const clang::ASTContext& C,
- size_t Alignment = 8) {
+ size_t Alignment /* = 8 */) {
return C.Allocate(Bytes, Alignment);
}
diff --git a/linux-x64/clang/include/clang/AST/ASTContextAllocate.h b/linux-x64/clang/include/clang/AST/ASTContextAllocate.h
new file mode 100644
index 0000000..70c8e24
--- /dev/null
+++ b/linux-x64/clang/include/clang/AST/ASTContextAllocate.h
@@ -0,0 +1,37 @@
+//===- ASTContextAllocate.h - ASTContext allocate functions -----*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file declares ASTContext allocation functions separate from the main
+// code in ASTContext.h.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_AST_ASTCONTEXTALLOCATE_H
+#define LLVM_CLANG_AST_ASTCONTEXTALLOCATE_H
+
+#include <cstddef>
+
+namespace clang {
+
+class ASTContext;
+
+} // namespace clang
+
+// Defined in ASTContext.h
+void *operator new(size_t Bytes, const clang::ASTContext &C,
+ size_t Alignment = 8);
+void *operator new[](size_t Bytes, const clang::ASTContext &C,
+ size_t Alignment = 8);
+
+// It is good practice to pair new/delete operators. Also, MSVC gives many
+// warnings if a matching delete overload is not declared, even though the
+// throw() spec guarantees it will not be implicitly called.
+void operator delete(void *Ptr, const clang::ASTContext &C, size_t);
+void operator delete[](void *Ptr, const clang::ASTContext &C, size_t);
+
+#endif // LLVM_CLANG_AST_ASTCONTEXTALLOCATE_H
diff --git a/linux-x64/clang/include/clang/AST/ASTDiagnostic.h b/linux-x64/clang/include/clang/AST/ASTDiagnostic.h
index 2534272..d6549e1 100644
--- a/linux-x64/clang/include/clang/AST/ASTDiagnostic.h
+++ b/linux-x64/clang/include/clang/AST/ASTDiagnostic.h
@@ -1,9 +1,8 @@
//===--- ASTDiagnostic.h - Diagnostics for the AST library ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -11,19 +10,9 @@
#define LLVM_CLANG_AST_ASTDIAGNOSTIC_H
#include "clang/Basic/Diagnostic.h"
+#include "clang/Basic/DiagnosticAST.h"
namespace clang {
- namespace diag {
- enum {
-#define DIAG(ENUM,FLAGS,DEFAULT_MAPPING,DESC,GROUP,\
- SFINAE,NOWERROR,SHOWINSYSHEADER,CATEGORY) ENUM,
-#define ASTSTART
-#include "clang/Basic/DiagnosticASTKinds.inc"
-#undef DIAG
- NUM_BUILTIN_AST_DIAGNOSTICS
- };
- } // end namespace diag
-
/// DiagnosticsEngine argument formatting function for diagnostics that
/// involve AST nodes.
///
diff --git a/linux-x64/clang/include/clang/AST/ASTDumperUtils.h b/linux-x64/clang/include/clang/AST/ASTDumperUtils.h
new file mode 100644
index 0000000..3e263df
--- /dev/null
+++ b/linux-x64/clang/include/clang/AST/ASTDumperUtils.h
@@ -0,0 +1,96 @@
+//===--- ASTDumperUtils.h - Printing of AST nodes -------------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements AST utilities for traversal down the tree.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_AST_ASTDUMPERUTILS_H
+#define LLVM_CLANG_AST_ASTDUMPERUTILS_H
+
+#include "llvm/Support/raw_ostream.h"
+
+namespace clang {
+
+// Colors used for various parts of the AST dump
+// Do not use bold yellow for any text. It is hard to read on white screens.
+
+struct TerminalColor {
+ llvm::raw_ostream::Colors Color;
+ bool Bold;
+};
+
+// Red - CastColor
+// Green - TypeColor
+// Bold Green - DeclKindNameColor, UndeserializedColor
+// Yellow - AddressColor, LocationColor
+// Blue - CommentColor, NullColor, IndentColor
+// Bold Blue - AttrColor
+// Bold Magenta - StmtColor
+// Cyan - ValueKindColor, ObjectKindColor
+// Bold Cyan - ValueColor, DeclNameColor
+
+// Decl kind names (VarDecl, FunctionDecl, etc)
+static const TerminalColor DeclKindNameColor = {llvm::raw_ostream::GREEN, true};
+// Attr names (CleanupAttr, GuardedByAttr, etc)
+static const TerminalColor AttrColor = {llvm::raw_ostream::BLUE, true};
+// Statement names (DeclStmt, ImplicitCastExpr, etc)
+static const TerminalColor StmtColor = {llvm::raw_ostream::MAGENTA, true};
+// Comment names (FullComment, ParagraphComment, TextComment, etc)
+static const TerminalColor CommentColor = {llvm::raw_ostream::BLUE, false};
+
+// Type names (int, float, etc, plus user defined types)
+static const TerminalColor TypeColor = {llvm::raw_ostream::GREEN, false};
+
+// Pointer address
+static const TerminalColor AddressColor = {llvm::raw_ostream::YELLOW, false};
+// Source locations
+static const TerminalColor LocationColor = {llvm::raw_ostream::YELLOW, false};
+
+// lvalue/xvalue
+static const TerminalColor ValueKindColor = {llvm::raw_ostream::CYAN, false};
+// bitfield/objcproperty/objcsubscript/vectorcomponent
+static const TerminalColor ObjectKindColor = {llvm::raw_ostream::CYAN, false};
+
+// Null statements
+static const TerminalColor NullColor = {llvm::raw_ostream::BLUE, false};
+
+// Undeserialized entities
+static const TerminalColor UndeserializedColor = {llvm::raw_ostream::GREEN,
+ true};
+
+// CastKind from CastExpr's
+static const TerminalColor CastColor = {llvm::raw_ostream::RED, false};
+
+// Value of the statement
+static const TerminalColor ValueColor = {llvm::raw_ostream::CYAN, true};
+// Decl names
+static const TerminalColor DeclNameColor = {llvm::raw_ostream::CYAN, true};
+
+// Indents ( `, -. | )
+static const TerminalColor IndentColor = {llvm::raw_ostream::BLUE, false};
+
+class ColorScope {
+ llvm::raw_ostream &OS;
+ const bool ShowColors;
+
+public:
+ ColorScope(llvm::raw_ostream &OS, bool ShowColors, TerminalColor Color)
+ : OS(OS), ShowColors(ShowColors) {
+ if (ShowColors)
+ OS.changeColor(Color.Color, Color.Bold);
+ }
+ ~ColorScope() {
+ if (ShowColors)
+ OS.resetColor();
+ }
+};
+
+} // namespace clang
+
+#endif // LLVM_CLANG_AST_ASTDUMPERUTILS_H
diff --git a/linux-x64/clang/include/clang/AST/ASTFwd.h b/linux-x64/clang/include/clang/AST/ASTFwd.h
index 038d5c3..93919bb 100644
--- a/linux-x64/clang/include/clang/AST/ASTFwd.h
+++ b/linux-x64/clang/include/clang/AST/ASTFwd.h
@@ -1,9 +1,8 @@
//===--- ASTFwd.h ----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===--------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/AST/ASTImporter.h b/linux-x64/clang/include/clang/AST/ASTImporter.h
index 311d64e..dd872b1 100644
--- a/linux-x64/clang/include/clang/AST/ASTImporter.h
+++ b/linux-x64/clang/include/clang/AST/ASTImporter.h
@@ -1,9 +1,8 @@
//===- ASTImporter.h - Importing ASTs from other Contexts -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -25,12 +24,15 @@
#include "clang/Basic/SourceLocation.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseSet.h"
+#include "llvm/ADT/Optional.h"
#include "llvm/ADT/SmallVector.h"
+#include "llvm/Support/Error.h"
#include <utility>
namespace clang {
class ASTContext;
+class ASTImporterLookupTable;
class CXXBaseSpecifier;
class CXXCtorInitializer;
class Decl;
@@ -43,6 +45,29 @@
class TypeSourceInfo;
class Attr;
+ class ImportError : public llvm::ErrorInfo<ImportError> {
+ public:
+ /// \brief Kind of error when importing an AST component.
+ enum ErrorKind {
+ NameConflict, /// Naming ambiguity (likely ODR violation).
+ UnsupportedConstruct, /// Not supported node or case.
+ Unknown /// Other error.
+ };
+
+ ErrorKind Error;
+
+ static char ID;
+
+ ImportError() : Error(Unknown) { }
+ ImportError(const ImportError &Other) : Error(Other.Error) { }
+ ImportError(ErrorKind Error) : Error(Error) { }
+
+ std::string toString() const;
+
+ void log(raw_ostream &OS) const override;
+ std::error_code convertToErrorCode() const override;
+ };
+
// \brief Returns with a list of declarations started from the canonical decl
// then followed by subsequent decls in the translation unit.
// This gives a canonical list for each entry in the redecl chain.
@@ -55,12 +80,21 @@
/// Imports selected nodes from one AST context into another context,
/// merging AST nodes where appropriate.
class ASTImporter {
+ friend class ASTNodeImporter;
public:
using NonEquivalentDeclSet = llvm::DenseSet<std::pair<Decl *, Decl *>>;
using ImportedCXXBaseSpecifierMap =
llvm::DenseMap<const CXXBaseSpecifier *, CXXBaseSpecifier *>;
private:
+
+ /// Pointer to the import specific lookup table, which may be shared
+ /// amongst several ASTImporter objects.
+ /// This is an externally managed resource (and should exist during the
+ /// lifetime of the ASTImporter object)
+ /// If not set then the original C/C++ lookup is used.
+ ASTImporterLookupTable *LookupTable = nullptr;
+
/// The contexts we're importing to and from.
ASTContext &ToContext, &FromContext;
@@ -98,9 +132,13 @@
/// (which we have already complained about).
NonEquivalentDeclSet NonEquivalentDecls;
+ using FoundDeclsTy = SmallVector<NamedDecl *, 2>;
+ FoundDeclsTy findDeclsInToCtx(DeclContext *DC, DeclarationName Name);
+
+ void AddToLookupTable(Decl *ToD);
+
public:
- /// Create a new AST importer.
- ///
+
/// \param ToContext The context we'll be importing into.
///
/// \param ToFileManager The file manager we'll be importing into.
@@ -112,9 +150,14 @@
/// \param MinimalImport If true, the importer will attempt to import
/// as little as it can, e.g., by importing declarations as forward
/// declarations that can be completed at a later point.
+ ///
+ /// \param LookupTable The importer specific lookup table which may be
+ /// shared amongst several ASTImporter objects.
+ /// If not set then the original C/C++ lookup is used.
ASTImporter(ASTContext &ToContext, FileManager &ToFileManager,
ASTContext &FromContext, FileManager &FromFileManager,
- bool MinimalImport);
+ bool MinimalImport,
+ ASTImporterLookupTable *LookupTable = nullptr);
virtual ~ASTImporter();
@@ -122,31 +165,60 @@
/// to-be-completed forward declarations when possible.
bool isMinimalImport() const { return Minimal; }
- /// Import the given type from the "from" context into the "to"
- /// context.
+ /// \brief Import the given object, returns the result.
///
- /// \returns the equivalent type in the "to" context, or a NULL type if
- /// an error occurred.
+ /// \param To Import the object into this variable.
+ /// \param From Object to import.
+ /// \return Error information (success or error).
+ template <typename ImportT>
+ LLVM_NODISCARD llvm::Error importInto(ImportT &To, const ImportT &From) {
+ To = Import(From);
+ if (From && !To)
+ return llvm::make_error<ImportError>();
+ return llvm::Error::success();
+ // FIXME: this should be the final code
+ //auto ToOrErr = Import(From);
+ //if (ToOrErr)
+ // To = *ToOrErr;
+ //return ToOrErr.takeError();
+ }
+
+ /// Import the given type from the "from" context into the "to"
+ /// context. A null type is imported as a null type (no error).
+ ///
+ /// \returns The equivalent type in the "to" context, or the import error.
+ llvm::Expected<QualType> Import_New(QualType FromT);
+ // FIXME: Remove this version.
QualType Import(QualType FromT);
/// Import the given type source information from the
/// "from" context into the "to" context.
///
- /// \returns the equivalent type source information in the "to"
- /// context, or NULL if an error occurred.
+ /// \returns The equivalent type source information in the "to"
+ /// context, or the import error.
+ llvm::Expected<TypeSourceInfo *> Import_New(TypeSourceInfo *FromTSI);
+ // FIXME: Remove this version.
TypeSourceInfo *Import(TypeSourceInfo *FromTSI);
/// Import the given attribute from the "from" context into the
/// "to" context.
///
- /// \returns the equivalent attribute in the "to" context.
+ /// \returns The equivalent attribute in the "to" context, or the import
+ /// error.
+ llvm::Expected<Attr *> Import_New(const Attr *FromAttr);
+ // FIXME: Remove this version.
Attr *Import(const Attr *FromAttr);
/// Import the given declaration from the "from" context into the
/// "to" context.
///
- /// \returns the equivalent declaration in the "to" context, or a NULL type
- /// if an error occurred.
+ /// \returns The equivalent declaration in the "to" context, or the import
+ /// error.
+ llvm::Expected<Decl *> Import_New(Decl *FromD);
+ llvm::Expected<Decl *> Import_New(const Decl *FromD) {
+ return Import_New(const_cast<Decl *>(FromD));
+ }
+ // FIXME: Remove this version.
Decl *Import(Decl *FromD);
Decl *Import(const Decl *FromD) {
return Import(const_cast<Decl *>(FromD));
@@ -155,104 +227,137 @@
/// Return the copy of the given declaration in the "to" context if
/// it has already been imported from the "from" context. Otherwise return
/// NULL.
- Decl *GetAlreadyImportedOrNull(Decl *FromD);
+ Decl *GetAlreadyImportedOrNull(const Decl *FromD) const;
/// Import the given declaration context from the "from"
/// AST context into the "to" AST context.
///
/// \returns the equivalent declaration context in the "to"
- /// context, or a NULL type if an error occurred.
- DeclContext *ImportContext(DeclContext *FromDC);
+ /// context, or error value.
+ llvm::Expected<DeclContext *> ImportContext(DeclContext *FromDC);
/// Import the given expression from the "from" context into the
/// "to" context.
///
- /// \returns the equivalent expression in the "to" context, or NULL if
- /// an error occurred.
+ /// \returns The equivalent expression in the "to" context, or the import
+ /// error.
+ llvm::Expected<Expr *> Import_New(Expr *FromE);
+ // FIXME: Remove this version.
Expr *Import(Expr *FromE);
/// Import the given statement from the "from" context into the
/// "to" context.
///
- /// \returns the equivalent statement in the "to" context, or NULL if
- /// an error occurred.
+ /// \returns The equivalent statement in the "to" context, or the import
+ /// error.
+ llvm::Expected<Stmt *> Import_New(Stmt *FromS);
+ // FIXME: Remove this version.
Stmt *Import(Stmt *FromS);
/// Import the given nested-name-specifier from the "from"
/// context into the "to" context.
///
- /// \returns the equivalent nested-name-specifier in the "to"
- /// context, or NULL if an error occurred.
+ /// \returns The equivalent nested-name-specifier in the "to"
+ /// context, or the import error.
+ llvm::Expected<NestedNameSpecifier *>
+ Import_New(NestedNameSpecifier *FromNNS);
+ // FIXME: Remove this version.
NestedNameSpecifier *Import(NestedNameSpecifier *FromNNS);
- /// Import the given nested-name-specifier from the "from"
+ /// Import the given nested-name-specifier-loc from the "from"
/// context into the "to" context.
///
- /// \returns the equivalent nested-name-specifier in the "to"
- /// context.
+ /// \returns The equivalent nested-name-specifier-loc in the "to"
+ /// context, or the import error.
+ llvm::Expected<NestedNameSpecifierLoc>
+ Import_New(NestedNameSpecifierLoc FromNNS);
+ // FIXME: Remove this version.
NestedNameSpecifierLoc Import(NestedNameSpecifierLoc FromNNS);
- /// Import the goven template name from the "from" context into the
- /// "to" context.
+ /// Import the given template name from the "from" context into the
+ /// "to" context, or the import error.
+ llvm::Expected<TemplateName> Import_New(TemplateName From);
+ // FIXME: Remove this version.
TemplateName Import(TemplateName From);
/// Import the given source location from the "from" context into
/// the "to" context.
///
- /// \returns the equivalent source location in the "to" context, or an
- /// invalid source location if an error occurred.
+ /// \returns The equivalent source location in the "to" context, or the
+ /// import error.
+ llvm::Expected<SourceLocation> Import_New(SourceLocation FromLoc);
+ // FIXME: Remove this version.
SourceLocation Import(SourceLocation FromLoc);
/// Import the given source range from the "from" context into
/// the "to" context.
///
- /// \returns the equivalent source range in the "to" context, or an
- /// invalid source location if an error occurred.
+ /// \returns The equivalent source range in the "to" context, or the import
+ /// error.
+ llvm::Expected<SourceRange> Import_New(SourceRange FromRange);
+ // FIXME: Remove this version.
SourceRange Import(SourceRange FromRange);
/// Import the given declaration name from the "from"
/// context into the "to" context.
///
- /// \returns the equivalent declaration name in the "to" context,
- /// or an empty declaration name if an error occurred.
+ /// \returns The equivalent declaration name in the "to" context, or the
+ /// import error.
+ llvm::Expected<DeclarationName> Import_New(DeclarationName FromName);
+ // FIXME: Remove this version.
DeclarationName Import(DeclarationName FromName);
/// Import the given identifier from the "from" context
/// into the "to" context.
///
- /// \returns the equivalent identifier in the "to" context.
+ /// \returns The equivalent identifier in the "to" context. Note: It
+ /// returns nullptr only if the FromId was nullptr.
IdentifierInfo *Import(const IdentifierInfo *FromId);
/// Import the given Objective-C selector from the "from"
/// context into the "to" context.
///
- /// \returns the equivalent selector in the "to" context.
+ /// \returns The equivalent selector in the "to" context, or the import
+ /// error.
+ llvm::Expected<Selector> Import_New(Selector FromSel);
+ // FIXME: Remove this version.
Selector Import(Selector FromSel);
/// Import the given file ID from the "from" context into the
/// "to" context.
///
- /// \returns the equivalent file ID in the source manager of the "to"
- /// context.
+ /// \returns The equivalent file ID in the source manager of the "to"
+ /// context, or the import error.
+ llvm::Expected<FileID> Import_New(FileID);
+ // FIXME: Remove this version.
FileID Import(FileID);
/// Import the given C++ constructor initializer from the "from"
/// context into the "to" context.
///
- /// \returns the equivalent initializer in the "to" context.
+ /// \returns The equivalent initializer in the "to" context, or the import
+ /// error.
+ llvm::Expected<CXXCtorInitializer *>
+ Import_New(CXXCtorInitializer *FromInit);
+ // FIXME: Remove this version.
CXXCtorInitializer *Import(CXXCtorInitializer *FromInit);
/// Import the given CXXBaseSpecifier from the "from" context into
/// the "to" context.
///
- /// \returns the equivalent CXXBaseSpecifier in the source manager of the
- /// "to" context.
+ /// \returns The equivalent CXXBaseSpecifier in the source manager of the
+ /// "to" context, or the import error.
+ llvm::Expected<CXXBaseSpecifier *>
+ Import_New(const CXXBaseSpecifier *FromSpec);
+ // FIXME: Remove this version.
CXXBaseSpecifier *Import(const CXXBaseSpecifier *FromSpec);
/// Import the definition of the given declaration, including all of
/// the declarations it contains.
- ///
- /// This routine is intended to be used
+ LLVM_NODISCARD llvm::Error ImportDefinition_New(Decl *From);
+
+ // FIXME: Compatibility function.
+ // Usages of this should be changed to ImportDefinition_New.
void ImportDefinition(Decl *From);
/// Cope with a name conflict when importing a declaration into the
@@ -336,9 +441,9 @@
/// Determine the index of a field in its parent record.
/// F should be a field (or indirect field) declaration.
- /// \returns The index of the field in its parent context, starting from 1.
- /// 0 is returned on error (parent context is non-record).
- static unsigned getFieldIndex(Decl *F);
+ /// \returns The index of the field in its parent context (starting from 0).
+ /// On error `None` is returned (parent context is non-record).
+ static llvm::Optional<unsigned> getFieldIndex(Decl *F);
};
diff --git a/linux-x64/clang/include/clang/AST/ASTImporterLookupTable.h b/linux-x64/clang/include/clang/AST/ASTImporterLookupTable.h
new file mode 100644
index 0000000..407478a
--- /dev/null
+++ b/linux-x64/clang/include/clang/AST/ASTImporterLookupTable.h
@@ -0,0 +1,74 @@
+//===- ASTImporterLookupTable.h - ASTImporter specific lookup--*- C++ -*---===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines the ASTImporterLookupTable class which implements a
+// lookup procedure for the import mechanism.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_AST_ASTIMPORTERLOOKUPTABLE_H
+#define LLVM_CLANG_AST_ASTIMPORTERLOOKUPTABLE_H
+
+#include "clang/AST/DeclBase.h" // lookup_result
+#include "clang/AST/DeclarationName.h"
+#include "llvm/ADT/DenseMap.h"
+#include "llvm/ADT/SetVector.h"
+
+namespace clang {
+
+class ASTContext;
+class NamedDecl;
+class DeclContext;
+
+// There are certain cases when normal C/C++ lookup (localUncachedLookup)
+// does not find AST nodes. E.g.:
+// Example 1:
+// template <class T>
+// struct X {
+// friend void foo(); // this is never found in the DC of the TU.
+// };
+// Example 2:
+// // The fwd decl to Foo is not found in the lookupPtr of the DC of the
+// // translation unit decl.
+// // Here we could find the node by doing a traverse throught the list of
+// // the Decls in the DC, but that would not scale.
+// struct A { struct Foo *p; };
+// This is a severe problem because the importer decides if it has to create a
+// new Decl or not based on the lookup results.
+// To overcome these cases we need an importer specific lookup table which
+// holds every node and we are not interested in any C/C++ specific visibility
+// considerations. Simply, we must know if there is an existing Decl in a
+// given DC. Once we found it then we can handle any visibility related tasks.
+class ASTImporterLookupTable {
+
+ // We store a list of declarations for each name.
+ // And we collect these lists for each DeclContext.
+ // We could have a flat map with (DeclContext, Name) tuple as key, but a two
+ // level map seems easier to handle.
+ using DeclList = llvm::SmallSetVector<NamedDecl *, 2>;
+ using NameMap = llvm::SmallDenseMap<DeclarationName, DeclList, 4>;
+ using DCMap = llvm::DenseMap<DeclContext *, NameMap>;
+
+ void add(DeclContext *DC, NamedDecl *ND);
+ void remove(DeclContext *DC, NamedDecl *ND);
+
+ DCMap LookupTable;
+
+public:
+ ASTImporterLookupTable(TranslationUnitDecl &TU);
+ void add(NamedDecl *ND);
+ void remove(NamedDecl *ND);
+ using LookupResult = DeclList;
+ LookupResult lookup(DeclContext *DC, DeclarationName Name) const;
+ void dump(DeclContext *DC) const;
+ void dump() const;
+};
+
+} // namespace clang
+
+#endif // LLVM_CLANG_AST_ASTIMPORTERLOOKUPTABLE_H
diff --git a/linux-x64/clang/include/clang/AST/ASTLambda.h b/linux-x64/clang/include/clang/AST/ASTLambda.h
index 6fedcb8..c115316 100644
--- a/linux-x64/clang/include/clang/AST/ASTLambda.h
+++ b/linux-x64/clang/include/clang/AST/ASTLambda.h
@@ -1,9 +1,8 @@
//===--- ASTLambda.h - Lambda Helper Functions --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/AST/ASTMutationListener.h b/linux-x64/clang/include/clang/AST/ASTMutationListener.h
index 80184e1..ac115d4 100644
--- a/linux-x64/clang/include/clang/AST/ASTMutationListener.h
+++ b/linux-x64/clang/include/clang/AST/ASTMutationListener.h
@@ -1,9 +1,8 @@
//===--- ASTMutationListener.h - AST Mutation Interface --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/ASTNodeTraverser.h b/linux-x64/clang/include/clang/AST/ASTNodeTraverser.h
new file mode 100644
index 0000000..44c6f54
--- /dev/null
+++ b/linux-x64/clang/include/clang/AST/ASTNodeTraverser.h
@@ -0,0 +1,621 @@
+//===--- ASTNodeTraverser.h - Traversal of AST nodes ----------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements the AST traversal facilities. Other users
+// of this class may make use of the same traversal logic by inheriting it,
+// similar to RecursiveASTVisitor.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_AST_ASTNODETRAVERSER_H
+#define LLVM_CLANG_AST_ASTNODETRAVERSER_H
+
+#include "clang/AST/AttrVisitor.h"
+#include "clang/AST/CommentVisitor.h"
+#include "clang/AST/DeclVisitor.h"
+#include "clang/AST/LocInfoType.h"
+#include "clang/AST/StmtVisitor.h"
+#include "clang/AST/TemplateArgumentVisitor.h"
+#include "clang/AST/TypeVisitor.h"
+
+namespace clang {
+
+/**
+
+ASTNodeTraverser traverses the Clang AST for dumping purposes.
+
+The `Derived::doGetNodeDelegate()` method is required to be an accessible member
+which returns a reference of type `NodeDelegateType &` which implements the
+following interface:
+
+struct {
+ template <typename Fn> void AddChild(Fn DoAddChild);
+ template <typename Fn> void AddChild(StringRef Label, Fn DoAddChild);
+
+ void Visit(const comments::Comment *C, const comments::FullComment *FC);
+ void Visit(const Attr *A);
+ void Visit(const TemplateArgument &TA, SourceRange R = {},
+ const Decl *From = nullptr, StringRef Label = {});
+ void Visit(const Stmt *Node);
+ void Visit(const Type *T);
+ void Visit(QualType T);
+ void Visit(const Decl *D);
+ void Visit(const CXXCtorInitializer *Init);
+ void Visit(const OMPClause *C);
+ void Visit(const BlockDecl::Capture &C);
+ void Visit(const GenericSelectionExpr::ConstAssociation &A);
+};
+*/
+template <typename Derived, typename NodeDelegateType>
+class ASTNodeTraverser
+ : public ConstDeclVisitor<Derived>,
+ public ConstStmtVisitor<Derived>,
+ public comments::ConstCommentVisitor<Derived, void,
+ const comments::FullComment *>,
+ public TypeVisitor<Derived>,
+ public ConstAttrVisitor<Derived>,
+ public ConstTemplateArgumentVisitor<Derived> {
+
+ /// Indicates whether we should trigger deserialization of nodes that had
+ /// not already been loaded.
+ bool Deserialize = false;
+
+ NodeDelegateType &getNodeDelegate() {
+ return getDerived().doGetNodeDelegate();
+ }
+ Derived &getDerived() { return *static_cast<Derived *>(this); }
+
+public:
+ void setDeserialize(bool D) { Deserialize = D; }
+ bool getDeserialize() const { return Deserialize; }
+
+ void Visit(const Decl *D) {
+ getNodeDelegate().AddChild([=] {
+ getNodeDelegate().Visit(D);
+ if (!D)
+ return;
+
+ ConstDeclVisitor<Derived>::Visit(D);
+
+ for (const auto &A : D->attrs())
+ Visit(A);
+
+ if (const comments::FullComment *Comment =
+ D->getASTContext().getLocalCommentForDeclUncached(D))
+ Visit(Comment, Comment);
+
+ // Decls within functions are visited by the body.
+ if (!isa<FunctionDecl>(*D) && !isa<ObjCMethodDecl>(*D)) {
+ if (const auto *DC = dyn_cast<DeclContext>(D))
+ dumpDeclContext(DC);
+ }
+ });
+ }
+
+ void Visit(const Stmt *S, StringRef Label = {}) {
+ getNodeDelegate().AddChild(Label, [=] {
+ getNodeDelegate().Visit(S);
+
+ if (!S) {
+ return;
+ }
+
+ ConstStmtVisitor<Derived>::Visit(S);
+
+ // Some statements have custom mechanisms for dumping their children.
+ if (isa<DeclStmt>(S) || isa<GenericSelectionExpr>(S)) {
+ return;
+ }
+
+ for (const Stmt *SubStmt : S->children())
+ Visit(SubStmt);
+ });
+ }
+
+ void Visit(QualType T) {
+ SplitQualType SQT = T.split();
+ if (!SQT.Quals.hasQualifiers())
+ return Visit(SQT.Ty);
+
+ getNodeDelegate().AddChild([=] {
+ getNodeDelegate().Visit(T);
+ Visit(T.split().Ty);
+ });
+ }
+
+ void Visit(const Type *T) {
+ getNodeDelegate().AddChild([=] {
+ getNodeDelegate().Visit(T);
+ if (!T)
+ return;
+ TypeVisitor<Derived>::Visit(T);
+
+ QualType SingleStepDesugar =
+ T->getLocallyUnqualifiedSingleStepDesugaredType();
+ if (SingleStepDesugar != QualType(T, 0))
+ Visit(SingleStepDesugar);
+ });
+ }
+
+ void Visit(const Attr *A) {
+ getNodeDelegate().AddChild([=] {
+ getNodeDelegate().Visit(A);
+ ConstAttrVisitor<Derived>::Visit(A);
+ });
+ }
+
+ void Visit(const CXXCtorInitializer *Init) {
+ getNodeDelegate().AddChild([=] {
+ getNodeDelegate().Visit(Init);
+ Visit(Init->getInit());
+ });
+ }
+
+ void Visit(const TemplateArgument &A, SourceRange R = {},
+ const Decl *From = nullptr, const char *Label = nullptr) {
+ getNodeDelegate().AddChild([=] {
+ getNodeDelegate().Visit(A, R, From, Label);
+ ConstTemplateArgumentVisitor<Derived>::Visit(A);
+ });
+ }
+
+ void Visit(const BlockDecl::Capture &C) {
+ getNodeDelegate().AddChild([=] {
+ getNodeDelegate().Visit(C);
+ if (C.hasCopyExpr())
+ Visit(C.getCopyExpr());
+ });
+ }
+
+ void Visit(const OMPClause *C) {
+ getNodeDelegate().AddChild([=] {
+ getNodeDelegate().Visit(C);
+ for (const auto *S : C->children())
+ Visit(S);
+ });
+ }
+
+ void Visit(const GenericSelectionExpr::ConstAssociation &A) {
+ getNodeDelegate().AddChild([=] {
+ getNodeDelegate().Visit(A);
+ if (const TypeSourceInfo *TSI = A.getTypeSourceInfo())
+ Visit(TSI->getType());
+ Visit(A.getAssociationExpr());
+ });
+ }
+
+ void Visit(const comments::Comment *C, const comments::FullComment *FC) {
+ getNodeDelegate().AddChild([=] {
+ getNodeDelegate().Visit(C, FC);
+ if (!C) {
+ return;
+ }
+ comments::ConstCommentVisitor<Derived, void,
+ const comments::FullComment *>::visit(C,
+ FC);
+ for (comments::Comment::child_iterator I = C->child_begin(),
+ E = C->child_end();
+ I != E; ++I)
+ Visit(*I, FC);
+ });
+ }
+
+ void dumpDeclContext(const DeclContext *DC) {
+ if (!DC)
+ return;
+
+ for (const auto *D : (Deserialize ? DC->decls() : DC->noload_decls()))
+ Visit(D);
+ }
+
+ void dumpTemplateParameters(const TemplateParameterList *TPL) {
+ if (!TPL)
+ return;
+
+ for (const auto &TP : *TPL)
+ Visit(TP);
+ }
+
+ void dumpTemplateArgumentListInfo(const TemplateArgumentListInfo &TALI) {
+ for (const auto &TA : TALI.arguments())
+ dumpTemplateArgumentLoc(TA);
+ }
+
+ void dumpTemplateArgumentLoc(const TemplateArgumentLoc &A,
+ const Decl *From = nullptr,
+ const char *Label = nullptr) {
+ Visit(A.getArgument(), A.getSourceRange(), From, Label);
+ }
+
+ void dumpTemplateArgumentList(const TemplateArgumentList &TAL) {
+ for (unsigned i = 0, e = TAL.size(); i < e; ++i)
+ Visit(TAL[i]);
+ }
+
+ void dumpObjCTypeParamList(const ObjCTypeParamList *typeParams) {
+ if (!typeParams)
+ return;
+
+ for (const auto &typeParam : *typeParams) {
+ Visit(typeParam);
+ }
+ }
+
+ void VisitComplexType(const ComplexType *T) { Visit(T->getElementType()); }
+ void VisitLocInfoType(const LocInfoType *T) {
+ Visit(T->getTypeSourceInfo()->getType());
+ }
+ void VisitPointerType(const PointerType *T) { Visit(T->getPointeeType()); }
+ void VisitBlockPointerType(const BlockPointerType *T) {
+ Visit(T->getPointeeType());
+ }
+ void VisitReferenceType(const ReferenceType *T) {
+ Visit(T->getPointeeType());
+ }
+ void VisitMemberPointerType(const MemberPointerType *T) {
+ Visit(T->getClass());
+ Visit(T->getPointeeType());
+ }
+ void VisitArrayType(const ArrayType *T) { Visit(T->getElementType()); }
+ void VisitVariableArrayType(const VariableArrayType *T) {
+ VisitArrayType(T);
+ Visit(T->getSizeExpr());
+ }
+ void VisitDependentSizedArrayType(const DependentSizedArrayType *T) {
+ Visit(T->getElementType());
+ Visit(T->getSizeExpr());
+ }
+ void VisitDependentSizedExtVectorType(const DependentSizedExtVectorType *T) {
+ Visit(T->getElementType());
+ Visit(T->getSizeExpr());
+ }
+ void VisitVectorType(const VectorType *T) { Visit(T->getElementType()); }
+ void VisitFunctionType(const FunctionType *T) { Visit(T->getReturnType()); }
+ void VisitFunctionProtoType(const FunctionProtoType *T) {
+ VisitFunctionType(T);
+ for (const QualType &PT : T->getParamTypes())
+ Visit(PT);
+ }
+ void VisitTypeOfExprType(const TypeOfExprType *T) {
+ Visit(T->getUnderlyingExpr());
+ }
+ void VisitDecltypeType(const DecltypeType *T) {
+ Visit(T->getUnderlyingExpr());
+ }
+ void VisitUnaryTransformType(const UnaryTransformType *T) {
+ Visit(T->getBaseType());
+ }
+ void VisitAttributedType(const AttributedType *T) {
+ // FIXME: AttrKind
+ Visit(T->getModifiedType());
+ }
+ void VisitSubstTemplateTypeParmType(const SubstTemplateTypeParmType *T) {
+ Visit(T->getReplacedParameter());
+ }
+ void
+ VisitSubstTemplateTypeParmPackType(const SubstTemplateTypeParmPackType *T) {
+ Visit(T->getReplacedParameter());
+ Visit(T->getArgumentPack());
+ }
+ void VisitTemplateSpecializationType(const TemplateSpecializationType *T) {
+ for (const auto &Arg : *T)
+ Visit(Arg);
+ if (T->isTypeAlias())
+ Visit(T->getAliasedType());
+ }
+ void VisitObjCObjectPointerType(const ObjCObjectPointerType *T) {
+ Visit(T->getPointeeType());
+ }
+ void VisitAtomicType(const AtomicType *T) { Visit(T->getValueType()); }
+ void VisitPipeType(const PipeType *T) { Visit(T->getElementType()); }
+ void VisitAdjustedType(const AdjustedType *T) { Visit(T->getOriginalType()); }
+ void VisitPackExpansionType(const PackExpansionType *T) {
+ if (!T->isSugared())
+ Visit(T->getPattern());
+ }
+ // FIXME: ElaboratedType, DependentNameType,
+ // DependentTemplateSpecializationType, ObjCObjectType
+
+ void VisitTypedefDecl(const TypedefDecl *D) { Visit(D->getUnderlyingType()); }
+
+ void VisitEnumConstantDecl(const EnumConstantDecl *D) {
+ if (const Expr *Init = D->getInitExpr())
+ Visit(Init);
+ }
+
+ void VisitFunctionDecl(const FunctionDecl *D) {
+ if (const auto *FTSI = D->getTemplateSpecializationInfo())
+ dumpTemplateArgumentList(*FTSI->TemplateArguments);
+
+ if (D->param_begin())
+ for (const auto *Parameter : D->parameters())
+ Visit(Parameter);
+
+ if (const auto *C = dyn_cast<CXXConstructorDecl>(D))
+ for (const auto *I : C->inits())
+ Visit(I);
+
+ if (D->doesThisDeclarationHaveABody())
+ Visit(D->getBody());
+ }
+
+ void VisitFieldDecl(const FieldDecl *D) {
+ if (D->isBitField())
+ Visit(D->getBitWidth());
+ if (Expr *Init = D->getInClassInitializer())
+ Visit(Init);
+ }
+
+ void VisitVarDecl(const VarDecl *D) {
+ if (D->hasInit())
+ Visit(D->getInit());
+ }
+
+ void VisitDecompositionDecl(const DecompositionDecl *D) {
+ VisitVarDecl(D);
+ for (const auto *B : D->bindings())
+ Visit(B);
+ }
+
+ void VisitBindingDecl(const BindingDecl *D) {
+ if (const auto *E = D->getBinding())
+ Visit(E);
+ }
+
+ void VisitFileScopeAsmDecl(const FileScopeAsmDecl *D) {
+ Visit(D->getAsmString());
+ }
+
+ void VisitCapturedDecl(const CapturedDecl *D) { Visit(D->getBody()); }
+
+ void VisitOMPThreadPrivateDecl(const OMPThreadPrivateDecl *D) {
+ for (const auto *E : D->varlists())
+ Visit(E);
+ }
+
+ void VisitOMPDeclareReductionDecl(const OMPDeclareReductionDecl *D) {
+ Visit(D->getCombiner());
+ if (const auto *Initializer = D->getInitializer())
+ Visit(Initializer);
+ }
+
+ void VisitOMPDeclareMapperDecl(const OMPDeclareMapperDecl *D) {
+ for (const auto *C : D->clauselists())
+ Visit(C);
+ }
+
+ void VisitOMPCapturedExprDecl(const OMPCapturedExprDecl *D) {
+ Visit(D->getInit());
+ }
+
+ template <typename SpecializationDecl>
+ void dumpTemplateDeclSpecialization(const SpecializationDecl *D) {
+ for (const auto *RedeclWithBadType : D->redecls()) {
+ // FIXME: The redecls() range sometimes has elements of a less-specific
+ // type. (In particular, ClassTemplateSpecializationDecl::redecls() gives
+ // us TagDecls, and should give CXXRecordDecls).
+ auto *Redecl = dyn_cast<SpecializationDecl>(RedeclWithBadType);
+ if (!Redecl) {
+ // Found the injected-class-name for a class template. This will be
+ // dumped as part of its surrounding class so we don't need to dump it
+ // here.
+ assert(isa<CXXRecordDecl>(RedeclWithBadType) &&
+ "expected an injected-class-name");
+ continue;
+ }
+ Visit(Redecl);
+ }
+ }
+
+ template <typename TemplateDecl>
+ void dumpTemplateDecl(const TemplateDecl *D) {
+ dumpTemplateParameters(D->getTemplateParameters());
+
+ Visit(D->getTemplatedDecl());
+
+ for (const auto *Child : D->specializations())
+ dumpTemplateDeclSpecialization(Child);
+ }
+
+ void VisitTypeAliasDecl(const TypeAliasDecl *D) {
+ Visit(D->getUnderlyingType());
+ }
+
+ void VisitTypeAliasTemplateDecl(const TypeAliasTemplateDecl *D) {
+ dumpTemplateParameters(D->getTemplateParameters());
+ Visit(D->getTemplatedDecl());
+ }
+
+ void VisitStaticAssertDecl(const StaticAssertDecl *D) {
+ Visit(D->getAssertExpr());
+ Visit(D->getMessage());
+ }
+
+ void VisitFunctionTemplateDecl(const FunctionTemplateDecl *D) {
+ dumpTemplateDecl(D);
+ }
+
+ void VisitClassTemplateDecl(const ClassTemplateDecl *D) {
+ dumpTemplateDecl(D);
+ }
+
+ void VisitClassTemplateSpecializationDecl(
+ const ClassTemplateSpecializationDecl *D) {
+ dumpTemplateArgumentList(D->getTemplateArgs());
+ }
+
+ void VisitClassTemplatePartialSpecializationDecl(
+ const ClassTemplatePartialSpecializationDecl *D) {
+ VisitClassTemplateSpecializationDecl(D);
+ dumpTemplateParameters(D->getTemplateParameters());
+ }
+
+ void VisitClassScopeFunctionSpecializationDecl(
+ const ClassScopeFunctionSpecializationDecl *D) {
+ Visit(D->getSpecialization());
+ if (D->hasExplicitTemplateArgs())
+ dumpTemplateArgumentListInfo(D->templateArgs());
+ }
+ void VisitVarTemplateDecl(const VarTemplateDecl *D) { dumpTemplateDecl(D); }
+
+ void VisitBuiltinTemplateDecl(const BuiltinTemplateDecl *D) {
+ dumpTemplateParameters(D->getTemplateParameters());
+ }
+
+ void
+ VisitVarTemplateSpecializationDecl(const VarTemplateSpecializationDecl *D) {
+ dumpTemplateArgumentList(D->getTemplateArgs());
+ VisitVarDecl(D);
+ }
+
+ void VisitVarTemplatePartialSpecializationDecl(
+ const VarTemplatePartialSpecializationDecl *D) {
+ dumpTemplateParameters(D->getTemplateParameters());
+ VisitVarTemplateSpecializationDecl(D);
+ }
+
+ void VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *D) {
+ if (D->hasDefaultArgument())
+ Visit(D->getDefaultArgument(), SourceRange(),
+ D->getDefaultArgStorage().getInheritedFrom(),
+ D->defaultArgumentWasInherited() ? "inherited from" : "previous");
+ }
+
+ void VisitNonTypeTemplateParmDecl(const NonTypeTemplateParmDecl *D) {
+ if (D->hasDefaultArgument())
+ Visit(D->getDefaultArgument(), SourceRange(),
+ D->getDefaultArgStorage().getInheritedFrom(),
+ D->defaultArgumentWasInherited() ? "inherited from" : "previous");
+ }
+
+ void VisitTemplateTemplateParmDecl(const TemplateTemplateParmDecl *D) {
+ dumpTemplateParameters(D->getTemplateParameters());
+ if (D->hasDefaultArgument())
+ dumpTemplateArgumentLoc(
+ D->getDefaultArgument(), D->getDefaultArgStorage().getInheritedFrom(),
+ D->defaultArgumentWasInherited() ? "inherited from" : "previous");
+ }
+
+ void VisitUsingShadowDecl(const UsingShadowDecl *D) {
+ if (auto *TD = dyn_cast<TypeDecl>(D->getUnderlyingDecl()))
+ Visit(TD->getTypeForDecl());
+ }
+
+ void VisitFriendDecl(const FriendDecl *D) {
+ if (!D->getFriendType())
+ Visit(D->getFriendDecl());
+ }
+
+ void VisitObjCMethodDecl(const ObjCMethodDecl *D) {
+ if (D->isThisDeclarationADefinition())
+ dumpDeclContext(D);
+ else
+ for (const ParmVarDecl *Parameter : D->parameters())
+ Visit(Parameter);
+
+ if (D->hasBody())
+ Visit(D->getBody());
+ }
+
+ void VisitObjCCategoryDecl(const ObjCCategoryDecl *D) {
+ dumpObjCTypeParamList(D->getTypeParamList());
+ }
+
+ void VisitObjCInterfaceDecl(const ObjCInterfaceDecl *D) {
+ dumpObjCTypeParamList(D->getTypeParamListAsWritten());
+ }
+
+ void VisitObjCImplementationDecl(const ObjCImplementationDecl *D) {
+ for (const auto &I : D->inits())
+ Visit(I);
+ }
+
+ void VisitBlockDecl(const BlockDecl *D) {
+ for (const auto &I : D->parameters())
+ Visit(I);
+
+ for (const auto &I : D->captures())
+ Visit(I);
+ Visit(D->getBody());
+ }
+
+ void VisitDeclStmt(const DeclStmt *Node) {
+ for (const auto &D : Node->decls())
+ Visit(D);
+ }
+
+ void VisitAttributedStmt(const AttributedStmt *Node) {
+ for (const auto *A : Node->getAttrs())
+ Visit(A);
+ }
+
+ void VisitCXXCatchStmt(const CXXCatchStmt *Node) {
+ Visit(Node->getExceptionDecl());
+ }
+
+ void VisitCapturedStmt(const CapturedStmt *Node) {
+ Visit(Node->getCapturedDecl());
+ }
+
+ void VisitOMPExecutableDirective(const OMPExecutableDirective *Node) {
+ for (const auto *C : Node->clauses())
+ Visit(C);
+ }
+
+ void VisitInitListExpr(const InitListExpr *ILE) {
+ if (auto *Filler = ILE->getArrayFiller()) {
+ Visit(Filler, "array_filler");
+ }
+ }
+
+ void VisitBlockExpr(const BlockExpr *Node) { Visit(Node->getBlockDecl()); }
+
+ void VisitOpaqueValueExpr(const OpaqueValueExpr *Node) {
+ if (Expr *Source = Node->getSourceExpr())
+ Visit(Source);
+ }
+
+ void VisitGenericSelectionExpr(const GenericSelectionExpr *E) {
+ Visit(E->getControllingExpr());
+ Visit(E->getControllingExpr()->getType()); // FIXME: remove
+
+ for (const auto &Assoc : E->associations()) {
+ Visit(Assoc);
+ }
+ }
+
+ void VisitLambdaExpr(const LambdaExpr *Node) {
+ Visit(Node->getLambdaClass());
+ }
+
+ void VisitSizeOfPackExpr(const SizeOfPackExpr *Node) {
+ if (Node->isPartiallySubstituted())
+ for (const auto &A : Node->getPartialArguments())
+ Visit(A);
+ }
+
+ void VisitObjCAtCatchStmt(const ObjCAtCatchStmt *Node) {
+ if (const VarDecl *CatchParam = Node->getCatchParamDecl())
+ Visit(CatchParam);
+ }
+
+ void VisitExpressionTemplateArgument(const TemplateArgument &TA) {
+ Visit(TA.getAsExpr());
+ }
+ void VisitPackTemplateArgument(const TemplateArgument &TA) {
+ for (const auto &TArg : TA.pack_elements())
+ Visit(TArg);
+ }
+
+ // Implements Visit methods for Attrs.
+#include "clang/AST/AttrNodeTraverse.inc"
+};
+
+} // namespace clang
+
+#endif // LLVM_CLANG_AST_ASTNODETRAVERSER_H
diff --git a/linux-x64/clang/include/clang/AST/ASTStructuralEquivalence.h b/linux-x64/clang/include/clang/AST/ASTStructuralEquivalence.h
index 2037796..2fcc0ea 100644
--- a/linux-x64/clang/include/clang/AST/ASTStructuralEquivalence.h
+++ b/linux-x64/clang/include/clang/AST/ASTStructuralEquivalence.h
@@ -1,9 +1,8 @@
//===- ASTStructuralEquivalence.h -------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -15,6 +14,7 @@
#ifndef LLVM_CLANG_AST_ASTSTRUCTURALEQUIVALENCE_H
#define LLVM_CLANG_AST_ASTSTRUCTURALEQUIVALENCE_H
+#include "clang/AST/DeclBase.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/Optional.h"
diff --git a/linux-x64/clang/include/clang/AST/ASTTypeTraits.h b/linux-x64/clang/include/clang/AST/ASTTypeTraits.h
index 9df9793..71c0ec4 100644
--- a/linux-x64/clang/include/clang/AST/ASTTypeTraits.h
+++ b/linux-x64/clang/include/clang/AST/ASTTypeTraits.h
@@ -1,9 +1,8 @@
//===--- ASTTypeTraits.h ----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/ASTUnresolvedSet.h b/linux-x64/clang/include/clang/AST/ASTUnresolvedSet.h
index 9bf63bb..8d2b23b 100644
--- a/linux-x64/clang/include/clang/AST/ASTUnresolvedSet.h
+++ b/linux-x64/clang/include/clang/AST/ASTUnresolvedSet.h
@@ -1,9 +1,8 @@
//===- ASTUnresolvedSet.h - Unresolved sets of declarations -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/ASTVector.h b/linux-x64/clang/include/clang/AST/ASTVector.h
index 80cd6b7..d5a0476 100644
--- a/linux-x64/clang/include/clang/AST/ASTVector.h
+++ b/linux-x64/clang/include/clang/AST/ASTVector.h
@@ -1,9 +1,8 @@
//===- ASTVector.h - Vector that uses ASTContext for allocation ---*- C++ -*-=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -18,6 +17,7 @@
#ifndef LLVM_CLANG_AST_ASTVECTOR_H
#define LLVM_CLANG_AST_ASTVECTOR_H
+#include "clang/AST/ASTContextAllocate.h"
#include "llvm/ADT/PointerIntPair.h"
#include <algorithm>
#include <cassert>
diff --git a/linux-x64/clang/include/clang/AST/Attr.h b/linux-x64/clang/include/clang/AST/Attr.h
index 4ee0839..1fbed7c 100644
--- a/linux-x64/clang/include/clang/AST/Attr.h
+++ b/linux-x64/clang/include/clang/AST/Attr.h
@@ -1,9 +1,8 @@
//===--- Attr.h - Classes for representing attributes ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -14,6 +13,7 @@
#ifndef LLVM_CLANG_AST_ATTR_H
#define LLVM_CLANG_AST_ATTR_H
+#include "clang/AST/ASTContextAllocate.h" // For Attrs.inc
#include "clang/AST/AttrIterator.h"
#include "clang/AST/Decl.h"
#include "clang/AST/Expr.h"
diff --git a/linux-x64/clang/include/clang/AST/AttrDump.inc b/linux-x64/clang/include/clang/AST/AttrDump.inc
deleted file mode 100644
index 8fcd070..0000000
--- a/linux-x64/clang/include/clang/AST/AttrDump.inc
+++ /dev/null
@@ -1,1365 +0,0 @@
-/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
-|* *|
-|* Attribute dumper *|
-|* *|
-|* Automatically generated file, do not edit! *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
- switch (A->getKind()) {
- case attr::AMDGPUFlatWorkGroupSize: {
- const auto *SA = cast<AMDGPUFlatWorkGroupSizeAttr>(A);
- OS << " " << SA->getMin();
- OS << " " << SA->getMax();
- break;
- }
- case attr::AMDGPUNumSGPR: {
- const auto *SA = cast<AMDGPUNumSGPRAttr>(A);
- OS << " " << SA->getNumSGPR();
- break;
- }
- case attr::AMDGPUNumVGPR: {
- const auto *SA = cast<AMDGPUNumVGPRAttr>(A);
- OS << " " << SA->getNumVGPR();
- break;
- }
- case attr::AMDGPUWavesPerEU: {
- const auto *SA = cast<AMDGPUWavesPerEUAttr>(A);
- OS << " " << SA->getMin();
- OS << " " << SA->getMax();
- break;
- }
- case attr::ARMInterrupt: {
- const auto *SA = cast<ARMInterruptAttr>(A);
- switch(SA->getInterrupt()) {
- case ARMInterruptAttr::IRQ:
- OS << " IRQ";
- break;
- case ARMInterruptAttr::FIQ:
- OS << " FIQ";
- break;
- case ARMInterruptAttr::SWI:
- OS << " SWI";
- break;
- case ARMInterruptAttr::ABORT:
- OS << " ABORT";
- break;
- case ARMInterruptAttr::UNDEF:
- OS << " UNDEF";
- break;
- case ARMInterruptAttr::Generic:
- OS << " Generic";
- break;
- }
- break;
- }
- case attr::AVRInterrupt: {
- break;
- }
- case attr::AVRSignal: {
- break;
- }
- case attr::AbiTag: {
- const auto *SA = cast<AbiTagAttr>(A);
- for (const auto &Val : SA->tags())
- OS << " " << Val;
- break;
- }
- case attr::AcquireCapability: {
- OS << " " << A->getSpelling();
- const auto *SA = cast<AcquireCapabilityAttr>(A);
- for (AcquireCapabilityAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
- dumpStmt(*I);
- break;
- }
- case attr::AcquiredAfter: {
- const auto *SA = cast<AcquiredAfterAttr>(A);
- for (AcquiredAfterAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
- dumpStmt(*I);
- break;
- }
- case attr::AcquiredBefore: {
- const auto *SA = cast<AcquiredBeforeAttr>(A);
- for (AcquiredBeforeAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
- dumpStmt(*I);
- break;
- }
- case attr::AddressSpace: {
- const auto *SA = cast<AddressSpaceAttr>(A);
- OS << " " << SA->getAddressSpace();
- break;
- }
- case attr::Alias: {
- const auto *SA = cast<AliasAttr>(A);
- OS << " \"" << SA->getAliasee() << "\"";
- break;
- }
- case attr::AlignMac68k: {
- break;
- }
- case attr::AlignValue: {
- const auto *SA = cast<AlignValueAttr>(A);
- dumpStmt(SA->getAlignment());
- break;
- }
- case attr::Aligned: {
- OS << " " << A->getSpelling();
- const auto *SA = cast<AlignedAttr>(A);
- if (SA->isAlignmentExpr())
- dumpStmt(SA->getAlignmentExpr());
- else
- dumpType(SA->getAlignmentType()->getType());
- break;
- }
- case attr::AllocAlign: {
- const auto *SA = cast<AllocAlignAttr>(A);
- OS << " " << SA->getParamIndex().getSourceIndex();
- break;
- }
- case attr::AllocSize: {
- const auto *SA = cast<AllocSizeAttr>(A);
- OS << " " << SA->getElemSizeParam().getSourceIndex();
- if (SA->getNumElemsParam().isValid())
- OS << " " << SA->getNumElemsParam().getSourceIndex();
- break;
- }
- case attr::AlwaysDestroy: {
- break;
- }
- case attr::AlwaysInline: {
- OS << " " << A->getSpelling();
- break;
- }
- case attr::AnalyzerNoReturn: {
- break;
- }
- case attr::Annotate: {
- const auto *SA = cast<AnnotateAttr>(A);
- OS << " \"" << SA->getAnnotation() << "\"";
- break;
- }
- case attr::AnyX86Interrupt: {
- break;
- }
- case attr::AnyX86NoCallerSavedRegisters: {
- break;
- }
- case attr::AnyX86NoCfCheck: {
- break;
- }
- case attr::ArcWeakrefUnavailable: {
- break;
- }
- case attr::ArgumentWithTypeTag: {
- OS << " " << A->getSpelling();
- const auto *SA = cast<ArgumentWithTypeTagAttr>(A);
- if (SA->getArgumentKind())
- OS << " " << SA->getArgumentKind()->getName();
- OS << " " << SA->getArgumentIdx().getSourceIndex();
- OS << " " << SA->getTypeTagIdx().getSourceIndex();
- if (SA->getIsPointer()) OS << " IsPointer";
- break;
- }
- case attr::Artificial: {
- break;
- }
- case attr::AsmLabel: {
- const auto *SA = cast<AsmLabelAttr>(A);
- OS << " \"" << SA->getLabel() << "\"";
- break;
- }
- case attr::AssertCapability: {
- OS << " " << A->getSpelling();
- const auto *SA = cast<AssertCapabilityAttr>(A);
- for (AssertCapabilityAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
- dumpStmt(*I);
- break;
- }
- case attr::AssertExclusiveLock: {
- const auto *SA = cast<AssertExclusiveLockAttr>(A);
- for (AssertExclusiveLockAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
- dumpStmt(*I);
- break;
- }
- case attr::AssertSharedLock: {
- const auto *SA = cast<AssertSharedLockAttr>(A);
- for (AssertSharedLockAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
- dumpStmt(*I);
- break;
- }
- case attr::AssumeAligned: {
- const auto *SA = cast<AssumeAlignedAttr>(A);
- dumpStmt(SA->getAlignment());
- dumpStmt(SA->getOffset());
- break;
- }
- case attr::Availability: {
- const auto *SA = cast<AvailabilityAttr>(A);
- if (SA->getPlatform())
- OS << " " << SA->getPlatform()->getName();
- OS << " " << SA->getIntroduced();
- OS << " " << SA->getDeprecated();
- OS << " " << SA->getObsoleted();
- if (SA->getUnavailable()) OS << " Unavailable";
- OS << " \"" << SA->getMessage() << "\"";
- if (SA->getStrict()) OS << " Strict";
- OS << " \"" << SA->getReplacement() << "\"";
- break;
- }
- case attr::Blocks: {
- const auto *SA = cast<BlocksAttr>(A);
- switch(SA->getType()) {
- case BlocksAttr::ByRef:
- OS << " ByRef";
- break;
- }
- break;
- }
- case attr::C11NoReturn: {
- break;
- }
- case attr::CDecl: {
- break;
- }
- case attr::CFAuditedTransfer: {
- break;
- }
- case attr::CFConsumed: {
- break;
- }
- case attr::CFReturnsNotRetained: {
- break;
- }
- case attr::CFReturnsRetained: {
- break;
- }
- case attr::CFUnknownTransfer: {
- break;
- }
- case attr::CPUDispatch: {
- const auto *SA = cast<CPUDispatchAttr>(A);
- for (const auto &Val : SA->cpus())
- OS << " " << Val;
- break;
- }
- case attr::CPUSpecific: {
- const auto *SA = cast<CPUSpecificAttr>(A);
- for (const auto &Val : SA->cpus())
- OS << " " << Val;
- break;
- }
- case attr::CUDAConstant: {
- break;
- }
- case attr::CUDADevice: {
- break;
- }
- case attr::CUDAGlobal: {
- break;
- }
- case attr::CUDAHost: {
- break;
- }
- case attr::CUDAInvalidTarget: {
- break;
- }
- case attr::CUDALaunchBounds: {
- const auto *SA = cast<CUDALaunchBoundsAttr>(A);
- dumpStmt(SA->getMaxThreads());
- dumpStmt(SA->getMinBlocks());
- break;
- }
- case attr::CUDAShared: {
- break;
- }
- case attr::CXX11NoReturn: {
- break;
- }
- case attr::CallableWhen: {
- const auto *SA = cast<CallableWhenAttr>(A);
- for (CallableWhenAttr::callableStates_iterator I = SA->callableStates_begin(), E = SA->callableStates_end(); I != E; ++I) {
- switch(*I) {
- case CallableWhenAttr::Unknown:
- OS << " Unknown";
- break;
- case CallableWhenAttr::Consumed:
- OS << " Consumed";
- break;
- case CallableWhenAttr::Unconsumed:
- OS << " Unconsumed";
- break;
- }
- }
- break;
- }
- case attr::Capability: {
- OS << " " << A->getSpelling();
- const auto *SA = cast<CapabilityAttr>(A);
- OS << " \"" << SA->getName() << "\"";
- break;
- }
- case attr::CapturedRecord: {
- break;
- }
- case attr::CarriesDependency: {
- break;
- }
- case attr::Cleanup: {
- const auto *SA = cast<CleanupAttr>(A);
- OS << " ";
- dumpBareDeclRef(SA->getFunctionDecl());
- break;
- }
- case attr::CodeSeg: {
- const auto *SA = cast<CodeSegAttr>(A);
- OS << " \"" << SA->getName() << "\"";
- break;
- }
- case attr::Cold: {
- break;
- }
- case attr::Common: {
- break;
- }
- case attr::Const: {
- break;
- }
- case attr::Constructor: {
- const auto *SA = cast<ConstructorAttr>(A);
- OS << " " << SA->getPriority();
- break;
- }
- case attr::Consumable: {
- const auto *SA = cast<ConsumableAttr>(A);
- switch(SA->getDefaultState()) {
- case ConsumableAttr::Unknown:
- OS << " Unknown";
- break;
- case ConsumableAttr::Consumed:
- OS << " Consumed";
- break;
- case ConsumableAttr::Unconsumed:
- OS << " Unconsumed";
- break;
- }
- break;
- }
- case attr::ConsumableAutoCast: {
- break;
- }
- case attr::ConsumableSetOnRead: {
- break;
- }
- case attr::Convergent: {
- break;
- }
- case attr::DLLExport: {
- break;
- }
- case attr::DLLImport: {
- break;
- }
- case attr::Deprecated: {
- const auto *SA = cast<DeprecatedAttr>(A);
- OS << " \"" << SA->getMessage() << "\"";
- OS << " \"" << SA->getReplacement() << "\"";
- break;
- }
- case attr::Destructor: {
- const auto *SA = cast<DestructorAttr>(A);
- OS << " " << SA->getPriority();
- break;
- }
- case attr::DiagnoseIf: {
- const auto *SA = cast<DiagnoseIfAttr>(A);
- OS << " \"" << SA->getMessage() << "\"";
- switch(SA->getDiagnosticType()) {
- case DiagnoseIfAttr::DT_Error:
- OS << " DT_Error";
- break;
- case DiagnoseIfAttr::DT_Warning:
- OS << " DT_Warning";
- break;
- }
- if (SA->getArgDependent()) OS << " ArgDependent";
- OS << " ";
- dumpBareDeclRef(SA->getParent());
- dumpStmt(SA->getCond());
- break;
- }
- case attr::DisableTailCalls: {
- break;
- }
- case attr::EmptyBases: {
- break;
- }
- case attr::EnableIf: {
- const auto *SA = cast<EnableIfAttr>(A);
- OS << " \"" << SA->getMessage() << "\"";
- dumpStmt(SA->getCond());
- break;
- }
- case attr::EnumExtensibility: {
- const auto *SA = cast<EnumExtensibilityAttr>(A);
- switch(SA->getExtensibility()) {
- case EnumExtensibilityAttr::Closed:
- OS << " Closed";
- break;
- case EnumExtensibilityAttr::Open:
- OS << " Open";
- break;
- }
- break;
- }
- case attr::ExcludeFromExplicitInstantiation: {
- break;
- }
- case attr::ExclusiveTrylockFunction: {
- const auto *SA = cast<ExclusiveTrylockFunctionAttr>(A);
- dumpStmt(SA->getSuccessValue());
- for (ExclusiveTrylockFunctionAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
- dumpStmt(*I);
- break;
- }
- case attr::ExternalSourceSymbol: {
- const auto *SA = cast<ExternalSourceSymbolAttr>(A);
- OS << " \"" << SA->getLanguage() << "\"";
- OS << " \"" << SA->getDefinedIn() << "\"";
- if (SA->getGeneratedDeclaration()) OS << " GeneratedDeclaration";
- break;
- }
- case attr::FallThrough: {
- break;
- }
- case attr::FastCall: {
- break;
- }
- case attr::Final: {
- OS << " " << A->getSpelling();
- break;
- }
- case attr::FlagEnum: {
- break;
- }
- case attr::Flatten: {
- break;
- }
- case attr::Format: {
- const auto *SA = cast<FormatAttr>(A);
- if (SA->getType())
- OS << " " << SA->getType()->getName();
- OS << " " << SA->getFormatIdx();
- OS << " " << SA->getFirstArg();
- break;
- }
- case attr::FormatArg: {
- const auto *SA = cast<FormatArgAttr>(A);
- OS << " " << SA->getFormatIdx().getSourceIndex();
- break;
- }
- case attr::GNUInline: {
- break;
- }
- case attr::GuardedBy: {
- const auto *SA = cast<GuardedByAttr>(A);
- dumpStmt(SA->getArg());
- break;
- }
- case attr::GuardedVar: {
- break;
- }
- case attr::Hot: {
- break;
- }
- case attr::IBAction: {
- break;
- }
- case attr::IBOutlet: {
- break;
- }
- case attr::IBOutletCollection: {
- const auto *SA = cast<IBOutletCollectionAttr>(A);
- OS << " " << SA->getInterface().getAsString();
- break;
- }
- case attr::IFunc: {
- const auto *SA = cast<IFuncAttr>(A);
- OS << " \"" << SA->getResolver() << "\"";
- break;
- }
- case attr::InitPriority: {
- const auto *SA = cast<InitPriorityAttr>(A);
- OS << " " << SA->getPriority();
- break;
- }
- case attr::InitSeg: {
- const auto *SA = cast<InitSegAttr>(A);
- OS << " \"" << SA->getSection() << "\"";
- break;
- }
- case attr::IntelOclBicc: {
- break;
- }
- case attr::InternalLinkage: {
- break;
- }
- case attr::LTOVisibilityPublic: {
- break;
- }
- case attr::LayoutVersion: {
- const auto *SA = cast<LayoutVersionAttr>(A);
- OS << " " << SA->getVersion();
- break;
- }
- case attr::LifetimeBound: {
- break;
- }
- case attr::LockReturned: {
- const auto *SA = cast<LockReturnedAttr>(A);
- dumpStmt(SA->getArg());
- break;
- }
- case attr::LocksExcluded: {
- const auto *SA = cast<LocksExcludedAttr>(A);
- for (LocksExcludedAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
- dumpStmt(*I);
- break;
- }
- case attr::LoopHint: {
- OS << " " << A->getSpelling();
- const auto *SA = cast<LoopHintAttr>(A);
- switch(SA->getOption()) {
- case LoopHintAttr::Vectorize:
- OS << " Vectorize";
- break;
- case LoopHintAttr::VectorizeWidth:
- OS << " VectorizeWidth";
- break;
- case LoopHintAttr::Interleave:
- OS << " Interleave";
- break;
- case LoopHintAttr::InterleaveCount:
- OS << " InterleaveCount";
- break;
- case LoopHintAttr::Unroll:
- OS << " Unroll";
- break;
- case LoopHintAttr::UnrollCount:
- OS << " UnrollCount";
- break;
- case LoopHintAttr::UnrollAndJam:
- OS << " UnrollAndJam";
- break;
- case LoopHintAttr::UnrollAndJamCount:
- OS << " UnrollAndJamCount";
- break;
- case LoopHintAttr::Distribute:
- OS << " Distribute";
- break;
- }
- switch(SA->getState()) {
- case LoopHintAttr::Enable:
- OS << " Enable";
- break;
- case LoopHintAttr::Disable:
- OS << " Disable";
- break;
- case LoopHintAttr::Numeric:
- OS << " Numeric";
- break;
- case LoopHintAttr::AssumeSafety:
- OS << " AssumeSafety";
- break;
- case LoopHintAttr::Full:
- OS << " Full";
- break;
- }
- dumpStmt(SA->getValue());
- break;
- }
- case attr::MSABI: {
- break;
- }
- case attr::MSInheritance: {
- OS << " " << A->getSpelling();
- const auto *SA = cast<MSInheritanceAttr>(A);
- if (SA->getBestCase()) OS << " BestCase";
- break;
- }
- case attr::MSNoVTable: {
- break;
- }
- case attr::MSP430Interrupt: {
- const auto *SA = cast<MSP430InterruptAttr>(A);
- OS << " " << SA->getNumber();
- break;
- }
- case attr::MSStruct: {
- break;
- }
- case attr::MSVtorDisp: {
- const auto *SA = cast<MSVtorDispAttr>(A);
- OS << " " << SA->getVdm();
- break;
- }
- case attr::MaxFieldAlignment: {
- const auto *SA = cast<MaxFieldAlignmentAttr>(A);
- OS << " " << SA->getAlignment();
- break;
- }
- case attr::MayAlias: {
- break;
- }
- case attr::MicroMips: {
- break;
- }
- case attr::MinSize: {
- break;
- }
- case attr::MinVectorWidth: {
- const auto *SA = cast<MinVectorWidthAttr>(A);
- OS << " " << SA->getVectorWidth();
- break;
- }
- case attr::Mips16: {
- break;
- }
- case attr::MipsInterrupt: {
- const auto *SA = cast<MipsInterruptAttr>(A);
- switch(SA->getInterrupt()) {
- case MipsInterruptAttr::sw0:
- OS << " sw0";
- break;
- case MipsInterruptAttr::sw1:
- OS << " sw1";
- break;
- case MipsInterruptAttr::hw0:
- OS << " hw0";
- break;
- case MipsInterruptAttr::hw1:
- OS << " hw1";
- break;
- case MipsInterruptAttr::hw2:
- OS << " hw2";
- break;
- case MipsInterruptAttr::hw3:
- OS << " hw3";
- break;
- case MipsInterruptAttr::hw4:
- OS << " hw4";
- break;
- case MipsInterruptAttr::hw5:
- OS << " hw5";
- break;
- case MipsInterruptAttr::eic:
- OS << " eic";
- break;
- }
- break;
- }
- case attr::MipsLongCall: {
- OS << " " << A->getSpelling();
- break;
- }
- case attr::MipsShortCall: {
- OS << " " << A->getSpelling();
- break;
- }
- case attr::Mode: {
- const auto *SA = cast<ModeAttr>(A);
- if (SA->getMode())
- OS << " " << SA->getMode()->getName();
- break;
- }
- case attr::NSConsumed: {
- break;
- }
- case attr::NSConsumesSelf: {
- break;
- }
- case attr::NSReturnsAutoreleased: {
- break;
- }
- case attr::NSReturnsNotRetained: {
- break;
- }
- case attr::NSReturnsRetained: {
- break;
- }
- case attr::Naked: {
- break;
- }
- case attr::NoAlias: {
- break;
- }
- case attr::NoCommon: {
- break;
- }
- case attr::NoDebug: {
- break;
- }
- case attr::NoDestroy: {
- break;
- }
- case attr::NoDuplicate: {
- break;
- }
- case attr::NoEscape: {
- break;
- }
- case attr::NoInline: {
- break;
- }
- case attr::NoInstrumentFunction: {
- break;
- }
- case attr::NoMicroMips: {
- break;
- }
- case attr::NoMips16: {
- break;
- }
- case attr::NoReturn: {
- break;
- }
- case attr::NoSanitize: {
- const auto *SA = cast<NoSanitizeAttr>(A);
- for (const auto &Val : SA->sanitizers())
- OS << " " << Val;
- break;
- }
- case attr::NoSplitStack: {
- break;
- }
- case attr::NoStackProtector: {
- break;
- }
- case attr::NoThreadSafetyAnalysis: {
- break;
- }
- case attr::NoThrow: {
- break;
- }
- case attr::NonNull: {
- const auto *SA = cast<NonNullAttr>(A);
- for (const auto &Val : SA->args())
- OS << " " << Val.getSourceIndex();
- break;
- }
- case attr::NotTailCalled: {
- break;
- }
- case attr::OMPCaptureKind: {
- const auto *SA = cast<OMPCaptureKindAttr>(A);
- OS << " " << SA->getCaptureKind();
- break;
- }
- case attr::OMPCaptureNoInit: {
- break;
- }
- case attr::OMPDeclareSimdDecl: {
- const auto *SA = cast<OMPDeclareSimdDeclAttr>(A);
- switch(SA->getBranchState()) {
- case OMPDeclareSimdDeclAttr::BS_Undefined:
- OS << " BS_Undefined";
- break;
- case OMPDeclareSimdDeclAttr::BS_Inbranch:
- OS << " BS_Inbranch";
- break;
- case OMPDeclareSimdDeclAttr::BS_Notinbranch:
- OS << " BS_Notinbranch";
- break;
- }
- for (const auto &Val : SA->modifiers())
- OS << " " << Val;
- dumpStmt(SA->getSimdlen());
- for (OMPDeclareSimdDeclAttr::uniforms_iterator I = SA->uniforms_begin(), E = SA->uniforms_end(); I != E; ++I)
- dumpStmt(*I);
- for (OMPDeclareSimdDeclAttr::aligneds_iterator I = SA->aligneds_begin(), E = SA->aligneds_end(); I != E; ++I)
- dumpStmt(*I);
- for (OMPDeclareSimdDeclAttr::alignments_iterator I = SA->alignments_begin(), E = SA->alignments_end(); I != E; ++I)
- dumpStmt(*I);
- for (OMPDeclareSimdDeclAttr::linears_iterator I = SA->linears_begin(), E = SA->linears_end(); I != E; ++I)
- dumpStmt(*I);
- for (OMPDeclareSimdDeclAttr::steps_iterator I = SA->steps_begin(), E = SA->steps_end(); I != E; ++I)
- dumpStmt(*I);
- break;
- }
- case attr::OMPDeclareTargetDecl: {
- const auto *SA = cast<OMPDeclareTargetDeclAttr>(A);
- switch(SA->getMapType()) {
- case OMPDeclareTargetDeclAttr::MT_To:
- OS << " MT_To";
- break;
- case OMPDeclareTargetDeclAttr::MT_Link:
- OS << " MT_Link";
- break;
- }
- break;
- }
- case attr::OMPReferencedVar: {
- const auto *SA = cast<OMPReferencedVarAttr>(A);
- dumpStmt(SA->getRef());
- break;
- }
- case attr::OMPThreadPrivateDecl: {
- break;
- }
- case attr::ObjCBoxable: {
- break;
- }
- case attr::ObjCBridge: {
- const auto *SA = cast<ObjCBridgeAttr>(A);
- if (SA->getBridgedType())
- OS << " " << SA->getBridgedType()->getName();
- break;
- }
- case attr::ObjCBridgeMutable: {
- const auto *SA = cast<ObjCBridgeMutableAttr>(A);
- if (SA->getBridgedType())
- OS << " " << SA->getBridgedType()->getName();
- break;
- }
- case attr::ObjCBridgeRelated: {
- const auto *SA = cast<ObjCBridgeRelatedAttr>(A);
- if (SA->getRelatedClass())
- OS << " " << SA->getRelatedClass()->getName();
- if (SA->getClassMethod())
- OS << " " << SA->getClassMethod()->getName();
- if (SA->getInstanceMethod())
- OS << " " << SA->getInstanceMethod()->getName();
- break;
- }
- case attr::ObjCDesignatedInitializer: {
- break;
- }
- case attr::ObjCException: {
- break;
- }
- case attr::ObjCExplicitProtocolImpl: {
- break;
- }
- case attr::ObjCGC: {
- const auto *SA = cast<ObjCGCAttr>(A);
- if (SA->getKind())
- OS << " " << SA->getKind()->getName();
- break;
- }
- case attr::ObjCIndependentClass: {
- break;
- }
- case attr::ObjCInertUnsafeUnretained: {
- break;
- }
- case attr::ObjCKindOf: {
- break;
- }
- case attr::ObjCMethodFamily: {
- const auto *SA = cast<ObjCMethodFamilyAttr>(A);
- switch(SA->getFamily()) {
- case ObjCMethodFamilyAttr::OMF_None:
- OS << " OMF_None";
- break;
- case ObjCMethodFamilyAttr::OMF_alloc:
- OS << " OMF_alloc";
- break;
- case ObjCMethodFamilyAttr::OMF_copy:
- OS << " OMF_copy";
- break;
- case ObjCMethodFamilyAttr::OMF_init:
- OS << " OMF_init";
- break;
- case ObjCMethodFamilyAttr::OMF_mutableCopy:
- OS << " OMF_mutableCopy";
- break;
- case ObjCMethodFamilyAttr::OMF_new:
- OS << " OMF_new";
- break;
- }
- break;
- }
- case attr::ObjCNSObject: {
- break;
- }
- case attr::ObjCOwnership: {
- const auto *SA = cast<ObjCOwnershipAttr>(A);
- if (SA->getKind())
- OS << " " << SA->getKind()->getName();
- break;
- }
- case attr::ObjCPreciseLifetime: {
- break;
- }
- case attr::ObjCRequiresPropertyDefs: {
- break;
- }
- case attr::ObjCRequiresSuper: {
- break;
- }
- case attr::ObjCReturnsInnerPointer: {
- break;
- }
- case attr::ObjCRootClass: {
- break;
- }
- case attr::ObjCRuntimeName: {
- const auto *SA = cast<ObjCRuntimeNameAttr>(A);
- OS << " \"" << SA->getMetadataName() << "\"";
- break;
- }
- case attr::ObjCRuntimeVisible: {
- break;
- }
- case attr::ObjCSubclassingRestricted: {
- break;
- }
- case attr::OpenCLAccess: {
- OS << " " << A->getSpelling();
- break;
- }
- case attr::OpenCLConstantAddressSpace: {
- break;
- }
- case attr::OpenCLGenericAddressSpace: {
- break;
- }
- case attr::OpenCLGlobalAddressSpace: {
- break;
- }
- case attr::OpenCLIntelReqdSubGroupSize: {
- const auto *SA = cast<OpenCLIntelReqdSubGroupSizeAttr>(A);
- OS << " " << SA->getSubGroupSize();
- break;
- }
- case attr::OpenCLKernel: {
- break;
- }
- case attr::OpenCLLocalAddressSpace: {
- break;
- }
- case attr::OpenCLPrivateAddressSpace: {
- break;
- }
- case attr::OpenCLUnrollHint: {
- const auto *SA = cast<OpenCLUnrollHintAttr>(A);
- OS << " " << SA->getUnrollHint();
- break;
- }
- case attr::OptimizeNone: {
- break;
- }
- case attr::Overloadable: {
- break;
- }
- case attr::Override: {
- break;
- }
- case attr::Ownership: {
- OS << " " << A->getSpelling();
- const auto *SA = cast<OwnershipAttr>(A);
- if (SA->getModule())
- OS << " " << SA->getModule()->getName();
- for (const auto &Val : SA->args())
- OS << " " << Val.getSourceIndex();
- break;
- }
- case attr::Packed: {
- break;
- }
- case attr::ParamTypestate: {
- const auto *SA = cast<ParamTypestateAttr>(A);
- switch(SA->getParamState()) {
- case ParamTypestateAttr::Unknown:
- OS << " Unknown";
- break;
- case ParamTypestateAttr::Consumed:
- OS << " Consumed";
- break;
- case ParamTypestateAttr::Unconsumed:
- OS << " Unconsumed";
- break;
- }
- break;
- }
- case attr::Pascal: {
- break;
- }
- case attr::PassObjectSize: {
- const auto *SA = cast<PassObjectSizeAttr>(A);
- OS << " " << SA->getType();
- break;
- }
- case attr::Pcs: {
- const auto *SA = cast<PcsAttr>(A);
- switch(SA->getPCS()) {
- case PcsAttr::AAPCS:
- OS << " AAPCS";
- break;
- case PcsAttr::AAPCS_VFP:
- OS << " AAPCS_VFP";
- break;
- }
- break;
- }
- case attr::PragmaClangBSSSection: {
- const auto *SA = cast<PragmaClangBSSSectionAttr>(A);
- OS << " \"" << SA->getName() << "\"";
- break;
- }
- case attr::PragmaClangDataSection: {
- const auto *SA = cast<PragmaClangDataSectionAttr>(A);
- OS << " \"" << SA->getName() << "\"";
- break;
- }
- case attr::PragmaClangRodataSection: {
- const auto *SA = cast<PragmaClangRodataSectionAttr>(A);
- OS << " \"" << SA->getName() << "\"";
- break;
- }
- case attr::PragmaClangTextSection: {
- const auto *SA = cast<PragmaClangTextSectionAttr>(A);
- OS << " \"" << SA->getName() << "\"";
- break;
- }
- case attr::PreserveAll: {
- break;
- }
- case attr::PreserveMost: {
- break;
- }
- case attr::PtGuardedBy: {
- const auto *SA = cast<PtGuardedByAttr>(A);
- dumpStmt(SA->getArg());
- break;
- }
- case attr::PtGuardedVar: {
- break;
- }
- case attr::Ptr32: {
- break;
- }
- case attr::Ptr64: {
- break;
- }
- case attr::Pure: {
- break;
- }
- case attr::RISCVInterrupt: {
- const auto *SA = cast<RISCVInterruptAttr>(A);
- switch(SA->getInterrupt()) {
- case RISCVInterruptAttr::user:
- OS << " user";
- break;
- case RISCVInterruptAttr::supervisor:
- OS << " supervisor";
- break;
- case RISCVInterruptAttr::machine:
- OS << " machine";
- break;
- }
- break;
- }
- case attr::RegCall: {
- break;
- }
- case attr::Reinitializes: {
- break;
- }
- case attr::ReleaseCapability: {
- OS << " " << A->getSpelling();
- const auto *SA = cast<ReleaseCapabilityAttr>(A);
- for (ReleaseCapabilityAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
- dumpStmt(*I);
- break;
- }
- case attr::RenderScriptKernel: {
- break;
- }
- case attr::ReqdWorkGroupSize: {
- const auto *SA = cast<ReqdWorkGroupSizeAttr>(A);
- OS << " " << SA->getXDim();
- OS << " " << SA->getYDim();
- OS << " " << SA->getZDim();
- break;
- }
- case attr::RequireConstantInit: {
- break;
- }
- case attr::RequiresCapability: {
- OS << " " << A->getSpelling();
- const auto *SA = cast<RequiresCapabilityAttr>(A);
- for (RequiresCapabilityAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
- dumpStmt(*I);
- break;
- }
- case attr::Restrict: {
- OS << " " << A->getSpelling();
- break;
- }
- case attr::ReturnTypestate: {
- const auto *SA = cast<ReturnTypestateAttr>(A);
- switch(SA->getState()) {
- case ReturnTypestateAttr::Unknown:
- OS << " Unknown";
- break;
- case ReturnTypestateAttr::Consumed:
- OS << " Consumed";
- break;
- case ReturnTypestateAttr::Unconsumed:
- OS << " Unconsumed";
- break;
- }
- break;
- }
- case attr::ReturnsNonNull: {
- break;
- }
- case attr::ReturnsTwice: {
- break;
- }
- case attr::SPtr: {
- break;
- }
- case attr::ScopedLockable: {
- break;
- }
- case attr::Section: {
- OS << " " << A->getSpelling();
- const auto *SA = cast<SectionAttr>(A);
- OS << " \"" << SA->getName() << "\"";
- break;
- }
- case attr::SelectAny: {
- break;
- }
- case attr::Sentinel: {
- const auto *SA = cast<SentinelAttr>(A);
- OS << " " << SA->getSentinel();
- OS << " " << SA->getNullPos();
- break;
- }
- case attr::SetTypestate: {
- const auto *SA = cast<SetTypestateAttr>(A);
- switch(SA->getNewState()) {
- case SetTypestateAttr::Unknown:
- OS << " Unknown";
- break;
- case SetTypestateAttr::Consumed:
- OS << " Consumed";
- break;
- case SetTypestateAttr::Unconsumed:
- OS << " Unconsumed";
- break;
- }
- break;
- }
- case attr::SharedTrylockFunction: {
- const auto *SA = cast<SharedTrylockFunctionAttr>(A);
- dumpStmt(SA->getSuccessValue());
- for (SharedTrylockFunctionAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
- dumpStmt(*I);
- break;
- }
- case attr::StdCall: {
- break;
- }
- case attr::Suppress: {
- const auto *SA = cast<SuppressAttr>(A);
- for (const auto &Val : SA->diagnosticIdentifiers())
- OS << " " << Val;
- break;
- }
- case attr::SwiftCall: {
- break;
- }
- case attr::SwiftContext: {
- break;
- }
- case attr::SwiftErrorResult: {
- break;
- }
- case attr::SwiftIndirectResult: {
- break;
- }
- case attr::SysVABI: {
- break;
- }
- case attr::TLSModel: {
- const auto *SA = cast<TLSModelAttr>(A);
- OS << " \"" << SA->getModel() << "\"";
- break;
- }
- case attr::Target: {
- const auto *SA = cast<TargetAttr>(A);
- OS << " \"" << SA->getFeaturesStr() << "\"";
- break;
- }
- case attr::TestTypestate: {
- const auto *SA = cast<TestTypestateAttr>(A);
- switch(SA->getTestState()) {
- case TestTypestateAttr::Consumed:
- OS << " Consumed";
- break;
- case TestTypestateAttr::Unconsumed:
- OS << " Unconsumed";
- break;
- }
- break;
- }
- case attr::ThisCall: {
- break;
- }
- case attr::Thread: {
- break;
- }
- case attr::TransparentUnion: {
- break;
- }
- case attr::TrivialABI: {
- break;
- }
- case attr::TryAcquireCapability: {
- OS << " " << A->getSpelling();
- const auto *SA = cast<TryAcquireCapabilityAttr>(A);
- dumpStmt(SA->getSuccessValue());
- for (TryAcquireCapabilityAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
- dumpStmt(*I);
- break;
- }
- case attr::TypeNonNull: {
- break;
- }
- case attr::TypeNullUnspecified: {
- break;
- }
- case attr::TypeNullable: {
- break;
- }
- case attr::TypeTagForDatatype: {
- const auto *SA = cast<TypeTagForDatatypeAttr>(A);
- if (SA->getArgumentKind())
- OS << " " << SA->getArgumentKind()->getName();
- OS << " " << SA->getMatchingCType().getAsString();
- if (SA->getLayoutCompatible()) OS << " LayoutCompatible";
- if (SA->getMustBeNull()) OS << " MustBeNull";
- break;
- }
- case attr::TypeVisibility: {
- const auto *SA = cast<TypeVisibilityAttr>(A);
- switch(SA->getVisibility()) {
- case TypeVisibilityAttr::Default:
- OS << " Default";
- break;
- case TypeVisibilityAttr::Hidden:
- OS << " Hidden";
- break;
- case TypeVisibilityAttr::Protected:
- OS << " Protected";
- break;
- }
- break;
- }
- case attr::UPtr: {
- break;
- }
- case attr::Unavailable: {
- const auto *SA = cast<UnavailableAttr>(A);
- OS << " \"" << SA->getMessage() << "\"";
- switch(SA->getImplicitReason()) {
- case UnavailableAttr::IR_None:
- OS << " IR_None";
- break;
- case UnavailableAttr::IR_ARCForbiddenType:
- OS << " IR_ARCForbiddenType";
- break;
- case UnavailableAttr::IR_ForbiddenWeak:
- OS << " IR_ForbiddenWeak";
- break;
- case UnavailableAttr::IR_ARCForbiddenConversion:
- OS << " IR_ARCForbiddenConversion";
- break;
- case UnavailableAttr::IR_ARCInitReturnsUnrelated:
- OS << " IR_ARCInitReturnsUnrelated";
- break;
- case UnavailableAttr::IR_ARCFieldWithOwnership:
- OS << " IR_ARCFieldWithOwnership";
- break;
- }
- break;
- }
- case attr::Unused: {
- OS << " " << A->getSpelling();
- break;
- }
- case attr::Used: {
- break;
- }
- case attr::Uuid: {
- const auto *SA = cast<UuidAttr>(A);
- OS << " \"" << SA->getGuid() << "\"";
- break;
- }
- case attr::VecReturn: {
- break;
- }
- case attr::VecTypeHint: {
- const auto *SA = cast<VecTypeHintAttr>(A);
- OS << " " << SA->getTypeHint().getAsString();
- break;
- }
- case attr::VectorCall: {
- break;
- }
- case attr::Visibility: {
- const auto *SA = cast<VisibilityAttr>(A);
- switch(SA->getVisibility()) {
- case VisibilityAttr::Default:
- OS << " Default";
- break;
- case VisibilityAttr::Hidden:
- OS << " Hidden";
- break;
- case VisibilityAttr::Protected:
- OS << " Protected";
- break;
- }
- break;
- }
- case attr::WarnUnused: {
- break;
- }
- case attr::WarnUnusedResult: {
- OS << " " << A->getSpelling();
- break;
- }
- case attr::Weak: {
- break;
- }
- case attr::WeakImport: {
- break;
- }
- case attr::WeakRef: {
- const auto *SA = cast<WeakRefAttr>(A);
- OS << " \"" << SA->getAliasee() << "\"";
- break;
- }
- case attr::WorkGroupSizeHint: {
- const auto *SA = cast<WorkGroupSizeHintAttr>(A);
- OS << " " << SA->getXDim();
- OS << " " << SA->getYDim();
- OS << " " << SA->getZDim();
- break;
- }
- case attr::X86ForceAlignArgPointer: {
- break;
- }
- case attr::XRayInstrument: {
- OS << " " << A->getSpelling();
- break;
- }
- case attr::XRayLogArgs: {
- const auto *SA = cast<XRayLogArgsAttr>(A);
- OS << " " << SA->getArgumentCount();
- break;
- }
- }
diff --git a/linux-x64/clang/include/clang/AST/AttrImpl.inc b/linux-x64/clang/include/clang/AST/AttrImpl.inc
index 41f638c..87f287c 100644
--- a/linux-x64/clang/include/clang/AST/AttrImpl.inc
+++ b/linux-x64/clang/include/clang/AST/AttrImpl.inc
@@ -6,6 +6,48 @@
|* *|
\*===----------------------------------------------------------------------===*/
+AArch64VectorPcsAttr *AArch64VectorPcsAttr::clone(ASTContext &C) const {
+ auto *A = new (C) AArch64VectorPcsAttr(getLocation(), C, getSpellingListIndex());
+ A->Inherited = Inherited;
+ A->IsPackExpansion = IsPackExpansion;
+ A->Implicit = Implicit;
+ return A;
+}
+
+void AArch64VectorPcsAttr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ break;
+ case 0 : {
+ OS << " __attribute__((aarch64_vector_pcs))";
+ break;
+ }
+ case 1 : {
+ OS << " [[clang::aarch64_vector_pcs]]";
+ break;
+ }
+ case 2 : {
+ OS << " [[clang::aarch64_vector_pcs]]";
+ break;
+ }
+}
+}
+
+const char *AArch64VectorPcsAttr::getSpelling() const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ return "(No spelling)";
+ case 0:
+ return "aarch64_vector_pcs";
+ case 1:
+ return "aarch64_vector_pcs";
+ case 2:
+ return "aarch64_vector_pcs";
+ }
+}
+
AMDGPUFlatWorkGroupSizeAttr *AMDGPUFlatWorkGroupSizeAttr::clone(ASTContext &C) const {
auto *A = new (C) AMDGPUFlatWorkGroupSizeAttr(getLocation(), C, min, max, getSpellingListIndex());
A->Inherited = Inherited;
@@ -1467,7 +1509,7 @@
}
AvailabilityAttr *AvailabilityAttr::clone(ASTContext &C) const {
- auto *A = new (C) AvailabilityAttr(getLocation(), C, platform, getIntroduced(), getDeprecated(), getObsoleted(), unavailable, getMessage(), strict, getReplacement(), getSpellingListIndex());
+ auto *A = new (C) AvailabilityAttr(getLocation(), C, platform, getIntroduced(), getDeprecated(), getObsoleted(), unavailable, getMessage(), strict, getReplacement(), priority, getSpellingListIndex());
A->Inherited = Inherited;
A->IsPackExpansion = IsPackExpansion;
A->Implicit = Implicit;
@@ -1490,11 +1532,11 @@
break;
}
case 1 : {
- OS << " [[clang::availability(" << (getPlatform() ? getPlatform()->getName() : "") << ", introduced=" << getIntroduced() << ", deprecated=" << getDeprecated() << ", obsoleted=" << getObsoleted() << ", " << getUnavailable() << ", \"" << getMessage() << "\", " << getStrict() << ", \"" << getReplacement() << "\")]]";
+ OS << " [[clang::availability(" << (getPlatform() ? getPlatform()->getName() : "") << ", introduced=" << getIntroduced() << ", deprecated=" << getDeprecated() << ", obsoleted=" << getObsoleted() << ", " << getUnavailable() << ", \"" << getMessage() << "\", " << getStrict() << ", \"" << getReplacement() << "\", " << getPriority() << ")]]";
break;
}
case 2 : {
- OS << " [[clang::availability(" << (getPlatform() ? getPlatform()->getName() : "") << ", introduced=" << getIntroduced() << ", deprecated=" << getDeprecated() << ", obsoleted=" << getObsoleted() << ", " << getUnavailable() << ", \"" << getMessage() << "\", " << getStrict() << ", \"" << getReplacement() << "\")]]";
+ OS << " [[clang::availability(" << (getPlatform() ? getPlatform()->getName() : "") << ", introduced=" << getIntroduced() << ", deprecated=" << getDeprecated() << ", obsoleted=" << getObsoleted() << ", " << getUnavailable() << ", \"" << getMessage() << "\", " << getStrict() << ", \"" << getReplacement() << "\", " << getPriority() << ")]]";
break;
}
}
@@ -1890,6 +1932,17 @@
OS << ")]]";
break;
}
+ case 3 : {
+ OS << " __declspec(cpu_dispatch(";
+ bool isFirst = true;
+ for (const auto &Val : cpus()) {
+ if (isFirst) isFirst = false;
+ else OS << ", ";
+ OS << Val;
+ }
+ OS << "))";
+ break;
+ }
}
}
@@ -1904,6 +1957,8 @@
return "cpu_dispatch";
case 2:
return "cpu_dispatch";
+ case 3:
+ return "cpu_dispatch";
}
}
@@ -1953,6 +2008,17 @@
OS << ")]]";
break;
}
+ case 3 : {
+ OS << " __declspec(cpu_specific(";
+ bool isFirst = true;
+ for (const auto &Val : cpus()) {
+ if (isFirst) isFirst = false;
+ else OS << ", ";
+ OS << Val;
+ }
+ OS << "))";
+ break;
+ }
}
}
@@ -1967,6 +2033,8 @@
return "cpu_specific";
case 2:
return "cpu_specific";
+ case 3:
+ return "cpu_specific";
}
}
@@ -2281,6 +2349,69 @@
}
}
+CallbackAttr *CallbackAttr::clone(ASTContext &C) const {
+ auto *A = new (C) CallbackAttr(getLocation(), C, encoding_, encoding_Size, getSpellingListIndex());
+ A->Inherited = Inherited;
+ A->IsPackExpansion = IsPackExpansion;
+ A->Implicit = Implicit;
+ return A;
+}
+
+void CallbackAttr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ break;
+ case 0 : {
+ OS << " __attribute__((callback(";
+ bool isFirst = true;
+ for (const auto &Val : encoding()) {
+ if (isFirst) isFirst = false;
+ else OS << ", ";
+ OS << Val;
+ }
+ OS << ")))";
+ break;
+ }
+ case 1 : {
+ OS << " [[clang::callback(";
+ bool isFirst = true;
+ for (const auto &Val : encoding()) {
+ if (isFirst) isFirst = false;
+ else OS << ", ";
+ OS << Val;
+ }
+ OS << ")]]";
+ break;
+ }
+ case 2 : {
+ OS << " [[clang::callback(";
+ bool isFirst = true;
+ for (const auto &Val : encoding()) {
+ if (isFirst) isFirst = false;
+ else OS << ", ";
+ OS << Val;
+ }
+ OS << ")]]";
+ break;
+ }
+}
+}
+
+const char *CallbackAttr::getSpelling() const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ return "(No spelling)";
+ case 0:
+ return "callback";
+ case 1:
+ return "callback";
+ case 2:
+ return "callback";
+ }
+}
+
CapabilityAttr *CapabilityAttr::clone(ASTContext &C) const {
auto *A = new (C) CapabilityAttr(getLocation(), C, getName(), getSpellingListIndex());
A->Inherited = Inherited;
@@ -2794,6 +2925,21 @@
}
}
+DLLExportStaticLocalAttr *DLLExportStaticLocalAttr::clone(ASTContext &C) const {
+ auto *A = new (C) DLLExportStaticLocalAttr(getLocation(), C, getSpellingListIndex());
+ A->Inherited = Inherited;
+ A->IsPackExpansion = IsPackExpansion;
+ A->Implicit = Implicit;
+ return A;
+}
+
+void DLLExportStaticLocalAttr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
+}
+
+const char *DLLExportStaticLocalAttr::getSpelling() const {
+ return "(No spelling)";
+}
+
DLLImportAttr *DLLImportAttr::clone(ASTContext &C) const {
auto *A = new (C) DLLImportAttr(getLocation(), C, getSpellingListIndex());
A->Inherited = Inherited;
@@ -2836,6 +2982,21 @@
}
}
+DLLImportStaticLocalAttr *DLLImportStaticLocalAttr::clone(ASTContext &C) const {
+ auto *A = new (C) DLLImportStaticLocalAttr(getLocation(), C, getSpellingListIndex());
+ A->Inherited = Inherited;
+ A->IsPackExpansion = IsPackExpansion;
+ A->Implicit = Implicit;
+ return A;
+}
+
+void DLLImportStaticLocalAttr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
+}
+
+const char *DLLImportStaticLocalAttr::getSpelling() const {
+ return "(No spelling)";
+}
+
DeprecatedAttr *DeprecatedAttr::clone(ASTContext &C) const {
auto *A = new (C) DeprecatedAttr(getLocation(), C, getMessage(), getReplacement(), getSpellingListIndex());
A->Inherited = Inherited;
@@ -3503,6 +3664,48 @@
}
}
+FortifyStdLibAttr *FortifyStdLibAttr::clone(ASTContext &C) const {
+ auto *A = new (C) FortifyStdLibAttr(getLocation(), C, type, flag, getSpellingListIndex());
+ A->Inherited = Inherited;
+ A->IsPackExpansion = IsPackExpansion;
+ A->Implicit = Implicit;
+ return A;
+}
+
+void FortifyStdLibAttr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ break;
+ case 0 : {
+ OS << " __attribute__((fortify_stdlib(" << getType() << ", " << getFlag() << ")))";
+ break;
+ }
+ case 1 : {
+ OS << " [[clang::fortify_stdlib(" << getType() << ", " << getFlag() << ")]]";
+ break;
+ }
+ case 2 : {
+ OS << " [[clang::fortify_stdlib(" << getType() << ", " << getFlag() << ")]]";
+ break;
+ }
+}
+}
+
+const char *FortifyStdLibAttr::getSpelling() const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ return "(No spelling)";
+ case 0:
+ return "fortify_stdlib";
+ case 1:
+ return "fortify_stdlib";
+ case 2:
+ return "fortify_stdlib";
+ }
+}
+
GNUInlineAttr *GNUInlineAttr::clone(ASTContext &C) const {
auto *A = new (C) GNUInlineAttr(getLocation(), C, getSpellingListIndex());
A->Inherited = Inherited;
@@ -5112,6 +5315,48 @@
}
}
+NoDerefAttr *NoDerefAttr::clone(ASTContext &C) const {
+ auto *A = new (C) NoDerefAttr(getLocation(), C, getSpellingListIndex());
+ A->Inherited = Inherited;
+ A->IsPackExpansion = IsPackExpansion;
+ A->Implicit = Implicit;
+ return A;
+}
+
+void NoDerefAttr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ break;
+ case 0 : {
+ OS << " __attribute__((noderef))";
+ break;
+ }
+ case 1 : {
+ OS << " [[clang::noderef]]";
+ break;
+ }
+ case 2 : {
+ OS << " [[clang::noderef]]";
+ break;
+ }
+}
+}
+
+const char *NoDerefAttr::getSpelling() const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ return "(No spelling)";
+ case 0:
+ return "noderef";
+ case 1:
+ return "noderef";
+ case 2:
+ return "noderef";
+ }
+}
+
NoDestroyAttr *NoDestroyAttr::clone(ASTContext &C) const {
auto *A = new (C) NoDestroyAttr(getLocation(), C, getSpellingListIndex());
A->Inherited = Inherited;
@@ -5487,6 +5732,48 @@
}
}
+NoSpeculativeLoadHardeningAttr *NoSpeculativeLoadHardeningAttr::clone(ASTContext &C) const {
+ auto *A = new (C) NoSpeculativeLoadHardeningAttr(getLocation(), C, getSpellingListIndex());
+ A->Inherited = Inherited;
+ A->IsPackExpansion = IsPackExpansion;
+ A->Implicit = Implicit;
+ return A;
+}
+
+void NoSpeculativeLoadHardeningAttr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ break;
+ case 0 : {
+ OS << " __attribute__((no_speculative_load_hardening))";
+ break;
+ }
+ case 1 : {
+ OS << " [[clang::no_speculative_load_hardening]]";
+ break;
+ }
+ case 2 : {
+ OS << " [[clang::no_speculative_load_hardening]]";
+ break;
+ }
+}
+}
+
+const char *NoSpeculativeLoadHardeningAttr::getSpelling() const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ return "(No spelling)";
+ case 0:
+ return "no_speculative_load_hardening";
+ case 1:
+ return "no_speculative_load_hardening";
+ case 2:
+ return "no_speculative_load_hardening";
+ }
+}
+
NoSplitStackAttr *NoSplitStackAttr::clone(ASTContext &C) const {
auto *A = new (C) NoSplitStackAttr(getLocation(), C, getSpellingListIndex());
A->Inherited = Inherited;
@@ -5863,6 +6150,258 @@
return "(No spelling)";
}
+OSConsumedAttr *OSConsumedAttr::clone(ASTContext &C) const {
+ auto *A = new (C) OSConsumedAttr(getLocation(), C, getSpellingListIndex());
+ A->Inherited = Inherited;
+ A->IsPackExpansion = IsPackExpansion;
+ A->Implicit = Implicit;
+ return A;
+}
+
+void OSConsumedAttr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ break;
+ case 0 : {
+ OS << " __attribute__((os_consumed))";
+ break;
+ }
+ case 1 : {
+ OS << " [[clang::os_consumed]]";
+ break;
+ }
+ case 2 : {
+ OS << " [[clang::os_consumed]]";
+ break;
+ }
+}
+}
+
+const char *OSConsumedAttr::getSpelling() const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ return "(No spelling)";
+ case 0:
+ return "os_consumed";
+ case 1:
+ return "os_consumed";
+ case 2:
+ return "os_consumed";
+ }
+}
+
+OSConsumesThisAttr *OSConsumesThisAttr::clone(ASTContext &C) const {
+ auto *A = new (C) OSConsumesThisAttr(getLocation(), C, getSpellingListIndex());
+ A->Inherited = Inherited;
+ A->IsPackExpansion = IsPackExpansion;
+ A->Implicit = Implicit;
+ return A;
+}
+
+void OSConsumesThisAttr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ break;
+ case 0 : {
+ OS << " __attribute__((os_consumes_this))";
+ break;
+ }
+ case 1 : {
+ OS << " [[clang::os_consumes_this]]";
+ break;
+ }
+ case 2 : {
+ OS << " [[clang::os_consumes_this]]";
+ break;
+ }
+}
+}
+
+const char *OSConsumesThisAttr::getSpelling() const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ return "(No spelling)";
+ case 0:
+ return "os_consumes_this";
+ case 1:
+ return "os_consumes_this";
+ case 2:
+ return "os_consumes_this";
+ }
+}
+
+OSReturnsNotRetainedAttr *OSReturnsNotRetainedAttr::clone(ASTContext &C) const {
+ auto *A = new (C) OSReturnsNotRetainedAttr(getLocation(), C, getSpellingListIndex());
+ A->Inherited = Inherited;
+ A->IsPackExpansion = IsPackExpansion;
+ A->Implicit = Implicit;
+ return A;
+}
+
+void OSReturnsNotRetainedAttr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ break;
+ case 0 : {
+ OS << " __attribute__((os_returns_not_retained))";
+ break;
+ }
+ case 1 : {
+ OS << " [[clang::os_returns_not_retained]]";
+ break;
+ }
+ case 2 : {
+ OS << " [[clang::os_returns_not_retained]]";
+ break;
+ }
+}
+}
+
+const char *OSReturnsNotRetainedAttr::getSpelling() const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ return "(No spelling)";
+ case 0:
+ return "os_returns_not_retained";
+ case 1:
+ return "os_returns_not_retained";
+ case 2:
+ return "os_returns_not_retained";
+ }
+}
+
+OSReturnsRetainedAttr *OSReturnsRetainedAttr::clone(ASTContext &C) const {
+ auto *A = new (C) OSReturnsRetainedAttr(getLocation(), C, getSpellingListIndex());
+ A->Inherited = Inherited;
+ A->IsPackExpansion = IsPackExpansion;
+ A->Implicit = Implicit;
+ return A;
+}
+
+void OSReturnsRetainedAttr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ break;
+ case 0 : {
+ OS << " __attribute__((os_returns_retained))";
+ break;
+ }
+ case 1 : {
+ OS << " [[clang::os_returns_retained]]";
+ break;
+ }
+ case 2 : {
+ OS << " [[clang::os_returns_retained]]";
+ break;
+ }
+}
+}
+
+const char *OSReturnsRetainedAttr::getSpelling() const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ return "(No spelling)";
+ case 0:
+ return "os_returns_retained";
+ case 1:
+ return "os_returns_retained";
+ case 2:
+ return "os_returns_retained";
+ }
+}
+
+OSReturnsRetainedOnNonZeroAttr *OSReturnsRetainedOnNonZeroAttr::clone(ASTContext &C) const {
+ auto *A = new (C) OSReturnsRetainedOnNonZeroAttr(getLocation(), C, getSpellingListIndex());
+ A->Inherited = Inherited;
+ A->IsPackExpansion = IsPackExpansion;
+ A->Implicit = Implicit;
+ return A;
+}
+
+void OSReturnsRetainedOnNonZeroAttr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ break;
+ case 0 : {
+ OS << " __attribute__((os_returns_retained_on_non_zero))";
+ break;
+ }
+ case 1 : {
+ OS << " [[clang::os_returns_retained_on_non_zero]]";
+ break;
+ }
+ case 2 : {
+ OS << " [[clang::os_returns_retained_on_non_zero]]";
+ break;
+ }
+}
+}
+
+const char *OSReturnsRetainedOnNonZeroAttr::getSpelling() const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ return "(No spelling)";
+ case 0:
+ return "os_returns_retained_on_non_zero";
+ case 1:
+ return "os_returns_retained_on_non_zero";
+ case 2:
+ return "os_returns_retained_on_non_zero";
+ }
+}
+
+OSReturnsRetainedOnZeroAttr *OSReturnsRetainedOnZeroAttr::clone(ASTContext &C) const {
+ auto *A = new (C) OSReturnsRetainedOnZeroAttr(getLocation(), C, getSpellingListIndex());
+ A->Inherited = Inherited;
+ A->IsPackExpansion = IsPackExpansion;
+ A->Implicit = Implicit;
+ return A;
+}
+
+void OSReturnsRetainedOnZeroAttr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ break;
+ case 0 : {
+ OS << " __attribute__((os_returns_retained_on_zero))";
+ break;
+ }
+ case 1 : {
+ OS << " [[clang::os_returns_retained_on_zero]]";
+ break;
+ }
+ case 2 : {
+ OS << " [[clang::os_returns_retained_on_zero]]";
+ break;
+ }
+}
+}
+
+const char *OSReturnsRetainedOnZeroAttr::getSpelling() const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ return "(No spelling)";
+ case 0:
+ return "os_returns_retained_on_zero";
+ case 1:
+ return "os_returns_retained_on_zero";
+ case 2:
+ return "os_returns_retained_on_zero";
+ }
+}
+
ObjCBoxableAttr *ObjCBoxableAttr::clone(ASTContext &C) const {
auto *A = new (C) ObjCBoxableAttr(getLocation(), C, getSpellingListIndex());
A->Inherited = Inherited;
@@ -6157,6 +6696,48 @@
}
}
+ObjCExternallyRetainedAttr *ObjCExternallyRetainedAttr::clone(ASTContext &C) const {
+ auto *A = new (C) ObjCExternallyRetainedAttr(getLocation(), C, getSpellingListIndex());
+ A->Inherited = Inherited;
+ A->IsPackExpansion = IsPackExpansion;
+ A->Implicit = Implicit;
+ return A;
+}
+
+void ObjCExternallyRetainedAttr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ break;
+ case 0 : {
+ OS << " __attribute__((objc_externally_retained))";
+ break;
+ }
+ case 1 : {
+ OS << " [[clang::objc_externally_retained]]";
+ break;
+ }
+ case 2 : {
+ OS << " [[clang::objc_externally_retained]]";
+ break;
+ }
+}
+}
+
+const char *ObjCExternallyRetainedAttr::getSpelling() const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ return "(No spelling)";
+ case 0:
+ return "objc_externally_retained";
+ case 1:
+ return "objc_externally_retained";
+ case 2:
+ return "objc_externally_retained";
+ }
+}
+
ObjCGCAttr *ObjCGCAttr::clone(ASTContext &C) const {
auto *A = new (C) ObjCGCAttr(getLocation(), C, kind, getSpellingListIndex());
A->Inherited = Inherited;
@@ -6385,6 +6966,48 @@
}
}
+ObjCNonLazyClassAttr *ObjCNonLazyClassAttr::clone(ASTContext &C) const {
+ auto *A = new (C) ObjCNonLazyClassAttr(getLocation(), C, getSpellingListIndex());
+ A->Inherited = Inherited;
+ A->IsPackExpansion = IsPackExpansion;
+ A->Implicit = Implicit;
+ return A;
+}
+
+void ObjCNonLazyClassAttr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ break;
+ case 0 : {
+ OS << " __attribute__((objc_nonlazy_class))";
+ break;
+ }
+ case 1 : {
+ OS << " [[clang::objc_nonlazy_class]]";
+ break;
+ }
+ case 2 : {
+ OS << " [[clang::objc_nonlazy_class]]";
+ break;
+ }
+}
+}
+
+const char *ObjCNonLazyClassAttr::getSpelling() const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ return "(No spelling)";
+ case 0:
+ return "objc_nonlazy_class";
+ case 1:
+ return "objc_nonlazy_class";
+ case 2:
+ return "objc_nonlazy_class";
+ }
+}
+
ObjCOwnershipAttr *ObjCOwnershipAttr::clone(ASTContext &C) const {
auto *A = new (C) ObjCOwnershipAttr(getLocation(), C, kind, getSpellingListIndex());
A->Inherited = Inherited;
@@ -8739,6 +9362,48 @@
}
}
+SpeculativeLoadHardeningAttr *SpeculativeLoadHardeningAttr::clone(ASTContext &C) const {
+ auto *A = new (C) SpeculativeLoadHardeningAttr(getLocation(), C, getSpellingListIndex());
+ A->Inherited = Inherited;
+ A->IsPackExpansion = IsPackExpansion;
+ A->Implicit = Implicit;
+ return A;
+}
+
+void SpeculativeLoadHardeningAttr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ break;
+ case 0 : {
+ OS << " __attribute__((speculative_load_hardening))";
+ break;
+ }
+ case 1 : {
+ OS << " [[clang::speculative_load_hardening]]";
+ break;
+ }
+ case 2 : {
+ OS << " [[clang::speculative_load_hardening]]";
+ break;
+ }
+}
+}
+
+const char *SpeculativeLoadHardeningAttr::getSpelling() const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ return "(No spelling)";
+ case 0:
+ return "speculative_load_hardening";
+ case 1:
+ return "speculative_load_hardening";
+ case 2:
+ return "speculative_load_hardening";
+ }
+}
+
StdCallAttr *StdCallAttr::clone(ASTContext &C) const {
auto *A = new (C) StdCallAttr(getLocation(), C, getSpellingListIndex());
A->Inherited = Inherited;
@@ -9608,6 +10273,42 @@
}
}
+UninitializedAttr *UninitializedAttr::clone(ASTContext &C) const {
+ auto *A = new (C) UninitializedAttr(getLocation(), C, getSpellingListIndex());
+ A->Inherited = Inherited;
+ A->IsPackExpansion = IsPackExpansion;
+ A->Implicit = Implicit;
+ return A;
+}
+
+void UninitializedAttr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ break;
+ case 0 : {
+ OS << " __attribute__((uninitialized))";
+ break;
+ }
+ case 1 : {
+ OS << " [[clang::uninitialized]]";
+ break;
+ }
+}
+}
+
+const char *UninitializedAttr::getSpelling() const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ return "(No spelling)";
+ case 0:
+ return "uninitialized";
+ case 1:
+ return "uninitialized";
+ }
+}
+
UnusedAttr *UnusedAttr::clone(ASTContext &C) const {
auto *A = new (C) UnusedAttr(getLocation(), C, getSpellingListIndex());
A->Inherited = Inherited;
@@ -10088,6 +10789,90 @@
}
}
+WebAssemblyImportModuleAttr *WebAssemblyImportModuleAttr::clone(ASTContext &C) const {
+ auto *A = new (C) WebAssemblyImportModuleAttr(getLocation(), C, getImportModule(), getSpellingListIndex());
+ A->Inherited = Inherited;
+ A->IsPackExpansion = IsPackExpansion;
+ A->Implicit = Implicit;
+ return A;
+}
+
+void WebAssemblyImportModuleAttr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ break;
+ case 0 : {
+ OS << " __attribute__((import_module(\"" << getImportModule() << "\")))";
+ break;
+ }
+ case 1 : {
+ OS << " [[clang::import_module(\"" << getImportModule() << "\")]]";
+ break;
+ }
+ case 2 : {
+ OS << " [[clang::import_module(\"" << getImportModule() << "\")]]";
+ break;
+ }
+}
+}
+
+const char *WebAssemblyImportModuleAttr::getSpelling() const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ return "(No spelling)";
+ case 0:
+ return "import_module";
+ case 1:
+ return "import_module";
+ case 2:
+ return "import_module";
+ }
+}
+
+WebAssemblyImportNameAttr *WebAssemblyImportNameAttr::clone(ASTContext &C) const {
+ auto *A = new (C) WebAssemblyImportNameAttr(getLocation(), C, getImportName(), getSpellingListIndex());
+ A->Inherited = Inherited;
+ A->IsPackExpansion = IsPackExpansion;
+ A->Implicit = Implicit;
+ return A;
+}
+
+void WebAssemblyImportNameAttr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ break;
+ case 0 : {
+ OS << " __attribute__((import_name(\"" << getImportName() << "\")))";
+ break;
+ }
+ case 1 : {
+ OS << " [[clang::import_name(\"" << getImportName() << "\")]]";
+ break;
+ }
+ case 2 : {
+ OS << " [[clang::import_name(\"" << getImportName() << "\")]]";
+ break;
+ }
+}
+}
+
+const char *WebAssemblyImportNameAttr::getSpelling() const {
+ switch (SpellingListIndex) {
+ default:
+ llvm_unreachable("Unknown attribute spelling!");
+ return "(No spelling)";
+ case 0:
+ return "import_name";
+ case 1:
+ return "import_name";
+ case 2:
+ return "import_name";
+ }
+}
+
WorkGroupSizeHintAttr *WorkGroupSizeHintAttr::clone(ASTContext &C) const {
auto *A = new (C) WorkGroupSizeHintAttr(getLocation(), C, xDim, yDim, zDim, getSpellingListIndex());
A->Inherited = Inherited;
@@ -10258,6 +11043,8 @@
const char *Attr::getSpelling() const {
switch (getKind()) {
+ case attr::AArch64VectorPcs:
+ return cast<AArch64VectorPcsAttr>(this)->getSpelling();
case attr::AMDGPUFlatWorkGroupSize:
return cast<AMDGPUFlatWorkGroupSizeAttr>(this)->getSpelling();
case attr::AMDGPUNumSGPR:
@@ -10364,6 +11151,8 @@
return cast<CXX11NoReturnAttr>(this)->getSpelling();
case attr::CallableWhen:
return cast<CallableWhenAttr>(this)->getSpelling();
+ case attr::Callback:
+ return cast<CallbackAttr>(this)->getSpelling();
case attr::Capability:
return cast<CapabilityAttr>(this)->getSpelling();
case attr::CapturedRecord:
@@ -10392,8 +11181,12 @@
return cast<ConvergentAttr>(this)->getSpelling();
case attr::DLLExport:
return cast<DLLExportAttr>(this)->getSpelling();
+ case attr::DLLExportStaticLocal:
+ return cast<DLLExportStaticLocalAttr>(this)->getSpelling();
case attr::DLLImport:
return cast<DLLImportAttr>(this)->getSpelling();
+ case attr::DLLImportStaticLocal:
+ return cast<DLLImportStaticLocalAttr>(this)->getSpelling();
case attr::Deprecated:
return cast<DeprecatedAttr>(this)->getSpelling();
case attr::Destructor:
@@ -10428,6 +11221,8 @@
return cast<FormatAttr>(this)->getSpelling();
case attr::FormatArg:
return cast<FormatArgAttr>(this)->getSpelling();
+ case attr::FortifyStdLib:
+ return cast<FortifyStdLibAttr>(this)->getSpelling();
case attr::GNUInline:
return cast<GNUInlineAttr>(this)->getSpelling();
case attr::GuardedBy:
@@ -10514,6 +11309,8 @@
return cast<NoCommonAttr>(this)->getSpelling();
case attr::NoDebug:
return cast<NoDebugAttr>(this)->getSpelling();
+ case attr::NoDeref:
+ return cast<NoDerefAttr>(this)->getSpelling();
case attr::NoDestroy:
return cast<NoDestroyAttr>(this)->getSpelling();
case attr::NoDuplicate:
@@ -10532,6 +11329,8 @@
return cast<NoReturnAttr>(this)->getSpelling();
case attr::NoSanitize:
return cast<NoSanitizeAttr>(this)->getSpelling();
+ case attr::NoSpeculativeLoadHardening:
+ return cast<NoSpeculativeLoadHardeningAttr>(this)->getSpelling();
case attr::NoSplitStack:
return cast<NoSplitStackAttr>(this)->getSpelling();
case attr::NoStackProtector:
@@ -10556,6 +11355,18 @@
return cast<OMPReferencedVarAttr>(this)->getSpelling();
case attr::OMPThreadPrivateDecl:
return cast<OMPThreadPrivateDeclAttr>(this)->getSpelling();
+ case attr::OSConsumed:
+ return cast<OSConsumedAttr>(this)->getSpelling();
+ case attr::OSConsumesThis:
+ return cast<OSConsumesThisAttr>(this)->getSpelling();
+ case attr::OSReturnsNotRetained:
+ return cast<OSReturnsNotRetainedAttr>(this)->getSpelling();
+ case attr::OSReturnsRetained:
+ return cast<OSReturnsRetainedAttr>(this)->getSpelling();
+ case attr::OSReturnsRetainedOnNonZero:
+ return cast<OSReturnsRetainedOnNonZeroAttr>(this)->getSpelling();
+ case attr::OSReturnsRetainedOnZero:
+ return cast<OSReturnsRetainedOnZeroAttr>(this)->getSpelling();
case attr::ObjCBoxable:
return cast<ObjCBoxableAttr>(this)->getSpelling();
case attr::ObjCBridge:
@@ -10570,6 +11381,8 @@
return cast<ObjCExceptionAttr>(this)->getSpelling();
case attr::ObjCExplicitProtocolImpl:
return cast<ObjCExplicitProtocolImplAttr>(this)->getSpelling();
+ case attr::ObjCExternallyRetained:
+ return cast<ObjCExternallyRetainedAttr>(this)->getSpelling();
case attr::ObjCGC:
return cast<ObjCGCAttr>(this)->getSpelling();
case attr::ObjCIndependentClass:
@@ -10582,6 +11395,8 @@
return cast<ObjCMethodFamilyAttr>(this)->getSpelling();
case attr::ObjCNSObject:
return cast<ObjCNSObjectAttr>(this)->getSpelling();
+ case attr::ObjCNonLazyClass:
+ return cast<ObjCNonLazyClassAttr>(this)->getSpelling();
case attr::ObjCOwnership:
return cast<ObjCOwnershipAttr>(this)->getSpelling();
case attr::ObjCPreciseLifetime:
@@ -10696,6 +11511,8 @@
return cast<SetTypestateAttr>(this)->getSpelling();
case attr::SharedTrylockFunction:
return cast<SharedTrylockFunctionAttr>(this)->getSpelling();
+ case attr::SpeculativeLoadHardening:
+ return cast<SpeculativeLoadHardeningAttr>(this)->getSpelling();
case attr::StdCall:
return cast<StdCallAttr>(this)->getSpelling();
case attr::Suppress:
@@ -10740,6 +11557,8 @@
return cast<UPtrAttr>(this)->getSpelling();
case attr::Unavailable:
return cast<UnavailableAttr>(this)->getSpelling();
+ case attr::Uninitialized:
+ return cast<UninitializedAttr>(this)->getSpelling();
case attr::Unused:
return cast<UnusedAttr>(this)->getSpelling();
case attr::Used:
@@ -10764,6 +11583,10 @@
return cast<WeakImportAttr>(this)->getSpelling();
case attr::WeakRef:
return cast<WeakRefAttr>(this)->getSpelling();
+ case attr::WebAssemblyImportModule:
+ return cast<WebAssemblyImportModuleAttr>(this)->getSpelling();
+ case attr::WebAssemblyImportName:
+ return cast<WebAssemblyImportNameAttr>(this)->getSpelling();
case attr::WorkGroupSizeHint:
return cast<WorkGroupSizeHintAttr>(this)->getSpelling();
case attr::X86ForceAlignArgPointer:
@@ -10778,6 +11601,8 @@
Attr *Attr::clone(ASTContext &C) const {
switch (getKind()) {
+ case attr::AArch64VectorPcs:
+ return cast<AArch64VectorPcsAttr>(this)->clone(C);
case attr::AMDGPUFlatWorkGroupSize:
return cast<AMDGPUFlatWorkGroupSizeAttr>(this)->clone(C);
case attr::AMDGPUNumSGPR:
@@ -10884,6 +11709,8 @@
return cast<CXX11NoReturnAttr>(this)->clone(C);
case attr::CallableWhen:
return cast<CallableWhenAttr>(this)->clone(C);
+ case attr::Callback:
+ return cast<CallbackAttr>(this)->clone(C);
case attr::Capability:
return cast<CapabilityAttr>(this)->clone(C);
case attr::CapturedRecord:
@@ -10912,8 +11739,12 @@
return cast<ConvergentAttr>(this)->clone(C);
case attr::DLLExport:
return cast<DLLExportAttr>(this)->clone(C);
+ case attr::DLLExportStaticLocal:
+ return cast<DLLExportStaticLocalAttr>(this)->clone(C);
case attr::DLLImport:
return cast<DLLImportAttr>(this)->clone(C);
+ case attr::DLLImportStaticLocal:
+ return cast<DLLImportStaticLocalAttr>(this)->clone(C);
case attr::Deprecated:
return cast<DeprecatedAttr>(this)->clone(C);
case attr::Destructor:
@@ -10948,6 +11779,8 @@
return cast<FormatAttr>(this)->clone(C);
case attr::FormatArg:
return cast<FormatArgAttr>(this)->clone(C);
+ case attr::FortifyStdLib:
+ return cast<FortifyStdLibAttr>(this)->clone(C);
case attr::GNUInline:
return cast<GNUInlineAttr>(this)->clone(C);
case attr::GuardedBy:
@@ -11034,6 +11867,8 @@
return cast<NoCommonAttr>(this)->clone(C);
case attr::NoDebug:
return cast<NoDebugAttr>(this)->clone(C);
+ case attr::NoDeref:
+ return cast<NoDerefAttr>(this)->clone(C);
case attr::NoDestroy:
return cast<NoDestroyAttr>(this)->clone(C);
case attr::NoDuplicate:
@@ -11052,6 +11887,8 @@
return cast<NoReturnAttr>(this)->clone(C);
case attr::NoSanitize:
return cast<NoSanitizeAttr>(this)->clone(C);
+ case attr::NoSpeculativeLoadHardening:
+ return cast<NoSpeculativeLoadHardeningAttr>(this)->clone(C);
case attr::NoSplitStack:
return cast<NoSplitStackAttr>(this)->clone(C);
case attr::NoStackProtector:
@@ -11076,6 +11913,18 @@
return cast<OMPReferencedVarAttr>(this)->clone(C);
case attr::OMPThreadPrivateDecl:
return cast<OMPThreadPrivateDeclAttr>(this)->clone(C);
+ case attr::OSConsumed:
+ return cast<OSConsumedAttr>(this)->clone(C);
+ case attr::OSConsumesThis:
+ return cast<OSConsumesThisAttr>(this)->clone(C);
+ case attr::OSReturnsNotRetained:
+ return cast<OSReturnsNotRetainedAttr>(this)->clone(C);
+ case attr::OSReturnsRetained:
+ return cast<OSReturnsRetainedAttr>(this)->clone(C);
+ case attr::OSReturnsRetainedOnNonZero:
+ return cast<OSReturnsRetainedOnNonZeroAttr>(this)->clone(C);
+ case attr::OSReturnsRetainedOnZero:
+ return cast<OSReturnsRetainedOnZeroAttr>(this)->clone(C);
case attr::ObjCBoxable:
return cast<ObjCBoxableAttr>(this)->clone(C);
case attr::ObjCBridge:
@@ -11090,6 +11939,8 @@
return cast<ObjCExceptionAttr>(this)->clone(C);
case attr::ObjCExplicitProtocolImpl:
return cast<ObjCExplicitProtocolImplAttr>(this)->clone(C);
+ case attr::ObjCExternallyRetained:
+ return cast<ObjCExternallyRetainedAttr>(this)->clone(C);
case attr::ObjCGC:
return cast<ObjCGCAttr>(this)->clone(C);
case attr::ObjCIndependentClass:
@@ -11102,6 +11953,8 @@
return cast<ObjCMethodFamilyAttr>(this)->clone(C);
case attr::ObjCNSObject:
return cast<ObjCNSObjectAttr>(this)->clone(C);
+ case attr::ObjCNonLazyClass:
+ return cast<ObjCNonLazyClassAttr>(this)->clone(C);
case attr::ObjCOwnership:
return cast<ObjCOwnershipAttr>(this)->clone(C);
case attr::ObjCPreciseLifetime:
@@ -11216,6 +12069,8 @@
return cast<SetTypestateAttr>(this)->clone(C);
case attr::SharedTrylockFunction:
return cast<SharedTrylockFunctionAttr>(this)->clone(C);
+ case attr::SpeculativeLoadHardening:
+ return cast<SpeculativeLoadHardeningAttr>(this)->clone(C);
case attr::StdCall:
return cast<StdCallAttr>(this)->clone(C);
case attr::Suppress:
@@ -11260,6 +12115,8 @@
return cast<UPtrAttr>(this)->clone(C);
case attr::Unavailable:
return cast<UnavailableAttr>(this)->clone(C);
+ case attr::Uninitialized:
+ return cast<UninitializedAttr>(this)->clone(C);
case attr::Unused:
return cast<UnusedAttr>(this)->clone(C);
case attr::Used:
@@ -11284,6 +12141,10 @@
return cast<WeakImportAttr>(this)->clone(C);
case attr::WeakRef:
return cast<WeakRefAttr>(this)->clone(C);
+ case attr::WebAssemblyImportModule:
+ return cast<WebAssemblyImportModuleAttr>(this)->clone(C);
+ case attr::WebAssemblyImportName:
+ return cast<WebAssemblyImportNameAttr>(this)->clone(C);
case attr::WorkGroupSizeHint:
return cast<WorkGroupSizeHintAttr>(this)->clone(C);
case attr::X86ForceAlignArgPointer:
@@ -11298,6 +12159,8 @@
void Attr::printPretty(raw_ostream &OS, const PrintingPolicy &Policy) const {
switch (getKind()) {
+ case attr::AArch64VectorPcs:
+ return cast<AArch64VectorPcsAttr>(this)->printPretty(OS, Policy);
case attr::AMDGPUFlatWorkGroupSize:
return cast<AMDGPUFlatWorkGroupSizeAttr>(this)->printPretty(OS, Policy);
case attr::AMDGPUNumSGPR:
@@ -11404,6 +12267,8 @@
return cast<CXX11NoReturnAttr>(this)->printPretty(OS, Policy);
case attr::CallableWhen:
return cast<CallableWhenAttr>(this)->printPretty(OS, Policy);
+ case attr::Callback:
+ return cast<CallbackAttr>(this)->printPretty(OS, Policy);
case attr::Capability:
return cast<CapabilityAttr>(this)->printPretty(OS, Policy);
case attr::CapturedRecord:
@@ -11432,8 +12297,12 @@
return cast<ConvergentAttr>(this)->printPretty(OS, Policy);
case attr::DLLExport:
return cast<DLLExportAttr>(this)->printPretty(OS, Policy);
+ case attr::DLLExportStaticLocal:
+ return cast<DLLExportStaticLocalAttr>(this)->printPretty(OS, Policy);
case attr::DLLImport:
return cast<DLLImportAttr>(this)->printPretty(OS, Policy);
+ case attr::DLLImportStaticLocal:
+ return cast<DLLImportStaticLocalAttr>(this)->printPretty(OS, Policy);
case attr::Deprecated:
return cast<DeprecatedAttr>(this)->printPretty(OS, Policy);
case attr::Destructor:
@@ -11468,6 +12337,8 @@
return cast<FormatAttr>(this)->printPretty(OS, Policy);
case attr::FormatArg:
return cast<FormatArgAttr>(this)->printPretty(OS, Policy);
+ case attr::FortifyStdLib:
+ return cast<FortifyStdLibAttr>(this)->printPretty(OS, Policy);
case attr::GNUInline:
return cast<GNUInlineAttr>(this)->printPretty(OS, Policy);
case attr::GuardedBy:
@@ -11554,6 +12425,8 @@
return cast<NoCommonAttr>(this)->printPretty(OS, Policy);
case attr::NoDebug:
return cast<NoDebugAttr>(this)->printPretty(OS, Policy);
+ case attr::NoDeref:
+ return cast<NoDerefAttr>(this)->printPretty(OS, Policy);
case attr::NoDestroy:
return cast<NoDestroyAttr>(this)->printPretty(OS, Policy);
case attr::NoDuplicate:
@@ -11572,6 +12445,8 @@
return cast<NoReturnAttr>(this)->printPretty(OS, Policy);
case attr::NoSanitize:
return cast<NoSanitizeAttr>(this)->printPretty(OS, Policy);
+ case attr::NoSpeculativeLoadHardening:
+ return cast<NoSpeculativeLoadHardeningAttr>(this)->printPretty(OS, Policy);
case attr::NoSplitStack:
return cast<NoSplitStackAttr>(this)->printPretty(OS, Policy);
case attr::NoStackProtector:
@@ -11596,6 +12471,18 @@
return cast<OMPReferencedVarAttr>(this)->printPretty(OS, Policy);
case attr::OMPThreadPrivateDecl:
return cast<OMPThreadPrivateDeclAttr>(this)->printPretty(OS, Policy);
+ case attr::OSConsumed:
+ return cast<OSConsumedAttr>(this)->printPretty(OS, Policy);
+ case attr::OSConsumesThis:
+ return cast<OSConsumesThisAttr>(this)->printPretty(OS, Policy);
+ case attr::OSReturnsNotRetained:
+ return cast<OSReturnsNotRetainedAttr>(this)->printPretty(OS, Policy);
+ case attr::OSReturnsRetained:
+ return cast<OSReturnsRetainedAttr>(this)->printPretty(OS, Policy);
+ case attr::OSReturnsRetainedOnNonZero:
+ return cast<OSReturnsRetainedOnNonZeroAttr>(this)->printPretty(OS, Policy);
+ case attr::OSReturnsRetainedOnZero:
+ return cast<OSReturnsRetainedOnZeroAttr>(this)->printPretty(OS, Policy);
case attr::ObjCBoxable:
return cast<ObjCBoxableAttr>(this)->printPretty(OS, Policy);
case attr::ObjCBridge:
@@ -11610,6 +12497,8 @@
return cast<ObjCExceptionAttr>(this)->printPretty(OS, Policy);
case attr::ObjCExplicitProtocolImpl:
return cast<ObjCExplicitProtocolImplAttr>(this)->printPretty(OS, Policy);
+ case attr::ObjCExternallyRetained:
+ return cast<ObjCExternallyRetainedAttr>(this)->printPretty(OS, Policy);
case attr::ObjCGC:
return cast<ObjCGCAttr>(this)->printPretty(OS, Policy);
case attr::ObjCIndependentClass:
@@ -11622,6 +12511,8 @@
return cast<ObjCMethodFamilyAttr>(this)->printPretty(OS, Policy);
case attr::ObjCNSObject:
return cast<ObjCNSObjectAttr>(this)->printPretty(OS, Policy);
+ case attr::ObjCNonLazyClass:
+ return cast<ObjCNonLazyClassAttr>(this)->printPretty(OS, Policy);
case attr::ObjCOwnership:
return cast<ObjCOwnershipAttr>(this)->printPretty(OS, Policy);
case attr::ObjCPreciseLifetime:
@@ -11736,6 +12627,8 @@
return cast<SetTypestateAttr>(this)->printPretty(OS, Policy);
case attr::SharedTrylockFunction:
return cast<SharedTrylockFunctionAttr>(this)->printPretty(OS, Policy);
+ case attr::SpeculativeLoadHardening:
+ return cast<SpeculativeLoadHardeningAttr>(this)->printPretty(OS, Policy);
case attr::StdCall:
return cast<StdCallAttr>(this)->printPretty(OS, Policy);
case attr::Suppress:
@@ -11780,6 +12673,8 @@
return cast<UPtrAttr>(this)->printPretty(OS, Policy);
case attr::Unavailable:
return cast<UnavailableAttr>(this)->printPretty(OS, Policy);
+ case attr::Uninitialized:
+ return cast<UninitializedAttr>(this)->printPretty(OS, Policy);
case attr::Unused:
return cast<UnusedAttr>(this)->printPretty(OS, Policy);
case attr::Used:
@@ -11804,6 +12699,10 @@
return cast<WeakImportAttr>(this)->printPretty(OS, Policy);
case attr::WeakRef:
return cast<WeakRefAttr>(this)->printPretty(OS, Policy);
+ case attr::WebAssemblyImportModule:
+ return cast<WebAssemblyImportModuleAttr>(this)->printPretty(OS, Policy);
+ case attr::WebAssemblyImportName:
+ return cast<WebAssemblyImportNameAttr>(this)->printPretty(OS, Policy);
case attr::WorkGroupSizeHint:
return cast<WorkGroupSizeHintAttr>(this)->printPretty(OS, Policy);
case attr::X86ForceAlignArgPointer:
diff --git a/linux-x64/clang/include/clang/AST/AttrIterator.h b/linux-x64/clang/include/clang/AST/AttrIterator.h
index 2087ecc..78ce931 100644
--- a/linux-x64/clang/include/clang/AST/AttrIterator.h
+++ b/linux-x64/clang/include/clang/AST/AttrIterator.h
@@ -1,9 +1,8 @@
//===- AttrIterator.h - Classes for attribute iteration ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -26,25 +25,6 @@
class ASTContext;
class Attr;
-} // namespace clang
-
-// Defined in ASTContext.h
-void *operator new(size_t Bytes, const clang::ASTContext &C,
- size_t Alignment = 8);
-
-// FIXME: Being forced to not have a default argument here due to redeclaration
-// rules on default arguments sucks
-void *operator new[](size_t Bytes, const clang::ASTContext &C,
- size_t Alignment);
-
-// It is good practice to pair new/delete operators. Also, MSVC gives many
-// warnings if a matching delete overload is not declared, even though the
-// throw() spec guarantees it will not be implicitly called.
-void operator delete(void *Ptr, const clang::ASTContext &C, size_t);
-void operator delete[](void *Ptr, const clang::ASTContext &C, size_t);
-
-namespace clang {
-
/// AttrVec - A vector of Attr, which is how they are stored on the AST.
using AttrVec = SmallVector<Attr *, 4>;
diff --git a/linux-x64/clang/include/clang/AST/AttrNodeTraverse.inc b/linux-x64/clang/include/clang/AST/AttrNodeTraverse.inc
new file mode 100644
index 0000000..f3863cf
--- /dev/null
+++ b/linux-x64/clang/include/clang/AST/AttrNodeTraverse.inc
@@ -0,0 +1,132 @@
+/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
+|* *|
+|* Attribute text node traverser *|
+|* *|
+|* Automatically generated file, do not edit! *|
+|* *|
+\*===----------------------------------------------------------------------===*/
+
+ void VisitAcquireCapabilityAttr(const AcquireCapabilityAttr *A) {
+ const auto *SA = cast<AcquireCapabilityAttr>(A); (void)SA;
+ for (AcquireCapabilityAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
+ Visit(*I);
+ }
+ void VisitAcquiredAfterAttr(const AcquiredAfterAttr *A) {
+ const auto *SA = cast<AcquiredAfterAttr>(A); (void)SA;
+ for (AcquiredAfterAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
+ Visit(*I);
+ }
+ void VisitAcquiredBeforeAttr(const AcquiredBeforeAttr *A) {
+ const auto *SA = cast<AcquiredBeforeAttr>(A); (void)SA;
+ for (AcquiredBeforeAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
+ Visit(*I);
+ }
+ void VisitAlignValueAttr(const AlignValueAttr *A) {
+ const auto *SA = cast<AlignValueAttr>(A); (void)SA;
+ Visit(SA->getAlignment());
+ }
+ void VisitAlignedAttr(const AlignedAttr *A) {
+ const auto *SA = cast<AlignedAttr>(A); (void)SA;
+ if (SA->isAlignmentExpr())
+ Visit(SA->getAlignmentExpr());
+ }
+ void VisitAssertCapabilityAttr(const AssertCapabilityAttr *A) {
+ const auto *SA = cast<AssertCapabilityAttr>(A); (void)SA;
+ for (AssertCapabilityAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
+ Visit(*I);
+ }
+ void VisitAssertExclusiveLockAttr(const AssertExclusiveLockAttr *A) {
+ const auto *SA = cast<AssertExclusiveLockAttr>(A); (void)SA;
+ for (AssertExclusiveLockAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
+ Visit(*I);
+ }
+ void VisitAssertSharedLockAttr(const AssertSharedLockAttr *A) {
+ const auto *SA = cast<AssertSharedLockAttr>(A); (void)SA;
+ for (AssertSharedLockAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
+ Visit(*I);
+ }
+ void VisitAssumeAlignedAttr(const AssumeAlignedAttr *A) {
+ const auto *SA = cast<AssumeAlignedAttr>(A); (void)SA;
+ Visit(SA->getAlignment());
+ Visit(SA->getOffset());
+ }
+ void VisitCUDALaunchBoundsAttr(const CUDALaunchBoundsAttr *A) {
+ const auto *SA = cast<CUDALaunchBoundsAttr>(A); (void)SA;
+ Visit(SA->getMaxThreads());
+ Visit(SA->getMinBlocks());
+ }
+ void VisitDiagnoseIfAttr(const DiagnoseIfAttr *A) {
+ const auto *SA = cast<DiagnoseIfAttr>(A); (void)SA;
+ Visit(SA->getCond());
+ }
+ void VisitEnableIfAttr(const EnableIfAttr *A) {
+ const auto *SA = cast<EnableIfAttr>(A); (void)SA;
+ Visit(SA->getCond());
+ }
+ void VisitExclusiveTrylockFunctionAttr(const ExclusiveTrylockFunctionAttr *A) {
+ const auto *SA = cast<ExclusiveTrylockFunctionAttr>(A); (void)SA;
+ Visit(SA->getSuccessValue());
+ for (ExclusiveTrylockFunctionAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
+ Visit(*I);
+ }
+ void VisitGuardedByAttr(const GuardedByAttr *A) {
+ const auto *SA = cast<GuardedByAttr>(A); (void)SA;
+ Visit(SA->getArg());
+ }
+ void VisitLockReturnedAttr(const LockReturnedAttr *A) {
+ const auto *SA = cast<LockReturnedAttr>(A); (void)SA;
+ Visit(SA->getArg());
+ }
+ void VisitLocksExcludedAttr(const LocksExcludedAttr *A) {
+ const auto *SA = cast<LocksExcludedAttr>(A); (void)SA;
+ for (LocksExcludedAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
+ Visit(*I);
+ }
+ void VisitLoopHintAttr(const LoopHintAttr *A) {
+ const auto *SA = cast<LoopHintAttr>(A); (void)SA;
+ Visit(SA->getValue());
+ }
+ void VisitOMPDeclareSimdDeclAttr(const OMPDeclareSimdDeclAttr *A) {
+ const auto *SA = cast<OMPDeclareSimdDeclAttr>(A); (void)SA;
+ Visit(SA->getSimdlen());
+ for (OMPDeclareSimdDeclAttr::uniforms_iterator I = SA->uniforms_begin(), E = SA->uniforms_end(); I != E; ++I)
+ Visit(*I);
+ for (OMPDeclareSimdDeclAttr::aligneds_iterator I = SA->aligneds_begin(), E = SA->aligneds_end(); I != E; ++I)
+ Visit(*I);
+ for (OMPDeclareSimdDeclAttr::alignments_iterator I = SA->alignments_begin(), E = SA->alignments_end(); I != E; ++I)
+ Visit(*I);
+ for (OMPDeclareSimdDeclAttr::linears_iterator I = SA->linears_begin(), E = SA->linears_end(); I != E; ++I)
+ Visit(*I);
+ for (OMPDeclareSimdDeclAttr::steps_iterator I = SA->steps_begin(), E = SA->steps_end(); I != E; ++I)
+ Visit(*I);
+ }
+ void VisitOMPReferencedVarAttr(const OMPReferencedVarAttr *A) {
+ const auto *SA = cast<OMPReferencedVarAttr>(A); (void)SA;
+ Visit(SA->getRef());
+ }
+ void VisitPtGuardedByAttr(const PtGuardedByAttr *A) {
+ const auto *SA = cast<PtGuardedByAttr>(A); (void)SA;
+ Visit(SA->getArg());
+ }
+ void VisitReleaseCapabilityAttr(const ReleaseCapabilityAttr *A) {
+ const auto *SA = cast<ReleaseCapabilityAttr>(A); (void)SA;
+ for (ReleaseCapabilityAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
+ Visit(*I);
+ }
+ void VisitRequiresCapabilityAttr(const RequiresCapabilityAttr *A) {
+ const auto *SA = cast<RequiresCapabilityAttr>(A); (void)SA;
+ for (RequiresCapabilityAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
+ Visit(*I);
+ }
+ void VisitSharedTrylockFunctionAttr(const SharedTrylockFunctionAttr *A) {
+ const auto *SA = cast<SharedTrylockFunctionAttr>(A); (void)SA;
+ Visit(SA->getSuccessValue());
+ for (SharedTrylockFunctionAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
+ Visit(*I);
+ }
+ void VisitTryAcquireCapabilityAttr(const TryAcquireCapabilityAttr *A) {
+ const auto *SA = cast<TryAcquireCapabilityAttr>(A); (void)SA;
+ Visit(SA->getSuccessValue());
+ for (TryAcquireCapabilityAttr::args_iterator I = SA->args_begin(), E = SA->args_end(); I != E; ++I)
+ Visit(*I);
+ }
diff --git a/linux-x64/clang/include/clang/AST/AttrTextNodeDump.inc b/linux-x64/clang/include/clang/AST/AttrTextNodeDump.inc
new file mode 100644
index 0000000..239b532
--- /dev/null
+++ b/linux-x64/clang/include/clang/AST/AttrTextNodeDump.inc
@@ -0,0 +1,751 @@
+/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
+|* *|
+|* Attribute text node dumper *|
+|* *|
+|* Automatically generated file, do not edit! *|
+|* *|
+\*===----------------------------------------------------------------------===*/
+
+ void VisitAMDGPUFlatWorkGroupSizeAttr(const AMDGPUFlatWorkGroupSizeAttr *A) {
+ const auto *SA = cast<AMDGPUFlatWorkGroupSizeAttr>(A); (void)SA;
+ OS << " " << SA->getMin();
+ OS << " " << SA->getMax();
+ }
+ void VisitAMDGPUNumSGPRAttr(const AMDGPUNumSGPRAttr *A) {
+ const auto *SA = cast<AMDGPUNumSGPRAttr>(A); (void)SA;
+ OS << " " << SA->getNumSGPR();
+ }
+ void VisitAMDGPUNumVGPRAttr(const AMDGPUNumVGPRAttr *A) {
+ const auto *SA = cast<AMDGPUNumVGPRAttr>(A); (void)SA;
+ OS << " " << SA->getNumVGPR();
+ }
+ void VisitAMDGPUWavesPerEUAttr(const AMDGPUWavesPerEUAttr *A) {
+ const auto *SA = cast<AMDGPUWavesPerEUAttr>(A); (void)SA;
+ OS << " " << SA->getMin();
+ OS << " " << SA->getMax();
+ }
+ void VisitARMInterruptAttr(const ARMInterruptAttr *A) {
+ const auto *SA = cast<ARMInterruptAttr>(A); (void)SA;
+ switch(SA->getInterrupt()) {
+ case ARMInterruptAttr::IRQ:
+ OS << " IRQ";
+ break;
+ case ARMInterruptAttr::FIQ:
+ OS << " FIQ";
+ break;
+ case ARMInterruptAttr::SWI:
+ OS << " SWI";
+ break;
+ case ARMInterruptAttr::ABORT:
+ OS << " ABORT";
+ break;
+ case ARMInterruptAttr::UNDEF:
+ OS << " UNDEF";
+ break;
+ case ARMInterruptAttr::Generic:
+ OS << " Generic";
+ break;
+ }
+ }
+ void VisitAbiTagAttr(const AbiTagAttr *A) {
+ const auto *SA = cast<AbiTagAttr>(A); (void)SA;
+ for (const auto &Val : SA->tags())
+ OS << " " << Val;
+ }
+ void VisitAcquireCapabilityAttr(const AcquireCapabilityAttr *A) {
+ const auto *SA = cast<AcquireCapabilityAttr>(A); (void)SA;
+ OS << " " << A->getSpelling();
+ }
+ void VisitAddressSpaceAttr(const AddressSpaceAttr *A) {
+ const auto *SA = cast<AddressSpaceAttr>(A); (void)SA;
+ OS << " " << SA->getAddressSpace();
+ }
+ void VisitAliasAttr(const AliasAttr *A) {
+ const auto *SA = cast<AliasAttr>(A); (void)SA;
+ OS << " \"" << SA->getAliasee() << "\"";
+ }
+ void VisitAlignedAttr(const AlignedAttr *A) {
+ const auto *SA = cast<AlignedAttr>(A); (void)SA;
+ OS << " " << A->getSpelling();
+ if (!SA->isAlignmentExpr())
+ dumpType(SA->getAlignmentType()->getType());
+ }
+ void VisitAllocAlignAttr(const AllocAlignAttr *A) {
+ const auto *SA = cast<AllocAlignAttr>(A); (void)SA;
+ OS << " " << SA->getParamIndex().getSourceIndex();
+ }
+ void VisitAllocSizeAttr(const AllocSizeAttr *A) {
+ const auto *SA = cast<AllocSizeAttr>(A); (void)SA;
+ OS << " " << SA->getElemSizeParam().getSourceIndex();
+ if (SA->getNumElemsParam().isValid())
+ OS << " " << SA->getNumElemsParam().getSourceIndex();
+ }
+ void VisitAlwaysInlineAttr(const AlwaysInlineAttr *A) {
+ OS << " " << A->getSpelling();
+ }
+ void VisitAnnotateAttr(const AnnotateAttr *A) {
+ const auto *SA = cast<AnnotateAttr>(A); (void)SA;
+ OS << " \"" << SA->getAnnotation() << "\"";
+ }
+ void VisitArgumentWithTypeTagAttr(const ArgumentWithTypeTagAttr *A) {
+ const auto *SA = cast<ArgumentWithTypeTagAttr>(A); (void)SA;
+ OS << " " << A->getSpelling();
+ if (SA->getArgumentKind())
+ OS << " " << SA->getArgumentKind()->getName();
+ OS << " " << SA->getArgumentIdx().getSourceIndex();
+ OS << " " << SA->getTypeTagIdx().getSourceIndex();
+ if (SA->getIsPointer()) OS << " IsPointer";
+ }
+ void VisitAsmLabelAttr(const AsmLabelAttr *A) {
+ const auto *SA = cast<AsmLabelAttr>(A); (void)SA;
+ OS << " \"" << SA->getLabel() << "\"";
+ }
+ void VisitAssertCapabilityAttr(const AssertCapabilityAttr *A) {
+ const auto *SA = cast<AssertCapabilityAttr>(A); (void)SA;
+ OS << " " << A->getSpelling();
+ }
+ void VisitAvailabilityAttr(const AvailabilityAttr *A) {
+ const auto *SA = cast<AvailabilityAttr>(A); (void)SA;
+ if (SA->getPlatform())
+ OS << " " << SA->getPlatform()->getName();
+ OS << " " << SA->getIntroduced();
+ OS << " " << SA->getDeprecated();
+ OS << " " << SA->getObsoleted();
+ if (SA->getUnavailable()) OS << " Unavailable";
+ OS << " \"" << SA->getMessage() << "\"";
+ if (SA->getStrict()) OS << " Strict";
+ OS << " \"" << SA->getReplacement() << "\"";
+ OS << " " << SA->getPriority();
+ }
+ void VisitBlocksAttr(const BlocksAttr *A) {
+ const auto *SA = cast<BlocksAttr>(A); (void)SA;
+ switch(SA->getType()) {
+ case BlocksAttr::ByRef:
+ OS << " ByRef";
+ break;
+ }
+ }
+ void VisitCPUDispatchAttr(const CPUDispatchAttr *A) {
+ const auto *SA = cast<CPUDispatchAttr>(A); (void)SA;
+ for (const auto &Val : SA->cpus())
+ OS << " " << Val;
+ }
+ void VisitCPUSpecificAttr(const CPUSpecificAttr *A) {
+ const auto *SA = cast<CPUSpecificAttr>(A); (void)SA;
+ for (const auto &Val : SA->cpus())
+ OS << " " << Val;
+ }
+ void VisitCallableWhenAttr(const CallableWhenAttr *A) {
+ const auto *SA = cast<CallableWhenAttr>(A); (void)SA;
+ for (CallableWhenAttr::callableStates_iterator I = SA->callableStates_begin(), E = SA->callableStates_end(); I != E; ++I) {
+ switch(*I) {
+ case CallableWhenAttr::Unknown:
+ OS << " Unknown";
+ break;
+ case CallableWhenAttr::Consumed:
+ OS << " Consumed";
+ break;
+ case CallableWhenAttr::Unconsumed:
+ OS << " Unconsumed";
+ break;
+ }
+ }
+ }
+ void VisitCallbackAttr(const CallbackAttr *A) {
+ const auto *SA = cast<CallbackAttr>(A); (void)SA;
+ for (const auto &Val : SA->encoding())
+ OS << " " << Val;
+ }
+ void VisitCapabilityAttr(const CapabilityAttr *A) {
+ const auto *SA = cast<CapabilityAttr>(A); (void)SA;
+ OS << " " << A->getSpelling();
+ OS << " \"" << SA->getName() << "\"";
+ }
+ void VisitCleanupAttr(const CleanupAttr *A) {
+ const auto *SA = cast<CleanupAttr>(A); (void)SA;
+ OS << " ";
+ dumpBareDeclRef(SA->getFunctionDecl());
+ }
+ void VisitCodeSegAttr(const CodeSegAttr *A) {
+ const auto *SA = cast<CodeSegAttr>(A); (void)SA;
+ OS << " \"" << SA->getName() << "\"";
+ }
+ void VisitConstructorAttr(const ConstructorAttr *A) {
+ const auto *SA = cast<ConstructorAttr>(A); (void)SA;
+ OS << " " << SA->getPriority();
+ }
+ void VisitConsumableAttr(const ConsumableAttr *A) {
+ const auto *SA = cast<ConsumableAttr>(A); (void)SA;
+ switch(SA->getDefaultState()) {
+ case ConsumableAttr::Unknown:
+ OS << " Unknown";
+ break;
+ case ConsumableAttr::Consumed:
+ OS << " Consumed";
+ break;
+ case ConsumableAttr::Unconsumed:
+ OS << " Unconsumed";
+ break;
+ }
+ }
+ void VisitDeprecatedAttr(const DeprecatedAttr *A) {
+ const auto *SA = cast<DeprecatedAttr>(A); (void)SA;
+ OS << " \"" << SA->getMessage() << "\"";
+ OS << " \"" << SA->getReplacement() << "\"";
+ }
+ void VisitDestructorAttr(const DestructorAttr *A) {
+ const auto *SA = cast<DestructorAttr>(A); (void)SA;
+ OS << " " << SA->getPriority();
+ }
+ void VisitDiagnoseIfAttr(const DiagnoseIfAttr *A) {
+ const auto *SA = cast<DiagnoseIfAttr>(A); (void)SA;
+ OS << " \"" << SA->getMessage() << "\"";
+ switch(SA->getDiagnosticType()) {
+ case DiagnoseIfAttr::DT_Error:
+ OS << " DT_Error";
+ break;
+ case DiagnoseIfAttr::DT_Warning:
+ OS << " DT_Warning";
+ break;
+ }
+ if (SA->getArgDependent()) OS << " ArgDependent";
+ OS << " ";
+ dumpBareDeclRef(SA->getParent());
+ }
+ void VisitEnableIfAttr(const EnableIfAttr *A) {
+ const auto *SA = cast<EnableIfAttr>(A); (void)SA;
+ OS << " \"" << SA->getMessage() << "\"";
+ }
+ void VisitEnumExtensibilityAttr(const EnumExtensibilityAttr *A) {
+ const auto *SA = cast<EnumExtensibilityAttr>(A); (void)SA;
+ switch(SA->getExtensibility()) {
+ case EnumExtensibilityAttr::Closed:
+ OS << " Closed";
+ break;
+ case EnumExtensibilityAttr::Open:
+ OS << " Open";
+ break;
+ }
+ }
+ void VisitExternalSourceSymbolAttr(const ExternalSourceSymbolAttr *A) {
+ const auto *SA = cast<ExternalSourceSymbolAttr>(A); (void)SA;
+ OS << " \"" << SA->getLanguage() << "\"";
+ OS << " \"" << SA->getDefinedIn() << "\"";
+ if (SA->getGeneratedDeclaration()) OS << " GeneratedDeclaration";
+ }
+ void VisitFinalAttr(const FinalAttr *A) {
+ OS << " " << A->getSpelling();
+ }
+ void VisitFormatAttr(const FormatAttr *A) {
+ const auto *SA = cast<FormatAttr>(A); (void)SA;
+ if (SA->getType())
+ OS << " " << SA->getType()->getName();
+ OS << " " << SA->getFormatIdx();
+ OS << " " << SA->getFirstArg();
+ }
+ void VisitFormatArgAttr(const FormatArgAttr *A) {
+ const auto *SA = cast<FormatArgAttr>(A); (void)SA;
+ OS << " " << SA->getFormatIdx().getSourceIndex();
+ }
+ void VisitFortifyStdLibAttr(const FortifyStdLibAttr *A) {
+ const auto *SA = cast<FortifyStdLibAttr>(A); (void)SA;
+ OS << " " << SA->getType();
+ OS << " " << SA->getFlag();
+ }
+ void VisitIBOutletCollectionAttr(const IBOutletCollectionAttr *A) {
+ const auto *SA = cast<IBOutletCollectionAttr>(A); (void)SA;
+ OS << " " << SA->getInterface().getAsString();
+ }
+ void VisitIFuncAttr(const IFuncAttr *A) {
+ const auto *SA = cast<IFuncAttr>(A); (void)SA;
+ OS << " \"" << SA->getResolver() << "\"";
+ }
+ void VisitInitPriorityAttr(const InitPriorityAttr *A) {
+ const auto *SA = cast<InitPriorityAttr>(A); (void)SA;
+ OS << " " << SA->getPriority();
+ }
+ void VisitInitSegAttr(const InitSegAttr *A) {
+ const auto *SA = cast<InitSegAttr>(A); (void)SA;
+ OS << " \"" << SA->getSection() << "\"";
+ }
+ void VisitLayoutVersionAttr(const LayoutVersionAttr *A) {
+ const auto *SA = cast<LayoutVersionAttr>(A); (void)SA;
+ OS << " " << SA->getVersion();
+ }
+ void VisitLoopHintAttr(const LoopHintAttr *A) {
+ const auto *SA = cast<LoopHintAttr>(A); (void)SA;
+ OS << " " << A->getSpelling();
+ switch(SA->getOption()) {
+ case LoopHintAttr::Vectorize:
+ OS << " Vectorize";
+ break;
+ case LoopHintAttr::VectorizeWidth:
+ OS << " VectorizeWidth";
+ break;
+ case LoopHintAttr::Interleave:
+ OS << " Interleave";
+ break;
+ case LoopHintAttr::InterleaveCount:
+ OS << " InterleaveCount";
+ break;
+ case LoopHintAttr::Unroll:
+ OS << " Unroll";
+ break;
+ case LoopHintAttr::UnrollCount:
+ OS << " UnrollCount";
+ break;
+ case LoopHintAttr::UnrollAndJam:
+ OS << " UnrollAndJam";
+ break;
+ case LoopHintAttr::UnrollAndJamCount:
+ OS << " UnrollAndJamCount";
+ break;
+ case LoopHintAttr::PipelineDisabled:
+ OS << " PipelineDisabled";
+ break;
+ case LoopHintAttr::PipelineInitiationInterval:
+ OS << " PipelineInitiationInterval";
+ break;
+ case LoopHintAttr::Distribute:
+ OS << " Distribute";
+ break;
+ }
+ switch(SA->getState()) {
+ case LoopHintAttr::Enable:
+ OS << " Enable";
+ break;
+ case LoopHintAttr::Disable:
+ OS << " Disable";
+ break;
+ case LoopHintAttr::Numeric:
+ OS << " Numeric";
+ break;
+ case LoopHintAttr::AssumeSafety:
+ OS << " AssumeSafety";
+ break;
+ case LoopHintAttr::Full:
+ OS << " Full";
+ break;
+ }
+ }
+ void VisitMSInheritanceAttr(const MSInheritanceAttr *A) {
+ const auto *SA = cast<MSInheritanceAttr>(A); (void)SA;
+ OS << " " << A->getSpelling();
+ if (SA->getBestCase()) OS << " BestCase";
+ }
+ void VisitMSP430InterruptAttr(const MSP430InterruptAttr *A) {
+ const auto *SA = cast<MSP430InterruptAttr>(A); (void)SA;
+ OS << " " << SA->getNumber();
+ }
+ void VisitMSVtorDispAttr(const MSVtorDispAttr *A) {
+ const auto *SA = cast<MSVtorDispAttr>(A); (void)SA;
+ OS << " " << SA->getVdm();
+ }
+ void VisitMaxFieldAlignmentAttr(const MaxFieldAlignmentAttr *A) {
+ const auto *SA = cast<MaxFieldAlignmentAttr>(A); (void)SA;
+ OS << " " << SA->getAlignment();
+ }
+ void VisitMinVectorWidthAttr(const MinVectorWidthAttr *A) {
+ const auto *SA = cast<MinVectorWidthAttr>(A); (void)SA;
+ OS << " " << SA->getVectorWidth();
+ }
+ void VisitMipsInterruptAttr(const MipsInterruptAttr *A) {
+ const auto *SA = cast<MipsInterruptAttr>(A); (void)SA;
+ switch(SA->getInterrupt()) {
+ case MipsInterruptAttr::sw0:
+ OS << " sw0";
+ break;
+ case MipsInterruptAttr::sw1:
+ OS << " sw1";
+ break;
+ case MipsInterruptAttr::hw0:
+ OS << " hw0";
+ break;
+ case MipsInterruptAttr::hw1:
+ OS << " hw1";
+ break;
+ case MipsInterruptAttr::hw2:
+ OS << " hw2";
+ break;
+ case MipsInterruptAttr::hw3:
+ OS << " hw3";
+ break;
+ case MipsInterruptAttr::hw4:
+ OS << " hw4";
+ break;
+ case MipsInterruptAttr::hw5:
+ OS << " hw5";
+ break;
+ case MipsInterruptAttr::eic:
+ OS << " eic";
+ break;
+ }
+ }
+ void VisitMipsLongCallAttr(const MipsLongCallAttr *A) {
+ OS << " " << A->getSpelling();
+ }
+ void VisitMipsShortCallAttr(const MipsShortCallAttr *A) {
+ OS << " " << A->getSpelling();
+ }
+ void VisitModeAttr(const ModeAttr *A) {
+ const auto *SA = cast<ModeAttr>(A); (void)SA;
+ if (SA->getMode())
+ OS << " " << SA->getMode()->getName();
+ }
+ void VisitNoSanitizeAttr(const NoSanitizeAttr *A) {
+ const auto *SA = cast<NoSanitizeAttr>(A); (void)SA;
+ for (const auto &Val : SA->sanitizers())
+ OS << " " << Val;
+ }
+ void VisitNonNullAttr(const NonNullAttr *A) {
+ const auto *SA = cast<NonNullAttr>(A); (void)SA;
+ for (const auto &Val : SA->args())
+ OS << " " << Val.getSourceIndex();
+ }
+ void VisitOMPCaptureKindAttr(const OMPCaptureKindAttr *A) {
+ const auto *SA = cast<OMPCaptureKindAttr>(A); (void)SA;
+ OS << " " << SA->getCaptureKind();
+ }
+ void VisitOMPDeclareSimdDeclAttr(const OMPDeclareSimdDeclAttr *A) {
+ const auto *SA = cast<OMPDeclareSimdDeclAttr>(A); (void)SA;
+ switch(SA->getBranchState()) {
+ case OMPDeclareSimdDeclAttr::BS_Undefined:
+ OS << " BS_Undefined";
+ break;
+ case OMPDeclareSimdDeclAttr::BS_Inbranch:
+ OS << " BS_Inbranch";
+ break;
+ case OMPDeclareSimdDeclAttr::BS_Notinbranch:
+ OS << " BS_Notinbranch";
+ break;
+ }
+ for (const auto &Val : SA->modifiers())
+ OS << " " << Val;
+ }
+ void VisitOMPDeclareTargetDeclAttr(const OMPDeclareTargetDeclAttr *A) {
+ const auto *SA = cast<OMPDeclareTargetDeclAttr>(A); (void)SA;
+ switch(SA->getMapType()) {
+ case OMPDeclareTargetDeclAttr::MT_To:
+ OS << " MT_To";
+ break;
+ case OMPDeclareTargetDeclAttr::MT_Link:
+ OS << " MT_Link";
+ break;
+ }
+ }
+ void VisitObjCBridgeAttr(const ObjCBridgeAttr *A) {
+ const auto *SA = cast<ObjCBridgeAttr>(A); (void)SA;
+ if (SA->getBridgedType())
+ OS << " " << SA->getBridgedType()->getName();
+ }
+ void VisitObjCBridgeMutableAttr(const ObjCBridgeMutableAttr *A) {
+ const auto *SA = cast<ObjCBridgeMutableAttr>(A); (void)SA;
+ if (SA->getBridgedType())
+ OS << " " << SA->getBridgedType()->getName();
+ }
+ void VisitObjCBridgeRelatedAttr(const ObjCBridgeRelatedAttr *A) {
+ const auto *SA = cast<ObjCBridgeRelatedAttr>(A); (void)SA;
+ if (SA->getRelatedClass())
+ OS << " " << SA->getRelatedClass()->getName();
+ if (SA->getClassMethod())
+ OS << " " << SA->getClassMethod()->getName();
+ if (SA->getInstanceMethod())
+ OS << " " << SA->getInstanceMethod()->getName();
+ }
+ void VisitObjCGCAttr(const ObjCGCAttr *A) {
+ const auto *SA = cast<ObjCGCAttr>(A); (void)SA;
+ if (SA->getKind())
+ OS << " " << SA->getKind()->getName();
+ }
+ void VisitObjCMethodFamilyAttr(const ObjCMethodFamilyAttr *A) {
+ const auto *SA = cast<ObjCMethodFamilyAttr>(A); (void)SA;
+ switch(SA->getFamily()) {
+ case ObjCMethodFamilyAttr::OMF_None:
+ OS << " OMF_None";
+ break;
+ case ObjCMethodFamilyAttr::OMF_alloc:
+ OS << " OMF_alloc";
+ break;
+ case ObjCMethodFamilyAttr::OMF_copy:
+ OS << " OMF_copy";
+ break;
+ case ObjCMethodFamilyAttr::OMF_init:
+ OS << " OMF_init";
+ break;
+ case ObjCMethodFamilyAttr::OMF_mutableCopy:
+ OS << " OMF_mutableCopy";
+ break;
+ case ObjCMethodFamilyAttr::OMF_new:
+ OS << " OMF_new";
+ break;
+ }
+ }
+ void VisitObjCOwnershipAttr(const ObjCOwnershipAttr *A) {
+ const auto *SA = cast<ObjCOwnershipAttr>(A); (void)SA;
+ if (SA->getKind())
+ OS << " " << SA->getKind()->getName();
+ }
+ void VisitObjCRuntimeNameAttr(const ObjCRuntimeNameAttr *A) {
+ const auto *SA = cast<ObjCRuntimeNameAttr>(A); (void)SA;
+ OS << " \"" << SA->getMetadataName() << "\"";
+ }
+ void VisitOpenCLAccessAttr(const OpenCLAccessAttr *A) {
+ OS << " " << A->getSpelling();
+ }
+ void VisitOpenCLIntelReqdSubGroupSizeAttr(const OpenCLIntelReqdSubGroupSizeAttr *A) {
+ const auto *SA = cast<OpenCLIntelReqdSubGroupSizeAttr>(A); (void)SA;
+ OS << " " << SA->getSubGroupSize();
+ }
+ void VisitOpenCLUnrollHintAttr(const OpenCLUnrollHintAttr *A) {
+ const auto *SA = cast<OpenCLUnrollHintAttr>(A); (void)SA;
+ OS << " " << SA->getUnrollHint();
+ }
+ void VisitOwnershipAttr(const OwnershipAttr *A) {
+ const auto *SA = cast<OwnershipAttr>(A); (void)SA;
+ OS << " " << A->getSpelling();
+ if (SA->getModule())
+ OS << " " << SA->getModule()->getName();
+ for (const auto &Val : SA->args())
+ OS << " " << Val.getSourceIndex();
+ }
+ void VisitParamTypestateAttr(const ParamTypestateAttr *A) {
+ const auto *SA = cast<ParamTypestateAttr>(A); (void)SA;
+ switch(SA->getParamState()) {
+ case ParamTypestateAttr::Unknown:
+ OS << " Unknown";
+ break;
+ case ParamTypestateAttr::Consumed:
+ OS << " Consumed";
+ break;
+ case ParamTypestateAttr::Unconsumed:
+ OS << " Unconsumed";
+ break;
+ }
+ }
+ void VisitPassObjectSizeAttr(const PassObjectSizeAttr *A) {
+ const auto *SA = cast<PassObjectSizeAttr>(A); (void)SA;
+ OS << " " << SA->getType();
+ }
+ void VisitPcsAttr(const PcsAttr *A) {
+ const auto *SA = cast<PcsAttr>(A); (void)SA;
+ switch(SA->getPCS()) {
+ case PcsAttr::AAPCS:
+ OS << " AAPCS";
+ break;
+ case PcsAttr::AAPCS_VFP:
+ OS << " AAPCS_VFP";
+ break;
+ }
+ }
+ void VisitPragmaClangBSSSectionAttr(const PragmaClangBSSSectionAttr *A) {
+ const auto *SA = cast<PragmaClangBSSSectionAttr>(A); (void)SA;
+ OS << " \"" << SA->getName() << "\"";
+ }
+ void VisitPragmaClangDataSectionAttr(const PragmaClangDataSectionAttr *A) {
+ const auto *SA = cast<PragmaClangDataSectionAttr>(A); (void)SA;
+ OS << " \"" << SA->getName() << "\"";
+ }
+ void VisitPragmaClangRodataSectionAttr(const PragmaClangRodataSectionAttr *A) {
+ const auto *SA = cast<PragmaClangRodataSectionAttr>(A); (void)SA;
+ OS << " \"" << SA->getName() << "\"";
+ }
+ void VisitPragmaClangTextSectionAttr(const PragmaClangTextSectionAttr *A) {
+ const auto *SA = cast<PragmaClangTextSectionAttr>(A); (void)SA;
+ OS << " \"" << SA->getName() << "\"";
+ }
+ void VisitRISCVInterruptAttr(const RISCVInterruptAttr *A) {
+ const auto *SA = cast<RISCVInterruptAttr>(A); (void)SA;
+ switch(SA->getInterrupt()) {
+ case RISCVInterruptAttr::user:
+ OS << " user";
+ break;
+ case RISCVInterruptAttr::supervisor:
+ OS << " supervisor";
+ break;
+ case RISCVInterruptAttr::machine:
+ OS << " machine";
+ break;
+ }
+ }
+ void VisitReleaseCapabilityAttr(const ReleaseCapabilityAttr *A) {
+ const auto *SA = cast<ReleaseCapabilityAttr>(A); (void)SA;
+ OS << " " << A->getSpelling();
+ }
+ void VisitReqdWorkGroupSizeAttr(const ReqdWorkGroupSizeAttr *A) {
+ const auto *SA = cast<ReqdWorkGroupSizeAttr>(A); (void)SA;
+ OS << " " << SA->getXDim();
+ OS << " " << SA->getYDim();
+ OS << " " << SA->getZDim();
+ }
+ void VisitRequiresCapabilityAttr(const RequiresCapabilityAttr *A) {
+ const auto *SA = cast<RequiresCapabilityAttr>(A); (void)SA;
+ OS << " " << A->getSpelling();
+ }
+ void VisitRestrictAttr(const RestrictAttr *A) {
+ OS << " " << A->getSpelling();
+ }
+ void VisitReturnTypestateAttr(const ReturnTypestateAttr *A) {
+ const auto *SA = cast<ReturnTypestateAttr>(A); (void)SA;
+ switch(SA->getState()) {
+ case ReturnTypestateAttr::Unknown:
+ OS << " Unknown";
+ break;
+ case ReturnTypestateAttr::Consumed:
+ OS << " Consumed";
+ break;
+ case ReturnTypestateAttr::Unconsumed:
+ OS << " Unconsumed";
+ break;
+ }
+ }
+ void VisitSectionAttr(const SectionAttr *A) {
+ const auto *SA = cast<SectionAttr>(A); (void)SA;
+ OS << " " << A->getSpelling();
+ OS << " \"" << SA->getName() << "\"";
+ }
+ void VisitSentinelAttr(const SentinelAttr *A) {
+ const auto *SA = cast<SentinelAttr>(A); (void)SA;
+ OS << " " << SA->getSentinel();
+ OS << " " << SA->getNullPos();
+ }
+ void VisitSetTypestateAttr(const SetTypestateAttr *A) {
+ const auto *SA = cast<SetTypestateAttr>(A); (void)SA;
+ switch(SA->getNewState()) {
+ case SetTypestateAttr::Unknown:
+ OS << " Unknown";
+ break;
+ case SetTypestateAttr::Consumed:
+ OS << " Consumed";
+ break;
+ case SetTypestateAttr::Unconsumed:
+ OS << " Unconsumed";
+ break;
+ }
+ }
+ void VisitSuppressAttr(const SuppressAttr *A) {
+ const auto *SA = cast<SuppressAttr>(A); (void)SA;
+ for (const auto &Val : SA->diagnosticIdentifiers())
+ OS << " " << Val;
+ }
+ void VisitTLSModelAttr(const TLSModelAttr *A) {
+ const auto *SA = cast<TLSModelAttr>(A); (void)SA;
+ OS << " \"" << SA->getModel() << "\"";
+ }
+ void VisitTargetAttr(const TargetAttr *A) {
+ const auto *SA = cast<TargetAttr>(A); (void)SA;
+ OS << " \"" << SA->getFeaturesStr() << "\"";
+ }
+ void VisitTestTypestateAttr(const TestTypestateAttr *A) {
+ const auto *SA = cast<TestTypestateAttr>(A); (void)SA;
+ switch(SA->getTestState()) {
+ case TestTypestateAttr::Consumed:
+ OS << " Consumed";
+ break;
+ case TestTypestateAttr::Unconsumed:
+ OS << " Unconsumed";
+ break;
+ }
+ }
+ void VisitTryAcquireCapabilityAttr(const TryAcquireCapabilityAttr *A) {
+ const auto *SA = cast<TryAcquireCapabilityAttr>(A); (void)SA;
+ OS << " " << A->getSpelling();
+ }
+ void VisitTypeTagForDatatypeAttr(const TypeTagForDatatypeAttr *A) {
+ const auto *SA = cast<TypeTagForDatatypeAttr>(A); (void)SA;
+ if (SA->getArgumentKind())
+ OS << " " << SA->getArgumentKind()->getName();
+ OS << " " << SA->getMatchingCType().getAsString();
+ if (SA->getLayoutCompatible()) OS << " LayoutCompatible";
+ if (SA->getMustBeNull()) OS << " MustBeNull";
+ }
+ void VisitTypeVisibilityAttr(const TypeVisibilityAttr *A) {
+ const auto *SA = cast<TypeVisibilityAttr>(A); (void)SA;
+ switch(SA->getVisibility()) {
+ case TypeVisibilityAttr::Default:
+ OS << " Default";
+ break;
+ case TypeVisibilityAttr::Hidden:
+ OS << " Hidden";
+ break;
+ case TypeVisibilityAttr::Protected:
+ OS << " Protected";
+ break;
+ }
+ }
+ void VisitUnavailableAttr(const UnavailableAttr *A) {
+ const auto *SA = cast<UnavailableAttr>(A); (void)SA;
+ OS << " \"" << SA->getMessage() << "\"";
+ switch(SA->getImplicitReason()) {
+ case UnavailableAttr::IR_None:
+ OS << " IR_None";
+ break;
+ case UnavailableAttr::IR_ARCForbiddenType:
+ OS << " IR_ARCForbiddenType";
+ break;
+ case UnavailableAttr::IR_ForbiddenWeak:
+ OS << " IR_ForbiddenWeak";
+ break;
+ case UnavailableAttr::IR_ARCForbiddenConversion:
+ OS << " IR_ARCForbiddenConversion";
+ break;
+ case UnavailableAttr::IR_ARCInitReturnsUnrelated:
+ OS << " IR_ARCInitReturnsUnrelated";
+ break;
+ case UnavailableAttr::IR_ARCFieldWithOwnership:
+ OS << " IR_ARCFieldWithOwnership";
+ break;
+ }
+ }
+ void VisitUnusedAttr(const UnusedAttr *A) {
+ OS << " " << A->getSpelling();
+ }
+ void VisitUuidAttr(const UuidAttr *A) {
+ const auto *SA = cast<UuidAttr>(A); (void)SA;
+ OS << " \"" << SA->getGuid() << "\"";
+ }
+ void VisitVecTypeHintAttr(const VecTypeHintAttr *A) {
+ const auto *SA = cast<VecTypeHintAttr>(A); (void)SA;
+ OS << " " << SA->getTypeHint().getAsString();
+ }
+ void VisitVisibilityAttr(const VisibilityAttr *A) {
+ const auto *SA = cast<VisibilityAttr>(A); (void)SA;
+ switch(SA->getVisibility()) {
+ case VisibilityAttr::Default:
+ OS << " Default";
+ break;
+ case VisibilityAttr::Hidden:
+ OS << " Hidden";
+ break;
+ case VisibilityAttr::Protected:
+ OS << " Protected";
+ break;
+ }
+ }
+ void VisitWarnUnusedResultAttr(const WarnUnusedResultAttr *A) {
+ OS << " " << A->getSpelling();
+ }
+ void VisitWeakRefAttr(const WeakRefAttr *A) {
+ const auto *SA = cast<WeakRefAttr>(A); (void)SA;
+ OS << " \"" << SA->getAliasee() << "\"";
+ }
+ void VisitWebAssemblyImportModuleAttr(const WebAssemblyImportModuleAttr *A) {
+ const auto *SA = cast<WebAssemblyImportModuleAttr>(A); (void)SA;
+ OS << " \"" << SA->getImportModule() << "\"";
+ }
+ void VisitWebAssemblyImportNameAttr(const WebAssemblyImportNameAttr *A) {
+ const auto *SA = cast<WebAssemblyImportNameAttr>(A); (void)SA;
+ OS << " \"" << SA->getImportName() << "\"";
+ }
+ void VisitWorkGroupSizeHintAttr(const WorkGroupSizeHintAttr *A) {
+ const auto *SA = cast<WorkGroupSizeHintAttr>(A); (void)SA;
+ OS << " " << SA->getXDim();
+ OS << " " << SA->getYDim();
+ OS << " " << SA->getZDim();
+ }
+ void VisitXRayInstrumentAttr(const XRayInstrumentAttr *A) {
+ OS << " " << A->getSpelling();
+ }
+ void VisitXRayLogArgsAttr(const XRayLogArgsAttr *A) {
+ const auto *SA = cast<XRayLogArgsAttr>(A); (void)SA;
+ OS << " " << SA->getArgumentCount();
+ }
diff --git a/linux-x64/clang/include/clang/AST/AttrVisitor.h b/linux-x64/clang/include/clang/AST/AttrVisitor.h
new file mode 100644
index 0000000..d271db0
--- /dev/null
+++ b/linux-x64/clang/include/clang/AST/AttrVisitor.h
@@ -0,0 +1,75 @@
+//===- AttrVisitor.h - Visitor for Attr subclasses --------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines the AttrVisitor interface.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_AST_ATTRVISITOR_H
+#define LLVM_CLANG_AST_ATTRVISITOR_H
+
+#include "clang/AST/Attr.h"
+
+namespace clang {
+
+namespace attrvisitor {
+
+/// A simple visitor class that helps create attribute visitors.
+template <template <typename> class Ptr, typename ImplClass,
+ typename RetTy = void, class... ParamTys>
+class Base {
+public:
+#define PTR(CLASS) typename Ptr<CLASS>::type
+#define DISPATCH(NAME) \
+ return static_cast<ImplClass *>(this)->Visit##NAME(static_cast<PTR(NAME)>(A))
+
+ RetTy Visit(PTR(Attr) A) {
+ switch (A->getKind()) {
+
+#define ATTR(NAME) \
+ case attr::NAME: \
+ DISPATCH(NAME##Attr);
+#include "clang/Basic/AttrList.inc"
+ }
+ llvm_unreachable("Attr that isn't part of AttrList.inc!");
+ }
+
+ // If the implementation chooses not to implement a certain visit
+ // method, fall back to the parent.
+#define ATTR(NAME) \
+ RetTy Visit##NAME##Attr(PTR(NAME##Attr) A) { DISPATCH(Attr); }
+#include "clang/Basic/AttrList.inc"
+
+ RetTy VisitAttr(PTR(Attr)) { return RetTy(); }
+
+#undef PTR
+#undef DISPATCH
+};
+
+} // namespace attrvisitor
+
+/// A simple visitor class that helps create attribute visitors.
+///
+/// This class does not preserve constness of Attr pointers (see
+/// also ConstAttrVisitor).
+template <typename ImplClass, typename RetTy = void, typename... ParamTys>
+class AttrVisitor : public attrvisitor::Base<std::add_pointer, ImplClass, RetTy,
+ ParamTys...> {};
+
+/// A simple visitor class that helps create attribute visitors.
+///
+/// This class preserves constness of Attr pointers (see also
+/// AttrVisitor).
+template <typename ImplClass, typename RetTy = void, typename... ParamTys>
+class ConstAttrVisitor
+ : public attrvisitor::Base<llvm::make_const_ptr, ImplClass, RetTy,
+ ParamTys...> {};
+
+} // namespace clang
+
+#endif // LLVM_CLANG_AST_ATTRVISITOR_H
diff --git a/linux-x64/clang/include/clang/AST/AttrVisitor.inc b/linux-x64/clang/include/clang/AST/AttrVisitor.inc
index 4f35587..08311b9 100644
--- a/linux-x64/clang/include/clang/AST/AttrVisitor.inc
+++ b/linux-x64/clang/include/clang/AST/AttrVisitor.inc
@@ -8,6 +8,10 @@
#ifdef ATTR_VISITOR_DECLS_ONLY
+ bool TraverseAArch64VectorPcsAttr(AArch64VectorPcsAttr *A);
+ bool VisitAArch64VectorPcsAttr(AArch64VectorPcsAttr *A) {
+ return true;
+ }
bool TraverseAMDGPUFlatWorkGroupSizeAttr(AMDGPUFlatWorkGroupSizeAttr *A);
bool VisitAMDGPUFlatWorkGroupSizeAttr(AMDGPUFlatWorkGroupSizeAttr *A) {
return true;
@@ -220,6 +224,10 @@
bool VisitCallableWhenAttr(CallableWhenAttr *A) {
return true;
}
+ bool TraverseCallbackAttr(CallbackAttr *A);
+ bool VisitCallbackAttr(CallbackAttr *A) {
+ return true;
+ }
bool TraverseCapabilityAttr(CapabilityAttr *A);
bool VisitCapabilityAttr(CapabilityAttr *A) {
return true;
@@ -276,10 +284,18 @@
bool VisitDLLExportAttr(DLLExportAttr *A) {
return true;
}
+ bool TraverseDLLExportStaticLocalAttr(DLLExportStaticLocalAttr *A);
+ bool VisitDLLExportStaticLocalAttr(DLLExportStaticLocalAttr *A) {
+ return true;
+ }
bool TraverseDLLImportAttr(DLLImportAttr *A);
bool VisitDLLImportAttr(DLLImportAttr *A) {
return true;
}
+ bool TraverseDLLImportStaticLocalAttr(DLLImportStaticLocalAttr *A);
+ bool VisitDLLImportStaticLocalAttr(DLLImportStaticLocalAttr *A) {
+ return true;
+ }
bool TraverseDeprecatedAttr(DeprecatedAttr *A);
bool VisitDeprecatedAttr(DeprecatedAttr *A) {
return true;
@@ -348,6 +364,10 @@
bool VisitFormatArgAttr(FormatArgAttr *A) {
return true;
}
+ bool TraverseFortifyStdLibAttr(FortifyStdLibAttr *A);
+ bool VisitFortifyStdLibAttr(FortifyStdLibAttr *A) {
+ return true;
+ }
bool TraverseGNUInlineAttr(GNUInlineAttr *A);
bool VisitGNUInlineAttr(GNUInlineAttr *A) {
return true;
@@ -520,6 +540,10 @@
bool VisitNoDebugAttr(NoDebugAttr *A) {
return true;
}
+ bool TraverseNoDerefAttr(NoDerefAttr *A);
+ bool VisitNoDerefAttr(NoDerefAttr *A) {
+ return true;
+ }
bool TraverseNoDestroyAttr(NoDestroyAttr *A);
bool VisitNoDestroyAttr(NoDestroyAttr *A) {
return true;
@@ -556,6 +580,10 @@
bool VisitNoSanitizeAttr(NoSanitizeAttr *A) {
return true;
}
+ bool TraverseNoSpeculativeLoadHardeningAttr(NoSpeculativeLoadHardeningAttr *A);
+ bool VisitNoSpeculativeLoadHardeningAttr(NoSpeculativeLoadHardeningAttr *A) {
+ return true;
+ }
bool TraverseNoSplitStackAttr(NoSplitStackAttr *A);
bool VisitNoSplitStackAttr(NoSplitStackAttr *A) {
return true;
@@ -604,6 +632,30 @@
bool VisitOMPThreadPrivateDeclAttr(OMPThreadPrivateDeclAttr *A) {
return true;
}
+ bool TraverseOSConsumedAttr(OSConsumedAttr *A);
+ bool VisitOSConsumedAttr(OSConsumedAttr *A) {
+ return true;
+ }
+ bool TraverseOSConsumesThisAttr(OSConsumesThisAttr *A);
+ bool VisitOSConsumesThisAttr(OSConsumesThisAttr *A) {
+ return true;
+ }
+ bool TraverseOSReturnsNotRetainedAttr(OSReturnsNotRetainedAttr *A);
+ bool VisitOSReturnsNotRetainedAttr(OSReturnsNotRetainedAttr *A) {
+ return true;
+ }
+ bool TraverseOSReturnsRetainedAttr(OSReturnsRetainedAttr *A);
+ bool VisitOSReturnsRetainedAttr(OSReturnsRetainedAttr *A) {
+ return true;
+ }
+ bool TraverseOSReturnsRetainedOnNonZeroAttr(OSReturnsRetainedOnNonZeroAttr *A);
+ bool VisitOSReturnsRetainedOnNonZeroAttr(OSReturnsRetainedOnNonZeroAttr *A) {
+ return true;
+ }
+ bool TraverseOSReturnsRetainedOnZeroAttr(OSReturnsRetainedOnZeroAttr *A);
+ bool VisitOSReturnsRetainedOnZeroAttr(OSReturnsRetainedOnZeroAttr *A) {
+ return true;
+ }
bool TraverseObjCBoxableAttr(ObjCBoxableAttr *A);
bool VisitObjCBoxableAttr(ObjCBoxableAttr *A) {
return true;
@@ -632,6 +684,10 @@
bool VisitObjCExplicitProtocolImplAttr(ObjCExplicitProtocolImplAttr *A) {
return true;
}
+ bool TraverseObjCExternallyRetainedAttr(ObjCExternallyRetainedAttr *A);
+ bool VisitObjCExternallyRetainedAttr(ObjCExternallyRetainedAttr *A) {
+ return true;
+ }
bool TraverseObjCGCAttr(ObjCGCAttr *A);
bool VisitObjCGCAttr(ObjCGCAttr *A) {
return true;
@@ -656,6 +712,10 @@
bool VisitObjCNSObjectAttr(ObjCNSObjectAttr *A) {
return true;
}
+ bool TraverseObjCNonLazyClassAttr(ObjCNonLazyClassAttr *A);
+ bool VisitObjCNonLazyClassAttr(ObjCNonLazyClassAttr *A) {
+ return true;
+ }
bool TraverseObjCOwnershipAttr(ObjCOwnershipAttr *A);
bool VisitObjCOwnershipAttr(ObjCOwnershipAttr *A) {
return true;
@@ -884,6 +944,10 @@
bool VisitSharedTrylockFunctionAttr(SharedTrylockFunctionAttr *A) {
return true;
}
+ bool TraverseSpeculativeLoadHardeningAttr(SpeculativeLoadHardeningAttr *A);
+ bool VisitSpeculativeLoadHardeningAttr(SpeculativeLoadHardeningAttr *A) {
+ return true;
+ }
bool TraverseStdCallAttr(StdCallAttr *A);
bool VisitStdCallAttr(StdCallAttr *A) {
return true;
@@ -972,6 +1036,10 @@
bool VisitUnavailableAttr(UnavailableAttr *A) {
return true;
}
+ bool TraverseUninitializedAttr(UninitializedAttr *A);
+ bool VisitUninitializedAttr(UninitializedAttr *A) {
+ return true;
+ }
bool TraverseUnusedAttr(UnusedAttr *A);
bool VisitUnusedAttr(UnusedAttr *A) {
return true;
@@ -1020,6 +1088,14 @@
bool VisitWeakRefAttr(WeakRefAttr *A) {
return true;
}
+ bool TraverseWebAssemblyImportModuleAttr(WebAssemblyImportModuleAttr *A);
+ bool VisitWebAssemblyImportModuleAttr(WebAssemblyImportModuleAttr *A) {
+ return true;
+ }
+ bool TraverseWebAssemblyImportNameAttr(WebAssemblyImportNameAttr *A);
+ bool VisitWebAssemblyImportNameAttr(WebAssemblyImportNameAttr *A) {
+ return true;
+ }
bool TraverseWorkGroupSizeHintAttr(WorkGroupSizeHintAttr *A);
bool VisitWorkGroupSizeHintAttr(WorkGroupSizeHintAttr *A) {
return true;
@@ -1040,6 +1116,15 @@
#else // ATTR_VISITOR_DECLS_ONLY
template <typename Derived>
+bool VISITORCLASS<Derived>::TraverseAArch64VectorPcsAttr(AArch64VectorPcsAttr *A) {
+ if (!getDerived().VisitAttr(A))
+ return false;
+ if (!getDerived().VisitAArch64VectorPcsAttr(A))
+ return false;
+ return true;
+}
+
+template <typename Derived>
bool VISITORCLASS<Derived>::TraverseAMDGPUFlatWorkGroupSizeAttr(AMDGPUFlatWorkGroupSizeAttr *A) {
if (!getDerived().VisitAttr(A))
return false;
@@ -1582,6 +1667,15 @@
}
template <typename Derived>
+bool VISITORCLASS<Derived>::TraverseCallbackAttr(CallbackAttr *A) {
+ if (!getDerived().VisitAttr(A))
+ return false;
+ if (!getDerived().VisitCallbackAttr(A))
+ return false;
+ return true;
+}
+
+template <typename Derived>
bool VISITORCLASS<Derived>::TraverseCapabilityAttr(CapabilityAttr *A) {
if (!getDerived().VisitAttr(A))
return false;
@@ -1708,6 +1802,15 @@
}
template <typename Derived>
+bool VISITORCLASS<Derived>::TraverseDLLExportStaticLocalAttr(DLLExportStaticLocalAttr *A) {
+ if (!getDerived().VisitAttr(A))
+ return false;
+ if (!getDerived().VisitDLLExportStaticLocalAttr(A))
+ return false;
+ return true;
+}
+
+template <typename Derived>
bool VISITORCLASS<Derived>::TraverseDLLImportAttr(DLLImportAttr *A) {
if (!getDerived().VisitAttr(A))
return false;
@@ -1717,6 +1820,15 @@
}
template <typename Derived>
+bool VISITORCLASS<Derived>::TraverseDLLImportStaticLocalAttr(DLLImportStaticLocalAttr *A) {
+ if (!getDerived().VisitAttr(A))
+ return false;
+ if (!getDerived().VisitDLLImportStaticLocalAttr(A))
+ return false;
+ return true;
+}
+
+template <typename Derived>
bool VISITORCLASS<Derived>::TraverseDeprecatedAttr(DeprecatedAttr *A) {
if (!getDerived().VisitAttr(A))
return false;
@@ -1884,6 +1996,15 @@
}
template <typename Derived>
+bool VISITORCLASS<Derived>::TraverseFortifyStdLibAttr(FortifyStdLibAttr *A) {
+ if (!getDerived().VisitAttr(A))
+ return false;
+ if (!getDerived().VisitFortifyStdLibAttr(A))
+ return false;
+ return true;
+}
+
+template <typename Derived>
bool VISITORCLASS<Derived>::TraverseGNUInlineAttr(GNUInlineAttr *A) {
if (!getDerived().VisitAttr(A))
return false;
@@ -2288,6 +2409,15 @@
}
template <typename Derived>
+bool VISITORCLASS<Derived>::TraverseNoDerefAttr(NoDerefAttr *A) {
+ if (!getDerived().VisitAttr(A))
+ return false;
+ if (!getDerived().VisitNoDerefAttr(A))
+ return false;
+ return true;
+}
+
+template <typename Derived>
bool VISITORCLASS<Derived>::TraverseNoDestroyAttr(NoDestroyAttr *A) {
if (!getDerived().VisitAttr(A))
return false;
@@ -2369,6 +2499,15 @@
}
template <typename Derived>
+bool VISITORCLASS<Derived>::TraverseNoSpeculativeLoadHardeningAttr(NoSpeculativeLoadHardeningAttr *A) {
+ if (!getDerived().VisitAttr(A))
+ return false;
+ if (!getDerived().VisitNoSpeculativeLoadHardeningAttr(A))
+ return false;
+ return true;
+}
+
+template <typename Derived>
bool VISITORCLASS<Derived>::TraverseNoSplitStackAttr(NoSplitStackAttr *A) {
if (!getDerived().VisitAttr(A))
return false;
@@ -2521,6 +2660,60 @@
}
template <typename Derived>
+bool VISITORCLASS<Derived>::TraverseOSConsumedAttr(OSConsumedAttr *A) {
+ if (!getDerived().VisitAttr(A))
+ return false;
+ if (!getDerived().VisitOSConsumedAttr(A))
+ return false;
+ return true;
+}
+
+template <typename Derived>
+bool VISITORCLASS<Derived>::TraverseOSConsumesThisAttr(OSConsumesThisAttr *A) {
+ if (!getDerived().VisitAttr(A))
+ return false;
+ if (!getDerived().VisitOSConsumesThisAttr(A))
+ return false;
+ return true;
+}
+
+template <typename Derived>
+bool VISITORCLASS<Derived>::TraverseOSReturnsNotRetainedAttr(OSReturnsNotRetainedAttr *A) {
+ if (!getDerived().VisitAttr(A))
+ return false;
+ if (!getDerived().VisitOSReturnsNotRetainedAttr(A))
+ return false;
+ return true;
+}
+
+template <typename Derived>
+bool VISITORCLASS<Derived>::TraverseOSReturnsRetainedAttr(OSReturnsRetainedAttr *A) {
+ if (!getDerived().VisitAttr(A))
+ return false;
+ if (!getDerived().VisitOSReturnsRetainedAttr(A))
+ return false;
+ return true;
+}
+
+template <typename Derived>
+bool VISITORCLASS<Derived>::TraverseOSReturnsRetainedOnNonZeroAttr(OSReturnsRetainedOnNonZeroAttr *A) {
+ if (!getDerived().VisitAttr(A))
+ return false;
+ if (!getDerived().VisitOSReturnsRetainedOnNonZeroAttr(A))
+ return false;
+ return true;
+}
+
+template <typename Derived>
+bool VISITORCLASS<Derived>::TraverseOSReturnsRetainedOnZeroAttr(OSReturnsRetainedOnZeroAttr *A) {
+ if (!getDerived().VisitAttr(A))
+ return false;
+ if (!getDerived().VisitOSReturnsRetainedOnZeroAttr(A))
+ return false;
+ return true;
+}
+
+template <typename Derived>
bool VISITORCLASS<Derived>::TraverseObjCBoxableAttr(ObjCBoxableAttr *A) {
if (!getDerived().VisitAttr(A))
return false;
@@ -2584,6 +2777,15 @@
}
template <typename Derived>
+bool VISITORCLASS<Derived>::TraverseObjCExternallyRetainedAttr(ObjCExternallyRetainedAttr *A) {
+ if (!getDerived().VisitAttr(A))
+ return false;
+ if (!getDerived().VisitObjCExternallyRetainedAttr(A))
+ return false;
+ return true;
+}
+
+template <typename Derived>
bool VISITORCLASS<Derived>::TraverseObjCGCAttr(ObjCGCAttr *A) {
if (!getDerived().VisitAttr(A))
return false;
@@ -2638,6 +2840,15 @@
}
template <typename Derived>
+bool VISITORCLASS<Derived>::TraverseObjCNonLazyClassAttr(ObjCNonLazyClassAttr *A) {
+ if (!getDerived().VisitAttr(A))
+ return false;
+ if (!getDerived().VisitObjCNonLazyClassAttr(A))
+ return false;
+ return true;
+}
+
+template <typename Derived>
bool VISITORCLASS<Derived>::TraverseObjCOwnershipAttr(ObjCOwnershipAttr *A) {
if (!getDerived().VisitAttr(A))
return false;
@@ -3179,6 +3390,15 @@
}
template <typename Derived>
+bool VISITORCLASS<Derived>::TraverseSpeculativeLoadHardeningAttr(SpeculativeLoadHardeningAttr *A) {
+ if (!getDerived().VisitAttr(A))
+ return false;
+ if (!getDerived().VisitSpeculativeLoadHardeningAttr(A))
+ return false;
+ return true;
+}
+
+template <typename Derived>
bool VISITORCLASS<Derived>::TraverseStdCallAttr(StdCallAttr *A) {
if (!getDerived().VisitAttr(A))
return false;
@@ -3390,6 +3610,15 @@
}
template <typename Derived>
+bool VISITORCLASS<Derived>::TraverseUninitializedAttr(UninitializedAttr *A) {
+ if (!getDerived().VisitAttr(A))
+ return false;
+ if (!getDerived().VisitUninitializedAttr(A))
+ return false;
+ return true;
+}
+
+template <typename Derived>
bool VISITORCLASS<Derived>::TraverseUnusedAttr(UnusedAttr *A) {
if (!getDerived().VisitAttr(A))
return false;
@@ -3501,6 +3730,24 @@
}
template <typename Derived>
+bool VISITORCLASS<Derived>::TraverseWebAssemblyImportModuleAttr(WebAssemblyImportModuleAttr *A) {
+ if (!getDerived().VisitAttr(A))
+ return false;
+ if (!getDerived().VisitWebAssemblyImportModuleAttr(A))
+ return false;
+ return true;
+}
+
+template <typename Derived>
+bool VISITORCLASS<Derived>::TraverseWebAssemblyImportNameAttr(WebAssemblyImportNameAttr *A) {
+ if (!getDerived().VisitAttr(A))
+ return false;
+ if (!getDerived().VisitWebAssemblyImportNameAttr(A))
+ return false;
+ return true;
+}
+
+template <typename Derived>
bool VISITORCLASS<Derived>::TraverseWorkGroupSizeHintAttr(WorkGroupSizeHintAttr *A) {
if (!getDerived().VisitAttr(A))
return false;
@@ -3542,6 +3789,8 @@
return true;
switch (A->getKind()) {
+ case attr::AArch64VectorPcs:
+ return getDerived().TraverseAArch64VectorPcsAttr(cast<AArch64VectorPcsAttr>(A));
case attr::AMDGPUFlatWorkGroupSize:
return getDerived().TraverseAMDGPUFlatWorkGroupSizeAttr(cast<AMDGPUFlatWorkGroupSizeAttr>(A));
case attr::AMDGPUNumSGPR:
@@ -3648,6 +3897,8 @@
return getDerived().TraverseCXX11NoReturnAttr(cast<CXX11NoReturnAttr>(A));
case attr::CallableWhen:
return getDerived().TraverseCallableWhenAttr(cast<CallableWhenAttr>(A));
+ case attr::Callback:
+ return getDerived().TraverseCallbackAttr(cast<CallbackAttr>(A));
case attr::Capability:
return getDerived().TraverseCapabilityAttr(cast<CapabilityAttr>(A));
case attr::CapturedRecord:
@@ -3676,8 +3927,12 @@
return getDerived().TraverseConvergentAttr(cast<ConvergentAttr>(A));
case attr::DLLExport:
return getDerived().TraverseDLLExportAttr(cast<DLLExportAttr>(A));
+ case attr::DLLExportStaticLocal:
+ return getDerived().TraverseDLLExportStaticLocalAttr(cast<DLLExportStaticLocalAttr>(A));
case attr::DLLImport:
return getDerived().TraverseDLLImportAttr(cast<DLLImportAttr>(A));
+ case attr::DLLImportStaticLocal:
+ return getDerived().TraverseDLLImportStaticLocalAttr(cast<DLLImportStaticLocalAttr>(A));
case attr::Deprecated:
return getDerived().TraverseDeprecatedAttr(cast<DeprecatedAttr>(A));
case attr::Destructor:
@@ -3712,6 +3967,8 @@
return getDerived().TraverseFormatAttr(cast<FormatAttr>(A));
case attr::FormatArg:
return getDerived().TraverseFormatArgAttr(cast<FormatArgAttr>(A));
+ case attr::FortifyStdLib:
+ return getDerived().TraverseFortifyStdLibAttr(cast<FortifyStdLibAttr>(A));
case attr::GNUInline:
return getDerived().TraverseGNUInlineAttr(cast<GNUInlineAttr>(A));
case attr::GuardedBy:
@@ -3798,6 +4055,8 @@
return getDerived().TraverseNoCommonAttr(cast<NoCommonAttr>(A));
case attr::NoDebug:
return getDerived().TraverseNoDebugAttr(cast<NoDebugAttr>(A));
+ case attr::NoDeref:
+ return getDerived().TraverseNoDerefAttr(cast<NoDerefAttr>(A));
case attr::NoDestroy:
return getDerived().TraverseNoDestroyAttr(cast<NoDestroyAttr>(A));
case attr::NoDuplicate:
@@ -3816,6 +4075,8 @@
return getDerived().TraverseNoReturnAttr(cast<NoReturnAttr>(A));
case attr::NoSanitize:
return getDerived().TraverseNoSanitizeAttr(cast<NoSanitizeAttr>(A));
+ case attr::NoSpeculativeLoadHardening:
+ return getDerived().TraverseNoSpeculativeLoadHardeningAttr(cast<NoSpeculativeLoadHardeningAttr>(A));
case attr::NoSplitStack:
return getDerived().TraverseNoSplitStackAttr(cast<NoSplitStackAttr>(A));
case attr::NoStackProtector:
@@ -3840,6 +4101,18 @@
return getDerived().TraverseOMPReferencedVarAttr(cast<OMPReferencedVarAttr>(A));
case attr::OMPThreadPrivateDecl:
return getDerived().TraverseOMPThreadPrivateDeclAttr(cast<OMPThreadPrivateDeclAttr>(A));
+ case attr::OSConsumed:
+ return getDerived().TraverseOSConsumedAttr(cast<OSConsumedAttr>(A));
+ case attr::OSConsumesThis:
+ return getDerived().TraverseOSConsumesThisAttr(cast<OSConsumesThisAttr>(A));
+ case attr::OSReturnsNotRetained:
+ return getDerived().TraverseOSReturnsNotRetainedAttr(cast<OSReturnsNotRetainedAttr>(A));
+ case attr::OSReturnsRetained:
+ return getDerived().TraverseOSReturnsRetainedAttr(cast<OSReturnsRetainedAttr>(A));
+ case attr::OSReturnsRetainedOnNonZero:
+ return getDerived().TraverseOSReturnsRetainedOnNonZeroAttr(cast<OSReturnsRetainedOnNonZeroAttr>(A));
+ case attr::OSReturnsRetainedOnZero:
+ return getDerived().TraverseOSReturnsRetainedOnZeroAttr(cast<OSReturnsRetainedOnZeroAttr>(A));
case attr::ObjCBoxable:
return getDerived().TraverseObjCBoxableAttr(cast<ObjCBoxableAttr>(A));
case attr::ObjCBridge:
@@ -3854,6 +4127,8 @@
return getDerived().TraverseObjCExceptionAttr(cast<ObjCExceptionAttr>(A));
case attr::ObjCExplicitProtocolImpl:
return getDerived().TraverseObjCExplicitProtocolImplAttr(cast<ObjCExplicitProtocolImplAttr>(A));
+ case attr::ObjCExternallyRetained:
+ return getDerived().TraverseObjCExternallyRetainedAttr(cast<ObjCExternallyRetainedAttr>(A));
case attr::ObjCGC:
return getDerived().TraverseObjCGCAttr(cast<ObjCGCAttr>(A));
case attr::ObjCIndependentClass:
@@ -3866,6 +4141,8 @@
return getDerived().TraverseObjCMethodFamilyAttr(cast<ObjCMethodFamilyAttr>(A));
case attr::ObjCNSObject:
return getDerived().TraverseObjCNSObjectAttr(cast<ObjCNSObjectAttr>(A));
+ case attr::ObjCNonLazyClass:
+ return getDerived().TraverseObjCNonLazyClassAttr(cast<ObjCNonLazyClassAttr>(A));
case attr::ObjCOwnership:
return getDerived().TraverseObjCOwnershipAttr(cast<ObjCOwnershipAttr>(A));
case attr::ObjCPreciseLifetime:
@@ -3980,6 +4257,8 @@
return getDerived().TraverseSetTypestateAttr(cast<SetTypestateAttr>(A));
case attr::SharedTrylockFunction:
return getDerived().TraverseSharedTrylockFunctionAttr(cast<SharedTrylockFunctionAttr>(A));
+ case attr::SpeculativeLoadHardening:
+ return getDerived().TraverseSpeculativeLoadHardeningAttr(cast<SpeculativeLoadHardeningAttr>(A));
case attr::StdCall:
return getDerived().TraverseStdCallAttr(cast<StdCallAttr>(A));
case attr::Suppress:
@@ -4024,6 +4303,8 @@
return getDerived().TraverseUPtrAttr(cast<UPtrAttr>(A));
case attr::Unavailable:
return getDerived().TraverseUnavailableAttr(cast<UnavailableAttr>(A));
+ case attr::Uninitialized:
+ return getDerived().TraverseUninitializedAttr(cast<UninitializedAttr>(A));
case attr::Unused:
return getDerived().TraverseUnusedAttr(cast<UnusedAttr>(A));
case attr::Used:
@@ -4048,6 +4329,10 @@
return getDerived().TraverseWeakImportAttr(cast<WeakImportAttr>(A));
case attr::WeakRef:
return getDerived().TraverseWeakRefAttr(cast<WeakRefAttr>(A));
+ case attr::WebAssemblyImportModule:
+ return getDerived().TraverseWebAssemblyImportModuleAttr(cast<WebAssemblyImportModuleAttr>(A));
+ case attr::WebAssemblyImportName:
+ return getDerived().TraverseWebAssemblyImportNameAttr(cast<WebAssemblyImportNameAttr>(A));
case attr::WorkGroupSizeHint:
return getDerived().TraverseWorkGroupSizeHintAttr(cast<WorkGroupSizeHintAttr>(A));
case attr::X86ForceAlignArgPointer:
diff --git a/linux-x64/clang/include/clang/AST/Attrs.inc b/linux-x64/clang/include/clang/AST/Attrs.inc
index a28dfd9..1409c69 100644
--- a/linux-x64/clang/include/clang/AST/Attrs.inc
+++ b/linux-x64/clang/include/clang/AST/Attrs.inc
@@ -9,6 +9,30 @@
#ifndef LLVM_CLANG_ATTR_CLASSES_INC
#define LLVM_CLANG_ATTR_CLASSES_INC
+class AArch64VectorPcsAttr : public InheritableAttr {
+public:
+ static AArch64VectorPcsAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) AArch64VectorPcsAttr(Loc, Ctx, 0);
+ A->setImplicit(true);
+ return A;
+ }
+
+ AArch64VectorPcsAttr(SourceRange R, ASTContext &Ctx
+ , unsigned SI
+ )
+ : InheritableAttr(attr::AArch64VectorPcs, R, SI, false, false)
+ {
+ }
+
+ AArch64VectorPcsAttr *clone(ASTContext &C) const;
+ void printPretty(raw_ostream &OS,
+ const PrintingPolicy &Policy) const;
+ const char *getSpelling() const;
+
+
+ static bool classof(const Attr *A) { return A->getKind() == attr::AArch64VectorPcs; }
+};
+
class AMDGPUFlatWorkGroupSizeAttr : public InheritableAttr {
unsigned min;
@@ -1410,9 +1434,11 @@
unsigned replacementLength;
char *replacement;
+int priority;
+
public:
- static AvailabilityAttr *CreateImplicit(ASTContext &Ctx, IdentifierInfo * Platform, VersionTuple Introduced, VersionTuple Deprecated, VersionTuple Obsoleted, bool Unavailable, llvm::StringRef Message, bool Strict, llvm::StringRef Replacement, SourceRange Loc = SourceRange()) {
- auto *A = new (Ctx) AvailabilityAttr(Loc, Ctx, Platform, Introduced, Deprecated, Obsoleted, Unavailable, Message, Strict, Replacement, 0);
+ static AvailabilityAttr *CreateImplicit(ASTContext &Ctx, IdentifierInfo * Platform, VersionTuple Introduced, VersionTuple Deprecated, VersionTuple Obsoleted, bool Unavailable, llvm::StringRef Message, bool Strict, llvm::StringRef Replacement, int Priority, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) AvailabilityAttr(Loc, Ctx, Platform, Introduced, Deprecated, Obsoleted, Unavailable, Message, Strict, Replacement, Priority, 0);
A->setImplicit(true);
return A;
}
@@ -1426,6 +1452,7 @@
, llvm::StringRef Message
, bool Strict
, llvm::StringRef Replacement
+ , int Priority
, unsigned SI
)
: InheritableAttr(attr::Availability, R, SI, false, true)
@@ -1437,6 +1464,7 @@
, messageLength(Message.size()),message(new (Ctx, 1) char[messageLength])
, strict(Strict)
, replacementLength(Replacement.size()),replacement(new (Ctx, 1) char[replacementLength])
+ , priority(Priority)
{
if (!Message.empty())
std::memcpy(message, Message.data(), messageLength);
@@ -1507,6 +1535,10 @@
std::memcpy(this->replacement, S.data(), replacementLength);
}
+ int getPriority() const {
+ return priority;
+ }
+
static llvm::StringRef getPrettyPlatformName(llvm::StringRef Platform) {
return llvm::StringSwitch<llvm::StringRef>(Platform)
.Case("android", "Android")
@@ -1518,6 +1550,7 @@
.Case("macos_app_extension", "macOS (App Extension)")
.Case("tvos_app_extension", "tvOS (App Extension)")
.Case("watchos_app_extension", "watchOS (App Extension)")
+ .Case("swift", "Swift")
.Default(llvm::StringRef());
}
static llvm::StringRef getPlatformNameSourceSpelling(llvm::StringRef Platform) {
@@ -1856,10 +1889,8 @@
- unsigned ActiveArgIndex = 0;
-
- IdentifierInfo *getCurCPUName() const {
- return *(cpus_begin() + ActiveArgIndex);
+ IdentifierInfo *getCPUName(unsigned Index) const {
+ return *(cpus_begin() + Index);
}
@@ -2157,6 +2188,51 @@
static bool classof(const Attr *A) { return A->getKind() == attr::CallableWhen; }
};
+class CallbackAttr : public InheritableAttr {
+ unsigned encoding_Size;
+ int *encoding_;
+
+public:
+ static CallbackAttr *CreateImplicit(ASTContext &Ctx, int *Encoding, unsigned EncodingSize, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) CallbackAttr(Loc, Ctx, Encoding, EncodingSize, 0);
+ A->setImplicit(true);
+ return A;
+ }
+
+ CallbackAttr(SourceRange R, ASTContext &Ctx
+ , int *Encoding, unsigned EncodingSize
+ , unsigned SI
+ )
+ : InheritableAttr(attr::Callback, R, SI, false, false)
+ , encoding_Size(EncodingSize), encoding_(new (Ctx, 16) int[encoding_Size])
+ {
+ std::copy(Encoding, Encoding + encoding_Size, encoding_);
+ }
+
+ CallbackAttr(SourceRange R, ASTContext &Ctx
+ , unsigned SI
+ )
+ : InheritableAttr(attr::Callback, R, SI, false, false)
+ , encoding_Size(0), encoding_(nullptr)
+ {
+ }
+
+ CallbackAttr *clone(ASTContext &C) const;
+ void printPretty(raw_ostream &OS,
+ const PrintingPolicy &Policy) const;
+ const char *getSpelling() const;
+ typedef int* encoding_iterator;
+ encoding_iterator encoding_begin() const { return encoding_; }
+ encoding_iterator encoding_end() const { return encoding_ + encoding_Size; }
+ unsigned encoding_size() const { return encoding_Size; }
+ llvm::iterator_range<encoding_iterator> encoding() const { return llvm::make_range(encoding_begin(), encoding_end()); }
+
+
+
+
+ static bool classof(const Attr *A) { return A->getKind() == attr::Callback; }
+};
+
class CapabilityAttr : public InheritableAttr {
unsigned nameLength;
char *name;
@@ -2616,6 +2692,30 @@
static bool classof(const Attr *A) { return A->getKind() == attr::DLLExport; }
};
+class DLLExportStaticLocalAttr : public InheritableAttr {
+public:
+ static DLLExportStaticLocalAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) DLLExportStaticLocalAttr(Loc, Ctx, 0);
+ A->setImplicit(true);
+ return A;
+ }
+
+ DLLExportStaticLocalAttr(SourceRange R, ASTContext &Ctx
+ , unsigned SI
+ )
+ : InheritableAttr(attr::DLLExportStaticLocal, R, SI, false, false)
+ {
+ }
+
+ DLLExportStaticLocalAttr *clone(ASTContext &C) const;
+ void printPretty(raw_ostream &OS,
+ const PrintingPolicy &Policy) const;
+ const char *getSpelling() const;
+
+
+ static bool classof(const Attr *A) { return A->getKind() == attr::DLLExportStaticLocal; }
+};
+
class DLLImportAttr : public InheritableAttr {
public:
static DLLImportAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
@@ -2647,6 +2747,30 @@
static bool classof(const Attr *A) { return A->getKind() == attr::DLLImport; }
};
+class DLLImportStaticLocalAttr : public InheritableAttr {
+public:
+ static DLLImportStaticLocalAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) DLLImportStaticLocalAttr(Loc, Ctx, 0);
+ A->setImplicit(true);
+ return A;
+ }
+
+ DLLImportStaticLocalAttr(SourceRange R, ASTContext &Ctx
+ , unsigned SI
+ )
+ : InheritableAttr(attr::DLLImportStaticLocal, R, SI, false, false)
+ {
+ }
+
+ DLLImportStaticLocalAttr *clone(ASTContext &C) const;
+ void printPretty(raw_ostream &OS,
+ const PrintingPolicy &Policy) const;
+ const char *getSpelling() const;
+
+
+ static bool classof(const Attr *A) { return A->getKind() == attr::DLLImportStaticLocal; }
+};
+
class DeprecatedAttr : public InheritableAttr {
unsigned messageLength;
char *message;
@@ -3420,6 +3544,46 @@
static bool classof(const Attr *A) { return A->getKind() == attr::FormatArg; }
};
+class FortifyStdLibAttr : public InheritableAttr {
+int type;
+
+int flag;
+
+public:
+ static FortifyStdLibAttr *CreateImplicit(ASTContext &Ctx, int Type, int Flag, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) FortifyStdLibAttr(Loc, Ctx, Type, Flag, 0);
+ A->setImplicit(true);
+ return A;
+ }
+
+ FortifyStdLibAttr(SourceRange R, ASTContext &Ctx
+ , int Type
+ , int Flag
+ , unsigned SI
+ )
+ : InheritableAttr(attr::FortifyStdLib, R, SI, false, false)
+ , type(Type)
+ , flag(Flag)
+ {
+ }
+
+ FortifyStdLibAttr *clone(ASTContext &C) const;
+ void printPretty(raw_ostream &OS,
+ const PrintingPolicy &Policy) const;
+ const char *getSpelling() const;
+ int getType() const {
+ return type;
+ }
+
+ int getFlag() const {
+ return flag;
+ }
+
+
+
+ static bool classof(const Attr *A) { return A->getKind() == attr::FortifyStdLib; }
+};
+
class GNUInlineAttr : public InheritableAttr {
public:
static GNUInlineAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
@@ -3954,6 +4118,8 @@
UnrollCount,
UnrollAndJam,
UnrollAndJamCount,
+ PipelineDisabled,
+ PipelineInitiationInterval,
Distribute
};
private:
@@ -4028,6 +4194,8 @@
.Case("unroll_count", LoopHintAttr::UnrollCount)
.Case("unroll_and_jam", LoopHintAttr::UnrollAndJam)
.Case("unroll_and_jam_count", LoopHintAttr::UnrollAndJamCount)
+ .Case("pipeline", LoopHintAttr::PipelineDisabled)
+ .Case("pipeline_initiation_interval", LoopHintAttr::PipelineInitiationInterval)
.Case("distribute", LoopHintAttr::Distribute)
.Default(Optional<OptionType>());
if (R) {
@@ -4047,6 +4215,8 @@
case LoopHintAttr::UnrollCount: return "unroll_count";
case LoopHintAttr::UnrollAndJam: return "unroll_and_jam";
case LoopHintAttr::UnrollAndJamCount: return "unroll_and_jam_count";
+ case LoopHintAttr::PipelineDisabled: return "pipeline";
+ case LoopHintAttr::PipelineInitiationInterval: return "pipeline_initiation_interval";
case LoopHintAttr::Distribute: return "distribute";
}
llvm_unreachable("No enumerator with that value");
@@ -4095,6 +4265,8 @@
case UnrollCount: return "unroll_count";
case UnrollAndJam: return "unroll_and_jam";
case UnrollAndJamCount: return "unroll_and_jam_count";
+ case PipelineDisabled: return "pipeline";
+ case PipelineInitiationInterval: return "pipeline_initiation_interval";
case Distribute: return "distribute";
}
llvm_unreachable("Unhandled LoopHint option.");
@@ -4952,6 +5124,30 @@
static bool classof(const Attr *A) { return A->getKind() == attr::NoDebug; }
};
+class NoDerefAttr : public TypeAttr {
+public:
+ static NoDerefAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) NoDerefAttr(Loc, Ctx, 0);
+ A->setImplicit(true);
+ return A;
+ }
+
+ NoDerefAttr(SourceRange R, ASTContext &Ctx
+ , unsigned SI
+ )
+ : TypeAttr(attr::NoDeref, R, SI, false)
+ {
+ }
+
+ NoDerefAttr *clone(ASTContext &C) const;
+ void printPretty(raw_ostream &OS,
+ const PrintingPolicy &Policy) const;
+ const char *getSpelling() const;
+
+
+ static bool classof(const Attr *A) { return A->getKind() == attr::NoDeref; }
+};
+
class NoDestroyAttr : public InheritableAttr {
public:
static NoDestroyAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
@@ -5207,6 +5403,30 @@
static bool classof(const Attr *A) { return A->getKind() == attr::NoSanitize; }
};
+class NoSpeculativeLoadHardeningAttr : public InheritableAttr {
+public:
+ static NoSpeculativeLoadHardeningAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) NoSpeculativeLoadHardeningAttr(Loc, Ctx, 0);
+ A->setImplicit(true);
+ return A;
+ }
+
+ NoSpeculativeLoadHardeningAttr(SourceRange R, ASTContext &Ctx
+ , unsigned SI
+ )
+ : InheritableAttr(attr::NoSpeculativeLoadHardening, R, SI, false, false)
+ {
+ }
+
+ NoSpeculativeLoadHardeningAttr *clone(ASTContext &C) const;
+ void printPretty(raw_ostream &OS,
+ const PrintingPolicy &Policy) const;
+ const char *getSpelling() const;
+
+
+ static bool classof(const Attr *A) { return A->getKind() == attr::NoSpeculativeLoadHardening; }
+};
+
class NoSplitStackAttr : public InheritableAttr {
public:
static NoSplitStackAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
@@ -5776,6 +5996,150 @@
static bool classof(const Attr *A) { return A->getKind() == attr::OMPThreadPrivateDecl; }
};
+class OSConsumedAttr : public InheritableParamAttr {
+public:
+ static OSConsumedAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) OSConsumedAttr(Loc, Ctx, 0);
+ A->setImplicit(true);
+ return A;
+ }
+
+ OSConsumedAttr(SourceRange R, ASTContext &Ctx
+ , unsigned SI
+ )
+ : InheritableParamAttr(attr::OSConsumed, R, SI, false, false)
+ {
+ }
+
+ OSConsumedAttr *clone(ASTContext &C) const;
+ void printPretty(raw_ostream &OS,
+ const PrintingPolicy &Policy) const;
+ const char *getSpelling() const;
+
+
+ static bool classof(const Attr *A) { return A->getKind() == attr::OSConsumed; }
+};
+
+class OSConsumesThisAttr : public InheritableAttr {
+public:
+ static OSConsumesThisAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) OSConsumesThisAttr(Loc, Ctx, 0);
+ A->setImplicit(true);
+ return A;
+ }
+
+ OSConsumesThisAttr(SourceRange R, ASTContext &Ctx
+ , unsigned SI
+ )
+ : InheritableAttr(attr::OSConsumesThis, R, SI, false, false)
+ {
+ }
+
+ OSConsumesThisAttr *clone(ASTContext &C) const;
+ void printPretty(raw_ostream &OS,
+ const PrintingPolicy &Policy) const;
+ const char *getSpelling() const;
+
+
+ static bool classof(const Attr *A) { return A->getKind() == attr::OSConsumesThis; }
+};
+
+class OSReturnsNotRetainedAttr : public InheritableAttr {
+public:
+ static OSReturnsNotRetainedAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) OSReturnsNotRetainedAttr(Loc, Ctx, 0);
+ A->setImplicit(true);
+ return A;
+ }
+
+ OSReturnsNotRetainedAttr(SourceRange R, ASTContext &Ctx
+ , unsigned SI
+ )
+ : InheritableAttr(attr::OSReturnsNotRetained, R, SI, false, false)
+ {
+ }
+
+ OSReturnsNotRetainedAttr *clone(ASTContext &C) const;
+ void printPretty(raw_ostream &OS,
+ const PrintingPolicy &Policy) const;
+ const char *getSpelling() const;
+
+
+ static bool classof(const Attr *A) { return A->getKind() == attr::OSReturnsNotRetained; }
+};
+
+class OSReturnsRetainedAttr : public InheritableAttr {
+public:
+ static OSReturnsRetainedAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) OSReturnsRetainedAttr(Loc, Ctx, 0);
+ A->setImplicit(true);
+ return A;
+ }
+
+ OSReturnsRetainedAttr(SourceRange R, ASTContext &Ctx
+ , unsigned SI
+ )
+ : InheritableAttr(attr::OSReturnsRetained, R, SI, false, false)
+ {
+ }
+
+ OSReturnsRetainedAttr *clone(ASTContext &C) const;
+ void printPretty(raw_ostream &OS,
+ const PrintingPolicy &Policy) const;
+ const char *getSpelling() const;
+
+
+ static bool classof(const Attr *A) { return A->getKind() == attr::OSReturnsRetained; }
+};
+
+class OSReturnsRetainedOnNonZeroAttr : public InheritableAttr {
+public:
+ static OSReturnsRetainedOnNonZeroAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) OSReturnsRetainedOnNonZeroAttr(Loc, Ctx, 0);
+ A->setImplicit(true);
+ return A;
+ }
+
+ OSReturnsRetainedOnNonZeroAttr(SourceRange R, ASTContext &Ctx
+ , unsigned SI
+ )
+ : InheritableAttr(attr::OSReturnsRetainedOnNonZero, R, SI, false, false)
+ {
+ }
+
+ OSReturnsRetainedOnNonZeroAttr *clone(ASTContext &C) const;
+ void printPretty(raw_ostream &OS,
+ const PrintingPolicy &Policy) const;
+ const char *getSpelling() const;
+
+
+ static bool classof(const Attr *A) { return A->getKind() == attr::OSReturnsRetainedOnNonZero; }
+};
+
+class OSReturnsRetainedOnZeroAttr : public InheritableAttr {
+public:
+ static OSReturnsRetainedOnZeroAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) OSReturnsRetainedOnZeroAttr(Loc, Ctx, 0);
+ A->setImplicit(true);
+ return A;
+ }
+
+ OSReturnsRetainedOnZeroAttr(SourceRange R, ASTContext &Ctx
+ , unsigned SI
+ )
+ : InheritableAttr(attr::OSReturnsRetainedOnZero, R, SI, false, false)
+ {
+ }
+
+ OSReturnsRetainedOnZeroAttr *clone(ASTContext &C) const;
+ void printPretty(raw_ostream &OS,
+ const PrintingPolicy &Policy) const;
+ const char *getSpelling() const;
+
+
+ static bool classof(const Attr *A) { return A->getKind() == attr::OSReturnsRetainedOnZero; }
+};
+
class ObjCBoxableAttr : public Attr {
public:
static ObjCBoxableAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
@@ -5984,6 +6348,30 @@
static bool classof(const Attr *A) { return A->getKind() == attr::ObjCExplicitProtocolImpl; }
};
+class ObjCExternallyRetainedAttr : public InheritableAttr {
+public:
+ static ObjCExternallyRetainedAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) ObjCExternallyRetainedAttr(Loc, Ctx, 0);
+ A->setImplicit(true);
+ return A;
+ }
+
+ ObjCExternallyRetainedAttr(SourceRange R, ASTContext &Ctx
+ , unsigned SI
+ )
+ : InheritableAttr(attr::ObjCExternallyRetained, R, SI, false, false)
+ {
+ }
+
+ ObjCExternallyRetainedAttr *clone(ASTContext &C) const;
+ void printPretty(raw_ostream &OS,
+ const PrintingPolicy &Policy) const;
+ const char *getSpelling() const;
+
+
+ static bool classof(const Attr *A) { return A->getKind() == attr::ObjCExternallyRetained; }
+};
+
class ObjCGCAttr : public TypeAttr {
IdentifierInfo * kind;
@@ -6181,6 +6569,30 @@
static bool classof(const Attr *A) { return A->getKind() == attr::ObjCNSObject; }
};
+class ObjCNonLazyClassAttr : public Attr {
+public:
+ static ObjCNonLazyClassAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) ObjCNonLazyClassAttr(Loc, Ctx, 0);
+ A->setImplicit(true);
+ return A;
+ }
+
+ ObjCNonLazyClassAttr(SourceRange R, ASTContext &Ctx
+ , unsigned SI
+ )
+ : Attr(attr::ObjCNonLazyClass, R, SI, false)
+ {
+ }
+
+ ObjCNonLazyClassAttr *clone(ASTContext &C) const;
+ void printPretty(raw_ostream &OS,
+ const PrintingPolicy &Policy) const;
+ const char *getSpelling() const;
+
+
+ static bool classof(const Attr *A) { return A->getKind() == attr::ObjCNonLazyClass; }
+};
+
class ObjCOwnershipAttr : public InheritableAttr {
IdentifierInfo * kind;
@@ -8202,6 +8614,30 @@
static bool classof(const Attr *A) { return A->getKind() == attr::SharedTrylockFunction; }
};
+class SpeculativeLoadHardeningAttr : public InheritableAttr {
+public:
+ static SpeculativeLoadHardeningAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) SpeculativeLoadHardeningAttr(Loc, Ctx, 0);
+ A->setImplicit(true);
+ return A;
+ }
+
+ SpeculativeLoadHardeningAttr(SourceRange R, ASTContext &Ctx
+ , unsigned SI
+ )
+ : InheritableAttr(attr::SpeculativeLoadHardening, R, SI, false, false)
+ {
+ }
+
+ SpeculativeLoadHardeningAttr *clone(ASTContext &C) const;
+ void printPretty(raw_ostream &OS,
+ const PrintingPolicy &Policy) const;
+ const char *getSpelling() const;
+
+
+ static bool classof(const Attr *A) { return A->getKind() == attr::SpeculativeLoadHardening; }
+};
+
class StdCallAttr : public InheritableAttr {
public:
static StdCallAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
@@ -9106,6 +9542,30 @@
static bool classof(const Attr *A) { return A->getKind() == attr::Unavailable; }
};
+class UninitializedAttr : public InheritableAttr {
+public:
+ static UninitializedAttr *CreateImplicit(ASTContext &Ctx, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) UninitializedAttr(Loc, Ctx, 0);
+ A->setImplicit(true);
+ return A;
+ }
+
+ UninitializedAttr(SourceRange R, ASTContext &Ctx
+ , unsigned SI
+ )
+ : InheritableAttr(attr::Uninitialized, R, SI, false, false)
+ {
+ }
+
+ UninitializedAttr *clone(ASTContext &C) const;
+ void printPretty(raw_ostream &OS,
+ const PrintingPolicy &Policy) const;
+ const char *getSpelling() const;
+
+
+ static bool classof(const Attr *A) { return A->getKind() == attr::Uninitialized; }
+};
+
class UnusedAttr : public InheritableAttr {
public:
enum Spelling {
@@ -9523,6 +9983,94 @@
static bool classof(const Attr *A) { return A->getKind() == attr::WeakRef; }
};
+class WebAssemblyImportModuleAttr : public InheritableAttr {
+unsigned importModuleLength;
+char *importModule;
+
+public:
+ static WebAssemblyImportModuleAttr *CreateImplicit(ASTContext &Ctx, llvm::StringRef ImportModule, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) WebAssemblyImportModuleAttr(Loc, Ctx, ImportModule, 0);
+ A->setImplicit(true);
+ return A;
+ }
+
+ WebAssemblyImportModuleAttr(SourceRange R, ASTContext &Ctx
+ , llvm::StringRef ImportModule
+ , unsigned SI
+ )
+ : InheritableAttr(attr::WebAssemblyImportModule, R, SI, false, false)
+ , importModuleLength(ImportModule.size()),importModule(new (Ctx, 1) char[importModuleLength])
+ {
+ if (!ImportModule.empty())
+ std::memcpy(importModule, ImportModule.data(), importModuleLength);
+ }
+
+ WebAssemblyImportModuleAttr *clone(ASTContext &C) const;
+ void printPretty(raw_ostream &OS,
+ const PrintingPolicy &Policy) const;
+ const char *getSpelling() const;
+ llvm::StringRef getImportModule() const {
+ return llvm::StringRef(importModule, importModuleLength);
+ }
+ unsigned getImportModuleLength() const {
+ return importModuleLength;
+ }
+ void setImportModule(ASTContext &C, llvm::StringRef S) {
+ importModuleLength = S.size();
+ this->importModule = new (C, 1) char [importModuleLength];
+ if (!S.empty())
+ std::memcpy(this->importModule, S.data(), importModuleLength);
+ }
+
+
+
+ static bool classof(const Attr *A) { return A->getKind() == attr::WebAssemblyImportModule; }
+};
+
+class WebAssemblyImportNameAttr : public InheritableAttr {
+unsigned importNameLength;
+char *importName;
+
+public:
+ static WebAssemblyImportNameAttr *CreateImplicit(ASTContext &Ctx, llvm::StringRef ImportName, SourceRange Loc = SourceRange()) {
+ auto *A = new (Ctx) WebAssemblyImportNameAttr(Loc, Ctx, ImportName, 0);
+ A->setImplicit(true);
+ return A;
+ }
+
+ WebAssemblyImportNameAttr(SourceRange R, ASTContext &Ctx
+ , llvm::StringRef ImportName
+ , unsigned SI
+ )
+ : InheritableAttr(attr::WebAssemblyImportName, R, SI, false, false)
+ , importNameLength(ImportName.size()),importName(new (Ctx, 1) char[importNameLength])
+ {
+ if (!ImportName.empty())
+ std::memcpy(importName, ImportName.data(), importNameLength);
+ }
+
+ WebAssemblyImportNameAttr *clone(ASTContext &C) const;
+ void printPretty(raw_ostream &OS,
+ const PrintingPolicy &Policy) const;
+ const char *getSpelling() const;
+ llvm::StringRef getImportName() const {
+ return llvm::StringRef(importName, importNameLength);
+ }
+ unsigned getImportNameLength() const {
+ return importNameLength;
+ }
+ void setImportName(ASTContext &C, llvm::StringRef S) {
+ importNameLength = S.size();
+ this->importName = new (C, 1) char [importNameLength];
+ if (!S.empty())
+ std::memcpy(this->importName, S.data(), importNameLength);
+ }
+
+
+
+ static bool classof(const Attr *A) { return A->getKind() == attr::WebAssemblyImportName; }
+};
+
class WorkGroupSizeHintAttr : public InheritableAttr {
unsigned xDim;
diff --git a/linux-x64/clang/include/clang/AST/Availability.h b/linux-x64/clang/include/clang/AST/Availability.h
index 28f3c3c..527fc4b 100644
--- a/linux-x64/clang/include/clang/AST/Availability.h
+++ b/linux-x64/clang/include/clang/AST/Availability.h
@@ -1,9 +1,8 @@
//===--- Availability.h - Classes for availability --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/BaseSubobject.h b/linux-x64/clang/include/clang/AST/BaseSubobject.h
index 2b702c7..15600f0 100644
--- a/linux-x64/clang/include/clang/AST/BaseSubobject.h
+++ b/linux-x64/clang/include/clang/AST/BaseSubobject.h
@@ -1,9 +1,8 @@
//===- BaseSubobject.h - BaseSubobject class --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -15,6 +14,7 @@
#define LLVM_CLANG_AST_BASESUBOBJECT_H
#include "clang/AST/CharUnits.h"
+#include "clang/AST/DeclCXX.h"
#include "llvm/ADT/DenseMapInfo.h"
#include "llvm/Support/type_traits.h"
#include <cstdint>
@@ -80,11 +80,6 @@
}
};
-// It's OK to treat BaseSubobject as a POD type.
-template <> struct isPodLike<clang::BaseSubobject> {
- static const bool value = true;
-};
-
} // namespace llvm
#endif // LLVM_CLANG_AST_BASESUBOBJECT_H
diff --git a/linux-x64/clang/include/clang/AST/BuiltinTypes.def b/linux-x64/clang/include/clang/AST/BuiltinTypes.def
index 400efcb..74a45ee 100644
--- a/linux-x64/clang/include/clang/AST/BuiltinTypes.def
+++ b/linux-x64/clang/include/clang/AST/BuiltinTypes.def
@@ -1,9 +1,8 @@
//===-- BuiltinTypes.def - Metadata about BuiltinTypes ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/CXXInheritance.h b/linux-x64/clang/include/clang/AST/CXXInheritance.h
index f5e23f8..bb2ad9c 100644
--- a/linux-x64/clang/include/clang/AST/CXXInheritance.h
+++ b/linux-x64/clang/include/clang/AST/CXXInheritance.h
@@ -1,9 +1,8 @@
//===- CXXInheritance.h - C++ Inheritance -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/CanonicalType.h b/linux-x64/clang/include/clang/AST/CanonicalType.h
index 0e738da..2e00d34 100644
--- a/linux-x64/clang/include/clang/AST/CanonicalType.h
+++ b/linux-x64/clang/include/clang/AST/CanonicalType.h
@@ -1,9 +1,8 @@
//===- CanonicalType.h - C Language Family Type Representation --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -510,7 +509,7 @@
}
LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(bool, isVariadic)
- LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(unsigned, getTypeQuals)
+ LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(Qualifiers, getMethodQuals)
using param_type_iterator =
CanTypeIterator<FunctionProtoType::param_type_iterator>;
diff --git a/linux-x64/clang/include/clang/AST/CharUnits.h b/linux-x64/clang/include/clang/AST/CharUnits.h
index 0aadf06..37f489c 100644
--- a/linux-x64/clang/include/clang/AST/CharUnits.h
+++ b/linux-x64/clang/include/clang/AST/CharUnits.h
@@ -1,9 +1,8 @@
//===--- CharUnits.h - Character units for sizes and offsets ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -238,10 +237,6 @@
}
};
-template <> struct isPodLike<clang::CharUnits> {
- static const bool value = true;
-};
-
} // end namespace llvm
#endif // LLVM_CLANG_AST_CHARUNITS_H
diff --git a/linux-x64/clang/include/clang/AST/Comment.h b/linux-x64/clang/include/clang/AST/Comment.h
index 1b59056..2c284a2 100644
--- a/linux-x64/clang/include/clang/AST/Comment.h
+++ b/linux-x64/clang/include/clang/AST/Comment.h
@@ -1,9 +1,8 @@
//===--- Comment.h - Comment AST nodes --------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/CommentBriefParser.h b/linux-x64/clang/include/clang/AST/CommentBriefParser.h
index baa2293..cfd2137 100644
--- a/linux-x64/clang/include/clang/AST/CommentBriefParser.h
+++ b/linux-x64/clang/include/clang/AST/CommentBriefParser.h
@@ -1,9 +1,8 @@
//===--- CommentBriefParser.h - Dumb comment parser -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/CommentCommandTraits.h b/linux-x64/clang/include/clang/AST/CommentCommandTraits.h
index 4fd0078..83a29a5 100644
--- a/linux-x64/clang/include/clang/AST/CommentCommandTraits.h
+++ b/linux-x64/clang/include/clang/AST/CommentCommandTraits.h
@@ -1,9 +1,8 @@
//===--- CommentCommandTraits.h - Comment command properties ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/CommentDiagnostic.h b/linux-x64/clang/include/clang/AST/CommentDiagnostic.h
index f3a209b..2e498d5 100644
--- a/linux-x64/clang/include/clang/AST/CommentDiagnostic.h
+++ b/linux-x64/clang/include/clang/AST/CommentDiagnostic.h
@@ -1,29 +1,15 @@
//===--- CommentDiagnostic.h - Diagnostics for the AST library --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_AST_COMMENTDIAGNOSTIC_H
#define LLVM_CLANG_AST_COMMENTDIAGNOSTIC_H
-#include "clang/Basic/Diagnostic.h"
-
-namespace clang {
- namespace diag {
- enum {
-#define DIAG(ENUM,FLAGS,DEFAULT_MAPPING,DESC,GROUP,\
- SFINAE,NOWERROR,SHOWINSYSHEADER,CATEGORY) ENUM,
-#define COMMENTSTART
-#include "clang/Basic/DiagnosticCommentKinds.inc"
-#undef DIAG
- NUM_BUILTIN_COMMENT_DIAGNOSTICS
- };
- } // end namespace diag
-} // end namespace clang
+#include "clang/Basic/DiagnosticComment.h"
#endif
diff --git a/linux-x64/clang/include/clang/AST/CommentLexer.h b/linux-x64/clang/include/clang/AST/CommentLexer.h
index 3ef5b7c..9ddbb7d 100644
--- a/linux-x64/clang/include/clang/AST/CommentLexer.h
+++ b/linux-x64/clang/include/clang/AST/CommentLexer.h
@@ -1,9 +1,8 @@
//===--- CommentLexer.h - Lexer for structured comments ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/CommentParser.h b/linux-x64/clang/include/clang/AST/CommentParser.h
index fa88628..1a0cfb0 100644
--- a/linux-x64/clang/include/clang/AST/CommentParser.h
+++ b/linux-x64/clang/include/clang/AST/CommentParser.h
@@ -1,9 +1,8 @@
//===--- CommentParser.h - Doxygen comment parser ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/CommentSema.h b/linux-x64/clang/include/clang/AST/CommentSema.h
index 632eba7..307618f 100644
--- a/linux-x64/clang/include/clang/AST/CommentSema.h
+++ b/linux-x64/clang/include/clang/AST/CommentSema.h
@@ -1,9 +1,8 @@
//===--- CommentSema.h - Doxygen comment semantic analysis ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/CommentVisitor.h b/linux-x64/clang/include/clang/AST/CommentVisitor.h
index d1cc2d0..d9a7439 100644
--- a/linux-x64/clang/include/clang/AST/CommentVisitor.h
+++ b/linux-x64/clang/include/clang/AST/CommentVisitor.h
@@ -1,9 +1,8 @@
//===- CommentVisitor.h - Visitor for Comment subclasses --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -11,22 +10,21 @@
#define LLVM_CLANG_AST_COMMENTVISITOR_H
#include "clang/AST/Comment.h"
+#include "llvm/ADT/STLExtras.h"
#include "llvm/Support/ErrorHandling.h"
namespace clang {
namespace comments {
-
-template <typename T> struct make_ptr { using type = T *; };
-template <typename T> struct make_const_ptr { using type = const T *; };
-
-template<template <typename> class Ptr, typename ImplClass, typename RetTy=void>
+template <template <typename> class Ptr, typename ImplClass,
+ typename RetTy = void, class... ParamTys>
class CommentVisitorBase {
public:
#define PTR(CLASS) typename Ptr<CLASS>::type
-#define DISPATCH(NAME, CLASS) \
- return static_cast<ImplClass*>(this)->visit ## NAME(static_cast<PTR(CLASS)>(C))
+#define DISPATCH(NAME, CLASS) \
+ return static_cast<ImplClass *>(this)->visit##NAME( \
+ static_cast<PTR(CLASS)>(C), std::forward<ParamTys>(P)...)
- RetTy visit(PTR(Comment) C) {
+ RetTy visit(PTR(Comment) C, ParamTys... P) {
if (!C)
return RetTy();
@@ -44,25 +42,26 @@
// If the derived class does not implement a certain Visit* method, fall back
// on Visit* method for the superclass.
#define ABSTRACT_COMMENT(COMMENT) COMMENT
-#define COMMENT(CLASS, PARENT) \
- RetTy visit ## CLASS(PTR(CLASS) C) { DISPATCH(PARENT, PARENT); }
+#define COMMENT(CLASS, PARENT) \
+ RetTy visit##CLASS(PTR(CLASS) C, ParamTys... P) { DISPATCH(PARENT, PARENT); }
#include "clang/AST/CommentNodes.inc"
#undef ABSTRACT_COMMENT
#undef COMMENT
- RetTy visitComment(PTR(Comment) C) { return RetTy(); }
+ RetTy visitComment(PTR(Comment) C, ParamTys... P) { return RetTy(); }
#undef PTR
#undef DISPATCH
};
-template<typename ImplClass, typename RetTy=void>
-class CommentVisitor :
- public CommentVisitorBase<make_ptr, ImplClass, RetTy> {};
+template <typename ImplClass, typename RetTy = void, class... ParamTys>
+class CommentVisitor : public CommentVisitorBase<std::add_pointer, ImplClass,
+ RetTy, ParamTys...> {};
-template<typename ImplClass, typename RetTy=void>
-class ConstCommentVisitor :
- public CommentVisitorBase<make_const_ptr, ImplClass, RetTy> {};
+template <typename ImplClass, typename RetTy = void, class... ParamTys>
+class ConstCommentVisitor
+ : public CommentVisitorBase<llvm::make_const_ptr, ImplClass, RetTy,
+ ParamTys...> {};
} // namespace comments
} // namespace clang
diff --git a/linux-x64/clang/include/clang/AST/ComparisonCategories.h b/linux-x64/clang/include/clang/AST/ComparisonCategories.h
index 23bfd70..9d591cc 100644
--- a/linux-x64/clang/include/clang/AST/ComparisonCategories.h
+++ b/linux-x64/clang/include/clang/AST/ComparisonCategories.h
@@ -1,9 +1,8 @@
//===- ComparisonCategories.h - Three Way Comparison Data -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/DataCollection.h b/linux-x64/clang/include/clang/AST/DataCollection.h
index 8b2a834..37f1017 100644
--- a/linux-x64/clang/include/clang/AST/DataCollection.h
+++ b/linux-x64/clang/include/clang/AST/DataCollection.h
@@ -1,9 +1,8 @@
//===--- DatatCollection.h --------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/clang/AST/Decl.h b/linux-x64/clang/include/clang/AST/Decl.h
index 076bd6e..526e210 100644
--- a/linux-x64/clang/include/clang/AST/Decl.h
+++ b/linux-x64/clang/include/clang/AST/Decl.h
@@ -1,9 +1,8 @@
//===- Decl.h - Classes for representing declarations -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -15,6 +14,7 @@
#define LLVM_CLANG_AST_DECL_H
#include "clang/AST/APValue.h"
+#include "clang/AST/ASTContextAllocate.h"
#include "clang/AST/DeclBase.h"
#include "clang/AST/DeclarationName.h"
#include "clang/AST/ExternalASTSource.h"
@@ -866,8 +866,12 @@
unsigned SClass : 3;
unsigned TSCSpec : 2;
unsigned InitStyle : 2;
+
+ /// Whether this variable is an ARC pseudo-__strong variable; see
+ /// isARCPseudoStrong() for details.
+ unsigned ARCPseudoStrong : 1;
};
- enum { NumVarDeclBits = 7 };
+ enum { NumVarDeclBits = 8 };
protected:
enum { NumParameterIndexBits = 8 };
@@ -940,10 +944,6 @@
/// Whether this variable is the for-in loop declaration in Objective-C.
unsigned ObjCForDecl : 1;
- /// Whether this variable is an ARC pseudo-__strong
- /// variable; see isARCPseudoStrong() for details.
- unsigned ARCPseudoStrong : 1;
-
/// Whether this variable is (C++1z) inline.
unsigned IsInline : 1;
@@ -1349,17 +1349,15 @@
NonParmVarDeclBits.ObjCForDecl = FRD;
}
- /// Determine whether this variable is an ARC pseudo-__strong
- /// variable. A pseudo-__strong variable has a __strong-qualified
- /// type but does not actually retain the object written into it.
- /// Generally such variables are also 'const' for safety.
- bool isARCPseudoStrong() const {
- return isa<ParmVarDecl>(this) ? false : NonParmVarDeclBits.ARCPseudoStrong;
- }
- void setARCPseudoStrong(bool ps) {
- assert(!isa<ParmVarDecl>(this));
- NonParmVarDeclBits.ARCPseudoStrong = ps;
- }
+ /// Determine whether this variable is an ARC pseudo-__strong variable. A
+ /// pseudo-__strong variable has a __strong-qualified type but does not
+ /// actually retain the object written into it. Generally such variables are
+ /// also 'const' for safety. There are 3 cases where this will be set, 1) if
+ /// the variable is annotated with the objc_externally_retained attribute, 2)
+ /// if its 'self' in a non-init method, or 3) if its the variable in an for-in
+ /// loop.
+ bool isARCPseudoStrong() const { return VarDeclBits.ARCPseudoStrong; }
+ void setARCPseudoStrong(bool PS) { VarDeclBits.ARCPseudoStrong = PS; }
/// Whether this variable is (C++1z) inline.
bool isInline() const {
@@ -1719,6 +1717,13 @@
unsigned getParameterIndexLarge() const;
};
+enum class MultiVersionKind {
+ None,
+ Target,
+ CPUSpecific,
+ CPUDispatch
+};
+
/// Represents a function declaration or definition.
///
/// Since a given function can be declared several times in a program,
@@ -2226,6 +2231,12 @@
getCanonicalDecl()->FunctionDeclBits.IsMultiVersion = V;
}
+ /// Gets the kind of multiversioning attribute this declaration has. Note that
+ /// this can return a value even if the function is not multiversion, such as
+ /// the case of 'target'.
+ MultiVersionKind getMultiVersionKind() const;
+
+
/// True if this function is a multiversioned dispatch function as a part of
/// the cpu_specific/cpu_dispatch functionality.
bool isCPUDispatchMultiVersion() const;
@@ -2233,6 +2244,10 @@
/// part of the cpu_specific/cpu_dispatch functionality.
bool isCPUSpecificMultiVersion() const;
+ /// True if this function is a multiversioned dispatch function as a part of
+ /// the target functionality.
+ bool isTargetMultiVersion() const;
+
void setPreviousDeclaration(FunctionDecl * PrevDecl);
FunctionDecl *getCanonicalDecl() override;
@@ -2310,14 +2325,6 @@
getASTContext());
}
- /// Returns the WarnUnusedResultAttr that is either declared on this
- /// function, or its return type declaration.
- const Attr *getUnusedResultAttr() const;
-
- /// Returns true if this function or its return type has the
- /// warn_unused_result attribute.
- bool hasUnusedResultAttr() const { return getUnusedResultAttr() != nullptr; }
-
/// Returns the storage class as written in the source. For the
/// computed linkage of symbol, see getLinkage.
StorageClass getStorageClass() const {
@@ -3844,7 +3851,7 @@
static bool classofKind(Kind K) { return K == FileScopeAsm; }
};
-/// Pepresents a block literal declaration, which is like an
+/// Represents a block literal declaration, which is like an
/// unnamed FunctionDecl. For example:
/// ^{ statement-body } or ^(int arg1, float arg2){ statement-body }
class BlockDecl : public Decl, public DeclContext {
diff --git a/linux-x64/clang/include/clang/AST/DeclAccessPair.h b/linux-x64/clang/include/clang/AST/DeclAccessPair.h
index 3c5056c..805342c 100644
--- a/linux-x64/clang/include/clang/AST/DeclAccessPair.h
+++ b/linux-x64/clang/include/clang/AST/DeclAccessPair.h
@@ -1,9 +1,8 @@
//===--- DeclAccessPair.h - A decl bundled with its path access -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -61,12 +60,4 @@
};
}
-// Take a moment to tell SmallVector that DeclAccessPair is POD.
-namespace llvm {
-template<typename> struct isPodLike;
-template<> struct isPodLike<clang::DeclAccessPair> {
- static const bool value = true;
-};
-}
-
#endif
diff --git a/linux-x64/clang/include/clang/AST/DeclBase.h b/linux-x64/clang/include/clang/AST/DeclBase.h
index 9c245f4..9117f53 100644
--- a/linux-x64/clang/include/clang/AST/DeclBase.h
+++ b/linux-x64/clang/include/clang/AST/DeclBase.h
@@ -1,9 +1,8 @@
//===- DeclBase.h - Base Classes for representing declarations --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -176,7 +175,10 @@
IDNS_LocalExtern = 0x0800,
/// This declaration is an OpenMP user defined reduction construction.
- IDNS_OMPReduction = 0x1000
+ IDNS_OMPReduction = 0x1000,
+
+ /// This declaration is an OpenMP user defined mapper.
+ IDNS_OMPMapper = 0x2000,
};
/// ObjCDeclQualifier - 'Qualifiers' written next to the return and
@@ -324,7 +326,7 @@
unsigned FromASTFile : 1;
/// IdentifierNamespace - This specifies what IDNS_* namespace this lives in.
- unsigned IdentifierNamespace : 13;
+ unsigned IdentifierNamespace : 14;
/// If 0, we have not computed the linkage of this declaration.
/// Otherwise, it is the linkage + 1.
@@ -1065,11 +1067,11 @@
unsigned OldNS = IdentifierNamespace;
assert((OldNS & (IDNS_Tag | IDNS_Ordinary |
IDNS_TagFriend | IDNS_OrdinaryFriend |
- IDNS_LocalExtern)) &&
+ IDNS_LocalExtern | IDNS_NonMemberOperator)) &&
"namespace includes neither ordinary nor tag");
assert(!(OldNS & ~(IDNS_Tag | IDNS_Ordinary | IDNS_Type |
IDNS_TagFriend | IDNS_OrdinaryFriend |
- IDNS_LocalExtern)) &&
+ IDNS_LocalExtern | IDNS_NonMemberOperator)) &&
"namespace includes other than ordinary or tag");
Decl *Prev = getPreviousDecl();
@@ -1082,7 +1084,8 @@
IdentifierNamespace |= IDNS_Tag | IDNS_Type;
}
- if (OldNS & (IDNS_Ordinary | IDNS_OrdinaryFriend | IDNS_LocalExtern)) {
+ if (OldNS & (IDNS_Ordinary | IDNS_OrdinaryFriend |
+ IDNS_LocalExtern | IDNS_NonMemberOperator)) {
IdentifierNamespace |= IDNS_OrdinaryFriend;
if (PerformFriendInjection ||
(Prev && Prev->getIdentifierNamespace() & IDNS_Ordinary))
@@ -1251,6 +1254,7 @@
/// NamespaceDecl
/// TagDecl
/// OMPDeclareReductionDecl
+/// OMPDeclareMapperDecl
/// FunctionDecl
/// ObjCMethodDecl
/// ObjCContainerDecl
diff --git a/linux-x64/clang/include/clang/AST/DeclCXX.h b/linux-x64/clang/include/clang/AST/DeclCXX.h
index cb1de0b..6b99f7c 100644
--- a/linux-x64/clang/include/clang/AST/DeclCXX.h
+++ b/linux-x64/clang/include/clang/AST/DeclCXX.h
@@ -1,9 +1,8 @@
//===- DeclCXX.h - Classes for representing C++ declarations --*- C++ -*-=====//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -1541,7 +1540,7 @@
///
/// C++11 [class]p6:
/// "A trivial class is a class that has a trivial default constructor and
- /// is trivially copiable."
+ /// is trivially copyable."
bool isTrivial() const {
return isTriviallyCopyable() && hasTrivialDefaultConstructor();
}
@@ -1829,6 +1828,14 @@
CXXBasePath &Path, DeclarationName Name);
/// Base-class lookup callback that determines whether there exists
+ /// an OpenMP declare mapper member with the given name.
+ ///
+ /// This callback can be used with \c lookupInBases() to find members
+ /// of the given name within a C++ class hierarchy.
+ static bool FindOMPMapperMember(const CXXBaseSpecifier *Specifier,
+ CXXBasePath &Path, DeclarationName Name);
+
+ /// Base-class lookup callback that determines whether there exists
/// a member with the given name that can be used in a nested-name-specifier.
///
/// This callback can be used with \c lookupInBases() to find members of
@@ -2180,10 +2187,13 @@
/// that for the call operator of a lambda closure type, this returns the
/// desugared 'this' type (a pointer to the closure type), not the captured
/// 'this' type.
- QualType getThisType(ASTContext &C) const;
+ QualType getThisType() const;
- unsigned getTypeQualifiers() const {
- return getType()->getAs<FunctionProtoType>()->getTypeQuals();
+ static QualType getThisType(const FunctionProtoType *FPT,
+ const CXXRecordDecl *Decl);
+
+ Qualifiers getMethodQualifiers() const {
+ return getType()->getAs<FunctionProtoType>()->getMethodQuals();
}
/// Retrieve the ref-qualifier associated with this method.
@@ -2315,6 +2325,9 @@
CXXCtorInitializer(ASTContext &Context, TypeSourceInfo *TInfo,
SourceLocation L, Expr *Init, SourceLocation R);
+ /// \return Unique reproducible object identifier.
+ int64_t getID(const ASTContext &Context) const;
+
/// Determine whether this initializer is initializing a base class.
bool isBaseInitializer() const {
return Initializee.is<TypeSourceInfo*>() && !IsDelegating;
@@ -3912,6 +3925,7 @@
: DeclaratorDecl(MSProperty, DC, L, N, T, TInfo, StartL),
GetterId(Getter), SetterId(Setter) {}
+ void anchor() override;
public:
friend class ASTDeclReader;
diff --git a/linux-x64/clang/include/clang/AST/DeclContextInternals.h b/linux-x64/clang/include/clang/AST/DeclContextInternals.h
index ccd82d2..425e014 100644
--- a/linux-x64/clang/include/clang/AST/DeclContextInternals.h
+++ b/linux-x64/clang/include/clang/AST/DeclContextInternals.h
@@ -1,9 +1,8 @@
//===- DeclContextInternals.h - DeclContext Representation ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/DeclFriend.h b/linux-x64/clang/include/clang/AST/DeclFriend.h
index b5808f2..6f8306c 100644
--- a/linux-x64/clang/include/clang/AST/DeclFriend.h
+++ b/linux-x64/clang/include/clang/AST/DeclFriend.h
@@ -1,9 +1,8 @@
//===- DeclFriend.h - Classes for C++ friend declarations -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/DeclGroup.h b/linux-x64/clang/include/clang/AST/DeclGroup.h
index 6d5aaad..2be9dae 100644
--- a/linux-x64/clang/include/clang/AST/DeclGroup.h
+++ b/linux-x64/clang/include/clang/AST/DeclGroup.h
@@ -1,9 +1,8 @@
//===- DeclGroup.h - Classes for representing groups of Decls ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/DeclLookups.h b/linux-x64/clang/include/clang/AST/DeclLookups.h
index 9627f44..41c8999 100644
--- a/linux-x64/clang/include/clang/AST/DeclLookups.h
+++ b/linux-x64/clang/include/clang/AST/DeclLookups.h
@@ -1,9 +1,8 @@
//===- DeclLookups.h - Low-level interface to all names in a DC -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/DeclNodes.inc b/linux-x64/clang/include/clang/AST/DeclNodes.inc
index a804843..a52cb45 100644
--- a/linux-x64/clang/include/clang/AST/DeclNodes.inc
+++ b/linux-x64/clang/include/clang/AST/DeclNodes.inc
@@ -497,6 +497,12 @@
INDIRECTFIELD(IndirectField, ValueDecl)
#undef INDIRECTFIELD
+#ifndef OMPDECLAREMAPPER
+# define OMPDECLAREMAPPER(Type, Base) VALUE(Type, Base)
+#endif
+OMPDECLAREMAPPER(OMPDeclareMapper, ValueDecl)
+#undef OMPDECLAREMAPPER
+
#ifndef OMPDECLAREREDUCTION
# define OMPDECLAREREDUCTION(Type, Base) VALUE(Type, Base)
#endif
@@ -588,6 +594,7 @@
DECL_CONTEXT(ExternCContext)
DECL_CONTEXT(LinkageSpec)
DECL_CONTEXT(Namespace)
+DECL_CONTEXT(OMPDeclareMapper)
DECL_CONTEXT(OMPDeclareReduction)
DECL_CONTEXT(ObjCMethod)
DECL_CONTEXT(TranslationUnit)
diff --git a/linux-x64/clang/include/clang/AST/DeclObjC.h b/linux-x64/clang/include/clang/AST/DeclObjC.h
index bc10ba4..8d85ac3 100644
--- a/linux-x64/clang/include/clang/AST/DeclObjC.h
+++ b/linux-x64/clang/include/clang/AST/DeclObjC.h
@@ -1,9 +1,8 @@
//===- DeclObjC.h - Classes for representing declarations -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -369,6 +368,14 @@
NumParams);
}
+ ParmVarDecl *getParamDecl(unsigned Idx) {
+ assert(Idx < NumParams && "Index out of bounds!");
+ return getParams()[Idx];
+ }
+ const ParmVarDecl *getParamDecl(unsigned Idx) const {
+ return const_cast<ObjCMethodDecl *>(this)->getParamDecl(Idx);
+ }
+
/// Sets the method's parameters and selector source locations.
/// If the method is implicit (not coming from source) \p SelLocs is
/// ignored.
diff --git a/linux-x64/clang/include/clang/AST/DeclOpenMP.h b/linux-x64/clang/include/clang/AST/DeclOpenMP.h
index 8540cc5..12332a2 100644
--- a/linux-x64/clang/include/clang/AST/DeclOpenMP.h
+++ b/linux-x64/clang/include/clang/AST/DeclOpenMP.h
@@ -1,9 +1,8 @@
//===- DeclOpenMP.h - Classes for representing OpenMP directives -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -207,6 +206,102 @@
}
};
+/// This represents '#pragma omp declare mapper ...' directive. Map clauses are
+/// allowed to use with this directive. The following example declares a user
+/// defined mapper for the type 'struct vec'. This example instructs the fields
+/// 'len' and 'data' should be mapped when mapping instances of 'struct vec'.
+///
+/// \code
+/// #pragma omp declare mapper(mid: struct vec v) map(v.len, v.data[0:N])
+/// \endcode
+class OMPDeclareMapperDecl final : public ValueDecl, public DeclContext {
+ friend class ASTDeclReader;
+
+ /// Clauses assoicated with this mapper declaration
+ MutableArrayRef<OMPClause *> Clauses;
+
+ /// Mapper variable, which is 'v' in the example above
+ Expr *MapperVarRef = nullptr;
+
+ /// Name of the mapper variable
+ DeclarationName VarName;
+
+ LazyDeclPtr PrevDeclInScope;
+
+ virtual void anchor();
+
+ OMPDeclareMapperDecl(Kind DK, DeclContext *DC, SourceLocation L,
+ DeclarationName Name, QualType Ty,
+ DeclarationName VarName,
+ OMPDeclareMapperDecl *PrevDeclInScope)
+ : ValueDecl(DK, DC, L, Name, Ty), DeclContext(DK), VarName(VarName),
+ PrevDeclInScope(PrevDeclInScope) {}
+
+ void setPrevDeclInScope(OMPDeclareMapperDecl *Prev) {
+ PrevDeclInScope = Prev;
+ }
+
+ /// Sets an array of clauses to this mapper declaration
+ void setClauses(ArrayRef<OMPClause *> CL);
+
+public:
+ /// Creates declare mapper node.
+ static OMPDeclareMapperDecl *Create(ASTContext &C, DeclContext *DC,
+ SourceLocation L, DeclarationName Name,
+ QualType T, DeclarationName VarName,
+ OMPDeclareMapperDecl *PrevDeclInScope);
+ /// Creates deserialized declare mapper node.
+ static OMPDeclareMapperDecl *CreateDeserialized(ASTContext &C, unsigned ID,
+ unsigned N);
+
+ /// Creates an array of clauses to this mapper declaration and intializes
+ /// them.
+ void CreateClauses(ASTContext &C, ArrayRef<OMPClause *> CL);
+
+ using clauselist_iterator = MutableArrayRef<OMPClause *>::iterator;
+ using clauselist_const_iterator = ArrayRef<const OMPClause *>::iterator;
+ using clauselist_range = llvm::iterator_range<clauselist_iterator>;
+ using clauselist_const_range =
+ llvm::iterator_range<clauselist_const_iterator>;
+
+ unsigned clauselist_size() const { return Clauses.size(); }
+ bool clauselist_empty() const { return Clauses.empty(); }
+
+ clauselist_range clauselists() {
+ return clauselist_range(clauselist_begin(), clauselist_end());
+ }
+ clauselist_const_range clauselists() const {
+ return clauselist_const_range(clauselist_begin(), clauselist_end());
+ }
+ clauselist_iterator clauselist_begin() { return Clauses.begin(); }
+ clauselist_iterator clauselist_end() { return Clauses.end(); }
+ clauselist_const_iterator clauselist_begin() const { return Clauses.begin(); }
+ clauselist_const_iterator clauselist_end() const { return Clauses.end(); }
+
+ /// Get the variable declared in the mapper
+ Expr *getMapperVarRef() { return MapperVarRef; }
+ const Expr *getMapperVarRef() const { return MapperVarRef; }
+ /// Set the variable declared in the mapper
+ void setMapperVarRef(Expr *MapperVarRefE) { MapperVarRef = MapperVarRefE; }
+
+ /// Get the name of the variable declared in the mapper
+ DeclarationName getVarName() { return VarName; }
+
+ /// Get reference to previous declare mapper construct in the same
+ /// scope with the same name.
+ OMPDeclareMapperDecl *getPrevDeclInScope();
+ const OMPDeclareMapperDecl *getPrevDeclInScope() const;
+
+ static bool classof(const Decl *D) { return classofKind(D->getKind()); }
+ static bool classofKind(Kind K) { return K == OMPDeclareMapper; }
+ static DeclContext *castToDeclContext(const OMPDeclareMapperDecl *D) {
+ return static_cast<DeclContext *>(const_cast<OMPDeclareMapperDecl *>(D));
+ }
+ static OMPDeclareMapperDecl *castFromDeclContext(const DeclContext *DC) {
+ return static_cast<OMPDeclareMapperDecl *>(const_cast<DeclContext *>(DC));
+ }
+};
+
/// Pseudo declaration for capturing expressions. Also is used for capturing of
/// non-static data members in non-static member functions.
///
diff --git a/linux-x64/clang/include/clang/AST/DeclTemplate.h b/linux-x64/clang/include/clang/AST/DeclTemplate.h
index e0ea7cb..902e096 100644
--- a/linux-x64/clang/include/clang/AST/DeclTemplate.h
+++ b/linux-x64/clang/include/clang/AST/DeclTemplate.h
@@ -1,9 +1,8 @@
//===- DeclTemplate.h - Classes for representing C++ templates --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -751,6 +750,7 @@
return getMostRecentDecl();
}
+ void anchor() override;
protected:
template <typename EntryType> struct SpecEntryTraits {
using DeclType = EntryType;
@@ -1093,6 +1093,9 @@
/// template.
ArrayRef<TemplateArgument> getInjectedTemplateArgs();
+ /// Merge \p Prev with our RedeclarableTemplateDecl::Common.
+ void mergePrevDecl(FunctionTemplateDecl *Prev);
+
/// Create a function template node.
static FunctionTemplateDecl *Create(ASTContext &C, DeclContext *DC,
SourceLocation L,
diff --git a/linux-x64/clang/include/clang/AST/DeclVisitor.h b/linux-x64/clang/include/clang/AST/DeclVisitor.h
index 520a4a1..8690cdd 100644
--- a/linux-x64/clang/include/clang/AST/DeclVisitor.h
+++ b/linux-x64/clang/include/clang/AST/DeclVisitor.h
@@ -1,9 +1,8 @@
//===- DeclVisitor.h - Visitor for Decl subclasses --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -21,15 +20,12 @@
#include "clang/AST/DeclObjC.h"
#include "clang/AST/DeclOpenMP.h"
#include "clang/AST/DeclTemplate.h"
+#include "llvm/ADT/STLExtras.h"
#include "llvm/Support/ErrorHandling.h"
namespace clang {
namespace declvisitor {
-
-template <typename T> struct make_ptr { using type = T *; };
-template <typename T> struct make_const_ptr { using type = const T *; };
-
/// A simple visitor class that helps create declaration visitors.
template<template <typename> class Ptr, typename ImplClass, typename RetTy=void>
class Base {
@@ -66,16 +62,16 @@
///
/// This class does not preserve constness of Decl pointers (see also
/// ConstDeclVisitor).
-template<typename ImplClass, typename RetTy = void>
+template <typename ImplClass, typename RetTy = void>
class DeclVisitor
- : public declvisitor::Base<declvisitor::make_ptr, ImplClass, RetTy> {};
+ : public declvisitor::Base<std::add_pointer, ImplClass, RetTy> {};
/// A simple visitor class that helps create declaration visitors.
///
/// This class preserves constness of Decl pointers (see also DeclVisitor).
-template<typename ImplClass, typename RetTy = void>
+template <typename ImplClass, typename RetTy = void>
class ConstDeclVisitor
- : public declvisitor::Base<declvisitor::make_const_ptr, ImplClass, RetTy> {};
+ : public declvisitor::Base<llvm::make_const_ptr, ImplClass, RetTy> {};
} // namespace clang
diff --git a/linux-x64/clang/include/clang/AST/DeclarationName.h b/linux-x64/clang/include/clang/AST/DeclarationName.h
index d196233..e5d3439 100644
--- a/linux-x64/clang/include/clang/AST/DeclarationName.h
+++ b/linux-x64/clang/include/clang/AST/DeclarationName.h
@@ -1,9 +1,8 @@
//===- DeclarationName.h - Representation of declaration names --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -729,9 +728,10 @@
/// getNamedTypeInfo - Returns the source type info associated to
/// the name. Assumes it is a constructor, destructor or conversion.
TypeSourceInfo *getNamedTypeInfo() const {
- assert(Name.getNameKind() == DeclarationName::CXXConstructorName ||
- Name.getNameKind() == DeclarationName::CXXDestructorName ||
- Name.getNameKind() == DeclarationName::CXXConversionFunctionName);
+ if (Name.getNameKind() != DeclarationName::CXXConstructorName &&
+ Name.getNameKind() != DeclarationName::CXXDestructorName &&
+ Name.getNameKind() != DeclarationName::CXXConversionFunctionName)
+ return nullptr;
return LocInfo.NamedType.TInfo;
}
@@ -747,7 +747,8 @@
/// getCXXOperatorNameRange - Gets the range of the operator name
/// (without the operator keyword). Assumes it is a (non-literal) operator.
SourceRange getCXXOperatorNameRange() const {
- assert(Name.getNameKind() == DeclarationName::CXXOperatorName);
+ if (Name.getNameKind() != DeclarationName::CXXOperatorName)
+ return SourceRange();
return SourceRange(
SourceLocation::getFromRawEncoding(LocInfo.CXXOperatorName.BeginOpNameLoc),
SourceLocation::getFromRawEncoding(LocInfo.CXXOperatorName.EndOpNameLoc)
@@ -766,7 +767,8 @@
/// operator name (not the operator keyword).
/// Assumes it is a literal operator.
SourceLocation getCXXLiteralOperatorNameLoc() const {
- assert(Name.getNameKind() == DeclarationName::CXXLiteralOperatorName);
+ if (Name.getNameKind() != DeclarationName::CXXLiteralOperatorName)
+ return SourceLocation();
return SourceLocation::
getFromRawEncoding(LocInfo.CXXLiteralOperatorName.OpNameLoc);
}
@@ -859,9 +861,6 @@
}
};
-template <>
-struct isPodLike<clang::DeclarationName> { static const bool value = true; };
-
} // namespace llvm
#endif // LLVM_CLANG_AST_DECLARATIONNAME_H
diff --git a/linux-x64/clang/include/clang/AST/DependentDiagnostic.h b/linux-x64/clang/include/clang/AST/DependentDiagnostic.h
index c21ef79..0a98dec 100644
--- a/linux-x64/clang/include/clang/AST/DependentDiagnostic.h
+++ b/linux-x64/clang/include/clang/AST/DependentDiagnostic.h
@@ -1,9 +1,8 @@
//==- DependentDiagnostic.h - Dependently-generated diagnostics --*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/EvaluatedExprVisitor.h b/linux-x64/clang/include/clang/AST/EvaluatedExprVisitor.h
index 1aec5ae..2f6c314 100644
--- a/linux-x64/clang/include/clang/AST/EvaluatedExprVisitor.h
+++ b/linux-x64/clang/include/clang/AST/EvaluatedExprVisitor.h
@@ -1,9 +1,8 @@
//===--- EvaluatedExprVisitor.h - Evaluated expression visitor --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -19,6 +18,7 @@
#include "clang/AST/Expr.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/StmtVisitor.h"
+#include "llvm/ADT/STLExtras.h"
namespace clang {
@@ -107,23 +107,22 @@
};
/// EvaluatedExprVisitor - This class visits 'Expr *'s
-template<typename ImplClass>
+template <typename ImplClass>
class EvaluatedExprVisitor
- : public EvaluatedExprVisitorBase<make_ptr, ImplClass> {
+ : public EvaluatedExprVisitorBase<std::add_pointer, ImplClass> {
public:
- explicit EvaluatedExprVisitor(const ASTContext &Context) :
- EvaluatedExprVisitorBase<make_ptr, ImplClass>(Context) { }
+ explicit EvaluatedExprVisitor(const ASTContext &Context)
+ : EvaluatedExprVisitorBase<std::add_pointer, ImplClass>(Context) {}
};
/// ConstEvaluatedExprVisitor - This class visits 'const Expr *'s.
-template<typename ImplClass>
+template <typename ImplClass>
class ConstEvaluatedExprVisitor
- : public EvaluatedExprVisitorBase<make_const_ptr, ImplClass> {
+ : public EvaluatedExprVisitorBase<llvm::make_const_ptr, ImplClass> {
public:
- explicit ConstEvaluatedExprVisitor(const ASTContext &Context) :
- EvaluatedExprVisitorBase<make_const_ptr, ImplClass>(Context) { }
+ explicit ConstEvaluatedExprVisitor(const ASTContext &Context)
+ : EvaluatedExprVisitorBase<llvm::make_const_ptr, ImplClass>(Context) {}
};
-
}
#endif // LLVM_CLANG_AST_EVALUATEDEXPRVISITOR_H
diff --git a/linux-x64/clang/include/clang/AST/Expr.h b/linux-x64/clang/include/clang/AST/Expr.h
index 8bc14e1..daf33de 100644
--- a/linux-x64/clang/include/clang/AST/Expr.h
+++ b/linux-x64/clang/include/clang/AST/Expr.h
@@ -1,9 +1,8 @@
//===--- Expr.h - Classes for representing expressions ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -23,15 +22,19 @@
#include "clang/AST/TemplateBase.h"
#include "clang/AST/Type.h"
#include "clang/Basic/CharInfo.h"
+#include "clang/Basic/FixedPoint.h"
#include "clang/Basic/LangOptions.h"
#include "clang/Basic/SyncScope.h"
#include "clang/Basic/TypeTraits.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/APSInt.h"
+#include "llvm/ADT/iterator.h"
+#include "llvm/ADT/iterator_range.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/AtomicOrdering.h"
#include "llvm/Support/Compiler.h"
+#include "llvm/Support/TrailingObjects.h"
namespace clang {
class APValue;
@@ -582,7 +585,8 @@
/// this function returns true, it returns the folded constant in Result. If
/// the expression is a glvalue, an lvalue-to-rvalue conversion will be
/// applied.
- bool EvaluateAsRValue(EvalResult &Result, const ASTContext &Ctx) const;
+ bool EvaluateAsRValue(EvalResult &Result, const ASTContext &Ctx,
+ bool InConstantContext = false) const;
/// EvaluateAsBooleanCondition - Return true if this is a constant
/// which we can fold and convert to a boolean condition using
@@ -599,7 +603,7 @@
/// EvaluateAsInt - Return true if this is a constant which we can fold and
/// convert to an integer, using any crazy technique that we want to.
- bool EvaluateAsInt(llvm::APSInt &Result, const ASTContext &Ctx,
+ bool EvaluateAsInt(EvalResult &Result, const ASTContext &Ctx,
SideEffectsKind AllowSideEffects = SE_NoSideEffects) const;
/// EvaluateAsFloat - Return true if this is a constant which we can fold and
@@ -609,6 +613,12 @@
EvaluateAsFloat(llvm::APFloat &Result, const ASTContext &Ctx,
SideEffectsKind AllowSideEffects = SE_NoSideEffects) const;
+ /// EvaluateAsFloat - Return true if this is a constant which we can fold and
+ /// convert to a fixed point value.
+ bool EvaluateAsFixedPoint(
+ EvalResult &Result, const ASTContext &Ctx,
+ SideEffectsKind AllowSideEffects = SE_NoSideEffects) const;
+
/// isEvaluatable - Call EvaluateAsRValue to see if this expression can be
/// constant folded without side-effects, but discard the result.
bool isEvaluatable(const ASTContext &Ctx,
@@ -631,8 +641,13 @@
/// EvaluateKnownConstInt - Call EvaluateAsRValue and return the folded
/// integer. This must be called on an expression that constant folds to an
/// integer.
- llvm::APSInt EvaluateKnownConstInt(const ASTContext &Ctx,
- SmallVectorImpl<PartialDiagnosticAt> *Diag = nullptr) const;
+ llvm::APSInt EvaluateKnownConstInt(
+ const ASTContext &Ctx,
+ SmallVectorImpl<PartialDiagnosticAt> *Diag = nullptr) const;
+
+ llvm::APSInt EvaluateKnownConstIntCheckOverflow(
+ const ASTContext &Ctx,
+ SmallVectorImpl<PartialDiagnosticAt> *Diag = nullptr) const;
void EvaluateForOverflow(const ASTContext &Ctx) const;
@@ -731,67 +746,110 @@
/// member expression.
static QualType findBoundMemberType(const Expr *expr);
- /// IgnoreImpCasts - Skip past any implicit casts which might
- /// surround this expression. Only skips ImplicitCastExprs.
+ /// Skip past any implicit casts which might surround this expression until
+ /// reaching a fixed point. Skips:
+ /// * ImplicitCastExpr
+ /// * FullExpr
Expr *IgnoreImpCasts() LLVM_READONLY;
-
- /// IgnoreImplicit - Skip past any implicit AST nodes which might
- /// surround this expression.
- Expr *IgnoreImplicit() LLVM_READONLY {
- return cast<Expr>(Stmt::IgnoreImplicit());
+ const Expr *IgnoreImpCasts() const {
+ return const_cast<Expr *>(this)->IgnoreImpCasts();
}
- const Expr *IgnoreImplicit() const LLVM_READONLY {
- return const_cast<Expr*>(this)->IgnoreImplicit();
- }
-
- /// IgnoreParens - Ignore parentheses. If this Expr is a ParenExpr, return
- /// its subexpression. If that subexpression is also a ParenExpr,
- /// then this method recursively returns its subexpression, and so forth.
- /// Otherwise, the method returns the current Expr.
- Expr *IgnoreParens() LLVM_READONLY;
-
- /// IgnoreParenCasts - Ignore parentheses and casts. Strip off any ParenExpr
- /// or CastExprs, returning their operand.
- Expr *IgnoreParenCasts() LLVM_READONLY;
-
- /// Ignore casts. Strip off any CastExprs, returning their operand.
+ /// Skip past any casts which might surround this expression until reaching
+ /// a fixed point. Skips:
+ /// * CastExpr
+ /// * FullExpr
+ /// * MaterializeTemporaryExpr
+ /// * SubstNonTypeTemplateParmExpr
Expr *IgnoreCasts() LLVM_READONLY;
+ const Expr *IgnoreCasts() const {
+ return const_cast<Expr *>(this)->IgnoreCasts();
+ }
- /// IgnoreParenImpCasts - Ignore parentheses and implicit casts. Strip off
- /// any ParenExpr or ImplicitCastExprs, returning their operand.
+ /// Skip past any implicit AST nodes which might surround this expression
+ /// until reaching a fixed point. Skips:
+ /// * What IgnoreImpCasts() skips
+ /// * MaterializeTemporaryExpr
+ /// * CXXBindTemporaryExpr
+ Expr *IgnoreImplicit() LLVM_READONLY;
+ const Expr *IgnoreImplicit() const {
+ return const_cast<Expr *>(this)->IgnoreImplicit();
+ }
+
+ /// Skip past any parentheses which might surround this expression until
+ /// reaching a fixed point. Skips:
+ /// * ParenExpr
+ /// * UnaryOperator if `UO_Extension`
+ /// * GenericSelectionExpr if `!isResultDependent()`
+ /// * ChooseExpr if `!isConditionDependent()`
+ /// * ConstantExpr
+ Expr *IgnoreParens() LLVM_READONLY;
+ const Expr *IgnoreParens() const {
+ return const_cast<Expr *>(this)->IgnoreParens();
+ }
+
+ /// Skip past any parentheses and implicit casts which might surround this
+ /// expression until reaching a fixed point.
+ /// FIXME: IgnoreParenImpCasts really ought to be equivalent to
+ /// IgnoreParens() + IgnoreImpCasts() until reaching a fixed point. However
+ /// this is currently not the case. Instead IgnoreParenImpCasts() skips:
+ /// * What IgnoreParens() skips
+ /// * ImplicitCastExpr
+ /// * MaterializeTemporaryExpr
+ /// * SubstNonTypeTemplateParmExpr
Expr *IgnoreParenImpCasts() LLVM_READONLY;
+ const Expr *IgnoreParenImpCasts() const {
+ return const_cast<Expr *>(this)->IgnoreParenImpCasts();
+ }
- /// IgnoreConversionOperator - Ignore conversion operator. If this Expr is a
- /// call to a conversion operator, return the argument.
+ /// Skip past any parentheses and casts which might surround this expression
+ /// until reaching a fixed point. Skips:
+ /// * What IgnoreParens() skips
+ /// * What IgnoreCasts() skips
+ Expr *IgnoreParenCasts() LLVM_READONLY;
+ const Expr *IgnoreParenCasts() const {
+ return const_cast<Expr *>(this)->IgnoreParenCasts();
+ }
+
+ /// Skip conversion operators. If this Expr is a call to a conversion
+ /// operator, return the argument.
Expr *IgnoreConversionOperator() LLVM_READONLY;
-
- const Expr *IgnoreConversionOperator() const LLVM_READONLY {
- return const_cast<Expr*>(this)->IgnoreConversionOperator();
+ const Expr *IgnoreConversionOperator() const {
+ return const_cast<Expr *>(this)->IgnoreConversionOperator();
}
- const Expr *IgnoreParenImpCasts() const LLVM_READONLY {
- return const_cast<Expr*>(this)->IgnoreParenImpCasts();
- }
-
- /// Ignore parentheses and lvalue casts. Strip off any ParenExpr and
- /// CastExprs that represent lvalue casts, returning their operand.
+ /// Skip past any parentheses and lvalue casts which might surround this
+ /// expression until reaching a fixed point. Skips:
+ /// * What IgnoreParens() skips
+ /// * What IgnoreCasts() skips, except that only lvalue-to-rvalue
+ /// casts are skipped
+ /// FIXME: This is intended purely as a temporary workaround for code
+ /// that hasn't yet been rewritten to do the right thing about those
+ /// casts, and may disappear along with the last internal use.
Expr *IgnoreParenLValueCasts() LLVM_READONLY;
-
- const Expr *IgnoreParenLValueCasts() const LLVM_READONLY {
- return const_cast<Expr*>(this)->IgnoreParenLValueCasts();
+ const Expr *IgnoreParenLValueCasts() const {
+ return const_cast<Expr *>(this)->IgnoreParenLValueCasts();
}
- /// IgnoreParenNoopCasts - Ignore parentheses and casts that do not change the
- /// value (including ptr->int casts of the same size). Strip off any
- /// ParenExpr or CastExprs, returning their operand.
- Expr *IgnoreParenNoopCasts(ASTContext &Ctx) LLVM_READONLY;
+ /// Skip past any parenthese and casts which do not change the value
+ /// (including ptr->int casts of the same size) until reaching a fixed point.
+ /// Skips:
+ /// * What IgnoreParens() skips
+ /// * CastExpr which do not change the value
+ /// * SubstNonTypeTemplateParmExpr
+ Expr *IgnoreParenNoopCasts(const ASTContext &Ctx) LLVM_READONLY;
+ const Expr *IgnoreParenNoopCasts(const ASTContext &Ctx) const {
+ return const_cast<Expr *>(this)->IgnoreParenNoopCasts(Ctx);
+ }
- /// Ignore parentheses and derived-to-base casts.
+ /// Skip past any parentheses and derived-to-base casts until reaching a
+ /// fixed point. Skips:
+ /// * What IgnoreParens() skips
+ /// * CastExpr which represent a derived-to-base cast (CK_DerivedToBase,
+ /// CK_UncheckedDerivedToBase and CK_NoOp)
Expr *ignoreParenBaseCasts() LLVM_READONLY;
-
- const Expr *ignoreParenBaseCasts() const LLVM_READONLY {
- return const_cast<Expr*>(this)->ignoreParenBaseCasts();
+ const Expr *ignoreParenBaseCasts() const {
+ return const_cast<Expr *>(this)->ignoreParenBaseCasts();
}
/// Determine whether this expression is a default function argument.
@@ -810,24 +868,6 @@
/// Whether this expression is an implicit reference to 'this' in C++.
bool isImplicitCXXThis() const;
- const Expr *IgnoreImpCasts() const LLVM_READONLY {
- return const_cast<Expr*>(this)->IgnoreImpCasts();
- }
- const Expr *IgnoreParens() const LLVM_READONLY {
- return const_cast<Expr*>(this)->IgnoreParens();
- }
- const Expr *IgnoreParenCasts() const LLVM_READONLY {
- return const_cast<Expr*>(this)->IgnoreParenCasts();
- }
- /// Strip off casts, but keep parentheses.
- const Expr *IgnoreCasts() const LLVM_READONLY {
- return const_cast<Expr*>(this)->IgnoreCasts();
- }
-
- const Expr *IgnoreParenNoopCasts(ASTContext &Ctx) const LLVM_READONLY {
- return const_cast<Expr*>(this)->IgnoreParenNoopCasts(Ctx);
- }
-
static bool hasAnyTypeDependentArguments(ArrayRef<Expr *> Exprs);
/// For an expression of class type or pointer to class type,
@@ -863,6 +903,70 @@
};
//===----------------------------------------------------------------------===//
+// Wrapper Expressions.
+//===----------------------------------------------------------------------===//
+
+/// FullExpr - Represents a "full-expression" node.
+class FullExpr : public Expr {
+protected:
+ Stmt *SubExpr;
+
+ FullExpr(StmtClass SC, Expr *subexpr)
+ : Expr(SC, subexpr->getType(),
+ subexpr->getValueKind(), subexpr->getObjectKind(),
+ subexpr->isTypeDependent(), subexpr->isValueDependent(),
+ subexpr->isInstantiationDependent(),
+ subexpr->containsUnexpandedParameterPack()), SubExpr(subexpr) {}
+ FullExpr(StmtClass SC, EmptyShell Empty)
+ : Expr(SC, Empty) {}
+public:
+ const Expr *getSubExpr() const { return cast<Expr>(SubExpr); }
+ Expr *getSubExpr() { return cast<Expr>(SubExpr); }
+
+ /// As with any mutator of the AST, be very careful when modifying an
+ /// existing AST to preserve its invariants.
+ void setSubExpr(Expr *E) { SubExpr = E; }
+
+ static bool classof(const Stmt *T) {
+ return T->getStmtClass() >= firstFullExprConstant &&
+ T->getStmtClass() <= lastFullExprConstant;
+ }
+};
+
+/// ConstantExpr - An expression that occurs in a constant context.
+class ConstantExpr : public FullExpr {
+ ConstantExpr(Expr *subexpr)
+ : FullExpr(ConstantExprClass, subexpr) {}
+
+public:
+ static ConstantExpr *Create(const ASTContext &Context, Expr *E) {
+ assert(!isa<ConstantExpr>(E));
+ return new (Context) ConstantExpr(E);
+ }
+
+ /// Build an empty constant expression wrapper.
+ explicit ConstantExpr(EmptyShell Empty)
+ : FullExpr(ConstantExprClass, Empty) {}
+
+ SourceLocation getBeginLoc() const LLVM_READONLY {
+ return SubExpr->getBeginLoc();
+ }
+ SourceLocation getEndLoc() const LLVM_READONLY {
+ return SubExpr->getEndLoc();
+ }
+
+ static bool classof(const Stmt *T) {
+ return T->getStmtClass() == ConstantExprClass;
+ }
+
+ // Iterators
+ child_range children() { return child_range(&SubExpr, &SubExpr+1); }
+ const_child_range children() const {
+ return const_child_range(&SubExpr, &SubExpr + 1);
+ }
+};
+
+//===----------------------------------------------------------------------===//
// Primary Expressions.
//===----------------------------------------------------------------------===//
@@ -874,7 +978,6 @@
class OpaqueValueExpr : public Expr {
friend class ASTStmtReader;
Expr *SourceExpr;
- SourceLocation Loc;
public:
OpaqueValueExpr(SourceLocation Loc, QualType T, ExprValueKind VK,
@@ -888,8 +991,9 @@
T->isInstantiationDependentType() ||
(SourceExpr && SourceExpr->isInstantiationDependent()),
false),
- SourceExpr(SourceExpr), Loc(Loc) {
+ SourceExpr(SourceExpr) {
setIsUnique(false);
+ OpaqueValueExprBits.Loc = Loc;
}
/// Given an expression which invokes a copy constructor --- i.e. a
@@ -898,20 +1002,19 @@
static const OpaqueValueExpr *findInCopyConstruct(const Expr *expr);
explicit OpaqueValueExpr(EmptyShell Empty)
- : Expr(OpaqueValueExprClass, Empty) { }
+ : Expr(OpaqueValueExprClass, Empty) {}
/// Retrieve the location of this expression.
- SourceLocation getLocation() const { return Loc; }
+ SourceLocation getLocation() const { return OpaqueValueExprBits.Loc; }
SourceLocation getBeginLoc() const LLVM_READONLY {
- return SourceExpr ? SourceExpr->getBeginLoc() : Loc;
+ return SourceExpr ? SourceExpr->getBeginLoc() : getLocation();
}
SourceLocation getEndLoc() const LLVM_READONLY {
- return SourceExpr ? SourceExpr->getEndLoc() : Loc;
+ return SourceExpr ? SourceExpr->getEndLoc() : getLocation();
}
SourceLocation getExprLoc() const LLVM_READONLY {
- if (SourceExpr) return SourceExpr->getExprLoc();
- return Loc;
+ return SourceExpr ? SourceExpr->getExprLoc() : getLocation();
}
child_range children() {
@@ -973,63 +1076,52 @@
private llvm::TrailingObjects<DeclRefExpr, NestedNameSpecifierLoc,
NamedDecl *, ASTTemplateKWAndArgsInfo,
TemplateArgumentLoc> {
+ friend class ASTStmtReader;
+ friend class ASTStmtWriter;
+ friend TrailingObjects;
+
/// The declaration that we are referencing.
ValueDecl *D;
- /// The location of the declaration name itself.
- SourceLocation Loc;
-
/// Provides source/type location info for the declaration name
/// embedded in D.
DeclarationNameLoc DNLoc;
size_t numTrailingObjects(OverloadToken<NestedNameSpecifierLoc>) const {
- return hasQualifier() ? 1 : 0;
+ return hasQualifier();
}
size_t numTrailingObjects(OverloadToken<NamedDecl *>) const {
- return hasFoundDecl() ? 1 : 0;
+ return hasFoundDecl();
}
size_t numTrailingObjects(OverloadToken<ASTTemplateKWAndArgsInfo>) const {
- return hasTemplateKWAndArgsInfo() ? 1 : 0;
+ return hasTemplateKWAndArgsInfo();
}
/// Test whether there is a distinct FoundDecl attached to the end of
/// this DRE.
bool hasFoundDecl() const { return DeclRefExprBits.HasFoundDecl; }
- DeclRefExpr(const ASTContext &Ctx,
- NestedNameSpecifierLoc QualifierLoc,
- SourceLocation TemplateKWLoc,
- ValueDecl *D, bool RefersToEnlosingVariableOrCapture,
- const DeclarationNameInfo &NameInfo,
- NamedDecl *FoundD,
- const TemplateArgumentListInfo *TemplateArgs,
- QualType T, ExprValueKind VK);
+ DeclRefExpr(const ASTContext &Ctx, NestedNameSpecifierLoc QualifierLoc,
+ SourceLocation TemplateKWLoc, ValueDecl *D,
+ bool RefersToEnlosingVariableOrCapture,
+ const DeclarationNameInfo &NameInfo, NamedDecl *FoundD,
+ const TemplateArgumentListInfo *TemplateArgs, QualType T,
+ ExprValueKind VK);
/// Construct an empty declaration reference expression.
- explicit DeclRefExpr(EmptyShell Empty)
- : Expr(DeclRefExprClass, Empty) { }
+ explicit DeclRefExpr(EmptyShell Empty) : Expr(DeclRefExprClass, Empty) {}
/// Computes the type- and value-dependence flags for this
/// declaration reference expression.
- void computeDependence(const ASTContext &C);
+ void computeDependence(const ASTContext &Ctx);
public:
- DeclRefExpr(ValueDecl *D, bool RefersToEnclosingVariableOrCapture, QualType T,
+ DeclRefExpr(const ASTContext &Ctx, ValueDecl *D,
+ bool RefersToEnclosingVariableOrCapture, QualType T,
ExprValueKind VK, SourceLocation L,
- const DeclarationNameLoc &LocInfo = DeclarationNameLoc())
- : Expr(DeclRefExprClass, T, VK, OK_Ordinary, false, false, false, false),
- D(D), Loc(L), DNLoc(LocInfo) {
- DeclRefExprBits.HasQualifier = 0;
- DeclRefExprBits.HasTemplateKWAndArgsInfo = 0;
- DeclRefExprBits.HasFoundDecl = 0;
- DeclRefExprBits.HadMultipleCandidates = 0;
- DeclRefExprBits.RefersToEnclosingVariableOrCapture =
- RefersToEnclosingVariableOrCapture;
- computeDependence(D->getASTContext());
- }
+ const DeclarationNameLoc &LocInfo = DeclarationNameLoc());
static DeclRefExpr *
Create(const ASTContext &Context, NestedNameSpecifierLoc QualifierLoc,
@@ -1047,8 +1139,7 @@
const TemplateArgumentListInfo *TemplateArgs = nullptr);
/// Construct an empty declaration reference expression.
- static DeclRefExpr *CreateEmpty(const ASTContext &Context,
- bool HasQualifier,
+ static DeclRefExpr *CreateEmpty(const ASTContext &Context, bool HasQualifier,
bool HasFoundDecl,
bool HasTemplateKWAndArgsInfo,
unsigned NumTemplateArgs);
@@ -1058,11 +1149,11 @@
void setDecl(ValueDecl *NewD) { D = NewD; }
DeclarationNameInfo getNameInfo() const {
- return DeclarationNameInfo(getDecl()->getDeclName(), Loc, DNLoc);
+ return DeclarationNameInfo(getDecl()->getDeclName(), getLocation(), DNLoc);
}
- SourceLocation getLocation() const { return Loc; }
- void setLocation(SourceLocation L) { Loc = L; }
+ SourceLocation getLocation() const { return DeclRefExprBits.Loc; }
+ void setLocation(SourceLocation L) { DeclRefExprBits.Loc = L; }
SourceLocation getBeginLoc() const LLVM_READONLY;
SourceLocation getEndLoc() const LLVM_READONLY;
@@ -1107,21 +1198,24 @@
/// Retrieve the location of the template keyword preceding
/// this name, if any.
SourceLocation getTemplateKeywordLoc() const {
- if (!hasTemplateKWAndArgsInfo()) return SourceLocation();
+ if (!hasTemplateKWAndArgsInfo())
+ return SourceLocation();
return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->TemplateKWLoc;
}
/// Retrieve the location of the left angle bracket starting the
/// explicit template argument list following the name, if any.
SourceLocation getLAngleLoc() const {
- if (!hasTemplateKWAndArgsInfo()) return SourceLocation();
+ if (!hasTemplateKWAndArgsInfo())
+ return SourceLocation();
return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->LAngleLoc;
}
/// Retrieve the location of the right angle bracket ending the
/// explicit template argument list following the name, if any.
SourceLocation getRAngleLoc() const {
- if (!hasTemplateKWAndArgsInfo()) return SourceLocation();
+ if (!hasTemplateKWAndArgsInfo())
+ return SourceLocation();
return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->RAngleLoc;
}
@@ -1146,7 +1240,6 @@
const TemplateArgumentLoc *getTemplateArgs() const {
if (!hasExplicitTemplateArgs())
return nullptr;
-
return getTrailingObjects<TemplateArgumentLoc>();
}
@@ -1155,7 +1248,6 @@
unsigned getNumTemplateArgs() const {
if (!hasExplicitTemplateArgs())
return 0;
-
return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->NumTemplateArgs;
}
@@ -1193,68 +1285,6 @@
const_child_range children() const {
return const_child_range(const_child_iterator(), const_child_iterator());
}
-
- friend TrailingObjects;
- friend class ASTStmtReader;
- friend class ASTStmtWriter;
-};
-
-/// [C99 6.4.2.2] - A predefined identifier such as __func__.
-class PredefinedExpr : public Expr {
-public:
- enum IdentType {
- Func,
- Function,
- LFunction, // Same as Function, but as wide string.
- FuncDName,
- FuncSig,
- LFuncSig, // Same as FuncSig, but as as wide string
- PrettyFunction,
- /// The same as PrettyFunction, except that the
- /// 'virtual' keyword is omitted for virtual member functions.
- PrettyFunctionNoVirtual
- };
-
-private:
- SourceLocation Loc;
- IdentType Type;
- Stmt *FnName;
-
-public:
- PredefinedExpr(SourceLocation L, QualType FNTy, IdentType IT,
- StringLiteral *SL);
-
- /// Construct an empty predefined expression.
- explicit PredefinedExpr(EmptyShell Empty)
- : Expr(PredefinedExprClass, Empty), Loc(), Type(Func), FnName(nullptr) {}
-
- IdentType getIdentType() const { return Type; }
-
- SourceLocation getLocation() const { return Loc; }
- void setLocation(SourceLocation L) { Loc = L; }
-
- StringLiteral *getFunctionName();
- const StringLiteral *getFunctionName() const {
- return const_cast<PredefinedExpr *>(this)->getFunctionName();
- }
-
- static StringRef getIdentTypeName(IdentType IT);
- static std::string ComputeName(IdentType IT, const Decl *CurrentDecl);
-
- SourceLocation getBeginLoc() const LLVM_READONLY { return Loc; }
- SourceLocation getEndLoc() const LLVM_READONLY { return Loc; }
-
- static bool classof(const Stmt *T) {
- return T->getStmtClass() == PredefinedExprClass;
- }
-
- // Iterators
- child_range children() { return child_range(&FnName, &FnName + 1); }
- const_child_range children() const {
- return const_child_range(&FnName, &FnName + 1);
- }
-
- friend class ASTStmtReader;
};
/// Used by IntegerLiteral/FloatingLiteral to store the numeric without
@@ -1550,14 +1580,15 @@
};
/// StringLiteral - This represents a string literal expression, e.g. "foo"
-/// or L"bar" (wide strings). The actual string is returned by getBytes()
-/// is NOT null-terminated, and the length of the string is determined by
-/// calling getByteLength(). The C type for a string is always a
-/// ConstantArrayType. In C++, the char type is const qualified, in C it is
-/// not.
+/// or L"bar" (wide strings). The actual string data can be obtained with
+/// getBytes() and is NOT null-terminated. The length of the string data is
+/// determined by calling getByteLength().
+///
+/// The C type for a string is always a ConstantArrayType. In C++, the char
+/// type is const qualified, in C it is not.
///
/// Note that strings in C can be formed by concatenation of multiple string
-/// literal pptokens in translation phase #6. This keeps track of the locations
+/// literal pptokens in translation phase #6. This keeps track of the locations
/// of each of these pieces.
///
/// Strings in C can also be truncated and extended by assigning into arrays,
@@ -1565,131 +1596,156 @@
/// char X[2] = "foobar";
/// In this case, getByteLength() will return 6, but the string literal will
/// have type "char[2]".
-class StringLiteral : public Expr {
+class StringLiteral final
+ : public Expr,
+ private llvm::TrailingObjects<StringLiteral, unsigned, SourceLocation,
+ char> {
+ friend class ASTStmtReader;
+ friend TrailingObjects;
+
+ /// StringLiteral is followed by several trailing objects. They are in order:
+ ///
+ /// * A single unsigned storing the length in characters of this string. The
+ /// length in bytes is this length times the width of a single character.
+ /// Always present and stored as a trailing objects because storing it in
+ /// StringLiteral would increase the size of StringLiteral by sizeof(void *)
+ /// due to alignment requirements. If you add some data to StringLiteral,
+ /// consider moving it inside StringLiteral.
+ ///
+ /// * An array of getNumConcatenated() SourceLocation, one for each of the
+ /// token this string is made of.
+ ///
+ /// * An array of getByteLength() char used to store the string data.
+
public:
- enum StringKind {
- Ascii,
- Wide,
- UTF8,
- UTF16,
- UTF32
- };
+ enum StringKind { Ascii, Wide, UTF8, UTF16, UTF32 };
private:
- friend class ASTStmtReader;
+ unsigned numTrailingObjects(OverloadToken<unsigned>) const { return 1; }
+ unsigned numTrailingObjects(OverloadToken<SourceLocation>) const {
+ return getNumConcatenated();
+ }
- union {
- const char *asChar;
- const uint16_t *asUInt16;
- const uint32_t *asUInt32;
- } StrData;
- unsigned Length;
- unsigned CharByteWidth : 4;
- unsigned Kind : 3;
- unsigned IsPascal : 1;
- unsigned NumConcatenated;
- SourceLocation TokLocs[1];
+ unsigned numTrailingObjects(OverloadToken<char>) const {
+ return getByteLength();
+ }
- StringLiteral(QualType Ty) :
- Expr(StringLiteralClass, Ty, VK_LValue, OK_Ordinary, false, false, false,
- false) {}
+ char *getStrDataAsChar() { return getTrailingObjects<char>(); }
+ const char *getStrDataAsChar() const { return getTrailingObjects<char>(); }
- static int mapCharByteWidth(TargetInfo const &target,StringKind k);
+ const uint16_t *getStrDataAsUInt16() const {
+ return reinterpret_cast<const uint16_t *>(getTrailingObjects<char>());
+ }
+
+ const uint32_t *getStrDataAsUInt32() const {
+ return reinterpret_cast<const uint32_t *>(getTrailingObjects<char>());
+ }
+
+ /// Build a string literal.
+ StringLiteral(const ASTContext &Ctx, StringRef Str, StringKind Kind,
+ bool Pascal, QualType Ty, const SourceLocation *Loc,
+ unsigned NumConcatenated);
+
+ /// Build an empty string literal.
+ StringLiteral(EmptyShell Empty, unsigned NumConcatenated, unsigned Length,
+ unsigned CharByteWidth);
+
+ /// Map a target and string kind to the appropriate character width.
+ static unsigned mapCharByteWidth(TargetInfo const &Target, StringKind SK);
+
+ /// Set one of the string literal token.
+ void setStrTokenLoc(unsigned TokNum, SourceLocation L) {
+ assert(TokNum < getNumConcatenated() && "Invalid tok number");
+ getTrailingObjects<SourceLocation>()[TokNum] = L;
+ }
public:
/// This is the "fully general" constructor that allows representation of
/// strings formed from multiple concatenated tokens.
- static StringLiteral *Create(const ASTContext &C, StringRef Str,
+ static StringLiteral *Create(const ASTContext &Ctx, StringRef Str,
StringKind Kind, bool Pascal, QualType Ty,
- const SourceLocation *Loc, unsigned NumStrs);
+ const SourceLocation *Loc,
+ unsigned NumConcatenated);
/// Simple constructor for string literals made from one token.
- static StringLiteral *Create(const ASTContext &C, StringRef Str,
+ static StringLiteral *Create(const ASTContext &Ctx, StringRef Str,
StringKind Kind, bool Pascal, QualType Ty,
SourceLocation Loc) {
- return Create(C, Str, Kind, Pascal, Ty, &Loc, 1);
+ return Create(Ctx, Str, Kind, Pascal, Ty, &Loc, 1);
}
/// Construct an empty string literal.
- static StringLiteral *CreateEmpty(const ASTContext &C, unsigned NumStrs);
+ static StringLiteral *CreateEmpty(const ASTContext &Ctx,
+ unsigned NumConcatenated, unsigned Length,
+ unsigned CharByteWidth);
StringRef getString() const {
- assert(CharByteWidth==1
- && "This function is used in places that assume strings use char");
- return StringRef(StrData.asChar, getByteLength());
+ assert(getCharByteWidth() == 1 &&
+ "This function is used in places that assume strings use char");
+ return StringRef(getStrDataAsChar(), getByteLength());
}
/// Allow access to clients that need the byte representation, such as
/// ASTWriterStmt::VisitStringLiteral().
StringRef getBytes() const {
// FIXME: StringRef may not be the right type to use as a result for this.
- if (CharByteWidth == 1)
- return StringRef(StrData.asChar, getByteLength());
- if (CharByteWidth == 4)
- return StringRef(reinterpret_cast<const char*>(StrData.asUInt32),
- getByteLength());
- assert(CharByteWidth == 2 && "unsupported CharByteWidth");
- return StringRef(reinterpret_cast<const char*>(StrData.asUInt16),
- getByteLength());
+ return StringRef(getStrDataAsChar(), getByteLength());
}
void outputString(raw_ostream &OS) const;
uint32_t getCodeUnit(size_t i) const {
- assert(i < Length && "out of bounds access");
- if (CharByteWidth == 1)
- return static_cast<unsigned char>(StrData.asChar[i]);
- if (CharByteWidth == 4)
- return StrData.asUInt32[i];
- assert(CharByteWidth == 2 && "unsupported CharByteWidth");
- return StrData.asUInt16[i];
+ assert(i < getLength() && "out of bounds access");
+ switch (getCharByteWidth()) {
+ case 1:
+ return static_cast<unsigned char>(getStrDataAsChar()[i]);
+ case 2:
+ return getStrDataAsUInt16()[i];
+ case 4:
+ return getStrDataAsUInt32()[i];
+ }
+ llvm_unreachable("Unsupported character width!");
}
- unsigned getByteLength() const { return CharByteWidth*Length; }
- unsigned getLength() const { return Length; }
- unsigned getCharByteWidth() const { return CharByteWidth; }
+ unsigned getByteLength() const { return getCharByteWidth() * getLength(); }
+ unsigned getLength() const { return *getTrailingObjects<unsigned>(); }
+ unsigned getCharByteWidth() const { return StringLiteralBits.CharByteWidth; }
- /// Sets the string data to the given string data.
- void setString(const ASTContext &C, StringRef Str,
- StringKind Kind, bool IsPascal);
+ StringKind getKind() const {
+ return static_cast<StringKind>(StringLiteralBits.Kind);
+ }
- StringKind getKind() const { return static_cast<StringKind>(Kind); }
-
-
- bool isAscii() const { return Kind == Ascii; }
- bool isWide() const { return Kind == Wide; }
- bool isUTF8() const { return Kind == UTF8; }
- bool isUTF16() const { return Kind == UTF16; }
- bool isUTF32() const { return Kind == UTF32; }
- bool isPascal() const { return IsPascal; }
+ bool isAscii() const { return getKind() == Ascii; }
+ bool isWide() const { return getKind() == Wide; }
+ bool isUTF8() const { return getKind() == UTF8; }
+ bool isUTF16() const { return getKind() == UTF16; }
+ bool isUTF32() const { return getKind() == UTF32; }
+ bool isPascal() const { return StringLiteralBits.IsPascal; }
bool containsNonAscii() const {
- StringRef Str = getString();
- for (unsigned i = 0, e = Str.size(); i != e; ++i)
- if (!isASCII(Str[i]))
+ for (auto c : getString())
+ if (!isASCII(c))
return true;
return false;
}
bool containsNonAsciiOrNull() const {
- StringRef Str = getString();
- for (unsigned i = 0, e = Str.size(); i != e; ++i)
- if (!isASCII(Str[i]) || !Str[i])
+ for (auto c : getString())
+ if (!isASCII(c) || !c)
return true;
return false;
}
/// getNumConcatenated - Get the number of string literal tokens that were
/// concatenated in translation phase #6 to form this string literal.
- unsigned getNumConcatenated() const { return NumConcatenated; }
-
- SourceLocation getStrTokenLoc(unsigned TokNum) const {
- assert(TokNum < NumConcatenated && "Invalid tok number");
- return TokLocs[TokNum];
+ unsigned getNumConcatenated() const {
+ return StringLiteralBits.NumConcatenated;
}
- void setStrTokenLoc(unsigned TokNum, SourceLocation L) {
- assert(TokNum < NumConcatenated && "Invalid tok number");
- TokLocs[TokNum] = L;
+
+ /// Get one of the string literal token.
+ SourceLocation getStrTokenLoc(unsigned TokNum) const {
+ assert(TokNum < getNumConcatenated() && "Invalid tok number");
+ return getTrailingObjects<SourceLocation>()[TokNum];
}
/// getLocationOfByte - Return a source location that points to the specified
@@ -1706,14 +1762,18 @@
unsigned *StartTokenByteOffset = nullptr) const;
typedef const SourceLocation *tokloc_iterator;
- tokloc_iterator tokloc_begin() const { return TokLocs; }
- tokloc_iterator tokloc_end() const { return TokLocs + NumConcatenated; }
- SourceLocation getBeginLoc() const LLVM_READONLY { return TokLocs[0]; }
- SourceLocation getEndLoc() const LLVM_READONLY {
- return TokLocs[NumConcatenated - 1];
+ tokloc_iterator tokloc_begin() const {
+ return getTrailingObjects<SourceLocation>();
}
+ tokloc_iterator tokloc_end() const {
+ return getTrailingObjects<SourceLocation>() + getNumConcatenated();
+ }
+
+ SourceLocation getBeginLoc() const LLVM_READONLY { return *tokloc_begin(); }
+ SourceLocation getEndLoc() const LLVM_READONLY { return *(tokloc_end() - 1); }
+
static bool classof(const Stmt *T) {
return T->getStmtClass() == StringLiteralClass;
}
@@ -1727,6 +1787,91 @@
}
};
+/// [C99 6.4.2.2] - A predefined identifier such as __func__.
+class PredefinedExpr final
+ : public Expr,
+ private llvm::TrailingObjects<PredefinedExpr, Stmt *> {
+ friend class ASTStmtReader;
+ friend TrailingObjects;
+
+ // PredefinedExpr is optionally followed by a single trailing
+ // "Stmt *" for the predefined identifier. It is present if and only if
+ // hasFunctionName() is true and is always a "StringLiteral *".
+
+public:
+ enum IdentKind {
+ Func,
+ Function,
+ LFunction, // Same as Function, but as wide string.
+ FuncDName,
+ FuncSig,
+ LFuncSig, // Same as FuncSig, but as as wide string
+ PrettyFunction,
+ /// The same as PrettyFunction, except that the
+ /// 'virtual' keyword is omitted for virtual member functions.
+ PrettyFunctionNoVirtual
+ };
+
+private:
+ PredefinedExpr(SourceLocation L, QualType FNTy, IdentKind IK,
+ StringLiteral *SL);
+
+ explicit PredefinedExpr(EmptyShell Empty, bool HasFunctionName);
+
+ /// True if this PredefinedExpr has storage for a function name.
+ bool hasFunctionName() const { return PredefinedExprBits.HasFunctionName; }
+
+ void setFunctionName(StringLiteral *SL) {
+ assert(hasFunctionName() &&
+ "This PredefinedExpr has no storage for a function name!");
+ *getTrailingObjects<Stmt *>() = SL;
+ }
+
+public:
+ /// Create a PredefinedExpr.
+ static PredefinedExpr *Create(const ASTContext &Ctx, SourceLocation L,
+ QualType FNTy, IdentKind IK, StringLiteral *SL);
+
+ /// Create an empty PredefinedExpr.
+ static PredefinedExpr *CreateEmpty(const ASTContext &Ctx,
+ bool HasFunctionName);
+
+ IdentKind getIdentKind() const {
+ return static_cast<IdentKind>(PredefinedExprBits.Kind);
+ }
+
+ SourceLocation getLocation() const { return PredefinedExprBits.Loc; }
+ void setLocation(SourceLocation L) { PredefinedExprBits.Loc = L; }
+
+ StringLiteral *getFunctionName() {
+ return hasFunctionName()
+ ? static_cast<StringLiteral *>(*getTrailingObjects<Stmt *>())
+ : nullptr;
+ }
+
+ const StringLiteral *getFunctionName() const {
+ return hasFunctionName()
+ ? static_cast<StringLiteral *>(*getTrailingObjects<Stmt *>())
+ : nullptr;
+ }
+
+ static StringRef getIdentKindName(IdentKind IK);
+ static std::string ComputeName(IdentKind IK, const Decl *CurrentDecl);
+
+ SourceLocation getBeginLoc() const { return getLocation(); }
+ SourceLocation getEndLoc() const { return getLocation(); }
+
+ static bool classof(const Stmt *T) {
+ return T->getStmtClass() == PredefinedExprClass;
+ }
+
+ // Iterators
+ child_range children() {
+ return child_range(getTrailingObjects<Stmt *>(),
+ getTrailingObjects<Stmt *>() + hasFunctionName());
+ }
+};
+
/// ParenExpr - This represents a parethesized expression, e.g. "(1)". This
/// AST node is only formed if full location information is requested.
class ParenExpr : public Expr {
@@ -1782,15 +1927,11 @@
/// later returns zero in the type of the operand.
///
class UnaryOperator : public Expr {
+ Stmt *Val;
+
public:
typedef UnaryOperatorKind Opcode;
-private:
- unsigned Opc : 5;
- unsigned CanOverflow : 1;
- SourceLocation Loc;
- Stmt *Val;
-public:
UnaryOperator(Expr *input, Opcode opc, QualType type, ExprValueKind VK,
ExprObjectKind OK, SourceLocation l, bool CanOverflow)
: Expr(UnaryOperatorClass, type, VK, OK,
@@ -1799,21 +1940,28 @@
(input->isInstantiationDependent() ||
type->isInstantiationDependentType()),
input->containsUnexpandedParameterPack()),
- Opc(opc), CanOverflow(CanOverflow), Loc(l), Val(input) {}
+ Val(input) {
+ UnaryOperatorBits.Opc = opc;
+ UnaryOperatorBits.CanOverflow = CanOverflow;
+ UnaryOperatorBits.Loc = l;
+ }
/// Build an empty unary operator.
- explicit UnaryOperator(EmptyShell Empty)
- : Expr(UnaryOperatorClass, Empty), Opc(UO_AddrOf) { }
+ explicit UnaryOperator(EmptyShell Empty) : Expr(UnaryOperatorClass, Empty) {
+ UnaryOperatorBits.Opc = UO_AddrOf;
+ }
- Opcode getOpcode() const { return static_cast<Opcode>(Opc); }
- void setOpcode(Opcode O) { Opc = O; }
+ Opcode getOpcode() const {
+ return static_cast<Opcode>(UnaryOperatorBits.Opc);
+ }
+ void setOpcode(Opcode Opc) { UnaryOperatorBits.Opc = Opc; }
Expr *getSubExpr() const { return cast<Expr>(Val); }
void setSubExpr(Expr *E) { Val = E; }
/// getOperatorLoc - Return the location of the operator.
- SourceLocation getOperatorLoc() const { return Loc; }
- void setOperatorLoc(SourceLocation L) { Loc = L; }
+ SourceLocation getOperatorLoc() const { return UnaryOperatorBits.Loc; }
+ void setOperatorLoc(SourceLocation L) { UnaryOperatorBits.Loc = L; }
/// Returns true if the unary operator can cause an overflow. For instance,
/// signed int i = INT_MAX; i++;
@@ -1821,8 +1969,8 @@
/// Due to integer promotions, c++ is promoted to an int before the postfix
/// increment, and the result is an int that cannot overflow. However, i++
/// can overflow.
- bool canOverflow() const { return CanOverflow; }
- void setCanOverflow(bool C) { CanOverflow = C; }
+ bool canOverflow() const { return UnaryOperatorBits.CanOverflow; }
+ void setCanOverflow(bool C) { UnaryOperatorBits.CanOverflow = C; }
/// isPostfix - Return true if this is a postfix operation, like x++.
static bool isPostfix(Opcode Op) {
@@ -1874,12 +2022,12 @@
static OverloadedOperatorKind getOverloadedOperator(Opcode Opc);
SourceLocation getBeginLoc() const LLVM_READONLY {
- return isPostfix() ? Val->getBeginLoc() : Loc;
+ return isPostfix() ? Val->getBeginLoc() : getOperatorLoc();
}
SourceLocation getEndLoc() const LLVM_READONLY {
- return isPostfix() ? Loc : Val->getEndLoc();
+ return isPostfix() ? getOperatorLoc() : Val->getEndLoc();
}
- SourceLocation getExprLoc() const LLVM_READONLY { return Loc; }
+ SourceLocation getExprLoc() const { return getOperatorLoc(); }
static bool classof(const Stmt *T) {
return T->getStmtClass() == UnaryOperatorClass;
@@ -2195,9 +2343,11 @@
/// ArraySubscriptExpr - [C99 6.5.2.1] Array Subscripting.
class ArraySubscriptExpr : public Expr {
- enum { LHS, RHS, END_EXPR=2 };
- Stmt* SubExprs[END_EXPR];
- SourceLocation RBracketLoc;
+ enum { LHS, RHS, END_EXPR };
+ Stmt *SubExprs[END_EXPR];
+
+ bool lhsIsBase() const { return getRHS()->getType()->isIntegerType(); }
+
public:
ArraySubscriptExpr(Expr *lhs, Expr *rhs, QualType t,
ExprValueKind VK, ExprObjectKind OK,
@@ -2208,10 +2358,10 @@
(lhs->isInstantiationDependent() ||
rhs->isInstantiationDependent()),
(lhs->containsUnexpandedParameterPack() ||
- rhs->containsUnexpandedParameterPack())),
- RBracketLoc(rbracketloc) {
+ rhs->containsUnexpandedParameterPack())) {
SubExprs[LHS] = lhs;
SubExprs[RHS] = rhs;
+ ArraySubscriptExprBits.RBracketLoc = rbracketloc;
}
/// Create an empty array subscript expression.
@@ -2235,29 +2385,23 @@
const Expr *getRHS() const { return cast<Expr>(SubExprs[RHS]); }
void setRHS(Expr *E) { SubExprs[RHS] = E; }
- Expr *getBase() {
- return getRHS()->getType()->isIntegerType() ? getLHS() : getRHS();
- }
+ Expr *getBase() { return lhsIsBase() ? getLHS() : getRHS(); }
+ const Expr *getBase() const { return lhsIsBase() ? getLHS() : getRHS(); }
- const Expr *getBase() const {
- return getRHS()->getType()->isIntegerType() ? getLHS() : getRHS();
- }
-
- Expr *getIdx() {
- return getRHS()->getType()->isIntegerType() ? getRHS() : getLHS();
- }
-
- const Expr *getIdx() const {
- return getRHS()->getType()->isIntegerType() ? getRHS() : getLHS();
- }
+ Expr *getIdx() { return lhsIsBase() ? getRHS() : getLHS(); }
+ const Expr *getIdx() const { return lhsIsBase() ? getRHS() : getLHS(); }
SourceLocation getBeginLoc() const LLVM_READONLY {
return getLHS()->getBeginLoc();
}
- SourceLocation getEndLoc() const LLVM_READONLY { return RBracketLoc; }
+ SourceLocation getEndLoc() const { return getRBracketLoc(); }
- SourceLocation getRBracketLoc() const { return RBracketLoc; }
- void setRBracketLoc(SourceLocation L) { RBracketLoc = L; }
+ SourceLocation getRBracketLoc() const {
+ return ArraySubscriptExprBits.RBracketLoc;
+ }
+ void setRBracketLoc(SourceLocation L) {
+ ArraySubscriptExprBits.RBracketLoc = L;
+ }
SourceLocation getExprLoc() const LLVM_READONLY {
return getBase()->getExprLoc();
@@ -2283,93 +2427,188 @@
/// a subclass for overloaded operator calls that use operator syntax, e.g.,
/// "str1 + str2" to resolve to a function call.
class CallExpr : public Expr {
- enum { FN=0, PREARGS_START=1 };
- Stmt **SubExprs;
+ enum { FN = 0, PREARGS_START = 1 };
+
+ /// The number of arguments in the call expression.
unsigned NumArgs;
+
+ /// The location of the right parenthese. This has a different meaning for
+ /// the derived classes of CallExpr.
SourceLocation RParenLoc;
void updateDependenciesFromArg(Expr *Arg);
+ // CallExpr store some data in trailing objects. However since CallExpr
+ // is used a base of other expression classes we cannot use
+ // llvm::TrailingObjects. Instead we manually perform the pointer arithmetic
+ // and casts.
+ //
+ // The trailing objects are in order:
+ //
+ // * A single "Stmt *" for the callee expression.
+ //
+ // * An array of getNumPreArgs() "Stmt *" for the pre-argument expressions.
+ //
+ // * An array of getNumArgs() "Stmt *" for the argument expressions.
+ //
+ // Note that we store the offset in bytes from the this pointer to the start
+ // of the trailing objects. It would be perfectly possible to compute it
+ // based on the dynamic kind of the CallExpr. However 1.) we have plenty of
+ // space in the bit-fields of Stmt. 2.) It was benchmarked to be faster to
+ // compute this once and then load the offset from the bit-fields of Stmt,
+ // instead of re-computing the offset each time the trailing objects are
+ // accessed.
+
+ /// Return a pointer to the start of the trailing array of "Stmt *".
+ Stmt **getTrailingStmts() {
+ return reinterpret_cast<Stmt **>(reinterpret_cast<char *>(this) +
+ CallExprBits.OffsetToTrailingObjects);
+ }
+ Stmt *const *getTrailingStmts() const {
+ return const_cast<CallExpr *>(this)->getTrailingStmts();
+ }
+
+ /// Map a statement class to the appropriate offset in bytes from the
+ /// this pointer to the trailing objects.
+ static unsigned offsetToTrailingObjects(StmtClass SC);
+
+public:
+ enum class ADLCallKind : bool { NotADL, UsesADL };
+ static constexpr ADLCallKind NotADL = ADLCallKind::NotADL;
+ static constexpr ADLCallKind UsesADL = ADLCallKind::UsesADL;
+
protected:
- // These versions of the constructor are for derived classes.
- CallExpr(const ASTContext &C, StmtClass SC, Expr *fn,
- ArrayRef<Expr *> preargs, ArrayRef<Expr *> args, QualType t,
- ExprValueKind VK, SourceLocation rparenloc);
- CallExpr(const ASTContext &C, StmtClass SC, Expr *fn, ArrayRef<Expr *> args,
- QualType t, ExprValueKind VK, SourceLocation rparenloc);
- CallExpr(const ASTContext &C, StmtClass SC, unsigned NumPreArgs,
+ /// Build a call expression, assuming that appropriate storage has been
+ /// allocated for the trailing objects.
+ CallExpr(StmtClass SC, Expr *Fn, ArrayRef<Expr *> PreArgs,
+ ArrayRef<Expr *> Args, QualType Ty, ExprValueKind VK,
+ SourceLocation RParenLoc, unsigned MinNumArgs, ADLCallKind UsesADL);
+
+ /// Build an empty call expression, for deserialization.
+ CallExpr(StmtClass SC, unsigned NumPreArgs, unsigned NumArgs,
EmptyShell Empty);
- Stmt *getPreArg(unsigned i) {
- assert(i < getNumPreArgs() && "Prearg access out of range!");
- return SubExprs[PREARGS_START+i];
+ /// Return the size in bytes needed for the trailing objects.
+ /// Used by the derived classes to allocate the right amount of storage.
+ static unsigned sizeOfTrailingObjects(unsigned NumPreArgs, unsigned NumArgs) {
+ return (1 + NumPreArgs + NumArgs) * sizeof(Stmt *);
}
- const Stmt *getPreArg(unsigned i) const {
- assert(i < getNumPreArgs() && "Prearg access out of range!");
- return SubExprs[PREARGS_START+i];
+
+ Stmt *getPreArg(unsigned I) {
+ assert(I < getNumPreArgs() && "Prearg access out of range!");
+ return getTrailingStmts()[PREARGS_START + I];
}
- void setPreArg(unsigned i, Stmt *PreArg) {
- assert(i < getNumPreArgs() && "Prearg access out of range!");
- SubExprs[PREARGS_START+i] = PreArg;
+ const Stmt *getPreArg(unsigned I) const {
+ assert(I < getNumPreArgs() && "Prearg access out of range!");
+ return getTrailingStmts()[PREARGS_START + I];
+ }
+ void setPreArg(unsigned I, Stmt *PreArg) {
+ assert(I < getNumPreArgs() && "Prearg access out of range!");
+ getTrailingStmts()[PREARGS_START + I] = PreArg;
}
unsigned getNumPreArgs() const { return CallExprBits.NumPreArgs; }
public:
- CallExpr(const ASTContext& C, Expr *fn, ArrayRef<Expr*> args, QualType t,
- ExprValueKind VK, SourceLocation rparenloc);
+ /// Create a call expression. Fn is the callee expression, Args is the
+ /// argument array, Ty is the type of the call expression (which is *not*
+ /// the return type in general), VK is the value kind of the call expression
+ /// (lvalue, rvalue, ...), and RParenLoc is the location of the right
+ /// parenthese in the call expression. MinNumArgs specifies the minimum
+ /// number of arguments. The actual number of arguments will be the greater
+ /// of Args.size() and MinNumArgs. This is used in a few places to allocate
+ /// enough storage for the default arguments. UsesADL specifies whether the
+ /// callee was found through argument-dependent lookup.
+ ///
+ /// Note that you can use CreateTemporary if you need a temporary call
+ /// expression on the stack.
+ static CallExpr *Create(const ASTContext &Ctx, Expr *Fn,
+ ArrayRef<Expr *> Args, QualType Ty, ExprValueKind VK,
+ SourceLocation RParenLoc, unsigned MinNumArgs = 0,
+ ADLCallKind UsesADL = NotADL);
- /// Build an empty call expression.
- CallExpr(const ASTContext &C, StmtClass SC, EmptyShell Empty);
+ /// Create a temporary call expression with no arguments in the memory
+ /// pointed to by Mem. Mem must points to at least sizeof(CallExpr)
+ /// + sizeof(Stmt *) bytes of storage, aligned to alignof(CallExpr):
+ ///
+ /// \code{.cpp}
+ /// llvm::AlignedCharArray<alignof(CallExpr),
+ /// sizeof(CallExpr) + sizeof(Stmt *)> Buffer;
+ /// CallExpr *TheCall = CallExpr::CreateTemporary(Buffer.buffer, etc);
+ /// \endcode
+ static CallExpr *CreateTemporary(void *Mem, Expr *Fn, QualType Ty,
+ ExprValueKind VK, SourceLocation RParenLoc,
+ ADLCallKind UsesADL = NotADL);
- const Expr *getCallee() const { return cast<Expr>(SubExprs[FN]); }
- Expr *getCallee() { return cast<Expr>(SubExprs[FN]); }
- void setCallee(Expr *F) { SubExprs[FN] = F; }
+ /// Create an empty call expression, for deserialization.
+ static CallExpr *CreateEmpty(const ASTContext &Ctx, unsigned NumArgs,
+ EmptyShell Empty);
- Decl *getCalleeDecl();
+ Expr *getCallee() { return cast<Expr>(getTrailingStmts()[FN]); }
+ const Expr *getCallee() const { return cast<Expr>(getTrailingStmts()[FN]); }
+ void setCallee(Expr *F) { getTrailingStmts()[FN] = F; }
+
+ ADLCallKind getADLCallKind() const {
+ return static_cast<ADLCallKind>(CallExprBits.UsesADL);
+ }
+ void setADLCallKind(ADLCallKind V = UsesADL) {
+ CallExprBits.UsesADL = static_cast<bool>(V);
+ }
+ bool usesADL() const { return getADLCallKind() == UsesADL; }
+
+ Decl *getCalleeDecl() { return getCallee()->getReferencedDeclOfCallee(); }
const Decl *getCalleeDecl() const {
- return const_cast<CallExpr*>(this)->getCalleeDecl();
+ return getCallee()->getReferencedDeclOfCallee();
}
- /// If the callee is a FunctionDecl, return it. Otherwise return 0.
- FunctionDecl *getDirectCallee();
+ /// If the callee is a FunctionDecl, return it. Otherwise return null.
+ FunctionDecl *getDirectCallee() {
+ return dyn_cast_or_null<FunctionDecl>(getCalleeDecl());
+ }
const FunctionDecl *getDirectCallee() const {
- return const_cast<CallExpr*>(this)->getDirectCallee();
+ return dyn_cast_or_null<FunctionDecl>(getCalleeDecl());
}
/// getNumArgs - Return the number of actual arguments to this call.
- ///
unsigned getNumArgs() const { return NumArgs; }
/// Retrieve the call arguments.
Expr **getArgs() {
- return reinterpret_cast<Expr **>(SubExprs+getNumPreArgs()+PREARGS_START);
+ return reinterpret_cast<Expr **>(getTrailingStmts() + PREARGS_START +
+ getNumPreArgs());
}
const Expr *const *getArgs() const {
- return reinterpret_cast<Expr **>(SubExprs + getNumPreArgs() +
- PREARGS_START);
+ return reinterpret_cast<const Expr *const *>(
+ getTrailingStmts() + PREARGS_START + getNumPreArgs());
}
/// getArg - Return the specified argument.
Expr *getArg(unsigned Arg) {
- assert(Arg < NumArgs && "Arg access out of range!");
- return cast_or_null<Expr>(SubExprs[Arg + getNumPreArgs() + PREARGS_START]);
+ assert(Arg < getNumArgs() && "Arg access out of range!");
+ return getArgs()[Arg];
}
const Expr *getArg(unsigned Arg) const {
- assert(Arg < NumArgs && "Arg access out of range!");
- return cast_or_null<Expr>(SubExprs[Arg + getNumPreArgs() + PREARGS_START]);
+ assert(Arg < getNumArgs() && "Arg access out of range!");
+ return getArgs()[Arg];
}
/// setArg - Set the specified argument.
void setArg(unsigned Arg, Expr *ArgExpr) {
- assert(Arg < NumArgs && "Arg access out of range!");
- SubExprs[Arg+getNumPreArgs()+PREARGS_START] = ArgExpr;
+ assert(Arg < getNumArgs() && "Arg access out of range!");
+ getArgs()[Arg] = ArgExpr;
}
- /// setNumArgs - This changes the number of arguments present in this call.
- /// Any orphaned expressions are deleted by this, and any new operands are set
- /// to null.
- void setNumArgs(const ASTContext& C, unsigned NumArgs);
+ /// Reduce the number of arguments in this call expression. This is used for
+ /// example during error recovery to drop extra arguments. There is no way
+ /// to perform the opposite because: 1.) We don't track how much storage
+ /// we have for the argument array 2.) This would potentially require growing
+ /// the argument array, something we cannot support since the arguments are
+ /// stored in a trailing array.
+ void shrinkNumArgs(unsigned NewNumArgs) {
+ assert((NewNumArgs <= getNumArgs()) &&
+ "shrinkNumArgs cannot increase the number of arguments!");
+ NumArgs = NewNumArgs;
+ }
typedef ExprIterator arg_iterator;
typedef ConstExprIterator const_arg_iterator;
@@ -2381,29 +2620,28 @@
return const_arg_range(arg_begin(), arg_end());
}
- arg_iterator arg_begin() { return SubExprs+PREARGS_START+getNumPreArgs(); }
- arg_iterator arg_end() {
- return SubExprs+PREARGS_START+getNumPreArgs()+getNumArgs();
+ arg_iterator arg_begin() {
+ return getTrailingStmts() + PREARGS_START + getNumPreArgs();
}
+ arg_iterator arg_end() { return arg_begin() + getNumArgs(); }
+
const_arg_iterator arg_begin() const {
- return SubExprs+PREARGS_START+getNumPreArgs();
+ return getTrailingStmts() + PREARGS_START + getNumPreArgs();
}
- const_arg_iterator arg_end() const {
- return SubExprs+PREARGS_START+getNumPreArgs()+getNumArgs();
- }
+ const_arg_iterator arg_end() const { return arg_begin() + getNumArgs(); }
/// This method provides fast access to all the subexpressions of
/// a CallExpr without going through the slower virtual child_iterator
/// interface. This provides efficient reverse iteration of the
/// subexpressions. This is currently used for CFG construction.
- ArrayRef<Stmt*> getRawSubExprs() {
- return llvm::makeArrayRef(SubExprs,
- getNumPreArgs() + PREARGS_START + getNumArgs());
+ ArrayRef<Stmt *> getRawSubExprs() {
+ return llvm::makeArrayRef(getTrailingStmts(),
+ PREARGS_START + getNumPreArgs() + getNumArgs());
}
/// getNumCommas - Return the number of commas that must have been present in
/// this function call.
- unsigned getNumCommas() const { return NumArgs ? NumArgs - 1 : 0; }
+ unsigned getNumCommas() const { return getNumArgs() ? getNumArgs() - 1 : 0; }
/// getBuiltinCallee - If this is a call to a builtin, return the builtin ID
/// of the callee. If not, return 0.
@@ -2418,6 +2656,15 @@
/// type.
QualType getCallReturnType(const ASTContext &Ctx) const;
+ /// Returns the WarnUnusedResultAttr that is either declared on the called
+ /// function, or its return type declaration.
+ const Attr *getUnusedResultAttr(const ASTContext &Ctx) const;
+
+ /// Returns true if this call expression should warn on unused results.
+ bool hasUnusedResultAttr(const ASTContext &Ctx) const {
+ return getUnusedResultAttr(Ctx) != nullptr;
+ }
+
SourceLocation getRParenLoc() const { return RParenLoc; }
void setRParenLoc(SourceLocation L) { RParenLoc = L; }
@@ -2429,7 +2676,7 @@
bool isBuiltinAssumeFalse(const ASTContext &Ctx) const;
bool isCallToStdMove() const {
- const FunctionDecl* FD = getDirectCallee();
+ const FunctionDecl *FD = getDirectCallee();
return getNumArgs() == 1 && FD && FD->isInStdNamespace() &&
FD->getIdentifier() && FD->getIdentifier()->isStr("move");
}
@@ -2441,13 +2688,14 @@
// Iterators
child_range children() {
- return child_range(&SubExprs[0],
- &SubExprs[0]+NumArgs+getNumPreArgs()+PREARGS_START);
+ return child_range(getTrailingStmts(), getTrailingStmts() + PREARGS_START +
+ getNumPreArgs() + getNumArgs());
}
const_child_range children() const {
- return const_child_range(&SubExprs[0], &SubExprs[0] + NumArgs +
- getNumPreArgs() + PREARGS_START);
+ return const_child_range(getTrailingStmts(),
+ getTrailingStmts() + PREARGS_START +
+ getNumPreArgs() + getNumArgs());
}
};
@@ -2469,6 +2717,10 @@
private llvm::TrailingObjects<MemberExpr, MemberExprNameQualifier,
ASTTemplateKWAndArgsInfo,
TemplateArgumentLoc> {
+ friend class ASTReader;
+ friend class ASTStmtWriter;
+ friend TrailingObjects;
+
/// Base - the expression for the base pointer or structure references. In
/// X.F, this is "X".
Stmt *Base;
@@ -2484,35 +2736,20 @@
/// MemberLoc - This is the location of the member name.
SourceLocation MemberLoc;
- /// This is the location of the -> or . in the expression.
- SourceLocation OperatorLoc;
-
- /// IsArrow - True if this is "X->F", false if this is "X.F".
- bool IsArrow : 1;
-
- /// True if this member expression used a nested-name-specifier to
- /// refer to the member, e.g., "x->Base::f", or found its member via a using
- /// declaration. When true, a MemberExprNameQualifier
- /// structure is allocated immediately after the MemberExpr.
- bool HasQualifierOrFoundDecl : 1;
-
- /// True if this member expression specified a template keyword
- /// and/or a template argument list explicitly, e.g., x->f<int>,
- /// x->template f, x->template f<int>.
- /// When true, an ASTTemplateKWAndArgsInfo structure and its
- /// TemplateArguments (if any) are present.
- bool HasTemplateKWAndArgsInfo : 1;
-
- /// True if this member expression refers to a method that
- /// was resolved from an overloaded set having size greater than 1.
- bool HadMultipleCandidates : 1;
-
size_t numTrailingObjects(OverloadToken<MemberExprNameQualifier>) const {
- return HasQualifierOrFoundDecl ? 1 : 0;
+ return hasQualifierOrFoundDecl();
}
size_t numTrailingObjects(OverloadToken<ASTTemplateKWAndArgsInfo>) const {
- return HasTemplateKWAndArgsInfo ? 1 : 0;
+ return hasTemplateKWAndArgsInfo();
+ }
+
+ bool hasQualifierOrFoundDecl() const {
+ return MemberExprBits.HasQualifierOrFoundDecl;
+ }
+
+ bool hasTemplateKWAndArgsInfo() const {
+ return MemberExprBits.HasTemplateKWAndArgsInfo;
}
public:
@@ -2523,10 +2760,13 @@
base->isValueDependent(), base->isInstantiationDependent(),
base->containsUnexpandedParameterPack()),
Base(base), MemberDecl(memberdecl), MemberDNLoc(NameInfo.getInfo()),
- MemberLoc(NameInfo.getLoc()), OperatorLoc(operatorloc),
- IsArrow(isarrow), HasQualifierOrFoundDecl(false),
- HasTemplateKWAndArgsInfo(false), HadMultipleCandidates(false) {
+ MemberLoc(NameInfo.getLoc()) {
assert(memberdecl->getDeclName() == NameInfo.getName());
+ MemberExprBits.IsArrow = isarrow;
+ MemberExprBits.HasQualifierOrFoundDecl = false;
+ MemberExprBits.HasTemplateKWAndArgsInfo = false;
+ MemberExprBits.HadMultipleCandidates = false;
+ MemberExprBits.OperatorLoc = operatorloc;
}
// NOTE: this constructor should be used only when it is known that
@@ -2539,10 +2779,13 @@
: Expr(MemberExprClass, ty, VK, OK, base->isTypeDependent(),
base->isValueDependent(), base->isInstantiationDependent(),
base->containsUnexpandedParameterPack()),
- Base(base), MemberDecl(memberdecl), MemberDNLoc(), MemberLoc(l),
- OperatorLoc(operatorloc), IsArrow(isarrow),
- HasQualifierOrFoundDecl(false), HasTemplateKWAndArgsInfo(false),
- HadMultipleCandidates(false) {}
+ Base(base), MemberDecl(memberdecl), MemberDNLoc(), MemberLoc(l) {
+ MemberExprBits.IsArrow = isarrow;
+ MemberExprBits.HasQualifierOrFoundDecl = false;
+ MemberExprBits.HasTemplateKWAndArgsInfo = false;
+ MemberExprBits.HadMultipleCandidates = false;
+ MemberExprBits.OperatorLoc = operatorloc;
+ }
static MemberExpr *Create(const ASTContext &C, Expr *base, bool isarrow,
SourceLocation OperatorLoc,
@@ -2565,7 +2808,7 @@
/// Retrieves the declaration found by lookup.
DeclAccessPair getFoundDecl() const {
- if (!HasQualifierOrFoundDecl)
+ if (!hasQualifierOrFoundDecl())
return DeclAccessPair::make(getMemberDecl(),
getMemberDecl()->getAccess());
return getTrailingObjects<MemberExprNameQualifier>()->FoundDecl;
@@ -2580,9 +2823,8 @@
/// nested-name-specifier that precedes the member name, with source-location
/// information.
NestedNameSpecifierLoc getQualifierLoc() const {
- if (!HasQualifierOrFoundDecl)
+ if (!hasQualifierOrFoundDecl())
return NestedNameSpecifierLoc();
-
return getTrailingObjects<MemberExprNameQualifier>()->QualifierLoc;
}
@@ -2596,21 +2838,24 @@
/// Retrieve the location of the template keyword preceding
/// the member name, if any.
SourceLocation getTemplateKeywordLoc() const {
- if (!HasTemplateKWAndArgsInfo) return SourceLocation();
+ if (!hasTemplateKWAndArgsInfo())
+ return SourceLocation();
return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->TemplateKWLoc;
}
/// Retrieve the location of the left angle bracket starting the
/// explicit template argument list following the member name, if any.
SourceLocation getLAngleLoc() const {
- if (!HasTemplateKWAndArgsInfo) return SourceLocation();
+ if (!hasTemplateKWAndArgsInfo())
+ return SourceLocation();
return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->LAngleLoc;
}
/// Retrieve the location of the right angle bracket ending the
/// explicit template argument list following the member name, if any.
SourceLocation getRAngleLoc() const {
- if (!HasTemplateKWAndArgsInfo) return SourceLocation();
+ if (!hasTemplateKWAndArgsInfo())
+ return SourceLocation();
return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->RAngleLoc;
}
@@ -2657,10 +2902,10 @@
MemberLoc, MemberDNLoc);
}
- SourceLocation getOperatorLoc() const LLVM_READONLY { return OperatorLoc; }
+ SourceLocation getOperatorLoc() const { return MemberExprBits.OperatorLoc; }
- bool isArrow() const { return IsArrow; }
- void setArrow(bool A) { IsArrow = A; }
+ bool isArrow() const { return MemberExprBits.IsArrow; }
+ void setArrow(bool A) { MemberExprBits.IsArrow = A; }
/// getMemberLoc - Return the location of the "member", in X->F, it is the
/// location of 'F'.
@@ -2680,13 +2925,13 @@
/// Returns true if this member expression refers to a method that
/// was resolved from an overloaded set having size greater than 1.
bool hadMultipleCandidates() const {
- return HadMultipleCandidates;
+ return MemberExprBits.HadMultipleCandidates;
}
/// Sets the flag telling whether this expression refers to
/// a method that was resolved from an overloaded set having size
/// greater than 1.
void setHadMultipleCandidates(bool V = true) {
- HadMultipleCandidates = V;
+ MemberExprBits.HadMultipleCandidates = V;
}
/// Returns true if virtual dispatch is performed.
@@ -2706,10 +2951,6 @@
const_child_range children() const {
return const_child_range(&Base, &Base + 1);
}
-
- friend TrailingObjects;
- friend class ASTReader;
- friend class ASTStmtWriter;
};
/// CompoundLiteralExpr - [C99 6.5.2.5]
@@ -2788,28 +3029,15 @@
/// representation in the source code (ExplicitCastExpr's derived
/// classes).
class CastExpr : public Expr {
-public:
- using BasePathSizeTy = unsigned int;
- static_assert(std::numeric_limits<BasePathSizeTy>::max() >= 16384,
- "[implimits] Direct and indirect base classes [16384].");
-
-private:
Stmt *Op;
bool CastConsistency() const;
- BasePathSizeTy *BasePathSize();
-
const CXXBaseSpecifier * const *path_buffer() const {
return const_cast<CastExpr*>(this)->path_buffer();
}
CXXBaseSpecifier **path_buffer();
- void setBasePathSize(BasePathSizeTy basePathSize) {
- assert(!path_empty() && basePathSize != 0);
- *(BasePathSize()) = basePathSize;
- }
-
protected:
CastExpr(StmtClass SC, QualType ty, ExprValueKind VK, const CastKind kind,
Expr *op, unsigned BasePathSize)
@@ -2830,9 +3058,9 @@
Op(op) {
CastExprBits.Kind = kind;
CastExprBits.PartOfExplicitCast = false;
- CastExprBits.BasePathIsEmpty = BasePathSize == 0;
- if (!path_empty())
- setBasePathSize(BasePathSize);
+ CastExprBits.BasePathSize = BasePathSize;
+ assert((CastExprBits.BasePathSize == BasePathSize) &&
+ "BasePathSize overflow!");
assert(CastConsistency());
}
@@ -2840,9 +3068,9 @@
CastExpr(StmtClass SC, EmptyShell Empty, unsigned BasePathSize)
: Expr(SC, Empty) {
CastExprBits.PartOfExplicitCast = false;
- CastExprBits.BasePathIsEmpty = BasePathSize == 0;
- if (!path_empty())
- setBasePathSize(BasePathSize);
+ CastExprBits.BasePathSize = BasePathSize;
+ assert((CastExprBits.BasePathSize == BasePathSize) &&
+ "BasePathSize overflow!");
}
public:
@@ -2869,13 +3097,9 @@
NamedDecl *getConversionFunction() const;
typedef CXXBaseSpecifier **path_iterator;
- typedef const CXXBaseSpecifier * const *path_const_iterator;
- bool path_empty() const { return CastExprBits.BasePathIsEmpty; }
- unsigned path_size() const {
- if (path_empty())
- return 0U;
- return *(const_cast<CastExpr *>(this)->BasePathSize());
- }
+ typedef const CXXBaseSpecifier *const *path_const_iterator;
+ bool path_empty() const { return path_size() == 0; }
+ unsigned path_size() const { return CastExprBits.BasePathSize; }
path_iterator path_begin() { return path_buffer(); }
path_iterator path_end() { return path_buffer() + path_size(); }
path_const_iterator path_begin() const { return path_buffer(); }
@@ -2923,17 +3147,11 @@
/// @endcode
class ImplicitCastExpr final
: public CastExpr,
- private llvm::TrailingObjects<ImplicitCastExpr, CastExpr::BasePathSizeTy,
- CXXBaseSpecifier *> {
- size_t numTrailingObjects(OverloadToken<CastExpr::BasePathSizeTy>) const {
- return path_empty() ? 0 : 1;
- }
+ private llvm::TrailingObjects<ImplicitCastExpr, CXXBaseSpecifier *> {
-private:
ImplicitCastExpr(QualType ty, CastKind kind, Expr *op,
unsigned BasePathLength, ExprValueKind VK)
- : CastExpr(ImplicitCastExprClass, ty, VK, kind, op, BasePathLength) {
- }
+ : CastExpr(ImplicitCastExprClass, ty, VK, kind, op, BasePathLength) { }
/// Construct an empty implicit cast.
explicit ImplicitCastExpr(EmptyShell Shell, unsigned PathSize)
@@ -2974,13 +3192,6 @@
friend class CastExpr;
};
-inline Expr *Expr::IgnoreImpCasts() {
- Expr *e = this;
- while (ImplicitCastExpr *ice = dyn_cast<ImplicitCastExpr>(e))
- e = ice->getSubExpr();
- return e;
-}
-
/// ExplicitCastExpr - An explicit cast written in the source
/// code.
///
@@ -3033,8 +3244,7 @@
/// (Type)expr. For example: @c (int)f.
class CStyleCastExpr final
: public ExplicitCastExpr,
- private llvm::TrailingObjects<CStyleCastExpr, CastExpr::BasePathSizeTy,
- CXXBaseSpecifier *> {
+ private llvm::TrailingObjects<CStyleCastExpr, CXXBaseSpecifier *> {
SourceLocation LPLoc; // the location of the left paren
SourceLocation RPLoc; // the location of the right paren
@@ -3048,10 +3258,6 @@
explicit CStyleCastExpr(EmptyShell Shell, unsigned PathSize)
: ExplicitCastExpr(CStyleCastExprClass, Shell, PathSize) { }
- size_t numTrailingObjects(OverloadToken<CastExpr::BasePathSizeTy>) const {
- return path_empty() ? 0 : 1;
- }
-
public:
static CStyleCastExpr *Create(const ASTContext &Context, QualType T,
ExprValueKind VK, CastKind K,
@@ -3100,21 +3306,12 @@
/// "+" resolves to an overloaded operator, CXXOperatorCallExpr will
/// be used to express the computation.
class BinaryOperator : public Expr {
+ enum { LHS, RHS, END_EXPR };
+ Stmt *SubExprs[END_EXPR];
+
public:
typedef BinaryOperatorKind Opcode;
-private:
- unsigned Opc : 6;
-
- // This is only meaningful for operations on floating point types and 0
- // otherwise.
- unsigned FPFeatures : 3;
- SourceLocation OpLoc;
-
- enum { LHS, RHS, END_EXPR };
- Stmt* SubExprs[END_EXPR];
-public:
-
BinaryOperator(Expr *lhs, Expr *rhs, Opcode opc, QualType ResTy,
ExprValueKind VK, ExprObjectKind OK,
SourceLocation opLoc, FPOptions FPFeatures)
@@ -3124,8 +3321,10 @@
(lhs->isInstantiationDependent() ||
rhs->isInstantiationDependent()),
(lhs->containsUnexpandedParameterPack() ||
- rhs->containsUnexpandedParameterPack())),
- Opc(opc), FPFeatures(FPFeatures.getInt()), OpLoc(opLoc) {
+ rhs->containsUnexpandedParameterPack())) {
+ BinaryOperatorBits.Opc = opc;
+ BinaryOperatorBits.FPFeatures = FPFeatures.getInt();
+ BinaryOperatorBits.OpLoc = opLoc;
SubExprs[LHS] = lhs;
SubExprs[RHS] = rhs;
assert(!isCompoundAssignmentOp() &&
@@ -3133,15 +3332,18 @@
}
/// Construct an empty binary operator.
- explicit BinaryOperator(EmptyShell Empty)
- : Expr(BinaryOperatorClass, Empty), Opc(BO_Comma) { }
+ explicit BinaryOperator(EmptyShell Empty) : Expr(BinaryOperatorClass, Empty) {
+ BinaryOperatorBits.Opc = BO_Comma;
+ }
- SourceLocation getExprLoc() const LLVM_READONLY { return OpLoc; }
- SourceLocation getOperatorLoc() const { return OpLoc; }
- void setOperatorLoc(SourceLocation L) { OpLoc = L; }
+ SourceLocation getExprLoc() const { return getOperatorLoc(); }
+ SourceLocation getOperatorLoc() const { return BinaryOperatorBits.OpLoc; }
+ void setOperatorLoc(SourceLocation L) { BinaryOperatorBits.OpLoc = L; }
- Opcode getOpcode() const { return static_cast<Opcode>(Opc); }
- void setOpcode(Opcode O) { Opc = O; }
+ Opcode getOpcode() const {
+ return static_cast<Opcode>(BinaryOperatorBits.Opc);
+ }
+ void setOpcode(Opcode Opc) { BinaryOperatorBits.Opc = Opc; }
Expr *getLHS() const { return cast<Expr>(SubExprs[LHS]); }
void setLHS(Expr *E) { SubExprs[LHS] = E; }
@@ -3170,7 +3372,11 @@
static OverloadedOperatorKind getOverloadedOperator(Opcode Opc);
/// predicates to categorize the respective opcodes.
- bool isPtrMemOp() const { return Opc == BO_PtrMemD || Opc == BO_PtrMemI; }
+ static bool isPtrMemOp(Opcode Opc) {
+ return Opc == BO_PtrMemD || Opc == BO_PtrMemI;
+ }
+ bool isPtrMemOp() const { return isPtrMemOp(getOpcode()); }
+
static bool isMultiplicativeOp(Opcode Opc) {
return Opc >= BO_Mul && Opc <= BO_Rem;
}
@@ -3269,21 +3475,23 @@
// Set the FP contractability status of this operator. Only meaningful for
// operations on floating point types.
- void setFPFeatures(FPOptions F) { FPFeatures = F.getInt(); }
+ void setFPFeatures(FPOptions F) {
+ BinaryOperatorBits.FPFeatures = F.getInt();
+ }
- FPOptions getFPFeatures() const { return FPOptions(FPFeatures); }
+ FPOptions getFPFeatures() const {
+ return FPOptions(BinaryOperatorBits.FPFeatures);
+ }
// Get the FP contractability status of this operator. Only meaningful for
// operations on floating point types.
bool isFPContractableWithinStatement() const {
- return FPOptions(FPFeatures).allowFPContractWithinStatement();
+ return getFPFeatures().allowFPContractWithinStatement();
}
// Get the FENV_ACCESS status of this operator. Only meaningful for
// operations on floating point types.
- bool isFEnvAccessOn() const {
- return FPOptions(FPFeatures).allowFEnvAccess();
- }
+ bool isFEnvAccessOn() const { return getFPFeatures().allowFEnvAccess(); }
protected:
BinaryOperator(Expr *lhs, Expr *rhs, Opcode opc, QualType ResTy,
@@ -3295,14 +3503,17 @@
(lhs->isInstantiationDependent() ||
rhs->isInstantiationDependent()),
(lhs->containsUnexpandedParameterPack() ||
- rhs->containsUnexpandedParameterPack())),
- Opc(opc), FPFeatures(FPFeatures.getInt()), OpLoc(opLoc) {
+ rhs->containsUnexpandedParameterPack())) {
+ BinaryOperatorBits.Opc = opc;
+ BinaryOperatorBits.FPFeatures = FPFeatures.getInt();
+ BinaryOperatorBits.OpLoc = opLoc;
SubExprs[LHS] = lhs;
SubExprs[RHS] = rhs;
}
- BinaryOperator(StmtClass SC, EmptyShell Empty)
- : Expr(SC, Empty), Opc(BO_MulAssign) { }
+ BinaryOperator(StmtClass SC, EmptyShell Empty) : Expr(SC, Empty) {
+ BinaryOperatorBits.Opc = BO_MulAssign;
+ }
};
/// CompoundAssignOperator - For compound assignments (e.g. +=), we keep
@@ -4726,31 +4937,46 @@
}
};
-class ParenListExpr : public Expr {
- Stmt **Exprs;
- unsigned NumExprs;
+class ParenListExpr final
+ : public Expr,
+ private llvm::TrailingObjects<ParenListExpr, Stmt *> {
+ friend class ASTStmtReader;
+ friend TrailingObjects;
+
+ /// The location of the left and right parentheses.
SourceLocation LParenLoc, RParenLoc;
-public:
- ParenListExpr(const ASTContext& C, SourceLocation lparenloc,
- ArrayRef<Expr*> exprs, SourceLocation rparenloc);
+ /// Build a paren list.
+ ParenListExpr(SourceLocation LParenLoc, ArrayRef<Expr *> Exprs,
+ SourceLocation RParenLoc);
/// Build an empty paren list.
- explicit ParenListExpr(EmptyShell Empty) : Expr(ParenListExprClass, Empty) { }
+ ParenListExpr(EmptyShell Empty, unsigned NumExprs);
- unsigned getNumExprs() const { return NumExprs; }
+public:
+ /// Create a paren list.
+ static ParenListExpr *Create(const ASTContext &Ctx, SourceLocation LParenLoc,
+ ArrayRef<Expr *> Exprs,
+ SourceLocation RParenLoc);
- const Expr* getExpr(unsigned Init) const {
+ /// Create an empty paren list.
+ static ParenListExpr *CreateEmpty(const ASTContext &Ctx, unsigned NumExprs);
+
+ /// Return the number of expressions in this paren list.
+ unsigned getNumExprs() const { return ParenListExprBits.NumExprs; }
+
+ Expr *getExpr(unsigned Init) {
assert(Init < getNumExprs() && "Initializer access out of range!");
- return cast_or_null<Expr>(Exprs[Init]);
+ return getExprs()[Init];
}
- Expr* getExpr(unsigned Init) {
- assert(Init < getNumExprs() && "Initializer access out of range!");
- return cast_or_null<Expr>(Exprs[Init]);
+ const Expr *getExpr(unsigned Init) const {
+ return const_cast<ParenListExpr *>(this)->getExpr(Init);
}
- Expr **getExprs() { return reinterpret_cast<Expr **>(Exprs); }
+ Expr **getExprs() {
+ return reinterpret_cast<Expr **>(getTrailingObjects<Stmt *>());
+ }
ArrayRef<Expr *> exprs() {
return llvm::makeArrayRef(getExprs(), getNumExprs());
@@ -4758,9 +4984,8 @@
SourceLocation getLParenLoc() const { return LParenLoc; }
SourceLocation getRParenLoc() const { return RParenLoc; }
-
- SourceLocation getBeginLoc() const LLVM_READONLY { return LParenLoc; }
- SourceLocation getEndLoc() const LLVM_READONLY { return RParenLoc; }
+ SourceLocation getBeginLoc() const { return getLParenLoc(); }
+ SourceLocation getEndLoc() const { return getRParenLoc(); }
static bool classof(const Stmt *T) {
return T->getStmtClass() == ParenListExprClass;
@@ -4768,14 +4993,13 @@
// Iterators
child_range children() {
- return child_range(&Exprs[0], &Exprs[0]+NumExprs);
+ return child_range(getTrailingObjects<Stmt *>(),
+ getTrailingObjects<Stmt *>() + getNumExprs());
}
const_child_range children() const {
- return const_child_range(&Exprs[0], &Exprs[0] + NumExprs);
+ return const_child_range(getTrailingObjects<Stmt *>(),
+ getTrailingObjects<Stmt *>() + getNumExprs());
}
-
- friend class ASTStmtReader;
- friend class ASTStmtWriter;
};
/// Represents a C11 generic selection.
@@ -4804,99 +5028,277 @@
/// which names a dependent type in its association list is result-dependent,
/// which means that the choice of result expression is dependent.
/// Result-dependent generic associations are both type- and value-dependent.
-class GenericSelectionExpr : public Expr {
- enum { CONTROLLING, END_EXPR };
- TypeSourceInfo **AssocTypes;
- Stmt **SubExprs;
- unsigned NumAssocs, ResultIndex;
- SourceLocation GenericLoc, DefaultLoc, RParenLoc;
+class GenericSelectionExpr final
+ : public Expr,
+ private llvm::TrailingObjects<GenericSelectionExpr, Stmt *,
+ TypeSourceInfo *> {
+ friend class ASTStmtReader;
+ friend class ASTStmtWriter;
+ friend TrailingObjects;
-public:
- GenericSelectionExpr(const ASTContext &Context,
- SourceLocation GenericLoc, Expr *ControllingExpr,
- ArrayRef<TypeSourceInfo*> AssocTypes,
- ArrayRef<Expr*> AssocExprs,
- SourceLocation DefaultLoc, SourceLocation RParenLoc,
+ /// The number of association expressions and the index of the result
+ /// expression in the case where the generic selection expression is not
+ /// result-dependent. The result index is equal to ResultDependentIndex
+ /// if and only if the generic selection expression is result-dependent.
+ unsigned NumAssocs, ResultIndex;
+ enum : unsigned {
+ ResultDependentIndex = std::numeric_limits<unsigned>::max(),
+ ControllingIndex = 0,
+ AssocExprStartIndex = 1
+ };
+
+ /// The location of the "default" and of the right parenthesis.
+ SourceLocation DefaultLoc, RParenLoc;
+
+ // GenericSelectionExpr is followed by several trailing objects.
+ // They are (in order):
+ //
+ // * A single Stmt * for the controlling expression.
+ // * An array of getNumAssocs() Stmt * for the association expressions.
+ // * An array of getNumAssocs() TypeSourceInfo *, one for each of the
+ // association expressions.
+ unsigned numTrailingObjects(OverloadToken<Stmt *>) const {
+ // Add one to account for the controlling expression; the remainder
+ // are the associated expressions.
+ return 1 + getNumAssocs();
+ }
+
+ unsigned numTrailingObjects(OverloadToken<TypeSourceInfo *>) const {
+ return getNumAssocs();
+ }
+
+ template <bool Const> class AssociationIteratorTy;
+ /// Bundle together an association expression and its TypeSourceInfo.
+ /// The Const template parameter is for the const and non-const versions
+ /// of AssociationTy.
+ template <bool Const> class AssociationTy {
+ friend class GenericSelectionExpr;
+ template <bool OtherConst> friend class AssociationIteratorTy;
+ using ExprPtrTy =
+ typename std::conditional<Const, const Expr *, Expr *>::type;
+ using TSIPtrTy = typename std::conditional<Const, const TypeSourceInfo *,
+ TypeSourceInfo *>::type;
+ ExprPtrTy E;
+ TSIPtrTy TSI;
+ bool Selected;
+ AssociationTy(ExprPtrTy E, TSIPtrTy TSI, bool Selected)
+ : E(E), TSI(TSI), Selected(Selected) {}
+
+ public:
+ ExprPtrTy getAssociationExpr() const { return E; }
+ TSIPtrTy getTypeSourceInfo() const { return TSI; }
+ QualType getType() const { return TSI ? TSI->getType() : QualType(); }
+ bool isSelected() const { return Selected; }
+ AssociationTy *operator->() { return this; }
+ const AssociationTy *operator->() const { return this; }
+ }; // class AssociationTy
+
+ /// Iterator over const and non-const Association objects. The Association
+ /// objects are created on the fly when the iterator is dereferenced.
+ /// This abstract over how exactly the association expressions and the
+ /// corresponding TypeSourceInfo * are stored.
+ template <bool Const>
+ class AssociationIteratorTy
+ : public llvm::iterator_facade_base<
+ AssociationIteratorTy<Const>, std::input_iterator_tag,
+ AssociationTy<Const>, std::ptrdiff_t, AssociationTy<Const>,
+ AssociationTy<Const>> {
+ friend class GenericSelectionExpr;
+ // FIXME: This iterator could conceptually be a random access iterator, and
+ // it would be nice if we could strengthen the iterator category someday.
+ // However this iterator does not satisfy two requirements of forward
+ // iterators:
+ // a) reference = T& or reference = const T&
+ // b) If It1 and It2 are both dereferenceable, then It1 == It2 if and only
+ // if *It1 and *It2 are bound to the same objects.
+ // An alternative design approach was discussed during review;
+ // store an Association object inside the iterator, and return a reference
+ // to it when dereferenced. This idea was discarded beacuse of nasty
+ // lifetime issues:
+ // AssociationIterator It = ...;
+ // const Association &Assoc = *It++; // Oops, Assoc is dangling.
+ using BaseTy = typename AssociationIteratorTy::iterator_facade_base;
+ using StmtPtrPtrTy =
+ typename std::conditional<Const, const Stmt *const *, Stmt **>::type;
+ using TSIPtrPtrTy =
+ typename std::conditional<Const, const TypeSourceInfo *const *,
+ TypeSourceInfo **>::type;
+ StmtPtrPtrTy E; // = nullptr; FIXME: Once support for gcc 4.8 is dropped.
+ TSIPtrPtrTy TSI; // Kept in sync with E.
+ unsigned Offset = 0, SelectedOffset = 0;
+ AssociationIteratorTy(StmtPtrPtrTy E, TSIPtrPtrTy TSI, unsigned Offset,
+ unsigned SelectedOffset)
+ : E(E), TSI(TSI), Offset(Offset), SelectedOffset(SelectedOffset) {}
+
+ public:
+ AssociationIteratorTy() : E(nullptr), TSI(nullptr) {}
+ typename BaseTy::reference operator*() const {
+ return AssociationTy<Const>(cast<Expr>(*E), *TSI,
+ Offset == SelectedOffset);
+ }
+ typename BaseTy::pointer operator->() const { return **this; }
+ using BaseTy::operator++;
+ AssociationIteratorTy &operator++() {
+ ++E;
+ ++TSI;
+ ++Offset;
+ return *this;
+ }
+ bool operator==(AssociationIteratorTy Other) const { return E == Other.E; }
+ }; // class AssociationIterator
+
+ /// Build a non-result-dependent generic selection expression.
+ GenericSelectionExpr(const ASTContext &Context, SourceLocation GenericLoc,
+ Expr *ControllingExpr,
+ ArrayRef<TypeSourceInfo *> AssocTypes,
+ ArrayRef<Expr *> AssocExprs, SourceLocation DefaultLoc,
+ SourceLocation RParenLoc,
bool ContainsUnexpandedParameterPack,
unsigned ResultIndex);
- /// This constructor is used in the result-dependent case.
- GenericSelectionExpr(const ASTContext &Context,
- SourceLocation GenericLoc, Expr *ControllingExpr,
- ArrayRef<TypeSourceInfo*> AssocTypes,
- ArrayRef<Expr*> AssocExprs,
- SourceLocation DefaultLoc, SourceLocation RParenLoc,
+ /// Build a result-dependent generic selection expression.
+ GenericSelectionExpr(const ASTContext &Context, SourceLocation GenericLoc,
+ Expr *ControllingExpr,
+ ArrayRef<TypeSourceInfo *> AssocTypes,
+ ArrayRef<Expr *> AssocExprs, SourceLocation DefaultLoc,
+ SourceLocation RParenLoc,
bool ContainsUnexpandedParameterPack);
- explicit GenericSelectionExpr(EmptyShell Empty)
- : Expr(GenericSelectionExprClass, Empty) { }
+ /// Build an empty generic selection expression for deserialization.
+ explicit GenericSelectionExpr(EmptyShell Empty, unsigned NumAssocs);
+public:
+ /// Create a non-result-dependent generic selection expression.
+ static GenericSelectionExpr *
+ Create(const ASTContext &Context, SourceLocation GenericLoc,
+ Expr *ControllingExpr, ArrayRef<TypeSourceInfo *> AssocTypes,
+ ArrayRef<Expr *> AssocExprs, SourceLocation DefaultLoc,
+ SourceLocation RParenLoc, bool ContainsUnexpandedParameterPack,
+ unsigned ResultIndex);
+
+ /// Create a result-dependent generic selection expression.
+ static GenericSelectionExpr *
+ Create(const ASTContext &Context, SourceLocation GenericLoc,
+ Expr *ControllingExpr, ArrayRef<TypeSourceInfo *> AssocTypes,
+ ArrayRef<Expr *> AssocExprs, SourceLocation DefaultLoc,
+ SourceLocation RParenLoc, bool ContainsUnexpandedParameterPack);
+
+ /// Create an empty generic selection expression for deserialization.
+ static GenericSelectionExpr *CreateEmpty(const ASTContext &Context,
+ unsigned NumAssocs);
+
+ using Association = AssociationTy<false>;
+ using ConstAssociation = AssociationTy<true>;
+ using AssociationIterator = AssociationIteratorTy<false>;
+ using ConstAssociationIterator = AssociationIteratorTy<true>;
+ using association_range = llvm::iterator_range<AssociationIterator>;
+ using const_association_range =
+ llvm::iterator_range<ConstAssociationIterator>;
+
+ /// The number of association expressions.
unsigned getNumAssocs() const { return NumAssocs; }
- SourceLocation getGenericLoc() const { return GenericLoc; }
- SourceLocation getDefaultLoc() const { return DefaultLoc; }
- SourceLocation getRParenLoc() const { return RParenLoc; }
-
- const Expr *getAssocExpr(unsigned i) const {
- return cast<Expr>(SubExprs[END_EXPR+i]);
- }
- Expr *getAssocExpr(unsigned i) { return cast<Expr>(SubExprs[END_EXPR+i]); }
- ArrayRef<Expr *> getAssocExprs() const {
- return NumAssocs
- ? llvm::makeArrayRef(
- &reinterpret_cast<Expr **>(SubExprs)[END_EXPR], NumAssocs)
- : None;
- }
- const TypeSourceInfo *getAssocTypeSourceInfo(unsigned i) const {
- return AssocTypes[i];
- }
- TypeSourceInfo *getAssocTypeSourceInfo(unsigned i) { return AssocTypes[i]; }
- ArrayRef<TypeSourceInfo *> getAssocTypeSourceInfos() const {
- return NumAssocs ? llvm::makeArrayRef(&AssocTypes[0], NumAssocs) : None;
- }
-
- QualType getAssocType(unsigned i) const {
- if (const TypeSourceInfo *TS = getAssocTypeSourceInfo(i))
- return TS->getType();
- else
- return QualType();
- }
-
- const Expr *getControllingExpr() const {
- return cast<Expr>(SubExprs[CONTROLLING]);
- }
- Expr *getControllingExpr() { return cast<Expr>(SubExprs[CONTROLLING]); }
-
- /// Whether this generic selection is result-dependent.
- bool isResultDependent() const { return ResultIndex == -1U; }
-
/// The zero-based index of the result expression's generic association in
/// the generic selection's association list. Defined only if the
/// generic selection is not result-dependent.
unsigned getResultIndex() const {
- assert(!isResultDependent() && "Generic selection is result-dependent");
+ assert(!isResultDependent() &&
+ "Generic selection is result-dependent but getResultIndex called!");
return ResultIndex;
}
- /// The generic selection's result expression. Defined only if the
- /// generic selection is not result-dependent.
- const Expr *getResultExpr() const { return getAssocExpr(getResultIndex()); }
- Expr *getResultExpr() { return getAssocExpr(getResultIndex()); }
+ /// Whether this generic selection is result-dependent.
+ bool isResultDependent() const { return ResultIndex == ResultDependentIndex; }
- SourceLocation getBeginLoc() const LLVM_READONLY { return GenericLoc; }
- SourceLocation getEndLoc() const LLVM_READONLY { return RParenLoc; }
+ /// Return the controlling expression of this generic selection expression.
+ Expr *getControllingExpr() {
+ return cast<Expr>(getTrailingObjects<Stmt *>()[ControllingIndex]);
+ }
+ const Expr *getControllingExpr() const {
+ return cast<Expr>(getTrailingObjects<Stmt *>()[ControllingIndex]);
+ }
+
+ /// Return the result expression of this controlling expression. Defined if
+ /// and only if the generic selection expression is not result-dependent.
+ Expr *getResultExpr() {
+ return cast<Expr>(
+ getTrailingObjects<Stmt *>()[AssocExprStartIndex + getResultIndex()]);
+ }
+ const Expr *getResultExpr() const {
+ return cast<Expr>(
+ getTrailingObjects<Stmt *>()[AssocExprStartIndex + getResultIndex()]);
+ }
+
+ ArrayRef<Expr *> getAssocExprs() const {
+ return {reinterpret_cast<Expr *const *>(getTrailingObjects<Stmt *>() +
+ AssocExprStartIndex),
+ NumAssocs};
+ }
+ ArrayRef<TypeSourceInfo *> getAssocTypeSourceInfos() const {
+ return {getTrailingObjects<TypeSourceInfo *>(), NumAssocs};
+ }
+
+ /// Return the Ith association expression with its TypeSourceInfo,
+ /// bundled together in GenericSelectionExpr::(Const)Association.
+ Association getAssociation(unsigned I) {
+ assert(I < getNumAssocs() &&
+ "Out-of-range index in GenericSelectionExpr::getAssociation!");
+ return Association(
+ cast<Expr>(getTrailingObjects<Stmt *>()[AssocExprStartIndex + I]),
+ getTrailingObjects<TypeSourceInfo *>()[I],
+ !isResultDependent() && (getResultIndex() == I));
+ }
+ ConstAssociation getAssociation(unsigned I) const {
+ assert(I < getNumAssocs() &&
+ "Out-of-range index in GenericSelectionExpr::getAssociation!");
+ return ConstAssociation(
+ cast<Expr>(getTrailingObjects<Stmt *>()[AssocExprStartIndex + I]),
+ getTrailingObjects<TypeSourceInfo *>()[I],
+ !isResultDependent() && (getResultIndex() == I));
+ }
+
+ association_range associations() {
+ AssociationIterator Begin(getTrailingObjects<Stmt *>() +
+ AssocExprStartIndex,
+ getTrailingObjects<TypeSourceInfo *>(),
+ /*Offset=*/0, ResultIndex);
+ AssociationIterator End(Begin.E + NumAssocs, Begin.TSI + NumAssocs,
+ /*Offset=*/NumAssocs, ResultIndex);
+ return llvm::make_range(Begin, End);
+ }
+
+ const_association_range associations() const {
+ ConstAssociationIterator Begin(getTrailingObjects<Stmt *>() +
+ AssocExprStartIndex,
+ getTrailingObjects<TypeSourceInfo *>(),
+ /*Offset=*/0, ResultIndex);
+ ConstAssociationIterator End(Begin.E + NumAssocs, Begin.TSI + NumAssocs,
+ /*Offset=*/NumAssocs, ResultIndex);
+ return llvm::make_range(Begin, End);
+ }
+
+ SourceLocation getGenericLoc() const {
+ return GenericSelectionExprBits.GenericLoc;
+ }
+ SourceLocation getDefaultLoc() const { return DefaultLoc; }
+ SourceLocation getRParenLoc() const { return RParenLoc; }
+ SourceLocation getBeginLoc() const { return getGenericLoc(); }
+ SourceLocation getEndLoc() const { return getRParenLoc(); }
static bool classof(const Stmt *T) {
return T->getStmtClass() == GenericSelectionExprClass;
}
child_range children() {
- return child_range(SubExprs, SubExprs+END_EXPR+NumAssocs);
+ return child_range(getTrailingObjects<Stmt *>(),
+ getTrailingObjects<Stmt *>() +
+ numTrailingObjects(OverloadToken<Stmt *>()));
}
const_child_range children() const {
- return const_child_range(SubExprs, SubExprs + END_EXPR + NumAssocs);
+ return const_child_range(getTrailingObjects<Stmt *>(),
+ getTrailingObjects<Stmt *>() +
+ numTrailingObjects(OverloadToken<Stmt *>()));
}
- friend class ASTStmtReader;
};
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/AST/ExprCXX.h b/linux-x64/clang/include/clang/AST/ExprCXX.h
index 8fbd537..97be84e 100644
--- a/linux-x64/clang/include/clang/AST/ExprCXX.h
+++ b/linux-x64/clang/include/clang/AST/ExprCXX.h
@@ -1,9 +1,8 @@
//===- ExprCXX.h - Classes for representing expressions ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -75,43 +74,46 @@
/// function itself will be a (possibly empty) set of functions and
/// function templates that were found by name lookup at template
/// definition time.
-class CXXOperatorCallExpr : public CallExpr {
- /// The overloaded operator.
- OverloadedOperatorKind Operator;
-
- SourceRange Range;
-
- // Only meaningful for floating point types.
- FPOptions FPFeatures;
-
- SourceRange getSourceRangeImpl() const LLVM_READONLY;
-
-public:
+class CXXOperatorCallExpr final : public CallExpr {
friend class ASTStmtReader;
friend class ASTStmtWriter;
- CXXOperatorCallExpr(ASTContext& C, OverloadedOperatorKind Op, Expr *fn,
- ArrayRef<Expr*> args, QualType t, ExprValueKind VK,
- SourceLocation operatorloc, FPOptions FPFeatures)
- : CallExpr(C, CXXOperatorCallExprClass, fn, args, t, VK, operatorloc),
- Operator(Op), FPFeatures(FPFeatures) {
- Range = getSourceRangeImpl();
+ SourceRange Range;
+
+ // CXXOperatorCallExpr has some trailing objects belonging
+ // to CallExpr. See CallExpr for the details.
+
+ SourceRange getSourceRangeImpl() const LLVM_READONLY;
+
+ CXXOperatorCallExpr(OverloadedOperatorKind OpKind, Expr *Fn,
+ ArrayRef<Expr *> Args, QualType Ty, ExprValueKind VK,
+ SourceLocation OperatorLoc, FPOptions FPFeatures,
+ ADLCallKind UsesADL);
+
+ CXXOperatorCallExpr(unsigned NumArgs, EmptyShell Empty);
+
+public:
+ static CXXOperatorCallExpr *
+ Create(const ASTContext &Ctx, OverloadedOperatorKind OpKind, Expr *Fn,
+ ArrayRef<Expr *> Args, QualType Ty, ExprValueKind VK,
+ SourceLocation OperatorLoc, FPOptions FPFeatures,
+ ADLCallKind UsesADL = NotADL);
+
+ static CXXOperatorCallExpr *CreateEmpty(const ASTContext &Ctx,
+ unsigned NumArgs, EmptyShell Empty);
+
+ /// Returns the kind of overloaded operator that this expression refers to.
+ OverloadedOperatorKind getOperator() const {
+ return static_cast<OverloadedOperatorKind>(
+ CXXOperatorCallExprBits.OperatorKind);
}
- explicit CXXOperatorCallExpr(ASTContext& C, EmptyShell Empty)
- : CallExpr(C, CXXOperatorCallExprClass, Empty) {}
-
- /// Returns the kind of overloaded operator that this
- /// expression refers to.
- OverloadedOperatorKind getOperator() const { return Operator; }
-
static bool isAssignmentOp(OverloadedOperatorKind Opc) {
- return Opc == OO_Equal || Opc == OO_StarEqual ||
- Opc == OO_SlashEqual || Opc == OO_PercentEqual ||
- Opc == OO_PlusEqual || Opc == OO_MinusEqual ||
- Opc == OO_LessLessEqual || Opc == OO_GreaterGreaterEqual ||
- Opc == OO_AmpEqual || Opc == OO_CaretEqual ||
- Opc == OO_PipeEqual;
+ return Opc == OO_Equal || Opc == OO_StarEqual || Opc == OO_SlashEqual ||
+ Opc == OO_PercentEqual || Opc == OO_PlusEqual ||
+ Opc == OO_MinusEqual || Opc == OO_LessLessEqual ||
+ Opc == OO_GreaterGreaterEqual || Opc == OO_AmpEqual ||
+ Opc == OO_CaretEqual || Opc == OO_PipeEqual;
}
bool isAssignmentOp() const { return isAssignmentOp(getOperator()); }
@@ -126,14 +128,15 @@
SourceLocation getOperatorLoc() const { return getRParenLoc(); }
SourceLocation getExprLoc() const LLVM_READONLY {
+ OverloadedOperatorKind Operator = getOperator();
return (Operator < OO_Plus || Operator >= OO_Arrow ||
Operator == OO_PlusPlus || Operator == OO_MinusMinus)
? getBeginLoc()
: getOperatorLoc();
}
- SourceLocation getBeginLoc() const LLVM_READONLY { return Range.getBegin(); }
- SourceLocation getEndLoc() const LLVM_READONLY { return Range.getEnd(); }
+ SourceLocation getBeginLoc() const { return Range.getBegin(); }
+ SourceLocation getEndLoc() const { return Range.getEnd(); }
SourceRange getSourceRange() const { return Range; }
static bool classof(const Stmt *T) {
@@ -142,14 +145,17 @@
// Set the FP contractability status of this operator. Only meaningful for
// operations on floating point types.
- void setFPFeatures(FPOptions F) { FPFeatures = F; }
-
- FPOptions getFPFeatures() const { return FPFeatures; }
+ void setFPFeatures(FPOptions F) {
+ CXXOperatorCallExprBits.FPFeatures = F.getInt();
+ }
+ FPOptions getFPFeatures() const {
+ return FPOptions(CXXOperatorCallExprBits.FPFeatures);
+ }
// Get the FP contractability status of this operator. Only meaningful for
// operations on floating point types.
bool isFPContractableWithinStatement() const {
- return FPFeatures.allowFPContractWithinStatement();
+ return getFPFeatures().allowFPContractWithinStatement();
}
};
@@ -161,14 +167,23 @@
/// both the object argument and the member function, while the
/// arguments are the arguments within the parentheses (not including
/// the object argument).
-class CXXMemberCallExpr : public CallExpr {
-public:
- CXXMemberCallExpr(ASTContext &C, Expr *fn, ArrayRef<Expr*> args,
- QualType t, ExprValueKind VK, SourceLocation RP)
- : CallExpr(C, CXXMemberCallExprClass, fn, args, t, VK, RP) {}
+class CXXMemberCallExpr final : public CallExpr {
+ // CXXMemberCallExpr has some trailing objects belonging
+ // to CallExpr. See CallExpr for the details.
- CXXMemberCallExpr(ASTContext &C, EmptyShell Empty)
- : CallExpr(C, CXXMemberCallExprClass, Empty) {}
+ CXXMemberCallExpr(Expr *Fn, ArrayRef<Expr *> Args, QualType Ty,
+ ExprValueKind VK, SourceLocation RP, unsigned MinNumArgs);
+
+ CXXMemberCallExpr(unsigned NumArgs, EmptyShell Empty);
+
+public:
+ static CXXMemberCallExpr *Create(const ASTContext &Ctx, Expr *Fn,
+ ArrayRef<Expr *> Args, QualType Ty,
+ ExprValueKind VK, SourceLocation RP,
+ unsigned MinNumArgs = 0);
+
+ static CXXMemberCallExpr *CreateEmpty(const ASTContext &Ctx, unsigned NumArgs,
+ EmptyShell Empty);
/// Retrieves the implicit object argument for the member call.
///
@@ -200,18 +215,26 @@
};
/// Represents a call to a CUDA kernel function.
-class CUDAKernelCallExpr : public CallExpr {
-private:
+class CUDAKernelCallExpr final : public CallExpr {
enum { CONFIG, END_PREARG };
-public:
- CUDAKernelCallExpr(ASTContext &C, Expr *fn, CallExpr *Config,
- ArrayRef<Expr*> args, QualType t, ExprValueKind VK,
- SourceLocation RP)
- : CallExpr(C, CUDAKernelCallExprClass, fn, Config, args, t, VK, RP) {}
+ // CUDAKernelCallExpr has some trailing objects belonging
+ // to CallExpr. See CallExpr for the details.
- CUDAKernelCallExpr(ASTContext &C, EmptyShell Empty)
- : CallExpr(C, CUDAKernelCallExprClass, END_PREARG, Empty) {}
+ CUDAKernelCallExpr(Expr *Fn, CallExpr *Config, ArrayRef<Expr *> Args,
+ QualType Ty, ExprValueKind VK, SourceLocation RP,
+ unsigned MinNumArgs);
+
+ CUDAKernelCallExpr(unsigned NumArgs, EmptyShell Empty);
+
+public:
+ static CUDAKernelCallExpr *Create(const ASTContext &Ctx, Expr *Fn,
+ CallExpr *Config, ArrayRef<Expr *> Args,
+ QualType Ty, ExprValueKind VK,
+ SourceLocation RP, unsigned MinNumArgs = 0);
+
+ static CUDAKernelCallExpr *CreateEmpty(const ASTContext &Ctx,
+ unsigned NumArgs, EmptyShell Empty);
const CallExpr *getConfig() const {
return cast_or_null<CallExpr>(getPreArg(CONFIG));
@@ -301,8 +324,7 @@
/// \c static_cast<int>(1.0).
class CXXStaticCastExpr final
: public CXXNamedCastExpr,
- private llvm::TrailingObjects<CXXStaticCastExpr, CastExpr::BasePathSizeTy,
- CXXBaseSpecifier *> {
+ private llvm::TrailingObjects<CXXStaticCastExpr, CXXBaseSpecifier *> {
CXXStaticCastExpr(QualType ty, ExprValueKind vk, CastKind kind, Expr *op,
unsigned pathSize, TypeSourceInfo *writtenTy,
SourceLocation l, SourceLocation RParenLoc,
@@ -313,10 +335,6 @@
explicit CXXStaticCastExpr(EmptyShell Empty, unsigned PathSize)
: CXXNamedCastExpr(CXXStaticCastExprClass, Empty, PathSize) {}
- size_t numTrailingObjects(OverloadToken<CastExpr::BasePathSizeTy>) const {
- return path_empty() ? 0 : 1;
- }
-
public:
friend class CastExpr;
friend TrailingObjects;
@@ -342,8 +360,7 @@
/// check to determine how to perform the type conversion.
class CXXDynamicCastExpr final
: public CXXNamedCastExpr,
- private llvm::TrailingObjects<
- CXXDynamicCastExpr, CastExpr::BasePathSizeTy, CXXBaseSpecifier *> {
+ private llvm::TrailingObjects<CXXDynamicCastExpr, CXXBaseSpecifier *> {
CXXDynamicCastExpr(QualType ty, ExprValueKind VK, CastKind kind,
Expr *op, unsigned pathSize, TypeSourceInfo *writtenTy,
SourceLocation l, SourceLocation RParenLoc,
@@ -354,10 +371,6 @@
explicit CXXDynamicCastExpr(EmptyShell Empty, unsigned pathSize)
: CXXNamedCastExpr(CXXDynamicCastExprClass, Empty, pathSize) {}
- size_t numTrailingObjects(OverloadToken<CastExpr::BasePathSizeTy>) const {
- return path_empty() ? 0 : 1;
- }
-
public:
friend class CastExpr;
friend TrailingObjects;
@@ -390,7 +403,6 @@
class CXXReinterpretCastExpr final
: public CXXNamedCastExpr,
private llvm::TrailingObjects<CXXReinterpretCastExpr,
- CastExpr::BasePathSizeTy,
CXXBaseSpecifier *> {
CXXReinterpretCastExpr(QualType ty, ExprValueKind vk, CastKind kind,
Expr *op, unsigned pathSize,
@@ -403,10 +415,6 @@
CXXReinterpretCastExpr(EmptyShell Empty, unsigned pathSize)
: CXXNamedCastExpr(CXXReinterpretCastExprClass, Empty, pathSize) {}
- size_t numTrailingObjects(OverloadToken<CastExpr::BasePathSizeTy>) const {
- return path_empty() ? 0 : 1;
- }
-
public:
friend class CastExpr;
friend TrailingObjects;
@@ -434,8 +442,7 @@
/// value.
class CXXConstCastExpr final
: public CXXNamedCastExpr,
- private llvm::TrailingObjects<CXXConstCastExpr, CastExpr::BasePathSizeTy,
- CXXBaseSpecifier *> {
+ private llvm::TrailingObjects<CXXConstCastExpr, CXXBaseSpecifier *> {
CXXConstCastExpr(QualType ty, ExprValueKind VK, Expr *op,
TypeSourceInfo *writtenTy, SourceLocation l,
SourceLocation RParenLoc, SourceRange AngleBrackets)
@@ -445,10 +452,6 @@
explicit CXXConstCastExpr(EmptyShell Empty)
: CXXNamedCastExpr(CXXConstCastExprClass, Empty, 0) {}
- size_t numTrailingObjects(OverloadToken<CastExpr::BasePathSizeTy>) const {
- return path_empty() ? 0 : 1;
- }
-
public:
friend class CastExpr;
friend TrailingObjects;
@@ -474,22 +477,30 @@
///
/// Since literal operators are never found by ADL and can only be declared at
/// namespace scope, a user-defined literal is never dependent.
-class UserDefinedLiteral : public CallExpr {
- /// The location of a ud-suffix within the literal.
- SourceLocation UDSuffixLoc;
-
-public:
+class UserDefinedLiteral final : public CallExpr {
friend class ASTStmtReader;
friend class ASTStmtWriter;
- UserDefinedLiteral(const ASTContext &C, Expr *Fn, ArrayRef<Expr*> Args,
- QualType T, ExprValueKind VK, SourceLocation LitEndLoc,
- SourceLocation SuffixLoc)
- : CallExpr(C, UserDefinedLiteralClass, Fn, Args, T, VK, LitEndLoc),
- UDSuffixLoc(SuffixLoc) {}
+ /// The location of a ud-suffix within the literal.
+ SourceLocation UDSuffixLoc;
- explicit UserDefinedLiteral(const ASTContext &C, EmptyShell Empty)
- : CallExpr(C, UserDefinedLiteralClass, Empty) {}
+ // UserDefinedLiteral has some trailing objects belonging
+ // to CallExpr. See CallExpr for the details.
+
+ UserDefinedLiteral(Expr *Fn, ArrayRef<Expr *> Args, QualType Ty,
+ ExprValueKind VK, SourceLocation LitEndLoc,
+ SourceLocation SuffixLoc);
+
+ UserDefinedLiteral(unsigned NumArgs, EmptyShell Empty);
+
+public:
+ static UserDefinedLiteral *Create(const ASTContext &Ctx, Expr *Fn,
+ ArrayRef<Expr *> Args, QualType Ty,
+ ExprValueKind VK, SourceLocation LitEndLoc,
+ SourceLocation SuffixLoc);
+
+ static UserDefinedLiteral *CreateEmpty(const ASTContext &Ctx,
+ unsigned NumArgs, EmptyShell Empty);
/// The kind of literal operator which is invoked.
enum LiteralOperatorKind {
@@ -548,26 +559,25 @@
/// A boolean literal, per ([C++ lex.bool] Boolean literals).
class CXXBoolLiteralExpr : public Expr {
- bool Value;
- SourceLocation Loc;
-
public:
- CXXBoolLiteralExpr(bool val, QualType Ty, SourceLocation l)
+ CXXBoolLiteralExpr(bool Val, QualType Ty, SourceLocation Loc)
: Expr(CXXBoolLiteralExprClass, Ty, VK_RValue, OK_Ordinary, false, false,
- false, false),
- Value(val), Loc(l) {}
+ false, false) {
+ CXXBoolLiteralExprBits.Value = Val;
+ CXXBoolLiteralExprBits.Loc = Loc;
+ }
explicit CXXBoolLiteralExpr(EmptyShell Empty)
: Expr(CXXBoolLiteralExprClass, Empty) {}
- bool getValue() const { return Value; }
- void setValue(bool V) { Value = V; }
+ bool getValue() const { return CXXBoolLiteralExprBits.Value; }
+ void setValue(bool V) { CXXBoolLiteralExprBits.Value = V; }
- SourceLocation getBeginLoc() const LLVM_READONLY { return Loc; }
- SourceLocation getEndLoc() const LLVM_READONLY { return Loc; }
+ SourceLocation getBeginLoc() const { return getLocation(); }
+ SourceLocation getEndLoc() const { return getLocation(); }
- SourceLocation getLocation() const { return Loc; }
- void setLocation(SourceLocation L) { Loc = L; }
+ SourceLocation getLocation() const { return CXXBoolLiteralExprBits.Loc; }
+ void setLocation(SourceLocation L) { CXXBoolLiteralExprBits.Loc = L; }
static bool classof(const Stmt *T) {
return T->getStmtClass() == CXXBoolLiteralExprClass;
@@ -583,22 +593,21 @@
///
/// Introduced in C++11, the only literal of type \c nullptr_t is \c nullptr.
class CXXNullPtrLiteralExpr : public Expr {
- SourceLocation Loc;
-
public:
- CXXNullPtrLiteralExpr(QualType Ty, SourceLocation l)
+ CXXNullPtrLiteralExpr(QualType Ty, SourceLocation Loc)
: Expr(CXXNullPtrLiteralExprClass, Ty, VK_RValue, OK_Ordinary, false,
- false, false, false),
- Loc(l) {}
+ false, false, false) {
+ CXXNullPtrLiteralExprBits.Loc = Loc;
+ }
explicit CXXNullPtrLiteralExpr(EmptyShell Empty)
: Expr(CXXNullPtrLiteralExprClass, Empty) {}
- SourceLocation getBeginLoc() const LLVM_READONLY { return Loc; }
- SourceLocation getEndLoc() const LLVM_READONLY { return Loc; }
+ SourceLocation getBeginLoc() const { return getLocation(); }
+ SourceLocation getEndLoc() const { return getLocation(); }
- SourceLocation getLocation() const { return Loc; }
- void setLocation(SourceLocation L) { Loc = L; }
+ SourceLocation getLocation() const { return CXXNullPtrLiteralExprBits.Loc; }
+ void setLocation(SourceLocation L) { CXXNullPtrLiteralExprBits.Loc = L; }
static bool classof(const Stmt *T) {
return T->getStmtClass() == CXXNullPtrLiteralExprClass;
@@ -964,29 +973,28 @@
/// };
/// \endcode
class CXXThisExpr : public Expr {
- SourceLocation Loc;
- bool Implicit : 1;
-
public:
- CXXThisExpr(SourceLocation L, QualType Type, bool isImplicit)
- : Expr(CXXThisExprClass, Type, VK_RValue, OK_Ordinary,
+ CXXThisExpr(SourceLocation L, QualType Ty, bool IsImplicit)
+ : Expr(CXXThisExprClass, Ty, VK_RValue, OK_Ordinary,
// 'this' is type-dependent if the class type of the enclosing
// member function is dependent (C++ [temp.dep.expr]p2)
- Type->isDependentType(), Type->isDependentType(),
- Type->isInstantiationDependentType(),
- /*ContainsUnexpandedParameterPack=*/false),
- Loc(L), Implicit(isImplicit) {}
+ Ty->isDependentType(), Ty->isDependentType(),
+ Ty->isInstantiationDependentType(),
+ /*ContainsUnexpandedParameterPack=*/false) {
+ CXXThisExprBits.IsImplicit = IsImplicit;
+ CXXThisExprBits.Loc = L;
+ }
CXXThisExpr(EmptyShell Empty) : Expr(CXXThisExprClass, Empty) {}
- SourceLocation getLocation() const { return Loc; }
- void setLocation(SourceLocation L) { Loc = L; }
+ SourceLocation getLocation() const { return CXXThisExprBits.Loc; }
+ void setLocation(SourceLocation L) { CXXThisExprBits.Loc = L; }
- SourceLocation getBeginLoc() const LLVM_READONLY { return Loc; }
- SourceLocation getEndLoc() const LLVM_READONLY { return Loc; }
+ SourceLocation getBeginLoc() const { return getLocation(); }
+ SourceLocation getEndLoc() const { return getLocation(); }
- bool isImplicit() const { return Implicit; }
- void setImplicit(bool I) { Implicit = I; }
+ bool isImplicit() const { return CXXThisExprBits.IsImplicit; }
+ void setImplicit(bool I) { CXXThisExprBits.IsImplicit = I; }
static bool classof(const Stmt *T) {
return T->getStmtClass() == CXXThisExprClass;
@@ -1006,42 +1014,43 @@
class CXXThrowExpr : public Expr {
friend class ASTStmtReader;
- Stmt *Op;
- SourceLocation ThrowLoc;
-
- /// Whether the thrown variable (if any) is in scope.
- unsigned IsThrownVariableInScope : 1;
+ /// The optional expression in the throw statement.
+ Stmt *Operand;
public:
// \p Ty is the void type which is used as the result type of the
- // expression. The \p l is the location of the throw keyword. \p expr
- // can by null, if the optional expression to throw isn't present.
- CXXThrowExpr(Expr *expr, QualType Ty, SourceLocation l,
+ // expression. The \p Loc is the location of the throw keyword.
+ // \p Operand is the expression in the throw statement, and can be
+ // null if not present.
+ CXXThrowExpr(Expr *Operand, QualType Ty, SourceLocation Loc,
bool IsThrownVariableInScope)
: Expr(CXXThrowExprClass, Ty, VK_RValue, OK_Ordinary, false, false,
- expr && expr->isInstantiationDependent(),
- expr && expr->containsUnexpandedParameterPack()),
- Op(expr), ThrowLoc(l),
- IsThrownVariableInScope(IsThrownVariableInScope) {}
+ Operand && Operand->isInstantiationDependent(),
+ Operand && Operand->containsUnexpandedParameterPack()),
+ Operand(Operand) {
+ CXXThrowExprBits.ThrowLoc = Loc;
+ CXXThrowExprBits.IsThrownVariableInScope = IsThrownVariableInScope;
+ }
CXXThrowExpr(EmptyShell Empty) : Expr(CXXThrowExprClass, Empty) {}
- const Expr *getSubExpr() const { return cast_or_null<Expr>(Op); }
- Expr *getSubExpr() { return cast_or_null<Expr>(Op); }
+ const Expr *getSubExpr() const { return cast_or_null<Expr>(Operand); }
+ Expr *getSubExpr() { return cast_or_null<Expr>(Operand); }
- SourceLocation getThrowLoc() const { return ThrowLoc; }
+ SourceLocation getThrowLoc() const { return CXXThrowExprBits.ThrowLoc; }
/// Determines whether the variable thrown by this expression (if any!)
/// is within the innermost try block.
///
/// This information is required to determine whether the NRVO can apply to
/// this variable.
- bool isThrownVariableInScope() const { return IsThrownVariableInScope; }
+ bool isThrownVariableInScope() const {
+ return CXXThrowExprBits.IsThrownVariableInScope;
+ }
- SourceLocation getBeginLoc() const LLVM_READONLY { return ThrowLoc; }
-
+ SourceLocation getBeginLoc() const { return getThrowLoc(); }
SourceLocation getEndLoc() const LLVM_READONLY {
if (!getSubExpr())
- return ThrowLoc;
+ return getThrowLoc();
return getSubExpr()->getEndLoc();
}
@@ -1051,7 +1060,7 @@
// Iterators
child_range children() {
- return child_range(&Op, Op ? &Op+1 : &Op);
+ return child_range(&Operand, Operand ? &Operand + 1 : &Operand);
}
};
@@ -1061,26 +1070,24 @@
/// corresponding parameter's default argument, when the call did not
/// explicitly supply arguments for all of the parameters.
class CXXDefaultArgExpr final : public Expr {
+ friend class ASTStmtReader;
+
/// The parameter whose default is being used.
ParmVarDecl *Param;
- /// The location where the default argument expression was used.
- SourceLocation Loc;
-
- CXXDefaultArgExpr(StmtClass SC, SourceLocation Loc, ParmVarDecl *param)
+ CXXDefaultArgExpr(StmtClass SC, SourceLocation Loc, ParmVarDecl *Param)
: Expr(SC,
- param->hasUnparsedDefaultArg()
- ? param->getType().getNonReferenceType()
- : param->getDefaultArg()->getType(),
- param->getDefaultArg()->getValueKind(),
- param->getDefaultArg()->getObjectKind(), false, false, false,
+ Param->hasUnparsedDefaultArg()
+ ? Param->getType().getNonReferenceType()
+ : Param->getDefaultArg()->getType(),
+ Param->getDefaultArg()->getValueKind(),
+ Param->getDefaultArg()->getObjectKind(), false, false, false,
false),
- Param(param), Loc(Loc) {}
+ Param(Param) {
+ CXXDefaultArgExprBits.Loc = Loc;
+ }
public:
- friend class ASTStmtReader;
- friend class ASTStmtWriter;
-
CXXDefaultArgExpr(EmptyShell Empty) : Expr(CXXDefaultArgExprClass, Empty) {}
// \p Param is the parameter whose default argument is used by this
@@ -1095,23 +1102,18 @@
ParmVarDecl *getParam() { return Param; }
// Retrieve the actual argument to the function call.
- const Expr *getExpr() const {
- return getParam()->getDefaultArg();
- }
- Expr *getExpr() {
- return getParam()->getDefaultArg();
- }
+ const Expr *getExpr() const { return getParam()->getDefaultArg(); }
+ Expr *getExpr() { return getParam()->getDefaultArg(); }
- /// Retrieve the location where this default argument was actually
- /// used.
- SourceLocation getUsedLocation() const { return Loc; }
+ /// Retrieve the location where this default argument was actually used.
+ SourceLocation getUsedLocation() const { return CXXDefaultArgExprBits.Loc; }
/// Default argument expressions have no representation in the
/// source, so they have an empty source range.
- SourceLocation getBeginLoc() const LLVM_READONLY { return SourceLocation(); }
- SourceLocation getEndLoc() const LLVM_READONLY { return SourceLocation(); }
+ SourceLocation getBeginLoc() const { return SourceLocation(); }
+ SourceLocation getEndLoc() const { return SourceLocation(); }
- SourceLocation getExprLoc() const LLVM_READONLY { return Loc; }
+ SourceLocation getExprLoc() const { return getUsedLocation(); }
static bool classof(const Stmt *T) {
return T->getStmtClass() == CXXDefaultArgExprClass;
@@ -1132,26 +1134,23 @@
/// (C++11 [class.base.init]p8) or in aggregate initialization
/// (C++1y [dcl.init.aggr]p7).
class CXXDefaultInitExpr : public Expr {
+ friend class ASTReader;
+ friend class ASTStmtReader;
+
/// The field whose default is being used.
FieldDecl *Field;
- /// The location where the default initializer expression was used.
- SourceLocation Loc;
-
- CXXDefaultInitExpr(const ASTContext &C, SourceLocation Loc, FieldDecl *Field,
- QualType T);
+ CXXDefaultInitExpr(const ASTContext &Ctx, SourceLocation Loc,
+ FieldDecl *Field, QualType Ty);
CXXDefaultInitExpr(EmptyShell Empty) : Expr(CXXDefaultInitExprClass, Empty) {}
public:
- friend class ASTReader;
- friend class ASTStmtReader;
-
/// \p Field is the non-static data member whose default initializer is used
/// by this expression.
- static CXXDefaultInitExpr *Create(const ASTContext &C, SourceLocation Loc,
+ static CXXDefaultInitExpr *Create(const ASTContext &Ctx, SourceLocation Loc,
FieldDecl *Field) {
- return new (C) CXXDefaultInitExpr(C, Loc, Field, Field->getType());
+ return new (Ctx) CXXDefaultInitExpr(Ctx, Loc, Field, Field->getType());
}
/// Get the field whose initializer will be used.
@@ -1168,8 +1167,8 @@
return Field->getInClassInitializer();
}
- SourceLocation getBeginLoc() const LLVM_READONLY { return Loc; }
- SourceLocation getEndLoc() const LLVM_READONLY { return Loc; }
+ SourceLocation getBeginLoc() const { return CXXDefaultInitExprBits.Loc; }
+ SourceLocation getEndLoc() const { return CXXDefaultInitExprBits.Loc; }
static bool classof(const Stmt *T) {
return T->getStmtClass() == CXXDefaultInitExprClass;
@@ -1260,6 +1259,8 @@
/// Represents a call to a C++ constructor.
class CXXConstructExpr : public Expr {
+ friend class ASTStmtReader;
+
public:
enum ConstructionKind {
CK_Complete,
@@ -1269,98 +1270,119 @@
};
private:
- CXXConstructorDecl *Constructor = nullptr;
- SourceLocation Loc;
- SourceRange ParenOrBraceRange;
- unsigned NumArgs : 16;
- unsigned Elidable : 1;
- unsigned HadMultipleCandidates : 1;
- unsigned ListInitialization : 1;
- unsigned StdInitListInitialization : 1;
- unsigned ZeroInitialization : 1;
- unsigned ConstructKind : 2;
- Stmt **Args = nullptr;
+ /// A pointer to the constructor which will be ultimately called.
+ CXXConstructorDecl *Constructor;
- void setConstructor(CXXConstructorDecl *C) { Constructor = C; }
+ SourceRange ParenOrBraceRange;
+
+ /// The number of arguments.
+ unsigned NumArgs;
+
+ // We would like to stash the arguments of the constructor call after
+ // CXXConstructExpr. However CXXConstructExpr is used as a base class of
+ // CXXTemporaryObjectExpr which makes the use of llvm::TrailingObjects
+ // impossible.
+ //
+ // Instead we manually stash the trailing object after the full object
+ // containing CXXConstructExpr (that is either CXXConstructExpr or
+ // CXXTemporaryObjectExpr).
+ //
+ // The trailing objects are:
+ //
+ // * An array of getNumArgs() "Stmt *" for the arguments of the
+ // constructor call.
+
+ /// Return a pointer to the start of the trailing arguments.
+ /// Defined just after CXXTemporaryObjectExpr.
+ inline Stmt **getTrailingArgs();
+ const Stmt *const *getTrailingArgs() const {
+ return const_cast<CXXConstructExpr *>(this)->getTrailingArgs();
+ }
protected:
- CXXConstructExpr(const ASTContext &C, StmtClass SC, QualType T,
- SourceLocation Loc,
- CXXConstructorDecl *Ctor,
- bool Elidable,
- ArrayRef<Expr *> Args,
- bool HadMultipleCandidates,
- bool ListInitialization,
- bool StdInitListInitialization,
- bool ZeroInitialization,
- ConstructionKind ConstructKind,
+ /// Build a C++ construction expression.
+ CXXConstructExpr(StmtClass SC, QualType Ty, SourceLocation Loc,
+ CXXConstructorDecl *Ctor, bool Elidable,
+ ArrayRef<Expr *> Args, bool HadMultipleCandidates,
+ bool ListInitialization, bool StdInitListInitialization,
+ bool ZeroInitialization, ConstructionKind ConstructKind,
SourceRange ParenOrBraceRange);
- /// Construct an empty C++ construction expression.
- CXXConstructExpr(StmtClass SC, EmptyShell Empty)
- : Expr(SC, Empty), NumArgs(0), Elidable(false),
- HadMultipleCandidates(false), ListInitialization(false),
- ZeroInitialization(false), ConstructKind(0) {}
+ /// Build an empty C++ construction expression.
+ CXXConstructExpr(StmtClass SC, EmptyShell Empty, unsigned NumArgs);
+
+ /// Return the size in bytes of the trailing objects. Used by
+ /// CXXTemporaryObjectExpr to allocate the right amount of storage.
+ static unsigned sizeOfTrailingObjects(unsigned NumArgs) {
+ return NumArgs * sizeof(Stmt *);
+ }
public:
- friend class ASTStmtReader;
+ /// Create a C++ construction expression.
+ static CXXConstructExpr *
+ Create(const ASTContext &Ctx, QualType Ty, SourceLocation Loc,
+ CXXConstructorDecl *Ctor, bool Elidable, ArrayRef<Expr *> Args,
+ bool HadMultipleCandidates, bool ListInitialization,
+ bool StdInitListInitialization, bool ZeroInitialization,
+ ConstructionKind ConstructKind, SourceRange ParenOrBraceRange);
- /// Construct an empty C++ construction expression.
- explicit CXXConstructExpr(EmptyShell Empty)
- : CXXConstructExpr(CXXConstructExprClass, Empty) {}
-
- static CXXConstructExpr *Create(const ASTContext &C, QualType T,
- SourceLocation Loc,
- CXXConstructorDecl *Ctor,
- bool Elidable,
- ArrayRef<Expr *> Args,
- bool HadMultipleCandidates,
- bool ListInitialization,
- bool StdInitListInitialization,
- bool ZeroInitialization,
- ConstructionKind ConstructKind,
- SourceRange ParenOrBraceRange);
+ /// Create an empty C++ construction expression.
+ static CXXConstructExpr *CreateEmpty(const ASTContext &Ctx, unsigned NumArgs);
/// Get the constructor that this expression will (ultimately) call.
CXXConstructorDecl *getConstructor() const { return Constructor; }
- SourceLocation getLocation() const { return Loc; }
- void setLocation(SourceLocation Loc) { this->Loc = Loc; }
+ SourceLocation getLocation() const { return CXXConstructExprBits.Loc; }
+ void setLocation(SourceLocation Loc) { CXXConstructExprBits.Loc = Loc; }
/// Whether this construction is elidable.
- bool isElidable() const { return Elidable; }
- void setElidable(bool E) { Elidable = E; }
+ bool isElidable() const { return CXXConstructExprBits.Elidable; }
+ void setElidable(bool E) { CXXConstructExprBits.Elidable = E; }
/// Whether the referred constructor was resolved from
/// an overloaded set having size greater than 1.
- bool hadMultipleCandidates() const { return HadMultipleCandidates; }
- void setHadMultipleCandidates(bool V) { HadMultipleCandidates = V; }
+ bool hadMultipleCandidates() const {
+ return CXXConstructExprBits.HadMultipleCandidates;
+ }
+ void setHadMultipleCandidates(bool V) {
+ CXXConstructExprBits.HadMultipleCandidates = V;
+ }
/// Whether this constructor call was written as list-initialization.
- bool isListInitialization() const { return ListInitialization; }
- void setListInitialization(bool V) { ListInitialization = V; }
+ bool isListInitialization() const {
+ return CXXConstructExprBits.ListInitialization;
+ }
+ void setListInitialization(bool V) {
+ CXXConstructExprBits.ListInitialization = V;
+ }
/// Whether this constructor call was written as list-initialization,
/// but was interpreted as forming a std::initializer_list<T> from the list
/// and passing that as a single constructor argument.
/// See C++11 [over.match.list]p1 bullet 1.
- bool isStdInitListInitialization() const { return StdInitListInitialization; }
- void setStdInitListInitialization(bool V) { StdInitListInitialization = V; }
+ bool isStdInitListInitialization() const {
+ return CXXConstructExprBits.StdInitListInitialization;
+ }
+ void setStdInitListInitialization(bool V) {
+ CXXConstructExprBits.StdInitListInitialization = V;
+ }
/// Whether this construction first requires
/// zero-initialization before the initializer is called.
- bool requiresZeroInitialization() const { return ZeroInitialization; }
+ bool requiresZeroInitialization() const {
+ return CXXConstructExprBits.ZeroInitialization;
+ }
void setRequiresZeroInitialization(bool ZeroInit) {
- ZeroInitialization = ZeroInit;
+ CXXConstructExprBits.ZeroInitialization = ZeroInit;
}
/// Determine whether this constructor is actually constructing
/// a base class (rather than a complete object).
ConstructionKind getConstructionKind() const {
- return (ConstructionKind)ConstructKind;
+ return static_cast<ConstructionKind>(CXXConstructExprBits.ConstructionKind);
}
void setConstructionKind(ConstructionKind CK) {
- ConstructKind = CK;
+ CXXConstructExprBits.ConstructionKind = CK;
}
using arg_iterator = ExprIterator;
@@ -1373,31 +1395,33 @@
return const_arg_range(arg_begin(), arg_end());
}
- arg_iterator arg_begin() { return Args; }
- arg_iterator arg_end() { return Args + NumArgs; }
- const_arg_iterator arg_begin() const { return Args; }
- const_arg_iterator arg_end() const { return Args + NumArgs; }
+ arg_iterator arg_begin() { return getTrailingArgs(); }
+ arg_iterator arg_end() { return arg_begin() + getNumArgs(); }
+ const_arg_iterator arg_begin() const { return getTrailingArgs(); }
+ const_arg_iterator arg_end() const { return arg_begin() + getNumArgs(); }
- Expr **getArgs() { return reinterpret_cast<Expr **>(Args); }
+ Expr **getArgs() { return reinterpret_cast<Expr **>(getTrailingArgs()); }
const Expr *const *getArgs() const {
- return const_cast<CXXConstructExpr *>(this)->getArgs();
+ return reinterpret_cast<const Expr *const *>(getTrailingArgs());
}
+
+ /// Return the number of arguments to the constructor call.
unsigned getNumArgs() const { return NumArgs; }
/// Return the specified argument.
Expr *getArg(unsigned Arg) {
- assert(Arg < NumArgs && "Arg access out of range!");
- return cast<Expr>(Args[Arg]);
+ assert(Arg < getNumArgs() && "Arg access out of range!");
+ return getArgs()[Arg];
}
const Expr *getArg(unsigned Arg) const {
- assert(Arg < NumArgs && "Arg access out of range!");
- return cast<Expr>(Args[Arg]);
+ assert(Arg < getNumArgs() && "Arg access out of range!");
+ return getArgs()[Arg];
}
/// Set the specified argument.
void setArg(unsigned Arg, Expr *ArgExpr) {
- assert(Arg < NumArgs && "Arg access out of range!");
- Args[Arg] = ArgExpr;
+ assert(Arg < getNumArgs() && "Arg access out of range!");
+ getArgs()[Arg] = ArgExpr;
}
SourceLocation getBeginLoc() const LLVM_READONLY;
@@ -1407,12 +1431,12 @@
static bool classof(const Stmt *T) {
return T->getStmtClass() == CXXConstructExprClass ||
- T->getStmtClass() == CXXTemporaryObjectExprClass;
+ T->getStmtClass() == CXXTemporaryObjectExprClass;
}
// Iterators
child_range children() {
- return child_range(&Args[0], &Args[0]+NumArgs);
+ return child_range(getTrailingArgs(), getTrailingArgs() + getNumArgs());
}
};
@@ -1493,8 +1517,7 @@
/// \endcode
class CXXFunctionalCastExpr final
: public ExplicitCastExpr,
- private llvm::TrailingObjects<
- CXXFunctionalCastExpr, CastExpr::BasePathSizeTy, CXXBaseSpecifier *> {
+ private llvm::TrailingObjects<CXXFunctionalCastExpr, CXXBaseSpecifier *> {
SourceLocation LParenLoc;
SourceLocation RParenLoc;
@@ -1509,10 +1532,6 @@
explicit CXXFunctionalCastExpr(EmptyShell Shell, unsigned PathSize)
: ExplicitCastExpr(CXXFunctionalCastExprClass, Shell, PathSize) {}
- size_t numTrailingObjects(OverloadToken<CastExpr::BasePathSizeTy>) const {
- return path_empty() ? 0 : 1;
- }
-
public:
friend class CastExpr;
friend TrailingObjects;
@@ -1558,26 +1577,36 @@
/// return X(1, 3.14f); // creates a CXXTemporaryObjectExpr
/// };
/// \endcode
-class CXXTemporaryObjectExpr : public CXXConstructExpr {
- TypeSourceInfo *Type = nullptr;
-
-public:
+class CXXTemporaryObjectExpr final : public CXXConstructExpr {
friend class ASTStmtReader;
- CXXTemporaryObjectExpr(const ASTContext &C,
- CXXConstructorDecl *Cons,
- QualType Type,
- TypeSourceInfo *TSI,
- ArrayRef<Expr *> Args,
+ // CXXTemporaryObjectExpr has some trailing objects belonging
+ // to CXXConstructExpr. See the comment inside CXXConstructExpr
+ // for more details.
+
+ TypeSourceInfo *TSI;
+
+ CXXTemporaryObjectExpr(CXXConstructorDecl *Cons, QualType Ty,
+ TypeSourceInfo *TSI, ArrayRef<Expr *> Args,
SourceRange ParenOrBraceRange,
- bool HadMultipleCandidates,
- bool ListInitialization,
+ bool HadMultipleCandidates, bool ListInitialization,
bool StdInitListInitialization,
bool ZeroInitialization);
- explicit CXXTemporaryObjectExpr(EmptyShell Empty)
- : CXXConstructExpr(CXXTemporaryObjectExprClass, Empty) {}
- TypeSourceInfo *getTypeSourceInfo() const { return Type; }
+ CXXTemporaryObjectExpr(EmptyShell Empty, unsigned NumArgs);
+
+public:
+ static CXXTemporaryObjectExpr *
+ Create(const ASTContext &Ctx, CXXConstructorDecl *Cons, QualType Ty,
+ TypeSourceInfo *TSI, ArrayRef<Expr *> Args,
+ SourceRange ParenOrBraceRange, bool HadMultipleCandidates,
+ bool ListInitialization, bool StdInitListInitialization,
+ bool ZeroInitialization);
+
+ static CXXTemporaryObjectExpr *CreateEmpty(const ASTContext &Ctx,
+ unsigned NumArgs);
+
+ TypeSourceInfo *getTypeSourceInfo() const { return TSI; }
SourceLocation getBeginLoc() const LLVM_READONLY;
SourceLocation getEndLoc() const LLVM_READONLY;
@@ -1587,6 +1616,14 @@
}
};
+Stmt **CXXConstructExpr::getTrailingArgs() {
+ if (auto *E = dyn_cast<CXXTemporaryObjectExpr>(this))
+ return reinterpret_cast<Stmt **>(E + 1);
+ assert((getStmtClass() == CXXConstructExprClass) &&
+ "Unexpected class deriving from CXXConstructExpr!");
+ return reinterpret_cast<Stmt **>(this + 1);
+}
+
/// A C++ lambda expression, which produces a function object
/// (of unspecified type) that can be invoked later.
///
@@ -1833,18 +1870,19 @@
class CXXScalarValueInitExpr : public Expr {
friend class ASTStmtReader;
- SourceLocation RParenLoc;
TypeSourceInfo *TypeInfo;
public:
/// Create an explicitly-written scalar-value initialization
/// expression.
CXXScalarValueInitExpr(QualType Type, TypeSourceInfo *TypeInfo,
- SourceLocation rParenLoc)
- : Expr(CXXScalarValueInitExprClass, Type, VK_RValue, OK_Ordinary,
- false, false, Type->isInstantiationDependentType(),
+ SourceLocation RParenLoc)
+ : Expr(CXXScalarValueInitExprClass, Type, VK_RValue, OK_Ordinary, false,
+ false, Type->isInstantiationDependentType(),
Type->containsUnexpandedParameterPack()),
- RParenLoc(rParenLoc), TypeInfo(TypeInfo) {}
+ TypeInfo(TypeInfo) {
+ CXXScalarValueInitExprBits.RParenLoc = RParenLoc;
+ }
explicit CXXScalarValueInitExpr(EmptyShell Shell)
: Expr(CXXScalarValueInitExprClass, Shell) {}
@@ -1853,10 +1891,12 @@
return TypeInfo;
}
- SourceLocation getRParenLoc() const { return RParenLoc; }
+ SourceLocation getRParenLoc() const {
+ return CXXScalarValueInitExprBits.RParenLoc;
+ }
SourceLocation getBeginLoc() const LLVM_READONLY;
- SourceLocation getEndLoc() const LLVM_READONLY { return RParenLoc; }
+ SourceLocation getEndLoc() const { return getRParenLoc(); }
static bool classof(const Stmt *T) {
return T->getStmtClass() == CXXScalarValueInitExprClass;
@@ -1870,54 +1910,56 @@
/// Represents a new-expression for memory allocation and constructor
/// calls, e.g: "new CXXNewExpr(foo)".
-class CXXNewExpr : public Expr {
+class CXXNewExpr final
+ : public Expr,
+ private llvm::TrailingObjects<CXXNewExpr, Stmt *, SourceRange> {
friend class ASTStmtReader;
friend class ASTStmtWriter;
-
- /// Contains an optional array size expression, an optional initialization
- /// expression, and any number of optional placement arguments, in that order.
- Stmt **SubExprs = nullptr;
+ friend TrailingObjects;
/// Points to the allocation function used.
FunctionDecl *OperatorNew;
- /// Points to the deallocation function used in case of error. May be
- /// null.
+ /// Points to the deallocation function used in case of error. May be null.
FunctionDecl *OperatorDelete;
/// The allocated type-source information, as written in the source.
TypeSourceInfo *AllocatedTypeInfo;
- /// If the allocated type was expressed as a parenthesized type-id,
- /// the source range covering the parenthesized type-id.
- SourceRange TypeIdParens;
-
/// Range of the entire new expression.
SourceRange Range;
/// Source-range of a paren-delimited initializer.
SourceRange DirectInitRange;
- /// Was the usage ::new, i.e. is the global new to be used?
- unsigned GlobalNew : 1;
+ // CXXNewExpr is followed by several optional trailing objects.
+ // They are in order:
+ //
+ // * An optional "Stmt *" for the array size expression.
+ // Present if and ony if isArray().
+ //
+ // * An optional "Stmt *" for the init expression.
+ // Present if and only if hasInitializer().
+ //
+ // * An array of getNumPlacementArgs() "Stmt *" for the placement new
+ // arguments, if any.
+ //
+ // * An optional SourceRange for the range covering the parenthesized type-id
+ // if the allocated type was expressed as a parenthesized type-id.
+ // Present if and only if isParenTypeId().
+ unsigned arraySizeOffset() const { return 0; }
+ unsigned initExprOffset() const { return arraySizeOffset() + isArray(); }
+ unsigned placementNewArgsOffset() const {
+ return initExprOffset() + hasInitializer();
+ }
- /// Do we allocate an array? If so, the first SubExpr is the size expression.
- unsigned Array : 1;
+ unsigned numTrailingObjects(OverloadToken<Stmt *>) const {
+ return isArray() + hasInitializer() + getNumPlacementArgs();
+ }
- /// Should the alignment be passed to the allocation function?
- unsigned PassAlignment : 1;
-
- /// If this is an array allocation, does the usual deallocation
- /// function for the allocated type want to know the allocated size?
- unsigned UsualArrayDeleteWantsSize : 1;
-
- /// The number of placement new arguments.
- unsigned NumPlacementArgs : 26;
-
- /// What kind of initializer do we have? Could be none, parens, or braces.
- /// In storage, we distinguish between "none, and no initializer expr", and
- /// "none, but an implicit initializer expr".
- unsigned StoredInitializationStyle : 2;
+ unsigned numTrailingObjects(OverloadToken<SourceRange>) const {
+ return isParenTypeId();
+ }
public:
enum InitializationStyle {
@@ -1931,18 +1973,35 @@
ListInit
};
- CXXNewExpr(const ASTContext &C, bool globalNew, FunctionDecl *operatorNew,
- FunctionDecl *operatorDelete, bool PassAlignment,
- bool usualArrayDeleteWantsSize, ArrayRef<Expr*> placementArgs,
- SourceRange typeIdParens, Expr *arraySize,
- InitializationStyle initializationStyle, Expr *initializer,
- QualType ty, TypeSourceInfo *AllocatedTypeInfo,
- SourceRange Range, SourceRange directInitRange);
- explicit CXXNewExpr(EmptyShell Shell)
- : Expr(CXXNewExprClass, Shell) {}
+private:
+ /// Build a c++ new expression.
+ CXXNewExpr(bool IsGlobalNew, FunctionDecl *OperatorNew,
+ FunctionDecl *OperatorDelete, bool ShouldPassAlignment,
+ bool UsualArrayDeleteWantsSize, ArrayRef<Expr *> PlacementArgs,
+ SourceRange TypeIdParens, Expr *ArraySize,
+ InitializationStyle InitializationStyle, Expr *Initializer,
+ QualType Ty, TypeSourceInfo *AllocatedTypeInfo, SourceRange Range,
+ SourceRange DirectInitRange);
- void AllocateArgsArray(const ASTContext &C, bool isArray,
- unsigned numPlaceArgs, bool hasInitializer);
+ /// Build an empty c++ new expression.
+ CXXNewExpr(EmptyShell Empty, bool IsArray, unsigned NumPlacementArgs,
+ bool IsParenTypeId);
+
+public:
+ /// Create a c++ new expression.
+ static CXXNewExpr *
+ Create(const ASTContext &Ctx, bool IsGlobalNew, FunctionDecl *OperatorNew,
+ FunctionDecl *OperatorDelete, bool ShouldPassAlignment,
+ bool UsualArrayDeleteWantsSize, ArrayRef<Expr *> PlacementArgs,
+ SourceRange TypeIdParens, Expr *ArraySize,
+ InitializationStyle InitializationStyle, Expr *Initializer,
+ QualType Ty, TypeSourceInfo *AllocatedTypeInfo, SourceRange Range,
+ SourceRange DirectInitRange);
+
+ /// Create an empty c++ new expression.
+ static CXXNewExpr *CreateEmpty(const ASTContext &Ctx, bool IsArray,
+ bool HasInit, unsigned NumPlacementArgs,
+ bool IsParenTypeId);
QualType getAllocatedType() const {
assert(getType()->isPointerType());
@@ -1968,58 +2027,74 @@
/// has a non-throwing exception-specification. The '03 rule is
/// identical except that the definition of a non-throwing
/// exception specification is just "is it throw()?".
- bool shouldNullCheckAllocation(const ASTContext &Ctx) const;
+ bool shouldNullCheckAllocation() const;
FunctionDecl *getOperatorNew() const { return OperatorNew; }
void setOperatorNew(FunctionDecl *D) { OperatorNew = D; }
FunctionDecl *getOperatorDelete() const { return OperatorDelete; }
void setOperatorDelete(FunctionDecl *D) { OperatorDelete = D; }
- bool isArray() const { return Array; }
+ bool isArray() const { return CXXNewExprBits.IsArray; }
Expr *getArraySize() {
- return Array ? cast<Expr>(SubExprs[0]) : nullptr;
+ return isArray()
+ ? cast<Expr>(getTrailingObjects<Stmt *>()[arraySizeOffset()])
+ : nullptr;
}
const Expr *getArraySize() const {
- return Array ? cast<Expr>(SubExprs[0]) : nullptr;
+ return isArray()
+ ? cast<Expr>(getTrailingObjects<Stmt *>()[arraySizeOffset()])
+ : nullptr;
}
- unsigned getNumPlacementArgs() const { return NumPlacementArgs; }
+ unsigned getNumPlacementArgs() const {
+ return CXXNewExprBits.NumPlacementArgs;
+ }
Expr **getPlacementArgs() {
- return reinterpret_cast<Expr **>(SubExprs + Array + hasInitializer());
+ return reinterpret_cast<Expr **>(getTrailingObjects<Stmt *>() +
+ placementNewArgsOffset());
}
- Expr *getPlacementArg(unsigned i) {
- assert(i < NumPlacementArgs && "Index out of range");
- return getPlacementArgs()[i];
+ Expr *getPlacementArg(unsigned I) {
+ assert((I < getNumPlacementArgs()) && "Index out of range!");
+ return getPlacementArgs()[I];
}
- const Expr *getPlacementArg(unsigned i) const {
- assert(i < NumPlacementArgs && "Index out of range");
- return const_cast<CXXNewExpr*>(this)->getPlacementArg(i);
+ const Expr *getPlacementArg(unsigned I) const {
+ return const_cast<CXXNewExpr *>(this)->getPlacementArg(I);
}
- bool isParenTypeId() const { return TypeIdParens.isValid(); }
- SourceRange getTypeIdParens() const { return TypeIdParens; }
+ bool isParenTypeId() const { return CXXNewExprBits.IsParenTypeId; }
+ SourceRange getTypeIdParens() const {
+ return isParenTypeId() ? getTrailingObjects<SourceRange>()[0]
+ : SourceRange();
+ }
- bool isGlobalNew() const { return GlobalNew; }
+ bool isGlobalNew() const { return CXXNewExprBits.IsGlobalNew; }
/// Whether this new-expression has any initializer at all.
- bool hasInitializer() const { return StoredInitializationStyle > 0; }
+ bool hasInitializer() const {
+ return CXXNewExprBits.StoredInitializationStyle > 0;
+ }
/// The kind of initializer this new-expression has.
InitializationStyle getInitializationStyle() const {
- if (StoredInitializationStyle == 0)
+ if (CXXNewExprBits.StoredInitializationStyle == 0)
return NoInit;
- return static_cast<InitializationStyle>(StoredInitializationStyle-1);
+ return static_cast<InitializationStyle>(
+ CXXNewExprBits.StoredInitializationStyle - 1);
}
/// The initializer of this new-expression.
Expr *getInitializer() {
- return hasInitializer() ? cast<Expr>(SubExprs[Array]) : nullptr;
+ return hasInitializer()
+ ? cast<Expr>(getTrailingObjects<Stmt *>()[initExprOffset()])
+ : nullptr;
}
const Expr *getInitializer() const {
- return hasInitializer() ? cast<Expr>(SubExprs[Array]) : nullptr;
+ return hasInitializer()
+ ? cast<Expr>(getTrailingObjects<Stmt *>()[initExprOffset()])
+ : nullptr;
}
/// Returns the CXXConstructExpr from this new-expression, or null.
@@ -2029,15 +2104,13 @@
/// Indicates whether the required alignment should be implicitly passed to
/// the allocation function.
- bool passAlignment() const {
- return PassAlignment;
- }
+ bool passAlignment() const { return CXXNewExprBits.ShouldPassAlignment; }
/// Answers whether the usual array deallocation function for the
/// allocated type expects the size of the allocation as a
/// parameter.
bool doesUsualArrayDeleteWantSize() const {
- return UsualArrayDeleteWantsSize;
+ return CXXNewExprBits.UsualArrayDeleteWantsSize;
}
using arg_iterator = ExprIterator;
@@ -2052,101 +2125,85 @@
}
arg_iterator placement_arg_begin() {
- return SubExprs + Array + hasInitializer();
+ return getTrailingObjects<Stmt *>() + placementNewArgsOffset();
}
arg_iterator placement_arg_end() {
- return SubExprs + Array + hasInitializer() + getNumPlacementArgs();
+ return placement_arg_begin() + getNumPlacementArgs();
}
const_arg_iterator placement_arg_begin() const {
- return SubExprs + Array + hasInitializer();
+ return getTrailingObjects<Stmt *>() + placementNewArgsOffset();
}
const_arg_iterator placement_arg_end() const {
- return SubExprs + Array + hasInitializer() + getNumPlacementArgs();
+ return placement_arg_begin() + getNumPlacementArgs();
}
using raw_arg_iterator = Stmt **;
- raw_arg_iterator raw_arg_begin() { return SubExprs; }
+ raw_arg_iterator raw_arg_begin() { return getTrailingObjects<Stmt *>(); }
raw_arg_iterator raw_arg_end() {
- return SubExprs + Array + hasInitializer() + getNumPlacementArgs();
+ return raw_arg_begin() + numTrailingObjects(OverloadToken<Stmt *>());
}
- const_arg_iterator raw_arg_begin() const { return SubExprs; }
+ const_arg_iterator raw_arg_begin() const {
+ return getTrailingObjects<Stmt *>();
+ }
const_arg_iterator raw_arg_end() const {
- return SubExprs + Array + hasInitializer() + getNumPlacementArgs();
+ return raw_arg_begin() + numTrailingObjects(OverloadToken<Stmt *>());
}
SourceLocation getBeginLoc() const { return Range.getBegin(); }
SourceLocation getEndLoc() const { return Range.getEnd(); }
SourceRange getDirectInitRange() const { return DirectInitRange; }
-
- SourceRange getSourceRange() const LLVM_READONLY {
- return Range;
- }
-
+ SourceRange getSourceRange() const { return Range; }
static bool classof(const Stmt *T) {
return T->getStmtClass() == CXXNewExprClass;
}
// Iterators
- child_range children() {
- return child_range(raw_arg_begin(), raw_arg_end());
- }
+ child_range children() { return child_range(raw_arg_begin(), raw_arg_end()); }
};
/// Represents a \c delete expression for memory deallocation and
/// destructor calls, e.g. "delete[] pArray".
class CXXDeleteExpr : public Expr {
+ friend class ASTStmtReader;
+
/// Points to the operator delete overload that is used. Could be a member.
FunctionDecl *OperatorDelete = nullptr;
/// The pointer expression to be deleted.
Stmt *Argument = nullptr;
- /// Location of the expression.
- SourceLocation Loc;
-
- /// Is this a forced global delete, i.e. "::delete"?
- bool GlobalDelete : 1;
-
- /// Is this the array form of delete, i.e. "delete[]"?
- bool ArrayForm : 1;
-
- /// ArrayFormAsWritten can be different from ArrayForm if 'delete' is applied
- /// to pointer-to-array type (ArrayFormAsWritten will be false while ArrayForm
- /// will be true).
- bool ArrayFormAsWritten : 1;
-
- /// Does the usual deallocation function for the element type require
- /// a size_t argument?
- bool UsualArrayDeleteWantsSize : 1;
-
public:
- friend class ASTStmtReader;
+ CXXDeleteExpr(QualType Ty, bool GlobalDelete, bool ArrayForm,
+ bool ArrayFormAsWritten, bool UsualArrayDeleteWantsSize,
+ FunctionDecl *OperatorDelete, Expr *Arg, SourceLocation Loc)
+ : Expr(CXXDeleteExprClass, Ty, VK_RValue, OK_Ordinary, false, false,
+ Arg->isInstantiationDependent(),
+ Arg->containsUnexpandedParameterPack()),
+ OperatorDelete(OperatorDelete), Argument(Arg) {
+ CXXDeleteExprBits.GlobalDelete = GlobalDelete;
+ CXXDeleteExprBits.ArrayForm = ArrayForm;
+ CXXDeleteExprBits.ArrayFormAsWritten = ArrayFormAsWritten;
+ CXXDeleteExprBits.UsualArrayDeleteWantsSize = UsualArrayDeleteWantsSize;
+ CXXDeleteExprBits.Loc = Loc;
+ }
- CXXDeleteExpr(QualType ty, bool globalDelete, bool arrayForm,
- bool arrayFormAsWritten, bool usualArrayDeleteWantsSize,
- FunctionDecl *operatorDelete, Expr *arg, SourceLocation loc)
- : Expr(CXXDeleteExprClass, ty, VK_RValue, OK_Ordinary, false, false,
- arg->isInstantiationDependent(),
- arg->containsUnexpandedParameterPack()),
- OperatorDelete(operatorDelete), Argument(arg), Loc(loc),
- GlobalDelete(globalDelete),
- ArrayForm(arrayForm), ArrayFormAsWritten(arrayFormAsWritten),
- UsualArrayDeleteWantsSize(usualArrayDeleteWantsSize) {}
explicit CXXDeleteExpr(EmptyShell Shell) : Expr(CXXDeleteExprClass, Shell) {}
- bool isGlobalDelete() const { return GlobalDelete; }
- bool isArrayForm() const { return ArrayForm; }
- bool isArrayFormAsWritten() const { return ArrayFormAsWritten; }
+ bool isGlobalDelete() const { return CXXDeleteExprBits.GlobalDelete; }
+ bool isArrayForm() const { return CXXDeleteExprBits.ArrayForm; }
+ bool isArrayFormAsWritten() const {
+ return CXXDeleteExprBits.ArrayFormAsWritten;
+ }
/// Answers whether the usual array deallocation function for the
/// allocated type expects the size of the allocation as a
/// parameter. This can be true even if the actual deallocation
/// function that we're using doesn't want a size.
bool doesUsualArrayDeleteWantSize() const {
- return UsualArrayDeleteWantsSize;
+ return CXXDeleteExprBits.UsualArrayDeleteWantsSize;
}
FunctionDecl *getOperatorDelete() const { return OperatorDelete; }
@@ -2160,7 +2217,7 @@
/// be a pointer, return an invalid type.
QualType getDestroyedType() const;
- SourceLocation getBeginLoc() const LLVM_READONLY { return Loc; }
+ SourceLocation getBeginLoc() const { return CXXDeleteExprBits.Loc; }
SourceLocation getEndLoc() const LLVM_READONLY {
return Argument->getEndLoc();
}
@@ -2170,7 +2227,7 @@
}
// Iterators
- child_range children() { return child_range(&Argument, &Argument+1); }
+ child_range children() { return child_range(&Argument, &Argument + 1); }
};
/// Stores the type being destroyed by a pseudo-destructor expression.
@@ -2472,8 +2529,6 @@
/// The type being queried.
TypeSourceInfo *QueriedType = nullptr;
- virtual void anchor();
-
public:
friend class ASTStmtReader;
@@ -2491,8 +2546,6 @@
explicit ArrayTypeTraitExpr(EmptyShell Empty)
: Expr(ArrayTypeTraitExprClass, Empty), ATT(0) {}
- virtual ~ArrayTypeTraitExpr() = default;
-
SourceLocation getBeginLoc() const LLVM_READONLY { return Loc; }
SourceLocation getEndLoc() const LLVM_READONLY { return RParen; }
@@ -2579,58 +2632,54 @@
/// A reference to an overloaded function set, either an
/// \c UnresolvedLookupExpr or an \c UnresolvedMemberExpr.
class OverloadExpr : public Expr {
+ friend class ASTStmtReader;
+ friend class ASTStmtWriter;
+
/// The common name of these declarations.
DeclarationNameInfo NameInfo;
/// The nested-name-specifier that qualifies the name, if any.
NestedNameSpecifierLoc QualifierLoc;
- /// The results. These are undesugared, which is to say, they may
- /// include UsingShadowDecls. Access is relative to the naming
- /// class.
- // FIXME: Allocate this data after the OverloadExpr subclass.
- DeclAccessPair *Results = nullptr;
-
- unsigned NumResults = 0;
-
protected:
- /// Whether the name includes info for explicit template
- /// keyword and arguments.
- bool HasTemplateKWAndArgsInfo = false;
-
- OverloadExpr(StmtClass K, const ASTContext &C,
+ OverloadExpr(StmtClass SC, const ASTContext &Context,
NestedNameSpecifierLoc QualifierLoc,
SourceLocation TemplateKWLoc,
const DeclarationNameInfo &NameInfo,
const TemplateArgumentListInfo *TemplateArgs,
UnresolvedSetIterator Begin, UnresolvedSetIterator End,
- bool KnownDependent,
- bool KnownInstantiationDependent,
+ bool KnownDependent, bool KnownInstantiationDependent,
bool KnownContainsUnexpandedParameterPack);
- OverloadExpr(StmtClass K, EmptyShell Empty) : Expr(K, Empty) {}
+ OverloadExpr(StmtClass SC, EmptyShell Empty, unsigned NumResults,
+ bool HasTemplateKWAndArgsInfo);
+
+ /// Return the results. Defined after UnresolvedMemberExpr.
+ inline DeclAccessPair *getTrailingResults();
+ const DeclAccessPair *getTrailingResults() const {
+ return const_cast<OverloadExpr *>(this)->getTrailingResults();
+ }
/// Return the optional template keyword and arguments info.
- ASTTemplateKWAndArgsInfo *
- getTrailingASTTemplateKWAndArgsInfo(); // defined far below.
-
- /// Return the optional template keyword and arguments info.
+ /// Defined after UnresolvedMemberExpr.
+ inline ASTTemplateKWAndArgsInfo *getTrailingASTTemplateKWAndArgsInfo();
const ASTTemplateKWAndArgsInfo *getTrailingASTTemplateKWAndArgsInfo() const {
return const_cast<OverloadExpr *>(this)
->getTrailingASTTemplateKWAndArgsInfo();
}
- /// Return the optional template arguments.
- TemplateArgumentLoc *getTrailingTemplateArgumentLoc(); // defined far below
+ /// Return the optional template arguments. Defined after
+ /// UnresolvedMemberExpr.
+ inline TemplateArgumentLoc *getTrailingTemplateArgumentLoc();
+ const TemplateArgumentLoc *getTrailingTemplateArgumentLoc() const {
+ return const_cast<OverloadExpr *>(this)->getTrailingTemplateArgumentLoc();
+ }
- void initializeResults(const ASTContext &C,
- UnresolvedSetIterator Begin,
- UnresolvedSetIterator End);
+ bool hasTemplateKWAndArgsInfo() const {
+ return OverloadExprBits.HasTemplateKWAndArgsInfo;
+ }
public:
- friend class ASTStmtReader;
- friend class ASTStmtWriter;
-
struct FindResult {
OverloadExpr *Expression;
bool IsAddressOfOperand;
@@ -2666,20 +2715,26 @@
}
/// Gets the naming class of this lookup, if any.
- CXXRecordDecl *getNamingClass() const;
+ /// Defined after UnresolvedMemberExpr.
+ inline CXXRecordDecl *getNamingClass();
+ const CXXRecordDecl *getNamingClass() const {
+ return const_cast<OverloadExpr *>(this)->getNamingClass();
+ }
using decls_iterator = UnresolvedSetImpl::iterator;
- decls_iterator decls_begin() const { return UnresolvedSetIterator(Results); }
+ decls_iterator decls_begin() const {
+ return UnresolvedSetIterator(getTrailingResults());
+ }
decls_iterator decls_end() const {
- return UnresolvedSetIterator(Results + NumResults);
+ return UnresolvedSetIterator(getTrailingResults() + getNumDecls());
}
llvm::iterator_range<decls_iterator> decls() const {
return llvm::make_range(decls_begin(), decls_end());
}
/// Gets the number of declarations in the unresolved set.
- unsigned getNumDecls() const { return NumResults; }
+ unsigned getNumDecls() const { return OverloadExprBits.NumResults; }
/// Gets the full name info.
const DeclarationNameInfo &getNameInfo() const { return NameInfo; }
@@ -2702,21 +2757,24 @@
/// Retrieve the location of the template keyword preceding
/// this name, if any.
SourceLocation getTemplateKeywordLoc() const {
- if (!HasTemplateKWAndArgsInfo) return SourceLocation();
+ if (!hasTemplateKWAndArgsInfo())
+ return SourceLocation();
return getTrailingASTTemplateKWAndArgsInfo()->TemplateKWLoc;
}
/// Retrieve the location of the left angle bracket starting the
/// explicit template argument list following the name, if any.
SourceLocation getLAngleLoc() const {
- if (!HasTemplateKWAndArgsInfo) return SourceLocation();
+ if (!hasTemplateKWAndArgsInfo())
+ return SourceLocation();
return getTrailingASTTemplateKWAndArgsInfo()->LAngleLoc;
}
/// Retrieve the location of the right angle bracket ending the
/// explicit template argument list following the name, if any.
SourceLocation getRAngleLoc() const {
- if (!HasTemplateKWAndArgsInfo) return SourceLocation();
+ if (!hasTemplateKWAndArgsInfo())
+ return SourceLocation();
return getTrailingASTTemplateKWAndArgsInfo()->RAngleLoc;
}
@@ -2768,86 +2826,82 @@
/// members and therefore appear only in UnresolvedMemberLookupExprs.
class UnresolvedLookupExpr final
: public OverloadExpr,
- private llvm::TrailingObjects<
- UnresolvedLookupExpr, ASTTemplateKWAndArgsInfo, TemplateArgumentLoc> {
+ private llvm::TrailingObjects<UnresolvedLookupExpr, DeclAccessPair,
+ ASTTemplateKWAndArgsInfo,
+ TemplateArgumentLoc> {
friend class ASTStmtReader;
friend class OverloadExpr;
friend TrailingObjects;
- /// True if these lookup results should be extended by
- /// argument-dependent lookup if this is the operand of a function
- /// call.
- bool RequiresADL = false;
-
- /// True if these lookup results are overloaded. This is pretty
- /// trivially rederivable if we urgently need to kill this field.
- bool Overloaded = false;
-
/// The naming class (C++ [class.access.base]p5) of the lookup, if
/// any. This can generally be recalculated from the context chain,
- /// but that can be fairly expensive for unqualified lookups. If we
- /// want to improve memory use here, this could go in a union
- /// against the qualified-lookup bits.
- CXXRecordDecl *NamingClass = nullptr;
+ /// but that can be fairly expensive for unqualified lookups.
+ CXXRecordDecl *NamingClass;
- UnresolvedLookupExpr(const ASTContext &C,
- CXXRecordDecl *NamingClass,
+ // UnresolvedLookupExpr is followed by several trailing objects.
+ // They are in order:
+ //
+ // * An array of getNumResults() DeclAccessPair for the results. These are
+ // undesugared, which is to say, they may include UsingShadowDecls.
+ // Access is relative to the naming class.
+ //
+ // * An optional ASTTemplateKWAndArgsInfo for the explicitly specified
+ // template keyword and arguments. Present if and only if
+ // hasTemplateKWAndArgsInfo().
+ //
+ // * An array of getNumTemplateArgs() TemplateArgumentLoc containing
+ // location information for the explicitly specified template arguments.
+
+ UnresolvedLookupExpr(const ASTContext &Context, CXXRecordDecl *NamingClass,
NestedNameSpecifierLoc QualifierLoc,
SourceLocation TemplateKWLoc,
- const DeclarationNameInfo &NameInfo,
- bool RequiresADL, bool Overloaded,
+ const DeclarationNameInfo &NameInfo, bool RequiresADL,
+ bool Overloaded,
const TemplateArgumentListInfo *TemplateArgs,
- UnresolvedSetIterator Begin, UnresolvedSetIterator End)
- : OverloadExpr(UnresolvedLookupExprClass, C, QualifierLoc, TemplateKWLoc,
- NameInfo, TemplateArgs, Begin, End, false, false, false),
- RequiresADL(RequiresADL),
- Overloaded(Overloaded), NamingClass(NamingClass) {}
+ UnresolvedSetIterator Begin, UnresolvedSetIterator End);
- UnresolvedLookupExpr(EmptyShell Empty)
- : OverloadExpr(UnresolvedLookupExprClass, Empty) {}
+ UnresolvedLookupExpr(EmptyShell Empty, unsigned NumResults,
+ bool HasTemplateKWAndArgsInfo);
- size_t numTrailingObjects(OverloadToken<ASTTemplateKWAndArgsInfo>) const {
- return HasTemplateKWAndArgsInfo ? 1 : 0;
+ unsigned numTrailingObjects(OverloadToken<DeclAccessPair>) const {
+ return getNumDecls();
+ }
+
+ unsigned numTrailingObjects(OverloadToken<ASTTemplateKWAndArgsInfo>) const {
+ return hasTemplateKWAndArgsInfo();
}
public:
- static UnresolvedLookupExpr *Create(const ASTContext &C,
- CXXRecordDecl *NamingClass,
- NestedNameSpecifierLoc QualifierLoc,
- const DeclarationNameInfo &NameInfo,
- bool ADL, bool Overloaded,
- UnresolvedSetIterator Begin,
- UnresolvedSetIterator End) {
- return new(C) UnresolvedLookupExpr(C, NamingClass, QualifierLoc,
- SourceLocation(), NameInfo,
- ADL, Overloaded, nullptr, Begin, End);
- }
+ static UnresolvedLookupExpr *
+ Create(const ASTContext &Context, CXXRecordDecl *NamingClass,
+ NestedNameSpecifierLoc QualifierLoc,
+ const DeclarationNameInfo &NameInfo, bool RequiresADL, bool Overloaded,
+ UnresolvedSetIterator Begin, UnresolvedSetIterator End);
- static UnresolvedLookupExpr *Create(const ASTContext &C,
- CXXRecordDecl *NamingClass,
- NestedNameSpecifierLoc QualifierLoc,
- SourceLocation TemplateKWLoc,
- const DeclarationNameInfo &NameInfo,
- bool ADL,
- const TemplateArgumentListInfo *Args,
- UnresolvedSetIterator Begin,
- UnresolvedSetIterator End);
+ static UnresolvedLookupExpr *
+ Create(const ASTContext &Context, CXXRecordDecl *NamingClass,
+ NestedNameSpecifierLoc QualifierLoc, SourceLocation TemplateKWLoc,
+ const DeclarationNameInfo &NameInfo, bool RequiresADL,
+ const TemplateArgumentListInfo *Args, UnresolvedSetIterator Begin,
+ UnresolvedSetIterator End);
- static UnresolvedLookupExpr *CreateEmpty(const ASTContext &C,
+ static UnresolvedLookupExpr *CreateEmpty(const ASTContext &Context,
+ unsigned NumResults,
bool HasTemplateKWAndArgsInfo,
unsigned NumTemplateArgs);
/// True if this declaration should be extended by
/// argument-dependent lookup.
- bool requiresADL() const { return RequiresADL; }
+ bool requiresADL() const { return UnresolvedLookupExprBits.RequiresADL; }
/// True if this lookup is overloaded.
- bool isOverloaded() const { return Overloaded; }
+ bool isOverloaded() const { return UnresolvedLookupExprBits.Overloaded; }
/// Gets the 'naming class' (in the sense of C++0x
/// [class.access.base]p5) of the lookup. This is the scope
/// that was looked in to find these results.
- CXXRecordDecl *getNamingClass() const { return NamingClass; }
+ CXXRecordDecl *getNamingClass() { return NamingClass; }
+ const CXXRecordDecl *getNamingClass() const { return NamingClass; }
SourceLocation getBeginLoc() const LLVM_READONLY {
if (NestedNameSpecifierLoc l = getQualifierLoc())
@@ -2889,6 +2943,10 @@
private llvm::TrailingObjects<DependentScopeDeclRefExpr,
ASTTemplateKWAndArgsInfo,
TemplateArgumentLoc> {
+ friend class ASTStmtReader;
+ friend class ASTStmtWriter;
+ friend TrailingObjects;
+
/// The nested-name-specifier that qualifies this unresolved
/// declaration name.
NestedNameSpecifierLoc QualifierLoc;
@@ -2896,32 +2954,26 @@
/// The name of the entity we will be referencing.
DeclarationNameInfo NameInfo;
- /// Whether the name includes info for explicit template
- /// keyword and arguments.
- bool HasTemplateKWAndArgsInfo;
-
- DependentScopeDeclRefExpr(QualType T,
- NestedNameSpecifierLoc QualifierLoc,
+ DependentScopeDeclRefExpr(QualType Ty, NestedNameSpecifierLoc QualifierLoc,
SourceLocation TemplateKWLoc,
const DeclarationNameInfo &NameInfo,
const TemplateArgumentListInfo *Args);
size_t numTrailingObjects(OverloadToken<ASTTemplateKWAndArgsInfo>) const {
- return HasTemplateKWAndArgsInfo ? 1 : 0;
+ return hasTemplateKWAndArgsInfo();
+ }
+
+ bool hasTemplateKWAndArgsInfo() const {
+ return DependentScopeDeclRefExprBits.HasTemplateKWAndArgsInfo;
}
public:
- friend class ASTStmtReader;
- friend class ASTStmtWriter;
- friend TrailingObjects;
+ static DependentScopeDeclRefExpr *
+ Create(const ASTContext &Context, NestedNameSpecifierLoc QualifierLoc,
+ SourceLocation TemplateKWLoc, const DeclarationNameInfo &NameInfo,
+ const TemplateArgumentListInfo *TemplateArgs);
- static DependentScopeDeclRefExpr *Create(const ASTContext &C,
- NestedNameSpecifierLoc QualifierLoc,
- SourceLocation TemplateKWLoc,
- const DeclarationNameInfo &NameInfo,
- const TemplateArgumentListInfo *TemplateArgs);
-
- static DependentScopeDeclRefExpr *CreateEmpty(const ASTContext &C,
+ static DependentScopeDeclRefExpr *CreateEmpty(const ASTContext &Context,
bool HasTemplateKWAndArgsInfo,
unsigned NumTemplateArgs);
@@ -2949,21 +3001,24 @@
/// Retrieve the location of the template keyword preceding
/// this name, if any.
SourceLocation getTemplateKeywordLoc() const {
- if (!HasTemplateKWAndArgsInfo) return SourceLocation();
+ if (!hasTemplateKWAndArgsInfo())
+ return SourceLocation();
return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->TemplateKWLoc;
}
/// Retrieve the location of the left angle bracket starting the
/// explicit template argument list following the name, if any.
SourceLocation getLAngleLoc() const {
- if (!HasTemplateKWAndArgsInfo) return SourceLocation();
+ if (!hasTemplateKWAndArgsInfo())
+ return SourceLocation();
return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->LAngleLoc;
}
/// Retrieve the location of the right angle bracket ending the
/// explicit template argument list following the name, if any.
SourceLocation getRAngleLoc() const {
- if (!HasTemplateKWAndArgsInfo) return SourceLocation();
+ if (!hasTemplateKWAndArgsInfo())
+ return SourceLocation();
return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->RAngleLoc;
}
@@ -3031,7 +3086,7 @@
/// potentially-evaluated block literal. The lifetime of a block
/// literal is the extent of the enclosing scope.
class ExprWithCleanups final
- : public Expr,
+ : public FullExpr,
private llvm::TrailingObjects<ExprWithCleanups, BlockDecl *> {
public:
/// The type of objects that are kept in the cleanup.
@@ -3044,8 +3099,6 @@
friend class ASTStmtReader;
friend TrailingObjects;
- Stmt *SubExpr;
-
ExprWithCleanups(EmptyShell, unsigned NumObjects);
ExprWithCleanups(Expr *SubExpr, bool CleanupsHaveSideEffects,
ArrayRef<CleanupObject> Objects);
@@ -3070,17 +3123,10 @@
return getObjects()[i];
}
- Expr *getSubExpr() { return cast<Expr>(SubExpr); }
- const Expr *getSubExpr() const { return cast<Expr>(SubExpr); }
-
bool cleanupsHaveSideEffects() const {
return ExprWithCleanupsBits.CleanupsHaveSideEffects;
}
- /// As with any mutator of the AST, be very careful
- /// when modifying an existing AST to preserve its invariants.
- void setSubExpr(Expr *E) { SubExpr = E; }
-
SourceLocation getBeginLoc() const LLVM_READONLY {
return SubExpr->getBeginLoc();
}
@@ -3126,7 +3172,7 @@
friend TrailingObjects;
/// The type being constructed.
- TypeSourceInfo *Type = nullptr;
+ TypeSourceInfo *TSI;
/// The location of the left parentheses ('(').
SourceLocation LParenLoc;
@@ -3134,34 +3180,31 @@
/// The location of the right parentheses (')').
SourceLocation RParenLoc;
- /// The number of arguments used to construct the type.
- unsigned NumArgs;
-
- CXXUnresolvedConstructExpr(TypeSourceInfo *Type,
- SourceLocation LParenLoc,
- ArrayRef<Expr*> Args,
- SourceLocation RParenLoc);
+ CXXUnresolvedConstructExpr(TypeSourceInfo *TSI, SourceLocation LParenLoc,
+ ArrayRef<Expr *> Args, SourceLocation RParenLoc);
CXXUnresolvedConstructExpr(EmptyShell Empty, unsigned NumArgs)
- : Expr(CXXUnresolvedConstructExprClass, Empty), NumArgs(NumArgs) {}
+ : Expr(CXXUnresolvedConstructExprClass, Empty) {
+ CXXUnresolvedConstructExprBits.NumArgs = NumArgs;
+ }
public:
- static CXXUnresolvedConstructExpr *Create(const ASTContext &C,
+ static CXXUnresolvedConstructExpr *Create(const ASTContext &Context,
TypeSourceInfo *Type,
SourceLocation LParenLoc,
- ArrayRef<Expr*> Args,
+ ArrayRef<Expr *> Args,
SourceLocation RParenLoc);
- static CXXUnresolvedConstructExpr *CreateEmpty(const ASTContext &C,
+ static CXXUnresolvedConstructExpr *CreateEmpty(const ASTContext &Context,
unsigned NumArgs);
/// Retrieve the type that is being constructed, as specified
/// in the source code.
- QualType getTypeAsWritten() const { return Type->getType(); }
+ QualType getTypeAsWritten() const { return TSI->getType(); }
/// Retrieve the type source information for the type being
/// constructed.
- TypeSourceInfo *getTypeSourceInfo() const { return Type; }
+ TypeSourceInfo *getTypeSourceInfo() const { return TSI; }
/// Retrieve the location of the left parentheses ('(') that
/// precedes the argument list.
@@ -3179,46 +3222,43 @@
bool isListInitialization() const { return LParenLoc.isInvalid(); }
/// Retrieve the number of arguments.
- unsigned arg_size() const { return NumArgs; }
+ unsigned arg_size() const { return CXXUnresolvedConstructExprBits.NumArgs; }
using arg_iterator = Expr **;
using arg_range = llvm::iterator_range<arg_iterator>;
arg_iterator arg_begin() { return getTrailingObjects<Expr *>(); }
- arg_iterator arg_end() { return arg_begin() + NumArgs; }
+ arg_iterator arg_end() { return arg_begin() + arg_size(); }
arg_range arguments() { return arg_range(arg_begin(), arg_end()); }
using const_arg_iterator = const Expr* const *;
using const_arg_range = llvm::iterator_range<const_arg_iterator>;
const_arg_iterator arg_begin() const { return getTrailingObjects<Expr *>(); }
- const_arg_iterator arg_end() const {
- return arg_begin() + NumArgs;
- }
+ const_arg_iterator arg_end() const { return arg_begin() + arg_size(); }
const_arg_range arguments() const {
return const_arg_range(arg_begin(), arg_end());
}
Expr *getArg(unsigned I) {
- assert(I < NumArgs && "Argument index out-of-range");
- return *(arg_begin() + I);
+ assert(I < arg_size() && "Argument index out-of-range");
+ return arg_begin()[I];
}
const Expr *getArg(unsigned I) const {
- assert(I < NumArgs && "Argument index out-of-range");
- return *(arg_begin() + I);
+ assert(I < arg_size() && "Argument index out-of-range");
+ return arg_begin()[I];
}
void setArg(unsigned I, Expr *E) {
- assert(I < NumArgs && "Argument index out-of-range");
- *(arg_begin() + I) = E;
+ assert(I < arg_size() && "Argument index out-of-range");
+ arg_begin()[I] = E;
}
SourceLocation getBeginLoc() const LLVM_READONLY;
-
SourceLocation getEndLoc() const LLVM_READONLY {
- if (!RParenLoc.isValid() && NumArgs > 0)
- return getArg(NumArgs - 1)->getEndLoc();
+ if (!RParenLoc.isValid() && arg_size() > 0)
+ return getArg(arg_size() - 1)->getEndLoc();
return RParenLoc;
}
@@ -3229,7 +3269,7 @@
// Iterators
child_range children() {
auto **begin = reinterpret_cast<Stmt **>(arg_begin());
- return child_range(begin, begin + NumArgs);
+ return child_range(begin, begin + arg_size());
}
};
@@ -3244,7 +3284,11 @@
: public Expr,
private llvm::TrailingObjects<CXXDependentScopeMemberExpr,
ASTTemplateKWAndArgsInfo,
- TemplateArgumentLoc> {
+ TemplateArgumentLoc, NamedDecl *> {
+ friend class ASTStmtReader;
+ friend class ASTStmtWriter;
+ friend TrailingObjects;
+
/// The expression for the base pointer or class reference,
/// e.g., the \c x in x.f. Can be null in implicit accesses.
Stmt *Base;
@@ -3253,40 +3297,53 @@
/// implicit accesses.
QualType BaseType;
- /// Whether this member expression used the '->' operator or
- /// the '.' operator.
- bool IsArrow : 1;
-
- /// Whether this member expression has info for explicit template
- /// keyword and arguments.
- bool HasTemplateKWAndArgsInfo : 1;
-
- /// The location of the '->' or '.' operator.
- SourceLocation OperatorLoc;
-
/// The nested-name-specifier that precedes the member name, if any.
+ /// FIXME: This could be in principle store as a trailing object.
+ /// However the performance impact of doing so should be investigated first.
NestedNameSpecifierLoc QualifierLoc;
- /// In a qualified member access expression such as t->Base::f, this
- /// member stores the resolves of name lookup in the context of the member
- /// access expression, to be used at instantiation time.
- ///
- /// FIXME: This member, along with the QualifierLoc, could
- /// be stuck into a structure that is optionally allocated at the end of
- /// the CXXDependentScopeMemberExpr, to save space in the common case.
- NamedDecl *FirstQualifierFoundInScope;
-
/// The member to which this member expression refers, which
/// can be name, overloaded operator, or destructor.
///
/// FIXME: could also be a template-id
DeclarationNameInfo MemberNameInfo;
- size_t numTrailingObjects(OverloadToken<ASTTemplateKWAndArgsInfo>) const {
- return HasTemplateKWAndArgsInfo ? 1 : 0;
+ // CXXDependentScopeMemberExpr is followed by several trailing objects,
+ // some of which optional. They are in order:
+ //
+ // * An optional ASTTemplateKWAndArgsInfo for the explicitly specified
+ // template keyword and arguments. Present if and only if
+ // hasTemplateKWAndArgsInfo().
+ //
+ // * An array of getNumTemplateArgs() TemplateArgumentLoc containing location
+ // information for the explicitly specified template arguments.
+ //
+ // * An optional NamedDecl *. In a qualified member access expression such
+ // as t->Base::f, this member stores the resolves of name lookup in the
+ // context of the member access expression, to be used at instantiation
+ // time. Present if and only if hasFirstQualifierFoundInScope().
+
+ bool hasTemplateKWAndArgsInfo() const {
+ return CXXDependentScopeMemberExprBits.HasTemplateKWAndArgsInfo;
}
- CXXDependentScopeMemberExpr(const ASTContext &C, Expr *Base,
+ bool hasFirstQualifierFoundInScope() const {
+ return CXXDependentScopeMemberExprBits.HasFirstQualifierFoundInScope;
+ }
+
+ unsigned numTrailingObjects(OverloadToken<ASTTemplateKWAndArgsInfo>) const {
+ return hasTemplateKWAndArgsInfo();
+ }
+
+ unsigned numTrailingObjects(OverloadToken<TemplateArgumentLoc>) const {
+ return getNumTemplateArgs();
+ }
+
+ unsigned numTrailingObjects(OverloadToken<NamedDecl *>) const {
+ return hasFirstQualifierFoundInScope();
+ }
+
+ CXXDependentScopeMemberExpr(const ASTContext &Ctx, Expr *Base,
QualType BaseType, bool IsArrow,
SourceLocation OperatorLoc,
NestedNameSpecifierLoc QualifierLoc,
@@ -3295,33 +3352,29 @@
DeclarationNameInfo MemberNameInfo,
const TemplateArgumentListInfo *TemplateArgs);
+ CXXDependentScopeMemberExpr(EmptyShell Empty, bool HasTemplateKWAndArgsInfo,
+ bool HasFirstQualifierFoundInScope);
+
public:
- friend class ASTStmtReader;
- friend class ASTStmtWriter;
- friend TrailingObjects;
-
- CXXDependentScopeMemberExpr(const ASTContext &C, Expr *Base,
- QualType BaseType, bool IsArrow,
- SourceLocation OperatorLoc,
- NestedNameSpecifierLoc QualifierLoc,
- NamedDecl *FirstQualifierFoundInScope,
- DeclarationNameInfo MemberNameInfo);
-
static CXXDependentScopeMemberExpr *
- Create(const ASTContext &C, Expr *Base, QualType BaseType, bool IsArrow,
+ Create(const ASTContext &Ctx, Expr *Base, QualType BaseType, bool IsArrow,
SourceLocation OperatorLoc, NestedNameSpecifierLoc QualifierLoc,
SourceLocation TemplateKWLoc, NamedDecl *FirstQualifierFoundInScope,
DeclarationNameInfo MemberNameInfo,
const TemplateArgumentListInfo *TemplateArgs);
static CXXDependentScopeMemberExpr *
- CreateEmpty(const ASTContext &C, bool HasTemplateKWAndArgsInfo,
- unsigned NumTemplateArgs);
+ CreateEmpty(const ASTContext &Ctx, bool HasTemplateKWAndArgsInfo,
+ unsigned NumTemplateArgs, bool HasFirstQualifierFoundInScope);
/// True if this is an implicit access, i.e. one in which the
/// member being accessed was not written in the source. The source
/// location of the operator is invalid in this case.
- bool isImplicitAccess() const;
+ bool isImplicitAccess() const {
+ if (!Base)
+ return true;
+ return cast<Expr>(Base)->isImplicitCXXThis();
+ }
/// Retrieve the base object of this member expressions,
/// e.g., the \c x in \c x.m.
@@ -3334,13 +3387,14 @@
/// Determine whether this member expression used the '->'
/// operator; otherwise, it used the '.' operator.
- bool isArrow() const { return IsArrow; }
+ bool isArrow() const { return CXXDependentScopeMemberExprBits.IsArrow; }
/// Retrieve the location of the '->' or '.' operator.
- SourceLocation getOperatorLoc() const { return OperatorLoc; }
+ SourceLocation getOperatorLoc() const {
+ return CXXDependentScopeMemberExprBits.OperatorLoc;
+ }
- /// Retrieve the nested-name-specifier that qualifies the member
- /// name.
+ /// Retrieve the nested-name-specifier that qualifies the member name.
NestedNameSpecifier *getQualifier() const {
return QualifierLoc.getNestedNameSpecifier();
}
@@ -3361,17 +3415,17 @@
/// combined with the results of name lookup into the type of the object
/// expression itself (the class type of x).
NamedDecl *getFirstQualifierFoundInScope() const {
- return FirstQualifierFoundInScope;
+ if (!hasFirstQualifierFoundInScope())
+ return nullptr;
+ return *getTrailingObjects<NamedDecl *>();
}
- /// Retrieve the name of the member that this expression
- /// refers to.
+ /// Retrieve the name of the member that this expression refers to.
const DeclarationNameInfo &getMemberNameInfo() const {
return MemberNameInfo;
}
- /// Retrieve the name of the member that this expression
- /// refers to.
+ /// Retrieve the name of the member that this expression refers to.
DeclarationName getMember() const { return MemberNameInfo.getName(); }
// Retrieve the location of the name of the member that this
@@ -3381,21 +3435,24 @@
/// Retrieve the location of the template keyword preceding the
/// member name, if any.
SourceLocation getTemplateKeywordLoc() const {
- if (!HasTemplateKWAndArgsInfo) return SourceLocation();
+ if (!hasTemplateKWAndArgsInfo())
+ return SourceLocation();
return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->TemplateKWLoc;
}
/// Retrieve the location of the left angle bracket starting the
/// explicit template argument list following the member name, if any.
SourceLocation getLAngleLoc() const {
- if (!HasTemplateKWAndArgsInfo) return SourceLocation();
+ if (!hasTemplateKWAndArgsInfo())
+ return SourceLocation();
return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->LAngleLoc;
}
/// Retrieve the location of the right angle bracket ending the
/// explicit template argument list following the member name, if any.
SourceLocation getRAngleLoc() const {
- if (!HasTemplateKWAndArgsInfo) return SourceLocation();
+ if (!hasTemplateKWAndArgsInfo())
+ return SourceLocation();
return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->RAngleLoc;
}
@@ -3479,25 +3536,18 @@
/// DeclRefExpr, depending on whether the member is static.
class UnresolvedMemberExpr final
: public OverloadExpr,
- private llvm::TrailingObjects<
- UnresolvedMemberExpr, ASTTemplateKWAndArgsInfo, TemplateArgumentLoc> {
+ private llvm::TrailingObjects<UnresolvedMemberExpr, DeclAccessPair,
+ ASTTemplateKWAndArgsInfo,
+ TemplateArgumentLoc> {
friend class ASTStmtReader;
friend class OverloadExpr;
friend TrailingObjects;
- /// Whether this member expression used the '->' operator or
- /// the '.' operator.
- bool IsArrow : 1;
-
- /// Whether the lookup results contain an unresolved using
- /// declaration.
- bool HasUnresolvedUsing : 1;
-
/// The expression for the base pointer or class reference,
/// e.g., the \c x in x.f.
///
/// This can be null if this is an 'unbased' member expression.
- Stmt *Base = nullptr;
+ Stmt *Base;
/// The type of the base expression; never null.
QualType BaseType;
@@ -3505,7 +3555,21 @@
/// The location of the '->' or '.' operator.
SourceLocation OperatorLoc;
- UnresolvedMemberExpr(const ASTContext &C, bool HasUnresolvedUsing,
+ // UnresolvedMemberExpr is followed by several trailing objects.
+ // They are in order:
+ //
+ // * An array of getNumResults() DeclAccessPair for the results. These are
+ // undesugared, which is to say, they may include UsingShadowDecls.
+ // Access is relative to the naming class.
+ //
+ // * An optional ASTTemplateKWAndArgsInfo for the explicitly specified
+ // template keyword and arguments. Present if and only if
+ // hasTemplateKWAndArgsInfo().
+ //
+ // * An array of getNumTemplateArgs() TemplateArgumentLoc containing
+ // location information for the explicitly specified template arguments.
+
+ UnresolvedMemberExpr(const ASTContext &Context, bool HasUnresolvedUsing,
Expr *Base, QualType BaseType, bool IsArrow,
SourceLocation OperatorLoc,
NestedNameSpecifierLoc QualifierLoc,
@@ -3514,28 +3578,30 @@
const TemplateArgumentListInfo *TemplateArgs,
UnresolvedSetIterator Begin, UnresolvedSetIterator End);
- UnresolvedMemberExpr(EmptyShell Empty)
- : OverloadExpr(UnresolvedMemberExprClass, Empty), IsArrow(false),
- HasUnresolvedUsing(false) {}
+ UnresolvedMemberExpr(EmptyShell Empty, unsigned NumResults,
+ bool HasTemplateKWAndArgsInfo);
- size_t numTrailingObjects(OverloadToken<ASTTemplateKWAndArgsInfo>) const {
- return HasTemplateKWAndArgsInfo ? 1 : 0;
+ unsigned numTrailingObjects(OverloadToken<DeclAccessPair>) const {
+ return getNumDecls();
+ }
+
+ unsigned numTrailingObjects(OverloadToken<ASTTemplateKWAndArgsInfo>) const {
+ return hasTemplateKWAndArgsInfo();
}
public:
static UnresolvedMemberExpr *
- Create(const ASTContext &C, bool HasUnresolvedUsing,
- Expr *Base, QualType BaseType, bool IsArrow,
- SourceLocation OperatorLoc,
- NestedNameSpecifierLoc QualifierLoc,
- SourceLocation TemplateKWLoc,
+ Create(const ASTContext &Context, bool HasUnresolvedUsing, Expr *Base,
+ QualType BaseType, bool IsArrow, SourceLocation OperatorLoc,
+ NestedNameSpecifierLoc QualifierLoc, SourceLocation TemplateKWLoc,
const DeclarationNameInfo &MemberNameInfo,
const TemplateArgumentListInfo *TemplateArgs,
UnresolvedSetIterator Begin, UnresolvedSetIterator End);
- static UnresolvedMemberExpr *
- CreateEmpty(const ASTContext &C, bool HasTemplateKWAndArgsInfo,
- unsigned NumTemplateArgs);
+ static UnresolvedMemberExpr *CreateEmpty(const ASTContext &Context,
+ unsigned NumResults,
+ bool HasTemplateKWAndArgsInfo,
+ unsigned NumTemplateArgs);
/// True if this is an implicit access, i.e., one in which the
/// member being accessed was not written in the source.
@@ -3558,32 +3624,36 @@
/// Determine whether the lookup results contain an unresolved using
/// declaration.
- bool hasUnresolvedUsing() const { return HasUnresolvedUsing; }
+ bool hasUnresolvedUsing() const {
+ return UnresolvedMemberExprBits.HasUnresolvedUsing;
+ }
/// Determine whether this member expression used the '->'
/// operator; otherwise, it used the '.' operator.
- bool isArrow() const { return IsArrow; }
+ bool isArrow() const { return UnresolvedMemberExprBits.IsArrow; }
/// Retrieve the location of the '->' or '.' operator.
SourceLocation getOperatorLoc() const { return OperatorLoc; }
/// Retrieve the naming class of this lookup.
- CXXRecordDecl *getNamingClass() const;
+ CXXRecordDecl *getNamingClass();
+ const CXXRecordDecl *getNamingClass() const {
+ return const_cast<UnresolvedMemberExpr *>(this)->getNamingClass();
+ }
/// Retrieve the full name info for the member that this expression
/// refers to.
const DeclarationNameInfo &getMemberNameInfo() const { return getNameInfo(); }
- /// Retrieve the name of the member that this expression
- /// refers to.
+ /// Retrieve the name of the member that this expression refers to.
DeclarationName getMemberName() const { return getName(); }
- // Retrieve the location of the name of the member that this
- // expression refers to.
+ /// Retrieve the location of the name of the member that this
+ /// expression refers to.
SourceLocation getMemberLoc() const { return getNameLoc(); }
- // Return the preferred location (the member name) for the arrow when
- // diagnosing a problem with this expression.
+ /// Return the preferred location (the member name) for the arrow when
+ /// diagnosing a problem with this expression.
SourceLocation getExprLoc() const LLVM_READONLY { return getMemberLoc(); }
SourceLocation getBeginLoc() const LLVM_READONLY {
@@ -3612,26 +3682,33 @@
}
};
-inline ASTTemplateKWAndArgsInfo *
-OverloadExpr::getTrailingASTTemplateKWAndArgsInfo() {
- if (!HasTemplateKWAndArgsInfo)
- return nullptr;
-
- if (isa<UnresolvedLookupExpr>(this))
- return cast<UnresolvedLookupExpr>(this)
- ->getTrailingObjects<ASTTemplateKWAndArgsInfo>();
- else
- return cast<UnresolvedMemberExpr>(this)
- ->getTrailingObjects<ASTTemplateKWAndArgsInfo>();
+DeclAccessPair *OverloadExpr::getTrailingResults() {
+ if (auto *ULE = dyn_cast<UnresolvedLookupExpr>(this))
+ return ULE->getTrailingObjects<DeclAccessPair>();
+ return cast<UnresolvedMemberExpr>(this)->getTrailingObjects<DeclAccessPair>();
}
-inline TemplateArgumentLoc *OverloadExpr::getTrailingTemplateArgumentLoc() {
- if (isa<UnresolvedLookupExpr>(this))
- return cast<UnresolvedLookupExpr>(this)
- ->getTrailingObjects<TemplateArgumentLoc>();
- else
- return cast<UnresolvedMemberExpr>(this)
- ->getTrailingObjects<TemplateArgumentLoc>();
+ASTTemplateKWAndArgsInfo *OverloadExpr::getTrailingASTTemplateKWAndArgsInfo() {
+ if (!hasTemplateKWAndArgsInfo())
+ return nullptr;
+
+ if (auto *ULE = dyn_cast<UnresolvedLookupExpr>(this))
+ return ULE->getTrailingObjects<ASTTemplateKWAndArgsInfo>();
+ return cast<UnresolvedMemberExpr>(this)
+ ->getTrailingObjects<ASTTemplateKWAndArgsInfo>();
+}
+
+TemplateArgumentLoc *OverloadExpr::getTrailingTemplateArgumentLoc() {
+ if (auto *ULE = dyn_cast<UnresolvedLookupExpr>(this))
+ return ULE->getTrailingObjects<TemplateArgumentLoc>();
+ return cast<UnresolvedMemberExpr>(this)
+ ->getTrailingObjects<TemplateArgumentLoc>();
+}
+
+CXXRecordDecl *OverloadExpr::getNamingClass() {
+ if (auto *ULE = dyn_cast<UnresolvedLookupExpr>(this))
+ return ULE->getNamingClass();
+ return cast<UnresolvedMemberExpr>(this)->getNamingClass();
}
/// Represents a C++11 noexcept expression (C++ [expr.unary.noexcept]).
@@ -3641,7 +3718,6 @@
class CXXNoexceptExpr : public Expr {
friend class ASTStmtReader;
- bool Value : 1;
Stmt *Operand;
SourceRange Range;
@@ -3649,21 +3725,23 @@
CXXNoexceptExpr(QualType Ty, Expr *Operand, CanThrowResult Val,
SourceLocation Keyword, SourceLocation RParen)
: Expr(CXXNoexceptExprClass, Ty, VK_RValue, OK_Ordinary,
- /*TypeDependent*/false,
- /*ValueDependent*/Val == CT_Dependent,
+ /*TypeDependent*/ false,
+ /*ValueDependent*/ Val == CT_Dependent,
Val == CT_Dependent || Operand->isInstantiationDependent(),
Operand->containsUnexpandedParameterPack()),
- Value(Val == CT_Cannot), Operand(Operand), Range(Keyword, RParen) {}
+ Operand(Operand), Range(Keyword, RParen) {
+ CXXNoexceptExprBits.Value = Val == CT_Cannot;
+ }
CXXNoexceptExpr(EmptyShell Empty) : Expr(CXXNoexceptExprClass, Empty) {}
- Expr *getOperand() const { return static_cast<Expr*>(Operand); }
+ Expr *getOperand() const { return static_cast<Expr *>(Operand); }
- SourceLocation getBeginLoc() const LLVM_READONLY { return Range.getBegin(); }
- SourceLocation getEndLoc() const LLVM_READONLY { return Range.getEnd(); }
- SourceRange getSourceRange() const LLVM_READONLY { return Range; }
+ SourceLocation getBeginLoc() const { return Range.getBegin(); }
+ SourceLocation getEndLoc() const { return Range.getEnd(); }
+ SourceRange getSourceRange() const { return Range; }
- bool getValue() const { return Value; }
+ bool getValue() const { return CXXNoexceptExprBits.Value; }
static bool classof(const Stmt *T) {
return T->getStmtClass() == CXXNoexceptExprClass;
@@ -3886,27 +3964,27 @@
/// The replacement expression.
Stmt *Replacement;
- /// The location of the non-type template parameter reference.
- SourceLocation NameLoc;
-
explicit SubstNonTypeTemplateParmExpr(EmptyShell Empty)
: Expr(SubstNonTypeTemplateParmExprClass, Empty) {}
public:
- SubstNonTypeTemplateParmExpr(QualType type,
- ExprValueKind valueKind,
- SourceLocation loc,
- NonTypeTemplateParmDecl *param,
- Expr *replacement)
- : Expr(SubstNonTypeTemplateParmExprClass, type, valueKind, OK_Ordinary,
- replacement->isTypeDependent(), replacement->isValueDependent(),
- replacement->isInstantiationDependent(),
- replacement->containsUnexpandedParameterPack()),
- Param(param), Replacement(replacement), NameLoc(loc) {}
+ SubstNonTypeTemplateParmExpr(QualType Ty, ExprValueKind ValueKind,
+ SourceLocation Loc,
+ NonTypeTemplateParmDecl *Param,
+ Expr *Replacement)
+ : Expr(SubstNonTypeTemplateParmExprClass, Ty, ValueKind, OK_Ordinary,
+ Replacement->isTypeDependent(), Replacement->isValueDependent(),
+ Replacement->isInstantiationDependent(),
+ Replacement->containsUnexpandedParameterPack()),
+ Param(Param), Replacement(Replacement) {
+ SubstNonTypeTemplateParmExprBits.NameLoc = Loc;
+ }
- SourceLocation getNameLoc() const { return NameLoc; }
- SourceLocation getBeginLoc() const LLVM_READONLY { return NameLoc; }
- SourceLocation getEndLoc() const LLVM_READONLY { return NameLoc; }
+ SourceLocation getNameLoc() const {
+ return SubstNonTypeTemplateParmExprBits.NameLoc;
+ }
+ SourceLocation getBeginLoc() const { return getNameLoc(); }
+ SourceLocation getEndLoc() const { return getNameLoc(); }
Expr *getReplacement() const { return cast<Expr>(Replacement); }
@@ -3917,7 +3995,7 @@
}
// Iterators
- child_range children() { return child_range(&Replacement, &Replacement+1); }
+ child_range children() { return child_range(&Replacement, &Replacement + 1); }
};
/// Represents a reference to a non-type template parameter pack that
diff --git a/linux-x64/clang/include/clang/AST/ExprObjC.h b/linux-x64/clang/include/clang/AST/ExprObjC.h
index ed3d384..6719169 100644
--- a/linux-x64/clang/include/clang/AST/ExprObjC.h
+++ b/linux-x64/clang/include/clang/AST/ExprObjC.h
@@ -1,9 +1,8 @@
//===- ExprObjC.h - Classes for representing ObjC expressions ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -256,12 +255,6 @@
} // namespace clang
-namespace llvm {
-
-template <> struct isPodLike<clang::ObjCDictionaryElement> : std::true_type {};
-
-} // namespace llvm
-
namespace clang {
/// Internal struct for storing Key/value pair.
@@ -1187,6 +1180,13 @@
/// sent to.
ReceiverKind getReceiverKind() const { return (ReceiverKind)Kind; }
+ /// \return the return type of the message being sent.
+ /// This is not always the type of the message expression itself because
+ /// of references (the expression would not have a reference type).
+ /// It is also not always the declared return type of the method because
+ /// of `instancetype` (in that case it's an expression type).
+ QualType getCallReturnType(ASTContext &Ctx) const;
+
/// Source range of the receiver.
SourceRange getReceiverRange() const;
@@ -1574,8 +1574,7 @@
/// \endcode
class ObjCBridgedCastExpr final
: public ExplicitCastExpr,
- private llvm::TrailingObjects<
- ObjCBridgedCastExpr, CastExpr::BasePathSizeTy, CXXBaseSpecifier *> {
+ private llvm::TrailingObjects<ObjCBridgedCastExpr, CXXBaseSpecifier *> {
friend class ASTStmtReader;
friend class ASTStmtWriter;
friend class CastExpr;
@@ -1585,10 +1584,6 @@
SourceLocation BridgeKeywordLoc;
unsigned Kind : 2;
- size_t numTrailingObjects(OverloadToken<CastExpr::BasePathSizeTy>) const {
- return path_empty() ? 0 : 1;
- }
-
public:
ObjCBridgedCastExpr(SourceLocation LParenLoc, ObjCBridgeCastKind Kind,
CastKind CK, SourceLocation BridgeKeywordLoc,
diff --git a/linux-x64/clang/include/clang/AST/ExprOpenMP.h b/linux-x64/clang/include/clang/AST/ExprOpenMP.h
index d88eebf..b26e6d1 100644
--- a/linux-x64/clang/include/clang/AST/ExprOpenMP.h
+++ b/linux-x64/clang/include/clang/AST/ExprOpenMP.h
@@ -1,9 +1,8 @@
//===--- ExprOpenMP.h - Classes for representing expressions ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/ExternalASTMerger.h b/linux-x64/clang/include/clang/AST/ExternalASTMerger.h
index 7b01fa8..d89189d 100644
--- a/linux-x64/clang/include/clang/AST/ExternalASTMerger.h
+++ b/linux-x64/clang/include/clang/AST/ExternalASTMerger.h
@@ -1,9 +1,8 @@
//===--- ExternalASTMerger.h - Merging External AST Interface ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/ExternalASTSource.h b/linux-x64/clang/include/clang/AST/ExternalASTSource.h
index 525d4c7..3046336 100644
--- a/linux-x64/clang/include/clang/AST/ExternalASTSource.h
+++ b/linux-x64/clang/include/clang/AST/ExternalASTSource.h
@@ -1,9 +1,8 @@
//===- ExternalASTSource.h - Abstract External AST Interface ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Analysis/Analyses/FormatString.h b/linux-x64/clang/include/clang/AST/FormatString.h
similarity index 93%
rename from linux-x64/clang/include/clang/Analysis/Analyses/FormatString.h
rename to linux-x64/clang/include/clang/AST/FormatString.h
index 598d341..643fb82 100644
--- a/linux-x64/clang/include/clang/Analysis/Analyses/FormatString.h
+++ b/linux-x64/clang/include/clang/AST/FormatString.h
@@ -1,9 +1,8 @@
//= FormatString.h - Analysis of printf/fprintf format strings --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -68,6 +67,7 @@
None,
AsChar, // 'hh'
AsShort, // 'h'
+ AsShortLong, // 'hl' (OpenCL float/int vector element)
AsLong, // 'l'
AsLongLong, // 'll'
AsQuad, // 'q' (BSD, deprecated, for 64-bit integer types)
@@ -303,6 +303,8 @@
QualType getRepresentativeType(ASTContext &C) const;
+ ArgType makeVectorType(ASTContext &C, unsigned NumElts) const;
+
std::string getRepresentativeTypeName(ASTContext &C) const;
};
@@ -322,6 +324,10 @@
: start(nullptr),length(0), hs(valid ? NotSpecified : Invalid), amt(0),
UsesPositionalArg(0), UsesDotPrefix(0) {}
+ explicit OptionalAmount(unsigned Amount)
+ : start(nullptr), length(0), hs(Constant), amt(Amount),
+ UsesPositionalArg(false), UsesDotPrefix(false) {}
+
bool isInvalid() const {
return hs == Invalid;
}
@@ -379,6 +385,8 @@
LengthModifier LM;
OptionalAmount FieldWidth;
ConversionSpecifier CS;
+ OptionalAmount VectorNumElts;
+
/// Positional arguments, an IEEE extension:
/// IEEE Std 1003.1, 2004 Edition
/// http://www.opengroup.org/onlinepubs/009695399/functions/printf.html
@@ -386,7 +394,8 @@
unsigned argIndex;
public:
FormatSpecifier(bool isPrintf)
- : CS(isPrintf), UsesPositionalArg(false), argIndex(0) {}
+ : CS(isPrintf), VectorNumElts(false),
+ UsesPositionalArg(false), argIndex(0) {}
void setLengthModifier(LengthModifier lm) {
LM = lm;
@@ -414,13 +423,22 @@
return FieldWidth;
}
+ void setVectorNumElts(const OptionalAmount &Amt) {
+ VectorNumElts = Amt;
+ }
+
+ const OptionalAmount &getVectorNumElts() const {
+ return VectorNumElts;
+ }
+
void setFieldWidth(const OptionalAmount &Amt) {
FieldWidth = Amt;
}
bool usesPositionalArg() const { return UsesPositionalArg; }
- bool hasValidLengthModifier(const TargetInfo &Target) const;
+ bool hasValidLengthModifier(const TargetInfo &Target,
+ const LangOptions &LO) const;
bool hasStandardLengthModifier() const;
@@ -475,13 +493,19 @@
OptionalFlag HasObjCTechnicalTerm; // '[tt]'
OptionalFlag IsPrivate; // '{private}'
OptionalFlag IsPublic; // '{public}'
+ OptionalFlag IsSensitive; // '{sensitive}'
OptionalAmount Precision;
+ StringRef MaskType;
+
+ ArgType getScalarArgType(ASTContext &Ctx, bool IsObjCLiteral) const;
+
public:
PrintfSpecifier()
: FormatSpecifier(/* isPrintf = */ true), HasThousandsGrouping("'"),
IsLeftJustified("-"), HasPlusPrefix("+"), HasSpacePrefix(" "),
HasAlternativeForm("#"), HasLeadingZeroes("0"),
- HasObjCTechnicalTerm("tt"), IsPrivate("private"), IsPublic("public") {}
+ HasObjCTechnicalTerm("tt"), IsPrivate("private"), IsPublic("public"),
+ IsSensitive("sensitive") {}
static PrintfSpecifier Parse(const char *beg, const char *end);
@@ -512,6 +536,9 @@
}
void setIsPrivate(const char *position) { IsPrivate.setPosition(position); }
void setIsPublic(const char *position) { IsPublic.setPosition(position); }
+ void setIsSensitive(const char *position) {
+ IsSensitive.setPosition(position);
+ }
void setUsesPositionalArg() { UsesPositionalArg = true; }
// Methods for querying the format specifier.
@@ -551,8 +578,12 @@
const OptionalFlag &hasObjCTechnicalTerm() const { return HasObjCTechnicalTerm; }
const OptionalFlag &isPrivate() const { return IsPrivate; }
const OptionalFlag &isPublic() const { return IsPublic; }
+ const OptionalFlag &isSensitive() const { return IsSensitive; }
bool usesPositionalArg() const { return UsesPositionalArg; }
+ StringRef getMaskType() const { return MaskType; }
+ void setMaskType(StringRef S) { MaskType = S; }
+
/// Changes the specifier and length according to a QualType, retaining any
/// flags or options. Returns true on success, or false when a conversion
/// was not successful.
@@ -685,6 +716,9 @@
return true;
}
+ /// Handle mask types whose sizes are not between one and eight bytes.
+ virtual void handleInvalidMaskType(StringRef MaskType) {}
+
// Scanf-specific handlers.
virtual bool HandleInvalidScanfConversionSpecifier(
diff --git a/linux-x64/clang/include/clang/AST/GlobalDecl.h b/linux-x64/clang/include/clang/AST/GlobalDecl.h
index 7f01799..a5937c2 100644
--- a/linux-x64/clang/include/clang/AST/GlobalDecl.h
+++ b/linux-x64/clang/include/clang/AST/GlobalDecl.h
@@ -1,9 +1,8 @@
//===- GlobalDecl.h - Global declaration holder -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -34,6 +33,7 @@
/// a VarDecl, a FunctionDecl or a BlockDecl.
class GlobalDecl {
llvm::PointerIntPair<const Decl *, 2> Value;
+ unsigned MultiVersionIndex = 0;
void Init(const Decl *D) {
assert(!isa<CXXConstructorDecl>(D) && "Use other ctor with ctor decls!");
@@ -45,7 +45,10 @@
public:
GlobalDecl() = default;
GlobalDecl(const VarDecl *D) { Init(D);}
- GlobalDecl(const FunctionDecl *D) { Init(D); }
+ GlobalDecl(const FunctionDecl *D, unsigned MVIndex = 0)
+ : MultiVersionIndex(MVIndex) {
+ Init(D);
+ }
GlobalDecl(const BlockDecl *D) { Init(D); }
GlobalDecl(const CapturedDecl *D) { Init(D); }
GlobalDecl(const ObjCMethodDecl *D) { Init(D); }
@@ -57,6 +60,7 @@
GlobalDecl CanonGD;
CanonGD.Value.setPointer(Value.getPointer()->getCanonicalDecl());
CanonGD.Value.setInt(Value.getInt());
+ CanonGD.MultiVersionIndex = MultiVersionIndex;
return CanonGD;
}
@@ -73,8 +77,17 @@
return static_cast<CXXDtorType>(Value.getInt());
}
+ unsigned getMultiVersionIndex() const {
+ assert(isa<FunctionDecl>(getDecl()) &&
+ !isa<CXXConstructorDecl>(getDecl()) &&
+ !isa<CXXDestructorDecl>(getDecl()) &&
+ "Decl is not a plain FunctionDecl!");
+ return MultiVersionIndex;
+ }
+
friend bool operator==(const GlobalDecl &LHS, const GlobalDecl &RHS) {
- return LHS.Value == RHS.Value;
+ return LHS.Value == RHS.Value &&
+ LHS.MultiVersionIndex == RHS.MultiVersionIndex;
}
void *getAsOpaquePtr() const { return Value.getOpaqueValue(); }
@@ -90,6 +103,16 @@
Result.Value.setPointer(D);
return Result;
}
+
+ GlobalDecl getWithMultiVersionIndex(unsigned Index) {
+ assert(isa<FunctionDecl>(getDecl()) &&
+ !isa<CXXConstructorDecl>(getDecl()) &&
+ !isa<CXXDestructorDecl>(getDecl()) &&
+ "Decl is not a plain FunctionDecl!");
+ GlobalDecl Result(*this);
+ Result.MultiVersionIndex = Index;
+ return Result;
+ }
};
} // namespace clang
@@ -116,13 +139,6 @@
}
};
- // GlobalDecl isn't *technically* a POD type. However, its copy constructor,
- // copy assignment operator, and destructor are all trivial.
- template <>
- struct isPodLike<clang::GlobalDecl> {
- static const bool value = true;
- };
-
} // namespace llvm
#endif // LLVM_CLANG_AST_GLOBALDECL_H
diff --git a/linux-x64/clang/include/clang/AST/LambdaCapture.h b/linux-x64/clang/include/clang/AST/LambdaCapture.h
index f246bc4..8e28065 100644
--- a/linux-x64/clang/include/clang/AST/LambdaCapture.h
+++ b/linux-x64/clang/include/clang/AST/LambdaCapture.h
@@ -1,9 +1,8 @@
//===--- LambdaCapture.h - Types for C++ Lambda Captures --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/AST/LexicallyOrderedRecursiveASTVisitor.h b/linux-x64/clang/include/clang/AST/LexicallyOrderedRecursiveASTVisitor.h
index 47dac43..e42f044 100644
--- a/linux-x64/clang/include/clang/AST/LexicallyOrderedRecursiveASTVisitor.h
+++ b/linux-x64/clang/include/clang/AST/LexicallyOrderedRecursiveASTVisitor.h
@@ -1,9 +1,8 @@
//===--- LexicallyOrderedRecursiveASTVisitor.h - ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/LocInfoType.h b/linux-x64/clang/include/clang/AST/LocInfoType.h
index 802d913..1073174 100644
--- a/linux-x64/clang/include/clang/AST/LocInfoType.h
+++ b/linux-x64/clang/include/clang/AST/LocInfoType.h
@@ -1,9 +1,8 @@
//===--- LocInfoType.h - Parsed Type with Location Information---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/Mangle.h b/linux-x64/clang/include/clang/AST/Mangle.h
index c42fe91..fb53fbe 100644
--- a/linux-x64/clang/include/clang/AST/Mangle.h
+++ b/linux-x64/clang/include/clang/AST/Mangle.h
@@ -1,9 +1,8 @@
//===--- Mangle.h - Mangle C++ Names ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -14,6 +13,7 @@
#ifndef LLVM_CLANG_AST_MANGLE_H
#define LLVM_CLANG_AST_MANGLE_H
+#include "clang/AST/Decl.h"
#include "clang/AST/Type.h"
#include "clang/Basic/ABI.h"
#include "llvm/ADT/DenseMap.h"
diff --git a/linux-x64/clang/include/clang/AST/MangleNumberingContext.h b/linux-x64/clang/include/clang/AST/MangleNumberingContext.h
index ff2148e..f1ca6a0 100644
--- a/linux-x64/clang/include/clang/AST/MangleNumberingContext.h
+++ b/linux-x64/clang/include/clang/AST/MangleNumberingContext.h
@@ -1,9 +1,8 @@
//=== MangleNumberingContext.h - Context for mangling numbers ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/NSAPI.h b/linux-x64/clang/include/clang/AST/NSAPI.h
index f9340c6..21f0c54 100644
--- a/linux-x64/clang/include/clang/AST/NSAPI.h
+++ b/linux-x64/clang/include/clang/AST/NSAPI.h
@@ -1,9 +1,8 @@
//===--- NSAPI.h - NSFoundation APIs ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/AST/NestedNameSpecifier.h b/linux-x64/clang/include/clang/AST/NestedNameSpecifier.h
index fa98cfd..c6fae6f 100644
--- a/linux-x64/clang/include/clang/AST/NestedNameSpecifier.h
+++ b/linux-x64/clang/include/clang/AST/NestedNameSpecifier.h
@@ -1,9 +1,8 @@
//===- NestedNameSpecifier.h - C++ nested name specifiers -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -212,9 +211,12 @@
/// parameter pack (for C++11 variadic templates).
bool containsUnexpandedParameterPack() const;
- /// Print this nested name specifier to the given output
- /// stream.
- void print(raw_ostream &OS, const PrintingPolicy &Policy) const;
+ /// Print this nested name specifier to the given output stream. If
+ /// `ResolveTemplateArguments` is true, we'll print actual types, e.g.
+ /// `ns::SomeTemplate<int, MyClass>` instead of
+ /// `ns::SomeTemplate<Container::value_type, T>`.
+ void print(raw_ostream &OS, const PrintingPolicy &Policy,
+ bool ResolveTemplateArguments = false) const;
void Profile(llvm::FoldingSetNodeID &ID) const {
ID.AddPointer(Prefix.getOpaqueValue());
diff --git a/linux-x64/clang/include/clang/AST/NonTrivialTypeVisitor.h b/linux-x64/clang/include/clang/AST/NonTrivialTypeVisitor.h
index bab373d..aafcedb 100644
--- a/linux-x64/clang/include/clang/AST/NonTrivialTypeVisitor.h
+++ b/linux-x64/clang/include/clang/AST/NonTrivialTypeVisitor.h
@@ -1,9 +1,8 @@
//===-- NonTrivialTypeVisitor.h - Visitor for non-trivial Types *- C++ --*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/ODRHash.h b/linux-x64/clang/include/clang/AST/ODRHash.h
index feaa838..cd4a6f3 100644
--- a/linux-x64/clang/include/clang/AST/ODRHash.h
+++ b/linux-x64/clang/include/clang/AST/ODRHash.h
@@ -1,9 +1,8 @@
//===-- ODRHash.h - Hashing to diagnose ODR failures ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Analysis/Analyses/OSLog.h b/linux-x64/clang/include/clang/AST/OSLog.h
similarity index 81%
rename from linux-x64/clang/include/clang/Analysis/Analyses/OSLog.h
rename to linux-x64/clang/include/clang/AST/OSLog.h
index 1e60a23..c24e79c 100644
--- a/linux-x64/clang/include/clang/Analysis/Analyses/OSLog.h
+++ b/linux-x64/clang/include/clang/AST/OSLog.h
@@ -1,9 +1,8 @@
//= OSLog.h - Analysis of calls to os_log builtins --*- C++ -*-===============//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -52,7 +51,10 @@
// The item is corresponding to the '%m' format specifier, no value is
// populated in the buffer and the runtime is loading the errno value.
- ErrnoKind
+ ErrnoKind,
+
+ // The item is a mask type.
+ MaskKind
};
enum {
@@ -60,7 +62,10 @@
IsPrivate = 0x1,
// The item is marked "public" in the format string.
- IsPublic = 0x2
+ IsPublic = 0x2,
+
+ // The item is marked "sensitive" in the format string.
+ IsSensitive = 0x4 | IsPrivate
};
private:
@@ -69,21 +74,24 @@
CharUnits ConstValue;
CharUnits Size; // size of the data, not including the header bytes
unsigned Flags = 0;
+ StringRef MaskType;
public:
- OSLogBufferItem(Kind kind, const Expr *expr, CharUnits size, unsigned flags)
- : TheKind(kind), TheExpr(expr), Size(size), Flags(flags) {}
+ OSLogBufferItem(Kind kind, const Expr *expr, CharUnits size, unsigned flags,
+ StringRef maskType = StringRef())
+ : TheKind(kind), TheExpr(expr), Size(size), Flags(flags),
+ MaskType(maskType) {
+ assert(((Flags == 0) || (Flags == IsPrivate) || (Flags == IsPublic) ||
+ (Flags == IsSensitive)) &&
+ "unexpected privacy flag");
+ }
OSLogBufferItem(ASTContext &Ctx, CharUnits value, unsigned flags)
: TheKind(CountKind), ConstValue(value),
Size(Ctx.getTypeSizeInChars(Ctx.IntTy)), Flags(flags) {}
unsigned char getDescriptorByte() const {
- unsigned char result = 0;
- if (getIsPrivate())
- result |= IsPrivate;
- if (getIsPublic())
- result |= IsPublic;
+ unsigned char result = Flags;
result |= ((unsigned)getKind()) << 4;
return result;
}
@@ -92,11 +100,12 @@
Kind getKind() const { return TheKind; }
bool getIsPrivate() const { return (Flags & IsPrivate) != 0; }
- bool getIsPublic() const { return (Flags & IsPublic) != 0; }
const Expr *getExpr() const { return TheExpr; }
CharUnits getConstValue() const { return ConstValue; }
CharUnits size() const { return Size; }
+
+ StringRef getMaskType() const { return MaskType; }
};
class OSLogBufferLayout {
@@ -120,14 +129,10 @@
Items, [](const OSLogBufferItem &Item) { return Item.getIsPrivate(); });
}
- bool hasPublicItems() const {
- return llvm::any_of(
- Items, [](const OSLogBufferItem &Item) { return Item.getIsPublic(); });
- }
-
- bool hasNonScalar() const {
+ bool hasNonScalarOrMask() const {
return llvm::any_of(Items, [](const OSLogBufferItem &Item) {
- return Item.getKind() != OSLogBufferItem::ScalarKind;
+ return Item.getKind() != OSLogBufferItem::ScalarKind ||
+ !Item.getMaskType().empty();
});
}
@@ -135,7 +140,7 @@
unsigned char result = 0;
if (hasPrivateItems())
result |= HasPrivateItems;
- if (hasNonScalar())
+ if (hasNonScalarOrMask())
result |= HasNonScalarItems;
return result;
}
diff --git a/linux-x64/clang/include/clang/AST/OpenMPClause.h b/linux-x64/clang/include/clang/AST/OpenMPClause.h
index 98b1986..becb2a1 100644
--- a/linux-x64/clang/include/clang/AST/OpenMPClause.h
+++ b/linux-x64/clang/include/clang/AST/OpenMPClause.h
@@ -1,9 +1,8 @@
//===- OpenMPClause.h - Classes for OpenMP clauses --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -827,6 +826,117 @@
}
};
+/// This represents 'dynamic_allocators' clause in the '#pragma omp requires'
+/// directive.
+///
+/// \code
+/// #pragma omp requires dynamic_allocators
+/// \endcode
+/// In this example directive '#pragma omp requires' has 'dynamic_allocators'
+/// clause.
+class OMPDynamicAllocatorsClause final : public OMPClause {
+public:
+ friend class OMPClauseReader;
+ /// Build 'dynamic_allocators' clause.
+ ///
+ /// \param StartLoc Starting location of the clause.
+ /// \param EndLoc Ending location of the clause.
+ OMPDynamicAllocatorsClause(SourceLocation StartLoc, SourceLocation EndLoc)
+ : OMPClause(OMPC_dynamic_allocators, StartLoc, EndLoc) {}
+
+ /// Build an empty clause.
+ OMPDynamicAllocatorsClause()
+ : OMPClause(OMPC_dynamic_allocators, SourceLocation(), SourceLocation()) {
+ }
+
+ child_range children() {
+ return child_range(child_iterator(), child_iterator());
+ }
+
+ static bool classof(const OMPClause *T) {
+ return T->getClauseKind() == OMPC_dynamic_allocators;
+ }
+};
+
+/// This represents 'atomic_default_mem_order' clause in the '#pragma omp
+/// requires' directive.
+///
+/// \code
+/// #pragma omp requires atomic_default_mem_order(seq_cst)
+/// \endcode
+/// In this example directive '#pragma omp requires' has simple
+/// atomic_default_mem_order' clause with kind 'seq_cst'.
+class OMPAtomicDefaultMemOrderClause final : public OMPClause {
+ friend class OMPClauseReader;
+
+ /// Location of '('
+ SourceLocation LParenLoc;
+
+ /// A kind of the 'atomic_default_mem_order' clause.
+ OpenMPAtomicDefaultMemOrderClauseKind Kind =
+ OMPC_ATOMIC_DEFAULT_MEM_ORDER_unknown;
+
+ /// Start location of the kind in source code.
+ SourceLocation KindKwLoc;
+
+ /// Set kind of the clause.
+ ///
+ /// \param K Kind of clause.
+ void setAtomicDefaultMemOrderKind(OpenMPAtomicDefaultMemOrderClauseKind K) {
+ Kind = K;
+ }
+
+ /// Set clause kind location.
+ ///
+ /// \param KLoc Kind location.
+ void setAtomicDefaultMemOrderKindKwLoc(SourceLocation KLoc) {
+ KindKwLoc = KLoc;
+ }
+
+public:
+ /// Build 'atomic_default_mem_order' clause with argument \a A ('seq_cst',
+ /// 'acq_rel' or 'relaxed').
+ ///
+ /// \param A Argument of the clause ('seq_cst', 'acq_rel' or 'relaxed').
+ /// \param ALoc Starting location of the argument.
+ /// \param StartLoc Starting location of the clause.
+ /// \param LParenLoc Location of '('.
+ /// \param EndLoc Ending location of the clause.
+ OMPAtomicDefaultMemOrderClause(OpenMPAtomicDefaultMemOrderClauseKind A,
+ SourceLocation ALoc, SourceLocation StartLoc,
+ SourceLocation LParenLoc,
+ SourceLocation EndLoc)
+ : OMPClause(OMPC_atomic_default_mem_order, StartLoc, EndLoc),
+ LParenLoc(LParenLoc), Kind(A), KindKwLoc(ALoc) {}
+
+ /// Build an empty clause.
+ OMPAtomicDefaultMemOrderClause()
+ : OMPClause(OMPC_atomic_default_mem_order, SourceLocation(),
+ SourceLocation()) {}
+
+ /// Sets the location of '('.
+ void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
+
+ /// Returns the locaiton of '('.
+ SourceLocation getLParenLoc() const { return LParenLoc; }
+
+ /// Returns kind of the clause.
+ OpenMPAtomicDefaultMemOrderClauseKind getAtomicDefaultMemOrderKind() const {
+ return Kind;
+ }
+
+ /// Returns location of clause kind.
+ SourceLocation getAtomicDefaultMemOrderKindKwLoc() const { return KindKwLoc; }
+
+ child_range children() {
+ return child_range(child_iterator(), child_iterator());
+ }
+
+ static bool classof(const OMPClause *T) {
+ return T->getClauseKind() == OMPC_atomic_default_mem_order;
+ }
+};
+
/// This represents 'schedule' clause in the '#pragma omp ...' directive.
///
/// \code
@@ -3950,8 +4060,19 @@
return getUniqueDeclarationsNum() + getTotalComponentListNum();
}
- /// Map type modifier for the 'map' clause.
- OpenMPMapClauseKind MapTypeModifier = OMPC_MAP_unknown;
+public:
+ /// Number of allowed map-type-modifiers.
+ static constexpr unsigned NumberOfModifiers =
+ OMPC_MAP_MODIFIER_last - OMPC_MAP_MODIFIER_unknown - 1;
+
+private:
+ /// Map-type-modifiers for the 'map' clause.
+ OpenMPMapModifierKind MapTypeModifiers[NumberOfModifiers] = {
+ OMPC_MAP_MODIFIER_unknown, OMPC_MAP_MODIFIER_unknown
+ };
+
+ /// Location of map-type-modifiers for the 'map' clause.
+ SourceLocation MapTypeModifiersLoc[NumberOfModifiers];
/// Map type for the 'map' clause.
OpenMPMapClauseKind MapType = OMPC_MAP_unknown;
@@ -3969,7 +4090,8 @@
/// NumUniqueDeclarations declarations, \a NumComponentLists total component
/// lists, and \a NumComponents total expression components.
///
- /// \param MapTypeModifier Map type modifier.
+ /// \param MapModifiers Map-type-modifiers.
+ /// \param MapModifiersLoc Locations of map-type-modifiers.
/// \param MapType Map type.
/// \param MapTypeIsImplicit Map type is inferred implicitly.
/// \param MapLoc Location of the map type.
@@ -3980,7 +4102,8 @@
/// clause.
/// \param NumComponentLists Number of component lists in this clause.
/// \param NumComponents Total number of expression components in the clause.
- explicit OMPMapClause(OpenMPMapClauseKind MapTypeModifier,
+ explicit OMPMapClause(ArrayRef<OpenMPMapModifierKind> MapModifiers,
+ ArrayRef<SourceLocation> MapModifiersLoc,
OpenMPMapClauseKind MapType, bool MapTypeIsImplicit,
SourceLocation MapLoc, SourceLocation StartLoc,
SourceLocation LParenLoc, SourceLocation EndLoc,
@@ -3989,8 +4112,17 @@
: OMPMappableExprListClause(OMPC_map, StartLoc, LParenLoc, EndLoc,
NumVars, NumUniqueDeclarations,
NumComponentLists, NumComponents),
- MapTypeModifier(MapTypeModifier), MapType(MapType),
- MapTypeIsImplicit(MapTypeIsImplicit), MapLoc(MapLoc) {}
+ MapType(MapType), MapTypeIsImplicit(MapTypeIsImplicit),
+ MapLoc(MapLoc) {
+ assert(llvm::array_lengthof(MapTypeModifiers) == MapModifiers.size()
+ && "Unexpected number of map type modifiers.");
+ llvm::copy(MapModifiers, std::begin(MapTypeModifiers));
+
+ assert(llvm::array_lengthof(MapTypeModifiersLoc) ==
+ MapModifiersLoc.size() &&
+ "Unexpected number of map type modifier locations.");
+ llvm::copy(MapModifiersLoc, std::begin(MapTypeModifiersLoc));
+ }
/// Build an empty clause.
///
@@ -4005,10 +4137,25 @@
OMPC_map, SourceLocation(), SourceLocation(), SourceLocation(),
NumVars, NumUniqueDeclarations, NumComponentLists, NumComponents) {}
- /// Set type modifier for the clause.
+ /// Set map-type-modifier for the clause.
///
- /// \param T Type Modifier for the clause.
- void setMapTypeModifier(OpenMPMapClauseKind T) { MapTypeModifier = T; }
+ /// \param I index for map-type-modifier.
+ /// \param T map-type-modifier for the clause.
+ void setMapTypeModifier(unsigned I, OpenMPMapModifierKind T) {
+ assert(I < NumberOfModifiers &&
+ "Unexpected index to store map type modifier, exceeds array size.");
+ MapTypeModifiers[I] = T;
+ }
+
+ /// Set location for the map-type-modifier.
+ ///
+ /// \param I index for map-type-modifier location.
+ /// \param TLoc map-type-modifier location.
+ void setMapTypeModifierLoc(unsigned I, SourceLocation TLoc) {
+ assert(I < NumberOfModifiers &&
+ "Index to store map type modifier location exceeds array size.");
+ MapTypeModifiersLoc[I] = TLoc;
+ }
/// Set type for the clause.
///
@@ -4032,7 +4179,8 @@
/// \param Vars The original expression used in the clause.
/// \param Declarations Declarations used in the clause.
/// \param ComponentLists Component lists used in the clause.
- /// \param TypeModifier Map type modifier.
+ /// \param MapModifiers Map-type-modifiers.
+ /// \param MapModifiersLoc Location of map-type-modifiers.
/// \param Type Map type.
/// \param TypeIsImplicit Map type is inferred implicitly.
/// \param TypeLoc Location of the map type.
@@ -4041,7 +4189,8 @@
ArrayRef<Expr *> Vars,
ArrayRef<ValueDecl *> Declarations,
MappableExprComponentListsRef ComponentLists,
- OpenMPMapClauseKind TypeModifier,
+ ArrayRef<OpenMPMapModifierKind> MapModifiers,
+ ArrayRef<SourceLocation> MapModifiersLoc,
OpenMPMapClauseKind Type, bool TypeIsImplicit,
SourceLocation TypeLoc);
@@ -4071,9 +4220,33 @@
/// messages for some target directives.
bool isImplicitMapType() const LLVM_READONLY { return MapTypeIsImplicit; }
- /// Fetches the map type modifier for the clause.
- OpenMPMapClauseKind getMapTypeModifier() const LLVM_READONLY {
- return MapTypeModifier;
+ /// Fetches the map-type-modifier at 'Cnt' index of array of modifiers.
+ ///
+ /// \param Cnt index for map-type-modifier.
+ OpenMPMapModifierKind getMapTypeModifier(unsigned Cnt) const LLVM_READONLY {
+ assert(Cnt < NumberOfModifiers &&
+ "Requested modifier exceeds the total number of modifiers.");
+ return MapTypeModifiers[Cnt];
+ }
+
+ /// Fetches the map-type-modifier location at 'Cnt' index of array of
+ /// modifiers' locations.
+ ///
+ /// \param Cnt index for map-type-modifier location.
+ SourceLocation getMapTypeModifierLoc(unsigned Cnt) const LLVM_READONLY {
+ assert(Cnt < NumberOfModifiers &&
+ "Requested modifier location exceeds total number of modifiers.");
+ return MapTypeModifiersLoc[Cnt];
+ }
+
+ /// Fetches ArrayRef of map-type-modifiers.
+ ArrayRef<OpenMPMapModifierKind> getMapTypeModifiers() const LLVM_READONLY {
+ return llvm::makeArrayRef(MapTypeModifiers);
+ }
+
+ /// Fetches ArrayRef of location of map-type-modifiers.
+ ArrayRef<SourceLocation> getMapTypeModifiersLoc() const LLVM_READONLY {
+ return llvm::makeArrayRef(MapTypeModifiersLoc);
}
/// Fetches location of clause mapping kind.
@@ -5145,6 +5318,7 @@
#define OPENMP_CLAUSE(Name, Class) \
RetTy Visit ## Class (PTR(Class) S) { DISPATCH(Class); }
+ OPENMP_CLAUSE(flush, OMPFlushClause)
#include "clang/Basic/OpenMPKinds.def"
RetTy Visit(PTR(OMPClause) S) {
@@ -5153,6 +5327,7 @@
default: llvm_unreachable("Unknown clause kind!");
#define OPENMP_CLAUSE(Name, Class) \
case OMPC_ ## Name : return Visit ## Class(static_cast<PTR(Class)>(S));
+ OPENMP_CLAUSE(flush, OMPFlushClause)
#include "clang/Basic/OpenMPKinds.def"
}
}
@@ -5171,6 +5346,23 @@
template<class ImplClass, typename RetTy = void>
class ConstOMPClauseVisitor :
public OMPClauseVisitorBase <ImplClass, const_ptr, RetTy> {};
+
+class OMPClausePrinter final : public OMPClauseVisitor<OMPClausePrinter> {
+ raw_ostream &OS;
+ const PrintingPolicy &Policy;
+
+ /// Process clauses with list of variables.
+ template <typename T> void VisitOMPClauseList(T *Node, char StartSym);
+
+public:
+ OMPClausePrinter(raw_ostream &OS, const PrintingPolicy &Policy)
+ : OS(OS), Policy(Policy) {}
+
+#define OPENMP_CLAUSE(Name, Class) void Visit##Class(Class *S);
+ OPENMP_CLAUSE(flush, OMPFlushClause)
+#include "clang/Basic/OpenMPKinds.def"
+};
+
} // namespace clang
#endif // LLVM_CLANG_AST_OPENMPCLAUSE_H
diff --git a/linux-x64/clang/include/clang/AST/OperationKinds.def b/linux-x64/clang/include/clang/AST/OperationKinds.def
index e2d65d8..d8b286e 100644
--- a/linux-x64/clang/include/clang/AST/OperationKinds.def
+++ b/linux-x64/clang/include/clang/AST/OperationKinds.def
@@ -1,9 +1,8 @@
//===--- OperationKinds.def - Operations Database ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -197,6 +196,14 @@
/// float f = i;
CAST_OPERATION(IntegralToFloating)
+/// CK_FixedPointCast - Fixed point to fixed point.
+/// (_Accum) 0.5r
+CAST_OPERATION(FixedPointCast)
+
+/// CK_FixedPointToBoolean - Fixed point to boolean.
+/// (bool) 0.5r
+CAST_OPERATION(FixedPointToBoolean)
+
/// CK_FloatingToIntegral - Floating point to integral. Rounds
/// towards zero, discarding any fractional component.
/// (int) f
@@ -318,11 +325,9 @@
// callee of a call expression.
CAST_OPERATION(BuiltinFnToFnPtr)
-// Convert a zero value for OpenCL event_t initialization.
-CAST_OPERATION(ZeroToOCLEvent)
-
-// Convert a zero value for OpenCL queue_t initialization.
-CAST_OPERATION(ZeroToOCLQueue)
+// Convert a zero value for OpenCL opaque types initialization (event_t,
+// queue_t, etc.)
+CAST_OPERATION(ZeroToOCLOpaqueType)
// Convert a pointer to a different address space.
CAST_OPERATION(AddressSpaceConversion)
diff --git a/linux-x64/clang/include/clang/AST/OperationKinds.h b/linux-x64/clang/include/clang/AST/OperationKinds.h
index ac512d7..679e0fd 100644
--- a/linux-x64/clang/include/clang/AST/OperationKinds.h
+++ b/linux-x64/clang/include/clang/AST/OperationKinds.h
@@ -1,9 +1,8 @@
//===- OperationKinds.h - Operation enums -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/ParentMap.h b/linux-x64/clang/include/clang/AST/ParentMap.h
index c1c76ce..1e65d7e 100644
--- a/linux-x64/clang/include/clang/AST/ParentMap.h
+++ b/linux-x64/clang/include/clang/AST/ParentMap.h
@@ -1,9 +1,8 @@
//===--- ParentMap.h - Mappings from Stmts to their Parents -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/PrettyDeclStackTrace.h b/linux-x64/clang/include/clang/AST/PrettyDeclStackTrace.h
index 8eb519e..899bbcb 100644
--- a/linux-x64/clang/include/clang/AST/PrettyDeclStackTrace.h
+++ b/linux-x64/clang/include/clang/AST/PrettyDeclStackTrace.h
@@ -1,9 +1,8 @@
//===- PrettyDeclStackTrace.h - Stack trace for decl processing -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/PrettyPrinter.h b/linux-x64/clang/include/clang/AST/PrettyPrinter.h
index ed6b97f..0cd62ba 100644
--- a/linux-x64/clang/include/clang/AST/PrettyPrinter.h
+++ b/linux-x64/clang/include/clang/AST/PrettyPrinter.h
@@ -1,9 +1,8 @@
//===--- PrettyPrinter.h - Classes for aiding with AST printing -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -38,21 +37,20 @@
struct PrintingPolicy {
/// Create a default printing policy for the specified language.
PrintingPolicy(const LangOptions &LO)
- : Indentation(2), SuppressSpecifiers(false),
- SuppressTagKeyword(LO.CPlusPlus),
- IncludeTagDefinition(false), SuppressScope(false),
- SuppressUnwrittenScope(false), SuppressInitializers(false),
- ConstantArraySizeAsWritten(false), AnonymousTagLocations(true),
- SuppressStrongLifetime(false), SuppressLifetimeQualifiers(false),
- SuppressTemplateArgsInCXXConstructors(false),
- Bool(LO.Bool), Restrict(LO.C99),
- Alignof(LO.CPlusPlus11), UnderscoreAlignof(LO.C11),
- UseVoidForZeroParams(!LO.CPlusPlus),
- TerseOutput(false), PolishForDeclaration(false),
- Half(LO.Half), MSWChar(LO.MicrosoftExt && !LO.WChar),
- IncludeNewlines(true), MSVCFormatting(false),
- ConstantsAsWritten(false), SuppressImplicitBase(false),
- FullyQualifiedName(false) { }
+ : Indentation(2), SuppressSpecifiers(false),
+ SuppressTagKeyword(LO.CPlusPlus), IncludeTagDefinition(false),
+ SuppressScope(false), SuppressUnwrittenScope(false),
+ SuppressInitializers(false), ConstantArraySizeAsWritten(false),
+ AnonymousTagLocations(true), SuppressStrongLifetime(false),
+ SuppressLifetimeQualifiers(false),
+ SuppressTemplateArgsInCXXConstructors(false), Bool(LO.Bool),
+ Restrict(LO.C99), Alignof(LO.CPlusPlus11), UnderscoreAlignof(LO.C11),
+ UseVoidForZeroParams(!LO.CPlusPlus), TerseOutput(false),
+ PolishForDeclaration(false), Half(LO.Half),
+ MSWChar(LO.MicrosoftExt && !LO.WChar), IncludeNewlines(true),
+ MSVCFormatting(false), ConstantsAsWritten(false),
+ SuppressImplicitBase(false), FullyQualifiedName(false),
+ RemapFilePaths(false), PrintCanonicalTypes(false) {}
/// Adjust this printing policy for cases where it's known that we're
/// printing C++ code (for instance, if AST dumping reaches a C++-only
@@ -225,6 +223,15 @@
/// When true, print the fully qualified name of function declarations.
/// This is the opposite of SuppressScope and thus overrules it.
unsigned FullyQualifiedName : 1;
+
+ /// Whether to apply -fdebug-prefix-map to any file paths.
+ unsigned RemapFilePaths : 1;
+
+ /// Whether to print types as written or canonically.
+ unsigned PrintCanonicalTypes : 1;
+
+ /// When RemapFilePaths is true, this function performs the action.
+ std::function<std::string(StringRef)> remapPath;
};
} // end namespace clang
diff --git a/linux-x64/clang/include/clang/AST/QualTypeNames.h b/linux-x64/clang/include/clang/AST/QualTypeNames.h
index 422ed9e..8313e04 100644
--- a/linux-x64/clang/include/clang/AST/QualTypeNames.h
+++ b/linux-x64/clang/include/clang/AST/QualTypeNames.h
@@ -1,7 +1,8 @@
//===--- QualTypeNames.h - Generate Complete QualType Names ----*- C++ -*-===//
//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
// ===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/RawCommentList.h b/linux-x64/clang/include/clang/AST/RawCommentList.h
index d17c9df..5dc8694 100644
--- a/linux-x64/clang/include/clang/AST/RawCommentList.h
+++ b/linux-x64/clang/include/clang/AST/RawCommentList.h
@@ -1,9 +1,8 @@
//===--- RawCommentList.h - Classes for processing raw comments -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/AST/RecordLayout.h b/linux-x64/clang/include/clang/AST/RecordLayout.h
index a546c20..b259791 100644
--- a/linux-x64/clang/include/clang/AST/RecordLayout.h
+++ b/linux-x64/clang/include/clang/AST/RecordLayout.h
@@ -1,9 +1,8 @@
//===- RecordLayout.h - Layout information for a struct/union ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/RecursiveASTVisitor.h b/linux-x64/clang/include/clang/AST/RecursiveASTVisitor.h
index 5933c88..224e5b3 100644
--- a/linux-x64/clang/include/clang/AST/RecursiveASTVisitor.h
+++ b/linux-x64/clang/include/clang/AST/RecursiveASTVisitor.h
@@ -1,9 +1,8 @@
//===--- RecursiveASTVisitor.h - Recursive AST Visitor ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -176,6 +175,16 @@
/// Return whether this visitor should traverse post-order.
bool shouldTraversePostOrder() const { return false; }
+ /// Recursively visits an entire AST, starting from the top-level Decls
+ /// in the AST traversal scope (by default, the TranslationUnitDecl).
+ /// \returns false if visitation was terminated early.
+ bool TraverseAST(ASTContext &AST) {
+ for (Decl *D : AST.getTraversalScope())
+ if (!getDerived().TraverseDecl(D))
+ return false;
+ return true;
+ }
+
/// Recursively visit a statement or expression, by
/// dispatching to Traverse*() based on the argument's dynamic type.
///
@@ -288,14 +297,6 @@
bool TraverseLambdaCapture(LambdaExpr *LE, const LambdaCapture *C,
Expr *Init);
- /// Recursively visit the body of a lambda expression.
- ///
- /// This provides a hook for visitors that need more context when visiting
- /// \c LE->getBody().
- ///
- /// \returns false if the visitation was terminated early, true otherwise.
- bool TraverseLambdaBody(LambdaExpr *LE, DataRecursionQueue *Queue = nullptr);
-
/// Recursively visit the syntactic or semantic form of an
/// initialization list.
///
@@ -528,6 +529,7 @@
bool TraverseOMPLoopDirective(OMPLoopDirective *S);
bool TraverseOMPClause(OMPClause *C);
#define OPENMP_CLAUSE(Name, Class) bool Visit##Class(Class *C);
+ OPENMP_CLAUSE(flush, OMPFlushClause)
#include "clang/Basic/OpenMPKinds.def"
/// Process clauses with list of variables.
template <typename T> bool VisitOMPClauseList(T *Node);
@@ -926,13 +928,6 @@
return true;
}
-template <typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseLambdaBody(
- LambdaExpr *LE, DataRecursionQueue *Queue) {
- TRY_TO_TRAVERSE_OR_ENQUEUE_STMT(LE->getBody());
- return true;
-}
-
// ----------------- Type traversal -----------------
// This macro makes available a variable T, the passed-in type.
@@ -1373,9 +1368,14 @@
template <typename Derived>
bool RecursiveASTVisitor<Derived>::canIgnoreChildDeclWhileTraversingDeclContext(
const Decl *Child) {
- // BlockDecls and CapturedDecls are traversed through BlockExprs and
- // CapturedStmts respectively.
- return isa<BlockDecl>(Child) || isa<CapturedDecl>(Child);
+ // BlockDecls are traversed through BlockExprs,
+ // CapturedDecls are traversed through CapturedStmts.
+ if (isa<BlockDecl>(Child) || isa<CapturedDecl>(Child))
+ return true;
+ // Lambda classes are traversed through LambdaExprs.
+ if (const CXXRecordDecl* Cls = dyn_cast<CXXRecordDecl>(Child))
+ return Cls->isLambda();
+ return false;
}
template <typename Derived>
@@ -1590,7 +1590,7 @@
TRY_TO(TraverseStmt(I));
}
})
-
+
DEF_TRAVERSE_DECL(OMPRequiresDecl, {
for (auto *C : D->clauselists()) {
TRY_TO(TraverseOMPClause(C));
@@ -1605,6 +1605,13 @@
return true;
})
+DEF_TRAVERSE_DECL(OMPDeclareMapperDecl, {
+ for (auto *C : D->clauselists())
+ TRY_TO(TraverseOMPClause(C));
+ TRY_TO(TraverseType(D->getType()));
+ return true;
+})
+
DEF_TRAVERSE_DECL(OMPCapturedExprDecl, { TRY_TO(TraverseVarHelper(D)); })
// A helper method for TemplateDecl's children.
@@ -2199,6 +2206,8 @@
DEF_TRAVERSE_STMT(SwitchStmt, {})
DEF_TRAVERSE_STMT(WhileStmt, {})
+DEF_TRAVERSE_STMT(ConstantExpr, {})
+
DEF_TRAVERSE_STMT(CXXDependentScopeMemberExpr, {
TRY_TO(TraverseNestedNameSpecifierLoc(S->getQualifierLoc()));
TRY_TO(TraverseDeclarationNameInfo(S->getMemberNameInfo()));
@@ -2299,10 +2308,10 @@
// generic associations).
DEF_TRAVERSE_STMT(GenericSelectionExpr, {
TRY_TO(TraverseStmt(S->getControllingExpr()));
- for (unsigned i = 0; i != S->getNumAssocs(); ++i) {
- if (TypeSourceInfo *TS = S->getAssocTypeSourceInfo(i))
- TRY_TO(TraverseTypeLoc(TS->getTypeLoc()));
- TRY_TO_TRAVERSE_OR_ENQUEUE_STMT(S->getAssocExpr(i));
+ for (const GenericSelectionExpr::Association &Assoc : S->associations()) {
+ if (TypeSourceInfo *TSI = Assoc.getTypeSourceInfo())
+ TRY_TO(TraverseTypeLoc(TSI->getTypeLoc()));
+ TRY_TO_TRAVERSE_OR_ENQUEUE_STMT(Assoc.getAssociationExpr());
}
ShouldVisitChildren = false;
})
@@ -2392,6 +2401,7 @@
// Walk only the visible parts of lambda expressions.
DEF_TRAVERSE_STMT(LambdaExpr, {
+ // Visit the capture list.
for (unsigned I = 0, N = S->capture_size(); I != N; ++I) {
const LambdaCapture *C = S->capture_begin() + I;
if (C->isExplicit() || getDerived().shouldVisitImplicitCode()) {
@@ -2399,32 +2409,31 @@
}
}
- TypeLoc TL = S->getCallOperator()->getTypeSourceInfo()->getTypeLoc();
- FunctionProtoTypeLoc Proto = TL.getAsAdjusted<FunctionProtoTypeLoc>();
-
- if (S->hasExplicitParameters() && S->hasExplicitResultType()) {
- // Visit the whole type.
- TRY_TO(TraverseTypeLoc(TL));
+ if (getDerived().shouldVisitImplicitCode()) {
+ // The implicit model is simple: everything else is in the lambda class.
+ TRY_TO(TraverseDecl(S->getLambdaClass()));
} else {
+ // We need to poke around to find the bits that might be explicitly written.
+ TypeLoc TL = S->getCallOperator()->getTypeSourceInfo()->getTypeLoc();
+ FunctionProtoTypeLoc Proto = TL.getAsAdjusted<FunctionProtoTypeLoc>();
+
if (S->hasExplicitParameters()) {
// Visit parameters.
- for (unsigned I = 0, N = Proto.getNumParams(); I != N; ++I) {
+ for (unsigned I = 0, N = Proto.getNumParams(); I != N; ++I)
TRY_TO(TraverseDecl(Proto.getParam(I)));
- }
- } else if (S->hasExplicitResultType()) {
- TRY_TO(TraverseTypeLoc(Proto.getReturnLoc()));
}
+ if (S->hasExplicitResultType())
+ TRY_TO(TraverseTypeLoc(Proto.getReturnLoc()));
auto *T = Proto.getTypePtr();
- for (const auto &E : T->exceptions()) {
+ for (const auto &E : T->exceptions())
TRY_TO(TraverseType(E));
- }
if (Expr *NE = T->getNoexceptExpr())
TRY_TO_TRAVERSE_OR_ENQUEUE_STMT(NE);
- }
- ReturnValue = TRAVERSE_STMT_BASE(LambdaBody, LambdaExpr, S, Queue);
+ TRY_TO_TRAVERSE_OR_ENQUEUE_STMT(S->getBody());
+ }
ShouldVisitChildren = false;
})
@@ -2787,6 +2796,7 @@
case OMPC_##Name: \
TRY_TO(Visit##Class(static_cast<Class *>(C))); \
break;
+ OPENMP_CLAUSE(flush, OMPFlushClause)
#include "clang/Basic/OpenMPKinds.def"
case OMPC_threadprivate:
case OMPC_uniform:
@@ -2880,6 +2890,18 @@
}
template <typename Derived>
+bool RecursiveASTVisitor<Derived>::VisitOMPDynamicAllocatorsClause(
+ OMPDynamicAllocatorsClause *) {
+ return true;
+}
+
+template <typename Derived>
+bool RecursiveASTVisitor<Derived>::VisitOMPAtomicDefaultMemOrderClause(
+ OMPAtomicDefaultMemOrderClause *) {
+ return true;
+}
+
+template <typename Derived>
bool
RecursiveASTVisitor<Derived>::VisitOMPScheduleClause(OMPScheduleClause *C) {
TRY_TO(VisitOMPClauseWithPreInit(C));
diff --git a/linux-x64/clang/include/clang/AST/Redeclarable.h b/linux-x64/clang/include/clang/AST/Redeclarable.h
index c2bd6e6..9c690a9 100644
--- a/linux-x64/clang/include/clang/AST/Redeclarable.h
+++ b/linux-x64/clang/include/clang/AST/Redeclarable.h
@@ -1,9 +1,8 @@
//===- Redeclarable.h - Base for Decls that can be redeclared --*- C++ -*-====//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/SelectorLocationsKind.h b/linux-x64/clang/include/clang/AST/SelectorLocationsKind.h
index 6ca2dba..6e9923d 100644
--- a/linux-x64/clang/include/clang/AST/SelectorLocationsKind.h
+++ b/linux-x64/clang/include/clang/AST/SelectorLocationsKind.h
@@ -1,9 +1,8 @@
//===--- SelectorLocationsKind.h - Kind of selector locations ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/Stmt.h b/linux-x64/clang/include/clang/AST/Stmt.h
index b4e0fd5..b892d85 100644
--- a/linux-x64/clang/include/clang/AST/Stmt.h
+++ b/linux-x64/clang/include/clang/AST/Stmt.h
@@ -1,9 +1,8 @@
//===- Stmt.h - Classes for representing statements -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -89,6 +88,8 @@
llvm_unreachable("Stmts cannot be released with regular 'delete'.");
}
+ //===--- Statement bitfields classes ---===//
+
class StmtBitfields {
friend class Stmt;
@@ -97,22 +98,186 @@
};
enum { NumStmtBits = 8 };
+ class NullStmtBitfields {
+ friend class ASTStmtReader;
+ friend class ASTStmtWriter;
+ friend class NullStmt;
+
+ unsigned : NumStmtBits;
+
+ /// True if the null statement was preceded by an empty macro, e.g:
+ /// @code
+ /// #define CALL(x)
+ /// CALL(0);
+ /// @endcode
+ unsigned HasLeadingEmptyMacro : 1;
+
+ /// The location of the semi-colon.
+ SourceLocation SemiLoc;
+ };
+
class CompoundStmtBitfields {
+ friend class ASTStmtReader;
friend class CompoundStmt;
unsigned : NumStmtBits;
unsigned NumStmts : 32 - NumStmtBits;
+
+ /// The location of the opening "{".
+ SourceLocation LBraceLoc;
+ };
+
+ class LabelStmtBitfields {
+ friend class LabelStmt;
+
+ unsigned : NumStmtBits;
+
+ SourceLocation IdentLoc;
+ };
+
+ class AttributedStmtBitfields {
+ friend class ASTStmtReader;
+ friend class AttributedStmt;
+
+ unsigned : NumStmtBits;
+
+ /// Number of attributes.
+ unsigned NumAttrs : 32 - NumStmtBits;
+
+ /// The location of the attribute.
+ SourceLocation AttrLoc;
};
class IfStmtBitfields {
+ friend class ASTStmtReader;
friend class IfStmt;
unsigned : NumStmtBits;
+ /// True if this if statement is a constexpr if.
unsigned IsConstexpr : 1;
+
+ /// True if this if statement has storage for an else statement.
+ unsigned HasElse : 1;
+
+ /// True if this if statement has storage for a variable declaration.
+ unsigned HasVar : 1;
+
+ /// True if this if statement has storage for an init statement.
+ unsigned HasInit : 1;
+
+ /// The location of the "if".
+ SourceLocation IfLoc;
};
+ class SwitchStmtBitfields {
+ friend class SwitchStmt;
+
+ unsigned : NumStmtBits;
+
+ /// True if the SwitchStmt has storage for an init statement.
+ unsigned HasInit : 1;
+
+ /// True if the SwitchStmt has storage for a condition variable.
+ unsigned HasVar : 1;
+
+ /// If the SwitchStmt is a switch on an enum value, records whether all
+ /// the enum values were covered by CaseStmts. The coverage information
+ /// value is meant to be a hint for possible clients.
+ unsigned AllEnumCasesCovered : 1;
+
+ /// The location of the "switch".
+ SourceLocation SwitchLoc;
+ };
+
+ class WhileStmtBitfields {
+ friend class ASTStmtReader;
+ friend class WhileStmt;
+
+ unsigned : NumStmtBits;
+
+ /// True if the WhileStmt has storage for a condition variable.
+ unsigned HasVar : 1;
+
+ /// The location of the "while".
+ SourceLocation WhileLoc;
+ };
+
+ class DoStmtBitfields {
+ friend class DoStmt;
+
+ unsigned : NumStmtBits;
+
+ /// The location of the "do".
+ SourceLocation DoLoc;
+ };
+
+ class ForStmtBitfields {
+ friend class ForStmt;
+
+ unsigned : NumStmtBits;
+
+ /// The location of the "for".
+ SourceLocation ForLoc;
+ };
+
+ class GotoStmtBitfields {
+ friend class GotoStmt;
+ friend class IndirectGotoStmt;
+
+ unsigned : NumStmtBits;
+
+ /// The location of the "goto".
+ SourceLocation GotoLoc;
+ };
+
+ class ContinueStmtBitfields {
+ friend class ContinueStmt;
+
+ unsigned : NumStmtBits;
+
+ /// The location of the "continue".
+ SourceLocation ContinueLoc;
+ };
+
+ class BreakStmtBitfields {
+ friend class BreakStmt;
+
+ unsigned : NumStmtBits;
+
+ /// The location of the "break".
+ SourceLocation BreakLoc;
+ };
+
+ class ReturnStmtBitfields {
+ friend class ReturnStmt;
+
+ unsigned : NumStmtBits;
+
+ /// True if this ReturnStmt has storage for an NRVO candidate.
+ unsigned HasNRVOCandidate : 1;
+
+ /// The location of the "return".
+ SourceLocation RetLoc;
+ };
+
+ class SwitchCaseBitfields {
+ friend class SwitchCase;
+ friend class CaseStmt;
+
+ unsigned : NumStmtBits;
+
+ /// Used by CaseStmt to store whether it is a case statement
+ /// of the form case LHS ... RHS (a GNU extension).
+ unsigned CaseStmtIsGNURange : 1;
+
+ /// The location of the "case" or "default" keyword.
+ SourceLocation KeywordLoc;
+ };
+
+ //===--- Expression bitfields classes ---===//
+
class ExprBitfields {
friend class ASTStmtReader; // deserialization
friend class AtomicExpr; // ctor
@@ -146,14 +311,40 @@
unsigned InstantiationDependent : 1;
unsigned ContainsUnexpandedParameterPack : 1;
};
- enum { NumExprBits = 17 };
+ enum { NumExprBits = NumStmtBits + 9 };
- class CharacterLiteralBitfields {
- friend class CharacterLiteral;
+ class PredefinedExprBitfields {
+ friend class ASTStmtReader;
+ friend class PredefinedExpr;
unsigned : NumExprBits;
- unsigned Kind : 3;
+ /// The kind of this PredefinedExpr. One of the enumeration values
+ /// in PredefinedExpr::IdentKind.
+ unsigned Kind : 4;
+
+ /// True if this PredefinedExpr has a trailing "StringLiteral *"
+ /// for the predefined identifier.
+ unsigned HasFunctionName : 1;
+
+ /// The location of this PredefinedExpr.
+ SourceLocation Loc;
+ };
+
+ class DeclRefExprBitfields {
+ friend class ASTStmtReader; // deserialization
+ friend class DeclRefExpr;
+
+ unsigned : NumExprBits;
+
+ unsigned HasQualifier : 1;
+ unsigned HasTemplateKWAndArgsInfo : 1;
+ unsigned HasFoundDecl : 1;
+ unsigned HadMultipleCandidates : 1;
+ unsigned RefersToEnclosingVariableOrCapture : 1;
+
+ /// The location of the declaration name itself.
+ SourceLocation Loc;
};
enum APFloatSemantics {
@@ -174,26 +365,111 @@
unsigned IsExact : 1;
};
+ class StringLiteralBitfields {
+ friend class ASTStmtReader;
+ friend class StringLiteral;
+
+ unsigned : NumExprBits;
+
+ /// The kind of this string literal.
+ /// One of the enumeration values of StringLiteral::StringKind.
+ unsigned Kind : 3;
+
+ /// The width of a single character in bytes. Only values of 1, 2,
+ /// and 4 bytes are supported. StringLiteral::mapCharByteWidth maps
+ /// the target + string kind to the appropriate CharByteWidth.
+ unsigned CharByteWidth : 3;
+
+ unsigned IsPascal : 1;
+
+ /// The number of concatenated token this string is made of.
+ /// This is the number of trailing SourceLocation.
+ unsigned NumConcatenated;
+ };
+
+ class CharacterLiteralBitfields {
+ friend class CharacterLiteral;
+
+ unsigned : NumExprBits;
+
+ unsigned Kind : 3;
+ };
+
+ class UnaryOperatorBitfields {
+ friend class UnaryOperator;
+
+ unsigned : NumExprBits;
+
+ unsigned Opc : 5;
+ unsigned CanOverflow : 1;
+
+ SourceLocation Loc;
+ };
+
class UnaryExprOrTypeTraitExprBitfields {
friend class UnaryExprOrTypeTraitExpr;
unsigned : NumExprBits;
- unsigned Kind : 2;
+ unsigned Kind : 3;
unsigned IsType : 1; // true if operand is a type, false if an expression.
};
- class DeclRefExprBitfields {
- friend class ASTStmtReader; // deserialization
- friend class DeclRefExpr;
+ class ArraySubscriptExprBitfields {
+ friend class ArraySubscriptExpr;
unsigned : NumExprBits;
- unsigned HasQualifier : 1;
+ SourceLocation RBracketLoc;
+ };
+
+ class CallExprBitfields {
+ friend class CallExpr;
+
+ unsigned : NumExprBits;
+
+ unsigned NumPreArgs : 1;
+
+ /// True if the callee of the call expression was found using ADL.
+ unsigned UsesADL : 1;
+
+ /// Padding used to align OffsetToTrailingObjects to a byte multiple.
+ unsigned : 24 - 2 - NumExprBits;
+
+ /// The offset in bytes from the this pointer to the start of the
+ /// trailing objects belonging to CallExpr. Intentionally byte sized
+ /// for faster access.
+ unsigned OffsetToTrailingObjects : 8;
+ };
+ enum { NumCallExprBits = 32 };
+
+ class MemberExprBitfields {
+ friend class MemberExpr;
+
+ unsigned : NumExprBits;
+
+ /// IsArrow - True if this is "X->F", false if this is "X.F".
+ unsigned IsArrow : 1;
+
+ /// True if this member expression used a nested-name-specifier to
+ /// refer to the member, e.g., "x->Base::f", or found its member via
+ /// a using declaration. When true, a MemberExprNameQualifier
+ /// structure is allocated immediately after the MemberExpr.
+ unsigned HasQualifierOrFoundDecl : 1;
+
+ /// True if this member expression specified a template keyword
+ /// and/or a template argument list explicitly, e.g., x->f<int>,
+ /// x->template f, x->template f<int>.
+ /// When true, an ASTTemplateKWAndArgsInfo structure and its
+ /// TemplateArguments (if any) are present.
unsigned HasTemplateKWAndArgsInfo : 1;
- unsigned HasFoundDecl : 1;
+
+ /// True if this member expression refers to a method that
+ /// was resolved from an overloaded set having size greater than 1.
unsigned HadMultipleCandidates : 1;
- unsigned RefersToEnclosingVariableOrCapture : 1;
+
+ /// This is the location of the -> or . in the expression.
+ SourceLocation OperatorLoc;
};
class CastExprBitfields {
@@ -204,27 +480,54 @@
unsigned Kind : 6;
unsigned PartOfExplicitCast : 1; // Only set for ImplicitCastExpr.
- unsigned BasePathIsEmpty : 1;
+
+ /// The number of CXXBaseSpecifiers in the cast. 14 bits would be enough
+ /// here. ([implimits] Direct and indirect base classes [16384]).
+ unsigned BasePathSize;
};
- class CallExprBitfields {
- friend class CallExpr;
+ class BinaryOperatorBitfields {
+ friend class BinaryOperator;
unsigned : NumExprBits;
- unsigned NumPreArgs : 1;
+ unsigned Opc : 6;
+
+ /// This is only meaningful for operations on floating point
+ /// types and 0 otherwise.
+ unsigned FPFeatures : 3;
+
+ SourceLocation OpLoc;
};
- class ExprWithCleanupsBitfields {
- friend class ASTStmtReader; // deserialization
- friend class ExprWithCleanups;
+ class InitListExprBitfields {
+ friend class InitListExpr;
unsigned : NumExprBits;
- // When false, it must not have side effects.
- unsigned CleanupsHaveSideEffects : 1;
+ /// Whether this initializer list originally had a GNU array-range
+ /// designator in it. This is a temporary marker used by CodeGen.
+ unsigned HadArrayRangeDesignator : 1;
+ };
- unsigned NumObjects : 32 - 1 - NumExprBits;
+ class ParenListExprBitfields {
+ friend class ASTStmtReader;
+ friend class ParenListExpr;
+
+ unsigned : NumExprBits;
+
+ /// The number of expressions in the paren list.
+ unsigned NumExprs;
+ };
+
+ class GenericSelectionExprBitfields {
+ friend class ASTStmtReader;
+ friend class GenericSelectionExpr;
+
+ unsigned : NumExprBits;
+
+ /// The location of the "_Generic".
+ SourceLocation GenericLoc;
};
class PseudoObjectExprBitfields {
@@ -239,32 +542,153 @@
unsigned ResultIndex : 32 - 8 - NumExprBits;
};
- class OpaqueValueExprBitfields {
- friend class OpaqueValueExpr;
+ //===--- C++ Expression bitfields classes ---===//
- unsigned : NumExprBits;
+ class CXXOperatorCallExprBitfields {
+ friend class ASTStmtReader;
+ friend class CXXOperatorCallExpr;
- /// The OVE is a unique semantic reference to its source expressio if this
- /// bit is set to true.
- unsigned IsUnique : 1;
+ unsigned : NumCallExprBits;
+
+ /// The kind of this overloaded operator. One of the enumerator
+ /// value of OverloadedOperatorKind.
+ unsigned OperatorKind : 6;
+
+ // Only meaningful for floating point types.
+ unsigned FPFeatures : 3;
};
- class ObjCIndirectCopyRestoreExprBitfields {
- friend class ObjCIndirectCopyRestoreExpr;
+ class CXXBoolLiteralExprBitfields {
+ friend class CXXBoolLiteralExpr;
unsigned : NumExprBits;
- unsigned ShouldCopy : 1;
+ /// The value of the boolean literal.
+ unsigned Value : 1;
+
+ /// The location of the boolean literal.
+ SourceLocation Loc;
};
- class InitListExprBitfields {
- friend class InitListExpr;
+ class CXXNullPtrLiteralExprBitfields {
+ friend class CXXNullPtrLiteralExpr;
unsigned : NumExprBits;
- /// Whether this initializer list originally had a GNU array-range
- /// designator in it. This is a temporary marker used by CodeGen.
- unsigned HadArrayRangeDesignator : 1;
+ /// The location of the null pointer literal.
+ SourceLocation Loc;
+ };
+
+ class CXXThisExprBitfields {
+ friend class CXXThisExpr;
+
+ unsigned : NumExprBits;
+
+ /// Whether this is an implicit "this".
+ unsigned IsImplicit : 1;
+
+ /// The location of the "this".
+ SourceLocation Loc;
+ };
+
+ class CXXThrowExprBitfields {
+ friend class ASTStmtReader;
+ friend class CXXThrowExpr;
+
+ unsigned : NumExprBits;
+
+ /// Whether the thrown variable (if any) is in scope.
+ unsigned IsThrownVariableInScope : 1;
+
+ /// The location of the "throw".
+ SourceLocation ThrowLoc;
+ };
+
+ class CXXDefaultArgExprBitfields {
+ friend class ASTStmtReader;
+ friend class CXXDefaultArgExpr;
+
+ unsigned : NumExprBits;
+
+ /// The location where the default argument expression was used.
+ SourceLocation Loc;
+ };
+
+ class CXXDefaultInitExprBitfields {
+ friend class ASTStmtReader;
+ friend class CXXDefaultInitExpr;
+
+ unsigned : NumExprBits;
+
+ /// The location where the default initializer expression was used.
+ SourceLocation Loc;
+ };
+
+ class CXXScalarValueInitExprBitfields {
+ friend class ASTStmtReader;
+ friend class CXXScalarValueInitExpr;
+
+ unsigned : NumExprBits;
+
+ SourceLocation RParenLoc;
+ };
+
+ class CXXNewExprBitfields {
+ friend class ASTStmtReader;
+ friend class ASTStmtWriter;
+ friend class CXXNewExpr;
+
+ unsigned : NumExprBits;
+
+ /// Was the usage ::new, i.e. is the global new to be used?
+ unsigned IsGlobalNew : 1;
+
+ /// Do we allocate an array? If so, the first trailing "Stmt *" is the
+ /// size expression.
+ unsigned IsArray : 1;
+
+ /// Should the alignment be passed to the allocation function?
+ unsigned ShouldPassAlignment : 1;
+
+ /// If this is an array allocation, does the usual deallocation
+ /// function for the allocated type want to know the allocated size?
+ unsigned UsualArrayDeleteWantsSize : 1;
+
+ /// What kind of initializer do we have? Could be none, parens, or braces.
+ /// In storage, we distinguish between "none, and no initializer expr", and
+ /// "none, but an implicit initializer expr".
+ unsigned StoredInitializationStyle : 2;
+
+ /// True if the allocated type was expressed as a parenthesized type-id.
+ unsigned IsParenTypeId : 1;
+
+ /// The number of placement new arguments.
+ unsigned NumPlacementArgs;
+ };
+
+ class CXXDeleteExprBitfields {
+ friend class ASTStmtReader;
+ friend class CXXDeleteExpr;
+
+ unsigned : NumExprBits;
+
+ /// Is this a forced global delete, i.e. "::delete"?
+ unsigned GlobalDelete : 1;
+
+ /// Is this the array form of delete, i.e. "delete[]"?
+ unsigned ArrayForm : 1;
+
+ /// ArrayFormAsWritten can be different from ArrayForm if 'delete' is
+ /// applied to pointer-to-array type (ArrayFormAsWritten will be false
+ /// while ArrayForm will be true).
+ unsigned ArrayFormAsWritten : 1;
+
+ /// Does the usual deallocation function for the element type require
+ /// a size_t argument?
+ unsigned UsualArrayDeleteWantsSize : 1;
+
+ /// Location of the expression.
+ SourceLocation Loc;
};
class TypeTraitExprBitfields {
@@ -285,6 +709,154 @@
unsigned NumArgs : 32 - 8 - 1 - NumExprBits;
};
+ class DependentScopeDeclRefExprBitfields {
+ friend class ASTStmtReader;
+ friend class ASTStmtWriter;
+ friend class DependentScopeDeclRefExpr;
+
+ unsigned : NumExprBits;
+
+ /// Whether the name includes info for explicit template
+ /// keyword and arguments.
+ unsigned HasTemplateKWAndArgsInfo : 1;
+ };
+
+ class CXXConstructExprBitfields {
+ friend class ASTStmtReader;
+ friend class CXXConstructExpr;
+
+ unsigned : NumExprBits;
+
+ unsigned Elidable : 1;
+ unsigned HadMultipleCandidates : 1;
+ unsigned ListInitialization : 1;
+ unsigned StdInitListInitialization : 1;
+ unsigned ZeroInitialization : 1;
+ unsigned ConstructionKind : 3;
+
+ SourceLocation Loc;
+ };
+
+ class ExprWithCleanupsBitfields {
+ friend class ASTStmtReader; // deserialization
+ friend class ExprWithCleanups;
+
+ unsigned : NumExprBits;
+
+ // When false, it must not have side effects.
+ unsigned CleanupsHaveSideEffects : 1;
+
+ unsigned NumObjects : 32 - 1 - NumExprBits;
+ };
+
+ class CXXUnresolvedConstructExprBitfields {
+ friend class ASTStmtReader;
+ friend class CXXUnresolvedConstructExpr;
+
+ unsigned : NumExprBits;
+
+ /// The number of arguments used to construct the type.
+ unsigned NumArgs;
+ };
+
+ class CXXDependentScopeMemberExprBitfields {
+ friend class ASTStmtReader;
+ friend class CXXDependentScopeMemberExpr;
+
+ unsigned : NumExprBits;
+
+ /// Whether this member expression used the '->' operator or
+ /// the '.' operator.
+ unsigned IsArrow : 1;
+
+ /// Whether this member expression has info for explicit template
+ /// keyword and arguments.
+ unsigned HasTemplateKWAndArgsInfo : 1;
+
+ /// See getFirstQualifierFoundInScope() and the comment listing
+ /// the trailing objects.
+ unsigned HasFirstQualifierFoundInScope : 1;
+
+ /// The location of the '->' or '.' operator.
+ SourceLocation OperatorLoc;
+ };
+
+ class OverloadExprBitfields {
+ friend class ASTStmtReader;
+ friend class OverloadExpr;
+
+ unsigned : NumExprBits;
+
+ /// Whether the name includes info for explicit template
+ /// keyword and arguments.
+ unsigned HasTemplateKWAndArgsInfo : 1;
+
+ /// Padding used by the derived classes to store various bits. If you
+ /// need to add some data here, shrink this padding and add your data
+ /// above. NumOverloadExprBits also needs to be updated.
+ unsigned : 32 - NumExprBits - 1;
+
+ /// The number of results.
+ unsigned NumResults;
+ };
+ enum { NumOverloadExprBits = NumExprBits + 1 };
+
+ class UnresolvedLookupExprBitfields {
+ friend class ASTStmtReader;
+ friend class UnresolvedLookupExpr;
+
+ unsigned : NumOverloadExprBits;
+
+ /// True if these lookup results should be extended by
+ /// argument-dependent lookup if this is the operand of a function call.
+ unsigned RequiresADL : 1;
+
+ /// True if these lookup results are overloaded. This is pretty trivially
+ /// rederivable if we urgently need to kill this field.
+ unsigned Overloaded : 1;
+ };
+ static_assert(sizeof(UnresolvedLookupExprBitfields) <= 4,
+ "UnresolvedLookupExprBitfields must be <= than 4 bytes to"
+ "avoid trashing OverloadExprBitfields::NumResults!");
+
+ class UnresolvedMemberExprBitfields {
+ friend class ASTStmtReader;
+ friend class UnresolvedMemberExpr;
+
+ unsigned : NumOverloadExprBits;
+
+ /// Whether this member expression used the '->' operator or
+ /// the '.' operator.
+ unsigned IsArrow : 1;
+
+ /// Whether the lookup results contain an unresolved using declaration.
+ unsigned HasUnresolvedUsing : 1;
+ };
+ static_assert(sizeof(UnresolvedMemberExprBitfields) <= 4,
+ "UnresolvedMemberExprBitfields must be <= than 4 bytes to"
+ "avoid trashing OverloadExprBitfields::NumResults!");
+
+ class CXXNoexceptExprBitfields {
+ friend class ASTStmtReader;
+ friend class CXXNoexceptExpr;
+
+ unsigned : NumExprBits;
+
+ unsigned Value : 1;
+ };
+
+ class SubstNonTypeTemplateParmExprBitfields {
+ friend class ASTStmtReader;
+ friend class SubstNonTypeTemplateParmExpr;
+
+ unsigned : NumExprBits;
+
+ /// The location of the non-type template parameter reference.
+ SourceLocation NameLoc;
+ };
+
+ //===--- C++ Coroutines TS bitfields classes ---===//
+
class CoawaitExprBitfields {
friend class CoawaitExpr;
@@ -293,24 +865,100 @@
unsigned IsImplicit : 1;
};
+ //===--- Obj-C Expression bitfields classes ---===//
+
+ class ObjCIndirectCopyRestoreExprBitfields {
+ friend class ObjCIndirectCopyRestoreExpr;
+
+ unsigned : NumExprBits;
+
+ unsigned ShouldCopy : 1;
+ };
+
+ //===--- Clang Extensions bitfields classes ---===//
+
+ class OpaqueValueExprBitfields {
+ friend class ASTStmtReader;
+ friend class OpaqueValueExpr;
+
+ unsigned : NumExprBits;
+
+ /// The OVE is a unique semantic reference to its source expression if this
+ /// bit is set to true.
+ unsigned IsUnique : 1;
+
+ SourceLocation Loc;
+ };
+
union {
+ // Same order as in StmtNodes.td.
+ // Statements
StmtBitfields StmtBits;
+ NullStmtBitfields NullStmtBits;
CompoundStmtBitfields CompoundStmtBits;
+ LabelStmtBitfields LabelStmtBits;
+ AttributedStmtBitfields AttributedStmtBits;
IfStmtBitfields IfStmtBits;
+ SwitchStmtBitfields SwitchStmtBits;
+ WhileStmtBitfields WhileStmtBits;
+ DoStmtBitfields DoStmtBits;
+ ForStmtBitfields ForStmtBits;
+ GotoStmtBitfields GotoStmtBits;
+ ContinueStmtBitfields ContinueStmtBits;
+ BreakStmtBitfields BreakStmtBits;
+ ReturnStmtBitfields ReturnStmtBits;
+ SwitchCaseBitfields SwitchCaseBits;
+
+ // Expressions
ExprBitfields ExprBits;
- CharacterLiteralBitfields CharacterLiteralBits;
- FloatingLiteralBitfields FloatingLiteralBits;
- UnaryExprOrTypeTraitExprBitfields UnaryExprOrTypeTraitExprBits;
+ PredefinedExprBitfields PredefinedExprBits;
DeclRefExprBitfields DeclRefExprBits;
- CastExprBitfields CastExprBits;
+ FloatingLiteralBitfields FloatingLiteralBits;
+ StringLiteralBitfields StringLiteralBits;
+ CharacterLiteralBitfields CharacterLiteralBits;
+ UnaryOperatorBitfields UnaryOperatorBits;
+ UnaryExprOrTypeTraitExprBitfields UnaryExprOrTypeTraitExprBits;
+ ArraySubscriptExprBitfields ArraySubscriptExprBits;
CallExprBitfields CallExprBits;
- ExprWithCleanupsBitfields ExprWithCleanupsBits;
- PseudoObjectExprBitfields PseudoObjectExprBits;
- OpaqueValueExprBitfields OpaqueValueExprBits;
- ObjCIndirectCopyRestoreExprBitfields ObjCIndirectCopyRestoreExprBits;
+ MemberExprBitfields MemberExprBits;
+ CastExprBitfields CastExprBits;
+ BinaryOperatorBitfields BinaryOperatorBits;
InitListExprBitfields InitListExprBits;
+ ParenListExprBitfields ParenListExprBits;
+ GenericSelectionExprBitfields GenericSelectionExprBits;
+ PseudoObjectExprBitfields PseudoObjectExprBits;
+
+ // C++ Expressions
+ CXXOperatorCallExprBitfields CXXOperatorCallExprBits;
+ CXXBoolLiteralExprBitfields CXXBoolLiteralExprBits;
+ CXXNullPtrLiteralExprBitfields CXXNullPtrLiteralExprBits;
+ CXXThisExprBitfields CXXThisExprBits;
+ CXXThrowExprBitfields CXXThrowExprBits;
+ CXXDefaultArgExprBitfields CXXDefaultArgExprBits;
+ CXXDefaultInitExprBitfields CXXDefaultInitExprBits;
+ CXXScalarValueInitExprBitfields CXXScalarValueInitExprBits;
+ CXXNewExprBitfields CXXNewExprBits;
+ CXXDeleteExprBitfields CXXDeleteExprBits;
TypeTraitExprBitfields TypeTraitExprBits;
+ DependentScopeDeclRefExprBitfields DependentScopeDeclRefExprBits;
+ CXXConstructExprBitfields CXXConstructExprBits;
+ ExprWithCleanupsBitfields ExprWithCleanupsBits;
+ CXXUnresolvedConstructExprBitfields CXXUnresolvedConstructExprBits;
+ CXXDependentScopeMemberExprBitfields CXXDependentScopeMemberExprBits;
+ OverloadExprBitfields OverloadExprBits;
+ UnresolvedLookupExprBitfields UnresolvedLookupExprBits;
+ UnresolvedMemberExprBitfields UnresolvedMemberExprBits;
+ CXXNoexceptExprBitfields CXXNoexceptExprBits;
+ SubstNonTypeTemplateParmExprBitfields SubstNonTypeTemplateParmExprBits;
+
+ // C++ Coroutines TS expressions
CoawaitExprBitfields CoawaitBits;
+
+ // Obj-C Expressions
+ ObjCIndirectCopyRestoreExprBitfields ObjCIndirectCopyRestoreExprBits;
+
+ // Clang Extensions
+ OpaqueValueExprBitfields OpaqueValueExprBits;
};
public:
@@ -338,37 +986,30 @@
struct EmptyShell {};
protected:
- /// Iterator for iterating over Stmt * arrays that contain only Expr *
+ /// Iterator for iterating over Stmt * arrays that contain only T *.
///
/// This is needed because AST nodes use Stmt* arrays to store
/// references to children (to be compatible with StmtIterator).
- struct ExprIterator
- : llvm::iterator_adaptor_base<ExprIterator, Stmt **,
- std::random_access_iterator_tag, Expr *> {
- ExprIterator() : iterator_adaptor_base(nullptr) {}
- ExprIterator(Stmt **I) : iterator_adaptor_base(I) {}
+ template<typename T, typename TPtr = T *, typename StmtPtr = Stmt *>
+ struct CastIterator
+ : llvm::iterator_adaptor_base<CastIterator<T, TPtr, StmtPtr>, StmtPtr *,
+ std::random_access_iterator_tag, TPtr> {
+ using Base = typename CastIterator::iterator_adaptor_base;
- reference operator*() const {
- assert((*I)->getStmtClass() >= firstExprConstant &&
- (*I)->getStmtClass() <= lastExprConstant);
- return *reinterpret_cast<Expr **>(I);
+ CastIterator() : Base(nullptr) {}
+ CastIterator(StmtPtr *I) : Base(I) {}
+
+ typename Base::value_type operator*() const {
+ return cast<T>(*this->I);
}
};
- /// Const iterator for iterating over Stmt * arrays that contain only Expr *
- struct ConstExprIterator
- : llvm::iterator_adaptor_base<ConstExprIterator, const Stmt *const *,
- std::random_access_iterator_tag,
- const Expr *const> {
- ConstExprIterator() : iterator_adaptor_base(nullptr) {}
- ConstExprIterator(const Stmt *const *I) : iterator_adaptor_base(I) {}
+ /// Const iterator for iterating over Stmt * arrays that contain only T *.
+ template <typename T>
+ using ConstCastIterator = CastIterator<T, const T *const, const Stmt *const>;
- reference operator*() const {
- assert((*I)->getStmtClass() >= firstExprConstant &&
- (*I)->getStmtClass() <= lastExprConstant);
- return *reinterpret_cast<const Expr *const *>(I);
- }
- };
+ using ExprIterator = CastIterator<Expr>;
+ using ConstExprIterator = ConstCastIterator<Expr>;
private:
/// Whether statistic collection is enabled.
@@ -380,7 +1021,7 @@
public:
Stmt(StmtClass SC) {
- static_assert(sizeof(*this) == sizeof(void *),
+ static_assert(sizeof(*this) <= 8,
"changing bitfields changed sizeof(Stmt)");
static_assert(sizeof(*this) % alignof(void *) == 0,
"Insufficient alignment!");
@@ -431,13 +1072,6 @@
/// works on systems with GraphViz (Mac OS X) or dot+gv installed.
void viewAST() const;
- /// Skip past any implicit AST nodes which might surround this
- /// statement, such as ExprWithCleanups or ImplicitCastExpr nodes.
- Stmt *IgnoreImplicit();
- const Stmt *IgnoreImplicit() const {
- return const_cast<Stmt *>(this)->IgnoreImplicit();
- }
-
/// Skip no-op (attributed, compound) container stmts and skip captured
/// stmt at the top, if \a IgnoreCaptured is true.
Stmt *IgnoreContainers(bool IgnoreCaptured = false);
@@ -515,9 +1149,7 @@
/// isSingleDecl - This method returns true if this DeclStmt refers
/// to a single Decl.
- bool isSingleDecl() const {
- return DG.isSingleDecl();
- }
+ bool isSingleDecl() const { return DG.isSingleDecl(); }
const Decl *getSingleDecl() const { return DG.getSingleDecl(); }
Decl *getSingleDecl() { return DG.getSingleDecl(); }
@@ -572,33 +1204,25 @@
/// NullStmt - This is the null statement ";": C99 6.8.3p3.
///
class NullStmt : public Stmt {
- SourceLocation SemiLoc;
-
- /// True if the null statement was preceded by an empty macro, e.g:
- /// @code
- /// #define CALL(x)
- /// CALL(0);
- /// @endcode
- bool HasLeadingEmptyMacro = false;
-
public:
- friend class ASTStmtReader;
- friend class ASTStmtWriter;
-
NullStmt(SourceLocation L, bool hasLeadingEmptyMacro = false)
- : Stmt(NullStmtClass), SemiLoc(L),
- HasLeadingEmptyMacro(hasLeadingEmptyMacro) {}
+ : Stmt(NullStmtClass) {
+ NullStmtBits.HasLeadingEmptyMacro = hasLeadingEmptyMacro;
+ setSemiLoc(L);
+ }
/// Build an empty null statement.
explicit NullStmt(EmptyShell Empty) : Stmt(NullStmtClass, Empty) {}
- SourceLocation getSemiLoc() const { return SemiLoc; }
- void setSemiLoc(SourceLocation L) { SemiLoc = L; }
+ SourceLocation getSemiLoc() const { return NullStmtBits.SemiLoc; }
+ void setSemiLoc(SourceLocation L) { NullStmtBits.SemiLoc = L; }
- bool hasLeadingEmptyMacro() const { return HasLeadingEmptyMacro; }
+ bool hasLeadingEmptyMacro() const {
+ return NullStmtBits.HasLeadingEmptyMacro;
+ }
- SourceLocation getBeginLoc() const LLVM_READONLY { return SemiLoc; }
- SourceLocation getEndLoc() const LLVM_READONLY { return SemiLoc; }
+ SourceLocation getBeginLoc() const { return getSemiLoc(); }
+ SourceLocation getEndLoc() const { return getSemiLoc(); }
static bool classof(const Stmt *T) {
return T->getStmtClass() == NullStmtClass;
@@ -615,7 +1239,8 @@
friend class ASTStmtReader;
friend TrailingObjects;
- SourceLocation LBraceLoc, RBraceLoc;
+ /// The location of the closing "}". LBraceLoc is stored in CompoundStmtBits.
+ SourceLocation RBraceLoc;
CompoundStmt(ArrayRef<Stmt *> Stmts, SourceLocation LB, SourceLocation RB);
explicit CompoundStmt(EmptyShell Empty) : Stmt(CompoundStmtClass, Empty) {}
@@ -628,8 +1253,9 @@
// Build an empty compound statement with a location.
explicit CompoundStmt(SourceLocation Loc)
- : Stmt(CompoundStmtClass), LBraceLoc(Loc), RBraceLoc(Loc) {
+ : Stmt(CompoundStmtClass), RBraceLoc(Loc) {
CompoundStmtBits.NumStmts = 0;
+ CompoundStmtBits.LBraceLoc = Loc;
}
// Build an empty compound statement.
@@ -655,7 +1281,7 @@
body_begin()[size() - 1] = S;
}
- using const_body_iterator = Stmt* const *;
+ using const_body_iterator = Stmt *const *;
using body_const_range = llvm::iterator_range<const_body_iterator>;
body_const_range body() const {
@@ -697,10 +1323,10 @@
return const_reverse_body_iterator(body_begin());
}
- SourceLocation getBeginLoc() const LLVM_READONLY { return LBraceLoc; }
- SourceLocation getEndLoc() const LLVM_READONLY { return RBraceLoc; }
+ SourceLocation getBeginLoc() const { return CompoundStmtBits.LBraceLoc; }
+ SourceLocation getEndLoc() const { return RBraceLoc; }
- SourceLocation getLBracLoc() const { return LBraceLoc; }
+ SourceLocation getLBracLoc() const { return CompoundStmtBits.LBraceLoc; }
SourceLocation getRBracLoc() const { return RBraceLoc; }
static bool classof(const Stmt *T) {
@@ -718,36 +1344,40 @@
// SwitchCase is the base class for CaseStmt and DefaultStmt,
class SwitchCase : public Stmt {
protected:
- // A pointer to the following CaseStmt or DefaultStmt class,
- // used by SwitchStmt.
- SwitchCase *NextSwitchCase = nullptr;
- SourceLocation KeywordLoc;
+ /// The location of the ":".
SourceLocation ColonLoc;
+ // The location of the "case" or "default" keyword. Stored in SwitchCaseBits.
+ // SourceLocation KeywordLoc;
+
+ /// A pointer to the following CaseStmt or DefaultStmt class,
+ /// used by SwitchStmt.
+ SwitchCase *NextSwitchCase = nullptr;
+
SwitchCase(StmtClass SC, SourceLocation KWLoc, SourceLocation ColonLoc)
- : Stmt(SC), KeywordLoc(KWLoc), ColonLoc(ColonLoc) {}
+ : Stmt(SC), ColonLoc(ColonLoc) {
+ setKeywordLoc(KWLoc);
+ }
SwitchCase(StmtClass SC, EmptyShell) : Stmt(SC) {}
public:
const SwitchCase *getNextSwitchCase() const { return NextSwitchCase; }
-
SwitchCase *getNextSwitchCase() { return NextSwitchCase; }
-
void setNextSwitchCase(SwitchCase *SC) { NextSwitchCase = SC; }
- SourceLocation getKeywordLoc() const { return KeywordLoc; }
- void setKeywordLoc(SourceLocation L) { KeywordLoc = L; }
+ SourceLocation getKeywordLoc() const { return SwitchCaseBits.KeywordLoc; }
+ void setKeywordLoc(SourceLocation L) { SwitchCaseBits.KeywordLoc = L; }
SourceLocation getColonLoc() const { return ColonLoc; }
void setColonLoc(SourceLocation L) { ColonLoc = L; }
- Stmt *getSubStmt();
+ inline Stmt *getSubStmt();
const Stmt *getSubStmt() const {
- return const_cast<SwitchCase*>(this)->getSubStmt();
+ return const_cast<SwitchCase *>(this)->getSubStmt();
}
- SourceLocation getBeginLoc() const LLVM_READONLY { return KeywordLoc; }
- SourceLocation getEndLoc() const LLVM_READONLY;
+ SourceLocation getBeginLoc() const { return getKeywordLoc(); }
+ inline SourceLocation getEndLoc() const LLVM_READONLY;
static bool classof(const Stmt *T) {
return T->getStmtClass() == CaseStmtClass ||
@@ -755,52 +1385,137 @@
}
};
-class CaseStmt : public SwitchCase {
- SourceLocation EllipsisLoc;
- enum { LHS, RHS, SUBSTMT, END_EXPR };
- Stmt* SubExprs[END_EXPR]; // The expression for the RHS is Non-null for
- // GNU "case 1 ... 4" extension
+/// CaseStmt - Represent a case statement. It can optionally be a GNU case
+/// statement of the form LHS ... RHS representing a range of cases.
+class CaseStmt final
+ : public SwitchCase,
+ private llvm::TrailingObjects<CaseStmt, Stmt *, SourceLocation> {
+ friend TrailingObjects;
-public:
+ // CaseStmt is followed by several trailing objects, some of which optional.
+ // Note that it would be more convenient to put the optional trailing objects
+ // at the end but this would impact children().
+ // The trailing objects are in order:
+ //
+ // * A "Stmt *" for the LHS of the case statement. Always present.
+ //
+ // * A "Stmt *" for the RHS of the case statement. This is a GNU extension
+ // which allow ranges in cases statement of the form LHS ... RHS.
+ // Present if and only if caseStmtIsGNURange() is true.
+ //
+ // * A "Stmt *" for the substatement of the case statement. Always present.
+ //
+ // * A SourceLocation for the location of the ... if this is a case statement
+ // with a range. Present if and only if caseStmtIsGNURange() is true.
+ enum { LhsOffset = 0, SubStmtOffsetFromRhs = 1 };
+ enum { NumMandatoryStmtPtr = 2 };
+
+ unsigned numTrailingObjects(OverloadToken<Stmt *>) const {
+ return NumMandatoryStmtPtr + caseStmtIsGNURange();
+ }
+
+ unsigned numTrailingObjects(OverloadToken<SourceLocation>) const {
+ return caseStmtIsGNURange();
+ }
+
+ unsigned lhsOffset() const { return LhsOffset; }
+ unsigned rhsOffset() const { return LhsOffset + caseStmtIsGNURange(); }
+ unsigned subStmtOffset() const { return rhsOffset() + SubStmtOffsetFromRhs; }
+
+ /// Build a case statement assuming that the storage for the
+ /// trailing objects has been properly allocated.
CaseStmt(Expr *lhs, Expr *rhs, SourceLocation caseLoc,
SourceLocation ellipsisLoc, SourceLocation colonLoc)
- : SwitchCase(CaseStmtClass, caseLoc, colonLoc) {
- SubExprs[SUBSTMT] = nullptr;
- SubExprs[LHS] = reinterpret_cast<Stmt*>(lhs);
- SubExprs[RHS] = reinterpret_cast<Stmt*>(rhs);
- EllipsisLoc = ellipsisLoc;
+ : SwitchCase(CaseStmtClass, caseLoc, colonLoc) {
+ // Handle GNU case statements of the form LHS ... RHS.
+ bool IsGNURange = rhs != nullptr;
+ SwitchCaseBits.CaseStmtIsGNURange = IsGNURange;
+ setLHS(lhs);
+ setSubStmt(nullptr);
+ if (IsGNURange) {
+ setRHS(rhs);
+ setEllipsisLoc(ellipsisLoc);
+ }
}
/// Build an empty switch case statement.
- explicit CaseStmt(EmptyShell Empty) : SwitchCase(CaseStmtClass, Empty) {}
+ explicit CaseStmt(EmptyShell Empty, bool CaseStmtIsGNURange)
+ : SwitchCase(CaseStmtClass, Empty) {
+ SwitchCaseBits.CaseStmtIsGNURange = CaseStmtIsGNURange;
+ }
- SourceLocation getCaseLoc() const { return KeywordLoc; }
- void setCaseLoc(SourceLocation L) { KeywordLoc = L; }
- SourceLocation getEllipsisLoc() const { return EllipsisLoc; }
- void setEllipsisLoc(SourceLocation L) { EllipsisLoc = L; }
- SourceLocation getColonLoc() const { return ColonLoc; }
- void setColonLoc(SourceLocation L) { ColonLoc = L; }
+public:
+ /// Build a case statement.
+ static CaseStmt *Create(const ASTContext &Ctx, Expr *lhs, Expr *rhs,
+ SourceLocation caseLoc, SourceLocation ellipsisLoc,
+ SourceLocation colonLoc);
- Expr *getLHS() { return reinterpret_cast<Expr*>(SubExprs[LHS]); }
- Expr *getRHS() { return reinterpret_cast<Expr*>(SubExprs[RHS]); }
- Stmt *getSubStmt() { return SubExprs[SUBSTMT]; }
+ /// Build an empty case statement.
+ static CaseStmt *CreateEmpty(const ASTContext &Ctx, bool CaseStmtIsGNURange);
+
+ /// True if this case statement is of the form case LHS ... RHS, which
+ /// is a GNU extension. In this case the RHS can be obtained with getRHS()
+ /// and the location of the ellipsis can be obtained with getEllipsisLoc().
+ bool caseStmtIsGNURange() const { return SwitchCaseBits.CaseStmtIsGNURange; }
+
+ SourceLocation getCaseLoc() const { return getKeywordLoc(); }
+ void setCaseLoc(SourceLocation L) { setKeywordLoc(L); }
+
+ /// Get the location of the ... in a case statement of the form LHS ... RHS.
+ SourceLocation getEllipsisLoc() const {
+ return caseStmtIsGNURange() ? *getTrailingObjects<SourceLocation>()
+ : SourceLocation();
+ }
+
+ /// Set the location of the ... in a case statement of the form LHS ... RHS.
+ /// Assert that this case statement is of this form.
+ void setEllipsisLoc(SourceLocation L) {
+ assert(
+ caseStmtIsGNURange() &&
+ "setEllipsisLoc but this is not a case stmt of the form LHS ... RHS!");
+ *getTrailingObjects<SourceLocation>() = L;
+ }
+
+ Expr *getLHS() {
+ return reinterpret_cast<Expr *>(getTrailingObjects<Stmt *>()[lhsOffset()]);
+ }
const Expr *getLHS() const {
- return reinterpret_cast<const Expr*>(SubExprs[LHS]);
+ return reinterpret_cast<Expr *>(getTrailingObjects<Stmt *>()[lhsOffset()]);
+ }
+
+ void setLHS(Expr *Val) {
+ getTrailingObjects<Stmt *>()[lhsOffset()] = reinterpret_cast<Stmt *>(Val);
+ }
+
+ Expr *getRHS() {
+ return caseStmtIsGNURange() ? reinterpret_cast<Expr *>(
+ getTrailingObjects<Stmt *>()[rhsOffset()])
+ : nullptr;
}
const Expr *getRHS() const {
- return reinterpret_cast<const Expr*>(SubExprs[RHS]);
+ return caseStmtIsGNURange() ? reinterpret_cast<Expr *>(
+ getTrailingObjects<Stmt *>()[rhsOffset()])
+ : nullptr;
}
- const Stmt *getSubStmt() const { return SubExprs[SUBSTMT]; }
+ void setRHS(Expr *Val) {
+ assert(caseStmtIsGNURange() &&
+ "setRHS but this is not a case stmt of the form LHS ... RHS!");
+ getTrailingObjects<Stmt *>()[rhsOffset()] = reinterpret_cast<Stmt *>(Val);
+ }
- void setSubStmt(Stmt *S) { SubExprs[SUBSTMT] = S; }
- void setLHS(Expr *Val) { SubExprs[LHS] = reinterpret_cast<Stmt*>(Val); }
- void setRHS(Expr *Val) { SubExprs[RHS] = reinterpret_cast<Stmt*>(Val); }
+ Stmt *getSubStmt() { return getTrailingObjects<Stmt *>()[subStmtOffset()]; }
+ const Stmt *getSubStmt() const {
+ return getTrailingObjects<Stmt *>()[subStmtOffset()];
+ }
- SourceLocation getBeginLoc() const LLVM_READONLY { return KeywordLoc; }
+ void setSubStmt(Stmt *S) {
+ getTrailingObjects<Stmt *>()[subStmtOffset()] = S;
+ }
+ SourceLocation getBeginLoc() const { return getKeywordLoc(); }
SourceLocation getEndLoc() const LLVM_READONLY {
// Handle deeply nested case statements with iteration instead of recursion.
const CaseStmt *CS = this;
@@ -816,16 +1531,18 @@
// Iterators
child_range children() {
- return child_range(&SubExprs[0], &SubExprs[END_EXPR]);
+ return child_range(getTrailingObjects<Stmt *>(),
+ getTrailingObjects<Stmt *>() +
+ numTrailingObjects(OverloadToken<Stmt *>()));
}
};
class DefaultStmt : public SwitchCase {
- Stmt* SubStmt;
+ Stmt *SubStmt;
public:
- DefaultStmt(SourceLocation DL, SourceLocation CL, Stmt *substmt) :
- SwitchCase(DefaultStmtClass, DL, CL), SubStmt(substmt) {}
+ DefaultStmt(SourceLocation DL, SourceLocation CL, Stmt *substmt)
+ : SwitchCase(DefaultStmtClass, DL, CL), SubStmt(substmt) {}
/// Build an empty default statement.
explicit DefaultStmt(EmptyShell Empty)
@@ -835,12 +1552,10 @@
const Stmt *getSubStmt() const { return SubStmt; }
void setSubStmt(Stmt *S) { SubStmt = S; }
- SourceLocation getDefaultLoc() const { return KeywordLoc; }
- void setDefaultLoc(SourceLocation L) { KeywordLoc = L; }
- SourceLocation getColonLoc() const { return ColonLoc; }
- void setColonLoc(SourceLocation L) { ColonLoc = L; }
+ SourceLocation getDefaultLoc() const { return getKeywordLoc(); }
+ void setDefaultLoc(SourceLocation L) { setKeywordLoc(L); }
- SourceLocation getBeginLoc() const LLVM_READONLY { return KeywordLoc; }
+ SourceLocation getBeginLoc() const { return getKeywordLoc(); }
SourceLocation getEndLoc() const LLVM_READONLY {
return SubStmt->getEndLoc();
}
@@ -850,48 +1565,57 @@
}
// Iterators
- child_range children() { return child_range(&SubStmt, &SubStmt+1); }
+ child_range children() { return child_range(&SubStmt, &SubStmt + 1); }
};
-inline SourceLocation SwitchCase::getEndLoc() const {
+SourceLocation SwitchCase::getEndLoc() const {
if (const auto *CS = dyn_cast<CaseStmt>(this))
return CS->getEndLoc();
- return cast<DefaultStmt>(this)->getEndLoc();
+ else if (const auto *DS = dyn_cast<DefaultStmt>(this))
+ return DS->getEndLoc();
+ llvm_unreachable("SwitchCase is neither a CaseStmt nor a DefaultStmt!");
+}
+
+Stmt *SwitchCase::getSubStmt() {
+ if (auto *CS = dyn_cast<CaseStmt>(this))
+ return CS->getSubStmt();
+ else if (auto *DS = dyn_cast<DefaultStmt>(this))
+ return DS->getSubStmt();
+ llvm_unreachable("SwitchCase is neither a CaseStmt nor a DefaultStmt!");
}
/// LabelStmt - Represents a label, which has a substatement. For example:
/// foo: return;
class LabelStmt : public Stmt {
- SourceLocation IdentLoc;
LabelDecl *TheDecl;
Stmt *SubStmt;
public:
+ /// Build a label statement.
LabelStmt(SourceLocation IL, LabelDecl *D, Stmt *substmt)
- : Stmt(LabelStmtClass), IdentLoc(IL), TheDecl(D), SubStmt(substmt) {
- static_assert(sizeof(LabelStmt) ==
- 2 * sizeof(SourceLocation) + 2 * sizeof(void *),
- "LabelStmt too big");
+ : Stmt(LabelStmtClass), TheDecl(D), SubStmt(substmt) {
+ setIdentLoc(IL);
}
- // Build an empty label statement.
+ /// Build an empty label statement.
explicit LabelStmt(EmptyShell Empty) : Stmt(LabelStmtClass, Empty) {}
- SourceLocation getIdentLoc() const { return IdentLoc; }
+ SourceLocation getIdentLoc() const { return LabelStmtBits.IdentLoc; }
+ void setIdentLoc(SourceLocation L) { LabelStmtBits.IdentLoc = L; }
+
LabelDecl *getDecl() const { return TheDecl; }
void setDecl(LabelDecl *D) { TheDecl = D; }
+
const char *getName() const;
Stmt *getSubStmt() { return SubStmt; }
+
const Stmt *getSubStmt() const { return SubStmt; }
- void setIdentLoc(SourceLocation L) { IdentLoc = L; }
void setSubStmt(Stmt *SS) { SubStmt = SS; }
- SourceLocation getBeginLoc() const LLVM_READONLY { return IdentLoc; }
- SourceLocation getEndLoc() const LLVM_READONLY {
- return SubStmt->getEndLoc();
- }
+ SourceLocation getBeginLoc() const { return getIdentLoc(); }
+ SourceLocation getEndLoc() const LLVM_READONLY { return SubStmt->getEndLoc();}
- child_range children() { return child_range(&SubStmt, &SubStmt+1); }
+ child_range children() { return child_range(&SubStmt, &SubStmt + 1); }
static bool classof(const Stmt *T) {
return T->getStmtClass() == LabelStmtClass;
@@ -909,17 +1633,19 @@
friend TrailingObjects;
Stmt *SubStmt;
- SourceLocation AttrLoc;
- unsigned NumAttrs;
- AttributedStmt(SourceLocation Loc, ArrayRef<const Attr*> Attrs, Stmt *SubStmt)
- : Stmt(AttributedStmtClass), SubStmt(SubStmt), AttrLoc(Loc),
- NumAttrs(Attrs.size()) {
+ AttributedStmt(SourceLocation Loc, ArrayRef<const Attr *> Attrs,
+ Stmt *SubStmt)
+ : Stmt(AttributedStmtClass), SubStmt(SubStmt) {
+ AttributedStmtBits.NumAttrs = Attrs.size();
+ AttributedStmtBits.AttrLoc = Loc;
std::copy(Attrs.begin(), Attrs.end(), getAttrArrayPtr());
}
explicit AttributedStmt(EmptyShell Empty, unsigned NumAttrs)
- : Stmt(AttributedStmtClass, Empty), NumAttrs(NumAttrs) {
+ : Stmt(AttributedStmtClass, Empty) {
+ AttributedStmtBits.NumAttrs = NumAttrs;
+ AttributedStmtBits.AttrLoc = SourceLocation{};
std::fill_n(getAttrArrayPtr(), NumAttrs, nullptr);
}
@@ -930,23 +1656,21 @@
public:
static AttributedStmt *Create(const ASTContext &C, SourceLocation Loc,
- ArrayRef<const Attr*> Attrs, Stmt *SubStmt);
+ ArrayRef<const Attr *> Attrs, Stmt *SubStmt);
// Build an empty attributed statement.
static AttributedStmt *CreateEmpty(const ASTContext &C, unsigned NumAttrs);
- SourceLocation getAttrLoc() const { return AttrLoc; }
- ArrayRef<const Attr*> getAttrs() const {
- return llvm::makeArrayRef(getAttrArrayPtr(), NumAttrs);
+ SourceLocation getAttrLoc() const { return AttributedStmtBits.AttrLoc; }
+ ArrayRef<const Attr *> getAttrs() const {
+ return llvm::makeArrayRef(getAttrArrayPtr(), AttributedStmtBits.NumAttrs);
}
Stmt *getSubStmt() { return SubStmt; }
const Stmt *getSubStmt() const { return SubStmt; }
- SourceLocation getBeginLoc() const LLVM_READONLY { return AttrLoc; }
- SourceLocation getEndLoc() const LLVM_READONLY {
- return SubStmt->getEndLoc();
- }
+ SourceLocation getBeginLoc() const { return getAttrLoc(); }
+ SourceLocation getEndLoc() const LLVM_READONLY { return SubStmt->getEndLoc();}
child_range children() { return child_range(&SubStmt, &SubStmt + 1); }
@@ -956,21 +1680,117 @@
};
/// IfStmt - This represents an if/then/else.
-class IfStmt : public Stmt {
- enum { INIT, VAR, COND, THEN, ELSE, END_EXPR };
- Stmt* SubExprs[END_EXPR];
+class IfStmt final
+ : public Stmt,
+ private llvm::TrailingObjects<IfStmt, Stmt *, SourceLocation> {
+ friend TrailingObjects;
- SourceLocation IfLoc;
- SourceLocation ElseLoc;
+ // IfStmt is followed by several trailing objects, some of which optional.
+ // Note that it would be more convenient to put the optional trailing
+ // objects at then end but this would change the order of the children.
+ // The trailing objects are in order:
+ //
+ // * A "Stmt *" for the init statement.
+ // Present if and only if hasInitStorage().
+ //
+ // * A "Stmt *" for the condition variable.
+ // Present if and only if hasVarStorage(). This is in fact a "DeclStmt *".
+ //
+ // * A "Stmt *" for the condition.
+ // Always present. This is in fact a "Expr *".
+ //
+ // * A "Stmt *" for the then statement.
+ // Always present.
+ //
+ // * A "Stmt *" for the else statement.
+ // Present if and only if hasElseStorage().
+ //
+ // * A "SourceLocation" for the location of the "else".
+ // Present if and only if hasElseStorage().
+ enum { InitOffset = 0, ThenOffsetFromCond = 1, ElseOffsetFromCond = 2 };
+ enum { NumMandatoryStmtPtr = 2 };
+
+ unsigned numTrailingObjects(OverloadToken<Stmt *>) const {
+ return NumMandatoryStmtPtr + hasElseStorage() + hasVarStorage() +
+ hasInitStorage();
+ }
+
+ unsigned numTrailingObjects(OverloadToken<SourceLocation>) const {
+ return hasElseStorage();
+ }
+
+ unsigned initOffset() const { return InitOffset; }
+ unsigned varOffset() const { return InitOffset + hasInitStorage(); }
+ unsigned condOffset() const {
+ return InitOffset + hasInitStorage() + hasVarStorage();
+ }
+ unsigned thenOffset() const { return condOffset() + ThenOffsetFromCond; }
+ unsigned elseOffset() const { return condOffset() + ElseOffsetFromCond; }
+
+ /// Build an if/then/else statement.
+ IfStmt(const ASTContext &Ctx, SourceLocation IL, bool IsConstexpr, Stmt *Init,
+ VarDecl *Var, Expr *Cond, Stmt *Then, SourceLocation EL, Stmt *Else);
+
+ /// Build an empty if/then/else statement.
+ explicit IfStmt(EmptyShell Empty, bool HasElse, bool HasVar, bool HasInit);
public:
- IfStmt(const ASTContext &C, SourceLocation IL,
- bool IsConstexpr, Stmt *init, VarDecl *var, Expr *cond,
- Stmt *then, SourceLocation EL = SourceLocation(),
- Stmt *elsev = nullptr);
+ /// Create an IfStmt.
+ static IfStmt *Create(const ASTContext &Ctx, SourceLocation IL,
+ bool IsConstexpr, Stmt *Init, VarDecl *Var, Expr *Cond,
+ Stmt *Then, SourceLocation EL = SourceLocation(),
+ Stmt *Else = nullptr);
- /// Build an empty if/then/else statement
- explicit IfStmt(EmptyShell Empty) : Stmt(IfStmtClass, Empty) {}
+ /// Create an empty IfStmt optionally with storage for an else statement,
+ /// condition variable and init expression.
+ static IfStmt *CreateEmpty(const ASTContext &Ctx, bool HasElse, bool HasVar,
+ bool HasInit);
+
+ /// True if this IfStmt has the storage for an init statement.
+ bool hasInitStorage() const { return IfStmtBits.HasInit; }
+
+ /// True if this IfStmt has storage for a variable declaration.
+ bool hasVarStorage() const { return IfStmtBits.HasVar; }
+
+ /// True if this IfStmt has storage for an else statement.
+ bool hasElseStorage() const { return IfStmtBits.HasElse; }
+
+ Expr *getCond() {
+ return reinterpret_cast<Expr *>(getTrailingObjects<Stmt *>()[condOffset()]);
+ }
+
+ const Expr *getCond() const {
+ return reinterpret_cast<Expr *>(getTrailingObjects<Stmt *>()[condOffset()]);
+ }
+
+ void setCond(Expr *Cond) {
+ getTrailingObjects<Stmt *>()[condOffset()] = reinterpret_cast<Stmt *>(Cond);
+ }
+
+ Stmt *getThen() { return getTrailingObjects<Stmt *>()[thenOffset()]; }
+ const Stmt *getThen() const {
+ return getTrailingObjects<Stmt *>()[thenOffset()];
+ }
+
+ void setThen(Stmt *Then) {
+ getTrailingObjects<Stmt *>()[thenOffset()] = Then;
+ }
+
+ Stmt *getElse() {
+ return hasElseStorage() ? getTrailingObjects<Stmt *>()[elseOffset()]
+ : nullptr;
+ }
+
+ const Stmt *getElse() const {
+ return hasElseStorage() ? getTrailingObjects<Stmt *>()[elseOffset()]
+ : nullptr;
+ }
+
+ void setElse(Stmt *Else) {
+ assert(hasElseStorage() &&
+ "This if statement has no storage for an else statement!");
+ getTrailingObjects<Stmt *>()[elseOffset()] = Else;
+ }
/// Retrieve the variable declared in this "if" statement, if any.
///
@@ -980,52 +1800,77 @@
/// printf("x is %d", x);
/// }
/// \endcode
- VarDecl *getConditionVariable() const;
- void setConditionVariable(const ASTContext &C, VarDecl *V);
+ VarDecl *getConditionVariable();
+ const VarDecl *getConditionVariable() const {
+ return const_cast<IfStmt *>(this)->getConditionVariable();
+ }
+
+ /// Set the condition variable for this if statement.
+ /// The if statement must have storage for the condition variable.
+ void setConditionVariable(const ASTContext &Ctx, VarDecl *V);
/// If this IfStmt has a condition variable, return the faux DeclStmt
/// associated with the creation of that condition variable.
- const DeclStmt *getConditionVariableDeclStmt() const {
- return reinterpret_cast<DeclStmt*>(SubExprs[VAR]);
+ DeclStmt *getConditionVariableDeclStmt() {
+ return hasVarStorage() ? static_cast<DeclStmt *>(
+ getTrailingObjects<Stmt *>()[varOffset()])
+ : nullptr;
}
- Stmt *getInit() { return SubExprs[INIT]; }
- const Stmt *getInit() const { return SubExprs[INIT]; }
- void setInit(Stmt *S) { SubExprs[INIT] = S; }
- const Expr *getCond() const { return reinterpret_cast<Expr*>(SubExprs[COND]);}
- void setCond(Expr *E) { SubExprs[COND] = reinterpret_cast<Stmt *>(E); }
- const Stmt *getThen() const { return SubExprs[THEN]; }
- void setThen(Stmt *S) { SubExprs[THEN] = S; }
- const Stmt *getElse() const { return SubExprs[ELSE]; }
- void setElse(Stmt *S) { SubExprs[ELSE] = S; }
+ const DeclStmt *getConditionVariableDeclStmt() const {
+ return hasVarStorage() ? static_cast<DeclStmt *>(
+ getTrailingObjects<Stmt *>()[varOffset()])
+ : nullptr;
+ }
- Expr *getCond() { return reinterpret_cast<Expr*>(SubExprs[COND]); }
- Stmt *getThen() { return SubExprs[THEN]; }
- Stmt *getElse() { return SubExprs[ELSE]; }
+ Stmt *getInit() {
+ return hasInitStorage() ? getTrailingObjects<Stmt *>()[initOffset()]
+ : nullptr;
+ }
- SourceLocation getIfLoc() const { return IfLoc; }
- void setIfLoc(SourceLocation L) { IfLoc = L; }
- SourceLocation getElseLoc() const { return ElseLoc; }
- void setElseLoc(SourceLocation L) { ElseLoc = L; }
+ const Stmt *getInit() const {
+ return hasInitStorage() ? getTrailingObjects<Stmt *>()[initOffset()]
+ : nullptr;
+ }
+
+ void setInit(Stmt *Init) {
+ assert(hasInitStorage() &&
+ "This if statement has no storage for an init statement!");
+ getTrailingObjects<Stmt *>()[initOffset()] = Init;
+ }
+
+ SourceLocation getIfLoc() const { return IfStmtBits.IfLoc; }
+ void setIfLoc(SourceLocation IfLoc) { IfStmtBits.IfLoc = IfLoc; }
+
+ SourceLocation getElseLoc() const {
+ return hasElseStorage() ? *getTrailingObjects<SourceLocation>()
+ : SourceLocation();
+ }
+
+ void setElseLoc(SourceLocation ElseLoc) {
+ assert(hasElseStorage() &&
+ "This if statement has no storage for an else statement!");
+ *getTrailingObjects<SourceLocation>() = ElseLoc;
+ }
bool isConstexpr() const { return IfStmtBits.IsConstexpr; }
void setConstexpr(bool C) { IfStmtBits.IsConstexpr = C; }
bool isObjCAvailabilityCheck() const;
- SourceLocation getBeginLoc() const LLVM_READONLY { return IfLoc; }
-
+ SourceLocation getBeginLoc() const { return getIfLoc(); }
SourceLocation getEndLoc() const LLVM_READONLY {
- if (SubExprs[ELSE])
- return SubExprs[ELSE]->getEndLoc();
- else
- return SubExprs[THEN]->getEndLoc();
+ if (getElse())
+ return getElse()->getEndLoc();
+ return getThen()->getEndLoc();
}
// Iterators over subexpressions. The iterators will include iterating
// over the initialization expression referenced by the condition variable.
child_range children() {
- return child_range(&SubExprs[0], &SubExprs[0]+END_EXPR);
+ return child_range(getTrailingObjects<Stmt *>(),
+ getTrailingObjects<Stmt *>() +
+ numTrailingObjects(OverloadToken<Stmt *>()));
}
static bool classof(const Stmt *T) {
@@ -1034,22 +1879,102 @@
};
/// SwitchStmt - This represents a 'switch' stmt.
-class SwitchStmt : public Stmt {
- SourceLocation SwitchLoc;
- enum { INIT, VAR, COND, BODY, END_EXPR };
- Stmt* SubExprs[END_EXPR];
+class SwitchStmt final : public Stmt,
+ private llvm::TrailingObjects<SwitchStmt, Stmt *> {
+ friend TrailingObjects;
- // This points to a linked list of case and default statements and, if the
- // SwitchStmt is a switch on an enum value, records whether all the enum
- // values were covered by CaseStmts. The coverage information value is meant
- // to be a hint for possible clients.
- llvm::PointerIntPair<SwitchCase *, 1, bool> FirstCase;
+ /// Points to a linked list of case and default statements.
+ SwitchCase *FirstCase;
-public:
- SwitchStmt(const ASTContext &C, Stmt *Init, VarDecl *Var, Expr *cond);
+ // SwitchStmt is followed by several trailing objects,
+ // some of which optional. Note that it would be more convenient to
+ // put the optional trailing objects at the end but this would change
+ // the order in children().
+ // The trailing objects are in order:
+ //
+ // * A "Stmt *" for the init statement.
+ // Present if and only if hasInitStorage().
+ //
+ // * A "Stmt *" for the condition variable.
+ // Present if and only if hasVarStorage(). This is in fact a "DeclStmt *".
+ //
+ // * A "Stmt *" for the condition.
+ // Always present. This is in fact an "Expr *".
+ //
+ // * A "Stmt *" for the body.
+ // Always present.
+ enum { InitOffset = 0, BodyOffsetFromCond = 1 };
+ enum { NumMandatoryStmtPtr = 2 };
+
+ unsigned numTrailingObjects(OverloadToken<Stmt *>) const {
+ return NumMandatoryStmtPtr + hasInitStorage() + hasVarStorage();
+ }
+
+ unsigned initOffset() const { return InitOffset; }
+ unsigned varOffset() const { return InitOffset + hasInitStorage(); }
+ unsigned condOffset() const {
+ return InitOffset + hasInitStorage() + hasVarStorage();
+ }
+ unsigned bodyOffset() const { return condOffset() + BodyOffsetFromCond; }
+
+ /// Build a switch statement.
+ SwitchStmt(const ASTContext &Ctx, Stmt *Init, VarDecl *Var, Expr *Cond);
/// Build a empty switch statement.
- explicit SwitchStmt(EmptyShell Empty) : Stmt(SwitchStmtClass, Empty) {}
+ explicit SwitchStmt(EmptyShell Empty, bool HasInit, bool HasVar);
+
+public:
+ /// Create a switch statement.
+ static SwitchStmt *Create(const ASTContext &Ctx, Stmt *Init, VarDecl *Var,
+ Expr *Cond);
+
+ /// Create an empty switch statement optionally with storage for
+ /// an init expression and a condition variable.
+ static SwitchStmt *CreateEmpty(const ASTContext &Ctx, bool HasInit,
+ bool HasVar);
+
+ /// True if this SwitchStmt has storage for an init statement.
+ bool hasInitStorage() const { return SwitchStmtBits.HasInit; }
+
+ /// True if this SwitchStmt has storage for a condition variable.
+ bool hasVarStorage() const { return SwitchStmtBits.HasVar; }
+
+ Expr *getCond() {
+ return reinterpret_cast<Expr *>(getTrailingObjects<Stmt *>()[condOffset()]);
+ }
+
+ const Expr *getCond() const {
+ return reinterpret_cast<Expr *>(getTrailingObjects<Stmt *>()[condOffset()]);
+ }
+
+ void setCond(Expr *Cond) {
+ getTrailingObjects<Stmt *>()[condOffset()] = reinterpret_cast<Stmt *>(Cond);
+ }
+
+ Stmt *getBody() { return getTrailingObjects<Stmt *>()[bodyOffset()]; }
+ const Stmt *getBody() const {
+ return getTrailingObjects<Stmt *>()[bodyOffset()];
+ }
+
+ void setBody(Stmt *Body) {
+ getTrailingObjects<Stmt *>()[bodyOffset()] = Body;
+ }
+
+ Stmt *getInit() {
+ return hasInitStorage() ? getTrailingObjects<Stmt *>()[initOffset()]
+ : nullptr;
+ }
+
+ const Stmt *getInit() const {
+ return hasInitStorage() ? getTrailingObjects<Stmt *>()[initOffset()]
+ : nullptr;
+ }
+
+ void setInit(Stmt *Init) {
+ assert(hasInitStorage() &&
+ "This switch statement has no storage for an init statement!");
+ getTrailingObjects<Stmt *>()[initOffset()] = Init;
+ }
/// Retrieve the variable declared in this "switch" statement, if any.
///
@@ -1060,64 +1985,69 @@
/// // ...
/// }
/// \endcode
- VarDecl *getConditionVariable() const;
- void setConditionVariable(const ASTContext &C, VarDecl *V);
+ VarDecl *getConditionVariable();
+ const VarDecl *getConditionVariable() const {
+ return const_cast<SwitchStmt *>(this)->getConditionVariable();
+ }
+
+ /// Set the condition variable in this switch statement.
+ /// The switch statement must have storage for it.
+ void setConditionVariable(const ASTContext &Ctx, VarDecl *VD);
/// If this SwitchStmt has a condition variable, return the faux DeclStmt
/// associated with the creation of that condition variable.
- const DeclStmt *getConditionVariableDeclStmt() const {
- return reinterpret_cast<DeclStmt*>(SubExprs[VAR]);
+ DeclStmt *getConditionVariableDeclStmt() {
+ return hasVarStorage() ? static_cast<DeclStmt *>(
+ getTrailingObjects<Stmt *>()[varOffset()])
+ : nullptr;
}
- Stmt *getInit() { return SubExprs[INIT]; }
- const Stmt *getInit() const { return SubExprs[INIT]; }
- void setInit(Stmt *S) { SubExprs[INIT] = S; }
- const Expr *getCond() const { return reinterpret_cast<Expr*>(SubExprs[COND]);}
- const Stmt *getBody() const { return SubExprs[BODY]; }
- const SwitchCase *getSwitchCaseList() const { return FirstCase.getPointer(); }
+ const DeclStmt *getConditionVariableDeclStmt() const {
+ return hasVarStorage() ? static_cast<DeclStmt *>(
+ getTrailingObjects<Stmt *>()[varOffset()])
+ : nullptr;
+ }
- Expr *getCond() { return reinterpret_cast<Expr*>(SubExprs[COND]);}
- void setCond(Expr *E) { SubExprs[COND] = reinterpret_cast<Stmt *>(E); }
- Stmt *getBody() { return SubExprs[BODY]; }
- void setBody(Stmt *S) { SubExprs[BODY] = S; }
- SwitchCase *getSwitchCaseList() { return FirstCase.getPointer(); }
+ SwitchCase *getSwitchCaseList() { return FirstCase; }
+ const SwitchCase *getSwitchCaseList() const { return FirstCase; }
+ void setSwitchCaseList(SwitchCase *SC) { FirstCase = SC; }
- /// Set the case list for this switch statement.
- void setSwitchCaseList(SwitchCase *SC) { FirstCase.setPointer(SC); }
-
- SourceLocation getSwitchLoc() const { return SwitchLoc; }
- void setSwitchLoc(SourceLocation L) { SwitchLoc = L; }
+ SourceLocation getSwitchLoc() const { return SwitchStmtBits.SwitchLoc; }
+ void setSwitchLoc(SourceLocation L) { SwitchStmtBits.SwitchLoc = L; }
void setBody(Stmt *S, SourceLocation SL) {
- SubExprs[BODY] = S;
- SwitchLoc = SL;
+ setBody(S);
+ setSwitchLoc(SL);
}
void addSwitchCase(SwitchCase *SC) {
- assert(!SC->getNextSwitchCase()
- && "case/default already added to a switch");
- SC->setNextSwitchCase(FirstCase.getPointer());
- FirstCase.setPointer(SC);
+ assert(!SC->getNextSwitchCase() &&
+ "case/default already added to a switch");
+ SC->setNextSwitchCase(FirstCase);
+ FirstCase = SC;
}
/// Set a flag in the SwitchStmt indicating that if the 'switch (X)' is a
/// switch over an enum value then all cases have been explicitly covered.
- void setAllEnumCasesCovered() { FirstCase.setInt(true); }
+ void setAllEnumCasesCovered() { SwitchStmtBits.AllEnumCasesCovered = true; }
/// Returns true if the SwitchStmt is a switch of an enum value and all cases
/// have been explicitly covered.
- bool isAllEnumCasesCovered() const { return FirstCase.getInt(); }
+ bool isAllEnumCasesCovered() const {
+ return SwitchStmtBits.AllEnumCasesCovered;
+ }
- SourceLocation getBeginLoc() const LLVM_READONLY { return SwitchLoc; }
-
+ SourceLocation getBeginLoc() const { return getSwitchLoc(); }
SourceLocation getEndLoc() const LLVM_READONLY {
- return SubExprs[BODY] ? SubExprs[BODY]->getEndLoc()
- : SubExprs[COND]->getEndLoc();
+ return getBody() ? getBody()->getEndLoc()
+ : reinterpret_cast<const Stmt *>(getCond())->getEndLoc();
}
// Iterators
child_range children() {
- return child_range(&SubExprs[0], &SubExprs[0]+END_EXPR);
+ return child_range(getTrailingObjects<Stmt *>(),
+ getTrailingObjects<Stmt *>() +
+ numTrailingObjects(OverloadToken<Stmt *>()));
}
static bool classof(const Stmt *T) {
@@ -1126,17 +2056,75 @@
};
/// WhileStmt - This represents a 'while' stmt.
-class WhileStmt : public Stmt {
- SourceLocation WhileLoc;
- enum { VAR, COND, BODY, END_EXPR };
- Stmt* SubExprs[END_EXPR];
+class WhileStmt final : public Stmt,
+ private llvm::TrailingObjects<WhileStmt, Stmt *> {
+ friend TrailingObjects;
-public:
- WhileStmt(const ASTContext &C, VarDecl *Var, Expr *cond, Stmt *body,
+ // WhileStmt is followed by several trailing objects,
+ // some of which optional. Note that it would be more
+ // convenient to put the optional trailing object at the end
+ // but this would affect children().
+ // The trailing objects are in order:
+ //
+ // * A "Stmt *" for the condition variable.
+ // Present if and only if hasVarStorage(). This is in fact a "DeclStmt *".
+ //
+ // * A "Stmt *" for the condition.
+ // Always present. This is in fact an "Expr *".
+ //
+ // * A "Stmt *" for the body.
+ // Always present.
+ //
+ enum { VarOffset = 0, BodyOffsetFromCond = 1 };
+ enum { NumMandatoryStmtPtr = 2 };
+
+ unsigned varOffset() const { return VarOffset; }
+ unsigned condOffset() const { return VarOffset + hasVarStorage(); }
+ unsigned bodyOffset() const { return condOffset() + BodyOffsetFromCond; }
+
+ unsigned numTrailingObjects(OverloadToken<Stmt *>) const {
+ return NumMandatoryStmtPtr + hasVarStorage();
+ }
+
+ /// Build a while statement.
+ WhileStmt(const ASTContext &Ctx, VarDecl *Var, Expr *Cond, Stmt *Body,
SourceLocation WL);
/// Build an empty while statement.
- explicit WhileStmt(EmptyShell Empty) : Stmt(WhileStmtClass, Empty) {}
+ explicit WhileStmt(EmptyShell Empty, bool HasVar);
+
+public:
+ /// Create a while statement.
+ static WhileStmt *Create(const ASTContext &Ctx, VarDecl *Var, Expr *Cond,
+ Stmt *Body, SourceLocation WL);
+
+ /// Create an empty while statement optionally with storage for
+ /// a condition variable.
+ static WhileStmt *CreateEmpty(const ASTContext &Ctx, bool HasVar);
+
+ /// True if this WhileStmt has storage for a condition variable.
+ bool hasVarStorage() const { return WhileStmtBits.HasVar; }
+
+ Expr *getCond() {
+ return reinterpret_cast<Expr *>(getTrailingObjects<Stmt *>()[condOffset()]);
+ }
+
+ const Expr *getCond() const {
+ return reinterpret_cast<Expr *>(getTrailingObjects<Stmt *>()[condOffset()]);
+ }
+
+ void setCond(Expr *Cond) {
+ getTrailingObjects<Stmt *>()[condOffset()] = reinterpret_cast<Stmt *>(Cond);
+ }
+
+ Stmt *getBody() { return getTrailingObjects<Stmt *>()[bodyOffset()]; }
+ const Stmt *getBody() const {
+ return getTrailingObjects<Stmt *>()[bodyOffset()];
+ }
+
+ void setBody(Stmt *Body) {
+ getTrailingObjects<Stmt *>()[bodyOffset()] = Body;
+ }
/// Retrieve the variable declared in this "while" statement, if any.
///
@@ -1146,29 +2134,35 @@
/// // ...
/// }
/// \endcode
- VarDecl *getConditionVariable() const;
- void setConditionVariable(const ASTContext &C, VarDecl *V);
+ VarDecl *getConditionVariable();
+ const VarDecl *getConditionVariable() const {
+ return const_cast<WhileStmt *>(this)->getConditionVariable();
+ }
+
+ /// Set the condition variable of this while statement.
+ /// The while statement must have storage for it.
+ void setConditionVariable(const ASTContext &Ctx, VarDecl *V);
/// If this WhileStmt has a condition variable, return the faux DeclStmt
/// associated with the creation of that condition variable.
- const DeclStmt *getConditionVariableDeclStmt() const {
- return reinterpret_cast<DeclStmt*>(SubExprs[VAR]);
+ DeclStmt *getConditionVariableDeclStmt() {
+ return hasVarStorage() ? static_cast<DeclStmt *>(
+ getTrailingObjects<Stmt *>()[varOffset()])
+ : nullptr;
}
- Expr *getCond() { return reinterpret_cast<Expr*>(SubExprs[COND]); }
- const Expr *getCond() const { return reinterpret_cast<Expr*>(SubExprs[COND]);}
- void setCond(Expr *E) { SubExprs[COND] = reinterpret_cast<Stmt*>(E); }
- Stmt *getBody() { return SubExprs[BODY]; }
- const Stmt *getBody() const { return SubExprs[BODY]; }
- void setBody(Stmt *S) { SubExprs[BODY] = S; }
+ const DeclStmt *getConditionVariableDeclStmt() const {
+ return hasVarStorage() ? static_cast<DeclStmt *>(
+ getTrailingObjects<Stmt *>()[varOffset()])
+ : nullptr;
+ }
- SourceLocation getWhileLoc() const { return WhileLoc; }
- void setWhileLoc(SourceLocation L) { WhileLoc = L; }
+ SourceLocation getWhileLoc() const { return WhileStmtBits.WhileLoc; }
+ void setWhileLoc(SourceLocation L) { WhileStmtBits.WhileLoc = L; }
- SourceLocation getBeginLoc() const LLVM_READONLY { return WhileLoc; }
-
+ SourceLocation getBeginLoc() const { return getWhileLoc(); }
SourceLocation getEndLoc() const LLVM_READONLY {
- return SubExprs[BODY]->getEndLoc();
+ return getBody()->getEndLoc();
}
static bool classof(const Stmt *T) {
@@ -1177,46 +2171,51 @@
// Iterators
child_range children() {
- return child_range(&SubExprs[0], &SubExprs[0]+END_EXPR);
+ return child_range(getTrailingObjects<Stmt *>(),
+ getTrailingObjects<Stmt *>() +
+ numTrailingObjects(OverloadToken<Stmt *>()));
}
};
/// DoStmt - This represents a 'do/while' stmt.
class DoStmt : public Stmt {
- SourceLocation DoLoc;
enum { BODY, COND, END_EXPR };
- Stmt* SubExprs[END_EXPR];
+ Stmt *SubExprs[END_EXPR];
SourceLocation WhileLoc;
- SourceLocation RParenLoc; // Location of final ')' in do stmt condition.
+ SourceLocation RParenLoc; // Location of final ')' in do stmt condition.
public:
- DoStmt(Stmt *body, Expr *cond, SourceLocation DL, SourceLocation WL,
+ DoStmt(Stmt *Body, Expr *Cond, SourceLocation DL, SourceLocation WL,
SourceLocation RP)
- : Stmt(DoStmtClass), DoLoc(DL), WhileLoc(WL), RParenLoc(RP) {
- SubExprs[COND] = reinterpret_cast<Stmt*>(cond);
- SubExprs[BODY] = body;
+ : Stmt(DoStmtClass), WhileLoc(WL), RParenLoc(RP) {
+ setCond(Cond);
+ setBody(Body);
+ setDoLoc(DL);
}
/// Build an empty do-while statement.
explicit DoStmt(EmptyShell Empty) : Stmt(DoStmtClass, Empty) {}
- Expr *getCond() { return reinterpret_cast<Expr*>(SubExprs[COND]); }
- const Expr *getCond() const { return reinterpret_cast<Expr*>(SubExprs[COND]);}
- void setCond(Expr *E) { SubExprs[COND] = reinterpret_cast<Stmt*>(E); }
+ Expr *getCond() { return reinterpret_cast<Expr *>(SubExprs[COND]); }
+ const Expr *getCond() const {
+ return reinterpret_cast<Expr *>(SubExprs[COND]);
+ }
+
+ void setCond(Expr *Cond) { SubExprs[COND] = reinterpret_cast<Stmt *>(Cond); }
+
Stmt *getBody() { return SubExprs[BODY]; }
const Stmt *getBody() const { return SubExprs[BODY]; }
- void setBody(Stmt *S) { SubExprs[BODY] = S; }
+ void setBody(Stmt *Body) { SubExprs[BODY] = Body; }
- SourceLocation getDoLoc() const { return DoLoc; }
- void setDoLoc(SourceLocation L) { DoLoc = L; }
+ SourceLocation getDoLoc() const { return DoStmtBits.DoLoc; }
+ void setDoLoc(SourceLocation L) { DoStmtBits.DoLoc = L; }
SourceLocation getWhileLoc() const { return WhileLoc; }
void setWhileLoc(SourceLocation L) { WhileLoc = L; }
-
SourceLocation getRParenLoc() const { return RParenLoc; }
void setRParenLoc(SourceLocation L) { RParenLoc = L; }
- SourceLocation getBeginLoc() const LLVM_READONLY { return DoLoc; }
- SourceLocation getEndLoc() const LLVM_READONLY { return RParenLoc; }
+ SourceLocation getBeginLoc() const { return getDoLoc(); }
+ SourceLocation getEndLoc() const { return getRParenLoc(); }
static bool classof(const Stmt *T) {
return T->getStmtClass() == DoStmtClass;
@@ -1224,7 +2223,7 @@
// Iterators
child_range children() {
- return child_range(&SubExprs[0], &SubExprs[0]+END_EXPR);
+ return child_range(&SubExprs[0], &SubExprs[0] + END_EXPR);
}
};
@@ -1232,7 +2231,6 @@
/// the init/cond/inc parts of the ForStmt will be null if they were not
/// specified in the source.
class ForStmt : public Stmt {
- SourceLocation ForLoc;
enum { INIT, CONDVAR, COND, INC, BODY, END_EXPR };
Stmt* SubExprs[END_EXPR]; // SubExprs[INIT] is an expression or declstmt.
SourceLocation LParenLoc, RParenLoc;
@@ -1278,18 +2276,15 @@
void setInc(Expr *E) { SubExprs[INC] = reinterpret_cast<Stmt*>(E); }
void setBody(Stmt *S) { SubExprs[BODY] = S; }
- SourceLocation getForLoc() const { return ForLoc; }
- void setForLoc(SourceLocation L) { ForLoc = L; }
+ SourceLocation getForLoc() const { return ForStmtBits.ForLoc; }
+ void setForLoc(SourceLocation L) { ForStmtBits.ForLoc = L; }
SourceLocation getLParenLoc() const { return LParenLoc; }
void setLParenLoc(SourceLocation L) { LParenLoc = L; }
SourceLocation getRParenLoc() const { return RParenLoc; }
void setRParenLoc(SourceLocation L) { RParenLoc = L; }
- SourceLocation getBeginLoc() const LLVM_READONLY { return ForLoc; }
-
- SourceLocation getEndLoc() const LLVM_READONLY {
- return SubExprs[BODY]->getEndLoc();
- }
+ SourceLocation getBeginLoc() const { return getForLoc(); }
+ SourceLocation getEndLoc() const { return getBody()->getEndLoc(); }
static bool classof(const Stmt *T) {
return T->getStmtClass() == ForStmtClass;
@@ -1304,12 +2299,13 @@
/// GotoStmt - This represents a direct goto.
class GotoStmt : public Stmt {
LabelDecl *Label;
- SourceLocation GotoLoc;
SourceLocation LabelLoc;
public:
GotoStmt(LabelDecl *label, SourceLocation GL, SourceLocation LL)
- : Stmt(GotoStmtClass), Label(label), GotoLoc(GL), LabelLoc(LL) {}
+ : Stmt(GotoStmtClass), Label(label), LabelLoc(LL) {
+ setGotoLoc(GL);
+ }
/// Build an empty goto statement.
explicit GotoStmt(EmptyShell Empty) : Stmt(GotoStmtClass, Empty) {}
@@ -1317,13 +2313,13 @@
LabelDecl *getLabel() const { return Label; }
void setLabel(LabelDecl *D) { Label = D; }
- SourceLocation getGotoLoc() const { return GotoLoc; }
- void setGotoLoc(SourceLocation L) { GotoLoc = L; }
+ SourceLocation getGotoLoc() const { return GotoStmtBits.GotoLoc; }
+ void setGotoLoc(SourceLocation L) { GotoStmtBits.GotoLoc = L; }
SourceLocation getLabelLoc() const { return LabelLoc; }
void setLabelLoc(SourceLocation L) { LabelLoc = L; }
- SourceLocation getBeginLoc() const LLVM_READONLY { return GotoLoc; }
- SourceLocation getEndLoc() const LLVM_READONLY { return LabelLoc; }
+ SourceLocation getBeginLoc() const { return getGotoLoc(); }
+ SourceLocation getEndLoc() const { return getLabelLoc(); }
static bool classof(const Stmt *T) {
return T->getStmtClass() == GotoStmtClass;
@@ -1337,37 +2333,39 @@
/// IndirectGotoStmt - This represents an indirect goto.
class IndirectGotoStmt : public Stmt {
- SourceLocation GotoLoc;
SourceLocation StarLoc;
Stmt *Target;
public:
- IndirectGotoStmt(SourceLocation gotoLoc, SourceLocation starLoc,
- Expr *target)
- : Stmt(IndirectGotoStmtClass), GotoLoc(gotoLoc), StarLoc(starLoc),
- Target((Stmt*)target) {}
+ IndirectGotoStmt(SourceLocation gotoLoc, SourceLocation starLoc, Expr *target)
+ : Stmt(IndirectGotoStmtClass), StarLoc(starLoc) {
+ setTarget(target);
+ setGotoLoc(gotoLoc);
+ }
/// Build an empty indirect goto statement.
explicit IndirectGotoStmt(EmptyShell Empty)
: Stmt(IndirectGotoStmtClass, Empty) {}
- void setGotoLoc(SourceLocation L) { GotoLoc = L; }
- SourceLocation getGotoLoc() const { return GotoLoc; }
+ void setGotoLoc(SourceLocation L) { GotoStmtBits.GotoLoc = L; }
+ SourceLocation getGotoLoc() const { return GotoStmtBits.GotoLoc; }
void setStarLoc(SourceLocation L) { StarLoc = L; }
SourceLocation getStarLoc() const { return StarLoc; }
- Expr *getTarget() { return reinterpret_cast<Expr*>(Target); }
- const Expr *getTarget() const {return reinterpret_cast<const Expr*>(Target);}
- void setTarget(Expr *E) { Target = reinterpret_cast<Stmt*>(E); }
+ Expr *getTarget() { return reinterpret_cast<Expr *>(Target); }
+ const Expr *getTarget() const {
+ return reinterpret_cast<const Expr *>(Target);
+ }
+ void setTarget(Expr *E) { Target = reinterpret_cast<Stmt *>(E); }
/// getConstantTarget - Returns the fixed target of this indirect
/// goto, if one exists.
LabelDecl *getConstantTarget();
const LabelDecl *getConstantTarget() const {
- return const_cast<IndirectGotoStmt*>(this)->getConstantTarget();
+ return const_cast<IndirectGotoStmt *>(this)->getConstantTarget();
}
- SourceLocation getBeginLoc() const LLVM_READONLY { return GotoLoc; }
+ SourceLocation getBeginLoc() const { return getGotoLoc(); }
SourceLocation getEndLoc() const LLVM_READONLY { return Target->getEndLoc(); }
static bool classof(const Stmt *T) {
@@ -1375,24 +2373,24 @@
}
// Iterators
- child_range children() { return child_range(&Target, &Target+1); }
+ child_range children() { return child_range(&Target, &Target + 1); }
};
/// ContinueStmt - This represents a continue.
class ContinueStmt : public Stmt {
- SourceLocation ContinueLoc;
-
public:
- ContinueStmt(SourceLocation CL) : Stmt(ContinueStmtClass), ContinueLoc(CL) {}
+ ContinueStmt(SourceLocation CL) : Stmt(ContinueStmtClass) {
+ setContinueLoc(CL);
+ }
/// Build an empty continue statement.
explicit ContinueStmt(EmptyShell Empty) : Stmt(ContinueStmtClass, Empty) {}
- SourceLocation getContinueLoc() const { return ContinueLoc; }
- void setContinueLoc(SourceLocation L) { ContinueLoc = L; }
+ SourceLocation getContinueLoc() const { return ContinueStmtBits.ContinueLoc; }
+ void setContinueLoc(SourceLocation L) { ContinueStmtBits.ContinueLoc = L; }
- SourceLocation getBeginLoc() const LLVM_READONLY { return ContinueLoc; }
- SourceLocation getEndLoc() const LLVM_READONLY { return ContinueLoc; }
+ SourceLocation getBeginLoc() const { return getContinueLoc(); }
+ SourceLocation getEndLoc() const { return getContinueLoc(); }
static bool classof(const Stmt *T) {
return T->getStmtClass() == ContinueStmtClass;
@@ -1406,22 +2404,19 @@
/// BreakStmt - This represents a break.
class BreakStmt : public Stmt {
- SourceLocation BreakLoc;
-
public:
- BreakStmt(SourceLocation BL) : Stmt(BreakStmtClass), BreakLoc(BL) {
- static_assert(sizeof(BreakStmt) == 2 * sizeof(SourceLocation),
- "BreakStmt too large");
+ BreakStmt(SourceLocation BL) : Stmt(BreakStmtClass) {
+ setBreakLoc(BL);
}
/// Build an empty break statement.
explicit BreakStmt(EmptyShell Empty) : Stmt(BreakStmtClass, Empty) {}
- SourceLocation getBreakLoc() const { return BreakLoc; }
- void setBreakLoc(SourceLocation L) { BreakLoc = L; }
+ SourceLocation getBreakLoc() const { return BreakStmtBits.BreakLoc; }
+ void setBreakLoc(SourceLocation L) { BreakStmtBits.BreakLoc = L; }
- SourceLocation getBeginLoc() const LLVM_READONLY { return BreakLoc; }
- SourceLocation getEndLoc() const LLVM_READONLY { return BreakLoc; }
+ SourceLocation getBeginLoc() const { return getBreakLoc(); }
+ SourceLocation getEndLoc() const { return getBreakLoc(); }
static bool classof(const Stmt *T) {
return T->getStmtClass() == BreakStmtClass;
@@ -1441,40 +2436,68 @@
/// return a value, and it allows returning a value in functions declared to
/// return void. We explicitly model this in the AST, which means you can't
/// depend on the return type of the function and the presence of an argument.
-class ReturnStmt : public Stmt {
- SourceLocation RetLoc;
+class ReturnStmt final
+ : public Stmt,
+ private llvm::TrailingObjects<ReturnStmt, const VarDecl *> {
+ friend TrailingObjects;
+
+ /// The return expression.
Stmt *RetExpr;
- const VarDecl *NRVOCandidate;
+
+ // ReturnStmt is followed optionally by a trailing "const VarDecl *"
+ // for the NRVO candidate. Present if and only if hasNRVOCandidate().
+
+ /// True if this ReturnStmt has storage for an NRVO candidate.
+ bool hasNRVOCandidate() const { return ReturnStmtBits.HasNRVOCandidate; }
+
+ unsigned numTrailingObjects(OverloadToken<const VarDecl *>) const {
+ return hasNRVOCandidate();
+ }
+
+ /// Build a return statement.
+ ReturnStmt(SourceLocation RL, Expr *E, const VarDecl *NRVOCandidate);
+
+ /// Build an empty return statement.
+ explicit ReturnStmt(EmptyShell Empty, bool HasNRVOCandidate);
public:
- explicit ReturnStmt(SourceLocation RL) : ReturnStmt(RL, nullptr, nullptr) {}
+ /// Create a return statement.
+ static ReturnStmt *Create(const ASTContext &Ctx, SourceLocation RL, Expr *E,
+ const VarDecl *NRVOCandidate);
- ReturnStmt(SourceLocation RL, Expr *E, const VarDecl *NRVOCandidate)
- : Stmt(ReturnStmtClass), RetLoc(RL), RetExpr((Stmt *)E),
- NRVOCandidate(NRVOCandidate) {}
+ /// Create an empty return statement, optionally with
+ /// storage for an NRVO candidate.
+ static ReturnStmt *CreateEmpty(const ASTContext &Ctx, bool HasNRVOCandidate);
- /// Build an empty return expression.
- explicit ReturnStmt(EmptyShell Empty) : Stmt(ReturnStmtClass, Empty) {}
-
- const Expr *getRetValue() const;
- Expr *getRetValue();
- void setRetValue(Expr *E) { RetExpr = reinterpret_cast<Stmt*>(E); }
-
- SourceLocation getReturnLoc() const { return RetLoc; }
- void setReturnLoc(SourceLocation L) { RetLoc = L; }
+ Expr *getRetValue() { return reinterpret_cast<Expr *>(RetExpr); }
+ const Expr *getRetValue() const { return reinterpret_cast<Expr *>(RetExpr); }
+ void setRetValue(Expr *E) { RetExpr = reinterpret_cast<Stmt *>(E); }
/// Retrieve the variable that might be used for the named return
/// value optimization.
///
/// The optimization itself can only be performed if the variable is
/// also marked as an NRVO object.
- const VarDecl *getNRVOCandidate() const { return NRVOCandidate; }
- void setNRVOCandidate(const VarDecl *Var) { NRVOCandidate = Var; }
+ const VarDecl *getNRVOCandidate() const {
+ return hasNRVOCandidate() ? *getTrailingObjects<const VarDecl *>()
+ : nullptr;
+ }
- SourceLocation getBeginLoc() const LLVM_READONLY { return RetLoc; }
+ /// Set the variable that might be used for the named return value
+ /// optimization. The return statement must have storage for it,
+ /// which is the case if and only if hasNRVOCandidate() is true.
+ void setNRVOCandidate(const VarDecl *Var) {
+ assert(hasNRVOCandidate() &&
+ "This return statement has no storage for an NRVO candidate!");
+ *getTrailingObjects<const VarDecl *>() = Var;
+ }
+ SourceLocation getReturnLoc() const { return ReturnStmtBits.RetLoc; }
+ void setReturnLoc(SourceLocation L) { ReturnStmtBits.RetLoc = L; }
+
+ SourceLocation getBeginLoc() const { return getReturnLoc(); }
SourceLocation getEndLoc() const LLVM_READONLY {
- return RetExpr ? RetExpr->getEndLoc() : RetLoc;
+ return RetExpr ? RetExpr->getEndLoc() : getReturnLoc();
}
static bool classof(const Stmt *T) {
@@ -1483,7 +2506,8 @@
// Iterators
child_range children() {
- if (RetExpr) return child_range(&RetExpr, &RetExpr+1);
+ if (RetExpr)
+ return child_range(&RetExpr, &RetExpr + 1);
return child_range(child_iterator(), child_iterator());
}
};
diff --git a/linux-x64/clang/include/clang/AST/StmtCXX.h b/linux-x64/clang/include/clang/AST/StmtCXX.h
index d3a3cf7..5618b2a 100644
--- a/linux-x64/clang/include/clang/AST/StmtCXX.h
+++ b/linux-x64/clang/include/clang/AST/StmtCXX.h
@@ -1,9 +1,8 @@
//===--- StmtCXX.h - Classes for representing C++ statements ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/StmtDataCollectors.inc b/linux-x64/clang/include/clang/AST/StmtDataCollectors.inc
index 9513531..5019dc9 100644
--- a/linux-x64/clang/include/clang/AST/StmtDataCollectors.inc
+++ b/linux-x64/clang/include/clang/AST/StmtDataCollectors.inc
@@ -118,8 +118,8 @@
)
DEF_ADD_DATA(GenericSelectionExpr, {
- for (unsigned i = 0; i < S->getNumAssocs(); ++i) {
- addData(S->getAssocType(i));
+ for (const GenericSelectionExpr::ConstAssociation &Assoc : S->associations()) {
+ addData(Assoc.getType());
}
}
)
@@ -188,7 +188,7 @@
)
DEF_ADD_DATA(PredefinedExpr, {
- addData(S->getIdentType());
+ addData(S->getIdentKind());
}
)
DEF_ADD_DATA(Stmt, {
diff --git a/linux-x64/clang/include/clang/AST/StmtGraphTraits.h b/linux-x64/clang/include/clang/AST/StmtGraphTraits.h
index 02c77b2..ee1e8cf 100644
--- a/linux-x64/clang/include/clang/AST/StmtGraphTraits.h
+++ b/linux-x64/clang/include/clang/AST/StmtGraphTraits.h
@@ -1,9 +1,8 @@
//===- StmtGraphTraits.h - Graph Traits for the class Stmt ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/StmtIterator.h b/linux-x64/clang/include/clang/AST/StmtIterator.h
index 806edaa..9112053 100644
--- a/linux-x64/clang/include/clang/AST/StmtIterator.h
+++ b/linux-x64/clang/include/clang/AST/StmtIterator.h
@@ -1,9 +1,8 @@
//===- StmtIterator.h - Iterators for Statements ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/StmtNodes.inc b/linux-x64/clang/include/clang/AST/StmtNodes.inc
index 5c35710..9c6e8bf 100644
--- a/linux-x64/clang/include/clang/AST/StmtNodes.inc
+++ b/linux-x64/clang/include/clang/AST/StmtNodes.inc
@@ -501,12 +501,6 @@
DESIGNATEDINITUPDATEEXPR(DesignatedInitUpdateExpr, Expr)
#undef DESIGNATEDINITUPDATEEXPR
-#ifndef EXPRWITHCLEANUPS
-# define EXPRWITHCLEANUPS(Type, Base) EXPR(Type, Base)
-#endif
-EXPRWITHCLEANUPS(ExprWithCleanups, Expr)
-#undef EXPRWITHCLEANUPS
-
#ifndef EXPRESSIONTRAITEXPR
# define EXPRESSIONTRAITEXPR(Type, Base) EXPR(Type, Base)
#endif
@@ -531,6 +525,26 @@
FLOATINGLITERAL(FloatingLiteral, Expr)
#undef FLOATINGLITERAL
+#ifndef FULLEXPR
+# define FULLEXPR(Type, Base) EXPR(Type, Base)
+#endif
+ABSTRACT_STMT(FULLEXPR(FullExpr, Expr))
+#ifndef CONSTANTEXPR
+# define CONSTANTEXPR(Type, Base) FULLEXPR(Type, Base)
+#endif
+CONSTANTEXPR(ConstantExpr, FullExpr)
+#undef CONSTANTEXPR
+
+#ifndef EXPRWITHCLEANUPS
+# define EXPRWITHCLEANUPS(Type, Base) FULLEXPR(Type, Base)
+#endif
+EXPRWITHCLEANUPS(ExprWithCleanups, FullExpr)
+#undef EXPRWITHCLEANUPS
+
+STMT_RANGE(FullExpr, ConstantExpr, ExprWithCleanups)
+
+#undef FULLEXPR
+
#ifndef FUNCTIONPARMPACKEXPR
# define FUNCTIONPARMPACKEXPR(Type, Base) EXPR(Type, Base)
#endif
diff --git a/linux-x64/clang/include/clang/AST/StmtObjC.h b/linux-x64/clang/include/clang/AST/StmtObjC.h
index f0c0a9a..aeb59a0 100644
--- a/linux-x64/clang/include/clang/AST/StmtObjC.h
+++ b/linux-x64/clang/include/clang/AST/StmtObjC.h
@@ -1,9 +1,8 @@
//===--- StmtObjC.h - Classes for representing ObjC statements --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/AST/StmtOpenMP.h b/linux-x64/clang/include/clang/AST/StmtOpenMP.h
index 170c78c..4b6e706 100644
--- a/linux-x64/clang/include/clang/AST/StmtOpenMP.h
+++ b/linux-x64/clang/include/clang/AST/StmtOpenMP.h
@@ -1,9 +1,8 @@
//===- StmtOpenMP.h - Classes for OpenMP directives ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -392,9 +391,11 @@
CombinedConditionOffset = 25,
CombinedNextLowerBoundOffset = 26,
CombinedNextUpperBoundOffset = 27,
+ CombinedDistConditionOffset = 28,
+ CombinedParForInDistConditionOffset = 29,
// Offset to the end (and start of the following counters/updates/finals
// arrays) for combined distribute loop directives.
- CombinedDistributeEnd = 28,
+ CombinedDistributeEnd = 30,
};
/// Get the counters storage.
@@ -605,6 +606,17 @@
"expected loop bound sharing directive");
*std::next(child_begin(), CombinedNextUpperBoundOffset) = CombNUB;
}
+ void setCombinedDistCond(Expr *CombDistCond) {
+ assert(isOpenMPLoopBoundSharingDirective(getDirectiveKind()) &&
+ "expected loop bound distribute sharing directive");
+ *std::next(child_begin(), CombinedDistConditionOffset) = CombDistCond;
+ }
+ void setCombinedParForInDistCond(Expr *CombParForInDistCond) {
+ assert(isOpenMPLoopBoundSharingDirective(getDirectiveKind()) &&
+ "expected loop bound distribute sharing directive");
+ *std::next(child_begin(),
+ CombinedParForInDistConditionOffset) = CombParForInDistCond;
+ }
void setCounters(ArrayRef<Expr *> A);
void setPrivateCounters(ArrayRef<Expr *> A);
void setInits(ArrayRef<Expr *> A);
@@ -637,6 +649,13 @@
/// Update of UpperBound for statically scheduled omp loops for
/// outer loop in combined constructs (e.g. 'distribute parallel for')
Expr *NUB;
+ /// Distribute Loop condition used when composing 'omp distribute'
+ /// with 'omp for' in a same construct when schedule is chunked.
+ Expr *DistCond;
+ /// 'omp parallel for' loop condition used when composed with
+ /// 'omp distribute' in the same construct and when schedule is
+ /// chunked and the chunk size is 1.
+ Expr *ParForInDistCond;
};
/// The expressions built for the OpenMP loop CodeGen for the
@@ -754,6 +773,8 @@
DistCombinedFields.Cond = nullptr;
DistCombinedFields.NLB = nullptr;
DistCombinedFields.NUB = nullptr;
+ DistCombinedFields.DistCond = nullptr;
+ DistCombinedFields.ParForInDistCond = nullptr;
}
};
@@ -922,6 +943,18 @@
return const_cast<Expr *>(reinterpret_cast<const Expr *>(
*std::next(child_begin(), CombinedNextUpperBoundOffset)));
}
+ Expr *getCombinedDistCond() const {
+ assert(isOpenMPLoopBoundSharingDirective(getDirectiveKind()) &&
+ "expected loop bound distribute sharing directive");
+ return const_cast<Expr *>(reinterpret_cast<const Expr *>(
+ *std::next(child_begin(), CombinedDistConditionOffset)));
+ }
+ Expr *getCombinedParForInDistCond() const {
+ assert(isOpenMPLoopBoundSharingDirective(getDirectiveKind()) &&
+ "expected loop bound distribute sharing directive");
+ return const_cast<Expr *>(reinterpret_cast<const Expr *>(
+ *std::next(child_begin(), CombinedParForInDistConditionOffset)));
+ }
const Stmt *getBody() const {
// This relies on the loop form is already checked by Sema.
const Stmt *Body =
diff --git a/linux-x64/clang/include/clang/AST/StmtVisitor.h b/linux-x64/clang/include/clang/AST/StmtVisitor.h
index bbfffe8..d3be93d 100644
--- a/linux-x64/clang/include/clang/AST/StmtVisitor.h
+++ b/linux-x64/clang/include/clang/AST/StmtVisitor.h
@@ -1,9 +1,8 @@
//===- StmtVisitor.h - Visitor for Stmt subclasses --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -22,15 +21,12 @@
#include "clang/AST/StmtObjC.h"
#include "clang/AST/StmtOpenMP.h"
#include "clang/Basic/LLVM.h"
+#include "llvm/ADT/STLExtras.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/ErrorHandling.h"
#include <utility>
namespace clang {
-
-template <typename T> struct make_ptr { using type = T *; };
-template <typename T> struct make_const_ptr { using type = const T *; };
-
/// StmtVisitorBase - This class implements a simple visitor for Stmt
/// subclasses. Since Expr derives from Stmt, this also includes support for
/// visiting Exprs.
@@ -182,18 +178,19 @@
///
/// This class does not preserve constness of Stmt pointers (see also
/// ConstStmtVisitor).
-template<typename ImplClass, typename RetTy=void, typename... ParamTys>
+template <typename ImplClass, typename RetTy = void, typename... ParamTys>
class StmtVisitor
- : public StmtVisitorBase<make_ptr, ImplClass, RetTy, ParamTys...> {};
+ : public StmtVisitorBase<std::add_pointer, ImplClass, RetTy, ParamTys...> {
+};
/// ConstStmtVisitor - This class implements a simple visitor for Stmt
/// subclasses. Since Expr derives from Stmt, this also includes support for
/// visiting Exprs.
///
/// This class preserves constness of Stmt pointers (see also StmtVisitor).
-template<typename ImplClass, typename RetTy=void, typename... ParamTys>
-class ConstStmtVisitor
- : public StmtVisitorBase<make_const_ptr, ImplClass, RetTy, ParamTys...> {};
+template <typename ImplClass, typename RetTy = void, typename... ParamTys>
+class ConstStmtVisitor : public StmtVisitorBase<llvm::make_const_ptr, ImplClass,
+ RetTy, ParamTys...> {};
} // namespace clang
diff --git a/linux-x64/clang/include/clang/AST/TemplateArgumentVisitor.h b/linux-x64/clang/include/clang/AST/TemplateArgumentVisitor.h
new file mode 100644
index 0000000..190aa97
--- /dev/null
+++ b/linux-x64/clang/include/clang/AST/TemplateArgumentVisitor.h
@@ -0,0 +1,98 @@
+//===- TemplateArgumentVisitor.h - Visitor for TArg subclasses --*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines the TemplateArgumentVisitor interface.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_AST_TEMPLATEARGUMENTVISITOR_H
+#define LLVM_CLANG_AST_TEMPLATEARGUMENTVISITOR_H
+
+#include "clang/AST/TemplateBase.h"
+
+namespace clang {
+
+namespace templateargumentvisitor {
+
+/// A simple visitor class that helps create template argument visitors.
+template <template <typename> class Ref, typename ImplClass,
+ typename RetTy = void, typename... ParamTys>
+class Base {
+public:
+#define REF(CLASS) typename Ref<CLASS>::type
+#define DISPATCH(NAME) \
+ case TemplateArgument::NAME: \
+ return static_cast<ImplClass *>(this)->Visit##NAME##TemplateArgument( \
+ TA, std::forward<ParamTys>(P)...)
+
+ RetTy Visit(REF(TemplateArgument) TA, ParamTys... P) {
+ switch (TA.getKind()) {
+ DISPATCH(Null);
+ DISPATCH(Type);
+ DISPATCH(Declaration);
+ DISPATCH(NullPtr);
+ DISPATCH(Integral);
+ DISPATCH(Template);
+ DISPATCH(TemplateExpansion);
+ DISPATCH(Expression);
+ DISPATCH(Pack);
+ }
+ llvm_unreachable("TemplateArgument is not covered in switch!");
+ }
+
+ // If the implementation chooses not to implement a certain visit
+ // method, fall back to the parent.
+
+#define VISIT_METHOD(CATEGORY) \
+ RetTy Visit##CATEGORY##TemplateArgument(REF(TemplateArgument) TA, \
+ ParamTys... P) { \
+ return VisitTemplateArgument(TA, std::forward<ParamTys>(P)...); \
+ }
+
+ VISIT_METHOD(Null);
+ VISIT_METHOD(Type);
+ VISIT_METHOD(Declaration);
+ VISIT_METHOD(NullPtr);
+ VISIT_METHOD(Integral);
+ VISIT_METHOD(Template);
+ VISIT_METHOD(TemplateExpansion);
+ VISIT_METHOD(Expression);
+ VISIT_METHOD(Pack);
+
+ RetTy VisitTemplateArgument(REF(TemplateArgument), ParamTys...) {
+ return RetTy();
+ }
+
+#undef REF
+#undef DISPATCH
+#undef VISIT_METHOD
+};
+
+} // namespace templateargumentvisitor
+
+/// A simple visitor class that helps create template argument visitors.
+///
+/// This class does not preserve constness of TemplateArgument references (see
+/// also ConstTemplateArgumentVisitor).
+template <typename ImplClass, typename RetTy = void, typename... ParamTys>
+class TemplateArgumentVisitor
+ : public templateargumentvisitor::Base<std::add_lvalue_reference, ImplClass,
+ RetTy, ParamTys...> {};
+
+/// A simple visitor class that helps create template argument visitors.
+///
+/// This class preserves constness of TemplateArgument references (see also
+/// TemplateArgumentVisitor).
+template <typename ImplClass, typename RetTy = void, typename... ParamTys>
+class ConstTemplateArgumentVisitor
+ : public templateargumentvisitor::Base<llvm::make_const_ref, ImplClass,
+ RetTy, ParamTys...> {};
+
+} // namespace clang
+
+#endif // LLVM_CLANG_AST_TEMPLATEARGUMENTVISITOR_H
diff --git a/linux-x64/clang/include/clang/AST/TemplateBase.h b/linux-x64/clang/include/clang/AST/TemplateBase.h
index 8f92e79..058a5bc 100644
--- a/linux-x64/clang/include/clang/AST/TemplateBase.h
+++ b/linux-x64/clang/include/clang/AST/TemplateBase.h
@@ -1,9 +1,8 @@
//===- TemplateBase.h - Core classes for C++ templates ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -530,19 +529,22 @@
}
NestedNameSpecifierLoc getTemplateQualifierLoc() const {
- assert(Argument.getKind() == TemplateArgument::Template ||
- Argument.getKind() == TemplateArgument::TemplateExpansion);
+ if (Argument.getKind() != TemplateArgument::Template &&
+ Argument.getKind() != TemplateArgument::TemplateExpansion)
+ return NestedNameSpecifierLoc();
return LocInfo.getTemplateQualifierLoc();
}
SourceLocation getTemplateNameLoc() const {
- assert(Argument.getKind() == TemplateArgument::Template ||
- Argument.getKind() == TemplateArgument::TemplateExpansion);
+ if (Argument.getKind() != TemplateArgument::Template &&
+ Argument.getKind() != TemplateArgument::TemplateExpansion)
+ return SourceLocation();
return LocInfo.getTemplateNameLoc();
}
SourceLocation getTemplateEllipsisLoc() const {
- assert(Argument.getKind() == TemplateArgument::TemplateExpansion);
+ if (Argument.getKind() != TemplateArgument::TemplateExpansion)
+ return SourceLocation();
return LocInfo.getTemplateEllipsisLoc();
}
};
@@ -617,13 +619,17 @@
/// The number of template arguments in TemplateArgs.
unsigned NumTemplateArgs;
+ SourceLocation getLAngleLoc() const { return LAngleLoc; }
+ SourceLocation getRAngleLoc() const { return RAngleLoc; }
+
/// Retrieve the template arguments
const TemplateArgumentLoc *getTemplateArgs() const {
return getTrailingObjects<TemplateArgumentLoc>();
}
+ unsigned getNumTemplateArgs() const { return NumTemplateArgs; }
llvm::ArrayRef<TemplateArgumentLoc> arguments() const {
- return llvm::makeArrayRef(getTemplateArgs(), NumTemplateArgs);
+ return llvm::makeArrayRef(getTemplateArgs(), getNumTemplateArgs());
}
const TemplateArgumentLoc &operator[](unsigned I) const {
diff --git a/linux-x64/clang/include/clang/AST/TemplateName.h b/linux-x64/clang/include/clang/AST/TemplateName.h
index d88d58d..89c5fab 100644
--- a/linux-x64/clang/include/clang/AST/TemplateName.h
+++ b/linux-x64/clang/include/clang/AST/TemplateName.h
@@ -1,9 +1,8 @@
//===- TemplateName.h - C++ Template Name Representation --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -14,6 +13,7 @@
#ifndef LLVM_CLANG_AST_TEMPLATENAME_H
#define LLVM_CLANG_AST_TEMPLATENAME_H
+#include "clang/AST/NestedNameSpecifier.h"
#include "clang/Basic/LLVM.h"
#include "llvm/ADT/FoldingSet.h"
#include "llvm/ADT/PointerIntPair.h"
diff --git a/linux-x64/clang/include/clang/AST/TextNodeDumper.h b/linux-x64/clang/include/clang/AST/TextNodeDumper.h
new file mode 100644
index 0000000..d164cc1
--- /dev/null
+++ b/linux-x64/clang/include/clang/AST/TextNodeDumper.h
@@ -0,0 +1,353 @@
+//===--- TextNodeDumper.h - Printing of AST nodes -------------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements AST dumping of components of individual AST nodes.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_AST_TEXTNODEDUMPER_H
+#define LLVM_CLANG_AST_TEXTNODEDUMPER_H
+
+#include "clang/AST/ASTContext.h"
+#include "clang/AST/ASTDumperUtils.h"
+#include "clang/AST/AttrVisitor.h"
+#include "clang/AST/CommentCommandTraits.h"
+#include "clang/AST/CommentVisitor.h"
+#include "clang/AST/DeclVisitor.h"
+#include "clang/AST/ExprCXX.h"
+#include "clang/AST/StmtVisitor.h"
+#include "clang/AST/TemplateArgumentVisitor.h"
+#include "clang/AST/TypeVisitor.h"
+
+namespace clang {
+
+class TextTreeStructure {
+ raw_ostream &OS;
+ const bool ShowColors;
+
+ /// Pending[i] is an action to dump an entity at level i.
+ llvm::SmallVector<std::function<void(bool IsLastChild)>, 32> Pending;
+
+ /// Indicates whether we're at the top level.
+ bool TopLevel = true;
+
+ /// Indicates if we're handling the first child after entering a new depth.
+ bool FirstChild = true;
+
+ /// Prefix for currently-being-dumped entity.
+ std::string Prefix;
+
+public:
+ /// Add a child of the current node. Calls DoAddChild without arguments
+ template <typename Fn> void AddChild(Fn DoAddChild) {
+ return AddChild("", DoAddChild);
+ }
+
+ /// Add a child of the current node with an optional label.
+ /// Calls DoAddChild without arguments.
+ template <typename Fn> void AddChild(StringRef Label, Fn DoAddChild) {
+ // If we're at the top level, there's nothing interesting to do; just
+ // run the dumper.
+ if (TopLevel) {
+ TopLevel = false;
+ DoAddChild();
+ while (!Pending.empty()) {
+ Pending.back()(true);
+ Pending.pop_back();
+ }
+ Prefix.clear();
+ OS << "\n";
+ TopLevel = true;
+ return;
+ }
+
+ // We need to capture an owning-string in the lambda because the lambda
+ // is invoked in a deferred manner.
+ std::string LabelStr = Label;
+ auto DumpWithIndent = [this, DoAddChild, LabelStr](bool IsLastChild) {
+ // Print out the appropriate tree structure and work out the prefix for
+ // children of this node. For instance:
+ //
+ // A Prefix = ""
+ // |-B Prefix = "| "
+ // | `-C Prefix = "| "
+ // `-D Prefix = " "
+ // |-E Prefix = " | "
+ // `-F Prefix = " "
+ // G Prefix = ""
+ //
+ // Note that the first level gets no prefix.
+ {
+ OS << '\n';
+ ColorScope Color(OS, ShowColors, IndentColor);
+ OS << Prefix << (IsLastChild ? '`' : '|') << '-';
+ if (!LabelStr.empty())
+ OS << LabelStr << ": ";
+
+ this->Prefix.push_back(IsLastChild ? ' ' : '|');
+ this->Prefix.push_back(' ');
+ }
+
+ FirstChild = true;
+ unsigned Depth = Pending.size();
+
+ DoAddChild();
+
+ // If any children are left, they're the last at their nesting level.
+ // Dump those ones out now.
+ while (Depth < Pending.size()) {
+ Pending.back()(true);
+ this->Pending.pop_back();
+ }
+
+ // Restore the old prefix.
+ this->Prefix.resize(Prefix.size() - 2);
+ };
+
+ if (FirstChild) {
+ Pending.push_back(std::move(DumpWithIndent));
+ } else {
+ Pending.back()(false);
+ Pending.back() = std::move(DumpWithIndent);
+ }
+ FirstChild = false;
+ }
+
+ TextTreeStructure(raw_ostream &OS, bool ShowColors)
+ : OS(OS), ShowColors(ShowColors) {}
+};
+
+class TextNodeDumper
+ : public TextTreeStructure,
+ public comments::ConstCommentVisitor<TextNodeDumper, void,
+ const comments::FullComment *>,
+ public ConstAttrVisitor<TextNodeDumper>,
+ public ConstTemplateArgumentVisitor<TextNodeDumper>,
+ public ConstStmtVisitor<TextNodeDumper>,
+ public TypeVisitor<TextNodeDumper>,
+ public ConstDeclVisitor<TextNodeDumper> {
+ raw_ostream &OS;
+ const bool ShowColors;
+
+ /// Keep track of the last location we print out so that we can
+ /// print out deltas from then on out.
+ const char *LastLocFilename = "";
+ unsigned LastLocLine = ~0U;
+
+ const SourceManager *SM;
+
+ /// The policy to use for printing; can be defaulted.
+ PrintingPolicy PrintPolicy;
+
+ const comments::CommandTraits *Traits;
+
+ const char *getCommandName(unsigned CommandID);
+
+public:
+ TextNodeDumper(raw_ostream &OS, bool ShowColors, const SourceManager *SM,
+ const PrintingPolicy &PrintPolicy,
+ const comments::CommandTraits *Traits);
+
+ void Visit(const comments::Comment *C, const comments::FullComment *FC);
+
+ void Visit(const Attr *A);
+
+ void Visit(const TemplateArgument &TA, SourceRange R,
+ const Decl *From = nullptr, StringRef Label = {});
+
+ void Visit(const Stmt *Node);
+
+ void Visit(const Type *T);
+
+ void Visit(QualType T);
+
+ void Visit(const Decl *D);
+
+ void Visit(const CXXCtorInitializer *Init);
+
+ void Visit(const OMPClause *C);
+
+ void Visit(const BlockDecl::Capture &C);
+
+ void Visit(const GenericSelectionExpr::ConstAssociation &A);
+
+ void dumpPointer(const void *Ptr);
+ void dumpLocation(SourceLocation Loc);
+ void dumpSourceRange(SourceRange R);
+ void dumpBareType(QualType T, bool Desugar = true);
+ void dumpType(QualType T);
+ void dumpBareDeclRef(const Decl *D);
+ void dumpName(const NamedDecl *ND);
+ void dumpAccessSpecifier(AccessSpecifier AS);
+
+ void dumpDeclRef(const Decl *D, StringRef Label = {});
+
+ void visitTextComment(const comments::TextComment *C,
+ const comments::FullComment *);
+ void visitInlineCommandComment(const comments::InlineCommandComment *C,
+ const comments::FullComment *);
+ void visitHTMLStartTagComment(const comments::HTMLStartTagComment *C,
+ const comments::FullComment *);
+ void visitHTMLEndTagComment(const comments::HTMLEndTagComment *C,
+ const comments::FullComment *);
+ void visitBlockCommandComment(const comments::BlockCommandComment *C,
+ const comments::FullComment *);
+ void visitParamCommandComment(const comments::ParamCommandComment *C,
+ const comments::FullComment *FC);
+ void visitTParamCommandComment(const comments::TParamCommandComment *C,
+ const comments::FullComment *FC);
+ void visitVerbatimBlockComment(const comments::VerbatimBlockComment *C,
+ const comments::FullComment *);
+ void
+ visitVerbatimBlockLineComment(const comments::VerbatimBlockLineComment *C,
+ const comments::FullComment *);
+ void visitVerbatimLineComment(const comments::VerbatimLineComment *C,
+ const comments::FullComment *);
+
+// Implements Visit methods for Attrs.
+#include "clang/AST/AttrTextNodeDump.inc"
+
+ void VisitNullTemplateArgument(const TemplateArgument &TA);
+ void VisitTypeTemplateArgument(const TemplateArgument &TA);
+ void VisitDeclarationTemplateArgument(const TemplateArgument &TA);
+ void VisitNullPtrTemplateArgument(const TemplateArgument &TA);
+ void VisitIntegralTemplateArgument(const TemplateArgument &TA);
+ void VisitTemplateTemplateArgument(const TemplateArgument &TA);
+ void VisitTemplateExpansionTemplateArgument(const TemplateArgument &TA);
+ void VisitExpressionTemplateArgument(const TemplateArgument &TA);
+ void VisitPackTemplateArgument(const TemplateArgument &TA);
+
+ void VisitIfStmt(const IfStmt *Node);
+ void VisitSwitchStmt(const SwitchStmt *Node);
+ void VisitWhileStmt(const WhileStmt *Node);
+ void VisitLabelStmt(const LabelStmt *Node);
+ void VisitGotoStmt(const GotoStmt *Node);
+ void VisitCaseStmt(const CaseStmt *Node);
+ void VisitCallExpr(const CallExpr *Node);
+ void VisitCastExpr(const CastExpr *Node);
+ void VisitImplicitCastExpr(const ImplicitCastExpr *Node);
+ void VisitDeclRefExpr(const DeclRefExpr *Node);
+ void VisitPredefinedExpr(const PredefinedExpr *Node);
+ void VisitCharacterLiteral(const CharacterLiteral *Node);
+ void VisitIntegerLiteral(const IntegerLiteral *Node);
+ void VisitFixedPointLiteral(const FixedPointLiteral *Node);
+ void VisitFloatingLiteral(const FloatingLiteral *Node);
+ void VisitStringLiteral(const StringLiteral *Str);
+ void VisitInitListExpr(const InitListExpr *ILE);
+ void VisitGenericSelectionExpr(const GenericSelectionExpr *E);
+ void VisitUnaryOperator(const UnaryOperator *Node);
+ void VisitUnaryExprOrTypeTraitExpr(const UnaryExprOrTypeTraitExpr *Node);
+ void VisitMemberExpr(const MemberExpr *Node);
+ void VisitExtVectorElementExpr(const ExtVectorElementExpr *Node);
+ void VisitBinaryOperator(const BinaryOperator *Node);
+ void VisitCompoundAssignOperator(const CompoundAssignOperator *Node);
+ void VisitAddrLabelExpr(const AddrLabelExpr *Node);
+ void VisitCXXNamedCastExpr(const CXXNamedCastExpr *Node);
+ void VisitCXXBoolLiteralExpr(const CXXBoolLiteralExpr *Node);
+ void VisitCXXThisExpr(const CXXThisExpr *Node);
+ void VisitCXXFunctionalCastExpr(const CXXFunctionalCastExpr *Node);
+ void VisitCXXUnresolvedConstructExpr(const CXXUnresolvedConstructExpr *Node);
+ void VisitCXXConstructExpr(const CXXConstructExpr *Node);
+ void VisitCXXBindTemporaryExpr(const CXXBindTemporaryExpr *Node);
+ void VisitCXXNewExpr(const CXXNewExpr *Node);
+ void VisitCXXDeleteExpr(const CXXDeleteExpr *Node);
+ void VisitMaterializeTemporaryExpr(const MaterializeTemporaryExpr *Node);
+ void VisitExprWithCleanups(const ExprWithCleanups *Node);
+ void VisitUnresolvedLookupExpr(const UnresolvedLookupExpr *Node);
+ void VisitSizeOfPackExpr(const SizeOfPackExpr *Node);
+ void
+ VisitCXXDependentScopeMemberExpr(const CXXDependentScopeMemberExpr *Node);
+ void VisitObjCAtCatchStmt(const ObjCAtCatchStmt *Node);
+ void VisitObjCEncodeExpr(const ObjCEncodeExpr *Node);
+ void VisitObjCMessageExpr(const ObjCMessageExpr *Node);
+ void VisitObjCBoxedExpr(const ObjCBoxedExpr *Node);
+ void VisitObjCSelectorExpr(const ObjCSelectorExpr *Node);
+ void VisitObjCProtocolExpr(const ObjCProtocolExpr *Node);
+ void VisitObjCPropertyRefExpr(const ObjCPropertyRefExpr *Node);
+ void VisitObjCSubscriptRefExpr(const ObjCSubscriptRefExpr *Node);
+ void VisitObjCIvarRefExpr(const ObjCIvarRefExpr *Node);
+ void VisitObjCBoolLiteralExpr(const ObjCBoolLiteralExpr *Node);
+
+ void VisitRValueReferenceType(const ReferenceType *T);
+ void VisitArrayType(const ArrayType *T);
+ void VisitConstantArrayType(const ConstantArrayType *T);
+ void VisitVariableArrayType(const VariableArrayType *T);
+ void VisitDependentSizedArrayType(const DependentSizedArrayType *T);
+ void VisitDependentSizedExtVectorType(const DependentSizedExtVectorType *T);
+ void VisitVectorType(const VectorType *T);
+ void VisitFunctionType(const FunctionType *T);
+ void VisitFunctionProtoType(const FunctionProtoType *T);
+ void VisitUnresolvedUsingType(const UnresolvedUsingType *T);
+ void VisitTypedefType(const TypedefType *T);
+ void VisitUnaryTransformType(const UnaryTransformType *T);
+ void VisitTagType(const TagType *T);
+ void VisitTemplateTypeParmType(const TemplateTypeParmType *T);
+ void VisitAutoType(const AutoType *T);
+ void VisitTemplateSpecializationType(const TemplateSpecializationType *T);
+ void VisitInjectedClassNameType(const InjectedClassNameType *T);
+ void VisitObjCInterfaceType(const ObjCInterfaceType *T);
+ void VisitPackExpansionType(const PackExpansionType *T);
+
+ void VisitLabelDecl(const LabelDecl *D);
+ void VisitTypedefDecl(const TypedefDecl *D);
+ void VisitEnumDecl(const EnumDecl *D);
+ void VisitRecordDecl(const RecordDecl *D);
+ void VisitEnumConstantDecl(const EnumConstantDecl *D);
+ void VisitIndirectFieldDecl(const IndirectFieldDecl *D);
+ void VisitFunctionDecl(const FunctionDecl *D);
+ void VisitFieldDecl(const FieldDecl *D);
+ void VisitVarDecl(const VarDecl *D);
+ void VisitBindingDecl(const BindingDecl *D);
+ void VisitCapturedDecl(const CapturedDecl *D);
+ void VisitImportDecl(const ImportDecl *D);
+ void VisitPragmaCommentDecl(const PragmaCommentDecl *D);
+ void VisitPragmaDetectMismatchDecl(const PragmaDetectMismatchDecl *D);
+ void VisitOMPDeclareReductionDecl(const OMPDeclareReductionDecl *D);
+ void VisitOMPRequiresDecl(const OMPRequiresDecl *D);
+ void VisitOMPCapturedExprDecl(const OMPCapturedExprDecl *D);
+ void VisitNamespaceDecl(const NamespaceDecl *D);
+ void VisitUsingDirectiveDecl(const UsingDirectiveDecl *D);
+ void VisitNamespaceAliasDecl(const NamespaceAliasDecl *D);
+ void VisitTypeAliasDecl(const TypeAliasDecl *D);
+ void VisitTypeAliasTemplateDecl(const TypeAliasTemplateDecl *D);
+ void VisitCXXRecordDecl(const CXXRecordDecl *D);
+ void VisitFunctionTemplateDecl(const FunctionTemplateDecl *D);
+ void VisitClassTemplateDecl(const ClassTemplateDecl *D);
+ void VisitBuiltinTemplateDecl(const BuiltinTemplateDecl *D);
+ void VisitVarTemplateDecl(const VarTemplateDecl *D);
+ void VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *D);
+ void VisitNonTypeTemplateParmDecl(const NonTypeTemplateParmDecl *D);
+ void VisitTemplateTemplateParmDecl(const TemplateTemplateParmDecl *D);
+ void VisitUsingDecl(const UsingDecl *D);
+ void VisitUnresolvedUsingTypenameDecl(const UnresolvedUsingTypenameDecl *D);
+ void VisitUnresolvedUsingValueDecl(const UnresolvedUsingValueDecl *D);
+ void VisitUsingShadowDecl(const UsingShadowDecl *D);
+ void VisitConstructorUsingShadowDecl(const ConstructorUsingShadowDecl *D);
+ void VisitLinkageSpecDecl(const LinkageSpecDecl *D);
+ void VisitAccessSpecDecl(const AccessSpecDecl *D);
+ void VisitFriendDecl(const FriendDecl *D);
+ void VisitObjCIvarDecl(const ObjCIvarDecl *D);
+ void VisitObjCMethodDecl(const ObjCMethodDecl *D);
+ void VisitObjCTypeParamDecl(const ObjCTypeParamDecl *D);
+ void VisitObjCCategoryDecl(const ObjCCategoryDecl *D);
+ void VisitObjCCategoryImplDecl(const ObjCCategoryImplDecl *D);
+ void VisitObjCProtocolDecl(const ObjCProtocolDecl *D);
+ void VisitObjCInterfaceDecl(const ObjCInterfaceDecl *D);
+ void VisitObjCImplementationDecl(const ObjCImplementationDecl *D);
+ void VisitObjCCompatibleAliasDecl(const ObjCCompatibleAliasDecl *D);
+ void VisitObjCPropertyDecl(const ObjCPropertyDecl *D);
+ void VisitObjCPropertyImplDecl(const ObjCPropertyImplDecl *D);
+ void VisitBlockDecl(const BlockDecl *D);
+
+private:
+ void dumpCXXTemporary(const CXXTemporary *Temporary);
+};
+
+} // namespace clang
+
+#endif // LLVM_CLANG_AST_TEXTNODEDUMPER_H
diff --git a/linux-x64/clang/include/clang/AST/Type.h b/linux-x64/clang/include/clang/AST/Type.h
index 369ce6d..5e1df2f 100644
--- a/linux-x64/clang/include/clang/AST/Type.h
+++ b/linux-x64/clang/include/clang/AST/Type.h
@@ -1,9 +1,8 @@
//===- Type.h - C Language Family Type Representation -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -95,9 +94,6 @@
enum { NumLowBitsAvailable = clang::TypeAlignmentInBits };
};
- template <>
- struct isPodLike<clang::QualType> { static const bool value = true; };
-
} // namespace llvm
namespace clang {
@@ -256,28 +252,24 @@
}
bool hasConst() const { return Mask & Const; }
- void setConst(bool flag) {
- Mask = (Mask & ~Const) | (flag ? Const : 0);
- }
+ bool hasOnlyConst() const { return Mask == Const; }
void removeConst() { Mask &= ~Const; }
void addConst() { Mask |= Const; }
bool hasVolatile() const { return Mask & Volatile; }
- void setVolatile(bool flag) {
- Mask = (Mask & ~Volatile) | (flag ? Volatile : 0);
- }
+ bool hasOnlyVolatile() const { return Mask == Volatile; }
void removeVolatile() { Mask &= ~Volatile; }
void addVolatile() { Mask |= Volatile; }
bool hasRestrict() const { return Mask & Restrict; }
- void setRestrict(bool flag) {
- Mask = (Mask & ~Restrict) | (flag ? Restrict : 0);
- }
+ bool hasOnlyRestrict() const { return Mask == Restrict; }
void removeRestrict() { Mask &= ~Restrict; }
void addRestrict() { Mask |= Restrict; }
bool hasCVRQualifiers() const { return getCVRQualifiers(); }
unsigned getCVRQualifiers() const { return Mask & CVRMask; }
+ unsigned getCVRUQualifiers() const { return Mask & (CVRMask | UMask); }
+
void setCVRQualifiers(unsigned mask) {
assert(!(mask & ~CVRMask) && "bitmask contains non-CVR bits");
Mask = (Mask & ~CVRMask) | mask;
@@ -984,9 +976,7 @@
void print(raw_ostream &OS, const PrintingPolicy &Policy,
const Twine &PlaceHolder = Twine(),
- unsigned Indentation = 0) const {
- print(split(), OS, Policy, PlaceHolder, Indentation);
- }
+ unsigned Indentation = 0) const;
static void print(SplitQualType split, raw_ostream &OS,
const PrintingPolicy &policy, const Twine &PlaceHolder,
@@ -1000,9 +990,7 @@
unsigned Indentation = 0);
void getAsStringInternal(std::string &Str,
- const PrintingPolicy &Policy) const {
- return getAsStringInternal(split(), Str, Policy);
- }
+ const PrintingPolicy &Policy) const;
static void getAsStringInternal(SplitQualType split, std::string &out,
const PrintingPolicy &policy) {
@@ -1133,6 +1121,12 @@
};
/// Check if this is a non-trivial type that would cause a C struct
+ /// transitively containing this type to be non-trivial. This function can be
+ /// used to determine whether a field of this type can be declared inside a C
+ /// union.
+ bool isNonTrivialPrimitiveCType(const ASTContext &Ctx) const;
+
+ /// Check if this is a non-trivial type that would cause a C struct
/// transitively containing this type to be non-trivial to copy and return the
/// kind.
PrimitiveCopyKind isNonTrivialToPrimitiveCopy() const;
@@ -1526,7 +1520,9 @@
///
/// C++ 8.3.5p4: The return type, the parameter type list and the
/// cv-qualifier-seq, [...], are part of the function type.
- unsigned TypeQuals : 4;
+ unsigned FastTypeQuals : Qualifiers::FastWidth;
+ /// Whether this function has extended Qualifiers.
+ unsigned HasExtQuals : 1;
/// The number of parameters this function has, not counting '...'.
/// According to [implimits] 8 bits should be enough here but this is
@@ -1992,7 +1988,7 @@
bool isObjCQualifiedClassType() const; // Class<foo>
bool isObjCObjectOrInterfaceType() const;
bool isObjCIdType() const; // id
-
+ bool isDecltypeType() const;
/// Was this type written with the special inert-in-ARC __unsafe_unretained
/// qualifier?
///
@@ -2046,6 +2042,13 @@
bool isQueueT() const; // OpenCL queue_t
bool isReserveIDT() const; // OpenCL reserve_id_t
+#define EXT_OPAQUE_TYPE(ExtType, Id, Ext) \
+ bool is##Id##Type() const;
+#include "clang/Basic/OpenCLExtensionTypes.def"
+ // Type defined in cl_intel_device_side_avc_motion_estimation OpenCL extension
+ bool isOCLIntelSubgroupAVCType() const;
+ bool isOCLExtOpaqueType() const; // Any OpenCL extension type
+
bool isPipeType() const; // OpenCL pipe type
bool isOpenCLSpecificType() const; // Any OpenCL specific type
@@ -2066,7 +2069,8 @@
STK_Integral,
STK_Floating,
STK_IntegralComplex,
- STK_FloatingComplex
+ STK_FloatingComplex,
+ STK_FixedPoint
};
/// Given that this is a scalar type, classify it.
@@ -2267,6 +2271,9 @@
/// ISO/IEC JTC1 SC22 WG14 N1169.
bool isFixedPointType() const;
+ /// Return true if this is a fixed point or integer type.
+ bool isFixedPointOrIntegerType() const;
+
/// Return true if this is a saturated fixed point type according to
/// ISO/IEC JTC1 SC22 WG14 N1169. This type can be signed or unsigned.
bool isSaturatedFixedPointType() const;
@@ -2392,6 +2399,9 @@
// OpenCL image types
#define IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) Id,
#include "clang/Basic/OpenCLImageTypes.def"
+// OpenCL extension types
+#define EXT_OPAQUE_TYPE(ExtType, Id, Ext) Id,
+#include "clang/Basic/OpenCLExtensionTypes.def"
// All other builtin types
#define BUILTIN_TYPE(Id, SingletonId) Id,
#define LAST_BUILTIN_TYPE(Id) LastKind = Id
@@ -3600,7 +3610,9 @@
FunctionTypeBits.ExtInfo = Info.Bits;
}
- unsigned getTypeQuals() const { return FunctionTypeBits.TypeQuals; }
+ Qualifiers getFastTypeQuals() const {
+ return Qualifiers::fromFastMask(FunctionTypeBits.FastTypeQuals);
+ }
public:
QualType getReturnType() const { return ResultType; }
@@ -3615,9 +3627,14 @@
CallingConv getCallConv() const { return getExtInfo().getCC(); }
ExtInfo getExtInfo() const { return ExtInfo(FunctionTypeBits.ExtInfo); }
- bool isConst() const { return getTypeQuals() & Qualifiers::Const; }
- bool isVolatile() const { return getTypeQuals() & Qualifiers::Volatile; }
- bool isRestrict() const { return getTypeQuals() & Qualifiers::Restrict; }
+
+ static_assert((~Qualifiers::FastMask & Qualifiers::CVRMask) == 0,
+ "Const, volatile and restrict are assumed to be a subset of "
+ "the fast qualifiers.");
+
+ bool isConst() const { return getFastTypeQuals().hasConst(); }
+ bool isVolatile() const { return getFastTypeQuals().hasVolatile(); }
+ bool isRestrict() const { return getFastTypeQuals().hasRestrict(); }
/// Determine the type of an expression that calls a function of
/// this type.
@@ -3678,7 +3695,7 @@
private llvm::TrailingObjects<
FunctionProtoType, QualType, FunctionType::FunctionTypeExtraBitfields,
FunctionType::ExceptionType, Expr *, FunctionDecl *,
- FunctionType::ExtParameterInfo> {
+ FunctionType::ExtParameterInfo, Qualifiers> {
friend class ASTContext; // ASTContext creates these.
friend TrailingObjects;
@@ -3706,6 +3723,10 @@
// an ExtParameterInfo for each of the parameters. Present if and
// only if hasExtParameterInfos() is true.
//
+ // * Optionally a Qualifiers object to represent extra qualifiers that can't
+ // be represented by FunctionTypeBitfields.FastTypeQuals. Present if and only
+ // if hasExtQualifiers() is true.
+ //
// The optional FunctionTypeExtraBitfields has to be before the data
// related to the exception specification since it contains the number
// of exception types.
@@ -3752,7 +3773,7 @@
FunctionType::ExtInfo ExtInfo;
bool Variadic : 1;
bool HasTrailingReturn : 1;
- unsigned char TypeQuals = 0;
+ Qualifiers TypeQuals;
RefQualifierKind RefQualifier = RQ_None;
ExceptionSpecInfo ExceptionSpec;
const ExtParameterInfo *ExtParameterInfos = nullptr;
@@ -3864,6 +3885,10 @@
return hasExtraBitfields(getExceptionSpecType());
}
+ bool hasExtQualifiers() const {
+ return FunctionTypeBits.HasExtQuals;
+ }
+
public:
unsigned getNumParams() const { return FunctionTypeBits.NumParams; }
@@ -3882,7 +3907,7 @@
EPI.Variadic = isVariadic();
EPI.HasTrailingReturn = hasTrailingReturn();
EPI.ExceptionSpec.Type = getExceptionSpecType();
- EPI.TypeQuals = static_cast<unsigned char>(getTypeQuals());
+ EPI.TypeQuals = getMethodQuals();
EPI.RefQualifier = getRefQualifier();
if (EPI.ExceptionSpec.Type == EST_Dynamic) {
EPI.ExceptionSpec.Exceptions = exceptions();
@@ -3992,7 +4017,12 @@
/// Whether this function prototype has a trailing return type.
bool hasTrailingReturn() const { return FunctionTypeBits.HasTrailingReturn; }
- unsigned getTypeQuals() const { return FunctionType::getTypeQuals(); }
+ Qualifiers getMethodQuals() const {
+ if (hasExtQualifiers())
+ return *getTrailingObjects<Qualifiers>();
+ else
+ return getFastTypeQuals();
+ }
/// Retrieve the ref-qualifier associated with this function type.
RefQualifierKind getRefQualifier() const {
@@ -4900,7 +4930,9 @@
return !isDependentType() || isCurrentInstantiation() || isTypeAlias();
}
- QualType desugar() const { return getCanonicalTypeInternal(); }
+ QualType desugar() const {
+ return isTypeAlias() ? getAliasedType() : getCanonicalTypeInternal();
+ }
void Profile(llvm::FoldingSetNodeID &ID, const ASTContext &Ctx) {
Profile(ID, Template, template_arguments(), Ctx);
@@ -6414,6 +6446,10 @@
return isObjCIdType() || isObjCClassType() || isObjCSelType();
}
+inline bool Type::isDecltypeType() const {
+ return isa<DecltypeType>(this);
+}
+
#define IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) \
inline bool Type::is##Id##Type() const { \
return isSpecificBuiltinType(BuiltinType::Id); \
@@ -6451,9 +6487,30 @@
return isa<PipeType>(CanonicalType);
}
+#define EXT_OPAQUE_TYPE(ExtType, Id, Ext) \
+ inline bool Type::is##Id##Type() const { \
+ return isSpecificBuiltinType(BuiltinType::Id); \
+ }
+#include "clang/Basic/OpenCLExtensionTypes.def"
+
+inline bool Type::isOCLIntelSubgroupAVCType() const {
+#define INTEL_SUBGROUP_AVC_TYPE(ExtType, Id) \
+ isOCLIntelSubgroupAVC##Id##Type() ||
+ return
+#include "clang/Basic/OpenCLExtensionTypes.def"
+ false; // end of boolean or operation
+}
+
+inline bool Type::isOCLExtOpaqueType() const {
+#define EXT_OPAQUE_TYPE(ExtType, Id, Ext) is##Id##Type() ||
+ return
+#include "clang/Basic/OpenCLExtensionTypes.def"
+ false; // end of boolean or operation
+}
+
inline bool Type::isOpenCLSpecificType() const {
return isSamplerT() || isEventT() || isImageType() || isClkEventT() ||
- isQueueT() || isReserveIDT() || isPipeType();
+ isQueueT() || isReserveIDT() || isPipeType() || isOCLExtOpaqueType();
}
inline bool Type::isTemplateTypeParmType() const {
@@ -6548,6 +6605,10 @@
return false;
}
+inline bool Type::isFixedPointOrIntegerType() const {
+ return isFixedPointType() || isIntegerType();
+}
+
inline bool Type::isSaturatedFixedPointType() const {
if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType)) {
return BT->getKind() >= BuiltinType::SatShortAccum &&
@@ -6653,6 +6714,24 @@
return type;
}
+/// Insertion operator for diagnostics. This allows sending Qualifiers into a
+/// diagnostic with <<.
+inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,
+ Qualifiers Q) {
+ DB.AddTaggedVal(Q.getAsOpaqueValue(),
+ DiagnosticsEngine::ArgumentKind::ak_qual);
+ return DB;
+}
+
+/// Insertion operator for partial diagnostics. This allows sending Qualifiers
+/// into a diagnostic with <<.
+inline const PartialDiagnostic &operator<<(const PartialDiagnostic &PD,
+ Qualifiers Q) {
+ PD.AddTaggedVal(Q.getAsOpaqueValue(),
+ DiagnosticsEngine::ArgumentKind::ak_qual);
+ return PD;
+}
+
/// Insertion operator for diagnostics. This allows sending QualType's into a
/// diagnostic with <<.
inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,
@@ -6775,6 +6854,8 @@
// Get the decimal string representation of a fixed point type, represented
// as a scaled integer.
+// TODO: At some point, we should change the arguments to instead just accept an
+// APFixedPoint instead of APSInt and scale.
void FixedPointValueToString(SmallVectorImpl<char> &Str, llvm::APSInt Val,
unsigned Scale);
diff --git a/linux-x64/clang/include/clang/AST/TypeLoc.h b/linux-x64/clang/include/clang/AST/TypeLoc.h
index 1e89e93..3b3eb1b 100644
--- a/linux-x64/clang/include/clang/AST/TypeLoc.h
+++ b/linux-x64/clang/include/clang/AST/TypeLoc.h
@@ -1,9 +1,8 @@
//===- TypeLoc.h - Type Source Info Wrapper ---------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/TypeLocNodes.def b/linux-x64/clang/include/clang/AST/TypeLocNodes.def
index 4590e48..c0dfe15 100644
--- a/linux-x64/clang/include/clang/AST/TypeLocNodes.def
+++ b/linux-x64/clang/include/clang/AST/TypeLocNodes.def
@@ -1,9 +1,8 @@
//===-- TypeLocNodes.def - Metadata about TypeLoc wrappers ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/TypeLocVisitor.h b/linux-x64/clang/include/clang/AST/TypeLocVisitor.h
index db5775a..ec78088 100644
--- a/linux-x64/clang/include/clang/AST/TypeLocVisitor.h
+++ b/linux-x64/clang/include/clang/AST/TypeLocVisitor.h
@@ -1,9 +1,8 @@
//===--- TypeLocVisitor.h - Visitor for TypeLoc subclasses ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/TypeNodes.def b/linux-x64/clang/include/clang/AST/TypeNodes.def
index 8638f94..d1e4300 100644
--- a/linux-x64/clang/include/clang/AST/TypeNodes.def
+++ b/linux-x64/clang/include/clang/AST/TypeNodes.def
@@ -1,9 +1,8 @@
//===-- TypeNodes.def - Metadata about Type AST nodes -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/TypeOrdering.h b/linux-x64/clang/include/clang/AST/TypeOrdering.h
index 7ea7807..6630105 100644
--- a/linux-x64/clang/include/clang/AST/TypeOrdering.h
+++ b/linux-x64/clang/include/clang/AST/TypeOrdering.h
@@ -1,9 +1,8 @@
//===-------------- TypeOrdering.h - Total ordering for types ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/AST/TypeVisitor.h b/linux-x64/clang/include/clang/AST/TypeVisitor.h
index 75fa0ec..8930ec8 100644
--- a/linux-x64/clang/include/clang/AST/TypeVisitor.h
+++ b/linux-x64/clang/include/clang/AST/TypeVisitor.h
@@ -1,9 +1,8 @@
//===--- TypeVisitor.h - Visitor for Type subclasses ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/UnresolvedSet.h b/linux-x64/clang/include/clang/AST/UnresolvedSet.h
index b62e9f1..cfc0b87 100644
--- a/linux-x64/clang/include/clang/AST/UnresolvedSet.h
+++ b/linux-x64/clang/include/clang/AST/UnresolvedSet.h
@@ -1,9 +1,8 @@
//===- UnresolvedSet.h - Unresolved sets of declarations --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/VTTBuilder.h b/linux-x64/clang/include/clang/AST/VTTBuilder.h
index 3a8a6a9..4acbc1f 100644
--- a/linux-x64/clang/include/clang/AST/VTTBuilder.h
+++ b/linux-x64/clang/include/clang/AST/VTTBuilder.h
@@ -1,9 +1,8 @@
//===- VTTBuilder.h - C++ VTT layout builder --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/AST/VTableBuilder.h b/linux-x64/clang/include/clang/AST/VTableBuilder.h
index 4a779db..43c8429 100644
--- a/linux-x64/clang/include/clang/AST/VTableBuilder.h
+++ b/linux-x64/clang/include/clang/AST/VTableBuilder.h
@@ -1,9 +1,8 @@
//===--- VTableBuilder.h - C++ vtable layout builder --------------*- C++ -*-=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/ASTMatchers/ASTMatchFinder.h b/linux-x64/clang/include/clang/ASTMatchers/ASTMatchFinder.h
index 324c02d..4c8dd87 100644
--- a/linux-x64/clang/include/clang/ASTMatchers/ASTMatchFinder.h
+++ b/linux-x64/clang/include/clang/ASTMatchers/ASTMatchFinder.h
@@ -1,9 +1,8 @@
//===--- ASTMatchFinder.h - Structural query framework ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/ASTMatchers/ASTMatchers.h b/linux-x64/clang/include/clang/ASTMatchers/ASTMatchers.h
index eb07ff7..4c62ea0 100644
--- a/linux-x64/clang/include/clang/ASTMatchers/ASTMatchers.h
+++ b/linux-x64/clang/include/clang/ASTMatchers/ASTMatchers.h
@@ -1,9 +1,8 @@
//===- ASTMatchers.h - Structural query framework ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -811,11 +810,28 @@
/// varDecl(hasType(pointerType(pointee(ignoringParens(functionType())))))
/// \endcode
/// would match the declaration for fp.
-AST_MATCHER_P(QualType, ignoringParens,
- internal::Matcher<QualType>, InnerMatcher) {
+AST_MATCHER_P_OVERLOAD(QualType, ignoringParens, internal::Matcher<QualType>,
+ InnerMatcher, 0) {
return InnerMatcher.matches(Node.IgnoreParens(), Finder, Builder);
}
+/// Overload \c ignoringParens for \c Expr.
+///
+/// Given
+/// \code
+/// const char* str = ("my-string");
+/// \endcode
+/// The matcher
+/// \code
+/// implicitCastExpr(hasSourceExpression(ignoringParens(stringLiteral())))
+/// \endcode
+/// would match the implicit cast resulting from the assignment.
+AST_MATCHER_P_OVERLOAD(Expr, ignoringParens, internal::Matcher<Expr>,
+ InnerMatcher, 1) {
+ const Expr *E = Node.IgnoreParens();
+ return InnerMatcher.matches(*E, Finder, Builder);
+}
+
/// Matches expressions that are instantiation-dependent even if it is
/// neither type- nor value-dependent.
///
@@ -1141,6 +1157,17 @@
/// matches 'm'.
extern const internal::VariadicDynCastAllOfMatcher<Decl, FieldDecl> fieldDecl;
+/// Matches indirect field declarations.
+///
+/// Given
+/// \code
+/// struct X { struct { int a; }; };
+/// \endcode
+/// indirectFieldDecl()
+/// matches 'a'.
+extern const internal::VariadicDynCastAllOfMatcher<Decl, IndirectFieldDecl>
+ indirectFieldDecl;
+
/// Matches function declarations.
///
/// Example matches f
@@ -1240,6 +1267,28 @@
/// \endcode
extern const internal::VariadicDynCastAllOfMatcher<Stmt, CallExpr> callExpr;
+/// Matches call expressions which were resolved using ADL.
+///
+/// Example matches y(x) but not y(42) or NS::y(x).
+/// \code
+/// namespace NS {
+/// struct X {};
+/// void y(X);
+/// }
+///
+/// void y(...);
+///
+/// void test() {
+/// NS::X x;
+/// y(x); // Matches
+/// NS::y(x); // Doesn't match
+/// y(42); // Doesn't match
+/// using NS::y;
+/// y(x); // Found by both unqualified lookup and ADL, doesn't match
+// }
+/// \endcode
+AST_MATCHER(CallExpr, usesADL) { return Node.usesADL(); }
+
/// Matches lambda expressions.
///
/// Example matches [&](){return 5;}
@@ -1574,6 +1623,18 @@
UnresolvedUsingTypenameDecl>
unresolvedUsingTypenameDecl;
+/// Matches a constant expression wrapper.
+///
+/// Example matches the constant in the case statement:
+/// (matcher = constantExpr())
+/// \code
+/// switch (a) {
+/// case 37: break;
+/// }
+/// \endcode
+extern const internal::VariadicDynCastAllOfMatcher<Stmt, ConstantExpr>
+ constantExpr;
+
/// Matches parentheses used in expressions.
///
/// Example matches (foo() + 1)
@@ -1747,6 +1808,14 @@
extern const internal::VariadicDynCastAllOfMatcher<Stmt, ObjCIvarRefExpr>
objcIvarRefExpr;
+/// Matches a reference to a block.
+///
+/// Example: matches "^{}":
+/// \code
+/// void f() { ^{}(); }
+/// \endcode
+extern const internal::VariadicDynCastAllOfMatcher<Stmt, BlockExpr> blockExpr;
+
/// Matches if statements.
///
/// Example matches 'if (x) {}'
@@ -2425,8 +2494,9 @@
/// alignof.
inline internal::Matcher<Stmt> alignOfExpr(
const internal::Matcher<UnaryExprOrTypeTraitExpr> &InnerMatcher) {
- return stmt(unaryExprOrTypeTraitExpr(allOf(
- ofKind(UETT_AlignOf), InnerMatcher)));
+ return stmt(unaryExprOrTypeTraitExpr(
+ allOf(anyOf(ofKind(UETT_AlignOf), ofKind(UETT_PreferredAlignOf)),
+ InnerMatcher)));
}
/// Same as unaryExprOrTypeTraitExpr, but only matching
@@ -2816,14 +2886,22 @@
InnerMatcher.matches(*UnderlyingDecl, Finder, Builder);
}
-/// Matches on the implicit object argument of a member call expression.
+/// Matches on the implicit object argument of a member call expression, after
+/// stripping off any parentheses or implicit casts.
///
-/// Example matches y.x()
-/// (matcher = cxxMemberCallExpr(on(hasType(cxxRecordDecl(hasName("Y"))))))
+/// Given
/// \code
-/// class Y { public: void x(); };
-/// void z() { Y y; y.x(); }
+/// class Y { public: void m(); };
+/// Y g();
+/// class X : public Y {};
+/// void z(Y y, X x) { y.m(); (g()).m(); x.m(); }
/// \endcode
+/// cxxMemberCallExpr(on(hasType(cxxRecordDecl(hasName("Y")))))
+/// matches `y.m()` and `(g()).m()`.
+/// cxxMemberCallExpr(on(hasType(cxxRecordDecl(hasName("X")))))
+/// matches `x.m()`.
+/// cxxMemberCallExpr(on(callExpr()))
+/// matches `(g()).m()`.
///
/// FIXME: Overload to allow directly matching types?
AST_MATCHER_P(CXXMemberCallExpr, on, internal::Matcher<Expr>,
@@ -3183,6 +3261,23 @@
.matches(Node, Finder, Builder);
}
+/// Matches on the implicit object argument of a member call expression. Unlike
+/// `on`, matches the argument directly without stripping away anything.
+///
+/// Given
+/// \code
+/// class Y { public: void m(); };
+/// Y g();
+/// class X : public Y { void g(); };
+/// void z(Y y, X x) { y.m(); x.m(); x.g(); (g()).m(); }
+/// \endcode
+/// cxxMemberCallExpr(onImplicitObjectArgument(hasType(
+/// cxxRecordDecl(hasName("Y")))))
+/// matches `y.m()`, `x.m()` and (g()).m(), but not `x.g()`.
+/// cxxMemberCallExpr(on(callExpr()))
+/// does not match `(g()).m()`, because the parens are not ignored.
+///
+/// FIXME: Overload to allow directly matching types?
AST_MATCHER_P(CXXMemberCallExpr, onImplicitObjectArgument,
internal::Matcher<Expr>, InnerMatcher) {
const Expr *ExprNode = Node.getImplicitObjectArgument();
@@ -3190,8 +3285,22 @@
InnerMatcher.matches(*ExprNode, Finder, Builder));
}
-/// Matches if the expression's type either matches the specified
-/// matcher, or is a pointer to a type that matches the InnerMatcher.
+/// Matches if the type of the expression's implicit object argument either
+/// matches the InnerMatcher, or is a pointer to a type that matches the
+/// InnerMatcher.
+///
+/// Given
+/// \code
+/// class Y { public: void m(); };
+/// class X : public Y { void g(); };
+/// void z() { Y y; y.m(); Y *p; p->m(); X x; x.m(); x.g(); }
+/// \endcode
+/// cxxMemberCallExpr(thisPointerType(hasDeclaration(
+/// cxxRecordDecl(hasName("Y")))))
+/// matches `y.m()`, `p->m()` and `x.m()`.
+/// cxxMemberCallExpr(thisPointerType(hasDeclaration(
+/// cxxRecordDecl(hasName("X")))))
+/// matches `x.g()`.
AST_MATCHER_P_OVERLOAD(CXXMemberCallExpr, thisPointerType,
internal::Matcher<QualType>, InnerMatcher, 0) {
return onImplicitObjectArgument(
@@ -3299,6 +3408,20 @@
InnerMatcher.matches(*Initializer, Finder, Builder));
}
+/// \brief Matches a static variable with local scope.
+///
+/// Example matches y (matcher = varDecl(isStaticLocal()))
+/// \code
+/// void f() {
+/// int x;
+/// static int y;
+/// }
+/// static int z;
+/// \endcode
+AST_MATCHER(VarDecl, isStaticLocal) {
+ return Node.isStaticLocal();
+}
+
/// Matches a variable declaration that has function scope and is a
/// non-static local variable.
///
@@ -3429,6 +3552,19 @@
*Node.getArg(N)->IgnoreParenImpCasts(), Finder, Builder));
}
+/// Matches the n'th item of an initializer list expression.
+///
+/// Example matches y.
+/// (matcher = initListExpr(hasInit(0, expr())))
+/// \code
+/// int x{y}.
+/// \endcode
+AST_MATCHER_P2(InitListExpr, hasInit, unsigned, N,
+ ast_matchers::internal::Matcher<Expr>, InnerMatcher) {
+ return N < Node.getNumInits() &&
+ InnerMatcher.matches(*Node.getInit(N), Finder, Builder);
+}
+
/// Matches declaration statements that contain a specific number of
/// declarations.
///
@@ -3484,7 +3620,7 @@
/// } catch (...) {
/// // ...
/// }
-/// /endcode
+/// \endcode
/// cxxCatchStmt(isCatchAll()) matches catch(...) but not catch(int).
AST_MATCHER(CXXCatchStmt, isCatchAll) {
return Node.getExceptionDecl() == nullptr;
@@ -4866,18 +5002,22 @@
return InnerMatcher.matches(*Node.getMemberDecl(), Finder, Builder);
}
-/// Matches a member expression where the object expression is
-/// matched by a given matcher.
+/// Matches a member expression where the object expression is matched by a
+/// given matcher. Implicit object expressions are included; that is, it matches
+/// use of implicit `this`.
///
/// Given
/// \code
-/// struct X { int m; };
-/// void f(X x) { x.m; m; }
+/// struct X {
+/// int m;
+/// int f(X x) { x.m; return m; }
+/// };
/// \endcode
-/// memberExpr(hasObjectExpression(hasType(cxxRecordDecl(hasName("X")))))))
-/// matches "x.m" and "m"
-/// with hasObjectExpression(...)
-/// matching "x" and the implicit object expression of "m" which has type X*.
+/// memberExpr(hasObjectExpression(hasType(cxxRecordDecl(hasName("X")))))
+/// matches `x.m`, but not `m`; however,
+/// memberExpr(hasObjectExpression(hasType(pointsTo(
+// cxxRecordDecl(hasName("X"))))))
+/// matches `m` (aka. `this->m`), but not `x.m`.
AST_POLYMORPHIC_MATCHER_P(
hasObjectExpression,
AST_POLYMORPHIC_SUPPORTED_TYPES(MemberExpr, UnresolvedMemberExpr,
diff --git a/linux-x64/clang/include/clang/ASTMatchers/ASTMatchersInternal.h b/linux-x64/clang/include/clang/ASTMatchers/ASTMatchersInternal.h
index 9d9f867..6a71d41 100644
--- a/linux-x64/clang/include/clang/ASTMatchers/ASTMatchersInternal.h
+++ b/linux-x64/clang/include/clang/ASTMatchers/ASTMatchersInternal.h
@@ -1,9 +1,8 @@
//===- ASTMatchersInternal.h - Structural query framework -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -261,7 +260,7 @@
}
private:
- SmallVector<BoundNodesMap, 16> Bindings;
+ SmallVector<BoundNodesMap, 1> Bindings;
};
class ASTMatchFinder;
diff --git a/linux-x64/clang/include/clang/ASTMatchers/ASTMatchersMacros.h b/linux-x64/clang/include/clang/ASTMatchers/ASTMatchersMacros.h
index 3080f86..1d96ba6 100644
--- a/linux-x64/clang/include/clang/ASTMatchers/ASTMatchersMacros.h
+++ b/linux-x64/clang/include/clang/ASTMatchers/ASTMatchersMacros.h
@@ -1,9 +1,8 @@
//===--- ASTMatchersMacros.h - Structural query framework -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/ASTMatchers/Dynamic/Diagnostics.h b/linux-x64/clang/include/clang/ASTMatchers/Dynamic/Diagnostics.h
index ccd9590..7dd3047 100644
--- a/linux-x64/clang/include/clang/ASTMatchers/Dynamic/Diagnostics.h
+++ b/linux-x64/clang/include/clang/ASTMatchers/Dynamic/Diagnostics.h
@@ -1,9 +1,8 @@
//===--- Diagnostics.h - Helper class for error diagnostics -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/ASTMatchers/Dynamic/Parser.h b/linux-x64/clang/include/clang/ASTMatchers/Dynamic/Parser.h
index 136265d..15e0aa7 100644
--- a/linux-x64/clang/include/clang/ASTMatchers/Dynamic/Parser.h
+++ b/linux-x64/clang/include/clang/ASTMatchers/Dynamic/Parser.h
@@ -1,9 +1,8 @@
//===- Parser.h - Matcher expression parser ---------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/ASTMatchers/Dynamic/Registry.h b/linux-x64/clang/include/clang/ASTMatchers/Dynamic/Registry.h
index ad8628b..215206b 100644
--- a/linux-x64/clang/include/clang/ASTMatchers/Dynamic/Registry.h
+++ b/linux-x64/clang/include/clang/ASTMatchers/Dynamic/Registry.h
@@ -1,9 +1,8 @@
//===- Registry.h - Matcher registry ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/ASTMatchers/Dynamic/VariantValue.h b/linux-x64/clang/include/clang/ASTMatchers/Dynamic/VariantValue.h
index 45ac3ca..511472a 100644
--- a/linux-x64/clang/include/clang/ASTMatchers/Dynamic/VariantValue.h
+++ b/linux-x64/clang/include/clang/ASTMatchers/Dynamic/VariantValue.h
@@ -1,8 +1,7 @@
//===--- VariantValue.h - Polymorphic value type -*- C++ -*-===/
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Analysis/Analyses/CFGReachabilityAnalysis.h b/linux-x64/clang/include/clang/Analysis/Analyses/CFGReachabilityAnalysis.h
index 49da681..16c0a7a 100644
--- a/linux-x64/clang/include/clang/Analysis/Analyses/CFGReachabilityAnalysis.h
+++ b/linux-x64/clang/include/clang/Analysis/Analyses/CFGReachabilityAnalysis.h
@@ -1,9 +1,8 @@
//===- CFGReachabilityAnalysis.h - Basic reachability analysis --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Analysis/Analyses/Consumed.h b/linux-x64/clang/include/clang/Analysis/Analyses/Consumed.h
index 5a70989..dec1ae3 100644
--- a/linux-x64/clang/include/clang/Analysis/Analyses/Consumed.h
+++ b/linux-x64/clang/include/clang/Analysis/Analyses/Consumed.h
@@ -1,9 +1,8 @@
//===- Consumed.h -----------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Analysis/Analyses/Dominators.h b/linux-x64/clang/include/clang/Analysis/Analyses/Dominators.h
index 021e98d..0015b0d 100644
--- a/linux-x64/clang/include/clang/Analysis/Analyses/Dominators.h
+++ b/linux-x64/clang/include/clang/Analysis/Analyses/Dominators.h
@@ -1,9 +1,8 @@
//- Dominators.h - Implementation of dominators tree for Clang CFG -*- C++ -*-//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Analysis/Analyses/ExprMutationAnalyzer.h b/linux-x64/clang/include/clang/Analysis/Analyses/ExprMutationAnalyzer.h
index edc6e00..9397c5d 100644
--- a/linux-x64/clang/include/clang/Analysis/Analyses/ExprMutationAnalyzer.h
+++ b/linux-x64/clang/include/clang/Analysis/Analyses/ExprMutationAnalyzer.h
@@ -1,9 +1,8 @@
//===---------- ExprMutationAnalyzer.h ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_ANALYSIS_ANALYSES_EXPRMUTATIONANALYZER_H
diff --git a/linux-x64/clang/include/clang/Analysis/Analyses/LiveVariables.h b/linux-x64/clang/include/clang/Analysis/Analyses/LiveVariables.h
index 0cb500f..a46c35e 100644
--- a/linux-x64/clang/include/clang/Analysis/Analyses/LiveVariables.h
+++ b/linux-x64/clang/include/clang/Analysis/Analyses/LiveVariables.h
@@ -1,9 +1,8 @@
//===- LiveVariables.h - Live Variable Analysis for Source CFGs -*- C++ --*-//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -88,9 +87,13 @@
/// before the given block-level expression (see runOnAllBlocks).
bool isLive(const Stmt *Loc, const Stmt *StmtVal);
- /// Print to stderr the liveness information associated with
+ /// Print to stderr the variable liveness information associated with
/// each basic block.
- void dumpBlockLiveness(const SourceManager& M);
+ void dumpBlockLiveness(const SourceManager &M);
+
+ /// Print to stderr the statement liveness information associated with
+ /// each basic block.
+ void dumpStmtLiveness(const SourceManager &M);
void runOnAllBlocks(Observer &obs);
diff --git a/linux-x64/clang/include/clang/Analysis/Analyses/PostOrderCFGView.h b/linux-x64/clang/include/clang/Analysis/Analyses/PostOrderCFGView.h
index 7df3dc6..08fda09 100644
--- a/linux-x64/clang/include/clang/Analysis/Analyses/PostOrderCFGView.h
+++ b/linux-x64/clang/include/clang/Analysis/Analyses/PostOrderCFGView.h
@@ -1,9 +1,8 @@
//===- PostOrderCFGView.h - Post order view of CFG blocks -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Analysis/Analyses/ReachableCode.h b/linux-x64/clang/include/clang/Analysis/Analyses/ReachableCode.h
index d79f1b0..514b945 100644
--- a/linux-x64/clang/include/clang/Analysis/Analyses/ReachableCode.h
+++ b/linux-x64/clang/include/clang/Analysis/Analyses/ReachableCode.h
@@ -1,9 +1,8 @@
//===- ReachableCode.h -----------------------------------------*- C++ --*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafety.h b/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafety.h
index c72db6f..2f0c68c 100644
--- a/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafety.h
+++ b/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafety.h
@@ -1,9 +1,8 @@
//===- ThreadSafety.h -------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -129,9 +128,10 @@
/// \param Kind -- the capability's name parameter (role, mutex, etc).
/// \param LockName -- A StringRef name for the lock expression, to be printed
/// in the error message.
+ /// \param LocLocked -- The location of the first lock expression.
/// \param Loc -- The location of the second lock expression.
virtual void handleDoubleLock(StringRef Kind, Name LockName,
- SourceLocation Loc) {}
+ SourceLocation LocLocked, SourceLocation Loc) {}
/// Warn about situations where a mutex is sometimes held and sometimes not.
/// The three situations are:
diff --git a/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyCommon.h b/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyCommon.h
index 422a1db..4a58fe8 100644
--- a/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyCommon.h
+++ b/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyCommon.h
@@ -1,9 +1,8 @@
//===- ThreadSafetyCommon.h -------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyLogical.h b/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyLogical.h
index 2508af1..8d938c1 100644
--- a/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyLogical.h
+++ b/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyLogical.h
@@ -1,9 +1,8 @@
//===- ThreadSafetyLogical.h -----------------------------------*- C++ --*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// This file defines a representation for logical expressions with SExpr leaves
diff --git a/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyOps.def b/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyOps.def
index 0d2458b..fc4881a 100644
--- a/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyOps.def
+++ b/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyOps.def
@@ -1,9 +1,8 @@
//===- ThreadSafetyTIL.h ---------------------------------------*- C++ --*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h b/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h
index c106a9a..ca2193d 100644
--- a/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h
+++ b/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h
@@ -1,9 +1,8 @@
//===- ThreadSafetyTIL.h ----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT in the llvm repository for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyTraverse.h b/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyTraverse.h
index 32aadf5..e81c00d 100644
--- a/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyTraverse.h
+++ b/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyTraverse.h
@@ -1,9 +1,8 @@
//===- ThreadSafetyTraverse.h -----------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h b/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h
index 1658393..e3b6e61 100644
--- a/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h
+++ b/linux-x64/clang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h
@@ -1,9 +1,8 @@
//===- ThreadSafetyUtil.h ---------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Analysis/Analyses/UninitializedValues.h b/linux-x64/clang/include/clang/Analysis/Analyses/UninitializedValues.h
index 79d89e0..479be1f 100644
--- a/linux-x64/clang/include/clang/Analysis/Analyses/UninitializedValues.h
+++ b/linux-x64/clang/include/clang/Analysis/Analyses/UninitializedValues.h
@@ -1,9 +1,8 @@
//=- UninitializedValues.h - Finding uses of uninitialized values -*- C++ -*-=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Analysis/AnalysisDeclContext.h b/linux-x64/clang/include/clang/Analysis/AnalysisDeclContext.h
index 490d2ce..d42432a 100644
--- a/linux-x64/clang/include/clang/Analysis/AnalysisDeclContext.h
+++ b/linux-x64/clang/include/clang/Analysis/AnalysisDeclContext.h
@@ -1,9 +1,8 @@
// AnalysisDeclContext.h - Analysis context for Path Sens analysis -*- C++ -*-//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Analysis/AnalysisDiagnostic.h b/linux-x64/clang/include/clang/Analysis/AnalysisDiagnostic.h
index 8d28971..fd5f2ff 100644
--- a/linux-x64/clang/include/clang/Analysis/AnalysisDiagnostic.h
+++ b/linux-x64/clang/include/clang/Analysis/AnalysisDiagnostic.h
@@ -1,28 +1,14 @@
//===--- DiagnosticAnalysis.h - Diagnostics for libanalysis -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_ANALYSIS_ANALYSISDIAGNOSTIC_H
#define LLVM_CLANG_ANALYSIS_ANALYSISDIAGNOSTIC_H
-#include "clang/Basic/Diagnostic.h"
-
-namespace clang {
- namespace diag {
- enum {
-#define DIAG(ENUM,FLAGS,DEFAULT_MAPPING,DESC,GROUP,\
- SFINAE,NOWERROR,SHOWINSYSHEADER,CATEGORY) ENUM,
-#define ANALYSISSTART
-#include "clang/Basic/DiagnosticAnalysisKinds.inc"
-#undef DIAG
- NUM_BUILTIN_ANALYSIS_DIAGNOSTICS
- };
- } // end namespace diag
-} // end namespace clang
+#include "clang/Basic/DiagnosticAnalysis.h"
#endif
diff --git a/linux-x64/clang/include/clang/Analysis/AnyCall.h b/linux-x64/clang/include/clang/Analysis/AnyCall.h
new file mode 100644
index 0000000..a9098ad
--- /dev/null
+++ b/linux-x64/clang/include/clang/Analysis/AnyCall.h
@@ -0,0 +1,208 @@
+//=== AnyCall.h - Abstraction over different callables --------*- C++ -*--//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// A utility class for performing generic operations over different callables.
+//
+//===----------------------------------------------------------------------===//
+//
+#ifndef LLVM_CLANG_ANALYSIS_ANY_CALL_H
+#define LLVM_CLANG_ANALYSIS_ANY_CALL_H
+
+#include "clang/AST/Decl.h"
+#include "clang/AST/ExprCXX.h"
+#include "clang/AST/ExprObjC.h"
+
+namespace clang {
+
+/// An instance of this class corresponds to a call.
+/// It might be a syntactically-concrete call, done as a part of evaluating an
+/// expression, or it may be an abstract callee with no associated expression.
+class AnyCall {
+public:
+ enum Kind {
+ /// A function, function pointer, or a C++ method call
+ Function,
+
+ /// A call to an Objective-C method
+ ObjCMethod,
+
+ /// A call to an Objective-C block
+ Block,
+
+ /// An implicit C++ destructor call (called implicitly
+ /// or by operator 'delete')
+ Destructor,
+
+ /// An implicit or explicit C++ constructor call
+ Constructor,
+
+ /// A C++ allocation function call (operator `new`), via C++ new-expression
+ Allocator,
+
+ /// A C++ deallocation function call (operator `delete`), via C++
+ /// delete-expression
+ Deallocator
+ };
+
+private:
+ /// Either expression or declaration (but not both at the same time)
+ /// can be null.
+
+ /// Call expression, is null when is not known (then declaration is non-null),
+ /// or for implicit destructor calls (when no expression exists.)
+ const Expr *E = nullptr;
+
+ /// Corresponds to a statically known declaration of the called function,
+ /// or null if it is not known (e.g. for a function pointer).
+ const Decl *D = nullptr;
+ Kind K;
+
+public:
+ AnyCall(const CallExpr *CE) : E(CE) {
+ D = CE->getCalleeDecl();
+ K = (CE->getCallee()->getType()->getAs<BlockPointerType>()) ? Block
+ : Function;
+ if (D && ((K == Function && !isa<FunctionDecl>(D)) ||
+ (K == Block && !isa<BlockDecl>(D))))
+ D = nullptr;
+ }
+
+ AnyCall(const ObjCMessageExpr *ME)
+ : E(ME), D(ME->getMethodDecl()), K(ObjCMethod) {}
+
+ AnyCall(const CXXNewExpr *NE)
+ : E(NE), D(NE->getOperatorNew()), K(Allocator) {}
+
+ AnyCall(const CXXDeleteExpr *NE)
+ : E(NE), D(NE->getOperatorDelete()), K(Deallocator) {}
+
+ AnyCall(const CXXConstructExpr *NE)
+ : E(NE), D(NE->getConstructor()), K(Constructor) {}
+
+ AnyCall(const CXXDestructorDecl *D) : E(nullptr), D(D), K(Destructor) {}
+
+ AnyCall(const CXXConstructorDecl *D) : E(nullptr), D(D), K(Constructor) {}
+
+ AnyCall(const ObjCMethodDecl *D) : E(nullptr), D(D), K(ObjCMethod) {}
+
+ AnyCall(const FunctionDecl *D) : E(nullptr), D(D) {
+ if (isa<CXXConstructorDecl>(D)) {
+ K = Constructor;
+ } else if (isa <CXXDestructorDecl>(D)) {
+ K = Destructor;
+ } else {
+ K = Function;
+ }
+
+ }
+
+ /// If {@code E} is a generic call (to ObjC method /function/block/etc),
+ /// return a constructed {@code AnyCall} object. Return None otherwise.
+ static Optional<AnyCall> forExpr(const Expr *E) {
+ if (const auto *ME = dyn_cast<ObjCMessageExpr>(E)) {
+ return AnyCall(ME);
+ } else if (const auto *CE = dyn_cast<CallExpr>(E)) {
+ return AnyCall(CE);
+ } else if (const auto *CXNE = dyn_cast<CXXNewExpr>(E)) {
+ return AnyCall(CXNE);
+ } else if (const auto *CXDE = dyn_cast<CXXDeleteExpr>(E)) {
+ return AnyCall(CXDE);
+ } else if (const auto *CXCE = dyn_cast<CXXConstructExpr>(E)) {
+ return AnyCall(CXCE);
+ } else {
+ return None;
+ }
+ }
+
+ /// If {@code D} is a callable (Objective-C method or a function), return
+ /// a constructed {@code AnyCall} object. Return None otherwise.
+ // FIXME: block support.
+ static Optional<AnyCall> forDecl(const Decl *D) {
+ if (const auto *FD = dyn_cast<FunctionDecl>(D)) {
+ return AnyCall(FD);
+ } else if (const auto *MD = dyn_cast<ObjCMethodDecl>(D)) {
+ return AnyCall(MD);
+ }
+ return None;
+ }
+
+ /// \returns formal parameters for direct calls (including virtual calls)
+ ArrayRef<ParmVarDecl *> parameters() const {
+ if (!D)
+ return None;
+
+ if (const auto *FD = dyn_cast<FunctionDecl>(D)) {
+ return FD->parameters();
+ } else if (const auto *MD = dyn_cast<ObjCMethodDecl>(D)) {
+ return MD->parameters();
+ } else if (const auto *BD = dyn_cast<BlockDecl>(D)) {
+ return BD->parameters();
+ } else {
+ return None;
+ }
+ }
+
+ using param_const_iterator = ArrayRef<ParmVarDecl *>::const_iterator;
+ param_const_iterator param_begin() const { return parameters().begin(); }
+ param_const_iterator param_end() const { return parameters().end(); }
+ size_t param_size() const { return parameters().size(); }
+ bool param_empty() const { return parameters().empty(); }
+
+ QualType getReturnType(ASTContext &Ctx) const {
+ switch (K) {
+ case Function:
+ if (E)
+ return cast<CallExpr>(E)->getCallReturnType(Ctx);
+ return cast<FunctionDecl>(D)->getReturnType();
+ case ObjCMethod:
+ if (E)
+ return cast<ObjCMessageExpr>(E)->getCallReturnType(Ctx);
+ return cast<ObjCMethodDecl>(D)->getReturnType();
+ case Block:
+ // FIXME: BlockDecl does not know its return type,
+ // hence the asymmetry with the function and method cases above.
+ return cast<CallExpr>(E)->getCallReturnType(Ctx);
+ case Destructor:
+ case Constructor:
+ case Allocator:
+ case Deallocator:
+ return cast<FunctionDecl>(D)->getReturnType();
+ }
+ }
+
+ /// \returns Function identifier if it is a named declaration,
+ /// {@code nullptr} otherwise.
+ const IdentifierInfo *getIdentifier() const {
+ if (const auto *ND = dyn_cast_or_null<NamedDecl>(D))
+ return ND->getIdentifier();
+ return nullptr;
+ }
+
+ const Decl *getDecl() const {
+ return D;
+ }
+
+ const Expr *getExpr() const {
+ return E;
+ }
+
+ Kind getKind() const {
+ return K;
+ }
+
+ void dump() const {
+ if (E)
+ E->dump();
+ if (D)
+ D->dump();
+ }
+};
+
+}
+
+#endif // LLVM_CLANG_ANALYSIS_ANY_CALL_H
diff --git a/linux-x64/clang/include/clang/Analysis/BodyFarm.h b/linux-x64/clang/include/clang/Analysis/BodyFarm.h
index ff0859b..72607f8 100644
--- a/linux-x64/clang/include/clang/Analysis/BodyFarm.h
+++ b/linux-x64/clang/include/clang/Analysis/BodyFarm.h
@@ -1,9 +1,8 @@
//== BodyFarm.h - Factory for conjuring up fake bodies -------------*- C++ -*-//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Analysis/CFG.h b/linux-x64/clang/include/clang/Analysis/CFG.h
index bf81d83..dc83a99 100644
--- a/linux-x64/clang/include/clang/Analysis/CFG.h
+++ b/linux-x64/clang/include/clang/Analysis/CFG.h
@@ -1,9 +1,8 @@
//===- CFG.h - Classes for representing and building CFGs -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Analysis/CFGStmtMap.h b/linux-x64/clang/include/clang/Analysis/CFGStmtMap.h
index 78e637d..8cf0237 100644
--- a/linux-x64/clang/include/clang/Analysis/CFGStmtMap.h
+++ b/linux-x64/clang/include/clang/Analysis/CFGStmtMap.h
@@ -1,9 +1,8 @@
//===--- CFGStmtMap.h - Map from Stmt* to CFGBlock* -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Analysis/CallGraph.h b/linux-x64/clang/include/clang/Analysis/CallGraph.h
index ae0f392..49c0449 100644
--- a/linux-x64/clang/include/clang/Analysis/CallGraph.h
+++ b/linux-x64/clang/include/clang/Analysis/CallGraph.h
@@ -1,9 +1,8 @@
//===- CallGraph.h - AST-based Call graph -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -131,6 +130,7 @@
bool TraverseStmt(Stmt *S) { return true; }
bool shouldWalkTypesOfTypeLocs() const { return false; }
+ bool shouldVisitTemplateInstantiations() const { return true; }
private:
/// Add the given declaration to the call graph.
diff --git a/linux-x64/clang/include/clang/Analysis/CloneDetection.h b/linux-x64/clang/include/clang/Analysis/CloneDetection.h
index fadca13..db827c3 100644
--- a/linux-x64/clang/include/clang/Analysis/CloneDetection.h
+++ b/linux-x64/clang/include/clang/Analysis/CloneDetection.h
@@ -1,9 +1,8 @@
//===--- CloneDetection.h - Finds code clones in an AST ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Analysis/CodeInjector.h b/linux-x64/clang/include/clang/Analysis/CodeInjector.h
index 2c87cde..a59dc0a 100644
--- a/linux-x64/clang/include/clang/Analysis/CodeInjector.h
+++ b/linux-x64/clang/include/clang/Analysis/CodeInjector.h
@@ -1,9 +1,8 @@
//===-- CodeInjector.h ------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Analysis/ConstructionContext.h b/linux-x64/clang/include/clang/Analysis/ConstructionContext.h
index 9c62bac..f1564f9 100644
--- a/linux-x64/clang/include/clang/Analysis/ConstructionContext.h
+++ b/linux-x64/clang/include/clang/Analysis/ConstructionContext.h
@@ -1,9 +1,8 @@
//===- ConstructionContext.h - CFG constructor information ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -19,6 +18,7 @@
#include "clang/Analysis/Support/BumpVector.h"
#include "clang/AST/ExprCXX.h"
+#include "clang/AST/ExprObjC.h"
namespace clang {
diff --git a/linux-x64/clang/include/clang/Analysis/DomainSpecific/CocoaConventions.h b/linux-x64/clang/include/clang/Analysis/DomainSpecific/CocoaConventions.h
index 9326d1a..8531d17 100644
--- a/linux-x64/clang/include/clang/Analysis/DomainSpecific/CocoaConventions.h
+++ b/linux-x64/clang/include/clang/Analysis/DomainSpecific/CocoaConventions.h
@@ -1,9 +1,8 @@
//===- CocoaConventions.h - Special handling of Cocoa conventions -*- C++ -*--//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Analysis/DomainSpecific/ObjCNoReturn.h b/linux-x64/clang/include/clang/Analysis/DomainSpecific/ObjCNoReturn.h
index e304d83..80d7cb8 100644
--- a/linux-x64/clang/include/clang/Analysis/DomainSpecific/ObjCNoReturn.h
+++ b/linux-x64/clang/include/clang/Analysis/DomainSpecific/ObjCNoReturn.h
@@ -1,9 +1,8 @@
//= ObjCNoReturn.h - Handling of Cocoa APIs known not to return --*- C++ -*---//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Analysis/FlowSensitive/DataflowValues.h b/linux-x64/clang/include/clang/Analysis/FlowSensitive/DataflowValues.h
index f86b2b0..7097533 100644
--- a/linux-x64/clang/include/clang/Analysis/FlowSensitive/DataflowValues.h
+++ b/linux-x64/clang/include/clang/Analysis/FlowSensitive/DataflowValues.h
@@ -1,9 +1,8 @@
//===--- DataflowValues.h - Data structure for dataflow values --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Analysis/ProgramPoint.h b/linux-x64/clang/include/clang/Analysis/ProgramPoint.h
index d78174e..623f5dc 100644
--- a/linux-x64/clang/include/clang/Analysis/ProgramPoint.h
+++ b/linux-x64/clang/include/clang/Analysis/ProgramPoint.h
@@ -1,9 +1,8 @@
//==- ProgramPoint.h - Program Points for Path-Sensitive Analysis --*- C++ -*-//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -778,9 +777,6 @@
};
-template <>
-struct isPodLike<clang::ProgramPoint> { static const bool value = true; };
-
} // end namespace llvm
#endif
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/RetainSummaryManager.h b/linux-x64/clang/include/clang/Analysis/RetainSummaryManager.h
similarity index 69%
rename from linux-x64/clang/include/clang/StaticAnalyzer/Core/RetainSummaryManager.h
rename to linux-x64/clang/include/clang/Analysis/RetainSummaryManager.h
index fc506ae..6acefb5 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/RetainSummaryManager.h
+++ b/linux-x64/clang/include/clang/Analysis/RetainSummaryManager.h
@@ -1,9 +1,8 @@
//=== RetainSummaryManager.h - Summaries for reference counting ---*- C++ -*--//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -13,32 +12,45 @@
//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_CLANG_ANALYZER_CORE_RETAINSUMMARYMANAGER
-#define LLVM_CLANG_ANALYZER_CORE_RETAINSUMMARYMANAGER
+#ifndef LLVM_CLANG_ANALYSIS_RETAINSUMMARY_MANAGER_H
+#define LLVM_CLANG_ANALYSIS_RETAINSUMMARY_MANAGER_H
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/FoldingSet.h"
+#include "llvm/ADT/ImmutableMap.h"
#include "clang/AST/Attr.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/ParentMap.h"
+#include "clang/Analysis/AnyCall.h"
#include "clang/Analysis/SelectorExtras.h"
-#include "clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h"
#include "llvm/ADT/STLExtras.h"
-//===----------------------------------------------------------------------===//
-// Adapters for FoldingSet.
-//===----------------------------------------------------------------------===//
-
using namespace clang;
-using namespace ento;
namespace clang {
namespace ento {
-/// An ArgEffect summarizes the retain count behavior on an argument or receiver
-/// to a function or method.
-enum ArgEffect {
+/// Determines the object kind of a tracked object.
+enum class ObjKind {
+ /// Indicates that the tracked object is a CF object.
+ CF,
+
+ /// Indicates that the tracked object is an Objective-C object.
+ ObjC,
+
+ /// Indicates that the tracked object could be a CF or Objective-C object.
+ AnyObj,
+
+ /// Indicates that the tracked object is a generalized object.
+ Generalized,
+
+ /// Indicates that the tracking object is a descendant of a
+ /// referenced-counted OSObject, used in the Darwin kernel.
+ OS
+};
+
+enum ArgEffectKind {
/// There is no effect.
DoNothing,
@@ -46,44 +58,35 @@
/// the referenced object.
Autorelease,
- /// The argument is treated as if an -dealloc message had been sent to
- /// the referenced object.
+ /// The argument is treated as if the referenced object was deallocated.
Dealloc,
- /// The argument has its reference count decreased by 1. This is as
- /// if CFRelease has been called on the argument.
+ /// The argument has its reference count decreased by 1.
DecRef,
- /// The argument has its reference count decreased by 1. This is as
- /// if a -release message has been sent to the argument. This differs
- /// in behavior from DecRef when GC is enabled.
- DecRefMsg,
-
/// The argument has its reference count decreased by 1 to model
/// a transferred bridge cast under ARC.
DecRefBridgedTransferred,
- /// The argument has its reference count increased by 1. This is as
- /// if a -retain message has been sent to the argument. This differs
- /// in behavior from IncRef when GC is enabled.
- IncRefMsg,
-
- /// The argument has its reference count increased by 1. This is as
- /// if CFRetain has been called on the argument.
+ /// The argument has its reference count increased by 1.
IncRef,
- /// The argument acts as if has been passed to CFMakeCollectable, which
- /// transfers the object to the Garbage Collector under GC.
- MakeCollectable,
-
/// The argument is a pointer to a retain-counted object; on exit, the new
- /// value of the pointer is a +0 value or NULL.
+ /// value of the pointer is a +0 value.
UnretainedOutParameter,
/// The argument is a pointer to a retain-counted object; on exit, the new
- /// value of the pointer is a +1 value or NULL.
+ /// value of the pointer is a +1 value.
RetainedOutParameter,
+ /// The argument is a pointer to a retain-counted object; on exit, the new
+ /// value of the pointer is a +1 value iff the return code is zero.
+ RetainedOutParameterOnZero,
+
+ /// The argument is a pointer to a retain-counted object; on exit, the new
+ /// value of the pointer is a +1 value iff the return code is non-zero.
+ RetainedOutParameterOnNonZero,
+
/// The argument is treated as potentially escaping, meaning that
/// even when its reference count hits 0 it should be treated as still
/// possibly being alive as someone else *may* be holding onto the object.
@@ -108,13 +111,27 @@
/// count of the argument and all typestate tracking on that argument
/// should cease.
DecRefAndStopTrackingHard,
+};
- /// Performs the combined functionality of DecRefMsg and StopTrackingHard.
- ///
- /// The models the effect that the called function decrements the reference
- /// count of the argument and all typestate tracking on that argument
- /// should cease.
- DecRefMsgAndStopTrackingHard
+/// An ArgEffect summarizes the retain count behavior on an argument or receiver
+/// to a function or method.
+class ArgEffect {
+ ArgEffectKind K;
+ ObjKind O;
+public:
+ explicit ArgEffect(ArgEffectKind K = DoNothing, ObjKind O = ObjKind::AnyObj)
+ : K(K), O(O) {}
+
+ ArgEffectKind getKind() const { return K; }
+ ObjKind getObjKind() const { return O; }
+
+ ArgEffect withKind(ArgEffectKind NewK) {
+ return ArgEffect(NewK, O);
+ }
+
+ bool operator==(const ArgEffect &Other) const {
+ return K == Other.K && O == Other.O;
+ }
};
/// RetEffect summarizes a call's retain/release behavior with respect
@@ -125,46 +142,31 @@
/// Indicates that no retain count information is tracked for
/// the return value.
NoRet,
+
/// Indicates that the returned value is an owned (+1) symbol.
OwnedSymbol,
+
/// Indicates that the returned value is an object with retain count
/// semantics but that it is not owned (+0). This is the default
/// for getters, etc.
NotOwnedSymbol,
- /// Indicates that the object is not owned and controlled by the
- /// Garbage collector.
- GCNotOwnedSymbol,
+
/// Indicates that the return value is an owned object when the
/// receiver is also a tracked object.
OwnedWhenTrackedReceiver,
+
// Treat this function as returning a non-tracked symbol even if
// the function has been inlined. This is used where the call
- // site summary is more presise than the summary indirectly produced
+ // site summary is more precise than the summary indirectly produced
// by inlining the function
NoRetHard
};
- /// Determines the object kind of a tracked object.
- enum ObjKind {
- /// Indicates that the tracked object is a CF object. This is
- /// important between GC and non-GC code.
- CF,
- /// Indicates that the tracked object is an Objective-C object.
- ObjC,
- /// Indicates that the tracked object could be a CF or Objective-C object.
- AnyObj,
- /// Indicates that the tracked object is a generalized object.
- Generalized,
-
- /// A descendant of OSObject.
- OS
- };
-
private:
Kind K;
ObjKind O;
- RetEffect(Kind k, ObjKind o = AnyObj) : K(k), O(o) {}
+ RetEffect(Kind k, ObjKind o = ObjKind::AnyObj) : K(k), O(o) {}
public:
Kind getKind() const { return K; }
@@ -184,7 +186,7 @@
}
static RetEffect MakeOwnedWhenTrackedReceiver() {
- return RetEffect(OwnedWhenTrackedReceiver, ObjC);
+ return RetEffect(OwnedWhenTrackedReceiver, ObjKind::ObjC);
}
static RetEffect MakeOwned(ObjKind o) {
@@ -193,9 +195,6 @@
static RetEffect MakeNotOwned(ObjKind o) {
return RetEffect(NotOwnedSymbol, o);
}
- static RetEffect MakeGCNotOwned() {
- return RetEffect(GCNotOwnedSymbol, ObjC);
- }
static RetEffect MakeNoRet() {
return RetEffect(NoRet);
}
@@ -204,38 +203,6 @@
}
};
-/// Encapsulates the retain count semantics on the arguments, return value,
-/// and receiver (if any) of a function/method call.
-///
-/// Note that construction of these objects is not highly efficient. That
-/// is okay for clients where creating these objects isn't really a bottleneck.
-/// The purpose of the API is to provide something simple. The actual
-/// static analyzer checker that implements retain/release typestate
-/// tracking uses something more efficient.
-class CallEffects {
- llvm::SmallVector<ArgEffect, 10> Args;
- RetEffect Ret;
- ArgEffect Receiver;
-
- CallEffects(const RetEffect &R) : Ret(R) {}
-
-public:
- /// Returns the argument effects for a call.
- ArrayRef<ArgEffect> getArgs() const { return Args; }
-
- /// Returns the effects on the receiver.
- ArgEffect getReceiver() const { return Receiver; }
-
- /// Returns the effect on the return value.
- RetEffect getReturnValue() const { return Ret; }
-
- /// Return the CallEfect for a given Objective-C method.
- static CallEffects getEffect(const ObjCMethodDecl *MD);
-
- /// Return the CallEfect for a given C/C++ function.
- static CallEffects getEffect(const FunctionDecl *FD);
-};
-
/// A key identifying a summary.
class ObjCSummaryKey {
IdentifierInfo* II;
@@ -257,12 +224,17 @@
} // end namespace ento
} // end namespace clang
+using namespace ento;
namespace llvm {
+//===----------------------------------------------------------------------===//
+// Adapters for FoldingSet.
+//===----------------------------------------------------------------------===//
template <> struct FoldingSetTrait<ArgEffect> {
static inline void Profile(const ArgEffect X, FoldingSetNodeID &ID) {
- ID.AddInteger((unsigned) X);
+ ID.AddInteger((unsigned) X.getKind());
+ ID.AddInteger((unsigned) X.getObjKind());
}
};
template <> struct FoldingSetTrait<RetEffect> {
@@ -369,11 +341,18 @@
/// This is only meaningful if the summary applies to an ObjCMessageExpr*.
ArgEffect getReceiverEffect() const { return Receiver; }
+ /// \return the effect on the "this" receiver of the method call.
+ /// This is only meaningful if the summary applies to CXXMethodDecl*.
ArgEffect getThisEffect() const { return This; }
+ ArgEffect getDefaultEffect() const { return DefaultArgEffect; }
+
+ /// Set the effect of the method on "this".
+ void setThisEffect(ArgEffect e) { This = e; }
+
bool isNoop() const {
- return Ret == RetEffect::MakeNoRet() && Receiver == DoNothing
- && DefaultArgEffect == MayEscape && This == DoNothing
+ return Ret == RetEffect::MakeNoRet() && Receiver.getKind() == DoNothing
+ && DefaultArgEffect.getKind() == MayEscape && This.getKind() == DoNothing
&& Args.isEmpty();
}
@@ -465,6 +444,8 @@
}
};
+class RetainSummaryTemplate;
+
class RetainSummaryManager {
typedef llvm::DenseMap<const FunctionDecl*, const RetainSummary *>
FuncSummariesTy;
@@ -479,7 +460,10 @@
/// Records whether or not the analyzed code runs in ARC mode.
const bool ARCEnabled;
- /// Track sublcasses of OSObject
+ /// Track Objective-C and CoreFoundation objects.
+ const bool TrackObjCAndCFObjects;
+
+ /// Track sublcasses of OSObject.
const bool TrackOSObjects;
/// FuncSummaries - A map from FunctionDecls to summaries.
@@ -499,9 +483,6 @@
/// AF - A factory for ArgEffects objects.
ArgEffects::Factory AF;
- /// ScratchArgs - A holding buffer for construct ArgEffects.
- ArgEffects ScratchArgs;
-
/// ObjCAllocRetE - Default return effect for methods returning Objective-C
/// objects.
RetEffect ObjCAllocRetE;
@@ -514,10 +495,6 @@
/// effects.
llvm::FoldingSet<CachedSummaryNode> SimpleSummaries;
- /// getArgEffects - Returns a persistent ArgEffects object based on the
- /// data in ScratchArgs.
- ArgEffects getArgEffects();
-
/// Create an OS object at +1.
const RetainSummary *getOSSummaryCreateRule(const FunctionDecl *FD);
@@ -530,11 +507,11 @@
/// Decrement the reference count on OS object.
const RetainSummary *getOSSummaryReleaseRule(const FunctionDecl *FD);
-
- enum UnaryFuncKind { cfretain, cfrelease, cfautorelease, cfmakecollectable };
+ /// Free the OS object.
+ const RetainSummary *getOSSummaryFreeRule(const FunctionDecl *FD);
const RetainSummary *getUnarySummary(const FunctionType* FT,
- UnaryFuncKind func);
+ ArgEffectKind AE);
const RetainSummary *getCFSummaryCreateRule(const FunctionDecl *FD);
const RetainSummary *getCFSummaryGetRule(const FunctionDecl *FD);
@@ -542,27 +519,31 @@
const RetainSummary *getPersistentSummary(const RetainSummary &OldSumm);
- const RetainSummary *getPersistentSummary(RetEffect RetEff,
- ArgEffect ReceiverEff = DoNothing,
- ArgEffect DefaultEff = MayEscape,
- ArgEffect ThisEff = DoNothing) {
- RetainSummary Summ(getArgEffects(), RetEff, DefaultEff, ReceiverEff,
- ThisEff);
+ const RetainSummary *
+ getPersistentSummary(RetEffect RetEff, ArgEffects ScratchArgs,
+ ArgEffect ReceiverEff = ArgEffect(DoNothing),
+ ArgEffect DefaultEff = ArgEffect(MayEscape),
+ ArgEffect ThisEff = ArgEffect(DoNothing)) {
+ RetainSummary Summ(ScratchArgs, RetEff, DefaultEff, ReceiverEff, ThisEff);
return getPersistentSummary(Summ);
}
const RetainSummary *getDoNothingSummary() {
- return getPersistentSummary(RetEffect::MakeNoRet(), DoNothing, DoNothing);
+ return getPersistentSummary(RetEffect::MakeNoRet(),
+ ArgEffects(AF.getEmptyMap()),
+ ArgEffect(DoNothing), ArgEffect(DoNothing));
}
const RetainSummary *getDefaultSummary() {
return getPersistentSummary(RetEffect::MakeNoRet(),
- DoNothing, MayEscape);
+ ArgEffects(AF.getEmptyMap()),
+ ArgEffect(DoNothing), ArgEffect(MayEscape));
}
const RetainSummary *getPersistentStopSummary() {
- return getPersistentSummary(RetEffect::MakeNoRet(),
- StopTracking, StopTracking);
+ return getPersistentSummary(
+ RetEffect::MakeNoRet(), ArgEffects(AF.getEmptyMap()),
+ ArgEffect(StopTracking), ArgEffect(StopTracking));
}
void InitializeClassMethodSummaries();
@@ -620,30 +601,74 @@
const RetainSummary * generateSummary(const FunctionDecl *FD,
bool &AllowAnnotations);
+ /// Return a summary for OSObject, or nullptr if not found.
+ const RetainSummary *getSummaryForOSObject(const FunctionDecl *FD,
+ StringRef FName, QualType RetTy);
+
+ /// Return a summary for Objective-C or CF object, or nullptr if not found.
+ const RetainSummary *getSummaryForObjCOrCFObject(
+ const FunctionDecl *FD,
+ StringRef FName,
+ QualType RetTy,
+ const FunctionType *FT,
+ bool &AllowAnnotations);
+
+ /// Apply the annotation of {@code pd} in function {@code FD}
+ /// to the resulting summary stored in out-parameter {@code Template}.
+ /// \return whether an annotation was applied.
+ bool applyParamAnnotationEffect(const ParmVarDecl *pd, unsigned parm_idx,
+ const NamedDecl *FD,
+ RetainSummaryTemplate &Template);
+
public:
- RetainSummaryManager(ASTContext &ctx,
- bool usesARC,
- bool trackOSObject)
- : Ctx(ctx),
- ARCEnabled(usesARC),
- TrackOSObjects(trackOSObject),
- AF(BPAlloc), ScratchArgs(AF.getEmptyMap()),
- ObjCAllocRetE(usesARC ? RetEffect::MakeNotOwned(RetEffect::ObjC)
- : RetEffect::MakeOwned(RetEffect::ObjC)),
- ObjCInitRetE(usesARC ? RetEffect::MakeNotOwned(RetEffect::ObjC)
- : RetEffect::MakeOwnedWhenTrackedReceiver()) {
+ RetainSummaryManager(ASTContext &ctx, bool trackObjCAndCFObjects,
+ bool trackOSObjects)
+ : Ctx(ctx), ARCEnabled((bool)Ctx.getLangOpts().ObjCAutoRefCount),
+ TrackObjCAndCFObjects(trackObjCAndCFObjects),
+ TrackOSObjects(trackOSObjects), AF(BPAlloc),
+ ObjCAllocRetE(ARCEnabled ? RetEffect::MakeNotOwned(ObjKind::ObjC)
+ : RetEffect::MakeOwned(ObjKind::ObjC)),
+ ObjCInitRetE(ARCEnabled ? RetEffect::MakeNotOwned(ObjKind::ObjC)
+ : RetEffect::MakeOwnedWhenTrackedReceiver()) {
InitializeClassMethodSummaries();
InitializeMethodSummaries();
}
- bool canEval(const CallExpr *CE,
- const FunctionDecl *FD,
- bool &hasTrustedImplementationAnnotation);
+ enum class BehaviorSummary {
+ // Function does not return.
+ NoOp,
- bool isTrustedReferenceCountImplementation(const FunctionDecl *FD);
+ // Function returns the first argument.
+ Identity,
- const RetainSummary *getSummary(const CallEvent &Call,
- QualType ReceiverType=QualType());
+ // Function returns "this" argument.
+ IdentityThis,
+
+ // Function either returns zero, or the input parameter.
+ IdentityOrZero
+ };
+
+ Optional<BehaviorSummary> canEval(const CallExpr *CE, const FunctionDecl *FD,
+ bool &hasTrustedImplementationAnnotation);
+
+ /// \return Whether the type corresponds to a known smart pointer
+ /// implementation (that is, everything about it is inlineable).
+ static bool isKnownSmartPointer(QualType QT);
+
+ bool isTrustedReferenceCountImplementation(const Decl *FD);
+
+ const RetainSummary *getSummary(AnyCall C,
+ bool HasNonZeroCallbackArg=false,
+ bool IsReceiverUnconsumedSelf=false,
+ QualType ReceiverType={});
+
+ RetEffect getObjAllocRetEffect() const { return ObjCAllocRetE; }
+
+private:
+
+ /// getMethodSummary - This version of getMethodSummary is used to query
+ /// the summary for the current method being analyzed.
+ const RetainSummary *getMethodSummary(const ObjCMethodDecl *MD);
const RetainSummary *getFunctionSummary(const FunctionDecl *FD);
@@ -653,32 +678,9 @@
ObjCMethodSummariesTy &CachedSummaries);
const RetainSummary *
- getInstanceMethodSummary(const ObjCMethodCall &M,
- QualType ReceiverType);
+ getInstanceMethodSummary(const ObjCMessageExpr *ME, QualType ReceiverType);
- const RetainSummary *getClassMethodSummary(const ObjCMethodCall &M) {
- assert(!M.isInstanceMessage());
- const ObjCInterfaceDecl *Class = M.getReceiverInterface();
-
- return getMethodSummary(M.getSelector(), Class, M.getDecl(),
- M.getResultType(), ObjCClassMethodSummaries);
- }
-
- /// getMethodSummary - This version of getMethodSummary is used to query
- /// the summary for the current method being analyzed.
- const RetainSummary *getMethodSummary(const ObjCMethodDecl *MD) {
- const ObjCInterfaceDecl *ID = MD->getClassInterface();
- Selector S = MD->getSelector();
- QualType ResultTy = MD->getReturnType();
-
- ObjCMethodSummariesTy *CachedSummaries;
- if (MD->isInstanceMethod())
- CachedSummaries = &ObjCMethodSummaries;
- else
- CachedSummaries = &ObjCClassMethodSummaries;
-
- return getMethodSummary(S, ID, MD, ResultTy, *CachedSummaries);
- }
+ const RetainSummary *getClassMethodSummary(const ObjCMessageExpr *ME);
const RetainSummary *getStandardMethodSummary(const ObjCMethodDecl *MD,
Selector S, QualType RetTy);
@@ -693,16 +695,43 @@
void updateSummaryFromAnnotations(const RetainSummary *&Summ,
const FunctionDecl *FD);
- void updateSummaryForCall(const RetainSummary *&Summ,
- const CallEvent &Call);
+ const RetainSummary *updateSummaryForNonZeroCallbackArg(const RetainSummary *S,
+ AnyCall &C);
- bool isARCEnabled() const { return ARCEnabled; }
+ /// Special case '[super init];' and '[self init];'
+ ///
+ /// Even though calling '[super init]' without assigning the result to self
+ /// and checking if the parent returns 'nil' is a bad pattern, it is common.
+ /// Additionally, our Self Init checker already warns about it. To avoid
+ /// overwhelming the user with messages from both checkers, we model the case
+ /// of '[super init]' in cases when it is not consumed by another expression
+ /// as if the call preserves the value of 'self'; essentially, assuming it can
+ /// never fail and return 'nil'.
+ /// Note, we don't want to just stop tracking the value since we want the
+ /// RetainCount checker to report leaks and use-after-free if SelfInit checker
+ /// is turned off.
+ void updateSummaryForReceiverUnconsumedSelf(const RetainSummary *&S);
- RetEffect getObjAllocRetEffect() const { return ObjCAllocRetE; }
+ /// Set argument types for arguments which are not doing anything.
+ void updateSummaryForArgumentTypes(const AnyCall &C, const RetainSummary *&RS);
+
+ /// Determine whether a declaration {@code D} of correspondent type (return
+ /// type for functions/methods) {@code QT} has any of the given attributes,
+ /// provided they pass necessary validation checks AND tracking the given
+ /// attribute is enabled.
+ /// Returns the object kind corresponding to the present attribute, or None,
+ /// if none of the specified attributes are present.
+ /// Crashes if passed an attribute which is not explicitly handled.
+ template <class T>
+ Optional<ObjKind> hasAnyEnabledAttrOf(const Decl *D, QualType QT);
+
+ template <class T1, class T2, class... Others>
+ Optional<ObjKind> hasAnyEnabledAttrOf(const Decl *D, QualType QT);
friend class RetainSummaryTemplate;
};
+
// Used to avoid allocating long-term (BPAlloc'd) memory for default retain
// summaries. If a function or method looks like it has a default summary, but
// it has annotations, the annotations are added to the stack-based template
diff --git a/linux-x64/clang/include/clang/Analysis/SelectorExtras.h b/linux-x64/clang/include/clang/Analysis/SelectorExtras.h
index 767063e..d26e915 100644
--- a/linux-x64/clang/include/clang/Analysis/SelectorExtras.h
+++ b/linux-x64/clang/include/clang/Analysis/SelectorExtras.h
@@ -1,9 +1,8 @@
//=== SelectorExtras.h - Helpers for checkers using selectors -----*- C++ -*-=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Analysis/Support/BumpVector.h b/linux-x64/clang/include/clang/Analysis/Support/BumpVector.h
index 00a7417..74092da 100644
--- a/linux-x64/clang/include/clang/Analysis/Support/BumpVector.h
+++ b/linux-x64/clang/include/clang/Analysis/Support/BumpVector.h
@@ -1,9 +1,8 @@
//===- BumpVector.h - Vector-like ADT that uses bump allocation -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/ABI.h b/linux-x64/clang/include/clang/Basic/ABI.h
index dc0e49c..2401ffa 100644
--- a/linux-x64/clang/include/clang/Basic/ABI.h
+++ b/linux-x64/clang/include/clang/Basic/ABI.h
@@ -1,9 +1,8 @@
//===----- ABI.h - ABI related declarations ---------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Basic/AddressSpaces.h b/linux-x64/clang/include/clang/Basic/AddressSpaces.h
index 217fbd7..2cc6747 100644
--- a/linux-x64/clang/include/clang/Basic/AddressSpaces.h
+++ b/linux-x64/clang/include/clang/Basic/AddressSpaces.h
@@ -1,9 +1,8 @@
//===- AddressSpaces.h - Language-specific address spaces -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/AlignedAllocation.h b/linux-x64/clang/include/clang/Basic/AlignedAllocation.h
index 9751f41..88410c5 100644
--- a/linux-x64/clang/include/clang/Basic/AlignedAllocation.h
+++ b/linux-x64/clang/include/clang/Basic/AlignedAllocation.h
@@ -1,9 +1,8 @@
//===--- AlignedAllocation.h - Aligned Allocation ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -27,8 +26,8 @@
default:
break;
case llvm::Triple::Darwin:
- case llvm::Triple::MacOSX: // Earliest supporting version is 10.13.
- return llvm::VersionTuple(10U, 13U);
+ case llvm::Triple::MacOSX: // Earliest supporting version is 10.14.
+ return llvm::VersionTuple(10U, 14U);
case llvm::Triple::IOS:
case llvm::Triple::TvOS: // Earliest supporting version is 11.0.0.
return llvm::VersionTuple(11U);
diff --git a/linux-x64/clang/include/clang/Basic/AllDiagnostics.h b/linux-x64/clang/include/clang/Basic/AllDiagnostics.h
index afec2d7..cc6aa63 100644
--- a/linux-x64/clang/include/clang/Basic/AllDiagnostics.h
+++ b/linux-x64/clang/include/clang/Basic/AllDiagnostics.h
@@ -1,9 +1,8 @@
//===--- AllDiagnostics.h - Aggregate Diagnostic headers --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -15,17 +14,17 @@
#ifndef LLVM_CLANG_BASIC_ALLDIAGNOSTICS_H
#define LLVM_CLANG_BASIC_ALLDIAGNOSTICS_H
-#include "clang/AST/ASTDiagnostic.h"
-#include "clang/AST/CommentDiagnostic.h"
-#include "clang/Analysis/AnalysisDiagnostic.h"
-#include "clang/CrossTU/CrossTUDiagnostic.h"
-#include "clang/Driver/DriverDiagnostic.h"
-#include "clang/Frontend/FrontendDiagnostic.h"
-#include "clang/Lex/LexDiagnostic.h"
-#include "clang/Parse/ParseDiagnostic.h"
-#include "clang/Sema/SemaDiagnostic.h"
-#include "clang/Serialization/SerializationDiagnostic.h"
-#include "clang/Tooling/Refactoring/RefactoringDiagnostic.h"
+#include "clang/Basic/DiagnosticAST.h"
+#include "clang/Basic/DiagnosticAnalysis.h"
+#include "clang/Basic/DiagnosticComment.h"
+#include "clang/Basic/DiagnosticCrossTU.h"
+#include "clang/Basic/DiagnosticDriver.h"
+#include "clang/Basic/DiagnosticFrontend.h"
+#include "clang/Basic/DiagnosticLex.h"
+#include "clang/Basic/DiagnosticParse.h"
+#include "clang/Basic/DiagnosticSema.h"
+#include "clang/Basic/DiagnosticSerialization.h"
+#include "clang/Basic/DiagnosticRefactoring.h"
namespace clang {
template <size_t SizeOfStr, typename FieldType>
diff --git a/linux-x64/clang/include/clang/Basic/AttrHasAttributeImpl.inc b/linux-x64/clang/include/clang/Basic/AttrHasAttributeImpl.inc
index 45bd54c..bd8bdcc 100644
--- a/linux-x64/clang/include/clang/Basic/AttrHasAttributeImpl.inc
+++ b/linux-x64/clang/include/clang/Basic/AttrHasAttributeImpl.inc
@@ -10,6 +10,7 @@
switch (Syntax) {
case AttrSyntax::GNU:
return llvm::StringSwitch<int>(Name)
+ .Case("aarch64_vector_pcs", 1)
.Case("amdgpu_flat_work_group_size", 1)
.Case("amdgpu_num_sgpr", 1)
.Case("amdgpu_num_vgpr", 1)
@@ -84,6 +85,7 @@
.Case("launch_bounds", 1)
.Case("shared", 1)
.Case("callable_when", 1)
+ .Case("callback", 1)
.Case("capability", 1)
.Case("shared_capability", 1)
.Case("capability", 1)
@@ -118,6 +120,7 @@
.Case("flatten", 1)
.Case("format", 1)
.Case("format_arg", 1)
+ .Case("fortify_stdlib", 1)
.Case("gnu_inline", 1)
.Case("guarded_by", 1)
.Case("guarded_var", 1)
@@ -162,6 +165,7 @@
.Case("neon_vector_type", 1)
.Case("nocommon", 1)
.Case("nodebug", 1)
+ .Case("noderef", 1)
.Case("no_destroy", 1)
.Case("noduplicate", 1)
.Case("noescape", 1)
@@ -187,6 +191,7 @@
.Case("no_sanitize_address", 1)
.Case("no_sanitize_thread", 1)
.Case("no_sanitize_memory", 1)
+ .Case("no_speculative_load_hardening", 1)
.Case("no_split_stack", 1)
.Case("no_stack_protector", 1)
.Case("no_thread_safety_analysis", 1)
@@ -194,6 +199,12 @@
.Case("nonnull", 1)
.Case("not_tail_called", 1)
.Case("nv_weak", 1)
+ .Case("os_consumed", 1)
+ .Case("os_consumes_this", 1)
+ .Case("os_returns_not_retained", 1)
+ .Case("os_returns_retained", 1)
+ .Case("os_returns_retained_on_non_zero", 1)
+ .Case("os_returns_retained_on_zero", 1)
.Case("objc_boxable", 1)
.Case("objc_bridge", 1)
.Case("objc_bridge_mutable", 1)
@@ -201,10 +212,12 @@
.Case("objc_designated_initializer", 1)
.Case("objc_exception", 1)
.Case("objc_protocol_requires_explicit_implementation", 1)
+ .Case("objc_externally_retained", 1)
.Case("objc_gc", 1)
.Case("objc_independent_class", 1)
.Case("objc_method_family", 1)
.Case("NSObject", 1)
+ .Case("objc_nonlazy_class", 1)
.Case("objc_ownership", 1)
.Case("objc_precise_lifetime", 1)
.Case("objc_requires_property_definitions", 1)
@@ -287,6 +300,7 @@
.Case("sentinel", 1)
.Case("set_typestate", 1)
.Case("shared_trylock_function", 1)
+ .Case("speculative_load_hardening", 1)
.Case("stdcall", 1)
.Case("swiftcall", 1)
.Case("swift_context", 1)
@@ -306,6 +320,7 @@
.Case("type_tag_for_datatype", 1)
.Case("type_visibility", 1)
.Case("unavailable", 1)
+ .Case("uninitialized", 1)
.Case("unused", 1)
.Case("used", 1)
.Case("vecreturn", 1)
@@ -318,6 +333,8 @@
.Case("weak", 1)
.Case("weak_import", 1)
.Case("weakref", 1)
+ .Case("import_module", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
+ .Case("import_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
.Case("work_group_size_hint", 1)
.Case("force_align_arg_pointer", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
.Case("xray_always_instrument", 1)
@@ -329,6 +346,8 @@
case AttrSyntax::Declspec:
return llvm::StringSwitch<int>(Name)
.Case("align", 1)
+ .Case("cpu_dispatch", 1)
+ .Case("cpu_specific", 1)
.Case("__constant__", 1)
.Case("__cudart_builtin__", 1)
.Case("__device__", 1)
@@ -394,7 +413,7 @@
.Case("declare target", 1)
.Default(0);
case AttrSyntax::CXX: {
-if (!Scope || Scope->getName() == "") {
+if (ScopeName == "") {
return llvm::StringSwitch<int>(Name)
.Case("noreturn", LangOpts.CPlusPlus11 ? 200809 : 0)
.Case("carries_dependency", LangOpts.CPlusPlus11 ? 200809 : 0)
@@ -408,8 +427,9 @@
.Case("warn_unused_result", LangOpts.CPlusPlus11 ? 201603 : 0)
.Case("warn_unused_result", LangOpts.CPlusPlus11 ? 201603 : 0)
.Default(0);
-} else if (Scope->getName() == "clang") {
+} else if (ScopeName == "clang") {
return llvm::StringSwitch<int>(Name)
+ .Case("aarch64_vector_pcs", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("amdgpu_flat_work_group_size", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("amdgpu_num_sgpr", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("amdgpu_num_vgpr", LangOpts.CPlusPlus11 ? 1 : 0)
@@ -440,6 +460,7 @@
.Case("cpu_dispatch", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("cpu_specific", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("callable_when", LangOpts.CPlusPlus11 ? 1 : 0)
+ .Case("callback", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("capability", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("shared_capability", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("capability", LangOpts.CPlusPlus11 ? 1 : 0)
@@ -454,6 +475,7 @@
.Case("external_source_symbol", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("fallthrough", LangOpts.CPlusPlus11 ? 201603 : 0)
.Case("flag_enum", LangOpts.CPlusPlus11 ? 1 : 0)
+ .Case("fortify_stdlib", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("guarded_var", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("ibaction", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("iboutlet", LangOpts.CPlusPlus11 ? 1 : 0)
@@ -471,14 +493,22 @@
.Case("ns_returns_retained", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("neon_polyvector_type", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("neon_vector_type", LangOpts.CPlusPlus11 ? 1 : 0)
+ .Case("noderef", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("no_destroy", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("noduplicate", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("noescape", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("no_sanitize", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("no_sanitize_memory", LangOpts.CPlusPlus11 ? 1 : 0)
+ .Case("no_speculative_load_hardening", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("no_stack_protector", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("no_thread_safety_analysis", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("not_tail_called", LangOpts.CPlusPlus11 ? 1 : 0)
+ .Case("os_consumed", LangOpts.CPlusPlus11 ? 1 : 0)
+ .Case("os_consumes_this", LangOpts.CPlusPlus11 ? 1 : 0)
+ .Case("os_returns_not_retained", LangOpts.CPlusPlus11 ? 1 : 0)
+ .Case("os_returns_retained", LangOpts.CPlusPlus11 ? 1 : 0)
+ .Case("os_returns_retained_on_non_zero", LangOpts.CPlusPlus11 ? 1 : 0)
+ .Case("os_returns_retained_on_zero", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_boxable", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_bridge", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_bridge_mutable", LangOpts.CPlusPlus11 ? 1 : 0)
@@ -486,10 +516,12 @@
.Case("objc_designated_initializer", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_exception", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_protocol_requires_explicit_implementation", LangOpts.CPlusPlus11 ? 1 : 0)
+ .Case("objc_externally_retained", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_gc", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_independent_class", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_method_family", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("NSObject", LangOpts.CPlusPlus11 ? 1 : 0)
+ .Case("objc_nonlazy_class", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_ownership", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_precise_lifetime", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_requires_property_definitions", LangOpts.CPlusPlus11 ? 1 : 0)
@@ -553,6 +585,7 @@
.Case("return_typestate", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("scoped_lockable", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("set_typestate", LangOpts.CPlusPlus11 ? 1 : 0)
+ .Case("speculative_load_hardening", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("swiftcall", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("swift_context", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("swift_error_result", LangOpts.CPlusPlus11 ? 1 : 0)
@@ -566,17 +599,20 @@
.Case("type_tag_for_datatype", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("type_visibility", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("unavailable", LangOpts.CPlusPlus11 ? 1 : 0)
+ .Case("uninitialized", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("vecreturn", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("vectorcall", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("warn_unused_result", LangOpts.CPlusPlus11 ? 201603 : 0)
.Case("weak_import", LangOpts.CPlusPlus11 ? 1 : 0)
+ .Case("import_module", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) && LangOpts.CPlusPlus11 ? 1 : 0)
+ .Case("import_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) && LangOpts.CPlusPlus11 ? 1 : 0)
.Case("xray_always_instrument", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("xray_never_instrument", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("xray_always_instrument", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("xray_never_instrument", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("xray_log_args", LangOpts.CPlusPlus11 ? 1 : 0)
.Default(0);
-} else if (Scope->getName() == "gnu") {
+} else if (ScopeName == "gnu") {
return llvm::StringSwitch<int>(Name)
.Case("interrupt", true && (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb) && LangOpts.CPlusPlus11 ? 1 : 0)
.Case("interrupt", true && (T.getArch() == llvm::Triple::avr) && LangOpts.CPlusPlus11 ? 1 : 0)
@@ -677,22 +713,23 @@
.Case("weakref", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("force_align_arg_pointer", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) && LangOpts.CPlusPlus11 ? 1 : 0)
.Default(0);
-} else if (Scope->getName() == "gsl") {
+} else if (ScopeName == "gsl") {
return llvm::StringSwitch<int>(Name)
.Case("suppress", LangOpts.CPlusPlus11 ? 1 : 0)
.Default(0);
}
} break;
case AttrSyntax::C: {
-if (!Scope || Scope->getName() == "") {
+if (ScopeName == "") {
return llvm::StringSwitch<int>(Name)
.Case("deprecated", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("fallthrough", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("maybe_unused", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("nodiscard", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Default(0);
-} else if (Scope->getName() == "clang") {
+} else if (ScopeName == "clang") {
return llvm::StringSwitch<int>(Name)
+ .Case("aarch64_vector_pcs", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("address_space", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("annotate", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_arc_weak_reference_unavailable", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
@@ -709,12 +746,14 @@
.Case("cf_unknown_transfer", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("cpu_dispatch", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("cpu_specific", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
+ .Case("callback", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("convergent", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("disable_tail_calls", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("enum_extensibility", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("exclude_from_explicit_instantiation", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("external_source_symbol", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("flag_enum", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
+ .Case("fortify_stdlib", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("ibaction", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("iboutlet", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("iboutletcollection", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
@@ -729,13 +768,21 @@
.Case("ns_returns_retained", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("neon_polyvector_type", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("neon_vector_type", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
+ .Case("noderef", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("noduplicate", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("noescape", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("no_sanitize", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("no_sanitize_memory", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
+ .Case("no_speculative_load_hardening", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("no_stack_protector", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("no_thread_safety_analysis", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("not_tail_called", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
+ .Case("os_consumed", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
+ .Case("os_consumes_this", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
+ .Case("os_returns_not_retained", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
+ .Case("os_returns_retained", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
+ .Case("os_returns_retained_on_non_zero", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
+ .Case("os_returns_retained_on_zero", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_boxable", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_bridge", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_bridge_mutable", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
@@ -743,10 +790,12 @@
.Case("objc_designated_initializer", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_exception", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_protocol_requires_explicit_implementation", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
+ .Case("objc_externally_retained", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_gc", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_independent_class", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_method_family", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("NSObject", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
+ .Case("objc_nonlazy_class", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_ownership", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_precise_lifetime", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_requires_property_definitions", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
@@ -771,6 +820,7 @@
.Case("pass_object_size", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("preserve_all", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("preserve_most", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
+ .Case("speculative_load_hardening", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("swiftcall", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("swift_context", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("swift_error_result", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
@@ -780,6 +830,8 @@
.Case("unavailable", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("vectorcall", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("weak_import", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
+ .Case("import_module", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) && LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
+ .Case("import_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) && LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("xray_always_instrument", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("xray_never_instrument", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("xray_always_instrument", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
diff --git a/linux-x64/clang/include/clang/Basic/AttrKinds.h b/linux-x64/clang/include/clang/Basic/AttrKinds.h
index d82dbb0..ec0052d 100644
--- a/linux-x64/clang/include/clang/Basic/AttrKinds.h
+++ b/linux-x64/clang/include/clang/Basic/AttrKinds.h
@@ -1,9 +1,8 @@
//===----- Attr.h - Enum values for C Attribute Kinds ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Basic/AttrList.inc b/linux-x64/clang/include/clang/Basic/AttrList.inc
index 3ee5d4d..156a2a4 100644
--- a/linux-x64/clang/include/clang/Basic/AttrList.inc
+++ b/linux-x64/clang/include/clang/Basic/AttrList.inc
@@ -35,6 +35,7 @@
#endif
TYPE_ATTR(AddressSpace)
+TYPE_ATTR(NoDeref)
TYPE_ATTR(ObjCGC)
TYPE_ATTR(ObjCInertUnsafeUnretained)
TYPE_ATTR(ObjCKindOf)
@@ -52,6 +53,7 @@
TYPE_ATTR(UPtr)
STMT_ATTR(FallThrough)
STMT_ATTR(Suppress)
+DECL_OR_TYPE_ATTR(AArch64VectorPcs)
DECL_OR_TYPE_ATTR(AnyX86NoCfCheck)
DECL_OR_TYPE_ATTR(CDecl)
DECL_OR_TYPE_ATTR(FastCall)
@@ -78,6 +80,7 @@
INHERITABLE_PARAM_ATTR(CarriesDependency)
INHERITABLE_PARAM_ATTR(NSConsumed)
INHERITABLE_PARAM_ATTR(NonNull)
+INHERITABLE_PARAM_ATTR(OSConsumed)
INHERITABLE_PARAM_ATTR(PassObjectSize)
INHERITABLE_ATTR(AMDGPUFlatWorkGroupSize)
INHERITABLE_ATTR(AMDGPUNumSGPR)
@@ -124,6 +127,7 @@
INHERITABLE_ATTR(CUDAShared)
INHERITABLE_ATTR(CXX11NoReturn)
INHERITABLE_ATTR(CallableWhen)
+INHERITABLE_ATTR(Callback)
INHERITABLE_ATTR(Capability)
INHERITABLE_ATTR(CapturedRecord)
INHERITABLE_ATTR(Cleanup)
@@ -137,7 +141,9 @@
INHERITABLE_ATTR(ConsumableSetOnRead)
INHERITABLE_ATTR(Convergent)
INHERITABLE_ATTR(DLLExport)
+INHERITABLE_ATTR(DLLExportStaticLocal)
INHERITABLE_ATTR(DLLImport)
+INHERITABLE_ATTR(DLLImportStaticLocal)
INHERITABLE_ATTR(Deprecated)
INHERITABLE_ATTR(Destructor)
INHERITABLE_ATTR(DiagnoseIf)
@@ -153,6 +159,7 @@
INHERITABLE_ATTR(Flatten)
INHERITABLE_ATTR(Format)
INHERITABLE_ATTR(FormatArg)
+INHERITABLE_ATTR(FortifyStdLib)
INHERITABLE_ATTR(GNUInline)
INHERITABLE_ATTR(GuardedBy)
INHERITABLE_ATTR(GuardedVar)
@@ -195,6 +202,7 @@
INHERITABLE_ATTR(NoMips16)
INHERITABLE_ATTR(NoReturn)
INHERITABLE_ATTR(NoSanitize)
+INHERITABLE_ATTR(NoSpeculativeLoadHardening)
INHERITABLE_ATTR(NoSplitStack)
INHERITABLE_ATTR(NoStackProtector)
INHERITABLE_ATTR(NoThreadSafetyAnalysis)
@@ -203,11 +211,17 @@
INHERITABLE_ATTR(OMPCaptureNoInit)
INHERITABLE_ATTR(OMPDeclareTargetDecl)
INHERITABLE_ATTR(OMPThreadPrivateDecl)
+INHERITABLE_ATTR(OSConsumesThis)
+INHERITABLE_ATTR(OSReturnsNotRetained)
+INHERITABLE_ATTR(OSReturnsRetained)
+INHERITABLE_ATTR(OSReturnsRetainedOnNonZero)
+INHERITABLE_ATTR(OSReturnsRetainedOnZero)
INHERITABLE_ATTR(ObjCBridge)
INHERITABLE_ATTR(ObjCBridgeMutable)
INHERITABLE_ATTR(ObjCBridgeRelated)
INHERITABLE_ATTR(ObjCException)
INHERITABLE_ATTR(ObjCExplicitProtocolImpl)
+INHERITABLE_ATTR(ObjCExternallyRetained)
INHERITABLE_ATTR(ObjCIndependentClass)
INHERITABLE_ATTR(ObjCMethodFamily)
INHERITABLE_ATTR(ObjCNSObject)
@@ -248,6 +262,7 @@
INHERITABLE_ATTR(Sentinel)
INHERITABLE_ATTR(SetTypestate)
INHERITABLE_ATTR(SharedTrylockFunction)
+INHERITABLE_ATTR(SpeculativeLoadHardening)
INHERITABLE_ATTR(TLSModel)
INHERITABLE_ATTR(Target)
INHERITABLE_ATTR(TestTypestate)
@@ -257,6 +272,7 @@
INHERITABLE_ATTR(TypeTagForDatatype)
INHERITABLE_ATTR(TypeVisibility)
INHERITABLE_ATTR(Unavailable)
+INHERITABLE_ATTR(Uninitialized)
INHERITABLE_ATTR(Unused)
INHERITABLE_ATTR(Used)
INHERITABLE_ATTR(Uuid)
@@ -268,6 +284,8 @@
INHERITABLE_ATTR(Weak)
INHERITABLE_ATTR(WeakImport)
INHERITABLE_ATTR(WeakRef)
+INHERITABLE_ATTR(WebAssemblyImportModule)
+INHERITABLE_ATTR(WebAssemblyImportName)
INHERITABLE_ATTR(WorkGroupSizeHint)
INHERITABLE_ATTR(X86ForceAlignArgPointer)
INHERITABLE_ATTR(XRayInstrument)
@@ -285,6 +303,7 @@
ATTR(OMPReferencedVar)
ATTR(ObjCBoxable)
ATTR(ObjCDesignatedInitializer)
+ATTR(ObjCNonLazyClass)
ATTR(ObjCRuntimeName)
ATTR(ObjCRuntimeVisible)
ATTR(OpenCLAccess)
@@ -299,8 +318,8 @@
ATTR_RANGE(Attr, AddressSpace, Thread)
ATTR_RANGE(TypeAttr, AddressSpace, UPtr)
ATTR_RANGE(StmtAttr, FallThrough, Suppress)
-ATTR_RANGE(InheritableAttr, AnyX86NoCfCheck, XRayLogArgs)
-ATTR_RANGE(DeclOrTypeAttr, AnyX86NoCfCheck, VectorCall)
+ATTR_RANGE(InheritableAttr, AArch64VectorPcs, XRayLogArgs)
+ATTR_RANGE(DeclOrTypeAttr, AArch64VectorPcs, VectorCall)
ATTR_RANGE(InheritableParamAttr, SwiftContext, PassObjectSize)
ATTR_RANGE(ParameterABIAttr, SwiftContext, SwiftIndirectResult)
#undef ATTR_RANGE
diff --git a/linux-x64/clang/include/clang/Basic/AttrSubjectMatchRules.h b/linux-x64/clang/include/clang/Basic/AttrSubjectMatchRules.h
index 81aa634..010cefc 100644
--- a/linux-x64/clang/include/clang/Basic/AttrSubjectMatchRules.h
+++ b/linux-x64/clang/include/clang/Basic/AttrSubjectMatchRules.h
@@ -1,9 +1,8 @@
//===-- AttrSubjectMatchRules.h - Attribute subject match rules -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Basic/Attributes.h b/linux-x64/clang/include/clang/Basic/Attributes.h
index 3152453..c69633d 100644
--- a/linux-x64/clang/include/clang/Basic/Attributes.h
+++ b/linux-x64/clang/include/clang/Basic/Attributes.h
@@ -1,9 +1,8 @@
//===--- Attributes.h - Attributes header -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Basic/BitmaskEnum.h b/linux-x64/clang/include/clang/Basic/BitmaskEnum.h
index 12ff3cf..34bfa17 100644
--- a/linux-x64/clang/include/clang/Basic/BitmaskEnum.h
+++ b/linux-x64/clang/include/clang/Basic/BitmaskEnum.h
@@ -1,9 +1,8 @@
//===--- BitmaskEnum.h - wrapper of LLVM's bitmask enum facility-*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/Builtins.def b/linux-x64/clang/include/clang/Basic/Builtins.def
index f6185d5..2e8c6d9 100644
--- a/linux-x64/clang/include/clang/Basic/Builtins.def
+++ b/linux-x64/clang/include/clang/Basic/Builtins.def
@@ -1,9 +1,8 @@
//===--- Builtins.def - Builtin function info database ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -93,6 +92,8 @@
// j -> returns_twice (like setjmp)
// u -> arguments are not evaluated for their side-effects
// V:N: -> requires vectors of at least N bits to be legal
+// C<N,M_0,...,M_k> -> callback behavior: argument N is called with argument
+// M_0, ..., M_k as payload
// FIXME: gcc has nonnull
#if defined(BUILTIN) && !defined(LIBBUILTIN)
@@ -498,6 +499,7 @@
BUILTIN(__builtin_vsprintf, "ic*cC*a", "nFP:1:")
BUILTIN(__builtin_vsnprintf, "ic*zcC*a", "nFP:2:")
BUILTIN(__builtin_thread_pointer, "v*", "nc")
+BUILTIN(__builtin_launder, "v*v*", "nt")
// GCC exception builtins
BUILTIN(__builtin_eh_return, "vzv*", "r") // FIXME: Takes intptr_t, not size_t!
@@ -509,6 +511,7 @@
// GCC Object size checking builtins
BUILTIN(__builtin_object_size, "zvC*i", "nu")
+BUILTIN(__builtin_dynamic_object_size, "zvC*i", "nu") // Clang only.
BUILTIN(__builtin___memcpy_chk, "v*v*vC*zz", "nF")
BUILTIN(__builtin___memccpy_chk, "v*v*vC*izz", "nF")
BUILTIN(__builtin___memmove_chk, "v*v*vC*zz", "nF")
@@ -538,7 +541,7 @@
BUILTIN(__builtin_trap, "v", "nr")
BUILTIN(__builtin_debugtrap, "v", "n")
BUILTIN(__builtin_unreachable, "v", "nr")
-BUILTIN(__builtin_shufflevector, "v." , "nc")
+BUILTIN(__builtin_shufflevector, "v." , "nct")
BUILTIN(__builtin_convertvector, "v." , "nct")
BUILTIN(__builtin_alloca, "v*z" , "Fn")
BUILTIN(__builtin_alloca_with_align, "v*zIz", "Fn")
@@ -818,20 +821,23 @@
LANGBUILTIN(_interlockedbittestandset_nf, "UcNiD*Ni", "n", ALL_MS_LANGUAGES)
LANGBUILTIN(_interlockedbittestandset_rel, "UcNiD*Ni", "n", ALL_MS_LANGUAGES)
LANGBUILTIN(__noop, "i.", "n", ALL_MS_LANGUAGES)
-LANGBUILTIN(__popcnt16, "UsUs", "nc", ALL_MS_LANGUAGES)
-LANGBUILTIN(__popcnt, "UiUi", "nc", ALL_MS_LANGUAGES)
-LANGBUILTIN(__popcnt64, "ULLiULLi", "nc", ALL_MS_LANGUAGES)
+LANGBUILTIN(__lzcnt16, "UsUs", "nc", ALL_MS_LANGUAGES)
+LANGBUILTIN(__lzcnt, "UiUi", "nc", ALL_MS_LANGUAGES)
+LANGBUILTIN(__lzcnt64, "UWiUWi", "nc", ALL_MS_LANGUAGES)
+LANGBUILTIN(__popcnt16, "UsUs", "nc", ALL_MS_LANGUAGES)
+LANGBUILTIN(__popcnt, "UiUi", "nc", ALL_MS_LANGUAGES)
+LANGBUILTIN(__popcnt64, "UWiUWi", "nc", ALL_MS_LANGUAGES)
LANGBUILTIN(_ReturnAddress, "v*", "n", ALL_MS_LANGUAGES)
LANGBUILTIN(_rotl8, "UcUcUc", "n", ALL_MS_LANGUAGES)
LANGBUILTIN(_rotl16, "UsUsUc", "n", ALL_MS_LANGUAGES)
LANGBUILTIN(_rotl, "UiUii", "n", ALL_MS_LANGUAGES)
LANGBUILTIN(_lrotl, "UNiUNii", "n", ALL_MS_LANGUAGES)
-LANGBUILTIN(_rotl64, "ULLiULLii", "n", ALL_MS_LANGUAGES)
+LANGBUILTIN(_rotl64, "UWiUWii", "n", ALL_MS_LANGUAGES)
LANGBUILTIN(_rotr8, "UcUcUc", "n", ALL_MS_LANGUAGES)
LANGBUILTIN(_rotr16, "UsUsUc", "n", ALL_MS_LANGUAGES)
LANGBUILTIN(_rotr, "UiUii", "n", ALL_MS_LANGUAGES)
LANGBUILTIN(_lrotr, "UNiUNii", "n", ALL_MS_LANGUAGES)
-LANGBUILTIN(_rotr64, "ULLiULLii", "n", ALL_MS_LANGUAGES)
+LANGBUILTIN(_rotr64, "UWiUWii", "n", ALL_MS_LANGUAGES)
LANGBUILTIN(__va_start, "vc**.", "nt", ALL_MS_LANGUAGES)
LANGBUILTIN(__fastfail, "vUi", "nr", ALL_MS_LANGUAGES)
@@ -956,6 +962,9 @@
// POSIX unistd.h
LIBBUILTIN(_exit, "vi", "fr", "unistd.h", ALL_GNU_LANGUAGES)
LIBBUILTIN(vfork, "p", "fj", "unistd.h", ALL_LANGUAGES)
+// POSIX pthread.h
+LIBBUILTIN(pthread_create, "", "fC<2,3>", "pthread.h", ALL_GNU_LANGUAGES)
+
// POSIX setjmp.h
LIBBUILTIN(_setjmp, "iJ", "fj", "setjmp.h", ALL_LANGUAGES)
@@ -1398,9 +1407,9 @@
BUILTIN(__builtin_subcll, "ULLiULLiCULLiCULLiCULLi*", "n")
// Checked Arithmetic Builtins for Security.
-BUILTIN(__builtin_add_overflow, "v.", "nt")
-BUILTIN(__builtin_sub_overflow, "v.", "nt")
-BUILTIN(__builtin_mul_overflow, "v.", "nt")
+BUILTIN(__builtin_add_overflow, "b.", "nt")
+BUILTIN(__builtin_sub_overflow, "b.", "nt")
+BUILTIN(__builtin_mul_overflow, "b.", "nt")
BUILTIN(__builtin_uadd_overflow, "bUiCUiCUi*", "n")
BUILTIN(__builtin_uaddl_overflow, "bULiCULiCULi*", "n")
BUILTIN(__builtin_uaddll_overflow, "bULLiCULLiCULLi*", "n")
diff --git a/linux-x64/clang/include/clang/Basic/Builtins.h b/linux-x64/clang/include/clang/Basic/Builtins.h
index fa2bcc4..b3d6e45 100644
--- a/linux-x64/clang/include/clang/Basic/Builtins.h
+++ b/linux-x64/clang/include/clang/Basic/Builtins.h
@@ -1,9 +1,8 @@
//===--- Builtins.h - Builtin function header -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -194,6 +193,12 @@
/// argument and whether this function as a va_list argument.
bool isScanfLike(unsigned ID, unsigned &FormatIdx, bool &HasVAListArg);
+ /// Determine whether this builtin has callback behavior (see
+ /// llvm::AbstractCallSites for details). If so, add the index to the
+ /// callback callee argument and the callback payload arguments.
+ bool performsCallback(unsigned ID,
+ llvm::SmallVectorImpl<int> &Encoding) const;
+
/// Return true if this function has no side effects and doesn't
/// read memory, except for possibly errno.
///
@@ -237,7 +242,13 @@
const char *Fmt) const;
};
-}
+/// For a given BuiltinID, return the ID of the fortified variant function. For
+/// instance, if Builtin::BIsprintf is passed, this function will return
+/// Builtin::BI__builtin___sprintf_chk. If BuiltinID doesn't have a fortified
+/// variant, 0 is returned.
+unsigned getFortifiedVariantFunction(unsigned BuiltinID);
+
+} // end namespace Builtin
/// Kinds of BuiltinTemplateDecl.
enum BuiltinTemplateKind : int {
diff --git a/linux-x64/clang/include/clang/Basic/BuiltinsAArch64.def b/linux-x64/clang/include/clang/Basic/BuiltinsAArch64.def
index 49bf831..e9a8a2c 100644
--- a/linux-x64/clang/include/clang/Basic/BuiltinsAArch64.def
+++ b/linux-x64/clang/include/clang/Basic/BuiltinsAArch64.def
@@ -1,9 +1,8 @@
//==- BuiltinsAArch64.def - AArch64 Builtin function database ----*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -33,7 +32,7 @@
// Bit manipulation
BUILTIN(__builtin_arm_rbit, "UiUi", "nc")
-BUILTIN(__builtin_arm_rbit64, "LUiLUi", "nc")
+BUILTIN(__builtin_arm_rbit64, "WUiWUi", "nc")
// HINT
BUILTIN(__builtin_arm_nop, "v", "")
@@ -50,8 +49,8 @@
BUILTIN(__builtin_arm_crc32ch, "UiUiUs", "nc")
BUILTIN(__builtin_arm_crc32w, "UiUiUi", "nc")
BUILTIN(__builtin_arm_crc32cw, "UiUiUi", "nc")
-BUILTIN(__builtin_arm_crc32d, "UiUiLUi", "nc")
-BUILTIN(__builtin_arm_crc32cd, "UiUiLUi", "nc")
+BUILTIN(__builtin_arm_crc32d, "UiUiWUi", "nc")
+BUILTIN(__builtin_arm_crc32cd, "UiUiWUi", "nc")
// Memory barrier
BUILTIN(__builtin_arm_dmb, "vUi", "nc")
@@ -63,10 +62,10 @@
// System Registers
BUILTIN(__builtin_arm_rsr, "UicC*", "nc")
-BUILTIN(__builtin_arm_rsr64, "LUicC*", "nc")
+BUILTIN(__builtin_arm_rsr64, "WUicC*", "nc")
BUILTIN(__builtin_arm_rsrp, "v*cC*", "nc")
BUILTIN(__builtin_arm_wsr, "vcC*Ui", "nc")
-BUILTIN(__builtin_arm_wsr64, "vcC*LUi", "nc")
+BUILTIN(__builtin_arm_wsr64, "vcC*WUi", "nc")
BUILTIN(__builtin_arm_wsrp, "vcC*vC*", "nc")
// MSVC
@@ -104,8 +103,109 @@
TARGET_HEADER_BUILTIN(_InterlockedOr64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
TARGET_HEADER_BUILTIN(_InterlockedXor64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+
+TARGET_HEADER_BUILTIN(_InterlockedExchange8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange8_acq, "ccD*cc", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange8_nf, "ccD*cc", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange8_rel, "ccD*cc", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange16_acq, "ssD*ss", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange16_nf, "ssD*ss", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange16_rel, "ssD*ss", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_acq, "LiLiD*LiLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_nf, "LiLiD*LiLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_rel, "LiLiD*LiLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_acq, "LLiLLiD*LLiLLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_nf, "LLiLLiD*LLiLLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_rel, "LLiLLiD*LLiLLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+
+TARGET_HEADER_BUILTIN(_InterlockedOr8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+
+TARGET_HEADER_BUILTIN(_InterlockedXor8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+
+TARGET_HEADER_BUILTIN(_InterlockedAnd8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+
+TARGET_HEADER_BUILTIN(_InterlockedIncrement16_acq, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement16_nf, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement16_rel, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement_acq, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement_nf, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement_rel, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement64_acq, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement64_nf, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement64_rel, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+
+TARGET_HEADER_BUILTIN(_InterlockedDecrement16_acq, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement16_nf, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement16_rel, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement_acq, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement_nf, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement_rel, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement64_acq, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement64_nf, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement64_rel, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+
TARGET_HEADER_BUILTIN(_ReadWriteBarrier, "v", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
TARGET_HEADER_BUILTIN(__getReg, "ULLii", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_ReadStatusReg, "LLii", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_WriteStatusReg, "viLLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_AddressOfReturnAddress, "v*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
#undef BUILTIN
#undef LANGBUILTIN
diff --git a/linux-x64/clang/include/clang/Basic/BuiltinsAMDGPU.def b/linux-x64/clang/include/clang/Basic/BuiltinsAMDGPU.def
index 35f3a88..20592c7 100644
--- a/linux-x64/clang/include/clang/Basic/BuiltinsAMDGPU.def
+++ b/linux-x64/clang/include/clang/Basic/BuiltinsAMDGPU.def
@@ -1,9 +1,8 @@
//==- BuiltinsAMDGPU.def - AMDGPU Builtin function database ------*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -99,6 +98,8 @@
BUILTIN(__builtin_amdgcn_ds_faddf, "ff*3fIiIiIb", "n")
BUILTIN(__builtin_amdgcn_ds_fminf, "ff*3fIiIiIb", "n")
BUILTIN(__builtin_amdgcn_ds_fmaxf, "ff*3fIiIiIb", "n")
+BUILTIN(__builtin_amdgcn_ds_append, "ii*3", "n")
+BUILTIN(__builtin_amdgcn_ds_consume, "ii*3", "n")
//===----------------------------------------------------------------------===//
// CI+ only builtins.
@@ -107,6 +108,15 @@
TARGET_BUILTIN(__builtin_amdgcn_buffer_wbinvl1_vol, "v", "n", "ci-insts")
//===----------------------------------------------------------------------===//
+// Interpolation builtins.
+//===----------------------------------------------------------------------===//
+BUILTIN(__builtin_amdgcn_interp_p1_f16, "ffUiUibUi", "nc")
+BUILTIN(__builtin_amdgcn_interp_p2_f16, "hffUiUibUi", "nc")
+BUILTIN(__builtin_amdgcn_interp_p1, "ffUiUiUi", "nc")
+BUILTIN(__builtin_amdgcn_interp_p2, "fffUiUiUi", "nc")
+BUILTIN(__builtin_amdgcn_interp_mov, "fUiUiUiUi", "nc")
+
+//===----------------------------------------------------------------------===//
// VI+ only builtins.
//===----------------------------------------------------------------------===//
@@ -122,6 +132,7 @@
TARGET_BUILTIN(__builtin_amdgcn_classh, "bhi", "nc", "16-bit-insts")
TARGET_BUILTIN(__builtin_amdgcn_s_memrealtime, "LUi", "n", "s-memrealtime")
TARGET_BUILTIN(__builtin_amdgcn_mov_dpp, "iiIiIiIiIb", "nc", "dpp")
+TARGET_BUILTIN(__builtin_amdgcn_update_dpp, "iiiIiIiIiIb", "nc", "dpp")
TARGET_BUILTIN(__builtin_amdgcn_s_dcache_wb, "v", "n", "vi-insts")
//===----------------------------------------------------------------------===//
@@ -134,13 +145,13 @@
// Deep learning builtins.
//===----------------------------------------------------------------------===//
-TARGET_BUILTIN(__builtin_amdgcn_fdot2, "fV2hV2hfIb", "nc", "dl-insts")
-TARGET_BUILTIN(__builtin_amdgcn_sdot2, "SiV2SsV2SsSiIb", "nc", "dl-insts")
-TARGET_BUILTIN(__builtin_amdgcn_udot2, "UiV2UsV2UsUiIb", "nc", "dl-insts")
-TARGET_BUILTIN(__builtin_amdgcn_sdot4, "SiSiSiSiIb", "nc", "dl-insts")
-TARGET_BUILTIN(__builtin_amdgcn_udot4, "UiUiUiUiIb", "nc", "dl-insts")
-TARGET_BUILTIN(__builtin_amdgcn_sdot8, "SiSiSiSiIb", "nc", "dl-insts")
-TARGET_BUILTIN(__builtin_amdgcn_udot8, "UiUiUiUiIb", "nc", "dl-insts")
+TARGET_BUILTIN(__builtin_amdgcn_fdot2, "fV2hV2hfIb", "nc", "dot2-insts")
+TARGET_BUILTIN(__builtin_amdgcn_sdot2, "SiV2SsV2SsSiIb", "nc", "dot2-insts")
+TARGET_BUILTIN(__builtin_amdgcn_udot2, "UiV2UsV2UsUiIb", "nc", "dot2-insts")
+TARGET_BUILTIN(__builtin_amdgcn_sdot4, "SiSiSiSiIb", "nc", "dot1-insts")
+TARGET_BUILTIN(__builtin_amdgcn_udot4, "UiUiUiUiIb", "nc", "dot2-insts")
+TARGET_BUILTIN(__builtin_amdgcn_sdot8, "SiSiSiSiIb", "nc", "dot1-insts")
+TARGET_BUILTIN(__builtin_amdgcn_udot8, "UiUiUiUiIb", "nc", "dot2-insts")
//===----------------------------------------------------------------------===//
// Special builtins.
diff --git a/linux-x64/clang/include/clang/Basic/BuiltinsARM.def b/linux-x64/clang/include/clang/Basic/BuiltinsARM.def
index 941d320..0006045 100644
--- a/linux-x64/clang/include/clang/Basic/BuiltinsARM.def
+++ b/linux-x64/clang/include/clang/Basic/BuiltinsARM.def
@@ -1,9 +1,8 @@
//===--- BuiltinsARM.def - ARM Builtin function database ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -230,6 +229,104 @@
TARGET_HEADER_BUILTIN(_InterlockedOr64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
TARGET_HEADER_BUILTIN(_InterlockedXor64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+
+TARGET_HEADER_BUILTIN(_InterlockedExchange8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange8_acq, "ccD*cc", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange8_nf, "ccD*cc", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange8_rel, "ccD*cc", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange16_acq, "ssD*ss", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange16_nf, "ssD*ss", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange16_rel, "ssD*ss", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_acq, "LiLiD*LiLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_nf, "LiLiD*LiLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_rel, "LiLiD*LiLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_acq, "LLiLLiD*LLiLLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_nf, "LLiLLiD*LLiLLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_rel, "LLiLLiD*LLiLLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+
+TARGET_HEADER_BUILTIN(_InterlockedOr8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+
+TARGET_HEADER_BUILTIN(_InterlockedXor8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+
+TARGET_HEADER_BUILTIN(_InterlockedAnd8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+
+TARGET_HEADER_BUILTIN(_InterlockedIncrement16_acq, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement16_nf, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement16_rel, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement_acq, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement_nf, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement_rel, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement64_acq, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement64_nf, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement64_rel, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+
+TARGET_HEADER_BUILTIN(_InterlockedDecrement16_acq, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement16_nf, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement16_rel, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement_acq, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement_nf, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement_rel, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement64_acq, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement64_nf, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement64_rel, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+
#undef BUILTIN
#undef LANGBUILTIN
#undef TARGET_HEADER_BUILTIN
diff --git a/linux-x64/clang/include/clang/Basic/BuiltinsHexagon.def b/linux-x64/clang/include/clang/Basic/BuiltinsHexagon.def
index c204bf3..18029af 100644
--- a/linux-x64/clang/include/clang/Basic/BuiltinsHexagon.def
+++ b/linux-x64/clang/include/clang/Basic/BuiltinsHexagon.def
@@ -1,9 +1,8 @@
//===-- BuiltinsHexagon.def - Hexagon Builtin function database --*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -63,847 +62,6 @@
BUILTIN(__builtin_HEXAGON_S2_storeri_pcr, "vv*iivC*", "")
BUILTIN(__builtin_HEXAGON_S2_storerd_pcr, "vv*iLLivC*", "")
-// The builtins above are not autogenerated from iset.py.
-// Make sure you do not overwrite these.
-
-BUILTIN(__builtin_HEXAGON_C2_cmpeq,"iii","")
-BUILTIN(__builtin_HEXAGON_C2_cmpgt,"iii","")
-BUILTIN(__builtin_HEXAGON_C2_cmpgtu,"iii","")
-BUILTIN(__builtin_HEXAGON_C2_cmpeqp,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_C2_cmpgtp,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_C2_cmpgtup,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A4_rcmpeqi,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_rcmpneqi,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_rcmpeq,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_rcmpneq,"iii","")
-BUILTIN(__builtin_HEXAGON_C2_bitsset,"iii","")
-BUILTIN(__builtin_HEXAGON_C2_bitsclr,"iii","")
-BUILTIN(__builtin_HEXAGON_C4_nbitsset,"iii","")
-BUILTIN(__builtin_HEXAGON_C4_nbitsclr,"iii","")
-BUILTIN(__builtin_HEXAGON_C2_cmpeqi,"iii","")
-BUILTIN(__builtin_HEXAGON_C2_cmpgti,"iii","")
-BUILTIN(__builtin_HEXAGON_C2_cmpgtui,"iii","")
-BUILTIN(__builtin_HEXAGON_C2_cmpgei,"iii","")
-BUILTIN(__builtin_HEXAGON_C2_cmpgeui,"iii","")
-BUILTIN(__builtin_HEXAGON_C2_cmplt,"iii","")
-BUILTIN(__builtin_HEXAGON_C2_cmpltu,"iii","")
-BUILTIN(__builtin_HEXAGON_C2_bitsclri,"iii","")
-BUILTIN(__builtin_HEXAGON_C4_nbitsclri,"iii","")
-BUILTIN(__builtin_HEXAGON_C4_cmpneqi,"iii","")
-BUILTIN(__builtin_HEXAGON_C4_cmpltei,"iii","")
-BUILTIN(__builtin_HEXAGON_C4_cmplteui,"iii","")
-BUILTIN(__builtin_HEXAGON_C4_cmpneq,"iii","")
-BUILTIN(__builtin_HEXAGON_C4_cmplte,"iii","")
-BUILTIN(__builtin_HEXAGON_C4_cmplteu,"iii","")
-BUILTIN(__builtin_HEXAGON_C2_and,"iii","")
-BUILTIN(__builtin_HEXAGON_C2_or,"iii","")
-BUILTIN(__builtin_HEXAGON_C2_xor,"iii","")
-BUILTIN(__builtin_HEXAGON_C2_andn,"iii","")
-BUILTIN(__builtin_HEXAGON_C2_not,"ii","")
-BUILTIN(__builtin_HEXAGON_C2_orn,"iii","")
-BUILTIN(__builtin_HEXAGON_C4_and_and,"iiii","")
-BUILTIN(__builtin_HEXAGON_C4_and_or,"iiii","")
-BUILTIN(__builtin_HEXAGON_C4_or_and,"iiii","")
-BUILTIN(__builtin_HEXAGON_C4_or_or,"iiii","")
-BUILTIN(__builtin_HEXAGON_C4_and_andn,"iiii","")
-BUILTIN(__builtin_HEXAGON_C4_and_orn,"iiii","")
-BUILTIN(__builtin_HEXAGON_C4_or_andn,"iiii","")
-BUILTIN(__builtin_HEXAGON_C4_or_orn,"iiii","")
-BUILTIN(__builtin_HEXAGON_C2_pxfer_map,"ii","")
-BUILTIN(__builtin_HEXAGON_C2_any8,"ii","")
-BUILTIN(__builtin_HEXAGON_C2_all8,"ii","")
-BUILTIN(__builtin_HEXAGON_C2_vitpack,"iii","")
-BUILTIN(__builtin_HEXAGON_C2_mux,"iiii","")
-BUILTIN(__builtin_HEXAGON_C2_muxii,"iiii","")
-BUILTIN(__builtin_HEXAGON_C2_muxir,"iiii","")
-BUILTIN(__builtin_HEXAGON_C2_muxri,"iiii","")
-BUILTIN(__builtin_HEXAGON_C2_vmux,"LLiiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_C2_mask,"LLii","")
-BUILTIN(__builtin_HEXAGON_A2_vcmpbeq,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A4_vcmpbeqi,"iLLii","")
-BUILTIN(__builtin_HEXAGON_A4_vcmpbeq_any,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vcmpbgtu,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A4_vcmpbgtui,"iLLii","")
-BUILTIN(__builtin_HEXAGON_A4_vcmpbgt,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A4_vcmpbgti,"iLLii","")
-BUILTIN(__builtin_HEXAGON_A4_cmpbeq,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_cmpbeqi,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_cmpbgtu,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_cmpbgtui,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_cmpbgt,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_cmpbgti,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_vcmpheq,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vcmphgt,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vcmphgtu,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A4_vcmpheqi,"iLLii","")
-BUILTIN(__builtin_HEXAGON_A4_vcmphgti,"iLLii","")
-BUILTIN(__builtin_HEXAGON_A4_vcmphgtui,"iLLii","")
-BUILTIN(__builtin_HEXAGON_A4_cmpheq,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_cmphgt,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_cmphgtu,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_cmpheqi,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_cmphgti,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_cmphgtui,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_vcmpweq,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vcmpwgt,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vcmpwgtu,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A4_vcmpweqi,"iLLii","")
-BUILTIN(__builtin_HEXAGON_A4_vcmpwgti,"iLLii","")
-BUILTIN(__builtin_HEXAGON_A4_vcmpwgtui,"iLLii","")
-BUILTIN(__builtin_HEXAGON_A4_boundscheck,"iiLLi","")
-BUILTIN(__builtin_HEXAGON_A4_tlbmatch,"iLLii","")
-BUILTIN(__builtin_HEXAGON_C2_tfrpr,"ii","")
-BUILTIN(__builtin_HEXAGON_C2_tfrrp,"ii","")
-BUILTIN(__builtin_HEXAGON_C4_fastcorner9,"iii","")
-BUILTIN(__builtin_HEXAGON_C4_fastcorner9_not,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_acc_hh_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_acc_hh_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_acc_hl_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_acc_hl_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_acc_lh_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_acc_lh_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_acc_ll_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_acc_ll_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_nac_hh_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_nac_hh_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_nac_hl_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_nac_hl_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_nac_lh_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_nac_lh_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_nac_ll_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_nac_ll_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_hh_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_hh_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_hl_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_hl_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_lh_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_lh_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_ll_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_ll_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_hh_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_hh_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_hl_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_hl_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_lh_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_lh_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_ll_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_ll_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_hh_s0,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_hh_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_hl_s0,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_hl_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_lh_s0,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_lh_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_ll_s0,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_ll_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_sat_hh_s0,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_sat_hh_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_sat_hl_s0,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_sat_hl_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_sat_lh_s0,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_sat_lh_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_sat_ll_s0,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_sat_ll_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_hh_s0,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_hh_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_hl_s0,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_hl_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_lh_s0,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_lh_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_ll_s0,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_ll_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_hh_s0,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_hh_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_hl_s0,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_hl_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_lh_s0,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_lh_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_ll_s0,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_ll_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_hh_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_hh_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_hl_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_hl_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_lh_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_lh_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_ll_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_ll_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_hh_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_hh_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_hl_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_hl_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_lh_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_lh_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_ll_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_ll_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_hh_s0,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_hh_s1,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_hl_s0,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_hl_s1,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_lh_s0,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_lh_s1,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_ll_s0,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_ll_s1,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_hh_s0,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_hh_s1,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_hl_s0,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_hl_s1,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_lh_s0,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_lh_s1,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_ll_s0,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_ll_s1,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_hh_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_hh_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_hl_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_hl_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_lh_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_lh_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_ll_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_ll_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_hh_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_hh_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_hl_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_hl_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_lh_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_lh_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_ll_s0,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_ll_s1,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_hh_s0,"Uiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_hh_s1,"Uiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_hl_s0,"Uiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_hl_s1,"Uiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_lh_s0,"Uiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_lh_s1,"Uiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_ll_s0,"Uiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_ll_s1,"Uiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_hh_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_hh_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_hl_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_hl_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_lh_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_lh_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_ll_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_ll_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_hh_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_hh_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_hl_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_hl_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_lh_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_lh_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_ll_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_ll_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_hh_s0,"ULLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_hh_s1,"ULLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_hl_s0,"ULLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_hl_s1,"ULLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_lh_s0,"ULLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_lh_s1,"ULLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_ll_s0,"ULLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyud_ll_s1,"ULLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpysmi,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_macsip,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_macsin,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_dpmpyss_s0,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_dpmpyss_acc_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_dpmpyss_nac_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_dpmpyuu_s0,"ULLiii","")
-BUILTIN(__builtin_HEXAGON_M2_dpmpyuu_acc_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_dpmpyuu_nac_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_up,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_up_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpy_up_s1_sat,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyu_up,"Uiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpysu_up,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_dpmpyss_rnd_s0,"iii","")
-BUILTIN(__builtin_HEXAGON_M4_mac_up_s1_sat,"iiii","")
-BUILTIN(__builtin_HEXAGON_M4_nac_up_s1_sat,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyi,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mpyui,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_maci,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_acci,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_accii,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_nacci,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_naccii,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_subacc,"iiii","")
-BUILTIN(__builtin_HEXAGON_M4_mpyrr_addr,"iiii","")
-BUILTIN(__builtin_HEXAGON_M4_mpyri_addr_u2,"iiii","")
-BUILTIN(__builtin_HEXAGON_M4_mpyri_addr,"iiii","")
-BUILTIN(__builtin_HEXAGON_M4_mpyri_addi,"iiii","")
-BUILTIN(__builtin_HEXAGON_M4_mpyrr_addi,"iiii","")
-BUILTIN(__builtin_HEXAGON_M2_vmpy2s_s0,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_vmpy2s_s1,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_vmac2s_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_vmac2s_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_vmpy2su_s0,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_vmpy2su_s1,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_vmac2su_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_vmac2su_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_vmpy2s_s0pack,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_vmpy2s_s1pack,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_vmac2,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_vmpy2es_s0,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vmpy2es_s1,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vmac2es_s0,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vmac2es_s1,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vmac2es,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vrmac_s0,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vrmpy_s0,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vdmpyrs_s0,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vdmpyrs_s1,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M5_vrmpybuu,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M5_vrmacbuu,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M5_vrmpybsu,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M5_vrmacbsu,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M5_vmpybuu,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M5_vmpybsu,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M5_vmacbuu,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M5_vmacbsu,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M5_vdmpybsu,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M5_vdmacbsu,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vdmacs_s0,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vdmacs_s1,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vdmpys_s0,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vdmpys_s1,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_cmpyrs_s0,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_cmpyrs_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_cmpyrsc_s0,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_cmpyrsc_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_cmacs_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_cmacs_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_cmacsc_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_cmacsc_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_cmpys_s0,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_cmpys_s1,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_cmpysc_s0,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_cmpysc_s1,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_cnacs_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_cnacs_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_cnacsc_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_cnacsc_s1,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_vrcmpys_s1,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_M2_vrcmpys_acc_s1,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_M2_vrcmpys_s1rp,"iLLii","")
-BUILTIN(__builtin_HEXAGON_M2_mmacls_s0,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmacls_s1,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmachs_s0,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmachs_s1,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmpyl_s0,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmpyl_s1,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmpyh_s0,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmpyh_s1,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmacls_rs0,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmacls_rs1,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmachs_rs0,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmachs_rs1,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmpyl_rs0,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmpyl_rs1,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmpyh_rs0,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmpyh_rs1,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M4_vrmpyeh_s0,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M4_vrmpyeh_s1,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M4_vrmpyeh_acc_s0,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M4_vrmpyeh_acc_s1,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M4_vrmpyoh_s0,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M4_vrmpyoh_s1,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M4_vrmpyoh_acc_s0,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M4_vrmpyoh_acc_s1,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_hmmpyl_rs1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_hmmpyh_rs1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_hmmpyl_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_hmmpyh_s1,"iii","")
-BUILTIN(__builtin_HEXAGON_M2_mmaculs_s0,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmaculs_s1,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmacuhs_s0,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmacuhs_s1,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmpyul_s0,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmpyul_s1,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmpyuh_s0,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmpyuh_s1,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmaculs_rs0,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmaculs_rs1,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmacuhs_rs0,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmacuhs_rs1,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmpyul_rs0,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmpyul_rs1,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmpyuh_rs0,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_mmpyuh_rs1,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vrcmaci_s0,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vrcmacr_s0,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vrcmaci_s0c,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vrcmacr_s0c,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_cmaci_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_cmacr_s0,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M2_vrcmpyi_s0,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vrcmpyr_s0,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vrcmpyi_s0c,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vrcmpyr_s0c,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_cmpyi_s0,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M2_cmpyr_s0,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M4_cmpyi_wh,"iLLii","")
-BUILTIN(__builtin_HEXAGON_M4_cmpyr_wh,"iLLii","")
-BUILTIN(__builtin_HEXAGON_M4_cmpyi_whc,"iLLii","")
-BUILTIN(__builtin_HEXAGON_M4_cmpyr_whc,"iLLii","")
-BUILTIN(__builtin_HEXAGON_M2_vcmpy_s0_sat_i,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vcmpy_s0_sat_r,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vcmpy_s1_sat_i,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vcmpy_s1_sat_r,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vcmac_s0_sat_i,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vcmac_s0_sat_r,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S2_vcrotate,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S4_vrcrotate_acc,"LLiLLiLLiii","")
-BUILTIN(__builtin_HEXAGON_S4_vrcrotate,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_S2_vcnegh,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_vrcnegh,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_M4_pmpyw,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M4_vpmpyh,"LLiii","")
-BUILTIN(__builtin_HEXAGON_M4_pmpyw_acc,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_M4_vpmpyh_acc,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_A2_add,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_sub,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_addsat,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_subsat,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_addi,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_addh_l16_ll,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_addh_l16_hl,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_addh_l16_sat_ll,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_addh_l16_sat_hl,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_subh_l16_ll,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_subh_l16_hl,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_subh_l16_sat_ll,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_subh_l16_sat_hl,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_addh_h16_ll,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_addh_h16_lh,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_addh_h16_hl,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_addh_h16_hh,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_addh_h16_sat_ll,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_addh_h16_sat_lh,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_addh_h16_sat_hl,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_addh_h16_sat_hh,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_subh_h16_ll,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_subh_h16_lh,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_subh_h16_hl,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_subh_h16_hh,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_subh_h16_sat_ll,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_subh_h16_sat_lh,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_subh_h16_sat_hl,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_subh_h16_sat_hh,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_aslh,"ii","")
-BUILTIN(__builtin_HEXAGON_A2_asrh,"ii","")
-BUILTIN(__builtin_HEXAGON_A2_addp,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_addpsat,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_addsp,"LLiiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_subp,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_neg,"ii","")
-BUILTIN(__builtin_HEXAGON_A2_negsat,"ii","")
-BUILTIN(__builtin_HEXAGON_A2_abs,"ii","")
-BUILTIN(__builtin_HEXAGON_A2_abssat,"ii","")
-BUILTIN(__builtin_HEXAGON_A2_vconj,"LLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_negp,"LLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_absp,"LLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_max,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_maxu,"Uiii","")
-BUILTIN(__builtin_HEXAGON_A2_min,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_minu,"Uiii","")
-BUILTIN(__builtin_HEXAGON_A2_maxp,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_maxup,"ULLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_minp,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_minup,"ULLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_tfr,"ii","")
-BUILTIN(__builtin_HEXAGON_A2_tfrsi,"ii","")
-BUILTIN(__builtin_HEXAGON_A2_tfrp,"LLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_tfrpi,"LLii","")
-BUILTIN(__builtin_HEXAGON_A2_zxtb,"ii","")
-BUILTIN(__builtin_HEXAGON_A2_sxtb,"ii","")
-BUILTIN(__builtin_HEXAGON_A2_zxth,"ii","")
-BUILTIN(__builtin_HEXAGON_A2_sxth,"ii","")
-BUILTIN(__builtin_HEXAGON_A2_combinew,"LLiii","")
-BUILTIN(__builtin_HEXAGON_A4_combineri,"LLiii","")
-BUILTIN(__builtin_HEXAGON_A4_combineir,"LLiii","")
-BUILTIN(__builtin_HEXAGON_A2_combineii,"LLiii","")
-BUILTIN(__builtin_HEXAGON_A2_combine_hh,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_combine_hl,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_combine_lh,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_combine_ll,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_tfril,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_tfrih,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_and,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_or,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_xor,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_not,"ii","")
-BUILTIN(__builtin_HEXAGON_M2_xor_xacc,"iiii","")
-BUILTIN(__builtin_HEXAGON_M4_xor_xacc,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A4_andn,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_orn,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_andnp,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A4_ornp,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S4_addaddi,"iiii","")
-BUILTIN(__builtin_HEXAGON_S4_subaddi,"iiii","")
-BUILTIN(__builtin_HEXAGON_M4_and_and,"iiii","")
-BUILTIN(__builtin_HEXAGON_M4_and_andn,"iiii","")
-BUILTIN(__builtin_HEXAGON_M4_and_or,"iiii","")
-BUILTIN(__builtin_HEXAGON_M4_and_xor,"iiii","")
-BUILTIN(__builtin_HEXAGON_M4_or_and,"iiii","")
-BUILTIN(__builtin_HEXAGON_M4_or_andn,"iiii","")
-BUILTIN(__builtin_HEXAGON_M4_or_or,"iiii","")
-BUILTIN(__builtin_HEXAGON_M4_or_xor,"iiii","")
-BUILTIN(__builtin_HEXAGON_S4_or_andix,"iiii","")
-BUILTIN(__builtin_HEXAGON_S4_or_andi,"iiii","")
-BUILTIN(__builtin_HEXAGON_S4_or_ori,"iiii","")
-BUILTIN(__builtin_HEXAGON_M4_xor_and,"iiii","")
-BUILTIN(__builtin_HEXAGON_M4_xor_or,"iiii","")
-BUILTIN(__builtin_HEXAGON_M4_xor_andn,"iiii","")
-BUILTIN(__builtin_HEXAGON_A2_subri,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_andir,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_orir,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_andp,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_orp,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_xorp,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_notp,"LLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_sxtw,"LLii","")
-BUILTIN(__builtin_HEXAGON_A2_sat,"iLLi","")
-BUILTIN(__builtin_HEXAGON_A2_roundsat,"iLLi","")
-BUILTIN(__builtin_HEXAGON_A2_sath,"ii","")
-BUILTIN(__builtin_HEXAGON_A2_satuh,"ii","")
-BUILTIN(__builtin_HEXAGON_A2_satub,"ii","")
-BUILTIN(__builtin_HEXAGON_A2_satb,"ii","")
-BUILTIN(__builtin_HEXAGON_A2_vaddub,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vaddb_map,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vaddubs,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vaddh,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vaddhs,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vadduhs,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A5_vaddhubs,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vaddw,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vaddws,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S4_vxaddsubw,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S4_vxsubaddw,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S4_vxaddsubh,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S4_vxsubaddh,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S4_vxaddsubhr,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S4_vxsubaddhr,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_svavgh,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_svavghs,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_svnavgh,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_svaddh,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_svaddhs,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_svadduhs,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_svsubh,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_svsubhs,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_svsubuhs,"iii","")
-BUILTIN(__builtin_HEXAGON_A2_vraddub,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vraddub_acc,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vraddh,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vradduh,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vsubub,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vsubb_map,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vsububs,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vsubh,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vsubhs,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vsubuhs,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vsubw,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vsubws,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vabsh,"LLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vabshsat,"LLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vabsw,"LLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vabswsat,"LLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vabsdiffw,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M2_vabsdiffh,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vrsadub,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vrsadub_acc,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vavgub,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vavguh,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vavgh,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vnavgh,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vavgw,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vnavgw,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vavgwr,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vnavgwr,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vavgwcr,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vnavgwcr,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vavghcr,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vnavghcr,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vavguw,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vavguwr,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vavgubr,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vavguhr,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vavghr,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vnavghr,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A4_round_ri,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_round_rr,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_round_ri_sat,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_round_rr_sat,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_cround_ri,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_cround_rr,"iii","")
-BUILTIN(__builtin_HEXAGON_A4_vrminh,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_A4_vrmaxh,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_A4_vrminuh,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_A4_vrmaxuh,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_A4_vrminw,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_A4_vrmaxw,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_A4_vrminuw,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_A4_vrmaxuw,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_A2_vminb,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vmaxb,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vminub,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vmaxub,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vminh,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vmaxh,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vminuh,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vmaxuh,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vminw,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vmaxw,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vminuw,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A2_vmaxuw,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A4_modwrapu,"iii","")
-BUILTIN(__builtin_HEXAGON_F2_sfadd,"fff","")
-BUILTIN(__builtin_HEXAGON_F2_sfsub,"fff","")
-BUILTIN(__builtin_HEXAGON_F2_sfmpy,"fff","")
-BUILTIN(__builtin_HEXAGON_F2_sffma,"ffff","")
-BUILTIN(__builtin_HEXAGON_F2_sffma_sc,"ffffi","")
-BUILTIN(__builtin_HEXAGON_F2_sffms,"ffff","")
-BUILTIN(__builtin_HEXAGON_F2_sffma_lib,"ffff","")
-BUILTIN(__builtin_HEXAGON_F2_sffms_lib,"ffff","")
-BUILTIN(__builtin_HEXAGON_F2_sfcmpeq,"iff","")
-BUILTIN(__builtin_HEXAGON_F2_sfcmpgt,"iff","")
-BUILTIN(__builtin_HEXAGON_F2_sfcmpge,"iff","")
-BUILTIN(__builtin_HEXAGON_F2_sfcmpuo,"iff","")
-BUILTIN(__builtin_HEXAGON_F2_sfmax,"fff","")
-BUILTIN(__builtin_HEXAGON_F2_sfmin,"fff","")
-BUILTIN(__builtin_HEXAGON_F2_sfclass,"ifi","")
-BUILTIN(__builtin_HEXAGON_F2_sfimm_p,"fi","")
-BUILTIN(__builtin_HEXAGON_F2_sfimm_n,"fi","")
-BUILTIN(__builtin_HEXAGON_F2_sffixupn,"fff","")
-BUILTIN(__builtin_HEXAGON_F2_sffixupd,"fff","")
-BUILTIN(__builtin_HEXAGON_F2_sffixupr,"ff","")
-BUILTIN(__builtin_HEXAGON_F2_dfcmpeq,"idd","")
-BUILTIN(__builtin_HEXAGON_F2_dfcmpgt,"idd","")
-BUILTIN(__builtin_HEXAGON_F2_dfcmpge,"idd","")
-BUILTIN(__builtin_HEXAGON_F2_dfcmpuo,"idd","")
-BUILTIN(__builtin_HEXAGON_F2_dfclass,"idi","")
-BUILTIN(__builtin_HEXAGON_F2_dfimm_p,"di","")
-BUILTIN(__builtin_HEXAGON_F2_dfimm_n,"di","")
-BUILTIN(__builtin_HEXAGON_F2_conv_sf2df,"df","")
-BUILTIN(__builtin_HEXAGON_F2_conv_df2sf,"fd","")
-BUILTIN(__builtin_HEXAGON_F2_conv_uw2sf,"fi","")
-BUILTIN(__builtin_HEXAGON_F2_conv_uw2df,"di","")
-BUILTIN(__builtin_HEXAGON_F2_conv_w2sf,"fi","")
-BUILTIN(__builtin_HEXAGON_F2_conv_w2df,"di","")
-BUILTIN(__builtin_HEXAGON_F2_conv_ud2sf,"fLLi","")
-BUILTIN(__builtin_HEXAGON_F2_conv_ud2df,"dLLi","")
-BUILTIN(__builtin_HEXAGON_F2_conv_d2sf,"fLLi","")
-BUILTIN(__builtin_HEXAGON_F2_conv_d2df,"dLLi","")
-BUILTIN(__builtin_HEXAGON_F2_conv_sf2uw,"if","")
-BUILTIN(__builtin_HEXAGON_F2_conv_sf2w,"if","")
-BUILTIN(__builtin_HEXAGON_F2_conv_sf2ud,"LLif","")
-BUILTIN(__builtin_HEXAGON_F2_conv_sf2d,"LLif","")
-BUILTIN(__builtin_HEXAGON_F2_conv_df2uw,"id","")
-BUILTIN(__builtin_HEXAGON_F2_conv_df2w,"id","")
-BUILTIN(__builtin_HEXAGON_F2_conv_df2ud,"LLid","")
-BUILTIN(__builtin_HEXAGON_F2_conv_df2d,"LLid","")
-BUILTIN(__builtin_HEXAGON_F2_conv_sf2uw_chop,"if","")
-BUILTIN(__builtin_HEXAGON_F2_conv_sf2w_chop,"if","")
-BUILTIN(__builtin_HEXAGON_F2_conv_sf2ud_chop,"LLif","")
-BUILTIN(__builtin_HEXAGON_F2_conv_sf2d_chop,"LLif","")
-BUILTIN(__builtin_HEXAGON_F2_conv_df2uw_chop,"id","")
-BUILTIN(__builtin_HEXAGON_F2_conv_df2w_chop,"id","")
-BUILTIN(__builtin_HEXAGON_F2_conv_df2ud_chop,"LLid","")
-BUILTIN(__builtin_HEXAGON_F2_conv_df2d_chop,"LLid","")
-BUILTIN(__builtin_HEXAGON_S2_asr_r_r,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_r_r,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_r_r,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_lsl_r_r,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_r_p,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_r_p,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_r_p,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsl_r_p,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_r_r_acc,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_r_r_acc,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_r_r_acc,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_lsl_r_r_acc,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_r_p_acc,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_r_p_acc,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_r_p_acc,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsl_r_p_acc,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_r_r_nac,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_r_r_nac,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_r_r_nac,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_lsl_r_r_nac,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_r_p_nac,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_r_p_nac,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_r_p_nac,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsl_r_p_nac,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_r_r_and,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_r_r_and,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_r_r_and,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_lsl_r_r_and,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_r_r_or,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_r_r_or,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_r_r_or,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_lsl_r_r_or,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_r_p_and,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_r_p_and,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_r_p_and,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsl_r_p_and,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_r_p_or,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_r_p_or,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_r_p_or,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsl_r_p_or,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_r_p_xor,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_r_p_xor,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_r_p_xor,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsl_r_p_xor,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_r_r_sat,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_r_r_sat,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_i_r,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_i_r,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_i_r,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_i_p,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_i_p,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_i_p,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_i_r_acc,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_i_r_acc,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_i_r_acc,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_i_p_acc,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_i_p_acc,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_i_p_acc,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_i_r_nac,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_i_r_nac,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_i_r_nac,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_i_p_nac,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_i_p_nac,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_i_p_nac,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_i_r_xacc,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_i_r_xacc,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_i_p_xacc,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_i_p_xacc,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_i_r_and,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_i_r_and,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_i_r_and,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_i_r_or,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_i_r_or,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_i_r_or,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_i_p_and,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_i_p_and,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_i_p_and,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_i_p_or,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_i_p_or,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_i_p_or,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_i_r_sat,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_i_r_rnd,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_i_r_rnd_goodsyntax,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_i_p_rnd,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_i_p_rnd_goodsyntax,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S4_lsli,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_addasl_rrri,"iiii","")
-BUILTIN(__builtin_HEXAGON_S4_andi_asl_ri,"iiii","")
-BUILTIN(__builtin_HEXAGON_S4_ori_asl_ri,"iiii","")
-BUILTIN(__builtin_HEXAGON_S4_addi_asl_ri,"iiii","")
-BUILTIN(__builtin_HEXAGON_S4_subi_asl_ri,"iiii","")
-BUILTIN(__builtin_HEXAGON_S4_andi_lsr_ri,"iiii","")
-BUILTIN(__builtin_HEXAGON_S4_ori_lsr_ri,"iiii","")
-BUILTIN(__builtin_HEXAGON_S4_addi_lsr_ri,"iiii","")
-BUILTIN(__builtin_HEXAGON_S4_subi_lsr_ri,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_valignib,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_valignrb,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_vspliceib,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_vsplicerb,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_vsplatrh,"LLii","")
-BUILTIN(__builtin_HEXAGON_S2_vsplatrb,"ii","")
-BUILTIN(__builtin_HEXAGON_S2_insert,"iiiii","")
-BUILTIN(__builtin_HEXAGON_S2_tableidxb_goodsyntax,"iiiii","")
-BUILTIN(__builtin_HEXAGON_S2_tableidxh_goodsyntax,"iiiii","")
-BUILTIN(__builtin_HEXAGON_S2_tableidxw_goodsyntax,"iiiii","")
-BUILTIN(__builtin_HEXAGON_S2_tableidxd_goodsyntax,"iiiii","")
-BUILTIN(__builtin_HEXAGON_A4_bitspliti,"LLiii","")
-BUILTIN(__builtin_HEXAGON_A4_bitsplit,"LLiii","")
-BUILTIN(__builtin_HEXAGON_S4_extract,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_extractu,"iiii","")
-BUILTIN(__builtin_HEXAGON_S2_insertp,"LLiLLiLLiii","")
-BUILTIN(__builtin_HEXAGON_S4_extractp,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_S2_extractup,"LLiLLiii","")
-BUILTIN(__builtin_HEXAGON_S2_insert_rp,"iiiLLi","")
-BUILTIN(__builtin_HEXAGON_S4_extract_rp,"iiLLi","")
-BUILTIN(__builtin_HEXAGON_S2_extractu_rp,"iiLLi","")
-BUILTIN(__builtin_HEXAGON_S2_insertp_rp,"LLiLLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S4_extractp_rp,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S2_extractup_rp,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S2_tstbit_i,"iii","")
-BUILTIN(__builtin_HEXAGON_S4_ntstbit_i,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_setbit_i,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_togglebit_i,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_clrbit_i,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_tstbit_r,"iii","")
-BUILTIN(__builtin_HEXAGON_S4_ntstbit_r,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_setbit_r,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_togglebit_r,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_clrbit_r,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_i_vh,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_i_vh,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_i_vh,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_r_vh,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S5_asrhub_rnd_sat_goodsyntax,"iLLii","")
-BUILTIN(__builtin_HEXAGON_S5_asrhub_sat,"iLLii","")
-BUILTIN(__builtin_HEXAGON_S5_vasrhrnd_goodsyntax,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_r_vh,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_r_vh,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsl_r_vh,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_i_vw,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_i_svw_trun,"iLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_r_svw_trun,"iLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_i_vw,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_i_vw,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asr_r_vw,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_asl_r_vw,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsr_r_vw,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_lsl_r_vw,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_vrndpackwh,"iLLi","")
-BUILTIN(__builtin_HEXAGON_S2_vrndpackwhs,"iLLi","")
-BUILTIN(__builtin_HEXAGON_S2_vsxtbh,"LLii","")
-BUILTIN(__builtin_HEXAGON_S2_vzxtbh,"LLii","")
-BUILTIN(__builtin_HEXAGON_S2_vsathub,"iLLi","")
-BUILTIN(__builtin_HEXAGON_S2_svsathub,"ii","")
-BUILTIN(__builtin_HEXAGON_S2_svsathb,"ii","")
-BUILTIN(__builtin_HEXAGON_S2_vsathb,"iLLi","")
-BUILTIN(__builtin_HEXAGON_S2_vtrunohb,"iLLi","")
-BUILTIN(__builtin_HEXAGON_S2_vtrunewh,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S2_vtrunowh,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S2_vtrunehb,"iLLi","")
-BUILTIN(__builtin_HEXAGON_S2_vsxthw,"LLii","")
-BUILTIN(__builtin_HEXAGON_S2_vzxthw,"LLii","")
-BUILTIN(__builtin_HEXAGON_S2_vsatwh,"iLLi","")
-BUILTIN(__builtin_HEXAGON_S2_vsatwuh,"iLLi","")
-BUILTIN(__builtin_HEXAGON_S2_packhl,"LLiii","")
-BUILTIN(__builtin_HEXAGON_A2_swiz,"ii","")
-BUILTIN(__builtin_HEXAGON_S2_vsathub_nopack,"LLiLLi","")
-BUILTIN(__builtin_HEXAGON_S2_vsathb_nopack,"LLiLLi","")
-BUILTIN(__builtin_HEXAGON_S2_vsatwh_nopack,"LLiLLi","")
-BUILTIN(__builtin_HEXAGON_S2_vsatwuh_nopack,"LLiLLi","")
-BUILTIN(__builtin_HEXAGON_S2_shuffob,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S2_shuffeb,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S2_shuffoh,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S2_shuffeh,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S5_popcountp,"iLLi","")
-BUILTIN(__builtin_HEXAGON_S4_parity,"iii","")
-BUILTIN(__builtin_HEXAGON_S2_parityp,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S2_lfsp,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S2_clbnorm,"ii","")
-BUILTIN(__builtin_HEXAGON_S4_clbaddi,"iii","")
-BUILTIN(__builtin_HEXAGON_S4_clbpnorm,"iLLi","")
-BUILTIN(__builtin_HEXAGON_S4_clbpaddi,"iLLii","")
-BUILTIN(__builtin_HEXAGON_S2_clb,"ii","")
-BUILTIN(__builtin_HEXAGON_S2_cl0,"ii","")
-BUILTIN(__builtin_HEXAGON_S2_cl1,"ii","")
-BUILTIN(__builtin_HEXAGON_S2_clbp,"iLLi","")
-BUILTIN(__builtin_HEXAGON_S2_cl0p,"iLLi","")
-BUILTIN(__builtin_HEXAGON_S2_cl1p,"iLLi","")
-BUILTIN(__builtin_HEXAGON_S2_brev,"ii","")
-BUILTIN(__builtin_HEXAGON_S2_brevp,"LLiLLi","")
-BUILTIN(__builtin_HEXAGON_S2_ct0,"ii","")
-BUILTIN(__builtin_HEXAGON_S2_ct1,"ii","")
-BUILTIN(__builtin_HEXAGON_S2_ct0p,"iLLi","")
-BUILTIN(__builtin_HEXAGON_S2_ct1p,"iLLi","")
-BUILTIN(__builtin_HEXAGON_S2_interleave,"LLiLLi","")
-BUILTIN(__builtin_HEXAGON_S2_deinterleave,"LLiLLi","")
BUILTIN(__builtin_HEXAGON_prefetch,"vv*","")
BUILTIN(__builtin_HEXAGON_Y2_dccleana,"vv*","")
BUILTIN(__builtin_HEXAGON_Y2_dccleaninva,"vv*","")
@@ -912,617 +70,6 @@
BUILTIN(__builtin_HEXAGON_Y4_l2fetch,"vv*Ui","")
BUILTIN(__builtin_HEXAGON_Y5_l2fetch,"vv*LLUi","")
-BUILTIN(__builtin_HEXAGON_S6_rol_i_r,"iii","")
-BUILTIN(__builtin_HEXAGON_S6_rol_i_p,"LLiLLii","")
-BUILTIN(__builtin_HEXAGON_S6_rol_i_r_acc,"iiii","")
-BUILTIN(__builtin_HEXAGON_S6_rol_i_p_acc,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S6_rol_i_r_nac,"iiii","")
-BUILTIN(__builtin_HEXAGON_S6_rol_i_p_nac,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S6_rol_i_r_xacc,"iiii","")
-BUILTIN(__builtin_HEXAGON_S6_rol_i_p_xacc,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S6_rol_i_r_and,"iiii","")
-BUILTIN(__builtin_HEXAGON_S6_rol_i_r_or,"iiii","")
-BUILTIN(__builtin_HEXAGON_S6_rol_i_p_and,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S6_rol_i_p_or,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_S2_cabacencbin,"LLiLLiLLii","")
-BUILTIN(__builtin_HEXAGON_V6_valignb,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_valignb_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlalignb,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlalignb_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_valignbi,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_valignbi_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlalignbi,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlalignbi_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vror,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vror_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vunpackub,"V32iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vunpackub_128B,"V64iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vunpackb,"V32iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vunpackb_128B,"V64iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vunpackuh,"V32iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vunpackuh_128B,"V64iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vunpackh,"V32iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vunpackh_128B,"V64iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vunpackob,"V32iV32iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vunpackob_128B,"V64iV64iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vunpackoh,"V32iV32iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vunpackoh_128B,"V64iV64iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vpackeb,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vpackeb_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vpackeh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vpackeh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vpackob,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vpackob_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vpackoh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vpackoh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vpackhub_sat,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vpackhub_sat_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vpackhb_sat,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vpackhb_sat_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vpackwuh_sat,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vpackwuh_sat_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vpackwh_sat,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vpackwh_sat_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vzb,"V32iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vzb_128B,"V64iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsb,"V32iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsb_128B,"V64iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vzh,"V32iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vzh_128B,"V64iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsh,"V32iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsh_128B,"V64iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpybus,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpybus_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpybus_acc,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpybus_acc_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpybus_dv,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpybus_dv_128B,"V64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpybus_dv_acc,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpybus_dv_acc_128B,"V64iV64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhb,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_acc,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_acc_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_dv,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_dv_128B,"V64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_dv_acc,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_dv_acc_128B,"V64iV64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhvsat,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhvsat_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhvsat_acc,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhvsat_acc_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhsat,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhsat_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhsat_acc,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhsat_acc_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhisat,"V16iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhisat_128B,"V32iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhisat_acc,"V16iV16iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhisat_acc_128B,"V32iV32iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhsusat,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhsusat_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhsusat_acc,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhsusat_acc_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhsuisat,"V16iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhsuisat_128B,"V32iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhsuisat_acc,"V16iV16iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdmpyhsuisat_acc_128B,"V32iV32iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vtmpyb,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vtmpyb_128B,"V64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vtmpyb_acc,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vtmpyb_acc_128B,"V64iV64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vtmpybus,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vtmpybus_128B,"V64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vtmpybus_acc,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vtmpybus_acc_128B,"V64iV64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vtmpyhb,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vtmpyhb_128B,"V64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vtmpyhb_acc,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vtmpyhb_acc_128B,"V64iV64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpyub,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpyub_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpyub_acc,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpyub_acc_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpyubv,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpyubv_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpyubv_acc,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpyubv_acc_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybv,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybv_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybv_acc,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybv_acc_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpyubi,"V32iV32iii","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpyubi_128B,"V64iV64iii","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpyubi_acc,"V32iV32iV32iii","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpyubi_acc_128B,"V64iV64iV64iii","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybus,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybus_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybus_acc,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybus_acc_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybusi,"V32iV32iii","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybusi_128B,"V64iV64iii","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybusi_acc,"V32iV32iV32iii","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybusi_acc_128B,"V64iV64iV64iii","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybusv,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybusv_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybusv_acc,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybusv_acc_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vdsaduh,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdsaduh_128B,"V64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdsaduh_acc,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdsaduh_acc_128B,"V64iV64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vrsadubi,"V32iV32iii","")
-BUILTIN(__builtin_HEXAGON_V6_vrsadubi_128B,"V64iV64iii","")
-BUILTIN(__builtin_HEXAGON_V6_vrsadubi_acc,"V32iV32iV32iii","")
-BUILTIN(__builtin_HEXAGON_V6_vrsadubi_acc_128B,"V64iV64iV64iii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrw,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrw_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vaslw,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vaslw_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlsrw,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlsrw_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrwv,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vasrwv_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaslwv,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaslwv_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vlsrwv,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vlsrwv_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vasrh,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrh_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vaslh,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vaslh_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlsrh,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlsrh_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrhv,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vasrhv_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaslhv,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaslhv_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vlsrhv,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vlsrhv_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vasrwh,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrwh_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrwhsat,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrwhsat_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrwhrndsat,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrwhrndsat_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrwuhsat,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrwuhsat_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vroundwh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vroundwh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vroundwuh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vroundwuh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vasrhubsat,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrhubsat_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrhubrndsat,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrhubrndsat_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrhbrndsat,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrhbrndsat_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vroundhb,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vroundhb_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vroundhub,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vroundhub_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaslw_acc,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vaslw_acc_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrw_acc,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrw_acc_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vaddb,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddb_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubb,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubb_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddb_dv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddb_dv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubb_dv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubb_dv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddh_dv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddh_dv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubh_dv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubh_dv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddw,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddw_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubw,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubw_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddw_dv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddw_dv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubw_dv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubw_dv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddubsat,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddubsat_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddubsat_dv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddubsat_dv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vsububsat,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsububsat_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsububsat_dv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsububsat_dv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vadduhsat,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vadduhsat_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vadduhsat_dv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vadduhsat_dv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubuhsat,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubuhsat_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubuhsat_dv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubuhsat_dv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddhsat,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddhsat_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddhsat_dv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddhsat_dv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubhsat,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubhsat_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubhsat_dv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubhsat_dv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddwsat,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddwsat_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddwsat_dv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddwsat_dv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubwsat,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubwsat_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubwsat_dv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubwsat_dv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vavgub,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vavgub_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vavgubrnd,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vavgubrnd_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vavguh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vavguh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vavguhrnd,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vavguhrnd_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vavgh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vavgh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vavghrnd,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vavghrnd_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vnavgh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vnavgh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vavgw,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vavgw_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vavgwrnd,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vavgwrnd_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vnavgw,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vnavgw_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsdiffub,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsdiffub_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsdiffuh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsdiffuh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsdiffh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsdiffh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsdiffw,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsdiffw_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vnavgub,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vnavgub_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddubh,"V32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddubh_128B,"V64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsububh,"V32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsububh_128B,"V64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddhw,"V32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddhw_128B,"V64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubhw,"V32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubhw_128B,"V64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vadduhw,"V32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vadduhw_128B,"V64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubuhw,"V32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubuhw_128B,"V64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vd0,"V16i","")
-BUILTIN(__builtin_HEXAGON_V6_vd0_128B,"V32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddbq,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddbq_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubbq,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubbq_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddbnq,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddbnq_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubbnq,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubbnq_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddhq,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddhq_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubhq,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubhq_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddhnq,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddhnq_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubhnq,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubhnq_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddwq,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddwq_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubwq,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubwq_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddwnq,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddwnq_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubwnq,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubwnq_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsh,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsh_128B,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsh_sat,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsh_sat_128B,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsw,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsw_128B,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsw_sat,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsw_sat_128B,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpybv,"V32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpybv_128B,"V64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpybv_acc,"V32iV32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpybv_acc_128B,"V64iV64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyubv,"V32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyubv_128B,"V64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyubv_acc,"V32iV32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyubv_acc_128B,"V64iV64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpybusv,"V32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpybusv_128B,"V64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpybusv_acc,"V32iV32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpybusv_acc_128B,"V64iV64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpabusv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpabusv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpabuuv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpabuuv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyhv,"V32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyhv_128B,"V64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyhv_acc,"V32iV32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyhv_acc_128B,"V64iV64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyuhv,"V32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyuhv_128B,"V64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyuhv_acc,"V32iV32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyuhv_acc_128B,"V64iV64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyhvsrs,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyhvsrs_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyhus,"V32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyhus_128B,"V64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyhus_acc,"V32iV32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyhus_acc_128B,"V64iV64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyih,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyih_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyih_acc,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyih_acc_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyewuh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyewuh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyowh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyowh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyowh_rnd,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyowh_rnd_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyowh_sacc,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyowh_sacc_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyowh_rnd_sacc,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyowh_rnd_sacc_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyieoh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyieoh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiewuh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiewuh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiowh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiowh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiewh_acc,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiewh_acc_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiewuh_acc,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiewuh_acc_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyub,"V32iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyub_128B,"V64iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyub_acc,"V32iV32iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyub_acc_128B,"V64iV64iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpybus,"V32iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpybus_128B,"V64iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpybus_acc,"V32iV32iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpybus_acc_128B,"V64iV64iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpabus,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpabus_128B,"V64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpabus_acc,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpabus_acc_128B,"V64iV64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpahb,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpahb_128B,"V64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpahb_acc,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpahb_acc_128B,"V64iV64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyh,"V32iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyh_128B,"V64iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyhsat_acc,"V32iV32iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyhsat_acc_128B,"V64iV64iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyhss,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyhss_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyhsrs,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyhsrs_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyuh,"V32iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyuh_128B,"V64iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyuh_acc,"V32iV32iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyuh_acc_128B,"V64iV64iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyihb,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyihb_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyihb_acc,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyihb_acc_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiwb,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiwb_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiwb_acc,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiwb_acc_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiwh,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiwh_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiwh_acc,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiwh_acc_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vand,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vand_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vor,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vor_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vxor,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vxor_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vnot,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vnot_128B,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vandqrt,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vandqrt_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vandqrt_acc,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vandqrt_acc_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vandvrt,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vandvrt_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vandvrt_acc,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vandvrt_acc_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vgtw,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtw_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtw_and,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtw_and_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtw_or,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtw_or_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtw_xor,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtw_xor_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_veqw,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_veqw_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_veqw_and,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_veqw_and_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_veqw_or,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_veqw_or_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_veqw_xor,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_veqw_xor_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgth,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgth_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgth_and,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgth_and_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgth_or,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgth_or_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgth_xor,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgth_xor_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_veqh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_veqh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_veqh_and,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_veqh_and_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_veqh_or,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_veqh_or_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_veqh_xor,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_veqh_xor_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtb,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtb_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtb_and,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtb_and_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtb_or,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtb_or_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtb_xor,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtb_xor_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_veqb,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_veqb_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_veqb_and,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_veqb_and_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_veqb_or,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_veqb_or_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_veqb_xor,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_veqb_xor_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtuw,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtuw_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtuw_and,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtuw_and_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtuw_or,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtuw_or_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtuw_xor,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtuw_xor_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtuh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtuh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtuh_and,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtuh_and_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtuh_or,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtuh_or_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtuh_xor,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtuh_xor_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtub,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtub_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtub_and,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtub_and_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtub_or,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtub_or_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtub_xor,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vgtub_xor_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_pred_or,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_pred_or_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_pred_and,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_pred_and_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_pred_not,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_pred_not_128B,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_pred_xor,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_pred_xor_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_pred_and_n,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_pred_and_n_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_pred_or_n,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_pred_or_n_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_pred_scalar2,"V16ii","")
-BUILTIN(__builtin_HEXAGON_V6_pred_scalar2_128B,"V32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmux,"V16iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmux_128B,"V32iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vswap,"V32iV16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vswap_128B,"V64iV32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmaxub,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmaxub_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vminub,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vminub_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmaxuh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmaxuh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vminuh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vminuh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmaxh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmaxh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vminh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vminh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmaxw,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmaxw_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vminw,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vminw_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsathub,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsathub_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsatwh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsatwh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vshuffeb,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vshuffeb_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vshuffob,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vshuffob_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vshufeh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vshufeh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vshufoh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vshufoh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vshuffvdd,"V32iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vshuffvdd_128B,"V64iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdealvdd,"V32iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vdealvdd_128B,"V64iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vshufoeh,"V32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vshufoeh_128B,"V64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vshufoeb,"V32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vshufoeb_128B,"V64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vdealh,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vdealh_128B,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vdealb,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vdealb_128B,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vdealb4w,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vdealb4w_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vshuffh,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vshuffh_128B,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vshuffb,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vshuffb_128B,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_extractw,"iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_extractw_128B,"iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vinsertwr,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vinsertwr_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_lvsplatw,"V16ii","")
-BUILTIN(__builtin_HEXAGON_V6_lvsplatw_128B,"V32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vassign,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vassign_128B,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vcombine,"V32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vcombine_128B,"V64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vdelta,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vdelta_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vrdelta,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vrdelta_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vcl0w,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vcl0w_128B,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vcl0h,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vcl0h_128B,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vnormamtw,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vnormamtw_128B,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vnormamth,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vnormamth_128B,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vpopcounth,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vpopcounth_128B,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvvb,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvvb_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvvb_oracc,"V16iV16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvvb_oracc_128B,"V32iV32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvwh,"V32iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvwh_128B,"V64iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvwh_oracc,"V32iV32iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvwh_oracc_128B,"V64iV64iV32iV32ii","")
-
-BUILTIN(__builtin_HEXAGON_V6_hi,"V16iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_lo,"V16iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_hi_128B,"V32iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_lo_128B,"V32iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vassignp,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vassignp_128B,"V64iV64i","")
-
BUILTIN(__builtin_HEXAGON_V6_vS32b_qpred_ai,"vV16iv*V16i","")
BUILTIN(__builtin_HEXAGON_V6_vS32b_nqpred_ai,"vV16iv*V16i","")
BUILTIN(__builtin_HEXAGON_V6_vS32b_nt_qpred_ai,"vV16iv*V16i","")
@@ -1540,160 +87,6 @@
BUILTIN(__builtin_HEXAGON_V6_vmaskedstorentq_128B,"vV32iv*V32i","")
BUILTIN(__builtin_HEXAGON_V6_vmaskedstorentnq_128B,"vV32iv*V32i","")
-BUILTIN(__builtin_HEXAGON_M6_vabsdiffb,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_M6_vabsdiffub,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A6_vminub_RdP,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S6_vsplatrbp,"LLii","")
-BUILTIN(__builtin_HEXAGON_S6_vtrunehb_ppp,"LLiLLiLLi","")
-BUILTIN(__builtin_HEXAGON_S6_vtrunohb_ppp,"LLiLLiLLi","")
-
-BUILTIN(__builtin_HEXAGON_V6_vlsrb,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlsrb_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrwuhrndsat,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrwuhrndsat_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasruwuhrndsat,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasruwuhrndsat_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrhbsat,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrhbsat_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vrounduwuh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vrounduwuh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vrounduhub,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vrounduhub_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vadduwsat,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vadduwsat_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vadduwsat_dv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vadduwsat_dv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubuwsat,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubuwsat_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubuwsat_dv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubuwsat_dv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddbsat,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddbsat_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddbsat_dv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddbsat_dv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubbsat,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubbsat_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubbsat_dv,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubbsat_dv_128B,"V64iV64iV64i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddububb_sat,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddububb_sat_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubububb_sat,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsubububb_sat_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddhw_acc,"V32iV32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddhw_acc_128B,"V64iV64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vadduhw_acc,"V32iV32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vadduhw_acc_128B,"V64iV64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddubh_acc,"V32iV32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddubh_acc_128B,"V64iV64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyewuh_64,"V32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyewuh_64_128B,"V64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyowh_64_acc,"V32iV32iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyowh_64_acc_128B,"V64iV64iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpauhb,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpauhb_128B,"V64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpauhb_acc,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpauhb_acc_128B,"V64iV64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiwub,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiwub_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiwub_acc,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyiwub_acc_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vandnqrt,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vandnqrt_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vandnqrt_acc,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vandnqrt_acc_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vandvqv,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vandvqv_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vandvnqv,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vandvnqv_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_pred_scalar2v2,"V16ii","")
-BUILTIN(__builtin_HEXAGON_V6_pred_scalar2v2_128B,"V32ii","")
-BUILTIN(__builtin_HEXAGON_V6_shuffeqw,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_shuffeqw_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_shuffeqh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_shuffeqh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmaxb,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vmaxb_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vminb,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vminb_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vsatuwuh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vsatuwuh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_lvsplath,"V16ii","")
-BUILTIN(__builtin_HEXAGON_V6_lvsplath_128B,"V32ii","")
-BUILTIN(__builtin_HEXAGON_V6_lvsplatb,"V16ii","")
-BUILTIN(__builtin_HEXAGON_V6_lvsplatb_128B,"V32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vaddclbw,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddclbw_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddclbh,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vaddclbh_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvvbi,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvvbi_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvvb_oracci,"V16iV16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvvb_oracci_128B,"V32iV32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvwhi,"V32iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvwhi_128B,"V64iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvwh_oracci,"V32iV32iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvwh_oracci_128B,"V64iV64iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvvb_nm,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvvb_nm_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvwh_nm,"V32iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vlutvwh_nm_128B,"V64iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vaddcarry,"V16iV16iV16iv*","")
-BUILTIN(__builtin_HEXAGON_V6_vaddcarry_128B,"V32iV32iV32iv*","")
-BUILTIN(__builtin_HEXAGON_V6_vsubcarry,"V16iV16iV16iv*","")
-BUILTIN(__builtin_HEXAGON_V6_vsubcarry_128B,"V32iV32iV32iv*","")
-
-BUILTIN(__builtin_HEXAGON_A6_vcmpbeq_notany,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_A6_vcmpbeq_notany_128B,"iLLiLLi","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpyub_rtt,"V32iV16iLLi","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpyub_rtt_128B,"V64iV32iLLi","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpyub_rtt_acc,"V32iV32iV16iLLi","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpyub_rtt_acc_128B,"V64iV64iV32iLLi","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybub_rtt,"V32iV16iLLi","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybub_rtt_128B,"V64iV32iLLi","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybub_rtt_acc,"V32iV32iV16iLLi","")
-BUILTIN(__builtin_HEXAGON_V6_vrmpybub_rtt_acc_128B,"V64iV64iV32iLLi","")
-BUILTIN(__builtin_HEXAGON_V6_vasruwuhsat,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasruwuhsat_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasruhubsat,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasruhubsat_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasruhubrndsat,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasruhubrndsat_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vaslh_acc,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vaslh_acc_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrh_acc,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vasrh_acc_128B,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vavguw,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vavguw_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vavguwrnd,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vavguwrnd_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vavgb,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vavgb_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vavgbrnd,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vavgbrnd_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vnavgb,"V16iV16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vnavgb_128B,"V32iV32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsb,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsb_128B,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsb_sat,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vabsb_sat_128B,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vmpabuu,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpabuu_128B,"V64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpabuu_acc,"V32iV32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpabuu_acc_128B,"V64iV64iV64ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyh_acc,"V32iV32iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyh_acc_128B,"V64iV64iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpahhsat,"V16iV16iV16iLLi","")
-BUILTIN(__builtin_HEXAGON_V6_vmpahhsat_128B,"V32iV32iV32iLLi","")
-BUILTIN(__builtin_HEXAGON_V6_vmpauhuhsat,"V16iV16iV16iLLi","")
-BUILTIN(__builtin_HEXAGON_V6_vmpauhuhsat_128B,"V32iV32iV32iLLi","")
-BUILTIN(__builtin_HEXAGON_V6_vmpsuhuhsat,"V16iV16iV16iLLi","")
-BUILTIN(__builtin_HEXAGON_V6_vmpsuhuhsat_128B,"V32iV32iV32iLLi","")
-BUILTIN(__builtin_HEXAGON_V6_vlut4,"V16iV16iLLi","")
-BUILTIN(__builtin_HEXAGON_V6_vlut4_128B,"V32iV32iLLi","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyuhe,"V16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyuhe_128B,"V32iV32ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyuhe_acc,"V16iV16iV16ii","")
-BUILTIN(__builtin_HEXAGON_V6_vmpyuhe_acc_128B,"V32iV32iV32ii","")
BUILTIN(__builtin_HEXAGON_V6_vgathermw,"vv*iiV16i","")
BUILTIN(__builtin_HEXAGON_V6_vgathermw_128B,"vv*iiV32i","")
BUILTIN(__builtin_HEXAGON_V6_vgathermh,"vv*iiV16i","")
@@ -1724,15 +117,1701 @@
BUILTIN(__builtin_HEXAGON_V6_vscattermhwq_128B,"vV32iiiV64iV32i","")
BUILTIN(__builtin_HEXAGON_V6_vscattermhw_add,"viiV32iV16i","")
BUILTIN(__builtin_HEXAGON_V6_vscattermhw_add_128B,"viiV64iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vprefixqb,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vprefixqb_128B,"V32iV32i","")
-BUILTIN(__builtin_HEXAGON_V6_vprefixqh,"V16iV16i","")
-BUILTIN(__builtin_HEXAGON_V6_vprefixqh_128B,"V32iV32i","")
+
+// ---------------------------------------------------------------------
+// Auto-generated definitions.
+
+// V5 Scalar Instructions.
+
+BUILTIN(__builtin_HEXAGON_S2_asr_r_p_or,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_S2_vsatwh,"iLLi","")
+BUILTIN(__builtin_HEXAGON_S2_tableidxd_goodsyntax,"iiiUIiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpysu_up,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_ll_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_ll_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_cmpysc_s1,"LLiii","")
+BUILTIN(__builtin_HEXAGON_M2_cmpysc_s0,"LLiii","")
+BUILTIN(__builtin_HEXAGON_M4_cmpyi_whc,"iLLii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_lh_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_lh_s0,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_tableidxb_goodsyntax,"iiiUIiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_shuffoh,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_F2_sfmax,"fff","")
+BUILTIN(__builtin_HEXAGON_A2_vabswsat,"LLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_asr_i_r,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_asr_i_p,"LLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_A4_combineri,"LLiiIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_hl_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_M4_vpmpyh_acc,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_vcmpy_s0_sat_i,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_notp,"LLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_hl_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_hl_s0,"iii","")
+BUILTIN(__builtin_HEXAGON_C4_or_and,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_vmac2s_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_vmac2s_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_S2_brevp,"LLiLLi","")
+BUILTIN(__builtin_HEXAGON_M4_pmpyw_acc,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_S2_cl1,"ii","")
+BUILTIN(__builtin_HEXAGON_C4_cmplte,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mmpyul_s0,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vaddws,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_maxup,"ULLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A4_vcmphgti,"iLLiIi","")
+BUILTIN(__builtin_HEXAGON_S2_interleave,"LLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vrcmpyi_s0,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_abssat,"ii","")
+BUILTIN(__builtin_HEXAGON_A2_vcmpwgtu,"iLLiLLi","")
+BUILTIN(__builtin_HEXAGON_C2_cmpgtu,"iii","")
+BUILTIN(__builtin_HEXAGON_C2_cmpgtp,"iLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A4_cmphgtui,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_C2_cmpgti,"iiIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyi,"iii","")
+BUILTIN(__builtin_HEXAGON_F2_conv_df2uw_chop,"id","")
+BUILTIN(__builtin_HEXAGON_A4_cmpheq,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_lh_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_lh_s0,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_i_r_xacc,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_vrcnegh,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_S2_extractup,"LLiLLiUIiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_asr_i_p_rnd_goodsyntax,"LLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_S4_ntstbit_r,"iii","")
+BUILTIN(__builtin_HEXAGON_F2_conv_w2sf,"fi","")
+BUILTIN(__builtin_HEXAGON_C2_not,"ii","")
+BUILTIN(__builtin_HEXAGON_C2_tfrpr,"ii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_ll_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_ll_s0,"iii","")
+BUILTIN(__builtin_HEXAGON_A4_cmpbgt,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_asr_r_r_and,"iiii","")
+BUILTIN(__builtin_HEXAGON_A4_rcmpneqi,"iiIi","")
+BUILTIN(__builtin_HEXAGON_S2_asl_i_r_nac,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_subacc,"iiii","")
+BUILTIN(__builtin_HEXAGON_A2_orp,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_up,"Uiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_lh_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_S2_asr_i_vh,"LLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_asr_i_vw,"LLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_A4_cmpbgtu,"iii","")
+BUILTIN(__builtin_HEXAGON_A4_vcmpbeq_any,"iLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A4_cmpbgti,"iiIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_lh_s1,"LLiii","")
+BUILTIN(__builtin_HEXAGON_S2_asl_r_p_nac,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_i_r_nac,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_addsp,"LLiiLLi","")
+BUILTIN(__builtin_HEXAGON_S4_vxsubaddw,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A4_vcmpheqi,"iLLiIi","")
+BUILTIN(__builtin_HEXAGON_S4_vxsubaddh,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M4_pmpyw,"LLiii","")
+BUILTIN(__builtin_HEXAGON_S2_vsathb,"iLLi","")
+BUILTIN(__builtin_HEXAGON_S2_asr_r_p_and,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_lh_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_lh_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_S2_lsl_r_p_acc,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_A2_pxorf,"iiii","")
+BUILTIN(__builtin_HEXAGON_C2_cmpgei,"iiIi","")
+BUILTIN(__builtin_HEXAGON_A2_vsubub,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_asl_i_p,"LLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_asl_i_r,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_A4_vrminuw,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_F2_sffma,"ffff","")
+BUILTIN(__builtin_HEXAGON_A2_absp,"LLiLLi","")
+BUILTIN(__builtin_HEXAGON_C2_all8,"ii","")
+BUILTIN(__builtin_HEXAGON_A4_vrminuh,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_F2_sffma_lib,"ffff","")
+BUILTIN(__builtin_HEXAGON_M4_vrmpyoh_s0,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M4_vrmpyoh_s1,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_C2_bitsset,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpysip,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpysin,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_A4_boundscheck,"iiLLi","")
+BUILTIN(__builtin_HEXAGON_M5_vrmpybuu,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_C4_fastcorner9,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_vrcmpys_s1rp,"iLLii","")
+BUILTIN(__builtin_HEXAGON_A2_neg,"ii","")
+BUILTIN(__builtin_HEXAGON_A2_subsat,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_asl_r_r,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_asl_r_p,"LLiLLii","")
+BUILTIN(__builtin_HEXAGON_A2_vnavgh,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_hl_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_F2_conv_ud2df,"dLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vnavgw,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_asl_i_r_acc,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_S4_subi_lsr_ri,"iUIiiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_vzxthw,"LLii","")
+BUILTIN(__builtin_HEXAGON_F2_sfadd,"fff","")
+BUILTIN(__builtin_HEXAGON_A2_sub,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_vmac2su_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_vmac2su_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_dpmpyss_s0,"LLiii","")
+BUILTIN(__builtin_HEXAGON_S2_insert,"iiiUIiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_packhl,"LLiii","")
+BUILTIN(__builtin_HEXAGON_A4_vcmpwgti,"iLLiIi","")
+BUILTIN(__builtin_HEXAGON_A2_vavguwr,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_asl_r_r_and,"iiii","")
+BUILTIN(__builtin_HEXAGON_A2_svsubhs,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_addh_l16_hl,"iii","")
+BUILTIN(__builtin_HEXAGON_M4_and_and,"iiii","")
+BUILTIN(__builtin_HEXAGON_F2_conv_d2df,"dLLi","")
+BUILTIN(__builtin_HEXAGON_C2_cmpgtui,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_vconj,"LLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_r_vw,"LLiLLii","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_r_vh,"LLiLLii","")
+BUILTIN(__builtin_HEXAGON_A2_subh_l16_hl,"iii","")
+BUILTIN(__builtin_HEXAGON_S4_vxsubaddhr,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_clbp,"iLLi","")
+BUILTIN(__builtin_HEXAGON_S2_deinterleave,"LLiLLi","")
+BUILTIN(__builtin_HEXAGON_C2_any8,"ii","")
+BUILTIN(__builtin_HEXAGON_S2_togglebit_r,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_togglebit_i,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_F2_conv_uw2sf,"fi","")
+BUILTIN(__builtin_HEXAGON_S2_vsathb_nopack,"LLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_cmacs_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_cmacs_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_sat_hh_s0,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_sat_hh_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mmacuhs_s1,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mmacuhs_s0,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_clrbit_r,"iii","")
+BUILTIN(__builtin_HEXAGON_C4_or_andn,"iiii","")
+BUILTIN(__builtin_HEXAGON_S2_asl_r_r_nac,"iiii","")
+BUILTIN(__builtin_HEXAGON_S2_asl_i_p_acc,"LLiLLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_A4_vcmpwgtui,"iLLiUIi","")
+BUILTIN(__builtin_HEXAGON_M4_vrmpyoh_acc_s0,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M4_vrmpyoh_acc_s1,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A4_vrmaxh,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_A2_vcmpbeq,"iLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vcmphgt,"iLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vnavgwcr,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vrcmacr_s0c,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vavgwcr,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_asl_i_p_xacc,"LLiLLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_A4_vrmaxw,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_A2_vnavghr,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M4_cmpyi_wh,"iLLii","")
+BUILTIN(__builtin_HEXAGON_A2_tfrsi,"iIi","")
+BUILTIN(__builtin_HEXAGON_S2_asr_i_r_acc,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_svnavgh,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_i_r,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_vmac2,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_A4_vcmphgtui,"iLLiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_svavgh,"iii","")
+BUILTIN(__builtin_HEXAGON_M4_vrmpyeh_acc_s0,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M4_vrmpyeh_acc_s1,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_i_p,"LLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_combine_hl,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_up,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_combine_hh,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_negsat,"ii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_hl_s0,"LLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_hl_s1,"LLiii","")
+BUILTIN(__builtin_HEXAGON_A4_bitsplit,"LLiii","")
+BUILTIN(__builtin_HEXAGON_A2_vabshsat,"LLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyui,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_addh_l16_sat_ll,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_lsl_r_r_and,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mmpyul_rs0,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_asr_i_r_rnd_goodsyntax,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_r_p_nac,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_C2_cmplt,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_cmacr_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M4_or_and,"iiii","")
+BUILTIN(__builtin_HEXAGON_M4_mpyrr_addi,"iUIiii","")
+BUILTIN(__builtin_HEXAGON_S4_or_andi,"iiiIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_sat_hl_s0,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_sat_hl_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_M4_mpyrr_addr,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mmachs_rs0,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mmachs_rs1,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vrcmpyr_s0c,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_hl_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_ll_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_F2_sffixupn,"fff","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_lh_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_lh_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_hh_s0,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_hh_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_vadduhs,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vsubuhs,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_subh_h16_hl,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_subh_h16_hh,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_xorp,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A4_tfrpcp,"LLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_addh_h16_lh,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_addh_h16_sat_hl,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_addh_h16_ll,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_addh_h16_sat_hh,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_zxtb,"ii","")
+BUILTIN(__builtin_HEXAGON_A2_zxth,"ii","")
+BUILTIN(__builtin_HEXAGON_A2_vnavgwr,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M4_or_xor,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_hh_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_hh_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M5_vmacbsu,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_dpmpyuu_acc_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_hl_s0,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_hl_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_F2_sffms_lib,"ffff","")
+BUILTIN(__builtin_HEXAGON_C4_cmpneqi,"iiIi","")
+BUILTIN(__builtin_HEXAGON_M4_and_xor,"iiii","")
+BUILTIN(__builtin_HEXAGON_A2_sat,"iLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_lh_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_lh_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_A2_addsat,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_svavghs,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_vrsadub_acc,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_C2_bitsclri,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_subh_h16_sat_hh,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_subh_h16_sat_hl,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mmaculs_rs0,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mmaculs_rs1,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vradduh,"iLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A4_addp_c,"LLiLLiLLiv*","")
+BUILTIN(__builtin_HEXAGON_C2_xor,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_lsl_r_r_acc,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mmpyh_rs1,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mmpyh_rs0,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_F2_conv_df2ud_chop,"LLid","")
+BUILTIN(__builtin_HEXAGON_C4_or_or,"iiii","")
+BUILTIN(__builtin_HEXAGON_S4_vxaddsubhr,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_vsathub,"iLLi","")
+BUILTIN(__builtin_HEXAGON_F2_conv_df2sf,"fd","")
+BUILTIN(__builtin_HEXAGON_M2_hmmpyh_rs1,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_hmmpyh_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_vavgwr,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_tableidxh_goodsyntax,"iiiUIiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_sxth,"ii","")
+BUILTIN(__builtin_HEXAGON_A2_sxtb,"ii","")
+BUILTIN(__builtin_HEXAGON_C4_or_orn,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_vrcmaci_s0c,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_sxtw,"LLii","")
+BUILTIN(__builtin_HEXAGON_M2_vabsdiffh,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_acc_lh_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_acc_lh_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_hmmpyl_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_cl1p,"iLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vabsdiffw,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A4_andnp,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_C2_vmux,"LLiiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_parityp,"iLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_i_p_and,"LLiLLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_asr_i_r_or,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_ll_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_ll_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_F2_sfcmpeq,"iff","")
+BUILTIN(__builtin_HEXAGON_A2_vaddb_map,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_r_r_nac,"iiii","")
+BUILTIN(__builtin_HEXAGON_A2_vcmpheq,"iLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_clbnorm,"ii","")
+BUILTIN(__builtin_HEXAGON_M2_cnacsc_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_cnacsc_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_S4_subaddi,"iiIii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_hl_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_hl_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_S5_vasrhrnd_goodsyntax,"LLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_tstbit_r,"iii","")
+BUILTIN(__builtin_HEXAGON_S4_vrcrotate,"LLiLLiiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_mmachs_s1,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mmachs_s0,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_tstbit_i,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_up_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_extractu_rp,"iiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mmpyuh_rs0,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_i_vw,"LLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_ll_s0,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_ll_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_M4_or_or,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_hh_s1,"Uiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_hh_s0,"Uiii","")
+BUILTIN(__builtin_HEXAGON_S2_asl_r_p_acc,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_lh_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_lh_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_sat_ll_s0,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_sat_ll_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_F2_conv_w2df,"di","")
+BUILTIN(__builtin_HEXAGON_A2_subh_l16_sat_hl,"iii","")
+BUILTIN(__builtin_HEXAGON_C2_cmpeqi,"iiIi","")
+BUILTIN(__builtin_HEXAGON_S2_asl_i_r_and,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_vcnegh,"LLiLLii","")
+BUILTIN(__builtin_HEXAGON_A4_vcmpweqi,"iLLiIi","")
+BUILTIN(__builtin_HEXAGON_M2_vdmpyrs_s0,"iLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vdmpyrs_s1,"iLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M4_xor_xacc,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vdmpys_s1,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vdmpys_s0,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vavgubr,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_hl_s1,"Uiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_hl_s0,"Uiii","")
+BUILTIN(__builtin_HEXAGON_S2_asl_r_r_acc,"iiii","")
+BUILTIN(__builtin_HEXAGON_S2_cl0p,"iLLi","")
+BUILTIN(__builtin_HEXAGON_S2_valignib,"LLiLLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_F2_sffixupd,"fff","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_hl_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_hl_s0,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_cmacsc_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_cmacsc_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_S2_ct1,"ii","")
+BUILTIN(__builtin_HEXAGON_S2_ct0,"ii","")
+BUILTIN(__builtin_HEXAGON_M2_dpmpyuu_nac_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mmpyul_rs1,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S4_ntstbit_i,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_F2_sffixupr,"ff","")
+BUILTIN(__builtin_HEXAGON_S2_asr_r_p_xor,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_hl_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_hl_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_A2_vcmphgtu,"iLLiLLi","")
+BUILTIN(__builtin_HEXAGON_C2_andn,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_vmpy2s_s0pack,"iii","")
+BUILTIN(__builtin_HEXAGON_S4_addaddi,"iiiIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_ll_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_hl_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_A4_rcmpeqi,"iiIi","")
+BUILTIN(__builtin_HEXAGON_M4_xor_and,"iiii","")
+BUILTIN(__builtin_HEXAGON_S2_asl_i_p_and,"LLiLLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_mmpyuh_rs1,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_asr_r_r_or,"iiii","")
+BUILTIN(__builtin_HEXAGON_A4_round_ri,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_max,"iii","")
+BUILTIN(__builtin_HEXAGON_A4_round_rr,"iii","")
+BUILTIN(__builtin_HEXAGON_A4_combineii,"LLiIiUIi","")
+BUILTIN(__builtin_HEXAGON_A4_combineir,"LLiIii","")
+BUILTIN(__builtin_HEXAGON_C4_and_orn,"iiii","")
+BUILTIN(__builtin_HEXAGON_M5_vmacbuu,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_A4_rcmpeq,"iii","")
+BUILTIN(__builtin_HEXAGON_M4_cmpyr_whc,"iLLii","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_i_r_acc,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_vzxtbh,"LLii","")
+BUILTIN(__builtin_HEXAGON_M2_mmacuhs_rs1,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_asr_r_r_sat,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_combinew,"LLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_acc_ll_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_acc_ll_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_cmpyi_s0,"LLiii","")
+BUILTIN(__builtin_HEXAGON_S2_asl_r_p_or,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_S4_ori_asl_ri,"iUIiiUIi","")
+BUILTIN(__builtin_HEXAGON_C4_nbitsset,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_hh_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_hh_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_ll_s1,"Uiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_ll_s0,"Uiii","")
+BUILTIN(__builtin_HEXAGON_A2_addh_l16_ll,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_r_r_and,"iiii","")
+BUILTIN(__builtin_HEXAGON_A4_modwrapu,"iii","")
+BUILTIN(__builtin_HEXAGON_A4_rcmpneq,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_hh_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_hh_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_F2_sfimm_p,"fUIi","")
+BUILTIN(__builtin_HEXAGON_F2_sfimm_n,"fUIi","")
+BUILTIN(__builtin_HEXAGON_M4_cmpyr_wh,"iLLii","")
+BUILTIN(__builtin_HEXAGON_S2_lsl_r_p_and,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_A2_vavgub,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_F2_conv_d2sf,"fLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vavguh,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A4_cmpbeqi,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_F2_sfcmpuo,"iff","")
+BUILTIN(__builtin_HEXAGON_A2_vavguw,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_asr_i_p_nac,"LLiLLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_vsatwh_nopack,"LLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_hh_s0,"LLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_hh_s1,"LLiii","")
+BUILTIN(__builtin_HEXAGON_S2_lsl_r_p_or,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_A2_minu,"Uiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_sat_lh_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_M4_or_andn,"iiii","")
+BUILTIN(__builtin_HEXAGON_A2_minp,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S4_or_andix,"iiiIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_lh_s0,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_lh_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mmpyuh_s0,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mmpyuh_s1,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_lh_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_F2_sfcmpge,"iff","")
+BUILTIN(__builtin_HEXAGON_F2_sfmin,"fff","")
+BUILTIN(__builtin_HEXAGON_F2_sfcmpgt,"iff","")
+BUILTIN(__builtin_HEXAGON_M4_vpmpyh,"LLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mmacuhs_rs0,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_lh_s1,"LLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_lh_s0,"LLiii","")
+BUILTIN(__builtin_HEXAGON_A2_roundsat,"iLLi","")
+BUILTIN(__builtin_HEXAGON_S2_ct1p,"iLLi","")
+BUILTIN(__builtin_HEXAGON_S4_extract_rp,"iiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_lsl_r_r_or,"iiii","")
+BUILTIN(__builtin_HEXAGON_C4_cmplteui,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_S4_addi_lsr_ri,"iUIiiUIi","")
+BUILTIN(__builtin_HEXAGON_A4_tfrcpp,"LLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_asr_i_svw_trun,"iLLiUIi","")
+BUILTIN(__builtin_HEXAGON_A4_cmphgti,"iiIi","")
+BUILTIN(__builtin_HEXAGON_A4_vrminh,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_A4_vrminw,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_A4_cmphgtu,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_insertp_rp,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vnavghcr,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S4_subi_asl_ri,"iUIiiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_lsl_r_vh,"LLiLLii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_hh_s0,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_vsubws,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_sath,"ii","")
+BUILTIN(__builtin_HEXAGON_S2_asl_r_p_xor,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_A2_satb,"ii","")
+BUILTIN(__builtin_HEXAGON_C2_cmpltu,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_insertp,"LLiLLiLLiUIiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_ll_s1,"LLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_ll_s0,"LLiii","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_i_p_nac,"LLiLLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_extractup_rp,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S4_vxaddsubw,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S4_vxaddsubh,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_asrh,"ii","")
+BUILTIN(__builtin_HEXAGON_S4_extractp_rp,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_r_r_acc,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_ll_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_ll_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_C2_or,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mmpyul_s1,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vrcmacr_s0,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_xor,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_add,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_vsububs,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vmpy2s_s1,"LLiii","")
+BUILTIN(__builtin_HEXAGON_M2_vmpy2s_s0,"LLiii","")
+BUILTIN(__builtin_HEXAGON_A2_vraddub_acc,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_F2_sfinvsqrta,"ff","")
+BUILTIN(__builtin_HEXAGON_S2_ct0p,"iLLi","")
+BUILTIN(__builtin_HEXAGON_A2_svaddh,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_vcrotate,"LLiLLii","")
+BUILTIN(__builtin_HEXAGON_A2_aslh,"ii","")
+BUILTIN(__builtin_HEXAGON_A2_subh_h16_lh,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_subh_h16_ll,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_hmmpyl_rs1,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_asr_r_p,"LLiLLii","")
+BUILTIN(__builtin_HEXAGON_S2_vsplatrh,"LLii","")
+BUILTIN(__builtin_HEXAGON_S2_asr_r_r,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_addh_h16_hl,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_vsplatrb,"ii","")
+BUILTIN(__builtin_HEXAGON_A2_addh_h16_hh,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_cmpyr_s0,"LLiii","")
+BUILTIN(__builtin_HEXAGON_M2_dpmpyss_rnd_s0,"iii","")
+BUILTIN(__builtin_HEXAGON_C2_muxri,"iiIii","")
+BUILTIN(__builtin_HEXAGON_M2_vmac2es_s0,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vmac2es_s1,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_C2_pxfer_map,"ii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_lh_s1,"Uiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_lh_s0,"Uiii","")
+BUILTIN(__builtin_HEXAGON_S2_asl_i_r_or,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_hl_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_hl_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_S2_asr_r_p_nac,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_A2_vaddw,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_asr_i_r_and,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_vaddh,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_lh_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_lh_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_C2_cmpeqp,"iLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M4_mpyri_addi,"iUIiiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_not,"ii","")
+BUILTIN(__builtin_HEXAGON_S4_andi_lsr_ri,"iUIiiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_macsip,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_tfrcrr,"ii","")
+BUILTIN(__builtin_HEXAGON_M2_macsin,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_C2_orn,"iii","")
+BUILTIN(__builtin_HEXAGON_M4_and_andn,"iiii","")
+BUILTIN(__builtin_HEXAGON_F2_sfmpy,"fff","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_hh_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_hh_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_r_p_acc,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_S2_asr_r_vw,"LLiLLii","")
+BUILTIN(__builtin_HEXAGON_M4_and_or,"iiii","")
+BUILTIN(__builtin_HEXAGON_S2_asr_r_vh,"LLiLLii","")
+BUILTIN(__builtin_HEXAGON_C2_mask,"LLii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_nac_hh_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_nac_hh_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_up_s1_sat,"iii","")
+BUILTIN(__builtin_HEXAGON_A4_vcmpbgt,"iLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M5_vrmacbsu,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_tableidxw_goodsyntax,"iiiUIiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_vrsadub,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_tfrrcr,"ii","")
+BUILTIN(__builtin_HEXAGON_M2_vrcmpys_acc_s1,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_F2_dfcmpge,"idd","")
+BUILTIN(__builtin_HEXAGON_M2_accii,"iiiIi","")
+BUILTIN(__builtin_HEXAGON_A5_vaddhubs,"iLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vmaxw,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vmaxb,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vmaxh,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_vsxthw,"LLii","")
+BUILTIN(__builtin_HEXAGON_S4_andi_asl_ri,"iUIiiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_asl_i_p_nac,"LLiLLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_lsl_r_p_xor,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_C2_cmpgt,"iii","")
+BUILTIN(__builtin_HEXAGON_F2_conv_df2d_chop,"LLid","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_hl_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_hl_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_F2_conv_sf2w,"if","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_r_p_or,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_F2_sfclass,"ifUIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_lh_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M4_xor_andn,"iiii","")
+BUILTIN(__builtin_HEXAGON_S2_addasl_rrri,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_M5_vdmpybsu,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_hh_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_hh_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_A2_addi,"iiIi","")
+BUILTIN(__builtin_HEXAGON_A2_addp,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vmpy2s_s1pack,"iii","")
+BUILTIN(__builtin_HEXAGON_S4_clbpnorm,"iLLi","")
+BUILTIN(__builtin_HEXAGON_A4_round_rr_sat,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_nacci,"iiii","")
+BUILTIN(__builtin_HEXAGON_S2_shuffeh,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_i_r_and,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_hh_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_hh_s0,"iii","")
+BUILTIN(__builtin_HEXAGON_F2_conv_sf2uw,"if","")
+BUILTIN(__builtin_HEXAGON_A2_vsubh,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_F2_conv_sf2ud,"LLif","")
+BUILTIN(__builtin_HEXAGON_A2_vsubw,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vcmpwgt,"iLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M4_xor_or,"iiii","")
+BUILTIN(__builtin_HEXAGON_F2_conv_sf2uw_chop,"if","")
+BUILTIN(__builtin_HEXAGON_S2_asl_r_vw,"LLiLLii","")
+BUILTIN(__builtin_HEXAGON_S2_vsatwuh_nopack,"LLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_asl_r_vh,"LLiLLii","")
+BUILTIN(__builtin_HEXAGON_A2_svsubuhs,"iii","")
+BUILTIN(__builtin_HEXAGON_M5_vmpybsu,"LLiii","")
+BUILTIN(__builtin_HEXAGON_A2_subh_l16_sat_ll,"iii","")
+BUILTIN(__builtin_HEXAGON_C4_and_and,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_hl_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_hl_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_r_p,"LLiLLii","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_r_r,"iii","")
+BUILTIN(__builtin_HEXAGON_A4_subp_c,"LLiLLiLLiv*","")
+BUILTIN(__builtin_HEXAGON_A2_vsubhs,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_C2_vitpack,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_vavguhr,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_vsplicerb,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_C4_nbitsclr,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_vcmpbgtu,"iLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_cmpys_s1,"LLiii","")
+BUILTIN(__builtin_HEXAGON_M2_cmpys_s0,"LLiii","")
+BUILTIN(__builtin_HEXAGON_F2_dfcmpuo,"idd","")
+BUILTIN(__builtin_HEXAGON_S2_shuffob,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_C2_and,"iii","")
+BUILTIN(__builtin_HEXAGON_S5_popcountp,"iLLi","")
+BUILTIN(__builtin_HEXAGON_S4_extractp,"LLiLLiUIiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_cl0,"ii","")
+BUILTIN(__builtin_HEXAGON_A4_vcmpbgti,"iLLiIi","")
+BUILTIN(__builtin_HEXAGON_M2_mmacls_s1,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mmacls_s0,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_C4_cmpneq,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_vmac2es,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vdmacs_s0,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vdmacs_s1,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_ll_s0,"ULLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_ll_s1,"ULLiii","")
+BUILTIN(__builtin_HEXAGON_S2_clb,"ii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_nac_ll_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_nac_ll_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_hl_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_hl_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_maci,"iiii","")
+BUILTIN(__builtin_HEXAGON_A2_vmaxuh,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A4_bitspliti,"LLiiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_vmaxub,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_hh_s0,"ULLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_hh_s1,"ULLiii","")
+BUILTIN(__builtin_HEXAGON_M2_vrmac_s0,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_sat_lh_s0,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_asl_r_r_sat,"iii","")
+BUILTIN(__builtin_HEXAGON_F2_conv_sf2d,"LLif","")
+BUILTIN(__builtin_HEXAGON_S2_asr_r_r_nac,"iiii","")
+BUILTIN(__builtin_HEXAGON_F2_dfimm_n,"dUIi","")
+BUILTIN(__builtin_HEXAGON_A4_cmphgt,"iii","")
+BUILTIN(__builtin_HEXAGON_F2_dfimm_p,"dUIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_lh_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_vcmpy_s1_sat_r,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M4_mpyri_addr_u2,"iiUIii","")
+BUILTIN(__builtin_HEXAGON_M2_vcmpy_s1_sat_i,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_lsl_r_p_nac,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_M5_vrmacbuu,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S5_asrhub_rnd_sat_goodsyntax,"iLLiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_vspliceib,"LLiLLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_dpmpyss_acc_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_cnacs_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_cnacs_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_A2_maxu,"Uiii","")
+BUILTIN(__builtin_HEXAGON_A2_maxp,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_andir,"iiIi","")
+BUILTIN(__builtin_HEXAGON_F2_sfrecipa,"fff","")
+BUILTIN(__builtin_HEXAGON_A2_combineii,"LLiIiIi","")
+BUILTIN(__builtin_HEXAGON_A4_orn,"iii","")
+BUILTIN(__builtin_HEXAGON_A4_cmpbgtui,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_r_r_or,"iiii","")
+BUILTIN(__builtin_HEXAGON_A4_vcmpbeqi,"iLLiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_lsl_r_r,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_lsl_r_p,"LLiLLii","")
+BUILTIN(__builtin_HEXAGON_A2_or,"iii","")
+BUILTIN(__builtin_HEXAGON_F2_dfcmpeq,"idd","")
+BUILTIN(__builtin_HEXAGON_C2_cmpeq,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_tfrp,"LLiLLi","")
+BUILTIN(__builtin_HEXAGON_C4_and_andn,"iiii","")
+BUILTIN(__builtin_HEXAGON_S2_vsathub_nopack,"LLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_satuh,"ii","")
+BUILTIN(__builtin_HEXAGON_A2_satub,"ii","")
+BUILTIN(__builtin_HEXAGON_M2_vrcmpys_s1,"LLiLLii","")
+BUILTIN(__builtin_HEXAGON_S4_or_ori,"iiiIi","")
+BUILTIN(__builtin_HEXAGON_C4_fastcorner9_not,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_tfrih,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_tfril,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_M4_mpyri_addr,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_vtrunehb,"iLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vabsw,"LLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vabsh,"LLiLLi","")
+BUILTIN(__builtin_HEXAGON_F2_sfsub,"fff","")
+BUILTIN(__builtin_HEXAGON_C2_muxii,"iiIiIi","")
+BUILTIN(__builtin_HEXAGON_C2_muxir,"iiiIi","")
+BUILTIN(__builtin_HEXAGON_A2_swiz,"ii","")
+BUILTIN(__builtin_HEXAGON_S2_asr_i_p_and,"LLiLLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_cmpyrsc_s0,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_cmpyrsc_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_vraddub,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A4_tlbmatch,"iLLii","")
+BUILTIN(__builtin_HEXAGON_F2_conv_df2w_chop,"id","")
+BUILTIN(__builtin_HEXAGON_A2_and,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_r_p_and,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_ll_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_ll_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_S4_extract,"iiUIiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_vcmpweq,"iLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_acci,"iiii","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_i_p_acc,"LLiLLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_i_p_or,"LLiLLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_F2_conv_ud2sf,"fLLi","")
+BUILTIN(__builtin_HEXAGON_A2_tfr,"ii","")
+BUILTIN(__builtin_HEXAGON_S2_asr_i_p_or,"LLiLLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_subri,"iIii","")
+BUILTIN(__builtin_HEXAGON_A4_vrmaxuw,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_M5_vmpybuu,"LLiii","")
+BUILTIN(__builtin_HEXAGON_A4_vrmaxuh,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_S2_asl_i_vw,"LLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_vavgw,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_brev,"ii","")
+BUILTIN(__builtin_HEXAGON_A2_vavgh,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_clrbit_i,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_asl_i_vh,"LLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_i_r_or,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_lsl_r_r_nac,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mmpyl_rs1,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_hl_s1,"ULLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mmpyl_s0,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mmpyl_s1,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_naccii,"iiiIi","")
+BUILTIN(__builtin_HEXAGON_S2_vrndpackwhs,"iLLi","")
+BUILTIN(__builtin_HEXAGON_S2_vtrunewh,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_dpmpyss_nac_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_ll_s0,"LLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_ll_s1,"LLiii","")
+BUILTIN(__builtin_HEXAGON_M4_mac_up_s1_sat,"iiii","")
+BUILTIN(__builtin_HEXAGON_S4_vrcrotate_acc,"LLiLLiLLiiUIi","")
+BUILTIN(__builtin_HEXAGON_F2_conv_uw2df,"di","")
+BUILTIN(__builtin_HEXAGON_A2_vaddubs,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_asr_r_r_acc,"iiii","")
+BUILTIN(__builtin_HEXAGON_A2_orir,"iiIi","")
+BUILTIN(__builtin_HEXAGON_A2_andp,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_lfsp,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_min,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpysmi,"iiIi","")
+BUILTIN(__builtin_HEXAGON_M2_vcmpy_s0_sat_r,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_ll_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_ll_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_S2_asr_r_svw_trun,"iLLii","")
+BUILTIN(__builtin_HEXAGON_M2_mmpyh_s0,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mmpyh_s1,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_F2_conv_sf2df,"df","")
+BUILTIN(__builtin_HEXAGON_S2_vtrunohb,"iLLi","")
+BUILTIN(__builtin_HEXAGON_F2_conv_sf2d_chop,"LLif","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_lh_s0,"LLiii","")
+BUILTIN(__builtin_HEXAGON_F2_conv_df2w,"id","")
+BUILTIN(__builtin_HEXAGON_S5_asrhub_sat,"iLLiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_asl_i_r_xacc,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_F2_conv_df2d,"LLid","")
+BUILTIN(__builtin_HEXAGON_M2_mmaculs_s1,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mmaculs_s0,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_svadduhs,"iii","")
+BUILTIN(__builtin_HEXAGON_F2_conv_sf2w_chop,"if","")
+BUILTIN(__builtin_HEXAGON_S2_svsathub,"ii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_hl_s1,"LLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_hl_s0,"LLiii","")
+BUILTIN(__builtin_HEXAGON_S2_setbit_r,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_vavghr,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_F2_sffma_sc,"ffffi","")
+BUILTIN(__builtin_HEXAGON_F2_dfclass,"idUIi","")
+BUILTIN(__builtin_HEXAGON_F2_conv_df2ud,"LLid","")
+BUILTIN(__builtin_HEXAGON_F2_conv_df2uw,"id","")
+BUILTIN(__builtin_HEXAGON_M2_cmpyrs_s0,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_cmpyrs_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_C4_cmpltei,"iiIi","")
+BUILTIN(__builtin_HEXAGON_C4_cmplteu,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_vsubb_map,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_subh_l16_ll,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_asr_i_r_rnd,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_vrmpy_s0,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_hh_s1,"LLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_hh_s0,"LLiii","")
+BUILTIN(__builtin_HEXAGON_A2_minup,"ULLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_valignrb,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_S2_asr_r_p_acc,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_M2_mmpyl_rs0,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vrcmaci_s0,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vaddub,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_combine_lh,"iii","")
+BUILTIN(__builtin_HEXAGON_M5_vdmacbsu,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_combine_ll,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_hl_s0,"ULLiii","")
+BUILTIN(__builtin_HEXAGON_M2_vrcmpyi_s0c,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_asr_i_p_rnd,"LLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_addpsat,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_svaddhs,"iii","")
+BUILTIN(__builtin_HEXAGON_S4_ori_lsr_ri,"iUIiiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_ll_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_ll_s0,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_vminw,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vminh,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vrcmpyr_s0,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vminb,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vcmac_s0_sat_i,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_lh_s0,"ULLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_lh_s1,"ULLiii","")
+BUILTIN(__builtin_HEXAGON_S2_asl_r_r_or,"iiii","")
+BUILTIN(__builtin_HEXAGON_S4_lsli,"iIii","")
+BUILTIN(__builtin_HEXAGON_S2_lsl_r_vw,"LLiLLii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_hh_s1,"iii","")
+BUILTIN(__builtin_HEXAGON_M4_vrmpyeh_s0,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M4_vrmpyeh_s1,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_nac_lh_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_nac_lh_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_vraddh,"iLLiLLi","")
+BUILTIN(__builtin_HEXAGON_C2_tfrrp,"ii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_ll_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_ll_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_S2_vtrunowh,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_abs,"ii","")
+BUILTIN(__builtin_HEXAGON_A4_cmpbeq,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_negp,"LLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_asl_i_r_sat,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_addh_l16_sat_hl,"iii","")
+BUILTIN(__builtin_HEXAGON_S2_vsatwuh,"iLLi","")
+BUILTIN(__builtin_HEXAGON_F2_dfcmpgt,"idd","")
+BUILTIN(__builtin_HEXAGON_S2_svsathb,"ii","")
+BUILTIN(__builtin_HEXAGON_C2_cmpgtup,"iLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A4_cround_ri,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_S4_clbpaddi,"iLLiIi","")
+BUILTIN(__builtin_HEXAGON_A4_cround_rr,"iii","")
+BUILTIN(__builtin_HEXAGON_C2_mux,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_dpmpyuu_s0,"ULLiii","")
+BUILTIN(__builtin_HEXAGON_S2_shuffeb,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vminuw,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vaddhs,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_insert_rp,"iiiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vminuh,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vminub,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_extractu,"iiUIiUIi","")
+BUILTIN(__builtin_HEXAGON_A2_svsubh,"iii","")
+BUILTIN(__builtin_HEXAGON_S4_clbaddi,"iiIi","")
+BUILTIN(__builtin_HEXAGON_F2_sffms,"ffff","")
+BUILTIN(__builtin_HEXAGON_S2_vsxtbh,"LLii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_ll_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_ll_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_A2_subp,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vmpy2es_s1,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vmpy2es_s0,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S4_parity,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_acc_hh_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_acc_hh_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_S4_addi_asl_ri,"iUIiiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_hh_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_hh_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_S2_asr_i_r_nac,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_A4_cmpheqi,"iiIi","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_r_p_xor,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_acc_hl_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_acc_hl_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_F2_conv_sf2ud_chop,"LLif","")
+BUILTIN(__builtin_HEXAGON_C2_cmpgeui,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_hh_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_hh_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_S2_asl_r_p_and,"LLiLLiLLii","")
+BUILTIN(__builtin_HEXAGON_A2_addh_h16_sat_lh,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_addh_h16_sat_ll,"iii","")
+BUILTIN(__builtin_HEXAGON_M4_nac_up_s1_sat,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_lh_s1,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_lh_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_A4_round_ri_sat,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_nac_hl_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_nac_hl_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_A2_vavghcr,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mmacls_rs0,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_mmacls_rs1,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M2_cmaci_s0,"LLiLLiii","")
+BUILTIN(__builtin_HEXAGON_S2_setbit_i,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_asl_i_p_or,"LLiLLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_A4_andn,"iii","")
+BUILTIN(__builtin_HEXAGON_M5_vrmpybsu,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S2_vrndpackwh,"iLLi","")
+BUILTIN(__builtin_HEXAGON_M2_vcmac_s0_sat_r,"LLiLLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_vmaxuw,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_C2_bitsclr,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_xor_xacc,"iiii","")
+BUILTIN(__builtin_HEXAGON_A4_vcmpbgtui,"iLLiUIi","")
+BUILTIN(__builtin_HEXAGON_A4_ornp,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A2_tfrpi,"LLiIi","")
+BUILTIN(__builtin_HEXAGON_C4_and_or,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_hh_s1,"iiii","")
+BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_hh_s0,"iiii","")
+BUILTIN(__builtin_HEXAGON_A2_subh_h16_sat_ll,"iii","")
+BUILTIN(__builtin_HEXAGON_A2_subh_h16_sat_lh,"iii","")
+BUILTIN(__builtin_HEXAGON_M2_vmpy2su_s1,"LLiii","")
+BUILTIN(__builtin_HEXAGON_M2_vmpy2su_s0,"LLiii","")
+BUILTIN(__builtin_HEXAGON_S2_asr_i_p_acc,"LLiLLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_C4_nbitsclri,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_i_vh,"LLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_S2_lsr_i_p_xacc,"LLiLLiLLiUIi","")
+
+// V55 Scalar Instructions.
+
+BUILTIN(__builtin_HEXAGON_A5_ACS,"LLiLLiLLiLLi","")
+
+// V60 Scalar Instructions.
+
+BUILTIN(__builtin_HEXAGON_S6_rol_i_p_and,"LLiLLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_S6_rol_i_r_xacc,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_S6_rol_i_r_and,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_S6_rol_i_r_acc,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_S6_rol_i_p_xacc,"LLiLLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_S6_rol_i_p,"LLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_S6_rol_i_p_nac,"LLiLLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_S6_rol_i_p_acc,"LLiLLiLLiUIi","")
+BUILTIN(__builtin_HEXAGON_S6_rol_i_r_or,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_S6_rol_i_r,"iiUIi","")
+BUILTIN(__builtin_HEXAGON_S6_rol_i_r_nac,"iiiUIi","")
+BUILTIN(__builtin_HEXAGON_S6_rol_i_p_or,"LLiLLiLLiUIi","")
+
+// V62 Scalar Instructions.
+
+BUILTIN(__builtin_HEXAGON_S6_vtrunehb_ppp,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_V6_ldntnt0,"V16ii","")
+BUILTIN(__builtin_HEXAGON_M6_vabsdiffub,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S6_vtrunohb_ppp,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_M6_vabsdiffb,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_A6_vminub_RdP,"LLiLLiLLi","")
+BUILTIN(__builtin_HEXAGON_S6_vsplatrbp,"LLii","")
+
+// V65 Scalar Instructions.
+
+BUILTIN(__builtin_HEXAGON_A6_vcmpbeq_notany,"iLLiLLi","")
+
+// V66 Scalar Instructions.
+
+BUILTIN(__builtin_HEXAGON_F2_dfsub,"ddd","")
+BUILTIN(__builtin_HEXAGON_F2_dfadd,"ddd","")
+BUILTIN(__builtin_HEXAGON_M2_mnaci,"iiii","")
+BUILTIN(__builtin_HEXAGON_S2_mask,"iUIiUIi","")
+
+// V60 HVX Instructions.
+
+BUILTIN(__builtin_HEXAGON_V6_veqb_or,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_veqb_or_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vminub,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vminub_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaslw_acc,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vaslw_acc_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyhvsrs,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyhvsrs_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsathub,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsathub_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddh_dv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddh_dv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybusi,"V32iV32iiUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybusi_128B,"V64iV64iiUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vshufoh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vshufoh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vasrwv,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vasrwv_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhsuisat,"V16iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhsuisat_128B,"V32iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vrsadubi_acc,"V32iV32iV32iiUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vrsadubi_acc_128B,"V64iV64iV64iiUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vnavgw,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vnavgw_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vnavgh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vnavgh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vavgub,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vavgub_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubb,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubb_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtw_and,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtw_and_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vavgubrnd,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vavgubrnd_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybusv,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybusv_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubbnq,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubbnq_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vroundhb,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vroundhb_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vadduhsat_dv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vadduhsat_dv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_vsububsat,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsububsat_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpabus_acc,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpabus_acc_128B,"V64iV64iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmux,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmux_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyhus,"V32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyhus_128B,"V64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vpackeb,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vpackeb_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubhnq,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubhnq_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vavghrnd,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vavghrnd_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vtran2x2_map,"V16iV16iv*i","")
+BUILTIN(__builtin_HEXAGON_V6_vtran2x2_map_128B,"V32iV32iv*i","")
+BUILTIN(__builtin_HEXAGON_V6_vdelta,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vdelta_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtuh_and,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtuh_and_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vtmpyhb,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vtmpyhb_128B,"V64iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vpackob,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vpackob_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmaxh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmaxh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vtmpybus_acc,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vtmpybus_acc_128B,"V64iV64iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vsubuhsat,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubuhsat_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vasrw_acc,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vasrw_acc_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_pred_or,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_pred_or_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpyub_acc,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpyub_acc_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_lo,"V16iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_lo_128B,"V32iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubb_dv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubb_dv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubhsat_dv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubhsat_dv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiwh,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiwh_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiwb,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiwb_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_ldu0,"V16ii","")
+BUILTIN(__builtin_HEXAGON_V6_ldu0_128B,"V32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vgtuh_xor,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtuh_xor_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vgth_or,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgth_or_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vavgh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vavgh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vlalignb,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vlalignb_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vsh,"V32iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsh_128B,"V64iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_pred_and_n,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_pred_and_n_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsb,"V32iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsb_128B,"V64iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vroundwuh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vroundwuh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vasrhv,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vasrhv_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vshuffh,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vshuffh_128B,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddhsat_dv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddhsat_dv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_vnavgub,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vnavgub_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybv,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybv_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vnormamth,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vnormamth_128B,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhb,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vavguh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vavguh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vlsrwv,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vlsrwv_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vlsrhv,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vlsrhv_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhisat,"V16iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhisat_128B,"V32iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhvsat,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhvsat_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddw,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddw_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vzh,"V32iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vzh_128B,"V64iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmaxub,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmaxub_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyhv_acc,"V32iV32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyhv_acc_128B,"V64iV64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vadduhsat,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vadduhsat_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vshufoeh,"V32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vshufoeh_128B,"V64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyuhv_acc,"V32iV32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyuhv_acc_128B,"V64iV64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_veqh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_veqh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpabuuv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpabuuv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_vasrwhsat,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vasrwhsat_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vminuh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vminuh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vror,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vror_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyowh_rnd_sacc,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyowh_rnd_sacc_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmaxuh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmaxuh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vabsh_sat,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vabsh_sat_128B,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_pred_or_n,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_pred_or_n_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vdealb,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vdealb_128B,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpybusv,"V32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpybusv_128B,"V64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vzb,"V32iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vzb_128B,"V64iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpybus_dv,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpybus_dv_128B,"V64iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vaddbq,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddbq_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddb,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddb_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddwq,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddwq_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vasrhubrndsat,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vasrhubrndsat_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vasrhubsat,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vasrhubsat_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vshufoeb,"V32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vshufoeb_128B,"V64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vpackhub_sat,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vpackhub_sat_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiwh_acc,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiwh_acc_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vtmpyb,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vtmpyb_128B,"V64iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpabusv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpabusv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_pred_and,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_pred_and_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubwnq,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubwnq_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vpackwuh_sat,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vpackwuh_sat_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vswap,"V32iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vswap_128B,"V64iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpyubv_acc,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpyubv_acc_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtb_and,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtb_and_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaslw,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vaslw_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vpackhb_sat,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vpackhb_sat_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyih_acc,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyih_acc_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vshuffvdd,"V32iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vshuffvdd_128B,"V64iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vaddb_dv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddb_dv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_vunpackub,"V32iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vunpackub_128B,"V64iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtuw,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtuw_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvwh,"V32iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvwh_128B,"V64iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vgtub,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtub_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyowh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyowh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyieoh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyieoh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_extractw,"iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_extractw_128B,"iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vavgwrnd,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vavgwrnd_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhsat_acc,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhsat_acc_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vgtub_xor,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtub_xor_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyub,"V32iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyub_128B,"V64iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyuh,"V32iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyuh_128B,"V64iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vunpackob,"V32iV32iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vunpackob_128B,"V64iV64iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpahb,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpahb_128B,"V64iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_veqw_or,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_veqw_or_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vandqrt,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vandqrt_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vxor,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vxor_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vasrwhrndsat,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vasrwhrndsat_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyhsat_acc,"V32iV32iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyhsat_acc_128B,"V64iV64iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybus_acc,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybus_acc_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vsubhw,"V32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubhw_128B,"V64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vdealb4w,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vdealb4w_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyowh_sacc,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyowh_sacc_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpybv,"V32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpybv_128B,"V64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vabsdiffh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vabsdiffh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vshuffob,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vshuffob_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyub_acc,"V32iV32iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyub_acc_128B,"V64iV64iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vnormamtw,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vnormamtw_128B,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vunpackuh,"V32iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vunpackuh_128B,"V64iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtuh_or,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtuh_or_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiewuh_acc,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiewuh_acc_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vunpackoh,"V32iV32iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vunpackoh_128B,"V64iV64iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhsat,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhsat_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyubv,"V32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyubv_128B,"V64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyhss,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyhss_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_hi,"V16iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_hi_128B,"V32iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_vasrwuhsat,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vasrwuhsat_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_veqw,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_veqw_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vdsaduh,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdsaduh_128B,"V64iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vsubw,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubw_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubw_dv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubw_dv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_veqb_and,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_veqb_and_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyih,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyih_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vtmpyb_acc,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vtmpyb_acc_128B,"V64iV64iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybus,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybus_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpybus_acc,"V32iV32iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpybus_acc_128B,"V64iV64iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vgth_xor,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgth_xor_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubhsat,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubhsat_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpyubi_acc,"V32iV32iV32iiUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpyubi_acc_128B,"V64iV64iV64iiUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vabsw,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vabsw_128B,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddwsat_dv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddwsat_dv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_vlsrw,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vlsrw_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vabsh,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vabsh_128B,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vlsrh,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vlsrh_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_valignb,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_valignb_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vsubhq,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubhq_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vpackoh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vpackoh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpybus_acc,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpybus_acc_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhvsat_acc,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhvsat_acc_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybv_acc,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybv_acc_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddhsat,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddhsat_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vcombine,"V32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vcombine_128B,"V64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vandqrt_acc,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vandqrt_acc_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vaslhv,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaslhv_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vinsertwr,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vinsertwr_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vsubh_dv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubh_dv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_vshuffb,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vshuffb_128B,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vand,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vand_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyhv,"V32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyhv_128B,"V64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhsuisat_acc,"V16iV16iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhsuisat_acc_128B,"V32iV32iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vsububsat_dv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsububsat_dv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtb_xor,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtb_xor_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vdsaduh_acc,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdsaduh_acc_128B,"V64iV64iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpyub,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpyub_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyuh_acc,"V32iV32iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyuh_acc_128B,"V64iV64iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vcl0h,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vcl0h_128B,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyhus_acc,"V32iV32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyhus_acc_128B,"V64iV64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpybv_acc,"V32iV32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpybv_acc_128B,"V64iV64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vrsadubi,"V32iV32iiUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vrsadubi_128B,"V64iV64iiUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_dv_acc,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_dv_acc_128B,"V64iV64iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vshufeh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vshufeh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyewuh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyewuh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyhsrs,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyhsrs_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpybus_dv_acc,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpybus_dv_acc_128B,"V64iV64iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vaddubh,"V32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddubh_128B,"V64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vasrwh,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vasrwh_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_ld0,"V16ii","")
+BUILTIN(__builtin_HEXAGON_V6_ld0_128B,"V32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vpopcounth,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vpopcounth_128B,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_ldnt0,"V16ii","")
+BUILTIN(__builtin_HEXAGON_V6_ldnt0_128B,"V32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vgth_and,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgth_and_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddubsat_dv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddubsat_dv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_vpackeh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vpackeh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyh,"V32iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyh_128B,"V64iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vminh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vminh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_pred_scalar2,"V16ii","")
+BUILTIN(__builtin_HEXAGON_V6_pred_scalar2_128B,"V32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdealh,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vdealh_128B,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vpackwh_sat,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vpackwh_sat_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaslh,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vaslh_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vgtuw_and,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtuw_and_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vor,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vor_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvvb,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvvb_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiowh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiowh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvvb_oracc,"V16iV16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvvb_oracc_128B,"V32iV32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vandvrt,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vandvrt_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_veqh_xor,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_veqh_xor_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vadduhw,"V32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vadduhw_128B,"V64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vcl0w,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vcl0w_128B,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyihb,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyihb_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vtmpybus,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vtmpybus_128B,"V64iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vd0,"V16i","")
+BUILTIN(__builtin_HEXAGON_V6_vd0_128B,"V32i","")
+BUILTIN(__builtin_HEXAGON_V6_veqh_or,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_veqh_or_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtw_or,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtw_or_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpybus,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpybus_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vgtub_or,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtub_or_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpybus,"V32iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpybus_128B,"V64iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_acc,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_acc_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vandvrt_acc,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vandvrt_acc_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vassign,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vassign_128B,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddwnq,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddwnq_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtub_and,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtub_and_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_dv,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_dv_128B,"V64iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vunpackb,"V32iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vunpackb_128B,"V64iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vunpackh,"V32iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vunpackh_128B,"V64iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpahb_acc,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpahb_acc_128B,"V64iV64iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vaddbnq,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddbnq_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vlalignbi,"V16iV16iV16iUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vlalignbi_128B,"V32iV32iV32iUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vsatwh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsatwh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtuh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtuh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyihb_acc,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyihb_acc_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybusv_acc,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybusv_acc_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vrdelta,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vrdelta_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vroundwh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vroundwh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddw_dv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddw_dv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiwb_acc,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiwb_acc_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vsubbq,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubbq_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_veqh_and,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_veqh_and_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_valignbi,"V16iV16iV16iUIi","")
+BUILTIN(__builtin_HEXAGON_V6_valignbi_128B,"V32iV32iV32iUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vaddwsat,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddwsat_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_veqw_and,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_veqw_and_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vabsdiffub,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vabsdiffub_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vshuffeb,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vshuffeb_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vabsdiffuh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vabsdiffuh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_veqw_xor,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_veqw_xor_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vgth,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgth_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtuw_xor,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtuw_xor_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtb,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtb_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtw,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtw_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubwq,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubwq_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vnot,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vnot_128B,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtb_or,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtb_or_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtuw_or,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtuw_or_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddubsat,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddubsat_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmaxw,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmaxw_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaslwv,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaslwv_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vabsw_sat,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vabsw_sat_128B,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubwsat_dv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubwsat_dv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_vroundhub,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vroundhub_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhisat_acc,"V16iV16iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhisat_acc_128B,"V32iV32iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpabus,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpabus_128B,"V64iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vassignp,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vassignp_128B,"V64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_veqb,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_veqb_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsububh,"V32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsububh_128B,"V64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_lvsplatw,"V16ii","")
+BUILTIN(__builtin_HEXAGON_V6_lvsplatw_128B,"V32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vaddhnq,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddhnq_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhsusat,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhsusat_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_pred_not,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_pred_not_128B,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvwh_oracc,"V32iV32iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvwh_oracc_128B,"V64iV64iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiewh_acc,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiewh_acc_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vdealvdd,"V32iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdealvdd_128B,"V64iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vavgw,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vavgw_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhsusat_acc,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vdmpyhsusat_acc_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vgtw_xor,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vgtw_xor_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vtmpyhb_acc,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vtmpyhb_acc_128B,"V64iV64iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vaddhw,"V32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddhw_128B,"V64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddhq,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddhq_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpyubv,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpyubv_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpyubi,"V32iV32iiUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpyubi_128B,"V64iV64iiUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vminw,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vminw_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyubv_acc,"V32iV32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyubv_acc_128B,"V64iV64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_pred_xor,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_pred_xor_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_veqb_xor,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_veqb_xor_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiewuh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiewuh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpybusv_acc,"V32iV32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpybusv_acc_128B,"V64iV64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vavguhrnd,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vavguhrnd_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyowh_rnd,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyowh_rnd_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubwsat,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubwsat_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubuhw,"V32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubuhw_128B,"V64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybusi_acc,"V32iV32iV32iiUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybusi_acc_128B,"V64iV64iV64iiUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vasrw,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vasrw_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vasrh,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vasrh_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyuhv,"V32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyuhv_128B,"V64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vasrhbrndsat,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vasrhbrndsat_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vsubuhsat_dv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubuhsat_dv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_vabsdiffw,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vabsdiffw_128B,"V32iV32iV32i","")
+
+// V62 HVX Instructions.
+
+BUILTIN(__builtin_HEXAGON_V6_vandnqrt_acc,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vandnqrt_acc_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vaddclbh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddclbh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyowh_64_acc,"V32iV32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyowh_64_acc_128B,"V64iV64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyewuh_64,"V32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyewuh_64_128B,"V64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsatuwuh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsatuwuh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_shuffeqh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_shuffeqh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_shuffeqw,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_shuffeqw_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_ldcnpnt0,"V16iii","")
+BUILTIN(__builtin_HEXAGON_V6_ldcnpnt0_128B,"V32iii","")
+BUILTIN(__builtin_HEXAGON_V6_vsubcarry,"V16iV16iV16iv*","")
+BUILTIN(__builtin_HEXAGON_V6_vsubcarry_128B,"V32iV32iV32iv*","")
+BUILTIN(__builtin_HEXAGON_V6_vasrhbsat,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vasrhbsat_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vminb,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vminb_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpauhb_acc,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpauhb_acc_128B,"V64iV64iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vaddhw_acc,"V32iV32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddhw_acc_128B,"V64iV64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vlsrb,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vlsrb_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvwhi,"V32iV16iV16iUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvwhi_128B,"V64iV32iV32iUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vaddububb_sat,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddububb_sat_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubbsat_dv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubbsat_dv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_ldtp0,"V16iii","")
+BUILTIN(__builtin_HEXAGON_V6_ldtp0_128B,"V32iii","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvvb_oracci,"V16iV16iV16iV16iUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvvb_oracci_128B,"V32iV32iV32iV32iUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vsubuwsat_dv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubuwsat_dv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_ldpnt0,"V16iii","")
+BUILTIN(__builtin_HEXAGON_V6_ldpnt0_128B,"V32iii","")
+BUILTIN(__builtin_HEXAGON_V6_vandvnqv,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vandvnqv_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_lvsplatb,"V16ii","")
+BUILTIN(__builtin_HEXAGON_V6_lvsplatb_128B,"V32ii","")
+BUILTIN(__builtin_HEXAGON_V6_lvsplath,"V16ii","")
+BUILTIN(__builtin_HEXAGON_V6_lvsplath_128B,"V32ii","")
+BUILTIN(__builtin_HEXAGON_V6_ldtpnt0,"V16iii","")
+BUILTIN(__builtin_HEXAGON_V6_ldtpnt0_128B,"V32iii","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvwh_nm,"V32iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvwh_nm_128B,"V64iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_ldnpnt0,"V16iii","")
+BUILTIN(__builtin_HEXAGON_V6_ldnpnt0_128B,"V32iii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpauhb,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpauhb_128B,"V64iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_ldtnp0,"V16iii","")
+BUILTIN(__builtin_HEXAGON_V6_ldtnp0_128B,"V32iii","")
+BUILTIN(__builtin_HEXAGON_V6_vrounduhub,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vrounduhub_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vadduhw_acc,"V32iV32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vadduhw_acc_128B,"V64iV64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_ldcp0,"V16iii","")
+BUILTIN(__builtin_HEXAGON_V6_ldcp0_128B,"V32iii","")
+BUILTIN(__builtin_HEXAGON_V6_vadduwsat,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vadduwsat_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_ldtnpnt0,"V16iii","")
+BUILTIN(__builtin_HEXAGON_V6_ldtnpnt0_128B,"V32iii","")
+BUILTIN(__builtin_HEXAGON_V6_vaddbsat,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddbsat_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vandnqrt,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vandnqrt_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiwub_acc,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiwub_acc_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmaxb,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vmaxb_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vandvqv,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vandvqv_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddcarry,"V16iV16iV16iv*","")
+BUILTIN(__builtin_HEXAGON_V6_vaddcarry_128B,"V32iV32iV32iv*","")
+BUILTIN(__builtin_HEXAGON_V6_vasrwuhrndsat,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vasrwuhrndsat_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvvbi,"V16iV16iV16iUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvvbi_128B,"V32iV32iV32iUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vsubuwsat,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubuwsat_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddbsat_dv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddbsat_dv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_ldnp0,"V16iii","")
+BUILTIN(__builtin_HEXAGON_V6_ldnp0_128B,"V32iii","")
+BUILTIN(__builtin_HEXAGON_V6_vasruwuhrndsat,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vasruwuhrndsat_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vrounduwuh,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vrounduwuh_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvvb_nm,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvvb_nm_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_pred_scalar2v2,"V16ii","")
+BUILTIN(__builtin_HEXAGON_V6_pred_scalar2v2_128B,"V32ii","")
+BUILTIN(__builtin_HEXAGON_V6_ldp0,"V16iii","")
+BUILTIN(__builtin_HEXAGON_V6_ldp0_128B,"V32iii","")
+BUILTIN(__builtin_HEXAGON_V6_vaddubh_acc,"V32iV32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddubh_acc_128B,"V64iV64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddclbw,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddclbw_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_ldcpnt0,"V16iii","")
+BUILTIN(__builtin_HEXAGON_V6_ldcpnt0_128B,"V32iii","")
+BUILTIN(__builtin_HEXAGON_V6_vadduwsat_dv,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vadduwsat_dv_128B,"V64iV64iV64i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiwub,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyiwub_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vsubububb_sat,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubububb_sat_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_ldcnp0,"V16iii","")
+BUILTIN(__builtin_HEXAGON_V6_ldcnp0_128B,"V32iii","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvwh_oracci,"V32iV32iV16iV16iUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vlutvwh_oracci_128B,"V64iV64iV32iV32iUIi","")
+BUILTIN(__builtin_HEXAGON_V6_vsubbsat,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsubbsat_128B,"V32iV32iV32i","")
+
+// V65 HVX Instructions.
+
+BUILTIN(__builtin_HEXAGON_V6_vasruhubrndsat,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vasruhubrndsat_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybub_rtt,"V32iV16iLLi","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybub_rtt_128B,"V64iV32iLLi","")
+BUILTIN(__builtin_HEXAGON_V6_vmpahhsat,"V16iV16iV16iLLi","")
+BUILTIN(__builtin_HEXAGON_V6_vmpahhsat_128B,"V32iV32iV32iLLi","")
+BUILTIN(__builtin_HEXAGON_V6_vavguwrnd,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vavguwrnd_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vnavgb,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vnavgb_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vasrh_acc,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vasrh_acc_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpauhuhsat,"V16iV16iV16iLLi","")
+BUILTIN(__builtin_HEXAGON_V6_vmpauhuhsat_128B,"V32iV32iV32iLLi","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyh_acc,"V32iV32iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyh_acc_128B,"V64iV64iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybub_rtt_acc,"V32iV32iV16iLLi","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpybub_rtt_acc_128B,"V64iV64iV32iLLi","")
+BUILTIN(__builtin_HEXAGON_V6_vavgb,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vavgb_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vaslh_acc,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vaslh_acc_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vavguw,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vavguw_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vlut4,"V16iV16iLLi","")
+BUILTIN(__builtin_HEXAGON_V6_vlut4_128B,"V32iV32iLLi","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyuhe_acc,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyuhe_acc_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpyub_rtt,"V32iV16iLLi","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpyub_rtt_128B,"V64iV32iLLi","")
+BUILTIN(__builtin_HEXAGON_V6_vmpsuhuhsat,"V16iV16iV16iLLi","")
+BUILTIN(__builtin_HEXAGON_V6_vmpsuhuhsat_128B,"V32iV32iV32iLLi","")
+BUILTIN(__builtin_HEXAGON_V6_vasruhubsat,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vasruhubsat_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyuhe,"V16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpyuhe_128B,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpyub_rtt_acc,"V32iV32iV16iLLi","")
+BUILTIN(__builtin_HEXAGON_V6_vrmpyub_rtt_acc_128B,"V64iV64iV32iLLi","")
+BUILTIN(__builtin_HEXAGON_V6_vasruwuhsat,"V16iV16iV16ii","")
+BUILTIN(__builtin_HEXAGON_V6_vasruwuhsat_128B,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpabuu_acc,"V32iV32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpabuu_acc_128B,"V64iV64iV64ii","")
BUILTIN(__builtin_HEXAGON_V6_vprefixqw,"V16iV16i","")
BUILTIN(__builtin_HEXAGON_V6_vprefixqw_128B,"V32iV32i","")
-
+BUILTIN(__builtin_HEXAGON_V6_vprefixqh,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vprefixqh_128B,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vprefixqb,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vprefixqb_128B,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vabsb,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vabsb_128B,"V32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vavgbrnd,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vavgbrnd_128B,"V32iV32iV32i","")
BUILTIN(__builtin_HEXAGON_V6_vdd0,"V32i","")
BUILTIN(__builtin_HEXAGON_V6_vdd0_128B,"V64i","")
+BUILTIN(__builtin_HEXAGON_V6_vmpabuu,"V32iV32ii","")
+BUILTIN(__builtin_HEXAGON_V6_vmpabuu_128B,"V64iV64ii","")
+BUILTIN(__builtin_HEXAGON_V6_vabsb_sat,"V16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vabsb_sat_128B,"V32iV32i","")
+// V66 HVX Instructions.
+
+BUILTIN(__builtin_HEXAGON_V6_vaddcarrysat,"V16iV16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vaddcarrysat_128B,"V32iV32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vasr_into,"V32iV32iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vasr_into_128B,"V64iV64iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vsatdw,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vsatdw_128B,"V32iV32iV32i","")
+BUILTIN(__builtin_HEXAGON_V6_vrotr,"V16iV16iV16i","")
+BUILTIN(__builtin_HEXAGON_V6_vrotr_128B,"V32iV32iV32i","")
#undef BUILTIN
diff --git a/linux-x64/clang/include/clang/Basic/BuiltinsLe64.def b/linux-x64/clang/include/clang/Basic/BuiltinsLe64.def
index 5328606..776492c 100644
--- a/linux-x64/clang/include/clang/Basic/BuiltinsLe64.def
+++ b/linux-x64/clang/include/clang/Basic/BuiltinsLe64.def
@@ -1,9 +1,8 @@
//==- BuiltinsLe64.def - Le64 Builtin function database ----------*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/BuiltinsMips.def b/linux-x64/clang/include/clang/Basic/BuiltinsMips.def
index 2d217f7..9ac75b7 100644
--- a/linux-x64/clang/include/clang/Basic/BuiltinsMips.def
+++ b/linux-x64/clang/include/clang/Basic/BuiltinsMips.def
@@ -1,9 +1,8 @@
//===-- BuiltinsMips.def - Mips Builtin function database --------*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/BuiltinsNEON.def b/linux-x64/clang/include/clang/Basic/BuiltinsNEON.def
index 241b93a..b8eb5a7 100644
--- a/linux-x64/clang/include/clang/Basic/BuiltinsNEON.def
+++ b/linux-x64/clang/include/clang/Basic/BuiltinsNEON.def
@@ -1,9 +1,8 @@
//===--- BuiltinsNEON.def - NEON Builtin function database ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/BuiltinsNVPTX.def b/linux-x64/clang/include/clang/Basic/BuiltinsNVPTX.def
index 08c6097..b15ed26 100644
--- a/linux-x64/clang/include/clang/Basic/BuiltinsNVPTX.def
+++ b/linux-x64/clang/include/clang/Basic/BuiltinsNVPTX.def
@@ -1,9 +1,8 @@
//===--- BuiltinsPTX.def - PTX Builtin function database ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/BuiltinsNios2.def b/linux-x64/clang/include/clang/Basic/BuiltinsNios2.def
deleted file mode 100644
index d9697e7..0000000
--- a/linux-x64/clang/include/clang/Basic/BuiltinsNios2.def
+++ /dev/null
@@ -1,70 +0,0 @@
-//===-- BuiltinsNios2.def - Nios2 Builtin function database --------*- C++ -*-==//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines the Nios2-specific builtin function database. Users of
-// this file must define the BUILTIN macro to make use of this information.
-//
-//===----------------------------------------------------------------------===//
-
-// The format of this database matches clang/Basic/Builtins.def.
-
-#if defined(BUILTIN) && !defined(TARGET_BUILTIN)
-# define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BUILTIN(ID, TYPE, ATTRS)
-#endif
-
-// Nios2 R1 builtins:
-
-//int __builtin_ldbio(volatile const void *);
-BUILTIN(__builtin_ldbio, "ivDC*", "")
-//int __builtin_ldbuio(volatile const void *);
-BUILTIN(__builtin_ldbuio, "ivDC*", "")
-//int __builtin_ldhio(volatile const void *);
-BUILTIN(__builtin_ldhio, "ivDC*", "")
-//int __builtin_ldhuio(volatile const void *);
-BUILTIN(__builtin_ldhuio, "ivDC*", "")
-//int __builtin_ldwio(volatile const void *);
-BUILTIN(__builtin_ldwio, "ivDC*", "")
-//int __builtin_ldwuio(int);
-BUILTIN(__builtin_ldwuio, "ii", "")
-// int __builtin_rdctl(int);
-BUILTIN(__builtin_rdctl, "iIi", "")
-// void __builtin_wrctl(int, int);
-BUILTIN(__builtin_wrctl, "vIii", "")
-// int __builtin_rdprs(int, int);
-BUILTIN(__builtin_rdprs, "iii", "")
-//void __builtin_stbio(volatile void *, int);
-BUILTIN(__builtin_stbio, "vvD*i", "")
-//void __builtin_sthio(volatile void *, int);
-BUILTIN(__builtin_sthio, "vvD*i", "")
-//void __builtin_stwio(volatile void *, int);
-BUILTIN(__builtin_stwio, "vvD*i", "")
-//void __builtin_sync(void);
-BUILTIN(__builtin_sync, "v", "")
-// void __builtin_flushd(volatile void *);
-BUILTIN(__builtin_flushd, "vvD*", "")
-// void __builtin_flushda(volatile void *);
-BUILTIN(__builtin_flushda, "vvD*", "")
-
-// Nios2 R2 builtins:
-
-// int __builtin_wrpie(int);
-TARGET_BUILTIN(__builtin_wrpie, "ii", "", "nios2r2mandatory")
-// void __builtin_eni(int);
-TARGET_BUILTIN(__builtin_eni, "vi", "", "nios2r2mandatory")
-// int __builtin_ldex(volatile const void *);
-TARGET_BUILTIN(__builtin_ldex, "ivDC*", "", "nios2r2mandatory")
-// int __builtin_stex(volatile void *, int);
-TARGET_BUILTIN(__builtin_stex, "ivD*i", "", "nios2r2mandatory")
-// int __builtin_ldsex(volatile const void *);
-TARGET_BUILTIN(__builtin_ldsex, "ivDC*", "", "nios2r2mpx")
-// int __builtin_stsex(volatile void *, int);
-TARGET_BUILTIN(__builtin_stsex, "ivDC*i", "", "nios2r2mpx")
-
-#undef BUILTIN
-#undef TARGET_BUILTIN
diff --git a/linux-x64/clang/include/clang/Basic/BuiltinsPPC.def b/linux-x64/clang/include/clang/Basic/BuiltinsPPC.def
index d31cb06..e55fa04 100644
--- a/linux-x64/clang/include/clang/Basic/BuiltinsPPC.def
+++ b/linux-x64/clang/include/clang/Basic/BuiltinsPPC.def
@@ -1,9 +1,8 @@
//===--- BuiltinsPPC.def - PowerPC Builtin function database ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/BuiltinsSystemZ.def b/linux-x64/clang/include/clang/Basic/BuiltinsSystemZ.def
index ac92286..9133b3f 100644
--- a/linux-x64/clang/include/clang/Basic/BuiltinsSystemZ.def
+++ b/linux-x64/clang/include/clang/Basic/BuiltinsSystemZ.def
@@ -1,9 +1,8 @@
//===-- BuiltinsSystemZ.def - SystemZ Builtin function database -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/BuiltinsWebAssembly.def b/linux-x64/clang/include/clang/Basic/BuiltinsWebAssembly.def
index 494d3cf..0241436 100644
--- a/linux-x64/clang/include/clang/Basic/BuiltinsWebAssembly.def
+++ b/linux-x64/clang/include/clang/Basic/BuiltinsWebAssembly.def
@@ -1,9 +1,8 @@
// BuiltinsWebAssembly.def - WebAssembly builtin function database -*- C++ -*-//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -16,69 +15,98 @@
// The format of this database matches clang/Basic/Builtins.def.
+#if defined(BUILTIN) && !defined(TARGET_BUILTIN)
+# define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BUILTIN(ID, TYPE, ATTRS)
+#endif
+
// Query the current memory size, and increase the current memory size.
// Note that memory.size is not "c" (readnone) because it must be sequenced
// with respect to memory.grow calls.
BUILTIN(__builtin_wasm_memory_size, "zIi", "n")
BUILTIN(__builtin_wasm_memory_grow, "zIiz", "n")
-// These are the old names.
-BUILTIN(__builtin_wasm_mem_size, "zIi", "n")
-BUILTIN(__builtin_wasm_mem_grow, "zIiz", "n")
+// Bulk memory builtins
+TARGET_BUILTIN(__builtin_wasm_memory_init, "vIUiIUiv*UiUi", "", "bulk-memory")
+TARGET_BUILTIN(__builtin_wasm_data_drop, "vIUi", "", "bulk-memory")
-// These are the old old names. They also lack the immediate field.
-BUILTIN(__builtin_wasm_current_memory, "z", "n")
-BUILTIN(__builtin_wasm_grow_memory, "zz", "n")
+// Floating point min/max
+BUILTIN(__builtin_wasm_min_f32, "fff", "nc")
+BUILTIN(__builtin_wasm_max_f32, "fff", "nc")
+BUILTIN(__builtin_wasm_min_f64, "ddd", "nc")
+BUILTIN(__builtin_wasm_max_f64, "ddd", "nc")
// Exception handling builtins.
-BUILTIN(__builtin_wasm_throw, "vUiv*", "r")
-BUILTIN(__builtin_wasm_rethrow, "v", "r")
+TARGET_BUILTIN(__builtin_wasm_throw, "vUiv*", "r", "exception-handling")
+TARGET_BUILTIN(__builtin_wasm_rethrow, "v", "r", "exception-handling")
// Atomic wait and notify.
BUILTIN(__builtin_wasm_atomic_wait_i32, "ii*iLLi", "n")
BUILTIN(__builtin_wasm_atomic_wait_i64, "iLLi*LLiLLi", "n")
-BUILTIN(__builtin_wasm_atomic_notify, "Uii*i", "n")
+BUILTIN(__builtin_wasm_atomic_notify, "Uii*Ui", "n")
+
+// Saturating fp-to-int conversions
+TARGET_BUILTIN(__builtin_wasm_trunc_saturate_s_i32_f32, "if", "nc", "nontrapping-fptoint")
+TARGET_BUILTIN(__builtin_wasm_trunc_saturate_u_i32_f32, "if", "nc", "nontrapping-fptoint")
+TARGET_BUILTIN(__builtin_wasm_trunc_saturate_s_i32_f64, "id", "nc", "nontrapping-fptoint")
+TARGET_BUILTIN(__builtin_wasm_trunc_saturate_u_i32_f64, "id", "nc", "nontrapping-fptoint")
+TARGET_BUILTIN(__builtin_wasm_trunc_saturate_s_i64_f32, "LLif", "nc", "nontrapping-fptoint")
+TARGET_BUILTIN(__builtin_wasm_trunc_saturate_u_i64_f32, "LLif", "nc", "nontrapping-fptoint")
+TARGET_BUILTIN(__builtin_wasm_trunc_saturate_s_i64_f64, "LLid", "nc", "nontrapping-fptoint")
+TARGET_BUILTIN(__builtin_wasm_trunc_saturate_u_i64_f64, "LLid", "nc", "nontrapping-fptoint")
// SIMD builtins
-BUILTIN(__builtin_wasm_extract_lane_s_i8x16, "iV16cIi", "nc")
-BUILTIN(__builtin_wasm_extract_lane_u_i8x16, "iV16cIi", "nc")
-BUILTIN(__builtin_wasm_extract_lane_s_i16x8, "iV8sIi", "nc")
-BUILTIN(__builtin_wasm_extract_lane_u_i16x8, "iV8sIi", "nc")
-BUILTIN(__builtin_wasm_extract_lane_i32x4, "iV4iIi", "nc")
-BUILTIN(__builtin_wasm_extract_lane_i64x2, "LLiV2LLiIi", "nc")
-BUILTIN(__builtin_wasm_extract_lane_f32x4, "fV4fIi", "nc")
-BUILTIN(__builtin_wasm_extract_lane_f64x2, "dV2dIi", "nc")
+TARGET_BUILTIN(__builtin_wasm_extract_lane_s_i8x16, "iV16cIi", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_extract_lane_u_i8x16, "iV16cIi", "nc", "unimplemented-simd128")
+TARGET_BUILTIN(__builtin_wasm_extract_lane_s_i16x8, "iV8sIi", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_extract_lane_u_i16x8, "iV8sIi", "nc", "unimplemented-simd128")
+TARGET_BUILTIN(__builtin_wasm_extract_lane_i32x4, "iV4iIi", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_extract_lane_i64x2, "LLiV2LLiIi", "nc", "unimplemented-simd128")
+TARGET_BUILTIN(__builtin_wasm_extract_lane_f32x4, "fV4fIi", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_extract_lane_f64x2, "dV2dIi", "nc", "unimplemented-simd128")
-BUILTIN(__builtin_wasm_replace_lane_i8x16, "V16cV16cIii", "nc")
-BUILTIN(__builtin_wasm_replace_lane_i16x8, "V8sV8sIii", "nc")
-BUILTIN(__builtin_wasm_replace_lane_i32x4, "V4iV4iIii", "nc")
-BUILTIN(__builtin_wasm_replace_lane_i64x2, "V2LLiV2LLiIiLLi", "nc")
-BUILTIN(__builtin_wasm_replace_lane_f32x4, "V4fV4fIif", "nc")
-BUILTIN(__builtin_wasm_replace_lane_f64x2, "V2dV2dIid", "nc")
+TARGET_BUILTIN(__builtin_wasm_replace_lane_i8x16, "V16cV16cIii", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_replace_lane_i16x8, "V8sV8sIii", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_replace_lane_i32x4, "V4iV4iIii", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_replace_lane_i64x2, "V2LLiV2LLiIiLLi", "nc", "unimplemented-simd128")
+TARGET_BUILTIN(__builtin_wasm_replace_lane_f32x4, "V4fV4fIif", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_replace_lane_f64x2, "V2dV2dIid", "nc", "unimplemented-simd128")
-BUILTIN(__builtin_wasm_add_saturate_s_i8x16, "V16cV16cV16c", "nc")
-BUILTIN(__builtin_wasm_add_saturate_u_i8x16, "V16cV16cV16c", "nc")
-BUILTIN(__builtin_wasm_add_saturate_s_i16x8, "V8sV8sV8s", "nc")
-BUILTIN(__builtin_wasm_add_saturate_u_i16x8, "V8sV8sV8s", "nc")
+TARGET_BUILTIN(__builtin_wasm_add_saturate_s_i8x16, "V16cV16cV16c", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_add_saturate_u_i8x16, "V16cV16cV16c", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_add_saturate_s_i16x8, "V8sV8sV8s", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_add_saturate_u_i16x8, "V8sV8sV8s", "nc", "simd128")
-BUILTIN(__builtin_wasm_sub_saturate_s_i8x16, "V16cV16cV16c", "nc")
-BUILTIN(__builtin_wasm_sub_saturate_u_i8x16, "V16cV16cV16c", "nc")
-BUILTIN(__builtin_wasm_sub_saturate_s_i16x8, "V8sV8sV8s", "nc")
-BUILTIN(__builtin_wasm_sub_saturate_u_i16x8, "V8sV8sV8s", "nc")
+TARGET_BUILTIN(__builtin_wasm_sub_saturate_s_i8x16, "V16cV16cV16c", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_sub_saturate_u_i8x16, "V16cV16cV16c", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_sub_saturate_s_i16x8, "V8sV8sV8s", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_sub_saturate_u_i16x8, "V8sV8sV8s", "nc", "simd128")
-BUILTIN(__builtin_wasm_any_true_i8x16, "iV16c", "nc")
-BUILTIN(__builtin_wasm_any_true_i16x8, "iV8s", "nc")
-BUILTIN(__builtin_wasm_any_true_i32x4, "iV4i", "nc")
-BUILTIN(__builtin_wasm_any_true_i64x2, "iV2LLi", "nc")
-BUILTIN(__builtin_wasm_all_true_i8x16, "iV16c", "nc")
-BUILTIN(__builtin_wasm_all_true_i16x8, "iV8s", "nc")
-BUILTIN(__builtin_wasm_all_true_i32x4, "iV4i", "nc")
-BUILTIN(__builtin_wasm_all_true_i64x2, "iV2LLi", "nc")
+TARGET_BUILTIN(__builtin_wasm_bitselect, "V4iV4iV4iV4i", "nc", "simd128")
-BUILTIN(__builtin_wasm_abs_f32x4, "V4fV4f", "nc")
-BUILTIN(__builtin_wasm_abs_f64x2, "V2dV2d", "nc")
+TARGET_BUILTIN(__builtin_wasm_any_true_i8x16, "iV16c", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_any_true_i16x8, "iV8s", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_any_true_i32x4, "iV4i", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_any_true_i64x2, "iV2LLi", "nc", "unimplemented-simd128")
+TARGET_BUILTIN(__builtin_wasm_all_true_i8x16, "iV16c", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_all_true_i16x8, "iV8s", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_all_true_i32x4, "iV4i", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_all_true_i64x2, "iV2LLi", "nc", "unimplemented-simd128")
-BUILTIN(__builtin_wasm_sqrt_f32x4, "V4fV4f", "nc")
-BUILTIN(__builtin_wasm_sqrt_f64x2, "V2dV2d", "nc")
+TARGET_BUILTIN(__builtin_wasm_abs_f32x4, "V4fV4f", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_abs_f64x2, "V2dV2d", "nc", "unimplemented-simd128")
+
+TARGET_BUILTIN(__builtin_wasm_min_f32x4, "V4fV4fV4f", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_max_f32x4, "V4fV4fV4f", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_min_f64x2, "V2dV2dV2d", "nc", "unimplemented-simd128")
+TARGET_BUILTIN(__builtin_wasm_max_f64x2, "V2dV2dV2d", "nc", "unimplemented-simd128")
+
+TARGET_BUILTIN(__builtin_wasm_sqrt_f32x4, "V4fV4f", "nc", "unimplemented-simd128")
+TARGET_BUILTIN(__builtin_wasm_sqrt_f64x2, "V2dV2d", "nc", "unimplemented-simd128")
+
+TARGET_BUILTIN(__builtin_wasm_trunc_saturate_s_i32x4_f32x4, "V4iV4f", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_trunc_saturate_u_i32x4_f32x4, "V4iV4f", "nc", "simd128")
+TARGET_BUILTIN(__builtin_wasm_trunc_saturate_s_i64x2_f64x2, "V2LLiV2d", "nc", "unimplemented-simd128")
+TARGET_BUILTIN(__builtin_wasm_trunc_saturate_u_i64x2_f64x2, "V2LLiV2d", "nc", "unimplemented-simd128")
#undef BUILTIN
+#undef TARGET_BUILTIN
diff --git a/linux-x64/clang/include/clang/Basic/BuiltinsX86.def b/linux-x64/clang/include/clang/Basic/BuiltinsX86.def
index 45d3663..373ff24 100644
--- a/linux-x64/clang/include/clang/Basic/BuiltinsX86.def
+++ b/linux-x64/clang/include/clang/Basic/BuiltinsX86.def
@@ -1,9 +1,8 @@
//===--- BuiltinsX86.def - X86 Builtin function database --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -693,6 +692,10 @@
// XSAVE
TARGET_BUILTIN(__builtin_ia32_xsave, "vv*ULLi", "n", "xsave")
TARGET_BUILTIN(__builtin_ia32_xrstor, "vv*ULLi", "n", "xsave")
+TARGET_BUILTIN(__builtin_ia32_xgetbv, "ULLiUi", "n", "xsave")
+TARGET_HEADER_BUILTIN(_xgetbv, "UWiUi", "nh", "immintrin.h", ALL_MS_LANGUAGES, "")
+TARGET_BUILTIN(__builtin_ia32_xsetbv, "vUiULLi", "n", "xsave")
+TARGET_HEADER_BUILTIN(_xsetbv, "vUiUWi", "nh", "immintrin.h", ALL_MS_LANGUAGES, "")
TARGET_BUILTIN(__builtin_ia32_xsaveopt, "vv*ULLi", "n", "xsaveopt")
TARGET_BUILTIN(__builtin_ia32_xrstors, "vv*ULLi", "n", "xsaves")
TARGET_BUILTIN(__builtin_ia32_xsavec, "vv*ULLi", "n", "xsavec")
@@ -719,8 +722,7 @@
TARGET_BUILTIN(__builtin_ia32_wbnoinvd, "v", "n", "wbnoinvd")
// ADX
-TARGET_BUILTIN(__builtin_ia32_addcarryx_u32, "UcUcUiUiUi*", "n", "adx")
-TARGET_BUILTIN(__builtin_ia32_addcarry_u32, "UcUcUiUiUi*", "n", "")
+TARGET_BUILTIN(__builtin_ia32_addcarryx_u32, "UcUcUiUiUi*", "n", "")
TARGET_BUILTIN(__builtin_ia32_subborrow_u32, "UcUcUiUiUi*", "n", "")
// RDSEED
@@ -969,47 +971,47 @@
TARGET_BUILTIN(__builtin_ia32_vpdpwssds256, "V8iV8iV8iV8i", "ncV:256:", "avx512vl,avx512vnni")
TARGET_BUILTIN(__builtin_ia32_vpdpwssds512, "V16iV16iV16iV16i", "ncV:512:", "avx512vnni")
-TARGET_BUILTIN(__builtin_ia32_gather3div2df, "V2dV2ddC*V2LLiUcIi", "nV:128:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_gather3div2di, "V2LLiV2LLiLLiC*V2LLiUcIi", "nV:128:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_gather3div4df, "V4dV4ddC*V4LLiUcIi", "nV:256:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_gather3div4di, "V4LLiV4LLiLLiC*V4LLiUcIi", "nV:256:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_gather3div4sf, "V4fV4ffC*V2LLiUcIi", "nV:128:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_gather3div4si, "V4iV4iiC*V2LLiUcIi", "nV:128:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_gather3div8sf, "V4fV4ffC*V4LLiUcIi", "nV:256:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_gather3div8si, "V4iV4iiC*V4LLiUcIi", "nV:256:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_gather3siv2df, "V2dV2ddC*V4iUcIi", "nV:128:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_gather3siv2di, "V2LLiV2LLiLLiC*V4iUcIi", "nV:128:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_gather3siv4df, "V4dV4ddC*V4iUcIi", "nV:256:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_gather3siv4di, "V4LLiV4LLiLLiC*V4iUcIi", "nV:256:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_gather3siv4sf, "V4fV4ffC*V4iUcIi", "nV:128:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_gather3siv4si, "V4iV4iiC*V4iUcIi", "nV:128:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_gather3siv8sf, "V8fV8ffC*V8iUcIi", "nV:256:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_gather3siv8si, "V8iV8iiC*V8iUcIi", "nV:256:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_gathersiv8df, "V8dV8ddC*V8iUcIi", "nV:512:", "avx512f")
-TARGET_BUILTIN(__builtin_ia32_gathersiv16sf, "V16fV16ffC*V16fUsIi", "nV:512:", "avx512f")
-TARGET_BUILTIN(__builtin_ia32_gatherdiv8df, "V8dV8ddC*V8LLiUcIi", "nV:512:", "avx512f")
-TARGET_BUILTIN(__builtin_ia32_gatherdiv16sf, "V8fV8ffC*V8LLiUcIi", "nV:512:", "avx512f")
-TARGET_BUILTIN(__builtin_ia32_gathersiv8di, "V8LLiV8LLiLLiC*V8iUcIi", "nV:512:", "avx512f")
-TARGET_BUILTIN(__builtin_ia32_gathersiv16si, "V16iV16iiC*V16iUsIi", "nV:512:", "avx512f")
-TARGET_BUILTIN(__builtin_ia32_gatherdiv8di, "V8LLiV8LLiLLiC*V8LLiUcIi", "nV:512:", "avx512f")
-TARGET_BUILTIN(__builtin_ia32_gatherdiv16si, "V8iV8iiC*V8LLiUcIi", "nV:512:", "avx512f")
-TARGET_BUILTIN(__builtin_ia32_scattersiv8df, "vd*UcV8iV8dIi", "nV:512:", "avx512f")
-TARGET_BUILTIN(__builtin_ia32_scattersiv16sf, "vf*UsV16iV16fIi", "nV:512:", "avx512f")
-TARGET_BUILTIN(__builtin_ia32_scatterdiv8df, "vd*UcV8LLiV8dIi", "nV:512:", "avx512f")
-TARGET_BUILTIN(__builtin_ia32_scatterdiv16sf, "vf*UcV8LLiV8fIi", "nV:512:", "avx512f")
-TARGET_BUILTIN(__builtin_ia32_scattersiv8di, "vLLi*UcV8iV8LLiIi", "nV:512:", "avx512f")
-TARGET_BUILTIN(__builtin_ia32_scattersiv16si, "vi*UsV16iV16iIi", "nV:512:", "avx512f")
-TARGET_BUILTIN(__builtin_ia32_scatterdiv8di, "vLLi*UcV8LLiV8LLiIi", "nV:512:", "avx512f")
-TARGET_BUILTIN(__builtin_ia32_scatterdiv16si, "vi*UcV8LLiV8iIi", "nV:512:", "avx512f")
+TARGET_BUILTIN(__builtin_ia32_gather3div2df, "V2dV2dvC*V2LLiUcIi", "nV:128:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_gather3div2di, "V2LLiV2LLivC*V2LLiUcIi", "nV:128:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_gather3div4df, "V4dV4dvC*V4LLiUcIi", "nV:256:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_gather3div4di, "V4LLiV4LLivC*V4LLiUcIi", "nV:256:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_gather3div4sf, "V4fV4fvC*V2LLiUcIi", "nV:128:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_gather3div4si, "V4iV4ivC*V2LLiUcIi", "nV:128:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_gather3div8sf, "V4fV4fvC*V4LLiUcIi", "nV:256:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_gather3div8si, "V4iV4ivC*V4LLiUcIi", "nV:256:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_gather3siv2df, "V2dV2dvC*V4iUcIi", "nV:128:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_gather3siv2di, "V2LLiV2LLivC*V4iUcIi", "nV:128:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_gather3siv4df, "V4dV4dvC*V4iUcIi", "nV:256:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_gather3siv4di, "V4LLiV4LLivC*V4iUcIi", "nV:256:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_gather3siv4sf, "V4fV4fvC*V4iUcIi", "nV:128:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_gather3siv4si, "V4iV4ivC*V4iUcIi", "nV:128:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_gather3siv8sf, "V8fV8fvC*V8iUcIi", "nV:256:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_gather3siv8si, "V8iV8ivC*V8iUcIi", "nV:256:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_gathersiv8df, "V8dV8dvC*V8iUcIi", "nV:512:", "avx512f")
+TARGET_BUILTIN(__builtin_ia32_gathersiv16sf, "V16fV16fvC*V16iUsIi", "nV:512:", "avx512f")
+TARGET_BUILTIN(__builtin_ia32_gatherdiv8df, "V8dV8dvC*V8LLiUcIi", "nV:512:", "avx512f")
+TARGET_BUILTIN(__builtin_ia32_gatherdiv16sf, "V8fV8fvC*V8LLiUcIi", "nV:512:", "avx512f")
+TARGET_BUILTIN(__builtin_ia32_gathersiv8di, "V8LLiV8LLivC*V8iUcIi", "nV:512:", "avx512f")
+TARGET_BUILTIN(__builtin_ia32_gathersiv16si, "V16iV16ivC*V16iUsIi", "nV:512:", "avx512f")
+TARGET_BUILTIN(__builtin_ia32_gatherdiv8di, "V8LLiV8LLivC*V8LLiUcIi", "nV:512:", "avx512f")
+TARGET_BUILTIN(__builtin_ia32_gatherdiv16si, "V8iV8ivC*V8LLiUcIi", "nV:512:", "avx512f")
+TARGET_BUILTIN(__builtin_ia32_scattersiv8df, "vv*UcV8iV8dIi", "nV:512:", "avx512f")
+TARGET_BUILTIN(__builtin_ia32_scattersiv16sf, "vv*UsV16iV16fIi", "nV:512:", "avx512f")
+TARGET_BUILTIN(__builtin_ia32_scatterdiv8df, "vv*UcV8LLiV8dIi", "nV:512:", "avx512f")
+TARGET_BUILTIN(__builtin_ia32_scatterdiv16sf, "vv*UcV8LLiV8fIi", "nV:512:", "avx512f")
+TARGET_BUILTIN(__builtin_ia32_scattersiv8di, "vv*UcV8iV8LLiIi", "nV:512:", "avx512f")
+TARGET_BUILTIN(__builtin_ia32_scattersiv16si, "vv*UsV16iV16iIi", "nV:512:", "avx512f")
+TARGET_BUILTIN(__builtin_ia32_scatterdiv8di, "vv*UcV8LLiV8LLiIi", "nV:512:", "avx512f")
+TARGET_BUILTIN(__builtin_ia32_scatterdiv16si, "vv*UcV8LLiV8iIi", "nV:512:", "avx512f")
-TARGET_BUILTIN(__builtin_ia32_gatherpfdpd, "vUcV8iLLiC*IiIi", "nV:512:", "avx512pf")
-TARGET_BUILTIN(__builtin_ia32_gatherpfdps, "vUsV16iiC*IiIi", "nV:512:", "avx512pf")
-TARGET_BUILTIN(__builtin_ia32_gatherpfqpd, "vUcV8LLiLLiC*IiIi", "nV:512:", "avx512pf")
-TARGET_BUILTIN(__builtin_ia32_gatherpfqps, "vUcV8LLiiC*IiIi", "nV:512:", "avx512pf")
-TARGET_BUILTIN(__builtin_ia32_scatterpfdpd, "vUcV8iLLi*IiIi", "nV:512:", "avx512pf")
-TARGET_BUILTIN(__builtin_ia32_scatterpfdps, "vUsV16ii*IiIi", "nV:512:", "avx512pf")
-TARGET_BUILTIN(__builtin_ia32_scatterpfqpd, "vUcV8LLiLLi*IiIi", "nV:512:", "avx512pf")
-TARGET_BUILTIN(__builtin_ia32_scatterpfqps, "vUcV8LLii*IiIi", "nV:512:", "avx512pf")
+TARGET_BUILTIN(__builtin_ia32_gatherpfdpd, "vUcV8ivC*IiIi", "nV:512:", "avx512pf")
+TARGET_BUILTIN(__builtin_ia32_gatherpfdps, "vUsV16ivC*IiIi", "nV:512:", "avx512pf")
+TARGET_BUILTIN(__builtin_ia32_gatherpfqpd, "vUcV8LLivC*IiIi", "nV:512:", "avx512pf")
+TARGET_BUILTIN(__builtin_ia32_gatherpfqps, "vUcV8LLivC*IiIi", "nV:512:", "avx512pf")
+TARGET_BUILTIN(__builtin_ia32_scatterpfdpd, "vUcV8iv*IiIi", "nV:512:", "avx512pf")
+TARGET_BUILTIN(__builtin_ia32_scatterpfdps, "vUsV16iv*IiIi", "nV:512:", "avx512pf")
+TARGET_BUILTIN(__builtin_ia32_scatterpfqpd, "vUcV8LLiv*IiIi", "nV:512:", "avx512pf")
+TARGET_BUILTIN(__builtin_ia32_scatterpfqps, "vUcV8LLiv*IiIi", "nV:512:", "avx512pf")
TARGET_BUILTIN(__builtin_ia32_knotqi, "UcUc", "nc", "avx512dq")
TARGET_BUILTIN(__builtin_ia32_knothi, "UsUs", "nc", "avx512f")
@@ -1065,12 +1067,12 @@
TARGET_BUILTIN(__builtin_ia32_psubusb512, "V64cV64cV64c", "ncV:512:", "avx512bw")
TARGET_BUILTIN(__builtin_ia32_psubusw512, "V32sV32sV32s", "ncV:512:", "avx512bw")
-TARGET_BUILTIN(__builtin_ia32_vpconflictdi_128_mask, "V2LLiV2LLiV2LLiUc", "ncV:128:", "avx512cd,avx512vl")
-TARGET_BUILTIN(__builtin_ia32_vpconflictdi_256_mask, "V4LLiV4LLiV4LLiUc", "ncV:256:", "avx512cd,avx512vl")
-TARGET_BUILTIN(__builtin_ia32_vpconflictsi_128_mask, "V4iV4iV4iUc", "ncV:128:", "avx512cd,avx512vl")
-TARGET_BUILTIN(__builtin_ia32_vpconflictsi_256_mask, "V8iV8iV8iUc", "ncV:256:", "avx512cd,avx512vl")
-TARGET_BUILTIN(__builtin_ia32_vpconflictdi_512_mask, "V8LLiV8LLiV8LLiUc", "ncV:512:", "avx512cd")
-TARGET_BUILTIN(__builtin_ia32_vpconflictsi_512_mask, "V16iV16iV16iUs", "ncV:512:", "avx512cd")
+TARGET_BUILTIN(__builtin_ia32_vpconflictdi_128, "V2LLiV2LLi", "ncV:128:", "avx512cd,avx512vl")
+TARGET_BUILTIN(__builtin_ia32_vpconflictdi_256, "V4LLiV4LLi", "ncV:256:", "avx512cd,avx512vl")
+TARGET_BUILTIN(__builtin_ia32_vpconflictsi_128, "V4iV4i", "ncV:128:", "avx512cd,avx512vl")
+TARGET_BUILTIN(__builtin_ia32_vpconflictsi_256, "V8iV8i", "ncV:256:", "avx512cd,avx512vl")
+TARGET_BUILTIN(__builtin_ia32_vpconflictdi_512, "V8LLiV8LLi", "ncV:512:", "avx512cd")
+TARGET_BUILTIN(__builtin_ia32_vpconflictsi_512, "V16iV16i", "ncV:512:", "avx512cd")
TARGET_BUILTIN(__builtin_ia32_vplzcntd_512, "V16iV16i", "ncV:512:", "avx512cd")
TARGET_BUILTIN(__builtin_ia32_vplzcntq_512, "V8LLiV8LLi", "ncV:512:", "avx512cd")
@@ -1211,22 +1213,22 @@
TARGET_BUILTIN(__builtin_ia32_scalefps128_mask, "V4fV4fV4fV4fUc", "ncV:128:", "avx512vl")
TARGET_BUILTIN(__builtin_ia32_scalefps256_mask, "V8fV8fV8fV8fUc", "ncV:256:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_scatterdiv2df, "vd*UcV2LLiV2dIi", "nV:128:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_scatterdiv2di, "vLLi*UcV2LLiV2LLiIi", "nV:128:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_scatterdiv4df, "vd*UcV4LLiV4dIi", "nV:256:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_scatterdiv4di, "vLLi*UcV4LLiV4LLiIi", "nV:256:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_scatterdiv4sf, "vf*UcV2LLiV4fIi", "nV:128:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_scatterdiv4si, "vi*UcV2LLiV4iIi", "nV:128:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_scatterdiv8sf, "vf*UcV4LLiV4fIi", "nV:256:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_scatterdiv8si, "vi*UcV4LLiV4iIi", "nV:256:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_scattersiv2df, "vd*UcV4iV2dIi", "nV:128:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_scattersiv2di, "vLLi*UcV4iV2LLiIi", "nV:128:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_scattersiv4df, "vd*UcV4iV4dIi", "nV:256:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_scattersiv4di, "vLLi*UcV4iV4LLiIi", "nV:256:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_scattersiv4sf, "vf*UcV4iV4fIi", "nV:128:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_scattersiv4si, "vi*UcV4iV4iIi", "nV:128:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_scattersiv8sf, "vf*UcV8iV8fIi", "nV:256:", "avx512vl")
-TARGET_BUILTIN(__builtin_ia32_scattersiv8si, "vi*UcV8iV8iIi", "nV:256:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_scatterdiv2df, "vv*UcV2LLiV2dIi", "nV:128:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_scatterdiv2di, "vv*UcV2LLiV2LLiIi", "nV:128:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_scatterdiv4df, "vv*UcV4LLiV4dIi", "nV:256:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_scatterdiv4di, "vv*UcV4LLiV4LLiIi", "nV:256:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_scatterdiv4sf, "vv*UcV2LLiV4fIi", "nV:128:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_scatterdiv4si, "vv*UcV2LLiV4iIi", "nV:128:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_scatterdiv8sf, "vv*UcV4LLiV4fIi", "nV:256:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_scatterdiv8si, "vv*UcV4LLiV4iIi", "nV:256:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_scattersiv2df, "vv*UcV4iV2dIi", "nV:128:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_scattersiv2di, "vv*UcV4iV2LLiIi", "nV:128:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_scattersiv4df, "vv*UcV4iV4dIi", "nV:256:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_scattersiv4di, "vv*UcV4iV4LLiIi", "nV:256:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_scattersiv4sf, "vv*UcV4iV4fIi", "nV:128:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_scattersiv4si, "vv*UcV4iV4iIi", "nV:128:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_scattersiv8sf, "vv*UcV8iV8fIi", "nV:256:", "avx512vl")
+TARGET_BUILTIN(__builtin_ia32_scattersiv8si, "vv*UcV8iV8iIi", "nV:256:", "avx512vl")
TARGET_BUILTIN(__builtin_ia32_vpermi2vard128, "V4iV4iV4iV4i", "ncV:128:", "avx512vl")
TARGET_BUILTIN(__builtin_ia32_vpermi2vard256, "V8iV8iV8iV8i", "ncV:256:", "avx512vl")
@@ -1257,43 +1259,25 @@
TARGET_BUILTIN(__builtin_ia32_vpshldw256, "V16sV16sV16sIi", "ncV:256:", "avx512vl,avx512vbmi2")
TARGET_BUILTIN(__builtin_ia32_vpshldw512, "V32sV32sV32sIi", "ncV:512:", "avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshldvd128_mask, "V4iV4iV4iV4iUc", "ncV:128:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshldvd256_mask, "V8iV8iV8iV8iUc", "ncV:256:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshldvd512_mask, "V16iV16iV16iV16iUs", "ncV:512:", "avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshldvq128_mask, "V2LLiV2LLiV2LLiV2LLiUc", "ncV:128:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshldvq256_mask, "V4LLiV4LLiV4LLiV4LLiUc", "ncV:256:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshldvq512_mask, "V8LLiV8LLiV8LLiV8LLiUc", "ncV:512:", "avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshldvw128_mask, "V8sV8sV8sV8sUc", "ncV:128:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshldvw256_mask, "V16sV16sV16sV16sUs", "ncV:256:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshldvw512_mask, "V32sV32sV32sV32sUi", "ncV:512:", "avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshldvd128_maskz, "V4iV4iV4iV4iUc", "ncV:128:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshldvd256_maskz, "V8iV8iV8iV8iUc", "ncV:256:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshldvd512_maskz, "V16iV16iV16iV16iUs", "ncV:512:", "avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshldvq128_maskz, "V2LLiV2LLiV2LLiV2LLiUc", "ncV:128:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshldvq256_maskz, "V4LLiV4LLiV4LLiV4LLiUc", "ncV:256:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshldvq512_maskz, "V8LLiV8LLiV8LLiV8LLiUc", "ncV:512:", "avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshldvw128_maskz, "V8sV8sV8sV8sUc", "ncV:128:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshldvw256_maskz, "V16sV16sV16sV16sUs", "ncV:256:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshldvw512_maskz, "V32sV32sV32sV32sUi", "ncV:512:", "avx512vbmi2")
+TARGET_BUILTIN(__builtin_ia32_vpshldvd128, "V4iV4iV4iV4i", "ncV:128:", "avx512vl,avx512vbmi2")
+TARGET_BUILTIN(__builtin_ia32_vpshldvd256, "V8iV8iV8iV8i", "ncV:256:", "avx512vl,avx512vbmi2")
+TARGET_BUILTIN(__builtin_ia32_vpshldvd512, "V16iV16iV16iV16i", "ncV:512:", "avx512vbmi2")
+TARGET_BUILTIN(__builtin_ia32_vpshldvq128, "V2LLiV2LLiV2LLiV2LLi", "ncV:128:", "avx512vl,avx512vbmi2")
+TARGET_BUILTIN(__builtin_ia32_vpshldvq256, "V4LLiV4LLiV4LLiV4LLi", "ncV:256:", "avx512vl,avx512vbmi2")
+TARGET_BUILTIN(__builtin_ia32_vpshldvq512, "V8LLiV8LLiV8LLiV8LLi", "ncV:512:", "avx512vbmi2")
+TARGET_BUILTIN(__builtin_ia32_vpshldvw128, "V8sV8sV8sV8s", "ncV:128:", "avx512vl,avx512vbmi2")
+TARGET_BUILTIN(__builtin_ia32_vpshldvw256, "V16sV16sV16sV16s", "ncV:256:", "avx512vl,avx512vbmi2")
+TARGET_BUILTIN(__builtin_ia32_vpshldvw512, "V32sV32sV32sV32s", "ncV:512:", "avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshrdvd128_mask, "V4iV4iV4iV4iUc", "ncV:128:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshrdvd256_mask, "V8iV8iV8iV8iUc", "ncV:256:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshrdvd512_mask, "V16iV16iV16iV16iUs", "ncV:512:", "avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshrdvq128_mask, "V2LLiV2LLiV2LLiV2LLiUc", "ncV:128:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshrdvq256_mask, "V4LLiV4LLiV4LLiV4LLiUc", "ncV:256:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshrdvq512_mask, "V8LLiV8LLiV8LLiV8LLiUc", "ncV:512:", "avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshrdvw128_mask, "V8sV8sV8sV8sUc", "ncV:128:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshrdvw256_mask, "V16sV16sV16sV16sUs", "ncV:256:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshrdvw512_mask, "V32sV32sV32sV32sUi", "ncV:512:", "avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshrdvd128_maskz, "V4iV4iV4iV4iUc", "ncV:128:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshrdvd256_maskz, "V8iV8iV8iV8iUc", "ncV:256:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshrdvd512_maskz, "V16iV16iV16iV16iUs", "ncV:512:", "avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshrdvq128_maskz, "V2LLiV2LLiV2LLiV2LLiUc", "ncV:128:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshrdvq256_maskz, "V4LLiV4LLiV4LLiV4LLiUc", "ncV:256:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshrdvq512_maskz, "V8LLiV8LLiV8LLiV8LLiUc", "ncV:512:", "avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshrdvw128_maskz, "V8sV8sV8sV8sUc", "ncV:128:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshrdvw256_maskz, "V16sV16sV16sV16sUs", "ncV:256:", "avx512vl,avx512vbmi2")
-TARGET_BUILTIN(__builtin_ia32_vpshrdvw512_maskz, "V32sV32sV32sV32sUi", "ncV:512:", "avx512vbmi2")
+TARGET_BUILTIN(__builtin_ia32_vpshrdvd128, "V4iV4iV4iV4i", "ncV:128:", "avx512vl,avx512vbmi2")
+TARGET_BUILTIN(__builtin_ia32_vpshrdvd256, "V8iV8iV8iV8i", "ncV:256:", "avx512vl,avx512vbmi2")
+TARGET_BUILTIN(__builtin_ia32_vpshrdvd512, "V16iV16iV16iV16i", "ncV:512:", "avx512vbmi2")
+TARGET_BUILTIN(__builtin_ia32_vpshrdvq128, "V2LLiV2LLiV2LLiV2LLi", "ncV:128:", "avx512vl,avx512vbmi2")
+TARGET_BUILTIN(__builtin_ia32_vpshrdvq256, "V4LLiV4LLiV4LLiV4LLi", "ncV:256:", "avx512vl,avx512vbmi2")
+TARGET_BUILTIN(__builtin_ia32_vpshrdvq512, "V8LLiV8LLiV8LLiV8LLi", "ncV:512:", "avx512vbmi2")
+TARGET_BUILTIN(__builtin_ia32_vpshrdvw128, "V8sV8sV8sV8s", "ncV:128:", "avx512vl,avx512vbmi2")
+TARGET_BUILTIN(__builtin_ia32_vpshrdvw256, "V16sV16sV16sV16s", "ncV:256:", "avx512vl,avx512vbmi2")
+TARGET_BUILTIN(__builtin_ia32_vpshrdvw512, "V32sV32sV32sV32s", "ncV:512:", "avx512vbmi2")
TARGET_BUILTIN(__builtin_ia32_vpshrdd128, "V4iV4iV4iIi", "ncV:128:", "avx512vl,avx512vbmi2")
TARGET_BUILTIN(__builtin_ia32_vpshrdd256, "V8iV8iV8iIi", "ncV:256:", "avx512vl,avx512vbmi2")
@@ -1317,7 +1301,6 @@
TARGET_BUILTIN(__builtin_ia32_cvtps2uqq128_mask, "V2LLiV4fV2LLiUc", "ncV:128:", "avx512vl,avx512dq")
TARGET_BUILTIN(__builtin_ia32_cvtps2uqq256_mask, "V4LLiV4fV4LLiUc", "ncV:256:", "avx512vl,avx512dq")
TARGET_BUILTIN(__builtin_ia32_cvtqq2ps128_mask, "V4fV2LLiV4fUc", "ncV:128:", "avx512vl,avx512dq")
-TARGET_BUILTIN(__builtin_ia32_cvtqq2ps256_mask, "V4fV4LLiV4fUc", "ncV:256:", "avx512vl,avx512dq")
TARGET_BUILTIN(__builtin_ia32_cvttpd2qq128_mask, "V2LLiV2dV2LLiUc", "ncV:128:", "avx512vl,avx512dq")
TARGET_BUILTIN(__builtin_ia32_cvttpd2qq256_mask, "V4LLiV4dV4LLiUc", "ncV:256:", "avx512vl,avx512dq")
TARGET_BUILTIN(__builtin_ia32_cvttpd2uqq128_mask, "V2LLiV2dV2LLiUc", "ncV:128:", "avx512vl,avx512dq")
@@ -1327,7 +1310,6 @@
TARGET_BUILTIN(__builtin_ia32_cvttps2uqq128_mask, "V2LLiV4fV2LLiUc", "ncV:128:", "avx512vl,avx512dq")
TARGET_BUILTIN(__builtin_ia32_cvttps2uqq256_mask, "V4LLiV4fV4LLiUc", "ncV:256:", "avx512vl,avx512dq")
TARGET_BUILTIN(__builtin_ia32_cvtuqq2ps128_mask, "V4fV2LLiV4fUc", "ncV:128:", "avx512vl,avx512dq")
-TARGET_BUILTIN(__builtin_ia32_cvtuqq2ps256_mask, "V4fV4LLiV4fUc", "ncV:256:", "avx512vl,avx512dq")
TARGET_BUILTIN(__builtin_ia32_rangepd128_mask, "V2dV2dV2dIiV2dUc", "ncV:128:", "avx512vl,avx512dq")
TARGET_BUILTIN(__builtin_ia32_rangepd256_mask, "V4dV4dV4dIiV4dUc", "ncV:256:", "avx512vl,avx512dq")
TARGET_BUILTIN(__builtin_ia32_rangeps128_mask, "V4fV4fV4fIiV4fUc", "ncV:128:", "avx512vl,avx512dq")
@@ -1840,9 +1822,9 @@
TARGET_BUILTIN(__builtin_ia32_cvtsi2ss32, "V4fV4fiIi", "ncV:128:", "avx512f")
TARGET_BUILTIN(__builtin_ia32_cvtss2sd_round_mask, "V2dV2dV4fV2dUcIi", "ncV:128:", "avx512f")
TARGET_BUILTIN(__builtin_ia32_cvtusi2ss32, "V4fV4fUiIi", "ncV:128:", "avx512f")
-TARGET_BUILTIN(__builtin_ia32_vpmultishiftqb512_mask, "V64cV64cV64cV64cULLi", "ncV:512:", "avx512vbmi")
-TARGET_BUILTIN(__builtin_ia32_vpmultishiftqb128_mask, "V16cV16cV16cV16cUs", "ncV:128:", "avx512vbmi,avx512vl")
-TARGET_BUILTIN(__builtin_ia32_vpmultishiftqb256_mask, "V32cV32cV32cV32cUi", "ncV:256:", "avx512vbmi,avx512vl")
+TARGET_BUILTIN(__builtin_ia32_vpmultishiftqb512, "V64cV64cV64c", "ncV:512:", "avx512vbmi")
+TARGET_BUILTIN(__builtin_ia32_vpmultishiftqb128, "V16cV16cV16c", "ncV:128:", "avx512vbmi,avx512vl")
+TARGET_BUILTIN(__builtin_ia32_vpmultishiftqb256, "V32cV32cV32c", "ncV:256:", "avx512vbmi,avx512vl")
// generic select intrinsics
TARGET_BUILTIN(__builtin_ia32_selectb_128, "V16cUsV16cV16c", "ncV:128:", "avx512bw,avx512vl")
diff --git a/linux-x64/clang/include/clang/Basic/BuiltinsX86_64.def b/linux-x64/clang/include/clang/Basic/BuiltinsX86_64.def
index b59f82d..59b60c3 100644
--- a/linux-x64/clang/include/clang/Basic/BuiltinsX86_64.def
+++ b/linux-x64/clang/include/clang/Basic/BuiltinsX86_64.def
@@ -1,9 +1,8 @@
//===--- BuiltinsX86_64.def - X86-64 Builtin function database --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -76,8 +75,7 @@
TARGET_BUILTIN(__builtin_ia32_rdsspq, "ULLiULLi", "n", "shstk")
TARGET_BUILTIN(__builtin_ia32_wrssq, "vULLiv*", "n", "shstk")
TARGET_BUILTIN(__builtin_ia32_wrussq, "vULLiv*", "n", "shstk")
-TARGET_BUILTIN(__builtin_ia32_addcarryx_u64, "UcUcULLiULLiULLi*", "n", "adx")
-TARGET_BUILTIN(__builtin_ia32_addcarry_u64, "UcUcULLiULLiULLi*", "n", "")
+TARGET_BUILTIN(__builtin_ia32_addcarryx_u64, "UcUcULLiULLiULLi*", "n", "")
TARGET_BUILTIN(__builtin_ia32_subborrow_u64, "UcUcULLiULLiULLi*", "n", "")
TARGET_BUILTIN(__builtin_ia32_rdrand64_step, "UiULLi*", "n", "rdrnd")
TARGET_BUILTIN(__builtin_ia32_rdseed64_step, "UiULLi*", "n", "rdseed")
diff --git a/linux-x64/clang/include/clang/Basic/BuiltinsXCore.def b/linux-x64/clang/include/clang/Basic/BuiltinsXCore.def
index 672d205..c99b7ce 100644
--- a/linux-x64/clang/include/clang/Basic/BuiltinsXCore.def
+++ b/linux-x64/clang/include/clang/Basic/BuiltinsXCore.def
@@ -1,9 +1,8 @@
//===--- BuiltinsXCore.def - XCore Builtin function database ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/CapturedStmt.h b/linux-x64/clang/include/clang/Basic/CapturedStmt.h
index 324e1b1..029e114 100644
--- a/linux-x64/clang/include/clang/Basic/CapturedStmt.h
+++ b/linux-x64/clang/include/clang/Basic/CapturedStmt.h
@@ -1,9 +1,8 @@
//===--- CapturedStmt.h - Types for CapturedStmts ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Basic/CharInfo.h b/linux-x64/clang/include/clang/Basic/CharInfo.h
index e6c5e90..8577475 100644
--- a/linux-x64/clang/include/clang/Basic/CharInfo.h
+++ b/linux-x64/clang/include/clang/Basic/CharInfo.h
@@ -1,9 +1,8 @@
//===--- clang/Basic/CharInfo.h - Classifying ASCII Characters --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Frontend/CodeGenOptions.def b/linux-x64/clang/include/clang/Basic/CodeGenOptions.def
similarity index 93%
rename from linux-x64/clang/include/clang/Frontend/CodeGenOptions.def
rename to linux-x64/clang/include/clang/Basic/CodeGenOptions.def
index 5862b2b..2a8574e 100644
--- a/linux-x64/clang/include/clang/Frontend/CodeGenOptions.def
+++ b/linux-x64/clang/include/clang/Basic/CodeGenOptions.def
@@ -1,9 +1,8 @@
//===--- CodeGenOptions.def - Code generation option database ----- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -62,6 +61,8 @@
CODEGENOPT(DebugPassManager, 1, 0) ///< Prints debug information for the new
///< pass manager.
CODEGENOPT(DisableRedZone , 1, 0) ///< Set when -mno-red-zone is enabled.
+CODEGENOPT(IndirectTlsSegRefs, 1, 0) ///< Set when -mno-tls-direct-seg-refs
+ ///< is specified.
CODEGENOPT(DisableTailCalls , 1, 0) ///< Do not emit tail calls.
CODEGENOPT(NoEscapingBlockTailCalls, 1, 0) ///< Do not emit tail calls from
///< escaping blocks.
@@ -114,6 +115,10 @@
///< compile step.
CODEGENOPT(LTOUnit, 1, 0) ///< Emit IR to support LTO unit features (CFI, whole
///< program vtable opt).
+CODEGENOPT(EnableSplitLTOUnit, 1, 0) ///< Enable LTO unit splitting to support
+ /// CFI and traditional whole program
+ /// devirtualization that require whole
+ /// program IR support.
CODEGENOPT(IncrementalLinkerCompatible, 1, 0) ///< Emit an object file which can
///< be used with an incremental
///< linker.
@@ -147,6 +152,8 @@
CODEGENOPT(NoZeroInitializedInBSS , 1, 0) ///< -fno-zero-initialized-in-bss.
/// Method of Objective-C dispatch to use.
ENUM_CODEGENOPT(ObjCDispatchMethod, ObjCDispatchMethodKind, 2, Legacy)
+/// Replace certain message sends with calls to ObjC runtime entrypoints
+CODEGENOPT(ObjCConvertMessagesToRuntimeCalls , 1, 1)
CODEGENOPT(OmitLeafFramePointer , 1, 0) ///< Set when -momit-leaf-frame-pointer is
///< enabled.
@@ -172,11 +179,12 @@
CODEGENOPT(SaveTempLabels , 1, 0) ///< Save temporary labels.
CODEGENOPT(SanitizeAddressUseAfterScope , 1, 0) ///< Enable use-after-scope detection
///< in AddressSanitizer
-CODEGENOPT(SanitizeAddressPoisonClassMemberArrayNewCookie, 1,
+CODEGENOPT(SanitizeAddressPoisonCustomArrayCookie, 1,
0) ///< Enable poisoning operator new[] which is not a replaceable
///< global allocation function in AddressSanitizer
CODEGENOPT(SanitizeAddressGlobalsDeadStripping, 1, 0) ///< Enable linker dead stripping
///< of globals in AddressSanitizer
+CODEGENOPT(SanitizeAddressUseOdrIndicator, 1, 0) ///< Enable ODR indicator globals
CODEGENOPT(SanitizeMemoryTrackOrigins, 2, 0) ///< Enable tracking origins in
///< MemorySanitizer
CODEGENOPT(SanitizeMemoryUseAfterDtor, 1, 0) ///< Enable use-after-delete detection
@@ -250,7 +258,9 @@
CODEGENOPT(DebugExplicitImport, 1, 0) ///< Whether or not debug info should
///< contain explicit imports for
///< anonymous namespaces
-CODEGENOPT(EnableSplitDwarf, 1, 0) ///< Whether to enable split DWARF
+
+ENUM_CODEGENOPT(SplitDwarfMode, DwarfFissionKind, 2, NoFission) ///< DWARF fission mode to use.
+
CODEGENOPT(SplitDwarfInlining, 1, 1) ///< Whether to include inlining info in the
///< skeleton CU to allow for symbolication
///< of inline stack frames without .dwo files.
@@ -293,6 +303,9 @@
/// CodeView and DWARF into the same object.
CODEGENOPT(EmitCodeView, 1, 0)
+/// Whether to emit the .debug$H section containing hashes of CodeView types.
+CODEGENOPT(CodeViewGHash, 1, 0)
+
/// The kind of inlining to perform.
ENUM_CODEGENOPT(Inlining, InliningMethod, 2, NormalInlining)
@@ -329,6 +342,9 @@
/// Whether to emit .debug_gnu_pubnames section instead of .debug_pubnames.
CODEGENOPT(DebugNameTable, 2, 0)
+/// Whether to use DWARF base address specifiers in .debug_ranges.
+CODEGENOPT(DebugRangesBaseAddress, 1, 0)
+
CODEGENOPT(NoPLT, 1, 0)
/// Whether to embed source in DWARF debug line section.
@@ -341,6 +357,8 @@
CODEGENOPT(Addrsig, 1, 0)
ENUM_CODEGENOPT(SignReturnAddress, SignReturnAddressScope, 2, None)
+ENUM_CODEGENOPT(SignReturnAddressKey, SignReturnAddressKeyValue, 1, AKey)
+CODEGENOPT(BranchTargetEnforcement, 1, 0)
/// Whether to emit unused static constants.
CODEGENOPT(KeepStaticConsts, 1, 0)
diff --git a/linux-x64/clang/include/clang/Frontend/CodeGenOptions.h b/linux-x64/clang/include/clang/Basic/CodeGenOptions.h
similarity index 89%
rename from linux-x64/clang/include/clang/Frontend/CodeGenOptions.h
rename to linux-x64/clang/include/clang/Basic/CodeGenOptions.h
index d876344..5c8abe3 100644
--- a/linux-x64/clang/include/clang/Frontend/CodeGenOptions.h
+++ b/linux-x64/clang/include/clang/Basic/CodeGenOptions.h
@@ -1,9 +1,8 @@
//===--- CodeGenOptions.h ---------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -11,8 +10,8 @@
//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_CLANG_FRONTEND_CODEGENOPTIONS_H
-#define LLVM_CLANG_FRONTEND_CODEGENOPTIONS_H
+#ifndef LLVM_CLANG_BASIC_CODEGENOPTIONS_H
+#define LLVM_CLANG_BASIC_CODEGENOPTIONS_H
#include "clang/Basic/DebugInfoOptions.h"
#include "clang/Basic/Sanitizers.h"
@@ -33,12 +32,12 @@
public:
#define CODEGENOPT(Name, Bits, Default) unsigned Name : Bits;
#define ENUM_CODEGENOPT(Name, Type, Bits, Default)
-#include "clang/Frontend/CodeGenOptions.def"
+#include "clang/Basic/CodeGenOptions.def"
protected:
#define CODEGENOPT(Name, Bits, Default)
#define ENUM_CODEGENOPT(Name, Type, Bits, Default) unsigned Name : Bits;
-#include "clang/Frontend/CodeGenOptions.def"
+#include "clang/Basic/CodeGenOptions.def"
};
/// CodeGenOptions - Track various options which control how the code
@@ -71,6 +70,8 @@
LocalExecTLSModel
};
+ enum DwarfFissionKind { NoFission, SplitFileFission, SingleFileFission };
+
/// Clang versions with different platform ABI conformance.
enum class ClangABI {
/// Attempt to be ABI-compatible with code generated by Clang 3.8.x
@@ -114,6 +115,8 @@
All // Sign the return address of all functions
};
+ enum SignReturnAddressKeyValue { AKey, BKey };
+
/// The code model to use (-mcmodel).
std::string CodeModel;
@@ -125,6 +128,12 @@
/// The filename with path we use for coverage notes files.
std::string CoverageNotesFile;
+ /// Regexes separated by a semi-colon to filter the files to instrument.
+ std::string ProfileFilterFiles;
+
+ /// Regexes separated by a semi-colon to filter the files to not instrument.
+ std::string ProfileExcludeFiles;
+
/// The version string to put into coverage files.
char CoverageVersion[4];
@@ -138,6 +147,10 @@
/// non-empty.
std::string DwarfDebugFlags;
+ /// The string containing the commandline for the llvm.commandline metadata,
+ /// if non-empty.
+ std::string RecordCommandLine;
+
std::map<std::string, std::string> DebugPrefixMap;
/// The ABI to use for passing floating point arguments.
@@ -200,6 +213,10 @@
/// Name of the profile file to use as input for -fprofile-instr-use
std::string ProfileInstrumentUsePath;
+ /// Name of the profile remapping file to apply to the profile data supplied
+ /// by -fprofile-sample-use or -fprofile-instr-use.
+ std::string ProfileRemappingFile;
+
/// Name of the function summary index file to use for ThinLTO function
/// importing.
std::string ThinLTOIndexFile;
@@ -268,13 +285,18 @@
/// Set of XRay instrumentation kinds to emit.
XRayInstrSet XRayInstrumentationBundle;
+ std::vector<std::string> DefaultFunctionAttrs;
+
+ /// List of dynamic shared object files to be loaded as pass plugins.
+ std::vector<std::string> PassPlugins;
+
public:
// Define accessors/mutators for code generation options of enumeration type.
#define CODEGENOPT(Name, Bits, Default)
#define ENUM_CODEGENOPT(Name, Type, Bits, Default) \
Type get##Name() const { return static_cast<Type>(Name); } \
void set##Name(Type Value) { Name = static_cast<unsigned>(Value); }
-#include "clang/Frontend/CodeGenOptions.def"
+#include "clang/Basic/CodeGenOptions.def"
CodeGenOptions();
diff --git a/linux-x64/clang/include/clang/Basic/CommentOptions.h b/linux-x64/clang/include/clang/Basic/CommentOptions.h
index 6cc9cf6..7d142fc 100644
--- a/linux-x64/clang/include/clang/Basic/CommentOptions.h
+++ b/linux-x64/clang/include/clang/Basic/CommentOptions.h
@@ -1,9 +1,8 @@
//===- CommentOptions.h - Options for parsing comments ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/Cuda.h b/linux-x64/clang/include/clang/Basic/Cuda.h
index f9fcbd9..d96c7e0 100644
--- a/linux-x64/clang/include/clang/Basic/Cuda.h
+++ b/linux-x64/clang/include/clang/Basic/Cuda.h
@@ -1,9 +1,8 @@
//===--- Cuda.h - Utilities for compiling CUDA code ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -12,6 +11,7 @@
namespace llvm {
class StringRef;
+class VersionTuple;
} // namespace llvm
namespace clang {
@@ -25,12 +25,12 @@
CUDA_91,
CUDA_92,
CUDA_100,
- LATEST = CUDA_100,
+ CUDA_101,
+ LATEST = CUDA_101,
};
const char *CudaVersionToString(CudaVersion V);
-
-// No string -> CudaVersion conversion function because there's no canonical
-// spelling of the various CUDA versions.
+// Input is "Major.Minor"
+CudaVersion CudaStringToVersion(llvm::StringRef S);
enum class CudaArch {
UNKNOWN,
@@ -62,6 +62,9 @@
GFX810,
GFX900,
GFX902,
+ GFX904,
+ GFX906,
+ GFX909,
LAST,
};
const char *CudaArchToString(CudaArch A);
@@ -101,6 +104,17 @@
/// Get the latest CudaVersion that supports the given CudaArch.
CudaVersion MaxVersionForCudaArch(CudaArch A);
+// Various SDK-dependent features that affect CUDA compilation
+enum class CudaFeature {
+ // CUDA-9.2+ uses a new API for launching kernels.
+ CUDA_USES_NEW_LAUNCH,
+ // CUDA-10.1+ needs explicit end of GPU binary registration.
+ CUDA_USES_FATBIN_REGISTER_END,
+};
+
+bool CudaFeatureEnabled(llvm::VersionTuple, CudaFeature);
+bool CudaFeatureEnabled(CudaVersion, CudaFeature);
+
} // namespace clang
#endif
diff --git a/linux-x64/clang/include/clang/Basic/DebugInfoOptions.h b/linux-x64/clang/include/clang/Basic/DebugInfoOptions.h
index 38f139b..91d3332 100644
--- a/linux-x64/clang/include/clang/Basic/DebugInfoOptions.h
+++ b/linux-x64/clang/include/clang/Basic/DebugInfoOptions.h
@@ -1,9 +1,8 @@
//===--- DebugInfoOptions.h - Debug Info Emission Types ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -13,6 +12,11 @@
namespace clang {
namespace codegenoptions {
+enum DebugInfoFormat {
+ DIF_DWARF,
+ DIF_CodeView,
+};
+
enum DebugInfoKind {
NoDebugInfo, /// Don't generate debug info.
LocTrackingOnly, /// Emit location information but do not generate
diff --git a/linux-x64/clang/include/clang/Basic/Diagnostic.h b/linux-x64/clang/include/clang/Basic/Diagnostic.h
index d30ac14..88947b7 100644
--- a/linux-x64/clang/include/clang/Basic/Diagnostic.h
+++ b/linux-x64/clang/include/clang/Basic/Diagnostic.h
@@ -1,9 +1,8 @@
//===- Diagnostic.h - C Language Family Diagnostic Handling -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -177,6 +176,9 @@
/// IdentifierInfo
ak_identifierinfo,
+ /// Qualifiers
+ ak_qual,
+
/// QualType
ak_qualtype,
@@ -486,10 +488,8 @@
DiagnosticsEngine &operator=(const DiagnosticsEngine &) = delete;
~DiagnosticsEngine();
- LLVM_DUMP_METHOD void dump() const { DiagStatesByLoc.dump(*SourceMgr); }
- LLVM_DUMP_METHOD void dump(StringRef DiagName) const {
- DiagStatesByLoc.dump(*SourceMgr, DiagName);
- }
+ LLVM_DUMP_METHOD void dump() const;
+ LLVM_DUMP_METHOD void dump(StringRef DiagName) const;
const IntrusiveRefCntPtr<DiagnosticIDs> &getDiagnosticIDs() const {
return Diags;
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticAST.h b/linux-x64/clang/include/clang/Basic/DiagnosticAST.h
new file mode 100644
index 0000000..afe5f62
--- /dev/null
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticAST.h
@@ -0,0 +1,28 @@
+//===--- DiagnosticAST.h - Diagnostics for the AST library ------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_BASIC_DIAGNOSTICAST_H
+#define LLVM_CLANG_BASIC_DIAGNOSTICAST_H
+
+#include "clang/Basic/Diagnostic.h"
+
+namespace clang {
+namespace diag {
+enum {
+#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \
+ SHOWINSYSHEADER, CATEGORY) \
+ ENUM,
+#define ASTSTART
+#include "clang/Basic/DiagnosticASTKinds.inc"
+#undef DIAG
+ NUM_BUILTIN_AST_DIAGNOSTICS
+};
+} // end namespace diag
+} // end namespace clang
+
+#endif // LLVM_CLANG_BASIC_DIAGNOSTICAST_H
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticASTKinds.inc b/linux-x64/clang/include/clang/Basic/DiagnosticASTKinds.inc
index b90ccaf..bb6dc26 100644
--- a/linux-x64/clang/include/clang/Basic/DiagnosticASTKinds.inc
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticASTKinds.inc
@@ -55,6 +55,7 @@
DIAG(note_constexpr_lifetime_ended, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{read of|assignment to|increment of|decrement of}0 %select{temporary|variable}1 whose lifetime has ended", 0, SFINAE_Suppress, false, false, 0)
DIAG(note_constexpr_lshift_discards, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "signed left shift discards bits", 0, SFINAE_Suppress, false, false, 0)
DIAG(note_constexpr_lshift_of_negative, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "left shift of negative value %0", 0, SFINAE_Suppress, false, false, 0)
+DIAG(note_constexpr_ltor_incomplete_type, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "read of incomplete type %0 is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0)
DIAG(note_constexpr_ltor_mutable, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "read of mutable member %0 is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0)
DIAG(note_constexpr_ltor_non_const_int, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "read of non-const variable %0 is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0)
DIAG(note_constexpr_ltor_non_constexpr, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "read of non-constexpr variable %0 is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0)
@@ -119,5 +120,12 @@
DIAG(note_odr_value_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declared here with type %0", 0, SFINAE_Suppress, false, false, 0)
DIAG(note_odr_virtual_base, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{non-virtual|virtual}0 derivation here", 0, SFINAE_Suppress, false, false, 0)
DIAG(note_unimplemented_constexpr_lambda_feature_ast, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "unimplemented constexpr lambda feature: %0 (coming soon!)", 0, SFINAE_Suppress, false, false, 0)
-DIAG(warn_integer_constant_overflow, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overflow in expression; result is %0 with type %1", 325, SFINAE_Suppress, false, false, 0)
-DIAG(warn_odr_tag_type_inconsistent, CLASS_WARNING, (unsigned)diag::Severity::Warning, "type %0 has incompatible definitions in different translation units", 487, SFINAE_Suppress, false, false, 0)
+DIAG(remark_sanitize_address_insert_extra_padding_accepted, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "-fsanitize-address-field-padding applied to %0", 577, SFINAE_Suppress, false, true, 0)
+DIAG(remark_sanitize_address_insert_extra_padding_rejected, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "-fsanitize-address-field-padding ignored for %0 because it %select{is not C++|is packed|is a union|is trivially copyable|has trivial destructor|is standard layout|is in a blacklisted file|is blacklisted}1", 577, SFINAE_Suppress, false, true, 0)
+DIAG(warn_integer_constant_overflow, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overflow in expression; result is %0 with type %1", 334, SFINAE_Suppress, false, false, 0)
+DIAG(warn_npot_ms_struct, CLASS_WARNING, (unsigned)diag::Severity::Error, "ms_struct may not produce Microsoft-compatible layouts with fundamental data types with sizes that aren't a power of two", 309, SFINAE_Suppress, false, false, 0)
+DIAG(warn_odr_tag_type_inconsistent, CLASS_WARNING, (unsigned)diag::Severity::Warning, "type %0 has incompatible definitions in different translation units", 497, SFINAE_Suppress, false, false, 0)
+DIAG(warn_padded_struct_anon_field, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "padding %select{struct|interface|class}0 %1 with %2 %select{byte|bit}3%s2 to align anonymous bit-field", 518, SFINAE_Suppress, false, false, 0)
+DIAG(warn_padded_struct_field, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "padding %select{struct|interface|class}0 %1 with %2 %select{byte|bit}3%s2 to align %4", 518, SFINAE_Suppress, false, false, 0)
+DIAG(warn_padded_struct_size, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "padding size of %0 with %1 %select{byte|bit}2%s1 to alignment boundary", 518, SFINAE_Suppress, false, false, 0)
+DIAG(warn_unnecessary_packed, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "packed attribute is unnecessary for %0", 517, SFINAE_Suppress, false, false, 0)
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticAnalysis.h b/linux-x64/clang/include/clang/Basic/DiagnosticAnalysis.h
new file mode 100644
index 0000000..eea35a4
--- /dev/null
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticAnalysis.h
@@ -0,0 +1,28 @@
+//===--- DiagnosticAnalysis.h - Diagnostics for libanalysis -----*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_BASIC_DIAGNOSTICANALYSIS_H
+#define LLVM_CLANG_BASIC_DIAGNOSTICANALYSIS_H
+
+#include "clang/Basic/Diagnostic.h"
+
+namespace clang {
+namespace diag {
+enum {
+#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \
+ SHOWINSYSHEADER, CATEGORY) \
+ ENUM,
+#define ANALYSISSTART
+#include "clang/Basic/DiagnosticAnalysisKinds.inc"
+#undef DIAG
+ NUM_BUILTIN_ANALYSIS_DIAGNOSTICS
+};
+} // end namespace diag
+} // end namespace clang
+
+#endif // LLVM_CLANG_BASIC_DIAGNOSTICANALYSIS_H
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticCategories.h b/linux-x64/clang/include/clang/Basic/DiagnosticCategories.h
index 4dd067b..0decf15 100644
--- a/linux-x64/clang/include/clang/Basic/DiagnosticCategories.h
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticCategories.h
@@ -1,9 +1,8 @@
//===- DiagnosticCategories.h - Diagnostic Categories Enumerators-*- C++ -*===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticComment.h b/linux-x64/clang/include/clang/Basic/DiagnosticComment.h
new file mode 100644
index 0000000..a87bafa
--- /dev/null
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticComment.h
@@ -0,0 +1,28 @@
+//===--- DiagnosticComment.h - Diagnostics for the AST library --*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_BASIC_DIAGNOSTICCOMMENT_H
+#define LLVM_CLANG_BASIC_DIAGNOSTICCOMMENT_H
+
+#include "clang/Basic/Diagnostic.h"
+
+namespace clang {
+namespace diag {
+enum {
+#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \
+ SHOWINSYSHEADER, CATEGORY) \
+ ENUM,
+#define COMMENTSTART
+#include "clang/Basic/DiagnosticCommentKinds.inc"
+#undef DIAG
+ NUM_BUILTIN_COMMENT_DIAGNOSTICS
+};
+} // end namespace diag
+} // end namespace clang
+
+#endif // LLVM_CLANG_BASIC_DIAGNOSTICCOMMENT_H
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticCommentKinds.inc b/linux-x64/clang/include/clang/Basic/DiagnosticCommentKinds.inc
index d346531..4ea5853 100644
--- a/linux-x64/clang/include/clang/Basic/DiagnosticCommentKinds.inc
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticCommentKinds.inc
@@ -12,28 +12,28 @@
DIAG(note_doc_param_previous, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous documentation", 0, SFINAE_Suppress, false, false, 25)
DIAG(note_doc_tparam_name_suggestion, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did you mean '%0'?", 0, SFINAE_Suppress, false, false, 25)
DIAG(note_doc_tparam_previous, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous documentation", 0, SFINAE_Suppress, false, false, 25)
-DIAG(warn_correct_comment_command_name, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unknown command tag name '%0'; did you mean '%1'?", 184, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_api_container_decl_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0%select{class|interface|protocol|struct|union}1' command should not be used in a comment attached to a non-%select{class|interface|protocol|struct|union}2 declaration", 180, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_block_command_duplicate, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "duplicated command '%select{\\|@}0%1'", 180, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_block_command_empty_paragraph, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "empty paragraph passed to '%select{\\|@}0%1' command", 180, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_container_decl_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0%select{classdesign|coclass|dependency|helper|helperclass|helps|instancesize|ownership|performance|security|superclass}1' command should not be used in a comment attached to a non-container declaration", 180, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_deprecated_not_sync, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration is marked with '\\deprecated' command but does not have a deprecation attribute", 181, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_function_method_decl_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0%select{function|functiongroup|method|methodgroup|callback}1' command should be used in a comment attached to %select{a function|a function|an Objective-C method|an Objective-C method|a pointer to function}2 declaration", 180, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_html_end_forbidden, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "HTML end tag '%0' is forbidden", 182, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_html_end_unbalanced, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "HTML end tag does not match any start tag", 182, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_html_missing_end_tag, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "HTML tag '%0' requires an end tag", 182, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_html_start_end_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "HTML start tag '%0' closed by '%1'", 182, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_html_start_tag_expected_ident_or_greater, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "HTML start tag prematurely ended, expected attribute name or '>'", 180, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_html_start_tag_expected_quoted_string, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "expected quoted string after equals sign", 180, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_param_duplicate, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "parameter '%0' is already documented", 180, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_param_invalid_direction, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unrecognized parameter passing direction, valid directions are '[in]', '[out]' and '[in,out]'", 180, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_param_not_attached_to_a_function_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0param' command used in a comment that is not attached to a function declaration", 180, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_param_not_found, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "parameter '%0' not found in the function declaration", 180, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_param_spaces_in_direction, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "whitespace is not allowed in parameter passing direction", 183, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_returns_attached_to_a_void_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0%1' command used in a comment that is attached to a %select{function returning void|constructor|destructor|method returning void}2", 180, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_returns_not_attached_to_a_function_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0%1' command used in a comment that is not attached to a function or method declaration", 180, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_tparam_duplicate, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "template parameter '%0' is already documented", 180, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_tparam_not_attached_to_a_template_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0tparam' command used in a comment that is not attached to a template declaration", 180, SFINAE_Suppress, false, false, 25)
-DIAG(warn_doc_tparam_not_found, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "template parameter '%0' not found in the template declaration", 180, SFINAE_Suppress, false, false, 25)
-DIAG(warn_unknown_comment_command_name, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unknown command tag name", 184, SFINAE_Suppress, false, false, 25)
-DIAG(warn_verbatim_block_end_without_start, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0%1' command does not terminate a verbatim text block", 180, SFINAE_Suppress, false, false, 25)
+DIAG(warn_correct_comment_command_name, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unknown command tag name '%0'; did you mean '%1'?", 190, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_api_container_decl_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0%select{class|interface|protocol|struct|union}1' command should not be used in a comment attached to a non-%select{class|interface|protocol|struct|union}2 declaration", 186, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_block_command_duplicate, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "duplicated command '%select{\\|@}0%1'", 186, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_block_command_empty_paragraph, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "empty paragraph passed to '%select{\\|@}0%1' command", 186, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_container_decl_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0%select{classdesign|coclass|dependency|helper|helperclass|helps|instancesize|ownership|performance|security|superclass}1' command should not be used in a comment attached to a non-container declaration", 186, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_deprecated_not_sync, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration is marked with '\\deprecated' command but does not have a deprecation attribute", 187, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_function_method_decl_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0%select{function|functiongroup|method|methodgroup|callback}1' command should be used in a comment attached to %select{a function|a function|an Objective-C method|an Objective-C method|a pointer to function}2 declaration", 186, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_html_end_forbidden, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "HTML end tag '%0' is forbidden", 188, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_html_end_unbalanced, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "HTML end tag does not match any start tag", 188, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_html_missing_end_tag, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "HTML tag '%0' requires an end tag", 188, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_html_start_end_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "HTML start tag '%0' closed by '%1'", 188, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_html_start_tag_expected_ident_or_greater, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "HTML start tag prematurely ended, expected attribute name or '>'", 186, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_html_start_tag_expected_quoted_string, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "expected quoted string after equals sign", 186, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_param_duplicate, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "parameter '%0' is already documented", 186, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_param_invalid_direction, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unrecognized parameter passing direction, valid directions are '[in]', '[out]' and '[in,out]'", 186, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_param_not_attached_to_a_function_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0param' command used in a comment that is not attached to a function declaration", 186, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_param_not_found, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "parameter '%0' not found in the function declaration", 186, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_param_spaces_in_direction, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "whitespace is not allowed in parameter passing direction", 189, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_returns_attached_to_a_void_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0%1' command used in a comment that is attached to a %select{function returning void|constructor|destructor|method returning void}2", 186, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_returns_not_attached_to_a_function_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0%1' command used in a comment that is not attached to a function or method declaration", 186, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_tparam_duplicate, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "template parameter '%0' is already documented", 186, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_tparam_not_attached_to_a_template_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0tparam' command used in a comment that is not attached to a template declaration", 186, SFINAE_Suppress, false, false, 25)
+DIAG(warn_doc_tparam_not_found, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "template parameter '%0' not found in the template declaration", 186, SFINAE_Suppress, false, false, 25)
+DIAG(warn_unknown_comment_command_name, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unknown command tag name", 190, SFINAE_Suppress, false, false, 25)
+DIAG(warn_verbatim_block_end_without_start, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0%1' command does not terminate a verbatim text block", 186, SFINAE_Suppress, false, false, 25)
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticCommonKinds.inc b/linux-x64/clang/include/clang/Basic/DiagnosticCommonKinds.inc
index 57a6ad7..9fd34f6 100644
--- a/linux-x64/clang/include/clang/Basic/DiagnosticCommonKinds.inc
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticCommonKinds.inc
@@ -4,7 +4,9 @@
#endif
DIAG(err_arcmt_nsinvocation_ownership, CLASS_ERROR, (unsigned)diag::Severity::Error, "NSInvocation's %0 is not safe to be used with an object with ownership other than __unsafe_unretained", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(err_asm_invalid_type_in_input, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid type %0 in asm input for constraint '%1'", 0, SFINAE_SubstitutionFailure, false, true, 12)
DIAG(err_attribute_not_type_attr, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute cannot be applied to types", 0, SFINAE_SubstitutionFailure, false, true, 4)
+DIAG(err_attribute_uuid_malformed_guid, CLASS_ERROR, (unsigned)diag::Severity::Error, "uuid attribute contains a malformed GUID", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_cannot_open_file, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "cannot open file '%0': %1", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_default_special_members, CLASS_ERROR, (unsigned)diag::Severity::Error, "only special member functions may be defaulted", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_deleted_non_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "only functions can have deleted definitions", 0, SFINAE_SubstitutionFailure, false, true, 4)
@@ -17,8 +19,10 @@
DIAG(err_expected_string_literal, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected string literal %select{in %1|for diagnostic message in static_assert|for optional message in 'availability' attribute|for %select{language|source container}1 name in 'external_source_symbol' attribute}0", 0, SFINAE_SubstitutionFailure, false, true, 1)
DIAG(err_file_modified, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "file '%0' modified since it was first processed", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_fixed_point_not_enabled, CLASS_ERROR, (unsigned)diag::Severity::Error, "compile with '-ffixed-point' to enable fixed point types", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(err_friend_decl_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' is invalid in friend declarations", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_integer_literal_too_large, CLASS_ERROR, (unsigned)diag::Severity::Error, "integer literal is too large to be represented in any %select{signed |}0integer type", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_invalid_character_udl, CLASS_ERROR, (unsigned)diag::Severity::Error, "character literal with user-defined suffix cannot be used here", 0, SFINAE_SubstitutionFailure, false, true, 1)
+DIAG(err_invalid_member_in_interface, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{data member |non-public member function |static member function |user-declared constructor|user-declared destructor|operator |nested class }0%1 is not permitted within an interface type", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_invalid_numeric_udl, CLASS_ERROR, (unsigned)diag::Severity::Error, "numeric literal with user-defined suffix cannot be used here", 0, SFINAE_SubstitutionFailure, false, true, 1)
DIAG(err_invalid_storage_class_in_func_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid storage class specifier in function declarator", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_invalid_string_udl, CLASS_ERROR, (unsigned)diag::Severity::Error, "string literal with user-defined suffix cannot be used here", 0, SFINAE_SubstitutionFailure, false, true, 1)
@@ -36,6 +40,7 @@
DIAG(err_mt_message, CLASS_ERROR, (unsigned)diag::Severity::Error, "[rewriter] %0", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_nullability_conflicting, CLASS_ERROR, (unsigned)diag::Severity::Error, "nullability specifier %0 conflicts with existing specifier %1", 0, SFINAE_SubstitutionFailure, false, true, 19)
DIAG(err_omp_more_one_clause, CLASS_ERROR, (unsigned)diag::Severity::Error, "directive '#pragma omp %0' cannot contain more than one '%1' clause%select{| with '%3' name modifier| with 'source' dependence}2", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(err_opencl_unknown_type_specifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "OpenCL %select{C|C++}0 version %1 does not support the '%2' %select{type qualifier|storage class specifier}3", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_openclcxx_not_supported, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' is not supported in OpenCL C++", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_opt_not_valid_on_target, CLASS_ERROR, (unsigned)diag::Severity::Error, "option '%0' cannot be specified on this target", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_opt_not_valid_with_opt, CLASS_ERROR, (unsigned)diag::Severity::Error, "option '%0' cannot be specified with '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0)
@@ -58,15 +63,20 @@
DIAG(err_too_large_for_fixed_point, CLASS_ERROR, (unsigned)diag::Severity::Error, "this value is too large for this fixed point type", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_unable_to_make_temp, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to make temporary file: %0", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_unable_to_rename_temp, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to rename temporary '%0' to output file '%1': '%2'", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(err_unimplemented_conversion_with_fixed_point_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "conversion between fixed point and %0 is not yet supported", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(err_unknown_analyzer_checker, CLASS_ERROR, (unsigned)diag::Severity::Error, "no analyzer checkers are associated with '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_unsupported_abi_for_opt, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' can only be used with the '%1' ABI", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_unsupported_bom, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "%0 byte order mark detected in '%1', but encoding is not supported", 0, SFINAE_SubstitutionFailure, false, true, 0)
-DIAG(ext_c99_longlong, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'long long' is an extension when C99 mode is not enabled", 351, SFINAE_Suppress, false, false, 0)
-DIAG(ext_clang_diagnose_if, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'diagnose_if' is a clang extension", 242, SFINAE_Suppress, false, false, 0)
-DIAG(ext_clang_enable_if, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'enable_if' is a clang extension", 242, SFINAE_Suppress, false, false, 0)
+DIAG(err_use_of_tag_name_without_tag, CLASS_ERROR, (unsigned)diag::Severity::Error, "must use '%1' tag to refer to type %0%select{| in this scope}2", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(ext_c99_longlong, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'long long' is an extension when C99 mode is not enabled", 360, SFINAE_Suppress, false, false, 0)
+DIAG(ext_clang_diagnose_if, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'diagnose_if' is a clang extension", 250, SFINAE_Suppress, false, false, 0)
+DIAG(ext_clang_enable_if, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'enable_if' is a clang extension", 250, SFINAE_Suppress, false, false, 0)
DIAG(ext_cxx11_longlong, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'long long' is a C++11 extension", 82, SFINAE_Suppress, false, false, 0)
-DIAG(ext_integer_literal_too_large_for_signed, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "integer literal is too large to be represented in a signed integer type, interpreting as unsigned", 291, SFINAE_Suppress, false, false, 0)
+DIAG(ext_duplicate_declspec, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "duplicate '%0' declaration specifier", 193, SFINAE_Suppress, false, false, 0)
+DIAG(ext_integer_literal_too_large_for_signed, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "integer literal is too large to be represented in a signed integer type, interpreting as unsigned", 300, SFINAE_Suppress, false, false, 0)
DIAG(ext_old_implicitly_unsigned_long_cxx, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "integer literal is too large to be represented in type 'long' and is subject to undefined behavior under C++98, interpreting as 'unsigned long'; this literal will %select{have type 'long long'|be ill-formed}0 in C++11 onwards", 75, SFINAE_Suppress, false, false, 0)
DIAG(ext_variadic_templates, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "variadic templates are a C++11 extension", 79, SFINAE_Suppress, false, false, 4)
+DIAG(ext_warn_duplicate_declspec, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "duplicate '%0' declaration specifier", 193, SFINAE_Suppress, false, false, 0)
DIAG(fatal_too_many_errors, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "too many errors emitted, stopping now", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(note_also_found, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "also found", 0, SFINAE_Suppress, false, false, 0)
DIAG(note_decl_hiding_tag_type, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%1 %0 is hidden by a non-type declaration of %0 here", 0, SFINAE_Suppress, false, false, 4)
@@ -82,19 +92,23 @@
DIAG(note_previous_definition, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous definition is here", 0, SFINAE_Suppress, false, false, 0)
DIAG(note_previous_implicit_declaration, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous implicit declaration is here", 0, SFINAE_Suppress, false, false, 0)
DIAG(note_previous_use, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous use is here", 0, SFINAE_Suppress, false, false, 0)
+DIAG(note_suggest_disabling_all_checkers, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use -analyzer-disable-all-checks to disable all static analyzer checkers", 0, SFINAE_Suppress, false, false, 0)
DIAG(note_type_being_defined, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "definition of %0 is not complete until the closing '}'", 0, SFINAE_Suppress, false, false, 0)
DIAG(note_using, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "using", 0, SFINAE_Suppress, false, false, 0)
DIAG(note_valid_options, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "valid target CPU values are: %0", 0, SFINAE_Suppress, false, false, 0)
-DIAG(remark_module_lock_failure, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "could not acquire lock file for module '%0': %1", 409, SFINAE_Suppress, false, false, 4)
-DIAG(remark_module_lock_timeout, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "timed out waiting to acquire lock file for module '%0'", 409, SFINAE_Suppress, false, false, 4)
+DIAG(remark_module_lock_failure, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "could not acquire lock file for module '%0': %1", 418, SFINAE_Suppress, false, false, 4)
+DIAG(remark_module_lock_timeout, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "timed out waiting to acquire lock file for module '%0'", 418, SFINAE_Suppress, false, false, 4)
DIAG(warn_arcmt_nsalloc_realloc, CLASS_WARNING, (unsigned)diag::Severity::Warning, "[rewriter] call returns pointer to GC managed memory; it will become unmanaged in ARC", 0, SFINAE_Suppress, false, false, 0)
-DIAG(warn_conflicting_nullability_attr_overriding_param_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting nullability specifier on parameter types, %0 conflicts with existing specifier %1", 447, SFINAE_Suppress, false, false, 19)
-DIAG(warn_conflicting_nullability_attr_overriding_ret_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting nullability specifier on return types, %0 conflicts with existing specifier %1", 447, SFINAE_Suppress, false, false, 19)
+DIAG(warn_conflicting_nullability_attr_overriding_param_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting nullability specifier on parameter types, %0 conflicts with existing specifier %1", 457, SFINAE_Suppress, false, false, 19)
+DIAG(warn_conflicting_nullability_attr_overriding_ret_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting nullability specifier on return types, %0 conflicts with existing specifier %1", 457, SFINAE_Suppress, false, false, 19)
DIAG(warn_cxx98_compat_longlong, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'long long' is incompatible with C++98", 110, SFINAE_Suppress, false, false, 0)
DIAG(warn_cxx98_compat_variadic_templates, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variadic templates are incompatible with C++98", 106, SFINAE_Suppress, false, false, 4)
-DIAG(warn_method_param_declaration, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "redeclaration of method parameter %0", 189, SFINAE_Suppress, false, false, 4)
+DIAG(warn_dup_category_def, CLASS_WARNING, (unsigned)diag::Severity::Warning, "duplicate definition of category %1 on interface %0", 0, SFINAE_Suppress, false, false, 0)
+DIAG(warn_duplicate_declspec, CLASS_WARNING, (unsigned)diag::Severity::Warning, "duplicate '%0' declaration specifier", 193, SFINAE_Suppress, false, false, 0)
+DIAG(warn_method_param_declaration, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "redeclaration of method parameter %0", 195, SFINAE_Suppress, false, false, 4)
DIAG(warn_method_param_redefinition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "redefinition of method parameter %0", 0, SFINAE_Suppress, false, false, 4)
DIAG(warn_mt_message, CLASS_WARNING, (unsigned)diag::Severity::Warning, "[rewriter] %0", 0, SFINAE_Suppress, false, false, 0)
-DIAG(warn_nullability_duplicate, CLASS_WARNING, (unsigned)diag::Severity::Warning, "duplicate nullability specifier %0", 447, SFINAE_Suppress, false, false, 19)
+DIAG(warn_nullability_duplicate, CLASS_WARNING, (unsigned)diag::Severity::Warning, "duplicate nullability specifier %0", 457, SFINAE_Suppress, false, false, 19)
DIAG(warn_old_implicitly_unsigned_long, CLASS_WARNING, (unsigned)diag::Severity::Warning, "integer literal is too large to be represented in type 'long', interpreting as 'unsigned long' per C89; this literal will %select{have type 'long long'|be ill-formed}0 in C99 onwards", 113, SFINAE_Suppress, false, false, 0)
DIAG(warn_old_implicitly_unsigned_long_cxx, CLASS_WARNING, (unsigned)diag::Severity::Warning, "integer literal is too large to be represented in type 'long', interpreting as 'unsigned long' per C++98; this literal will %select{have type 'long long'|be ill-formed}0 in C++11 onwards", 75, SFINAE_Suppress, false, false, 0)
+DIAG(warn_unknown_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown attribute %0 ignored", 694, SFINAE_Suppress, false, false, 0)
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticCrossTU.h b/linux-x64/clang/include/clang/Basic/DiagnosticCrossTU.h
new file mode 100644
index 0000000..c1c582b
--- /dev/null
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticCrossTU.h
@@ -0,0 +1,28 @@
+//===--- DiagnosticCrossTU.h - Diagnostics for Cross TU ---------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_BASIC_DIAGNOSTICCROSSTU_H
+#define LLVM_CLANG_BASIC_DIAGNOSTICCROSSTU_H
+
+#include "clang/Basic/Diagnostic.h"
+
+namespace clang {
+namespace diag {
+enum {
+#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \
+ SHOWINSYSHEADER, CATEGORY) \
+ ENUM,
+#define CROSSTUSTART
+#include "clang/Basic/DiagnosticCrossTUKinds.inc"
+#undef DIAG
+ NUM_BUILTIN_CROSSTU_DIAGNOSTICS
+};
+} // end namespace diag
+} // end namespace clang
+
+#endif // LLVM_CLANG_BASIC_DIAGNOSTICCROSSTU_H
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticCrossTUKinds.inc b/linux-x64/clang/include/clang/Basic/DiagnosticCrossTUKinds.inc
index 3c3f718..e02de3d 100644
--- a/linux-x64/clang/include/clang/Basic/DiagnosticCrossTUKinds.inc
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticCrossTUKinds.inc
@@ -3,5 +3,7 @@
#undef CROSSTUSTART
#endif
-DIAG(err_fnmap_parsing, CLASS_ERROR, (unsigned)diag::Severity::Error, "error parsing index file: '%0' line: %1 'UniqueID filename' format expected", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(err_ctu_error_opening, CLASS_ERROR, (unsigned)diag::Severity::Error, "error opening '%0': required by the CrossTU functionality", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(err_extdefmap_parsing, CLASS_ERROR, (unsigned)diag::Severity::Error, "error parsing index file: '%0' line: %1 'UniqueID filename' format expected", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_multiple_def_index, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiple definitions are found for the same key in index ", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(warn_ctu_incompat_triple, CLASS_WARNING, (unsigned)diag::Severity::Warning, "imported AST from '%0' had been generated for a different target, current: %1, imported: %2", 146, SFINAE_Suppress, false, false, 0)
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticDriver.h b/linux-x64/clang/include/clang/Basic/DiagnosticDriver.h
new file mode 100644
index 0000000..63913df
--- /dev/null
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticDriver.h
@@ -0,0 +1,28 @@
+//===--- DiagnosticDriver.h - Diagnostics for libdriver ---------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_BASIC_DIAGNOSTICDRIVER_H
+#define LLVM_CLANG_BASIC_DIAGNOSTICDRIVER_H
+
+#include "clang/Basic/Diagnostic.h"
+
+namespace clang {
+namespace diag {
+enum {
+#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \
+ SHOWINSYSHEADER, CATEGORY) \
+ ENUM,
+#define DRIVERSTART
+#include "clang/Basic/DiagnosticDriverKinds.inc"
+#undef DIAG
+ NUM_BUILTIN_DRIVER_DIAGNOSTICS
+};
+} // end namespace diag
+} // end namespace clang
+
+#endif // LLVM_CLANG_BASIC_DIAGNOSTICDRIVER_H
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticDriverKinds.inc b/linux-x64/clang/include/clang/Basic/DiagnosticDriverKinds.inc
index e736f92..3285c87 100644
--- a/linux-x64/clang/include/clang/Basic/DiagnosticDriverKinds.inc
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticDriverKinds.inc
@@ -3,8 +3,10 @@
#undef DRIVERSTART
#endif
+DIAG(err_analyzer_config_invalid_input, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid input for analyzer-config option '%0', that expects %1 value", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_analyzer_config_multiple_values, CLASS_ERROR, (unsigned)diag::Severity::Error, "analyzer-config option '%0' should contain only one '='", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_analyzer_config_no_value, CLASS_ERROR, (unsigned)diag::Severity::Error, "analyzer-config option '%0' has a key but no value", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(err_analyzer_config_unknown, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown analyzer-config '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_arc_unsupported_on_runtime, CLASS_ERROR, (unsigned)diag::Severity::Error, "-fobjc-arc is not supported on platforms using the legacy runtime", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_arc_unsupported_on_toolchain, CLASS_ERROR, (unsigned)diag::Severity::Error, "-fobjc-arc is not supported on versions of OS X prior to 10.6", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_arch_unsupported_isa, CLASS_ERROR, (unsigned)diag::Severity::Error, "Architecture '%0' does not support '%1' execution mode", 0, SFINAE_SubstitutionFailure, false, true, 0)
@@ -31,6 +33,7 @@
DIAG(err_drv_cuda_version_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "GPU arch %0 is supported by CUDA versions between %1 and %2 (inclusive), but installation at %3 is %4. Use --cuda-path to specify a different CUDA install, pass a different GPU arch with --cuda-gpu-arch, or pass --no-cuda-version-check.", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_defsym_invalid_format, CLASS_ERROR, (unsigned)diag::Severity::Error, "defsym must be of the form: sym=value: %0", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_defsym_invalid_symval, CLASS_ERROR, (unsigned)diag::Severity::Error, "Value is not an integer: %0", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(err_drv_dllexport_inlines_and_fallback, CLASS_ERROR, (unsigned)diag::Severity::Error, "option '/Zc:dllexportInlines-' is ABI-changing and not compatible with '/fallback'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_duplicate_config, CLASS_ERROR, (unsigned)diag::Severity::Error, "no more than one option '--config' is allowed", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_emit_llvm_link, CLASS_ERROR, (unsigned)diag::Severity::Error, "-emit-llvm cannot be used when linking", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_expecting_fopenmp_with_fopenmp_targets, CLASS_ERROR, (unsigned)diag::Severity::Error, "The option -fopenmp-targets must be used in conjunction with a -fopenmp option compatible with offloading, please use -fopenmp=libomp or -fopenmp=libiomp5.", 0, SFINAE_SubstitutionFailure, false, true, 0)
@@ -41,6 +44,7 @@
DIAG(err_drv_invalid_Xopenmp_target_with_args, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid -Xopenmp-target argument: '%0', options requiring arguments are unsupported", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_invalid_arch_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid arch name '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_invalid_argument_to_fdebug_prefix_map, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid argument '%0' to -fdebug-prefix-map", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(err_drv_invalid_cf_runtime_abi, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid CoreFoundation Runtime ABI '%0'; must be one of 'objc', 'standalone', 'swift', 'swift-5.0', 'swift-4.2', 'swift-4.1'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_invalid_darwin_version, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid Darwin version number: %0", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_invalid_gcc_output_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid output type '%0' for use with gcc tool", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_invalid_hvx_length, CLASS_ERROR, (unsigned)diag::Severity::Error, "-mhvx-length is not supported without a -mhvx/-mhvx= flag", 0, SFINAE_SubstitutionFailure, false, true, 0)
@@ -85,6 +89,7 @@
DIAG(err_drv_preamble_format, CLASS_ERROR, (unsigned)diag::Severity::Error, "incorrect format for -preamble-bytes=N,END", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_ropi_incompatible_with_cxx, CLASS_ERROR, (unsigned)diag::Severity::Error, "ROPI is not compatible with c++", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_ropi_rwpi_incompatible_with_pic, CLASS_ERROR, (unsigned)diag::Severity::Error, "embedded and GOT-based position independence are incompatible", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(err_drv_trivial_auto_var_init_zero_disabled, CLASS_ERROR, (unsigned)diag::Severity::Error, "-ftrivial-auto-var-init=zero hasn't been enabled. Enable it at your own peril for benchmarking purpose only with -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_unable_to_remove_file, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to remove file: %0", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_unknown_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown argument: '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_unknown_argument_with_suggestion, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown argument '%0', did you mean '%1'?", 0, SFINAE_SubstitutionFailure, false, true, 0)
@@ -96,13 +101,14 @@
DIAG(err_drv_unsupported_embed_bitcode, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is not supported with -fembed-bitcode", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_unsupported_indirect_jump_opt, CLASS_ERROR, (unsigned)diag::Severity::Error, "'-mindirect-jump=%0' is unsupported with the '%1' architecture", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_unsupported_linker, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported value '%0' for -linker option", 0, SFINAE_SubstitutionFailure, false, true, 0)
-DIAG(err_drv_unsupported_noabicalls_pic, CLASS_ERROR, (unsigned)diag::Severity::Error, "position-independent code requires \342\200\230-mabicalls\342\200\231", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(err_drv_unsupported_noabicalls_pic, CLASS_ERROR, (unsigned)diag::Severity::Error, "position-independent code requires '-mabicalls'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_unsupported_opt, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported option '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_unsupported_opt_for_target, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported option '%0' for target '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_unsupported_opt_with_suggestion, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported option '%0', did you mean '%1'?", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_unsupported_option_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported argument '%1' to option '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_unsupported_rtlib_for_platform, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported runtime library '%0' for platform '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_drv_use_of_Z_option, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported use of internal gcc -Z option '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(err_invalid_branch_protection, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid branch protection option '%0' in '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_no_external_assembler, CLASS_ERROR, (unsigned)diag::Severity::Error, "there is no external assembler that can be used on this platform", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_objc_weak_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "-fobjc-weak is not supported on the current deployment target", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_objc_weak_with_gc, CLASS_ERROR, (unsigned)diag::Severity::Error, "-fobjc-weak is not supported in Objective-C garbage collection", 0, SFINAE_SubstitutionFailure, false, true, 0)
@@ -115,55 +121,59 @@
DIAG(note_drv_use_standard, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use '%0'%select{| or '%3'|, '%3', or '%4'|, '%3', '%4', or '%5'}2 for '%1' standard", 0, SFINAE_Suppress, false, false, 0)
DIAG(note_drv_verify_prefix_spelling, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "-verify prefixes must start with a letter and contain only alphanumeric characters, hyphens, and underscores", 0, SFINAE_Suppress, false, false, 0)
DIAG(note_use_dashdash, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "Use '--' to treat subsequent arguments as filenames", 0, SFINAE_Suppress, false, false, 0)
-DIAG(warn_O4_is_O3, CLASS_WARNING, (unsigned)diag::Severity::Warning, "-O4 is equivalent to -O3", 158, SFINAE_Suppress, false, false, 27)
+DIAG(warn_O4_is_O3, CLASS_WARNING, (unsigned)diag::Severity::Warning, "-O4 is equivalent to -O3", 164, SFINAE_Suppress, false, false, 27)
DIAG(warn_c_kext, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring -fapple-kext which is valid for C++ and Objective-C++ only", 0, SFINAE_Suppress, false, false, 0)
-DIAG(warn_debug_compression_unavailable, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cannot compress debug sections (zlib not installed)", 152, SFINAE_Suppress, false, false, 0)
+DIAG(warn_debug_compression_unavailable, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cannot compress debug sections (zlib not installed)", 156, SFINAE_Suppress, false, false, 0)
DIAG(warn_drv_assuming_mfloat_abi_is, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown platform, assuming -mfloat-abi=%0", 0, SFINAE_Suppress, false, false, 0)
DIAG(warn_drv_clang_unsupported, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the clang compiler does not support '%0'", 0, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_deprecated_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "argument '%0' is deprecated, use '%1' instead", 158, SFINAE_Suppress, false, false, 27)
-DIAG(warn_drv_diagnostics_hotness_requires_pgo, CLASS_WARNING, (unsigned)diag::Severity::Warning, "argument '%0' requires profile-guided optimization information", 707, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_darwin_sdk_invalid_settings, CLASS_WARNING, (unsigned)diag::Severity::Warning, "SDK settings were ignored as 'SDKSettings.json' could not be parsed", 153, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_deprecated_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "argument '%0' is deprecated, use '%1' instead", 164, SFINAE_Suppress, false, false, 27)
+DIAG(warn_drv_diagnostics_hotness_requires_pgo, CLASS_WARNING, (unsigned)diag::Severity::Warning, "argument '%0' requires profile-guided optimization information", 720, SFINAE_Suppress, false, false, 0)
DIAG(warn_drv_disabling_vptr_no_rtti_default, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicitly disabling vptr sanitizer because rtti wasn't enabled", 48, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_empty_joined_argument, CLASS_WARNING, (unsigned)diag::Severity::Warning, "joined argument expects additional value: '%0'", 707, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_experimental_isel_incomplete, CLASS_WARNING, (unsigned)diag::Severity::Warning, "-fexperimental-isel support for the '%0' architecture is incomplete", 208, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_experimental_isel_incomplete_opt, CLASS_WARNING, (unsigned)diag::Severity::Warning, "-fexperimental-isel support is incomplete for this architecture at the current optimization level", 208, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_fine_grained_bitfield_accesses_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "option '-ffine-grained-bitfield-accesses' cannot be enabled together with a sanitizer; flag ignored", 494, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_input_file_unused, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0: '%1' input unused%select{ when '%3' is present|}2", 707, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_input_file_unused_by_cpp, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0: '%1' input unused in cpp mode", 707, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_invoking_fallback, CLASS_WARNING, (unsigned)diag::Severity::Warning, "falling back to %0", 217, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_moutline_unsupported_opt, CLASS_WARNING, (unsigned)diag::Severity::Warning, "The '%0' architecture does not support -moutline; flag ignored", 494, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_msvc_not_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unable to find a Visual Studio installation; try running Clang from a developer command prompt", 419, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_object_size_disabled_O0, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the object size sanitizer has no effect at -O0, but is explicitly enabled: %0", 326, SFINAE_Suppress, true, false, 0)
-DIAG(warn_drv_omp_offload_target_duplicate, CLASS_WARNING, (unsigned)diag::Severity::Warning, "The OpenMP offloading target '%0' is similar to target '%1' already specified - will be ignored.", 493, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_omp_offload_target_missingbcruntime, CLASS_WARNING, (unsigned)diag::Severity::Warning, "No library '%0' found in the default clang lib directory or in LIBRARY_PATH. Expect degraded performance due to no inlining of runtime functions on target devices.", 493, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_optimization_value, CLASS_WARNING, (unsigned)diag::Severity::Warning, "optimization level '%0' is not supported; using '%1%2' instead", 326, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_overriding_flag_option, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overriding '%0' option with '%1'", 505, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_empty_joined_argument, CLASS_WARNING, (unsigned)diag::Severity::Warning, "joined argument expects additional value: '%0'", 720, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_experimental_isel_incomplete, CLASS_WARNING, (unsigned)diag::Severity::Warning, "-fexperimental-isel support for the '%0' architecture is incomplete", 215, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_experimental_isel_incomplete_opt, CLASS_WARNING, (unsigned)diag::Severity::Warning, "-fexperimental-isel support is incomplete for this architecture at the current optimization level", 215, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_fine_grained_bitfield_accesses_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "option '-ffine-grained-bitfield-accesses' cannot be enabled together with a sanitizer; flag ignored", 504, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_input_file_unused, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0: '%1' input unused%select{ when '%3' is present|}2", 720, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_input_file_unused_by_cpp, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0: '%1' input unused in cpp mode", 720, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_invoking_fallback, CLASS_WARNING, (unsigned)diag::Severity::Warning, "falling back to %0", 225, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_moutline_unsupported_opt, CLASS_WARNING, (unsigned)diag::Severity::Warning, "The '%0' architecture does not support -moutline; flag ignored", 504, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_msp430_hwmult_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the given MCU supports %0 hardware multiply, but -mhwmult is set to %1.", 335, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_msp430_hwmult_no_device, CLASS_WARNING, (unsigned)diag::Severity::Warning, "no MCU device specified, but '-mhwmult' is set to 'auto', assuming no hardware multiply. Use -mmcu to specify a MSP430 device, or -mhwmult to set hardware multiply type explicitly.", 335, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_msp430_hwmult_unsupported, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the given MCU does not support hardware multiply, but -mhwmult is set to %0.", 335, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_msvc_not_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unable to find a Visual Studio installation; try running Clang from a developer command prompt", 428, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_object_size_disabled_O0, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the object size sanitizer has no effect at -O0, but is explicitly enabled: %0", 335, SFINAE_Suppress, true, false, 0)
+DIAG(warn_drv_omp_offload_target_duplicate, CLASS_WARNING, (unsigned)diag::Severity::Warning, "The OpenMP offloading target '%0' is similar to target '%1' already specified - will be ignored.", 503, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_omp_offload_target_missingbcruntime, CLASS_WARNING, (unsigned)diag::Severity::Warning, "No library '%0' found in the default clang lib directory or in LIBRARY_PATH. Expect degraded performance due to no inlining of runtime functions on target devices.", 503, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_optimization_value, CLASS_WARNING, (unsigned)diag::Severity::Warning, "optimization level '%0' is not supported; using '%1%2' instead", 335, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_overriding_flag_option, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overriding '%0' option with '%1'", 516, SFINAE_Suppress, false, false, 0)
DIAG(warn_drv_pch_not_first_include, CLASS_WARNING, (unsigned)diag::Severity::Warning, "precompiled header '%0' was ignored because '%1' is not first '-include'", 0, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_preprocessed_input_file_unused, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0: previously preprocessed input%select{ unused when '%2' is present|}1", 707, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_ps4_force_pic, CLASS_WARNING, (unsigned)diag::Severity::Warning, "option '%0' was ignored by the PS4 toolchain, using '-fPIC'", 494, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_ps4_sdk_dir, CLASS_WARNING, (unsigned)diag::Severity::Warning, "environment variable SCE_ORBIS_SDK_DIR is set, but points to invalid or nonexistent directory '%0'", 333, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_treating_input_as_cxx, CLASS_WARNING, (unsigned)diag::Severity::Warning, "treating '%0' input as '%1' when in C++ mode, this behavior is deprecated", 158, SFINAE_Suppress, false, false, 27)
-DIAG(warn_drv_unable_to_find_directory_expected, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unable to find %0 directory, expected to be in '%1'", 333, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_unknown_argument_clang_cl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown argument ignored in clang-cl: '%0'", 680, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_unknown_argument_clang_cl_with_suggestion, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown argument ignored in clang-cl '%0' (did you mean '%1'?)", 680, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_unsupported_debug_info_opt_for_target, CLASS_WARNING, (unsigned)diag::Severity::Warning, "debug information option '%0' is not supported for target '%1'", 702, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_unsupported_gpopt, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mgpopt' option as it cannot be used with %select{|the implicit usage of }0-mabicalls", 700, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_unsupported_longcalls, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mlong-calls' option as it is not currently supported with %select{|the implicit usage of }0-mabicalls", 494, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_unsupported_opt_for_target, CLASS_WARNING, (unsigned)diag::Severity::Warning, "optimization flag '%0' is not supported for target '%1'", 275, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_unsupported_pic_with_mabicalls, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '%0' option as it cannot be used with %select{implicit usage of|}1 -mabicalls and the N64 ABI", 494, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_unused_argument, CLASS_WARNING, (unsigned)diag::Severity::Warning, "argument unused during compilation: '%0'", 707, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_vectorize_needs_hvx, CLASS_WARNING, (unsigned)diag::Severity::Warning, "auto-vectorization requires HVX, use -mhvx to enable it", 494, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_yc_multiple_inputs_clang_cl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "support for '/Yc' with more than one source file not implemented yet; flag ignored", 122, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_ycyu_different_arg_clang_cl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "support for '/Yc' and '/Yu' with different filenames not implemented yet; flags ignored", 122, SFINAE_Suppress, false, false, 0)
-DIAG(warn_drv_ycyu_no_fi_arg_clang_cl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "support for '%0' without a corresponding /FI flag not implemented yet; flag ignored", 122, SFINAE_Suppress, false, false, 0)
-DIAG(warn_ignored_clang_option, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the flag '%0' has been deprecated and will be ignored", 707, SFINAE_Suppress, false, false, 0)
-DIAG(warn_ignored_gcc_optimization, CLASS_WARNING, (unsigned)diag::Severity::Warning, "optimization flag '%0' is not supported", 275, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_preprocessed_input_file_unused, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0: previously preprocessed input%select{ unused when '%2' is present|}1", 720, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_ps4_force_pic, CLASS_WARNING, (unsigned)diag::Severity::Warning, "option '%0' was ignored by the PS4 toolchain, using '-fPIC'", 504, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_ps4_sdk_dir, CLASS_WARNING, (unsigned)diag::Severity::Warning, "environment variable SCE_ORBIS_SDK_DIR is set, but points to invalid or nonexistent directory '%0'", 342, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_treating_input_as_cxx, CLASS_WARNING, (unsigned)diag::Severity::Warning, "treating '%0' input as '%1' when in C++ mode, this behavior is deprecated", 164, SFINAE_Suppress, false, false, 27)
+DIAG(warn_drv_unable_to_find_directory_expected, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unable to find %0 directory, expected to be in '%1'", 342, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_unknown_argument_clang_cl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown argument ignored in clang-cl: '%0'", 693, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_unknown_argument_clang_cl_with_suggestion, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown argument ignored in clang-cl '%0' (did you mean '%1'?)", 693, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_unsupported_debug_info_opt_for_target, CLASS_WARNING, (unsigned)diag::Severity::Warning, "debug information option '%0' is not supported for target '%1'", 715, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_unsupported_gpopt, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mgpopt' option as it cannot be used with %select{|the implicit usage of }0-mabicalls", 713, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_unsupported_longcalls, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mlong-calls' option as it is not currently supported with %select{|the implicit usage of }0-mabicalls", 504, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_unsupported_opt_for_target, CLASS_WARNING, (unsigned)diag::Severity::Warning, "optimization flag '%0' is not supported for target '%1'", 283, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_unsupported_pic_with_mabicalls, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '%0' option as it cannot be used with %select{implicit usage of|}1 -mabicalls and the N64 ABI", 504, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_unused_argument, CLASS_WARNING, (unsigned)diag::Severity::Warning, "argument unused during compilation: '%0'", 720, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_vectorize_needs_hvx, CLASS_WARNING, (unsigned)diag::Severity::Warning, "auto-vectorization requires HVX, use -mhvx to enable it", 504, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_yc_multiple_inputs_clang_cl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "support for '/Yc' with more than one source file not implemented yet; flag ignored", 123, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_ycyu_different_arg_clang_cl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "support for '/Yc' and '/Yu' with different filenames not implemented yet; flags ignored", 123, SFINAE_Suppress, false, false, 0)
+DIAG(warn_drv_ycyu_no_fi_arg_clang_cl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "support for '%0' without a corresponding /FI flag not implemented yet; flag ignored", 123, SFINAE_Suppress, false, false, 0)
+DIAG(warn_ignored_clang_option, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the flag '%0' has been deprecated and will be ignored", 720, SFINAE_Suppress, false, false, 0)
+DIAG(warn_ignored_gcc_optimization, CLASS_WARNING, (unsigned)diag::Severity::Warning, "optimization flag '%0' is not supported", 283, SFINAE_Suppress, false, false, 0)
DIAG(warn_ignoring_ftabstop_value, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring invalid -ftabstop value '%0', using default value %1", 0, SFINAE_Suppress, false, false, 0)
-DIAG(warn_incompatible_sysroot, CLASS_WARNING, (unsigned)diag::Severity::Warning, "using sysroot for '%0' but targeting '%1'", 304, SFINAE_Suppress, false, false, 0)
-DIAG(warn_invalid_ios_deployment_target, CLASS_WARNING, (unsigned)diag::Severity::Error, "invalid iOS deployment version '%0', iOS 10 is the maximum deployment target for 32-bit targets", 330, SFINAE_Suppress, false, false, 0)
-DIAG(warn_missing_sysroot, CLASS_WARNING, (unsigned)diag::Severity::Warning, "no such sysroot directory: '%0'", 407, SFINAE_Suppress, false, false, 0)
-DIAG(warn_slash_u_filename, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'/U%0' treated as the '/U' option", 598, SFINAE_Suppress, false, false, 0)
-DIAG(warn_target_unsupported_abs2008, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mabs=2008' option because the '%0' architecture does not support it", 695, SFINAE_Suppress, false, false, 0)
-DIAG(warn_target_unsupported_abslegacy, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mabs=legacy' option because the '%0' architecture does not support it", 695, SFINAE_Suppress, false, false, 0)
-DIAG(warn_target_unsupported_compact_branches, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mcompact-branches=' option because the '%0' architecture does not support it", 697, SFINAE_Suppress, false, false, 0)
-DIAG(warn_target_unsupported_nan2008, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mnan=2008' option because the '%0' architecture does not support it", 701, SFINAE_Suppress, false, false, 0)
-DIAG(warn_target_unsupported_nanlegacy, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mnan=legacy' option because the '%0' architecture does not support it", 701, SFINAE_Suppress, false, false, 0)
+DIAG(warn_incompatible_sysroot, CLASS_WARNING, (unsigned)diag::Severity::Warning, "using sysroot for '%0' but targeting '%1'", 313, SFINAE_Suppress, false, false, 0)
+DIAG(warn_invalid_ios_deployment_target, CLASS_WARNING, (unsigned)diag::Severity::Error, "invalid iOS deployment version '%0', iOS 10 is the maximum deployment target for 32-bit targets", 339, SFINAE_Suppress, false, false, 0)
+DIAG(warn_missing_sysroot, CLASS_WARNING, (unsigned)diag::Severity::Warning, "no such sysroot directory: '%0'", 416, SFINAE_Suppress, false, false, 0)
+DIAG(warn_slash_u_filename, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'/U%0' treated as the '/U' option", 611, SFINAE_Suppress, false, false, 0)
+DIAG(warn_target_unsupported_abs2008, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mabs=2008' option because the '%0' architecture does not support it", 708, SFINAE_Suppress, false, false, 0)
+DIAG(warn_target_unsupported_abslegacy, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mabs=legacy' option because the '%0' architecture does not support it", 708, SFINAE_Suppress, false, false, 0)
+DIAG(warn_target_unsupported_compact_branches, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mcompact-branches=' option because the '%0' architecture does not support it", 710, SFINAE_Suppress, false, false, 0)
+DIAG(warn_target_unsupported_nan2008, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mnan=2008' option because the '%0' architecture does not support it", 714, SFINAE_Suppress, false, false, 0)
+DIAG(warn_target_unsupported_nanlegacy, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mnan=legacy' option because the '%0' architecture does not support it", 714, SFINAE_Suppress, false, false, 0)
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticError.h b/linux-x64/clang/include/clang/Basic/DiagnosticError.h
index 3f7be46..430da6f 100644
--- a/linux-x64/clang/include/clang/Basic/DiagnosticError.h
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticError.h
@@ -1,9 +1,8 @@
//===--- DiagnosticError.h - Diagnostic payload for llvm::Error -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticFrontend.h b/linux-x64/clang/include/clang/Basic/DiagnosticFrontend.h
new file mode 100644
index 0000000..57f00e7
--- /dev/null
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticFrontend.h
@@ -0,0 +1,28 @@
+//===--- DiagnosticFrontend.h - Diagnostics for frontend --------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_BASIC_DIAGNOSTICFRONTEND_H
+#define LLVM_CLANG_BASIC_DIAGNOSTICFRONTEND_H
+
+#include "clang/Basic/Diagnostic.h"
+
+namespace clang {
+namespace diag {
+enum {
+#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \
+ SHOWINSYSHEADER, CATEGORY) \
+ ENUM,
+#define FRONTENDSTART
+#include "clang/Basic/DiagnosticFrontendKinds.inc"
+#undef DIAG
+ NUM_BUILTIN_FRONTEND_DIAGNOSTICS
+};
+} // end namespace diag
+} // end namespace clang
+
+#endif // LLVM_CLANG_BASIC_DIAGNOSTICFRONTEND_H
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticFrontendKinds.inc b/linux-x64/clang/include/clang/Basic/DiagnosticFrontendKinds.inc
index 838bc1f..25f684a 100644
--- a/linux-x64/clang/include/clang/Basic/DiagnosticFrontendKinds.inc
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticFrontendKinds.inc
@@ -3,6 +3,10 @@
#undef FRONTENDSTART
#endif
+DIAG(err_alias_to_undefined, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{alias|ifunc}0 must point to a defined %select{variable or |}1function", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(err_builtin_needs_feature, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 needs target feature %1", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(err_cyclic_alias, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{alias|ifunc}0 definition is part of a cycle", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(err_duplicate_mangled_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "definition with same mangled name '%0' as another definition", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_fe_action_not_available, CLASS_ERROR, (unsigned)diag::Severity::Error, "action %0 not compiled in", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_fe_backend_frame_larger_than, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0", 0, SFINAE_SubstitutionFailure, false, true, 16)
DIAG(err_fe_backend_plugin, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0", 0, SFINAE_SubstitutionFailure, false, true, 16)
@@ -22,7 +26,6 @@
DIAG(err_fe_invalid_plugin_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to find plugin '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_fe_invalid_wchar_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid wchar_t type '%0'; must be one of 'char', 'short', 'int'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_fe_no_pch_in_dir, CLASS_ERROR, (unsigned)diag::Severity::Error, "no suitable precompiled header file found in directory '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0)
-DIAG(err_fe_pth_file_has_no_source_header, CLASS_ERROR, (unsigned)diag::Severity::Error, "PTH file '%0' does not designate an original source header file for -include-pth", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_fe_remap_missing_from_file, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "could not remap from missing file '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_fe_remap_missing_to_file, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "could not remap file '%0' to the contents of file '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_fe_stdout_binary, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "unable to change standard output to binary", 0, SFINAE_SubstitutionFailure, false, true, 0)
@@ -31,7 +34,9 @@
DIAG(err_fe_unable_to_load_pch, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to load PCH file", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_fe_unable_to_load_plugin, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to load plugin '%0': '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_fe_unable_to_open_output, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to open output file '%0': '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(err_function_needs_feature, CLASS_ERROR, (unsigned)diag::Severity::Error, "always_inline function %1 requires target feature '%2', but would be inlined into function %0 that is compiled without support for '%2'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_header_module_requires_modules, CLASS_ERROR, (unsigned)diag::Severity::Error, "header module compilation requires '-fmodules' or '-fmodules-ts'", 0, SFINAE_SubstitutionFailure, false, true, 0)
+DIAG(err_ifunc_resolver_return, CLASS_ERROR, (unsigned)diag::Severity::Error, "ifunc resolver function must return a pointer", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_invalid_vfs_overlay, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "invalid virtual filesystem overlay file '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_missing_module, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "no module named '%0' declared in module map file '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_missing_module_name, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "no module name provided; specify one with -fmodule-name=", 0, SFINAE_SubstitutionFailure, false, true, 0)
@@ -47,7 +52,6 @@
DIAG(err_no_submodule_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "no submodule named %0 in module '%1'; did you mean '%2'?", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_relocatable_without_isysroot, CLASS_ERROR, (unsigned)diag::Severity::Error, "must specify system root with -isysroot when building a relocatable PCH file", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_test_module_file_extension_version, CLASS_ERROR, (unsigned)diag::Severity::Error, "test module file extension '%0' has different version (%1.%2) than expected (%3.%4)", 0, SFINAE_SubstitutionFailure, false, true, 0)
-DIAG(err_unknown_analyzer_checker, CLASS_ERROR, (unsigned)diag::Severity::Error, "no analyzer checkers are associated with '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_verify_inconsistent_diags, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' diagnostics %select{expected|seen}1 but not %select{seen|expected}1: %2", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_verify_invalid_content, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid expected %0: %1", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_verify_invalid_no_diags, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{expected|'expected-no-diagnostics'}0 directive cannot follow %select{'expected-no-diagnostics' directive|other expected directives}0", 0, SFINAE_SubstitutionFailure, false, true, 0)
@@ -71,36 +75,39 @@
DIAG(note_module_def_undef_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "macro was %select{defined|#undef'd}0 here", 0, SFINAE_Suppress, false, false, 0)
DIAG(note_module_import_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "module imported here", 0, SFINAE_Suppress, false, false, 0)
DIAG(note_private_top_level_defined, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "module defined here", 0, SFINAE_Suppress, false, false, 0)
-DIAG(note_suggest_disabling_all_checkers, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use -analyzer-disable-all-checks to disable all static analyzer checkers", 0, SFINAE_Suppress, false, false, 0)
-DIAG(remark_fe_backend_optimization_remark, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "%0", 511, SFINAE_Suppress, false, true, 16)
-DIAG(remark_fe_backend_optimization_remark_analysis, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "%0", 512, SFINAE_Suppress, false, true, 16)
-DIAG(remark_fe_backend_optimization_remark_analysis_aliasing, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "%0; allow reordering by specifying '#pragma clang loop vectorize(enable)' before the loop. If the arrays will always be independent specify '#pragma clang loop vectorize(assume_safety)' before the loop or provide the '__restrict__' qualifier with the independent array arguments. Erroneous results will occur if these options are incorrectly applied!", 512, SFINAE_Suppress, false, true, 16)
-DIAG(remark_fe_backend_optimization_remark_analysis_fpcommute, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "%0; allow reordering by specifying '#pragma clang loop vectorize(enable)' before the loop or by providing the compiler option '-ffast-math'.", 512, SFINAE_Suppress, false, true, 16)
-DIAG(remark_fe_backend_optimization_remark_missed, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "%0", 514, SFINAE_Suppress, false, true, 16)
-DIAG(remark_fe_backend_plugin, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "%0", 554, SFINAE_Suppress, false, true, 16)
-DIAG(remark_module_build, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "building module '%0' as '%1'", 409, SFINAE_Suppress, false, false, 0)
-DIAG(remark_module_build_done, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "finished building module '%0'", 409, SFINAE_Suppress, false, false, 0)
-DIAG(remark_sanitize_address_insert_extra_padding_accepted, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "-fsanitize-address-field-padding applied to %0", 565, SFINAE_Suppress, false, true, 0)
-DIAG(remark_sanitize_address_insert_extra_padding_rejected, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "-fsanitize-address-field-padding ignored for %0 because it %select{is not C++|is packed|is a union|is trivially copyable|has trivial destructor|is standard layout|is in a blacklisted file|is blacklisted}1", 565, SFINAE_Suppress, false, true, 0)
-DIAG(warn_fe_backend_frame_larger_than, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0", 237, SFINAE_Suppress, false, true, 16)
-DIAG(warn_fe_backend_optimization_failure, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0", 513, SFINAE_Suppress, false, true, 16)
+DIAG(remark_fe_backend_optimization_remark, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "%0", 522, SFINAE_Suppress, false, true, 16)
+DIAG(remark_fe_backend_optimization_remark_analysis, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "%0", 523, SFINAE_Suppress, false, true, 16)
+DIAG(remark_fe_backend_optimization_remark_analysis_aliasing, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "%0; allow reordering by specifying '#pragma clang loop vectorize(enable)' before the loop. If the arrays will always be independent specify '#pragma clang loop vectorize(assume_safety)' before the loop or provide the '__restrict__' qualifier with the independent array arguments. Erroneous results will occur if these options are incorrectly applied!", 523, SFINAE_Suppress, false, true, 16)
+DIAG(remark_fe_backend_optimization_remark_analysis_fpcommute, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "%0; allow reordering by specifying '#pragma clang loop vectorize(enable)' before the loop or by providing the compiler option '-ffast-math'.", 523, SFINAE_Suppress, false, true, 16)
+DIAG(remark_fe_backend_optimization_remark_missed, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "%0", 525, SFINAE_Suppress, false, true, 16)
+DIAG(remark_fe_backend_plugin, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "%0", 566, SFINAE_Suppress, false, true, 16)
+DIAG(remark_module_build, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "building module '%0' as '%1'", 418, SFINAE_Suppress, false, false, 0)
+DIAG(remark_module_build_done, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "finished building module '%0'", 418, SFINAE_Suppress, false, false, 0)
+DIAG(warn_alias_to_weak_alias, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{alias|ifunc}2 will always resolve to %0 even if weak definition of %1 is overridden", 282, SFINAE_Suppress, false, false, 0)
+DIAG(warn_alias_with_section, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{alias|ifunc}1 will not be in section '%0' but in the same section as the %select{aliasee|resolver}2", 282, SFINAE_Suppress, false, false, 0)
+DIAG(warn_atomic_op_misaligned, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{large|misaligned}0 atomic operation may incur significant performance penalty", 41, SFINAE_Suppress, false, false, 0)
+DIAG(warn_fe_backend_frame_larger_than, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0", 245, SFINAE_Suppress, false, true, 16)
+DIAG(warn_fe_backend_optimization_failure, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0", 524, SFINAE_Suppress, false, true, 16)
DIAG(warn_fe_backend_plugin, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0", 53, SFINAE_Suppress, false, true, 16)
DIAG(warn_fe_cc_log_diagnostics_failure, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unable to open CC_LOG_DIAGNOSTICS file: %0 (using stderr)", 0, SFINAE_Suppress, false, false, 0)
DIAG(warn_fe_cc_print_header_failure, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unable to open CC_PRINT_HEADERS file: %0 (using stderr)", 0, SFINAE_Suppress, false, false, 0)
-DIAG(warn_fe_frame_larger_than, CLASS_WARNING, (unsigned)diag::Severity::Warning, "stack frame size of %0 bytes in %q1", 237, SFINAE_Suppress, false, true, 16)
-DIAG(warn_fe_inline_asm, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0", 318, SFINAE_Suppress, false, false, 12)
+DIAG(warn_fe_frame_larger_than, CLASS_WARNING, (unsigned)diag::Severity::Warning, "stack frame size of %0 bytes in %q1", 245, SFINAE_Suppress, false, true, 16)
+DIAG(warn_fe_inline_asm, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0", 327, SFINAE_Suppress, false, false, 12)
DIAG(warn_fe_macro_contains_embedded_newline, CLASS_WARNING, (unsigned)diag::Severity::Warning, "macro '%0' contains embedded newline; text after the newline is ignored", 0, SFINAE_Suppress, false, false, 0)
-DIAG(warn_fe_override_module, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overriding the module target triple with %0", 503, SFINAE_Suppress, false, false, 0)
-DIAG(warn_fe_serialized_diag_failure, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unable to open file %0 for serializing diagnostics (%1)", 576, SFINAE_Suppress, false, false, 0)
-DIAG(warn_fe_serialized_diag_merge_failure, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unable to merge a subprocess's serialized diagnostics", 576, SFINAE_Suppress, false, false, 0)
-DIAG(warn_fe_unable_to_open_stats_file, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unable to open statistics output file '%0': '%1'", 661, SFINAE_Suppress, false, false, 0)
+DIAG(warn_fe_override_module, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overriding the module target triple with %0", 514, SFINAE_Suppress, false, false, 0)
+DIAG(warn_fe_serialized_diag_failure, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unable to open file %0 for serializing diagnostics (%1)", 588, SFINAE_Suppress, false, false, 0)
+DIAG(warn_fe_serialized_diag_merge_failure, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unable to merge a subprocess's serialized diagnostics", 588, SFINAE_Suppress, false, false, 0)
+DIAG(warn_fe_unable_to_open_stats_file, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unable to open statistics output file '%0': '%1'", 674, SFINAE_Suppress, false, false, 0)
DIAG(warn_fixit_no_changes, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "FIX-IT detected errors it could not fix; no output will be generated", 0, SFINAE_Suppress, false, false, 0)
DIAG(warn_incompatible_analyzer_plugin_api, CLASS_WARNING, (unsigned)diag::Severity::Warning, "checker plugin '%0' is not compatible with this version of the analyzer", 21, SFINAE_Suppress, false, false, 0)
-DIAG(warn_missing_submodule, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing submodule '%0'", 308, SFINAE_Suppress, false, false, 0)
-DIAG(warn_module_config_macro_undef, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{definition|#undef}0 of configuration macro '%1' has no effect on the import of '%2'; pass '%select{-D%1=...|-U%1}0' on the command line to configure the module", 131, SFINAE_Suppress, false, false, 0)
-DIAG(warn_module_config_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Error, "module file %0 cannot be loaded due to a configuration mismatch with the current compilation", 411, SFINAE_Suppress, false, false, 0)
-DIAG(warn_no_priv_submodule_use_toplevel, CLASS_WARNING, (unsigned)diag::Severity::Warning, "no submodule named %0 in module '%1'; using top level '%2'", 534, SFINAE_Suppress, false, false, 0)
-DIAG(warn_option_invalid_ocl_version, CLASS_WARNING, (unsigned)diag::Severity::Warning, "OpenCL version %0 does not support the option '%1'", 158, SFINAE_Suppress, false, false, 27)
-DIAG(warn_stdlibcxx_not_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "include path for stdlibc++ headers not found; pass '-stdlib=libc++' on the command line to use the libc++ standard library instead", 608, SFINAE_Suppress, false, false, 0)
-DIAG(warn_unknown_diag_option, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown %select{warning|remark}0 option '%1'%select{|; did you mean '%3'?}2", 685, SFINAE_Suppress, false, false, 0)
-DIAG(warn_unknown_warning_specifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown %0 warning specifier: '%1'", 685, SFINAE_Suppress, false, false, 0)
+DIAG(warn_missing_submodule, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing submodule '%0'", 317, SFINAE_Suppress, false, false, 0)
+DIAG(warn_module_config_macro_undef, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{definition|#undef}0 of configuration macro '%1' has no effect on the import of '%2'; pass '%select{-D%1=...|-U%1}0' on the command line to configure the module", 132, SFINAE_Suppress, false, false, 0)
+DIAG(warn_module_config_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Error, "module file %0 cannot be loaded due to a configuration mismatch with the current compilation", 420, SFINAE_Suppress, false, false, 0)
+DIAG(warn_no_priv_submodule_use_toplevel, CLASS_WARNING, (unsigned)diag::Severity::Warning, "no submodule named %0 in module '%1'; using top level '%2'", 546, SFINAE_Suppress, false, false, 0)
+DIAG(warn_option_invalid_ocl_version, CLASS_WARNING, (unsigned)diag::Severity::Warning, "OpenCL version %0 does not support the option '%1'", 164, SFINAE_Suppress, false, false, 27)
+DIAG(warn_profile_data_missing, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "profile data may be incomplete: of %0 function%s0, %1 %plural{1:has|:have}1 no data", 547, SFINAE_Suppress, false, false, 31)
+DIAG(warn_profile_data_out_of_date, CLASS_WARNING, (unsigned)diag::Severity::Warning, "profile data may be out of date: of %0 function%s0, %1 %plural{1:has|:have}1 mismatched data that will be ignored", 548, SFINAE_Suppress, false, false, 31)
+DIAG(warn_profile_data_unprofiled, CLASS_WARNING, (unsigned)diag::Severity::Warning, "no profile data available for file \"%0\"", 549, SFINAE_Suppress, false, false, 31)
+DIAG(warn_stdlibcxx_not_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "include path for stdlibc++ headers not found; pass '-stdlib=libc++' on the command line to use the libc++ standard library instead", 621, SFINAE_Suppress, false, false, 0)
+DIAG(warn_unknown_diag_option, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown %select{warning|remark}0 option '%1'%select{|; did you mean '%3'?}2", 698, SFINAE_Suppress, false, false, 0)
+DIAG(warn_unknown_warning_specifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown %0 warning specifier: '%1'", 698, SFINAE_Suppress, false, false, 0)
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticGroups.inc b/linux-x64/clang/include/clang/Basic/DiagnosticGroups.inc
index 489894e..6b74a08 100644
--- a/linux-x64/clang/include/clang/Basic/DiagnosticGroups.inc
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticGroups.inc
@@ -43,7 +43,7 @@
/* DiagArray49 */ diag::warn_auto_module_import, -1,
/* DiagArray50 */ diag::ext_auto_storage_class, -1,
/* DiagArray51 */ diag::warn_auto_var_is_id, -1,
- /* DiagArray52 */ diag::warn_availability_and_unavailable, diag::warn_availability_on_static_initializer, diag::warn_availability_unknown_platform, diag::warn_availability_version_ordering, diag::warn_expected_consistent_version_separator, diag::warn_mismatched_availability, diag::warn_mismatched_availability_override, diag::warn_mismatched_availability_override_unavail, -1,
+ /* DiagArray52 */ diag::warn_availability_and_unavailable, diag::warn_availability_on_static_initializer, diag::warn_availability_swift_unavailable_deprecated_only, diag::warn_availability_unknown_platform, diag::warn_availability_version_ordering, diag::warn_expected_consistent_version_separator, diag::warn_mismatched_availability, diag::warn_mismatched_availability_override, diag::warn_mismatched_availability_override_unavail, -1,
/* DiagArray53 */ diag::warn_fe_backend_plugin, -1,
/* DiagArray54 */ diag::backslash_newline_space, -1,
/* DiagArray55 */ diag::warn_bad_function_cast, -1,
@@ -73,9 +73,9 @@
/* DiagArray87 */ diag::ext_constexpr_body_invalid_stmt, diag::ext_constexpr_body_multiple_return, diag::ext_constexpr_local_var, diag::ext_constexpr_type_definition, diag::ext_cxx14_attr, diag::ext_decltype_auto_type_specifier, diag::ext_init_capture, diag::ext_variable_template, -1,
/* DiagArray89 */ diag::warn_cxx17_compat_exception_spec_in_signature, -1,
/* DiagArray91 */ diag::ext_auto_new_list_init, diag::ext_constexpr_if, diag::ext_constexpr_on_lambda_cxx17, diag::ext_cxx17_attr, diag::ext_decomp_decl, diag::ext_fold_expression, diag::ext_for_range_begin_end_types_differ, diag::ext_hex_literal_invalid, diag::ext_init_statement, diag::ext_inline_variable, diag::ext_multi_using_declaration, diag::ext_nested_namespace_definition, diag::ext_ns_enum_attribute, diag::ext_star_this_lambda_capture_cxx17, diag::ext_static_assert_no_message, diag::ext_template_template_param_typename, diag::ext_using_attribute_ns, diag::ext_using_declaration_pack, -1,
- /* DiagArray96 */ diag::warn_cxx2a_compat_aggregate_init_with_ctors, diag::warn_cxx2a_compat_spaceship, diag::warn_cxx2a_keyword, -1,
- /* DiagArray98 */ diag::ext_bitfield_member_init, diag::ext_equals_this_lambda_capture_cxx2a, diag::ext_for_range_init_stmt, diag::ext_pointer_to_const_ref_member_on_rvalue, -1,
- /* DiagArray99 */ diag::warn_cxx17_compat_bitfield_member_init, diag::warn_cxx17_compat_defaulted_method_type_mismatch, diag::warn_cxx17_compat_equals_this_lambda_capture, diag::warn_cxx17_compat_for_range_init_stmt, diag::warn_cxx17_compat_lambda_def_ctor_assign, diag::warn_cxx17_compat_spaceship, diag::warn_cxx17_compat_unicode_type, -1,
+ /* DiagArray96 */ diag::warn_cxx2a_compat_aggregate_init_with_ctors, diag::warn_cxx2a_compat_spaceship, diag::warn_cxx2a_compat_utf8_string, diag::warn_cxx2a_keyword, -1,
+ /* DiagArray98 */ diag::ext_bitfield_member_init, diag::ext_constexpr_body_invalid_stmt_cxx2a, diag::ext_constexpr_function_try_block_cxx2a, diag::ext_equals_this_lambda_capture_cxx2a, diag::ext_for_range_init_stmt, diag::ext_inline_nested_namespace_definition, diag::ext_pointer_to_const_ref_member_on_rvalue, -1,
+ /* DiagArray99 */ diag::warn_cxx17_compat_bitfield_member_init, diag::warn_cxx17_compat_constexpr_body_invalid_stmt, diag::warn_cxx17_compat_constexpr_function_try_block, diag::warn_cxx17_compat_defaulted_method_type_mismatch, diag::warn_cxx17_compat_equals_this_lambda_capture, diag::warn_cxx17_compat_for_range_init_stmt, diag::warn_cxx17_compat_inline_nested_namespace_definition, diag::warn_cxx17_compat_lambda_def_ctor_assign, diag::warn_cxx17_compat_spaceship, diag::warn_cxx17_compat_unicode_type, -1,
/* DiagArray100 */ diag::warn_cxx17_compat_pointer_to_const_ref_member_on_rvalue, -1,
/* DiagArray101 */ diag::warn_cxx14_compat_class_template_argument_deduction, diag::warn_cxx14_compat_constexpr_if, diag::warn_cxx14_compat_constexpr_on_lambda, diag::warn_cxx14_compat_decomp_decl, diag::warn_cxx14_compat_fold_expression, diag::warn_cxx14_compat_init_statement, diag::warn_cxx14_compat_inline_variable, diag::warn_cxx14_compat_nested_namespace_definition, diag::warn_cxx14_compat_star_this_lambda_capture, diag::warn_cxx14_compat_static_assert_no_message, diag::warn_cxx14_compat_template_nontype_parm_auto_type, diag::warn_cxx14_compat_template_template_param_typename, diag::warn_cxx14_compat_u8_character_literal, diag::warn_cxx14_compat_using_attribute_ns, diag::warn_cxx17_compat_multi_using_declaration, diag::warn_cxx17_compat_using_declaration_pack, diag::warn_for_range_begin_end_types_differ, -1,
/* DiagArray102 */ diag::warn_cxx14_compat_ns_enum_attribute, diag::warn_cxx17_hex_literal, -1,
@@ -90,583 +90,594 @@
/* DiagArray112 */ diag::ext_anonymous_union, diag::ext_c11_alignment, diag::ext_c11_anonymous_struct, diag::ext_c11_generic_selection, diag::ext_c11_noreturn, diag::ext_c11_static_assert, -1,
/* DiagArray113 */ diag::warn_c99_compat_unicode_id, diag::warn_c99_compat_unicode_literal, diag::warn_old_implicitly_unsigned_long, -1,
/* DiagArray114 */ diag::ext_aggregate_init_not_constant, diag::ext_c99_array_usage, diag::ext_c99_compound_literal, diag::ext_c99_flexible_array_member, diag::ext_c99_variable_decl_in_for_loop, diag::ext_c99_whitespace_required_after_macro_name, diag::ext_designated_init, diag::ext_empty_fnmacro_arg, diag::ext_enumerator_list_comma_c, diag::ext_hex_constant_invalid, -1,
- /* DiagArray115 */ diag::warn_cast_align, -1,
- /* DiagArray116 */ diag::warn_cast_calling_conv, -1,
- /* DiagArray117 */ diag::warn_cast_pointer_from_sel, -1,
- /* DiagArray118 */ diag::warn_cast_qual, diag::warn_cast_qual2, -1,
- /* DiagArray119 */ diag::ext_bad_cxx_cast_qualifiers_away_incoherent, -1,
- /* DiagArray121 */ diag::warn_omp_section_is_char, diag::warn_subscript_is_char, -1,
- /* DiagArray122 */ diag::warn_drv_yc_multiple_inputs_clang_cl, diag::warn_drv_ycyu_different_arg_clang_cl, diag::warn_drv_ycyu_no_fi_arg_clang_cl, diag::warn_pp_hdrstop_filename_ignored, diag::warn_pp_macro_def_mismatch_with_pch, -1,
- /* DiagArray123 */ diag::warn_pass_class_arg_to_vararg, -1,
- /* DiagArray124 */ diag::warn_comma_operator, -1,
- /* DiagArray125 */ diag::escaped_newline_block_comment_end, diag::ext_line_comment, diag::ext_multi_line_line_comment, diag::warn_nested_block_comment, -1,
- /* DiagArray127 */ diag::ext_typecheck_comparison_of_distinct_pointers, -1,
- /* DiagArray128 */ diag::ext_complex_component_init, -1,
- /* DiagArray129 */ diag::ext_typecheck_cond_pointer_integer_mismatch, -1,
- /* DiagArray130 */ diag::warn_maybe_uninit_var, -1,
- /* DiagArray131 */ diag::warn_module_config_macro_undef, -1,
- /* DiagArray132 */ diag::warn_impcast_integer_precision_constant, -1,
- /* DiagArray133 */ diag::warn_logical_instead_of_bitwise, -1,
- /* DiagArray134 */ diag::warn_cxx14_compat_constexpr_not_const, -1,
- /* DiagArray135 */ diag::warn_attr_on_unconsumable_class, diag::warn_loop_state_mismatch, diag::warn_param_return_typestate_mismatch, diag::warn_param_typestate_mismatch, diag::warn_return_typestate_for_unconsumable_type, diag::warn_return_typestate_mismatch, diag::warn_use_in_invalid_state, diag::warn_use_of_temp_in_invalid_state, -1,
- /* DiagArray136 */ diag::warn_impcast_complex_scalar, diag::warn_impcast_vector_scalar, diag::warn_opencl_generic_address_space_arg, diag::warn_template_arg_negative, diag::warn_template_arg_too_large, -1,
- /* DiagArray139 */ diag::warn_coroutine_promise_unhandled_exception_required_with_exceptions, -1,
- /* DiagArray140 */ diag::warn_unreachable_default, -1,
- /* DiagArray142 */ diag::warn_objc_cdirective_format_string, -1,
- /* DiagArray144 */ diag::warn_attribute_argument_n_negative, diag::warn_cuda_attr_lambda_position, diag::warn_kern_is_inline, diag::warn_kern_is_method, diag::warn_pragma_unroll_cuda_value_in_parens, -1,
- /* DiagArray145 */ diag::warn_default_atomic_custom_getter_setter, -1,
- /* DiagArray146 */ diag::warn_dangling_variable, diag::warn_unsupported_lifetime_extension, -1,
- /* DiagArray147 */ diag::warn_dangling_else, -1,
- /* DiagArray148 */ diag::warn_bind_ref_member_to_parameter, diag::warn_dangling_member, diag::warn_init_ptr_member_to_parameter_addr, diag::warn_new_dangling_reference, -1,
- /* DiagArray149 */ diag::warn_new_dangling_initializer_list, -1,
- /* DiagArray150 */ diag::warn_pp_date_time, -1,
- /* DiagArray151 */ diag::warn_dealloc_in_category, -1,
- /* DiagArray152 */ diag::warn_debug_compression_unavailable, -1,
- /* DiagArray153 */ diag::ext_mixed_decls_code, -1,
- /* DiagArray154 */ diag::warn_defaulted_method_deleted, -1,
- /* DiagArray155 */ diag::warn_delegating_ctor_cycle, -1,
- /* DiagArray156 */ diag::ext_delete_void_ptr_operand, diag::warn_delete_incomplete, -1,
- /* DiagArray157 */ diag::warn_delete_abstract_non_virtual_dtor, diag::warn_delete_non_virtual_dtor, -1,
- /* DiagArray158 */ diag::warn_O4_is_O3, diag::warn_access_decl_deprecated, diag::warn_deprecated_copy_operation, diag::warn_deprecated_redundant_constexpr_static_def, diag::warn_drv_deprecated_arg, diag::warn_drv_treating_input_as_cxx, diag::warn_option_invalid_ocl_version, diag::warn_vector_long_decl_spec_combination, -1,
- /* DiagArray159 */ diag::warn_vector_mode_deprecated, -1,
- /* DiagArray160 */ diag::warn_atl_uuid_deprecated, diag::warn_cstyle_param, diag::warn_deprecated, diag::warn_deprecated_fwdclass_message, diag::warn_deprecated_message, diag::warn_property_method_deprecated, -1,
- /* DiagArray161 */ diag::warn_exception_spec_deprecated, -1,
- /* DiagArray162 */ diag::warn_deprecated_def, diag::warn_unavailable_def, -1,
- /* DiagArray163 */ diag::warn_increment_bool, -1,
- /* DiagArray164 */ diag::warn_objc_isa_assign, diag::warn_objc_isa_use, -1,
- /* DiagArray165 */ diag::warn_objc_pointer_masking, -1,
- /* DiagArray166 */ diag::warn_objc_pointer_masking_performSelector, -1,
- /* DiagArray167 */ diag::warn_deprecated_register, -1,
- /* DiagArray168 */ diag::warn_deprecated_this_capture, -1,
- /* DiagArray170 */ diag::warn_direct_ivar_access, -1,
- /* DiagArray171 */ diag::pp_disabled_macro_expansion, -1,
- /* DiagArray174 */ diag::warn_conflicting_param_modifiers, diag::warn_conflicting_ret_type_modifiers, -1,
- /* DiagArray176 */ diag::warn_remainder_division_by_zero, -1,
- /* DiagArray177 */ diag::warn_attribute_dll_redeclaration, -1,
- /* DiagArray178 */ diag::warn_attribute_dllexport_explicit_instantiation_decl, -1,
- /* DiagArray179 */ diag::warn_attribute_dllimport_static_field_definition, -1,
- /* DiagArray180 */ diag::warn_doc_api_container_decl_mismatch, diag::warn_doc_block_command_duplicate, diag::warn_doc_block_command_empty_paragraph, diag::warn_doc_container_decl_mismatch, diag::warn_doc_function_method_decl_mismatch, diag::warn_doc_html_start_tag_expected_ident_or_greater, diag::warn_doc_html_start_tag_expected_quoted_string, diag::warn_doc_param_duplicate, diag::warn_doc_param_invalid_direction, diag::warn_doc_param_not_attached_to_a_function_decl, diag::warn_doc_param_not_found, diag::warn_doc_returns_attached_to_a_void_function, diag::warn_doc_returns_not_attached_to_a_function_decl, diag::warn_doc_tparam_duplicate, diag::warn_doc_tparam_not_attached_to_a_template_decl, diag::warn_doc_tparam_not_found, diag::warn_not_a_doxygen_trailing_member_comment, diag::warn_verbatim_block_end_without_start, -1,
- /* DiagArray181 */ diag::warn_doc_deprecated_not_sync, -1,
- /* DiagArray182 */ diag::warn_doc_html_end_forbidden, diag::warn_doc_html_end_unbalanced, diag::warn_doc_html_missing_end_tag, diag::warn_doc_html_start_end_mismatch, -1,
- /* DiagArray183 */ diag::warn_doc_param_spaces_in_direction, -1,
- /* DiagArray184 */ diag::warn_correct_comment_command_name, diag::warn_unknown_comment_command_name, -1,
- /* DiagArray185 */ diag::ext_dollar_in_identifier, -1,
- /* DiagArray186 */ diag::warn_impcast_double_promotion, -1,
- /* DiagArray187 */ diag::ext_duplicate_declspec, diag::ext_warn_duplicate_declspec, diag::warn_attribute_address_multiple_identical_qualifiers, diag::warn_duplicate_declspec, -1,
- /* DiagArray188 */ diag::warn_duplicate_enum_values, -1,
- /* DiagArray189 */ diag::warn_method_param_declaration, -1,
- /* DiagArray190 */ diag::warn_duplicate_method_decl, -1,
- /* DiagArray191 */ diag::warn_duplicate_protocol_def, -1,
- /* DiagArray192 */ diag::warn_dyn_class_memaccess, -1,
- /* DiagArray193 */ diag::ext_dynamic_exception_spec, -1,
- /* DiagArray195 */ diag::ext_embedded_directive, -1,
- /* DiagArray196 */ diag::warn_empty_for_body, diag::warn_empty_if_body, diag::warn_empty_range_based_for_body, diag::warn_empty_switch_body, diag::warn_empty_while_body, -1,
- /* DiagArray197 */ diag::ext_decomp_decl_empty, -1,
- /* DiagArray198 */ diag::ext_empty_translation_unit, -1,
- /* DiagArray199 */ diag::warn_incomplete_encoded_type, -1,
- /* DiagArray201 */ diag::warn_comparison_of_mixed_enum_types, -1,
- /* DiagArray202 */ diag::warn_comparison_of_mixed_enum_types_switch, -1,
- /* DiagArray203 */ diag::warn_impcast_different_enum_types, -1,
- /* DiagArray204 */ diag::ext_enum_too_large, diag::ext_enumerator_increment_too_large, -1,
- /* DiagArray205 */ diag::warn_cdtor_function_try_handler_mem_expr, diag::warn_exception_caught_by_earlier_handler, diag::warn_throw_in_noexcept_func, -1,
- /* DiagArray206 */ diag::warn_exit_time_destructor, -1,
- /* DiagArray207 */ diag::warn_defined_in_function_type_macro, diag::warn_defined_in_object_type_macro, -1,
- /* DiagArray208 */ diag::warn_drv_experimental_isel_incomplete, diag::warn_drv_experimental_isel_incomplete_opt, -1,
- /* DiagArray209 */ diag::warn_direct_initialize_call, diag::warn_direct_super_initialize_call, -1,
- /* DiagArray210 */ diag::warn_arc_strong_pointer_objc_pointer, -1,
- /* DiagArray211 */ diag::warn_zero_size_struct_union_in_extern_c, -1,
- /* DiagArray212 */ diag::warn_extern_init, -1,
- /* DiagArray213 */ diag::warn_arm_interrupt_calling_convention, -1,
- /* DiagArray214 */ diag::warn_namespace_member_extra_qualification, -1,
- /* DiagArray215 */ diag::ext_extra_semi, diag::warn_extra_semi_after_mem_fn_def, -1,
- /* DiagArray216 */ diag::ext_pp_extra_tokens_at_eol, diag::warn_omp_extra_tokens_at_eol, -1,
- /* DiagArray217 */ diag::warn_drv_invoking_fallback, -1,
- /* DiagArray218 */ diag::ext_clang_c_enum_fixed_underlying_type, -1,
- /* DiagArray219 */ diag::warn_flag_enum_constant_out_of_range, -1,
- /* DiagArray220 */ diag::ext_flexible_array_in_array, diag::ext_flexible_array_in_struct, -1,
- /* DiagArray221 */ diag::warn_impcast_float_integer, -1,
- /* DiagArray222 */ diag::warn_floatingpoint_eq, -1,
- /* DiagArray223 */ diag::warn_impcast_float_to_integer, diag::warn_impcast_float_to_integer_out_of_range, -1,
- /* DiagArray224 */ diag::warn_impcast_float_to_integer_zero, -1,
- /* DiagArray225 */ diag::warn_redundant_loop_iteration, diag::warn_variables_not_in_loop_body, -1,
- /* DiagArray226 */ diag::warn_format_P_no_precision, diag::warn_format_argument_needs_cast, diag::warn_format_conversion_argument_type_mismatch, diag::warn_format_invalid_annotation, diag::warn_format_invalid_positional_specifier, diag::warn_format_mix_positional_nonpositional_args, diag::warn_format_nonsensical_length, diag::warn_format_string_is_wide_literal, diag::warn_format_zero_positional_specifier, diag::warn_missing_format_string, diag::warn_printf_ObjCflags_without_ObjCConversion, diag::warn_printf_asterisk_missing_arg, diag::warn_printf_asterisk_wrong_type, diag::warn_printf_empty_objc_flag, diag::warn_printf_format_string_contains_null_char, diag::warn_printf_format_string_not_null_terminated, diag::warn_printf_ignored_flag, diag::warn_printf_incomplete_specifier, diag::warn_printf_insufficient_data_args, diag::warn_printf_invalid_objc_flag, diag::warn_printf_nonsensical_flag, diag::warn_printf_nonsensical_optional_amount, diag::warn_printf_positional_arg_exceeds_data_args, diag::warn_scanf_nonzero_width, diag::warn_scanf_scanlist_incomplete, -1,
- /* DiagArray227 */ diag::warn_printf_data_arg_not_used, -1,
- /* DiagArray228 */ diag::warn_format_invalid_conversion, -1,
- /* DiagArray229 */ diag::warn_format_non_standard, diag::warn_format_non_standard_conversion_spec, diag::warn_format_non_standard_positional_arg, -1,
- /* DiagArray230 */ diag::warn_format_nonliteral, -1,
- /* DiagArray231 */ diag::warn_format_argument_needs_cast_pedantic, diag::warn_format_conversion_argument_type_mismatch_pedantic, -1,
- /* DiagArray232 */ diag::warn_format_nonliteral_noargs, -1,
- /* DiagArray234 */ diag::warn_empty_format_string, -1,
- /* DiagArray236 */ diag::ext_four_char_character_literal, -1,
- /* DiagArray237 */ diag::warn_fe_backend_frame_larger_than, diag::warn_fe_frame_larger_than, -1,
- /* DiagArray238 */ diag::warn_framework_include_private_from_public, -1,
- /* DiagArray239 */ diag::warn_function_def_in_objc_container, -1,
- /* DiagArray240 */ diag::warn_dispatch_body_ignored, diag::warn_multiversion_duplicate_entries, -1,
- /* DiagArray242 */ diag::ext_clang_diagnose_if, diag::ext_clang_enable_if, diag::ext_warn_gnu_final, diag::warn_attribute_on_function_definition, diag::warn_break_binds_to_switch, diag::warn_cleanup_ext, diag::warn_gcc_attribute_location, diag::warn_gcc_ignores_type_attr, diag::warn_gcc_variable_decl_in_for_loop, diag::warn_loop_ctrl_binds_to_inner, -1,
- /* DiagArray243 */ diag::warn_global_constructor, diag::warn_global_destructor, -1,
- /* DiagArray245 */ diag::ext_alignof_expr, -1,
- /* DiagArray246 */ diag::ext_gnu_anonymous_struct, -1,
- /* DiagArray247 */ diag::ext_array_init_parens, -1,
- /* DiagArray248 */ diag::ext_auto_type, -1,
- /* DiagArray249 */ diag::ext_binary_literal, -1,
- /* DiagArray250 */ diag::ext_gnu_case_range, -1,
- /* DiagArray251 */ diag::ext_integer_complex, -1,
- /* DiagArray252 */ diag::ext_array_init_copy, -1,
- /* DiagArray253 */ diag::ext_gnu_conditional_expr, -1,
- /* DiagArray254 */ diag::ext_gnu_array_range, diag::ext_gnu_missing_equal_designator, diag::ext_gnu_old_style_field_designator, -1,
- /* DiagArray255 */ diag::ext_gnu_empty_initializer, -1,
- /* DiagArray256 */ diag::ext_empty_struct_union, diag::ext_flexible_array_empty_aggregate_gnu, diag::ext_no_named_members_in_struct_union, -1,
- /* DiagArray257 */ diag::ext_flexible_array_init, -1,
- /* DiagArray258 */ diag::ext_flexible_array_union_gnu, -1,
- /* DiagArray259 */ diag::ext_expr_not_ice, diag::ext_in_class_initializer_non_constant, diag::ext_vla_folded_to_constant, -1,
- /* DiagArray260 */ diag::ext_imaginary_constant, -1,
- /* DiagArray261 */ diag::ext_pp_include_next_directive, -1,
- /* DiagArray262 */ diag::ext_gnu_address_of_label, diag::ext_gnu_indirect_goto, -1,
- /* DiagArray263 */ diag::ext_forward_ref_enum_def, -1,
- /* DiagArray264 */ diag::ext_gnu_statement_expr, -1,
- /* DiagArray265 */ diag::ext_in_class_initializer_float_type, -1,
- /* DiagArray266 */ diag::ext_string_literal_operator_template, -1,
- /* DiagArray267 */ diag::ext_typecheck_cast_to_union, -1,
- /* DiagArray268 */ diag::ext_variable_sized_type_in_struct, -1,
- /* DiagArray269 */ diag::ext_pp_line_zero, -1,
- /* DiagArray270 */ diag::ext_missing_varargs_arg, diag::ext_paste_comma, -1,
- /* DiagArray271 */ diag::warn_header_guard, -1,
- /* DiagArray272 */ diag::warn_using_directive_in_header, -1,
- /* DiagArray273 */ diag::warn_condition_is_idiomatic_assignment, -1,
- /* DiagArray274 */ diag::ext_cannot_use_trivial_abi, diag::warn_alias_to_weak_alias, diag::warn_alias_with_section, diag::warn_attr_abi_tag_namespace, diag::warn_attribute_after_definition_ignored, diag::warn_attribute_iboutlet, diag::warn_attribute_ignored, diag::warn_attribute_ignored_for_field_of_type, diag::warn_attribute_ignored_on_inline, diag::warn_attribute_invalid_on_definition, diag::warn_attribute_no_decl, diag::warn_attribute_nonnull_no_pointers, diag::warn_attribute_nonnull_parm_no_args, diag::warn_attribute_not_on_decl, diag::warn_attribute_pointer_or_reference_only, diag::warn_attribute_pointers_only, diag::warn_attribute_precede_definition, diag::warn_attribute_return_pointers_only, diag::warn_attribute_return_pointers_refs_only, diag::warn_attribute_sentinel_named_arguments, diag::warn_attribute_sentinel_not_variadic, diag::warn_attribute_type_not_supported, diag::warn_attribute_unknown_visibility, diag::warn_attribute_void_function_method, diag::warn_attribute_weak_on_field, diag::warn_attribute_weak_on_local, diag::warn_attribute_wrong_decl_type, diag::warn_attribute_wrong_decl_type_str, diag::warn_block_literal_attributes_on_omitted_return_type, diag::warn_cconv_ignored, diag::warn_cconv_structors, diag::warn_cconv_varargs, diag::warn_cxx11_gnu_attribute_on_type, diag::warn_declspec_attribute_ignored, diag::warn_deprecated_anonymous_namespace, diag::warn_dllimport_dropped_from_inline_function, diag::warn_duplicate_attribute, diag::warn_duplicate_attribute_exact, diag::warn_gc_attribute_weak_on_local, diag::warn_gnu_inline_attribute_requires_inline, diag::warn_ignored_ms_inheritance, diag::warn_internal_linkage_local_storage, diag::warn_microsoft_qualifiers_ignored, diag::warn_mips_interrupt_attribute, diag::warn_mmap_unknown_attribute, diag::warn_nocf_check_attribute_ignored, diag::warn_ns_attribute_wrong_parameter_type, diag::warn_ns_attribute_wrong_return_type, diag::warn_opencl_attr_deprecated_ignored, diag::warn_riscv_interrupt_attribute, diag::warn_riscv_repeated_interrupt_attribute, diag::warn_transparent_union_attribute_field_size_align, diag::warn_transparent_union_attribute_floating, diag::warn_transparent_union_attribute_not_definition, diag::warn_transparent_union_attribute_zero_fields, diag::warn_type_attribute_wrong_type, diag::warn_unhandled_ms_attribute_ignored, diag::warn_unsupported_target_attribute, -1,
- /* DiagArray275 */ diag::warn_drv_unsupported_opt_for_target, diag::warn_ignored_gcc_optimization, -1,
- /* DiagArray276 */ diag::warn_pragma_intrinsic_builtin, -1,
- /* DiagArray277 */ diag::warn_pragma_optimize, -1,
- /* DiagArray278 */ diag::warn_pragma_align_expected_equal, diag::warn_pragma_align_invalid_option, diag::warn_pragma_begin_end_mismatch, diag::warn_pragma_comment_ignored, diag::warn_pragma_debug_missing_argument, diag::warn_pragma_debug_unexpected_command, diag::warn_pragma_expected_action_or_r_paren, diag::warn_pragma_expected_colon, diag::warn_pragma_expected_colon_r_paren, diag::warn_pragma_expected_comma, diag::warn_pragma_expected_identifier, diag::warn_pragma_expected_init_seg, diag::warn_pragma_expected_integer, diag::warn_pragma_expected_lparen, diag::warn_pragma_expected_non_wide_string, diag::warn_pragma_expected_predicate, diag::warn_pragma_expected_punc, diag::warn_pragma_expected_rparen, diag::warn_pragma_expected_section_label_or_name, diag::warn_pragma_expected_section_name, diag::warn_pragma_expected_section_push_pop_or_name, diag::warn_pragma_expected_string, diag::warn_pragma_extra_tokens_at_eol, diag::warn_pragma_force_cuda_host_device_bad_arg, diag::warn_pragma_init_seg_unsupported_target, diag::warn_pragma_invalid_action, diag::warn_pragma_invalid_argument, diag::warn_pragma_invalid_specific_action, diag::warn_pragma_missing_argument, diag::warn_pragma_ms_struct, diag::warn_pragma_options_align_reset_failed, diag::warn_pragma_options_expected_align, diag::warn_pragma_pack_invalid_alignment, diag::warn_pragma_pack_malformed, diag::warn_pragma_pop_failed, diag::warn_pragma_pop_macro_no_push, diag::warn_pragma_unknown_extension, diag::warn_pragma_unsupported_action, diag::warn_pragma_unsupported_extension, diag::warn_pragma_unused_expected_var, diag::warn_pragma_unused_expected_var_arg, diag::warn_pragma_unused_undeclared_var, -1,
- /* DiagArray279 */ diag::warn_arc_lifetime_result_type, diag::warn_block_literal_qualifiers_on_omitted_return_type, diag::warn_qual_return_type, diag::warn_typecheck_function_qualifiers_ignored, diag::warn_typecheck_reference_qualifiers, -1,
- /* DiagArray281 */ diag::warn_auto_implicit_atomic_property, diag::warn_implicit_atomic_property, -1,
- /* DiagArray282 */ diag::warn_impcast_floating_point_to_bool, -1,
- /* DiagArray283 */ diag::ext_implicit_exception_spec_mismatch, -1,
- /* DiagArray284 */ diag::warn_fallthrough_attr_unreachable, diag::warn_unannotated_fallthrough, -1,
- /* DiagArray285 */ diag::warn_unannotated_fallthrough_per_function, -1,
- /* DiagArray286 */ diag::warn_impcast_float_precision, diag::warn_impcast_float_result_precision, -1,
- /* DiagArray287 */ diag::ext_implicit_function_decl, diag::ext_implicit_lib_function_decl, diag::warn_builtin_unknown, diag::warn_implicit_function_decl, -1,
- /* DiagArray288 */ diag::ext_missing_type_specifier, -1,
- /* DiagArray289 */ diag::warn_impcast_high_order_zero_bits, diag::warn_impcast_integer_precision, -1,
- /* DiagArray290 */ diag::warn_implicitly_retains_self, -1,
- /* DiagArray291 */ diag::ext_integer_literal_too_large_for_signed, -1,
- /* DiagArray293 */ diag::ext_pp_import_directive, -1,
- /* DiagArray294 */ diag::warn_inaccessible_base_class, -1,
- /* DiagArray295 */ diag::pp_include_next_absolute_path, -1,
- /* DiagArray296 */ diag::pp_include_next_in_primary, -1,
- /* DiagArray297 */ diag::warn_deep_exception_specs_differ, diag::warn_incompatible_exception_specs, -1,
- /* DiagArray298 */ diag::ext_typecheck_convert_incompatible_function_pointer, -1,
- /* DiagArray299 */ diag::warn_redecl_library_builtin, -1,
- /* DiagArray300 */ diag::warn_cxx_ms_struct, diag::warn_npot_ms_struct, -1,
- /* DiagArray301 */ diag::ext_typecheck_convert_incompatible_pointer, -1,
- /* DiagArray302 */ diag::ext_nested_pointer_qualifier_mismatch, diag::ext_typecheck_convert_discards_qualifiers, -1,
- /* DiagArray303 */ diag::warn_property_types_are_incompatible, -1,
- /* DiagArray304 */ diag::warn_incompatible_sysroot, -1,
- /* DiagArray305 */ diag::warn_mmap_incomplete_framework_module_declaration, -1,
- /* DiagArray306 */ diag::warn_undef_method_impl, -1,
- /* DiagArray308 */ diag::warn_missing_submodule, diag::warn_mmap_umbrella_dir_not_found, diag::warn_uncovered_module_header, -1,
- /* DiagArray309 */ diag::warn_redeclaration_without_attribute_prev_attribute_ignored, diag::warn_redeclaration_without_import_attribute, -1,
- /* DiagArray310 */ diag::warn_destructor_marked_not_override_overriding, -1,
- /* DiagArray311 */ diag::warn_function_marked_not_override_overriding, -1,
- /* DiagArray312 */ diag::ext_increment_bool, -1,
- /* DiagArray313 */ diag::warn_infinite_recursive_function, -1,
- /* DiagArray315 */ diag::warn_initializer_overrides, diag::warn_subobject_initializer_overrides, -1,
- /* DiagArray316 */ diag::ext_out_of_line_qualified_id_type_names_constructor, -1,
- /* DiagArray318 */ diag::warn_fe_inline_asm, -1,
- /* DiagArray319 */ diag::ext_operator_new_delete_declared_inline, -1,
- /* DiagArray320 */ diag::warn_explicit_instantiation_after_specialization, -1,
- /* DiagArray321 */ diag::ext_typecheck_convert_int_pointer, diag::ext_typecheck_convert_pointer_int, -1,
- /* DiagArray323 */ diag::warn_int_to_pointer_cast, -1,
- /* DiagArray324 */ diag::warn_int_to_void_pointer_cast, -1,
- /* DiagArray325 */ diag::warn_integer_constant_overflow, -1,
- /* DiagArray326 */ diag::warn_drv_object_size_disabled_O0, diag::warn_drv_optimization_value, -1,
- /* DiagArray327 */ diag::ext_constexpr_function_never_constant_expr, -1,
- /* DiagArray328 */ diag::warn_iboutlet_object_type, diag::warn_iboutletcollection_property_assign, -1,
- /* DiagArray329 */ diag::warn_invalid_initializer_from_system_header, -1,
- /* DiagArray330 */ diag::warn_invalid_ios_deployment_target, -1,
- /* DiagArray331 */ diag::warn_falloff_noreturn_function, diag::warn_noreturn_function_has_return_expr, -1,
- /* DiagArray332 */ diag::ext_offsetof_non_pod_type, diag::ext_offsetof_non_standardlayout_type, -1,
- /* DiagArray333 */ diag::warn_drv_ps4_sdk_dir, diag::warn_drv_unable_to_find_directory_expected, -1,
- /* DiagArray334 */ diag::ext_partial_spec_not_more_specialized_than_primary, -1,
- /* DiagArray336 */ diag::ext_empty_character, diag::ext_unterminated_char_or_string, -1,
- /* DiagArray337 */ diag::warn_bad_character_encoding, diag::warn_bad_string_encoding, -1,
- /* DiagArray338 */ diag::ext_pp_bad_paste_ms, -1,
- /* DiagArray339 */ diag::warn_jump_out_of_seh_finally, -1,
- /* DiagArray340 */ diag::ext_keyword_as_ident, -1,
- /* DiagArray341 */ diag::warn_pp_macro_hides_keyword, -1,
- /* DiagArray342 */ diag::ext_param_promoted_not_compatible_with_prototype, -1,
- /* DiagArray343 */ diag::ext_token_used, -1,
- /* DiagArray344 */ diag::warn_parameter_size, diag::warn_return_value_size, -1,
- /* DiagArray346 */ diag::warn_impcast_literal_float_to_integer, diag::warn_impcast_literal_float_to_integer_out_of_range, -1,
- /* DiagArray347 */ diag::warn_float_overflow, diag::warn_float_underflow, -1,
- /* DiagArray348 */ diag::ext_template_arg_local_type, -1,
- /* DiagArray349 */ diag::warn_logical_not_on_lhs_of_check, -1,
- /* DiagArray350 */ diag::warn_logical_and_in_logical_or, -1,
- /* DiagArray351 */ diag::ext_c99_longlong, -1,
- /* DiagArray353 */ diag::ext_pp_macro_redef, -1,
- /* DiagArray354 */ diag::ext_main_used, diag::ext_noreturn_main, diag::ext_variadic_main, diag::warn_main_one_arg, diag::warn_main_redefined, diag::warn_main_returns_bool_literal, diag::warn_static_main, -1,
- /* DiagArray355 */ diag::ext_main_returns_nonint, -1,
- /* DiagArray356 */ diag::warn_has_warning_invalid_option, -1,
- /* DiagArray357 */ diag::ext_many_braces_around_scalar_init, -1,
- /* DiagArray358 */ diag::warn_max_unsigned_zero, -1,
- /* DiagArray359 */ diag::warn_suspicious_sizeof_memset, -1,
- /* DiagArray360 */ diag::warn_memsize_comparison, -1,
- /* DiagArray361 */ diag::warn_non_contravariant_param_types, diag::warn_non_covariant_ret_types, -1,
- /* DiagArray363 */ diag::ext_anonymous_record_with_type, diag::ext_ms_anonymous_record, -1,
- /* DiagArray364 */ diag::ext_ms_cast_fn_obj, diag::ext_ms_impcast_fn_obj, -1,
- /* DiagArray365 */ diag::ext_charize_microsoft, -1,
- /* DiagArray366 */ diag::ext_comment_paste_microsoft, -1,
- /* DiagArray367 */ diag::ext_default_init_const, -1,
- /* DiagArray368 */ diag::ext_pp_operator_used_as_macro_name, -1,
- /* DiagArray369 */ diag::ext_param_default_argument_redefinition, -1,
- /* DiagArray370 */ diag::ext_ctrl_z_eof_microsoft, -1,
- /* DiagArray371 */ diag::ext_ms_forward_ref_enum, -1,
- /* DiagArray372 */ diag::ext_enumerator_too_large, -1,
- /* DiagArray373 */ diag::ext_ellipsis_exception_spec, diag::ext_incomplete_in_exception_spec, diag::ext_mismatched_exception_spec, diag::ext_mismatched_exception_spec_explicit_instantiation, diag::ext_ms_missing_exception_specification, diag::ext_override_exception_spec, -1,
- /* DiagArray374 */ diag::warn_microsoft_dependent_exists, -1,
- /* DiagArray375 */ diag::ext_ms_explicit_constructor_call, -1,
- /* DiagArray376 */ diag::warn_member_extra_qualification, -1,
- /* DiagArray377 */ diag::ext_ms_c_enum_fixed_underlying_type, -1,
- /* DiagArray378 */ diag::ext_flexible_array_empty_aggregate_ms, diag::ext_flexible_array_union_ms, -1,
- /* DiagArray379 */ diag::ext_goto_into_protected_scope, -1,
- /* DiagArray380 */ diag::ext_ms_ambiguous_direct_base, -1,
- /* DiagArray381 */ diag::ext_pp_include_search_ms, -1,
- /* DiagArray382 */ diag::ext_mutable_reference, -1,
- /* DiagArray383 */ diag::ext_pure_function_definition, -1,
- /* DiagArray384 */ diag::ext_static_non_static, -1,
- /* DiagArray385 */ diag::ext_ms_sealed_keyword, -1,
- /* DiagArray386 */ diag::ext_explicit_instantiation_duplicate, diag::ext_found_via_dependent_bases_lookup, diag::ext_ms_delayed_template_argument, diag::ext_ms_deref_template_argument, diag::ext_ms_template_spec_redecl_out_of_scope, diag::ext_ms_template_type_arg_missing_typename, diag::ext_undeclared_unqual_id_with_dependent_base, -1,
- /* DiagArray387 */ diag::ext_union_member_of_reference_type, -1,
- /* DiagArray388 */ diag::ext_friend_tag_redecl_outside_namespace, -1,
- /* DiagArray389 */ diag::ext_ms_using_declaration_inaccessible, -1,
- /* DiagArray390 */ diag::ext_pseudo_dtor_on_void, -1,
- /* DiagArray391 */ diag::warn_mismatched_delete_new, -1,
- /* DiagArray392 */ diag::warn_conflicting_param_types, -1,
- /* DiagArray393 */ diag::warn_conflicting_ret_types, -1,
- /* DiagArray394 */ diag::warn_struct_class_previous_tag_mismatch, diag::warn_struct_class_tag_mismatch, -1,
- /* DiagArray395 */ diag::warn_missing_braces, -1,
- /* DiagArray396 */ diag::ext_no_declarators, diag::ext_standalone_specifier, diag::ext_typedef_without_a_name, diag::warn_standalone_specifier, -1,
- /* DiagArray397 */ diag::ext_missing_exception_specification, -1,
- /* DiagArray398 */ diag::warn_missing_field_initializers, -1,
- /* DiagArray401 */ diag::warn_missing_method_return_type, -1,
- /* DiagArray402 */ diag::warn_overriding_method_missing_noescape, -1,
- /* DiagArray403 */ diag::warn_suggest_noreturn_block, diag::warn_suggest_noreturn_function, -1,
- /* DiagArray404 */ diag::warn_cconv_knr, -1,
- /* DiagArray405 */ diag::warn_missing_prototype, -1,
- /* DiagArray406 */ diag::warn_missing_selector_name, -1,
- /* DiagArray407 */ diag::warn_missing_sysroot, -1,
- /* DiagArray408 */ diag::warn_missing_variable_declarations, -1,
- /* DiagArray409 */ diag::remark_module_build, diag::remark_module_build_done, diag::remark_module_lock_failure, diag::remark_module_lock_timeout, -1,
- /* DiagArray410 */ diag::warn_module_conflict, diag::warn_module_system_bit_conflict, -1,
- /* DiagArray411 */ diag::warn_module_config_mismatch, -1,
- /* DiagArray412 */ diag::warn_duplicate_module_file_extension, -1,
- /* DiagArray413 */ diag::ext_module_import_in_extern_c, -1,
- /* DiagArray414 */ diag::ext_equivalent_internal_linkage_decl_in_modules, -1,
- /* DiagArray415 */ diag::ext_module_import_not_at_top_level_noop, -1,
- /* DiagArray419 */ diag::warn_drv_msvc_not_found, -1,
- /* DiagArray420 */ diag::ext_multichar_character_literal, -1,
- /* DiagArray421 */ diag::warn_vbase_moved_multiple_times, -1,
- /* DiagArray423 */ diag::ext_anonymous_record_with_anonymous_type, -1,
- /* DiagArray425 */ diag::warn_operator_new_returns_null, -1,
- /* DiagArray426 */ diag::ext_no_newline_eof, diag::warn_no_newline_eof, -1,
- /* DiagArray429 */ diag::warn_non_literal_null_pointer, -1,
- /* DiagArray430 */ diag::warn_non_modular_include_in_framework_module, -1,
- /* DiagArray431 */ diag::warn_non_modular_include_in_module, -1,
- /* DiagArray432 */ diag::warn_cannot_pass_non_pod_arg_to_vararg, diag::warn_non_pod_vararg_with_format_string, diag::warn_second_parameter_to_va_arg_not_pod, diag::warn_second_parameter_to_va_arg_ownership_qualified, -1,
- /* DiagArray433 */ diag::warn_non_virtual_dtor, -1,
- /* DiagArray434 */ diag::warn_null_arg, diag::warn_null_ret, -1,
- /* DiagArray436 */ diag::pp_nonportable_path, -1,
- /* DiagArray437 */ diag::pp_nonportable_system_path, -1,
- /* DiagArray438 */ diag::warn_neon_vector_initializer_non_portable, -1,
- /* DiagArray439 */ diag::warn_cstruct_memaccess, -1,
- /* DiagArray440 */ diag::warn_nsconsumed_attribute_mismatch, -1,
- /* DiagArray441 */ diag::warn_nsreturns_retained_attribute_mismatch, -1,
- /* DiagArray442 */ diag::warn_null_in_arithmetic_operation, diag::warn_null_in_comparison_operation, -1,
- /* DiagArray443 */ diag::null_in_char_or_string, diag::null_in_file, -1,
- /* DiagArray444 */ diag::warn_impcast_null_pointer_to_integer, -1,
- /* DiagArray445 */ diag::warn_binding_null_to_reference, diag::warn_indirection_through_null, -1,
- /* DiagArray446 */ diag::warn_gnu_null_ptr_arith, diag::warn_pointer_arith_null_ptr, -1,
- /* DiagArray447 */ diag::warn_conflicting_nullability_attr_overriding_param_types, diag::warn_conflicting_nullability_attr_overriding_ret_types, diag::warn_mismatched_nullability_attr, diag::warn_null_resettable_setter, diag::warn_nullability_duplicate, -1,
- /* DiagArray448 */ diag::warn_nullability_missing, -1,
- /* DiagArray449 */ diag::warn_nullability_missing_array, -1,
- /* DiagArray450 */ diag::warn_nullability_declspec, -1,
- /* DiagArray451 */ diag::ext_nullability, -1,
- /* DiagArray452 */ diag::warn_nullability_inferred_on_nested_type, -1,
- /* DiagArray453 */ diag::warn_nullability_lost, -1,
- /* DiagArray454 */ diag::warn_autosynthesis_property_ivar_match, -1,
- /* DiagArray455 */ diag::warn_objc_circular_container, -1,
- /* DiagArray457 */ diag::warn_objc_designated_init_missing_super_call, diag::warn_objc_designated_init_non_designated_init_call, diag::warn_objc_designated_init_non_super_designated_init_call, diag::warn_objc_implementation_missing_designated_init_override, diag::warn_objc_secondary_init_missing_init_call, diag::warn_objc_secondary_init_super_init_call, -1,
- /* DiagArray458 */ diag::warn_superclass_variable_sized_type_not_at_end, diag::warn_variable_sized_ivar_visibility, -1,
- /* DiagArray459 */ diag::warn_forward_class_redefinition, -1,
- /* DiagArray460 */ diag::warn_ivars_in_interface, -1,
- /* DiagArray461 */ diag::warn_objc_literal_comparison, -1,
- /* DiagArray462 */ diag::warn_impcast_objective_c_literal_to_bool, diag::warn_objc_collection_literal_element, -1,
- /* DiagArray463 */ diag::warn_pp_objc_macro_redef_ignored, -1,
- /* DiagArray464 */ diag::warn_messaging_unqualified_id, -1,
- /* DiagArray465 */ diag::warn_class_method_not_found, diag::warn_class_method_not_found_with_typo, diag::warn_inst_method_not_found, diag::warn_instance_method_not_found_with_typo, diag::warn_instance_method_on_class_found, diag::warn_root_inst_method_not_found, -1,
- /* DiagArray466 */ diag::warn_missing_explicit_synthesis, -1,
- /* DiagArray467 */ diag::warn_objc_missing_super_call, -1,
- /* DiagArray468 */ diag::warn_multiple_method_decl, -1,
- /* DiagArray469 */ diag::warn_objc_property_retain_of_block, -1,
- /* DiagArray470 */ diag::warn_objc_pointer_cxx_catch_fragile, -1,
- /* DiagArray471 */ diag::warn_objc_property_assign_on_object, -1,
- /* DiagArray472 */ diag::warn_impl_required_for_class_property, diag::warn_impl_required_in_category_for_class_property, diag::warn_setter_getter_impl_required, diag::warn_setter_getter_impl_required_in_category, -1,
- /* DiagArray473 */ diag::warn_property_implicitly_mismatched, -1,
- /* DiagArray474 */ diag::warn_cocoa_naming_owned_rule, -1,
- /* DiagArray475 */ diag::warn_objc_property_default_assign_on_object, diag::warn_objc_property_no_assignment_attribute, -1,
- /* DiagArray476 */ diag::warn_autosynthesis_property_in_superclass, diag::warn_no_autosynthesis_property, diag::warn_no_autosynthesis_shared_ivar_property, -1,
- /* DiagArray477 */ diag::warn_category_method_impl_match, -1,
- /* DiagArray478 */ diag::warn_auto_synthesizing_protocol_property, -1,
- /* DiagArray479 */ diag::warn_objc_redundant_qualified_class_type, -1,
- /* DiagArray480 */ diag::warn_objc_readonly_property_has_setter, -1,
- /* DiagArray482 */ diag::warn_objc_redundant_literal_use, -1,
- /* DiagArray483 */ diag::warn_objc_root_class_missing, -1,
- /* DiagArray484 */ diag::warn_objc_string_literal_comparison, -1,
- /* DiagArray485 */ diag::warn_concatenated_nsarray_literal, -1,
- /* DiagArray486 */ diag::warn_objc_unsafe_perform_selector, -1,
- /* DiagArray487 */ diag::warn_odr_tag_type_inconsistent, -1,
- /* DiagArray488 */ diag::warn_old_style_cast, -1,
- /* DiagArray490 */ diag::ext_opencl_ext_vector_type_rgba_selector, -1,
- /* DiagArray491 */ diag::warn_omp_alignment_not_power_of_two, diag::warn_omp_linear_step_zero, -1,
- /* DiagArray492 */ diag::ext_omp_loop_not_canonical_init, diag::warn_omp_loop_64_bit_var, -1,
- /* DiagArray493 */ diag::warn_drv_omp_offload_target_duplicate, diag::warn_drv_omp_offload_target_missingbcruntime, diag::warn_omp_non_trivial_type_mapped, diag::warn_omp_not_in_target_context, -1,
- /* DiagArray494 */ diag::warn_drv_fine_grained_bitfield_accesses_ignored, diag::warn_drv_moutline_unsupported_opt, diag::warn_drv_ps4_force_pic, diag::warn_drv_unsupported_longcalls, diag::warn_drv_unsupported_pic_with_mabicalls, diag::warn_drv_vectorize_needs_hvx, -1,
- /* DiagArray495 */ diag::ext_typecheck_ordered_comparison_of_function_pointers, -1,
- /* DiagArray496 */ diag::ext_out_of_line_declaration, -1,
- /* DiagArray497 */ diag::ext_use_out_of_scope_declaration, -1,
- /* DiagArray498 */ diag::warn_overaligned_type, -1,
- /* DiagArray500 */ diag::ext_string_too_long, -1,
- /* DiagArray501 */ diag::warn_overloaded_shift_in_comparison, -1,
- /* DiagArray502 */ diag::warn_overloaded_virtual, -1,
- /* DiagArray503 */ diag::warn_fe_override_module, -1,
- /* DiagArray504 */ diag::warn_conflicting_overriding_param_modifiers, diag::warn_conflicting_overriding_param_types, diag::warn_conflicting_overriding_ret_type_modifiers, diag::warn_conflicting_overriding_ret_types, diag::warn_conflicting_overriding_variadic, diag::warn_non_contravariant_overriding_param_types, diag::warn_non_covariant_overriding_ret_types, -1,
- /* DiagArray505 */ diag::warn_drv_overriding_flag_option, -1,
- /* DiagArray506 */ diag::warn_unnecessary_packed, -1,
- /* DiagArray507 */ diag::warn_padded_struct_anon_field, diag::warn_padded_struct_field, diag::warn_padded_struct_size, -1,
- /* DiagArray508 */ diag::warn_condition_is_assignment, diag::warn_precedence_bitwise_rel, diag::warn_precedence_conditional, -1,
- /* DiagArray509 */ diag::warn_equality_with_extra_parens, -1,
- /* DiagArray511 */ diag::remark_fe_backend_optimization_remark, -1,
- /* DiagArray512 */ diag::remark_fe_backend_optimization_remark_analysis, diag::remark_fe_backend_optimization_remark_analysis_aliasing, diag::remark_fe_backend_optimization_remark_analysis_fpcommute, -1,
- /* DiagArray513 */ diag::warn_fe_backend_optimization_failure, -1,
- /* DiagArray514 */ diag::remark_fe_backend_optimization_remark_missed, -1,
- /* DiagArray515 */ diag::warn_module_uses_date_time, -1,
- /* DiagArray516 */ diag::ext_aggregate_init_not_constant, diag::ext_anonymous_record_with_type, diag::ext_anonymous_struct_union_qualified, diag::ext_array_size_conversion, diag::ext_auto_new_list_init, diag::ext_c99_array_usage, diag::ext_c99_compound_literal, diag::ext_c99_flexible_array_member, diag::ext_c99_variable_decl_in_for_loop, diag::ext_cast_fn_obj, diag::ext_clang_diagnose_if, diag::ext_clang_enable_if, diag::ext_cxx11_enum_fixed_underlying_type, diag::ext_cxx14_attr, diag::ext_cxx17_attr, diag::ext_designated_init, diag::ext_duplicate_declspec, diag::ext_ellipsis_exception_spec, diag::ext_empty_fnmacro_arg, diag::ext_enum_value_not_int, diag::ext_enumerator_list_comma_c, diag::ext_enumerator_list_comma_cxx, diag::ext_explicit_instantiation_without_qualified_id, diag::ext_extern_template, diag::ext_extra_semi, diag::ext_forward_ref_enum, diag::ext_freestanding_complex, diag::ext_gnu_array_range, diag::ext_gnu_ptr_func_arith, diag::ext_gnu_subscript_void_type, diag::ext_gnu_void_ptr, diag::ext_hex_constant_invalid, diag::ext_hex_literal_invalid, diag::ext_ident_list_in_param, diag::ext_integer_complement_complex, diag::ext_integer_increment_complex, diag::ext_internal_in_extern_inline_quiet, diag::ext_invalid_sign_spec, diag::ext_line_comment, diag::ext_main_used, diag::ext_multi_line_line_comment, diag::ext_named_variadic_macro, diag::ext_no_newline_eof, diag::ext_nonstandard_escape, diag::ext_ns_enum_attribute, diag::ext_param_not_declared, diag::ext_pointer_to_const_ref_member_on_rvalue, diag::ext_pp_bad_vaargs_use, diag::ext_pp_comma_expr, diag::ext_pp_ident_directive, diag::ext_pp_line_too_big, diag::ext_pp_warning_directive, diag::ext_return_has_void_expr, diag::ext_rvalue_to_reference_access_ctor, diag::ext_rvalue_to_reference_temp_copy_no_viable, diag::ext_sizeof_alignof_function_type, diag::ext_sizeof_alignof_void_type, diag::ext_subscript_non_lvalue, diag::ext_thread_before, diag::ext_typecheck_addrof_void, diag::ext_typecheck_cast_nonscalar, diag::ext_typecheck_comparison_of_fptr_to_void, diag::ext_typecheck_cond_one_void, diag::ext_typecheck_convert_pointer_void_func, diag::ext_typecheck_ordered_comparison_of_pointer_and_zero, diag::ext_variadic_macro, diag::warn_defined_in_function_type_macro, diag::warn_format_conversion_argument_type_mismatch_pedantic, diag::warn_illegal_constant_array_size, diag::warn_kern_is_method, -1,
- /* DiagArray517 */ diag::warn_pragma_extension_is_core, -1,
- /* DiagArray518 */ diag::warn_pessimizing_move_on_initialization, diag::warn_pessimizing_move_on_return, -1,
- /* DiagArray519 */ diag::ext_gnu_ptr_func_arith, diag::ext_gnu_subscript_void_type, diag::ext_gnu_void_ptr, diag::ext_sizeof_alignof_function_type, diag::ext_sizeof_alignof_void_type, diag::warn_sub_ptr_zero_size_types, -1,
- /* DiagArray520 */ diag::warn_cast_nonnull_to_bool, diag::warn_impcast_pointer_to_bool, -1,
- /* DiagArray521 */ diag::ext_typecheck_convert_incompatible_pointer_sign, -1,
- /* DiagArray523 */ diag::ext_typecheck_cond_incompatible_pointers, -1,
- /* DiagArray524 */ diag::warn_side_effects_typeid, -1,
- /* DiagArray525 */ diag::warn_pragma_attribute_unused, -1,
- /* DiagArray526 */ diag::pp_pragma_once_in_main_file, -1,
- /* DiagArray527 */ diag::warn_pragma_pack_modified_after_include, diag::warn_pragma_pack_no_pop_eof, -1,
- /* DiagArray528 */ diag::warn_pragma_pack_non_default_at_include, -1,
- /* DiagArray529 */ diag::pp_pragma_sysheader_in_main_file, -1,
- /* DiagArray530 */ diag::warn_redefine_extname_not_applied, -1,
- /* DiagArray531 */ diag::ext_predef_outside_function, -1,
- /* DiagArray532 */ diag::warn_private_extern, -1,
- /* DiagArray533 */ diag::warn_use_of_private_header_outside_module, -1,
- /* DiagArray534 */ diag::warn_mmap_mismatched_private_module_name, diag::warn_mmap_mismatched_private_submodule, diag::warn_mmap_redundant_export_as, diag::warn_no_priv_submodule_use_toplevel, -1,
- /* DiagArray535 */ diag::warn_profile_data_missing, -1,
- /* DiagArray536 */ diag::warn_profile_data_out_of_date, -1,
- /* DiagArray537 */ diag::warn_profile_data_unprofiled, -1,
- /* DiagArray538 */ diag::warn_property_access_suggest, -1,
- /* DiagArray539 */ diag::warn_property_attr_mismatch, diag::warn_property_attribute, diag::warn_property_redecl_getter_mismatch, diag::warn_readonly_property, -1,
- /* DiagArray540 */ diag::warn_unimplemented_protocol_method, -1,
- /* DiagArray541 */ diag::warn_protocol_property_mismatch, -1,
- /* DiagArray542 */ diag::err_func_returning_qualified_void, -1,
- /* DiagArray543 */ diag::warn_quoted_include_in_framework_header, -1,
- /* DiagArray544 */ diag::warn_for_range_const_reference_copy, diag::warn_for_range_copy, diag::warn_for_range_variable_always_copy, -1,
- /* DiagArray545 */ diag::warn_auto_readonly_iboutlet_property, -1,
- /* DiagArray546 */ diag::warn_bad_receiver_type, -1,
- /* DiagArray547 */ diag::warn_receiver_forward_class, diag::warn_receiver_forward_instance, -1,
- /* DiagArray548 */ diag::ext_member_redeclared, -1,
- /* DiagArray550 */ diag::warn_redundant_move_on_return, -1,
- /* DiagArray551 */ diag::warn_redundant_parens_around_declarator, -1,
- /* DiagArray552 */ diag::ext_register_storage_class, -1,
- /* DiagArray553 */ diag::warn_reinterpret_different_from_static, -1,
- /* DiagArray554 */ diag::remark_fe_backend_plugin, -1,
- /* DiagArray555 */ diag::warn_initializer_out_of_order, -1,
- /* DiagArray556 */ diag::warn_objc_requires_super_protocol, -1,
- /* DiagArray557 */ diag::warn_pp_macro_is_reserved_id, -1,
- /* DiagArray558 */ diag::ext_ms_reserved_user_defined_literal, diag::ext_reserved_user_defined_literal, -1,
- /* DiagArray559 */ diag::ext_retained_language_linkage, -1,
- /* DiagArray560 */ diag::warn_ret_addr_label, diag::warn_ret_local_temp_addr_ref, diag::warn_ret_stack_addr_ref, -1,
- /* DiagArray561 */ diag::warn_return_std_move, -1,
- /* DiagArray562 */ diag::warn_return_std_move_in_cxx11, -1,
- /* DiagArray563 */ diag::ext_return_has_expr, diag::ext_return_missing_expr, diag::warn_falloff_nonvoid_coroutine, diag::warn_falloff_nonvoid_function, diag::warn_falloff_nonvoid_lambda, diag::warn_maybe_falloff_nonvoid_coroutine, diag::warn_maybe_falloff_nonvoid_function, diag::warn_maybe_falloff_nonvoid_lambda, diag::warn_return_missing_expr, -1,
- /* DiagArray564 */ diag::warn_return_value_udt, diag::warn_return_value_udt_incomplete, -1,
- /* DiagArray565 */ diag::remark_sanitize_address_insert_extra_padding_accepted, diag::remark_sanitize_address_insert_extra_padding_rejected, -1,
- /* DiagArray566 */ diag::warn_attribute_section_on_redeclaration, diag::warn_duplicate_codeseg_attribute, diag::warn_mismatched_section, -1,
- /* DiagArray567 */ diag::warn_unimplemented_selector, -1,
- /* DiagArray568 */ diag::warn_multiple_selectors, -1,
- /* DiagArray569 */ diag::warn_self_assignment_builtin, -1,
- /* DiagArray570 */ diag::warn_identity_field_assign, -1,
- /* DiagArray571 */ diag::warn_self_assignment_overloaded, -1,
- /* DiagArray572 */ diag::warn_self_move, -1,
- /* DiagArray573 */ diag::warn_semicolon_before_method_body, -1,
- /* DiagArray574 */ diag::warn_missing_sentinel, diag::warn_not_enough_argument, -1,
- /* DiagArray576 */ diag::warn_fe_serialized_diag_failure, diag::warn_fe_serialized_diag_merge_failure, -1,
- /* DiagArray577 */ diag::warn_decl_shadow, -1,
- /* DiagArray579 */ diag::warn_shadow_field, -1,
- /* DiagArray580 */ diag::warn_ctor_parm_shadows_field, -1,
- /* DiagArray581 */ diag::warn_modifying_shadowing_decl, -1,
- /* DiagArray582 */ diag::warn_ivar_use_hidden, -1,
- /* DiagArray583 */ diag::warn_decl_shadow_uncaptured_local, -1,
- /* DiagArray584 */ diag::warn_shift_negative, -1,
- /* DiagArray585 */ diag::warn_shift_gt_typewidth, -1,
- /* DiagArray586 */ diag::warn_shift_lhs_negative, -1,
- /* DiagArray587 */ diag::warn_addition_in_bitshift, -1,
- /* DiagArray588 */ diag::warn_shift_result_gt_typewidth, -1,
- /* DiagArray589 */ diag::warn_shift_result_sets_sign_bit, -1,
- /* DiagArray590 */ diag::warn_impcast_integer_64_32, -1,
- /* DiagArray591 */ diag::warn_mixed_sign_comparison, -1,
- /* DiagArray592 */ diag::warn_impcast_integer_sign, diag::warn_impcast_integer_sign_conditional, diag::warn_impcast_nonnegative_result, -1,
- /* DiagArray594 */ diag::warn_no_underlying_type_specified_for_enum_bitfield, -1,
- /* DiagArray595 */ diag::warn_sizeof_array_param, -1,
- /* DiagArray596 */ diag::warn_sizeof_array_decay, -1,
- /* DiagArray597 */ diag::warn_sizeof_pointer_expr_memaccess, diag::warn_sizeof_pointer_type_memaccess, -1,
- /* DiagArray598 */ diag::warn_slash_u_filename, -1,
- /* DiagArray599 */ diag::warn_sometimes_uninit_var, -1,
- /* DiagArray600 */ diag::warn_omp_nesting_simd, diag::warn_pragma_omp_ignored, -1,
- /* DiagArray601 */ diag::warn_sampler_initializer_invalid_bits, -1,
- /* DiagArray603 */ diag::ext_in_class_initializer_float_type_cxx11, -1,
- /* DiagArray604 */ diag::ext_internal_in_extern_inline, diag::ext_internal_in_extern_inline_quiet, -1,
- /* DiagArray605 */ diag::warn_static_inline_explicit_inst_ignored, -1,
- /* DiagArray606 */ diag::warn_static_local_in_extern_inline, -1,
- /* DiagArray607 */ diag::warn_static_self_reference_in_init, -1,
- /* DiagArray608 */ diag::warn_stdlibcxx_not_found, -1,
- /* DiagArray620 */ diag::warn_strict_prototypes, -1,
- /* DiagArray621 */ diag::warn_strict_multiple_method_decl, -1,
- /* DiagArray622 */ diag::warn_stringcompare, -1,
- /* DiagArray623 */ diag::warn_impcast_string_literal_to_bool, -1,
- /* DiagArray624 */ diag::warn_string_plus_char, -1,
- /* DiagArray625 */ diag::warn_string_plus_int, -1,
- /* DiagArray626 */ diag::warn_strlcpycat_wrong_size, -1,
- /* DiagArray627 */ diag::warn_strncat_large_size, diag::warn_strncat_src_size, diag::warn_strncat_wrong_size, -1,
- /* DiagArray628 */ diag::ext_typecheck_base_super, -1,
- /* DiagArray629 */ diag::warn_suspicious_bzero_size, -1,
- /* DiagArray631 */ diag::warn_case_value_overflow, diag::warn_missing_case, diag::warn_not_in_enum, -1,
- /* DiagArray632 */ diag::warn_bool_switch_condition, -1,
- /* DiagArray634 */ diag::warn_def_missing_case, -1,
- /* DiagArray635 */ diag::warn_sync_fetch_and_nand_semantics_change, -1,
- /* DiagArray637 */ diag::warn_comparison_always, diag::warn_comparison_bitwise_always, -1,
- /* DiagArray638 */ diag::warn_tautological_bool_compare, -1,
- /* DiagArray640 */ diag::warn_out_of_range_compare, -1,
- /* DiagArray641 */ diag::warn_tautological_overlap_comparison, -1,
- /* DiagArray642 */ diag::warn_nonnull_expr_compare, diag::warn_null_pointer_compare, -1,
- /* DiagArray643 */ diag::warn_tautological_constant_compare, -1,
- /* DiagArray644 */ diag::warn_address_of_reference_null_compare, diag::warn_this_null_compare, -1,
- /* DiagArray645 */ diag::warn_unsigned_enum_always_true_comparison, -1,
- /* DiagArray646 */ diag::warn_unsigned_always_true_comparison, -1,
- /* DiagArray647 */ diag::ext_typecheck_decl_incomplete_type, -1,
- /* DiagArray649 */ diag::warn_acquired_before, diag::warn_acquired_before_after_cycle, diag::warn_cannot_resolve_lock, diag::warn_double_lock, diag::warn_expecting_lock_held_on_loop, diag::warn_expecting_locked, diag::warn_fun_excludes_mutex, diag::warn_fun_requires_lock, diag::warn_lock_exclusive_and_shared, diag::warn_lock_some_predecessors, diag::warn_no_unlock, diag::warn_unlock_but_no_lock, diag::warn_unlock_kind_mismatch, diag::warn_var_deref_requires_any_lock, diag::warn_var_deref_requires_lock, diag::warn_variable_requires_any_lock, diag::warn_variable_requires_lock, -1,
- /* DiagArray650 */ diag::warn_invalid_capability_name, diag::warn_thread_attribute_argument_not_lockable, diag::warn_thread_attribute_decl_not_lockable, diag::warn_thread_attribute_decl_not_pointer, diag::warn_thread_attribute_ignored, diag::warn_thread_attribute_not_on_capability_member, diag::warn_thread_attribute_not_on_non_static_member, -1,
- /* DiagArray651 */ diag::warn_thread_safety_beta, -1,
- /* DiagArray652 */ diag::warn_acquire_requires_negative_cap, -1,
- /* DiagArray653 */ diag::warn_fun_requires_lock_precise, diag::warn_var_deref_requires_lock_precise, diag::warn_variable_requires_lock_precise, -1,
- /* DiagArray654 */ diag::warn_guarded_pass_by_reference, diag::warn_pt_guarded_pass_by_reference, -1,
- /* DiagArray655 */ diag::warn_thread_safety_verbose, -1,
- /* DiagArray656 */ diag::trigraph_converted, diag::trigraph_ends_block_comment, diag::trigraph_ignored, diag::trigraph_ignored_block_comment, -1,
- /* DiagArray658 */ diag::warn_type_safety_null_pointer_required, diag::warn_type_safety_type_mismatch, diag::warn_type_tag_for_datatype_wrong_kind, -1,
- /* DiagArray659 */ diag::ext_redefinition_of_typedef, -1,
- /* DiagArray660 */ diag::ext_typename_missing, -1,
- /* DiagArray661 */ diag::warn_fe_unable_to_open_stats_file, -1,
- /* DiagArray662 */ diag::warn_unavailable_fwdclass_message, -1,
- /* DiagArray663 */ diag::warn_undeclared_selector, diag::warn_undeclared_selector_with_typo, -1,
- /* DiagArray664 */ diag::warn_pp_undef_identifier, -1,
- /* DiagArray665 */ diag::warn_address_of_reference_bool_conversion, diag::warn_this_bool_conversion, -1,
- /* DiagArray666 */ diag::warn_func_template_missing, -1,
- /* DiagArray667 */ diag::warn_undefined_inline, -1,
- /* DiagArray668 */ diag::warn_undefined_internal, -1,
- /* DiagArray669 */ diag::ext_undefined_internal_type, -1,
- /* DiagArray670 */ diag::warn_pointer_indirection_from_incompatible_type, diag::warn_undefined_reinterpret_cast, -1,
- /* DiagArray671 */ diag::warn_var_template_missing, -1,
- /* DiagArray672 */ diag::warn_side_effects_unevaluated_context, -1,
- /* DiagArray673 */ diag::warn_unguarded_availability, -1,
- /* DiagArray674 */ diag::warn_unguarded_availability_new, -1,
- /* DiagArray675 */ diag::warn_ucn_escape_incomplete, diag::warn_ucn_escape_no_digits, diag::warn_ucn_escape_surrogate, diag::warn_ucn_not_valid_in_c89, diag::warn_ucn_not_valid_in_c89_literal, -1,
- /* DiagArray676 */ diag::warn_utf8_symbol_homoglyph, -1,
- /* DiagArray677 */ diag::ext_unicode_whitespace, -1,
- /* DiagArray678 */ diag::warn_utf8_symbol_zero_width, -1,
- /* DiagArray679 */ diag::warn_base_class_is_uninit, diag::warn_field_is_uninit, diag::warn_reference_field_is_uninit, diag::warn_uninit_byref_blockvar_captured_by_block, diag::warn_uninit_self_reference_in_init, diag::warn_uninit_self_reference_in_reference_init, diag::warn_uninit_var, -1,
- /* DiagArray680 */ diag::warn_drv_unknown_argument_clang_cl, diag::warn_drv_unknown_argument_clang_cl_with_suggestion, -1,
- /* DiagArray681 */ diag::warn_unknown_attribute_ignored, -1,
- /* DiagArray682 */ diag::ext_unknown_escape, -1,
- /* DiagArray683 */ diag::ext_on_off_switch_syntax, diag::ext_pragma_syntax_eod, diag::ext_stdc_pragma_ignored, diag::warn_pragma_diagnostic_cannot_pop, diag::warn_pragma_diagnostic_invalid, diag::warn_pragma_diagnostic_invalid_option, diag::warn_pragma_diagnostic_invalid_token, diag::warn_pragma_ignored, diag::warn_pragma_include_alias_expected, diag::warn_pragma_include_alias_expected_filename, diag::warn_pragma_include_alias_mismatch_angle, diag::warn_pragma_include_alias_mismatch_quote, diag::warn_pragma_warning_expected, diag::warn_pragma_warning_expected_number, diag::warn_pragma_warning_push_level, diag::warn_pragma_warning_spec_invalid, diag::warn_stdc_fenv_access_not_supported, -1,
- /* DiagArray684 */ diag::warn_unknown_sanitizer_ignored, -1,
- /* DiagArray685 */ diag::warn_pragma_diagnostic_unknown_warning, diag::warn_unknown_diag_option, diag::warn_unknown_warning_specifier, -1,
- /* DiagArray686 */ diag::ext_template_arg_unnamed_type, -1,
- /* DiagArray687 */ diag::warn_unneeded_internal_decl, diag::warn_unneeded_static_internal_decl, -1,
- /* DiagArray688 */ diag::warn_unneeded_member_function, -1,
- /* DiagArray689 */ diag::warn_unreachable, -1,
- /* DiagArray691 */ diag::warn_unreachable_break, -1,
- /* DiagArray692 */ diag::warn_unreachable_loop_increment, -1,
- /* DiagArray693 */ diag::warn_unreachable_return, -1,
- /* DiagArray694 */ diag::warn_unsequenced_mod_mod, diag::warn_unsequenced_mod_use, -1,
- /* DiagArray695 */ diag::warn_target_unsupported_abs2008, diag::warn_target_unsupported_abslegacy, -1,
- /* DiagArray696 */ diag::warn_at_available_unchecked_use, -1,
- /* DiagArray697 */ diag::warn_target_unsupported_compact_branches, -1,
- /* DiagArray698 */ diag::warn_attribute_dll_instantiated_base_class, -1,
- /* DiagArray699 */ diag::warn_template_qualified_friend_ignored, diag::warn_template_qualified_friend_unsupported, -1,
- /* DiagArray700 */ diag::warn_drv_unsupported_gpopt, -1,
- /* DiagArray701 */ diag::warn_target_unsupported_nan2008, diag::warn_target_unsupported_nanlegacy, -1,
- /* DiagArray702 */ diag::warn_drv_unsupported_debug_info_opt_for_target, -1,
- /* DiagArray703 */ diag::warn_attribute_protected_visibility, -1,
- /* DiagArray704 */ diag::ext_partial_specs_not_deducible, -1,
- /* DiagArray707 */ diag::warn_drv_diagnostics_hotness_requires_pgo, diag::warn_drv_empty_joined_argument, diag::warn_drv_input_file_unused, diag::warn_drv_input_file_unused_by_cpp, diag::warn_drv_preprocessed_input_file_unused, diag::warn_drv_unused_argument, diag::warn_ignored_clang_option, -1,
- /* DiagArray708 */ diag::warn_unused_comparison, -1,
- /* DiagArray709 */ diag::warn_unused_const_variable, -1,
- /* DiagArray710 */ diag::warn_unused_exception_param, -1,
- /* DiagArray711 */ diag::warn_unused_function, -1,
- /* DiagArray712 */ diag::warn_unused_property_expr, -1,
- /* DiagArray713 */ diag::warn_unused_label, -1,
- /* DiagArray714 */ diag::warn_unused_lambda_capture, -1,
- /* DiagArray715 */ diag::warn_unused_local_typedef, -1,
- /* DiagArray717 */ diag::pp_macro_not_used, -1,
- /* DiagArray718 */ diag::warn_unused_member_function, -1,
- /* DiagArray719 */ diag::warn_unused_parameter, -1,
- /* DiagArray720 */ diag::warn_unused_private_field, -1,
- /* DiagArray721 */ diag::warn_unused_property_backing_ivar, -1,
- /* DiagArray722 */ diag::warn_unused_result, -1,
- /* DiagArray723 */ diag::warn_unused_template, -1,
- /* DiagArray724 */ diag::warn_unused_call, diag::warn_unused_container_subscript_expr, diag::warn_unused_expr, diag::warn_unused_voidptr, -1,
- /* DiagArray725 */ diag::warn_unused_variable, -1,
- /* DiagArray726 */ diag::warn_unused_volatile, -1,
- /* DiagArray727 */ diag::warn_used_but_marked_unused, -1,
- /* DiagArray728 */ diag::warn_user_literal_reserved, -1,
- /* DiagArray729 */ diag::warn_diagnose_if_succeeded, -1,
- /* DiagArray730 */ diag::warn_second_arg_of_va_start_not_last_named_param, diag::warn_second_parameter_to_va_arg_never_compatible, diag::warn_va_start_type_is_undefined, -1,
- /* DiagArray731 */ diag::ext_named_variadic_macro, diag::ext_pp_bad_vaopt_use, diag::ext_variadic_macro, -1,
- /* DiagArray732 */ diag::warn_typecheck_vector_element_sizes_not_equal, -1,
- /* DiagArray733 */ diag::warn_incompatible_vectors, -1,
- /* DiagArray735 */ diag::warn_empty_parens_are_function_decl, diag::warn_parens_disambiguated_as_function_declaration, diag::warn_parens_disambiguated_as_variable_declaration, -1,
- /* DiagArray736 */ diag::warn_decl_in_param_list, diag::warn_redefinition_in_param_list, -1,
- /* DiagArray737 */ diag::warn_vla_used, -1,
- /* DiagArray738 */ diag::ext_vla, -1,
- /* DiagArray739 */ diag::ext_typecheck_indirection_through_void_pointer, -1,
- /* DiagArray741 */ diag::warn_weak_template_vtable, -1,
- /* DiagArray742 */ diag::warn_weak_vtable, -1,
- /* DiagArray743 */ diag::ext_deprecated_string_literal_conversion, -1,
- /* DiagArray745 */ diag::warn_zero_as_null_pointer_constant, -1,
- /* DiagArray746 */ diag::ext_typecheck_zero_array_size, -1,
+ /* DiagArray115 */ diag::warn_call_to_pure_virtual_member_function_from_ctor_dtor, -1,
+ /* DiagArray116 */ diag::warn_cast_align, -1,
+ /* DiagArray117 */ diag::warn_cast_calling_conv, -1,
+ /* DiagArray118 */ diag::warn_cast_pointer_from_sel, -1,
+ /* DiagArray119 */ diag::warn_cast_qual, diag::warn_cast_qual2, -1,
+ /* DiagArray120 */ diag::ext_bad_cxx_cast_qualifiers_away_incoherent, -1,
+ /* DiagArray122 */ diag::warn_omp_section_is_char, diag::warn_subscript_is_char, -1,
+ /* DiagArray123 */ diag::warn_drv_yc_multiple_inputs_clang_cl, diag::warn_drv_ycyu_different_arg_clang_cl, diag::warn_drv_ycyu_no_fi_arg_clang_cl, diag::warn_pp_hdrstop_filename_ignored, diag::warn_pp_macro_def_mismatch_with_pch, -1,
+ /* DiagArray124 */ diag::warn_pass_class_arg_to_vararg, -1,
+ /* DiagArray125 */ diag::warn_comma_operator, -1,
+ /* DiagArray126 */ diag::escaped_newline_block_comment_end, diag::ext_line_comment, diag::ext_multi_line_line_comment, diag::warn_nested_block_comment, -1,
+ /* DiagArray128 */ diag::ext_typecheck_comparison_of_distinct_pointers, -1,
+ /* DiagArray129 */ diag::ext_complex_component_init, -1,
+ /* DiagArray130 */ diag::ext_typecheck_cond_pointer_integer_mismatch, -1,
+ /* DiagArray131 */ diag::warn_maybe_uninit_var, -1,
+ /* DiagArray132 */ diag::warn_module_config_macro_undef, -1,
+ /* DiagArray133 */ diag::warn_impcast_integer_precision_constant, -1,
+ /* DiagArray134 */ diag::warn_logical_instead_of_bitwise, -1,
+ /* DiagArray135 */ diag::warn_cxx14_compat_constexpr_not_const, -1,
+ /* DiagArray136 */ diag::warn_attr_on_unconsumable_class, diag::warn_loop_state_mismatch, diag::warn_param_return_typestate_mismatch, diag::warn_param_typestate_mismatch, diag::warn_return_typestate_for_unconsumable_type, diag::warn_return_typestate_mismatch, diag::warn_use_in_invalid_state, diag::warn_use_of_temp_in_invalid_state, -1,
+ /* DiagArray137 */ diag::warn_impcast_complex_scalar, diag::warn_impcast_vector_scalar, diag::warn_opencl_generic_address_space_arg, diag::warn_template_arg_negative, diag::warn_template_arg_too_large, -1,
+ /* DiagArray140 */ diag::warn_coroutine_promise_unhandled_exception_required_with_exceptions, -1,
+ /* DiagArray141 */ diag::warn_unreachable_default, -1,
+ /* DiagArray143 */ diag::warn_objc_cdirective_format_string, -1,
+ /* DiagArray144 */ diag::warn_ctad_maybe_unsupported, -1,
+ /* DiagArray146 */ diag::warn_ctu_incompat_triple, -1,
+ /* DiagArray147 */ diag::warn_attribute_argument_n_negative, diag::warn_cuda_attr_lambda_position, diag::warn_kern_is_inline, diag::warn_kern_is_method, diag::warn_pragma_unroll_cuda_value_in_parens, -1,
+ /* DiagArray148 */ diag::warn_default_atomic_custom_getter_setter, -1,
+ /* DiagArray149 */ diag::warn_dangling_variable, diag::warn_unsupported_lifetime_extension, -1,
+ /* DiagArray150 */ diag::warn_dangling_else, -1,
+ /* DiagArray151 */ diag::warn_bind_ref_member_to_parameter, diag::warn_dangling_member, diag::warn_init_ptr_member_to_parameter_addr, diag::warn_new_dangling_reference, -1,
+ /* DiagArray152 */ diag::warn_new_dangling_initializer_list, -1,
+ /* DiagArray153 */ diag::warn_drv_darwin_sdk_invalid_settings, -1,
+ /* DiagArray154 */ diag::warn_pp_date_time, -1,
+ /* DiagArray155 */ diag::warn_dealloc_in_category, -1,
+ /* DiagArray156 */ diag::warn_debug_compression_unavailable, -1,
+ /* DiagArray157 */ diag::ext_mixed_decls_code, -1,
+ /* DiagArray158 */ diag::warn_defaulted_method_deleted, -1,
+ /* DiagArray159 */ diag::warn_delegating_ctor_cycle, -1,
+ /* DiagArray160 */ diag::warn_delete_abstract_non_virtual_dtor, -1,
+ /* DiagArray161 */ diag::ext_delete_void_ptr_operand, diag::warn_delete_incomplete, -1,
+ /* DiagArray162 */ diag::warn_delete_non_virtual_dtor, -1,
+ /* DiagArray164 */ diag::warn_O4_is_O3, diag::warn_access_decl_deprecated, diag::warn_deprecated_copy_operation, diag::warn_deprecated_redundant_constexpr_static_def, diag::warn_drv_deprecated_arg, diag::warn_drv_treating_input_as_cxx, diag::warn_option_invalid_ocl_version, diag::warn_vector_long_decl_spec_combination, -1,
+ /* DiagArray165 */ diag::warn_vector_mode_deprecated, -1,
+ /* DiagArray166 */ diag::warn_atl_uuid_deprecated, diag::warn_cstyle_param, diag::warn_deprecated, diag::warn_deprecated_fwdclass_message, diag::warn_deprecated_message, diag::warn_property_method_deprecated, -1,
+ /* DiagArray167 */ diag::warn_exception_spec_deprecated, -1,
+ /* DiagArray168 */ diag::warn_deprecated_def, diag::warn_unavailable_def, -1,
+ /* DiagArray169 */ diag::warn_increment_bool, -1,
+ /* DiagArray170 */ diag::warn_objc_isa_assign, diag::warn_objc_isa_use, -1,
+ /* DiagArray171 */ diag::warn_objc_pointer_masking, -1,
+ /* DiagArray172 */ diag::warn_objc_pointer_masking_performSelector, -1,
+ /* DiagArray173 */ diag::warn_deprecated_register, -1,
+ /* DiagArray174 */ diag::warn_deprecated_this_capture, -1,
+ /* DiagArray176 */ diag::warn_direct_ivar_access, -1,
+ /* DiagArray177 */ diag::pp_disabled_macro_expansion, -1,
+ /* DiagArray180 */ diag::warn_conflicting_param_modifiers, diag::warn_conflicting_ret_type_modifiers, -1,
+ /* DiagArray182 */ diag::warn_remainder_division_by_zero, -1,
+ /* DiagArray183 */ diag::warn_attribute_dll_redeclaration, -1,
+ /* DiagArray184 */ diag::warn_attribute_dllexport_explicit_instantiation_decl, -1,
+ /* DiagArray185 */ diag::warn_attribute_dllimport_static_field_definition, -1,
+ /* DiagArray186 */ diag::warn_doc_api_container_decl_mismatch, diag::warn_doc_block_command_duplicate, diag::warn_doc_block_command_empty_paragraph, diag::warn_doc_container_decl_mismatch, diag::warn_doc_function_method_decl_mismatch, diag::warn_doc_html_start_tag_expected_ident_or_greater, diag::warn_doc_html_start_tag_expected_quoted_string, diag::warn_doc_param_duplicate, diag::warn_doc_param_invalid_direction, diag::warn_doc_param_not_attached_to_a_function_decl, diag::warn_doc_param_not_found, diag::warn_doc_returns_attached_to_a_void_function, diag::warn_doc_returns_not_attached_to_a_function_decl, diag::warn_doc_tparam_duplicate, diag::warn_doc_tparam_not_attached_to_a_template_decl, diag::warn_doc_tparam_not_found, diag::warn_not_a_doxygen_trailing_member_comment, diag::warn_verbatim_block_end_without_start, -1,
+ /* DiagArray187 */ diag::warn_doc_deprecated_not_sync, -1,
+ /* DiagArray188 */ diag::warn_doc_html_end_forbidden, diag::warn_doc_html_end_unbalanced, diag::warn_doc_html_missing_end_tag, diag::warn_doc_html_start_end_mismatch, -1,
+ /* DiagArray189 */ diag::warn_doc_param_spaces_in_direction, -1,
+ /* DiagArray190 */ diag::warn_correct_comment_command_name, diag::warn_unknown_comment_command_name, -1,
+ /* DiagArray191 */ diag::ext_dollar_in_identifier, -1,
+ /* DiagArray192 */ diag::warn_impcast_double_promotion, -1,
+ /* DiagArray193 */ diag::ext_duplicate_declspec, diag::ext_warn_duplicate_declspec, diag::warn_attribute_address_multiple_identical_qualifiers, diag::warn_duplicate_declspec, -1,
+ /* DiagArray194 */ diag::warn_duplicate_enum_values, -1,
+ /* DiagArray195 */ diag::warn_method_param_declaration, -1,
+ /* DiagArray196 */ diag::warn_duplicate_method_decl, -1,
+ /* DiagArray197 */ diag::warn_duplicate_protocol_def, -1,
+ /* DiagArray198 */ diag::warn_dyn_class_memaccess, -1,
+ /* DiagArray199 */ diag::ext_dynamic_exception_spec, -1,
+ /* DiagArray201 */ diag::ext_embedded_directive, -1,
+ /* DiagArray202 */ diag::warn_empty_for_body, diag::warn_empty_if_body, diag::warn_empty_range_based_for_body, diag::warn_empty_switch_body, diag::warn_empty_while_body, -1,
+ /* DiagArray203 */ diag::ext_decomp_decl_empty, -1,
+ /* DiagArray204 */ diag::warn_empty_init_statement, -1,
+ /* DiagArray205 */ diag::ext_empty_translation_unit, -1,
+ /* DiagArray206 */ diag::warn_incomplete_encoded_type, -1,
+ /* DiagArray208 */ diag::warn_comparison_of_mixed_enum_types, -1,
+ /* DiagArray209 */ diag::warn_comparison_of_mixed_enum_types_switch, -1,
+ /* DiagArray210 */ diag::warn_impcast_different_enum_types, -1,
+ /* DiagArray211 */ diag::ext_enum_too_large, diag::ext_enumerator_increment_too_large, -1,
+ /* DiagArray212 */ diag::warn_cdtor_function_try_handler_mem_expr, diag::warn_exception_caught_by_earlier_handler, diag::warn_throw_in_noexcept_func, -1,
+ /* DiagArray213 */ diag::warn_exit_time_destructor, -1,
+ /* DiagArray214 */ diag::warn_defined_in_function_type_macro, diag::warn_defined_in_object_type_macro, -1,
+ /* DiagArray215 */ diag::warn_drv_experimental_isel_incomplete, diag::warn_drv_experimental_isel_incomplete_opt, -1,
+ /* DiagArray216 */ diag::warn_direct_initialize_call, diag::warn_direct_super_initialize_call, -1,
+ /* DiagArray217 */ diag::warn_arc_strong_pointer_objc_pointer, -1,
+ /* DiagArray218 */ diag::warn_zero_size_struct_union_in_extern_c, -1,
+ /* DiagArray219 */ diag::warn_extern_init, -1,
+ /* DiagArray220 */ diag::warn_arm_interrupt_calling_convention, -1,
+ /* DiagArray221 */ diag::warn_namespace_member_extra_qualification, -1,
+ /* DiagArray222 */ diag::ext_extra_semi, diag::warn_extra_semi_after_mem_fn_def, -1,
+ /* DiagArray223 */ diag::warn_null_statement, -1,
+ /* DiagArray224 */ diag::ext_pp_extra_tokens_at_eol, diag::warn_omp_extra_tokens_at_eol, -1,
+ /* DiagArray225 */ diag::warn_drv_invoking_fallback, -1,
+ /* DiagArray226 */ diag::ext_clang_c_enum_fixed_underlying_type, -1,
+ /* DiagArray227 */ diag::warn_flag_enum_constant_out_of_range, -1,
+ /* DiagArray228 */ diag::ext_flexible_array_in_array, diag::ext_flexible_array_in_struct, -1,
+ /* DiagArray229 */ diag::warn_impcast_float_integer, -1,
+ /* DiagArray230 */ diag::warn_floatingpoint_eq, -1,
+ /* DiagArray231 */ diag::warn_impcast_float_to_integer, diag::warn_impcast_float_to_integer_out_of_range, -1,
+ /* DiagArray232 */ diag::warn_impcast_float_to_integer_zero, -1,
+ /* DiagArray233 */ diag::warn_redundant_loop_iteration, diag::warn_variables_not_in_loop_body, -1,
+ /* DiagArray234 */ diag::warn_format_P_no_precision, diag::warn_format_argument_needs_cast, diag::warn_format_conversion_argument_type_mismatch, diag::warn_format_invalid_annotation, diag::warn_format_invalid_positional_specifier, diag::warn_format_mix_positional_nonpositional_args, diag::warn_format_nonsensical_length, diag::warn_format_string_is_wide_literal, diag::warn_format_zero_positional_specifier, diag::warn_missing_format_string, diag::warn_printf_ObjCflags_without_ObjCConversion, diag::warn_printf_asterisk_missing_arg, diag::warn_printf_asterisk_wrong_type, diag::warn_printf_empty_objc_flag, diag::warn_printf_format_string_contains_null_char, diag::warn_printf_format_string_not_null_terminated, diag::warn_printf_ignored_flag, diag::warn_printf_incomplete_specifier, diag::warn_printf_insufficient_data_args, diag::warn_printf_invalid_objc_flag, diag::warn_printf_nonsensical_flag, diag::warn_printf_nonsensical_optional_amount, diag::warn_printf_positional_arg_exceeds_data_args, diag::warn_scanf_nonzero_width, diag::warn_scanf_scanlist_incomplete, -1,
+ /* DiagArray235 */ diag::warn_printf_data_arg_not_used, -1,
+ /* DiagArray236 */ diag::warn_format_invalid_conversion, -1,
+ /* DiagArray237 */ diag::warn_format_non_standard, diag::warn_format_non_standard_conversion_spec, diag::warn_format_non_standard_positional_arg, -1,
+ /* DiagArray238 */ diag::warn_format_nonliteral, -1,
+ /* DiagArray239 */ diag::warn_format_argument_needs_cast_pedantic, diag::warn_format_conversion_argument_type_mismatch_pedantic, -1,
+ /* DiagArray240 */ diag::warn_format_nonliteral_noargs, -1,
+ /* DiagArray242 */ diag::warn_empty_format_string, -1,
+ /* DiagArray244 */ diag::ext_four_char_character_literal, -1,
+ /* DiagArray245 */ diag::warn_fe_backend_frame_larger_than, diag::warn_fe_frame_larger_than, -1,
+ /* DiagArray246 */ diag::warn_framework_include_private_from_public, -1,
+ /* DiagArray247 */ diag::warn_function_def_in_objc_container, -1,
+ /* DiagArray248 */ diag::warn_dispatch_body_ignored, diag::warn_multiversion_duplicate_entries, -1,
+ /* DiagArray250 */ diag::ext_clang_diagnose_if, diag::ext_clang_enable_if, diag::ext_warn_gnu_final, diag::warn_attribute_on_function_definition, diag::warn_break_binds_to_switch, diag::warn_cleanup_ext, diag::warn_gcc_attribute_location, diag::warn_gcc_ignores_type_attr, diag::warn_gcc_variable_decl_in_for_loop, diag::warn_loop_ctrl_binds_to_inner, -1,
+ /* DiagArray251 */ diag::warn_global_constructor, diag::warn_global_destructor, -1,
+ /* DiagArray253 */ diag::ext_alignof_expr, -1,
+ /* DiagArray254 */ diag::ext_gnu_anonymous_struct, -1,
+ /* DiagArray255 */ diag::ext_array_init_parens, -1,
+ /* DiagArray256 */ diag::ext_auto_type, -1,
+ /* DiagArray257 */ diag::ext_binary_literal, -1,
+ /* DiagArray258 */ diag::ext_gnu_case_range, -1,
+ /* DiagArray259 */ diag::ext_integer_complex, -1,
+ /* DiagArray260 */ diag::ext_array_init_copy, -1,
+ /* DiagArray261 */ diag::ext_gnu_conditional_expr, -1,
+ /* DiagArray262 */ diag::ext_gnu_array_range, diag::ext_gnu_missing_equal_designator, diag::ext_gnu_old_style_field_designator, -1,
+ /* DiagArray263 */ diag::ext_gnu_empty_initializer, -1,
+ /* DiagArray264 */ diag::ext_empty_struct_union, diag::ext_flexible_array_empty_aggregate_gnu, diag::ext_no_named_members_in_struct_union, -1,
+ /* DiagArray265 */ diag::ext_flexible_array_init, -1,
+ /* DiagArray266 */ diag::ext_flexible_array_union_gnu, -1,
+ /* DiagArray267 */ diag::ext_expr_not_ice, diag::ext_in_class_initializer_non_constant, diag::ext_vla_folded_to_constant, -1,
+ /* DiagArray268 */ diag::ext_imaginary_constant, -1,
+ /* DiagArray269 */ diag::ext_pp_include_next_directive, -1,
+ /* DiagArray270 */ diag::ext_gnu_address_of_label, diag::ext_gnu_indirect_goto, -1,
+ /* DiagArray271 */ diag::ext_forward_ref_enum_def, -1,
+ /* DiagArray272 */ diag::ext_gnu_statement_expr, -1,
+ /* DiagArray273 */ diag::ext_in_class_initializer_float_type, -1,
+ /* DiagArray274 */ diag::ext_string_literal_operator_template, -1,
+ /* DiagArray275 */ diag::ext_typecheck_cast_to_union, -1,
+ /* DiagArray276 */ diag::ext_variable_sized_type_in_struct, -1,
+ /* DiagArray277 */ diag::ext_pp_line_zero, -1,
+ /* DiagArray278 */ diag::ext_missing_varargs_arg, diag::ext_paste_comma, -1,
+ /* DiagArray279 */ diag::warn_header_guard, -1,
+ /* DiagArray280 */ diag::warn_using_directive_in_header, -1,
+ /* DiagArray281 */ diag::warn_condition_is_idiomatic_assignment, -1,
+ /* DiagArray282 */ diag::ext_cannot_use_trivial_abi, diag::warn_alias_to_weak_alias, diag::warn_alias_with_section, diag::warn_attr_abi_tag_namespace, diag::warn_attribute_after_definition_ignored, diag::warn_attribute_iboutlet, diag::warn_attribute_ignored, diag::warn_attribute_ignored_for_field_of_type, diag::warn_attribute_ignored_on_inline, diag::warn_attribute_invalid_on_definition, diag::warn_attribute_no_decl, diag::warn_attribute_nonnull_no_pointers, diag::warn_attribute_nonnull_parm_no_args, diag::warn_attribute_not_on_decl, diag::warn_attribute_pointer_or_reference_only, diag::warn_attribute_pointers_only, diag::warn_attribute_precede_definition, diag::warn_attribute_return_pointers_only, diag::warn_attribute_return_pointers_refs_only, diag::warn_attribute_sentinel_named_arguments, diag::warn_attribute_sentinel_not_variadic, diag::warn_attribute_type_not_supported, diag::warn_attribute_unknown_visibility, diag::warn_attribute_void_function_method, diag::warn_attribute_weak_on_field, diag::warn_attribute_weak_on_local, diag::warn_attribute_wrong_decl_type, diag::warn_attribute_wrong_decl_type_str, diag::warn_block_literal_attributes_on_omitted_return_type, diag::warn_cconv_ignored, diag::warn_cconv_structors, diag::warn_cconv_varargs, diag::warn_cxx11_gnu_attribute_on_type, diag::warn_declspec_attribute_ignored, diag::warn_deprecated_anonymous_namespace, diag::warn_dllimport_dropped_from_inline_function, diag::warn_duplicate_attribute, diag::warn_duplicate_attribute_exact, diag::warn_gc_attribute_weak_on_local, diag::warn_gnu_inline_attribute_requires_inline, diag::warn_ignored_ms_inheritance, diag::warn_ignored_objc_externally_retained, diag::warn_internal_linkage_local_storage, diag::warn_interrupt_attribute_invalid, diag::warn_microsoft_qualifiers_ignored, diag::warn_mmap_unknown_attribute, diag::warn_nocf_check_attribute_ignored, diag::warn_noderef_on_non_pointer_or_array, diag::warn_ns_attribute_wrong_parameter_type, diag::warn_ns_attribute_wrong_return_type, diag::warn_opencl_attr_deprecated_ignored, diag::warn_riscv_repeated_interrupt_attribute, diag::warn_transparent_union_attribute_field_size_align, diag::warn_transparent_union_attribute_floating, diag::warn_transparent_union_attribute_not_definition, diag::warn_transparent_union_attribute_zero_fields, diag::warn_type_attribute_wrong_type, diag::warn_unhandled_ms_attribute_ignored, diag::warn_unsupported_target_attribute, diag::warn_wrong_clang_attr_namespace, -1,
+ /* DiagArray283 */ diag::warn_drv_unsupported_opt_for_target, diag::warn_ignored_gcc_optimization, -1,
+ /* DiagArray284 */ diag::warn_pragma_intrinsic_builtin, -1,
+ /* DiagArray285 */ diag::warn_pragma_optimize, -1,
+ /* DiagArray286 */ diag::warn_pragma_align_expected_equal, diag::warn_pragma_align_invalid_option, diag::warn_pragma_begin_end_mismatch, diag::warn_pragma_comment_ignored, diag::warn_pragma_debug_missing_argument, diag::warn_pragma_debug_unexpected_command, diag::warn_pragma_expected_action_or_r_paren, diag::warn_pragma_expected_colon, diag::warn_pragma_expected_colon_r_paren, diag::warn_pragma_expected_comma, diag::warn_pragma_expected_identifier, diag::warn_pragma_expected_init_seg, diag::warn_pragma_expected_integer, diag::warn_pragma_expected_lparen, diag::warn_pragma_expected_non_wide_string, diag::warn_pragma_expected_predicate, diag::warn_pragma_expected_punc, diag::warn_pragma_expected_rparen, diag::warn_pragma_expected_section_label_or_name, diag::warn_pragma_expected_section_name, diag::warn_pragma_expected_section_push_pop_or_name, diag::warn_pragma_expected_string, diag::warn_pragma_extra_tokens_at_eol, diag::warn_pragma_force_cuda_host_device_bad_arg, diag::warn_pragma_init_seg_unsupported_target, diag::warn_pragma_invalid_action, diag::warn_pragma_invalid_argument, diag::warn_pragma_invalid_specific_action, diag::warn_pragma_missing_argument, diag::warn_pragma_ms_struct, diag::warn_pragma_options_align_reset_failed, diag::warn_pragma_options_expected_align, diag::warn_pragma_pack_invalid_alignment, diag::warn_pragma_pack_malformed, diag::warn_pragma_pop_failed, diag::warn_pragma_pop_macro_no_push, diag::warn_pragma_unknown_extension, diag::warn_pragma_unsupported_action, diag::warn_pragma_unsupported_extension, diag::warn_pragma_unused_expected_var, diag::warn_pragma_unused_expected_var_arg, diag::warn_pragma_unused_undeclared_var, -1,
+ /* DiagArray287 */ diag::warn_arc_lifetime_result_type, diag::warn_block_literal_qualifiers_on_omitted_return_type, diag::warn_qual_return_type, diag::warn_typecheck_function_qualifiers_ignored, diag::warn_typecheck_reference_qualifiers, -1,
+ /* DiagArray289 */ diag::warn_auto_implicit_atomic_property, diag::warn_implicit_atomic_property, -1,
+ /* DiagArray290 */ diag::warn_impcast_floating_point_to_bool, -1,
+ /* DiagArray291 */ diag::ext_implicit_exception_spec_mismatch, -1,
+ /* DiagArray292 */ diag::warn_fallthrough_attr_unreachable, diag::warn_unannotated_fallthrough, -1,
+ /* DiagArray293 */ diag::warn_unannotated_fallthrough_per_function, -1,
+ /* DiagArray294 */ diag::warn_impcast_fixed_point_range, -1,
+ /* DiagArray295 */ diag::warn_impcast_float_precision, diag::warn_impcast_float_result_precision, -1,
+ /* DiagArray296 */ diag::ext_implicit_function_decl, diag::ext_implicit_lib_function_decl, diag::warn_builtin_unknown, diag::warn_implicit_function_decl, -1,
+ /* DiagArray297 */ diag::ext_missing_type_specifier, -1,
+ /* DiagArray298 */ diag::warn_impcast_high_order_zero_bits, diag::warn_impcast_integer_precision, -1,
+ /* DiagArray299 */ diag::warn_implicitly_retains_self, -1,
+ /* DiagArray300 */ diag::ext_integer_literal_too_large_for_signed, -1,
+ /* DiagArray302 */ diag::ext_pp_import_directive, -1,
+ /* DiagArray303 */ diag::warn_inaccessible_base_class, -1,
+ /* DiagArray304 */ diag::pp_include_next_absolute_path, -1,
+ /* DiagArray305 */ diag::pp_include_next_in_primary, -1,
+ /* DiagArray306 */ diag::warn_deep_exception_specs_differ, diag::warn_incompatible_exception_specs, -1,
+ /* DiagArray307 */ diag::ext_typecheck_convert_incompatible_function_pointer, -1,
+ /* DiagArray308 */ diag::warn_redecl_library_builtin, -1,
+ /* DiagArray309 */ diag::warn_cxx_ms_struct, diag::warn_npot_ms_struct, -1,
+ /* DiagArray310 */ diag::ext_typecheck_convert_incompatible_pointer, -1,
+ /* DiagArray311 */ diag::ext_nested_pointer_qualifier_mismatch, diag::ext_typecheck_convert_discards_qualifiers, -1,
+ /* DiagArray312 */ diag::warn_property_types_are_incompatible, -1,
+ /* DiagArray313 */ diag::warn_incompatible_sysroot, -1,
+ /* DiagArray314 */ diag::warn_mmap_incomplete_framework_module_declaration, -1,
+ /* DiagArray315 */ diag::warn_undef_method_impl, -1,
+ /* DiagArray317 */ diag::warn_missing_submodule, diag::warn_mmap_umbrella_dir_not_found, diag::warn_uncovered_module_header, -1,
+ /* DiagArray318 */ diag::warn_redeclaration_without_attribute_prev_attribute_ignored, diag::warn_redeclaration_without_import_attribute, -1,
+ /* DiagArray319 */ diag::warn_destructor_marked_not_override_overriding, -1,
+ /* DiagArray320 */ diag::warn_function_marked_not_override_overriding, -1,
+ /* DiagArray321 */ diag::ext_increment_bool, -1,
+ /* DiagArray322 */ diag::warn_infinite_recursive_function, -1,
+ /* DiagArray324 */ diag::warn_initializer_overrides, diag::warn_subobject_initializer_overrides, -1,
+ /* DiagArray325 */ diag::ext_out_of_line_qualified_id_type_names_constructor, -1,
+ /* DiagArray327 */ diag::warn_fe_inline_asm, -1,
+ /* DiagArray328 */ diag::ext_operator_new_delete_declared_inline, -1,
+ /* DiagArray329 */ diag::warn_explicit_instantiation_after_specialization, -1,
+ /* DiagArray330 */ diag::ext_typecheck_convert_int_pointer, diag::ext_typecheck_convert_pointer_int, -1,
+ /* DiagArray332 */ diag::warn_int_to_pointer_cast, -1,
+ /* DiagArray333 */ diag::warn_int_to_void_pointer_cast, -1,
+ /* DiagArray334 */ diag::warn_integer_constant_overflow, -1,
+ /* DiagArray335 */ diag::warn_drv_msp430_hwmult_mismatch, diag::warn_drv_msp430_hwmult_no_device, diag::warn_drv_msp430_hwmult_unsupported, diag::warn_drv_object_size_disabled_O0, diag::warn_drv_optimization_value, -1,
+ /* DiagArray336 */ diag::ext_constexpr_function_never_constant_expr, -1,
+ /* DiagArray337 */ diag::warn_iboutlet_object_type, diag::warn_iboutletcollection_property_assign, -1,
+ /* DiagArray338 */ diag::warn_invalid_initializer_from_system_header, -1,
+ /* DiagArray339 */ diag::warn_invalid_ios_deployment_target, -1,
+ /* DiagArray340 */ diag::warn_falloff_noreturn_function, diag::warn_noreturn_function_has_return_expr, -1,
+ /* DiagArray341 */ diag::ext_offsetof_non_pod_type, diag::ext_offsetof_non_standardlayout_type, -1,
+ /* DiagArray342 */ diag::warn_drv_ps4_sdk_dir, diag::warn_drv_unable_to_find_directory_expected, -1,
+ /* DiagArray343 */ diag::ext_partial_spec_not_more_specialized_than_primary, -1,
+ /* DiagArray345 */ diag::ext_empty_character, diag::ext_unterminated_char_or_string, -1,
+ /* DiagArray346 */ diag::warn_bad_character_encoding, diag::warn_bad_string_encoding, -1,
+ /* DiagArray347 */ diag::ext_pp_bad_paste_ms, -1,
+ /* DiagArray348 */ diag::warn_jump_out_of_seh_finally, -1,
+ /* DiagArray349 */ diag::ext_keyword_as_ident, -1,
+ /* DiagArray350 */ diag::warn_pp_macro_hides_keyword, -1,
+ /* DiagArray351 */ diag::ext_param_promoted_not_compatible_with_prototype, -1,
+ /* DiagArray352 */ diag::ext_token_used, -1,
+ /* DiagArray353 */ diag::warn_parameter_size, diag::warn_return_value_size, -1,
+ /* DiagArray355 */ diag::warn_impcast_literal_float_to_integer, diag::warn_impcast_literal_float_to_integer_out_of_range, -1,
+ /* DiagArray356 */ diag::warn_float_overflow, diag::warn_float_underflow, -1,
+ /* DiagArray357 */ diag::ext_template_arg_local_type, -1,
+ /* DiagArray358 */ diag::warn_logical_not_on_lhs_of_check, -1,
+ /* DiagArray359 */ diag::warn_logical_and_in_logical_or, -1,
+ /* DiagArray360 */ diag::ext_c99_longlong, -1,
+ /* DiagArray362 */ diag::ext_pp_macro_redef, -1,
+ /* DiagArray363 */ diag::ext_main_used, diag::ext_noreturn_main, diag::ext_variadic_main, diag::warn_main_one_arg, diag::warn_main_redefined, diag::warn_main_returns_bool_literal, diag::warn_static_main, -1,
+ /* DiagArray364 */ diag::ext_main_returns_nonint, -1,
+ /* DiagArray365 */ diag::warn_has_warning_invalid_option, -1,
+ /* DiagArray366 */ diag::ext_many_braces_around_scalar_init, -1,
+ /* DiagArray367 */ diag::warn_max_unsigned_zero, -1,
+ /* DiagArray368 */ diag::warn_suspicious_sizeof_memset, -1,
+ /* DiagArray369 */ diag::warn_memsize_comparison, -1,
+ /* DiagArray370 */ diag::warn_non_contravariant_param_types, diag::warn_non_covariant_ret_types, -1,
+ /* DiagArray372 */ diag::ext_anonymous_record_with_type, diag::ext_ms_anonymous_record, -1,
+ /* DiagArray373 */ diag::ext_ms_cast_fn_obj, diag::ext_ms_impcast_fn_obj, -1,
+ /* DiagArray374 */ diag::ext_charize_microsoft, -1,
+ /* DiagArray375 */ diag::ext_comment_paste_microsoft, -1,
+ /* DiagArray376 */ diag::ext_default_init_const, -1,
+ /* DiagArray377 */ diag::ext_pp_operator_used_as_macro_name, -1,
+ /* DiagArray378 */ diag::ext_param_default_argument_redefinition, -1,
+ /* DiagArray379 */ diag::ext_ctrl_z_eof_microsoft, -1,
+ /* DiagArray380 */ diag::ext_ms_forward_ref_enum, -1,
+ /* DiagArray381 */ diag::ext_enumerator_too_large, -1,
+ /* DiagArray382 */ diag::ext_ellipsis_exception_spec, diag::ext_incomplete_in_exception_spec, diag::ext_mismatched_exception_spec, diag::ext_mismatched_exception_spec_explicit_instantiation, diag::ext_ms_missing_exception_specification, diag::ext_override_exception_spec, -1,
+ /* DiagArray383 */ diag::warn_microsoft_dependent_exists, -1,
+ /* DiagArray384 */ diag::ext_ms_explicit_constructor_call, -1,
+ /* DiagArray385 */ diag::warn_member_extra_qualification, -1,
+ /* DiagArray386 */ diag::ext_ms_c_enum_fixed_underlying_type, -1,
+ /* DiagArray387 */ diag::ext_flexible_array_empty_aggregate_ms, diag::ext_flexible_array_union_ms, -1,
+ /* DiagArray388 */ diag::ext_goto_into_protected_scope, -1,
+ /* DiagArray389 */ diag::ext_ms_ambiguous_direct_base, -1,
+ /* DiagArray390 */ diag::ext_pp_include_search_ms, -1,
+ /* DiagArray391 */ diag::ext_mutable_reference, -1,
+ /* DiagArray392 */ diag::ext_pure_function_definition, -1,
+ /* DiagArray393 */ diag::ext_static_non_static, -1,
+ /* DiagArray394 */ diag::ext_ms_sealed_keyword, -1,
+ /* DiagArray395 */ diag::ext_explicit_instantiation_duplicate, diag::ext_found_via_dependent_bases_lookup, diag::ext_ms_delayed_template_argument, diag::ext_ms_deref_template_argument, diag::ext_ms_template_spec_redecl_out_of_scope, diag::ext_ms_template_type_arg_missing_typename, diag::ext_static_out_of_line, diag::ext_undeclared_unqual_id_with_dependent_base, -1,
+ /* DiagArray396 */ diag::ext_union_member_of_reference_type, -1,
+ /* DiagArray397 */ diag::ext_friend_tag_redecl_outside_namespace, -1,
+ /* DiagArray398 */ diag::ext_ms_using_declaration_inaccessible, -1,
+ /* DiagArray399 */ diag::ext_pseudo_dtor_on_void, -1,
+ /* DiagArray400 */ diag::warn_mismatched_delete_new, -1,
+ /* DiagArray401 */ diag::warn_conflicting_param_types, -1,
+ /* DiagArray402 */ diag::warn_conflicting_ret_types, -1,
+ /* DiagArray403 */ diag::warn_struct_class_previous_tag_mismatch, diag::warn_struct_class_tag_mismatch, -1,
+ /* DiagArray404 */ diag::warn_missing_braces, -1,
+ /* DiagArray405 */ diag::ext_no_declarators, diag::ext_standalone_specifier, diag::ext_typedef_without_a_name, diag::warn_standalone_specifier, -1,
+ /* DiagArray406 */ diag::ext_missing_exception_specification, -1,
+ /* DiagArray407 */ diag::warn_missing_field_initializers, -1,
+ /* DiagArray410 */ diag::warn_missing_method_return_type, -1,
+ /* DiagArray411 */ diag::warn_overriding_method_missing_noescape, -1,
+ /* DiagArray412 */ diag::warn_suggest_noreturn_block, diag::warn_suggest_noreturn_function, -1,
+ /* DiagArray413 */ diag::warn_cconv_knr, -1,
+ /* DiagArray414 */ diag::warn_missing_prototype, -1,
+ /* DiagArray415 */ diag::warn_missing_selector_name, -1,
+ /* DiagArray416 */ diag::warn_missing_sysroot, -1,
+ /* DiagArray417 */ diag::warn_missing_variable_declarations, -1,
+ /* DiagArray418 */ diag::remark_module_build, diag::remark_module_build_done, diag::remark_module_lock_failure, diag::remark_module_lock_timeout, -1,
+ /* DiagArray419 */ diag::warn_module_conflict, diag::warn_module_system_bit_conflict, -1,
+ /* DiagArray420 */ diag::warn_module_config_mismatch, -1,
+ /* DiagArray421 */ diag::warn_duplicate_module_file_extension, -1,
+ /* DiagArray422 */ diag::ext_module_import_in_extern_c, -1,
+ /* DiagArray423 */ diag::ext_equivalent_internal_linkage_decl_in_modules, -1,
+ /* DiagArray424 */ diag::ext_module_import_not_at_top_level_noop, -1,
+ /* DiagArray428 */ diag::warn_drv_msvc_not_found, -1,
+ /* DiagArray429 */ diag::ext_multichar_character_literal, -1,
+ /* DiagArray430 */ diag::warn_vbase_moved_multiple_times, -1,
+ /* DiagArray432 */ diag::ext_anonymous_record_with_anonymous_type, -1,
+ /* DiagArray434 */ diag::warn_operator_new_returns_null, -1,
+ /* DiagArray435 */ diag::ext_no_newline_eof, diag::warn_no_newline_eof, -1,
+ /* DiagArray436 */ diag::warn_dereference_of_noderef_type, diag::warn_dereference_of_noderef_type_no_decl, diag::warn_noderef_to_dereferenceable_pointer, -1,
+ /* DiagArray439 */ diag::warn_non_literal_null_pointer, -1,
+ /* DiagArray440 */ diag::warn_non_modular_include_in_framework_module, -1,
+ /* DiagArray441 */ diag::warn_non_modular_include_in_module, -1,
+ /* DiagArray442 */ diag::warn_cannot_pass_non_pod_arg_to_vararg, diag::warn_non_pod_vararg_with_format_string, diag::warn_second_parameter_to_va_arg_not_pod, diag::warn_second_parameter_to_va_arg_ownership_qualified, -1,
+ /* DiagArray443 */ diag::warn_non_virtual_dtor, -1,
+ /* DiagArray444 */ diag::warn_null_arg, diag::warn_null_ret, -1,
+ /* DiagArray446 */ diag::pp_nonportable_path, -1,
+ /* DiagArray447 */ diag::pp_nonportable_system_path, -1,
+ /* DiagArray448 */ diag::warn_neon_vector_initializer_non_portable, -1,
+ /* DiagArray449 */ diag::warn_cstruct_memaccess, -1,
+ /* DiagArray450 */ diag::warn_nsconsumed_attribute_mismatch, -1,
+ /* DiagArray451 */ diag::warn_nsreturns_retained_attribute_mismatch, -1,
+ /* DiagArray452 */ diag::warn_null_in_arithmetic_operation, diag::warn_null_in_comparison_operation, -1,
+ /* DiagArray453 */ diag::null_in_char_or_string, diag::null_in_file, -1,
+ /* DiagArray454 */ diag::warn_impcast_null_pointer_to_integer, -1,
+ /* DiagArray455 */ diag::warn_binding_null_to_reference, diag::warn_indirection_through_null, -1,
+ /* DiagArray456 */ diag::warn_gnu_null_ptr_arith, diag::warn_pointer_arith_null_ptr, -1,
+ /* DiagArray457 */ diag::warn_conflicting_nullability_attr_overriding_param_types, diag::warn_conflicting_nullability_attr_overriding_ret_types, diag::warn_mismatched_nullability_attr, diag::warn_null_resettable_setter, diag::warn_nullability_duplicate, -1,
+ /* DiagArray458 */ diag::warn_nullability_missing, -1,
+ /* DiagArray459 */ diag::warn_nullability_missing_array, -1,
+ /* DiagArray460 */ diag::warn_nullability_declspec, -1,
+ /* DiagArray461 */ diag::ext_nullability, -1,
+ /* DiagArray462 */ diag::warn_nullability_inferred_on_nested_type, -1,
+ /* DiagArray463 */ diag::warn_nullability_lost, -1,
+ /* DiagArray464 */ diag::warn_autosynthesis_property_ivar_match, -1,
+ /* DiagArray465 */ diag::warn_objc_circular_container, -1,
+ /* DiagArray467 */ diag::warn_objc_designated_init_missing_super_call, diag::warn_objc_designated_init_non_designated_init_call, diag::warn_objc_designated_init_non_super_designated_init_call, diag::warn_objc_implementation_missing_designated_init_override, diag::warn_objc_secondary_init_missing_init_call, diag::warn_objc_secondary_init_super_init_call, -1,
+ /* DiagArray468 */ diag::warn_superclass_variable_sized_type_not_at_end, diag::warn_variable_sized_ivar_visibility, -1,
+ /* DiagArray469 */ diag::warn_forward_class_redefinition, -1,
+ /* DiagArray470 */ diag::warn_ivars_in_interface, -1,
+ /* DiagArray471 */ diag::warn_objc_literal_comparison, -1,
+ /* DiagArray472 */ diag::warn_impcast_objective_c_literal_to_bool, diag::warn_objc_collection_literal_element, -1,
+ /* DiagArray473 */ diag::warn_pp_objc_macro_redef_ignored, -1,
+ /* DiagArray474 */ diag::warn_messaging_unqualified_id, -1,
+ /* DiagArray475 */ diag::warn_class_method_not_found, diag::warn_class_method_not_found_with_typo, diag::warn_inst_method_not_found, diag::warn_instance_method_not_found_with_typo, diag::warn_instance_method_on_class_found, diag::warn_root_inst_method_not_found, -1,
+ /* DiagArray476 */ diag::warn_missing_explicit_synthesis, -1,
+ /* DiagArray477 */ diag::warn_objc_missing_super_call, -1,
+ /* DiagArray478 */ diag::warn_multiple_method_decl, -1,
+ /* DiagArray479 */ diag::warn_objc_property_retain_of_block, -1,
+ /* DiagArray480 */ diag::warn_objc_pointer_cxx_catch_fragile, -1,
+ /* DiagArray481 */ diag::warn_objc_property_assign_on_object, -1,
+ /* DiagArray482 */ diag::warn_impl_required_for_class_property, diag::warn_impl_required_in_category_for_class_property, diag::warn_setter_getter_impl_required, diag::warn_setter_getter_impl_required_in_category, -1,
+ /* DiagArray483 */ diag::warn_property_implicitly_mismatched, -1,
+ /* DiagArray484 */ diag::warn_cocoa_naming_owned_rule, -1,
+ /* DiagArray485 */ diag::warn_objc_property_default_assign_on_object, diag::warn_objc_property_no_assignment_attribute, -1,
+ /* DiagArray486 */ diag::warn_autosynthesis_property_in_superclass, diag::warn_no_autosynthesis_property, diag::warn_no_autosynthesis_shared_ivar_property, -1,
+ /* DiagArray487 */ diag::warn_category_method_impl_match, -1,
+ /* DiagArray488 */ diag::warn_auto_synthesizing_protocol_property, -1,
+ /* DiagArray489 */ diag::warn_objc_redundant_qualified_class_type, -1,
+ /* DiagArray490 */ diag::warn_objc_readonly_property_has_setter, -1,
+ /* DiagArray492 */ diag::warn_objc_redundant_literal_use, -1,
+ /* DiagArray493 */ diag::warn_objc_root_class_missing, -1,
+ /* DiagArray494 */ diag::warn_objc_string_literal_comparison, -1,
+ /* DiagArray495 */ diag::warn_concatenated_nsarray_literal, -1,
+ /* DiagArray496 */ diag::warn_objc_unsafe_perform_selector, -1,
+ /* DiagArray497 */ diag::warn_odr_tag_type_inconsistent, -1,
+ /* DiagArray498 */ diag::warn_old_style_cast, -1,
+ /* DiagArray500 */ diag::ext_opencl_ext_vector_type_rgba_selector, -1,
+ /* DiagArray501 */ diag::warn_omp_alignment_not_power_of_two, diag::warn_omp_linear_step_zero, -1,
+ /* DiagArray502 */ diag::ext_omp_loop_not_canonical_init, diag::warn_omp_loop_64_bit_var, -1,
+ /* DiagArray503 */ diag::warn_drv_omp_offload_target_duplicate, diag::warn_drv_omp_offload_target_missingbcruntime, diag::warn_omp_non_trivial_type_mapped, diag::warn_omp_not_in_target_context, -1,
+ /* DiagArray504 */ diag::warn_drv_fine_grained_bitfield_accesses_ignored, diag::warn_drv_moutline_unsupported_opt, diag::warn_drv_ps4_force_pic, diag::warn_drv_unsupported_longcalls, diag::warn_drv_unsupported_pic_with_mabicalls, diag::warn_drv_vectorize_needs_hvx, -1,
+ /* DiagArray505 */ diag::ext_typecheck_ordered_comparison_of_function_pointers, -1,
+ /* DiagArray506 */ diag::ext_out_of_line_declaration, -1,
+ /* DiagArray507 */ diag::ext_use_out_of_scope_declaration, -1,
+ /* DiagArray508 */ diag::warn_overaligned_type, -1,
+ /* DiagArray510 */ diag::ext_string_too_long, -1,
+ /* DiagArray511 */ diag::warn_overloaded_shift_in_comparison, -1,
+ /* DiagArray512 */ diag::warn_overloaded_virtual, -1,
+ /* DiagArray514 */ diag::warn_fe_override_module, -1,
+ /* DiagArray515 */ diag::warn_conflicting_overriding_param_modifiers, diag::warn_conflicting_overriding_param_types, diag::warn_conflicting_overriding_ret_type_modifiers, diag::warn_conflicting_overriding_ret_types, diag::warn_conflicting_overriding_variadic, diag::warn_non_contravariant_overriding_param_types, diag::warn_non_covariant_overriding_ret_types, -1,
+ /* DiagArray516 */ diag::warn_drv_overriding_flag_option, -1,
+ /* DiagArray517 */ diag::warn_unnecessary_packed, -1,
+ /* DiagArray518 */ diag::warn_padded_struct_anon_field, diag::warn_padded_struct_field, diag::warn_padded_struct_size, -1,
+ /* DiagArray519 */ diag::warn_condition_is_assignment, diag::warn_precedence_bitwise_rel, diag::warn_precedence_conditional, -1,
+ /* DiagArray520 */ diag::warn_equality_with_extra_parens, -1,
+ /* DiagArray522 */ diag::remark_fe_backend_optimization_remark, -1,
+ /* DiagArray523 */ diag::remark_fe_backend_optimization_remark_analysis, diag::remark_fe_backend_optimization_remark_analysis_aliasing, diag::remark_fe_backend_optimization_remark_analysis_fpcommute, -1,
+ /* DiagArray524 */ diag::warn_fe_backend_optimization_failure, -1,
+ /* DiagArray525 */ diag::remark_fe_backend_optimization_remark_missed, -1,
+ /* DiagArray526 */ diag::warn_module_uses_date_time, -1,
+ /* DiagArray527 */ diag::ext_aggregate_init_not_constant, diag::ext_anonymous_record_with_type, diag::ext_anonymous_struct_union_qualified, diag::ext_array_size_conversion, diag::ext_auto_new_list_init, diag::ext_c99_array_usage, diag::ext_c99_compound_literal, diag::ext_c99_flexible_array_member, diag::ext_c99_variable_decl_in_for_loop, diag::ext_cast_fn_obj, diag::ext_clang_diagnose_if, diag::ext_clang_enable_if, diag::ext_cxx11_enum_fixed_underlying_type, diag::ext_cxx14_attr, diag::ext_cxx17_attr, diag::ext_designated_init, diag::ext_duplicate_declspec, diag::ext_ellipsis_exception_spec, diag::ext_empty_fnmacro_arg, diag::ext_enum_value_not_int, diag::ext_enumerator_list_comma_c, diag::ext_enumerator_list_comma_cxx, diag::ext_explicit_instantiation_without_qualified_id, diag::ext_extern_template, diag::ext_extra_semi, diag::ext_forward_ref_enum, diag::ext_freestanding_complex, diag::ext_gnu_array_range, diag::ext_gnu_ptr_func_arith, diag::ext_gnu_subscript_void_type, diag::ext_gnu_void_ptr, diag::ext_hex_constant_invalid, diag::ext_hex_literal_invalid, diag::ext_ident_list_in_param, diag::ext_integer_complement_complex, diag::ext_integer_increment_complex, diag::ext_internal_in_extern_inline_quiet, diag::ext_invalid_sign_spec, diag::ext_line_comment, diag::ext_main_used, diag::ext_multi_line_line_comment, diag::ext_named_variadic_macro, diag::ext_no_newline_eof, diag::ext_nonstandard_escape, diag::ext_ns_enum_attribute, diag::ext_param_not_declared, diag::ext_pointer_to_const_ref_member_on_rvalue, diag::ext_pp_bad_vaargs_use, diag::ext_pp_comma_expr, diag::ext_pp_ident_directive, diag::ext_pp_line_too_big, diag::ext_pp_warning_directive, diag::ext_return_has_void_expr, diag::ext_rvalue_to_reference_access_ctor, diag::ext_rvalue_to_reference_temp_copy_no_viable, diag::ext_sizeof_alignof_function_type, diag::ext_sizeof_alignof_void_type, diag::ext_subscript_non_lvalue, diag::ext_thread_before, diag::ext_typecheck_addrof_void, diag::ext_typecheck_cast_nonscalar, diag::ext_typecheck_comparison_of_fptr_to_void, diag::ext_typecheck_cond_one_void, diag::ext_typecheck_convert_pointer_void_func, diag::ext_typecheck_ordered_comparison_of_pointer_and_zero, diag::ext_variadic_macro, diag::warn_defined_in_function_type_macro, diag::warn_format_conversion_argument_type_mismatch_pedantic, diag::warn_illegal_constant_array_size, diag::warn_kern_is_method, -1,
+ /* DiagArray528 */ diag::warn_pragma_extension_is_core, -1,
+ /* DiagArray529 */ diag::warn_pessimizing_move_on_initialization, diag::warn_pessimizing_move_on_return, -1,
+ /* DiagArray530 */ diag::ext_gnu_ptr_func_arith, diag::ext_gnu_subscript_void_type, diag::ext_gnu_void_ptr, diag::ext_sizeof_alignof_function_type, diag::ext_sizeof_alignof_void_type, diag::warn_sub_ptr_zero_size_types, -1,
+ /* DiagArray531 */ diag::warn_cast_nonnull_to_bool, diag::warn_impcast_pointer_to_bool, -1,
+ /* DiagArray532 */ diag::ext_typecheck_comparison_of_pointer_integer, -1,
+ /* DiagArray533 */ diag::ext_typecheck_convert_incompatible_pointer_sign, -1,
+ /* DiagArray535 */ diag::ext_typecheck_cond_incompatible_pointers, -1,
+ /* DiagArray536 */ diag::warn_side_effects_typeid, -1,
+ /* DiagArray537 */ diag::warn_pragma_attribute_unused, -1,
+ /* DiagArray538 */ diag::pp_pragma_once_in_main_file, -1,
+ /* DiagArray539 */ diag::warn_pragma_pack_modified_after_include, diag::warn_pragma_pack_no_pop_eof, -1,
+ /* DiagArray540 */ diag::warn_pragma_pack_non_default_at_include, -1,
+ /* DiagArray541 */ diag::pp_pragma_sysheader_in_main_file, -1,
+ /* DiagArray542 */ diag::warn_redefine_extname_not_applied, -1,
+ /* DiagArray543 */ diag::ext_predef_outside_function, -1,
+ /* DiagArray544 */ diag::warn_private_extern, -1,
+ /* DiagArray545 */ diag::warn_use_of_private_header_outside_module, -1,
+ /* DiagArray546 */ diag::warn_mmap_mismatched_private_module_name, diag::warn_mmap_mismatched_private_submodule, diag::warn_mmap_redundant_export_as, diag::warn_no_priv_submodule_use_toplevel, -1,
+ /* DiagArray547 */ diag::warn_profile_data_missing, -1,
+ /* DiagArray548 */ diag::warn_profile_data_out_of_date, -1,
+ /* DiagArray549 */ diag::warn_profile_data_unprofiled, -1,
+ /* DiagArray550 */ diag::warn_property_access_suggest, -1,
+ /* DiagArray551 */ diag::warn_property_attr_mismatch, diag::warn_property_attribute, diag::warn_property_redecl_getter_mismatch, diag::warn_readonly_property, -1,
+ /* DiagArray552 */ diag::warn_unimplemented_protocol_method, -1,
+ /* DiagArray553 */ diag::warn_protocol_property_mismatch, -1,
+ /* DiagArray554 */ diag::err_func_returning_qualified_void, -1,
+ /* DiagArray555 */ diag::warn_quoted_include_in_framework_header, -1,
+ /* DiagArray556 */ diag::warn_for_range_const_reference_copy, diag::warn_for_range_copy, diag::warn_for_range_variable_always_copy, -1,
+ /* DiagArray557 */ diag::warn_auto_readonly_iboutlet_property, -1,
+ /* DiagArray558 */ diag::warn_bad_receiver_type, -1,
+ /* DiagArray559 */ diag::warn_receiver_forward_class, diag::warn_receiver_forward_instance, -1,
+ /* DiagArray560 */ diag::ext_member_redeclared, -1,
+ /* DiagArray562 */ diag::warn_redundant_move_on_return, -1,
+ /* DiagArray563 */ diag::warn_redundant_parens_around_declarator, -1,
+ /* DiagArray564 */ diag::ext_register_storage_class, -1,
+ /* DiagArray565 */ diag::warn_reinterpret_different_from_static, -1,
+ /* DiagArray566 */ diag::remark_fe_backend_plugin, -1,
+ /* DiagArray567 */ diag::warn_initializer_out_of_order, -1,
+ /* DiagArray568 */ diag::warn_objc_requires_super_protocol, -1,
+ /* DiagArray569 */ diag::warn_pp_macro_is_reserved_id, -1,
+ /* DiagArray570 */ diag::ext_ms_reserved_user_defined_literal, diag::ext_reserved_user_defined_literal, -1,
+ /* DiagArray571 */ diag::ext_retained_language_linkage, -1,
+ /* DiagArray572 */ diag::warn_ret_addr_label, diag::warn_ret_local_temp_addr_ref, diag::warn_ret_stack_addr_ref, -1,
+ /* DiagArray573 */ diag::warn_return_std_move, -1,
+ /* DiagArray574 */ diag::warn_return_std_move_in_cxx11, -1,
+ /* DiagArray575 */ diag::ext_return_has_expr, diag::ext_return_missing_expr, diag::warn_falloff_nonvoid_coroutine, diag::warn_falloff_nonvoid_function, diag::warn_falloff_nonvoid_lambda, diag::warn_maybe_falloff_nonvoid_coroutine, diag::warn_maybe_falloff_nonvoid_function, diag::warn_maybe_falloff_nonvoid_lambda, diag::warn_return_missing_expr, -1,
+ /* DiagArray576 */ diag::warn_return_value_udt, diag::warn_return_value_udt_incomplete, -1,
+ /* DiagArray577 */ diag::remark_sanitize_address_insert_extra_padding_accepted, diag::remark_sanitize_address_insert_extra_padding_rejected, -1,
+ /* DiagArray578 */ diag::warn_attribute_section_on_redeclaration, diag::warn_duplicate_codeseg_attribute, diag::warn_mismatched_section, -1,
+ /* DiagArray579 */ diag::warn_unimplemented_selector, -1,
+ /* DiagArray580 */ diag::warn_multiple_selectors, -1,
+ /* DiagArray581 */ diag::warn_self_assignment_builtin, -1,
+ /* DiagArray582 */ diag::warn_identity_field_assign, -1,
+ /* DiagArray583 */ diag::warn_self_assignment_overloaded, -1,
+ /* DiagArray584 */ diag::warn_self_move, -1,
+ /* DiagArray585 */ diag::warn_semicolon_before_method_body, -1,
+ /* DiagArray586 */ diag::warn_missing_sentinel, diag::warn_not_enough_argument, -1,
+ /* DiagArray588 */ diag::warn_fe_serialized_diag_failure, diag::warn_fe_serialized_diag_merge_failure, -1,
+ /* DiagArray589 */ diag::warn_decl_shadow, -1,
+ /* DiagArray591 */ diag::warn_shadow_field, -1,
+ /* DiagArray592 */ diag::warn_ctor_parm_shadows_field, -1,
+ /* DiagArray593 */ diag::warn_modifying_shadowing_decl, -1,
+ /* DiagArray594 */ diag::warn_ivar_use_hidden, -1,
+ /* DiagArray595 */ diag::warn_decl_shadow_uncaptured_local, -1,
+ /* DiagArray596 */ diag::warn_shift_negative, -1,
+ /* DiagArray597 */ diag::warn_shift_gt_typewidth, -1,
+ /* DiagArray598 */ diag::warn_shift_lhs_negative, -1,
+ /* DiagArray599 */ diag::warn_addition_in_bitshift, -1,
+ /* DiagArray600 */ diag::warn_shift_result_gt_typewidth, -1,
+ /* DiagArray601 */ diag::warn_shift_result_sets_sign_bit, -1,
+ /* DiagArray602 */ diag::warn_impcast_integer_64_32, -1,
+ /* DiagArray603 */ diag::warn_mixed_sign_comparison, -1,
+ /* DiagArray604 */ diag::warn_impcast_integer_sign, diag::warn_impcast_integer_sign_conditional, diag::warn_impcast_nonnegative_result, -1,
+ /* DiagArray606 */ diag::warn_no_underlying_type_specified_for_enum_bitfield, -1,
+ /* DiagArray607 */ diag::warn_sizeof_array_param, -1,
+ /* DiagArray608 */ diag::warn_sizeof_array_decay, -1,
+ /* DiagArray609 */ diag::warn_division_sizeof_ptr, -1,
+ /* DiagArray610 */ diag::warn_sizeof_pointer_expr_memaccess, diag::warn_sizeof_pointer_type_memaccess, -1,
+ /* DiagArray611 */ diag::warn_slash_u_filename, -1,
+ /* DiagArray612 */ diag::warn_sometimes_uninit_var, -1,
+ /* DiagArray613 */ diag::warn_omp_nesting_simd, diag::warn_pragma_omp_ignored, -1,
+ /* DiagArray614 */ diag::warn_sampler_initializer_invalid_bits, -1,
+ /* DiagArray616 */ diag::ext_in_class_initializer_float_type_cxx11, -1,
+ /* DiagArray617 */ diag::ext_internal_in_extern_inline, diag::ext_internal_in_extern_inline_quiet, -1,
+ /* DiagArray618 */ diag::warn_static_inline_explicit_inst_ignored, -1,
+ /* DiagArray619 */ diag::warn_static_local_in_extern_inline, -1,
+ /* DiagArray620 */ diag::warn_static_self_reference_in_init, -1,
+ /* DiagArray621 */ diag::warn_stdlibcxx_not_found, -1,
+ /* DiagArray633 */ diag::warn_strict_prototypes, -1,
+ /* DiagArray634 */ diag::warn_strict_multiple_method_decl, -1,
+ /* DiagArray635 */ diag::warn_stringcompare, -1,
+ /* DiagArray636 */ diag::warn_impcast_string_literal_to_bool, -1,
+ /* DiagArray637 */ diag::warn_string_plus_char, -1,
+ /* DiagArray638 */ diag::warn_string_plus_int, -1,
+ /* DiagArray639 */ diag::warn_strlcpycat_wrong_size, -1,
+ /* DiagArray640 */ diag::warn_strncat_large_size, diag::warn_strncat_src_size, diag::warn_strncat_wrong_size, -1,
+ /* DiagArray641 */ diag::ext_typecheck_base_super, -1,
+ /* DiagArray642 */ diag::warn_suspicious_bzero_size, -1,
+ /* DiagArray644 */ diag::warn_case_value_overflow, diag::warn_missing_case, diag::warn_not_in_enum, -1,
+ /* DiagArray645 */ diag::warn_bool_switch_condition, -1,
+ /* DiagArray647 */ diag::warn_def_missing_case, -1,
+ /* DiagArray648 */ diag::warn_sync_fetch_and_nand_semantics_change, -1,
+ /* DiagArray650 */ diag::warn_comparison_always, diag::warn_comparison_bitwise_always, -1,
+ /* DiagArray651 */ diag::warn_tautological_bool_compare, -1,
+ /* DiagArray653 */ diag::warn_out_of_range_compare, -1,
+ /* DiagArray654 */ diag::warn_tautological_overlap_comparison, -1,
+ /* DiagArray655 */ diag::warn_nonnull_expr_compare, diag::warn_null_pointer_compare, -1,
+ /* DiagArray656 */ diag::warn_tautological_constant_compare, -1,
+ /* DiagArray657 */ diag::warn_address_of_reference_null_compare, diag::warn_this_null_compare, -1,
+ /* DiagArray658 */ diag::warn_unsigned_enum_always_true_comparison, -1,
+ /* DiagArray659 */ diag::warn_unsigned_always_true_comparison, -1,
+ /* DiagArray660 */ diag::ext_typecheck_decl_incomplete_type, -1,
+ /* DiagArray662 */ diag::warn_acquired_before, diag::warn_acquired_before_after_cycle, diag::warn_cannot_resolve_lock, diag::warn_double_lock, diag::warn_expecting_lock_held_on_loop, diag::warn_expecting_locked, diag::warn_fun_excludes_mutex, diag::warn_fun_requires_lock, diag::warn_lock_exclusive_and_shared, diag::warn_lock_some_predecessors, diag::warn_no_unlock, diag::warn_unlock_but_no_lock, diag::warn_unlock_kind_mismatch, diag::warn_var_deref_requires_any_lock, diag::warn_var_deref_requires_lock, diag::warn_variable_requires_any_lock, diag::warn_variable_requires_lock, -1,
+ /* DiagArray663 */ diag::warn_invalid_capability_name, diag::warn_thread_attribute_argument_not_lockable, diag::warn_thread_attribute_decl_not_lockable, diag::warn_thread_attribute_decl_not_pointer, diag::warn_thread_attribute_ignored, diag::warn_thread_attribute_not_on_capability_member, diag::warn_thread_attribute_not_on_non_static_member, -1,
+ /* DiagArray664 */ diag::warn_thread_safety_beta, -1,
+ /* DiagArray665 */ diag::warn_acquire_requires_negative_cap, -1,
+ /* DiagArray666 */ diag::warn_fun_requires_lock_precise, diag::warn_var_deref_requires_lock_precise, diag::warn_variable_requires_lock_precise, -1,
+ /* DiagArray667 */ diag::warn_guarded_pass_by_reference, diag::warn_pt_guarded_pass_by_reference, -1,
+ /* DiagArray668 */ diag::warn_thread_safety_verbose, -1,
+ /* DiagArray669 */ diag::trigraph_converted, diag::trigraph_ends_block_comment, diag::trigraph_ignored, diag::trigraph_ignored_block_comment, -1,
+ /* DiagArray671 */ diag::warn_type_safety_null_pointer_required, diag::warn_type_safety_type_mismatch, diag::warn_type_tag_for_datatype_wrong_kind, -1,
+ /* DiagArray672 */ diag::ext_redefinition_of_typedef, -1,
+ /* DiagArray673 */ diag::ext_typename_missing, -1,
+ /* DiagArray674 */ diag::warn_fe_unable_to_open_stats_file, -1,
+ /* DiagArray675 */ diag::warn_unavailable_fwdclass_message, -1,
+ /* DiagArray676 */ diag::warn_undeclared_selector, diag::warn_undeclared_selector_with_typo, -1,
+ /* DiagArray677 */ diag::warn_pp_undef_identifier, -1,
+ /* DiagArray678 */ diag::warn_address_of_reference_bool_conversion, diag::warn_this_bool_conversion, -1,
+ /* DiagArray679 */ diag::warn_func_template_missing, -1,
+ /* DiagArray680 */ diag::warn_undefined_inline, -1,
+ /* DiagArray681 */ diag::warn_undefined_internal, -1,
+ /* DiagArray682 */ diag::ext_undefined_internal_type, -1,
+ /* DiagArray683 */ diag::warn_pointer_indirection_from_incompatible_type, diag::warn_undefined_reinterpret_cast, -1,
+ /* DiagArray684 */ diag::warn_var_template_missing, -1,
+ /* DiagArray685 */ diag::warn_side_effects_unevaluated_context, -1,
+ /* DiagArray686 */ diag::warn_unguarded_availability, -1,
+ /* DiagArray687 */ diag::warn_unguarded_availability_new, -1,
+ /* DiagArray688 */ diag::warn_ucn_escape_incomplete, diag::warn_ucn_escape_no_digits, diag::warn_ucn_escape_surrogate, diag::warn_ucn_not_valid_in_c89, diag::warn_ucn_not_valid_in_c89_literal, -1,
+ /* DiagArray689 */ diag::warn_utf8_symbol_homoglyph, -1,
+ /* DiagArray690 */ diag::ext_unicode_whitespace, -1,
+ /* DiagArray691 */ diag::warn_utf8_symbol_zero_width, -1,
+ /* DiagArray692 */ diag::warn_base_class_is_uninit, diag::warn_field_is_uninit, diag::warn_reference_field_is_uninit, diag::warn_uninit_byref_blockvar_captured_by_block, diag::warn_uninit_self_reference_in_init, diag::warn_uninit_self_reference_in_reference_init, diag::warn_uninit_var, -1,
+ /* DiagArray693 */ diag::warn_drv_unknown_argument_clang_cl, diag::warn_drv_unknown_argument_clang_cl_with_suggestion, -1,
+ /* DiagArray694 */ diag::warn_unknown_attribute_ignored, -1,
+ /* DiagArray695 */ diag::ext_unknown_escape, -1,
+ /* DiagArray696 */ diag::ext_on_off_switch_syntax, diag::ext_pragma_syntax_eod, diag::ext_stdc_pragma_ignored, diag::warn_pragma_diagnostic_cannot_pop, diag::warn_pragma_diagnostic_invalid, diag::warn_pragma_diagnostic_invalid_option, diag::warn_pragma_diagnostic_invalid_token, diag::warn_pragma_ignored, diag::warn_pragma_include_alias_expected, diag::warn_pragma_include_alias_expected_filename, diag::warn_pragma_include_alias_mismatch_angle, diag::warn_pragma_include_alias_mismatch_quote, diag::warn_pragma_warning_expected, diag::warn_pragma_warning_expected_number, diag::warn_pragma_warning_push_level, diag::warn_pragma_warning_spec_invalid, diag::warn_stdc_fenv_access_not_supported, -1,
+ /* DiagArray697 */ diag::warn_unknown_sanitizer_ignored, -1,
+ /* DiagArray698 */ diag::warn_pragma_diagnostic_unknown_warning, diag::warn_unknown_diag_option, diag::warn_unknown_warning_specifier, -1,
+ /* DiagArray699 */ diag::ext_template_arg_unnamed_type, -1,
+ /* DiagArray700 */ diag::warn_unneeded_internal_decl, diag::warn_unneeded_static_internal_decl, -1,
+ /* DiagArray701 */ diag::warn_unneeded_member_function, -1,
+ /* DiagArray702 */ diag::warn_unreachable, -1,
+ /* DiagArray704 */ diag::warn_unreachable_break, -1,
+ /* DiagArray705 */ diag::warn_unreachable_loop_increment, -1,
+ /* DiagArray706 */ diag::warn_unreachable_return, -1,
+ /* DiagArray707 */ diag::warn_unsequenced_mod_mod, diag::warn_unsequenced_mod_use, -1,
+ /* DiagArray708 */ diag::warn_target_unsupported_abs2008, diag::warn_target_unsupported_abslegacy, -1,
+ /* DiagArray709 */ diag::warn_at_available_unchecked_use, -1,
+ /* DiagArray710 */ diag::warn_target_unsupported_compact_branches, -1,
+ /* DiagArray711 */ diag::warn_attribute_dll_instantiated_base_class, -1,
+ /* DiagArray712 */ diag::warn_template_qualified_friend_ignored, diag::warn_template_qualified_friend_unsupported, -1,
+ /* DiagArray713 */ diag::warn_drv_unsupported_gpopt, -1,
+ /* DiagArray714 */ diag::warn_target_unsupported_nan2008, diag::warn_target_unsupported_nanlegacy, -1,
+ /* DiagArray715 */ diag::warn_drv_unsupported_debug_info_opt_for_target, -1,
+ /* DiagArray716 */ diag::warn_attribute_protected_visibility, -1,
+ /* DiagArray717 */ diag::ext_partial_specs_not_deducible, -1,
+ /* DiagArray720 */ diag::warn_drv_diagnostics_hotness_requires_pgo, diag::warn_drv_empty_joined_argument, diag::warn_drv_input_file_unused, diag::warn_drv_input_file_unused_by_cpp, diag::warn_drv_preprocessed_input_file_unused, diag::warn_drv_unused_argument, diag::warn_ignored_clang_option, -1,
+ /* DiagArray721 */ diag::warn_unused_comparison, -1,
+ /* DiagArray722 */ diag::warn_unused_const_variable, -1,
+ /* DiagArray723 */ diag::warn_unused_exception_param, -1,
+ /* DiagArray724 */ diag::warn_unused_function, -1,
+ /* DiagArray725 */ diag::warn_unused_property_expr, -1,
+ /* DiagArray726 */ diag::warn_unused_label, -1,
+ /* DiagArray727 */ diag::warn_unused_lambda_capture, -1,
+ /* DiagArray728 */ diag::warn_unused_local_typedef, -1,
+ /* DiagArray730 */ diag::pp_macro_not_used, -1,
+ /* DiagArray731 */ diag::warn_unused_member_function, -1,
+ /* DiagArray732 */ diag::warn_unused_parameter, -1,
+ /* DiagArray733 */ diag::warn_unused_private_field, -1,
+ /* DiagArray734 */ diag::warn_unused_property_backing_ivar, -1,
+ /* DiagArray735 */ diag::warn_unused_result, -1,
+ /* DiagArray736 */ diag::warn_unused_template, -1,
+ /* DiagArray737 */ diag::warn_unused_call, diag::warn_unused_container_subscript_expr, diag::warn_unused_expr, diag::warn_unused_voidptr, -1,
+ /* DiagArray738 */ diag::warn_unused_variable, -1,
+ /* DiagArray739 */ diag::warn_unused_volatile, -1,
+ /* DiagArray740 */ diag::warn_used_but_marked_unused, -1,
+ /* DiagArray741 */ diag::warn_user_literal_reserved, -1,
+ /* DiagArray742 */ diag::warn_diagnose_if_succeeded, -1,
+ /* DiagArray743 */ diag::warn_second_arg_of_va_start_not_last_named_param, diag::warn_second_parameter_to_va_arg_never_compatible, diag::warn_va_start_type_is_undefined, -1,
+ /* DiagArray744 */ diag::ext_named_variadic_macro, diag::ext_pp_bad_vaopt_use, diag::ext_variadic_macro, -1,
+ /* DiagArray745 */ diag::warn_typecheck_vector_element_sizes_not_equal, -1,
+ /* DiagArray746 */ diag::warn_incompatible_vectors, -1,
+ /* DiagArray748 */ diag::warn_empty_parens_are_function_decl, diag::warn_parens_disambiguated_as_function_declaration, diag::warn_parens_disambiguated_as_variable_declaration, -1,
+ /* DiagArray749 */ diag::warn_decl_in_param_list, diag::warn_redefinition_in_param_list, -1,
+ /* DiagArray750 */ diag::warn_vla_used, -1,
+ /* DiagArray751 */ diag::ext_vla, -1,
+ /* DiagArray752 */ diag::ext_typecheck_indirection_through_void_pointer, -1,
+ /* DiagArray754 */ diag::warn_weak_template_vtable, -1,
+ /* DiagArray755 */ diag::warn_weak_vtable, -1,
+ /* DiagArray756 */ diag::ext_deprecated_string_literal_conversion, -1,
+ /* DiagArray758 */ diag::warn_zero_as_null_pointer_constant, -1,
+ /* DiagArray759 */ diag::ext_typecheck_zero_array_size, -1,
};
static const int16_t DiagSubGroups[] = {
/* Empty */ -1,
- /* DiagSubGroup0 */ 213, -1,
- /* DiagSubGroup4 */ 15, 213, -1,
- /* DiagSubGroup11 */ 520, 622, 642, -1,
- /* DiagSubGroup15 */ 416, 508, 631, 632, -1,
+ /* DiagSubGroup0 */ 220, -1,
+ /* DiagSubGroup4 */ 15, 220, -1,
+ /* DiagSubGroup11 */ 531, 635, 655, -1,
+ /* DiagSubGroup15 */ 425, 519, 644, 645, -1,
/* DiagSubGroup23 */ 30, 29, 26, -1,
/* DiagSubGroup28 */ 25, -1,
/* DiagSubGroup34 */ 36, 35, -1,
- /* DiagSubGroup44 */ 281, 145, -1,
- /* DiagSubGroup47 */ 681, 274, -1,
- /* DiagSubGroup56 */ 84, 104, 249, -1,
+ /* DiagSubGroup44 */ 289, 148, -1,
+ /* DiagSubGroup47 */ 694, 282, -1,
+ /* DiagSubGroup56 */ 84, 104, 257, -1,
/* DiagSubGroup57 */ 107, -1,
- /* DiagSubGroup64 */ 520, 665, -1,
+ /* DiagSubGroup64 */ 531, 678, -1,
/* DiagSubGroup65 */ 64, -1,
/* DiagSubGroup72 */ 75, -1,
/* DiagSubGroup73 */ 79, -1,
@@ -677,7 +688,7 @@
/* DiagSubGroup85 */ 101, 99, -1,
/* DiagSubGroup86 */ 85, 102, 100, -1,
/* DiagSubGroup87 */ 84, -1,
- /* DiagSubGroup88 */ 167, 163, 89, 99, -1,
+ /* DiagSubGroup88 */ 173, 169, 89, 99, -1,
/* DiagSubGroup90 */ 88, 100, -1,
/* DiagSubGroup92 */ 87, -1,
/* DiagSubGroup93 */ 88, -1,
@@ -689,90 +700,93 @@
/* DiagSubGroup105 */ 103, 104, -1,
/* DiagSubGroup106 */ 109, 111, 103, 101, 99, -1,
/* DiagSubGroup110 */ 106, 107, 108, 105, 102, 100, -1,
- /* DiagSubGroup123 */ 432, -1,
- /* DiagSubGroup126 */ 125, -1,
- /* DiagSubGroup132 */ 59, -1,
- /* DiagSubGroup136 */ 64, 132, 203, 60, 221, 590, 321, 289, 286, 346, 429, 444, 462, 592, 623, -1,
- /* DiagSubGroup137 */ 444, -1,
- /* DiagSubGroup138 */ 139, -1,
- /* DiagSubGroup141 */ 2, -1,
- /* DiagSubGroup146 */ 148, 149, 560, -1,
- /* DiagSubGroup158 */ 159, 160, 161, 163, 167, 168, 169, -1,
- /* DiagSubGroup165 */ 166, -1,
- /* DiagSubGroup169 */ 76, -1,
- /* DiagSubGroup175 */ 176, -1,
- /* DiagSubGroup180 */ 182, 181, -1,
- /* DiagSubGroup183 */ 184, -1,
- /* DiagSubGroup193 */ 161, -1,
- /* DiagSubGroup194 */ 433, -1,
- /* DiagSubGroup200 */ 216, -1,
- /* DiagSubGroup201 */ 202, -1,
- /* DiagSubGroup213 */ 398, 279, 315, 573, 401, 591, 719, 446, -1,
- /* DiagSubGroup215 */ 108, 80, -1,
- /* DiagSubGroup221 */ 223, 224, -1,
- /* DiagSubGroup226 */ 227, 234, 434, 232, 233, 228, -1,
- /* DiagSubGroup235 */ 230, 232, 233, -1,
- /* DiagSubGroup244 */ 245, 246, 248, 249, 250, 251, 252, 253, 254, 255, 256, 738, 257, 258, 259, 260, 261, 262, 548, 263, 264, 265, 266, 267, 268, 746, 269, 270, -1,
- /* DiagSubGroup278 */ 276, 277, -1,
- /* DiagSubGroup280 */ 287, 288, -1,
- /* DiagSubGroup284 */ 285, -1,
- /* DiagSubGroup301 */ 302, 298, -1,
- /* DiagSubGroup307 */ 308, 431, -1,
- /* DiagSubGroup312 */ 163, -1,
- /* DiagSubGroup322 */ 321, -1,
- /* DiagSubGroup323 */ 324, -1,
- /* DiagSubGroup326 */ 275, -1,
- /* DiagSubGroup348 */ 109, -1,
- /* DiagSubGroup351 */ 82, -1,
- /* DiagSubGroup352 */ 225, 544, -1,
- /* DiagSubGroup362 */ 365, 381, 368, 377, 385, 388, 373, 389, 382, 383, 387, 375, 372, 369, 386, 384, 371, 379, 378, 376, 364, 367, 390, 363, 366, 370, 309, -1,
- /* DiagSubGroup416 */ 121, 125, 157, 225, 226, 280, 313, 394, 395, 417, 420, 555, 563, 569, 572, 595, 596, 625, 656, 679, 683, 705, 740, 467, 457, 458, 502, 532, 117, 211, 729, -1,
- /* DiagSubGroup417 */ 518, 550, 561, 572, -1,
- /* DiagSubGroup418 */ 381, -1,
- /* DiagSubGroup422 */ 83, -1,
- /* DiagSubGroup427 */ 89, -1,
- /* DiagSubGroup428 */ 591, 136, 347, -1,
- /* DiagSubGroup431 */ 430, -1,
- /* DiagSubGroup448 */ 449, -1,
- /* DiagSubGroup456 */ 481, -1,
- /* DiagSubGroup461 */ 484, -1,
- /* DiagSubGroup481 */ 482, -1,
- /* DiagSubGroup508 */ 350, 349, 62, 587, 501, 509, 147, -1,
- /* DiagSubGroup510 */ 673, -1,
- /* DiagSubGroup516 */ 112, 80, 82, 84, 220, 236, 246, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 267, 269, 270, 341, 351, 365, 366, 368, 370, 372, 377, 378, 384, 500, 738, 746, 669, 559, 128, 423, 153, 185, 343, 293, 195, 198, 451, 218, -1,
- /* DiagSubGroup527 */ 528, -1,
- /* DiagSubGroup530 */ 683, 278, 525, 527, -1,
- /* DiagSubGroup552 */ 167, -1,
- /* DiagSubGroup558 */ 78, -1,
- /* DiagSubGroup563 */ 564, -1,
- /* DiagSubGroup567 */ 568, -1,
- /* DiagSubGroup569 */ 571, 570, -1,
- /* DiagSubGroup575 */ 694, -1,
- /* DiagSubGroup577 */ 581, 582, -1,
- /* DiagSubGroup578 */ 577, 580, 583, 579, -1,
- /* DiagSubGroup580 */ 581, -1,
- /* DiagSubGroup603 */ 265, -1,
- /* DiagSubGroup630 */ 597, 192, 439, 359, 629, -1,
- /* DiagSubGroup637 */ 638, 642, 641, 644, -1,
- /* DiagSubGroup638 */ 640, -1,
- /* DiagSubGroup639 */ 643, 646, 645, -1,
- /* DiagSubGroup648 */ 650, 649, 653, 654, -1,
- /* DiagSubGroup672 */ 524, -1,
- /* DiagSubGroup673 */ 674, -1,
- /* DiagSubGroup679 */ 599, 607, -1,
- /* DiagSubGroup686 */ 111, -1,
- /* DiagSubGroup689 */ 692, -1,
- /* DiagSubGroup690 */ 689, 691, 693, -1,
- /* DiagSubGroup705 */ 706, 711, 713, 720, 714, 715, 724, 725, 721, -1,
- /* DiagSubGroup711 */ 687, -1,
- /* DiagSubGroup716 */ 715, -1,
- /* DiagSubGroup718 */ 688, -1,
- /* DiagSubGroup723 */ 687, -1,
- /* DiagSubGroup724 */ 708, 722, 672, -1,
- /* DiagSubGroup725 */ 709, -1,
- /* DiagSubGroup734 */ 733, -1,
- /* DiagSubGroup743 */ 169, -1,
- /* DiagSubGroup744 */ 743, -1,
+ /* DiagSubGroup124 */ 442, -1,
+ /* DiagSubGroup127 */ 126, -1,
+ /* DiagSubGroup133 */ 59, -1,
+ /* DiagSubGroup137 */ 64, 133, 210, 60, 229, 602, 330, 298, 295, 355, 439, 454, 472, 604, 636, -1,
+ /* DiagSubGroup138 */ 454, -1,
+ /* DiagSubGroup139 */ 140, -1,
+ /* DiagSubGroup142 */ 2, -1,
+ /* DiagSubGroup149 */ 151, 152, 572, -1,
+ /* DiagSubGroup163 */ 162, 160, -1,
+ /* DiagSubGroup164 */ 165, 166, 167, 169, 173, 174, 175, -1,
+ /* DiagSubGroup171 */ 172, -1,
+ /* DiagSubGroup175 */ 76, -1,
+ /* DiagSubGroup181 */ 182, -1,
+ /* DiagSubGroup186 */ 188, 187, -1,
+ /* DiagSubGroup189 */ 190, -1,
+ /* DiagSubGroup199 */ 167, -1,
+ /* DiagSubGroup200 */ 443, -1,
+ /* DiagSubGroup207 */ 224, -1,
+ /* DiagSubGroup208 */ 209, -1,
+ /* DiagSubGroup220 */ 407, 287, 324, 585, 410, 603, 732, 456, 204, -1,
+ /* DiagSubGroup222 */ 108, 80, -1,
+ /* DiagSubGroup223 */ 204, -1,
+ /* DiagSubGroup229 */ 231, 232, -1,
+ /* DiagSubGroup234 */ 235, 242, 444, 240, 241, 236, -1,
+ /* DiagSubGroup243 */ 238, 240, 241, -1,
+ /* DiagSubGroup252 */ 253, 254, 256, 257, 258, 259, 260, 261, 262, 263, 264, 751, 265, 266, 267, 268, 269, 270, 560, 271, 272, 273, 274, 275, 276, 759, 277, 278, -1,
+ /* DiagSubGroup286 */ 284, 285, -1,
+ /* DiagSubGroup288 */ 296, 297, -1,
+ /* DiagSubGroup292 */ 293, -1,
+ /* DiagSubGroup310 */ 311, 307, -1,
+ /* DiagSubGroup316 */ 317, 441, -1,
+ /* DiagSubGroup321 */ 169, -1,
+ /* DiagSubGroup331 */ 330, -1,
+ /* DiagSubGroup332 */ 333, -1,
+ /* DiagSubGroup335 */ 283, -1,
+ /* DiagSubGroup357 */ 109, -1,
+ /* DiagSubGroup360 */ 82, -1,
+ /* DiagSubGroup361 */ 233, 556, -1,
+ /* DiagSubGroup371 */ 374, 390, 377, 386, 394, 397, 382, 398, 391, 392, 396, 384, 381, 378, 395, 393, 380, 388, 387, 385, 373, 376, 399, 372, 375, 379, 318, -1,
+ /* DiagSubGroup425 */ 122, 126, 163, 233, 234, 288, 322, 403, 404, 426, 429, 567, 575, 581, 584, 607, 608, 638, 669, 692, 696, 718, 753, 477, 467, 468, 512, 544, 118, 218, 742, -1,
+ /* DiagSubGroup426 */ 529, 562, 573, 584, -1,
+ /* DiagSubGroup427 */ 390, -1,
+ /* DiagSubGroup431 */ 83, -1,
+ /* DiagSubGroup437 */ 89, -1,
+ /* DiagSubGroup438 */ 603, 137, 356, -1,
+ /* DiagSubGroup441 */ 440, -1,
+ /* DiagSubGroup458 */ 459, -1,
+ /* DiagSubGroup466 */ 491, -1,
+ /* DiagSubGroup471 */ 494, -1,
+ /* DiagSubGroup491 */ 492, -1,
+ /* DiagSubGroup513 */ 324, -1,
+ /* DiagSubGroup519 */ 359, 358, 62, 599, 511, 520, 150, -1,
+ /* DiagSubGroup521 */ 686, -1,
+ /* DiagSubGroup527 */ 112, 80, 82, 84, 228, 244, 254, 256, 257, 258, 259, 260, 261, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 275, 277, 278, 350, 360, 374, 375, 377, 379, 381, 386, 387, 393, 510, 751, 759, 461, 226, 682, 571, 129, 432, 157, 191, 352, 302, 201, 205, -1,
+ /* DiagSubGroup539 */ 540, -1,
+ /* DiagSubGroup542 */ 696, 286, 537, 539, -1,
+ /* DiagSubGroup564 */ 173, -1,
+ /* DiagSubGroup570 */ 78, -1,
+ /* DiagSubGroup575 */ 576, -1,
+ /* DiagSubGroup579 */ 580, -1,
+ /* DiagSubGroup581 */ 583, 582, -1,
+ /* DiagSubGroup587 */ 707, -1,
+ /* DiagSubGroup589 */ 593, 594, -1,
+ /* DiagSubGroup590 */ 589, 592, 595, 591, -1,
+ /* DiagSubGroup592 */ 593, -1,
+ /* DiagSubGroup616 */ 273, -1,
+ /* DiagSubGroup643 */ 610, 198, 449, 368, 642, -1,
+ /* DiagSubGroup650 */ 651, 655, 654, 657, -1,
+ /* DiagSubGroup651 */ 653, -1,
+ /* DiagSubGroup652 */ 656, 659, 658, -1,
+ /* DiagSubGroup661 */ 663, 662, 666, 667, -1,
+ /* DiagSubGroup685 */ 536, -1,
+ /* DiagSubGroup686 */ 687, -1,
+ /* DiagSubGroup692 */ 612, 620, -1,
+ /* DiagSubGroup699 */ 111, -1,
+ /* DiagSubGroup702 */ 705, -1,
+ /* DiagSubGroup703 */ 702, 704, 706, -1,
+ /* DiagSubGroup718 */ 719, 724, 726, 733, 727, 728, 737, 738, 734, -1,
+ /* DiagSubGroup724 */ 700, -1,
+ /* DiagSubGroup729 */ 728, -1,
+ /* DiagSubGroup731 */ 701, -1,
+ /* DiagSubGroup736 */ 700, -1,
+ /* DiagSubGroup737 */ 721, 735, 685, -1,
+ /* DiagSubGroup738 */ 722, -1,
+ /* DiagSubGroup747 */ 746, -1,
+ /* DiagSubGroup756 */ 175, -1,
+ /* DiagSubGroup757 */ 756, -1,
};
static const char DiagGroupNames[] = {
@@ -812,81 +826,84 @@
"ompat-binary-literal\033c++98-c++11-compat-pedantic\014c++98-compat#c++"
"98-compat-bind-to-temporary-copy\027c++98-compat-extra-semi%c++98-compa"
"t-local-type-template-args\025c++98-compat-pedantic'c++98-compat-unname"
- "d-type-template-args\016c11-extensions\nc99-compat\016c99-extensions\nc"
- "ast-align\027cast-calling-convention\020cast-of-sel-type\tcast-qual\023"
- "cast-qual-unrelated\nchar-align\017char-subscripts\014clang-cl-pch\015c"
- "lass-varargs\005comma\007comment\010comments\036compare-distinct-pointe"
- "r-types\026complex-component-init\031conditional-type-mismatch\031condi"
- "tional-uninitialized\015config-macros\023constant-conversion\030constan"
- "t-logical-operand\023constexpr-not-const\010consumed\nconversion\017con"
- "version-null\tcoroutine%coroutine-missing-unhandled-exception\026covere"
- "d-switch-default\003cpp\030cstring-format-directive\021ctor-dtor-privac"
- "y\013cuda-compat\030custom-atomic-properties\010dangling\015dangling-el"
- "se\016dangling-field\031dangling-initializer-list\tdate-time\023dealloc"
- "-in-category\035debug-compression-unavailable\033declaration-after-stat"
- "ement\032defaulted-function-deleted\026delegating-ctor-cycles\021delete"
- "-incomplete\027delete-non-virtual-dtor\ndeprecated\025deprecated-attrib"
- "utes\027deprecated-declarations!deprecated-dynamic-exception-spec\032de"
- "precated-implementations\031deprecated-increment-bool\031deprecated-obj"
- "c-isa-usage%deprecated-objc-pointer-introspection5deprecated-objc-point"
- "er-introspection-performSelector\023deprecated-register\027deprecated-t"
- "his-capture\033deprecated-writable-strings\022direct-ivar-access\030dis"
- "abled-macro-expansion\025disabled-optimization\014discard-qual\034distr"
- "ibuted-object-modifiers\013div-by-zero\020division-by-zero\036dll-attri"
- "bute-on-redeclaration%dllexport-explicit-instantiation-decl\032dllimpor"
- "t-static-field-def\015documentation\035documentation-deprecated-sync\022"
- "documentation-html\026documentation-pedantic\035documentation-unknown-c"
- "ommand\036dollar-in-identifier-extension\020double-promotion\030duplica"
- "te-decl-specifier\016duplicate-enum\024duplicate-method-arg\026duplicat"
- "e-method-match\022duplicate-protocol\027dynamic-class-memaccess\026dyna"
- "mic-exception-spec\006effc++\022embedded-directive\nempty-body\023empty"
- "-decomposition\026empty-translation-unit\013encode-type\014endif-labels"
- "\014enum-compare\023enum-compare-switch\017enum-conversion\016enum-too-"
- "large\nexceptions\025exit-time-destructors\024expansion-to-defined\021e"
- "xperimental-isel\030explicit-initialize-call\027explicit-ownership-type"
- "\017extern-c-compat\022extern-initializer\005extra\023extra-qualificati"
- "on\nextra-semi\014extra-tokens\010fallback\024fixed-enum-extension\tfla"
- "g-enum\031flexible-array-extensions\020float-conversion\013float-equal\031"
- "float-overflow-conversion\025float-zero-conversion\021for-loop-analysis"
- "\006format\021format-extra-args\030format-invalid-specifier\016format-n"
- "on-iso\021format-nonliteral\017format-pedantic\017format-security\nform"
- "at-y2k\022format-zero-length\010format=2\023four-char-constants\022fram"
- "e-larger-than=%framework-include-private-from-public\036function-def-in"
- "-objc-container\025function-multiversion\015future-compat\ngcc-compat\023"
- "global-constructors\003gnu\026gnu-alignof-expression\024gnu-anonymous-s"
- "truct\033gnu-array-member-paren-init\015gnu-auto-type\022gnu-binary-lit"
- "eral\016gnu-case-range\023gnu-complex-integer gnu-compound-literal-init"
- "ializer\037gnu-conditional-omitted-operand\016gnu-designator\025gnu-emp"
- "ty-initializer\020gnu-empty-struct\036gnu-flexible-array-initializer\037"
- "gnu-flexible-array-union-member\024gnu-folding-constant\026gnu-imaginar"
- "y-constant\020gnu-include-next\022gnu-label-as-value\023gnu-redeclared-"
- "enum\030gnu-statement-expression\025gnu-static-float-init$gnu-string-li"
- "teral-operator-template\016gnu-union-cast\"gnu-variable-sized-type-not-"
- "at-end\027gnu-zero-line-directive!gnu-zero-variadic-macro-arguments\014"
- "header-guard\016header-hygiene\025idiomatic-parentheses\022ignored-attr"
- "ibutes\035ignored-optimization-argument\030ignored-pragma-intrinsic\027"
- "ignored-pragma-optimize\017ignored-pragmas\022ignored-qualifiers\010imp"
- "licit\032implicit-atomic-properties*implicit-conversion-floating-point-"
- "to-bool implicit-exception-spec-mismatch\024implicit-fallthrough!implic"
- "it-fallthrough-per-function\031implicit-float-conversion\035implicit-fu"
- "nction-declaration\014implicit-int\027implicit-int-conversion\024implic"
- "it-retain-self\033implicitly-unsigned-literal\006import&import-preproce"
- "ssor-directive-pedantic\021inaccessible-base\032include-next-absolute-p"
- "ath\033include-next-outside-header\033incompatible-exception-spec#incom"
- "patible-function-pointer-types\"incompatible-library-redeclaration\026i"
- "ncompatible-ms-struct\032incompatible-pointer-types.incompatible-pointe"
- "r-types-discards-qualifiers\032incompatible-property-type\024incompatib"
- "le-sysroot'incomplete-framework-module-declaration\031incomplete-implem"
- "entation\021incomplete-module\023incomplete-umbrella\026inconsistent-dl"
- "limport(inconsistent-missing-destructor-override\035inconsistent-missin"
- "g-override\016increment-bool\022infinite-recursion\tinit-self\025initia"
- "lizer-overrides\023injected-class-name\006inline\ninline-asm\021inline-"
- "new-delete\"instantiation-after-specialization\016int-conversion\017int"
- "-conversions\023int-to-pointer-cast\030int-to-void-pointer-cast\020inte"
- "ger-overflow\035invalid-command-line-argument\021invalid-constexpr\020i"
- "nvalid-iboutlet&invalid-initializer-from-system-header\035invalid-ios-d"
- "eployment-target\020invalid-noreturn\020invalid-offsetof invalid-or-non"
- "existent-directory\036invalid-partial-specialization\013invalid-pch\020"
+ "d-type-template-args\016c11-extensions\nc99-compat\016c99-extensions#ca"
+ "ll-to-pure-virtual-from-ctor-dtor\ncast-align\027cast-calling-conventio"
+ "n\020cast-of-sel-type\tcast-qual\023cast-qual-unrelated\nchar-align\017"
+ "char-subscripts\014clang-cl-pch\015class-varargs\005comma\007comment\010"
+ "comments\036compare-distinct-pointer-types\026complex-component-init\031"
+ "conditional-type-mismatch\031conditional-uninitialized\015config-macros"
+ "\023constant-conversion\030constant-logical-operand\023constexpr-not-co"
+ "nst\010consumed\nconversion\017conversion-null\tcoroutine%coroutine-mis"
+ "sing-unhandled-exception\026covered-switch-default\003cpp\030cstring-fo"
+ "rmat-directive\026ctad-maybe-unsupported\021ctor-dtor-privacy\003ctu\013"
+ "cuda-compat\030custom-atomic-properties\010dangling\015dangling-else\016"
+ "dangling-field\031dangling-initializer-list\023darwin-sdk-settings\tdat"
+ "e-time\023dealloc-in-category\035debug-compression-unavailable\033decla"
+ "ration-after-statement\032defaulted-function-deleted\026delegating-ctor"
+ "-cycles delete-abstract-non-virtual-dtor\021delete-incomplete$delete-no"
+ "n-abstract-non-virtual-dtor\027delete-non-virtual-dtor\ndeprecated\025d"
+ "eprecated-attributes\027deprecated-declarations!deprecated-dynamic-exce"
+ "ption-spec\032deprecated-implementations\031deprecated-increment-bool\031"
+ "deprecated-objc-isa-usage%deprecated-objc-pointer-introspection5depreca"
+ "ted-objc-pointer-introspection-performSelector\023deprecated-register\027"
+ "deprecated-this-capture\033deprecated-writable-strings\022direct-ivar-a"
+ "ccess\030disabled-macro-expansion\025disabled-optimization\014discard-q"
+ "ual\034distributed-object-modifiers\013div-by-zero\020division-by-zero\036"
+ "dll-attribute-on-redeclaration%dllexport-explicit-instantiation-decl\032"
+ "dllimport-static-field-def\015documentation\035documentation-deprecated"
+ "-sync\022documentation-html\026documentation-pedantic\035documentation-"
+ "unknown-command\036dollar-in-identifier-extension\020double-promotion\030"
+ "duplicate-decl-specifier\016duplicate-enum\024duplicate-method-arg\026d"
+ "uplicate-method-match\022duplicate-protocol\027dynamic-class-memaccess\026"
+ "dynamic-exception-spec\006effc++\022embedded-directive\nempty-body\023e"
+ "mpty-decomposition\017empty-init-stmt\026empty-translation-unit\013enco"
+ "de-type\014endif-labels\014enum-compare\023enum-compare-switch\017enum-"
+ "conversion\016enum-too-large\nexceptions\025exit-time-destructors\024ex"
+ "pansion-to-defined\021experimental-isel\030explicit-initialize-call\027"
+ "explicit-ownership-type\017extern-c-compat\022extern-initializer\005ext"
+ "ra\023extra-qualification\nextra-semi\017extra-semi-stmt\014extra-token"
+ "s\010fallback\024fixed-enum-extension\tflag-enum\031flexible-array-exte"
+ "nsions\020float-conversion\013float-equal\031float-overflow-conversion\025"
+ "float-zero-conversion\021for-loop-analysis\006format\021format-extra-ar"
+ "gs\030format-invalid-specifier\016format-non-iso\021format-nonliteral\017"
+ "format-pedantic\017format-security\nformat-y2k\022format-zero-length\010"
+ "format=2\023four-char-constants\022frame-larger-than=%framework-include"
+ "-private-from-public\036function-def-in-objc-container\025function-mult"
+ "iversion\015future-compat\ngcc-compat\023global-constructors\003gnu\026"
+ "gnu-alignof-expression\024gnu-anonymous-struct\033gnu-array-member-pare"
+ "n-init\015gnu-auto-type\022gnu-binary-literal\016gnu-case-range\023gnu-"
+ "complex-integer gnu-compound-literal-initializer\037gnu-conditional-omi"
+ "tted-operand\016gnu-designator\025gnu-empty-initializer\020gnu-empty-st"
+ "ruct\036gnu-flexible-array-initializer\037gnu-flexible-array-union-memb"
+ "er\024gnu-folding-constant\026gnu-imaginary-constant\020gnu-include-nex"
+ "t\022gnu-label-as-value\023gnu-redeclared-enum\030gnu-statement-express"
+ "ion\025gnu-static-float-init$gnu-string-literal-operator-template\016gn"
+ "u-union-cast\"gnu-variable-sized-type-not-at-end\027gnu-zero-line-direc"
+ "tive!gnu-zero-variadic-macro-arguments\014header-guard\016header-hygien"
+ "e\025idiomatic-parentheses\022ignored-attributes\035ignored-optimizatio"
+ "n-argument\030ignored-pragma-intrinsic\027ignored-pragma-optimize\017ig"
+ "nored-pragmas\022ignored-qualifiers\010implicit\032implicit-atomic-prop"
+ "erties*implicit-conversion-floating-point-to-bool implicit-exception-sp"
+ "ec-mismatch\024implicit-fallthrough!implicit-fallthrough-per-function\037"
+ "implicit-fixed-point-conversion\031implicit-float-conversion\035implici"
+ "t-function-declaration\014implicit-int\027implicit-int-conversion\024im"
+ "plicit-retain-self\033implicitly-unsigned-literal\006import&import-prep"
+ "rocessor-directive-pedantic\021inaccessible-base\032include-next-absolu"
+ "te-path\033include-next-outside-header\033incompatible-exception-spec#i"
+ "ncompatible-function-pointer-types\"incompatible-library-redeclaration\026"
+ "incompatible-ms-struct\032incompatible-pointer-types.incompatible-point"
+ "er-types-discards-qualifiers\032incompatible-property-type\024incompati"
+ "ble-sysroot'incomplete-framework-module-declaration\031incomplete-imple"
+ "mentation\021incomplete-module\023incomplete-umbrella\026inconsistent-d"
+ "llimport(inconsistent-missing-destructor-override\035inconsistent-missi"
+ "ng-override\016increment-bool\022infinite-recursion\tinit-self\025initi"
+ "alizer-overrides\023injected-class-name\006inline\ninline-asm\021inline"
+ "-new-delete\"instantiation-after-specialization\016int-conversion\017in"
+ "t-conversions\023int-to-pointer-cast\030int-to-void-pointer-cast\020int"
+ "eger-overflow\035invalid-command-line-argument\021invalid-constexpr\020"
+ "invalid-iboutlet&invalid-initializer-from-system-header\035invalid-ios-"
+ "deployment-target\020invalid-noreturn\020invalid-offsetof invalid-or-no"
+ "nexistent-directory\036invalid-partial-specialization\013invalid-pch\020"
"invalid-pp-token\027invalid-source-encoding\023invalid-token-paste\020j"
"ump-seh-finally\016keyword-compat\015keyword-macro\026knr-promoted-para"
"meter\030language-extension-token\023large-by-value-copy\006liblto\022l"
@@ -916,113 +933,114 @@
"module-import-in-extern-c\"modules-ambiguous-internal-linkage\037module"
"s-import-nested-redundant\004most\004move\014msvc-include\016msvc-not-f"
"ound\tmultichar\023multiple-move-vbase\tnarrowing\021nested-anon-types\016"
- "nested-externs\020new-returns-null\013newline-eof\015noexcept-type\007n"
- "on-gcc\033non-literal-null-conversion'non-modular-include-in-framework-"
- "module\035non-modular-include-in-module\017non-pod-varargs\020non-virtu"
- "al-dtor\007nonnull\025nonportable-cfstrings\030nonportable-include-path"
- "\037nonportable-system-include-path!nonportable-vector-initialization\024"
- "nontrivial-memaccess\023nsconsumed-mismatch\022nsreturns-mismatch\017nu"
- "ll-arithmetic\016null-character\017null-conversion\020null-dereference\027"
- "null-pointer-arithmetic\013nullability\030nullability-completeness\"nul"
- "lability-completeness-on-arrays\024nullability-declspec\025nullability-"
- "extension#nullability-inferred-on-nested-type\036nullable-to-nonnull-co"
- "nversion+objc-autosynthesis-property-ivar-name-match\027objc-circular-c"
- "ontainer\016objc-cocoa-api\034objc-designated-initializers\023objc-flex"
- "ible-array\037objc-forward-class-redefinition\024objc-interface-ivars\024"
- "objc-literal-compare\027objc-literal-conversion\027objc-macro-redefinit"
- "ion\021objc-messaging-id\022objc-method-access\037objc-missing-property"
- "-synthesis\030objc-missing-super-calls\032objc-multiple-method-names\"o"
- "bjc-noncopy-retain-block-property\032objc-nonunified-exceptions#objc-pr"
- "operty-assign-on-object-type\034objc-property-implementation\037objc-pr"
- "operty-implicit-mismatch*objc-property-matches-cocoa-ownership-rule\032"
- "objc-property-no-attribute\027objc-property-synthesis#objc-protocol-met"
- "hod-implementation objc-protocol-property-synthesis\030objc-protocol-qu"
- "alifiers\"objc-readonly-with-setter-property\026objc-redundant-api-use\032"
- "objc-redundant-literal-use\017objc-root-class\023objc-string-compare\031"
- "objc-string-concatenation\034objc-unsafe-perform-selector\003odr\016old"
- "-style-cast\024old-style-definition\027opencl-unsupported-rgba\016openm"
- "p-clauses\020openmp-loop-form\015openmp-target\016option-ignored!ordere"
- "d-compare-function-pointers\027out-of-line-declaration\025out-of-scope-"
- "function\014over-aligned\010overflow\022overlength-strings\037overloade"
- "d-shift-op-parentheses\022overloaded-virtual\017override-module\032over"
- "riding-method-mismatch\023overriding-t-option\006packed\006padded\013pa"
- "rentheses\024parentheses-equality\024partial-availability\004pass\015pa"
- "ss-analysis\013pass-failed\013pass-missed\015pch-date-time\010pedantic\026"
- "pedantic-core-features\020pessimizing-move\015pointer-arith\027pointer-"
- "bool-conversion\014pointer-sign\023pointer-to-int-cast\025pointer-type-"
- "mismatch potentially-evaluated-expression\026pragma-clang-attribute\032"
- "pragma-once-outside-header\013pragma-pack\036pragma-pack-suspicious-inc"
- "lude#pragma-system-header-outside-header\007pragmas&predefined-identifi"
- "er-outside-function\016private-extern\016private-header\016private-modu"
- "le\025profile-instr-missing\031profile-instr-out-of-date\030profile-ins"
- "tr-unprofiled\032property-access-dot-syntax\033property-attribute-misma"
- "tch\010protocol%protocol-property-synthesis-ambiguity\032qualified-void"
- "-return-type\"quoted-include-in-framework-header\023range-loop-analysis"
- "\032readonly-iboutlet-property\015receiver-expr\026receiver-forward-cla"
- "ss\027redeclared-class-member\017redundant-decls\016redundant-move\020r"
- "edundant-parens\010register\026reinterpret-base-class\025remark-backend"
- "-plugin\007reorder\030requires-super-attribute\021reserved-id-macro\035"
- "reserved-user-defined-literal\031retained-language-linkage\024return-st"
- "ack-address\017return-std-move\030return-std-move-in-c++11\013return-ty"
- "pe\025return-type-c-linkage\020sanitize-address\007section\010selector\026"
- "selector-type-mismatch\013self-assign\021self-assign-field\026self-assi"
- "gn-overloaded\tself-move\034semicolon-before-method-body\010sentinel\016"
- "sequence-point\026serialized-diagnostics\006shadow\nshadow-all\014shado"
- "w-field\033shadow-field-in-constructor$shadow-field-in-constructor-modi"
- "fied\013shadow-ivar\027shadow-uncaptured-local\024shift-count-negative\024"
- "shift-count-overflow\024shift-negative-value\024shift-op-parentheses\016"
- "shift-overflow\023shift-sign-overflow\020shorten-64-to-32\014sign-compa"
- "re\017sign-conversion\nsign-promo\024signed-enum-bitfield\025sizeof-arr"
- "ay-argument\022sizeof-array-decay\030sizeof-pointer-memaccess\020slash-"
- "u-filename\027sometimes-uninitialized\022source-uses-openmp\013spir-com"
- "pat\017stack-protector\021static-float-init\020static-in-inline$static-"
- "inline-explicit-instantiation\026static-local-in-inline\020static-self-"
- "init\023stdlibcxx-not-found\017strict-aliasing\021strict-aliasing=0\021"
- "strict-aliasing=1\021strict-aliasing=2\017strict-overflow\021strict-ove"
- "rflow=0\021strict-overflow=1\021strict-overflow=2\021strict-overflow=3\021"
- "strict-overflow=4\021strict-overflow=5\021strict-prototypes\025strict-s"
- "elector-match\016string-compare\021string-conversion\020string-plus-cha"
- "r\017string-plus-int\024strlcpy-strlcat-size\014strncat-size\033super-c"
- "lass-method-mismatch\020suspicious-bzero\024suspicious-memaccess\006swi"
- "tch\013switch-bool\016switch-default\013switch-enum%sync-fetch-and-nand"
- "-semantics-changed\005synth\024tautological-compare\035tautological-con"
- "stant-compare&tautological-constant-in-range-compare*tautological-const"
- "ant-out-of-range-compare\034tautological-overlap-compare\034tautologica"
- "l-pointer-compare\037tautological-type-limit-compare\036tautological-un"
- "defined-compare'tautological-unsigned-enum-zero-compare\"tautological-u"
- "nsigned-zero-compare$tentative-definition-incomplete-type\015thread-saf"
- "ety\026thread-safety-analysis\030thread-safety-attributes\022thread-saf"
- "ety-beta\026thread-safety-negative\025thread-safety-precise\027thread-s"
- "afety-reference\025thread-safety-verbose\ttrigraphs\013type-limits\013t"
- "ype-safety\024typedef-redefinition\020typename-missing\031unable-to-ope"
- "n-stats-file\030unavailable-declarations\023undeclared-selector\005unde"
- "f\031undefined-bool-conversion\027undefined-func-template\020undefined-"
- "inline\022undefined-internal\027undefined-internal-type\032undefined-re"
- "interpret-cast\026undefined-var-template\026unevaluated-expression\026u"
- "nguarded-availability\032unguarded-availability-new\007unicode\021unico"
- "de-homoglyph\022unicode-whitespace\022unicode-zero-width\015uninitializ"
- "ed\020unknown-argument\022unknown-attributes\027unknown-escape-sequence"
- "\017unknown-pragmas\022unknown-sanitizers\026unknown-warning-option\032"
- "unnamed-type-template-args\035unneeded-internal-declaration\030unneeded"
- "-member-function\020unreachable-code\033unreachable-code-aggressive\026"
- "unreachable-code-break\037unreachable-code-loop-increment\027unreachabl"
- "e-code-return\013unsequenced\017unsupported-abs\036unsupported-availabi"
- "lity-guard\016unsupported-cb#unsupported-dll-base-class-template\022uns"
- "upported-friend\021unsupported-gpopt\017unsupported-nan\026unsupported-"
- "target-opt\026unsupported-visibility\037unusable-partial-specialization"
- "\006unused\017unused-argument\034unused-command-line-argument\021unused"
- "-comparison\025unused-const-variable\032unused-exception-parameter\017u"
- "nused-function\032unused-getter-return-value\014unused-label\025unused-"
- "lambda-capture\024unused-local-typedef\025unused-local-typedefs\015unus"
- "ed-macros\026unused-member-function\020unused-parameter\024unused-priva"
- "te-field\024unused-property-ivar\015unused-result\017unused-template\014"
- "unused-value\017unused-variable\026unused-volatile-lvalue\026used-but-m"
- "arked-unused\025user-defined-literals\025user-defined-warnings\007varar"
- "gs\017variadic-macros\015vec-elem-size\021vector-conversion\022vector-c"
- "onversions\014vexing-parse\nvisibility\003vla\015vla-extension\024void-"
- "ptr-dereference\025volatile-register-var\025weak-template-vtables\014we"
- "ak-vtables\020writable-strings\015write-strings\035zero-as-null-pointer"
- "-constant\021zero-length-array"};
+ "nested-externs\020new-returns-null\013newline-eof\007noderef\015noexcep"
+ "t-type\007non-gcc\033non-literal-null-conversion'non-modular-include-in"
+ "-framework-module\035non-modular-include-in-module\017non-pod-varargs\020"
+ "non-virtual-dtor\007nonnull\025nonportable-cfstrings\030nonportable-inc"
+ "lude-path\037nonportable-system-include-path!nonportable-vector-initial"
+ "ization\024nontrivial-memaccess\023nsconsumed-mismatch\022nsreturns-mis"
+ "match\017null-arithmetic\016null-character\017null-conversion\020null-d"
+ "ereference\027null-pointer-arithmetic\013nullability\030nullability-com"
+ "pleteness\"nullability-completeness-on-arrays\024nullability-declspec\025"
+ "nullability-extension#nullability-inferred-on-nested-type\036nullable-t"
+ "o-nonnull-conversion+objc-autosynthesis-property-ivar-name-match\027obj"
+ "c-circular-container\016objc-cocoa-api\034objc-designated-initializers\023"
+ "objc-flexible-array\037objc-forward-class-redefinition\024objc-interfac"
+ "e-ivars\024objc-literal-compare\027objc-literal-conversion\027objc-macr"
+ "o-redefinition\021objc-messaging-id\022objc-method-access\037objc-missi"
+ "ng-property-synthesis\030objc-missing-super-calls\032objc-multiple-meth"
+ "od-names\"objc-noncopy-retain-block-property\032objc-nonunified-excepti"
+ "ons#objc-property-assign-on-object-type\034objc-property-implementation"
+ "\037objc-property-implicit-mismatch*objc-property-matches-cocoa-ownersh"
+ "ip-rule\032objc-property-no-attribute\027objc-property-synthesis#objc-p"
+ "rotocol-method-implementation objc-protocol-property-synthesis\030objc-"
+ "protocol-qualifiers\"objc-readonly-with-setter-property\026objc-redunda"
+ "nt-api-use\032objc-redundant-literal-use\017objc-root-class\023objc-str"
+ "ing-compare\031objc-string-concatenation\034objc-unsafe-perform-selecto"
+ "r\003odr\016old-style-cast\024old-style-definition\027opencl-unsupporte"
+ "d-rgba\016openmp-clauses\020openmp-loop-form\015openmp-target\016option"
+ "-ignored!ordered-compare-function-pointers\027out-of-line-declaration\025"
+ "out-of-scope-function\014over-aligned\010overflow\022overlength-strings"
+ "\037overloaded-shift-op-parentheses\022overloaded-virtual\015override-i"
+ "nit\017override-module\032overriding-method-mismatch\023overriding-t-op"
+ "tion\006packed\006padded\013parentheses\024parentheses-equality\024part"
+ "ial-availability\004pass\015pass-analysis\013pass-failed\013pass-missed"
+ "\015pch-date-time\010pedantic\026pedantic-core-features\020pessimizing-"
+ "move\015pointer-arith\027pointer-bool-conversion\027pointer-integer-com"
+ "pare\014pointer-sign\023pointer-to-int-cast\025pointer-type-mismatch po"
+ "tentially-evaluated-expression\026pragma-clang-attribute\032pragma-once"
+ "-outside-header\013pragma-pack\036pragma-pack-suspicious-include#pragma"
+ "-system-header-outside-header\007pragmas&predefined-identifier-outside-"
+ "function\016private-extern\016private-header\016private-module\025profi"
+ "le-instr-missing\031profile-instr-out-of-date\030profile-instr-unprofil"
+ "ed\032property-access-dot-syntax\033property-attribute-mismatch\010prot"
+ "ocol%protocol-property-synthesis-ambiguity\032qualified-void-return-typ"
+ "e\"quoted-include-in-framework-header\023range-loop-analysis\032readonl"
+ "y-iboutlet-property\015receiver-expr\026receiver-forward-class\027redec"
+ "lared-class-member\017redundant-decls\016redundant-move\020redundant-pa"
+ "rens\010register\026reinterpret-base-class\025remark-backend-plugin\007"
+ "reorder\030requires-super-attribute\021reserved-id-macro\035reserved-us"
+ "er-defined-literal\031retained-language-linkage\024return-stack-address"
+ "\017return-std-move\030return-std-move-in-c++11\013return-type\025retur"
+ "n-type-c-linkage\020sanitize-address\007section\010selector\026selector"
+ "-type-mismatch\013self-assign\021self-assign-field\026self-assign-overl"
+ "oaded\tself-move\034semicolon-before-method-body\010sentinel\016sequenc"
+ "e-point\026serialized-diagnostics\006shadow\nshadow-all\014shadow-field"
+ "\033shadow-field-in-constructor$shadow-field-in-constructor-modified\013"
+ "shadow-ivar\027shadow-uncaptured-local\024shift-count-negative\024shift"
+ "-count-overflow\024shift-negative-value\024shift-op-parentheses\016shif"
+ "t-overflow\023shift-sign-overflow\020shorten-64-to-32\014sign-compare\017"
+ "sign-conversion\nsign-promo\024signed-enum-bitfield\025sizeof-array-arg"
+ "ument\022sizeof-array-decay\022sizeof-pointer-div\030sizeof-pointer-mem"
+ "access\020slash-u-filename\027sometimes-uninitialized\022source-uses-op"
+ "enmp\013spir-compat\017stack-protector\021static-float-init\020static-i"
+ "n-inline$static-inline-explicit-instantiation\026static-local-in-inline"
+ "\020static-self-init\023stdlibcxx-not-found\017strict-aliasing\021stric"
+ "t-aliasing=0\021strict-aliasing=1\021strict-aliasing=2\017strict-overfl"
+ "ow\021strict-overflow=0\021strict-overflow=1\021strict-overflow=2\021st"
+ "rict-overflow=3\021strict-overflow=4\021strict-overflow=5\021strict-pro"
+ "totypes\025strict-selector-match\016string-compare\021string-conversion"
+ "\020string-plus-char\017string-plus-int\024strlcpy-strlcat-size\014strn"
+ "cat-size\033super-class-method-mismatch\020suspicious-bzero\024suspicio"
+ "us-memaccess\006switch\013switch-bool\016switch-default\013switch-enum%"
+ "sync-fetch-and-nand-semantics-changed\005synth\024tautological-compare\035"
+ "tautological-constant-compare&tautological-constant-in-range-compare*ta"
+ "utological-constant-out-of-range-compare\034tautological-overlap-compar"
+ "e\034tautological-pointer-compare\037tautological-type-limit-compare\036"
+ "tautological-undefined-compare'tautological-unsigned-enum-zero-compare\""
+ "tautological-unsigned-zero-compare$tentative-definition-incomplete-type"
+ "\015thread-safety\026thread-safety-analysis\030thread-safety-attributes"
+ "\022thread-safety-beta\026thread-safety-negative\025thread-safety-preci"
+ "se\027thread-safety-reference\025thread-safety-verbose\ttrigraphs\013ty"
+ "pe-limits\013type-safety\024typedef-redefinition\020typename-missing\031"
+ "unable-to-open-stats-file\030unavailable-declarations\023undeclared-sel"
+ "ector\005undef\031undefined-bool-conversion\027undefined-func-template\020"
+ "undefined-inline\022undefined-internal\027undefined-internal-type\032un"
+ "defined-reinterpret-cast\026undefined-var-template\026unevaluated-expre"
+ "ssion\026unguarded-availability\032unguarded-availability-new\007unicod"
+ "e\021unicode-homoglyph\022unicode-whitespace\022unicode-zero-width\015u"
+ "ninitialized\020unknown-argument\022unknown-attributes\027unknown-escap"
+ "e-sequence\017unknown-pragmas\022unknown-sanitizers\026unknown-warning-"
+ "option\032unnamed-type-template-args\035unneeded-internal-declaration\030"
+ "unneeded-member-function\020unreachable-code\033unreachable-code-aggres"
+ "sive\026unreachable-code-break\037unreachable-code-loop-increment\027un"
+ "reachable-code-return\013unsequenced\017unsupported-abs\036unsupported-"
+ "availability-guard\016unsupported-cb#unsupported-dll-base-class-templat"
+ "e\022unsupported-friend\021unsupported-gpopt\017unsupported-nan\026unsu"
+ "pported-target-opt\026unsupported-visibility\037unusable-partial-specia"
+ "lization\006unused\017unused-argument\034unused-command-line-argument\021"
+ "unused-comparison\025unused-const-variable\032unused-exception-paramete"
+ "r\017unused-function\032unused-getter-return-value\014unused-label\025u"
+ "nused-lambda-capture\024unused-local-typedef\025unused-local-typedefs\015"
+ "unused-macros\026unused-member-function\020unused-parameter\024unused-p"
+ "rivate-field\024unused-property-ivar\015unused-result\017unused-templat"
+ "e\014unused-value\017unused-variable\026unused-volatile-lvalue\026used-"
+ "but-marked-unused\025user-defined-literals\025user-defined-warnings\007"
+ "varargs\017variadic-macros\015vec-elem-size\021vector-conversion\022vec"
+ "tor-conversions\014vexing-parse\nvisibility\003vla\015vla-extension\024"
+ "void-ptr-dereference\025volatile-register-var\025weak-template-vtables\014"
+ "weak-vtables\020writable-strings\015write-strings\035zero-as-null-point"
+ "er-constant\021zero-length-array"};
#endif // GET_DIAG_ARRAYS
@@ -1081,700 +1099,713 @@
{ /* auto-storage-class */ 955, /* DiagArray50 */ 90, /* Empty */ 0 },
{ /* auto-var-id */ 974, /* DiagArray51 */ 92, /* Empty */ 0 },
{ /* availability */ 986, /* DiagArray52 */ 94, /* Empty */ 0 },
- { /* backend-plugin */ 999, /* DiagArray53 */ 103, /* Empty */ 0 },
- { /* backslash-newline-escape */ 1014, /* DiagArray54 */ 105, /* Empty */ 0 },
- { /* bad-function-cast */ 1039, /* DiagArray55 */ 107, /* Empty */ 0 },
+ { /* backend-plugin */ 999, /* DiagArray53 */ 104, /* Empty */ 0 },
+ { /* backslash-newline-escape */ 1014, /* DiagArray54 */ 106, /* Empty */ 0 },
+ { /* bad-function-cast */ 1039, /* DiagArray55 */ 108, /* Empty */ 0 },
{ /* binary-literal */ 1057, /* Empty */ 0, /* DiagSubGroup56 */ 30 },
- { /* bind-to-temporary-copy */ 1072, /* DiagArray57 */ 109, /* DiagSubGroup57 */ 34 },
- { /* binding-in-condition */ 1095, /* DiagArray58 */ 112, /* Empty */ 0 },
- { /* bitfield-constant-conversion */ 1116, /* DiagArray59 */ 114, /* Empty */ 0 },
- { /* bitfield-enum-conversion */ 1145, /* DiagArray60 */ 116, /* Empty */ 0 },
- { /* bitfield-width */ 1170, /* DiagArray61 */ 120, /* Empty */ 0 },
- { /* bitwise-op-parentheses */ 1185, /* DiagArray62 */ 123, /* Empty */ 0 },
- { /* block-capture-autoreleasing */ 1208, /* DiagArray63 */ 125, /* Empty */ 0 },
- { /* bool-conversion */ 1236, /* DiagArray64 */ 127, /* DiagSubGroup64 */ 36 },
+ { /* bind-to-temporary-copy */ 1072, /* DiagArray57 */ 110, /* DiagSubGroup57 */ 34 },
+ { /* binding-in-condition */ 1095, /* DiagArray58 */ 113, /* Empty */ 0 },
+ { /* bitfield-constant-conversion */ 1116, /* DiagArray59 */ 115, /* Empty */ 0 },
+ { /* bitfield-enum-conversion */ 1145, /* DiagArray60 */ 117, /* Empty */ 0 },
+ { /* bitfield-width */ 1170, /* DiagArray61 */ 121, /* Empty */ 0 },
+ { /* bitwise-op-parentheses */ 1185, /* DiagArray62 */ 124, /* Empty */ 0 },
+ { /* block-capture-autoreleasing */ 1208, /* DiagArray63 */ 126, /* Empty */ 0 },
+ { /* bool-conversion */ 1236, /* DiagArray64 */ 128, /* DiagSubGroup64 */ 36 },
{ /* bool-conversions */ 1252, /* Empty */ 0, /* DiagSubGroup65 */ 39 },
- { /* braced-scalar-init */ 1269, /* DiagArray66 */ 129, /* Empty */ 0 },
- { /* bridge-cast */ 1288, /* DiagArray67 */ 131, /* Empty */ 0 },
- { /* builtin-macro-redefined */ 1300, /* DiagArray68 */ 134, /* Empty */ 0 },
- { /* builtin-memcpy-chk-size */ 1324, /* DiagArray69 */ 137, /* Empty */ 0 },
- { /* builtin-requires-header */ 1348, /* DiagArray70 */ 139, /* Empty */ 0 },
- { /* c++-compat */ 1372, /* DiagArray71 */ 141, /* Empty */ 0 },
+ { /* braced-scalar-init */ 1269, /* DiagArray66 */ 130, /* Empty */ 0 },
+ { /* bridge-cast */ 1288, /* DiagArray67 */ 132, /* Empty */ 0 },
+ { /* builtin-macro-redefined */ 1300, /* DiagArray68 */ 135, /* Empty */ 0 },
+ { /* builtin-memcpy-chk-size */ 1324, /* DiagArray69 */ 138, /* Empty */ 0 },
+ { /* builtin-requires-header */ 1348, /* DiagArray70 */ 140, /* Empty */ 0 },
+ { /* c++-compat */ 1372, /* DiagArray71 */ 142, /* Empty */ 0 },
{ /* c++0x-compat */ 1383, /* Empty */ 0, /* DiagSubGroup72 */ 41 },
{ /* c++0x-extensions */ 1396, /* Empty */ 0, /* DiagSubGroup73 */ 43 },
{ /* c++0x-narrowing */ 1413, /* Empty */ 0, /* DiagSubGroup74 */ 45 },
- { /* c++11-compat */ 1429, /* DiagArray75 */ 143, /* DiagSubGroup75 */ 47 },
- { /* c++11-compat-deprecated-writable-strings */ 1442, /* DiagArray76 */ 154, /* Empty */ 0 },
+ { /* c++11-compat */ 1429, /* DiagArray75 */ 144, /* DiagSubGroup75 */ 47 },
+ { /* c++11-compat-deprecated-writable-strings */ 1442, /* DiagArray76 */ 155, /* Empty */ 0 },
{ /* c++11-compat-pedantic */ 1483, /* Empty */ 0, /* DiagSubGroup77 */ 54 },
- { /* c++11-compat-reserved-user-defined-literal */ 1505, /* DiagArray78 */ 156, /* Empty */ 0 },
- { /* c++11-extensions */ 1548, /* DiagArray79 */ 158, /* DiagSubGroup79 */ 59 },
- { /* c++11-extra-semi */ 1565, /* DiagArray80 */ 184, /* Empty */ 0 },
- { /* c++11-inline-namespace */ 1582, /* DiagArray81 */ 186, /* Empty */ 0 },
- { /* c++11-long-long */ 1605, /* DiagArray82 */ 188, /* Empty */ 0 },
- { /* c++11-narrowing */ 1621, /* DiagArray83 */ 190, /* Empty */ 0 },
- { /* c++14-binary-literal */ 1637, /* DiagArray84 */ 198, /* Empty */ 0 },
+ { /* c++11-compat-reserved-user-defined-literal */ 1505, /* DiagArray78 */ 157, /* Empty */ 0 },
+ { /* c++11-extensions */ 1548, /* DiagArray79 */ 159, /* DiagSubGroup79 */ 59 },
+ { /* c++11-extra-semi */ 1565, /* DiagArray80 */ 185, /* Empty */ 0 },
+ { /* c++11-inline-namespace */ 1582, /* DiagArray81 */ 187, /* Empty */ 0 },
+ { /* c++11-long-long */ 1605, /* DiagArray82 */ 189, /* Empty */ 0 },
+ { /* c++11-narrowing */ 1621, /* DiagArray83 */ 191, /* Empty */ 0 },
+ { /* c++14-binary-literal */ 1637, /* DiagArray84 */ 199, /* Empty */ 0 },
{ /* c++14-compat */ 1658, /* Empty */ 0, /* DiagSubGroup85 */ 63 },
{ /* c++14-compat-pedantic */ 1671, /* Empty */ 0, /* DiagSubGroup86 */ 66 },
- { /* c++14-extensions */ 1693, /* DiagArray87 */ 200, /* DiagSubGroup87 */ 70 },
+ { /* c++14-extensions */ 1693, /* DiagArray87 */ 201, /* DiagSubGroup87 */ 70 },
{ /* c++17-compat */ 1710, /* Empty */ 0, /* DiagSubGroup88 */ 72 },
- { /* c++17-compat-mangling */ 1723, /* DiagArray89 */ 209, /* Empty */ 0 },
+ { /* c++17-compat-mangling */ 1723, /* DiagArray89 */ 210, /* Empty */ 0 },
{ /* c++17-compat-pedantic */ 1745, /* Empty */ 0, /* DiagSubGroup90 */ 77 },
- { /* c++17-extensions */ 1767, /* DiagArray91 */ 211, /* Empty */ 0 },
+ { /* c++17-extensions */ 1767, /* DiagArray91 */ 212, /* Empty */ 0 },
{ /* c++1y-extensions */ 1784, /* Empty */ 0, /* DiagSubGroup92 */ 80 },
{ /* c++1z-compat */ 1801, /* Empty */ 0, /* DiagSubGroup93 */ 82 },
{ /* c++1z-compat-mangling */ 1814, /* Empty */ 0, /* DiagSubGroup94 */ 84 },
{ /* c++1z-extensions */ 1836, /* Empty */ 0, /* DiagSubGroup95 */ 86 },
- { /* c++2a-compat */ 1853, /* DiagArray96 */ 230, /* Empty */ 0 },
+ { /* c++2a-compat */ 1853, /* DiagArray96 */ 231, /* Empty */ 0 },
{ /* c++2a-compat-pedantic */ 1866, /* Empty */ 0, /* DiagSubGroup97 */ 88 },
- { /* c++2a-extensions */ 1888, /* DiagArray98 */ 234, /* Empty */ 0 },
- { /* c++98-c++11-c++14-c++17-compat */ 1905, /* DiagArray99 */ 239, /* Empty */ 0 },
- { /* c++98-c++11-c++14-c++17-compat-pedantic */ 1936, /* DiagArray100 */ 247, /* DiagSubGroup100 */ 90 },
- { /* c++98-c++11-c++14-compat */ 1976, /* DiagArray101 */ 249, /* Empty */ 0 },
- { /* c++98-c++11-c++14-compat-pedantic */ 2001, /* DiagArray102 */ 267, /* DiagSubGroup102 */ 92 },
- { /* c++98-c++11-compat */ 2035, /* DiagArray103 */ 270, /* Empty */ 0 },
- { /* c++98-c++11-compat-binary-literal */ 2054, /* DiagArray104 */ 282, /* Empty */ 0 },
+ { /* c++2a-extensions */ 1888, /* DiagArray98 */ 236, /* Empty */ 0 },
+ { /* c++98-c++11-c++14-c++17-compat */ 1905, /* DiagArray99 */ 244, /* Empty */ 0 },
+ { /* c++98-c++11-c++14-c++17-compat-pedantic */ 1936, /* DiagArray100 */ 255, /* DiagSubGroup100 */ 90 },
+ { /* c++98-c++11-c++14-compat */ 1976, /* DiagArray101 */ 257, /* Empty */ 0 },
+ { /* c++98-c++11-c++14-compat-pedantic */ 2001, /* DiagArray102 */ 275, /* DiagSubGroup102 */ 92 },
+ { /* c++98-c++11-compat */ 2035, /* DiagArray103 */ 278, /* Empty */ 0 },
+ { /* c++98-c++11-compat-binary-literal */ 2054, /* DiagArray104 */ 290, /* Empty */ 0 },
{ /* c++98-c++11-compat-pedantic */ 2088, /* Empty */ 0, /* DiagSubGroup105 */ 94 },
- { /* c++98-compat */ 2116, /* DiagArray106 */ 284, /* DiagSubGroup106 */ 97 },
- { /* c++98-compat-bind-to-temporary-copy */ 2129, /* DiagArray107 */ 344, /* Empty */ 0 },
- { /* c++98-compat-extra-semi */ 2165, /* DiagArray108 */ 346, /* Empty */ 0 },
- { /* c++98-compat-local-type-template-args */ 2189, /* DiagArray109 */ 348, /* Empty */ 0 },
- { /* c++98-compat-pedantic */ 2227, /* DiagArray110 */ 350, /* DiagSubGroup110 */ 103 },
- { /* c++98-compat-unnamed-type-template-args */ 2249, /* DiagArray111 */ 360, /* Empty */ 0 },
- { /* c11-extensions */ 2289, /* DiagArray112 */ 362, /* Empty */ 0 },
- { /* c99-compat */ 2304, /* DiagArray113 */ 369, /* Empty */ 0 },
- { /* c99-extensions */ 2315, /* DiagArray114 */ 373, /* Empty */ 0 },
- { /* cast-align */ 2330, /* DiagArray115 */ 384, /* Empty */ 0 },
- { /* cast-calling-convention */ 2341, /* DiagArray116 */ 386, /* Empty */ 0 },
- { /* cast-of-sel-type */ 2365, /* DiagArray117 */ 388, /* Empty */ 0 },
- { /* cast-qual */ 2382, /* DiagArray118 */ 390, /* Empty */ 0 },
- { /* cast-qual-unrelated */ 2392, /* DiagArray119 */ 393, /* Empty */ 0 },
- { /* char-align */ 2412, /* Empty */ 0, /* Empty */ 0 },
- { /* char-subscripts */ 2423, /* DiagArray121 */ 395, /* Empty */ 0 },
- { /* clang-cl-pch */ 2439, /* DiagArray122 */ 398, /* Empty */ 0 },
- { /* class-varargs */ 2452, /* DiagArray123 */ 404, /* DiagSubGroup123 */ 110 },
- { /* comma */ 2466, /* DiagArray124 */ 406, /* Empty */ 0 },
- { /* comment */ 2472, /* DiagArray125 */ 408, /* Empty */ 0 },
- { /* comments */ 2480, /* Empty */ 0, /* DiagSubGroup126 */ 112 },
- { /* compare-distinct-pointer-types */ 2489, /* DiagArray127 */ 413, /* Empty */ 0 },
- { /* complex-component-init */ 2520, /* DiagArray128 */ 415, /* Empty */ 0 },
- { /* conditional-type-mismatch */ 2543, /* DiagArray129 */ 417, /* Empty */ 0 },
- { /* conditional-uninitialized */ 2569, /* DiagArray130 */ 419, /* Empty */ 0 },
- { /* config-macros */ 2595, /* DiagArray131 */ 421, /* Empty */ 0 },
- { /* constant-conversion */ 2609, /* DiagArray132 */ 423, /* DiagSubGroup132 */ 114 },
- { /* constant-logical-operand */ 2629, /* DiagArray133 */ 425, /* Empty */ 0 },
- { /* constexpr-not-const */ 2654, /* DiagArray134 */ 427, /* Empty */ 0 },
- { /* consumed */ 2674, /* DiagArray135 */ 429, /* Empty */ 0 },
- { /* conversion */ 2683, /* DiagArray136 */ 438, /* DiagSubGroup136 */ 116 },
- { /* conversion-null */ 2694, /* Empty */ 0, /* DiagSubGroup137 */ 132 },
- { /* coroutine */ 2710, /* Empty */ 0, /* DiagSubGroup138 */ 134 },
- { /* coroutine-missing-unhandled-exception */ 2720, /* DiagArray139 */ 444, /* Empty */ 0 },
- { /* covered-switch-default */ 2758, /* DiagArray140 */ 446, /* Empty */ 0 },
- { /* cpp */ 2781, /* Empty */ 0, /* DiagSubGroup141 */ 136 },
- { /* cstring-format-directive */ 2785, /* DiagArray142 */ 448, /* Empty */ 0 },
- { /* ctor-dtor-privacy */ 2810, /* Empty */ 0, /* Empty */ 0 },
- { /* cuda-compat */ 2828, /* DiagArray144 */ 450, /* Empty */ 0 },
- { /* custom-atomic-properties */ 2840, /* DiagArray145 */ 456, /* Empty */ 0 },
- { /* dangling */ 2865, /* DiagArray146 */ 458, /* DiagSubGroup146 */ 138 },
- { /* dangling-else */ 2874, /* DiagArray147 */ 461, /* Empty */ 0 },
- { /* dangling-field */ 2888, /* DiagArray148 */ 463, /* Empty */ 0 },
- { /* dangling-initializer-list */ 2903, /* DiagArray149 */ 468, /* Empty */ 0 },
- { /* date-time */ 2929, /* DiagArray150 */ 470, /* Empty */ 0 },
- { /* dealloc-in-category */ 2939, /* DiagArray151 */ 472, /* Empty */ 0 },
- { /* debug-compression-unavailable */ 2959, /* DiagArray152 */ 474, /* Empty */ 0 },
- { /* declaration-after-statement */ 2989, /* DiagArray153 */ 476, /* Empty */ 0 },
- { /* defaulted-function-deleted */ 3017, /* DiagArray154 */ 478, /* Empty */ 0 },
- { /* delegating-ctor-cycles */ 3044, /* DiagArray155 */ 480, /* Empty */ 0 },
- { /* delete-incomplete */ 3067, /* DiagArray156 */ 482, /* Empty */ 0 },
- { /* delete-non-virtual-dtor */ 3085, /* DiagArray157 */ 485, /* Empty */ 0 },
- { /* deprecated */ 3109, /* DiagArray158 */ 488, /* DiagSubGroup158 */ 142 },
- { /* deprecated-attributes */ 3120, /* DiagArray159 */ 497, /* Empty */ 0 },
- { /* deprecated-declarations */ 3142, /* DiagArray160 */ 499, /* Empty */ 0 },
- { /* deprecated-dynamic-exception-spec */ 3166, /* DiagArray161 */ 506, /* Empty */ 0 },
- { /* deprecated-implementations */ 3200, /* DiagArray162 */ 508, /* Empty */ 0 },
- { /* deprecated-increment-bool */ 3227, /* DiagArray163 */ 511, /* Empty */ 0 },
- { /* deprecated-objc-isa-usage */ 3253, /* DiagArray164 */ 513, /* Empty */ 0 },
- { /* deprecated-objc-pointer-introspection */ 3279, /* DiagArray165 */ 516, /* DiagSubGroup165 */ 150 },
- { /* deprecated-objc-pointer-introspection-performSelector */ 3317, /* DiagArray166 */ 518, /* Empty */ 0 },
- { /* deprecated-register */ 3371, /* DiagArray167 */ 520, /* Empty */ 0 },
- { /* deprecated-this-capture */ 3391, /* DiagArray168 */ 522, /* Empty */ 0 },
- { /* deprecated-writable-strings */ 3415, /* Empty */ 0, /* DiagSubGroup169 */ 152 },
- { /* direct-ivar-access */ 3443, /* DiagArray170 */ 524, /* Empty */ 0 },
- { /* disabled-macro-expansion */ 3462, /* DiagArray171 */ 526, /* Empty */ 0 },
- { /* disabled-optimization */ 3487, /* Empty */ 0, /* Empty */ 0 },
- { /* discard-qual */ 3509, /* Empty */ 0, /* Empty */ 0 },
- { /* distributed-object-modifiers */ 3522, /* DiagArray174 */ 528, /* Empty */ 0 },
- { /* div-by-zero */ 3551, /* Empty */ 0, /* DiagSubGroup175 */ 154 },
- { /* division-by-zero */ 3563, /* DiagArray176 */ 531, /* Empty */ 0 },
- { /* dll-attribute-on-redeclaration */ 3580, /* DiagArray177 */ 533, /* Empty */ 0 },
- { /* dllexport-explicit-instantiation-decl */ 3611, /* DiagArray178 */ 535, /* Empty */ 0 },
- { /* dllimport-static-field-def */ 3649, /* DiagArray179 */ 537, /* Empty */ 0 },
- { /* documentation */ 3676, /* DiagArray180 */ 539, /* DiagSubGroup180 */ 156 },
- { /* documentation-deprecated-sync */ 3690, /* DiagArray181 */ 558, /* Empty */ 0 },
- { /* documentation-html */ 3720, /* DiagArray182 */ 560, /* Empty */ 0 },
- { /* documentation-pedantic */ 3739, /* DiagArray183 */ 565, /* DiagSubGroup183 */ 159 },
- { /* documentation-unknown-command */ 3762, /* DiagArray184 */ 567, /* Empty */ 0 },
- { /* dollar-in-identifier-extension */ 3792, /* DiagArray185 */ 570, /* Empty */ 0 },
- { /* double-promotion */ 3823, /* DiagArray186 */ 572, /* Empty */ 0 },
- { /* duplicate-decl-specifier */ 3840, /* DiagArray187 */ 574, /* Empty */ 0 },
- { /* duplicate-enum */ 3865, /* DiagArray188 */ 579, /* Empty */ 0 },
- { /* duplicate-method-arg */ 3880, /* DiagArray189 */ 581, /* Empty */ 0 },
- { /* duplicate-method-match */ 3901, /* DiagArray190 */ 583, /* Empty */ 0 },
- { /* duplicate-protocol */ 3924, /* DiagArray191 */ 585, /* Empty */ 0 },
- { /* dynamic-class-memaccess */ 3943, /* DiagArray192 */ 587, /* Empty */ 0 },
- { /* dynamic-exception-spec */ 3967, /* DiagArray193 */ 589, /* DiagSubGroup193 */ 161 },
- { /* effc++ */ 3990, /* Empty */ 0, /* DiagSubGroup194 */ 163 },
- { /* embedded-directive */ 3997, /* DiagArray195 */ 591, /* Empty */ 0 },
- { /* empty-body */ 4016, /* DiagArray196 */ 593, /* Empty */ 0 },
- { /* empty-decomposition */ 4027, /* DiagArray197 */ 599, /* Empty */ 0 },
- { /* empty-translation-unit */ 4047, /* DiagArray198 */ 601, /* Empty */ 0 },
- { /* encode-type */ 4070, /* DiagArray199 */ 603, /* Empty */ 0 },
- { /* endif-labels */ 4082, /* Empty */ 0, /* DiagSubGroup200 */ 165 },
- { /* enum-compare */ 4095, /* DiagArray201 */ 605, /* DiagSubGroup201 */ 167 },
- { /* enum-compare-switch */ 4108, /* DiagArray202 */ 607, /* Empty */ 0 },
- { /* enum-conversion */ 4128, /* DiagArray203 */ 609, /* Empty */ 0 },
- { /* enum-too-large */ 4144, /* DiagArray204 */ 611, /* Empty */ 0 },
- { /* exceptions */ 4159, /* DiagArray205 */ 614, /* Empty */ 0 },
- { /* exit-time-destructors */ 4170, /* DiagArray206 */ 618, /* Empty */ 0 },
- { /* expansion-to-defined */ 4192, /* DiagArray207 */ 620, /* Empty */ 0 },
- { /* experimental-isel */ 4213, /* DiagArray208 */ 623, /* Empty */ 0 },
- { /* explicit-initialize-call */ 4231, /* DiagArray209 */ 626, /* Empty */ 0 },
- { /* explicit-ownership-type */ 4256, /* DiagArray210 */ 629, /* Empty */ 0 },
- { /* extern-c-compat */ 4280, /* DiagArray211 */ 631, /* Empty */ 0 },
- { /* extern-initializer */ 4296, /* DiagArray212 */ 633, /* Empty */ 0 },
- { /* extra */ 4315, /* DiagArray213 */ 635, /* DiagSubGroup213 */ 169 },
- { /* extra-qualification */ 4321, /* DiagArray214 */ 637, /* Empty */ 0 },
- { /* extra-semi */ 4341, /* DiagArray215 */ 639, /* DiagSubGroup215 */ 178 },
- { /* extra-tokens */ 4352, /* DiagArray216 */ 642, /* Empty */ 0 },
- { /* fallback */ 4365, /* DiagArray217 */ 645, /* Empty */ 0 },
- { /* fixed-enum-extension */ 4374, /* DiagArray218 */ 647, /* Empty */ 0 },
- { /* flag-enum */ 4395, /* DiagArray219 */ 649, /* Empty */ 0 },
- { /* flexible-array-extensions */ 4405, /* DiagArray220 */ 651, /* Empty */ 0 },
- { /* float-conversion */ 4431, /* DiagArray221 */ 654, /* DiagSubGroup221 */ 181 },
- { /* float-equal */ 4448, /* DiagArray222 */ 656, /* Empty */ 0 },
- { /* float-overflow-conversion */ 4460, /* DiagArray223 */ 658, /* Empty */ 0 },
- { /* float-zero-conversion */ 4486, /* DiagArray224 */ 661, /* Empty */ 0 },
- { /* for-loop-analysis */ 4508, /* DiagArray225 */ 663, /* Empty */ 0 },
- { /* format */ 4526, /* DiagArray226 */ 666, /* DiagSubGroup226 */ 184 },
- { /* format-extra-args */ 4533, /* DiagArray227 */ 692, /* Empty */ 0 },
- { /* format-invalid-specifier */ 4551, /* DiagArray228 */ 694, /* Empty */ 0 },
- { /* format-non-iso */ 4576, /* DiagArray229 */ 696, /* Empty */ 0 },
- { /* format-nonliteral */ 4591, /* DiagArray230 */ 700, /* Empty */ 0 },
- { /* format-pedantic */ 4609, /* DiagArray231 */ 702, /* Empty */ 0 },
- { /* format-security */ 4625, /* DiagArray232 */ 705, /* Empty */ 0 },
- { /* format-y2k */ 4641, /* Empty */ 0, /* Empty */ 0 },
- { /* format-zero-length */ 4652, /* DiagArray234 */ 707, /* Empty */ 0 },
- { /* format=2 */ 4671, /* Empty */ 0, /* DiagSubGroup235 */ 191 },
- { /* four-char-constants */ 4680, /* DiagArray236 */ 709, /* Empty */ 0 },
- { /* frame-larger-than= */ 4700, /* DiagArray237 */ 711, /* Empty */ 0 },
- { /* framework-include-private-from-public */ 4719, /* DiagArray238 */ 714, /* Empty */ 0 },
- { /* function-def-in-objc-container */ 4757, /* DiagArray239 */ 716, /* Empty */ 0 },
- { /* function-multiversion */ 4788, /* DiagArray240 */ 718, /* Empty */ 0 },
- { /* future-compat */ 4810, /* Empty */ 0, /* Empty */ 0 },
- { /* gcc-compat */ 4824, /* DiagArray242 */ 721, /* Empty */ 0 },
- { /* global-constructors */ 4835, /* DiagArray243 */ 732, /* Empty */ 0 },
- { /* gnu */ 4855, /* Empty */ 0, /* DiagSubGroup244 */ 195 },
- { /* gnu-alignof-expression */ 4859, /* DiagArray245 */ 735, /* Empty */ 0 },
- { /* gnu-anonymous-struct */ 4882, /* DiagArray246 */ 737, /* Empty */ 0 },
- { /* gnu-array-member-paren-init */ 4903, /* DiagArray247 */ 739, /* Empty */ 0 },
- { /* gnu-auto-type */ 4931, /* DiagArray248 */ 741, /* Empty */ 0 },
- { /* gnu-binary-literal */ 4945, /* DiagArray249 */ 743, /* Empty */ 0 },
- { /* gnu-case-range */ 4964, /* DiagArray250 */ 745, /* Empty */ 0 },
- { /* gnu-complex-integer */ 4979, /* DiagArray251 */ 747, /* Empty */ 0 },
- { /* gnu-compound-literal-initializer */ 4999, /* DiagArray252 */ 749, /* Empty */ 0 },
- { /* gnu-conditional-omitted-operand */ 5032, /* DiagArray253 */ 751, /* Empty */ 0 },
- { /* gnu-designator */ 5064, /* DiagArray254 */ 753, /* Empty */ 0 },
- { /* gnu-empty-initializer */ 5079, /* DiagArray255 */ 757, /* Empty */ 0 },
- { /* gnu-empty-struct */ 5101, /* DiagArray256 */ 759, /* Empty */ 0 },
- { /* gnu-flexible-array-initializer */ 5118, /* DiagArray257 */ 763, /* Empty */ 0 },
- { /* gnu-flexible-array-union-member */ 5149, /* DiagArray258 */ 765, /* Empty */ 0 },
- { /* gnu-folding-constant */ 5181, /* DiagArray259 */ 767, /* Empty */ 0 },
- { /* gnu-imaginary-constant */ 5202, /* DiagArray260 */ 771, /* Empty */ 0 },
- { /* gnu-include-next */ 5225, /* DiagArray261 */ 773, /* Empty */ 0 },
- { /* gnu-label-as-value */ 5242, /* DiagArray262 */ 775, /* Empty */ 0 },
- { /* gnu-redeclared-enum */ 5261, /* DiagArray263 */ 778, /* Empty */ 0 },
- { /* gnu-statement-expression */ 5281, /* DiagArray264 */ 780, /* Empty */ 0 },
- { /* gnu-static-float-init */ 5306, /* DiagArray265 */ 782, /* Empty */ 0 },
- { /* gnu-string-literal-operator-template */ 5328, /* DiagArray266 */ 784, /* Empty */ 0 },
- { /* gnu-union-cast */ 5365, /* DiagArray267 */ 786, /* Empty */ 0 },
- { /* gnu-variable-sized-type-not-at-end */ 5380, /* DiagArray268 */ 788, /* Empty */ 0 },
- { /* gnu-zero-line-directive */ 5415, /* DiagArray269 */ 790, /* Empty */ 0 },
- { /* gnu-zero-variadic-macro-arguments */ 5439, /* DiagArray270 */ 792, /* Empty */ 0 },
- { /* header-guard */ 5473, /* DiagArray271 */ 795, /* Empty */ 0 },
- { /* header-hygiene */ 5486, /* DiagArray272 */ 797, /* Empty */ 0 },
- { /* idiomatic-parentheses */ 5501, /* DiagArray273 */ 799, /* Empty */ 0 },
- { /* ignored-attributes */ 5523, /* DiagArray274 */ 801, /* Empty */ 0 },
- { /* ignored-optimization-argument */ 5542, /* DiagArray275 */ 860, /* Empty */ 0 },
- { /* ignored-pragma-intrinsic */ 5572, /* DiagArray276 */ 863, /* Empty */ 0 },
- { /* ignored-pragma-optimize */ 5597, /* DiagArray277 */ 865, /* Empty */ 0 },
- { /* ignored-pragmas */ 5621, /* DiagArray278 */ 867, /* DiagSubGroup278 */ 224 },
- { /* ignored-qualifiers */ 5637, /* DiagArray279 */ 910, /* Empty */ 0 },
- { /* implicit */ 5656, /* Empty */ 0, /* DiagSubGroup280 */ 227 },
- { /* implicit-atomic-properties */ 5665, /* DiagArray281 */ 916, /* Empty */ 0 },
- { /* implicit-conversion-floating-point-to-bool */ 5692, /* DiagArray282 */ 919, /* Empty */ 0 },
- { /* implicit-exception-spec-mismatch */ 5735, /* DiagArray283 */ 921, /* Empty */ 0 },
- { /* implicit-fallthrough */ 5768, /* DiagArray284 */ 923, /* DiagSubGroup284 */ 230 },
- { /* implicit-fallthrough-per-function */ 5789, /* DiagArray285 */ 926, /* Empty */ 0 },
- { /* implicit-float-conversion */ 5823, /* DiagArray286 */ 928, /* Empty */ 0 },
- { /* implicit-function-declaration */ 5849, /* DiagArray287 */ 931, /* Empty */ 0 },
- { /* implicit-int */ 5879, /* DiagArray288 */ 936, /* Empty */ 0 },
- { /* implicit-int-conversion */ 5892, /* DiagArray289 */ 938, /* Empty */ 0 },
- { /* implicit-retain-self */ 5916, /* DiagArray290 */ 941, /* Empty */ 0 },
- { /* implicitly-unsigned-literal */ 5937, /* DiagArray291 */ 943, /* Empty */ 0 },
- { /* import */ 5965, /* Empty */ 0, /* Empty */ 0 },
- { /* import-preprocessor-directive-pedantic */ 5972, /* DiagArray293 */ 945, /* Empty */ 0 },
- { /* inaccessible-base */ 6011, /* DiagArray294 */ 947, /* Empty */ 0 },
- { /* include-next-absolute-path */ 6029, /* DiagArray295 */ 949, /* Empty */ 0 },
- { /* include-next-outside-header */ 6056, /* DiagArray296 */ 951, /* Empty */ 0 },
- { /* incompatible-exception-spec */ 6084, /* DiagArray297 */ 953, /* Empty */ 0 },
- { /* incompatible-function-pointer-types */ 6112, /* DiagArray298 */ 956, /* Empty */ 0 },
- { /* incompatible-library-redeclaration */ 6148, /* DiagArray299 */ 958, /* Empty */ 0 },
- { /* incompatible-ms-struct */ 6183, /* DiagArray300 */ 960, /* Empty */ 0 },
- { /* incompatible-pointer-types */ 6206, /* DiagArray301 */ 963, /* DiagSubGroup301 */ 232 },
- { /* incompatible-pointer-types-discards-qualifiers */ 6233, /* DiagArray302 */ 965, /* Empty */ 0 },
- { /* incompatible-property-type */ 6280, /* DiagArray303 */ 968, /* Empty */ 0 },
- { /* incompatible-sysroot */ 6307, /* DiagArray304 */ 970, /* Empty */ 0 },
- { /* incomplete-framework-module-declaration */ 6328, /* DiagArray305 */ 972, /* Empty */ 0 },
- { /* incomplete-implementation */ 6368, /* DiagArray306 */ 974, /* Empty */ 0 },
- { /* incomplete-module */ 6394, /* Empty */ 0, /* DiagSubGroup307 */ 235 },
- { /* incomplete-umbrella */ 6412, /* DiagArray308 */ 976, /* Empty */ 0 },
- { /* inconsistent-dllimport */ 6432, /* DiagArray309 */ 980, /* Empty */ 0 },
- { /* inconsistent-missing-destructor-override */ 6455, /* DiagArray310 */ 983, /* Empty */ 0 },
- { /* inconsistent-missing-override */ 6496, /* DiagArray311 */ 985, /* Empty */ 0 },
- { /* increment-bool */ 6526, /* DiagArray312 */ 987, /* DiagSubGroup312 */ 238 },
- { /* infinite-recursion */ 6541, /* DiagArray313 */ 989, /* Empty */ 0 },
- { /* init-self */ 6560, /* Empty */ 0, /* Empty */ 0 },
- { /* initializer-overrides */ 6570, /* DiagArray315 */ 991, /* Empty */ 0 },
- { /* injected-class-name */ 6592, /* DiagArray316 */ 994, /* Empty */ 0 },
- { /* inline */ 6612, /* Empty */ 0, /* Empty */ 0 },
- { /* inline-asm */ 6619, /* DiagArray318 */ 996, /* Empty */ 0 },
- { /* inline-new-delete */ 6630, /* DiagArray319 */ 998, /* Empty */ 0 },
- { /* instantiation-after-specialization */ 6648, /* DiagArray320 */ 1000, /* Empty */ 0 },
- { /* int-conversion */ 6683, /* DiagArray321 */ 1002, /* Empty */ 0 },
- { /* int-conversions */ 6698, /* Empty */ 0, /* DiagSubGroup322 */ 240 },
- { /* int-to-pointer-cast */ 6714, /* DiagArray323 */ 1005, /* DiagSubGroup323 */ 242 },
- { /* int-to-void-pointer-cast */ 6734, /* DiagArray324 */ 1007, /* Empty */ 0 },
- { /* integer-overflow */ 6759, /* DiagArray325 */ 1009, /* Empty */ 0 },
- { /* invalid-command-line-argument */ 6776, /* DiagArray326 */ 1011, /* DiagSubGroup326 */ 244 },
- { /* invalid-constexpr */ 6806, /* DiagArray327 */ 1014, /* Empty */ 0 },
- { /* invalid-iboutlet */ 6824, /* DiagArray328 */ 1016, /* Empty */ 0 },
- { /* invalid-initializer-from-system-header */ 6841, /* DiagArray329 */ 1019, /* Empty */ 0 },
- { /* invalid-ios-deployment-target */ 6880, /* DiagArray330 */ 1021, /* Empty */ 0 },
- { /* invalid-noreturn */ 6910, /* DiagArray331 */ 1023, /* Empty */ 0 },
- { /* invalid-offsetof */ 6927, /* DiagArray332 */ 1026, /* Empty */ 0 },
- { /* invalid-or-nonexistent-directory */ 6944, /* DiagArray333 */ 1029, /* Empty */ 0 },
- { /* invalid-partial-specialization */ 6977, /* DiagArray334 */ 1032, /* Empty */ 0 },
- { /* invalid-pch */ 7008, /* Empty */ 0, /* Empty */ 0 },
- { /* invalid-pp-token */ 7020, /* DiagArray336 */ 1034, /* Empty */ 0 },
- { /* invalid-source-encoding */ 7037, /* DiagArray337 */ 1037, /* Empty */ 0 },
- { /* invalid-token-paste */ 7061, /* DiagArray338 */ 1040, /* Empty */ 0 },
- { /* jump-seh-finally */ 7081, /* DiagArray339 */ 1042, /* Empty */ 0 },
- { /* keyword-compat */ 7098, /* DiagArray340 */ 1044, /* Empty */ 0 },
- { /* keyword-macro */ 7113, /* DiagArray341 */ 1046, /* Empty */ 0 },
- { /* knr-promoted-parameter */ 7127, /* DiagArray342 */ 1048, /* Empty */ 0 },
- { /* language-extension-token */ 7150, /* DiagArray343 */ 1050, /* Empty */ 0 },
- { /* large-by-value-copy */ 7175, /* DiagArray344 */ 1052, /* Empty */ 0 },
- { /* liblto */ 7195, /* Empty */ 0, /* Empty */ 0 },
- { /* literal-conversion */ 7202, /* DiagArray346 */ 1055, /* Empty */ 0 },
- { /* literal-range */ 7221, /* DiagArray347 */ 1058, /* Empty */ 0 },
- { /* local-type-template-args */ 7235, /* DiagArray348 */ 1061, /* DiagSubGroup348 */ 246 },
- { /* logical-not-parentheses */ 7260, /* DiagArray349 */ 1063, /* Empty */ 0 },
- { /* logical-op-parentheses */ 7284, /* DiagArray350 */ 1065, /* Empty */ 0 },
- { /* long-long */ 7307, /* DiagArray351 */ 1067, /* DiagSubGroup351 */ 248 },
- { /* loop-analysis */ 7317, /* Empty */ 0, /* DiagSubGroup352 */ 250 },
- { /* macro-redefined */ 7331, /* DiagArray353 */ 1069, /* Empty */ 0 },
- { /* main */ 7347, /* DiagArray354 */ 1071, /* Empty */ 0 },
- { /* main-return-type */ 7352, /* DiagArray355 */ 1079, /* Empty */ 0 },
- { /* malformed-warning-check */ 7369, /* DiagArray356 */ 1081, /* Empty */ 0 },
- { /* many-braces-around-scalar-init */ 7393, /* DiagArray357 */ 1083, /* Empty */ 0 },
- { /* max-unsigned-zero */ 7424, /* DiagArray358 */ 1085, /* Empty */ 0 },
- { /* memset-transposed-args */ 7442, /* DiagArray359 */ 1087, /* Empty */ 0 },
- { /* memsize-comparison */ 7465, /* DiagArray360 */ 1089, /* Empty */ 0 },
- { /* method-signatures */ 7484, /* DiagArray361 */ 1091, /* Empty */ 0 },
- { /* microsoft */ 7502, /* Empty */ 0, /* DiagSubGroup362 */ 253 },
- { /* microsoft-anon-tag */ 7512, /* DiagArray363 */ 1094, /* Empty */ 0 },
- { /* microsoft-cast */ 7531, /* DiagArray364 */ 1097, /* Empty */ 0 },
- { /* microsoft-charize */ 7546, /* DiagArray365 */ 1100, /* Empty */ 0 },
- { /* microsoft-comment-paste */ 7564, /* DiagArray366 */ 1102, /* Empty */ 0 },
- { /* microsoft-const-init */ 7588, /* DiagArray367 */ 1104, /* Empty */ 0 },
- { /* microsoft-cpp-macro */ 7609, /* DiagArray368 */ 1106, /* Empty */ 0 },
- { /* microsoft-default-arg-redefinition */ 7629, /* DiagArray369 */ 1108, /* Empty */ 0 },
- { /* microsoft-end-of-file */ 7664, /* DiagArray370 */ 1110, /* Empty */ 0 },
- { /* microsoft-enum-forward-reference */ 7686, /* DiagArray371 */ 1112, /* Empty */ 0 },
- { /* microsoft-enum-value */ 7719, /* DiagArray372 */ 1114, /* Empty */ 0 },
- { /* microsoft-exception-spec */ 7740, /* DiagArray373 */ 1116, /* Empty */ 0 },
- { /* microsoft-exists */ 7765, /* DiagArray374 */ 1123, /* Empty */ 0 },
- { /* microsoft-explicit-constructor-call */ 7782, /* DiagArray375 */ 1125, /* Empty */ 0 },
- { /* microsoft-extra-qualification */ 7818, /* DiagArray376 */ 1127, /* Empty */ 0 },
- { /* microsoft-fixed-enum */ 7848, /* DiagArray377 */ 1129, /* Empty */ 0 },
- { /* microsoft-flexible-array */ 7869, /* DiagArray378 */ 1131, /* Empty */ 0 },
- { /* microsoft-goto */ 7894, /* DiagArray379 */ 1134, /* Empty */ 0 },
- { /* microsoft-inaccessible-base */ 7909, /* DiagArray380 */ 1136, /* Empty */ 0 },
- { /* microsoft-include */ 7937, /* DiagArray381 */ 1138, /* Empty */ 0 },
- { /* microsoft-mutable-reference */ 7955, /* DiagArray382 */ 1140, /* Empty */ 0 },
- { /* microsoft-pure-definition */ 7983, /* DiagArray383 */ 1142, /* Empty */ 0 },
- { /* microsoft-redeclare-static */ 8009, /* DiagArray384 */ 1144, /* Empty */ 0 },
- { /* microsoft-sealed */ 8036, /* DiagArray385 */ 1146, /* Empty */ 0 },
- { /* microsoft-template */ 8053, /* DiagArray386 */ 1148, /* Empty */ 0 },
- { /* microsoft-union-member-reference */ 8072, /* DiagArray387 */ 1156, /* Empty */ 0 },
- { /* microsoft-unqualified-friend */ 8105, /* DiagArray388 */ 1158, /* Empty */ 0 },
- { /* microsoft-using-decl */ 8134, /* DiagArray389 */ 1160, /* Empty */ 0 },
- { /* microsoft-void-pseudo-dtor */ 8155, /* DiagArray390 */ 1162, /* Empty */ 0 },
- { /* mismatched-new-delete */ 8182, /* DiagArray391 */ 1164, /* Empty */ 0 },
- { /* mismatched-parameter-types */ 8204, /* DiagArray392 */ 1166, /* Empty */ 0 },
- { /* mismatched-return-types */ 8231, /* DiagArray393 */ 1168, /* Empty */ 0 },
- { /* mismatched-tags */ 8255, /* DiagArray394 */ 1170, /* Empty */ 0 },
- { /* missing-braces */ 8271, /* DiagArray395 */ 1173, /* Empty */ 0 },
- { /* missing-declarations */ 8286, /* DiagArray396 */ 1175, /* Empty */ 0 },
- { /* missing-exception-spec */ 8307, /* DiagArray397 */ 1180, /* Empty */ 0 },
- { /* missing-field-initializers */ 8330, /* DiagArray398 */ 1182, /* Empty */ 0 },
- { /* missing-format-attribute */ 8357, /* Empty */ 0, /* Empty */ 0 },
- { /* missing-include-dirs */ 8382, /* Empty */ 0, /* Empty */ 0 },
- { /* missing-method-return-type */ 8403, /* DiagArray401 */ 1184, /* Empty */ 0 },
- { /* missing-noescape */ 8430, /* DiagArray402 */ 1186, /* Empty */ 0 },
- { /* missing-noreturn */ 8447, /* DiagArray403 */ 1188, /* Empty */ 0 },
- { /* missing-prototype-for-cc */ 8464, /* DiagArray404 */ 1191, /* Empty */ 0 },
- { /* missing-prototypes */ 8489, /* DiagArray405 */ 1193, /* Empty */ 0 },
- { /* missing-selector-name */ 8508, /* DiagArray406 */ 1195, /* Empty */ 0 },
- { /* missing-sysroot */ 8530, /* DiagArray407 */ 1197, /* Empty */ 0 },
- { /* missing-variable-declarations */ 8546, /* DiagArray408 */ 1199, /* Empty */ 0 },
- { /* module-build */ 8576, /* DiagArray409 */ 1201, /* Empty */ 0 },
- { /* module-conflict */ 8589, /* DiagArray410 */ 1206, /* Empty */ 0 },
- { /* module-file-config-mismatch */ 8605, /* DiagArray411 */ 1209, /* Empty */ 0 },
- { /* module-file-extension */ 8633, /* DiagArray412 */ 1211, /* Empty */ 0 },
- { /* module-import-in-extern-c */ 8655, /* DiagArray413 */ 1213, /* Empty */ 0 },
- { /* modules-ambiguous-internal-linkage */ 8681, /* DiagArray414 */ 1215, /* Empty */ 0 },
- { /* modules-import-nested-redundant */ 8716, /* DiagArray415 */ 1217, /* Empty */ 0 },
- { /* most */ 8748, /* Empty */ 0, /* DiagSubGroup416 */ 281 },
- { /* move */ 8753, /* Empty */ 0, /* DiagSubGroup417 */ 313 },
- { /* msvc-include */ 8758, /* Empty */ 0, /* DiagSubGroup418 */ 318 },
- { /* msvc-not-found */ 8771, /* DiagArray419 */ 1219, /* Empty */ 0 },
- { /* multichar */ 8786, /* DiagArray420 */ 1221, /* Empty */ 0 },
- { /* multiple-move-vbase */ 8796, /* DiagArray421 */ 1223, /* Empty */ 0 },
- { /* narrowing */ 8816, /* Empty */ 0, /* DiagSubGroup422 */ 320 },
- { /* nested-anon-types */ 8826, /* DiagArray423 */ 1225, /* Empty */ 0 },
- { /* nested-externs */ 8844, /* Empty */ 0, /* Empty */ 0 },
- { /* new-returns-null */ 8859, /* DiagArray425 */ 1227, /* Empty */ 0 },
- { /* newline-eof */ 8876, /* DiagArray426 */ 1229, /* Empty */ 0 },
- { /* noexcept-type */ 8888, /* Empty */ 0, /* DiagSubGroup427 */ 322 },
- { /* non-gcc */ 8902, /* Empty */ 0, /* DiagSubGroup428 */ 324 },
- { /* non-literal-null-conversion */ 8910, /* DiagArray429 */ 1232, /* Empty */ 0 },
- { /* non-modular-include-in-framework-module */ 8938, /* DiagArray430 */ 1234, /* Empty */ 0 },
- { /* non-modular-include-in-module */ 8978, /* DiagArray431 */ 1236, /* DiagSubGroup431 */ 328 },
- { /* non-pod-varargs */ 9008, /* DiagArray432 */ 1238, /* Empty */ 0 },
- { /* non-virtual-dtor */ 9024, /* DiagArray433 */ 1243, /* Empty */ 0 },
- { /* nonnull */ 9041, /* DiagArray434 */ 1245, /* Empty */ 0 },
- { /* nonportable-cfstrings */ 9049, /* Empty */ 0, /* Empty */ 0 },
- { /* nonportable-include-path */ 9071, /* DiagArray436 */ 1248, /* Empty */ 0 },
- { /* nonportable-system-include-path */ 9096, /* DiagArray437 */ 1250, /* Empty */ 0 },
- { /* nonportable-vector-initialization */ 9128, /* DiagArray438 */ 1252, /* Empty */ 0 },
- { /* nontrivial-memaccess */ 9162, /* DiagArray439 */ 1254, /* Empty */ 0 },
- { /* nsconsumed-mismatch */ 9183, /* DiagArray440 */ 1256, /* Empty */ 0 },
- { /* nsreturns-mismatch */ 9203, /* DiagArray441 */ 1258, /* Empty */ 0 },
- { /* null-arithmetic */ 9222, /* DiagArray442 */ 1260, /* Empty */ 0 },
- { /* null-character */ 9238, /* DiagArray443 */ 1263, /* Empty */ 0 },
- { /* null-conversion */ 9253, /* DiagArray444 */ 1266, /* Empty */ 0 },
- { /* null-dereference */ 9269, /* DiagArray445 */ 1268, /* Empty */ 0 },
- { /* null-pointer-arithmetic */ 9286, /* DiagArray446 */ 1271, /* Empty */ 0 },
- { /* nullability */ 9310, /* DiagArray447 */ 1274, /* Empty */ 0 },
- { /* nullability-completeness */ 9322, /* DiagArray448 */ 1280, /* DiagSubGroup448 */ 330 },
- { /* nullability-completeness-on-arrays */ 9347, /* DiagArray449 */ 1282, /* Empty */ 0 },
- { /* nullability-declspec */ 9382, /* DiagArray450 */ 1284, /* Empty */ 0 },
- { /* nullability-extension */ 9403, /* DiagArray451 */ 1286, /* Empty */ 0 },
- { /* nullability-inferred-on-nested-type */ 9425, /* DiagArray452 */ 1288, /* Empty */ 0 },
- { /* nullable-to-nonnull-conversion */ 9461, /* DiagArray453 */ 1290, /* Empty */ 0 },
- { /* objc-autosynthesis-property-ivar-name-match */ 9492, /* DiagArray454 */ 1292, /* Empty */ 0 },
- { /* objc-circular-container */ 9536, /* DiagArray455 */ 1294, /* Empty */ 0 },
- { /* objc-cocoa-api */ 9560, /* Empty */ 0, /* DiagSubGroup456 */ 332 },
- { /* objc-designated-initializers */ 9575, /* DiagArray457 */ 1296, /* Empty */ 0 },
- { /* objc-flexible-array */ 9604, /* DiagArray458 */ 1303, /* Empty */ 0 },
- { /* objc-forward-class-redefinition */ 9624, /* DiagArray459 */ 1306, /* Empty */ 0 },
- { /* objc-interface-ivars */ 9656, /* DiagArray460 */ 1308, /* Empty */ 0 },
- { /* objc-literal-compare */ 9677, /* DiagArray461 */ 1310, /* DiagSubGroup461 */ 334 },
- { /* objc-literal-conversion */ 9698, /* DiagArray462 */ 1312, /* Empty */ 0 },
- { /* objc-macro-redefinition */ 9722, /* DiagArray463 */ 1315, /* Empty */ 0 },
- { /* objc-messaging-id */ 9746, /* DiagArray464 */ 1317, /* Empty */ 0 },
- { /* objc-method-access */ 9764, /* DiagArray465 */ 1319, /* Empty */ 0 },
- { /* objc-missing-property-synthesis */ 9783, /* DiagArray466 */ 1326, /* Empty */ 0 },
- { /* objc-missing-super-calls */ 9815, /* DiagArray467 */ 1328, /* Empty */ 0 },
- { /* objc-multiple-method-names */ 9840, /* DiagArray468 */ 1330, /* Empty */ 0 },
- { /* objc-noncopy-retain-block-property */ 9867, /* DiagArray469 */ 1332, /* Empty */ 0 },
- { /* objc-nonunified-exceptions */ 9902, /* DiagArray470 */ 1334, /* Empty */ 0 },
- { /* objc-property-assign-on-object-type */ 9929, /* DiagArray471 */ 1336, /* Empty */ 0 },
- { /* objc-property-implementation */ 9965, /* DiagArray472 */ 1338, /* Empty */ 0 },
- { /* objc-property-implicit-mismatch */ 9994, /* DiagArray473 */ 1343, /* Empty */ 0 },
- { /* objc-property-matches-cocoa-ownership-rule */ 10026, /* DiagArray474 */ 1345, /* Empty */ 0 },
- { /* objc-property-no-attribute */ 10069, /* DiagArray475 */ 1347, /* Empty */ 0 },
- { /* objc-property-synthesis */ 10096, /* DiagArray476 */ 1350, /* Empty */ 0 },
- { /* objc-protocol-method-implementation */ 10120, /* DiagArray477 */ 1354, /* Empty */ 0 },
- { /* objc-protocol-property-synthesis */ 10156, /* DiagArray478 */ 1356, /* Empty */ 0 },
- { /* objc-protocol-qualifiers */ 10189, /* DiagArray479 */ 1358, /* Empty */ 0 },
- { /* objc-readonly-with-setter-property */ 10214, /* DiagArray480 */ 1360, /* Empty */ 0 },
- { /* objc-redundant-api-use */ 10249, /* Empty */ 0, /* DiagSubGroup481 */ 336 },
- { /* objc-redundant-literal-use */ 10272, /* DiagArray482 */ 1362, /* Empty */ 0 },
- { /* objc-root-class */ 10299, /* DiagArray483 */ 1364, /* Empty */ 0 },
- { /* objc-string-compare */ 10315, /* DiagArray484 */ 1366, /* Empty */ 0 },
- { /* objc-string-concatenation */ 10335, /* DiagArray485 */ 1368, /* Empty */ 0 },
- { /* objc-unsafe-perform-selector */ 10361, /* DiagArray486 */ 1370, /* Empty */ 0 },
- { /* odr */ 10390, /* DiagArray487 */ 1372, /* Empty */ 0 },
- { /* old-style-cast */ 10394, /* DiagArray488 */ 1374, /* Empty */ 0 },
- { /* old-style-definition */ 10409, /* Empty */ 0, /* Empty */ 0 },
- { /* opencl-unsupported-rgba */ 10430, /* DiagArray490 */ 1376, /* Empty */ 0 },
- { /* openmp-clauses */ 10454, /* DiagArray491 */ 1378, /* Empty */ 0 },
- { /* openmp-loop-form */ 10469, /* DiagArray492 */ 1381, /* Empty */ 0 },
- { /* openmp-target */ 10486, /* DiagArray493 */ 1384, /* Empty */ 0 },
- { /* option-ignored */ 10500, /* DiagArray494 */ 1389, /* Empty */ 0 },
- { /* ordered-compare-function-pointers */ 10515, /* DiagArray495 */ 1396, /* Empty */ 0 },
- { /* out-of-line-declaration */ 10549, /* DiagArray496 */ 1398, /* Empty */ 0 },
- { /* out-of-scope-function */ 10573, /* DiagArray497 */ 1400, /* Empty */ 0 },
- { /* over-aligned */ 10595, /* DiagArray498 */ 1402, /* Empty */ 0 },
- { /* overflow */ 10608, /* Empty */ 0, /* Empty */ 0 },
- { /* overlength-strings */ 10617, /* DiagArray500 */ 1404, /* Empty */ 0 },
- { /* overloaded-shift-op-parentheses */ 10636, /* DiagArray501 */ 1406, /* Empty */ 0 },
- { /* overloaded-virtual */ 10668, /* DiagArray502 */ 1408, /* Empty */ 0 },
- { /* override-module */ 10687, /* DiagArray503 */ 1410, /* Empty */ 0 },
- { /* overriding-method-mismatch */ 10703, /* DiagArray504 */ 1412, /* Empty */ 0 },
- { /* overriding-t-option */ 10730, /* DiagArray505 */ 1420, /* Empty */ 0 },
- { /* packed */ 10750, /* DiagArray506 */ 1422, /* Empty */ 0 },
- { /* padded */ 10757, /* DiagArray507 */ 1424, /* Empty */ 0 },
- { /* parentheses */ 10764, /* DiagArray508 */ 1428, /* DiagSubGroup508 */ 338 },
- { /* parentheses-equality */ 10776, /* DiagArray509 */ 1432, /* Empty */ 0 },
- { /* partial-availability */ 10797, /* Empty */ 0, /* DiagSubGroup510 */ 346 },
- { /* pass */ 10818, /* DiagArray511 */ 1434, /* Empty */ 0 },
- { /* pass-analysis */ 10823, /* DiagArray512 */ 1436, /* Empty */ 0 },
- { /* pass-failed */ 10837, /* DiagArray513 */ 1440, /* Empty */ 0 },
- { /* pass-missed */ 10849, /* DiagArray514 */ 1442, /* Empty */ 0 },
- { /* pch-date-time */ 10861, /* DiagArray515 */ 1444, /* Empty */ 0 },
- { /* pedantic */ 10875, /* DiagArray516 */ 1446, /* DiagSubGroup516 */ 348 },
- { /* pedantic-core-features */ 10884, /* DiagArray517 */ 1517, /* Empty */ 0 },
- { /* pessimizing-move */ 10907, /* DiagArray518 */ 1519, /* Empty */ 0 },
- { /* pointer-arith */ 10924, /* DiagArray519 */ 1522, /* Empty */ 0 },
- { /* pointer-bool-conversion */ 10938, /* DiagArray520 */ 1529, /* Empty */ 0 },
- { /* pointer-sign */ 10962, /* DiagArray521 */ 1532, /* Empty */ 0 },
- { /* pointer-to-int-cast */ 10975, /* Empty */ 0, /* Empty */ 0 },
- { /* pointer-type-mismatch */ 10995, /* DiagArray523 */ 1534, /* Empty */ 0 },
- { /* potentially-evaluated-expression */ 11017, /* DiagArray524 */ 1536, /* Empty */ 0 },
- { /* pragma-clang-attribute */ 11050, /* DiagArray525 */ 1538, /* Empty */ 0 },
- { /* pragma-once-outside-header */ 11073, /* DiagArray526 */ 1540, /* Empty */ 0 },
- { /* pragma-pack */ 11100, /* DiagArray527 */ 1542, /* DiagSubGroup527 */ 400 },
- { /* pragma-pack-suspicious-include */ 11112, /* DiagArray528 */ 1545, /* Empty */ 0 },
- { /* pragma-system-header-outside-header */ 11143, /* DiagArray529 */ 1547, /* Empty */ 0 },
- { /* pragmas */ 11179, /* DiagArray530 */ 1549, /* DiagSubGroup530 */ 402 },
- { /* predefined-identifier-outside-function */ 11187, /* DiagArray531 */ 1551, /* Empty */ 0 },
- { /* private-extern */ 11226, /* DiagArray532 */ 1553, /* Empty */ 0 },
- { /* private-header */ 11241, /* DiagArray533 */ 1555, /* Empty */ 0 },
- { /* private-module */ 11256, /* DiagArray534 */ 1557, /* Empty */ 0 },
- { /* profile-instr-missing */ 11271, /* DiagArray535 */ 1562, /* Empty */ 0 },
- { /* profile-instr-out-of-date */ 11293, /* DiagArray536 */ 1564, /* Empty */ 0 },
- { /* profile-instr-unprofiled */ 11319, /* DiagArray537 */ 1566, /* Empty */ 0 },
- { /* property-access-dot-syntax */ 11344, /* DiagArray538 */ 1568, /* Empty */ 0 },
- { /* property-attribute-mismatch */ 11371, /* DiagArray539 */ 1570, /* Empty */ 0 },
- { /* protocol */ 11399, /* DiagArray540 */ 1575, /* Empty */ 0 },
- { /* protocol-property-synthesis-ambiguity */ 11408, /* DiagArray541 */ 1577, /* Empty */ 0 },
- { /* qualified-void-return-type */ 11446, /* DiagArray542 */ 1579, /* Empty */ 0 },
- { /* quoted-include-in-framework-header */ 11473, /* DiagArray543 */ 1581, /* Empty */ 0 },
- { /* range-loop-analysis */ 11508, /* DiagArray544 */ 1583, /* Empty */ 0 },
- { /* readonly-iboutlet-property */ 11528, /* DiagArray545 */ 1587, /* Empty */ 0 },
- { /* receiver-expr */ 11555, /* DiagArray546 */ 1589, /* Empty */ 0 },
- { /* receiver-forward-class */ 11569, /* DiagArray547 */ 1591, /* Empty */ 0 },
- { /* redeclared-class-member */ 11592, /* DiagArray548 */ 1594, /* Empty */ 0 },
- { /* redundant-decls */ 11616, /* Empty */ 0, /* Empty */ 0 },
- { /* redundant-move */ 11632, /* DiagArray550 */ 1596, /* Empty */ 0 },
- { /* redundant-parens */ 11647, /* DiagArray551 */ 1598, /* Empty */ 0 },
- { /* register */ 11664, /* DiagArray552 */ 1600, /* DiagSubGroup552 */ 407 },
- { /* reinterpret-base-class */ 11673, /* DiagArray553 */ 1602, /* Empty */ 0 },
- { /* remark-backend-plugin */ 11696, /* DiagArray554 */ 1604, /* Empty */ 0 },
- { /* reorder */ 11718, /* DiagArray555 */ 1606, /* Empty */ 0 },
- { /* requires-super-attribute */ 11726, /* DiagArray556 */ 1608, /* Empty */ 0 },
- { /* reserved-id-macro */ 11751, /* DiagArray557 */ 1610, /* Empty */ 0 },
- { /* reserved-user-defined-literal */ 11769, /* DiagArray558 */ 1612, /* DiagSubGroup558 */ 409 },
- { /* retained-language-linkage */ 11799, /* DiagArray559 */ 1615, /* Empty */ 0 },
- { /* return-stack-address */ 11825, /* DiagArray560 */ 1617, /* Empty */ 0 },
- { /* return-std-move */ 11846, /* DiagArray561 */ 1621, /* Empty */ 0 },
- { /* return-std-move-in-c++11 */ 11862, /* DiagArray562 */ 1623, /* Empty */ 0 },
- { /* return-type */ 11887, /* DiagArray563 */ 1625, /* DiagSubGroup563 */ 411 },
- { /* return-type-c-linkage */ 11899, /* DiagArray564 */ 1635, /* Empty */ 0 },
- { /* sanitize-address */ 11921, /* DiagArray565 */ 1638, /* Empty */ 0 },
- { /* section */ 11938, /* DiagArray566 */ 1641, /* Empty */ 0 },
- { /* selector */ 11946, /* DiagArray567 */ 1645, /* DiagSubGroup567 */ 413 },
- { /* selector-type-mismatch */ 11955, /* DiagArray568 */ 1647, /* Empty */ 0 },
- { /* self-assign */ 11978, /* DiagArray569 */ 1649, /* DiagSubGroup569 */ 415 },
- { /* self-assign-field */ 11990, /* DiagArray570 */ 1651, /* Empty */ 0 },
- { /* self-assign-overloaded */ 12008, /* DiagArray571 */ 1653, /* Empty */ 0 },
- { /* self-move */ 12031, /* DiagArray572 */ 1655, /* Empty */ 0 },
- { /* semicolon-before-method-body */ 12041, /* DiagArray573 */ 1657, /* Empty */ 0 },
- { /* sentinel */ 12070, /* DiagArray574 */ 1659, /* Empty */ 0 },
- { /* sequence-point */ 12079, /* Empty */ 0, /* DiagSubGroup575 */ 418 },
- { /* serialized-diagnostics */ 12094, /* DiagArray576 */ 1662, /* Empty */ 0 },
- { /* shadow */ 12117, /* DiagArray577 */ 1665, /* DiagSubGroup577 */ 420 },
- { /* shadow-all */ 12124, /* Empty */ 0, /* DiagSubGroup578 */ 423 },
- { /* shadow-field */ 12135, /* DiagArray579 */ 1667, /* Empty */ 0 },
- { /* shadow-field-in-constructor */ 12148, /* DiagArray580 */ 1669, /* DiagSubGroup580 */ 428 },
- { /* shadow-field-in-constructor-modified */ 12176, /* DiagArray581 */ 1671, /* Empty */ 0 },
- { /* shadow-ivar */ 12213, /* DiagArray582 */ 1673, /* Empty */ 0 },
- { /* shadow-uncaptured-local */ 12225, /* DiagArray583 */ 1675, /* Empty */ 0 },
- { /* shift-count-negative */ 12249, /* DiagArray584 */ 1677, /* Empty */ 0 },
- { /* shift-count-overflow */ 12270, /* DiagArray585 */ 1679, /* Empty */ 0 },
- { /* shift-negative-value */ 12291, /* DiagArray586 */ 1681, /* Empty */ 0 },
- { /* shift-op-parentheses */ 12312, /* DiagArray587 */ 1683, /* Empty */ 0 },
- { /* shift-overflow */ 12333, /* DiagArray588 */ 1685, /* Empty */ 0 },
- { /* shift-sign-overflow */ 12348, /* DiagArray589 */ 1687, /* Empty */ 0 },
- { /* shorten-64-to-32 */ 12368, /* DiagArray590 */ 1689, /* Empty */ 0 },
- { /* sign-compare */ 12385, /* DiagArray591 */ 1691, /* Empty */ 0 },
- { /* sign-conversion */ 12398, /* DiagArray592 */ 1693, /* Empty */ 0 },
- { /* sign-promo */ 12414, /* Empty */ 0, /* Empty */ 0 },
- { /* signed-enum-bitfield */ 12425, /* DiagArray594 */ 1697, /* Empty */ 0 },
- { /* sizeof-array-argument */ 12446, /* DiagArray595 */ 1699, /* Empty */ 0 },
- { /* sizeof-array-decay */ 12468, /* DiagArray596 */ 1701, /* Empty */ 0 },
- { /* sizeof-pointer-memaccess */ 12487, /* DiagArray597 */ 1703, /* Empty */ 0 },
- { /* slash-u-filename */ 12512, /* DiagArray598 */ 1706, /* Empty */ 0 },
- { /* sometimes-uninitialized */ 12529, /* DiagArray599 */ 1708, /* Empty */ 0 },
- { /* source-uses-openmp */ 12553, /* DiagArray600 */ 1710, /* Empty */ 0 },
- { /* spir-compat */ 12572, /* DiagArray601 */ 1713, /* Empty */ 0 },
- { /* stack-protector */ 12584, /* Empty */ 0, /* Empty */ 0 },
- { /* static-float-init */ 12600, /* DiagArray603 */ 1715, /* DiagSubGroup603 */ 430 },
- { /* static-in-inline */ 12618, /* DiagArray604 */ 1717, /* Empty */ 0 },
- { /* static-inline-explicit-instantiation */ 12635, /* DiagArray605 */ 1720, /* Empty */ 0 },
- { /* static-local-in-inline */ 12672, /* DiagArray606 */ 1722, /* Empty */ 0 },
- { /* static-self-init */ 12695, /* DiagArray607 */ 1724, /* Empty */ 0 },
- { /* stdlibcxx-not-found */ 12712, /* DiagArray608 */ 1726, /* Empty */ 0 },
- { /* strict-aliasing */ 12732, /* Empty */ 0, /* Empty */ 0 },
- { /* strict-aliasing=0 */ 12748, /* Empty */ 0, /* Empty */ 0 },
- { /* strict-aliasing=1 */ 12766, /* Empty */ 0, /* Empty */ 0 },
- { /* strict-aliasing=2 */ 12784, /* Empty */ 0, /* Empty */ 0 },
- { /* strict-overflow */ 12802, /* Empty */ 0, /* Empty */ 0 },
- { /* strict-overflow=0 */ 12818, /* Empty */ 0, /* Empty */ 0 },
- { /* strict-overflow=1 */ 12836, /* Empty */ 0, /* Empty */ 0 },
- { /* strict-overflow=2 */ 12854, /* Empty */ 0, /* Empty */ 0 },
- { /* strict-overflow=3 */ 12872, /* Empty */ 0, /* Empty */ 0 },
- { /* strict-overflow=4 */ 12890, /* Empty */ 0, /* Empty */ 0 },
- { /* strict-overflow=5 */ 12908, /* Empty */ 0, /* Empty */ 0 },
- { /* strict-prototypes */ 12926, /* DiagArray620 */ 1728, /* Empty */ 0 },
- { /* strict-selector-match */ 12944, /* DiagArray621 */ 1730, /* Empty */ 0 },
- { /* string-compare */ 12966, /* DiagArray622 */ 1732, /* Empty */ 0 },
- { /* string-conversion */ 12981, /* DiagArray623 */ 1734, /* Empty */ 0 },
- { /* string-plus-char */ 12999, /* DiagArray624 */ 1736, /* Empty */ 0 },
- { /* string-plus-int */ 13016, /* DiagArray625 */ 1738, /* Empty */ 0 },
- { /* strlcpy-strlcat-size */ 13032, /* DiagArray626 */ 1740, /* Empty */ 0 },
- { /* strncat-size */ 13053, /* DiagArray627 */ 1742, /* Empty */ 0 },
- { /* super-class-method-mismatch */ 13066, /* DiagArray628 */ 1746, /* Empty */ 0 },
- { /* suspicious-bzero */ 13094, /* DiagArray629 */ 1748, /* Empty */ 0 },
- { /* suspicious-memaccess */ 13111, /* Empty */ 0, /* DiagSubGroup630 */ 432 },
- { /* switch */ 13132, /* DiagArray631 */ 1750, /* Empty */ 0 },
- { /* switch-bool */ 13139, /* DiagArray632 */ 1754, /* Empty */ 0 },
- { /* switch-default */ 13151, /* Empty */ 0, /* Empty */ 0 },
- { /* switch-enum */ 13166, /* DiagArray634 */ 1756, /* Empty */ 0 },
- { /* sync-fetch-and-nand-semantics-changed */ 13178, /* DiagArray635 */ 1758, /* Empty */ 0 },
- { /* synth */ 13216, /* Empty */ 0, /* Empty */ 0 },
- { /* tautological-compare */ 13222, /* DiagArray637 */ 1760, /* DiagSubGroup637 */ 438 },
- { /* tautological-constant-compare */ 13243, /* DiagArray638 */ 1763, /* DiagSubGroup638 */ 443 },
- { /* tautological-constant-in-range-compare */ 13273, /* Empty */ 0, /* DiagSubGroup639 */ 445 },
- { /* tautological-constant-out-of-range-compare */ 13312, /* DiagArray640 */ 1765, /* Empty */ 0 },
- { /* tautological-overlap-compare */ 13355, /* DiagArray641 */ 1767, /* Empty */ 0 },
- { /* tautological-pointer-compare */ 13384, /* DiagArray642 */ 1769, /* Empty */ 0 },
- { /* tautological-type-limit-compare */ 13413, /* DiagArray643 */ 1772, /* Empty */ 0 },
- { /* tautological-undefined-compare */ 13445, /* DiagArray644 */ 1774, /* Empty */ 0 },
- { /* tautological-unsigned-enum-zero-compare */ 13476, /* DiagArray645 */ 1777, /* Empty */ 0 },
- { /* tautological-unsigned-zero-compare */ 13516, /* DiagArray646 */ 1779, /* Empty */ 0 },
- { /* tentative-definition-incomplete-type */ 13551, /* DiagArray647 */ 1781, /* Empty */ 0 },
- { /* thread-safety */ 13588, /* Empty */ 0, /* DiagSubGroup648 */ 449 },
- { /* thread-safety-analysis */ 13602, /* DiagArray649 */ 1783, /* Empty */ 0 },
- { /* thread-safety-attributes */ 13625, /* DiagArray650 */ 1801, /* Empty */ 0 },
- { /* thread-safety-beta */ 13650, /* DiagArray651 */ 1809, /* Empty */ 0 },
- { /* thread-safety-negative */ 13669, /* DiagArray652 */ 1811, /* Empty */ 0 },
- { /* thread-safety-precise */ 13692, /* DiagArray653 */ 1813, /* Empty */ 0 },
- { /* thread-safety-reference */ 13714, /* DiagArray654 */ 1817, /* Empty */ 0 },
- { /* thread-safety-verbose */ 13738, /* DiagArray655 */ 1820, /* Empty */ 0 },
- { /* trigraphs */ 13760, /* DiagArray656 */ 1822, /* Empty */ 0 },
- { /* type-limits */ 13770, /* Empty */ 0, /* Empty */ 0 },
- { /* type-safety */ 13782, /* DiagArray658 */ 1827, /* Empty */ 0 },
- { /* typedef-redefinition */ 13794, /* DiagArray659 */ 1831, /* Empty */ 0 },
- { /* typename-missing */ 13815, /* DiagArray660 */ 1833, /* Empty */ 0 },
- { /* unable-to-open-stats-file */ 13832, /* DiagArray661 */ 1835, /* Empty */ 0 },
- { /* unavailable-declarations */ 13858, /* DiagArray662 */ 1837, /* Empty */ 0 },
- { /* undeclared-selector */ 13883, /* DiagArray663 */ 1839, /* Empty */ 0 },
- { /* undef */ 13903, /* DiagArray664 */ 1842, /* Empty */ 0 },
- { /* undefined-bool-conversion */ 13909, /* DiagArray665 */ 1844, /* Empty */ 0 },
- { /* undefined-func-template */ 13935, /* DiagArray666 */ 1847, /* Empty */ 0 },
- { /* undefined-inline */ 13959, /* DiagArray667 */ 1849, /* Empty */ 0 },
- { /* undefined-internal */ 13976, /* DiagArray668 */ 1851, /* Empty */ 0 },
- { /* undefined-internal-type */ 13995, /* DiagArray669 */ 1853, /* Empty */ 0 },
- { /* undefined-reinterpret-cast */ 14019, /* DiagArray670 */ 1855, /* Empty */ 0 },
- { /* undefined-var-template */ 14046, /* DiagArray671 */ 1858, /* Empty */ 0 },
- { /* unevaluated-expression */ 14069, /* DiagArray672 */ 1860, /* DiagSubGroup672 */ 454 },
- { /* unguarded-availability */ 14092, /* DiagArray673 */ 1862, /* DiagSubGroup673 */ 456 },
- { /* unguarded-availability-new */ 14115, /* DiagArray674 */ 1864, /* Empty */ 0 },
- { /* unicode */ 14142, /* DiagArray675 */ 1866, /* Empty */ 0 },
- { /* unicode-homoglyph */ 14150, /* DiagArray676 */ 1872, /* Empty */ 0 },
- { /* unicode-whitespace */ 14168, /* DiagArray677 */ 1874, /* Empty */ 0 },
- { /* unicode-zero-width */ 14187, /* DiagArray678 */ 1876, /* Empty */ 0 },
- { /* uninitialized */ 14206, /* DiagArray679 */ 1878, /* DiagSubGroup679 */ 458 },
- { /* unknown-argument */ 14220, /* DiagArray680 */ 1886, /* Empty */ 0 },
- { /* unknown-attributes */ 14237, /* DiagArray681 */ 1889, /* Empty */ 0 },
- { /* unknown-escape-sequence */ 14256, /* DiagArray682 */ 1891, /* Empty */ 0 },
- { /* unknown-pragmas */ 14280, /* DiagArray683 */ 1893, /* Empty */ 0 },
- { /* unknown-sanitizers */ 14296, /* DiagArray684 */ 1911, /* Empty */ 0 },
- { /* unknown-warning-option */ 14315, /* DiagArray685 */ 1913, /* Empty */ 0 },
- { /* unnamed-type-template-args */ 14338, /* DiagArray686 */ 1917, /* DiagSubGroup686 */ 461 },
- { /* unneeded-internal-declaration */ 14365, /* DiagArray687 */ 1919, /* Empty */ 0 },
- { /* unneeded-member-function */ 14395, /* DiagArray688 */ 1922, /* Empty */ 0 },
- { /* unreachable-code */ 14420, /* DiagArray689 */ 1924, /* DiagSubGroup689 */ 463 },
- { /* unreachable-code-aggressive */ 14437, /* Empty */ 0, /* DiagSubGroup690 */ 465 },
- { /* unreachable-code-break */ 14465, /* DiagArray691 */ 1926, /* Empty */ 0 },
- { /* unreachable-code-loop-increment */ 14488, /* DiagArray692 */ 1928, /* Empty */ 0 },
- { /* unreachable-code-return */ 14520, /* DiagArray693 */ 1930, /* Empty */ 0 },
- { /* unsequenced */ 14544, /* DiagArray694 */ 1932, /* Empty */ 0 },
- { /* unsupported-abs */ 14556, /* DiagArray695 */ 1935, /* Empty */ 0 },
- { /* unsupported-availability-guard */ 14572, /* DiagArray696 */ 1938, /* Empty */ 0 },
- { /* unsupported-cb */ 14603, /* DiagArray697 */ 1940, /* Empty */ 0 },
- { /* unsupported-dll-base-class-template */ 14618, /* DiagArray698 */ 1942, /* Empty */ 0 },
- { /* unsupported-friend */ 14654, /* DiagArray699 */ 1944, /* Empty */ 0 },
- { /* unsupported-gpopt */ 14673, /* DiagArray700 */ 1947, /* Empty */ 0 },
- { /* unsupported-nan */ 14691, /* DiagArray701 */ 1949, /* Empty */ 0 },
- { /* unsupported-target-opt */ 14707, /* DiagArray702 */ 1952, /* Empty */ 0 },
- { /* unsupported-visibility */ 14730, /* DiagArray703 */ 1954, /* Empty */ 0 },
- { /* unusable-partial-specialization */ 14753, /* DiagArray704 */ 1956, /* Empty */ 0 },
- { /* unused */ 14785, /* Empty */ 0, /* DiagSubGroup705 */ 469 },
- { /* unused-argument */ 14792, /* Empty */ 0, /* Empty */ 0 },
- { /* unused-command-line-argument */ 14808, /* DiagArray707 */ 1958, /* Empty */ 0 },
- { /* unused-comparison */ 14837, /* DiagArray708 */ 1966, /* Empty */ 0 },
- { /* unused-const-variable */ 14855, /* DiagArray709 */ 1968, /* Empty */ 0 },
- { /* unused-exception-parameter */ 14877, /* DiagArray710 */ 1970, /* Empty */ 0 },
- { /* unused-function */ 14904, /* DiagArray711 */ 1972, /* DiagSubGroup711 */ 479 },
- { /* unused-getter-return-value */ 14920, /* DiagArray712 */ 1974, /* Empty */ 0 },
- { /* unused-label */ 14947, /* DiagArray713 */ 1976, /* Empty */ 0 },
- { /* unused-lambda-capture */ 14960, /* DiagArray714 */ 1978, /* Empty */ 0 },
- { /* unused-local-typedef */ 14982, /* DiagArray715 */ 1980, /* Empty */ 0 },
- { /* unused-local-typedefs */ 15003, /* Empty */ 0, /* DiagSubGroup716 */ 481 },
- { /* unused-macros */ 15025, /* DiagArray717 */ 1982, /* Empty */ 0 },
- { /* unused-member-function */ 15039, /* DiagArray718 */ 1984, /* DiagSubGroup718 */ 483 },
- { /* unused-parameter */ 15062, /* DiagArray719 */ 1986, /* Empty */ 0 },
- { /* unused-private-field */ 15079, /* DiagArray720 */ 1988, /* Empty */ 0 },
- { /* unused-property-ivar */ 15100, /* DiagArray721 */ 1990, /* Empty */ 0 },
- { /* unused-result */ 15121, /* DiagArray722 */ 1992, /* Empty */ 0 },
- { /* unused-template */ 15135, /* DiagArray723 */ 1994, /* DiagSubGroup723 */ 485 },
- { /* unused-value */ 15151, /* DiagArray724 */ 1996, /* DiagSubGroup724 */ 487 },
- { /* unused-variable */ 15164, /* DiagArray725 */ 2001, /* DiagSubGroup725 */ 491 },
- { /* unused-volatile-lvalue */ 15180, /* DiagArray726 */ 2003, /* Empty */ 0 },
- { /* used-but-marked-unused */ 15203, /* DiagArray727 */ 2005, /* Empty */ 0 },
- { /* user-defined-literals */ 15226, /* DiagArray728 */ 2007, /* Empty */ 0 },
- { /* user-defined-warnings */ 15248, /* DiagArray729 */ 2009, /* Empty */ 0 },
- { /* varargs */ 15270, /* DiagArray730 */ 2011, /* Empty */ 0 },
- { /* variadic-macros */ 15278, /* DiagArray731 */ 2015, /* Empty */ 0 },
- { /* vec-elem-size */ 15294, /* DiagArray732 */ 2019, /* Empty */ 0 },
- { /* vector-conversion */ 15308, /* DiagArray733 */ 2021, /* Empty */ 0 },
- { /* vector-conversions */ 15326, /* Empty */ 0, /* DiagSubGroup734 */ 493 },
- { /* vexing-parse */ 15345, /* DiagArray735 */ 2023, /* Empty */ 0 },
- { /* visibility */ 15358, /* DiagArray736 */ 2027, /* Empty */ 0 },
- { /* vla */ 15369, /* DiagArray737 */ 2030, /* Empty */ 0 },
- { /* vla-extension */ 15373, /* DiagArray738 */ 2032, /* Empty */ 0 },
- { /* void-ptr-dereference */ 15387, /* DiagArray739 */ 2034, /* Empty */ 0 },
- { /* volatile-register-var */ 15408, /* Empty */ 0, /* Empty */ 0 },
- { /* weak-template-vtables */ 15430, /* DiagArray741 */ 2036, /* Empty */ 0 },
- { /* weak-vtables */ 15452, /* DiagArray742 */ 2038, /* Empty */ 0 },
- { /* writable-strings */ 15465, /* DiagArray743 */ 2040, /* DiagSubGroup743 */ 495 },
- { /* write-strings */ 15482, /* Empty */ 0, /* DiagSubGroup744 */ 497 },
- { /* zero-as-null-pointer-constant */ 15496, /* DiagArray745 */ 2042, /* Empty */ 0 },
- { /* zero-length-array */ 15526, /* DiagArray746 */ 2044, /* Empty */ 0 },
+ { /* c++98-compat */ 2116, /* DiagArray106 */ 292, /* DiagSubGroup106 */ 97 },
+ { /* c++98-compat-bind-to-temporary-copy */ 2129, /* DiagArray107 */ 352, /* Empty */ 0 },
+ { /* c++98-compat-extra-semi */ 2165, /* DiagArray108 */ 354, /* Empty */ 0 },
+ { /* c++98-compat-local-type-template-args */ 2189, /* DiagArray109 */ 356, /* Empty */ 0 },
+ { /* c++98-compat-pedantic */ 2227, /* DiagArray110 */ 358, /* DiagSubGroup110 */ 103 },
+ { /* c++98-compat-unnamed-type-template-args */ 2249, /* DiagArray111 */ 368, /* Empty */ 0 },
+ { /* c11-extensions */ 2289, /* DiagArray112 */ 370, /* Empty */ 0 },
+ { /* c99-compat */ 2304, /* DiagArray113 */ 377, /* Empty */ 0 },
+ { /* c99-extensions */ 2315, /* DiagArray114 */ 381, /* Empty */ 0 },
+ { /* call-to-pure-virtual-from-ctor-dtor */ 2330, /* DiagArray115 */ 392, /* Empty */ 0 },
+ { /* cast-align */ 2366, /* DiagArray116 */ 394, /* Empty */ 0 },
+ { /* cast-calling-convention */ 2377, /* DiagArray117 */ 396, /* Empty */ 0 },
+ { /* cast-of-sel-type */ 2401, /* DiagArray118 */ 398, /* Empty */ 0 },
+ { /* cast-qual */ 2418, /* DiagArray119 */ 400, /* Empty */ 0 },
+ { /* cast-qual-unrelated */ 2428, /* DiagArray120 */ 403, /* Empty */ 0 },
+ { /* char-align */ 2448, /* Empty */ 0, /* Empty */ 0 },
+ { /* char-subscripts */ 2459, /* DiagArray122 */ 405, /* Empty */ 0 },
+ { /* clang-cl-pch */ 2475, /* DiagArray123 */ 408, /* Empty */ 0 },
+ { /* class-varargs */ 2488, /* DiagArray124 */ 414, /* DiagSubGroup124 */ 110 },
+ { /* comma */ 2502, /* DiagArray125 */ 416, /* Empty */ 0 },
+ { /* comment */ 2508, /* DiagArray126 */ 418, /* Empty */ 0 },
+ { /* comments */ 2516, /* Empty */ 0, /* DiagSubGroup127 */ 112 },
+ { /* compare-distinct-pointer-types */ 2525, /* DiagArray128 */ 423, /* Empty */ 0 },
+ { /* complex-component-init */ 2556, /* DiagArray129 */ 425, /* Empty */ 0 },
+ { /* conditional-type-mismatch */ 2579, /* DiagArray130 */ 427, /* Empty */ 0 },
+ { /* conditional-uninitialized */ 2605, /* DiagArray131 */ 429, /* Empty */ 0 },
+ { /* config-macros */ 2631, /* DiagArray132 */ 431, /* Empty */ 0 },
+ { /* constant-conversion */ 2645, /* DiagArray133 */ 433, /* DiagSubGroup133 */ 114 },
+ { /* constant-logical-operand */ 2665, /* DiagArray134 */ 435, /* Empty */ 0 },
+ { /* constexpr-not-const */ 2690, /* DiagArray135 */ 437, /* Empty */ 0 },
+ { /* consumed */ 2710, /* DiagArray136 */ 439, /* Empty */ 0 },
+ { /* conversion */ 2719, /* DiagArray137 */ 448, /* DiagSubGroup137 */ 116 },
+ { /* conversion-null */ 2730, /* Empty */ 0, /* DiagSubGroup138 */ 132 },
+ { /* coroutine */ 2746, /* Empty */ 0, /* DiagSubGroup139 */ 134 },
+ { /* coroutine-missing-unhandled-exception */ 2756, /* DiagArray140 */ 454, /* Empty */ 0 },
+ { /* covered-switch-default */ 2794, /* DiagArray141 */ 456, /* Empty */ 0 },
+ { /* cpp */ 2817, /* Empty */ 0, /* DiagSubGroup142 */ 136 },
+ { /* cstring-format-directive */ 2821, /* DiagArray143 */ 458, /* Empty */ 0 },
+ { /* ctad-maybe-unsupported */ 2846, /* DiagArray144 */ 460, /* Empty */ 0 },
+ { /* ctor-dtor-privacy */ 2869, /* Empty */ 0, /* Empty */ 0 },
+ { /* ctu */ 2887, /* DiagArray146 */ 462, /* Empty */ 0 },
+ { /* cuda-compat */ 2891, /* DiagArray147 */ 464, /* Empty */ 0 },
+ { /* custom-atomic-properties */ 2903, /* DiagArray148 */ 470, /* Empty */ 0 },
+ { /* dangling */ 2928, /* DiagArray149 */ 472, /* DiagSubGroup149 */ 138 },
+ { /* dangling-else */ 2937, /* DiagArray150 */ 475, /* Empty */ 0 },
+ { /* dangling-field */ 2951, /* DiagArray151 */ 477, /* Empty */ 0 },
+ { /* dangling-initializer-list */ 2966, /* DiagArray152 */ 482, /* Empty */ 0 },
+ { /* darwin-sdk-settings */ 2992, /* DiagArray153 */ 484, /* Empty */ 0 },
+ { /* date-time */ 3012, /* DiagArray154 */ 486, /* Empty */ 0 },
+ { /* dealloc-in-category */ 3022, /* DiagArray155 */ 488, /* Empty */ 0 },
+ { /* debug-compression-unavailable */ 3042, /* DiagArray156 */ 490, /* Empty */ 0 },
+ { /* declaration-after-statement */ 3072, /* DiagArray157 */ 492, /* Empty */ 0 },
+ { /* defaulted-function-deleted */ 3100, /* DiagArray158 */ 494, /* Empty */ 0 },
+ { /* delegating-ctor-cycles */ 3127, /* DiagArray159 */ 496, /* Empty */ 0 },
+ { /* delete-abstract-non-virtual-dtor */ 3150, /* DiagArray160 */ 498, /* Empty */ 0 },
+ { /* delete-incomplete */ 3183, /* DiagArray161 */ 500, /* Empty */ 0 },
+ { /* delete-non-abstract-non-virtual-dtor */ 3201, /* DiagArray162 */ 503, /* Empty */ 0 },
+ { /* delete-non-virtual-dtor */ 3238, /* Empty */ 0, /* DiagSubGroup163 */ 142 },
+ { /* deprecated */ 3262, /* DiagArray164 */ 505, /* DiagSubGroup164 */ 145 },
+ { /* deprecated-attributes */ 3273, /* DiagArray165 */ 514, /* Empty */ 0 },
+ { /* deprecated-declarations */ 3295, /* DiagArray166 */ 516, /* Empty */ 0 },
+ { /* deprecated-dynamic-exception-spec */ 3319, /* DiagArray167 */ 523, /* Empty */ 0 },
+ { /* deprecated-implementations */ 3353, /* DiagArray168 */ 525, /* Empty */ 0 },
+ { /* deprecated-increment-bool */ 3380, /* DiagArray169 */ 528, /* Empty */ 0 },
+ { /* deprecated-objc-isa-usage */ 3406, /* DiagArray170 */ 530, /* Empty */ 0 },
+ { /* deprecated-objc-pointer-introspection */ 3432, /* DiagArray171 */ 533, /* DiagSubGroup171 */ 153 },
+ { /* deprecated-objc-pointer-introspection-performSelector */ 3470, /* DiagArray172 */ 535, /* Empty */ 0 },
+ { /* deprecated-register */ 3524, /* DiagArray173 */ 537, /* Empty */ 0 },
+ { /* deprecated-this-capture */ 3544, /* DiagArray174 */ 539, /* Empty */ 0 },
+ { /* deprecated-writable-strings */ 3568, /* Empty */ 0, /* DiagSubGroup175 */ 155 },
+ { /* direct-ivar-access */ 3596, /* DiagArray176 */ 541, /* Empty */ 0 },
+ { /* disabled-macro-expansion */ 3615, /* DiagArray177 */ 543, /* Empty */ 0 },
+ { /* disabled-optimization */ 3640, /* Empty */ 0, /* Empty */ 0 },
+ { /* discard-qual */ 3662, /* Empty */ 0, /* Empty */ 0 },
+ { /* distributed-object-modifiers */ 3675, /* DiagArray180 */ 545, /* Empty */ 0 },
+ { /* div-by-zero */ 3704, /* Empty */ 0, /* DiagSubGroup181 */ 157 },
+ { /* division-by-zero */ 3716, /* DiagArray182 */ 548, /* Empty */ 0 },
+ { /* dll-attribute-on-redeclaration */ 3733, /* DiagArray183 */ 550, /* Empty */ 0 },
+ { /* dllexport-explicit-instantiation-decl */ 3764, /* DiagArray184 */ 552, /* Empty */ 0 },
+ { /* dllimport-static-field-def */ 3802, /* DiagArray185 */ 554, /* Empty */ 0 },
+ { /* documentation */ 3829, /* DiagArray186 */ 556, /* DiagSubGroup186 */ 159 },
+ { /* documentation-deprecated-sync */ 3843, /* DiagArray187 */ 575, /* Empty */ 0 },
+ { /* documentation-html */ 3873, /* DiagArray188 */ 577, /* Empty */ 0 },
+ { /* documentation-pedantic */ 3892, /* DiagArray189 */ 582, /* DiagSubGroup189 */ 162 },
+ { /* documentation-unknown-command */ 3915, /* DiagArray190 */ 584, /* Empty */ 0 },
+ { /* dollar-in-identifier-extension */ 3945, /* DiagArray191 */ 587, /* Empty */ 0 },
+ { /* double-promotion */ 3976, /* DiagArray192 */ 589, /* Empty */ 0 },
+ { /* duplicate-decl-specifier */ 3993, /* DiagArray193 */ 591, /* Empty */ 0 },
+ { /* duplicate-enum */ 4018, /* DiagArray194 */ 596, /* Empty */ 0 },
+ { /* duplicate-method-arg */ 4033, /* DiagArray195 */ 598, /* Empty */ 0 },
+ { /* duplicate-method-match */ 4054, /* DiagArray196 */ 600, /* Empty */ 0 },
+ { /* duplicate-protocol */ 4077, /* DiagArray197 */ 602, /* Empty */ 0 },
+ { /* dynamic-class-memaccess */ 4096, /* DiagArray198 */ 604, /* Empty */ 0 },
+ { /* dynamic-exception-spec */ 4120, /* DiagArray199 */ 606, /* DiagSubGroup199 */ 164 },
+ { /* effc++ */ 4143, /* Empty */ 0, /* DiagSubGroup200 */ 166 },
+ { /* embedded-directive */ 4150, /* DiagArray201 */ 608, /* Empty */ 0 },
+ { /* empty-body */ 4169, /* DiagArray202 */ 610, /* Empty */ 0 },
+ { /* empty-decomposition */ 4180, /* DiagArray203 */ 616, /* Empty */ 0 },
+ { /* empty-init-stmt */ 4200, /* DiagArray204 */ 618, /* Empty */ 0 },
+ { /* empty-translation-unit */ 4216, /* DiagArray205 */ 620, /* Empty */ 0 },
+ { /* encode-type */ 4239, /* DiagArray206 */ 622, /* Empty */ 0 },
+ { /* endif-labels */ 4251, /* Empty */ 0, /* DiagSubGroup207 */ 168 },
+ { /* enum-compare */ 4264, /* DiagArray208 */ 624, /* DiagSubGroup208 */ 170 },
+ { /* enum-compare-switch */ 4277, /* DiagArray209 */ 626, /* Empty */ 0 },
+ { /* enum-conversion */ 4297, /* DiagArray210 */ 628, /* Empty */ 0 },
+ { /* enum-too-large */ 4313, /* DiagArray211 */ 630, /* Empty */ 0 },
+ { /* exceptions */ 4328, /* DiagArray212 */ 633, /* Empty */ 0 },
+ { /* exit-time-destructors */ 4339, /* DiagArray213 */ 637, /* Empty */ 0 },
+ { /* expansion-to-defined */ 4361, /* DiagArray214 */ 639, /* Empty */ 0 },
+ { /* experimental-isel */ 4382, /* DiagArray215 */ 642, /* Empty */ 0 },
+ { /* explicit-initialize-call */ 4400, /* DiagArray216 */ 645, /* Empty */ 0 },
+ { /* explicit-ownership-type */ 4425, /* DiagArray217 */ 648, /* Empty */ 0 },
+ { /* extern-c-compat */ 4449, /* DiagArray218 */ 650, /* Empty */ 0 },
+ { /* extern-initializer */ 4465, /* DiagArray219 */ 652, /* Empty */ 0 },
+ { /* extra */ 4484, /* DiagArray220 */ 654, /* DiagSubGroup220 */ 172 },
+ { /* extra-qualification */ 4490, /* DiagArray221 */ 656, /* Empty */ 0 },
+ { /* extra-semi */ 4510, /* DiagArray222 */ 658, /* DiagSubGroup222 */ 182 },
+ { /* extra-semi-stmt */ 4521, /* DiagArray223 */ 661, /* DiagSubGroup223 */ 185 },
+ { /* extra-tokens */ 4537, /* DiagArray224 */ 663, /* Empty */ 0 },
+ { /* fallback */ 4550, /* DiagArray225 */ 666, /* Empty */ 0 },
+ { /* fixed-enum-extension */ 4559, /* DiagArray226 */ 668, /* Empty */ 0 },
+ { /* flag-enum */ 4580, /* DiagArray227 */ 670, /* Empty */ 0 },
+ { /* flexible-array-extensions */ 4590, /* DiagArray228 */ 672, /* Empty */ 0 },
+ { /* float-conversion */ 4616, /* DiagArray229 */ 675, /* DiagSubGroup229 */ 187 },
+ { /* float-equal */ 4633, /* DiagArray230 */ 677, /* Empty */ 0 },
+ { /* float-overflow-conversion */ 4645, /* DiagArray231 */ 679, /* Empty */ 0 },
+ { /* float-zero-conversion */ 4671, /* DiagArray232 */ 682, /* Empty */ 0 },
+ { /* for-loop-analysis */ 4693, /* DiagArray233 */ 684, /* Empty */ 0 },
+ { /* format */ 4711, /* DiagArray234 */ 687, /* DiagSubGroup234 */ 190 },
+ { /* format-extra-args */ 4718, /* DiagArray235 */ 713, /* Empty */ 0 },
+ { /* format-invalid-specifier */ 4736, /* DiagArray236 */ 715, /* Empty */ 0 },
+ { /* format-non-iso */ 4761, /* DiagArray237 */ 717, /* Empty */ 0 },
+ { /* format-nonliteral */ 4776, /* DiagArray238 */ 721, /* Empty */ 0 },
+ { /* format-pedantic */ 4794, /* DiagArray239 */ 723, /* Empty */ 0 },
+ { /* format-security */ 4810, /* DiagArray240 */ 726, /* Empty */ 0 },
+ { /* format-y2k */ 4826, /* Empty */ 0, /* Empty */ 0 },
+ { /* format-zero-length */ 4837, /* DiagArray242 */ 728, /* Empty */ 0 },
+ { /* format=2 */ 4856, /* Empty */ 0, /* DiagSubGroup243 */ 197 },
+ { /* four-char-constants */ 4865, /* DiagArray244 */ 730, /* Empty */ 0 },
+ { /* frame-larger-than= */ 4885, /* DiagArray245 */ 732, /* Empty */ 0 },
+ { /* framework-include-private-from-public */ 4904, /* DiagArray246 */ 735, /* Empty */ 0 },
+ { /* function-def-in-objc-container */ 4942, /* DiagArray247 */ 737, /* Empty */ 0 },
+ { /* function-multiversion */ 4973, /* DiagArray248 */ 739, /* Empty */ 0 },
+ { /* future-compat */ 4995, /* Empty */ 0, /* Empty */ 0 },
+ { /* gcc-compat */ 5009, /* DiagArray250 */ 742, /* Empty */ 0 },
+ { /* global-constructors */ 5020, /* DiagArray251 */ 753, /* Empty */ 0 },
+ { /* gnu */ 5040, /* Empty */ 0, /* DiagSubGroup252 */ 201 },
+ { /* gnu-alignof-expression */ 5044, /* DiagArray253 */ 756, /* Empty */ 0 },
+ { /* gnu-anonymous-struct */ 5067, /* DiagArray254 */ 758, /* Empty */ 0 },
+ { /* gnu-array-member-paren-init */ 5088, /* DiagArray255 */ 760, /* Empty */ 0 },
+ { /* gnu-auto-type */ 5116, /* DiagArray256 */ 762, /* Empty */ 0 },
+ { /* gnu-binary-literal */ 5130, /* DiagArray257 */ 764, /* Empty */ 0 },
+ { /* gnu-case-range */ 5149, /* DiagArray258 */ 766, /* Empty */ 0 },
+ { /* gnu-complex-integer */ 5164, /* DiagArray259 */ 768, /* Empty */ 0 },
+ { /* gnu-compound-literal-initializer */ 5184, /* DiagArray260 */ 770, /* Empty */ 0 },
+ { /* gnu-conditional-omitted-operand */ 5217, /* DiagArray261 */ 772, /* Empty */ 0 },
+ { /* gnu-designator */ 5249, /* DiagArray262 */ 774, /* Empty */ 0 },
+ { /* gnu-empty-initializer */ 5264, /* DiagArray263 */ 778, /* Empty */ 0 },
+ { /* gnu-empty-struct */ 5286, /* DiagArray264 */ 780, /* Empty */ 0 },
+ { /* gnu-flexible-array-initializer */ 5303, /* DiagArray265 */ 784, /* Empty */ 0 },
+ { /* gnu-flexible-array-union-member */ 5334, /* DiagArray266 */ 786, /* Empty */ 0 },
+ { /* gnu-folding-constant */ 5366, /* DiagArray267 */ 788, /* Empty */ 0 },
+ { /* gnu-imaginary-constant */ 5387, /* DiagArray268 */ 792, /* Empty */ 0 },
+ { /* gnu-include-next */ 5410, /* DiagArray269 */ 794, /* Empty */ 0 },
+ { /* gnu-label-as-value */ 5427, /* DiagArray270 */ 796, /* Empty */ 0 },
+ { /* gnu-redeclared-enum */ 5446, /* DiagArray271 */ 799, /* Empty */ 0 },
+ { /* gnu-statement-expression */ 5466, /* DiagArray272 */ 801, /* Empty */ 0 },
+ { /* gnu-static-float-init */ 5491, /* DiagArray273 */ 803, /* Empty */ 0 },
+ { /* gnu-string-literal-operator-template */ 5513, /* DiagArray274 */ 805, /* Empty */ 0 },
+ { /* gnu-union-cast */ 5550, /* DiagArray275 */ 807, /* Empty */ 0 },
+ { /* gnu-variable-sized-type-not-at-end */ 5565, /* DiagArray276 */ 809, /* Empty */ 0 },
+ { /* gnu-zero-line-directive */ 5600, /* DiagArray277 */ 811, /* Empty */ 0 },
+ { /* gnu-zero-variadic-macro-arguments */ 5624, /* DiagArray278 */ 813, /* Empty */ 0 },
+ { /* header-guard */ 5658, /* DiagArray279 */ 816, /* Empty */ 0 },
+ { /* header-hygiene */ 5671, /* DiagArray280 */ 818, /* Empty */ 0 },
+ { /* idiomatic-parentheses */ 5686, /* DiagArray281 */ 820, /* Empty */ 0 },
+ { /* ignored-attributes */ 5708, /* DiagArray282 */ 822, /* Empty */ 0 },
+ { /* ignored-optimization-argument */ 5727, /* DiagArray283 */ 883, /* Empty */ 0 },
+ { /* ignored-pragma-intrinsic */ 5757, /* DiagArray284 */ 886, /* Empty */ 0 },
+ { /* ignored-pragma-optimize */ 5782, /* DiagArray285 */ 888, /* Empty */ 0 },
+ { /* ignored-pragmas */ 5806, /* DiagArray286 */ 890, /* DiagSubGroup286 */ 230 },
+ { /* ignored-qualifiers */ 5822, /* DiagArray287 */ 933, /* Empty */ 0 },
+ { /* implicit */ 5841, /* Empty */ 0, /* DiagSubGroup288 */ 233 },
+ { /* implicit-atomic-properties */ 5850, /* DiagArray289 */ 939, /* Empty */ 0 },
+ { /* implicit-conversion-floating-point-to-bool */ 5877, /* DiagArray290 */ 942, /* Empty */ 0 },
+ { /* implicit-exception-spec-mismatch */ 5920, /* DiagArray291 */ 944, /* Empty */ 0 },
+ { /* implicit-fallthrough */ 5953, /* DiagArray292 */ 946, /* DiagSubGroup292 */ 236 },
+ { /* implicit-fallthrough-per-function */ 5974, /* DiagArray293 */ 949, /* Empty */ 0 },
+ { /* implicit-fixed-point-conversion */ 6008, /* DiagArray294 */ 951, /* Empty */ 0 },
+ { /* implicit-float-conversion */ 6040, /* DiagArray295 */ 953, /* Empty */ 0 },
+ { /* implicit-function-declaration */ 6066, /* DiagArray296 */ 956, /* Empty */ 0 },
+ { /* implicit-int */ 6096, /* DiagArray297 */ 961, /* Empty */ 0 },
+ { /* implicit-int-conversion */ 6109, /* DiagArray298 */ 963, /* Empty */ 0 },
+ { /* implicit-retain-self */ 6133, /* DiagArray299 */ 966, /* Empty */ 0 },
+ { /* implicitly-unsigned-literal */ 6154, /* DiagArray300 */ 968, /* Empty */ 0 },
+ { /* import */ 6182, /* Empty */ 0, /* Empty */ 0 },
+ { /* import-preprocessor-directive-pedantic */ 6189, /* DiagArray302 */ 970, /* Empty */ 0 },
+ { /* inaccessible-base */ 6228, /* DiagArray303 */ 972, /* Empty */ 0 },
+ { /* include-next-absolute-path */ 6246, /* DiagArray304 */ 974, /* Empty */ 0 },
+ { /* include-next-outside-header */ 6273, /* DiagArray305 */ 976, /* Empty */ 0 },
+ { /* incompatible-exception-spec */ 6301, /* DiagArray306 */ 978, /* Empty */ 0 },
+ { /* incompatible-function-pointer-types */ 6329, /* DiagArray307 */ 981, /* Empty */ 0 },
+ { /* incompatible-library-redeclaration */ 6365, /* DiagArray308 */ 983, /* Empty */ 0 },
+ { /* incompatible-ms-struct */ 6400, /* DiagArray309 */ 985, /* Empty */ 0 },
+ { /* incompatible-pointer-types */ 6423, /* DiagArray310 */ 988, /* DiagSubGroup310 */ 238 },
+ { /* incompatible-pointer-types-discards-qualifiers */ 6450, /* DiagArray311 */ 990, /* Empty */ 0 },
+ { /* incompatible-property-type */ 6497, /* DiagArray312 */ 993, /* Empty */ 0 },
+ { /* incompatible-sysroot */ 6524, /* DiagArray313 */ 995, /* Empty */ 0 },
+ { /* incomplete-framework-module-declaration */ 6545, /* DiagArray314 */ 997, /* Empty */ 0 },
+ { /* incomplete-implementation */ 6585, /* DiagArray315 */ 999, /* Empty */ 0 },
+ { /* incomplete-module */ 6611, /* Empty */ 0, /* DiagSubGroup316 */ 241 },
+ { /* incomplete-umbrella */ 6629, /* DiagArray317 */ 1001, /* Empty */ 0 },
+ { /* inconsistent-dllimport */ 6649, /* DiagArray318 */ 1005, /* Empty */ 0 },
+ { /* inconsistent-missing-destructor-override */ 6672, /* DiagArray319 */ 1008, /* Empty */ 0 },
+ { /* inconsistent-missing-override */ 6713, /* DiagArray320 */ 1010, /* Empty */ 0 },
+ { /* increment-bool */ 6743, /* DiagArray321 */ 1012, /* DiagSubGroup321 */ 244 },
+ { /* infinite-recursion */ 6758, /* DiagArray322 */ 1014, /* Empty */ 0 },
+ { /* init-self */ 6777, /* Empty */ 0, /* Empty */ 0 },
+ { /* initializer-overrides */ 6787, /* DiagArray324 */ 1016, /* Empty */ 0 },
+ { /* injected-class-name */ 6809, /* DiagArray325 */ 1019, /* Empty */ 0 },
+ { /* inline */ 6829, /* Empty */ 0, /* Empty */ 0 },
+ { /* inline-asm */ 6836, /* DiagArray327 */ 1021, /* Empty */ 0 },
+ { /* inline-new-delete */ 6847, /* DiagArray328 */ 1023, /* Empty */ 0 },
+ { /* instantiation-after-specialization */ 6865, /* DiagArray329 */ 1025, /* Empty */ 0 },
+ { /* int-conversion */ 6900, /* DiagArray330 */ 1027, /* Empty */ 0 },
+ { /* int-conversions */ 6915, /* Empty */ 0, /* DiagSubGroup331 */ 246 },
+ { /* int-to-pointer-cast */ 6931, /* DiagArray332 */ 1030, /* DiagSubGroup332 */ 248 },
+ { /* int-to-void-pointer-cast */ 6951, /* DiagArray333 */ 1032, /* Empty */ 0 },
+ { /* integer-overflow */ 6976, /* DiagArray334 */ 1034, /* Empty */ 0 },
+ { /* invalid-command-line-argument */ 6993, /* DiagArray335 */ 1036, /* DiagSubGroup335 */ 250 },
+ { /* invalid-constexpr */ 7023, /* DiagArray336 */ 1042, /* Empty */ 0 },
+ { /* invalid-iboutlet */ 7041, /* DiagArray337 */ 1044, /* Empty */ 0 },
+ { /* invalid-initializer-from-system-header */ 7058, /* DiagArray338 */ 1047, /* Empty */ 0 },
+ { /* invalid-ios-deployment-target */ 7097, /* DiagArray339 */ 1049, /* Empty */ 0 },
+ { /* invalid-noreturn */ 7127, /* DiagArray340 */ 1051, /* Empty */ 0 },
+ { /* invalid-offsetof */ 7144, /* DiagArray341 */ 1054, /* Empty */ 0 },
+ { /* invalid-or-nonexistent-directory */ 7161, /* DiagArray342 */ 1057, /* Empty */ 0 },
+ { /* invalid-partial-specialization */ 7194, /* DiagArray343 */ 1060, /* Empty */ 0 },
+ { /* invalid-pch */ 7225, /* Empty */ 0, /* Empty */ 0 },
+ { /* invalid-pp-token */ 7237, /* DiagArray345 */ 1062, /* Empty */ 0 },
+ { /* invalid-source-encoding */ 7254, /* DiagArray346 */ 1065, /* Empty */ 0 },
+ { /* invalid-token-paste */ 7278, /* DiagArray347 */ 1068, /* Empty */ 0 },
+ { /* jump-seh-finally */ 7298, /* DiagArray348 */ 1070, /* Empty */ 0 },
+ { /* keyword-compat */ 7315, /* DiagArray349 */ 1072, /* Empty */ 0 },
+ { /* keyword-macro */ 7330, /* DiagArray350 */ 1074, /* Empty */ 0 },
+ { /* knr-promoted-parameter */ 7344, /* DiagArray351 */ 1076, /* Empty */ 0 },
+ { /* language-extension-token */ 7367, /* DiagArray352 */ 1078, /* Empty */ 0 },
+ { /* large-by-value-copy */ 7392, /* DiagArray353 */ 1080, /* Empty */ 0 },
+ { /* liblto */ 7412, /* Empty */ 0, /* Empty */ 0 },
+ { /* literal-conversion */ 7419, /* DiagArray355 */ 1083, /* Empty */ 0 },
+ { /* literal-range */ 7438, /* DiagArray356 */ 1086, /* Empty */ 0 },
+ { /* local-type-template-args */ 7452, /* DiagArray357 */ 1089, /* DiagSubGroup357 */ 252 },
+ { /* logical-not-parentheses */ 7477, /* DiagArray358 */ 1091, /* Empty */ 0 },
+ { /* logical-op-parentheses */ 7501, /* DiagArray359 */ 1093, /* Empty */ 0 },
+ { /* long-long */ 7524, /* DiagArray360 */ 1095, /* DiagSubGroup360 */ 254 },
+ { /* loop-analysis */ 7534, /* Empty */ 0, /* DiagSubGroup361 */ 256 },
+ { /* macro-redefined */ 7548, /* DiagArray362 */ 1097, /* Empty */ 0 },
+ { /* main */ 7564, /* DiagArray363 */ 1099, /* Empty */ 0 },
+ { /* main-return-type */ 7569, /* DiagArray364 */ 1107, /* Empty */ 0 },
+ { /* malformed-warning-check */ 7586, /* DiagArray365 */ 1109, /* Empty */ 0 },
+ { /* many-braces-around-scalar-init */ 7610, /* DiagArray366 */ 1111, /* Empty */ 0 },
+ { /* max-unsigned-zero */ 7641, /* DiagArray367 */ 1113, /* Empty */ 0 },
+ { /* memset-transposed-args */ 7659, /* DiagArray368 */ 1115, /* Empty */ 0 },
+ { /* memsize-comparison */ 7682, /* DiagArray369 */ 1117, /* Empty */ 0 },
+ { /* method-signatures */ 7701, /* DiagArray370 */ 1119, /* Empty */ 0 },
+ { /* microsoft */ 7719, /* Empty */ 0, /* DiagSubGroup371 */ 259 },
+ { /* microsoft-anon-tag */ 7729, /* DiagArray372 */ 1122, /* Empty */ 0 },
+ { /* microsoft-cast */ 7748, /* DiagArray373 */ 1125, /* Empty */ 0 },
+ { /* microsoft-charize */ 7763, /* DiagArray374 */ 1128, /* Empty */ 0 },
+ { /* microsoft-comment-paste */ 7781, /* DiagArray375 */ 1130, /* Empty */ 0 },
+ { /* microsoft-const-init */ 7805, /* DiagArray376 */ 1132, /* Empty */ 0 },
+ { /* microsoft-cpp-macro */ 7826, /* DiagArray377 */ 1134, /* Empty */ 0 },
+ { /* microsoft-default-arg-redefinition */ 7846, /* DiagArray378 */ 1136, /* Empty */ 0 },
+ { /* microsoft-end-of-file */ 7881, /* DiagArray379 */ 1138, /* Empty */ 0 },
+ { /* microsoft-enum-forward-reference */ 7903, /* DiagArray380 */ 1140, /* Empty */ 0 },
+ { /* microsoft-enum-value */ 7936, /* DiagArray381 */ 1142, /* Empty */ 0 },
+ { /* microsoft-exception-spec */ 7957, /* DiagArray382 */ 1144, /* Empty */ 0 },
+ { /* microsoft-exists */ 7982, /* DiagArray383 */ 1151, /* Empty */ 0 },
+ { /* microsoft-explicit-constructor-call */ 7999, /* DiagArray384 */ 1153, /* Empty */ 0 },
+ { /* microsoft-extra-qualification */ 8035, /* DiagArray385 */ 1155, /* Empty */ 0 },
+ { /* microsoft-fixed-enum */ 8065, /* DiagArray386 */ 1157, /* Empty */ 0 },
+ { /* microsoft-flexible-array */ 8086, /* DiagArray387 */ 1159, /* Empty */ 0 },
+ { /* microsoft-goto */ 8111, /* DiagArray388 */ 1162, /* Empty */ 0 },
+ { /* microsoft-inaccessible-base */ 8126, /* DiagArray389 */ 1164, /* Empty */ 0 },
+ { /* microsoft-include */ 8154, /* DiagArray390 */ 1166, /* Empty */ 0 },
+ { /* microsoft-mutable-reference */ 8172, /* DiagArray391 */ 1168, /* Empty */ 0 },
+ { /* microsoft-pure-definition */ 8200, /* DiagArray392 */ 1170, /* Empty */ 0 },
+ { /* microsoft-redeclare-static */ 8226, /* DiagArray393 */ 1172, /* Empty */ 0 },
+ { /* microsoft-sealed */ 8253, /* DiagArray394 */ 1174, /* Empty */ 0 },
+ { /* microsoft-template */ 8270, /* DiagArray395 */ 1176, /* Empty */ 0 },
+ { /* microsoft-union-member-reference */ 8289, /* DiagArray396 */ 1185, /* Empty */ 0 },
+ { /* microsoft-unqualified-friend */ 8322, /* DiagArray397 */ 1187, /* Empty */ 0 },
+ { /* microsoft-using-decl */ 8351, /* DiagArray398 */ 1189, /* Empty */ 0 },
+ { /* microsoft-void-pseudo-dtor */ 8372, /* DiagArray399 */ 1191, /* Empty */ 0 },
+ { /* mismatched-new-delete */ 8399, /* DiagArray400 */ 1193, /* Empty */ 0 },
+ { /* mismatched-parameter-types */ 8421, /* DiagArray401 */ 1195, /* Empty */ 0 },
+ { /* mismatched-return-types */ 8448, /* DiagArray402 */ 1197, /* Empty */ 0 },
+ { /* mismatched-tags */ 8472, /* DiagArray403 */ 1199, /* Empty */ 0 },
+ { /* missing-braces */ 8488, /* DiagArray404 */ 1202, /* Empty */ 0 },
+ { /* missing-declarations */ 8503, /* DiagArray405 */ 1204, /* Empty */ 0 },
+ { /* missing-exception-spec */ 8524, /* DiagArray406 */ 1209, /* Empty */ 0 },
+ { /* missing-field-initializers */ 8547, /* DiagArray407 */ 1211, /* Empty */ 0 },
+ { /* missing-format-attribute */ 8574, /* Empty */ 0, /* Empty */ 0 },
+ { /* missing-include-dirs */ 8599, /* Empty */ 0, /* Empty */ 0 },
+ { /* missing-method-return-type */ 8620, /* DiagArray410 */ 1213, /* Empty */ 0 },
+ { /* missing-noescape */ 8647, /* DiagArray411 */ 1215, /* Empty */ 0 },
+ { /* missing-noreturn */ 8664, /* DiagArray412 */ 1217, /* Empty */ 0 },
+ { /* missing-prototype-for-cc */ 8681, /* DiagArray413 */ 1220, /* Empty */ 0 },
+ { /* missing-prototypes */ 8706, /* DiagArray414 */ 1222, /* Empty */ 0 },
+ { /* missing-selector-name */ 8725, /* DiagArray415 */ 1224, /* Empty */ 0 },
+ { /* missing-sysroot */ 8747, /* DiagArray416 */ 1226, /* Empty */ 0 },
+ { /* missing-variable-declarations */ 8763, /* DiagArray417 */ 1228, /* Empty */ 0 },
+ { /* module-build */ 8793, /* DiagArray418 */ 1230, /* Empty */ 0 },
+ { /* module-conflict */ 8806, /* DiagArray419 */ 1235, /* Empty */ 0 },
+ { /* module-file-config-mismatch */ 8822, /* DiagArray420 */ 1238, /* Empty */ 0 },
+ { /* module-file-extension */ 8850, /* DiagArray421 */ 1240, /* Empty */ 0 },
+ { /* module-import-in-extern-c */ 8872, /* DiagArray422 */ 1242, /* Empty */ 0 },
+ { /* modules-ambiguous-internal-linkage */ 8898, /* DiagArray423 */ 1244, /* Empty */ 0 },
+ { /* modules-import-nested-redundant */ 8933, /* DiagArray424 */ 1246, /* Empty */ 0 },
+ { /* most */ 8965, /* Empty */ 0, /* DiagSubGroup425 */ 287 },
+ { /* move */ 8970, /* Empty */ 0, /* DiagSubGroup426 */ 319 },
+ { /* msvc-include */ 8975, /* Empty */ 0, /* DiagSubGroup427 */ 324 },
+ { /* msvc-not-found */ 8988, /* DiagArray428 */ 1248, /* Empty */ 0 },
+ { /* multichar */ 9003, /* DiagArray429 */ 1250, /* Empty */ 0 },
+ { /* multiple-move-vbase */ 9013, /* DiagArray430 */ 1252, /* Empty */ 0 },
+ { /* narrowing */ 9033, /* Empty */ 0, /* DiagSubGroup431 */ 326 },
+ { /* nested-anon-types */ 9043, /* DiagArray432 */ 1254, /* Empty */ 0 },
+ { /* nested-externs */ 9061, /* Empty */ 0, /* Empty */ 0 },
+ { /* new-returns-null */ 9076, /* DiagArray434 */ 1256, /* Empty */ 0 },
+ { /* newline-eof */ 9093, /* DiagArray435 */ 1258, /* Empty */ 0 },
+ { /* noderef */ 9105, /* DiagArray436 */ 1261, /* Empty */ 0 },
+ { /* noexcept-type */ 9113, /* Empty */ 0, /* DiagSubGroup437 */ 328 },
+ { /* non-gcc */ 9127, /* Empty */ 0, /* DiagSubGroup438 */ 330 },
+ { /* non-literal-null-conversion */ 9135, /* DiagArray439 */ 1265, /* Empty */ 0 },
+ { /* non-modular-include-in-framework-module */ 9163, /* DiagArray440 */ 1267, /* Empty */ 0 },
+ { /* non-modular-include-in-module */ 9203, /* DiagArray441 */ 1269, /* DiagSubGroup441 */ 334 },
+ { /* non-pod-varargs */ 9233, /* DiagArray442 */ 1271, /* Empty */ 0 },
+ { /* non-virtual-dtor */ 9249, /* DiagArray443 */ 1276, /* Empty */ 0 },
+ { /* nonnull */ 9266, /* DiagArray444 */ 1278, /* Empty */ 0 },
+ { /* nonportable-cfstrings */ 9274, /* Empty */ 0, /* Empty */ 0 },
+ { /* nonportable-include-path */ 9296, /* DiagArray446 */ 1281, /* Empty */ 0 },
+ { /* nonportable-system-include-path */ 9321, /* DiagArray447 */ 1283, /* Empty */ 0 },
+ { /* nonportable-vector-initialization */ 9353, /* DiagArray448 */ 1285, /* Empty */ 0 },
+ { /* nontrivial-memaccess */ 9387, /* DiagArray449 */ 1287, /* Empty */ 0 },
+ { /* nsconsumed-mismatch */ 9408, /* DiagArray450 */ 1289, /* Empty */ 0 },
+ { /* nsreturns-mismatch */ 9428, /* DiagArray451 */ 1291, /* Empty */ 0 },
+ { /* null-arithmetic */ 9447, /* DiagArray452 */ 1293, /* Empty */ 0 },
+ { /* null-character */ 9463, /* DiagArray453 */ 1296, /* Empty */ 0 },
+ { /* null-conversion */ 9478, /* DiagArray454 */ 1299, /* Empty */ 0 },
+ { /* null-dereference */ 9494, /* DiagArray455 */ 1301, /* Empty */ 0 },
+ { /* null-pointer-arithmetic */ 9511, /* DiagArray456 */ 1304, /* Empty */ 0 },
+ { /* nullability */ 9535, /* DiagArray457 */ 1307, /* Empty */ 0 },
+ { /* nullability-completeness */ 9547, /* DiagArray458 */ 1313, /* DiagSubGroup458 */ 336 },
+ { /* nullability-completeness-on-arrays */ 9572, /* DiagArray459 */ 1315, /* Empty */ 0 },
+ { /* nullability-declspec */ 9607, /* DiagArray460 */ 1317, /* Empty */ 0 },
+ { /* nullability-extension */ 9628, /* DiagArray461 */ 1319, /* Empty */ 0 },
+ { /* nullability-inferred-on-nested-type */ 9650, /* DiagArray462 */ 1321, /* Empty */ 0 },
+ { /* nullable-to-nonnull-conversion */ 9686, /* DiagArray463 */ 1323, /* Empty */ 0 },
+ { /* objc-autosynthesis-property-ivar-name-match */ 9717, /* DiagArray464 */ 1325, /* Empty */ 0 },
+ { /* objc-circular-container */ 9761, /* DiagArray465 */ 1327, /* Empty */ 0 },
+ { /* objc-cocoa-api */ 9785, /* Empty */ 0, /* DiagSubGroup466 */ 338 },
+ { /* objc-designated-initializers */ 9800, /* DiagArray467 */ 1329, /* Empty */ 0 },
+ { /* objc-flexible-array */ 9829, /* DiagArray468 */ 1336, /* Empty */ 0 },
+ { /* objc-forward-class-redefinition */ 9849, /* DiagArray469 */ 1339, /* Empty */ 0 },
+ { /* objc-interface-ivars */ 9881, /* DiagArray470 */ 1341, /* Empty */ 0 },
+ { /* objc-literal-compare */ 9902, /* DiagArray471 */ 1343, /* DiagSubGroup471 */ 340 },
+ { /* objc-literal-conversion */ 9923, /* DiagArray472 */ 1345, /* Empty */ 0 },
+ { /* objc-macro-redefinition */ 9947, /* DiagArray473 */ 1348, /* Empty */ 0 },
+ { /* objc-messaging-id */ 9971, /* DiagArray474 */ 1350, /* Empty */ 0 },
+ { /* objc-method-access */ 9989, /* DiagArray475 */ 1352, /* Empty */ 0 },
+ { /* objc-missing-property-synthesis */ 10008, /* DiagArray476 */ 1359, /* Empty */ 0 },
+ { /* objc-missing-super-calls */ 10040, /* DiagArray477 */ 1361, /* Empty */ 0 },
+ { /* objc-multiple-method-names */ 10065, /* DiagArray478 */ 1363, /* Empty */ 0 },
+ { /* objc-noncopy-retain-block-property */ 10092, /* DiagArray479 */ 1365, /* Empty */ 0 },
+ { /* objc-nonunified-exceptions */ 10127, /* DiagArray480 */ 1367, /* Empty */ 0 },
+ { /* objc-property-assign-on-object-type */ 10154, /* DiagArray481 */ 1369, /* Empty */ 0 },
+ { /* objc-property-implementation */ 10190, /* DiagArray482 */ 1371, /* Empty */ 0 },
+ { /* objc-property-implicit-mismatch */ 10219, /* DiagArray483 */ 1376, /* Empty */ 0 },
+ { /* objc-property-matches-cocoa-ownership-rule */ 10251, /* DiagArray484 */ 1378, /* Empty */ 0 },
+ { /* objc-property-no-attribute */ 10294, /* DiagArray485 */ 1380, /* Empty */ 0 },
+ { /* objc-property-synthesis */ 10321, /* DiagArray486 */ 1383, /* Empty */ 0 },
+ { /* objc-protocol-method-implementation */ 10345, /* DiagArray487 */ 1387, /* Empty */ 0 },
+ { /* objc-protocol-property-synthesis */ 10381, /* DiagArray488 */ 1389, /* Empty */ 0 },
+ { /* objc-protocol-qualifiers */ 10414, /* DiagArray489 */ 1391, /* Empty */ 0 },
+ { /* objc-readonly-with-setter-property */ 10439, /* DiagArray490 */ 1393, /* Empty */ 0 },
+ { /* objc-redundant-api-use */ 10474, /* Empty */ 0, /* DiagSubGroup491 */ 342 },
+ { /* objc-redundant-literal-use */ 10497, /* DiagArray492 */ 1395, /* Empty */ 0 },
+ { /* objc-root-class */ 10524, /* DiagArray493 */ 1397, /* Empty */ 0 },
+ { /* objc-string-compare */ 10540, /* DiagArray494 */ 1399, /* Empty */ 0 },
+ { /* objc-string-concatenation */ 10560, /* DiagArray495 */ 1401, /* Empty */ 0 },
+ { /* objc-unsafe-perform-selector */ 10586, /* DiagArray496 */ 1403, /* Empty */ 0 },
+ { /* odr */ 10615, /* DiagArray497 */ 1405, /* Empty */ 0 },
+ { /* old-style-cast */ 10619, /* DiagArray498 */ 1407, /* Empty */ 0 },
+ { /* old-style-definition */ 10634, /* Empty */ 0, /* Empty */ 0 },
+ { /* opencl-unsupported-rgba */ 10655, /* DiagArray500 */ 1409, /* Empty */ 0 },
+ { /* openmp-clauses */ 10679, /* DiagArray501 */ 1411, /* Empty */ 0 },
+ { /* openmp-loop-form */ 10694, /* DiagArray502 */ 1414, /* Empty */ 0 },
+ { /* openmp-target */ 10711, /* DiagArray503 */ 1417, /* Empty */ 0 },
+ { /* option-ignored */ 10725, /* DiagArray504 */ 1422, /* Empty */ 0 },
+ { /* ordered-compare-function-pointers */ 10740, /* DiagArray505 */ 1429, /* Empty */ 0 },
+ { /* out-of-line-declaration */ 10774, /* DiagArray506 */ 1431, /* Empty */ 0 },
+ { /* out-of-scope-function */ 10798, /* DiagArray507 */ 1433, /* Empty */ 0 },
+ { /* over-aligned */ 10820, /* DiagArray508 */ 1435, /* Empty */ 0 },
+ { /* overflow */ 10833, /* Empty */ 0, /* Empty */ 0 },
+ { /* overlength-strings */ 10842, /* DiagArray510 */ 1437, /* Empty */ 0 },
+ { /* overloaded-shift-op-parentheses */ 10861, /* DiagArray511 */ 1439, /* Empty */ 0 },
+ { /* overloaded-virtual */ 10893, /* DiagArray512 */ 1441, /* Empty */ 0 },
+ { /* override-init */ 10912, /* Empty */ 0, /* DiagSubGroup513 */ 344 },
+ { /* override-module */ 10926, /* DiagArray514 */ 1443, /* Empty */ 0 },
+ { /* overriding-method-mismatch */ 10942, /* DiagArray515 */ 1445, /* Empty */ 0 },
+ { /* overriding-t-option */ 10969, /* DiagArray516 */ 1453, /* Empty */ 0 },
+ { /* packed */ 10989, /* DiagArray517 */ 1455, /* Empty */ 0 },
+ { /* padded */ 10996, /* DiagArray518 */ 1457, /* Empty */ 0 },
+ { /* parentheses */ 11003, /* DiagArray519 */ 1461, /* DiagSubGroup519 */ 346 },
+ { /* parentheses-equality */ 11015, /* DiagArray520 */ 1465, /* Empty */ 0 },
+ { /* partial-availability */ 11036, /* Empty */ 0, /* DiagSubGroup521 */ 354 },
+ { /* pass */ 11057, /* DiagArray522 */ 1467, /* Empty */ 0 },
+ { /* pass-analysis */ 11062, /* DiagArray523 */ 1469, /* Empty */ 0 },
+ { /* pass-failed */ 11076, /* DiagArray524 */ 1473, /* Empty */ 0 },
+ { /* pass-missed */ 11088, /* DiagArray525 */ 1475, /* Empty */ 0 },
+ { /* pch-date-time */ 11100, /* DiagArray526 */ 1477, /* Empty */ 0 },
+ { /* pedantic */ 11114, /* DiagArray527 */ 1479, /* DiagSubGroup527 */ 356 },
+ { /* pedantic-core-features */ 11123, /* DiagArray528 */ 1550, /* Empty */ 0 },
+ { /* pessimizing-move */ 11146, /* DiagArray529 */ 1552, /* Empty */ 0 },
+ { /* pointer-arith */ 11163, /* DiagArray530 */ 1555, /* Empty */ 0 },
+ { /* pointer-bool-conversion */ 11177, /* DiagArray531 */ 1562, /* Empty */ 0 },
+ { /* pointer-integer-compare */ 11201, /* DiagArray532 */ 1565, /* Empty */ 0 },
+ { /* pointer-sign */ 11225, /* DiagArray533 */ 1567, /* Empty */ 0 },
+ { /* pointer-to-int-cast */ 11238, /* Empty */ 0, /* Empty */ 0 },
+ { /* pointer-type-mismatch */ 11258, /* DiagArray535 */ 1569, /* Empty */ 0 },
+ { /* potentially-evaluated-expression */ 11280, /* DiagArray536 */ 1571, /* Empty */ 0 },
+ { /* pragma-clang-attribute */ 11313, /* DiagArray537 */ 1573, /* Empty */ 0 },
+ { /* pragma-once-outside-header */ 11336, /* DiagArray538 */ 1575, /* Empty */ 0 },
+ { /* pragma-pack */ 11363, /* DiagArray539 */ 1577, /* DiagSubGroup539 */ 408 },
+ { /* pragma-pack-suspicious-include */ 11375, /* DiagArray540 */ 1580, /* Empty */ 0 },
+ { /* pragma-system-header-outside-header */ 11406, /* DiagArray541 */ 1582, /* Empty */ 0 },
+ { /* pragmas */ 11442, /* DiagArray542 */ 1584, /* DiagSubGroup542 */ 410 },
+ { /* predefined-identifier-outside-function */ 11450, /* DiagArray543 */ 1586, /* Empty */ 0 },
+ { /* private-extern */ 11489, /* DiagArray544 */ 1588, /* Empty */ 0 },
+ { /* private-header */ 11504, /* DiagArray545 */ 1590, /* Empty */ 0 },
+ { /* private-module */ 11519, /* DiagArray546 */ 1592, /* Empty */ 0 },
+ { /* profile-instr-missing */ 11534, /* DiagArray547 */ 1597, /* Empty */ 0 },
+ { /* profile-instr-out-of-date */ 11556, /* DiagArray548 */ 1599, /* Empty */ 0 },
+ { /* profile-instr-unprofiled */ 11582, /* DiagArray549 */ 1601, /* Empty */ 0 },
+ { /* property-access-dot-syntax */ 11607, /* DiagArray550 */ 1603, /* Empty */ 0 },
+ { /* property-attribute-mismatch */ 11634, /* DiagArray551 */ 1605, /* Empty */ 0 },
+ { /* protocol */ 11662, /* DiagArray552 */ 1610, /* Empty */ 0 },
+ { /* protocol-property-synthesis-ambiguity */ 11671, /* DiagArray553 */ 1612, /* Empty */ 0 },
+ { /* qualified-void-return-type */ 11709, /* DiagArray554 */ 1614, /* Empty */ 0 },
+ { /* quoted-include-in-framework-header */ 11736, /* DiagArray555 */ 1616, /* Empty */ 0 },
+ { /* range-loop-analysis */ 11771, /* DiagArray556 */ 1618, /* Empty */ 0 },
+ { /* readonly-iboutlet-property */ 11791, /* DiagArray557 */ 1622, /* Empty */ 0 },
+ { /* receiver-expr */ 11818, /* DiagArray558 */ 1624, /* Empty */ 0 },
+ { /* receiver-forward-class */ 11832, /* DiagArray559 */ 1626, /* Empty */ 0 },
+ { /* redeclared-class-member */ 11855, /* DiagArray560 */ 1629, /* Empty */ 0 },
+ { /* redundant-decls */ 11879, /* Empty */ 0, /* Empty */ 0 },
+ { /* redundant-move */ 11895, /* DiagArray562 */ 1631, /* Empty */ 0 },
+ { /* redundant-parens */ 11910, /* DiagArray563 */ 1633, /* Empty */ 0 },
+ { /* register */ 11927, /* DiagArray564 */ 1635, /* DiagSubGroup564 */ 415 },
+ { /* reinterpret-base-class */ 11936, /* DiagArray565 */ 1637, /* Empty */ 0 },
+ { /* remark-backend-plugin */ 11959, /* DiagArray566 */ 1639, /* Empty */ 0 },
+ { /* reorder */ 11981, /* DiagArray567 */ 1641, /* Empty */ 0 },
+ { /* requires-super-attribute */ 11989, /* DiagArray568 */ 1643, /* Empty */ 0 },
+ { /* reserved-id-macro */ 12014, /* DiagArray569 */ 1645, /* Empty */ 0 },
+ { /* reserved-user-defined-literal */ 12032, /* DiagArray570 */ 1647, /* DiagSubGroup570 */ 417 },
+ { /* retained-language-linkage */ 12062, /* DiagArray571 */ 1650, /* Empty */ 0 },
+ { /* return-stack-address */ 12088, /* DiagArray572 */ 1652, /* Empty */ 0 },
+ { /* return-std-move */ 12109, /* DiagArray573 */ 1656, /* Empty */ 0 },
+ { /* return-std-move-in-c++11 */ 12125, /* DiagArray574 */ 1658, /* Empty */ 0 },
+ { /* return-type */ 12150, /* DiagArray575 */ 1660, /* DiagSubGroup575 */ 419 },
+ { /* return-type-c-linkage */ 12162, /* DiagArray576 */ 1670, /* Empty */ 0 },
+ { /* sanitize-address */ 12184, /* DiagArray577 */ 1673, /* Empty */ 0 },
+ { /* section */ 12201, /* DiagArray578 */ 1676, /* Empty */ 0 },
+ { /* selector */ 12209, /* DiagArray579 */ 1680, /* DiagSubGroup579 */ 421 },
+ { /* selector-type-mismatch */ 12218, /* DiagArray580 */ 1682, /* Empty */ 0 },
+ { /* self-assign */ 12241, /* DiagArray581 */ 1684, /* DiagSubGroup581 */ 423 },
+ { /* self-assign-field */ 12253, /* DiagArray582 */ 1686, /* Empty */ 0 },
+ { /* self-assign-overloaded */ 12271, /* DiagArray583 */ 1688, /* Empty */ 0 },
+ { /* self-move */ 12294, /* DiagArray584 */ 1690, /* Empty */ 0 },
+ { /* semicolon-before-method-body */ 12304, /* DiagArray585 */ 1692, /* Empty */ 0 },
+ { /* sentinel */ 12333, /* DiagArray586 */ 1694, /* Empty */ 0 },
+ { /* sequence-point */ 12342, /* Empty */ 0, /* DiagSubGroup587 */ 426 },
+ { /* serialized-diagnostics */ 12357, /* DiagArray588 */ 1697, /* Empty */ 0 },
+ { /* shadow */ 12380, /* DiagArray589 */ 1700, /* DiagSubGroup589 */ 428 },
+ { /* shadow-all */ 12387, /* Empty */ 0, /* DiagSubGroup590 */ 431 },
+ { /* shadow-field */ 12398, /* DiagArray591 */ 1702, /* Empty */ 0 },
+ { /* shadow-field-in-constructor */ 12411, /* DiagArray592 */ 1704, /* DiagSubGroup592 */ 436 },
+ { /* shadow-field-in-constructor-modified */ 12439, /* DiagArray593 */ 1706, /* Empty */ 0 },
+ { /* shadow-ivar */ 12476, /* DiagArray594 */ 1708, /* Empty */ 0 },
+ { /* shadow-uncaptured-local */ 12488, /* DiagArray595 */ 1710, /* Empty */ 0 },
+ { /* shift-count-negative */ 12512, /* DiagArray596 */ 1712, /* Empty */ 0 },
+ { /* shift-count-overflow */ 12533, /* DiagArray597 */ 1714, /* Empty */ 0 },
+ { /* shift-negative-value */ 12554, /* DiagArray598 */ 1716, /* Empty */ 0 },
+ { /* shift-op-parentheses */ 12575, /* DiagArray599 */ 1718, /* Empty */ 0 },
+ { /* shift-overflow */ 12596, /* DiagArray600 */ 1720, /* Empty */ 0 },
+ { /* shift-sign-overflow */ 12611, /* DiagArray601 */ 1722, /* Empty */ 0 },
+ { /* shorten-64-to-32 */ 12631, /* DiagArray602 */ 1724, /* Empty */ 0 },
+ { /* sign-compare */ 12648, /* DiagArray603 */ 1726, /* Empty */ 0 },
+ { /* sign-conversion */ 12661, /* DiagArray604 */ 1728, /* Empty */ 0 },
+ { /* sign-promo */ 12677, /* Empty */ 0, /* Empty */ 0 },
+ { /* signed-enum-bitfield */ 12688, /* DiagArray606 */ 1732, /* Empty */ 0 },
+ { /* sizeof-array-argument */ 12709, /* DiagArray607 */ 1734, /* Empty */ 0 },
+ { /* sizeof-array-decay */ 12731, /* DiagArray608 */ 1736, /* Empty */ 0 },
+ { /* sizeof-pointer-div */ 12750, /* DiagArray609 */ 1738, /* Empty */ 0 },
+ { /* sizeof-pointer-memaccess */ 12769, /* DiagArray610 */ 1740, /* Empty */ 0 },
+ { /* slash-u-filename */ 12794, /* DiagArray611 */ 1743, /* Empty */ 0 },
+ { /* sometimes-uninitialized */ 12811, /* DiagArray612 */ 1745, /* Empty */ 0 },
+ { /* source-uses-openmp */ 12835, /* DiagArray613 */ 1747, /* Empty */ 0 },
+ { /* spir-compat */ 12854, /* DiagArray614 */ 1750, /* Empty */ 0 },
+ { /* stack-protector */ 12866, /* Empty */ 0, /* Empty */ 0 },
+ { /* static-float-init */ 12882, /* DiagArray616 */ 1752, /* DiagSubGroup616 */ 438 },
+ { /* static-in-inline */ 12900, /* DiagArray617 */ 1754, /* Empty */ 0 },
+ { /* static-inline-explicit-instantiation */ 12917, /* DiagArray618 */ 1757, /* Empty */ 0 },
+ { /* static-local-in-inline */ 12954, /* DiagArray619 */ 1759, /* Empty */ 0 },
+ { /* static-self-init */ 12977, /* DiagArray620 */ 1761, /* Empty */ 0 },
+ { /* stdlibcxx-not-found */ 12994, /* DiagArray621 */ 1763, /* Empty */ 0 },
+ { /* strict-aliasing */ 13014, /* Empty */ 0, /* Empty */ 0 },
+ { /* strict-aliasing=0 */ 13030, /* Empty */ 0, /* Empty */ 0 },
+ { /* strict-aliasing=1 */ 13048, /* Empty */ 0, /* Empty */ 0 },
+ { /* strict-aliasing=2 */ 13066, /* Empty */ 0, /* Empty */ 0 },
+ { /* strict-overflow */ 13084, /* Empty */ 0, /* Empty */ 0 },
+ { /* strict-overflow=0 */ 13100, /* Empty */ 0, /* Empty */ 0 },
+ { /* strict-overflow=1 */ 13118, /* Empty */ 0, /* Empty */ 0 },
+ { /* strict-overflow=2 */ 13136, /* Empty */ 0, /* Empty */ 0 },
+ { /* strict-overflow=3 */ 13154, /* Empty */ 0, /* Empty */ 0 },
+ { /* strict-overflow=4 */ 13172, /* Empty */ 0, /* Empty */ 0 },
+ { /* strict-overflow=5 */ 13190, /* Empty */ 0, /* Empty */ 0 },
+ { /* strict-prototypes */ 13208, /* DiagArray633 */ 1765, /* Empty */ 0 },
+ { /* strict-selector-match */ 13226, /* DiagArray634 */ 1767, /* Empty */ 0 },
+ { /* string-compare */ 13248, /* DiagArray635 */ 1769, /* Empty */ 0 },
+ { /* string-conversion */ 13263, /* DiagArray636 */ 1771, /* Empty */ 0 },
+ { /* string-plus-char */ 13281, /* DiagArray637 */ 1773, /* Empty */ 0 },
+ { /* string-plus-int */ 13298, /* DiagArray638 */ 1775, /* Empty */ 0 },
+ { /* strlcpy-strlcat-size */ 13314, /* DiagArray639 */ 1777, /* Empty */ 0 },
+ { /* strncat-size */ 13335, /* DiagArray640 */ 1779, /* Empty */ 0 },
+ { /* super-class-method-mismatch */ 13348, /* DiagArray641 */ 1783, /* Empty */ 0 },
+ { /* suspicious-bzero */ 13376, /* DiagArray642 */ 1785, /* Empty */ 0 },
+ { /* suspicious-memaccess */ 13393, /* Empty */ 0, /* DiagSubGroup643 */ 440 },
+ { /* switch */ 13414, /* DiagArray644 */ 1787, /* Empty */ 0 },
+ { /* switch-bool */ 13421, /* DiagArray645 */ 1791, /* Empty */ 0 },
+ { /* switch-default */ 13433, /* Empty */ 0, /* Empty */ 0 },
+ { /* switch-enum */ 13448, /* DiagArray647 */ 1793, /* Empty */ 0 },
+ { /* sync-fetch-and-nand-semantics-changed */ 13460, /* DiagArray648 */ 1795, /* Empty */ 0 },
+ { /* synth */ 13498, /* Empty */ 0, /* Empty */ 0 },
+ { /* tautological-compare */ 13504, /* DiagArray650 */ 1797, /* DiagSubGroup650 */ 446 },
+ { /* tautological-constant-compare */ 13525, /* DiagArray651 */ 1800, /* DiagSubGroup651 */ 451 },
+ { /* tautological-constant-in-range-compare */ 13555, /* Empty */ 0, /* DiagSubGroup652 */ 453 },
+ { /* tautological-constant-out-of-range-compare */ 13594, /* DiagArray653 */ 1802, /* Empty */ 0 },
+ { /* tautological-overlap-compare */ 13637, /* DiagArray654 */ 1804, /* Empty */ 0 },
+ { /* tautological-pointer-compare */ 13666, /* DiagArray655 */ 1806, /* Empty */ 0 },
+ { /* tautological-type-limit-compare */ 13695, /* DiagArray656 */ 1809, /* Empty */ 0 },
+ { /* tautological-undefined-compare */ 13727, /* DiagArray657 */ 1811, /* Empty */ 0 },
+ { /* tautological-unsigned-enum-zero-compare */ 13758, /* DiagArray658 */ 1814, /* Empty */ 0 },
+ { /* tautological-unsigned-zero-compare */ 13798, /* DiagArray659 */ 1816, /* Empty */ 0 },
+ { /* tentative-definition-incomplete-type */ 13833, /* DiagArray660 */ 1818, /* Empty */ 0 },
+ { /* thread-safety */ 13870, /* Empty */ 0, /* DiagSubGroup661 */ 457 },
+ { /* thread-safety-analysis */ 13884, /* DiagArray662 */ 1820, /* Empty */ 0 },
+ { /* thread-safety-attributes */ 13907, /* DiagArray663 */ 1838, /* Empty */ 0 },
+ { /* thread-safety-beta */ 13932, /* DiagArray664 */ 1846, /* Empty */ 0 },
+ { /* thread-safety-negative */ 13951, /* DiagArray665 */ 1848, /* Empty */ 0 },
+ { /* thread-safety-precise */ 13974, /* DiagArray666 */ 1850, /* Empty */ 0 },
+ { /* thread-safety-reference */ 13996, /* DiagArray667 */ 1854, /* Empty */ 0 },
+ { /* thread-safety-verbose */ 14020, /* DiagArray668 */ 1857, /* Empty */ 0 },
+ { /* trigraphs */ 14042, /* DiagArray669 */ 1859, /* Empty */ 0 },
+ { /* type-limits */ 14052, /* Empty */ 0, /* Empty */ 0 },
+ { /* type-safety */ 14064, /* DiagArray671 */ 1864, /* Empty */ 0 },
+ { /* typedef-redefinition */ 14076, /* DiagArray672 */ 1868, /* Empty */ 0 },
+ { /* typename-missing */ 14097, /* DiagArray673 */ 1870, /* Empty */ 0 },
+ { /* unable-to-open-stats-file */ 14114, /* DiagArray674 */ 1872, /* Empty */ 0 },
+ { /* unavailable-declarations */ 14140, /* DiagArray675 */ 1874, /* Empty */ 0 },
+ { /* undeclared-selector */ 14165, /* DiagArray676 */ 1876, /* Empty */ 0 },
+ { /* undef */ 14185, /* DiagArray677 */ 1879, /* Empty */ 0 },
+ { /* undefined-bool-conversion */ 14191, /* DiagArray678 */ 1881, /* Empty */ 0 },
+ { /* undefined-func-template */ 14217, /* DiagArray679 */ 1884, /* Empty */ 0 },
+ { /* undefined-inline */ 14241, /* DiagArray680 */ 1886, /* Empty */ 0 },
+ { /* undefined-internal */ 14258, /* DiagArray681 */ 1888, /* Empty */ 0 },
+ { /* undefined-internal-type */ 14277, /* DiagArray682 */ 1890, /* Empty */ 0 },
+ { /* undefined-reinterpret-cast */ 14301, /* DiagArray683 */ 1892, /* Empty */ 0 },
+ { /* undefined-var-template */ 14328, /* DiagArray684 */ 1895, /* Empty */ 0 },
+ { /* unevaluated-expression */ 14351, /* DiagArray685 */ 1897, /* DiagSubGroup685 */ 462 },
+ { /* unguarded-availability */ 14374, /* DiagArray686 */ 1899, /* DiagSubGroup686 */ 464 },
+ { /* unguarded-availability-new */ 14397, /* DiagArray687 */ 1901, /* Empty */ 0 },
+ { /* unicode */ 14424, /* DiagArray688 */ 1903, /* Empty */ 0 },
+ { /* unicode-homoglyph */ 14432, /* DiagArray689 */ 1909, /* Empty */ 0 },
+ { /* unicode-whitespace */ 14450, /* DiagArray690 */ 1911, /* Empty */ 0 },
+ { /* unicode-zero-width */ 14469, /* DiagArray691 */ 1913, /* Empty */ 0 },
+ { /* uninitialized */ 14488, /* DiagArray692 */ 1915, /* DiagSubGroup692 */ 466 },
+ { /* unknown-argument */ 14502, /* DiagArray693 */ 1923, /* Empty */ 0 },
+ { /* unknown-attributes */ 14519, /* DiagArray694 */ 1926, /* Empty */ 0 },
+ { /* unknown-escape-sequence */ 14538, /* DiagArray695 */ 1928, /* Empty */ 0 },
+ { /* unknown-pragmas */ 14562, /* DiagArray696 */ 1930, /* Empty */ 0 },
+ { /* unknown-sanitizers */ 14578, /* DiagArray697 */ 1948, /* Empty */ 0 },
+ { /* unknown-warning-option */ 14597, /* DiagArray698 */ 1950, /* Empty */ 0 },
+ { /* unnamed-type-template-args */ 14620, /* DiagArray699 */ 1954, /* DiagSubGroup699 */ 469 },
+ { /* unneeded-internal-declaration */ 14647, /* DiagArray700 */ 1956, /* Empty */ 0 },
+ { /* unneeded-member-function */ 14677, /* DiagArray701 */ 1959, /* Empty */ 0 },
+ { /* unreachable-code */ 14702, /* DiagArray702 */ 1961, /* DiagSubGroup702 */ 471 },
+ { /* unreachable-code-aggressive */ 14719, /* Empty */ 0, /* DiagSubGroup703 */ 473 },
+ { /* unreachable-code-break */ 14747, /* DiagArray704 */ 1963, /* Empty */ 0 },
+ { /* unreachable-code-loop-increment */ 14770, /* DiagArray705 */ 1965, /* Empty */ 0 },
+ { /* unreachable-code-return */ 14802, /* DiagArray706 */ 1967, /* Empty */ 0 },
+ { /* unsequenced */ 14826, /* DiagArray707 */ 1969, /* Empty */ 0 },
+ { /* unsupported-abs */ 14838, /* DiagArray708 */ 1972, /* Empty */ 0 },
+ { /* unsupported-availability-guard */ 14854, /* DiagArray709 */ 1975, /* Empty */ 0 },
+ { /* unsupported-cb */ 14885, /* DiagArray710 */ 1977, /* Empty */ 0 },
+ { /* unsupported-dll-base-class-template */ 14900, /* DiagArray711 */ 1979, /* Empty */ 0 },
+ { /* unsupported-friend */ 14936, /* DiagArray712 */ 1981, /* Empty */ 0 },
+ { /* unsupported-gpopt */ 14955, /* DiagArray713 */ 1984, /* Empty */ 0 },
+ { /* unsupported-nan */ 14973, /* DiagArray714 */ 1986, /* Empty */ 0 },
+ { /* unsupported-target-opt */ 14989, /* DiagArray715 */ 1989, /* Empty */ 0 },
+ { /* unsupported-visibility */ 15012, /* DiagArray716 */ 1991, /* Empty */ 0 },
+ { /* unusable-partial-specialization */ 15035, /* DiagArray717 */ 1993, /* Empty */ 0 },
+ { /* unused */ 15067, /* Empty */ 0, /* DiagSubGroup718 */ 477 },
+ { /* unused-argument */ 15074, /* Empty */ 0, /* Empty */ 0 },
+ { /* unused-command-line-argument */ 15090, /* DiagArray720 */ 1995, /* Empty */ 0 },
+ { /* unused-comparison */ 15119, /* DiagArray721 */ 2003, /* Empty */ 0 },
+ { /* unused-const-variable */ 15137, /* DiagArray722 */ 2005, /* Empty */ 0 },
+ { /* unused-exception-parameter */ 15159, /* DiagArray723 */ 2007, /* Empty */ 0 },
+ { /* unused-function */ 15186, /* DiagArray724 */ 2009, /* DiagSubGroup724 */ 487 },
+ { /* unused-getter-return-value */ 15202, /* DiagArray725 */ 2011, /* Empty */ 0 },
+ { /* unused-label */ 15229, /* DiagArray726 */ 2013, /* Empty */ 0 },
+ { /* unused-lambda-capture */ 15242, /* DiagArray727 */ 2015, /* Empty */ 0 },
+ { /* unused-local-typedef */ 15264, /* DiagArray728 */ 2017, /* Empty */ 0 },
+ { /* unused-local-typedefs */ 15285, /* Empty */ 0, /* DiagSubGroup729 */ 489 },
+ { /* unused-macros */ 15307, /* DiagArray730 */ 2019, /* Empty */ 0 },
+ { /* unused-member-function */ 15321, /* DiagArray731 */ 2021, /* DiagSubGroup731 */ 491 },
+ { /* unused-parameter */ 15344, /* DiagArray732 */ 2023, /* Empty */ 0 },
+ { /* unused-private-field */ 15361, /* DiagArray733 */ 2025, /* Empty */ 0 },
+ { /* unused-property-ivar */ 15382, /* DiagArray734 */ 2027, /* Empty */ 0 },
+ { /* unused-result */ 15403, /* DiagArray735 */ 2029, /* Empty */ 0 },
+ { /* unused-template */ 15417, /* DiagArray736 */ 2031, /* DiagSubGroup736 */ 493 },
+ { /* unused-value */ 15433, /* DiagArray737 */ 2033, /* DiagSubGroup737 */ 495 },
+ { /* unused-variable */ 15446, /* DiagArray738 */ 2038, /* DiagSubGroup738 */ 499 },
+ { /* unused-volatile-lvalue */ 15462, /* DiagArray739 */ 2040, /* Empty */ 0 },
+ { /* used-but-marked-unused */ 15485, /* DiagArray740 */ 2042, /* Empty */ 0 },
+ { /* user-defined-literals */ 15508, /* DiagArray741 */ 2044, /* Empty */ 0 },
+ { /* user-defined-warnings */ 15530, /* DiagArray742 */ 2046, /* Empty */ 0 },
+ { /* varargs */ 15552, /* DiagArray743 */ 2048, /* Empty */ 0 },
+ { /* variadic-macros */ 15560, /* DiagArray744 */ 2052, /* Empty */ 0 },
+ { /* vec-elem-size */ 15576, /* DiagArray745 */ 2056, /* Empty */ 0 },
+ { /* vector-conversion */ 15590, /* DiagArray746 */ 2058, /* Empty */ 0 },
+ { /* vector-conversions */ 15608, /* Empty */ 0, /* DiagSubGroup747 */ 501 },
+ { /* vexing-parse */ 15627, /* DiagArray748 */ 2060, /* Empty */ 0 },
+ { /* visibility */ 15640, /* DiagArray749 */ 2064, /* Empty */ 0 },
+ { /* vla */ 15651, /* DiagArray750 */ 2067, /* Empty */ 0 },
+ { /* vla-extension */ 15655, /* DiagArray751 */ 2069, /* Empty */ 0 },
+ { /* void-ptr-dereference */ 15669, /* DiagArray752 */ 2071, /* Empty */ 0 },
+ { /* volatile-register-var */ 15690, /* Empty */ 0, /* Empty */ 0 },
+ { /* weak-template-vtables */ 15712, /* DiagArray754 */ 2073, /* Empty */ 0 },
+ { /* weak-vtables */ 15734, /* DiagArray755 */ 2075, /* Empty */ 0 },
+ { /* writable-strings */ 15747, /* DiagArray756 */ 2077, /* DiagSubGroup756 */ 503 },
+ { /* write-strings */ 15764, /* Empty */ 0, /* DiagSubGroup757 */ 505 },
+ { /* zero-as-null-pointer-constant */ 15778, /* DiagArray758 */ 2079, /* Empty */ 0 },
+ { /* zero-length-array */ 15808, /* DiagArray759 */ 2081, /* Empty */ 0 },
#endif // GET_DIAG_TABLE
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticIDs.h b/linux-x64/clang/include/clang/Basic/DiagnosticIDs.h
index 876629f..fc0e2c9 100644
--- a/linux-x64/clang/include/clang/Basic/DiagnosticIDs.h
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticIDs.h
@@ -1,9 +1,8 @@
//===--- DiagnosticIDs.h - Diagnostic IDs Handling --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticIndexName.inc b/linux-x64/clang/include/clang/Basic/DiagnosticIndexName.inc
index 8e27650..9b7dc23 100644
--- a/linux-x64/clang/include/clang/Basic/DiagnosticIndexName.inc
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticIndexName.inc
@@ -26,6 +26,7 @@
DIAG_NAME_INDEX(err_addr_ovl_not_func_ptrref)
DIAG_NAME_INDEX(err_address_of_function_with_pass_object_size_params)
DIAG_NAME_INDEX(err_address_of_label_outside_fn)
+DIAG_NAME_INDEX(err_address_space_mismatch_templ_inst)
DIAG_NAME_INDEX(err_address_space_qualified_delete)
DIAG_NAME_INDEX(err_address_space_qualified_new)
DIAG_NAME_INDEX(err_addrof_function_disabled_by_enable_if_attr)
@@ -63,8 +64,10 @@
DIAG_NAME_INDEX(err_ambiguous_reference)
DIAG_NAME_INDEX(err_ambiguous_suitable_delete_member_function_found)
DIAG_NAME_INDEX(err_ambiguous_tag_hiding)
+DIAG_NAME_INDEX(err_analyzer_config_invalid_input)
DIAG_NAME_INDEX(err_analyzer_config_multiple_values)
DIAG_NAME_INDEX(err_analyzer_config_no_value)
+DIAG_NAME_INDEX(err_analyzer_config_unknown)
DIAG_NAME_INDEX(err_anon_bitfield_has_negative_width)
DIAG_NAME_INDEX(err_anon_bitfield_qualifiers)
DIAG_NAME_INDEX(err_anon_bitfield_width_exceeds_type_width)
@@ -224,8 +227,8 @@
DIAG_NAME_INDEX(err_attribute_argument_is_zero)
DIAG_NAME_INDEX(err_attribute_argument_n_type)
DIAG_NAME_INDEX(err_attribute_argument_out_of_bounds)
+DIAG_NAME_INDEX(err_attribute_argument_out_of_bounds_extra_info)
DIAG_NAME_INDEX(err_attribute_argument_out_of_range)
-DIAG_NAME_INDEX(err_attribute_argument_outof_range)
DIAG_NAME_INDEX(err_attribute_argument_type)
DIAG_NAME_INDEX(err_attribute_argument_vec_type_hint)
DIAG_NAME_INDEX(err_attribute_bad_neon_vector_size)
@@ -385,6 +388,7 @@
DIAG_NAME_INDEX(err_builtin_definition)
DIAG_NAME_INDEX(err_builtin_fn_use)
DIAG_NAME_INDEX(err_builtin_func_cast_more_than_one_arg)
+DIAG_NAME_INDEX(err_builtin_launder_invalid_arg)
DIAG_NAME_INDEX(err_builtin_longjmp_invalid_val)
DIAG_NAME_INDEX(err_builtin_longjmp_unsupported)
DIAG_NAME_INDEX(err_builtin_needs_feature)
@@ -399,6 +403,13 @@
DIAG_NAME_INDEX(err_call_function_incomplete_return)
DIAG_NAME_INDEX(err_call_incomplete_argument)
DIAG_NAME_INDEX(err_call_incomplete_return)
+DIAG_NAME_INDEX(err_callback_attribute_argument_unknown)
+DIAG_NAME_INDEX(err_callback_attribute_invalid_callee)
+DIAG_NAME_INDEX(err_callback_attribute_multiple)
+DIAG_NAME_INDEX(err_callback_attribute_no_callee)
+DIAG_NAME_INDEX(err_callback_callee_is_variadic)
+DIAG_NAME_INDEX(err_callback_callee_no_function_type)
+DIAG_NAME_INDEX(err_callback_implicit_this_not_available)
DIAG_NAME_INDEX(err_cannot_find_suitable_accessor)
DIAG_NAME_INDEX(err_cannot_form_pointer_to_member_of_reference_type)
DIAG_NAME_INDEX(err_cannot_open_file)
@@ -530,6 +541,7 @@
DIAG_NAME_INDEX(err_cpu_unsupported_isa)
DIAG_NAME_INDEX(err_ctor_dtor_returns_void)
DIAG_NAME_INDEX(err_ctor_init_missing_comma)
+DIAG_NAME_INDEX(err_ctu_error_opening)
DIAG_NAME_INDEX(err_cuda_device_exceptions)
DIAG_NAME_INDEX(err_cuda_extern_shared)
DIAG_NAME_INDEX(err_cuda_host_shared)
@@ -632,6 +644,7 @@
DIAG_NAME_INDEX(err_dependent_tag_decl)
DIAG_NAME_INDEX(err_dependent_typed_non_type_arg_in_partial_spec)
DIAG_NAME_INDEX(err_dereference_incomplete_type)
+DIAG_NAME_INDEX(err_designated_init_attr_non_init)
DIAG_NAME_INDEX(err_designator_for_scalar_init)
DIAG_NAME_INDEX(err_designator_into_flexible_array_member)
DIAG_NAME_INDEX(err_destroy_attr_on_non_static_var)
@@ -683,6 +696,7 @@
DIAG_NAME_INDEX(err_drv_cuda_version_unsupported)
DIAG_NAME_INDEX(err_drv_defsym_invalid_format)
DIAG_NAME_INDEX(err_drv_defsym_invalid_symval)
+DIAG_NAME_INDEX(err_drv_dllexport_inlines_and_fallback)
DIAG_NAME_INDEX(err_drv_duplicate_config)
DIAG_NAME_INDEX(err_drv_emit_llvm_link)
DIAG_NAME_INDEX(err_drv_expecting_fopenmp_with_fopenmp_targets)
@@ -693,6 +707,7 @@
DIAG_NAME_INDEX(err_drv_invalid_Xopenmp_target_with_args)
DIAG_NAME_INDEX(err_drv_invalid_arch_name)
DIAG_NAME_INDEX(err_drv_invalid_argument_to_fdebug_prefix_map)
+DIAG_NAME_INDEX(err_drv_invalid_cf_runtime_abi)
DIAG_NAME_INDEX(err_drv_invalid_darwin_version)
DIAG_NAME_INDEX(err_drv_invalid_gcc_output_type)
DIAG_NAME_INDEX(err_drv_invalid_hvx_length)
@@ -737,6 +752,7 @@
DIAG_NAME_INDEX(err_drv_preamble_format)
DIAG_NAME_INDEX(err_drv_ropi_incompatible_with_cxx)
DIAG_NAME_INDEX(err_drv_ropi_rwpi_incompatible_with_pic)
+DIAG_NAME_INDEX(err_drv_trivial_auto_var_init_zero_disabled)
DIAG_NAME_INDEX(err_drv_unable_to_remove_file)
DIAG_NAME_INDEX(err_drv_unknown_argument)
DIAG_NAME_INDEX(err_drv_unknown_argument_with_suggestion)
@@ -903,6 +919,7 @@
DIAG_NAME_INDEX(err_expr_not_string_literal)
DIAG_NAME_INDEX(err_ext_vector_component_exceeds_length)
DIAG_NAME_INDEX(err_ext_vector_component_name_illegal)
+DIAG_NAME_INDEX(err_extdefmap_parsing)
DIAG_NAME_INDEX(err_extern_c_global_conflict)
DIAG_NAME_INDEX(err_extern_non_extern)
DIAG_NAME_INDEX(err_external_source_symbol_duplicate_clause)
@@ -940,7 +957,6 @@
DIAG_NAME_INDEX(err_fe_pch_file_overridden)
DIAG_NAME_INDEX(err_fe_pch_malformed)
DIAG_NAME_INDEX(err_fe_pch_malformed_block)
-DIAG_NAME_INDEX(err_fe_pth_file_has_no_source_header)
DIAG_NAME_INDEX(err_fe_remap_missing_from_file)
DIAG_NAME_INDEX(err_fe_remap_missing_to_file)
DIAG_NAME_INDEX(err_fe_stdout_binary)
@@ -976,7 +992,6 @@
DIAG_NAME_INDEX(err_flexible_array_not_at_end)
DIAG_NAME_INDEX(err_flexible_array_union)
DIAG_NAME_INDEX(err_flexible_array_virtual_base)
-DIAG_NAME_INDEX(err_fnmap_parsing)
DIAG_NAME_INDEX(err_fold_expression_bad_operand)
DIAG_NAME_INDEX(err_fold_expression_empty)
DIAG_NAME_INDEX(err_fold_expression_packs_both_sides)
@@ -996,6 +1011,7 @@
DIAG_NAME_INDEX(err_format_attribute_requires_variadic)
DIAG_NAME_INDEX(err_format_attribute_result_not)
DIAG_NAME_INDEX(err_format_strftime_third_parameter)
+DIAG_NAME_INDEX(err_fortify_std_lib_bad_decl)
DIAG_NAME_INDEX(err_forward_ref_enum)
DIAG_NAME_INDEX(err_forward_superclass)
DIAG_NAME_INDEX(err_friend_decl_defines_type)
@@ -1144,6 +1160,7 @@
DIAG_NAME_INDEX(err_invalid_astype_of_different_size)
DIAG_NAME_INDEX(err_invalid_attribute_on_virtual_function)
DIAG_NAME_INDEX(err_invalid_base_in_interface)
+DIAG_NAME_INDEX(err_invalid_branch_protection)
DIAG_NAME_INDEX(err_invalid_char_raw_delim)
DIAG_NAME_INDEX(err_invalid_character_to_charify)
DIAG_NAME_INDEX(err_invalid_character_udl)
@@ -1168,6 +1185,7 @@
DIAG_NAME_INDEX(err_invalid_digit)
DIAG_NAME_INDEX(err_invalid_form_pointer_member_function)
DIAG_NAME_INDEX(err_invalid_incomplete_type_use)
+DIAG_NAME_INDEX(err_invalid_mask_type_size)
DIAG_NAME_INDEX(err_invalid_member_in_interface)
DIAG_NAME_INDEX(err_invalid_member_use_in_static_method)
DIAG_NAME_INDEX(err_invalid_neon_type_code)
@@ -1179,7 +1197,6 @@
DIAG_NAME_INDEX(err_invalid_pixel_decl_spec_combination)
DIAG_NAME_INDEX(err_invalid_property_name)
DIAG_NAME_INDEX(err_invalid_protocol_qualifiers)
-DIAG_NAME_INDEX(err_invalid_pth_file)
DIAG_NAME_INDEX(err_invalid_qualified_constructor)
DIAG_NAME_INDEX(err_invalid_qualified_destructor)
DIAG_NAME_INDEX(err_invalid_qualified_function_type)
@@ -1509,6 +1526,7 @@
DIAG_NAME_INDEX(err_nonstatic_member_out_of_line)
DIAG_NAME_INDEX(err_nontemporal_builtin_must_be_pointer)
DIAG_NAME_INDEX(err_nontemporal_builtin_must_be_pointer_intfltptr_or_vector)
+DIAG_NAME_INDEX(err_nontrivial_primitive_type_in_union)
DIAG_NAME_INDEX(err_noreturn_block_has_return_expr)
DIAG_NAME_INDEX(err_noreturn_lambda_has_return_expr)
DIAG_NAME_INDEX(err_noreturn_missing_on_first_decl)
@@ -1659,10 +1677,13 @@
DIAG_NAME_INDEX(err_omp_bit_fields_forbidden_in_clause)
DIAG_NAME_INDEX(err_omp_clause_floating_type_arg)
DIAG_NAME_INDEX(err_omp_clause_not_arithmetic_type_arg)
-DIAG_NAME_INDEX(err_omp_const_reduction_list_item)
+DIAG_NAME_INDEX(err_omp_const_list_item)
+DIAG_NAME_INDEX(err_omp_const_not_mutable_variable)
DIAG_NAME_INDEX(err_omp_const_variable)
DIAG_NAME_INDEX(err_omp_critical_with_hint)
DIAG_NAME_INDEX(err_omp_decl_in_declare_simd)
+DIAG_NAME_INDEX(err_omp_declare_mapper_redefinition)
+DIAG_NAME_INDEX(err_omp_declare_mapper_wrong_var)
DIAG_NAME_INDEX(err_omp_declare_reduction_redefinition)
DIAG_NAME_INDEX(err_omp_declare_simd_inbranch_notinbranch)
DIAG_NAME_INDEX(err_omp_declare_target_multiple)
@@ -1673,6 +1694,7 @@
DIAG_NAME_INDEX(err_omp_depend_sink_expected_plus_minus)
DIAG_NAME_INDEX(err_omp_depend_sink_source_not_allowed)
DIAG_NAME_INDEX(err_omp_depend_sink_unexpected_expr)
+DIAG_NAME_INDEX(err_omp_duplicate_map_type_modifier)
DIAG_NAME_INDEX(err_omp_expected_access_to_data_field)
DIAG_NAME_INDEX(err_omp_expected_addressable_lvalue_or_array_item)
DIAG_NAME_INDEX(err_omp_expected_base_var_name)
@@ -1697,6 +1719,7 @@
DIAG_NAME_INDEX(err_omp_immediate_directive)
DIAG_NAME_INDEX(err_omp_in_reduction_not_task_reduction)
DIAG_NAME_INDEX(err_omp_incomplete_type)
+DIAG_NAME_INDEX(err_omp_invalid_map_this_expr)
DIAG_NAME_INDEX(err_omp_invalid_map_type_for_directive)
DIAG_NAME_INDEX(err_omp_invalid_scope)
DIAG_NAME_INDEX(err_omp_invalid_target_decl)
@@ -1716,6 +1739,10 @@
DIAG_NAME_INDEX(err_omp_loop_variable_type)
DIAG_NAME_INDEX(err_omp_map_shared_storage)
DIAG_NAME_INDEX(err_omp_map_type_missing)
+DIAG_NAME_INDEX(err_omp_map_type_modifier_missing)
+DIAG_NAME_INDEX(err_omp_mapper_expected_declarator)
+DIAG_NAME_INDEX(err_omp_mapper_illegal_identifier)
+DIAG_NAME_INDEX(err_omp_mapper_wrong_type)
DIAG_NAME_INDEX(err_omp_more_one_clause)
DIAG_NAME_INDEX(err_omp_multiple_array_items_in_map_clause)
DIAG_NAME_INDEX(err_omp_negative_expression_in_clause)
@@ -1944,6 +1971,7 @@
DIAG_NAME_INDEX(err_param_redefinition)
DIAG_NAME_INDEX(err_param_with_void_type)
DIAG_NAME_INDEX(err_parameter_name_omitted)
+DIAG_NAME_INDEX(err_parameter_shadow_capture)
DIAG_NAME_INDEX(err_parameters_retval_cannot_have_fp16_type)
DIAG_NAME_INDEX(err_paren_sizeof_parameter_pack)
DIAG_NAME_INDEX(err_parens_pointer_member_function)
@@ -2030,7 +2058,6 @@
DIAG_NAME_INDEX(err_pp_module_begin_without_module_end)
DIAG_NAME_INDEX(err_pp_module_begin_wrong_module)
DIAG_NAME_INDEX(err_pp_module_build_missing_end)
-DIAG_NAME_INDEX(err_pp_module_build_pth)
DIAG_NAME_INDEX(err_pp_module_end_without_module_begin)
DIAG_NAME_INDEX(err_pp_nested_paren)
DIAG_NAME_INDEX(err_pp_opencl_variadic_macros)
@@ -2047,11 +2074,13 @@
DIAG_NAME_INDEX(err_pp_vaopt_nested_use)
DIAG_NAME_INDEX(err_pp_visibility_non_macro)
DIAG_NAME_INDEX(err_ppc_builtin_only_on_pwr7)
+DIAG_NAME_INDEX(err_pragma_attr_attr_no_push)
DIAG_NAME_INDEX(err_pragma_attribute_duplicate_subject)
DIAG_NAME_INDEX(err_pragma_attribute_expected_attribute)
DIAG_NAME_INDEX(err_pragma_attribute_expected_attribute_name)
DIAG_NAME_INDEX(err_pragma_attribute_expected_attribute_syntax)
-DIAG_NAME_INDEX(err_pragma_attribute_expected_push_pop)
+DIAG_NAME_INDEX(err_pragma_attribute_expected_period)
+DIAG_NAME_INDEX(err_pragma_attribute_expected_push_pop_paren)
DIAG_NAME_INDEX(err_pragma_attribute_expected_subject_identifier)
DIAG_NAME_INDEX(err_pragma_attribute_expected_subject_sub_identifier)
DIAG_NAME_INDEX(err_pragma_attribute_extra_tokens_after_attribute)
@@ -2061,6 +2090,7 @@
DIAG_NAME_INDEX(err_pragma_attribute_matcher_negated_subrule_contradicts_subrule)
DIAG_NAME_INDEX(err_pragma_attribute_matcher_subrule_contradicts_rule)
DIAG_NAME_INDEX(err_pragma_attribute_multiple_attributes)
+DIAG_NAME_INDEX(err_pragma_attribute_namespace_on_attribute)
DIAG_NAME_INDEX(err_pragma_attribute_no_pop_eof)
DIAG_NAME_INDEX(err_pragma_attribute_stack_mismatch)
DIAG_NAME_INDEX(err_pragma_attribute_unknown_subject_rule)
@@ -2089,6 +2119,7 @@
DIAG_NAME_INDEX(err_pragma_optimize_extra_argument)
DIAG_NAME_INDEX(err_pragma_optimize_invalid_argument)
DIAG_NAME_INDEX(err_pragma_options_align_mac68k_target_unsupported)
+DIAG_NAME_INDEX(err_pragma_pipeline_invalid_keyword)
DIAG_NAME_INDEX(err_pragma_pointers_to_members_unknown_kind)
DIAG_NAME_INDEX(err_pragma_pop_visibility_mismatch)
DIAG_NAME_INDEX(err_pragma_push_pop_macro_malformed)
@@ -2117,7 +2148,7 @@
DIAG_NAME_INDEX(err_pure_friend)
DIAG_NAME_INDEX(err_qualified_catch_declarator)
DIAG_NAME_INDEX(err_qualified_friend_def)
-DIAG_NAME_INDEX(err_qualified_friend_not_found)
+DIAG_NAME_INDEX(err_qualified_friend_no_match)
DIAG_NAME_INDEX(err_qualified_member_nonclass)
DIAG_NAME_INDEX(err_qualified_member_of_unrelated)
DIAG_NAME_INDEX(err_qualified_objc_access)
@@ -2404,6 +2435,7 @@
DIAG_NAME_INDEX(err_typecheck_addrof_dtor)
DIAG_NAME_INDEX(err_typecheck_addrof_temporary)
DIAG_NAME_INDEX(err_typecheck_ambiguous_condition)
+DIAG_NAME_INDEX(err_typecheck_arc_assign_externally_retained)
DIAG_NAME_INDEX(err_typecheck_arc_assign_self)
DIAG_NAME_INDEX(err_typecheck_arc_assign_self_class_method)
DIAG_NAME_INDEX(err_typecheck_arithmetic_incomplete_type)
@@ -2557,6 +2589,7 @@
DIAG_NAME_INDEX(err_unexpected_typedef)
DIAG_NAME_INDEX(err_unexpected_typedef_ident)
DIAG_NAME_INDEX(err_unexpected_unqualified_id)
+DIAG_NAME_INDEX(err_unimplemented_conversion_with_fixed_point_type)
DIAG_NAME_INDEX(err_uninitialized_member_for_assign)
DIAG_NAME_INDEX(err_uninitialized_member_in_ctor)
DIAG_NAME_INDEX(err_union_as_base_class)
@@ -2714,8 +2747,10 @@
DIAG_NAME_INDEX(ext_comment_paste_microsoft)
DIAG_NAME_INDEX(ext_complex_component_init)
DIAG_NAME_INDEX(ext_constexpr_body_invalid_stmt)
+DIAG_NAME_INDEX(ext_constexpr_body_invalid_stmt_cxx2a)
DIAG_NAME_INDEX(ext_constexpr_body_multiple_return)
DIAG_NAME_INDEX(ext_constexpr_function_never_constant_expr)
+DIAG_NAME_INDEX(ext_constexpr_function_try_block_cxx2a)
DIAG_NAME_INDEX(ext_constexpr_if)
DIAG_NAME_INDEX(ext_constexpr_local_var)
DIAG_NAME_INDEX(ext_constexpr_on_lambda_cxx17)
@@ -2814,6 +2849,7 @@
DIAG_NAME_INDEX(ext_init_statement)
DIAG_NAME_INDEX(ext_initializer_string_for_char_array_too_long)
DIAG_NAME_INDEX(ext_inline_namespace)
+DIAG_NAME_INDEX(ext_inline_nested_namespace_definition)
DIAG_NAME_INDEX(ext_inline_variable)
DIAG_NAME_INDEX(ext_integer_complement_complex)
DIAG_NAME_INDEX(ext_integer_complex)
@@ -2930,6 +2966,7 @@
DIAG_NAME_INDEX(ext_static_assert_no_message)
DIAG_NAME_INDEX(ext_static_data_member_in_union)
DIAG_NAME_INDEX(ext_static_non_static)
+DIAG_NAME_INDEX(ext_static_out_of_line)
DIAG_NAME_INDEX(ext_stdc_pragma_ignored)
DIAG_NAME_INDEX(ext_string_literal_operator_template)
DIAG_NAME_INDEX(ext_string_too_long)
@@ -3090,6 +3127,7 @@
DIAG_NAME_INDEX(note_constexpr_lifetime_ended)
DIAG_NAME_INDEX(note_constexpr_lshift_discards)
DIAG_NAME_INDEX(note_constexpr_lshift_of_negative)
+DIAG_NAME_INDEX(note_constexpr_ltor_incomplete_type)
DIAG_NAME_INDEX(note_constexpr_ltor_mutable)
DIAG_NAME_INDEX(note_constexpr_ltor_non_const_int)
DIAG_NAME_INDEX(note_constexpr_ltor_non_constexpr)
@@ -3136,6 +3174,7 @@
DIAG_NAME_INDEX(note_covariant_thunk)
DIAG_NAME_INDEX(note_cuda_conflicting_device_function_declared_here)
DIAG_NAME_INDEX(note_cuda_ovl_candidate_target_mismatch)
+DIAG_NAME_INDEX(note_cxx2a_compat_utf8_string_remove_u8)
DIAG_NAME_INDEX(note_decl_hiding_tag_type)
DIAG_NAME_INDEX(note_decl_unguarded_availability_silence)
DIAG_NAME_INDEX(note_declaration_not_a_prototype)
@@ -3440,6 +3479,9 @@
DIAG_NAME_INDEX(note_omp_critical_no_hint)
DIAG_NAME_INDEX(note_omp_explicit_dsa)
DIAG_NAME_INDEX(note_omp_implicit_dsa)
+DIAG_NAME_INDEX(note_omp_invalid_length_on_this_ptr_mapping)
+DIAG_NAME_INDEX(note_omp_invalid_lower_bound_on_this_ptr_mapping)
+DIAG_NAME_INDEX(note_omp_invalid_subscript_on_this_ptr_map)
DIAG_NAME_INDEX(note_omp_loop_cond_requres_compatible_incr)
DIAG_NAME_INDEX(note_omp_nested_statement_here)
DIAG_NAME_INDEX(note_omp_nested_teams_construct_here)
@@ -3508,6 +3550,7 @@
DIAG_NAME_INDEX(note_parameter_named_here)
DIAG_NAME_INDEX(note_parameter_pack_here)
DIAG_NAME_INDEX(note_parameter_type)
+DIAG_NAME_INDEX(note_partial_availability_specified_here)
DIAG_NAME_INDEX(note_partial_spec_match)
DIAG_NAME_INDEX(note_partial_spec_not_more_specialized_than_primary)
DIAG_NAME_INDEX(note_partial_specialization_declared_here)
@@ -3518,8 +3561,10 @@
DIAG_NAME_INDEX(note_possible_target_of_call)
DIAG_NAME_INDEX(note_pp_ambiguous_macro_chosen)
DIAG_NAME_INDEX(note_pp_ambiguous_macro_other)
+DIAG_NAME_INDEX(note_pp_framework_without_header)
DIAG_NAME_INDEX(note_pp_module_begin_here)
DIAG_NAME_INDEX(note_pragma_attribute_applied_decl_here)
+DIAG_NAME_INDEX(note_pragma_attribute_namespace_on_attribute)
DIAG_NAME_INDEX(note_pragma_attribute_region_ends_here)
DIAG_NAME_INDEX(note_pragma_attribute_use_attribute_kw)
DIAG_NAME_INDEX(note_pragma_entered_here)
@@ -3618,6 +3663,7 @@
DIAG_NAME_INDEX(note_struct_class_suggestion)
DIAG_NAME_INDEX(note_suggest_disabling_all_checkers)
DIAG_NAME_INDEX(note_suggest_parens_for_macro)
+DIAG_NAME_INDEX(note_suppress_ctad_maybe_unsupported)
DIAG_NAME_INDEX(note_suppressed_class_declare)
DIAG_NAME_INDEX(note_surrounding_namespace_ends_here)
DIAG_NAME_INDEX(note_surrounding_namespace_starts_here)
@@ -3826,6 +3872,7 @@
DIAG_NAME_INDEX(warn_autosynthesis_property_ivar_match)
DIAG_NAME_INDEX(warn_availability_and_unavailable)
DIAG_NAME_INDEX(warn_availability_on_static_initializer)
+DIAG_NAME_INDEX(warn_availability_swift_unavailable_deprecated_only)
DIAG_NAME_INDEX(warn_availability_unknown_platform)
DIAG_NAME_INDEX(warn_availability_version_ordering)
DIAG_NAME_INDEX(warn_bad_character_encoding)
@@ -3900,7 +3947,9 @@
DIAG_NAME_INDEX(warn_correct_comment_command_name)
DIAG_NAME_INDEX(warn_cstruct_memaccess)
DIAG_NAME_INDEX(warn_cstyle_param)
+DIAG_NAME_INDEX(warn_ctad_maybe_unsupported)
DIAG_NAME_INDEX(warn_ctor_parm_shadows_field)
+DIAG_NAME_INDEX(warn_ctu_incompat_triple)
DIAG_NAME_INDEX(warn_cuda_attr_lambda_position)
DIAG_NAME_INDEX(warn_cxx11_compat_binary_literal)
DIAG_NAME_INDEX(warn_cxx11_compat_constexpr_body_invalid_stmt)
@@ -3936,10 +3985,13 @@
DIAG_NAME_INDEX(warn_cxx14_compat_u8_character_literal)
DIAG_NAME_INDEX(warn_cxx14_compat_using_attribute_ns)
DIAG_NAME_INDEX(warn_cxx17_compat_bitfield_member_init)
+DIAG_NAME_INDEX(warn_cxx17_compat_constexpr_body_invalid_stmt)
+DIAG_NAME_INDEX(warn_cxx17_compat_constexpr_function_try_block)
DIAG_NAME_INDEX(warn_cxx17_compat_defaulted_method_type_mismatch)
DIAG_NAME_INDEX(warn_cxx17_compat_equals_this_lambda_capture)
DIAG_NAME_INDEX(warn_cxx17_compat_exception_spec_in_signature)
DIAG_NAME_INDEX(warn_cxx17_compat_for_range_init_stmt)
+DIAG_NAME_INDEX(warn_cxx17_compat_inline_nested_namespace_definition)
DIAG_NAME_INDEX(warn_cxx17_compat_lambda_def_ctor_assign)
DIAG_NAME_INDEX(warn_cxx17_compat_multi_using_declaration)
DIAG_NAME_INDEX(warn_cxx17_compat_pointer_to_const_ref_member_on_rvalue)
@@ -3949,6 +4001,7 @@
DIAG_NAME_INDEX(warn_cxx17_hex_literal)
DIAG_NAME_INDEX(warn_cxx2a_compat_aggregate_init_with_ctors)
DIAG_NAME_INDEX(warn_cxx2a_compat_spaceship)
+DIAG_NAME_INDEX(warn_cxx2a_compat_utf8_string)
DIAG_NAME_INDEX(warn_cxx2a_keyword)
DIAG_NAME_INDEX(warn_cxx98_compat_alias_declaration)
DIAG_NAME_INDEX(warn_cxx98_compat_alignas)
@@ -4053,12 +4106,15 @@
DIAG_NAME_INDEX(warn_deprecated_register)
DIAG_NAME_INDEX(warn_deprecated_string_literal_conversion)
DIAG_NAME_INDEX(warn_deprecated_this_capture)
+DIAG_NAME_INDEX(warn_dereference_of_noderef_type)
+DIAG_NAME_INDEX(warn_dereference_of_noderef_type_no_decl)
DIAG_NAME_INDEX(warn_destructor_marked_not_override_overriding)
DIAG_NAME_INDEX(warn_diagnose_if_succeeded)
DIAG_NAME_INDEX(warn_direct_initialize_call)
DIAG_NAME_INDEX(warn_direct_ivar_access)
DIAG_NAME_INDEX(warn_direct_super_initialize_call)
DIAG_NAME_INDEX(warn_dispatch_body_ignored)
+DIAG_NAME_INDEX(warn_division_sizeof_ptr)
DIAG_NAME_INDEX(warn_dllimport_dropped_from_inline_function)
DIAG_NAME_INDEX(warn_doc_api_container_decl_mismatch)
DIAG_NAME_INDEX(warn_doc_block_command_duplicate)
@@ -4086,6 +4142,7 @@
DIAG_NAME_INDEX(warn_double_lock)
DIAG_NAME_INDEX(warn_drv_assuming_mfloat_abi_is)
DIAG_NAME_INDEX(warn_drv_clang_unsupported)
+DIAG_NAME_INDEX(warn_drv_darwin_sdk_invalid_settings)
DIAG_NAME_INDEX(warn_drv_deprecated_arg)
DIAG_NAME_INDEX(warn_drv_diagnostics_hotness_requires_pgo)
DIAG_NAME_INDEX(warn_drv_disabling_vptr_no_rtti_default)
@@ -4097,6 +4154,9 @@
DIAG_NAME_INDEX(warn_drv_input_file_unused_by_cpp)
DIAG_NAME_INDEX(warn_drv_invoking_fallback)
DIAG_NAME_INDEX(warn_drv_moutline_unsupported_opt)
+DIAG_NAME_INDEX(warn_drv_msp430_hwmult_mismatch)
+DIAG_NAME_INDEX(warn_drv_msp430_hwmult_no_device)
+DIAG_NAME_INDEX(warn_drv_msp430_hwmult_unsupported)
DIAG_NAME_INDEX(warn_drv_msvc_not_found)
DIAG_NAME_INDEX(warn_drv_object_size_disabled_O0)
DIAG_NAME_INDEX(warn_drv_omp_offload_target_duplicate)
@@ -4134,6 +4194,7 @@
DIAG_NAME_INDEX(warn_empty_for_body)
DIAG_NAME_INDEX(warn_empty_format_string)
DIAG_NAME_INDEX(warn_empty_if_body)
+DIAG_NAME_INDEX(warn_empty_init_statement)
DIAG_NAME_INDEX(warn_empty_parens_are_function_decl)
DIAG_NAME_INDEX(warn_empty_range_based_for_body)
DIAG_NAME_INDEX(warn_empty_switch_body)
@@ -4225,6 +4286,7 @@
DIAG_NAME_INDEX(warn_ignored_clang_option)
DIAG_NAME_INDEX(warn_ignored_gcc_optimization)
DIAG_NAME_INDEX(warn_ignored_ms_inheritance)
+DIAG_NAME_INDEX(warn_ignored_objc_externally_retained)
DIAG_NAME_INDEX(warn_ignoring_ftabstop_value)
DIAG_NAME_INDEX(warn_illegal_constant_array_size)
DIAG_NAME_INDEX(warn_impcast_bitfield_precision_constant)
@@ -4232,6 +4294,7 @@
DIAG_NAME_INDEX(warn_impcast_complex_scalar)
DIAG_NAME_INDEX(warn_impcast_different_enum_types)
DIAG_NAME_INDEX(warn_impcast_double_promotion)
+DIAG_NAME_INDEX(warn_impcast_fixed_point_range)
DIAG_NAME_INDEX(warn_impcast_float_integer)
DIAG_NAME_INDEX(warn_impcast_float_precision)
DIAG_NAME_INDEX(warn_impcast_float_result_precision)
@@ -4285,6 +4348,7 @@
DIAG_NAME_INDEX(warn_int_to_void_pointer_cast)
DIAG_NAME_INDEX(warn_integer_constant_overflow)
DIAG_NAME_INDEX(warn_internal_linkage_local_storage)
+DIAG_NAME_INDEX(warn_interrupt_attribute_invalid)
DIAG_NAME_INDEX(warn_invalid_asm_cast_lvalue)
DIAG_NAME_INDEX(warn_invalid_capability_name)
DIAG_NAME_INDEX(warn_invalid_initializer_from_system_header)
@@ -4318,7 +4382,6 @@
DIAG_NAME_INDEX(warn_method_param_redefinition)
DIAG_NAME_INDEX(warn_microsoft_dependent_exists)
DIAG_NAME_INDEX(warn_microsoft_qualifiers_ignored)
-DIAG_NAME_INDEX(warn_mips_interrupt_attribute)
DIAG_NAME_INDEX(warn_mismatched_availability)
DIAG_NAME_INDEX(warn_mismatched_availability_override)
DIAG_NAME_INDEX(warn_mismatched_availability_override_unavail)
@@ -4371,6 +4434,8 @@
DIAG_NAME_INDEX(warn_no_underlying_type_specified_for_enum_bitfield)
DIAG_NAME_INDEX(warn_no_unlock)
DIAG_NAME_INDEX(warn_nocf_check_attribute_ignored)
+DIAG_NAME_INDEX(warn_noderef_on_non_pointer_or_array)
+DIAG_NAME_INDEX(warn_noderef_to_dereferenceable_pointer)
DIAG_NAME_INDEX(warn_non_contravariant_overriding_param_types)
DIAG_NAME_INDEX(warn_non_contravariant_param_types)
DIAG_NAME_INDEX(warn_non_covariant_overriding_ret_types)
@@ -4399,6 +4464,7 @@
DIAG_NAME_INDEX(warn_null_pointer_compare)
DIAG_NAME_INDEX(warn_null_resettable_setter)
DIAG_NAME_INDEX(warn_null_ret)
+DIAG_NAME_INDEX(warn_null_statement)
DIAG_NAME_INDEX(warn_nullability_declspec)
DIAG_NAME_INDEX(warn_nullability_duplicate)
DIAG_NAME_INDEX(warn_nullability_inferred_on_nested_type)
@@ -4616,7 +4682,6 @@
DIAG_NAME_INDEX(warn_return_value_size)
DIAG_NAME_INDEX(warn_return_value_udt)
DIAG_NAME_INDEX(warn_return_value_udt_incomplete)
-DIAG_NAME_INDEX(warn_riscv_interrupt_attribute)
DIAG_NAME_INDEX(warn_riscv_repeated_interrupt_attribute)
DIAG_NAME_INDEX(warn_root_inst_method_not_found)
DIAG_NAME_INDEX(warn_sampler_initializer_invalid_bits)
@@ -4816,6 +4881,7 @@
DIAG_NAME_INDEX(warn_weak_template_vtable)
DIAG_NAME_INDEX(warn_weak_vtable)
DIAG_NAME_INDEX(warn_wrong_absolute_value_type)
+DIAG_NAME_INDEX(warn_wrong_clang_attr_namespace)
DIAG_NAME_INDEX(warn_zero_as_null_pointer_constant)
DIAG_NAME_INDEX(warn_zero_size_struct_union_compat)
DIAG_NAME_INDEX(warn_zero_size_struct_union_in_extern_c)
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticLex.h b/linux-x64/clang/include/clang/Basic/DiagnosticLex.h
new file mode 100644
index 0000000..3378905
--- /dev/null
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticLex.h
@@ -0,0 +1,28 @@
+//===--- DiagnosticLex.h - Diagnostics for liblex ---------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_BASIC_DIAGNOSTICLEX_H
+#define LLVM_CLANG_BASIC_DIAGNOSTICLEX_H
+
+#include "clang/Basic/Diagnostic.h"
+
+namespace clang {
+namespace diag {
+enum {
+#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \
+ SHOWINSYSHEADER, CATEGORY) \
+ ENUM,
+#define LEXSTART
+#include "clang/Basic/DiagnosticLexKinds.inc"
+#undef DIAG
+ NUM_BUILTIN_LEX_DIAGNOSTICS
+};
+} // end namespace diag
+} // end namespace clang
+
+#endif // LLVM_CLANG_BASIC_DIAGNOSTICLEX_H
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticLexKinds.inc b/linux-x64/clang/include/clang/Basic/DiagnosticLexKinds.inc
index 7aa8e63..a482bec 100644
--- a/linux-x64/clang/include/clang/Basic/DiagnosticLexKinds.inc
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticLexKinds.inc
@@ -21,7 +21,6 @@
DIAG(err_invalid_char_raw_delim, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid character '%0' character in raw string delimiter; use PREFIX( )PREFIX to delimit raw string", 0, SFINAE_SubstitutionFailure, false, true, 1)
DIAG(err_invalid_character_to_charify, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid argument to convert to character", 0, SFINAE_SubstitutionFailure, false, true, 1)
DIAG(err_invalid_digit, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid digit '%0' in %select{decimal|octal|binary}1 constant", 0, SFINAE_SubstitutionFailure, false, true, 1)
-DIAG(err_invalid_pth_file, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid or corrupt PTH file '%0'", 0, SFINAE_SubstitutionFailure, false, true, 1)
DIAG(err_invalid_suffix_constant, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid suffix '%0' on %select{integer|floating}1 constant", 0, SFINAE_SubstitutionFailure, false, true, 1)
DIAG(err_invalid_utf8, CLASS_ERROR, (unsigned)diag::Severity::Error, "source file is not valid UTF-8", 0, SFINAE_SubstitutionFailure, false, true, 1)
DIAG(err_lexing_string, CLASS_ERROR, (unsigned)diag::Severity::Error, "failure when lexing a string", 0, SFINAE_SubstitutionFailure, false, true, 1)
@@ -125,7 +124,6 @@
DIAG(err_pp_module_begin_without_module_end, CLASS_ERROR, (unsigned)diag::Severity::Error, "no matching '#pragma clang module end' for this '#pragma clang module begin'", 0, SFINAE_SubstitutionFailure, false, true, 1)
DIAG(err_pp_module_begin_wrong_module, CLASS_ERROR, (unsigned)diag::Severity::Error, "must specify '-fmodule-name=%0' to enter %select{|submodule of }1this module%select{ (current module is %3)|}2", 0, SFINAE_SubstitutionFailure, false, true, 1)
DIAG(err_pp_module_build_missing_end, CLASS_ERROR, (unsigned)diag::Severity::Error, "no matching '#pragma clang module endbuild' for this '#pragma clang module build'", 0, SFINAE_SubstitutionFailure, false, true, 1)
-DIAG(err_pp_module_build_pth, CLASS_ERROR, (unsigned)diag::Severity::Error, "'#pragma clang module build' not supported in pretokenized header", 0, SFINAE_SubstitutionFailure, false, true, 1)
DIAG(err_pp_module_end_without_module_begin, CLASS_ERROR, (unsigned)diag::Severity::Error, "no matching '#pragma clang module begin' for this '#pragma clang module end'", 0, SFINAE_SubstitutionFailure, false, true, 1)
DIAG(err_pp_nested_paren, CLASS_ERROR, (unsigned)diag::Severity::Error, "nested parentheses not permitted in %0", 0, SFINAE_SubstitutionFailure, false, true, 1)
DIAG(err_pp_opencl_variadic_macros, CLASS_ERROR, (unsigned)diag::Severity::Error, "variadic macros not supported in OpenCL", 0, SFINAE_SubstitutionFailure, false, true, 1)
@@ -160,55 +158,55 @@
DIAG(err_unterminated_raw_string, CLASS_ERROR, (unsigned)diag::Severity::Error, "raw string missing terminating delimiter )%0\"", 0, SFINAE_SubstitutionFailure, false, true, 1)
DIAG(err_vaopt_paste_at_end, CLASS_ERROR, (unsigned)diag::Severity::Error, "'##' cannot appear at end of __VA_OPT__ argument", 0, SFINAE_SubstitutionFailure, false, true, 1)
DIAG(err_vaopt_paste_at_start, CLASS_ERROR, (unsigned)diag::Severity::Error, "'##' cannot appear at start of __VA_OPT__ argument", 0, SFINAE_SubstitutionFailure, false, true, 1)
-DIAG(escaped_newline_block_comment_end, CLASS_WARNING, (unsigned)diag::Severity::Warning, "escaped newline between */ characters at block comment end", 125, SFINAE_Suppress, false, false, 1)
-DIAG(ext_binary_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "binary integer literals are a GNU extension", 249, SFINAE_Suppress, false, false, 1)
+DIAG(escaped_newline_block_comment_end, CLASS_WARNING, (unsigned)diag::Severity::Warning, "escaped newline between */ characters at block comment end", 126, SFINAE_Suppress, false, false, 1)
+DIAG(ext_binary_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "binary integer literals are a GNU extension", 257, SFINAE_Suppress, false, false, 1)
DIAG(ext_binary_literal_cxx14, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "binary integer literals are a C++14 extension", 84, SFINAE_Suppress, false, false, 1)
DIAG(ext_c99_whitespace_required_after_macro_name, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C99 requires whitespace after the macro name", 114, SFINAE_Suppress, false, false, 1)
-DIAG(ext_charize_microsoft, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "charizing operator #@ is a Microsoft extension", 365, SFINAE_Suppress, false, false, 1)
-DIAG(ext_comment_paste_microsoft, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "pasting two '/' tokens into a '//' comment is a Microsoft extension", 366, SFINAE_Suppress, false, false, 1)
-DIAG(ext_ctrl_z_eof_microsoft, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "treating Ctrl-Z as end-of-file is a Microsoft extension", 370, SFINAE_Suppress, false, false, 1)
-DIAG(ext_dollar_in_identifier, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'$' in identifier", 185, SFINAE_Suppress, false, false, 1)
-DIAG(ext_embedded_directive, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "embedding a directive within macro arguments has undefined behavior", 195, SFINAE_Suppress, false, false, 1)
-DIAG(ext_empty_character, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "empty character constant", 336, SFINAE_Suppress, false, false, 1)
+DIAG(ext_charize_microsoft, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "charizing operator #@ is a Microsoft extension", 374, SFINAE_Suppress, false, false, 1)
+DIAG(ext_comment_paste_microsoft, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "pasting two '/' tokens into a '//' comment is a Microsoft extension", 375, SFINAE_Suppress, false, false, 1)
+DIAG(ext_ctrl_z_eof_microsoft, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "treating Ctrl-Z as end-of-file is a Microsoft extension", 379, SFINAE_Suppress, false, false, 1)
+DIAG(ext_dollar_in_identifier, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'$' in identifier", 191, SFINAE_Suppress, false, false, 1)
+DIAG(ext_embedded_directive, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "embedding a directive within macro arguments has undefined behavior", 201, SFINAE_Suppress, false, false, 1)
+DIAG(ext_empty_character, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "empty character constant", 345, SFINAE_Suppress, false, false, 1)
DIAG(ext_empty_fnmacro_arg, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "empty macro arguments are a C99 feature", 114, SFINAE_Suppress, false, false, 1)
-DIAG(ext_four_char_character_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "multi-character character constant", 236, SFINAE_Suppress, false, false, 1)
+DIAG(ext_four_char_character_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "multi-character character constant", 244, SFINAE_Suppress, false, false, 1)
DIAG(ext_hex_constant_invalid, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "hexadecimal floating constants are a C99 feature", 114, SFINAE_Suppress, false, false, 1)
DIAG(ext_hex_literal_invalid, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "hexadecimal floating literals are a C++17 feature", 91, SFINAE_Suppress, false, false, 1)
-DIAG(ext_line_comment, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "// comments are not allowed in this language", 125, SFINAE_Suppress, false, false, 1)
-DIAG(ext_missing_varargs_arg, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "must specify at least one argument for '...' parameter of variadic macro", 270, SFINAE_Suppress, false, false, 1)
+DIAG(ext_line_comment, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "// comments are not allowed in this language", 126, SFINAE_Suppress, false, false, 1)
+DIAG(ext_missing_varargs_arg, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "must specify at least one argument for '...' parameter of variadic macro", 278, SFINAE_Suppress, false, false, 1)
DIAG(ext_missing_whitespace_after_macro_name, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "whitespace required after macro name", 0, SFINAE_Suppress, false, false, 1)
-DIAG(ext_ms_reserved_user_defined_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "invalid suffix on literal; C++11 requires a space between literal and identifier", 558, SFINAE_Suppress, false, false, 1)
-DIAG(ext_multi_line_line_comment, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "multi-line // comment", 125, SFINAE_Suppress, false, false, 1)
-DIAG(ext_multichar_character_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "multi-character character constant", 420, SFINAE_Suppress, false, false, 1)
-DIAG(ext_named_variadic_macro, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "named variadic macros are a GNU extension", 731, SFINAE_Suppress, false, false, 1)
-DIAG(ext_no_newline_eof, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "no newline at end of file", 426, SFINAE_Suppress, false, false, 1)
-DIAG(ext_nonstandard_escape, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of non-standard escape character '\\%0'", 516, SFINAE_Suppress, false, false, 1)
-DIAG(ext_on_off_switch_syntax, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "expected 'ON' or 'OFF' or 'DEFAULT' in pragma", 683, SFINAE_Suppress, false, false, 1)
-DIAG(ext_paste_comma, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "token pasting of ',' and __VA_ARGS__ is a GNU extension", 270, SFINAE_Suppress, false, false, 1)
-DIAG(ext_pp_bad_paste_ms, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "pasting formed '%0', an invalid preprocessing token", 338, SFINAE_Suppress, false, false, 1)
-DIAG(ext_pp_bad_vaargs_use, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "__VA_ARGS__ can only appear in the expansion of a C99 variadic macro", 516, SFINAE_Suppress, false, false, 1)
-DIAG(ext_pp_bad_vaopt_use, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "__VA_OPT__ can only appear in the expansion of a variadic macro", 731, SFINAE_Suppress, false, false, 1)
-DIAG(ext_pp_comma_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "comma operator in operand of #if", 516, SFINAE_Suppress, false, false, 1)
-DIAG(ext_pp_extra_tokens_at_eol, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "extra tokens at end of #%0 directive", 216, SFINAE_Suppress, false, false, 1)
-DIAG(ext_pp_ident_directive, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "#ident is a language extension", 516, SFINAE_Suppress, false, false, 1)
-DIAG(ext_pp_import_directive, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "#import is a language extension", 293, SFINAE_Suppress, false, false, 1)
-DIAG(ext_pp_include_next_directive, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "#include_next is a language extension", 261, SFINAE_Suppress, false, false, 1)
-DIAG(ext_pp_include_search_ms, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "#include resolved using non-portable Microsoft search rules as: %0", 381, SFINAE_Suppress, false, false, 1)
-DIAG(ext_pp_line_too_big, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "C requires #line number to be less than %0, allowed as extension", 516, SFINAE_Suppress, false, false, 1)
-DIAG(ext_pp_line_zero, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "#line directive with zero argument is a GNU extension", 269, SFINAE_Suppress, false, false, 1)
-DIAG(ext_pp_macro_redef, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%0 macro redefined", 353, SFINAE_Suppress, false, false, 1)
-DIAG(ext_pp_operator_used_as_macro_name, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "C++ operator %0 (aka %1) used as a macro name", 368, SFINAE_Suppress, false, false, 1)
+DIAG(ext_ms_reserved_user_defined_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "invalid suffix on literal; C++11 requires a space between literal and identifier", 570, SFINAE_Suppress, false, false, 1)
+DIAG(ext_multi_line_line_comment, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "multi-line // comment", 126, SFINAE_Suppress, false, false, 1)
+DIAG(ext_multichar_character_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "multi-character character constant", 429, SFINAE_Suppress, false, false, 1)
+DIAG(ext_named_variadic_macro, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "named variadic macros are a GNU extension", 744, SFINAE_Suppress, false, false, 1)
+DIAG(ext_no_newline_eof, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "no newline at end of file", 435, SFINAE_Suppress, false, false, 1)
+DIAG(ext_nonstandard_escape, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of non-standard escape character '\\%0'", 527, SFINAE_Suppress, false, false, 1)
+DIAG(ext_on_off_switch_syntax, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "expected 'ON' or 'OFF' or 'DEFAULT' in pragma", 696, SFINAE_Suppress, false, false, 1)
+DIAG(ext_paste_comma, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "token pasting of ',' and __VA_ARGS__ is a GNU extension", 278, SFINAE_Suppress, false, false, 1)
+DIAG(ext_pp_bad_paste_ms, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "pasting formed '%0', an invalid preprocessing token", 347, SFINAE_Suppress, false, false, 1)
+DIAG(ext_pp_bad_vaargs_use, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "__VA_ARGS__ can only appear in the expansion of a C99 variadic macro", 527, SFINAE_Suppress, false, false, 1)
+DIAG(ext_pp_bad_vaopt_use, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "__VA_OPT__ can only appear in the expansion of a variadic macro", 744, SFINAE_Suppress, false, false, 1)
+DIAG(ext_pp_comma_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "comma operator in operand of #if", 527, SFINAE_Suppress, false, false, 1)
+DIAG(ext_pp_extra_tokens_at_eol, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "extra tokens at end of #%0 directive", 224, SFINAE_Suppress, false, false, 1)
+DIAG(ext_pp_ident_directive, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "#ident is a language extension", 527, SFINAE_Suppress, false, false, 1)
+DIAG(ext_pp_import_directive, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "#import is a language extension", 302, SFINAE_Suppress, false, false, 1)
+DIAG(ext_pp_include_next_directive, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "#include_next is a language extension", 269, SFINAE_Suppress, false, false, 1)
+DIAG(ext_pp_include_search_ms, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "#include resolved using non-portable Microsoft search rules as: %0", 390, SFINAE_Suppress, false, false, 1)
+DIAG(ext_pp_line_too_big, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "C requires #line number to be less than %0, allowed as extension", 527, SFINAE_Suppress, false, false, 1)
+DIAG(ext_pp_line_zero, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "#line directive with zero argument is a GNU extension", 277, SFINAE_Suppress, false, false, 1)
+DIAG(ext_pp_macro_redef, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%0 macro redefined", 362, SFINAE_Suppress, false, false, 1)
+DIAG(ext_pp_operator_used_as_macro_name, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "C++ operator %0 (aka %1) used as a macro name", 377, SFINAE_Suppress, false, false, 1)
DIAG(ext_pp_redef_builtin_macro, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "redefining builtin macro", 68, SFINAE_Suppress, false, false, 1)
DIAG(ext_pp_undef_builtin_macro, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "undefining builtin macro", 68, SFINAE_Suppress, false, false, 1)
-DIAG(ext_pp_warning_directive, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "#warning is a language extension", 516, SFINAE_Suppress, false, false, 1)
-DIAG(ext_pragma_syntax_eod, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "expected end of directive in pragma", 683, SFINAE_Suppress, false, false, 1)
-DIAG(ext_reserved_user_defined_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "invalid suffix on literal; C++11 requires a space between literal and identifier", 558, SFINAE_Suppress, false, false, 1)
-DIAG(ext_string_too_long, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "string literal of length %0 exceeds maximum length %1 that %select{C90|ISO C99|C++}2 compilers are required to support", 500, SFINAE_Suppress, false, false, 1)
-DIAG(ext_token_used, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "extension used", 343, SFINAE_Suppress, false, false, 1)
-DIAG(ext_unicode_whitespace, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "treating Unicode character as whitespace", 677, SFINAE_Suppress, false, false, 1)
-DIAG(ext_unknown_escape, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "unknown escape sequence '\\%0'", 682, SFINAE_Suppress, false, false, 1)
-DIAG(ext_unterminated_char_or_string, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "missing terminating %select{'|'\"'}0 character", 336, SFINAE_Suppress, false, false, 1)
-DIAG(ext_variadic_macro, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "variadic macros are a C99 feature", 731, SFINAE_Suppress, false, false, 1)
+DIAG(ext_pp_warning_directive, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "#warning is a language extension", 527, SFINAE_Suppress, false, false, 1)
+DIAG(ext_pragma_syntax_eod, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "expected end of directive in pragma", 696, SFINAE_Suppress, false, false, 1)
+DIAG(ext_reserved_user_defined_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "invalid suffix on literal; C++11 requires a space between literal and identifier", 570, SFINAE_Suppress, false, false, 1)
+DIAG(ext_string_too_long, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "string literal of length %0 exceeds maximum length %1 that %select{C90|ISO C99|C++}2 compilers are required to support", 510, SFINAE_Suppress, false, false, 1)
+DIAG(ext_token_used, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "extension used", 352, SFINAE_Suppress, false, false, 1)
+DIAG(ext_unicode_whitespace, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "treating Unicode character as whitespace", 690, SFINAE_Suppress, false, false, 1)
+DIAG(ext_unknown_escape, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "unknown escape sequence '\\%0'", 695, SFINAE_Suppress, false, false, 1)
+DIAG(ext_unterminated_char_or_string, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "missing terminating %select{'|'\"'}0 character", 345, SFINAE_Suppress, false, false, 1)
+DIAG(ext_variadic_macro, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "variadic macros are a C99 feature", 744, SFINAE_Suppress, false, false, 1)
DIAG(note_header_guard, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 is defined here; did you mean %1?", 0, SFINAE_Suppress, false, false, 1)
DIAG(note_implicit_top_level_module_import_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "submodule of top-level module '%0' implicitly imported here", 0, SFINAE_Suppress, false, false, 1)
DIAG(note_init_list_at_beginning_of_macro_argument, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "cannot use initializer list at the beginning of a macro argument", 0, SFINAE_Suppress, false, false, 1)
@@ -220,35 +218,36 @@
DIAG(note_mmap_rename_top_level_private_module, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "rename '%0' to ensure it can be found by name", 0, SFINAE_Suppress, false, false, 1)
DIAG(note_pp_ambiguous_macro_chosen, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "expanding this definition of %0", 0, SFINAE_Suppress, false, false, 1)
DIAG(note_pp_ambiguous_macro_other, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "other definition of %0", 0, SFINAE_Suppress, false, false, 1)
+DIAG(note_pp_framework_without_header, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did not find header '%0' in framework '%1' (loaded from '%2')", 0, SFINAE_Suppress, false, false, 1)
DIAG(note_pp_module_begin_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "entering module '%0' due to this pragma", 0, SFINAE_Suppress, false, false, 1)
DIAG(note_suggest_parens_for_macro, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "parentheses are required around macro argument containing braced initializer list", 0, SFINAE_Suppress, false, false, 1)
DIAG(note_ucn_four_not_eight, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did you mean to use '\\u'?", 0, SFINAE_Suppress, false, false, 1)
-DIAG(null_in_char_or_string, CLASS_WARNING, (unsigned)diag::Severity::Warning, "null character(s) preserved in %select{char|string}0 literal", 443, SFINAE_Suppress, false, false, 1)
-DIAG(null_in_file, CLASS_WARNING, (unsigned)diag::Severity::Warning, "null character ignored", 443, SFINAE_Suppress, false, false, 1)
-DIAG(pp_disabled_macro_expansion, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "disabled expansion of recursive macro", 171, SFINAE_Suppress, false, false, 1)
+DIAG(null_in_char_or_string, CLASS_WARNING, (unsigned)diag::Severity::Warning, "null character(s) preserved in %select{char|string}0 literal", 453, SFINAE_Suppress, false, false, 1)
+DIAG(null_in_file, CLASS_WARNING, (unsigned)diag::Severity::Warning, "null character ignored", 453, SFINAE_Suppress, false, false, 1)
+DIAG(pp_disabled_macro_expansion, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "disabled expansion of recursive macro", 177, SFINAE_Suppress, false, false, 1)
DIAG(pp_err_elif_after_else, CLASS_ERROR, (unsigned)diag::Severity::Error, "#elif after #else", 0, SFINAE_SubstitutionFailure, false, true, 1)
DIAG(pp_err_elif_without_if, CLASS_ERROR, (unsigned)diag::Severity::Error, "#elif without #if", 0, SFINAE_SubstitutionFailure, false, true, 1)
DIAG(pp_err_else_after_else, CLASS_ERROR, (unsigned)diag::Severity::Error, "#else after #else", 0, SFINAE_SubstitutionFailure, false, true, 1)
DIAG(pp_err_else_without_if, CLASS_ERROR, (unsigned)diag::Severity::Error, "#else without #if", 0, SFINAE_SubstitutionFailure, false, true, 1)
DIAG(pp_hash_warning, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0", 2, SFINAE_Suppress, false, true, 21)
DIAG(pp_include_macros_out_of_predefines, CLASS_ERROR, (unsigned)diag::Severity::Error, "the #__include_macros directive is only for internal use by -imacros", 0, SFINAE_SubstitutionFailure, false, true, 1)
-DIAG(pp_include_next_absolute_path, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#include_next with absolute path", 295, SFINAE_Suppress, false, false, 1)
-DIAG(pp_include_next_in_primary, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#include_next in primary source file", 296, SFINAE_Suppress, false, false, 1)
+DIAG(pp_include_next_absolute_path, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#include_next with absolute path", 304, SFINAE_Suppress, false, false, 1)
+DIAG(pp_include_next_in_primary, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#include_next in primary source file", 305, SFINAE_Suppress, false, false, 1)
DIAG(pp_invalid_string_literal, CLASS_WARNING, (unsigned)diag::Severity::Warning, "invalid string literal, ignoring final '\\'", 0, SFINAE_Suppress, false, false, 1)
-DIAG(pp_macro_not_used, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "macro is not used", 717, SFINAE_Suppress, false, false, 1)
-DIAG(pp_nonportable_path, CLASS_WARNING, (unsigned)diag::Severity::Warning, "non-portable path to file '%0'; specified path differs in case from file name on disk", 436, SFINAE_Suppress, false, false, 1)
-DIAG(pp_nonportable_system_path, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "non-portable path to file '%0'; specified path differs in case from file name on disk", 437, SFINAE_Suppress, false, false, 1)
+DIAG(pp_macro_not_used, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "macro is not used", 730, SFINAE_Suppress, false, false, 1)
+DIAG(pp_nonportable_path, CLASS_WARNING, (unsigned)diag::Severity::Warning, "non-portable path to file '%0'; specified path differs in case from file name on disk", 446, SFINAE_Suppress, false, false, 1)
+DIAG(pp_nonportable_system_path, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "non-portable path to file '%0'; specified path differs in case from file name on disk", 447, SFINAE_Suppress, false, false, 1)
DIAG(pp_out_of_date_dependency, CLASS_WARNING, (unsigned)diag::Severity::Warning, "current file is older than dependency %0", 0, SFINAE_Suppress, false, false, 1)
DIAG(pp_poisoning_existing_macro, CLASS_WARNING, (unsigned)diag::Severity::Warning, "poisoning existing macro", 0, SFINAE_Suppress, false, false, 1)
-DIAG(pp_pragma_once_in_main_file, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#pragma once in main file", 526, SFINAE_Suppress, false, false, 1)
-DIAG(pp_pragma_sysheader_in_main_file, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#pragma system_header ignored in main file", 529, SFINAE_Suppress, false, false, 1)
-DIAG(trigraph_converted, CLASS_WARNING, (unsigned)diag::Severity::Warning, "trigraph converted to '%0' character", 656, SFINAE_Suppress, false, false, 1)
-DIAG(trigraph_ends_block_comment, CLASS_WARNING, (unsigned)diag::Severity::Warning, "trigraph ends block comment", 656, SFINAE_Suppress, false, false, 1)
-DIAG(trigraph_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "trigraph ignored", 656, SFINAE_Suppress, false, false, 1)
-DIAG(trigraph_ignored_block_comment, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignored trigraph would end block comment", 656, SFINAE_Suppress, false, false, 1)
+DIAG(pp_pragma_once_in_main_file, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#pragma once in main file", 538, SFINAE_Suppress, false, false, 1)
+DIAG(pp_pragma_sysheader_in_main_file, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#pragma system_header ignored in main file", 541, SFINAE_Suppress, false, false, 1)
+DIAG(trigraph_converted, CLASS_WARNING, (unsigned)diag::Severity::Warning, "trigraph converted to '%0' character", 669, SFINAE_Suppress, false, false, 1)
+DIAG(trigraph_ends_block_comment, CLASS_WARNING, (unsigned)diag::Severity::Warning, "trigraph ends block comment", 669, SFINAE_Suppress, false, false, 1)
+DIAG(trigraph_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "trigraph ignored", 669, SFINAE_Suppress, false, false, 1)
+DIAG(trigraph_ignored_block_comment, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignored trigraph would end block comment", 669, SFINAE_Suppress, false, false, 1)
DIAG(warn_auto_module_import, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "treating #%select{include|import|include_next|__include_macros}0 as an import of module '%1'", 49, SFINAE_Suppress, false, false, 1)
-DIAG(warn_bad_character_encoding, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "illegal character encoding in character literal", 337, SFINAE_Suppress, false, false, 1)
-DIAG(warn_bad_string_encoding, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "illegal character encoding in string literal", 337, SFINAE_Suppress, false, false, 1)
+DIAG(warn_bad_character_encoding, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "illegal character encoding in character literal", 346, SFINAE_Suppress, false, false, 1)
+DIAG(warn_bad_string_encoding, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "illegal character encoding in string literal", 346, SFINAE_Suppress, false, false, 1)
DIAG(warn_c99_compat_unicode_id, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{using this character in an identifier|starting an identifier with this character}0 is incompatible with C99", 113, SFINAE_Suppress, false, false, 1)
DIAG(warn_c99_compat_unicode_literal, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unicode literals are incompatible with C99", 113, SFINAE_Suppress, false, false, 1)
DIAG(warn_char_constant_too_large, CLASS_WARNING, (unsigned)diag::Severity::Warning, "character constant too long for its type", 0, SFINAE_Suppress, false, false, 1)
@@ -272,60 +271,60 @@
DIAG(warn_cxx98_compat_unicode_id, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "using this character in an identifier is incompatible with C++98", 106, SFINAE_Suppress, false, false, 1)
DIAG(warn_cxx98_compat_unicode_literal, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unicode literals are incompatible with C++98", 106, SFINAE_Suppress, false, false, 1)
DIAG(warn_cxx98_compat_variadic_macro, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variadic macros are incompatible with C++98", 110, SFINAE_Suppress, false, false, 1)
-DIAG(warn_defined_in_function_type_macro, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "macro expansion producing 'defined' has undefined behavior", 207, SFINAE_Suppress, false, false, 1)
-DIAG(warn_defined_in_object_type_macro, CLASS_WARNING, (unsigned)diag::Severity::Warning, "macro expansion producing 'defined' has undefined behavior", 207, SFINAE_Suppress, false, false, 1)
+DIAG(warn_defined_in_function_type_macro, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "macro expansion producing 'defined' has undefined behavior", 214, SFINAE_Suppress, false, false, 1)
+DIAG(warn_defined_in_object_type_macro, CLASS_WARNING, (unsigned)diag::Severity::Warning, "macro expansion producing 'defined' has undefined behavior", 214, SFINAE_Suppress, false, false, 1)
DIAG(warn_extraneous_char_constant, CLASS_WARNING, (unsigned)diag::Severity::Warning, "extraneous characters in character constant ignored", 0, SFINAE_Suppress, false, false, 1)
-DIAG(warn_framework_include_private_from_public, CLASS_WARNING, (unsigned)diag::Severity::Warning, "public framework header includes private framework header '%0'", 238, SFINAE_Suppress, false, false, 1)
-DIAG(warn_has_warning_invalid_option, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "__has_warning expected option name (e.g. \"-Wundef\")", 356, SFINAE_Suppress, false, false, 1)
-DIAG(warn_header_guard, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is used as a header guard here, followed by #define of a different macro", 271, SFINAE_Suppress, false, false, 1)
+DIAG(warn_framework_include_private_from_public, CLASS_WARNING, (unsigned)diag::Severity::Warning, "public framework header includes private framework header '%0'", 246, SFINAE_Suppress, false, false, 1)
+DIAG(warn_has_warning_invalid_option, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "__has_warning expected option name (e.g. \"-Wundef\")", 365, SFINAE_Suppress, false, false, 1)
+DIAG(warn_header_guard, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is used as a header guard here, followed by #define of a different macro", 279, SFINAE_Suppress, false, false, 1)
DIAG(warn_missing_whitespace_after_macro_name, CLASS_WARNING, (unsigned)diag::Severity::Warning, "whitespace recommended after macro name", 0, SFINAE_Suppress, false, false, 1)
-DIAG(warn_mmap_incomplete_framework_module_declaration, CLASS_WARNING, (unsigned)diag::Severity::Warning, "skipping '%0' because module declaration of '%1' lacks the 'framework' qualifier", 305, SFINAE_Suppress, false, false, 1)
-DIAG(warn_mmap_mismatched_private_module_name, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected canonical name for private module '%0'", 534, SFINAE_Suppress, false, false, 1)
-DIAG(warn_mmap_mismatched_private_submodule, CLASS_WARNING, (unsigned)diag::Severity::Warning, "private submodule '%0' in private module map, expected top-level module", 534, SFINAE_Suppress, false, false, 1)
-DIAG(warn_mmap_redundant_export_as, CLASS_WARNING, (unsigned)diag::Severity::Warning, "module '%0' already re-exported as '%1'", 534, SFINAE_Suppress, false, false, 1)
-DIAG(warn_mmap_umbrella_dir_not_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "umbrella directory '%0' not found", 308, SFINAE_Suppress, false, false, 1)
-DIAG(warn_mmap_unknown_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown attribute '%0'", 274, SFINAE_Suppress, false, false, 1)
-DIAG(warn_module_conflict, CLASS_WARNING, (unsigned)diag::Severity::Warning, "module '%0' conflicts with already-imported module '%1': %2", 410, SFINAE_Suppress, false, false, 1)
-DIAG(warn_nested_block_comment, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'/*' within block comment", 125, SFINAE_Suppress, false, false, 1)
-DIAG(warn_no_newline_eof, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "no newline at end of file", 426, SFINAE_Suppress, false, false, 1)
-DIAG(warn_non_modular_include_in_framework_module, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "include of non-modular header inside framework module '%0': '%1'", 430, SFINAE_Suppress, false, false, 1)
-DIAG(warn_non_modular_include_in_module, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "include of non-modular header inside module '%0': '%1'", 431, SFINAE_Suppress, false, false, 1)
+DIAG(warn_mmap_incomplete_framework_module_declaration, CLASS_WARNING, (unsigned)diag::Severity::Warning, "skipping '%0' because module declaration of '%1' lacks the 'framework' qualifier", 314, SFINAE_Suppress, false, false, 1)
+DIAG(warn_mmap_mismatched_private_module_name, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected canonical name for private module '%0'", 546, SFINAE_Suppress, false, false, 1)
+DIAG(warn_mmap_mismatched_private_submodule, CLASS_WARNING, (unsigned)diag::Severity::Warning, "private submodule '%0' in private module map, expected top-level module", 546, SFINAE_Suppress, false, false, 1)
+DIAG(warn_mmap_redundant_export_as, CLASS_WARNING, (unsigned)diag::Severity::Warning, "module '%0' already re-exported as '%1'", 546, SFINAE_Suppress, false, false, 1)
+DIAG(warn_mmap_umbrella_dir_not_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "umbrella directory '%0' not found", 317, SFINAE_Suppress, false, false, 1)
+DIAG(warn_mmap_unknown_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown attribute '%0'", 282, SFINAE_Suppress, false, false, 1)
+DIAG(warn_module_conflict, CLASS_WARNING, (unsigned)diag::Severity::Warning, "module '%0' conflicts with already-imported module '%1': %2", 419, SFINAE_Suppress, false, false, 1)
+DIAG(warn_nested_block_comment, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'/*' within block comment", 126, SFINAE_Suppress, false, false, 1)
+DIAG(warn_no_newline_eof, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "no newline at end of file", 435, SFINAE_Suppress, false, false, 1)
+DIAG(warn_non_modular_include_in_framework_module, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "include of non-modular header inside framework module '%0': '%1'", 440, SFINAE_Suppress, false, false, 1)
+DIAG(warn_non_modular_include_in_module, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "include of non-modular header inside module '%0': '%1'", 441, SFINAE_Suppress, false, false, 1)
DIAG(warn_pp_ambiguous_macro, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ambiguous expansion of macro %0", 19, SFINAE_Suppress, false, false, 1)
DIAG(warn_pp_convert_to_positive, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{left|right}0 side of operator converted from negative value to unsigned: %1", 0, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pp_date_time, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "expansion of date or time macro is not reproducible", 150, SFINAE_Suppress, false, true, 1)
+DIAG(warn_pp_date_time, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "expansion of date or time macro is not reproducible", 154, SFINAE_Suppress, false, true, 1)
DIAG(warn_pp_expr_overflow, CLASS_WARNING, (unsigned)diag::Severity::Warning, "integer overflow in preprocessor expression", 0, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pp_hdrstop_filename_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#pragma hdrstop filename not supported, /Fp can be used to specify precompiled header filename", 122, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pp_hdrstop_filename_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#pragma hdrstop filename not supported, /Fp can be used to specify precompiled header filename", 123, SFINAE_Suppress, false, false, 1)
DIAG(warn_pp_line_decimal, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{#line|GNU line marker}0 directive interprets number as decimal, not octal", 0, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pp_macro_def_mismatch_with_pch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "definition of macro %0 does not match definition in precompiled header", 122, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pp_macro_hides_keyword, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "keyword is hidden by macro definition", 341, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pp_macro_is_reserved_id, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "macro name is a reserved identifier", 557, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pp_objc_macro_redef_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring redefinition of Objective-C qualifier macro", 463, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pp_undef_identifier, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 is not defined, evaluates to 0", 664, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pragma_debug_missing_argument, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing argument to debug command '%0'", 278, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pragma_debug_unexpected_command, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unexpected debug command '%0'", 278, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pragma_diagnostic_cannot_pop, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pragma diagnostic pop could not pop, no matching push", 683, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pragma_diagnostic_invalid, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pragma diagnostic expected 'error', 'warning', 'ignored', 'fatal', 'push', or 'pop'", 683, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pragma_diagnostic_invalid_option, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pragma diagnostic expected option name (e.g. \"-Wundef\")", 683, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pragma_diagnostic_invalid_token, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "unexpected token in pragma diagnostic", 683, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pragma_diagnostic_unknown_warning, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "unknown warning group '%0', ignored", 685, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pragma_ignored, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unknown pragma ignored", 683, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pragma_include_alias_expected, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pragma include_alias expected '%0'", 683, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pragma_include_alias_expected_filename, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pragma include_alias expected include filename", 683, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pragma_include_alias_mismatch_angle, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "angle-bracketed include <%0> cannot be aliased to double-quoted include \"%1\"", 683, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pragma_include_alias_mismatch_quote, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "double-quoted include \"%0\" cannot be aliased to angle-bracketed include <%1>", 683, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pp_macro_def_mismatch_with_pch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "definition of macro %0 does not match definition in precompiled header", 123, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pp_macro_hides_keyword, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "keyword is hidden by macro definition", 350, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pp_macro_is_reserved_id, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "macro name is a reserved identifier", 569, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pp_objc_macro_redef_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring redefinition of Objective-C qualifier macro", 473, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pp_undef_identifier, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 is not defined, evaluates to 0", 677, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pragma_debug_missing_argument, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing argument to debug command '%0'", 286, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pragma_debug_unexpected_command, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unexpected debug command '%0'", 286, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pragma_diagnostic_cannot_pop, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pragma diagnostic pop could not pop, no matching push", 696, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pragma_diagnostic_invalid, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pragma diagnostic expected 'error', 'warning', 'ignored', 'fatal', 'push', or 'pop'", 696, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pragma_diagnostic_invalid_option, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pragma diagnostic expected option name (e.g. \"-Wundef\")", 696, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pragma_diagnostic_invalid_token, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "unexpected token in pragma diagnostic", 696, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pragma_diagnostic_unknown_warning, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "unknown warning group '%0', ignored", 698, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pragma_ignored, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unknown pragma ignored", 696, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pragma_include_alias_expected, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pragma include_alias expected '%0'", 696, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pragma_include_alias_expected_filename, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pragma include_alias expected include filename", 696, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pragma_include_alias_mismatch_angle, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "angle-bracketed include <%0> cannot be aliased to double-quoted include \"%1\"", 696, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pragma_include_alias_mismatch_quote, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "double-quoted include \"%0\" cannot be aliased to angle-bracketed include <%1>", 696, SFINAE_Suppress, false, false, 1)
DIAG(warn_pragma_message, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0", 1, SFINAE_Suppress, true, false, 30)
-DIAG(warn_pragma_pop_macro_no_push, CLASS_WARNING, (unsigned)diag::Severity::Warning, "pragma pop_macro could not pop '%0', no matching push_macro", 278, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pragma_warning_expected, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "#pragma warning expected '%0'", 683, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pragma_warning_expected_number, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "#pragma warning expected a warning number", 683, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pragma_warning_push_level, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "#pragma warning(push, level) requires a level between 0 and 4", 683, SFINAE_Suppress, false, false, 1)
-DIAG(warn_pragma_warning_spec_invalid, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "#pragma warning expected 'push', 'pop', 'default', 'disable', 'error', 'once', 'suppress', 1, 2, 3, or 4", 683, SFINAE_Suppress, false, false, 1)
-DIAG(warn_quoted_include_in_framework_header, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "double-quoted include \"%0\" in framework header, expected angle-bracketed instead", 543, SFINAE_Suppress, false, false, 1)
-DIAG(warn_ucn_escape_incomplete, CLASS_WARNING, (unsigned)diag::Severity::Warning, "incomplete universal character name; treating as '\\' followed by identifier", 675, SFINAE_Suppress, false, false, 1)
-DIAG(warn_ucn_escape_no_digits, CLASS_WARNING, (unsigned)diag::Severity::Warning, "\\%0 used with no following hex digits; treating as '\\' followed by identifier", 675, SFINAE_Suppress, false, false, 1)
-DIAG(warn_ucn_escape_surrogate, CLASS_WARNING, (unsigned)diag::Severity::Warning, "universal character name refers to a surrogate character", 675, SFINAE_Suppress, false, false, 1)
-DIAG(warn_ucn_not_valid_in_c89, CLASS_WARNING, (unsigned)diag::Severity::Warning, "universal character names are only valid in C99 or C++; treating as '\\' followed by identifier", 675, SFINAE_Suppress, false, false, 1)
-DIAG(warn_ucn_not_valid_in_c89_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "universal character names are only valid in C99 or C++", 675, SFINAE_Suppress, false, false, 1)
-DIAG(warn_uncovered_module_header, CLASS_WARNING, (unsigned)diag::Severity::Warning, "umbrella header for module '%0' does not include header '%1'", 308, SFINAE_Suppress, false, false, 1)
-DIAG(warn_use_of_private_header_outside_module, CLASS_WARNING, (unsigned)diag::Severity::Error, "use of private header from outside its module: '%0'", 533, SFINAE_Suppress, false, false, 1)
-DIAG(warn_utf8_symbol_homoglyph, CLASS_WARNING, (unsigned)diag::Severity::Warning, "treating Unicode character <U+%0> as identifier character rather than as '%1' symbol", 676, SFINAE_Suppress, false, false, 1)
-DIAG(warn_utf8_symbol_zero_width, CLASS_WARNING, (unsigned)diag::Severity::Warning, "identifier contains Unicode character <U+%0> that is invisible in some environments", 678, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pragma_pop_macro_no_push, CLASS_WARNING, (unsigned)diag::Severity::Warning, "pragma pop_macro could not pop '%0', no matching push_macro", 286, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pragma_warning_expected, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "#pragma warning expected '%0'", 696, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pragma_warning_expected_number, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "#pragma warning expected a warning number", 696, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pragma_warning_push_level, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "#pragma warning(push, level) requires a level between 0 and 4", 696, SFINAE_Suppress, false, false, 1)
+DIAG(warn_pragma_warning_spec_invalid, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "#pragma warning expected 'push', 'pop', 'default', 'disable', 'error', 'once', 'suppress', 1, 2, 3, or 4", 696, SFINAE_Suppress, false, false, 1)
+DIAG(warn_quoted_include_in_framework_header, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "double-quoted include \"%0\" in framework header, expected angle-bracketed instead", 555, SFINAE_Suppress, false, false, 1)
+DIAG(warn_ucn_escape_incomplete, CLASS_WARNING, (unsigned)diag::Severity::Warning, "incomplete universal character name; treating as '\\' followed by identifier", 688, SFINAE_Suppress, false, false, 1)
+DIAG(warn_ucn_escape_no_digits, CLASS_WARNING, (unsigned)diag::Severity::Warning, "\\%0 used with no following hex digits; treating as '\\' followed by identifier", 688, SFINAE_Suppress, false, false, 1)
+DIAG(warn_ucn_escape_surrogate, CLASS_WARNING, (unsigned)diag::Severity::Warning, "universal character name refers to a surrogate character", 688, SFINAE_Suppress, false, false, 1)
+DIAG(warn_ucn_not_valid_in_c89, CLASS_WARNING, (unsigned)diag::Severity::Warning, "universal character names are only valid in C99 or C++; treating as '\\' followed by identifier", 688, SFINAE_Suppress, false, false, 1)
+DIAG(warn_ucn_not_valid_in_c89_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "universal character names are only valid in C99 or C++", 688, SFINAE_Suppress, false, false, 1)
+DIAG(warn_uncovered_module_header, CLASS_WARNING, (unsigned)diag::Severity::Warning, "umbrella header for module '%0' does not include header '%1'", 317, SFINAE_Suppress, false, false, 1)
+DIAG(warn_use_of_private_header_outside_module, CLASS_WARNING, (unsigned)diag::Severity::Error, "use of private header from outside its module: '%0'", 545, SFINAE_Suppress, false, false, 1)
+DIAG(warn_utf8_symbol_homoglyph, CLASS_WARNING, (unsigned)diag::Severity::Warning, "treating Unicode character <U+%0> as identifier character rather than as '%1' symbol", 689, SFINAE_Suppress, false, false, 1)
+DIAG(warn_utf8_symbol_zero_width, CLASS_WARNING, (unsigned)diag::Severity::Warning, "identifier contains Unicode character <U+%0> that is invisible in some environments", 691, SFINAE_Suppress, false, false, 1)
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticOptions.def b/linux-x64/clang/include/clang/Basic/DiagnosticOptions.def
index 2264565..baafd7a 100644
--- a/linux-x64/clang/include/clang/Basic/DiagnosticOptions.def
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticOptions.def
@@ -1,9 +1,8 @@
//===--- DiagOptions.def - Diagnostic option database ------------- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticOptions.h b/linux-x64/clang/include/clang/Basic/DiagnosticOptions.h
index 4c5bcb4..3e3c4e5 100644
--- a/linux-x64/clang/include/clang/Basic/DiagnosticOptions.h
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticOptions.h
@@ -1,9 +1,8 @@
//===- DiagnosticOptions.h --------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticParse.h b/linux-x64/clang/include/clang/Basic/DiagnosticParse.h
new file mode 100644
index 0000000..0c21ff9
--- /dev/null
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticParse.h
@@ -0,0 +1,28 @@
+//===--- DiagnosticParse.h - Diagnostics for libparse -----------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_BASIC_DIAGNOSTICPARSE_H
+#define LLVM_CLANG_BASIC_DIAGNOSTICPARSE_H
+
+#include "clang/Basic/Diagnostic.h"
+
+namespace clang {
+namespace diag {
+enum {
+#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \
+ SHOWINSYSHEADER, CATEGORY) \
+ ENUM,
+#define PARSESTART
+#include "clang/Basic/DiagnosticParseKinds.inc"
+#undef DIAG
+ NUM_BUILTIN_PARSE_DIAGNOSTICS
+};
+} // end namespace diag
+} // end namespace clang
+
+#endif // LLVM_CLANG_BASIC_DIAGNOSTICPARSE_H
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticParseKinds.inc b/linux-x64/clang/include/clang/Basic/DiagnosticParseKinds.inc
index f01e87a..f18ef7f 100644
--- a/linux-x64/clang/include/clang/Basic/DiagnosticParseKinds.inc
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticParseKinds.inc
@@ -211,11 +211,14 @@
DIAG(err_omp_expected_reduction_identifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected identifier or one of the following operators: '+', '-', '*', '&', '|', '^', '&&', or '||'", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_omp_immediate_directive, CLASS_ERROR, (unsigned)diag::Severity::Error, "'#pragma omp %0' %select{|with '%2' clause }1cannot be an immediate substatement", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_omp_map_type_missing, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing map type", 0, SFINAE_SubstitutionFailure, false, true, 4)
+DIAG(err_omp_map_type_modifier_missing, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing map type modifier", 0, SFINAE_SubstitutionFailure, false, true, 4)
+DIAG(err_omp_mapper_expected_declarator, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected declarator on 'omp declare mapper' directive", 0, SFINAE_SubstitutionFailure, false, true, 4)
+DIAG(err_omp_mapper_illegal_identifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal identifier on 'omp declare mapper' directive", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_omp_unexpected_clause, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected OpenMP clause '%0' in directive '#pragma omp %1'", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_omp_unexpected_directive, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected OpenMP directive %select{|'#pragma omp %1'}0", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_omp_unknown_directive, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected an OpenMP directive", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_omp_unknown_map_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "incorrect map type, expected one of 'to', 'from', 'tofrom', 'alloc', 'release', or 'delete'", 0, SFINAE_SubstitutionFailure, false, true, 4)
-DIAG(err_omp_unknown_map_type_modifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "incorrect map type modifier, expected 'always'", 0, SFINAE_SubstitutionFailure, false, true, 4)
+DIAG(err_omp_unknown_map_type_modifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "incorrect map type modifier, expected 'always' or 'close'", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_opencl_logical_exclusive_or, CLASS_ERROR, (unsigned)diag::Severity::Error, "^^ is a reserved operator in OpenCL", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_opencl_taking_function_address_parser, CLASS_ERROR, (unsigned)diag::Severity::Error, "taking address of function is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_opencl_unroll_hint_on_non_loop, CLASS_ERROR, (unsigned)diag::Severity::Error, "OpenCL only supports 'opencl_unroll_hint' attribute on for, while, and do statements", 0, SFINAE_SubstitutionFailure, false, true, 4)
@@ -228,13 +231,15 @@
DIAG(err_pragma_attribute_expected_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected an attribute after '('", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_pragma_attribute_expected_attribute_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected identifier that represents an attribute name", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_pragma_attribute_expected_attribute_syntax, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected an attribute that is specified using the GNU, C++11 or '__declspec' syntax", 0, SFINAE_SubstitutionFailure, false, true, 4)
-DIAG(err_pragma_attribute_expected_push_pop, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected 'push' or 'pop' after '#pragma clang attribute'", 0, SFINAE_SubstitutionFailure, false, true, 4)
+DIAG(err_pragma_attribute_expected_period, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '.' after pragma attribute namespace %0", 0, SFINAE_SubstitutionFailure, false, true, 4)
+DIAG(err_pragma_attribute_expected_push_pop_paren, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected 'push', 'pop', or '(' after '#pragma clang attribute'", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_pragma_attribute_expected_subject_identifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected an identifier that corresponds to an attribute subject rule", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_pragma_attribute_expected_subject_sub_identifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected an identifier that corresponds to an attribute subject matcher sub-rule; '%0' matcher %select{does not support sub-rules|supports the following sub-rules: %2|}1", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_pragma_attribute_extra_tokens_after_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "extra tokens after attribute in a '#pragma clang attribute push'", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_pragma_attribute_invalid_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected argument '%0' to '#pragma clang attribute'; expected 'push' or 'pop'", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_pragma_attribute_invalid_subject_set_specifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected attribute subject set specifier 'apply_to'", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_pragma_attribute_multiple_attributes, CLASS_ERROR, (unsigned)diag::Severity::Error, "more than one attribute specified in '#pragma clang attribute push'", 0, SFINAE_SubstitutionFailure, false, true, 4)
+DIAG(err_pragma_attribute_namespace_on_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "namespace can only apply to 'push' or 'pop' directives", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_pragma_attribute_unknown_subject_rule, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown attribute subject rule '%0'", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_pragma_attribute_unknown_subject_sub_rule, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{invalid use of|unknown}2 attribute subject matcher sub-rule '%0'; '%1' matcher %select{does not support sub-rules|supports the following sub-rules: %3}2", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_pragma_attribute_unsupported_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "attribute %0 is not supported by '#pragma clang attribute'", 0, SFINAE_SubstitutionFailure, false, true, 4)
@@ -249,11 +254,12 @@
DIAG(err_pragma_fp_invalid_option, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{invalid|missing}0 option%select{ %1|}0; expected contract", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_pragma_fp_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "'#pragma clang fp' can only appear at file scope or at the start of a compound statement", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_pragma_invalid_keyword, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid argument; expected 'enable'%select{|, 'full'}0%select{|, 'assume_safety'}1 or 'disable'", 0, SFINAE_SubstitutionFailure, false, true, 4)
-DIAG(err_pragma_loop_invalid_option, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{invalid|missing}0 option%select{ %1|}0; expected vectorize, vectorize_width, interleave, interleave_count, unroll, unroll_count, or distribute", 0, SFINAE_SubstitutionFailure, false, true, 4)
+DIAG(err_pragma_loop_invalid_option, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{invalid|missing}0 option%select{ %1|}0; expected vectorize, vectorize_width, interleave, interleave_count, unroll, unroll_count, pipeline, pipeline_initiation_interval, or distribute", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_pragma_loop_missing_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing argument; expected %select{an integer value|'enable'%select{|, 'full'}1%select{|, 'assume_safety'}2 or 'disable'}0", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_pragma_missing_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing argument to '#pragma %0'%select{|; expected %2}1", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_pragma_optimize_extra_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected extra argument '%0' to '#pragma clang optimize'", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_pragma_optimize_invalid_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected argument '%0' to '#pragma clang optimize'; expected 'on' or 'off'", 0, SFINAE_SubstitutionFailure, false, true, 4)
+DIAG(err_pragma_pipeline_invalid_keyword, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid argument; expected 'disable'", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_pragma_pointers_to_members_unknown_kind, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected %0, expected to see one of %select{|'best_case', 'full_generality', }1'single_inheritance', 'multiple_inheritance', or 'virtual_inheritance'", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_right_angle_bracket_equal_needs_space, CLASS_ERROR, (unsigned)diag::Severity::Error, "a space is required between a right angle bracket and an equals sign (use '> =')", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(err_scoped_enum_missing_identifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "scoped enumeration requires a name", 0, SFINAE_SubstitutionFailure, false, true, 4)
@@ -296,9 +302,9 @@
DIAG(err_zero_version, CLASS_ERROR, (unsigned)diag::Severity::Error, "version number must have non-zero major, minor, or sub-minor version", 0, SFINAE_SubstitutionFailure, false, true, 4)
DIAG(ext_abstract_pack_declarator_parens, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C++11 requires a parenthesized pack declaration to have a name", 22, SFINAE_Suppress, false, false, 4)
DIAG(ext_alias_declaration, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "alias declarations are a C++11 extension", 79, SFINAE_Suppress, false, false, 4)
-DIAG(ext_alignof_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%0 applied to an expression is a GNU extension", 245, SFINAE_Suppress, false, false, 4)
+DIAG(ext_alignof_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%0 applied to an expression is a GNU extension", 253, SFINAE_Suppress, false, false, 4)
DIAG(ext_auto_storage_class, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'auto' storage class specifier is not permitted in C++11, and will not be supported in future releases", 50, SFINAE_Suppress, false, false, 4)
-DIAG(ext_auto_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'__auto_type' is a GNU extension", 248, SFINAE_Suppress, false, false, 4)
+DIAG(ext_auto_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'__auto_type' is a GNU extension", 256, SFINAE_Suppress, false, false, 4)
DIAG(ext_bitfield_member_init, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "default member initializer for bit-field is a C++2a extension", 98, SFINAE_Suppress, false, false, 4)
DIAG(ext_c11_alignment, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "%0 is a C11-specific feature", 112, SFINAE_Suppress, false, false, 4)
DIAG(ext_c11_generic_selection, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "generic selections are a C11-specific feature", 112, SFINAE_Suppress, false, false, 4)
@@ -306,55 +312,60 @@
DIAG(ext_c11_static_assert, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "_Static_assert is a C11-specific feature", 112, SFINAE_Suppress, false, false, 4)
DIAG(ext_c99_compound_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "compound literals are a C99-specific feature", 114, SFINAE_Suppress, false, false, 4)
DIAG(ext_c99_variable_decl_in_for_loop, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "variable declaration in for loop is a C99-specific feature", 114, SFINAE_Suppress, false, false, 4)
-DIAG(ext_clang_c_enum_fixed_underlying_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "enumeration types with a fixed underlying type are a Clang extension", 218, SFINAE_Suppress, false, false, 4)
+DIAG(ext_clang_c_enum_fixed_underlying_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "enumeration types with a fixed underlying type are a Clang extension", 226, SFINAE_Suppress, false, false, 4)
DIAG(ext_constexpr_if, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "constexpr if is a C++17 extension", 91, SFINAE_Suppress, false, false, 4)
DIAG(ext_constexpr_on_lambda_cxx17, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'constexpr' on lambda expressions is a C++17 extension", 91, SFINAE_Suppress, false, false, 4)
DIAG(ext_cxx11_enum_fixed_underlying_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "enumeration types with a fixed underlying type are a C++11 extension", 79, SFINAE_Suppress, false, false, 4)
DIAG(ext_decltype_auto_type_specifier, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'decltype(auto)' type specifier is a C++14 extension", 87, SFINAE_Suppress, false, false, 4)
-DIAG(ext_decomp_decl_empty, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C++17 does not allow a decomposition group to be empty", 197, SFINAE_Suppress, false, false, 4)
+DIAG(ext_decomp_decl_empty, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C++17 does not allow a decomposition group to be empty", 203, SFINAE_Suppress, false, false, 4)
DIAG(ext_defaulted_deleted_function, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%select{defaulted|deleted}0 function definitions are a C++11 extension", 79, SFINAE_Suppress, false, false, 4)
-DIAG(ext_ellipsis_exception_spec, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "exception specification of '...' is a Microsoft extension", 373, SFINAE_Suppress, false, false, 4)
-DIAG(ext_empty_translation_unit, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C requires a translation unit to contain at least one declaration", 198, SFINAE_Suppress, false, false, 4)
+DIAG(ext_dynamic_exception_spec, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "ISO C++17 does not allow dynamic exception specifications", 199, SFINAE_Suppress, false, false, 4)
+DIAG(ext_ellipsis_exception_spec, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "exception specification of '...' is a Microsoft extension", 382, SFINAE_Suppress, false, false, 4)
+DIAG(ext_empty_translation_unit, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C requires a translation unit to contain at least one declaration", 205, SFINAE_Suppress, false, false, 4)
DIAG(ext_enumerator_list_comma_c, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "commas at the end of enumerator lists are a C99-specific feature", 114, SFINAE_Suppress, false, false, 4)
DIAG(ext_enumerator_list_comma_cxx, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "commas at the end of enumerator lists are a C++11 extension", 79, SFINAE_Suppress, false, false, 4)
DIAG(ext_expected_semi_decl_list, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "expected ';' at end of declaration list", 0, SFINAE_Suppress, false, false, 4)
DIAG(ext_extern_template, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "extern templates are a C++11 extension", 79, SFINAE_Suppress, false, false, 4)
-DIAG(ext_extra_semi, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "extra ';' %select{outside of a function|inside a %1|inside instance variable list|after member function definition}0", 215, SFINAE_Suppress, false, false, 4)
+DIAG(ext_extra_semi, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "extra ';' %select{outside of a function|inside a %1|inside instance variable list|after member function definition}0", 222, SFINAE_Suppress, false, false, 4)
DIAG(ext_extra_semi_cxx11, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "extra ';' outside of a function is a C++11 extension", 80, SFINAE_Suppress, false, false, 4)
DIAG(ext_fold_expression, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pack fold expression is a C++17 extension", 91, SFINAE_Suppress, false, false, 4)
DIAG(ext_for_range, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "range-based for loop is a C++11 extension", 79, SFINAE_Suppress, false, false, 4)
DIAG(ext_for_range_init_stmt, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "range-based for loop initialization statements are a C++2a extension", 98, SFINAE_Suppress, false, false, 4)
DIAG(ext_generalized_initializer_lists, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "generalized initializer lists are a C++11 extension", 79, SFINAE_Suppress, false, false, 4)
-DIAG(ext_gnu_address_of_label, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU address-of-label extension", 262, SFINAE_Suppress, false, false, 4)
-DIAG(ext_gnu_array_range, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU array range extension", 254, SFINAE_Suppress, false, false, 4)
-DIAG(ext_gnu_case_range, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU case range extension", 250, SFINAE_Suppress, false, false, 4)
-DIAG(ext_gnu_conditional_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU ?: conditional expression extension, omitting middle operand", 253, SFINAE_Suppress, false, false, 4)
-DIAG(ext_gnu_empty_initializer, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU empty initializer extension", 255, SFINAE_Suppress, false, false, 4)
-DIAG(ext_gnu_indirect_goto, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU indirect-goto extension", 262, SFINAE_Suppress, false, false, 4)
-DIAG(ext_gnu_missing_equal_designator, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of GNU 'missing =' extension in designator", 254, SFINAE_Suppress, false, false, 4)
-DIAG(ext_gnu_old_style_field_designator, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of GNU old-style field designator extension", 254, SFINAE_Suppress, false, false, 4)
-DIAG(ext_gnu_statement_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU statement expression extension", 264, SFINAE_Suppress, false, false, 4)
-DIAG(ext_ident_list_in_param, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "type-less parameter names in function declaration", 516, SFINAE_Suppress, false, false, 4)
+DIAG(ext_gnu_address_of_label, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU address-of-label extension", 270, SFINAE_Suppress, false, false, 4)
+DIAG(ext_gnu_array_range, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU array range extension", 262, SFINAE_Suppress, false, false, 4)
+DIAG(ext_gnu_case_range, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU case range extension", 258, SFINAE_Suppress, false, false, 4)
+DIAG(ext_gnu_conditional_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU ?: conditional expression extension, omitting middle operand", 261, SFINAE_Suppress, false, false, 4)
+DIAG(ext_gnu_empty_initializer, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU empty initializer extension", 263, SFINAE_Suppress, false, false, 4)
+DIAG(ext_gnu_indirect_goto, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU indirect-goto extension", 270, SFINAE_Suppress, false, false, 4)
+DIAG(ext_gnu_missing_equal_designator, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of GNU 'missing =' extension in designator", 262, SFINAE_Suppress, false, false, 4)
+DIAG(ext_gnu_old_style_field_designator, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of GNU old-style field designator extension", 262, SFINAE_Suppress, false, false, 4)
+DIAG(ext_gnu_statement_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU statement expression extension", 272, SFINAE_Suppress, false, false, 4)
+DIAG(ext_ident_list_in_param, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "type-less parameter names in function declaration", 527, SFINAE_Suppress, false, false, 4)
DIAG(ext_init_statement, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'%select{if|switch}0' initialization statements are a C++17 extension", 91, SFINAE_Suppress, false, false, 4)
DIAG(ext_inline_namespace, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "inline namespaces are a C++11 feature", 81, SFINAE_Suppress, false, false, 4)
-DIAG(ext_keyword_as_ident, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "keyword '%0' will be made available as an identifier %select{here|for the remainder of the translation unit}1", 340, SFINAE_Suppress, false, false, 4)
-DIAG(ext_ms_c_enum_fixed_underlying_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "enumeration types with a fixed underlying type are a Microsoft extension", 377, SFINAE_Suppress, false, false, 4)
-DIAG(ext_ms_sealed_keyword, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'sealed' keyword is a Microsoft extension", 385, SFINAE_Suppress, false, false, 4)
+DIAG(ext_inline_nested_namespace_definition, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "inline nested namespace definition is a C++2a extension", 98, SFINAE_Suppress, false, false, 4)
+DIAG(ext_keyword_as_ident, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "keyword '%0' will be made available as an identifier %select{here|for the remainder of the translation unit}1", 349, SFINAE_Suppress, false, false, 4)
+DIAG(ext_ms_c_enum_fixed_underlying_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "enumeration types with a fixed underlying type are a Microsoft extension", 386, SFINAE_Suppress, false, false, 4)
+DIAG(ext_ms_sealed_keyword, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'sealed' keyword is a Microsoft extension", 394, SFINAE_Suppress, false, false, 4)
DIAG(ext_multi_using_declaration, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of multiple declarators in a single using declaration is a C++17 extension", 91, SFINAE_Suppress, false, false, 4)
DIAG(ext_nested_namespace_definition, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "nested namespace definition is a C++17 extension; define each namespace separately", 91, SFINAE_Suppress, false, false, 4)
DIAG(ext_nonstatic_member_init, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "in-class initialization of non-static data member is a C++11 extension", 79, SFINAE_Suppress, false, false, 4)
DIAG(ext_ns_enum_attribute, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "attributes on %select{a namespace|an enumerator}0 declaration are a C++17 extension", 91, SFINAE_Suppress, false, false, 4)
-DIAG(ext_nullability, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "type nullability specifier %0 is a Clang extension", 451, SFINAE_Suppress, false, false, 4)
+DIAG(ext_nullability, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "type nullability specifier %0 is a Clang extension", 461, SFINAE_Suppress, false, false, 4)
DIAG(ext_override_control_keyword, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'%0' keyword is a C++11 extension", 79, SFINAE_Suppress, false, false, 4)
DIAG(ext_ref_qualifier, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "reference qualifiers on functions are a C++11 extension", 79, SFINAE_Suppress, false, false, 4)
DIAG(ext_rvalue_reference, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "rvalue references are a C++11 extension", 79, SFINAE_Suppress, false, false, 4)
DIAG(ext_scoped_enum, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "scoped enumerations are a C++11 extension", 79, SFINAE_Suppress, false, false, 4)
-DIAG(ext_stdc_pragma_ignored, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "unknown pragma in STDC namespace", 683, SFINAE_Suppress, false, false, 4)
+DIAG(ext_static_assert_no_message, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "static_assert with no message is a C++17 extension", 91, SFINAE_Suppress, false, false, 4)
+DIAG(ext_stdc_pragma_ignored, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "unknown pragma in STDC namespace", 696, SFINAE_Suppress, false, false, 4)
DIAG(ext_template_template_param_typename, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "template template parameter using 'typename' is a C++17 extension", 91, SFINAE_Suppress, false, false, 4)
-DIAG(ext_thread_before, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'__thread' before '%0'", 516, SFINAE_Suppress, false, false, 4)
+DIAG(ext_thread_before, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'__thread' before '%0'", 527, SFINAE_Suppress, false, false, 4)
DIAG(ext_using_attribute_ns, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "default scope specifier for attributes is a C++17 extension", 91, SFINAE_Suppress, false, false, 4)
DIAG(ext_using_declaration_pack, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pack expansion of using declaration is a C++17 extension", 91, SFINAE_Suppress, false, false, 4)
+DIAG(ext_warn_gnu_final, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "__final is a GNU extension, consider using C++11 final", 250, SFINAE_Suppress, false, false, 4)
DIAG(note_bracket_depth, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use -fbracket-depth=N to increase maximum nesting level", 0, SFINAE_Suppress, false, false, 4)
+DIAG(note_exception_spec_deprecated, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use '%0' instead", 0, SFINAE_Suppress, false, false, 4)
DIAG(note_extra_comma_message_arg, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "comma separating Objective-C messaging arguments", 0, SFINAE_Suppress, false, false, 4)
DIAG(note_force_empty_selector_name, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "or insert whitespace before ':' to use %0 as parameter name and have an empty entry in the selector", 0, SFINAE_Suppress, false, false, 4)
DIAG(note_meant_to_use_typename, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did you mean to use 'typename'?", 0, SFINAE_Suppress, false, false, 20)
@@ -364,16 +375,17 @@
DIAG(note_missing_end_of_definition_before, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "still within definition of %q0 here", 0, SFINAE_Suppress, false, false, 4)
DIAG(note_missing_selector_name, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "introduce a parameter name to make %0 part of the selector", 0, SFINAE_Suppress, false, false, 4)
DIAG(note_objc_container_start, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{class|protocol|category|class extension|implementation|category implementation}0 started here", 0, SFINAE_Suppress, false, false, 4)
+DIAG(note_pragma_attribute_namespace_on_attribute, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "omit the namespace to add attributes to the most-recently pushed attribute group", 0, SFINAE_Suppress, false, false, 4)
DIAG(note_pragma_attribute_use_attribute_kw, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use the GNU '__attribute__' syntax", 0, SFINAE_Suppress, false, false, 4)
DIAG(note_previous_default_assoc, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous default generic association is here", 0, SFINAE_Suppress, false, false, 4)
DIAG(warn_arc_bridge_cast_nonarc, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' casts have no effect when not using ARC", 24, SFINAE_Suppress, false, false, 8)
DIAG(warn_asm_qualifier_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignored %0 qualifier on asm", 35, SFINAE_Suppress, false, false, 12)
DIAG(warn_atimport_in_framework_header, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use of '@import' in framework header is discouraged, including this header requires -fmodules", 40, SFINAE_Suppress, false, false, 4)
-DIAG(warn_attribute_no_decl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 ignored, because it is not attached to a declaration", 274, SFINAE_Suppress, false, false, 4)
-DIAG(warn_attribute_on_function_definition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "GCC does not allow %0 attribute in this position on a function definition", 242, SFINAE_Suppress, false, false, 4)
+DIAG(warn_attribute_no_decl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 ignored, because it is not attached to a declaration", 282, SFINAE_Suppress, false, false, 4)
+DIAG(warn_attribute_on_function_definition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "GCC does not allow %0 attribute in this position on a function definition", 250, SFINAE_Suppress, false, false, 4)
DIAG(warn_availability_and_unavailable, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'unavailable' availability overrides all other availability information", 52, SFINAE_Suppress, false, false, 4)
-DIAG(warn_cstyle_param, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use of C-style parameters in Objective-C method declarations is deprecated", 160, SFINAE_Suppress, false, false, 27)
-DIAG(warn_cuda_attr_lambda_position, CLASS_WARNING, (unsigned)diag::Severity::Warning, "nvcc does not allow '__%0__' to appear after '()' in lambdas", 144, SFINAE_Suppress, false, false, 4)
+DIAG(warn_cstyle_param, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use of C-style parameters in Objective-C method declarations is deprecated", 166, SFINAE_Suppress, false, false, 27)
+DIAG(warn_cuda_attr_lambda_position, CLASS_WARNING, (unsigned)diag::Severity::Warning, "nvcc does not allow '__%0__' to appear after '()' in lambdas", 147, SFINAE_Suppress, false, false, 4)
DIAG(warn_cxx11_compat_decltype_auto_type_specifier, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'decltype(auto)' type specifier is incompatible with C++ standards before C++14", 103, SFINAE_Suppress, false, false, 4)
DIAG(warn_cxx11_right_shift_in_template_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use of right-shift operator ('>>') in template argument will require parentheses in C++11", 75, SFINAE_Suppress, false, false, 4)
DIAG(warn_cxx14_compat_constexpr_if, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "constexpr if is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 4)
@@ -382,10 +394,12 @@
DIAG(warn_cxx14_compat_init_statement, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{if|switch}0 initialization statements are incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 4)
DIAG(warn_cxx14_compat_nested_namespace_definition, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "nested namespace definition is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 4)
DIAG(warn_cxx14_compat_ns_enum_attribute, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "attributes on %select{a namespace|an enumerator}0 declaration are incompatible with C++ standards before C++17", 102, SFINAE_Suppress, false, false, 4)
+DIAG(warn_cxx14_compat_static_assert_no_message, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "static_assert with no message is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 4)
DIAG(warn_cxx14_compat_template_template_param_typename, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "template template parameter using 'typename' is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 4)
DIAG(warn_cxx14_compat_using_attribute_ns, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "default scope specifier for attributes is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 4)
DIAG(warn_cxx17_compat_bitfield_member_init, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "default member initializer for bit-field is incompatible with C++ standards before C++2a", 99, SFINAE_Suppress, false, false, 4)
DIAG(warn_cxx17_compat_for_range_init_stmt, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "range-based for loop initialization statements are incompatible with C++ standards before C++2a", 99, SFINAE_Suppress, false, false, 4)
+DIAG(warn_cxx17_compat_inline_nested_namespace_definition, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "inline nested namespace definition is incompatible with C++ standards before C++2a", 99, SFINAE_Suppress, false, false, 4)
DIAG(warn_cxx17_compat_multi_using_declaration, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "use of multiple declarators in a single using declaration is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 4)
DIAG(warn_cxx17_compat_using_declaration_pack, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "pack expansion using declaration is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 4)
DIAG(warn_cxx98_compat_alias_declaration, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "alias declarations are incompatible with C++98", 106, SFINAE_Suppress, false, false, 4)
@@ -414,59 +428,63 @@
DIAG(warn_cxx98_compat_top_level_semi, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "extra ';' outside of a function is incompatible with C++98", 108, SFINAE_Suppress, false, false, 4)
DIAG(warn_cxx98_compat_trailing_return_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "trailing return types are incompatible with C++98", 106, SFINAE_Suppress, false, false, 4)
DIAG(warn_cxx98_compat_two_right_angle_brackets, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "consecutive right angle brackets are incompatible with C++98 (use '> >')", 106, SFINAE_Suppress, false, false, 4)
-DIAG(warn_dangling_else, CLASS_WARNING, (unsigned)diag::Severity::Warning, "add explicit braces to avoid dangling else", 147, SFINAE_Suppress, false, false, 4)
+DIAG(warn_dangling_else, CLASS_WARNING, (unsigned)diag::Severity::Warning, "add explicit braces to avoid dangling else", 150, SFINAE_Suppress, false, false, 4)
+DIAG(warn_empty_init_statement, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "empty initialization statement of '%select{if|switch|range-based for}0' has no effect", 204, SFINAE_Suppress, false, false, 4)
+DIAG(warn_exception_spec_deprecated, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "dynamic exception specifications are deprecated", 167, SFINAE_Suppress, false, false, 27)
DIAG(warn_expected_consistent_version_separator, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use same version number separators '_' or '.'; as in 'major[.minor[.subminor]]'", 52, SFINAE_Suppress, false, false, 4)
DIAG(warn_expected_qualified_after_typename, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "expected a qualified name after 'typename'", 0, SFINAE_Suppress, false, false, 4)
-DIAG(warn_extra_semi_after_mem_fn_def, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "extra ';' after member function definition", 215, SFINAE_Suppress, false, false, 4)
+DIAG(warn_extra_semi_after_mem_fn_def, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "extra ';' after member function definition", 222, SFINAE_Suppress, false, false, 4)
DIAG(warn_file_asm_volatile, CLASS_WARNING, (unsigned)diag::Severity::Warning, "meaningless 'volatile' on asm outside function", 35, SFINAE_Suppress, false, false, 12)
-DIAG(warn_gcc_attribute_location, CLASS_WARNING, (unsigned)diag::Severity::Warning, "GCC does not allow an attribute in this position on a function declaration", 242, SFINAE_Suppress, false, false, 4)
-DIAG(warn_gcc_variable_decl_in_for_loop, CLASS_WARNING, (unsigned)diag::Severity::Warning, "GCC does not allow variable declarations in for loop initializers before C99", 242, SFINAE_Suppress, false, false, 4)
-DIAG(warn_microsoft_dependent_exists, CLASS_WARNING, (unsigned)diag::Severity::Warning, "dependent %select{__if_not_exists|__if_exists}0 declarations are ignored", 374, SFINAE_Suppress, false, false, 4)
-DIAG(warn_microsoft_qualifiers_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "qualifiers after comma in declarator list are ignored", 274, SFINAE_Suppress, false, false, 4)
+DIAG(warn_gcc_attribute_location, CLASS_WARNING, (unsigned)diag::Severity::Warning, "GCC does not allow an attribute in this position on a function declaration", 250, SFINAE_Suppress, false, false, 4)
+DIAG(warn_gcc_variable_decl_in_for_loop, CLASS_WARNING, (unsigned)diag::Severity::Warning, "GCC does not allow variable declarations in for loop initializers before C99", 250, SFINAE_Suppress, false, false, 4)
+DIAG(warn_microsoft_dependent_exists, CLASS_WARNING, (unsigned)diag::Severity::Warning, "dependent %select{__if_not_exists|__if_exists}0 declarations are ignored", 383, SFINAE_Suppress, false, false, 4)
+DIAG(warn_microsoft_qualifiers_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "qualifiers after comma in declarator list are ignored", 282, SFINAE_Suppress, false, false, 4)
DIAG(warn_misplaced_ellipsis_vararg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'...' in this location creates a C-style varargs function%select{, not a function parameter pack|}0", 18, SFINAE_Suppress, false, false, 4)
DIAG(warn_missing_dependent_template_keyword, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use 'template' keyword to treat '%0' as a dependent template name", 0, SFINAE_Suppress, false, false, 4)
-DIAG(warn_missing_selector_name, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 used as the name of the previous parameter rather than as part of the selector", 406, SFINAE_Suppress, false, false, 4)
+DIAG(warn_missing_selector_name, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 used as the name of the previous parameter rather than as part of the selector", 415, SFINAE_Suppress, false, false, 4)
+DIAG(warn_null_statement, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "empty expression statement has no effect; remove unnecessary ';' to silence this warning", 223, SFINAE_Suppress, false, false, 4)
DIAG(warn_objc_protocol_qualifier_missing_id, CLASS_WARNING, (unsigned)diag::Severity::Warning, "protocol has no object type specified; defaults to qualified 'id'", 0, SFINAE_Suppress, false, false, 4)
-DIAG(warn_omp_extra_tokens_at_eol, CLASS_WARNING, (unsigned)diag::Severity::Warning, "extra tokens at the end of '#pragma omp %0' are ignored", 216, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_align_expected_equal, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected '=' following '#pragma %select{align|options align}0' - ignored", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_align_invalid_option, CLASS_WARNING, (unsigned)diag::Severity::Warning, "invalid alignment option in '#pragma %select{align|options align}0' - ignored", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_begin_end_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "OpenCL extension end directive mismatches begin directive - ignoring", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_comment_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'#pragma comment %0' ignored", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_expected_action_or_r_paren, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected action or ')' in '#pragma %0' - ignored", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_expected_colon, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing ':' after %0 - ignoring", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_expected_colon_r_paren, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing ':' or ')' after %0 - ignoring", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_expected_comma, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected ',' in '#pragma %0'", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_expected_identifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected identifier in '#pragma %0' - ignored", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_expected_init_seg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected 'compiler', 'lib', 'user', or a string literal for the section name in '#pragma %0' - ignored", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_expected_integer, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected integer between %0 and %1 inclusive in '#pragma %2' - ignored", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_expected_lparen, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing '(' after '#pragma %0' - ignoring", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_expected_non_wide_string, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected non-wide string literal in '#pragma %0'", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_expected_predicate, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected %select{'enable', 'disable', 'begin' or 'end'|'disable'}0 - ignoring", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_expected_punc, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected ')' or ',' in '#pragma %0'", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_expected_rparen, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing ')' after '#pragma %0' - ignoring", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_expected_section_label_or_name, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected a stack label or a string literal for the section name in '#pragma %0' - ignored", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_expected_section_name, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected a string literal for the section name in '#pragma %0' - ignored", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_expected_section_push_pop_or_name, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected push, pop or a string literal for the section name in '#pragma %0' - ignored", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_expected_string, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected string literal in '#pragma %0' - ignoring", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_extension_is_core, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "OpenCL extension %0 is core feature or supported optional core feature - ignoring", 517, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_extra_tokens_at_eol, CLASS_WARNING, (unsigned)diag::Severity::Warning, "extra tokens at end of '#pragma %0' - ignored", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_force_cuda_host_device_bad_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "incorrect use of #pragma clang force_cuda_host_device begin|end", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_init_seg_unsupported_target, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'#pragma init_seg' is only supported when targeting a Microsoft environment", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_intrinsic_builtin, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is not a recognized builtin%select{|; consider including <intrin.h> to access non-builtin intrinsics}1", 276, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_invalid_action, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown action for '#pragma %0' - ignored", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_invalid_argument, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unexpected argument '%0' to '#pragma %1'%select{|; expected %3}2", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_invalid_specific_action, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown action '%1' for '#pragma %0' - ignored", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_missing_argument, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing argument to '#pragma %0'%select{|; expected %2}1", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_ms_struct, CLASS_WARNING, (unsigned)diag::Severity::Warning, "incorrect use of '#pragma ms_struct on|off' - ignored", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_omp_ignored, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unexpected '#pragma omp ...' in program", 600, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_optimize, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'#pragma optimize' is not supported", 277, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_options_expected_align, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected 'align' following '#pragma options' - ignored", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_pack_malformed, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected integer or identifier in '#pragma pack' - ignored", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_unknown_extension, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown OpenCL extension %0 - ignoring", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_unroll_cuda_value_in_parens, CLASS_WARNING, (unsigned)diag::Severity::Warning, "argument to '#pragma unroll' should not be in parentheses in CUDA C/C++", 144, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_unsupported_action, CLASS_WARNING, (unsigned)diag::Severity::Warning, "known but unsupported action '%1' for '#pragma %0' - ignored", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_unsupported_extension, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unsupported OpenCL extension %0 - ignoring", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_pragma_unused_expected_var, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected '#pragma unused' argument to be a variable name", 278, SFINAE_Suppress, false, false, 4)
-DIAG(warn_semicolon_before_method_body, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "semicolon before method body is ignored", 573, SFINAE_Suppress, false, false, 4)
-DIAG(warn_static_inline_explicit_inst_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '%select{static|inline}0' keyword on explicit template instantiation", 605, SFINAE_Suppress, false, false, 4)
-DIAG(warn_stdc_fenv_access_not_supported, CLASS_WARNING, (unsigned)diag::Severity::Warning, "pragma STDC FENV_ACCESS ON is not supported, ignoring pragma", 683, SFINAE_Suppress, false, false, 4)
+DIAG(warn_omp_extra_tokens_at_eol, CLASS_WARNING, (unsigned)diag::Severity::Warning, "extra tokens at the end of '#pragma omp %0' are ignored", 224, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_align_expected_equal, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected '=' following '#pragma %select{align|options align}0' - ignored", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_align_invalid_option, CLASS_WARNING, (unsigned)diag::Severity::Warning, "invalid alignment option in '#pragma %select{align|options align}0' - ignored", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_begin_end_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "OpenCL extension end directive mismatches begin directive - ignoring", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_comment_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'#pragma comment %0' ignored", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_expected_action_or_r_paren, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected action or ')' in '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_expected_colon, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing ':' after %0 - ignoring", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_expected_colon_r_paren, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing ':' or ')' after %0 - ignoring", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_expected_comma, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected ',' in '#pragma %0'", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_expected_identifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected identifier in '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_expected_init_seg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected 'compiler', 'lib', 'user', or a string literal for the section name in '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_expected_integer, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected integer between %0 and %1 inclusive in '#pragma %2' - ignored", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_expected_lparen, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing '(' after '#pragma %0' - ignoring", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_expected_non_wide_string, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected non-wide string literal in '#pragma %0'", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_expected_predicate, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected %select{'enable', 'disable', 'begin' or 'end'|'disable'}0 - ignoring", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_expected_punc, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected ')' or ',' in '#pragma %0'", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_expected_rparen, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing ')' after '#pragma %0' - ignoring", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_expected_section_label_or_name, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected a stack label or a string literal for the section name in '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_expected_section_name, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected a string literal for the section name in '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_expected_section_push_pop_or_name, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected push, pop or a string literal for the section name in '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_expected_string, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected string literal in '#pragma %0' - ignoring", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_extension_is_core, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "OpenCL extension %0 is core feature or supported optional core feature - ignoring", 528, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_extra_tokens_at_eol, CLASS_WARNING, (unsigned)diag::Severity::Warning, "extra tokens at end of '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_force_cuda_host_device_bad_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "incorrect use of #pragma clang force_cuda_host_device begin|end", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_init_seg_unsupported_target, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'#pragma init_seg' is only supported when targeting a Microsoft environment", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_intrinsic_builtin, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is not a recognized builtin%select{|; consider including <intrin.h> to access non-builtin intrinsics}1", 284, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_invalid_action, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown action for '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_invalid_argument, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unexpected argument '%0' to '#pragma %1'%select{|; expected %3}2", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_invalid_specific_action, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown action '%1' for '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_missing_argument, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing argument to '#pragma %0'%select{|; expected %2}1", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_ms_struct, CLASS_WARNING, (unsigned)diag::Severity::Warning, "incorrect use of '#pragma ms_struct on|off' - ignored", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_omp_ignored, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unexpected '#pragma omp ...' in program", 613, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_optimize, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'#pragma optimize' is not supported", 285, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_options_expected_align, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected 'align' following '#pragma options' - ignored", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_pack_malformed, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected integer or identifier in '#pragma pack' - ignored", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_unknown_extension, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown OpenCL extension %0 - ignoring", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_unroll_cuda_value_in_parens, CLASS_WARNING, (unsigned)diag::Severity::Warning, "argument to '#pragma unroll' should not be in parentheses in CUDA C/C++", 147, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_unsupported_action, CLASS_WARNING, (unsigned)diag::Severity::Warning, "known but unsupported action '%1' for '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_unsupported_extension, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unsupported OpenCL extension %0 - ignoring", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_pragma_unused_expected_var, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected '#pragma unused' argument to be a variable name", 286, SFINAE_Suppress, false, false, 4)
+DIAG(warn_semicolon_before_method_body, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "semicolon before method body is ignored", 585, SFINAE_Suppress, false, false, 4)
+DIAG(warn_static_inline_explicit_inst_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '%select{static|inline}0' keyword on explicit template instantiation", 618, SFINAE_Suppress, false, false, 4)
+DIAG(warn_stdc_fenv_access_not_supported, CLASS_WARNING, (unsigned)diag::Severity::Warning, "pragma STDC FENV_ACCESS ON is not supported, ignoring pragma", 696, SFINAE_Suppress, false, false, 4)
+DIAG(warn_wrong_clang_attr_namespace, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'__clang__' is a predefined macro name, not an attribute scope specifier; did you mean '_Clang' instead?", 282, SFINAE_Suppress, false, false, 4)
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticRefactoring.h b/linux-x64/clang/include/clang/Basic/DiagnosticRefactoring.h
new file mode 100644
index 0000000..aded016
--- /dev/null
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticRefactoring.h
@@ -0,0 +1,28 @@
+//===--- DiagnosticRefactoring.h - ------------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_BASIC_DIAGNOSTICREFACTORING_H
+#define LLVM_CLANG_BASIC_DIAGNOSTICREFACTORING_H
+
+#include "clang/Basic/Diagnostic.h"
+
+namespace clang {
+namespace diag {
+enum {
+#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \
+ SHOWINSYSHEADER, CATEGORY) \
+ ENUM,
+#define REFACTORINGSTART
+#include "clang/Basic/DiagnosticRefactoringKinds.inc"
+#undef DIAG
+ NUM_BUILTIN_REFACTORING_DIAGNOSTICS
+};
+} // end namespace diag
+} // end namespace clang
+
+#endif // LLVM_CLANG_BASIC_DIAGNOSTICREFACTORING_H
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticSema.h b/linux-x64/clang/include/clang/Basic/DiagnosticSema.h
new file mode 100644
index 0000000..72a6b97
--- /dev/null
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticSema.h
@@ -0,0 +1,28 @@
+//===--- DiagnosticSema.h - Diagnostics for libsema -------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_BASIC_DIAGNOSTICSEMA_H
+#define LLVM_CLANG_BASIC_DIAGNOSTICSEMA_H
+
+#include "clang/Basic/Diagnostic.h"
+
+namespace clang {
+namespace diag {
+enum {
+#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \
+ SHOWINSYSHEADER, CATEGORY) \
+ ENUM,
+#define SEMASTART
+#include "clang/Basic/DiagnosticSemaKinds.inc"
+#undef DIAG
+ NUM_BUILTIN_SEMA_DIAGNOSTICS
+};
+} // end namespace diag
+} // end namespace clang
+
+#endif // LLVM_CLANG_BASIC_DIAGNOSTICSEMA_H
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticSemaKinds.inc b/linux-x64/clang/include/clang/Basic/DiagnosticSemaKinds.inc
index 978e345..f7aae16 100644
--- a/linux-x64/clang/include/clang/Basic/DiagnosticSemaKinds.inc
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticSemaKinds.inc
@@ -27,6 +27,7 @@
DIAG(err_addr_ovl_no_viable, CLASS_ERROR, (unsigned)diag::Severity::Error, "address of overloaded function %0 does not match required type %1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_addr_ovl_not_func_ptrref, CLASS_ERROR, (unsigned)diag::Severity::Error, "address of overloaded function %0 cannot be converted to type %1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_address_of_function_with_pass_object_size_params, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot take address of function %0 because parameter %1 has pass_object_size attribute", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_address_space_mismatch_templ_inst, CLASS_ERROR, (unsigned)diag::Severity::Error, "conflicting address space qualifiers are provided between types %0 and %1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_address_space_qualified_delete, CLASS_ERROR, (unsigned)diag::Severity::Error, "'delete' cannot delete objects of type %0 in address space '%1'", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_address_space_qualified_new, CLASS_ERROR, (unsigned)diag::Severity::Error, "'new' cannot allocate objects of type %0 in address space '%1'", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_addrof_function_disabled_by_enable_if_attr, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot take address of function %0 because it has one or more non-tautological enable_if conditions", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -36,7 +37,6 @@
DIAG(err_alias_not_supported_on_nvptx, CLASS_ERROR, (unsigned)diag::Severity::Error, "CUDA does not support aliases", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_alias_template_expansion_into_fixed_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "pack expansion used as argument for non-pack parameter of alias template", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_alias_template_extra_headers, CLASS_ERROR, (unsigned)diag::Severity::Error, "extraneous template parameter list in alias template declaration", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_alias_to_undefined, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{alias|ifunc}0 must point to a defined %select{variable or |}1function", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_align_value_attribute_argument_not_int, CLASS_ERROR, (unsigned)diag::Severity::Error, "'align_value' attribute requires integer constant", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_alignas_attribute_wrong_decl_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute cannot be applied to a %select{function parameter|variable with 'register' storage class|'catch' variable|bit-field}1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_alignas_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "redeclaration has different alignment requirement (%1 vs %0)", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -132,7 +132,7 @@
DIAG(err_array_init_non_constant_array, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot initialize array %diff{of type $ with non-constant array of type $|with different type of array}0,1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_array_init_not_init_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "array initializer must be an initializer list%select{| or string literal| or wide string literal}0", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_array_init_plain_string_into_char8_t, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializing 'char8_t' array with plain string literal", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_array_init_utf8_string_into_char, CLASS_ERROR, (unsigned)diag::Severity::Error, "initialization of char array with UTF-8 string literal is not permitted by '-fchar8_t'", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_array_init_utf8_string_into_char, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{|ISO C++20 does not permit }0initialization of char array with UTF-8 string literal%select{ is not permitted by '-fchar8_t'|}0", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_array_init_wide_string_into_char, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializing char array with wide string literal", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_array_new_needs_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "array size must be specified in new expressions", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_array_of_abstract_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "array of abstract class type %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -159,7 +159,6 @@
DIAG(err_asm_invalid_lvalue_in_output, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid lvalue in asm output", 0, SFINAE_SubstitutionFailure, false, true, 12)
DIAG(err_asm_invalid_output_constraint, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid output constraint '%0' in asm", 0, SFINAE_SubstitutionFailure, false, true, 12)
DIAG(err_asm_invalid_output_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid output size for constraint '%0'", 0, SFINAE_SubstitutionFailure, false, true, 12)
-DIAG(err_asm_invalid_type_in_input, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid type %0 in asm input for constraint '%1'", 0, SFINAE_SubstitutionFailure, false, true, 12)
DIAG(err_asm_naked_parm_ref, CLASS_ERROR, (unsigned)diag::Severity::Error, "parameter references not allowed in naked functions", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_asm_naked_this_ref, CLASS_ERROR, (unsigned)diag::Severity::Error, "'this' pointer references not allowed in naked functions", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_asm_non_addr_value_in_memory_constraint, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference to a %select{bit-field|vector element|global register variable}0 in asm %select{input|output}1 with a memory constraint '%2'", 0, SFINAE_SubstitutionFailure, false, true, 12)
@@ -202,8 +201,8 @@
DIAG(err_attribute_argument_is_zero, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute must be greater than 0", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_attribute_argument_n_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute requires parameter %1 to be %select{int or bool|an integer constant|a string|an identifier}2", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_attribute_argument_out_of_bounds, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute parameter %1 is out of bounds", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_attribute_argument_out_of_range, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute parameter %1 is out of bounds: %plural{0:no parameters to index into|1:can only be 1, since there is one parameter|:must be between 1 and %2}2", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_attribute_argument_outof_range, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute requires integer constant between %1 and %2 inclusive", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_attribute_argument_out_of_bounds_extra_info, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute parameter %1 is out of bounds: %plural{0:no parameters to index into|1:can only be 1, since there is one parameter|:must be between 1 and %2}2", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_attribute_argument_out_of_range, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute requires integer constant between %1 and %2 inclusive", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_attribute_argument_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute requires %select{int or bool|an integer constant|a string|an identifier}1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_attribute_argument_vec_type_hint, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid attribute argument %0 - expecting a vector or vectorizable scalar type", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_attribute_bad_neon_vector_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "Neon vector size must be 64 or 128 bits", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -245,7 +244,6 @@
DIAG(err_attribute_too_few_arguments, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute takes at least %1 argument%s1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_attribute_too_many_arguments, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute takes no more than %1 argument%s1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_attribute_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute is not supported for this target", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_attribute_uuid_malformed_guid, CLASS_ERROR, (unsigned)diag::Severity::Error, "uuid attribute contains a malformed GUID", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_attribute_vecreturn_only_pod_record, CLASS_ERROR, (unsigned)diag::Severity::Error, "the vecreturn attribute can only be used on a POD (plain old data) class or structure (i.e. no virtual functions)", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_attribute_vecreturn_only_vector_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "the vecreturn attribute can only be used on a class or structure with one member, which must be a vector", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_attribute_weak_static, CLASS_ERROR, (unsigned)diag::Severity::Error, "weak declaration cannot have internal linkage", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -343,9 +341,9 @@
DIAG(err_builtin_definition, CLASS_ERROR, (unsigned)diag::Severity::Error, "definition of builtin function %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_builtin_fn_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "builtin functions must be directly called", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_builtin_func_cast_more_than_one_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "function-style cast to a builtin type can only take one argument", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_builtin_launder_invalid_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{non-pointer|function pointer|void pointer}0 argument to '__builtin_launder' is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(err_builtin_longjmp_invalid_val, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument to __builtin_longjmp must be a constant 1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_builtin_longjmp_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "__builtin_longjmp is not supported for the current target", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_builtin_needs_feature, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 needs target feature %1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_builtin_operator_new_delete_not_usual, CLASS_ERROR, (unsigned)diag::Severity::Error, "call to '%select{__builtin_operator_new|__builtin_operator_delete}0' selects non-usual %select{allocation|deallocation}0 function", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_builtin_redeclare, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot redeclare builtin function %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_builtin_requires_language, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' is only available in %1", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -356,6 +354,13 @@
DIAG(err_call_function_incomplete_return, CLASS_ERROR, (unsigned)diag::Severity::Error, "calling %0 with incomplete return type %1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_call_incomplete_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument type %0 is incomplete", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_call_incomplete_return, CLASS_ERROR, (unsigned)diag::Severity::Error, "calling function with incomplete return type %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_callback_attribute_argument_unknown, CLASS_ERROR, (unsigned)diag::Severity::Error, "'callback' attribute argument %0 is not a known function parameter", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_callback_attribute_invalid_callee, CLASS_ERROR, (unsigned)diag::Severity::Error, "'callback' attribute specifies invalid callback callee", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_callback_attribute_multiple, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiple 'callback' attributes specified", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_callback_attribute_no_callee, CLASS_ERROR, (unsigned)diag::Severity::Error, "'callback' attribute specifies no callback callee", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_callback_callee_is_variadic, CLASS_ERROR, (unsigned)diag::Severity::Error, "'callback' attribute callee may not be variadic", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_callback_callee_no_function_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "'callback' attribute callee does not have function type", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_callback_implicit_this_not_available, CLASS_ERROR, (unsigned)diag::Severity::Error, "'callback' argument at position %0 references unavailable implicit 'this'", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_cannot_find_suitable_accessor, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot find suitable %select{getter|setter}0 for property %1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_cannot_form_pointer_to_member_of_reference_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot form a pointer-to-member to member %0 of reference type %1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_cannot_pass_non_trivial_c_struct_to_vararg, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot pass non-trivial C object of type %0 by value to variadic %select{function|block|method|constructor}1", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -409,7 +414,7 @@
DIAG(err_conditional_vector_element_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "vector condition type %0 and result type %1 do not have elements of the same size", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_conditional_vector_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "vector condition type %0 and result type %1 do not have the same number of elements", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_conditional_void_nonvoid, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{left|right}1 operand to ? is void, but %select{right|left}1 operand is of type %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_config_scalar_return, CLASS_ERROR, (unsigned)diag::Severity::Error, "CUDA special function 'cudaConfigureCall' must have scalar return type", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_config_scalar_return, CLASS_ERROR, (unsigned)diag::Severity::Error, "CUDA special function '%0' must have scalar return type", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_conflicting_aliasing_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "conflicting types for alias %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_conflicting_codeseg_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "conflicting code segment specifiers", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_conflicting_ivar_bitwidth, CLASS_ERROR, (unsigned)diag::Severity::Error, "instance variable %0 has conflicting bit-field width", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -488,7 +493,6 @@
DIAG(err_cuda_unattributed_constexpr_cannot_overload_device, CLASS_ERROR, (unsigned)diag::Severity::Error, "constexpr function %0 without __host__ or __device__ attributes cannot overload __device__ function with same signature. Add a __host__ attribute, or build with -fno-cuda-host-device-constexpr.", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_cuda_vla, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot use variable-length arrays in %select{__device__|__global__|__host__|__host__ __device__}0 functions", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_current_module_name_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "module name '%0' specified on command line does not match name of module", 0, SFINAE_SubstitutionFailure, false, true, 13)
-DIAG(err_cyclic_alias, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{alias|ifunc}0 definition is part of a cycle", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_dangling_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{reference|backing array for 'std::initializer_list'}2 %select{|subobject of }1member %0 %select{binds to|is}2 a temporary object whose lifetime would be shorter than the lifetime of the constructed object", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_dealloc_bad_result_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "dealloc return type must be correctly specified as 'void' under ARC, instead of %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_decimal_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "GNU decimal type extension not supported", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -571,6 +575,7 @@
DIAG(err_dependent_tag_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{declaration|definition}0 of %select{struct|interface|union|class|enum}1 in a dependent scope", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_dependent_typed_non_type_arg_in_partial_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template argument specializes a template parameter with dependent type %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_dereference_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "dereference of pointer to incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_designated_init_attr_non_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "'objc_designated_initializer' attribute only applies to init methods of interface or class extension declarations", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_designator_for_scalar_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "designator in initializer for scalar type %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_designator_into_flexible_array_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "designator into flexible array member subobject", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_destroy_attr_on_non_static_var, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{no_destroy|always_destroy}0 attribute can only be applied to a variable with static or thread storage duration", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -605,7 +610,6 @@
DIAG(err_duplicate_class_def, CLASS_ERROR, (unsigned)diag::Severity::Error, "duplicate interface definition for class %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_duplicate_ivar_declaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "instance variable is already declared", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_duplicate_ivar_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "synthesized properties %0 and %1 both claim instance variable %2", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_duplicate_mangled_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "definition with same mangled name '%0' as another definition", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_duplicate_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "duplicate member %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_duplicate_method_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "duplicate declaration of method %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_duplicate_property, CLASS_ERROR, (unsigned)diag::Severity::Error, "property has a previous declaration", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -709,10 +713,10 @@
DIAG(err_format_attribute_requires_variadic, CLASS_ERROR, (unsigned)diag::Severity::Error, "format attribute requires variadic function", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_format_attribute_result_not, CLASS_ERROR, (unsigned)diag::Severity::Error, "function does not return %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_format_strftime_third_parameter, CLASS_ERROR, (unsigned)diag::Severity::Error, "strftime format attribute requires 3rd parameter to be 0", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_fortify_std_lib_bad_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "'fortify_stdlib' attribute applied to an unknown function", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_forward_ref_enum, CLASS_ERROR, (unsigned)diag::Severity::Error, "ISO C++ forbids forward references to 'enum' types", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_forward_superclass, CLASS_ERROR, (unsigned)diag::Severity::Error, "attempting to use the forward class %0 as superclass of %1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_friend_decl_does_not_match, CLASS_ERROR, (unsigned)diag::Severity::Error, "friend declaration of %0 does not match any declaration in %1", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_friend_decl_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' is invalid in friend declarations", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_friend_decl_with_def_arg_must_be_def, CLASS_ERROR, (unsigned)diag::Severity::Error, "friend declaration specifying a default argument must be a definition", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_friend_decl_with_def_arg_redeclared, CLASS_ERROR, (unsigned)diag::Severity::Error, "friend declaration specifying a default argument must be the only declaration", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_friend_def_in_local_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "friend function cannot be defined in a local class", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -720,14 +724,13 @@
DIAG(err_friend_not_first_in_declaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "'friend' must appear first in a non-function declaration", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_func_def_incomplete_result, CLASS_ERROR, (unsigned)diag::Severity::Error, "incomplete result type %0 in function definition", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_func_returning_array_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "function cannot return %select{array|function}0 type %1", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_func_returning_qualified_void, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "function cannot return qualified void type %0", 542, SFINAE_Suppress, false, false, 2)
+DIAG(err_func_returning_qualified_void, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "function cannot return qualified void type %0", 554, SFINAE_Suppress, false, false, 2)
DIAG(err_function_attribute_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "function declared with %0 attribute was previously declared without the %0 attribute", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_function_concept_bool_ret, CLASS_ERROR, (unsigned)diag::Severity::Error, "declared return type of function concept must be 'bool'", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_function_concept_exception_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "function concept cannot have exception specification", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_function_concept_not_defined, CLASS_ERROR, (unsigned)diag::Severity::Error, "function concept declaration must be a definition", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_function_concept_with_params, CLASS_ERROR, (unsigned)diag::Severity::Error, "function concept cannot have any parameters", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_function_marked_override_not_overriding, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 marked 'override' but does not override any member functions", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_function_needs_feature, CLASS_ERROR, (unsigned)diag::Severity::Error, "always_inline function %1 requires target feature '%2', but would be inlined into function %0 that is compiled without support for '%2'", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_function_parameter_pack_without_parameter_packs, CLASS_ERROR, (unsigned)diag::Severity::Error, "type %0 of function parameter pack does not contain any unexpanded parameter packs", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_function_template_partial_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "function template partial specialization is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_function_template_spec_ambiguous, CLASS_ERROR, (unsigned)diag::Severity::Error, "function template specialization %0 ambiguously refers to more than one function template; explicitly specify%select{| additional}1 template arguments to identify a particular function template", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -752,7 +755,6 @@
DIAG(err_ice_too_large, CLASS_ERROR, (unsigned)diag::Severity::Error, "integer constant expression evaluates to value %0 that cannot be represented in a %1-bit %select{signed|unsigned}2 integer type", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_ident_in_dtor_not_a_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "identifier %0 in object destruction expression does not name a type", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_ident_list_in_fn_declaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "a parameter list without types is only allowed in a function definition", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_ifunc_resolver_return, CLASS_ERROR, (unsigned)diag::Severity::Error, "ifunc resolver function must return a pointer", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_illegal_container_subscripting_op, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal operation on Objective-C container subscripting", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_illegal_decl_array_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "array has incomplete element type %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_illegal_decl_array_of_auto, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' declared as array of %1", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -808,7 +810,7 @@
DIAG(err_init_capture_multiple_expressions, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializer for lambda capture %0 contains multiple expressions", 0, SFINAE_SubstitutionFailure, false, true, 3)
DIAG(err_init_capture_no_expression, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializer missing for lambda capture %0", 0, SFINAE_SubstitutionFailure, false, true, 3)
DIAG(err_init_capture_paren_braces, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot deduce type for lambda capture %1 from %select{parenthesized|nested}0 initializer list", 0, SFINAE_SubstitutionFailure, false, true, 3)
-DIAG(err_init_conversion_failed, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot initialize %select{a variable|a parameter|return object|statement expression result|an exception object|a member subobject|an array element|a new value|a value|a base class|a constructor delegation|a vector element|a block element|a block element|a complex element|a lambda capture|a compound literal initializer|a related result|a parameter of CF audited function}0 %diff{of type $ with an %select{rvalue|lvalue}2 of type $|with an %select{rvalue|lvalue}2 of incompatible type}1,3%select{|: different classes%diff{ ($ vs $)|}5,6|: different number of parameters (%5 vs %6)|: type mismatch at %ordinal5 parameter%diff{ ($ vs $)|}6,7|: different return type%diff{ ($ vs $)|}5,6|: different qualifiers (%select{none|const|restrict|const and restrict|volatile|const and volatile|volatile and restrict|const, volatile, and restrict}5 vs %select{none|const|restrict|const and restrict|volatile|const and volatile|volatile and restrict|const, volatile, and restrict}6)|: different exception specifications}4", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_init_conversion_failed, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot initialize %select{a variable|a parameter|return object|statement expression result|an exception object|a member subobject|an array element|a new value|a value|a base class|a constructor delegation|a vector element|a block element|a block element|a complex element|a lambda capture|a compound literal initializer|a related result|a parameter of CF audited function}0 %diff{of type $ with an %select{rvalue|lvalue}2 of type $|with an %select{rvalue|lvalue}2 of incompatible type}1,3%select{|: different classes%diff{ ($ vs $)|}5,6|: different number of parameters (%5 vs %6)|: type mismatch at %ordinal5 parameter%diff{ ($ vs $)|}6,7|: different return type%diff{ ($ vs $)|}5,6|: different qualifiers (%5 vs %6)|: different exception specifications}4", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_init_element_not_constant, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializer element is not a compile-time constant", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_init_for_function_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot create object of function type %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_init_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "initialization of incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -854,7 +856,7 @@
DIAG(err_invalid_declarator_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot define or redeclare %0 here because namespace %1 does not enclose namespace %2", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_invalid_form_pointer_member_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot create a non-constant pointer to member function", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_invalid_incomplete_type_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid use of incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_invalid_member_in_interface, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{data member |non-public member function |static member function |user-declared constructor|user-declared destructor|operator |nested class }0%1 is not permitted within an interface type", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_invalid_mask_type_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "mask type size must be between 1-byte and 8-bytes", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_invalid_member_use_in_static_method, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid use of member %0 in static member function", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_invalid_neon_type_code, CLASS_ERROR, (unsigned)diag::Severity::Error, "incompatible constant for this __builtin_neon function", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_invalid_non_static_member_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid use of non-static data member %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -1067,6 +1069,7 @@
DIAG(err_nonstatic_member_out_of_line, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-static data member defined out-of-line", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_nontemporal_builtin_must_be_pointer, CLASS_ERROR, (unsigned)diag::Severity::Error, "address argument to nontemporal builtin must be a pointer (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_nontemporal_builtin_must_be_pointer_intfltptr_or_vector, CLASS_ERROR, (unsigned)diag::Severity::Error, "address argument to nontemporal builtin must be a pointer to integer, float, pointer, or a vector of such types (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_nontrivial_primitive_type_in_union, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-trivial C types are disallowed in union", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_noreturn_block_has_return_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "block declared 'noreturn' should not return", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_noreturn_lambda_has_return_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "lambda declared 'noreturn' should not return", 0, SFINAE_SubstitutionFailure, false, true, 3)
DIAG(err_noreturn_missing_on_first_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "function declared '[[noreturn]]' after its first declaration", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -1173,9 +1176,12 @@
DIAG(err_omp_bit_fields_forbidden_in_clause, CLASS_ERROR, (unsigned)diag::Severity::Error, "bit fields cannot be used to specify storage in a '%0' clause", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_clause_floating_type_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "arguments of OpenMP clause '%0' with bitwise operators cannot be of floating type", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_clause_not_arithmetic_type_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "arguments of OpenMP clause '%0' for 'min' or 'max' must be of %select{scalar|arithmetic}1 type", 0, SFINAE_SubstitutionFailure, false, true, 11)
-DIAG(err_omp_const_reduction_list_item, CLASS_ERROR, (unsigned)diag::Severity::Error, "const-qualified list item cannot be reduction", 0, SFINAE_SubstitutionFailure, false, true, 11)
+DIAG(err_omp_const_list_item, CLASS_ERROR, (unsigned)diag::Severity::Error, "const-qualified list item cannot be %0", 0, SFINAE_SubstitutionFailure, false, true, 11)
+DIAG(err_omp_const_not_mutable_variable, CLASS_ERROR, (unsigned)diag::Severity::Error, "const-qualified variable without mutable fields cannot be %0", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_const_variable, CLASS_ERROR, (unsigned)diag::Severity::Error, "const-qualified variable cannot be %0", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_critical_with_hint, CLASS_ERROR, (unsigned)diag::Severity::Error, "constructs with the same name must have a 'hint' clause with the same value", 0, SFINAE_SubstitutionFailure, false, true, 11)
+DIAG(err_omp_declare_mapper_redefinition, CLASS_ERROR, (unsigned)diag::Severity::Error, "redefinition of user-defined mapper for type %0 with name %1", 0, SFINAE_SubstitutionFailure, false, true, 11)
+DIAG(err_omp_declare_mapper_wrong_var, CLASS_ERROR, (unsigned)diag::Severity::Error, "only variable %0 is allowed in map clauses of this 'omp declare mapper' directive", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_declare_reduction_redefinition, CLASS_ERROR, (unsigned)diag::Severity::Error, "redefinition of user-defined reduction for type %0", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_declare_target_multiple, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 appears multiple times in clauses on the same declare target directive", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_declare_target_to_and_link, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 must not appear in both clauses 'to' and 'link'", 0, SFINAE_SubstitutionFailure, false, true, 11)
@@ -1184,6 +1190,7 @@
DIAG(err_omp_depend_sink_expected_plus_minus, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '+' or '-' operation", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_depend_sink_source_not_allowed, CLASS_ERROR, (unsigned)diag::Severity::Error, "'depend(%select{source|sink:vec}0)' clause%select{|s}0 cannot be mixed with 'depend(%select{sink:vec|source}0)' clause%select{s|}0", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_depend_sink_unexpected_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected expression: number of expressions is larger than the number of associated loops", 0, SFINAE_SubstitutionFailure, false, true, 11)
+DIAG(err_omp_duplicate_map_type_modifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "same map type modifier has been specified more than once", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_expected_access_to_data_field, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected access to data field", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_expected_addressable_lvalue_or_array_item, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected addressable lvalue expression, array element or array section", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_expected_base_var_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected variable name as a base of the array %select{subscript|section}0", 0, SFINAE_SubstitutionFailure, false, true, 11)
@@ -1203,6 +1210,7 @@
DIAG(err_omp_hint_clause_no_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "the name of the construct must be specified in presence of 'hint' clause", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_in_reduction_not_task_reduction, CLASS_ERROR, (unsigned)diag::Severity::Error, "in_reduction variable must appear in a task_reduction clause", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "expression has incomplete class type %0", 0, SFINAE_SubstitutionFailure, false, true, 11)
+DIAG(err_omp_invalid_map_this_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid 'this' expression on 'map' clause", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_invalid_map_type_for_directive, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{map type '%1' is not allowed|map type must be specified}0 for '#pragma omp %2'", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_invalid_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "'#pragma omp %0' directive must appear only in file scope", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_invalid_target_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 used in declare target directive is not a variable or a function name", 0, SFINAE_SubstitutionFailure, false, true, 11)
@@ -1221,6 +1229,7 @@
DIAG(err_omp_loop_var_dsa, CLASS_ERROR, (unsigned)diag::Severity::Error, "loop iteration variable in the associated loop of 'omp %1' directive may not be %0, predetermined as %2", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_loop_variable_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable must be of integer or %select{pointer|random access iterator}0 type", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_map_shared_storage, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable already marked as mapped in current construct", 0, SFINAE_SubstitutionFailure, false, true, 11)
+DIAG(err_omp_mapper_wrong_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "mapper type must be of struct, union or class type", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_multiple_array_items_in_map_clause, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiple array elements associated with the same variable are not allowed in map clauses of the same construct", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_negative_expression_in_clause, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument to '%0' clause must be a %select{non-negative|strictly positive}1 integer value", 0, SFINAE_SubstitutionFailure, false, true, 11)
DIAG(err_omp_no_clause_for_directive, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected at least one %0 clause for '#pragma omp %1'", 0, SFINAE_SubstitutionFailure, false, true, 11)
@@ -1347,12 +1356,11 @@
DIAG(err_opencl_requires_extension, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of %select{type|declaration}0 %1 requires %2 extension to be enabled", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_opencl_return_value_with_address_space, CLASS_ERROR, (unsigned)diag::Severity::Error, "return value cannot be qualified with address space", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_opencl_scalar_type_rank_greater_than_vector_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "scalar operand type has greater rank than the type of the vector element. (%0 and %1)", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_opencl_sizeof_alignof_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid application of '%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align}0' to a void type", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_opencl_sizeof_alignof_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid application of '%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align|__alignof}0' to a void type", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_opencl_taking_address_capture, CLASS_ERROR, (unsigned)diag::Severity::Error, "taking address of a capture is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_opencl_ternary_with_block, CLASS_ERROR, (unsigned)diag::Severity::Error, "block type cannot be used as expression in ternary expression in OpenCL", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_opencl_type_can_only_be_used_as_function_parameter, CLASS_ERROR, (unsigned)diag::Severity::Error, "type %0 can only be used as a function parameter in OpenCL", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_opencl_type_struct_or_union_field, CLASS_ERROR, (unsigned)diag::Severity::Error, "the %0 type cannot be used to declare a structure or union field", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_opencl_unknown_type_specifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "OpenCL %select{C|C++}0 version %1 does not support the '%2' %select{type qualifier|storage class specifier}3", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_opencl_variadic_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid prototype, variadic arguments are not allowed in OpenCL", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_opencl_vla, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable length arrays are not supported in OpenCL", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_openmp_default_simd_align_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid application of '__builtin_omp_required_simd_align' to an expression, only type is allowed", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -1431,6 +1439,7 @@
DIAG(err_param_default_argument_template_redecl, CLASS_ERROR, (unsigned)diag::Severity::Error, "default arguments cannot be added to a function template that has already been declared", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_param_with_void_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument may not have 'void' type", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_parameter_name_omitted, CLASS_ERROR, (unsigned)diag::Severity::Error, "parameter name omitted", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_parameter_shadow_capture, CLASS_ERROR, (unsigned)diag::Severity::Error, "a lambda parameter cannot shadow an explicitly captured entity", 0, SFINAE_SubstitutionFailure, false, true, 3)
DIAG(err_parameters_retval_cannot_have_fp16_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{parameters|function return value}0 cannot have __fp16 type; did you forget * ?", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_parens_pointer_member_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot parenthesize the name of a method when forming a member pointer", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_partial_spec_args_match_primary_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{class|variable}0 template partial specialization does not specialize any template argument; to %select{declare|define}1 the primary template, remove the template argument list", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -1443,11 +1452,12 @@
DIAG(err_pointer_to_member_oper_value_classify, CLASS_ERROR, (unsigned)diag::Severity::Error, "pointer-to-member function type %0 can only be called on an %select{rvalue|lvalue}1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_pointer_to_member_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid use of pointer to member type after %select{.*|->*}0", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_ppc_builtin_only_on_pwr7, CLASS_ERROR, (unsigned)diag::Severity::Error, "this builtin is only valid on POWER7 or later CPUs", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_pragma_attr_attr_no_push, CLASS_ERROR, (unsigned)diag::Severity::Error, "'#pragma clang attribute' attribute with no matching '#pragma clang attribute push'", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_pragma_attribute_invalid_matchers, CLASS_ERROR, (unsigned)diag::Severity::Error, "attribute %0 can't be applied to %1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_pragma_attribute_matcher_negated_subrule_contradicts_subrule, CLASS_ERROR, (unsigned)diag::Severity::Error, "negated attribute subject matcher sub-rule '%0' contradicts sub-rule '%1'", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_pragma_attribute_matcher_subrule_contradicts_rule, CLASS_ERROR, (unsigned)diag::Severity::Error, "redundant attribute subject matcher sub-rule '%0'; '%1' already matches those declarations", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_pragma_attribute_no_pop_eof, CLASS_ERROR, (unsigned)diag::Severity::Error, "unterminated '#pragma clang attribute push' at end of file", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_pragma_attribute_stack_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "'#pragma clang attribute pop' with no matching '#pragma clang attribute push'", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_pragma_attribute_stack_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "'#pragma clang attribute %select{%1.|}0pop' with no matching '#pragma clang attribute %select{%1.|}0push'", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_pragma_loop_compatibility, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{incompatible|duplicate}0 directives '%1' and '%2'", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_pragma_loop_invalid_argument_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid argument of type %0; expected an integer type", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_pragma_loop_invalid_argument_value, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{invalid value '%0'; must be positive|value '%0' is too large}1", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -1479,7 +1489,7 @@
DIAG(err_pure_friend, CLASS_ERROR, (unsigned)diag::Severity::Error, "friend declaration cannot have a pure-specifier", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_qualified_catch_declarator, CLASS_ERROR, (unsigned)diag::Severity::Error, "exception declarator cannot be qualified", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_qualified_friend_def, CLASS_ERROR, (unsigned)diag::Severity::Error, "friend function definition cannot be qualified with '%0'", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_qualified_friend_not_found, CLASS_ERROR, (unsigned)diag::Severity::Error, "no function named %0 with type %1 was found in the specified scope", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_qualified_friend_no_match, CLASS_ERROR, (unsigned)diag::Severity::Error, "friend declaration of %0 does not match any declaration in %1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_qualified_member_nonclass, CLASS_ERROR, (unsigned)diag::Severity::Error, "qualified member access refers to a member in %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_qualified_member_of_unrelated, CLASS_ERROR, (unsigned)diag::Severity::Error, "%q0 is not a member of class %1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_qualified_objc_access, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{property|instance variable}0 access cannot be qualified with '%1'", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -1513,7 +1523,7 @@
DIAG(err_ref_qualifier_overload, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot overload a member function %select{without a ref-qualifier|with ref-qualifier '&'|with ref-qualifier '&&'}0 with a member function %select{without a ref-qualifier|with ref-qualifier '&'|with ref-qualifier '&&'}1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_ref_vm_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot refer to declaration with a variably modified type inside block", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_reference_bind_drops_quals, CLASS_ERROR, (unsigned)diag::Severity::Error, "binding value %diff{of type $ to reference to type $|to reference}0,1 drops %select{<<ERROR>>|'const'|'restrict'|'const' and 'restrict'|'volatile'|'const' and 'volatile'|'restrict' and 'volatile'|'const', 'restrict', and 'volatile'}2 qualifier%plural{1:|2:|4:|:s}2", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_reference_bind_failed, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference %diff{to type $ could not bind to an %select{rvalue|lvalue}1 of type $|could not bind to %select{rvalue|lvalue}1 of incompatible type}0,2", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_reference_bind_failed, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference %diff{to %select{type|incomplete type}1 $ could not bind to an %select{rvalue|lvalue}2 of type $|could not bind to %select{rvalue|lvalue}2 of incompatible type}0,3", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_reference_bind_init_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference to type %0 cannot bind to an initializer list", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_reference_bind_to_bitfield, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{non-const|volatile}0 reference cannot bind to bit-field%select{| %1}2", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_reference_bind_to_vector_element, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{non-const|volatile}0 reference cannot bind to vector element", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -1555,8 +1565,8 @@
DIAG(err_shift_rhs_only_vector, CLASS_ERROR, (unsigned)diag::Severity::Error, "requested shift is a vector of type %0 but the first operand is not a vector (%1)", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_shufflevector_argument_too_large, CLASS_ERROR, (unsigned)diag::Severity::Error, "index for __builtin_shufflevector must be less than the total number of vector elements", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_shufflevector_nonconstant_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "index for __builtin_shufflevector must be a constant integer", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_sizeof_alignof_function_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid application of '%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align}0' to a function type", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_sizeof_alignof_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid application of '%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align}0' to an incomplete type %1", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_sizeof_alignof_function_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid application of '%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align|__alignof}0' to a function type", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_sizeof_alignof_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid application of '%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align|__alignof}0' to an incomplete type %1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_sizeof_alignof_typeof_bitfield, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid application of '%select{sizeof|alignof|typeof}0' to bit-field", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_sizeof_nonfragile_interface, CLASS_ERROR, (unsigned)diag::Severity::Error, "application of '%select{alignof|sizeof}1' to interface %0 is not supported on this architecture and platform", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_sizeof_pack_no_pack_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 does not refer to the name of a parameter pack", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -1722,6 +1732,7 @@
DIAG(err_typecheck_addrof_dtor, CLASS_ERROR, (unsigned)diag::Severity::Error, "taking the address of a destructor", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_typecheck_addrof_temporary, CLASS_ERROR, (unsigned)diag::Severity::Error, "taking the address of a temporary object of type %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_typecheck_ambiguous_condition, CLASS_ERROR, (unsigned)diag::Severity::Error, "conversion %diff{from $ to $|between types}0,1 is ambiguous", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_typecheck_arc_assign_externally_retained, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable declared with 'objc_externally_retained' cannot be modified in ARC", 0, SFINAE_SubstitutionFailure, false, true, 5)
DIAG(err_typecheck_arc_assign_self, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot assign to 'self' outside of a method in the init family", 0, SFINAE_SubstitutionFailure, false, true, 5)
DIAG(err_typecheck_arc_assign_self_class_method, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot assign to 'self' in a class method", 0, SFINAE_SubstitutionFailure, false, true, 5)
DIAG(err_typecheck_arithmetic_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "arithmetic on a pointer to an incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -1756,7 +1767,7 @@
DIAG(err_typecheck_cond_expect_scalar, CLASS_ERROR, (unsigned)diag::Severity::Error, "used type %0 where arithmetic or pointer type is required", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_typecheck_cond_incompatible_operands, CLASS_ERROR, (unsigned)diag::Severity::Error, "incompatible operand types%diff{ ($ and $)|}0,1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_typecheck_cond_incompatible_operands_null, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-pointer operand type %0 incompatible with %select{NULL|nullptr}1", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_typecheck_convert_incompatible, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{%diff{assigning to $ from incompatible type $|assigning to type from incompatible type}0,1|%diff{passing $ to parameter of incompatible type $|passing type to parameter of incompatible type}0,1|%diff{returning $ from a function with incompatible result type $|returning type from a function with incompatible result type}0,1|%diff{converting $ to incompatible type $|converting type to incompatible type}0,1|%diff{initializing $ with an expression of incompatible type $|initializing type with an expression of incompatible type}0,1|%diff{sending $ to parameter of incompatible type $|sending type to parameter of incompatible type}0,1|%diff{casting $ to incompatible type $|casting type to incompatible type}0,1}2%select{|; dereference with *|; take the address with &|; remove *|; remove &}3%select{|: different classes%diff{ ($ vs $)|}5,6|: different number of parameters (%5 vs %6)|: type mismatch at %ordinal5 parameter%diff{ ($ vs $)|}6,7|: different return type%diff{ ($ vs $)|}5,6|: different qualifiers (%select{none|const|restrict|const and restrict|volatile|const and volatile|volatile and restrict|const, volatile, and restrict}5 vs %select{none|const|restrict|const and restrict|volatile|const and volatile|volatile and restrict|const, volatile, and restrict}6)|: different exception specifications}4", 0, SFINAE_SubstitutionFailure, false, true, 2)
+DIAG(err_typecheck_convert_incompatible, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{%diff{assigning to $ from incompatible type $|assigning to type from incompatible type}0,1|%diff{passing $ to parameter of incompatible type $|passing type to parameter of incompatible type}0,1|%diff{returning $ from a function with incompatible result type $|returning type from a function with incompatible result type}0,1|%diff{converting $ to incompatible type $|converting type to incompatible type}0,1|%diff{initializing $ with an expression of incompatible type $|initializing type with an expression of incompatible type}0,1|%diff{sending $ to parameter of incompatible type $|sending type to parameter of incompatible type}0,1|%diff{casting $ to incompatible type $|casting type to incompatible type}0,1}2%select{|; dereference with *|; take the address with &|; remove *|; remove &}3%select{|: different classes%diff{ ($ vs $)|}5,6|: different number of parameters (%5 vs %6)|: type mismatch at %ordinal5 parameter%diff{ ($ vs $)|}6,7|: different return type%diff{ ($ vs $)|}5,6|: different qualifiers (%5 vs %6)|: different exception specifications}4", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_typecheck_convert_incompatible_block_pointer, CLASS_ERROR, (unsigned)diag::Severity::Error, "incompatible block pointer types %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_typecheck_converted_constant_expression, CLASS_ERROR, (unsigned)diag::Severity::Error, "value of type %0 is not implicitly convertible to %1", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_typecheck_converted_constant_expression_disallowed, CLASS_ERROR, (unsigned)diag::Severity::Error, "conversion from %0 to %1 is not allowed in a converted constant expression", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -1871,7 +1882,6 @@
DIAG(err_use_continuation_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal redeclaration of property in class extension %0 (attribute must be 'readwrite', while its primary must be 'readonly')", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_use_continuation_class_redeclaration_readwrite, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal redeclaration of 'readwrite' property in class extension %0 (perhaps you intended this to be a 'readwrite' redeclaration of a 'readonly' public property?)", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_use_of_default_argument_to_function_declared_later, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of default argument to function %0 that is declared later in class %1", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(err_use_of_tag_name_without_tag, CLASS_ERROR, (unsigned)diag::Severity::Error, "must use '%1' tag to refer to type %0%select{| in this scope}2", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_use_with_wrong_tag, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of %0 with tag type that does not match previous declaration", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_using_decl_can_not_refer_to_class_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "using declaration cannot refer to class member", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(err_using_decl_can_not_refer_to_namespace, CLASS_ERROR, (unsigned)diag::Severity::Error, "using declaration cannot refer to a namespace", 0, SFINAE_SubstitutionFailure, false, true, 2)
@@ -1939,207 +1949,205 @@
DIAG(err_x86_builtin_invalid_scale, CLASS_ERROR, (unsigned)diag::Severity::Error, "scale argument must be 1, 2, 4, or 8", 0, SFINAE_SubstitutionFailure, false, true, 2)
DIAG(error_inoutput_conflict_with_clobber, CLASS_ERROR, (unsigned)diag::Severity::Error, "asm-specifier for input or output variable conflicts with asm clobber list", 0, SFINAE_SubstitutionFailure, false, true, 0)
DIAG(ext_aggregate_init_not_constant, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "initializer for aggregate is not a compile-time constant", 114, SFINAE_Suppress, false, false, 2)
-DIAG(ext_anonymous_record_with_anonymous_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "anonymous types declared in an anonymous %select{struct|union}0 are an extension", 423, SFINAE_Suppress, false, false, 2)
-DIAG(ext_anonymous_record_with_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "types declared in an anonymous %select{struct|union}0 are a Microsoft extension", 363, SFINAE_Suppress, false, false, 2)
-DIAG(ext_anonymous_struct_union_qualified, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "anonymous %select{struct|union}0 cannot be '%1'", 516, SFINAE_Suppress, false, false, 2)
+DIAG(ext_anonymous_record_with_anonymous_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "anonymous types declared in an anonymous %select{struct|union}0 are an extension", 432, SFINAE_Suppress, false, false, 2)
+DIAG(ext_anonymous_record_with_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "types declared in an anonymous %select{struct|union}0 are a Microsoft extension", 372, SFINAE_Suppress, false, false, 2)
+DIAG(ext_anonymous_struct_union_qualified, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "anonymous %select{struct|union}0 cannot be '%1'", 527, SFINAE_Suppress, false, false, 2)
DIAG(ext_anonymous_union, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "anonymous unions are a C11 extension", 112, SFINAE_Suppress, false, false, 2)
-DIAG(ext_array_init_copy, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "initialization of an array %diff{of type $ from a compound literal of type $|from a compound literal}0,1 is a GNU extension", 252, SFINAE_Suppress, false, false, 2)
-DIAG(ext_array_init_parens, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "parenthesized initialization of a member array is a GNU extension", 247, SFINAE_Suppress, false, false, 2)
+DIAG(ext_array_init_copy, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "initialization of an array %diff{of type $ from a compound literal of type $|from a compound literal}0,1 is a GNU extension", 260, SFINAE_Suppress, false, false, 2)
+DIAG(ext_array_init_parens, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "parenthesized initialization of a member array is a GNU extension", 255, SFINAE_Suppress, false, false, 2)
DIAG(ext_array_size_conversion, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "implicit conversion from array size expression of type %0 to %select{integral|enumeration}1 type %2 is a C++11 extension", 79, SFINAE_Suppress, false, false, 2)
DIAG(ext_auto_new_list_init, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C++ standards before C++17 do not allow new expression for type %0 to use list-initialization", 91, SFINAE_Suppress, false, false, 2)
DIAG(ext_auto_type_specifier, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'auto' type specifier is a C++11 extension", 79, SFINAE_Suppress, false, false, 2)
-DIAG(ext_bad_cxx_cast_qualifiers_away_incoherent, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C++ does not allow %select{const_cast|static_cast|reinterpret_cast|dynamic_cast|C-style cast|functional-style cast}0 from %1 to %2 because it casts away qualifiers, even though the source and destination types are unrelated", 119, SFINAE_SubstitutionFailure, false, false, 2)
+DIAG(ext_bad_cxx_cast_qualifiers_away_incoherent, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C++ does not allow %select{const_cast|static_cast|reinterpret_cast|dynamic_cast|C-style cast|functional-style cast}0 from %1 to %2 because it casts away qualifiers, even though the source and destination types are unrelated", 120, SFINAE_SubstitutionFailure, false, false, 2)
DIAG(ext_c11_anonymous_struct, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "anonymous structs are a C11 extension", 112, SFINAE_Suppress, false, false, 2)
DIAG(ext_c99_array_usage, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "%select{qualifier in |static |}0array size %select{||'[*] '}0is a C99 feature", 114, SFINAE_Suppress, false, false, 2)
DIAG(ext_c99_flexible_array_member, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "flexible array members are a C99 feature", 114, SFINAE_Suppress, false, false, 2)
-DIAG(ext_cannot_use_trivial_abi, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'trivial_abi' cannot be applied to %0", 274, SFINAE_Suppress, false, false, 2)
-DIAG(ext_cast_fn_obj, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "cast between pointer-to-function and pointer-to-object is an extension", 516, SFINAE_Suppress, false, false, 2)
+DIAG(ext_cannot_use_trivial_abi, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'trivial_abi' cannot be applied to %0", 282, SFINAE_Suppress, false, false, 2)
+DIAG(ext_cast_fn_obj, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "cast between pointer-to-function and pointer-to-object is an extension", 527, SFINAE_Suppress, false, false, 2)
DIAG(ext_cce_narrowing, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "%select{case value|enumerator value|non-type template argument|array size|constexpr if condition}0 %select{cannot be narrowed from type %2 to %3|evaluates to %2, which cannot be narrowed to type %3}1", 83, SFINAE_SubstitutionFailure, false, false, 2)
-DIAG(ext_complex_component_init, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "complex initialization specifying real and imaginary components is an extension", 128, SFINAE_Suppress, false, false, 2)
+DIAG(ext_complex_component_init, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "complex initialization specifying real and imaginary components is an extension", 129, SFINAE_Suppress, false, false, 2)
DIAG(ext_constexpr_body_invalid_stmt, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of this statement in a constexpr %select{function|constructor}0 is a C++14 extension", 87, SFINAE_Suppress, false, false, 2)
+DIAG(ext_constexpr_body_invalid_stmt_cxx2a, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of this statement in a constexpr %select{function|constructor}0 is a C++2a extension", 98, SFINAE_Suppress, false, false, 2)
DIAG(ext_constexpr_body_multiple_return, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "multiple return statements in constexpr function is a C++14 extension", 87, SFINAE_Suppress, false, false, 2)
-DIAG(ext_constexpr_function_never_constant_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "constexpr %select{function|constructor}0 never produces a constant expression", 327, SFINAE_Suppress, false, false, 2)
+DIAG(ext_constexpr_function_never_constant_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "constexpr %select{function|constructor}0 never produces a constant expression", 336, SFINAE_Suppress, false, false, 2)
+DIAG(ext_constexpr_function_try_block_cxx2a, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "function try block in constexpr %select{function|constructor}0 is a C++2a extension", 98, SFINAE_Suppress, false, false, 2)
DIAG(ext_constexpr_local_var, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "variable declaration in a constexpr %select{function|constructor}0 is a C++14 extension", 87, SFINAE_Suppress, false, false, 2)
DIAG(ext_constexpr_type_definition, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "type definition in a constexpr %select{function|constructor}0 is a C++14 extension", 87, SFINAE_Suppress, false, false, 2)
DIAG(ext_cxx14_attr, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of the %0 attribute is a C++14 extension", 87, SFINAE_Suppress, false, false, 2)
DIAG(ext_cxx17_attr, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of the %0 attribute is a C++17 extension", 91, SFINAE_Suppress, false, false, 2)
DIAG(ext_decomp_decl, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "decomposition declarations are a C++17 extension", 91, SFINAE_Suppress, false, false, 2)
DIAG(ext_decomp_decl_cond, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C++17 does not permit structured binding declaration in a condition", 58, SFINAE_Suppress, false, false, 2)
-DIAG(ext_default_init_const, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "default initialization of an object of const type %0%select{| without a user-provided default constructor}1 is a Microsoft extension", 367, SFINAE_Suppress, false, false, 2)
-DIAG(ext_delete_void_ptr_operand, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "cannot delete expression with pointer-to-'void' type %0", 156, SFINAE_Suppress, false, false, 2)
-DIAG(ext_deprecated_string_literal_conversion, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C++11 does not allow conversion from string literal to %0", 743, SFINAE_SubstitutionFailure, false, false, 2)
+DIAG(ext_default_init_const, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "default initialization of an object of const type %0%select{| without a user-provided default constructor}1 is a Microsoft extension", 376, SFINAE_Suppress, false, false, 2)
+DIAG(ext_delete_void_ptr_operand, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "cannot delete expression with pointer-to-'void' type %0", 161, SFINAE_Suppress, false, false, 2)
+DIAG(ext_deprecated_string_literal_conversion, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C++11 does not allow conversion from string literal to %0", 756, SFINAE_SubstitutionFailure, false, false, 2)
DIAG(ext_designated_init, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "designated initializers are a C99 feature", 114, SFINAE_Suppress, false, false, 2)
-DIAG(ext_duplicate_declspec, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "duplicate '%0' declaration specifier", 187, SFINAE_Suppress, false, false, 2)
-DIAG(ext_dynamic_exception_spec, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "ISO C++17 does not allow dynamic exception specifications", 193, SFINAE_Suppress, false, false, 2)
-DIAG(ext_empty_struct_union, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "empty %select{struct|union}0 is a GNU extension", 256, SFINAE_Suppress, false, false, 2)
+DIAG(ext_empty_struct_union, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "empty %select{struct|union}0 is a GNU extension", 264, SFINAE_Suppress, false, false, 2)
DIAG(ext_enum_friend, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "befriending enumeration type %0 is a C++11 extension", 79, SFINAE_Suppress, false, false, 2)
-DIAG(ext_enum_too_large, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "enumeration values exceed range of largest integer", 204, SFINAE_Suppress, false, false, 2)
-DIAG(ext_enum_value_not_int, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C restricts enumerator values to range of 'int' (%0 is too %select{small|large}1)", 516, SFINAE_Suppress, false, false, 2)
-DIAG(ext_enumerator_increment_too_large, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "incremented enumerator value %0 is not representable in the largest integer type", 204, SFINAE_Suppress, false, false, 2)
-DIAG(ext_enumerator_too_large, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "enumerator value is not representable in the underlying type %0", 372, SFINAE_Suppress, false, false, 2)
+DIAG(ext_enum_too_large, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "enumeration values exceed range of largest integer", 211, SFINAE_Suppress, false, false, 2)
+DIAG(ext_enum_value_not_int, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C restricts enumerator values to range of 'int' (%0 is too %select{small|large}1)", 527, SFINAE_Suppress, false, false, 2)
+DIAG(ext_enumerator_increment_too_large, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "incremented enumerator value %0 is not representable in the largest integer type", 211, SFINAE_Suppress, false, false, 2)
+DIAG(ext_enumerator_too_large, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "enumerator value is not representable in the underlying type %0", 381, SFINAE_Suppress, false, false, 2)
DIAG(ext_equals_this_lambda_capture_cxx2a, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "explicit capture of 'this' with a capture default of '=' is a C++2a extension", 98, SFINAE_Suppress, false, false, 3)
-DIAG(ext_equivalent_internal_linkage_decl_in_modules, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ambiguous use of internal linkage declaration %0 defined in multiple modules", 414, SFINAE_Suppress, false, false, 13)
+DIAG(ext_equivalent_internal_linkage_decl_in_modules, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ambiguous use of internal linkage declaration %0 defined in multiple modules", 423, SFINAE_Suppress, false, false, 13)
DIAG(ext_excess_initializers, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "excess elements in %select{array|vector|scalar|union|struct}0 initializer", 0, SFINAE_Suppress, false, false, 2)
DIAG(ext_excess_initializers_in_char_array_initializer, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "excess elements in char array initializer", 0, SFINAE_Suppress, false, false, 2)
DIAG(ext_explicit_conversion_functions, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "explicit conversion functions are a C++11 extension", 79, SFINAE_Suppress, false, false, 2)
-DIAG(ext_explicit_instantiation_duplicate, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "duplicate explicit instantiation of %0 ignored as a Microsoft extension", 386, SFINAE_Suppress, false, false, 2)
-DIAG(ext_explicit_instantiation_without_qualified_id, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "qualifier in explicit instantiation of %q0 requires a template-id (a typedef is not permitted)", 516, SFINAE_Suppress, false, false, 2)
+DIAG(ext_explicit_instantiation_duplicate, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "duplicate explicit instantiation of %0 ignored as a Microsoft extension", 395, SFINAE_Suppress, false, false, 2)
+DIAG(ext_explicit_instantiation_without_qualified_id, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "qualifier in explicit instantiation of %q0 requires a template-id (a typedef is not permitted)", 527, SFINAE_Suppress, false, false, 2)
DIAG(ext_explicit_specialization_storage_class, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "explicit specialization cannot have a storage class", 0, SFINAE_Suppress, false, false, 2)
-DIAG(ext_expr_not_ice, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "expression is not an %select{integer|integral}0 constant expression; folding it to a constant is a GNU extension", 259, SFINAE_Suppress, false, false, 2)
-DIAG(ext_flexible_array_empty_aggregate_gnu, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "flexible array member %0 in otherwise empty %select{struct|interface|union|class|enum}1 is a GNU extension", 256, SFINAE_Suppress, false, false, 2)
-DIAG(ext_flexible_array_empty_aggregate_ms, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "flexible array member %0 in otherwise empty %select{struct|interface|union|class|enum}1 is a Microsoft extension", 378, SFINAE_Suppress, false, false, 2)
-DIAG(ext_flexible_array_in_array, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "%0 may not be used as an array element due to flexible array member", 220, SFINAE_Suppress, false, false, 2)
-DIAG(ext_flexible_array_in_struct, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "%0 may not be nested in a struct due to flexible array member", 220, SFINAE_Suppress, false, false, 2)
-DIAG(ext_flexible_array_init, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "flexible array initialization is a GNU extension", 257, SFINAE_Suppress, false, false, 2)
-DIAG(ext_flexible_array_union_gnu, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "flexible array member %0 in a union is a GNU extension", 258, SFINAE_Suppress, false, false, 2)
-DIAG(ext_flexible_array_union_ms, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "flexible array member %0 in a union is a Microsoft extension", 378, SFINAE_Suppress, false, false, 2)
+DIAG(ext_expr_not_ice, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "expression is not an %select{integer|integral}0 constant expression; folding it to a constant is a GNU extension", 267, SFINAE_Suppress, false, false, 2)
+DIAG(ext_flexible_array_empty_aggregate_gnu, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "flexible array member %0 in otherwise empty %select{struct|interface|union|class|enum}1 is a GNU extension", 264, SFINAE_Suppress, false, false, 2)
+DIAG(ext_flexible_array_empty_aggregate_ms, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "flexible array member %0 in otherwise empty %select{struct|interface|union|class|enum}1 is a Microsoft extension", 387, SFINAE_Suppress, false, false, 2)
+DIAG(ext_flexible_array_in_array, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "%0 may not be used as an array element due to flexible array member", 228, SFINAE_Suppress, false, false, 2)
+DIAG(ext_flexible_array_in_struct, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "%0 may not be nested in a struct due to flexible array member", 228, SFINAE_Suppress, false, false, 2)
+DIAG(ext_flexible_array_init, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "flexible array initialization is a GNU extension", 265, SFINAE_Suppress, false, false, 2)
+DIAG(ext_flexible_array_union_gnu, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "flexible array member %0 in a union is a GNU extension", 266, SFINAE_Suppress, false, false, 2)
+DIAG(ext_flexible_array_union_ms, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "flexible array member %0 in a union is a Microsoft extension", 387, SFINAE_Suppress, false, false, 2)
DIAG(ext_for_range_begin_end_types_differ, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'begin' and 'end' returning different types (%0 and %1) is a C++17 extension", 91, SFINAE_Suppress, false, false, 2)
-DIAG(ext_forward_ref_enum, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C forbids forward references to 'enum' types", 516, SFINAE_Suppress, false, false, 2)
-DIAG(ext_forward_ref_enum_def, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "redeclaration of already-defined enum %0 is a GNU extension", 263, SFINAE_Suppress, false, false, 2)
-DIAG(ext_found_via_dependent_bases_lookup, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of identifier %0 found via unqualified lookup into dependent bases of class templates is a Microsoft extension", 386, SFINAE_Suppress, false, false, 2)
-DIAG(ext_freestanding_complex, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "complex numbers are an extension in a freestanding C99 implementation", 516, SFINAE_Suppress, false, false, 2)
-DIAG(ext_friend_tag_redecl_outside_namespace, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "unqualified friend declaration referring to type outside of the nearest enclosing namespace is a Microsoft extension; add a nested name specifier", 388, SFINAE_Suppress, false, false, 2)
-DIAG(ext_gnu_anonymous_struct, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "anonymous structs are a GNU extension", 246, SFINAE_Suppress, false, false, 2)
-DIAG(ext_gnu_ptr_func_arith, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "arithmetic on%select{ a|}0 pointer%select{|s}0 to%select{ the|}2 function type%select{|s}2 %1%select{| and %3}2 is a GNU extension", 519, SFINAE_Suppress, false, false, 2)
-DIAG(ext_gnu_subscript_void_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "subscript of a pointer to void is a GNU extension", 519, SFINAE_Suppress, false, false, 2)
-DIAG(ext_gnu_void_ptr, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "arithmetic on%select{ a|}0 pointer%select{|s}0 to void is a GNU extension", 519, SFINAE_Suppress, false, false, 2)
-DIAG(ext_goto_into_protected_scope, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "jump from this goto statement to its label is a Microsoft extension", 379, SFINAE_Suppress, false, false, 2)
-DIAG(ext_imaginary_constant, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "imaginary constants are a GNU extension", 260, SFINAE_Suppress, false, false, 2)
-DIAG(ext_implicit_exception_spec_mismatch, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "function previously declared with an %select{explicit|implicit}0 exception specification redeclared with an %select{implicit|explicit}0 exception specification", 283, SFINAE_Suppress, false, false, 2)
-DIAG(ext_implicit_function_decl, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "implicit declaration of function %0 is invalid in C99", 287, SFINAE_Suppress, false, false, 2)
-DIAG(ext_implicit_lib_function_decl, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "implicitly declaring library function '%0' with type %1", 287, SFINAE_Suppress, false, false, 2)
-DIAG(ext_in_class_initializer_float_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "in-class initializer for static data member of type %0 is a GNU extension", 265, SFINAE_Suppress, false, false, 2)
-DIAG(ext_in_class_initializer_float_type_cxx11, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "in-class initializer for static data member of type %0 requires 'constexpr' specifier", 603, SFINAE_Suppress, false, false, 2)
-DIAG(ext_in_class_initializer_non_constant, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "in-class initializer for static data member is not a constant expression; folding it to a constant is a GNU extension", 259, SFINAE_Suppress, false, false, 2)
-DIAG(ext_incomplete_in_exception_spec, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%select{|pointer to |reference to }0incomplete type %1 is not allowed in exception specification", 373, SFINAE_Suppress, false, false, 2)
-DIAG(ext_increment_bool, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "ISO C++17 does not allow incrementing expression of type bool", 312, SFINAE_Suppress, false, false, 2)
+DIAG(ext_forward_ref_enum, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C forbids forward references to 'enum' types", 527, SFINAE_Suppress, false, false, 2)
+DIAG(ext_forward_ref_enum_def, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "redeclaration of already-defined enum %0 is a GNU extension", 271, SFINAE_Suppress, false, false, 2)
+DIAG(ext_found_via_dependent_bases_lookup, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of identifier %0 found via unqualified lookup into dependent bases of class templates is a Microsoft extension", 395, SFINAE_Suppress, false, false, 2)
+DIAG(ext_freestanding_complex, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "complex numbers are an extension in a freestanding C99 implementation", 527, SFINAE_Suppress, false, false, 2)
+DIAG(ext_friend_tag_redecl_outside_namespace, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "unqualified friend declaration referring to type outside of the nearest enclosing namespace is a Microsoft extension; add a nested name specifier", 397, SFINAE_Suppress, false, false, 2)
+DIAG(ext_gnu_anonymous_struct, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "anonymous structs are a GNU extension", 254, SFINAE_Suppress, false, false, 2)
+DIAG(ext_gnu_ptr_func_arith, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "arithmetic on%select{ a|}0 pointer%select{|s}0 to%select{ the|}2 function type%select{|s}2 %1%select{| and %3}2 is a GNU extension", 530, SFINAE_Suppress, false, false, 2)
+DIAG(ext_gnu_subscript_void_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "subscript of a pointer to void is a GNU extension", 530, SFINAE_Suppress, false, false, 2)
+DIAG(ext_gnu_void_ptr, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "arithmetic on%select{ a|}0 pointer%select{|s}0 to void is a GNU extension", 530, SFINAE_Suppress, false, false, 2)
+DIAG(ext_goto_into_protected_scope, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "jump from this goto statement to its label is a Microsoft extension", 388, SFINAE_Suppress, false, false, 2)
+DIAG(ext_imaginary_constant, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "imaginary constants are a GNU extension", 268, SFINAE_Suppress, false, false, 2)
+DIAG(ext_implicit_exception_spec_mismatch, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "function previously declared with an %select{explicit|implicit}0 exception specification redeclared with an %select{implicit|explicit}0 exception specification", 291, SFINAE_Suppress, false, false, 2)
+DIAG(ext_implicit_function_decl, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "implicit declaration of function %0 is invalid in C99", 296, SFINAE_Suppress, false, false, 2)
+DIAG(ext_implicit_lib_function_decl, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "implicitly declaring library function '%0' with type %1", 296, SFINAE_Suppress, false, false, 2)
+DIAG(ext_in_class_initializer_float_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "in-class initializer for static data member of type %0 is a GNU extension", 273, SFINAE_Suppress, false, false, 2)
+DIAG(ext_in_class_initializer_float_type_cxx11, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "in-class initializer for static data member of type %0 requires 'constexpr' specifier", 616, SFINAE_Suppress, false, false, 2)
+DIAG(ext_in_class_initializer_non_constant, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "in-class initializer for static data member is not a constant expression; folding it to a constant is a GNU extension", 267, SFINAE_Suppress, false, false, 2)
+DIAG(ext_incomplete_in_exception_spec, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%select{|pointer to |reference to }0incomplete type %1 is not allowed in exception specification", 382, SFINAE_Suppress, false, false, 2)
+DIAG(ext_increment_bool, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "ISO C++17 does not allow incrementing expression of type bool", 321, SFINAE_Suppress, false, false, 2)
DIAG(ext_init_capture, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "initialized lambda captures are a C++14 extension", 87, SFINAE_Suppress, false, false, 3)
DIAG(ext_init_list_constant_narrowing, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "constant expression evaluates to %0 which cannot be narrowed to type %1", 83, SFINAE_SubstitutionFailure, false, false, 2)
DIAG(ext_init_list_type_narrowing, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "type %0 cannot be narrowed to %1 in initializer list", 83, SFINAE_SubstitutionFailure, false, false, 2)
DIAG(ext_init_list_variable_narrowing, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "non-constant-expression cannot be narrowed from type %0 to %1 in initializer list", 83, SFINAE_SubstitutionFailure, false, false, 2)
DIAG(ext_initializer_string_for_char_array_too_long, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "initializer-string for char array is too long", 0, SFINAE_Suppress, false, false, 2)
DIAG(ext_inline_variable, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "inline variables are a C++17 extension", 91, SFINAE_Suppress, false, false, 2)
-DIAG(ext_integer_complement_complex, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C does not support '~' for complex conjugation of %0", 516, SFINAE_Suppress, false, false, 2)
-DIAG(ext_integer_complex, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "complex integer types are a GNU extension", 251, SFINAE_Suppress, false, false, 2)
-DIAG(ext_integer_increment_complex, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C does not support '++'/'--' on complex integer type %0", 516, SFINAE_Suppress, false, false, 2)
-DIAG(ext_internal_in_extern_inline, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "static %select{function|variable}0 %1 is used in an inline function with external linkage", 604, SFINAE_Suppress, false, false, 2)
-DIAG(ext_internal_in_extern_inline_quiet, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "static %select{function|variable}0 %1 is used in an inline function with external linkage", 604, SFINAE_Suppress, false, false, 2)
-DIAG(ext_invalid_sign_spec, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'%0' cannot be signed or unsigned", 516, SFINAE_Suppress, false, false, 2)
-DIAG(ext_main_returns_nonint, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "return type of 'main' is not 'int'", 355, SFINAE_Suppress, false, false, 2)
-DIAG(ext_main_used, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C++ does not allow 'main' to be used by a program", 354, SFINAE_Suppress, false, false, 2)
-DIAG(ext_many_braces_around_scalar_init, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "too many braces around scalar initializer", 357, SFINAE_Suppress, false, false, 2)
-DIAG(ext_member_redeclared, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "class member cannot be redeclared", 548, SFINAE_Suppress, false, false, 2)
-DIAG(ext_mismatched_exception_spec, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "exception specification in declaration does not match previous declaration", 373, SFINAE_Suppress, false, false, 2)
-DIAG(ext_mismatched_exception_spec_explicit_instantiation, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "exception specification in explicit instantiation does not match instantiated one", 373, SFINAE_Suppress, false, false, 2)
+DIAG(ext_integer_complement_complex, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C does not support '~' for complex conjugation of %0", 527, SFINAE_Suppress, false, false, 2)
+DIAG(ext_integer_complex, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "complex integer types are a GNU extension", 259, SFINAE_Suppress, false, false, 2)
+DIAG(ext_integer_increment_complex, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C does not support '++'/'--' on complex integer type %0", 527, SFINAE_Suppress, false, false, 2)
+DIAG(ext_internal_in_extern_inline, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "static %select{function|variable}0 %1 is used in an inline function with external linkage", 617, SFINAE_Suppress, false, false, 2)
+DIAG(ext_internal_in_extern_inline_quiet, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "static %select{function|variable}0 %1 is used in an inline function with external linkage", 617, SFINAE_Suppress, false, false, 2)
+DIAG(ext_invalid_sign_spec, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'%0' cannot be signed or unsigned", 527, SFINAE_Suppress, false, false, 2)
+DIAG(ext_main_returns_nonint, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "return type of 'main' is not 'int'", 364, SFINAE_Suppress, false, false, 2)
+DIAG(ext_main_used, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C++ does not allow 'main' to be used by a program", 363, SFINAE_Suppress, false, false, 2)
+DIAG(ext_many_braces_around_scalar_init, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "too many braces around scalar initializer", 366, SFINAE_SubstitutionFailure, false, false, 2)
+DIAG(ext_member_redeclared, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "class member cannot be redeclared", 560, SFINAE_Suppress, false, false, 2)
+DIAG(ext_mismatched_exception_spec, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "exception specification in declaration does not match previous declaration", 382, SFINAE_Suppress, false, false, 2)
+DIAG(ext_mismatched_exception_spec_explicit_instantiation, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "exception specification in explicit instantiation does not match instantiated one", 382, SFINAE_Suppress, false, false, 2)
DIAG(ext_missing_declspec, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "declaration specifier missing, defaulting to 'int'", 0, SFINAE_Suppress, false, false, 2)
-DIAG(ext_missing_exception_specification, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%0 is missing exception specification '%1'", 397, SFINAE_Suppress, false, false, 2)
-DIAG(ext_missing_type_specifier, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "type specifier missing, defaults to 'int'", 288, SFINAE_Suppress, false, false, 2)
-DIAG(ext_mixed_decls_code, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C90 forbids mixing declarations and code", 153, SFINAE_Suppress, false, false, 2)
-DIAG(ext_module_import_in_extern_c, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "import of C++ module '%0' appears within extern \"C\" language linkage specification", 413, SFINAE_Suppress, false, false, 13)
-DIAG(ext_module_import_not_at_top_level_noop, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "redundant #include of module '%0' appears within %1", 415, SFINAE_Suppress, false, false, 13)
-DIAG(ext_ms_ambiguous_direct_base, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "accessing inaccessible direct base %0 of %1 is a Microsoft extension", 380, SFINAE_Suppress, false, false, 2)
-DIAG(ext_ms_anonymous_record, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "anonymous %select{structs|unions}0 are a Microsoft extension", 363, SFINAE_Suppress, false, false, 2)
-DIAG(ext_ms_cast_fn_obj, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "static_cast between pointer-to-function and pointer-to-object is a Microsoft extension", 364, SFINAE_Suppress, false, false, 2)
-DIAG(ext_ms_delayed_template_argument, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "using the undeclared type %0 as a default template argument is a Microsoft extension", 386, SFINAE_Suppress, false, false, 2)
-DIAG(ext_ms_deref_template_argument, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "non-type template argument containing a dereference operation is a Microsoft extension", 386, SFINAE_Suppress, false, false, 2)
-DIAG(ext_ms_explicit_constructor_call, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "explicit constructor calls are a Microsoft extension", 375, SFINAE_Suppress, false, false, 2)
-DIAG(ext_ms_forward_ref_enum, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "forward references to 'enum' types are a Microsoft extension", 371, SFINAE_Suppress, false, false, 2)
-DIAG(ext_ms_impcast_fn_obj, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "implicit conversion between pointer-to-function and pointer-to-object is a Microsoft extension", 364, SFINAE_Suppress, false, false, 2)
-DIAG(ext_ms_missing_exception_specification, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%0 is missing exception specification '%1'", 373, SFINAE_Suppress, false, false, 2)
-DIAG(ext_ms_template_spec_redecl_out_of_scope, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%select{class template|class template partial|variable template|variable template partial|function template|member function|static data member|member class|member enumeration}0 specialization of %1 not in %select{a namespace enclosing %2|class %2 or an enclosing namespace}3 is a Microsoft extension", 386, SFINAE_Suppress, false, false, 2)
-DIAG(ext_ms_template_type_arg_missing_typename, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "template argument for template type parameter must be a type; omitted 'typename' is a Microsoft extension", 386, SFINAE_Suppress, false, false, 2)
-DIAG(ext_ms_using_declaration_inaccessible, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "using declaration referring to inaccessible member '%0' (which refers to accessible member '%1') is a Microsoft compatibility extension", 389, SFINAE_AccessControl, false, false, 2)
-DIAG(ext_mutable_reference, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'mutable' on a reference type is a Microsoft extension", 382, SFINAE_Suppress, false, false, 2)
+DIAG(ext_missing_exception_specification, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%0 is missing exception specification '%1'", 406, SFINAE_Suppress, false, false, 2)
+DIAG(ext_missing_type_specifier, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "type specifier missing, defaults to 'int'", 297, SFINAE_Suppress, false, false, 2)
+DIAG(ext_mixed_decls_code, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C90 forbids mixing declarations and code", 157, SFINAE_Suppress, false, false, 2)
+DIAG(ext_module_import_in_extern_c, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "import of C++ module '%0' appears within extern \"C\" language linkage specification", 422, SFINAE_Suppress, false, false, 13)
+DIAG(ext_module_import_not_at_top_level_noop, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "redundant #include of module '%0' appears within %1", 424, SFINAE_Suppress, false, false, 13)
+DIAG(ext_ms_ambiguous_direct_base, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "accessing inaccessible direct base %0 of %1 is a Microsoft extension", 389, SFINAE_Suppress, false, false, 2)
+DIAG(ext_ms_anonymous_record, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "anonymous %select{structs|unions}0 are a Microsoft extension", 372, SFINAE_Suppress, false, false, 2)
+DIAG(ext_ms_cast_fn_obj, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "static_cast between pointer-to-function and pointer-to-object is a Microsoft extension", 373, SFINAE_Suppress, false, false, 2)
+DIAG(ext_ms_delayed_template_argument, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "using the undeclared type %0 as a default template argument is a Microsoft extension", 395, SFINAE_Suppress, false, false, 2)
+DIAG(ext_ms_deref_template_argument, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "non-type template argument containing a dereference operation is a Microsoft extension", 395, SFINAE_Suppress, false, false, 2)
+DIAG(ext_ms_explicit_constructor_call, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "explicit constructor calls are a Microsoft extension", 384, SFINAE_Suppress, false, false, 2)
+DIAG(ext_ms_forward_ref_enum, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "forward references to 'enum' types are a Microsoft extension", 380, SFINAE_Suppress, false, false, 2)
+DIAG(ext_ms_impcast_fn_obj, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "implicit conversion between pointer-to-function and pointer-to-object is a Microsoft extension", 373, SFINAE_Suppress, false, false, 2)
+DIAG(ext_ms_missing_exception_specification, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%0 is missing exception specification '%1'", 382, SFINAE_Suppress, false, false, 2)
+DIAG(ext_ms_template_spec_redecl_out_of_scope, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%select{class template|class template partial|variable template|variable template partial|function template|member function|static data member|member class|member enumeration}0 specialization of %1 not in %select{a namespace enclosing %2|class %2 or an enclosing namespace}3 is a Microsoft extension", 395, SFINAE_Suppress, false, false, 2)
+DIAG(ext_ms_template_type_arg_missing_typename, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "template argument for template type parameter must be a type; omitted 'typename' is a Microsoft extension", 395, SFINAE_Suppress, false, false, 2)
+DIAG(ext_ms_using_declaration_inaccessible, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "using declaration referring to inaccessible member '%0' (which refers to accessible member '%1') is a Microsoft compatibility extension", 398, SFINAE_AccessControl, false, false, 2)
+DIAG(ext_mutable_reference, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'mutable' on a reference type is a Microsoft extension", 391, SFINAE_Suppress, false, false, 2)
DIAG(ext_nested_name_member_ref_lookup_ambiguous, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "lookup of %0 in member access expression is ambiguous; using member of %1", 20, SFINAE_Suppress, false, false, 2)
DIAG(ext_nested_name_spec_is_enum, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of enumeration in a nested name specifier is a C++11 extension", 79, SFINAE_Suppress, false, false, 2)
-DIAG(ext_nested_pointer_qualifier_mismatch, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2 discards qualifiers in nested pointer types", 302, SFINAE_Suppress, false, false, 2)
+DIAG(ext_nested_pointer_qualifier_mismatch, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2 discards qualifiers in nested pointer types", 311, SFINAE_Suppress, false, false, 2)
DIAG(ext_new_paren_array_nonconst, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "when type is in parentheses, array cannot have dynamic size", 0, SFINAE_Suppress, false, false, 2)
-DIAG(ext_no_declarators, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "declaration does not declare anything", 396, SFINAE_Suppress, false, false, 2)
-DIAG(ext_no_named_members_in_struct_union, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "%select{struct|union}0 without named members is a GNU extension", 256, SFINAE_Suppress, false, false, 2)
+DIAG(ext_no_declarators, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "declaration does not declare anything", 405, SFINAE_Suppress, false, false, 2)
+DIAG(ext_no_named_members_in_struct_union, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "%select{struct|union}0 without named members is a GNU extension", 264, SFINAE_Suppress, false, false, 2)
DIAG(ext_nonclass_type_friend, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "non-class friend type %0 is a C++11 extension", 79, SFINAE_Suppress, false, false, 2)
-DIAG(ext_noreturn_main, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'main' is not allowed to be declared _Noreturn", 354, SFINAE_Suppress, false, false, 2)
-DIAG(ext_offsetof_non_pod_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "offset of on non-POD type %0", 332, SFINAE_Suppress, false, false, 2)
-DIAG(ext_offsetof_non_standardlayout_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "offset of on non-standard-layout type %0", 332, SFINAE_Suppress, false, false, 2)
-DIAG(ext_omp_loop_not_canonical_init, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "initialization clause of OpenMP for loop is not in canonical form ('var = init' or 'T var = init')", 492, SFINAE_Suppress, false, false, 11)
-DIAG(ext_opencl_ext_vector_type_rgba_selector, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "vector component name '%0' is an OpenCL version 2.2 feature", 490, SFINAE_Suppress, false, false, 2)
-DIAG(ext_operator_new_delete_declared_inline, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "replacement function %0 cannot be declared 'inline'", 319, SFINAE_Suppress, false, false, 2)
-DIAG(ext_out_of_line_declaration, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "out-of-line declaration of a member must be a definition", 496, SFINAE_Suppress, false, false, 2)
-DIAG(ext_out_of_line_qualified_id_type_names_constructor, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C++ specifies that qualified reference to %0 is a constructor name rather than a %select{template name|type}1 in this context, despite preceding %select{'typename'|'template'}2 keyword", 316, SFINAE_SubstitutionFailure, false, false, 2)
-DIAG(ext_override_exception_spec, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "exception specification of overriding function is more lax than base version", 373, SFINAE_Suppress, false, false, 2)
-DIAG(ext_param_default_argument_redefinition, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "redefinition of default argument", 369, SFINAE_Suppress, false, false, 2)
-DIAG(ext_param_not_declared, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "parameter %0 was not declared, defaulting to type 'int'", 516, SFINAE_Suppress, false, false, 2)
-DIAG(ext_param_promoted_not_compatible_with_prototype, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%diff{promoted type $ of K&R function parameter is not compatible with the parameter type $|promoted type of K&R function parameter is not compatible with parameter type}0,1 declared in a previous prototype", 342, SFINAE_Suppress, false, false, 2)
-DIAG(ext_partial_spec_not_more_specialized_than_primary, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "%select{class|variable}0 template partial specialization is not more specialized than the primary template", 334, SFINAE_Suppress, false, false, 2)
-DIAG(ext_partial_specs_not_deducible, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "%select{class|variable}0 template partial specialization contains %select{a template parameter|template parameters}1 that cannot be deduced; this partial specialization will never be used", 704, SFINAE_Suppress, false, false, 2)
+DIAG(ext_noreturn_main, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'main' is not allowed to be declared _Noreturn", 363, SFINAE_Suppress, false, false, 2)
+DIAG(ext_offsetof_non_pod_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "offset of on non-POD type %0", 341, SFINAE_Suppress, false, false, 2)
+DIAG(ext_offsetof_non_standardlayout_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "offset of on non-standard-layout type %0", 341, SFINAE_Suppress, false, false, 2)
+DIAG(ext_omp_loop_not_canonical_init, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "initialization clause of OpenMP for loop is not in canonical form ('var = init' or 'T var = init')", 502, SFINAE_Suppress, false, false, 11)
+DIAG(ext_opencl_ext_vector_type_rgba_selector, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "vector component name '%0' is an OpenCL version 2.2 feature", 500, SFINAE_Suppress, false, false, 2)
+DIAG(ext_operator_new_delete_declared_inline, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "replacement function %0 cannot be declared 'inline'", 328, SFINAE_Suppress, false, false, 2)
+DIAG(ext_out_of_line_declaration, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "out-of-line declaration of a member must be a definition", 506, SFINAE_Suppress, false, false, 2)
+DIAG(ext_out_of_line_qualified_id_type_names_constructor, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C++ specifies that qualified reference to %0 is a constructor name rather than a %select{template name|type}1 in this context, despite preceding %select{'typename'|'template'}2 keyword", 325, SFINAE_SubstitutionFailure, false, false, 2)
+DIAG(ext_override_exception_spec, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "exception specification of overriding function is more lax than base version", 382, SFINAE_Suppress, false, false, 2)
+DIAG(ext_param_default_argument_redefinition, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "redefinition of default argument", 378, SFINAE_Suppress, false, false, 2)
+DIAG(ext_param_not_declared, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "parameter %0 was not declared, defaulting to type 'int'", 527, SFINAE_Suppress, false, false, 2)
+DIAG(ext_param_promoted_not_compatible_with_prototype, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%diff{promoted type $ of K&R function parameter is not compatible with the parameter type $|promoted type of K&R function parameter is not compatible with parameter type}0,1 declared in a previous prototype", 351, SFINAE_Suppress, false, false, 2)
+DIAG(ext_partial_spec_not_more_specialized_than_primary, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "%select{class|variable}0 template partial specialization is not more specialized than the primary template", 343, SFINAE_Suppress, false, false, 2)
+DIAG(ext_partial_specs_not_deducible, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "%select{class|variable}0 template partial specialization contains %select{a template parameter|template parameters}1 that cannot be deduced; this partial specialization will never be used", 717, SFINAE_Suppress, false, false, 2)
DIAG(ext_plain_complex, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "plain '_Complex' requires a type specifier; assuming '_Complex double'", 0, SFINAE_Suppress, false, false, 2)
DIAG(ext_pointer_to_const_ref_member_on_rvalue, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "invoking a pointer to a 'const &' member function on an rvalue is a C++2a extension", 98, SFINAE_SubstitutionFailure, false, false, 2)
-DIAG(ext_predef_outside_function, CLASS_WARNING, (unsigned)diag::Severity::Warning, "predefined identifier is only valid inside function", 531, SFINAE_Suppress, false, false, 2)
-DIAG(ext_pseudo_dtor_on_void, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pseudo-destructors on type void are a Microsoft extension", 390, SFINAE_Suppress, false, false, 2)
-DIAG(ext_pure_function_definition, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "function definition with pure-specifier is a Microsoft extension", 383, SFINAE_Suppress, false, false, 2)
-DIAG(ext_redefinition_of_typedef, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "redefinition of typedef %0 is a C11 feature", 659, SFINAE_Suppress, false, false, 2)
-DIAG(ext_register_storage_class, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "ISO C++17 does not allow 'register' storage class specifier", 552, SFINAE_Suppress, false, false, 2)
-DIAG(ext_retained_language_linkage, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "friend function %0 retaining previous language linkage is an extension", 559, SFINAE_Suppress, false, false, 2)
-DIAG(ext_return_has_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "%select{void function|void method|constructor|destructor}1 %0 should not return a value", 563, SFINAE_Suppress, false, false, 2)
-DIAG(ext_return_has_void_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "void %select{function|method|block}1 %0 should not return void expression", 516, SFINAE_Suppress, false, false, 2)
-DIAG(ext_return_missing_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "non-void %select{function|method}1 %0 should return a value", 563, SFINAE_Suppress, false, false, 2)
+DIAG(ext_predef_outside_function, CLASS_WARNING, (unsigned)diag::Severity::Warning, "predefined identifier is only valid inside function", 543, SFINAE_Suppress, false, false, 2)
+DIAG(ext_pseudo_dtor_on_void, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pseudo-destructors on type void are a Microsoft extension", 399, SFINAE_Suppress, false, false, 2)
+DIAG(ext_pure_function_definition, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "function definition with pure-specifier is a Microsoft extension", 392, SFINAE_Suppress, false, false, 2)
+DIAG(ext_redefinition_of_typedef, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "redefinition of typedef %0 is a C11 feature", 672, SFINAE_Suppress, false, false, 2)
+DIAG(ext_register_storage_class, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "ISO C++17 does not allow 'register' storage class specifier", 564, SFINAE_Suppress, false, false, 2)
+DIAG(ext_retained_language_linkage, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "friend function %0 retaining previous language linkage is an extension", 571, SFINAE_Suppress, false, false, 2)
+DIAG(ext_return_has_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "%select{void function|void method|constructor|destructor}1 %0 should not return a value", 575, SFINAE_Suppress, false, false, 2)
+DIAG(ext_return_has_void_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "void %select{function|method|block}1 %0 should not return void expression", 527, SFINAE_Suppress, false, false, 2)
+DIAG(ext_return_missing_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "non-void %select{function|method}1 %0 should return a value", 575, SFINAE_Suppress, false, false, 2)
DIAG(ext_rvalue_to_reference_access_ctor, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "C++98 requires an accessible copy constructor for class %2 when binding a reference to a temporary; was %select{private|protected}0", 57, SFINAE_AccessControl, false, false, 2)
DIAG(ext_rvalue_to_reference_temp_copy_no_viable, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "no viable constructor %select{copying variable|copying parameter|returning object|initializing statement expression result|throwing object|copying member subobject|copying array element|allocating object|copying temporary|initializing base subobject|initializing vector element|capturing value}0 of type %1; C++98 requires a copy constructor when binding a reference to a temporary", 57, SFINAE_Suppress, false, false, 2)
-DIAG(ext_sizeof_alignof_function_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "invalid application of '%select{sizeof|alignof|vec_step}0' to a function type", 519, SFINAE_Suppress, false, false, 2)
-DIAG(ext_sizeof_alignof_void_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "invalid application of '%select{sizeof|alignof|vec_step}0' to a void type", 519, SFINAE_Suppress, false, false, 2)
-DIAG(ext_standalone_specifier, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'%0' is not permitted on a declaration of a type", 396, SFINAE_Suppress, false, false, 2)
+DIAG(ext_sizeof_alignof_function_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "invalid application of '%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align|__alignof}0' to a function type", 530, SFINAE_Suppress, false, false, 2)
+DIAG(ext_sizeof_alignof_void_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "invalid application of '%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align|__alignof}0' to a void type", 530, SFINAE_Suppress, false, false, 2)
+DIAG(ext_standalone_specifier, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'%0' is not permitted on a declaration of a type", 405, SFINAE_Suppress, false, false, 2)
DIAG(ext_star_this_lambda_capture_cxx17, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "capture of '*this' by copy is a C++17 extension", 91, SFINAE_Suppress, false, false, 3)
-DIAG(ext_static_assert_no_message, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "static_assert with no message is a C++17 extension", 91, SFINAE_Suppress, false, false, 2)
DIAG(ext_static_data_member_in_union, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "static data member %0 in union is a C++11 extension", 79, SFINAE_Suppress, false, false, 2)
-DIAG(ext_static_non_static, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "redeclaring non-static %0 as static is a Microsoft extension", 384, SFINAE_Suppress, false, false, 2)
-DIAG(ext_string_literal_operator_template, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "string literal operator templates are a GNU extension", 266, SFINAE_Suppress, false, false, 2)
-DIAG(ext_subscript_non_lvalue, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C90 does not allow subscripting non-lvalue array", 516, SFINAE_Suppress, false, false, 2)
+DIAG(ext_static_non_static, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "redeclaring non-static %0 as static is a Microsoft extension", 393, SFINAE_Suppress, false, false, 2)
+DIAG(ext_static_out_of_line, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'static' can only be specified inside the class definition", 395, SFINAE_Suppress, false, false, 2)
+DIAG(ext_string_literal_operator_template, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "string literal operator templates are a GNU extension", 274, SFINAE_Suppress, false, false, 2)
+DIAG(ext_subscript_non_lvalue, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C90 does not allow subscripting non-lvalue array", 527, SFINAE_Suppress, false, false, 2)
DIAG(ext_template_arg_extra_parens, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "address non-type template argument cannot be surrounded by parentheses", 0, SFINAE_Suppress, false, false, 2)
-DIAG(ext_template_arg_local_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "template argument uses local type %0", 348, SFINAE_Suppress, false, false, 2)
+DIAG(ext_template_arg_local_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "template argument uses local type %0", 357, SFINAE_Suppress, false, false, 2)
DIAG(ext_template_arg_object_internal, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "non-type template argument referring to %select{function|object}0 %1 with internal linkage is a C++11 extension", 79, SFINAE_Suppress, false, false, 2)
-DIAG(ext_template_arg_unnamed_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "template argument uses unnamed type", 686, SFINAE_Suppress, false, false, 2)
+DIAG(ext_template_arg_unnamed_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "template argument uses unnamed type", 699, SFINAE_Suppress, false, false, 2)
DIAG(ext_template_outside_of_template, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'template' keyword outside of a template", 79, SFINAE_Suppress, false, false, 2)
DIAG(ext_template_parameter_default_in_function_template, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "default template arguments for a function template are a C++11 extension", 79, SFINAE_Suppress, false, false, 2)
DIAG(ext_typecheck_addrof_temporary, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "taking the address of a temporary object of type %0", 13, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_addrof_void, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C forbids taking the address of an expression of type 'void'", 516, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_base_super, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "method parameter type %diff{$ does not match super class method parameter type $|does not match super class method parameter type}0,1", 628, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_cast_nonscalar, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "C99 forbids casting nonscalar type %0 to the same type", 516, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_cast_to_union, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "cast to union type is a GNU extension", 267, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_comparison_of_distinct_pointers, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "comparison of distinct pointer types%diff{ ($ and $)|}0,1", 127, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_comparison_of_fptr_to_void, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "equality comparison between function pointer and void pointer (%0 and %1)", 516, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_comparison_of_pointer_integer, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "comparison between pointer and integer (%0 and %1)", 0, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_addrof_void, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C forbids taking the address of an expression of type 'void'", 527, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_base_super, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "method parameter type %diff{$ does not match super class method parameter type $|does not match super class method parameter type}0,1", 641, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_cast_nonscalar, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "C99 forbids casting nonscalar type %0 to the same type", 527, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_cast_to_union, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "cast to union type is a GNU extension", 275, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_comparison_of_distinct_pointers, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "comparison of distinct pointer types%diff{ ($ and $)|}0,1", 128, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_comparison_of_fptr_to_void, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "equality comparison between function pointer and void pointer (%0 and %1)", 527, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_comparison_of_pointer_integer, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "comparison between pointer and integer (%0 and %1)", 532, SFINAE_Suppress, false, false, 2)
DIAG(ext_typecheck_cond_incompatible_operands, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "incompatible operand types (%0 and %1)", 0, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_cond_incompatible_pointers, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pointer type mismatch%diff{ ($ and $)|}0,1", 523, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_cond_one_void, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "C99 forbids conditional expressions with only one void side", 516, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_cond_pointer_integer_mismatch, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pointer/integer type mismatch in conditional expression%diff{ ($ and $)|}0,1", 129, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_convert_discards_qualifiers, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2 discards qualifiers", 302, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_convert_incompatible_function_pointer, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "incompatible function pointer types %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2%select{|; dereference with *|; take the address with &|; remove *|; remove &}3", 298, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_convert_incompatible_pointer, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "incompatible pointer types %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2%select{|; dereference with *|; take the address with &|; remove *|; remove &}3", 301, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_convert_incompatible_pointer_sign, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2 converts between pointers to integer types with different sign", 521, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_convert_int_pointer, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "incompatible integer to pointer conversion %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2%select{|; dereference with *|; take the address with &|; remove *|; remove &}3", 321, SFINAE_Suppress, false, false, 24)
-DIAG(ext_typecheck_convert_pointer_int, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "incompatible pointer to integer conversion %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2%select{|; dereference with *|; take the address with &|; remove *|; remove &}3", 321, SFINAE_Suppress, false, false, 24)
-DIAG(ext_typecheck_convert_pointer_void_func, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "%select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2 converts between void pointer and function pointer", 516, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_decl_incomplete_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "tentative definition of variable with internal linkage has incomplete non-array type %0", 647, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_indirection_through_void_pointer, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C++ does not allow indirection on operand of type %0", 739, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_ordered_comparison_of_function_pointers, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ordered comparison of function pointers (%0 and %1)", 495, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_ordered_comparison_of_pointer_and_zero, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ordered comparison between pointer and zero (%0 and %1) is an extension", 516, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_cond_incompatible_pointers, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pointer type mismatch%diff{ ($ and $)|}0,1", 535, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_cond_one_void, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "C99 forbids conditional expressions with only one void side", 527, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_cond_pointer_integer_mismatch, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pointer/integer type mismatch in conditional expression%diff{ ($ and $)|}0,1", 130, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_convert_discards_qualifiers, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2 discards qualifiers", 311, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_convert_incompatible_function_pointer, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "incompatible function pointer types %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2%select{|; dereference with *|; take the address with &|; remove *|; remove &}3", 307, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_convert_incompatible_pointer, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "incompatible pointer types %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2%select{|; dereference with *|; take the address with &|; remove *|; remove &}3", 310, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_convert_incompatible_pointer_sign, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2 converts between pointers to integer types with different sign", 533, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_convert_int_pointer, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "incompatible integer to pointer conversion %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2%select{|; dereference with *|; take the address with &|; remove *|; remove &}3", 330, SFINAE_SubstitutionFailure, false, false, 24)
+DIAG(ext_typecheck_convert_pointer_int, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "incompatible pointer to integer conversion %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2%select{|; dereference with *|; take the address with &|; remove *|; remove &}3", 330, SFINAE_Suppress, false, false, 24)
+DIAG(ext_typecheck_convert_pointer_void_func, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "%select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2 converts between void pointer and function pointer", 527, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_decl_incomplete_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "tentative definition of variable with internal linkage has incomplete non-array type %0", 660, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_indirection_through_void_pointer, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C++ does not allow indirection on operand of type %0", 752, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_ordered_comparison_of_function_pointers, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ordered comparison of function pointers (%0 and %1)", 505, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_ordered_comparison_of_pointer_and_zero, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ordered comparison between pointer and zero (%0 and %1) is an extension", 527, SFINAE_Suppress, false, false, 2)
DIAG(ext_typecheck_ordered_comparison_of_pointer_integer, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ordered comparison between pointer and integer (%0 and %1)", 0, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typecheck_zero_array_size, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "zero size arrays are an extension", 746, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typedef_without_a_name, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "typedef requires a name", 396, SFINAE_Suppress, false, false, 2)
-DIAG(ext_typename_missing, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "missing 'typename' prior to dependent type name '%0%1'", 660, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typecheck_zero_array_size, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "zero size arrays are an extension", 759, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typedef_without_a_name, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "typedef requires a name", 405, SFINAE_Suppress, false, false, 2)
+DIAG(ext_typename_missing, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "missing 'typename' prior to dependent type name '%0%1'", 673, SFINAE_Suppress, false, false, 2)
DIAG(ext_typename_outside_of_template, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'typename' occurs outside of a template", 79, SFINAE_Suppress, false, false, 2)
-DIAG(ext_undeclared_unqual_id_with_dependent_base, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of undeclared identifier %0; unqualified lookup into dependent bases of class template %1 is a Microsoft extension", 386, SFINAE_Suppress, false, false, 2)
-DIAG(ext_undefined_internal_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C++ requires a definition in this translation unit for %select{function|variable}0 %q1 because its type does not have linkage", 669, SFINAE_Suppress, false, false, 2)
+DIAG(ext_undeclared_unqual_id_with_dependent_base, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of undeclared identifier %0; unqualified lookup into dependent bases of class template %1 is a Microsoft extension", 395, SFINAE_Suppress, false, false, 2)
+DIAG(ext_undefined_internal_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C++ requires a definition in this translation unit for %select{function|variable}0 %q1 because its type does not have linkage", 682, SFINAE_Suppress, false, false, 2)
DIAG(ext_unelaborated_friend_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "unelaborated friend declaration is a C++11 extension; specify '%select{struct|interface|union|class|enum}0' to befriend %1", 79, SFINAE_Suppress, false, false, 2)
-DIAG(ext_union_member_of_reference_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "union member %0 has reference type %1, which is a Microsoft extension", 387, SFINAE_Suppress, false, false, 2)
-DIAG(ext_use_out_of_scope_declaration, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of out-of-scope declaration of %0%select{| whose type is not compatible with that of an implicit declaration}1", 497, SFINAE_Suppress, false, false, 2)
+DIAG(ext_union_member_of_reference_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "union member %0 has reference type %1, which is a Microsoft extension", 396, SFINAE_Suppress, false, false, 2)
+DIAG(ext_use_out_of_scope_declaration, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of out-of-scope declaration of %0%select{| whose type is not compatible with that of an implicit declaration}1", 507, SFINAE_Suppress, false, false, 2)
DIAG(ext_using_undefined_std, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "using directive refers to implicitly-defined namespace 'std'", 0, SFINAE_Suppress, false, false, 2)
-DIAG(ext_variable_sized_type_in_struct, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "field %0 with variable sized type %1 not at the end of a struct or class is a GNU extension", 268, SFINAE_Suppress, false, false, 2)
+DIAG(ext_variable_sized_type_in_struct, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "field %0 with variable sized type %1 not at the end of a struct or class is a GNU extension", 276, SFINAE_Suppress, false, false, 2)
DIAG(ext_variable_template, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "variable templates are a C++14 extension", 87, SFINAE_Suppress, false, false, 2)
-DIAG(ext_variadic_main, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'main' is not allowed to be declared variadic", 354, SFINAE_Suppress, false, false, 2)
-DIAG(ext_vla, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "variable length arrays are a C99 feature", 738, SFINAE_Suppress, false, false, 2)
-DIAG(ext_vla_folded_to_constant, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "variable length array folded to constant array as an extension", 259, SFINAE_Suppress, false, false, 2)
-DIAG(ext_warn_duplicate_declspec, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "duplicate '%0' declaration specifier", 187, SFINAE_Suppress, false, false, 2)
-DIAG(ext_warn_gnu_final, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "__final is a GNU extension, consider using C++11 final", 242, SFINAE_Suppress, false, false, 0)
+DIAG(ext_variadic_main, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'main' is not allowed to be declared variadic", 363, SFINAE_Suppress, false, false, 2)
+DIAG(ext_vla, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "variable length arrays are a C99 feature", 751, SFINAE_Suppress, false, false, 2)
+DIAG(ext_vla_folded_to_constant, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "variable length array folded to constant array as an extension", 267, SFINAE_Suppress, false, false, 2)
DIAG(note_access_constrained_by_path, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "constrained by %select{|implicitly }1%select{private|protected}0 inheritance here", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_access_natural, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{|implicitly }1declared %select{private|protected}0 here", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_access_protected_restricted_ctordtor, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "protected %select{constructor|destructor}0 can only be used to %select{construct|destroy}0 a base class subobject", 0, SFINAE_Suppress, false, false, 2)
@@ -2183,7 +2191,7 @@
DIAG(note_attribute, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "attribute is here", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_attribute_overloadable_prev_overload, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous %select{unmarked |}0overload of function is here", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_auto_readonly_iboutlet_fixup_suggest, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "property should be changed to be readwrite", 0, SFINAE_Suppress, false, false, 2)
-DIAG(note_availability_specified_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 has been explicitly marked %select{unavailable|deleted|deprecated|partial}1 here", 0, SFINAE_Suppress, false, false, 2)
+DIAG(note_availability_specified_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 has been explicitly marked %select{unavailable|deleted|deprecated}1 here", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_await_ready_no_bool_conversion, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "return type of 'await_ready' is required to be contextually convertible to 'bool'", 0, SFINAE_Suppress, false, false, 14)
DIAG(note_bad_memaccess_silence, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "explicitly cast the pointer to silence this warning", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_base_class_specified_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "base class %0 specified here", 0, SFINAE_Suppress, false, false, 2)
@@ -2216,6 +2224,7 @@
DIAG(note_coroutine_promise_suspend_implicitly_required, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "call to '%select{initial_suspend|final_suspend}0' implicitly required by the %select{initial suspend point|final suspend point}0", 0, SFINAE_Suppress, false, false, 14)
DIAG(note_cuda_conflicting_device_function_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "conflicting __device__ function declared here", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_cuda_ovl_candidate_target_mismatch, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: target attributes do not match", 0, SFINAE_Suppress, false, false, 2)
+DIAG(note_cxx2a_compat_utf8_string_remove_u8, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "remove 'u8' prefix to avoid a change of behavior; Clang encodes unprefixed narrow string literals as UTF-8", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_decl_unguarded_availability_silence, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "annotate %select{%1|anonymous %1}0 with an availability attribute to silence this warning", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_declaration_not_a_prototype, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "this declaration is not a prototype; add 'void' to make it a prototype for a zero-parameter function", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_declare_parameter_strong, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declare the parameter __strong or capture a __block __strong variable to keep values alive across autorelease pools", 0, SFINAE_Suppress, false, false, 5)
@@ -2237,7 +2246,7 @@
DIAG(note_deleted_default_ctor_all_const, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{default constructor of|constructor inherited by}0 %1 is implicitly deleted because all %select{data members|data members of an anonymous union member}2 are const-qualified", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_deleted_default_ctor_uninit_field, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{default constructor of|constructor inherited by}0 %1 is implicitly deleted because field %2 of %select{reference|const-qualified}4 type %3 would not be initialized", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_deleted_dtor_no_operator_delete, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "virtual destructor requires an unambiguous, accessible 'operator delete'", 0, SFINAE_Suppress, false, false, 2)
-DIAG(note_deleted_special_member_class_subobject, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{default constructor of|copy constructor of|move constructor of|copy assignment operator of|move assignment operator of|destructor of|constructor inherited by}0 %1 is implicitly deleted because %select{base class %3|%select{||||variant }4field %3}2 has %select{no|a deleted|multiple|an inaccessible|a non-trivial}4 %select{%select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor|%select{default|corresponding|default|default|default}4 constructor}0|destructor}5%select{||s||}4", 0, SFINAE_Suppress, false, false, 2)
+DIAG(note_deleted_special_member_class_subobject, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{default constructor of|copy constructor of|move constructor of|copy assignment operator of|move assignment operator of|destructor of|constructor inherited by}0 %1 is implicitly deleted because %select{base class %3|%select{||||variant }4field %3}2 %select{has %select{no|a deleted|multiple|an inaccessible|a non-trivial}4 %select{%select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor|%select{default|corresponding|default|default|default}4 constructor}0|destructor}5%select{||s||}4|is an ObjC pointer}6", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_deleted_type_mismatch, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "function is implicitly deleted because its declared type does not match the type of an implicit %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}0", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_dependent_function_template_spec_discard_reason, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate ignored: %select{not a function template|not a member of the enclosing namespace; did you mean to explicitly qualify the specialization?}0", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_dependent_non_type_default_arg_in_partial_spec, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "template parameter is used in default argument declared here", 0, SFINAE_Suppress, false, false, 2)
@@ -2261,7 +2270,6 @@
DIAG(note_equivalent_internal_linkage_decl, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declared here%select{ in module '%1'|}0", 0, SFINAE_Suppress, false, false, 13)
DIAG(note_evaluate_comparison_first, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "place parentheses around comparison expression to evaluate it first", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_evaluating_exception_spec_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in evaluation of exception specification for %q0 needed here", 0, SFINAE_Suppress, false, false, 2)
-DIAG(note_exception_spec_deprecated, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use '%0' instead", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_exits___block, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits scope of __block variable", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_exits_block_captures_cxx_obj, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits lifetime of block which captures a destructible C++ object", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_exits_block_captures_non_trivial_c_struct, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits lifetime of block which captures a C struct that is non-trivial to destroy", 0, SFINAE_Suppress, false, false, 2)
@@ -2315,7 +2323,7 @@
DIAG(note_getter_unavailable, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "or because setter is declared here, but no getter method %0 is found", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_goto_ms_asm_label, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "inline assembly label %0 declared here", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_guarded_by_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "Guarded_by declared here.", 0, SFINAE_Suppress, false, false, 2)
-DIAG(note_hidden_overloaded_virtual_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "hidden overloaded virtual function %q0 declared here%select{|: different classes%diff{ ($ vs $)|}2,3|: different number of parameters (%2 vs %3)|: type mismatch at %ordinal2 parameter%diff{ ($ vs $)|}3,4|: different return type%diff{ ($ vs $)|}2,3|: different qualifiers (%select{none|const|restrict|const and restrict|volatile|const and volatile|volatile and restrict|const, volatile, and restrict}2 vs %select{none|const|restrict|const and restrict|volatile|const and volatile|volatile and restrict|const, volatile, and restrict}3)|: different exception specifications}1", 0, SFINAE_Suppress, false, false, 2)
+DIAG(note_hidden_overloaded_virtual_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "hidden overloaded virtual function %q0 declared here%select{|: different classes%diff{ ($ vs $)|}2,3|: different number of parameters (%2 vs %3)|: type mismatch at %ordinal2 parameter%diff{ ($ vs $)|}3,4|: different return type%diff{ ($ vs $)|}2,3|: different qualifiers (%2 vs %3)|: different exception specifications}1", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_hidden_tag, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "type declaration hidden", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_hiding_object, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declaration hides type", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_ice_conversion_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "conversion to %select{integral|enumeration}0 type %1 declared here", 0, SFINAE_Suppress, false, false, 2)
@@ -2430,6 +2438,9 @@
DIAG(note_omp_critical_no_hint, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{|previous }0directive with no 'hint' clause specified", 0, SFINAE_Suppress, false, false, 11)
DIAG(note_omp_explicit_dsa, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "defined as %0", 0, SFINAE_Suppress, false, false, 11)
DIAG(note_omp_implicit_dsa, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "implicitly determined as %0", 0, SFINAE_Suppress, false, false, 11)
+DIAG(note_omp_invalid_length_on_this_ptr_mapping, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "expected length on mapping of 'this' array section expression to be '1'", 0, SFINAE_Suppress, false, false, 11)
+DIAG(note_omp_invalid_lower_bound_on_this_ptr_mapping, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "expected lower bound on mapping of 'this' array section expression to be '0' or not specified", 0, SFINAE_Suppress, false, false, 11)
+DIAG(note_omp_invalid_subscript_on_this_ptr_map, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "expected 'this' subscript expression on map clause to be 'this[0]'", 0, SFINAE_Suppress, false, false, 11)
DIAG(note_omp_loop_cond_requres_compatible_incr, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "loop step is expected to be %select{negative|positive}0 due to this condition", 0, SFINAE_Suppress, false, false, 11)
DIAG(note_omp_nested_statement_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{statement|directive}0 outside teams construct here", 0, SFINAE_Suppress, false, false, 11)
DIAG(note_omp_nested_teams_construct_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "nested teams construct here", 0, SFINAE_Suppress, false, false, 11)
@@ -2452,7 +2463,7 @@
DIAG(note_overridden_virtual_function, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "overridden virtual function is here", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_ovl_builtin_binary_candidate, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "built-in candidate %0", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_ovl_builtin_unary_candidate, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "built-in candidate %0", 0, SFINAE_Suppress, false, false, 2)
-DIAG(note_ovl_candidate, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %3}1%select{| has different class%diff{ (expected $ but has $)|}5,6| has different number of parameters (expected %5 but has %6)| has type mismatch at %ordinal5 parameter%diff{ (expected $ but has $)|}6,7| has different return type%diff{ ($ expected but has $)|}5,6| has different qualifiers (expected %select{none|const|restrict|const and restrict|volatile|const and volatile|volatile and restrict|const, volatile, and restrict}5 but found %select{none|const|restrict|const and restrict|volatile|const and volatile|volatile and restrict|const, volatile, and restrict}6)| has different exception specification}4", 0, SFINAE_Suppress, false, false, 2)
+DIAG(note_ovl_candidate, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %3}1%select{| has different class%diff{ (expected $ but has $)|}5,6| has different number of parameters (expected %5 but has %6)| has type mismatch at %ordinal5 parameter%diff{ (expected $ but has $)|}6,7| has different return type%diff{ ($ expected but has $)|}5,6| has different qualifiers (expected %5 but found %6)| has different exception specification}4", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_ovl_candidate_arity, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 not viable: requires%select{ at least| at most|}3 %4 argument%s4, but %5 %plural{1:was|:were}5 provided", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_ovl_candidate_arity_one, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 not viable: %select{requires at least|allows at most single|requires single}3 argument %4, but %plural{0:no|:%5}5 arguments were provided", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_ovl_candidate_bad_addrspace, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 not viable: address space mismatch in %select{%ordinal6|'this'}5 argument (%3), parameter type must be %4", 0, SFINAE_Suppress, false, false, 2)
@@ -2473,7 +2484,7 @@
DIAG(note_ovl_candidate_deduced_mismatch, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: deduced type %diff{$ of %select{|element of }4%ordinal0 parameter does not match adjusted type $ of %select{|element of }4argument|of %select{|element of }4%ordinal0 parameter does not match adjusted type of %select{|element of }4argument}1,2%3", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_ovl_candidate_deleted, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 has been %select{explicitly made unavailable|explicitly deleted|implicitly deleted}3", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_ovl_candidate_disabled_by_enable_if, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: disabled by %0%1", 0, SFINAE_Suppress, false, false, 2)
-DIAG(note_ovl_candidate_disabled_by_extension, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate disabled due to OpenCL extension", 0, SFINAE_Suppress, false, false, 2)
+DIAG(note_ovl_candidate_disabled_by_extension, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate unavailable as it requires OpenCL extension '%0' to be enabled", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_ovl_candidate_disabled_by_function_cond_attr, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate disabled: %0", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_ovl_candidate_disabled_by_requirement, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: requirement '%0' was not satisfied%1", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_ovl_candidate_explicit_arg_mismatch_named, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: invalid explicitly-specified argument for template parameter %0", 0, SFINAE_Suppress, false, false, 2)
@@ -2498,6 +2509,7 @@
DIAG(note_parameter_named_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "passing argument to parameter %0 here", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_parameter_pack_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "parameter pack %0 declared here", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_parameter_type, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "parameter of type %0 is declared here", 0, SFINAE_Suppress, false, false, 2)
+DIAG(note_partial_availability_specified_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 has been marked as being introduced in %1 %2 here, but the deployment target is %1 %3", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_partial_spec_match, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "partial specialization matches %0", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_partial_spec_not_more_specialized_than_primary, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_partial_specialization_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "explicit specialization declared here", 0, SFINAE_Suppress, false, false, 2)
@@ -2591,6 +2603,7 @@
DIAG(note_strlcpycat_wrong_size, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "change size argument to be the size of the destination", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_strncat_wrong_size, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "change the argument to be the free space in the destination buffer minus the terminating null byte", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_struct_class_suggestion, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did you mean %select{struct|interface|class}0 here?", 0, SFINAE_Suppress, false, false, 2)
+DIAG(note_suppress_ctad_maybe_unsupported, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "add a deduction guide to suppress this warning", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_suppressed_class_declare, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "class with specified objc_requires_property_definitions attribute is declared here", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_surrounding_namespace_ends_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "surrounding namespace with visibility attribute ends here", 0, SFINAE_Suppress, false, false, 2)
DIAG(note_surrounding_namespace_starts_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "surrounding namespace with visibility attribute starts here", 0, SFINAE_Suppress, false, false, 2)
@@ -2671,20 +2684,18 @@
DIAG(warn_abs_too_small, CLASS_WARNING, (unsigned)diag::Severity::Warning, "absolute value function %0 given an argument of type %1 but has parameter of type %2 which may cause truncation of value", 8, SFINAE_Suppress, false, false, 2)
DIAG(warn_abstract_final_class, CLASS_WARNING, (unsigned)diag::Severity::Warning, "abstract class is marked '%select{final|sealed}0'", 9, SFINAE_Suppress, false, false, 2)
DIAG(warn_abstract_vbase_init_ignored, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "initializer for virtual base class %0 of abstract class %1 will never be used", 10, SFINAE_Suppress, false, false, 2)
-DIAG(warn_access_decl_deprecated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "access declarations are deprecated; use using declarations instead", 158, SFINAE_Suppress, false, false, 27)
+DIAG(warn_access_decl_deprecated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "access declarations are deprecated; use using declarations instead", 164, SFINAE_Suppress, false, false, 27)
DIAG(warn_accessor_property_type_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "type of property %0 does not match type of accessor %1", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_acquire_requires_negative_cap, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "acquiring %0 '%1' requires negative capability '%2'", 652, SFINAE_Suppress, false, false, 2)
-DIAG(warn_acquired_before, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 '%1' must be acquired before '%2'", 649, SFINAE_Suppress, false, false, 2)
-DIAG(warn_acquired_before_after_cycle, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "Cycle in acquired_before/after dependencies, starting with '%0'", 649, SFINAE_Suppress, false, false, 2)
-DIAG(warn_addition_in_bitshift, CLASS_WARNING, (unsigned)diag::Severity::Warning, "operator '%0' has lower precedence than '%1'; '%1' will be evaluated first", 587, SFINAE_Suppress, false, false, 2)
-DIAG(warn_address_of_reference_bool_conversion, CLASS_WARNING, (unsigned)diag::Severity::Warning, "reference cannot be bound to dereferenced null pointer in well-defined C++ code; pointer may be assumed to always convert to true", 665, SFINAE_Suppress, false, false, 24)
-DIAG(warn_address_of_reference_null_compare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "reference cannot be bound to dereferenced null pointer in well-defined C++ code; comparison may be assumed to always evaluate to %select{true|false}0", 644, SFINAE_Suppress, false, false, 2)
-DIAG(warn_alias_to_weak_alias, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{alias|ifunc}2 will always resolve to %0 even if weak definition of %1 is overridden", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_alias_with_section, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{alias|ifunc}1 will not be in section '%0' but in the same section as the %select{aliasee|resolver}2", 274, SFINAE_Suppress, false, false, 2)
+DIAG(warn_acquire_requires_negative_cap, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "acquiring %0 '%1' requires negative capability '%2'", 665, SFINAE_Suppress, false, false, 2)
+DIAG(warn_acquired_before, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 '%1' must be acquired before '%2'", 662, SFINAE_Suppress, false, false, 2)
+DIAG(warn_acquired_before_after_cycle, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "Cycle in acquired_before/after dependencies, starting with '%0'", 662, SFINAE_Suppress, false, false, 2)
+DIAG(warn_addition_in_bitshift, CLASS_WARNING, (unsigned)diag::Severity::Warning, "operator '%0' has lower precedence than '%1'; '%1' will be evaluated first", 599, SFINAE_Suppress, false, false, 2)
+DIAG(warn_address_of_reference_bool_conversion, CLASS_WARNING, (unsigned)diag::Severity::Warning, "reference cannot be bound to dereferenced null pointer in well-defined C++ code; pointer may be assumed to always convert to true", 678, SFINAE_Suppress, false, false, 24)
+DIAG(warn_address_of_reference_null_compare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "reference cannot be bound to dereferenced null pointer in well-defined C++ code; comparison may be assumed to always evaluate to %select{true|false}0", 657, SFINAE_Suppress, false, false, 2)
DIAG(warn_alloca_align_alignof, CLASS_WARNING, (unsigned)diag::Severity::Warning, "second argument to __builtin_alloca_with_align is supposed to be in bits", 16, SFINAE_Suppress, false, false, 2)
DIAG(warn_ambiguous_suitable_delete_function_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "multiple suitable %0 functions for %1; no 'operator delete' function will be invoked if initialization throws an exception", 17, SFINAE_Suppress, false, false, 2)
DIAG(warn_anon_bitfield_width_exceeds_type_width, CLASS_WARNING, (unsigned)diag::Severity::Warning, "width of anonymous bit-field (%0 bits) exceeds width of its type; value will be truncated to %1 bit%s1", 61, SFINAE_Suppress, false, false, 2)
-DIAG(warn_arc_lifetime_result_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ARC %select{unused|__unsafe_unretained|__strong|__weak|__autoreleasing}0 lifetime qualifier on return type is ignored", 279, SFINAE_Suppress, false, false, 5)
+DIAG(warn_arc_lifetime_result_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ARC %select{unused|__unsafe_unretained|__strong|__weak|__autoreleasing}0 lifetime qualifier on return type is ignored", 287, SFINAE_Suppress, false, false, 5)
DIAG(warn_arc_literal_assign, CLASS_WARNING, (unsigned)diag::Severity::Warning, "assigning %select{array literal|dictionary literal|numeric literal|boxed expression|<should not happen>|block literal}0 to a weak %select{property|variable}1; object will be released after assignment", 30, SFINAE_Suppress, false, false, 5)
DIAG(warn_arc_object_memaccess, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{destination for|source of}0 this %1 call is a pointer to ownership-qualified type %2", 26, SFINAE_Suppress, false, false, 5)
DIAG(warn_arc_perform_selector_leaks, CLASS_WARNING, (unsigned)diag::Severity::Warning, "performSelector may cause a leak because its selector is unknown", 27, SFINAE_Suppress, false, false, 2)
@@ -2693,127 +2704,128 @@
DIAG(warn_arc_retain_cycle, CLASS_WARNING, (unsigned)diag::Severity::Warning, "capturing %0 strongly in this block is likely to lead to a retain cycle", 29, SFINAE_Suppress, false, false, 26)
DIAG(warn_arc_retained_assign, CLASS_WARNING, (unsigned)diag::Severity::Warning, "assigning retained object to %select{weak|unsafe_unretained}0 %select{property|variable}1; object will be released after assignment", 30, SFINAE_Suppress, false, false, 5)
DIAG(warn_arc_retained_property_assign, CLASS_WARNING, (unsigned)diag::Severity::Warning, "assigning retained object to unsafe property; object will be released after assignment", 30, SFINAE_Suppress, false, false, 5)
-DIAG(warn_arc_strong_pointer_objc_pointer, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "method parameter of type %0 with no explicit ownership", 210, SFINAE_Suppress, false, false, 10)
+DIAG(warn_arc_strong_pointer_objc_pointer, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "method parameter of type %0 with no explicit ownership", 217, SFINAE_Suppress, false, false, 10)
DIAG(warn_argument_invalid_range, CLASS_WARNING, (unsigned)diag::Severity::Error, "argument value %0 is outside the valid range [%1, %2]", 31, SFINAE_Suppress, false, false, 2)
-DIAG(warn_arm_interrupt_calling_convention, CLASS_WARNING, (unsigned)diag::Severity::Warning, "call to function without interrupt attribute could clobber interruptee's VFP registers", 213, SFINAE_Suppress, false, false, 2)
+DIAG(warn_arm_interrupt_calling_convention, CLASS_WARNING, (unsigned)diag::Severity::Warning, "call to function without interrupt attribute could clobber interruptee's VFP registers", 220, SFINAE_Suppress, false, false, 2)
DIAG(warn_array_index_exceeds_bounds, CLASS_WARNING, (unsigned)diag::Severity::Warning, "array index %0 is past the end of the array (which contains %1 element%s2)", 32, SFINAE_Suppress, false, false, 2)
DIAG(warn_array_index_precedes_bounds, CLASS_WARNING, (unsigned)diag::Severity::Warning, "array index %0 is before the beginning of the array", 32, SFINAE_Suppress, false, false, 2)
DIAG(warn_asm_label_on_auto_decl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignored asm label '%0' on automatic variable", 0, SFINAE_Suppress, false, false, 12)
DIAG(warn_asm_mismatched_size_modifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "value size does not match register size specified by the constraint and modifier", 36, SFINAE_Suppress, false, false, 12)
DIAG(warn_assume_side_effects, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the argument to %0 has side effects that will be discarded", 38, SFINAE_Suppress, false, false, 2)
-DIAG(warn_at_available_unchecked_use, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{@available|__builtin_available}0 does not guard availability here; use if (%select{@available|__builtin_available}0) instead", 696, SFINAE_Suppress, false, false, 2)
-DIAG(warn_atl_uuid_deprecated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "specifying 'uuid' as an ATL attribute is deprecated; use __declspec instead", 160, SFINAE_Suppress, false, false, 27)
+DIAG(warn_at_available_unchecked_use, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{@available|__builtin_available}0 does not guard availability here; use if (%select{@available|__builtin_available}0) instead", 709, SFINAE_Suppress, false, false, 2)
+DIAG(warn_atl_uuid_deprecated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "specifying 'uuid' as an ATL attribute is deprecated; use __declspec instead", 166, SFINAE_Suppress, false, false, 27)
DIAG(warn_atomic_implicit_seq_cst, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit use of sequentially-consistent atomic may incur stronger memory barriers than necessary", 42, SFINAE_Suppress, false, false, 2)
DIAG(warn_atomic_op_has_invalid_memory_order, CLASS_WARNING, (unsigned)diag::Severity::Warning, "memory order argument to atomic operation is invalid", 43, SFINAE_Suppress, false, false, 2)
-DIAG(warn_atomic_op_misaligned, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{large|misaligned}0 atomic operation may incur significant performance penalty", 41, SFINAE_Suppress, false, false, 2)
DIAG(warn_atomic_property_rule, CLASS_WARNING, (unsigned)diag::Severity::Warning, "writable atomic property %0 cannot pair a synthesized %select{getter|setter}1 with a user defined %select{getter|setter}2", 45, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attr_abi_tag_namespace, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'abi_tag' attribute on %select{non-inline|anonymous}0 namespace ignored", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attr_on_unconsumable_class, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "consumed analysis attribute is attached to member of class '%0' which isn't marked as consumable", 135, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_address_multiple_identical_qualifiers, CLASS_WARNING, (unsigned)diag::Severity::Warning, "multiple identical address spaces specified for type", 187, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_after_definition_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 after definition is ignored", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_argument_n_negative, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute parameter %1 is negative and will be ignored", 144, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_dll_instantiated_base_class, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "propagating dll attribute to %select{already instantiated|explicitly specialized}0 base class template without dll attribute is not supported", 698, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_dll_redeclaration, CLASS_WARNING, (unsigned)diag::Severity::Warning, "redeclaration of %q0 should not add %q1 attribute", 177, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_dllexport_explicit_instantiation_decl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "explicit instantiation declaration should not be 'dllexport'", 178, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_dllimport_static_field_definition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "definition of dllimport static field", 179, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_iboutlet, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute can only be applied to instance variables or properties", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute ignored", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_ignored_for_field_of_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute ignored for field of type %1", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_ignored_on_inline, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute ignored on inline function", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_invalid_on_definition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' attribute cannot be specified on a definition", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_nonnull_no_pointers, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'nonnull' attribute applied to function with no pointer arguments", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_nonnull_parm_no_args, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'nonnull' attribute when used on parameters takes no arguments", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_not_on_decl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute ignored when parsing type", 274, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attr_abi_tag_namespace, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'abi_tag' attribute on %select{non-inline|anonymous}0 namespace ignored", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attr_on_unconsumable_class, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "consumed analysis attribute is attached to member of class '%0' which isn't marked as consumable", 136, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_address_multiple_identical_qualifiers, CLASS_WARNING, (unsigned)diag::Severity::Warning, "multiple identical address spaces specified for type", 193, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_after_definition_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 after definition is ignored", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_argument_n_negative, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute parameter %1 is negative and will be ignored", 147, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_dll_instantiated_base_class, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "propagating dll attribute to %select{already instantiated|explicitly specialized}0 base class template without dll attribute is not supported", 711, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_dll_redeclaration, CLASS_WARNING, (unsigned)diag::Severity::Warning, "redeclaration of %q0 should not add %q1 attribute", 183, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_dllexport_explicit_instantiation_decl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "explicit instantiation declaration should not be 'dllexport'", 184, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_dllimport_static_field_definition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "definition of dllimport static field", 185, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_iboutlet, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute can only be applied to instance variables or properties", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute ignored", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_ignored_for_field_of_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute ignored for field of type %1", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_ignored_on_inline, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute ignored on inline function", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_invalid_on_definition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' attribute cannot be specified on a definition", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_nonnull_no_pointers, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'nonnull' attribute applied to function with no pointer arguments", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_nonnull_parm_no_args, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'nonnull' attribute when used on parameters takes no arguments", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_not_on_decl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute ignored when parsing type", 282, SFINAE_Suppress, false, false, 2)
DIAG(warn_attribute_packed_for_bitfield, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'packed' attribute was ignored on bit-fields with single-byte alignment in older versions of GCC and Clang", 46, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_pointer_or_reference_only, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to a pointer or reference (%1 is invalid)", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_pointers_only, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to%select{| constant}1 pointer arguments", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_precede_definition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute declaration must precede definition", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_protected_visibility, CLASS_WARNING, (unsigned)diag::Severity::Warning, "target does not support 'protected' visibility; using 'default'", 703, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_return_pointers_only, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to return values that are pointers", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_return_pointers_refs_only, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to return values that are pointers or references", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_section_on_redeclaration, CLASS_WARNING, (unsigned)diag::Severity::Warning, "section attribute is specified on redeclared variable", 566, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_sentinel_named_arguments, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'sentinel' attribute requires named arguments", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_sentinel_not_variadic, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'sentinel' attribute only supported for variadic %select{functions|blocks}0", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_type_not_supported, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute argument not supported: %1", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_unknown_visibility, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown visibility %0", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_void_function_method, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 cannot be applied to %select{functions|Objective-C method}1 without return value", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_weak_on_field, CLASS_WARNING, (unsigned)diag::Severity::Warning, "__weak attribute cannot be specified on a field declaration", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_weak_on_local, CLASS_WARNING, (unsigned)diag::Severity::Warning, "__weak attribute cannot be specified on an automatic variable when ARC is not enabled", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_wrong_decl_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to %select{functions|unions|variables and functions|functions and methods|functions, methods and blocks|functions, methods, and parameters|variables|variables and fields|variables, data members and tag types|types and namespaces|variables, functions and classes|kernel functions|non-K&R-style functions}1", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_attribute_wrong_decl_type_str, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to %1", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_auto_implicit_atomic_property, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "property is assumed atomic when auto-synthesizing the property", 281, SFINAE_Suppress, false, false, 2)
-DIAG(warn_auto_readonly_iboutlet_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "readonly IBOutlet property %0 when auto-synthesized may not work correctly with 'nib' loader", 545, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_pointer_or_reference_only, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to a pointer or reference (%1 is invalid)", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_pointers_only, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to%select{| constant}1 pointer arguments", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_precede_definition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute declaration must precede definition", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_protected_visibility, CLASS_WARNING, (unsigned)diag::Severity::Warning, "target does not support 'protected' visibility; using 'default'", 716, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_return_pointers_only, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to return values that are pointers", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_return_pointers_refs_only, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to return values that are pointers or references", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_section_on_redeclaration, CLASS_WARNING, (unsigned)diag::Severity::Warning, "section attribute is specified on redeclared variable", 578, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_sentinel_named_arguments, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'sentinel' attribute requires named arguments", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_sentinel_not_variadic, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'sentinel' attribute only supported for variadic %select{functions|blocks}0", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_type_not_supported, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute argument not supported: %1", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_unknown_visibility, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown visibility %0", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_void_function_method, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 cannot be applied to %select{functions|Objective-C method}1 without return value", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_weak_on_field, CLASS_WARNING, (unsigned)diag::Severity::Warning, "__weak attribute cannot be specified on a field declaration", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_weak_on_local, CLASS_WARNING, (unsigned)diag::Severity::Warning, "__weak attribute cannot be specified on an automatic variable when ARC is not enabled", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_wrong_decl_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to %select{functions|unions|variables and functions|functions and methods|functions, methods and blocks|functions, methods, and parameters|variables|variables and fields|variables, data members and tag types|types and namespaces|variables, functions and classes|kernel functions|non-K&R-style functions}1", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_attribute_wrong_decl_type_str, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to %1", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_auto_implicit_atomic_property, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "property is assumed atomic when auto-synthesizing the property", 289, SFINAE_Suppress, false, false, 2)
+DIAG(warn_auto_readonly_iboutlet_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "readonly IBOutlet property %0 when auto-synthesized may not work correctly with 'nib' loader", 557, SFINAE_Suppress, false, false, 2)
DIAG(warn_auto_storage_class, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'auto' storage class specifier is redundant and incompatible with C++11", 75, SFINAE_Suppress, false, false, 2)
-DIAG(warn_auto_synthesizing_protocol_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "auto property synthesis will not synthesize property %0 declared in protocol %1", 478, SFINAE_Suppress, false, false, 2)
+DIAG(warn_auto_synthesizing_protocol_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "auto property synthesis will not synthesize property %0 declared in protocol %1", 488, SFINAE_Suppress, false, false, 2)
DIAG(warn_auto_var_is_id, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'auto' deduced as 'id' in declaration of %0", 51, SFINAE_Suppress, false, false, 2)
-DIAG(warn_autosynthesis_property_in_superclass, CLASS_WARNING, (unsigned)diag::Severity::Warning, "auto property synthesis will not synthesize property %0; it will be implemented by its superclass, use @dynamic to acknowledge intention", 476, SFINAE_Suppress, false, false, 2)
-DIAG(warn_autosynthesis_property_ivar_match, CLASS_WARNING, (unsigned)diag::Severity::Warning, "autosynthesized property %0 will use %select{|synthesized}1 instance variable %2, not existing instance variable %3", 454, SFINAE_Suppress, false, false, 2)
+DIAG(warn_autosynthesis_property_in_superclass, CLASS_WARNING, (unsigned)diag::Severity::Warning, "auto property synthesis will not synthesize property %0; it will be implemented by its superclass, use @dynamic to acknowledge intention", 486, SFINAE_Suppress, false, false, 2)
+DIAG(warn_autosynthesis_property_ivar_match, CLASS_WARNING, (unsigned)diag::Severity::Warning, "autosynthesized property %0 will use %select{|synthesized}1 instance variable %2, not existing instance variable %3", 464, SFINAE_Suppress, false, false, 2)
DIAG(warn_availability_on_static_initializer, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring availability attribute %select{on '+load' method|with constructor attribute|with destructor attribute}0", 52, SFINAE_Suppress, false, false, 2)
+DIAG(warn_availability_swift_unavailable_deprecated_only, CLASS_WARNING, (unsigned)diag::Severity::Warning, "only 'unavailable' and 'deprecated' are supported for Swift availability", 52, SFINAE_Suppress, false, false, 2)
DIAG(warn_availability_unknown_platform, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown platform %0 in availability macro", 52, SFINAE_Suppress, false, false, 2)
DIAG(warn_availability_version_ordering, CLASS_WARNING, (unsigned)diag::Severity::Warning, "feature cannot be %select{introduced|deprecated|obsoleted}0 in %1 version %2 before it was %select{introduced|deprecated|obsoleted}3 in version %4; attribute ignored", 52, SFINAE_Suppress, false, false, 2)
DIAG(warn_bad_function_cast, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "cast from function call of type %0 to non-matching type %1", 55, SFINAE_Suppress, false, false, 2)
-DIAG(warn_bad_receiver_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "receiver type %0 is not 'id' or interface pointer, consider casting it to 'id'", 546, SFINAE_Suppress, false, false, 2)
-DIAG(warn_base_class_is_uninit, CLASS_WARNING, (unsigned)diag::Severity::Warning, "base class %0 is uninitialized when used here to access %q1", 679, SFINAE_Suppress, false, false, 2)
-DIAG(warn_bind_ref_member_to_parameter, CLASS_WARNING, (unsigned)diag::Severity::Warning, "binding reference member %0 to stack allocated %select{variable|parameter}2 %1", 148, SFINAE_Suppress, false, false, 2)
-DIAG(warn_binding_null_to_reference, CLASS_WARNING, (unsigned)diag::Severity::Warning, "binding dereferenced null pointer to reference has undefined behavior", 445, SFINAE_Suppress, false, false, 2)
+DIAG(warn_bad_receiver_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "receiver type %0 is not 'id' or interface pointer, consider casting it to 'id'", 558, SFINAE_Suppress, false, false, 2)
+DIAG(warn_base_class_is_uninit, CLASS_WARNING, (unsigned)diag::Severity::Warning, "base class %0 is uninitialized when used here to access %q1", 692, SFINAE_Suppress, false, false, 2)
+DIAG(warn_bind_ref_member_to_parameter, CLASS_WARNING, (unsigned)diag::Severity::Warning, "binding reference member %0 to stack allocated %select{variable|parameter}2 %1", 151, SFINAE_Suppress, false, false, 2)
+DIAG(warn_binding_null_to_reference, CLASS_WARNING, (unsigned)diag::Severity::Warning, "binding dereferenced null pointer to reference has undefined behavior", 455, SFINAE_Suppress, false, false, 2)
DIAG(warn_bitfield_too_small_for_enum, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "bit-field %0 is not wide enough to store all enumerators of %1", 60, SFINAE_Suppress, false, false, 24)
DIAG(warn_bitfield_width_exceeds_type_width, CLASS_WARNING, (unsigned)diag::Severity::Warning, "width of bit-field %0 (%1 bits) exceeds the width of its type; value will be truncated to %2 bit%s2", 61, SFINAE_Suppress, false, false, 2)
DIAG(warn_bitwise_op_in_bitwise_op, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' within '%1'", 62, SFINAE_Suppress, false, false, 2)
DIAG(warn_block_capture_autoreleasing, CLASS_WARNING, (unsigned)diag::Severity::Warning, "block captures an autoreleasing out-parameter, which may result in use-after-free bugs", 63, SFINAE_Suppress, false, false, 5)
-DIAG(warn_block_literal_attributes_on_omitted_return_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 ignored, because it cannot be applied to omitted return type", 274, SFINAE_Suppress, false, false, 0)
-DIAG(warn_block_literal_qualifiers_on_omitted_return_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' qualifier on omitted return type %1 has no effect", 279, SFINAE_Suppress, false, false, 0)
-DIAG(warn_bool_switch_condition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "switch condition has boolean value", 632, SFINAE_Suppress, false, false, 2)
+DIAG(warn_block_literal_attributes_on_omitted_return_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 ignored, because it cannot be applied to omitted return type", 282, SFINAE_Suppress, false, false, 0)
+DIAG(warn_block_literal_qualifiers_on_omitted_return_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' qualifier on omitted return type %1 has no effect", 287, SFINAE_Suppress, false, false, 0)
+DIAG(warn_bool_switch_condition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "switch condition has boolean value", 645, SFINAE_Suppress, false, false, 2)
DIAG(warn_braces_around_scalar_init, CLASS_WARNING, (unsigned)diag::Severity::Warning, "braces around scalar initializer", 66, SFINAE_Suppress, false, false, 2)
-DIAG(warn_break_binds_to_switch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'break' is bound to loop, GCC binds it to switch", 242, SFINAE_Suppress, false, false, 2)
-DIAG(warn_builtin_unknown, CLASS_WARNING, (unsigned)diag::Severity::Error, "use of unknown builtin %0", 287, SFINAE_Suppress, false, false, 2)
-DIAG(warn_call_to_pure_virtual_member_function_from_ctor_dtor, CLASS_WARNING, (unsigned)diag::Severity::Warning, "call to pure virtual member function %0 has undefined behavior; overrides of %0 in subclasses are not available in the %select{constructor|destructor}1 of %2", 0, SFINAE_Suppress, false, false, 2)
+DIAG(warn_break_binds_to_switch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'break' is bound to loop, GCC binds it to switch", 250, SFINAE_Suppress, false, false, 2)
+DIAG(warn_builtin_unknown, CLASS_WARNING, (unsigned)diag::Severity::Error, "use of unknown builtin %0", 296, SFINAE_Suppress, false, false, 2)
+DIAG(warn_call_to_pure_virtual_member_function_from_ctor_dtor, CLASS_WARNING, (unsigned)diag::Severity::Warning, "call to pure virtual member function %0 has undefined behavior; overrides of %0 in subclasses are not available in the %select{constructor|destructor}1 of %2", 115, SFINAE_Suppress, false, false, 2)
DIAG(warn_call_wrong_number_of_arguments, CLASS_WARNING, (unsigned)diag::Severity::Warning, "too %select{few|many}0 arguments in call to %1", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_cannot_pass_non_pod_arg_to_vararg, CLASS_WARNING, (unsigned)diag::Severity::Error, "cannot pass object of %select{non-POD|non-trivial}0 type %1 through variadic %select{function|block|method|constructor}2; call will abort at runtime", 432, SFINAE_Suppress, false, false, 2)
-DIAG(warn_cannot_resolve_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "cannot resolve lock expression", 649, SFINAE_Suppress, false, false, 2)
+DIAG(warn_cannot_pass_non_pod_arg_to_vararg, CLASS_WARNING, (unsigned)diag::Severity::Error, "cannot pass object of %select{non-POD|non-trivial}0 type %1 through variadic %select{function|block|method|constructor}2; call will abort at runtime", 442, SFINAE_Suppress, false, false, 2)
+DIAG(warn_cannot_resolve_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "cannot resolve lock expression", 662, SFINAE_Suppress, false, false, 2)
DIAG(warn_case_empty_range, CLASS_WARNING, (unsigned)diag::Severity::Warning, "empty case range specified", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_case_value_overflow, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overflow converting case value to switch condition type (%0 to %1)", 631, SFINAE_Suppress, false, false, 2)
-DIAG(warn_cast_align, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "cast from %0 to %1 increases required alignment from %2 to %3", 115, SFINAE_Suppress, false, false, 2)
-DIAG(warn_cast_calling_conv, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cast between incompatible calling conventions '%0' and '%1'; calls through this pointer may abort at runtime", 116, SFINAE_Suppress, false, false, 2)
-DIAG(warn_cast_nonnull_to_bool, CLASS_WARNING, (unsigned)diag::Severity::Warning, "nonnull %select{function call|parameter}0 '%1' will evaluate to 'true' on first encounter", 520, SFINAE_Suppress, false, false, 24)
-DIAG(warn_cast_pointer_from_sel, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cast of type %0 to %1 is deprecated; use sel_getName instead", 117, SFINAE_Suppress, false, false, 2)
-DIAG(warn_cast_qual, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "cast from %0 to %1 drops %select{const and volatile qualifiers|const qualifier|volatile qualifier}2", 118, SFINAE_Suppress, false, false, 2)
-DIAG(warn_cast_qual2, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "cast from %0 to %1 must have all intermediate pointers const qualified to be safe", 118, SFINAE_Suppress, false, false, 2)
-DIAG(warn_category_method_impl_match, CLASS_WARNING, (unsigned)diag::Severity::Warning, "category is implementing a method which will also be implemented by its primary class", 477, SFINAE_Suppress, false, false, 2)
-DIAG(warn_cconv_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "calling convention %0 ignored for this target", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_cconv_knr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "function with no prototype cannot use the %0 calling convention", 404, SFINAE_Suppress, false, false, 2)
-DIAG(warn_cconv_structors, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 calling convention ignored on constructor/destructor", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_cconv_varargs, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 calling convention ignored on variadic function", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_cdtor_function_try_handler_mem_expr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cannot refer to a non-static member from the handler of a %select{constructor|destructor}0 function try block", 205, SFINAE_Suppress, false, false, 2)
+DIAG(warn_case_value_overflow, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overflow converting case value to switch condition type (%0 to %1)", 644, SFINAE_Suppress, false, false, 2)
+DIAG(warn_cast_align, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "cast from %0 to %1 increases required alignment from %2 to %3", 116, SFINAE_Suppress, false, false, 2)
+DIAG(warn_cast_calling_conv, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cast between incompatible calling conventions '%0' and '%1'; calls through this pointer may abort at runtime", 117, SFINAE_Suppress, false, false, 2)
+DIAG(warn_cast_nonnull_to_bool, CLASS_WARNING, (unsigned)diag::Severity::Warning, "nonnull %select{function call|parameter}0 '%1' will evaluate to 'true' on first encounter", 531, SFINAE_Suppress, false, false, 24)
+DIAG(warn_cast_pointer_from_sel, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cast of type %0 to %1 is deprecated; use sel_getName instead", 118, SFINAE_Suppress, false, false, 2)
+DIAG(warn_cast_qual, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "cast from %0 to %1 drops %select{const and volatile qualifiers|const qualifier|volatile qualifier}2", 119, SFINAE_Suppress, false, false, 2)
+DIAG(warn_cast_qual2, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "cast from %0 to %1 must have all intermediate pointers const qualified to be safe", 119, SFINAE_Suppress, false, false, 2)
+DIAG(warn_category_method_impl_match, CLASS_WARNING, (unsigned)diag::Severity::Warning, "category is implementing a method which will also be implemented by its primary class", 487, SFINAE_Suppress, false, false, 2)
+DIAG(warn_cconv_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "calling convention %0 ignored for this target", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_cconv_knr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "function with no prototype cannot use the %0 calling convention", 413, SFINAE_Suppress, false, false, 2)
+DIAG(warn_cconv_structors, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 calling convention ignored on constructor/destructor", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_cconv_varargs, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 calling convention ignored on variadic function", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_cdtor_function_try_handler_mem_expr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cannot refer to a non-static member from the handler of a %select{constructor|destructor}0 function try block", 212, SFINAE_Suppress, false, false, 2)
DIAG(warn_cfstring_truncated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "input conversion stopped due to an input byte that does not belong to the input codeset UTF-8", 3, SFINAE_Suppress, false, false, 2)
-DIAG(warn_class_method_not_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "class method %objcclass0 not found (return type defaults to 'id')", 465, SFINAE_Suppress, false, false, 2)
-DIAG(warn_class_method_not_found_with_typo, CLASS_WARNING, (unsigned)diag::Severity::Warning, "class method %objcclass0 not found (return type defaults to 'id'); did you mean %objcclass2?", 465, SFINAE_Suppress, false, false, 2)
-DIAG(warn_cleanup_ext, CLASS_WARNING, (unsigned)diag::Severity::Warning, "GCC does not allow the 'cleanup' attribute argument to be anything other than a simple identifier", 242, SFINAE_Suppress, false, false, 2)
-DIAG(warn_cocoa_naming_owned_rule, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property follows Cocoa naming convention for returning 'owned' objects", 474, SFINAE_Suppress, false, false, 2)
+DIAG(warn_class_method_not_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "class method %objcclass0 not found (return type defaults to 'id')", 475, SFINAE_Suppress, false, false, 2)
+DIAG(warn_class_method_not_found_with_typo, CLASS_WARNING, (unsigned)diag::Severity::Warning, "class method %objcclass0 not found (return type defaults to 'id'); did you mean %objcclass2?", 475, SFINAE_Suppress, false, false, 2)
+DIAG(warn_cleanup_ext, CLASS_WARNING, (unsigned)diag::Severity::Warning, "GCC does not allow the 'cleanup' attribute argument to be anything other than a simple identifier", 250, SFINAE_Suppress, false, false, 2)
+DIAG(warn_cocoa_naming_owned_rule, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property follows Cocoa naming convention for returning 'owned' objects", 484, SFINAE_Suppress, false, false, 2)
DIAG(warn_collection_expr_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "collection expression type %0 may not respond to %1", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_comma_operator, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "possible misuse of comma operator here", 124, SFINAE_Suppress, false, false, 2)
-DIAG(warn_comparison_always, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{self-|array }0comparison always evaluates to %select{a constant|%2}1", 637, SFINAE_Suppress, false, false, 2)
-DIAG(warn_comparison_bitwise_always, CLASS_WARNING, (unsigned)diag::Severity::Warning, "bitwise comparison always evaluates to %select{false|true}0", 637, SFINAE_Suppress, false, false, 2)
-DIAG(warn_comparison_of_mixed_enum_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "comparison of two values with different enumeration types%diff{ ($ and $)|}0,1", 201, SFINAE_Suppress, false, false, 2)
-DIAG(warn_comparison_of_mixed_enum_types_switch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "comparison of two values with different enumeration types in switch statement%diff{ ($ and $)|}0,1", 202, SFINAE_Suppress, false, false, 2)
-DIAG(warn_concatenated_nsarray_literal, CLASS_WARNING, (unsigned)diag::Severity::Warning, "concatenated NSString literal for an NSArray expression - possibly missing a comma", 485, SFINAE_Suppress, false, false, 2)
-DIAG(warn_condition_is_assignment, CLASS_WARNING, (unsigned)diag::Severity::Warning, "using the result of an assignment as a condition without parentheses", 508, SFINAE_Suppress, false, false, 2)
-DIAG(warn_condition_is_idiomatic_assignment, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "using the result of an assignment as a condition without parentheses", 273, SFINAE_Suppress, false, false, 2)
-DIAG(warn_conflicting_overriding_param_modifiers, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting distributed object modifiers on parameter type in declaration of %0", 504, SFINAE_Suppress, false, false, 2)
-DIAG(warn_conflicting_overriding_param_types, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting parameter types in declaration of %0%diff{: $ vs $|}1,2", 504, SFINAE_Suppress, false, false, 2)
-DIAG(warn_conflicting_overriding_ret_type_modifiers, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting distributed object modifiers on return type in declaration of %0", 504, SFINAE_Suppress, false, false, 2)
-DIAG(warn_conflicting_overriding_ret_types, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting return type in declaration of %0%diff{: $ vs $|}1,2", 504, SFINAE_Suppress, false, false, 2)
-DIAG(warn_conflicting_overriding_variadic, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting variadic declaration of method and its implementation", 504, SFINAE_Suppress, false, false, 2)
-DIAG(warn_conflicting_param_modifiers, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting distributed object modifiers on parameter type in implementation of %0", 174, SFINAE_Suppress, false, false, 2)
-DIAG(warn_conflicting_param_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting parameter types in implementation of %0%diff{: $ vs $|}1,2", 392, SFINAE_Suppress, false, false, 2)
-DIAG(warn_conflicting_ret_type_modifiers, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting distributed object modifiers on return type in implementation of %0", 174, SFINAE_Suppress, false, false, 2)
-DIAG(warn_conflicting_ret_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting return type in implementation of %0%diff{: $ vs $|}1,2", 393, SFINAE_Suppress, false, false, 2)
+DIAG(warn_comma_operator, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "possible misuse of comma operator here", 125, SFINAE_Suppress, false, false, 2)
+DIAG(warn_comparison_always, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{self-|array }0comparison always evaluates to %select{a constant|%2}1", 650, SFINAE_Suppress, false, false, 2)
+DIAG(warn_comparison_bitwise_always, CLASS_WARNING, (unsigned)diag::Severity::Warning, "bitwise comparison always evaluates to %select{false|true}0", 650, SFINAE_Suppress, false, false, 2)
+DIAG(warn_comparison_of_mixed_enum_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "comparison of two values with different enumeration types%diff{ ($ and $)|}0,1", 208, SFINAE_Suppress, false, false, 2)
+DIAG(warn_comparison_of_mixed_enum_types_switch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "comparison of two values with different enumeration types in switch statement%diff{ ($ and $)|}0,1", 209, SFINAE_Suppress, false, false, 2)
+DIAG(warn_concatenated_nsarray_literal, CLASS_WARNING, (unsigned)diag::Severity::Warning, "concatenated NSString literal for an NSArray expression - possibly missing a comma", 495, SFINAE_Suppress, false, false, 2)
+DIAG(warn_condition_is_assignment, CLASS_WARNING, (unsigned)diag::Severity::Warning, "using the result of an assignment as a condition without parentheses", 519, SFINAE_Suppress, false, false, 2)
+DIAG(warn_condition_is_idiomatic_assignment, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "using the result of an assignment as a condition without parentheses", 281, SFINAE_Suppress, false, false, 2)
+DIAG(warn_conflicting_overriding_param_modifiers, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting distributed object modifiers on parameter type in declaration of %0", 515, SFINAE_Suppress, false, false, 2)
+DIAG(warn_conflicting_overriding_param_types, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting parameter types in declaration of %0%diff{: $ vs $|}1,2", 515, SFINAE_Suppress, false, false, 2)
+DIAG(warn_conflicting_overriding_ret_type_modifiers, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting distributed object modifiers on return type in declaration of %0", 515, SFINAE_Suppress, false, false, 2)
+DIAG(warn_conflicting_overriding_ret_types, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting return type in declaration of %0%diff{: $ vs $|}1,2", 515, SFINAE_Suppress, false, false, 2)
+DIAG(warn_conflicting_overriding_variadic, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting variadic declaration of method and its implementation", 515, SFINAE_Suppress, false, false, 2)
+DIAG(warn_conflicting_param_modifiers, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting distributed object modifiers on parameter type in implementation of %0", 180, SFINAE_Suppress, false, false, 2)
+DIAG(warn_conflicting_param_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting parameter types in implementation of %0%diff{: $ vs $|}1,2", 401, SFINAE_Suppress, false, false, 2)
+DIAG(warn_conflicting_ret_type_modifiers, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting distributed object modifiers on return type in implementation of %0", 180, SFINAE_Suppress, false, false, 2)
+DIAG(warn_conflicting_ret_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting return type in implementation of %0%diff{: $ vs $|}1,2", 402, SFINAE_Suppress, false, false, 2)
DIAG(warn_conflicting_variadic, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting variadic declaration of method and its implementation", 0, SFINAE_Suppress, false, false, 2)
DIAG(warn_conv_to_base_not_used, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conversion function converting %0 to its base class %1 will never be used", 0, SFINAE_Suppress, false, false, 2)
DIAG(warn_conv_to_self_not_used, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conversion function converting %0 to itself will never be used", 0, SFINAE_Suppress, false, false, 2)
DIAG(warn_conv_to_void_not_used, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conversion function converting %0 to %1 will never be used", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_coroutine_promise_unhandled_exception_required_with_exceptions, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is required to declare the member 'unhandled_exception()' when exceptions are enabled", 139, SFINAE_Suppress, false, false, 14)
-DIAG(warn_cstruct_memaccess, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{destination for|source of|first operand of|second operand of}0 this %1 call is a pointer to record %2 that is not trivial to %select{primitive-default-initialize|primitive-copy}3", 439, SFINAE_Suppress, false, false, 2)
-DIAG(warn_ctor_parm_shadows_field, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "constructor parameter %0 shadows the field %1 of %2", 580, SFINAE_Suppress, false, false, 2)
+DIAG(warn_coroutine_promise_unhandled_exception_required_with_exceptions, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is required to declare the member 'unhandled_exception()' when exceptions are enabled", 140, SFINAE_Suppress, false, false, 14)
+DIAG(warn_cstruct_memaccess, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{destination for|source of|first operand of|second operand of}0 this %1 call is a pointer to record %2 that is not trivial to %select{primitive-default-initialize|primitive-copy}3", 449, SFINAE_Suppress, false, false, 2)
+DIAG(warn_ctad_maybe_unsupported, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 may not intend to support class template argument deduction", 144, SFINAE_Suppress, false, false, 2)
+DIAG(warn_ctor_parm_shadows_field, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "constructor parameter %0 shadows the field %1 of %2", 592, SFINAE_Suppress, false, false, 2)
DIAG(warn_cxx11_compat_constexpr_body_invalid_stmt, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "use of this statement in a constexpr %select{function|constructor}0 is incompatible with C++ standards before C++14", 103, SFINAE_Suppress, false, false, 2)
DIAG(warn_cxx11_compat_constexpr_body_multiple_return, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "multiple return statements in constexpr function is incompatible with C++ standards before C++14", 103, SFINAE_Suppress, false, false, 2)
DIAG(warn_cxx11_compat_constexpr_body_no_return, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "constexpr function with no return statements is incompatible with C++ standards before C++14", 103, SFINAE_Suppress, false, false, 2)
@@ -2823,14 +2835,15 @@
DIAG(warn_cxx11_compat_generic_lambda, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "generic lambdas are incompatible with C++11", 103, SFINAE_Suppress, false, false, 3)
DIAG(warn_cxx11_compat_init_capture, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "initialized lambda captures are incompatible with C++ standards before C++14", 103, SFINAE_Suppress, false, false, 3)
DIAG(warn_cxx11_compat_variable_template, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable templates are incompatible with C++ standards before C++14", 103, SFINAE_Suppress, false, false, 2)
-DIAG(warn_cxx11_gnu_attribute_on_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 ignored, because it cannot be applied to a type", 274, SFINAE_Suppress, false, false, 2)
+DIAG(warn_cxx11_gnu_attribute_on_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 ignored, because it cannot be applied to a type", 282, SFINAE_Suppress, false, false, 2)
DIAG(warn_cxx14_compat_class_template_argument_deduction, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "class template argument deduction is incompatible with C++ standards before C++17%select{|; for compatibility, use explicit type name %1}0", 101, SFINAE_Suppress, false, false, 2)
-DIAG(warn_cxx14_compat_constexpr_not_const, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'constexpr' non-static member function will not be implicitly 'const' in C++14; add 'const' to avoid a change in behavior", 134, SFINAE_Suppress, false, false, 2)
+DIAG(warn_cxx14_compat_constexpr_not_const, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'constexpr' non-static member function will not be implicitly 'const' in C++14; add 'const' to avoid a change in behavior", 135, SFINAE_Suppress, false, false, 2)
DIAG(warn_cxx14_compat_decomp_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "decomposition declarations are incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 2)
DIAG(warn_cxx14_compat_inline_variable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "inline variables are incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 2)
DIAG(warn_cxx14_compat_star_this_lambda_capture, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "by value capture of '*this' is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 3)
-DIAG(warn_cxx14_compat_static_assert_no_message, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "static_assert with no message is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 2)
DIAG(warn_cxx14_compat_template_nontype_parm_auto_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "non-type template parameters declared with %0 are incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 2)
+DIAG(warn_cxx17_compat_constexpr_body_invalid_stmt, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "use of this statement in a constexpr %select{function|constructor}0 is incompatible with C++ standards before C++2a", 99, SFINAE_Suppress, false, false, 2)
+DIAG(warn_cxx17_compat_constexpr_function_try_block, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "function try block in constexpr %select{function|constructor}0 is incompatible with C++ standards before C++2a", 99, SFINAE_Suppress, false, false, 2)
DIAG(warn_cxx17_compat_defaulted_method_type_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicitly defaulting this %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}0 with a type different from the implicit type is incompatible with C++ standards before C++2a", 99, SFINAE_Suppress, false, false, 2)
DIAG(warn_cxx17_compat_equals_this_lambda_capture, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicit capture of 'this' with a capture default of '=' is incompatible with C++ standards before C++2a", 99, SFINAE_Suppress, false, false, 3)
DIAG(warn_cxx17_compat_exception_spec_in_signature, CLASS_WARNING, (unsigned)diag::Severity::Warning, "mangled name of %0 will change in C++17 due to non-throwing exception specification in function signature", 89, SFINAE_Suppress, false, false, 2)
@@ -2838,6 +2851,7 @@
DIAG(warn_cxx17_compat_pointer_to_const_ref_member_on_rvalue, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "invoking a pointer to a 'const &' member function on an rvalue is incompatible with C++ standards before C++2a", 100, SFINAE_Suppress, false, false, 2)
DIAG(warn_cxx17_compat_unicode_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'char8_t' type specifier is incompatible with C++ standards before C++20", 99, SFINAE_Suppress, false, false, 2)
DIAG(warn_cxx2a_compat_aggregate_init_with_ctors, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "aggregate initialization of type %0 with user-declared constructors is incompatible with C++2a", 96, SFINAE_Suppress, false, false, 2)
+DIAG(warn_cxx2a_compat_utf8_string, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "type of UTF-8 string literal will change from array of const char to array of const char8_t in C++2a", 96, SFINAE_Suppress, false, false, 2)
DIAG(warn_cxx98_compat_array_size_conversion, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion from array size expression of type %0 to %select{integral|enumeration}1 type %2 is incompatible with C++98", 110, SFINAE_Suppress, false, false, 2)
DIAG(warn_cxx98_compat_auto_type_specifier, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'auto' type specifier is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2)
DIAG(warn_cxx98_compat_cast_fn_obj, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "cast between pointer-to-function and pointer-to-object is incompatible with C++98", 110, SFINAE_Suppress, false, false, 2)
@@ -2872,580 +2886,574 @@
DIAG(warn_cxx98_compat_unelaborated_friend_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "befriending %1 without '%select{struct|interface|union|class|enum}0' keyword is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2)
DIAG(warn_cxx98_compat_unicode_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%0' type specifier is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2)
DIAG(warn_cxx98_compat_using_decl_constructor, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "inheriting constructors are incompatible with C++98", 106, SFINAE_Suppress, false, false, 2)
-DIAG(warn_cxx_ms_struct, CLASS_WARNING, (unsigned)diag::Severity::Error, "ms_struct may not produce Microsoft-compatible layouts for classes with base classes or virtual functions", 300, SFINAE_Suppress, false, false, 2)
-DIAG(warn_dangling_member, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{reference|backing array for 'std::initializer_list'}2 %select{|subobject of }1member %0 %select{binds to|is}2 a temporary object whose lifetime is shorter than the lifetime of the constructed object", 148, SFINAE_Suppress, false, false, 2)
-DIAG(warn_dangling_variable, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{temporary %select{whose address is used as value of|%select{|implicitly }2bound to}4 %select{%select{|reference }4member of local variable|local %select{variable|reference}4}1|array backing %select{initializer list subobject of local variable|local initializer list}1}0 %select{%3 |}2will be destroyed at the end of the full-expression", 146, SFINAE_Suppress, false, false, 2)
-DIAG(warn_dealloc_in_category, CLASS_WARNING, (unsigned)diag::Severity::Warning, "-dealloc is being overridden in a category", 151, SFINAE_Suppress, false, false, 2)
-DIAG(warn_decl_in_param_list, CLASS_WARNING, (unsigned)diag::Severity::Warning, "declaration of %0 will not be visible outside of this function", 736, SFINAE_Suppress, false, false, 2)
-DIAG(warn_decl_shadow, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration shadows a %select{local variable|variable in %2|static data member of %2|field of %2|typedef in %2|type alias in %2}1", 577, SFINAE_Suppress, false, false, 2)
-DIAG(warn_decl_shadow_uncaptured_local, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration shadows a %select{local variable|variable in %2|static data member of %2|field of %2|typedef in %2|type alias in %2}1", 583, SFINAE_Suppress, false, false, 2)
-DIAG(warn_declspec_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 is ignored, place it after \"%select{class|struct|interface|union|enum}1\" to apply attribute to type declaration", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_deep_exception_specs_differ, CLASS_WARNING, (unsigned)diag::Severity::Warning, "exception specifications of %select{return|argument}0 types differ", 297, SFINAE_Suppress, false, false, 2)
-DIAG(warn_def_missing_case, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%plural{1:enumeration value %1 not explicitly handled in switch|2:enumeration values %1 and %2 not explicitly handled in switch|3:enumeration values %1, %2, and %3 not explicitly handled in switch|:%0 enumeration values not explicitly handled in switch: %1, %2, %3...}0", 634, SFINAE_Suppress, false, false, 2)
-DIAG(warn_default_atomic_custom_getter_setter, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "atomic by default property %0 has a user defined %select{getter|setter}1 (property should be marked 'atomic' if this is intended)", 145, SFINAE_Suppress, false, false, 2)
-DIAG(warn_defaulted_method_deleted, CLASS_WARNING, (unsigned)diag::Severity::Warning, "explicitly defaulted %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}0 is implicitly deleted", 154, SFINAE_Suppress, false, false, 2)
-DIAG(warn_delegating_ctor_cycle, CLASS_WARNING, (unsigned)diag::Severity::Error, "constructor for %0 creates a delegation cycle", 155, SFINAE_Suppress, false, false, 2)
-DIAG(warn_delete_abstract_non_virtual_dtor, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{delete|destructor}0 called on %1 that is abstract but has non-virtual destructor", 157, SFINAE_Suppress, false, true, 2)
+DIAG(warn_cxx_ms_struct, CLASS_WARNING, (unsigned)diag::Severity::Error, "ms_struct may not produce Microsoft-compatible layouts for classes with base classes or virtual functions", 309, SFINAE_Suppress, false, false, 2)
+DIAG(warn_dangling_member, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{reference|backing array for 'std::initializer_list'}2 %select{|subobject of }1member %0 %select{binds to|is}2 a temporary object whose lifetime is shorter than the lifetime of the constructed object", 151, SFINAE_Suppress, false, false, 2)
+DIAG(warn_dangling_variable, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{temporary %select{whose address is used as value of|%select{|implicitly }2bound to}4 %select{%select{|reference }4member of local variable|local %select{variable|reference}4}1|array backing %select{initializer list subobject of local variable|local initializer list}1}0 %select{%3 |}2will be destroyed at the end of the full-expression", 149, SFINAE_Suppress, false, false, 2)
+DIAG(warn_dealloc_in_category, CLASS_WARNING, (unsigned)diag::Severity::Warning, "-dealloc is being overridden in a category", 155, SFINAE_Suppress, false, false, 2)
+DIAG(warn_decl_in_param_list, CLASS_WARNING, (unsigned)diag::Severity::Warning, "declaration of %0 will not be visible outside of this function", 749, SFINAE_Suppress, false, false, 2)
+DIAG(warn_decl_shadow, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration shadows a %select{local variable|variable in %2|static data member of %2|field of %2|typedef in %2|type alias in %2}1", 589, SFINAE_Suppress, false, false, 2)
+DIAG(warn_decl_shadow_uncaptured_local, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration shadows a %select{local variable|variable in %2|static data member of %2|field of %2|typedef in %2|type alias in %2}1", 595, SFINAE_Suppress, false, false, 2)
+DIAG(warn_declspec_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 is ignored, place it after \"%select{class|struct|interface|union|enum}1\" to apply attribute to type declaration", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_deep_exception_specs_differ, CLASS_WARNING, (unsigned)diag::Severity::Warning, "exception specifications of %select{return|argument}0 types differ", 306, SFINAE_Suppress, false, false, 2)
+DIAG(warn_def_missing_case, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%plural{1:enumeration value %1 not explicitly handled in switch|2:enumeration values %1 and %2 not explicitly handled in switch|3:enumeration values %1, %2, and %3 not explicitly handled in switch|:%0 enumeration values not explicitly handled in switch: %1, %2, %3...}0", 647, SFINAE_Suppress, false, false, 2)
+DIAG(warn_default_atomic_custom_getter_setter, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "atomic by default property %0 has a user defined %select{getter|setter}1 (property should be marked 'atomic' if this is intended)", 148, SFINAE_Suppress, false, false, 2)
+DIAG(warn_defaulted_method_deleted, CLASS_WARNING, (unsigned)diag::Severity::Warning, "explicitly defaulted %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}0 is implicitly deleted", 158, SFINAE_Suppress, false, false, 2)
+DIAG(warn_delegating_ctor_cycle, CLASS_WARNING, (unsigned)diag::Severity::Error, "constructor for %0 creates a delegation cycle", 159, SFINAE_Suppress, false, false, 2)
+DIAG(warn_delete_abstract_non_virtual_dtor, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{delete|destructor}0 called on %1 that is abstract but has non-virtual destructor", 160, SFINAE_Suppress, false, true, 2)
DIAG(warn_delete_array_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'delete' applied to a pointer-to-array type %0 treated as 'delete[]'", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_delete_incomplete, CLASS_WARNING, (unsigned)diag::Severity::Warning, "deleting pointer to incomplete type %0 may cause undefined behavior", 156, SFINAE_Suppress, false, false, 2)
-DIAG(warn_delete_non_virtual_dtor, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{delete|destructor}0 called on non-final %1 that has virtual functions but non-virtual destructor", 157, SFINAE_Suppress, false, true, 2)
-DIAG(warn_deprecated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is deprecated", 160, SFINAE_Suppress, false, false, 27)
-DIAG(warn_deprecated_anonymous_namespace, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'deprecated' attribute on anonymous namespace ignored", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_deprecated_copy_operation, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "definition of implicit copy %select{constructor|assignment operator}1 for %0 is deprecated because it has a user-declared %select{copy %select{assignment operator|constructor}1|destructor}2", 158, SFINAE_Suppress, false, false, 27)
-DIAG(warn_deprecated_def, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implementing deprecated %select{method|class|category}0", 162, SFINAE_Suppress, false, false, 2)
-DIAG(warn_deprecated_fwdclass_message, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 may be deprecated because the receiver type is unknown", 160, SFINAE_Suppress, false, false, 27)
-DIAG(warn_deprecated_message, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is deprecated: %1", 160, SFINAE_Suppress, false, false, 27)
-DIAG(warn_deprecated_redundant_constexpr_static_def, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "out-of-line definition of constexpr static data member is redundant in C++17 and is deprecated", 158, SFINAE_Suppress, false, false, 27)
-DIAG(warn_deprecated_register, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'register' storage class specifier is deprecated and incompatible with C++17", 167, SFINAE_Suppress, false, false, 27)
+DIAG(warn_delete_incomplete, CLASS_WARNING, (unsigned)diag::Severity::Warning, "deleting pointer to incomplete type %0 may cause undefined behavior", 161, SFINAE_Suppress, false, false, 2)
+DIAG(warn_delete_non_virtual_dtor, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{delete|destructor}0 called on non-final %1 that has virtual functions but non-virtual destructor", 162, SFINAE_Suppress, false, true, 2)
+DIAG(warn_deprecated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is deprecated", 166, SFINAE_Suppress, false, false, 27)
+DIAG(warn_deprecated_anonymous_namespace, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'deprecated' attribute on anonymous namespace ignored", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_deprecated_copy_operation, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "definition of implicit copy %select{constructor|assignment operator}1 for %0 is deprecated because it has a user-declared %select{copy %select{assignment operator|constructor}1|destructor}2", 164, SFINAE_Suppress, false, false, 27)
+DIAG(warn_deprecated_def, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implementing deprecated %select{method|class|category}0", 168, SFINAE_Suppress, false, false, 2)
+DIAG(warn_deprecated_fwdclass_message, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 may be deprecated because the receiver type is unknown", 166, SFINAE_Suppress, false, false, 27)
+DIAG(warn_deprecated_message, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is deprecated: %1", 166, SFINAE_Suppress, false, false, 27)
+DIAG(warn_deprecated_redundant_constexpr_static_def, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "out-of-line definition of constexpr static data member is redundant in C++17 and is deprecated", 164, SFINAE_Suppress, false, false, 27)
+DIAG(warn_deprecated_register, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'register' storage class specifier is deprecated and incompatible with C++17", 173, SFINAE_Suppress, false, false, 27)
DIAG(warn_deprecated_string_literal_conversion, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conversion from string literal to %0 is deprecated", 76, SFINAE_Suppress, false, false, 27)
-DIAG(warn_deprecated_this_capture, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit capture of 'this' with a capture default of '=' is deprecated", 168, SFINAE_Suppress, false, false, 27)
-DIAG(warn_destructor_marked_not_override_overriding, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 overrides a destructor but is not marked 'override'", 310, SFINAE_Suppress, false, false, 2)
-DIAG(warn_diagnose_if_succeeded, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0", 729, SFINAE_Suppress, false, true, 2)
-DIAG(warn_direct_initialize_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "explicit call to +initialize results in duplicate call to +initialize", 209, SFINAE_Suppress, false, false, 2)
-DIAG(warn_direct_ivar_access, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "instance variable %0 is being directly accessed", 170, SFINAE_Suppress, false, false, 2)
-DIAG(warn_direct_super_initialize_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "explicit call to [super initialize] should only be in implementation of +initialize", 209, SFINAE_Suppress, false, false, 2)
-DIAG(warn_dispatch_body_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "body of cpu_dispatch function will be ignored", 240, SFINAE_Suppress, false, false, 0)
-DIAG(warn_dllimport_dropped_from_inline_function, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%q0 redeclared inline; %1 attribute ignored", 274, SFINAE_Suppress, false, false, 2)
+DIAG(warn_deprecated_this_capture, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit capture of 'this' with a capture default of '=' is deprecated", 174, SFINAE_Suppress, false, false, 27)
+DIAG(warn_dereference_of_noderef_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "dereferencing %0; was declared with a 'noderef' type", 436, SFINAE_Suppress, false, false, 0)
+DIAG(warn_dereference_of_noderef_type_no_decl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "dereferencing expression marked as 'noderef'", 436, SFINAE_Suppress, false, false, 0)
+DIAG(warn_destructor_marked_not_override_overriding, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 overrides a destructor but is not marked 'override'", 319, SFINAE_Suppress, false, false, 2)
+DIAG(warn_diagnose_if_succeeded, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0", 742, SFINAE_Suppress, false, true, 2)
+DIAG(warn_direct_initialize_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "explicit call to +initialize results in duplicate call to +initialize", 216, SFINAE_Suppress, false, false, 2)
+DIAG(warn_direct_ivar_access, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "instance variable %0 is being directly accessed", 176, SFINAE_Suppress, false, false, 2)
+DIAG(warn_direct_super_initialize_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "explicit call to [super initialize] should only be in implementation of +initialize", 216, SFINAE_Suppress, false, false, 2)
+DIAG(warn_dispatch_body_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "body of cpu_dispatch function will be ignored", 248, SFINAE_Suppress, false, false, 0)
+DIAG(warn_division_sizeof_ptr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' will return the size of the pointer, not the array itself", 609, SFINAE_Suppress, false, false, 2)
+DIAG(warn_dllimport_dropped_from_inline_function, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%q0 redeclared inline; %1 attribute ignored", 282, SFINAE_Suppress, false, false, 2)
DIAG(warn_double_const_requires_fp64, CLASS_WARNING, (unsigned)diag::Severity::Warning, "double precision constant requires cl_khr_fp64, casting to single precision", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_double_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "acquiring %0 '%1' that is already held", 649, SFINAE_Suppress, false, false, 2)
-DIAG(warn_dup_category_def, CLASS_WARNING, (unsigned)diag::Severity::Warning, "duplicate definition of category %1 on interface %0", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_duplicate_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 is already applied with different parameters", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_duplicate_attribute_exact, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 is already applied", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_duplicate_codeseg_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "duplicate code segment specifiers", 566, SFINAE_Suppress, false, false, 2)
-DIAG(warn_duplicate_declspec, CLASS_WARNING, (unsigned)diag::Severity::Warning, "duplicate '%0' declaration specifier", 187, SFINAE_Suppress, false, false, 2)
-DIAG(warn_duplicate_enum_values, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "element %0 has been implicitly assigned %1 which another element has been assigned", 188, SFINAE_Suppress, false, false, 2)
-DIAG(warn_duplicate_method_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "multiple declarations of method %0 found and ignored", 190, SFINAE_Suppress, false, false, 2)
-DIAG(warn_duplicate_protocol_def, CLASS_WARNING, (unsigned)diag::Severity::Warning, "duplicate protocol definition of %0 is ignored", 191, SFINAE_Suppress, false, false, 2)
-DIAG(warn_dyn_class_memaccess, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{destination for|source of|first operand of|second operand of}0 this %1 call is a pointer to %select{|class containing a }2dynamic class %3; vtable pointer will be %select{overwritten|copied|moved|compared}4", 192, SFINAE_Suppress, false, false, 2)
-DIAG(warn_empty_for_body, CLASS_WARNING, (unsigned)diag::Severity::Warning, "for loop has empty body", 196, SFINAE_Suppress, false, false, 2)
-DIAG(warn_empty_format_string, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format string is empty", 234, SFINAE_Suppress, false, false, 28)
-DIAG(warn_empty_if_body, CLASS_WARNING, (unsigned)diag::Severity::Warning, "if statement has empty body", 196, SFINAE_Suppress, false, false, 2)
-DIAG(warn_empty_parens_are_function_decl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "empty parentheses interpreted as a function declaration", 735, SFINAE_Suppress, false, false, 2)
-DIAG(warn_empty_range_based_for_body, CLASS_WARNING, (unsigned)diag::Severity::Warning, "range-based for loop has empty body", 196, SFINAE_Suppress, false, false, 2)
-DIAG(warn_empty_switch_body, CLASS_WARNING, (unsigned)diag::Severity::Warning, "switch statement has empty body", 196, SFINAE_Suppress, false, false, 2)
-DIAG(warn_empty_while_body, CLASS_WARNING, (unsigned)diag::Severity::Warning, "while loop has empty body", 196, SFINAE_Suppress, false, false, 2)
+DIAG(warn_double_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "acquiring %0 '%1' that is already held", 662, SFINAE_Suppress, false, false, 2)
+DIAG(warn_duplicate_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 is already applied with different parameters", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_duplicate_attribute_exact, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 is already applied", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_duplicate_codeseg_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "duplicate code segment specifiers", 578, SFINAE_Suppress, false, false, 2)
+DIAG(warn_duplicate_enum_values, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "element %0 has been implicitly assigned %1 which another element has been assigned", 194, SFINAE_Suppress, false, false, 2)
+DIAG(warn_duplicate_method_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "multiple declarations of method %0 found and ignored", 196, SFINAE_Suppress, false, false, 2)
+DIAG(warn_duplicate_protocol_def, CLASS_WARNING, (unsigned)diag::Severity::Warning, "duplicate protocol definition of %0 is ignored", 197, SFINAE_Suppress, false, false, 2)
+DIAG(warn_dyn_class_memaccess, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{destination for|source of|first operand of|second operand of}0 this %1 call is a pointer to %select{|class containing a }2dynamic class %3; vtable pointer will be %select{overwritten|copied|moved|compared}4", 198, SFINAE_Suppress, false, false, 2)
+DIAG(warn_empty_for_body, CLASS_WARNING, (unsigned)diag::Severity::Warning, "for loop has empty body", 202, SFINAE_Suppress, false, false, 2)
+DIAG(warn_empty_format_string, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format string is empty", 242, SFINAE_Suppress, false, false, 28)
+DIAG(warn_empty_if_body, CLASS_WARNING, (unsigned)diag::Severity::Warning, "if statement has empty body", 202, SFINAE_Suppress, false, false, 2)
+DIAG(warn_empty_parens_are_function_decl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "empty parentheses interpreted as a function declaration", 748, SFINAE_Suppress, false, false, 2)
+DIAG(warn_empty_range_based_for_body, CLASS_WARNING, (unsigned)diag::Severity::Warning, "range-based for loop has empty body", 202, SFINAE_Suppress, false, false, 2)
+DIAG(warn_empty_switch_body, CLASS_WARNING, (unsigned)diag::Severity::Warning, "switch statement has empty body", 202, SFINAE_Suppress, false, false, 2)
+DIAG(warn_empty_while_body, CLASS_WARNING, (unsigned)diag::Severity::Warning, "while loop has empty body", 202, SFINAE_Suppress, false, false, 2)
DIAG(warn_enum_value_overflow, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overflow in enumeration value", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_equality_with_extra_parens, CLASS_WARNING, (unsigned)diag::Severity::Warning, "equality comparison with extraneous parentheses", 509, SFINAE_Suppress, false, false, 2)
-DIAG(warn_exception_caught_by_earlier_handler, CLASS_WARNING, (unsigned)diag::Severity::Warning, "exception of type %0 will be caught by earlier handler", 205, SFINAE_Suppress, false, false, 2)
-DIAG(warn_exception_spec_deprecated, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "dynamic exception specifications are deprecated", 161, SFINAE_Suppress, false, false, 27)
-DIAG(warn_exit_time_destructor, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration requires an exit-time destructor", 206, SFINAE_Suppress, false, false, 2)
-DIAG(warn_expecting_lock_held_on_loop, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "expecting %0 '%1' to be held at start of each loop", 649, SFINAE_Suppress, false, false, 2)
-DIAG(warn_expecting_locked, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "expecting %0 '%1' to be held at the end of function", 649, SFINAE_Suppress, false, false, 2)
-DIAG(warn_explicit_instantiation_after_specialization, CLASS_WARNING, (unsigned)diag::Severity::Warning, "explicit instantiation of %0 that occurs after an explicit specialization has no effect", 320, SFINAE_Suppress, false, false, 2)
+DIAG(warn_equality_with_extra_parens, CLASS_WARNING, (unsigned)diag::Severity::Warning, "equality comparison with extraneous parentheses", 520, SFINAE_Suppress, false, false, 2)
+DIAG(warn_exception_caught_by_earlier_handler, CLASS_WARNING, (unsigned)diag::Severity::Warning, "exception of type %0 will be caught by earlier handler", 212, SFINAE_Suppress, false, false, 2)
+DIAG(warn_exit_time_destructor, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration requires an exit-time destructor", 213, SFINAE_Suppress, false, false, 2)
+DIAG(warn_expecting_lock_held_on_loop, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "expecting %0 '%1' to be held at start of each loop", 662, SFINAE_Suppress, false, false, 2)
+DIAG(warn_expecting_locked, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "expecting %0 '%1' to be held at the end of function", 662, SFINAE_Suppress, false, false, 2)
+DIAG(warn_explicit_instantiation_after_specialization, CLASS_WARNING, (unsigned)diag::Severity::Warning, "explicit instantiation of %0 that occurs after an explicit specialization has no effect", 329, SFINAE_Suppress, false, false, 2)
DIAG(warn_explicit_instantiation_inline_0x, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicit instantiation cannot be 'inline'", 75, SFINAE_Suppress, false, false, 2)
DIAG(warn_explicit_instantiation_must_be_global_0x, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicit instantiation of %0 must occur at global scope", 75, SFINAE_Suppress, false, false, 2)
DIAG(warn_explicit_instantiation_out_of_scope_0x, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicit instantiation of %0 not in a namespace enclosing %1", 75, SFINAE_Suppress, false, false, 2)
DIAG(warn_explicit_instantiation_unqualified_wrong_namespace_0x, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicit instantiation of %q0 must occur in namespace %1", 75, SFINAE_Suppress, false, false, 2)
-DIAG(warn_extern_init, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'extern' variable has an initializer", 212, SFINAE_Suppress, false, false, 2)
-DIAG(warn_falloff_nonvoid_coroutine, CLASS_WARNING, (unsigned)diag::Severity::Warning, "control reaches end of coroutine; which is undefined behavior because the promise type %0 does not declare 'return_void()'", 563, SFINAE_Suppress, false, false, 2)
-DIAG(warn_falloff_nonvoid_function, CLASS_WARNING, (unsigned)diag::Severity::Warning, "control reaches end of non-void function", 563, SFINAE_Suppress, false, false, 2)
-DIAG(warn_falloff_nonvoid_lambda, CLASS_WARNING, (unsigned)diag::Severity::Warning, "control reaches end of non-void lambda", 563, SFINAE_Suppress, false, false, 3)
-DIAG(warn_falloff_noreturn_function, CLASS_WARNING, (unsigned)diag::Severity::Warning, "function declared 'noreturn' should not return", 331, SFINAE_Suppress, false, false, 2)
-DIAG(warn_fallthrough_attr_unreachable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "fallthrough annotation in unreachable code", 284, SFINAE_Suppress, false, false, 2)
-DIAG(warn_field_is_uninit, CLASS_WARNING, (unsigned)diag::Severity::Warning, "field %0 is uninitialized when used here", 679, SFINAE_Suppress, false, false, 2)
-DIAG(warn_flag_enum_constant_out_of_range, CLASS_WARNING, (unsigned)diag::Severity::Warning, "enumeration value %0 is out of range of flags in enumeration type %1", 219, SFINAE_Suppress, false, false, 2)
-DIAG(warn_float_overflow, CLASS_WARNING, (unsigned)diag::Severity::Warning, "magnitude of floating-point constant too large for type %0; maximum is %1", 347, SFINAE_Suppress, false, false, 2)
-DIAG(warn_float_underflow, CLASS_WARNING, (unsigned)diag::Severity::Warning, "magnitude of floating-point constant too small for type %0; minimum is %1", 347, SFINAE_Suppress, false, false, 2)
-DIAG(warn_floatingpoint_eq, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "comparing floating point with == or != is unsafe", 222, SFINAE_Suppress, false, false, 2)
+DIAG(warn_extern_init, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'extern' variable has an initializer", 219, SFINAE_Suppress, false, false, 2)
+DIAG(warn_falloff_nonvoid_coroutine, CLASS_WARNING, (unsigned)diag::Severity::Warning, "control reaches end of coroutine; which is undefined behavior because the promise type %0 does not declare 'return_void()'", 575, SFINAE_Suppress, false, false, 2)
+DIAG(warn_falloff_nonvoid_function, CLASS_WARNING, (unsigned)diag::Severity::Warning, "control reaches end of non-void function", 575, SFINAE_Suppress, false, false, 2)
+DIAG(warn_falloff_nonvoid_lambda, CLASS_WARNING, (unsigned)diag::Severity::Warning, "control reaches end of non-void lambda", 575, SFINAE_Suppress, false, false, 3)
+DIAG(warn_falloff_noreturn_function, CLASS_WARNING, (unsigned)diag::Severity::Warning, "function declared 'noreturn' should not return", 340, SFINAE_Suppress, false, false, 2)
+DIAG(warn_fallthrough_attr_unreachable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "fallthrough annotation in unreachable code", 292, SFINAE_Suppress, false, false, 2)
+DIAG(warn_field_is_uninit, CLASS_WARNING, (unsigned)diag::Severity::Warning, "field %0 is uninitialized when used here", 692, SFINAE_Suppress, false, false, 2)
+DIAG(warn_flag_enum_constant_out_of_range, CLASS_WARNING, (unsigned)diag::Severity::Warning, "enumeration value %0 is out of range of flags in enumeration type %1", 227, SFINAE_Suppress, false, false, 2)
+DIAG(warn_float_overflow, CLASS_WARNING, (unsigned)diag::Severity::Warning, "magnitude of floating-point constant too large for type %0; maximum is %1", 356, SFINAE_Suppress, false, false, 2)
+DIAG(warn_float_underflow, CLASS_WARNING, (unsigned)diag::Severity::Warning, "magnitude of floating-point constant too small for type %0; minimum is %1", 356, SFINAE_Suppress, false, false, 2)
+DIAG(warn_floatingpoint_eq, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "comparing floating point with == or != is unsafe", 230, SFINAE_Suppress, false, false, 2)
DIAG(warn_for_range_begin_end_types_differ, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'begin' and 'end' returning different types (%0 and %1) is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 2)
-DIAG(warn_for_range_const_reference_copy, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "loop variable %0 %diff{has type $ but is initialized with type $| is initialized with a value of a different type}1,2 resulting in a copy", 544, SFINAE_Suppress, false, false, 2)
-DIAG(warn_for_range_copy, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "loop variable %0 of type %1 creates a copy from type %2", 544, SFINAE_Suppress, false, false, 2)
-DIAG(warn_for_range_variable_always_copy, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "loop variable %0 is always a copy because the range of type %1 does not return a reference", 544, SFINAE_Suppress, false, false, 2)
-DIAG(warn_format_P_no_precision, CLASS_WARNING, (unsigned)diag::Severity::Warning, "using '%%P' format specifier without precision", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_format_argument_needs_cast, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{values of type|enum values with underlying type}2 '%0' should not be used as format arguments; add an explicit cast to %1 instead", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_format_argument_needs_cast_pedantic, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{values of type|enum values with underlying type}2 '%0' should not be used as format arguments; add an explicit cast to %1 instead", 231, SFINAE_Suppress, false, false, 2)
-DIAG(warn_format_conversion_argument_type_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format specifies type %0 but the argument has %select{type|underlying type}2 %1", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_format_conversion_argument_type_mismatch_pedantic, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "format specifies type %0 but the argument has %select{type|underlying type}2 %1", 231, SFINAE_Suppress, false, false, 2)
-DIAG(warn_format_invalid_annotation, CLASS_WARNING, (unsigned)diag::Severity::Warning, "using '%0' format specifier annotation outside of os_log()/os_trace()", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_format_invalid_conversion, CLASS_WARNING, (unsigned)diag::Severity::Warning, "invalid conversion specifier '%0'", 228, SFINAE_Suppress, false, false, 28)
-DIAG(warn_format_invalid_positional_specifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "invalid position specified for %select{field width|field precision}0", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_format_mix_positional_nonpositional_args, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cannot mix positional and non-positional arguments in format string", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_format_non_standard, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%0' %select{length modifier|conversion specifier}1 is not supported by ISO C", 229, SFINAE_Suppress, false, false, 2)
-DIAG(warn_format_non_standard_conversion_spec, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "using length modifier '%0' with conversion specifier '%1' is not supported by ISO C", 229, SFINAE_Suppress, false, false, 2)
-DIAG(warn_format_non_standard_positional_arg, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "positional arguments are not supported by ISO C", 229, SFINAE_Suppress, false, false, 2)
-DIAG(warn_format_nonliteral, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "format string is not a string literal", 230, SFINAE_Suppress, false, false, 2)
-DIAG(warn_format_nonliteral_noargs, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format string is not a string literal (potentially insecure)", 232, SFINAE_Suppress, false, false, 28)
-DIAG(warn_format_nonsensical_length, CLASS_WARNING, (unsigned)diag::Severity::Warning, "length modifier '%0' results in undefined behavior or no effect with '%1' conversion specifier", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_format_string_is_wide_literal, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format string should not be a wide string", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_format_zero_positional_specifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "position arguments in format strings start counting at 1 (not 0)", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_forward_class_redefinition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "redefinition of forward class %0 of a typedef name of an object type is ignored", 459, SFINAE_Suppress, false, false, 2)
-DIAG(warn_fun_excludes_mutex, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "cannot call function '%1' while %0 '%2' is held", 649, SFINAE_Suppress, false, false, 2)
-DIAG(warn_fun_requires_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "calling function %1 requires holding %0 %select{'%2'|'%2' exclusively}3", 649, SFINAE_Suppress, false, false, 2)
-DIAG(warn_fun_requires_lock_precise, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "calling function %1 requires holding %0 %select{'%2'|'%2' exclusively}3", 653, SFINAE_Suppress, false, false, 2)
-DIAG(warn_func_template_missing, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "instantiation of function %q0 required here, but no definition is available", 666, SFINAE_Suppress, false, false, 2)
-DIAG(warn_function_def_in_objc_container, CLASS_WARNING, (unsigned)diag::Severity::Warning, "function definition inside an Objective-C container is deprecated", 239, SFINAE_Suppress, false, false, 2)
-DIAG(warn_function_marked_not_override_overriding, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 overrides a member function but is not marked 'override'", 311, SFINAE_Suppress, false, false, 2)
-DIAG(warn_gc_attribute_weak_on_local, CLASS_WARNING, (unsigned)diag::Severity::Warning, "Objective-C GC does not allow weak variables on the stack", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_gcc_ignores_type_attr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "GCC does not allow the %0 attribute to be written on a type", 242, SFINAE_Suppress, false, false, 2)
-DIAG(warn_global_constructor, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration requires a global constructor", 243, SFINAE_Suppress, false, false, 2)
-DIAG(warn_global_destructor, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration requires a global destructor", 243, SFINAE_Suppress, false, false, 2)
-DIAG(warn_gnu_inline_attribute_requires_inline, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'gnu_inline' attribute requires function to be marked 'inline', attribute ignored", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_gnu_null_ptr_arith, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "arithmetic on a null pointer treated as a cast from integer to pointer is a GNU extension", 446, SFINAE_Suppress, false, false, 2)
-DIAG(warn_guarded_pass_by_reference, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "passing variable %1 by reference requires holding %0 %select{'%2'|'%2' exclusively}3", 654, SFINAE_Suppress, false, false, 2)
-DIAG(warn_iboutlet_object_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{instance variable|property}2 with %0 attribute must be an object type (invalid %1)", 328, SFINAE_Suppress, false, false, 2)
-DIAG(warn_iboutletcollection_property_assign, CLASS_WARNING, (unsigned)diag::Severity::Warning, "IBOutletCollection properties should be copy/strong and not assign", 328, SFINAE_Suppress, false, false, 2)
-DIAG(warn_identity_field_assign, CLASS_WARNING, (unsigned)diag::Severity::Warning, "assigning %select{field|instance variable}0 to itself", 570, SFINAE_Suppress, false, false, 2)
-DIAG(warn_ignored_ms_inheritance, CLASS_WARNING, (unsigned)diag::Severity::Warning, "inheritance model ignored on %select{primary template|partial specialization}0", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_illegal_constant_array_size, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "size of static array must be an integer constant expression", 516, SFINAE_Suppress, false, false, 2)
+DIAG(warn_for_range_const_reference_copy, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "loop variable %0 %diff{has type $ but is initialized with type $| is initialized with a value of a different type}1,2 resulting in a copy", 556, SFINAE_Suppress, false, false, 2)
+DIAG(warn_for_range_copy, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "loop variable %0 of type %1 creates a copy from type %2", 556, SFINAE_Suppress, false, false, 2)
+DIAG(warn_for_range_variable_always_copy, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "loop variable %0 is always a copy because the range of type %1 does not return a reference", 556, SFINAE_Suppress, false, false, 2)
+DIAG(warn_format_P_no_precision, CLASS_WARNING, (unsigned)diag::Severity::Warning, "using '%%P' format specifier without precision", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_format_argument_needs_cast, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{values of type|enum values with underlying type}2 '%0' should not be used as format arguments; add an explicit cast to %1 instead", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_format_argument_needs_cast_pedantic, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{values of type|enum values with underlying type}2 '%0' should not be used as format arguments; add an explicit cast to %1 instead", 239, SFINAE_Suppress, false, false, 2)
+DIAG(warn_format_conversion_argument_type_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format specifies type %0 but the argument has %select{type|underlying type}2 %1", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_format_conversion_argument_type_mismatch_pedantic, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "format specifies type %0 but the argument has %select{type|underlying type}2 %1", 239, SFINAE_Suppress, false, false, 2)
+DIAG(warn_format_invalid_annotation, CLASS_WARNING, (unsigned)diag::Severity::Warning, "using '%0' format specifier annotation outside of os_log()/os_trace()", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_format_invalid_conversion, CLASS_WARNING, (unsigned)diag::Severity::Warning, "invalid conversion specifier '%0'", 236, SFINAE_Suppress, false, false, 28)
+DIAG(warn_format_invalid_positional_specifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "invalid position specified for %select{field width|field precision}0", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_format_mix_positional_nonpositional_args, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cannot mix positional and non-positional arguments in format string", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_format_non_standard, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%0' %select{length modifier|conversion specifier}1 is not supported by ISO C", 237, SFINAE_Suppress, false, false, 2)
+DIAG(warn_format_non_standard_conversion_spec, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "using length modifier '%0' with conversion specifier '%1' is not supported by ISO C", 237, SFINAE_Suppress, false, false, 2)
+DIAG(warn_format_non_standard_positional_arg, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "positional arguments are not supported by ISO C", 237, SFINAE_Suppress, false, false, 2)
+DIAG(warn_format_nonliteral, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "format string is not a string literal", 238, SFINAE_Suppress, false, false, 2)
+DIAG(warn_format_nonliteral_noargs, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format string is not a string literal (potentially insecure)", 240, SFINAE_Suppress, false, false, 28)
+DIAG(warn_format_nonsensical_length, CLASS_WARNING, (unsigned)diag::Severity::Warning, "length modifier '%0' results in undefined behavior or no effect with '%1' conversion specifier", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_format_string_is_wide_literal, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format string should not be a wide string", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_format_zero_positional_specifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "position arguments in format strings start counting at 1 (not 0)", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_forward_class_redefinition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "redefinition of forward class %0 of a typedef name of an object type is ignored", 469, SFINAE_Suppress, false, false, 2)
+DIAG(warn_fun_excludes_mutex, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "cannot call function '%1' while %0 '%2' is held", 662, SFINAE_Suppress, false, false, 2)
+DIAG(warn_fun_requires_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "calling function %1 requires holding %0 %select{'%2'|'%2' exclusively}3", 662, SFINAE_Suppress, false, false, 2)
+DIAG(warn_fun_requires_lock_precise, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "calling function %1 requires holding %0 %select{'%2'|'%2' exclusively}3", 666, SFINAE_Suppress, false, false, 2)
+DIAG(warn_func_template_missing, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "instantiation of function %q0 required here, but no definition is available", 679, SFINAE_Suppress, false, false, 2)
+DIAG(warn_function_def_in_objc_container, CLASS_WARNING, (unsigned)diag::Severity::Warning, "function definition inside an Objective-C container is deprecated", 247, SFINAE_Suppress, false, false, 2)
+DIAG(warn_function_marked_not_override_overriding, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 overrides a member function but is not marked 'override'", 320, SFINAE_Suppress, false, false, 2)
+DIAG(warn_gc_attribute_weak_on_local, CLASS_WARNING, (unsigned)diag::Severity::Warning, "Objective-C GC does not allow weak variables on the stack", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_gcc_ignores_type_attr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "GCC does not allow the %0 attribute to be written on a type", 250, SFINAE_Suppress, false, false, 2)
+DIAG(warn_global_constructor, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration requires a global constructor", 251, SFINAE_Suppress, false, false, 2)
+DIAG(warn_global_destructor, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration requires a global destructor", 251, SFINAE_Suppress, false, false, 2)
+DIAG(warn_gnu_inline_attribute_requires_inline, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'gnu_inline' attribute requires function to be marked 'inline', attribute ignored", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_gnu_null_ptr_arith, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "arithmetic on a null pointer treated as a cast from integer to pointer is a GNU extension", 456, SFINAE_Suppress, false, false, 2)
+DIAG(warn_guarded_pass_by_reference, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "passing variable %1 by reference requires holding %0 %select{'%2'|'%2' exclusively}3", 667, SFINAE_Suppress, false, false, 2)
+DIAG(warn_iboutlet_object_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{instance variable|property}2 with %0 attribute must be an object type (invalid %1)", 337, SFINAE_Suppress, false, false, 2)
+DIAG(warn_iboutletcollection_property_assign, CLASS_WARNING, (unsigned)diag::Severity::Warning, "IBOutletCollection properties should be copy/strong and not assign", 337, SFINAE_Suppress, false, false, 2)
+DIAG(warn_identity_field_assign, CLASS_WARNING, (unsigned)diag::Severity::Warning, "assigning %select{field|instance variable}0 to itself", 582, SFINAE_Suppress, false, false, 2)
+DIAG(warn_ignored_ms_inheritance, CLASS_WARNING, (unsigned)diag::Severity::Warning, "inheritance model ignored on %select{primary template|partial specialization}0", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_ignored_objc_externally_retained, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'objc_externally_retained' can only be applied to local variables %select{of retainable type|with strong ownership}0", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_illegal_constant_array_size, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "size of static array must be an integer constant expression", 527, SFINAE_Suppress, false, false, 2)
DIAG(warn_impcast_bitfield_precision_constant, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit truncation from %2 to bit-field changes value from %0 to %1", 59, SFINAE_Suppress, false, false, 24)
DIAG(warn_impcast_bool_to_null_pointer, CLASS_WARNING, (unsigned)diag::Severity::Warning, "initialization of pointer of type %0 to null from a constant boolean expression", 64, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_complex_scalar, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion discards imaginary component: %0 to %1", 136, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_different_enum_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion from enumeration type %0 to different enumeration type %1", 203, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_double_promotion, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion increases floating-point precision: %0 to %1", 186, SFINAE_Suppress, false, false, 2)
-DIAG(warn_impcast_float_integer, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion turns floating-point number into integer: %0 to %1", 221, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_float_precision, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion loses floating-point precision: %0 to %1", 286, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_float_result_precision, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion when assigning computation result loses floating-point precision: %0 to %1", 286, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_float_to_integer, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion from %0 to %1 changes value from %2 to %3", 223, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_float_to_integer_out_of_range, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion of out of range value from %0 to %1 is undefined", 223, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_float_to_integer_zero, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion from %0 to %1 changes non-zero value from %2 to %3", 224, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_floating_point_to_bool, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion turns floating-point number into bool: %0 to %1", 282, SFINAE_Suppress, false, false, 2)
-DIAG(warn_impcast_high_order_zero_bits, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "higher order bits are zeroes after implicit conversion", 289, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_integer_64_32, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion loses integer precision: %0 to %1", 590, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_integer_precision, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion loses integer precision: %0 to %1", 289, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_integer_precision_constant, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion from %2 to %3 changes value from %0 to %1", 132, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_integer_sign, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion changes signedness: %0 to %1", 592, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_integer_sign_conditional, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "operand of ? changes signedness: %0 to %1", 592, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_literal_float_to_integer, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion from %0 to %1 changes value from %2 to %3", 346, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_literal_float_to_integer_out_of_range, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion of out of range value from %0 to %1 is undefined", 346, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_nonnegative_result, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "the resulting value is always non-negative after implicit conversion", 592, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_null_pointer_to_integer, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion of %select{NULL|nullptr}0 constant to %1", 444, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_objective_c_literal_to_bool, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit boolean conversion of Objective-C object literal always evaluates to true", 462, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_pointer_to_bool, CLASS_WARNING, (unsigned)diag::Severity::Warning, "address of%select{| function| array}0 '%1' will always evaluate to 'true'", 520, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_string_literal_to_bool, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion turns string literal into bool: %0 to %1", 623, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impcast_vector_scalar, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion turns vector to scalar: %0 to %1", 136, SFINAE_Suppress, false, false, 24)
-DIAG(warn_impl_required_for_class_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "class property %0 requires method %1 to be defined - use @dynamic or provide a method implementation in this class implementation", 472, SFINAE_Suppress, false, false, 2)
-DIAG(warn_impl_required_in_category_for_class_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "class property %0 requires method %1 to be defined - use @dynamic or provide a method implementation in this category", 472, SFINAE_Suppress, false, false, 2)
+DIAG(warn_impcast_complex_scalar, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion discards imaginary component: %0 to %1", 137, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_different_enum_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion from enumeration type %0 to different enumeration type %1", 210, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_double_promotion, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion increases floating-point precision: %0 to %1", 192, SFINAE_Suppress, false, false, 2)
+DIAG(warn_impcast_fixed_point_range, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion from %0 cannot fit within the range of values for %1", 294, SFINAE_Suppress, false, false, 2)
+DIAG(warn_impcast_float_integer, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion turns floating-point number into integer: %0 to %1", 229, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_float_precision, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion loses floating-point precision: %0 to %1", 295, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_float_result_precision, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion when assigning computation result loses floating-point precision: %0 to %1", 295, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_float_to_integer, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion from %0 to %1 changes value from %2 to %3", 231, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_float_to_integer_out_of_range, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion of out of range value from %0 to %1 is undefined", 231, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_float_to_integer_zero, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion from %0 to %1 changes non-zero value from %2 to %3", 232, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_floating_point_to_bool, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion turns floating-point number into bool: %0 to %1", 290, SFINAE_Suppress, false, false, 2)
+DIAG(warn_impcast_high_order_zero_bits, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "higher order bits are zeroes after implicit conversion", 298, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_integer_64_32, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion loses integer precision: %0 to %1", 602, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_integer_precision, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion loses integer precision: %0 to %1", 298, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_integer_precision_constant, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion from %2 to %3 changes value from %0 to %1", 133, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_integer_sign, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion changes signedness: %0 to %1", 604, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_integer_sign_conditional, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "operand of ? changes signedness: %0 to %1", 604, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_literal_float_to_integer, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion from %0 to %1 changes value from %2 to %3", 355, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_literal_float_to_integer_out_of_range, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion of out of range value from %0 to %1 is undefined", 355, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_nonnegative_result, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "the resulting value is always non-negative after implicit conversion", 604, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_null_pointer_to_integer, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion of %select{NULL|nullptr}0 constant to %1", 454, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_objective_c_literal_to_bool, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit boolean conversion of Objective-C object literal always evaluates to true", 472, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_pointer_to_bool, CLASS_WARNING, (unsigned)diag::Severity::Warning, "address of%select{| function| array}0 '%1' will always evaluate to 'true'", 531, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_string_literal_to_bool, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion turns string literal into bool: %0 to %1", 636, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impcast_vector_scalar, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion turns vector to scalar: %0 to %1", 137, SFINAE_Suppress, false, false, 24)
+DIAG(warn_impl_required_for_class_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "class property %0 requires method %1 to be defined - use @dynamic or provide a method implementation in this class implementation", 482, SFINAE_Suppress, false, false, 2)
+DIAG(warn_impl_required_in_category_for_class_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "class property %0 requires method %1 to be defined - use @dynamic or provide a method implementation in this category", 482, SFINAE_Suppress, false, false, 2)
DIAG(warn_implements_nscopying, CLASS_WARNING, (unsigned)diag::Severity::Warning, "default assign attribute on property %0 which implements NSCopying protocol is not appropriate with -fobjc-gc[-only]", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_implicit_atomic_property, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "property is assumed atomic by default", 281, SFINAE_Suppress, false, false, 2)
+DIAG(warn_implicit_atomic_property, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "property is assumed atomic by default", 289, SFINAE_Suppress, false, false, 2)
DIAG(warn_implicit_decl_requires_sysheader, CLASS_WARNING, (unsigned)diag::Severity::Warning, "declaration of built-in function '%1' requires inclusion of the header <%0>", 70, SFINAE_Suppress, false, false, 2)
-DIAG(warn_implicit_function_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit declaration of function %0", 287, SFINAE_Suppress, false, false, 2)
-DIAG(warn_implicitly_retains_self, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior", 290, SFINAE_Suppress, false, false, 2)
-DIAG(warn_inaccessible_base_class, CLASS_WARNING, (unsigned)diag::Severity::Warning, "direct base %0 is inaccessible due to ambiguity:%1", 294, SFINAE_Suppress, false, false, 2)
-DIAG(warn_incompatible_exception_specs, CLASS_WARNING, (unsigned)diag::Severity::Warning, "target exception specification is not superset of source", 297, SFINAE_Suppress, false, false, 2)
+DIAG(warn_implicit_function_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit declaration of function %0", 296, SFINAE_Suppress, false, false, 2)
+DIAG(warn_implicitly_retains_self, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior", 299, SFINAE_Suppress, false, false, 2)
+DIAG(warn_inaccessible_base_class, CLASS_WARNING, (unsigned)diag::Severity::Warning, "direct base %0 is inaccessible due to ambiguity:%1", 303, SFINAE_Suppress, false, false, 2)
+DIAG(warn_incompatible_exception_specs, CLASS_WARNING, (unsigned)diag::Severity::Warning, "target exception specification is not superset of source", 306, SFINAE_Suppress, false, false, 2)
DIAG(warn_incompatible_qualified_id, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{%diff{assigning to $ from incompatible type $|assigning to type from incompatible type}0,1|%diff{passing $ to parameter of incompatible type $|passing type to parameter of incompatible type}0,1|%diff{returning $ from a function with incompatible result type $|returning type from a function with incompatible result type}0,1|%diff{converting $ to incompatible type $|converting type to incompatible type}0,1|%diff{initializing $ with an expression of incompatible type $|initializing type with an expression of incompatible type}0,1|%diff{sending $ to parameter of incompatible type $|sending type to parameter of incompatible type}0,1|%diff{casting $ to incompatible type $|casting type to incompatible type}0,1}2", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_incompatible_vectors, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "incompatible vector types %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2", 733, SFINAE_Suppress, false, false, 2)
-DIAG(warn_incomplete_encoded_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "encoding of %0 type is incomplete because %1 component has unknown encoding", 199, SFINAE_Suppress, false, false, 2)
-DIAG(warn_increment_bool, CLASS_WARNING, (unsigned)diag::Severity::Warning, "incrementing expression of type bool is deprecated and incompatible with C++17", 163, SFINAE_Suppress, false, false, 27)
+DIAG(warn_incompatible_vectors, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "incompatible vector types %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2", 746, SFINAE_Suppress, false, false, 2)
+DIAG(warn_incomplete_encoded_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "encoding of %0 type is incomplete because %1 component has unknown encoding", 206, SFINAE_Suppress, false, false, 2)
+DIAG(warn_increment_bool, CLASS_WARNING, (unsigned)diag::Severity::Warning, "incrementing expression of type bool is deprecated and incompatible with C++17", 169, SFINAE_Suppress, false, false, 27)
DIAG(warn_independentclass_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'objc_independent_class' attribute may be put on a typedef only; attribute is ignored", 5, SFINAE_Suppress, false, false, 2)
-DIAG(warn_indirection_through_null, CLASS_WARNING, (unsigned)diag::Severity::Warning, "indirection of non-volatile null pointer will be deleted, not trap", 445, SFINAE_Suppress, false, false, 2)
-DIAG(warn_infinite_recursive_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "all paths through this function will call itself", 313, SFINAE_Suppress, false, false, 2)
+DIAG(warn_indirection_through_null, CLASS_WARNING, (unsigned)diag::Severity::Warning, "indirection of non-volatile null pointer will be deleted, not trap", 455, SFINAE_Suppress, false, false, 2)
+DIAG(warn_infinite_recursive_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "all paths through this function will call itself", 322, SFINAE_Suppress, false, false, 2)
DIAG(warn_init_list_constant_narrowing, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "constant expression evaluates to %0 which cannot be narrowed to type %1 in C++11", 83, SFINAE_Suppress, false, false, 2)
DIAG(warn_init_list_type_narrowing, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "type %0 cannot be narrowed to %1 in initializer list in C++11", 83, SFINAE_Suppress, false, false, 2)
DIAG(warn_init_list_variable_narrowing, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "non-constant-expression cannot be narrowed from type %0 to %1 in initializer list in C++11", 83, SFINAE_Suppress, false, false, 2)
-DIAG(warn_init_ptr_member_to_parameter_addr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "initializing pointer member %0 with the stack address of %select{variable|parameter}2 %1", 148, SFINAE_Suppress, false, false, 2)
-DIAG(warn_initializer_out_of_order, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{field|base class}0 %1 will be initialized after %select{field|base}2 %3", 555, SFINAE_Suppress, false, false, 2)
-DIAG(warn_initializer_overrides, CLASS_WARNING, (unsigned)diag::Severity::Warning, "initializer overrides prior initialization of this subobject", 315, SFINAE_Suppress, false, false, 2)
+DIAG(warn_init_ptr_member_to_parameter_addr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "initializing pointer member %0 with the stack address of %select{variable|parameter}2 %1", 151, SFINAE_Suppress, false, false, 2)
+DIAG(warn_initializer_out_of_order, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{field|base class}0 %1 will be initialized after %select{field|base}2 %3", 567, SFINAE_Suppress, false, false, 2)
+DIAG(warn_initializer_overrides, CLASS_WARNING, (unsigned)diag::Severity::Warning, "initializer overrides prior initialization of this subobject", 324, SFINAE_Suppress, false, false, 2)
DIAG(warn_inline_namespace_reopened_noninline, CLASS_WARNING, (unsigned)diag::Severity::Warning, "inline namespace reopened as a non-inline namespace", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_inst_method_not_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "instance method %objcinstance0 not found (return type defaults to 'id')", 465, SFINAE_Suppress, false, false, 2)
-DIAG(warn_instance_method_not_found_with_typo, CLASS_WARNING, (unsigned)diag::Severity::Warning, "instance method %objcinstance0 not found (return type defaults to 'id'); did you mean %objcinstance2?", 465, SFINAE_Suppress, false, false, 2)
-DIAG(warn_instance_method_on_class_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "instance method %0 found instead of class method %1", 465, SFINAE_Suppress, false, false, 2)
-DIAG(warn_int_to_pointer_cast, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cast to %1 from smaller integer type %0", 323, SFINAE_Suppress, false, false, 2)
-DIAG(warn_int_to_void_pointer_cast, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cast to %1 from smaller integer type %0", 324, SFINAE_Suppress, false, false, 2)
-DIAG(warn_internal_linkage_local_storage, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'internal_linkage' attribute on a non-static local variable is ignored", 274, SFINAE_Suppress, false, false, 2)
+DIAG(warn_inst_method_not_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "instance method %objcinstance0 not found (return type defaults to 'id')", 475, SFINAE_Suppress, false, false, 2)
+DIAG(warn_instance_method_not_found_with_typo, CLASS_WARNING, (unsigned)diag::Severity::Warning, "instance method %objcinstance0 not found (return type defaults to 'id'); did you mean %objcinstance2?", 475, SFINAE_Suppress, false, false, 2)
+DIAG(warn_instance_method_on_class_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "instance method %0 found instead of class method %1", 475, SFINAE_Suppress, false, false, 2)
+DIAG(warn_int_to_pointer_cast, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cast to %1 from smaller integer type %0", 332, SFINAE_Suppress, false, false, 2)
+DIAG(warn_int_to_void_pointer_cast, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cast to %1 from smaller integer type %0", 333, SFINAE_Suppress, false, false, 2)
+DIAG(warn_internal_linkage_local_storage, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'internal_linkage' attribute on a non-static local variable is ignored", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_interrupt_attribute_invalid, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{MIPS|MSP430|RISC-V}0 'interrupt' attribute only applies to functions that have %select{no parameters|a 'void' return type}1", 282, SFINAE_Suppress, false, false, 2)
DIAG(warn_invalid_asm_cast_lvalue, CLASS_WARNING, (unsigned)diag::Severity::Warning, "invalid use of a cast in an inline asm context requiring an l-value: accepted due to -fheinous-gnu-extensions, but clang may remove support for this in the future", 0, SFINAE_Suppress, false, false, 12)
-DIAG(warn_invalid_capability_name, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "invalid capability name '%0'; capability name must be 'mutex' or 'role'", 650, SFINAE_Suppress, false, false, 2)
-DIAG(warn_invalid_initializer_from_system_header, CLASS_WARNING, (unsigned)diag::Severity::Warning, "invalid constructor form class in system header, should not be explicit", 329, SFINAE_Suppress, false, false, 2)
-DIAG(warn_ivar_use_hidden, CLASS_WARNING, (unsigned)diag::Severity::Warning, "local declaration of %0 hides instance variable", 582, SFINAE_Suppress, false, false, 2)
-DIAG(warn_ivars_in_interface, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration of instance variables in the interface is deprecated", 460, SFINAE_Suppress, false, false, 2)
-DIAG(warn_jump_out_of_seh_finally, CLASS_WARNING, (unsigned)diag::Severity::Warning, "jump out of __finally block has undefined behavior", 339, SFINAE_Suppress, false, false, 2)
-DIAG(warn_kern_is_inline, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignored 'inline' attribute on kernel function %0", 144, SFINAE_Suppress, false, false, 2)
-DIAG(warn_kern_is_method, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "kernel function %0 is a member function; this may not be accepted by nvcc", 144, SFINAE_Suppress, false, false, 2)
-DIAG(warn_lock_exclusive_and_shared, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 '%1' is acquired exclusively and shared in the same scope", 649, SFINAE_Suppress, false, false, 2)
-DIAG(warn_lock_some_predecessors, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 '%1' is not held on every path through here", 649, SFINAE_Suppress, false, false, 2)
-DIAG(warn_logical_and_in_logical_or, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'&&' within '||'", 350, SFINAE_Suppress, false, false, 2)
-DIAG(warn_logical_instead_of_bitwise, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use of logical '%0' with constant operand", 133, SFINAE_Suppress, false, false, 2)
-DIAG(warn_logical_not_on_lhs_of_check, CLASS_WARNING, (unsigned)diag::Severity::Warning, "logical not is only applied to the left hand side of this %select{comparison|bitwise operator}0", 349, SFINAE_Suppress, false, false, 2)
-DIAG(warn_loop_ctrl_binds_to_inner, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' is bound to current loop, GCC binds it to the enclosing loop", 242, SFINAE_Suppress, false, false, 2)
-DIAG(warn_loop_state_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "state of variable '%0' must match at the entry and exit of loop", 135, SFINAE_Suppress, false, false, 2)
-DIAG(warn_main_one_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "only one parameter on 'main' declaration", 354, SFINAE_Suppress, false, false, 2)
-DIAG(warn_main_redefined, CLASS_WARNING, (unsigned)diag::Severity::Warning, "variable named 'main' with external linkage has undefined behavior", 354, SFINAE_Suppress, false, false, 2)
-DIAG(warn_main_returns_bool_literal, CLASS_WARNING, (unsigned)diag::Severity::Warning, "bool literal returned from 'main'", 354, SFINAE_Suppress, false, false, 2)
-DIAG(warn_max_unsigned_zero, CLASS_WARNING, (unsigned)diag::Severity::Warning, "taking the max of %select{a value and unsigned zero|unsigned zero and a value}0 is always equal to the other value", 358, SFINAE_Suppress, false, false, 2)
-DIAG(warn_maybe_falloff_nonvoid_coroutine, CLASS_WARNING, (unsigned)diag::Severity::Warning, "control may reach end of coroutine; which is undefined behavior because the promise type %0 does not declare 'return_void()'", 563, SFINAE_Suppress, false, false, 2)
-DIAG(warn_maybe_falloff_nonvoid_function, CLASS_WARNING, (unsigned)diag::Severity::Warning, "control may reach end of non-void function", 563, SFINAE_Suppress, false, false, 2)
-DIAG(warn_maybe_falloff_nonvoid_lambda, CLASS_WARNING, (unsigned)diag::Severity::Warning, "control may reach end of non-void lambda", 563, SFINAE_Suppress, false, false, 3)
-DIAG(warn_maybe_uninit_var, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable %0 may be uninitialized when %select{used here|captured by block}1", 130, SFINAE_Suppress, false, false, 2)
+DIAG(warn_invalid_capability_name, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "invalid capability name '%0'; capability name must be 'mutex' or 'role'", 663, SFINAE_Suppress, false, false, 2)
+DIAG(warn_invalid_initializer_from_system_header, CLASS_WARNING, (unsigned)diag::Severity::Warning, "invalid constructor form class in system header, should not be explicit", 338, SFINAE_Suppress, false, false, 2)
+DIAG(warn_ivar_use_hidden, CLASS_WARNING, (unsigned)diag::Severity::Warning, "local declaration of %0 hides instance variable", 594, SFINAE_Suppress, false, false, 2)
+DIAG(warn_ivars_in_interface, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration of instance variables in the interface is deprecated", 470, SFINAE_Suppress, false, false, 2)
+DIAG(warn_jump_out_of_seh_finally, CLASS_WARNING, (unsigned)diag::Severity::Warning, "jump out of __finally block has undefined behavior", 348, SFINAE_Suppress, false, false, 2)
+DIAG(warn_kern_is_inline, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignored 'inline' attribute on kernel function %0", 147, SFINAE_Suppress, false, false, 2)
+DIAG(warn_kern_is_method, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "kernel function %0 is a member function; this may not be accepted by nvcc", 147, SFINAE_Suppress, false, false, 2)
+DIAG(warn_lock_exclusive_and_shared, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 '%1' is acquired exclusively and shared in the same scope", 662, SFINAE_Suppress, false, false, 2)
+DIAG(warn_lock_some_predecessors, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 '%1' is not held on every path through here", 662, SFINAE_Suppress, false, false, 2)
+DIAG(warn_logical_and_in_logical_or, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'&&' within '||'", 359, SFINAE_Suppress, false, false, 2)
+DIAG(warn_logical_instead_of_bitwise, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use of logical '%0' with constant operand", 134, SFINAE_Suppress, false, false, 2)
+DIAG(warn_logical_not_on_lhs_of_check, CLASS_WARNING, (unsigned)diag::Severity::Warning, "logical not is only applied to the left hand side of this %select{comparison|bitwise operator}0", 358, SFINAE_Suppress, false, false, 2)
+DIAG(warn_loop_ctrl_binds_to_inner, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' is bound to current loop, GCC binds it to the enclosing loop", 250, SFINAE_Suppress, false, false, 2)
+DIAG(warn_loop_state_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "state of variable '%0' must match at the entry and exit of loop", 136, SFINAE_Suppress, false, false, 2)
+DIAG(warn_main_one_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "only one parameter on 'main' declaration", 363, SFINAE_Suppress, false, false, 2)
+DIAG(warn_main_redefined, CLASS_WARNING, (unsigned)diag::Severity::Warning, "variable named 'main' with external linkage has undefined behavior", 363, SFINAE_Suppress, false, false, 2)
+DIAG(warn_main_returns_bool_literal, CLASS_WARNING, (unsigned)diag::Severity::Warning, "bool literal returned from 'main'", 363, SFINAE_Suppress, false, false, 2)
+DIAG(warn_max_unsigned_zero, CLASS_WARNING, (unsigned)diag::Severity::Warning, "taking the max of %select{a value and unsigned zero|unsigned zero and a value}0 is always equal to the other value", 367, SFINAE_Suppress, false, false, 2)
+DIAG(warn_maybe_falloff_nonvoid_coroutine, CLASS_WARNING, (unsigned)diag::Severity::Warning, "control may reach end of coroutine; which is undefined behavior because the promise type %0 does not declare 'return_void()'", 575, SFINAE_Suppress, false, false, 2)
+DIAG(warn_maybe_falloff_nonvoid_function, CLASS_WARNING, (unsigned)diag::Severity::Warning, "control may reach end of non-void function", 575, SFINAE_Suppress, false, false, 2)
+DIAG(warn_maybe_falloff_nonvoid_lambda, CLASS_WARNING, (unsigned)diag::Severity::Warning, "control may reach end of non-void lambda", 575, SFINAE_Suppress, false, false, 3)
+DIAG(warn_maybe_uninit_var, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable %0 may be uninitialized when %select{used here|captured by block}1", 131, SFINAE_Suppress, false, false, 2)
DIAG(warn_maynot_respond, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 may not respond to %1", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_member_extra_qualification, CLASS_WARNING, (unsigned)diag::Severity::Warning, "extra qualification on member %0", 376, SFINAE_Suppress, false, false, 2)
+DIAG(warn_member_extra_qualification, CLASS_WARNING, (unsigned)diag::Severity::Warning, "extra qualification on member %0", 385, SFINAE_Suppress, false, false, 2)
DIAG(warn_memcpy_chk_overflow, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' will always overflow; destination buffer has size %1, but size argument is %2", 69, SFINAE_Suppress, false, false, 2)
-DIAG(warn_memsize_comparison, CLASS_WARNING, (unsigned)diag::Severity::Warning, "size argument in %0 call is a comparison", 360, SFINAE_Suppress, false, false, 2)
-DIAG(warn_messaging_unqualified_id, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "messaging unqualified id", 464, SFINAE_Suppress, false, false, 2)
-DIAG(warn_mips_interrupt_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "MIPS 'interrupt' attribute only applies to functions that have %select{no parameters|a 'void' return type}0", 274, SFINAE_Suppress, false, false, 2)
+DIAG(warn_memsize_comparison, CLASS_WARNING, (unsigned)diag::Severity::Warning, "size argument in %0 call is a comparison", 369, SFINAE_Suppress, false, false, 2)
+DIAG(warn_messaging_unqualified_id, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "messaging unqualified id", 474, SFINAE_Suppress, false, false, 2)
DIAG(warn_mismatched_availability, CLASS_WARNING, (unsigned)diag::Severity::Warning, "availability does not match previous declaration", 52, SFINAE_Suppress, false, false, 2)
DIAG(warn_mismatched_availability_override, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{|overriding }4method %select{introduced after|deprecated before|obsoleted before}0 %select{the protocol method it implements|overridden method}4 on %1 (%2 vs. %3)", 52, SFINAE_Suppress, false, false, 2)
DIAG(warn_mismatched_availability_override_unavail, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{|overriding }1method cannot be unavailable on %0 when %select{the protocol method it implements|its overridden method}1 is available", 52, SFINAE_Suppress, false, false, 2)
-DIAG(warn_mismatched_delete_new, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'delete%select{|[]}0' applied to a pointer that was allocated with 'new%select{[]|}0'; did you mean 'delete%select{[]|}0'?", 391, SFINAE_Suppress, false, false, 2)
-DIAG(warn_mismatched_nullability_attr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "nullability specifier %0 conflicts with existing specifier %1", 447, SFINAE_Suppress, false, false, 19)
-DIAG(warn_mismatched_section, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{codeseg|section}0 does not match previous declaration", 566, SFINAE_Suppress, false, false, 2)
-DIAG(warn_missing_braces, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "suggest braces around initialization of subobject", 395, SFINAE_Suppress, false, false, 2)
-DIAG(warn_missing_case, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%plural{1:enumeration value %1 not handled in switch|2:enumeration values %1 and %2 not handled in switch|3:enumeration values %1, %2, and %3 not handled in switch|:%0 enumeration values not handled in switch: %1, %2, %3...}0", 631, SFINAE_Suppress, false, false, 2)
+DIAG(warn_mismatched_delete_new, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'delete%select{|[]}0' applied to a pointer that was allocated with 'new%select{[]|}0'; did you mean 'delete%select{[]|}0'?", 400, SFINAE_Suppress, false, false, 2)
+DIAG(warn_mismatched_nullability_attr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "nullability specifier %0 conflicts with existing specifier %1", 457, SFINAE_Suppress, false, false, 19)
+DIAG(warn_mismatched_section, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{codeseg|section}0 does not match previous declaration", 578, SFINAE_Suppress, false, false, 2)
+DIAG(warn_missing_braces, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "suggest braces around initialization of subobject", 404, SFINAE_Suppress, false, false, 2)
+DIAG(warn_missing_case, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%plural{1:enumeration value %1 not handled in switch|2:enumeration values %1 and %2 not handled in switch|3:enumeration values %1, %2, and %3 not handled in switch|:%0 enumeration values not handled in switch: %1, %2, %3...}0", 644, SFINAE_Suppress, false, false, 2)
DIAG(warn_missing_case_for_condition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "no case matching constant switch condition '%0'", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_missing_explicit_synthesis, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "auto property synthesis is synthesizing property not explicitly synthesized", 466, SFINAE_Suppress, false, false, 2)
-DIAG(warn_missing_field_initializers, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "missing field %0 initializer", 398, SFINAE_Suppress, false, false, 2)
-DIAG(warn_missing_format_string, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format string missing", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_missing_method_return_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "method has no return type specified; defaults to 'id'", 401, SFINAE_Suppress, false, false, 2)
-DIAG(warn_missing_prototype, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "no previous prototype for function %0", 405, SFINAE_Suppress, false, false, 2)
-DIAG(warn_missing_sentinel, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing sentinel in %select{function call|method dispatch|block call}0", 574, SFINAE_Suppress, false, false, 2)
-DIAG(warn_missing_variable_declarations, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "no previous extern declaration for non-static variable %0", 408, SFINAE_Suppress, false, false, 2)
-DIAG(warn_mixed_sign_comparison, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "comparison of integers of different signs: %0 and %1", 591, SFINAE_Suppress, false, false, 2)
-DIAG(warn_modifying_shadowing_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "modifying constructor parameter %0 that shadows a field of %1", 581, SFINAE_Suppress, false, false, 2)
-DIAG(warn_multiple_method_decl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "multiple methods named %0 found", 468, SFINAE_Suppress, false, false, 2)
-DIAG(warn_multiple_selectors, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "several methods with selector %0 of mismatched types are found for the @selector expression", 568, SFINAE_Suppress, false, false, 2)
-DIAG(warn_multiversion_duplicate_entries, CLASS_WARNING, (unsigned)diag::Severity::Warning, "CPU list contains duplicate entries; attribute ignored", 240, SFINAE_Suppress, false, false, 0)
-DIAG(warn_namespace_member_extra_qualification, CLASS_WARNING, (unsigned)diag::Severity::Warning, "extra qualification on member %0", 214, SFINAE_Suppress, false, false, 2)
-DIAG(warn_neon_vector_initializer_non_portable, CLASS_WARNING, (unsigned)diag::Severity::Warning, "vector initializers are not compatible with NEON intrinsics in big endian mode", 438, SFINAE_Suppress, false, false, 2)
-DIAG(warn_new_dangling_initializer_list, CLASS_WARNING, (unsigned)diag::Severity::Warning, "array backing %select{initializer list subobject of the allocated object|the allocated initializer list}0 will be destroyed at the end of the full-expression", 149, SFINAE_Suppress, false, false, 2)
-DIAG(warn_new_dangling_reference, CLASS_WARNING, (unsigned)diag::Severity::Warning, "temporary bound to reference member of allocated object will be destroyed at the end of the full-expression", 148, SFINAE_Suppress, false, false, 2)
-DIAG(warn_no_autosynthesis_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "auto property synthesis will not synthesize property %0 because it is 'readwrite' but it will be synthesized 'readonly' via another property", 476, SFINAE_Suppress, false, false, 2)
-DIAG(warn_no_autosynthesis_shared_ivar_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "auto property synthesis will not synthesize property %0 because it cannot share an ivar with another synthesized property", 476, SFINAE_Suppress, false, false, 2)
+DIAG(warn_missing_explicit_synthesis, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "auto property synthesis is synthesizing property not explicitly synthesized", 476, SFINAE_Suppress, false, false, 2)
+DIAG(warn_missing_field_initializers, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "missing field %0 initializer", 407, SFINAE_Suppress, false, false, 2)
+DIAG(warn_missing_format_string, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format string missing", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_missing_method_return_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "method has no return type specified; defaults to 'id'", 410, SFINAE_Suppress, false, false, 2)
+DIAG(warn_missing_prototype, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "no previous prototype for function %0", 414, SFINAE_Suppress, false, false, 2)
+DIAG(warn_missing_sentinel, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing sentinel in %select{function call|method dispatch|block call}0", 586, SFINAE_Suppress, false, false, 2)
+DIAG(warn_missing_variable_declarations, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "no previous extern declaration for non-static variable %0", 417, SFINAE_Suppress, false, false, 2)
+DIAG(warn_mixed_sign_comparison, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "comparison of integers of different signs: %0 and %1", 603, SFINAE_Suppress, false, false, 2)
+DIAG(warn_modifying_shadowing_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "modifying constructor parameter %0 that shadows a field of %1", 593, SFINAE_Suppress, false, false, 2)
+DIAG(warn_multiple_method_decl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "multiple methods named %0 found", 478, SFINAE_Suppress, false, false, 2)
+DIAG(warn_multiple_selectors, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "several methods with selector %0 of mismatched types are found for the @selector expression", 580, SFINAE_Suppress, false, false, 2)
+DIAG(warn_multiversion_duplicate_entries, CLASS_WARNING, (unsigned)diag::Severity::Warning, "CPU list contains duplicate entries; attribute ignored", 248, SFINAE_Suppress, false, false, 0)
+DIAG(warn_namespace_member_extra_qualification, CLASS_WARNING, (unsigned)diag::Severity::Warning, "extra qualification on member %0", 221, SFINAE_Suppress, false, false, 2)
+DIAG(warn_neon_vector_initializer_non_portable, CLASS_WARNING, (unsigned)diag::Severity::Warning, "vector initializers are not compatible with NEON intrinsics in big endian mode", 448, SFINAE_Suppress, false, false, 2)
+DIAG(warn_new_dangling_initializer_list, CLASS_WARNING, (unsigned)diag::Severity::Warning, "array backing %select{initializer list subobject of the allocated object|the allocated initializer list}0 will be destroyed at the end of the full-expression", 152, SFINAE_Suppress, false, false, 2)
+DIAG(warn_new_dangling_reference, CLASS_WARNING, (unsigned)diag::Severity::Warning, "temporary bound to reference member of allocated object will be destroyed at the end of the full-expression", 151, SFINAE_Suppress, false, false, 2)
+DIAG(warn_no_autosynthesis_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "auto property synthesis will not synthesize property %0 because it is 'readwrite' but it will be synthesized 'readonly' via another property", 486, SFINAE_Suppress, false, false, 2)
+DIAG(warn_no_autosynthesis_shared_ivar_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "auto property synthesis will not synthesize property %0 because it cannot share an ivar with another synthesized property", 486, SFINAE_Suppress, false, false, 2)
DIAG(warn_no_constructor_for_refconst, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{struct|interface|union|class|enum}0 %1 does not declare any constructor to initialize its non-modifiable members", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_no_underlying_type_specified_for_enum_bitfield, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "enums in the Microsoft ABI are signed integers by default; consider giving the enum %0 an unsigned underlying type to make this code portable", 594, SFINAE_Suppress, false, false, 2)
-DIAG(warn_no_unlock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 '%1' is still held at the end of function", 649, SFINAE_Suppress, false, false, 2)
-DIAG(warn_nocf_check_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'nocf_check' attribute ignored; use -fcf-protection to enable the attribute", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_non_contravariant_overriding_param_types, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting parameter types in declaration of %0: %1 vs %2", 504, SFINAE_Suppress, false, false, 2)
-DIAG(warn_non_contravariant_param_types, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting parameter types in implementation of %0: %1 vs %2", 361, SFINAE_Suppress, false, false, 2)
-DIAG(warn_non_covariant_overriding_ret_types, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting return type in declaration of %0: %1 vs %2", 504, SFINAE_Suppress, false, false, 2)
-DIAG(warn_non_covariant_ret_types, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting return type in implementation of %0: %1 vs %2", 361, SFINAE_Suppress, false, false, 2)
-DIAG(warn_non_literal_null_pointer, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expression which evaluates to zero treated as a null pointer constant of type %0", 429, SFINAE_Suppress, false, false, 24)
-DIAG(warn_non_pod_vararg_with_format_string, CLASS_WARNING, (unsigned)diag::Severity::Error, "cannot pass %select{non-POD|non-trivial}0 object of type %1 to variadic %select{function|block|method|constructor}2; expected type from format string was %3", 432, SFINAE_Suppress, false, false, 2)
-DIAG(warn_non_virtual_dtor, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 has virtual functions but non-virtual destructor", 433, SFINAE_Suppress, false, false, 2)
-DIAG(warn_nonnull_expr_compare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "comparison of nonnull %select{function call|parameter}0 '%1' %select{not |}2equal to a null pointer is '%select{true|false}2' on first encounter", 642, SFINAE_Suppress, false, false, 2)
-DIAG(warn_noreturn_function_has_return_expr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "function %0 declared 'noreturn' should not return", 331, SFINAE_Suppress, false, false, 2)
-DIAG(warn_not_a_doxygen_trailing_member_comment, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "not a Doxygen trailing comment", 180, SFINAE_Suppress, false, false, 25)
+DIAG(warn_no_underlying_type_specified_for_enum_bitfield, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "enums in the Microsoft ABI are signed integers by default; consider giving the enum %0 an unsigned underlying type to make this code portable", 606, SFINAE_Suppress, false, false, 2)
+DIAG(warn_no_unlock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 '%1' is still held at the end of function", 662, SFINAE_Suppress, false, false, 2)
+DIAG(warn_nocf_check_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'nocf_check' attribute ignored; use -fcf-protection to enable the attribute", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_noderef_on_non_pointer_or_array, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'noderef' can only be used on an array or pointer type", 282, SFINAE_Suppress, false, false, 0)
+DIAG(warn_noderef_to_dereferenceable_pointer, CLASS_WARNING, (unsigned)diag::Severity::Warning, "casting to dereferenceable pointer removes 'noderef' attribute", 436, SFINAE_Suppress, false, false, 0)
+DIAG(warn_non_contravariant_overriding_param_types, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting parameter types in declaration of %0: %1 vs %2", 515, SFINAE_Suppress, false, false, 2)
+DIAG(warn_non_contravariant_param_types, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting parameter types in implementation of %0: %1 vs %2", 370, SFINAE_Suppress, false, false, 2)
+DIAG(warn_non_covariant_overriding_ret_types, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting return type in declaration of %0: %1 vs %2", 515, SFINAE_Suppress, false, false, 2)
+DIAG(warn_non_covariant_ret_types, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting return type in implementation of %0: %1 vs %2", 370, SFINAE_Suppress, false, false, 2)
+DIAG(warn_non_literal_null_pointer, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expression which evaluates to zero treated as a null pointer constant of type %0", 439, SFINAE_Suppress, false, false, 24)
+DIAG(warn_non_pod_vararg_with_format_string, CLASS_WARNING, (unsigned)diag::Severity::Error, "cannot pass %select{non-POD|non-trivial}0 object of type %1 to variadic %select{function|block|method|constructor}2; expected type from format string was %3", 442, SFINAE_Suppress, false, false, 2)
+DIAG(warn_non_virtual_dtor, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 has virtual functions but non-virtual destructor", 443, SFINAE_Suppress, false, false, 2)
+DIAG(warn_nonnull_expr_compare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "comparison of nonnull %select{function call|parameter}0 '%1' %select{not |}2equal to a null pointer is '%select{true|false}2' on first encounter", 655, SFINAE_Suppress, false, false, 2)
+DIAG(warn_noreturn_function_has_return_expr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "function %0 declared 'noreturn' should not return", 340, SFINAE_Suppress, false, false, 2)
+DIAG(warn_not_a_doxygen_trailing_member_comment, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "not a Doxygen trailing comment", 186, SFINAE_Suppress, false, false, 25)
DIAG(warn_not_compound_assign, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use of unary operator that may be intended as compound assignment (%0=)", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_not_enough_argument, CLASS_WARNING, (unsigned)diag::Severity::Warning, "not enough variable arguments in %0 declaration to fit a sentinel", 574, SFINAE_Suppress, false, false, 2)
-DIAG(warn_not_in_enum, CLASS_WARNING, (unsigned)diag::Severity::Warning, "case value not in enumerated type %0", 631, SFINAE_Suppress, false, false, 2)
+DIAG(warn_not_enough_argument, CLASS_WARNING, (unsigned)diag::Severity::Warning, "not enough variable arguments in %0 declaration to fit a sentinel", 586, SFINAE_Suppress, false, false, 2)
+DIAG(warn_not_in_enum, CLASS_WARNING, (unsigned)diag::Severity::Warning, "case value not in enumerated type %0", 644, SFINAE_Suppress, false, false, 2)
DIAG(warn_not_in_enum_assignment, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "integer constant not in range of enumerated type %0", 37, SFINAE_Suppress, false, false, 2)
-DIAG(warn_npot_ms_struct, CLASS_WARNING, (unsigned)diag::Severity::Error, "ms_struct may not produce Microsoft-compatible layouts with fundamental data types with sizes that aren't a power of two", 300, SFINAE_Suppress, false, false, 2)
-DIAG(warn_ns_attribute_wrong_parameter_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to %select{Objective-C object|pointer|pointer-to-CF-pointer}1 parameters", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_ns_attribute_wrong_return_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to %select{functions|methods|properties}1 that return %select{an Objective-C object|a pointer|a non-retainable pointer}2", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_nsconsumed_attribute_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overriding method has mismatched ns_consumed attribute on its parameter", 440, SFINAE_Suppress, false, false, 2)
+DIAG(warn_ns_attribute_wrong_parameter_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to %select{Objective-C object|pointer|pointer-to-CF-pointer|pointer/reference-to-OSObject-pointer}1 parameters", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_ns_attribute_wrong_return_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to %select{functions|methods|properties}1 that return %select{an Objective-C object|a pointer|a non-retainable pointer}2", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_nsconsumed_attribute_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overriding method has mismatched ns_consumed attribute on its parameter", 450, SFINAE_Suppress, false, false, 2)
DIAG(warn_nsobject_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'NSObject' attribute may be put on a typedef only; attribute is ignored", 6, SFINAE_Suppress, false, false, 2)
-DIAG(warn_nsreturns_retained_attribute_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overriding method has mismatched ns_returns_%select{not_retained|retained}0 attributes", 441, SFINAE_Suppress, false, false, 2)
-DIAG(warn_null_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "null passed to a callee that requires a non-null argument", 434, SFINAE_Suppress, false, false, 28)
-DIAG(warn_null_in_arithmetic_operation, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use of NULL in arithmetic operation", 442, SFINAE_Suppress, false, false, 2)
-DIAG(warn_null_in_comparison_operation, CLASS_WARNING, (unsigned)diag::Severity::Warning, "comparison between NULL and non-pointer %select{(%1 and NULL)|(NULL and %1)}0", 442, SFINAE_Suppress, false, false, 2)
-DIAG(warn_null_pointer_compare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "comparison of %select{address of|function|array}0 '%1' %select{not |}2equal to a null pointer is always %select{true|false}2", 642, SFINAE_Suppress, false, false, 2)
-DIAG(warn_null_resettable_setter, CLASS_WARNING, (unsigned)diag::Severity::Warning, "synthesized setter %0 for null_resettable property %1 does not handle nil", 447, SFINAE_Suppress, false, false, 19)
-DIAG(warn_null_ret, CLASS_WARNING, (unsigned)diag::Severity::Warning, "null returned from %select{function|method}0 that requires a non-null return value", 434, SFINAE_Suppress, false, false, 28)
-DIAG(warn_nullability_declspec, CLASS_WARNING, (unsigned)diag::Severity::Error, "nullability specifier %0 cannot be applied to non-pointer type %1; did you mean to apply the specifier to the %select{pointer|block pointer|member pointer|function pointer|member function pointer}2?", 450, SFINAE_Suppress, false, false, 19)
-DIAG(warn_nullability_inferred_on_nested_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "inferring '_Nonnull' for pointer type within %select{array|reference}0 is deprecated", 452, SFINAE_Suppress, false, false, 19)
-DIAG(warn_nullability_lost, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion from nullable pointer %0 to non-nullable pointer type %1", 453, SFINAE_Suppress, false, false, 19)
-DIAG(warn_nullability_missing, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{pointer|block pointer|member pointer}0 is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)", 448, SFINAE_Suppress, false, false, 19)
-DIAG(warn_nullability_missing_array, CLASS_WARNING, (unsigned)diag::Severity::Warning, "array parameter is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)", 449, SFINAE_Suppress, false, false, 19)
-DIAG(warn_objc_cdirective_format_string, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "using %0 directive in %select{NSString|CFString}1 which is being passed as a formatting argument to the formatting %select{method|CFfunction}2", 142, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_circular_container, CLASS_WARNING, (unsigned)diag::Severity::Warning, "adding %0 to %1 might cause circular dependency in container", 455, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_collection_literal_element, CLASS_WARNING, (unsigned)diag::Severity::Warning, "object of type %0 is not compatible with %select{array element type|dictionary key type|dictionary value type}1 %2", 462, SFINAE_Suppress, false, false, 24)
-DIAG(warn_objc_designated_init_missing_super_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "designated initializer missing a 'super' call to a designated initializer of the super class", 457, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_designated_init_non_designated_init_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "designated initializer invoked a non-designated initializer", 457, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_designated_init_non_super_designated_init_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "designated initializer should only invoke a designated initializer on 'super'", 457, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_implementation_missing_designated_init_override, CLASS_WARNING, (unsigned)diag::Severity::Warning, "method override for the designated initializer of the superclass %objcinstance0 not found", 457, SFINAE_Suppress, false, false, 2)
+DIAG(warn_nsreturns_retained_attribute_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overriding method has mismatched ns_returns_%select{not_retained|retained}0 attributes", 451, SFINAE_Suppress, false, false, 2)
+DIAG(warn_null_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "null passed to a callee that requires a non-null argument", 444, SFINAE_Suppress, false, false, 28)
+DIAG(warn_null_in_arithmetic_operation, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use of NULL in arithmetic operation", 452, SFINAE_Suppress, false, false, 2)
+DIAG(warn_null_in_comparison_operation, CLASS_WARNING, (unsigned)diag::Severity::Warning, "comparison between NULL and non-pointer %select{(%1 and NULL)|(NULL and %1)}0", 452, SFINAE_Suppress, false, false, 2)
+DIAG(warn_null_pointer_compare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "comparison of %select{address of|function|array}0 '%1' %select{not |}2equal to a null pointer is always %select{true|false}2", 655, SFINAE_Suppress, false, false, 2)
+DIAG(warn_null_resettable_setter, CLASS_WARNING, (unsigned)diag::Severity::Warning, "synthesized setter %0 for null_resettable property %1 does not handle nil", 457, SFINAE_Suppress, false, false, 19)
+DIAG(warn_null_ret, CLASS_WARNING, (unsigned)diag::Severity::Warning, "null returned from %select{function|method}0 that requires a non-null return value", 444, SFINAE_Suppress, false, false, 28)
+DIAG(warn_nullability_declspec, CLASS_WARNING, (unsigned)diag::Severity::Error, "nullability specifier %0 cannot be applied to non-pointer type %1; did you mean to apply the specifier to the %select{pointer|block pointer|member pointer|function pointer|member function pointer}2?", 460, SFINAE_Suppress, false, false, 19)
+DIAG(warn_nullability_inferred_on_nested_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "inferring '_Nonnull' for pointer type within %select{array|reference}0 is deprecated", 462, SFINAE_Suppress, false, false, 19)
+DIAG(warn_nullability_lost, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion from nullable pointer %0 to non-nullable pointer type %1", 463, SFINAE_Suppress, false, false, 19)
+DIAG(warn_nullability_missing, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{pointer|block pointer|member pointer}0 is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)", 458, SFINAE_Suppress, false, false, 19)
+DIAG(warn_nullability_missing_array, CLASS_WARNING, (unsigned)diag::Severity::Warning, "array parameter is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)", 459, SFINAE_Suppress, false, false, 19)
+DIAG(warn_objc_cdirective_format_string, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "using %0 directive in %select{NSString|CFString}1 which is being passed as a formatting argument to the formatting %select{method|CFfunction}2", 143, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_circular_container, CLASS_WARNING, (unsigned)diag::Severity::Warning, "adding %0 to %1 might cause circular dependency in container", 465, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_collection_literal_element, CLASS_WARNING, (unsigned)diag::Severity::Warning, "object of type %0 is not compatible with %select{array element type|dictionary key type|dictionary value type}1 %2", 472, SFINAE_Suppress, false, false, 24)
+DIAG(warn_objc_designated_init_missing_super_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "designated initializer missing a 'super' call to a designated initializer of the super class", 467, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_designated_init_non_designated_init_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "designated initializer invoked a non-designated initializer", 467, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_designated_init_non_super_designated_init_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "designated initializer should only invoke a designated initializer on 'super'", 467, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_implementation_missing_designated_init_override, CLASS_WARNING, (unsigned)diag::Severity::Warning, "method override for the designated initializer of the superclass %objcinstance0 not found", 467, SFINAE_Suppress, false, false, 2)
DIAG(warn_objc_invalid_bridge, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 bridges to %1, not %2", 67, SFINAE_Suppress, false, false, 2)
DIAG(warn_objc_invalid_bridge_to_cf, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 cannot bridge to %1", 67, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_isa_assign, CLASS_WARNING, (unsigned)diag::Severity::Warning, "assignment to Objective-C's isa is deprecated in favor of object_setClass()", 164, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_isa_use, CLASS_WARNING, (unsigned)diag::Severity::Warning, "direct access to Objective-C's isa is deprecated in favor of object_getClass()", 164, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_literal_comparison, CLASS_WARNING, (unsigned)diag::Severity::Warning, "direct comparison of %select{an array literal|a dictionary literal|a numeric literal|a boxed expression|}0 has undefined behavior", 461, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_missing_super_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "method possibly missing a [super %0] call", 467, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_pointer_cxx_catch_fragile, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cannot catch an exception thrown with @throw in C++ in the non-unified exception model", 470, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_pointer_masking, CLASS_WARNING, (unsigned)diag::Severity::Warning, "bitmasking for introspection of Objective-C object pointers is strongly discouraged", 165, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_pointer_masking_performSelector, CLASS_WARNING, (unsigned)diag::Severity::Warning, "bitmasking for introspection of Objective-C object pointers is strongly discouraged", 166, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_isa_assign, CLASS_WARNING, (unsigned)diag::Severity::Warning, "assignment to Objective-C's isa is deprecated in favor of object_setClass()", 170, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_isa_use, CLASS_WARNING, (unsigned)diag::Severity::Warning, "direct access to Objective-C's isa is deprecated in favor of object_getClass()", 170, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_literal_comparison, CLASS_WARNING, (unsigned)diag::Severity::Warning, "direct comparison of %select{an array literal|a dictionary literal|a numeric literal|a boxed expression|}0 has undefined behavior", 471, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_missing_super_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "method possibly missing a [super %0] call", 477, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_pointer_cxx_catch_fragile, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cannot catch an exception thrown with @throw in C++ in the non-unified exception model", 480, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_pointer_masking, CLASS_WARNING, (unsigned)diag::Severity::Warning, "bitmasking for introspection of Objective-C object pointers is strongly discouraged", 171, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_pointer_masking_performSelector, CLASS_WARNING, (unsigned)diag::Severity::Warning, "bitmasking for introspection of Objective-C object pointers is strongly discouraged", 172, SFINAE_Suppress, false, false, 2)
DIAG(warn_objc_precise_lifetime_meaningless, CLASS_ERROR, (unsigned)diag::Severity::Error, "objc_precise_lifetime is not meaningful for %select{__unsafe_unretained|__autoreleasing}0 objects", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(warn_objc_property_assign_on_object, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'assign' property of object type may become a dangling reference; consider using 'unsafe_unretained'", 471, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_property_assign_on_object, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'assign' property of object type may become a dangling reference; consider using 'unsafe_unretained'", 481, SFINAE_Suppress, false, false, 2)
DIAG(warn_objc_property_copy_missing_on_block, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'copy' attribute must be specified for the block property when -fobjc-gc-only is specified", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_property_default_assign_on_object, CLASS_WARNING, (unsigned)diag::Severity::Warning, "default property attribute 'assign' not appropriate for object", 475, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_property_no_assignment_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed", 475, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_property_retain_of_block, CLASS_WARNING, (unsigned)diag::Severity::Warning, "retain'ed block property does not copy the block - use copy attribute instead", 469, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_readonly_property_has_setter, CLASS_WARNING, (unsigned)diag::Severity::Warning, "setter cannot be specified for a readonly property", 480, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_redundant_literal_use, CLASS_WARNING, (unsigned)diag::Severity::Warning, "using %0 with a literal is redundant", 482, SFINAE_Suppress, false, false, 29)
-DIAG(warn_objc_redundant_qualified_class_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "parameterized class %0 already conforms to the protocols listed; did you forget a '*'?", 479, SFINAE_Suppress, false, false, 0)
-DIAG(warn_objc_requires_super_protocol, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute cannot be applied to %select{methods in protocols|dealloc}1", 556, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_root_class_missing, CLASS_WARNING, (unsigned)diag::Severity::Warning, "class %0 defined without specifying a base class", 483, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_secondary_init_missing_init_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "convenience initializer missing a 'self' call to another initializer", 457, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_secondary_init_super_init_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "convenience initializer should not invoke an initializer on 'super'", 457, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_string_literal_comparison, CLASS_WARNING, (unsigned)diag::Severity::Warning, "direct comparison of a string literal has undefined behavior", 484, SFINAE_Suppress, false, false, 2)
-DIAG(warn_objc_unsafe_perform_selector, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is incompatible with selectors that return a %select{struct|union|vector}1 type", 486, SFINAE_Suppress, false, false, 2)
-DIAG(warn_old_style_cast, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "use of old-style cast", 488, SFINAE_Suppress, false, false, 2)
-DIAG(warn_omp_alignment_not_power_of_two, CLASS_WARNING, (unsigned)diag::Severity::Warning, "aligned clause will be ignored because the requested alignment is not a power of 2", 491, SFINAE_Suppress, false, false, 11)
-DIAG(warn_omp_linear_step_zero, CLASS_WARNING, (unsigned)diag::Severity::Warning, "zero linear step (%0 %select{|and other variables in clause }1should probably be const)", 491, SFINAE_Suppress, false, false, 11)
-DIAG(warn_omp_loop_64_bit_var, CLASS_WARNING, (unsigned)diag::Severity::Warning, "OpenMP loop iteration variable cannot have more than 64 bits size and will be narrowed", 492, SFINAE_Suppress, false, false, 11)
-DIAG(warn_omp_nesting_simd, CLASS_WARNING, (unsigned)diag::Severity::Warning, "OpenMP only allows an ordered construct with the simd clause nested in a simd construct", 600, SFINAE_Suppress, false, false, 11)
-DIAG(warn_omp_non_trivial_type_mapped, CLASS_WARNING, (unsigned)diag::Severity::Warning, "Non-trivial type %0 is mapped, only trivial types are guaranteed to be mapped correctly", 493, SFINAE_Suppress, false, false, 11)
-DIAG(warn_omp_not_in_target_context, CLASS_WARNING, (unsigned)diag::Severity::Warning, "declaration is not declared in any declare target region", 493, SFINAE_Suppress, false, false, 11)
-DIAG(warn_omp_section_is_char, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "array section %select{lower bound|length}0 is of type 'char'", 121, SFINAE_Suppress, false, false, 11)
+DIAG(warn_objc_property_default_assign_on_object, CLASS_WARNING, (unsigned)diag::Severity::Warning, "default property attribute 'assign' not appropriate for object", 485, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_property_no_assignment_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed", 485, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_property_retain_of_block, CLASS_WARNING, (unsigned)diag::Severity::Warning, "retain'ed block property does not copy the block - use copy attribute instead", 479, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_readonly_property_has_setter, CLASS_WARNING, (unsigned)diag::Severity::Warning, "setter cannot be specified for a readonly property", 490, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_redundant_literal_use, CLASS_WARNING, (unsigned)diag::Severity::Warning, "using %0 with a literal is redundant", 492, SFINAE_Suppress, false, false, 29)
+DIAG(warn_objc_redundant_qualified_class_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "parameterized class %0 already conforms to the protocols listed; did you forget a '*'?", 489, SFINAE_Suppress, false, false, 0)
+DIAG(warn_objc_requires_super_protocol, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute cannot be applied to %select{methods in protocols|dealloc}1", 568, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_root_class_missing, CLASS_WARNING, (unsigned)diag::Severity::Warning, "class %0 defined without specifying a base class", 493, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_secondary_init_missing_init_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "convenience initializer missing a 'self' call to another initializer", 467, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_secondary_init_super_init_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "convenience initializer should not invoke an initializer on 'super'", 467, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_string_literal_comparison, CLASS_WARNING, (unsigned)diag::Severity::Warning, "direct comparison of a string literal has undefined behavior", 494, SFINAE_Suppress, false, false, 2)
+DIAG(warn_objc_unsafe_perform_selector, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is incompatible with selectors that return a %select{struct|union|vector}1 type", 496, SFINAE_Suppress, false, false, 2)
+DIAG(warn_old_style_cast, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "use of old-style cast", 498, SFINAE_Suppress, false, false, 2)
+DIAG(warn_omp_alignment_not_power_of_two, CLASS_WARNING, (unsigned)diag::Severity::Warning, "aligned clause will be ignored because the requested alignment is not a power of 2", 501, SFINAE_Suppress, false, false, 11)
+DIAG(warn_omp_linear_step_zero, CLASS_WARNING, (unsigned)diag::Severity::Warning, "zero linear step (%0 %select{|and other variables in clause }1should probably be const)", 501, SFINAE_Suppress, false, false, 11)
+DIAG(warn_omp_loop_64_bit_var, CLASS_WARNING, (unsigned)diag::Severity::Warning, "OpenMP loop iteration variable cannot have more than 64 bits size and will be narrowed", 502, SFINAE_Suppress, false, false, 11)
+DIAG(warn_omp_nesting_simd, CLASS_WARNING, (unsigned)diag::Severity::Warning, "OpenMP only allows an ordered construct with the simd clause nested in a simd construct", 613, SFINAE_Suppress, false, false, 11)
+DIAG(warn_omp_non_trivial_type_mapped, CLASS_WARNING, (unsigned)diag::Severity::Warning, "Non-trivial type %0 is mapped, only trivial types are guaranteed to be mapped correctly", 503, SFINAE_Suppress, false, false, 11)
+DIAG(warn_omp_not_in_target_context, CLASS_WARNING, (unsigned)diag::Severity::Warning, "declaration is not declared in any declare target region", 503, SFINAE_Suppress, false, false, 11)
+DIAG(warn_omp_section_is_char, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "array section %select{lower bound|length}0 is of type 'char'", 122, SFINAE_Suppress, false, false, 11)
DIAG(warn_on_superclass_use, CLASS_WARNING, (unsigned)diag::Severity::Warning, "class implementation may not have super class", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_opencl_attr_deprecated_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute is deprecated and ignored in OpenCL version %1", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_opencl_generic_address_space_arg, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "passing non-generic address space pointer to %0 may cause dynamic conversion affecting performance", 136, SFINAE_Suppress, false, false, 24)
-DIAG(warn_operator_new_returns_null, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 should not return a null pointer unless it is declared 'throw()'%select{| or 'noexcept'}1", 425, SFINAE_Suppress, false, false, 2)
+DIAG(warn_opencl_attr_deprecated_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute is deprecated and ignored in OpenCL version %1", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_opencl_generic_address_space_arg, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "passing non-generic address space pointer to %0 may cause dynamic conversion affecting performance", 137, SFINAE_Suppress, false, false, 24)
+DIAG(warn_operator_new_returns_null, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 should not return a null pointer unless it is declared 'throw()'%select{| or 'noexcept'}1", 434, SFINAE_Suppress, false, false, 2)
DIAG(warn_os_log_format_narg, CLASS_ERROR, (unsigned)diag::Severity::Error, "os_log() '%%n' format specifier is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 2)
-DIAG(warn_out_of_range_compare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "result of comparison of %select{constant %0|true|false}1 with %select{expression of type %2|boolean expression}3 is always %4", 640, SFINAE_Suppress, false, false, 2)
-DIAG(warn_overaligned_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "type %0 requires %1 bytes of alignment and the default allocator only guarantees %2 bytes", 498, SFINAE_Suppress, false, false, 2)
-DIAG(warn_overloaded_shift_in_comparison, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overloaded operator %select{>>|<<}0 has higher precedence than comparison operator", 501, SFINAE_Suppress, false, false, 2)
-DIAG(warn_overloaded_virtual, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%q0 hides overloaded virtual %select{function|functions}1", 502, SFINAE_Suppress, false, false, 2)
-DIAG(warn_overriding_method_missing_noescape, CLASS_WARNING, (unsigned)diag::Severity::Warning, "parameter of overriding method should be annotated with __attribute__((noescape))", 402, SFINAE_Suppress, false, false, 2)
-DIAG(warn_padded_struct_anon_field, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "padding %select{struct|interface|class}0 %1 with %2 %select{byte|bit}3%s2 to align anonymous bit-field", 507, SFINAE_Suppress, false, false, 2)
-DIAG(warn_padded_struct_field, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "padding %select{struct|interface|class}0 %1 with %2 %select{byte|bit}3%s2 to align %4", 507, SFINAE_Suppress, false, false, 2)
-DIAG(warn_padded_struct_size, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "padding size of %0 with %1 %select{byte|bit}2%s1 to alignment boundary", 507, SFINAE_Suppress, false, false, 2)
-DIAG(warn_param_return_typestate_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "parameter '%0' not in expected state when the function returns: expected '%1', observed '%2'", 135, SFINAE_Suppress, false, false, 2)
-DIAG(warn_param_typestate_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "argument not in expected state; expected '%0', observed '%1'", 135, SFINAE_Suppress, false, false, 2)
-DIAG(warn_parameter_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is a large (%1 bytes) pass-by-value argument; pass it by reference instead ?", 344, SFINAE_Suppress, false, false, 2)
-DIAG(warn_parens_disambiguated_as_function_declaration, CLASS_WARNING, (unsigned)diag::Severity::Warning, "parentheses were disambiguated as a function declaration", 735, SFINAE_Suppress, false, false, 2)
-DIAG(warn_parens_disambiguated_as_variable_declaration, CLASS_WARNING, (unsigned)diag::Severity::Warning, "parentheses were disambiguated as redundant parentheses around declaration of variable named %0", 735, SFINAE_Suppress, false, false, 2)
-DIAG(warn_pass_class_arg_to_vararg, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "passing object of class type %0 through variadic %select{function|block|method|constructor}1%select{|; did you mean to call '%3'?}2", 123, SFINAE_Suppress, false, false, 2)
-DIAG(warn_pessimizing_move_on_initialization, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "moving a temporary object prevents copy elision", 518, SFINAE_Suppress, false, false, 2)
-DIAG(warn_pessimizing_move_on_return, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "moving a local object in a return statement prevents copy elision", 518, SFINAE_Suppress, false, false, 2)
+DIAG(warn_out_of_range_compare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "result of comparison of %select{constant %0|true|false}1 with %select{expression of type %2|boolean expression}3 is always %4", 653, SFINAE_Suppress, false, false, 2)
+DIAG(warn_overaligned_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "type %0 requires %1 bytes of alignment and the default allocator only guarantees %2 bytes", 508, SFINAE_Suppress, false, false, 2)
+DIAG(warn_overloaded_shift_in_comparison, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overloaded operator %select{>>|<<}0 has higher precedence than comparison operator", 511, SFINAE_Suppress, false, false, 2)
+DIAG(warn_overloaded_virtual, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%q0 hides overloaded virtual %select{function|functions}1", 512, SFINAE_Suppress, false, false, 2)
+DIAG(warn_overriding_method_missing_noescape, CLASS_WARNING, (unsigned)diag::Severity::Warning, "parameter of overriding method should be annotated with __attribute__((noescape))", 411, SFINAE_Suppress, false, false, 2)
+DIAG(warn_param_return_typestate_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "parameter '%0' not in expected state when the function returns: expected '%1', observed '%2'", 136, SFINAE_Suppress, false, false, 2)
+DIAG(warn_param_typestate_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "argument not in expected state; expected '%0', observed '%1'", 136, SFINAE_Suppress, false, false, 2)
+DIAG(warn_parameter_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is a large (%1 bytes) pass-by-value argument; pass it by reference instead ?", 353, SFINAE_Suppress, false, false, 2)
+DIAG(warn_parens_disambiguated_as_function_declaration, CLASS_WARNING, (unsigned)diag::Severity::Warning, "parentheses were disambiguated as a function declaration", 748, SFINAE_Suppress, false, false, 2)
+DIAG(warn_parens_disambiguated_as_variable_declaration, CLASS_WARNING, (unsigned)diag::Severity::Warning, "parentheses were disambiguated as redundant parentheses around declaration of variable named %0", 748, SFINAE_Suppress, false, false, 2)
+DIAG(warn_pass_class_arg_to_vararg, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "passing object of class type %0 through variadic %select{function|block|method|constructor}1%select{|; did you mean to call '%3'?}2", 124, SFINAE_Suppress, false, false, 2)
+DIAG(warn_pessimizing_move_on_initialization, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "moving a temporary object prevents copy elision", 529, SFINAE_Suppress, false, false, 2)
+DIAG(warn_pessimizing_move_on_return, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "moving a local object in a return statement prevents copy elision", 529, SFINAE_Suppress, false, false, 2)
DIAG(warn_pointer_abs, CLASS_WARNING, (unsigned)diag::Severity::Warning, "taking the absolute value of %select{pointer|function|array}0 type %1 is suspicious", 8, SFINAE_Suppress, false, false, 2)
-DIAG(warn_pointer_arith_null_ptr, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "performing pointer arithmetic on a null pointer has undefined behavior%select{| if the offset is nonzero}0", 446, SFINAE_Suppress, false, false, 2)
-DIAG(warn_pointer_indirection_from_incompatible_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "dereference of type %1 that was reinterpret_cast from type %0 has undefined behavior", 670, SFINAE_Suppress, false, false, 2)
-DIAG(warn_pragma_attribute_unused, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unused attribute %0 in '#pragma clang attribute push' region", 525, SFINAE_Suppress, false, false, 2)
-DIAG(warn_pragma_options_align_reset_failed, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#pragma options align=reset failed: %0", 278, SFINAE_Suppress, false, false, 2)
-DIAG(warn_pragma_pack_invalid_alignment, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected #pragma pack parameter to be '1', '2', '4', '8', or '16'", 278, SFINAE_Suppress, false, false, 2)
-DIAG(warn_pragma_pack_modified_after_include, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the current #pragma pack alignment value is modified in the included file", 527, SFINAE_Suppress, false, false, 2)
-DIAG(warn_pragma_pack_no_pop_eof, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unterminated '#pragma pack (push, ...)' at end of file", 527, SFINAE_Suppress, false, false, 2)
-DIAG(warn_pragma_pack_non_default_at_include, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "non-default #pragma pack value changes the alignment of struct or union members in the included file", 528, SFINAE_Suppress, false, false, 2)
+DIAG(warn_pointer_arith_null_ptr, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "performing pointer arithmetic on a null pointer has undefined behavior%select{| if the offset is nonzero}0", 456, SFINAE_Suppress, false, false, 2)
+DIAG(warn_pointer_indirection_from_incompatible_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "dereference of type %1 that was reinterpret_cast from type %0 has undefined behavior", 683, SFINAE_Suppress, false, false, 2)
+DIAG(warn_pragma_attribute_unused, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unused attribute %0 in '#pragma clang attribute push' region", 537, SFINAE_Suppress, false, false, 2)
+DIAG(warn_pragma_options_align_reset_failed, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#pragma options align=reset failed: %0", 286, SFINAE_Suppress, false, false, 2)
+DIAG(warn_pragma_pack_invalid_alignment, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected #pragma pack parameter to be '1', '2', '4', '8', or '16'", 286, SFINAE_Suppress, false, false, 2)
+DIAG(warn_pragma_pack_modified_after_include, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the current #pragma pack alignment value is modified in the included file", 539, SFINAE_Suppress, false, false, 2)
+DIAG(warn_pragma_pack_no_pop_eof, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unterminated '#pragma pack (push, ...)' at end of file", 539, SFINAE_Suppress, false, false, 2)
+DIAG(warn_pragma_pack_non_default_at_include, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "non-default #pragma pack value changes the alignment of struct or union members in the included file", 540, SFINAE_Suppress, false, false, 2)
DIAG(warn_pragma_pack_pop_identifier_and_alignment, CLASS_WARNING, (unsigned)diag::Severity::Warning, "specifying both a name and alignment to 'pop' is undefined", 0, SFINAE_Suppress, false, false, 2)
DIAG(warn_pragma_pack_show, CLASS_WARNING, (unsigned)diag::Severity::Warning, "value of #pragma pack(show) == %0", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_pragma_pop_failed, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#pragma %0(pop, ...) failed: %1", 278, SFINAE_Suppress, false, false, 2)
-DIAG(warn_pragma_unused_expected_var_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "only variables can be arguments to '#pragma unused'", 278, SFINAE_Suppress, false, false, 2)
-DIAG(warn_pragma_unused_undeclared_var, CLASS_WARNING, (unsigned)diag::Severity::Warning, "undeclared variable %0 used as an argument for '#pragma unused'", 278, SFINAE_Suppress, false, false, 2)
-DIAG(warn_precedence_bitwise_rel, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 has lower precedence than %1; %1 will be evaluated first", 508, SFINAE_Suppress, false, false, 2)
-DIAG(warn_precedence_conditional, CLASS_WARNING, (unsigned)diag::Severity::Warning, "operator '?:' has lower precedence than '%0'; '%0' will be evaluated first", 508, SFINAE_Suppress, false, false, 2)
-DIAG(warn_printf_ObjCflags_without_ObjCConversion, CLASS_WARNING, (unsigned)diag::Severity::Warning, "object format flags cannot be used with '%0' conversion specifier", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_printf_asterisk_missing_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%select{*|.*}0' specified field %select{width|precision}0 is missing a matching 'int' argument", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_printf_asterisk_wrong_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "field %select{width|precision}0 should have type %1, but argument has type %2", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_printf_data_arg_not_used, CLASS_WARNING, (unsigned)diag::Severity::Warning, "data argument not used by format string", 227, SFINAE_Suppress, false, false, 28)
-DIAG(warn_printf_empty_objc_flag, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing object format flag", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_printf_format_string_contains_null_char, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format string contains '\\0' within the string body", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_printf_format_string_not_null_terminated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format string is not null-terminated", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_printf_ignored_flag, CLASS_WARNING, (unsigned)diag::Severity::Warning, "flag '%0' is ignored when flag '%1' is present", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_printf_incomplete_specifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "incomplete format specifier", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_printf_insufficient_data_args, CLASS_WARNING, (unsigned)diag::Severity::Warning, "more '%%' conversions than data arguments", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_printf_invalid_objc_flag, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' is not a valid object format flag", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_printf_nonsensical_flag, CLASS_WARNING, (unsigned)diag::Severity::Warning, "flag '%0' results in undefined behavior with '%1' conversion specifier", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_printf_nonsensical_optional_amount, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{field width|precision}0 used with '%1' conversion specifier, resulting in undefined behavior", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_printf_positional_arg_exceeds_data_args, CLASS_WARNING, (unsigned)diag::Severity::Warning, "data argument position '%0' exceeds the number of data arguments (%1)", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_private_extern, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use of __private_extern__ on a declaration may not produce external symbol private to the linkage unit and is deprecated", 532, SFINAE_Suppress, false, false, 2)
-DIAG(warn_profile_data_missing, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "profile data may be incomplete: of %0 function%s0, %1 %plural{1:has|:have}1 no data", 535, SFINAE_Suppress, false, false, 31)
-DIAG(warn_profile_data_out_of_date, CLASS_WARNING, (unsigned)diag::Severity::Warning, "profile data may be out of date: of %0 function%s0, %1 %plural{1:has|:have}1 mismatched data that will be ignored", 536, SFINAE_Suppress, false, false, 31)
-DIAG(warn_profile_data_unprofiled, CLASS_WARNING, (unsigned)diag::Severity::Warning, "no profile data available for file \"%0\"", 537, SFINAE_Suppress, false, false, 31)
-DIAG(warn_property_access_suggest, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property %0 not found on object of type %1; did you mean to access property %2?", 538, SFINAE_Suppress, false, false, 2)
-DIAG(warn_property_attr_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property attribute in class extension does not match the primary class", 539, SFINAE_Suppress, false, false, 2)
-DIAG(warn_property_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%1' attribute on property %0 does not match the property inherited from %2", 539, SFINAE_Suppress, false, false, 2)
+DIAG(warn_pragma_pop_failed, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#pragma %0(pop, ...) failed: %1", 286, SFINAE_Suppress, false, false, 2)
+DIAG(warn_pragma_unused_expected_var_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "only variables can be arguments to '#pragma unused'", 286, SFINAE_Suppress, false, false, 2)
+DIAG(warn_pragma_unused_undeclared_var, CLASS_WARNING, (unsigned)diag::Severity::Warning, "undeclared variable %0 used as an argument for '#pragma unused'", 286, SFINAE_Suppress, false, false, 2)
+DIAG(warn_precedence_bitwise_rel, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 has lower precedence than %1; %1 will be evaluated first", 519, SFINAE_Suppress, false, false, 2)
+DIAG(warn_precedence_conditional, CLASS_WARNING, (unsigned)diag::Severity::Warning, "operator '?:' has lower precedence than '%0'; '%0' will be evaluated first", 519, SFINAE_Suppress, false, false, 2)
+DIAG(warn_printf_ObjCflags_without_ObjCConversion, CLASS_WARNING, (unsigned)diag::Severity::Warning, "object format flags cannot be used with '%0' conversion specifier", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_printf_asterisk_missing_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%select{*|.*}0' specified field %select{width|precision}0 is missing a matching 'int' argument", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_printf_asterisk_wrong_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "field %select{width|precision}0 should have type %1, but argument has type %2", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_printf_data_arg_not_used, CLASS_WARNING, (unsigned)diag::Severity::Warning, "data argument not used by format string", 235, SFINAE_Suppress, false, false, 28)
+DIAG(warn_printf_empty_objc_flag, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing object format flag", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_printf_format_string_contains_null_char, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format string contains '\\0' within the string body", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_printf_format_string_not_null_terminated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format string is not null-terminated", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_printf_ignored_flag, CLASS_WARNING, (unsigned)diag::Severity::Warning, "flag '%0' is ignored when flag '%1' is present", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_printf_incomplete_specifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "incomplete format specifier", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_printf_insufficient_data_args, CLASS_WARNING, (unsigned)diag::Severity::Warning, "more '%%' conversions than data arguments", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_printf_invalid_objc_flag, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' is not a valid object format flag", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_printf_nonsensical_flag, CLASS_WARNING, (unsigned)diag::Severity::Warning, "flag '%0' results in undefined behavior with '%1' conversion specifier", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_printf_nonsensical_optional_amount, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{field width|precision}0 used with '%1' conversion specifier, resulting in undefined behavior", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_printf_positional_arg_exceeds_data_args, CLASS_WARNING, (unsigned)diag::Severity::Warning, "data argument position '%0' exceeds the number of data arguments (%1)", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_private_extern, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use of __private_extern__ on a declaration may not produce external symbol private to the linkage unit and is deprecated", 544, SFINAE_Suppress, false, false, 2)
+DIAG(warn_property_access_suggest, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property %0 not found on object of type %1; did you mean to access property %2?", 550, SFINAE_Suppress, false, false, 2)
+DIAG(warn_property_attr_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property attribute in class extension does not match the primary class", 551, SFINAE_Suppress, false, false, 2)
+DIAG(warn_property_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%1' attribute on property %0 does not match the property inherited from %2", 551, SFINAE_Suppress, false, false, 2)
DIAG(warn_property_getter_owning_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property declared as returning non-retained objects; getter returning retained objects", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_property_implicitly_mismatched, CLASS_WARNING, (unsigned)diag::Severity::Warning, "primary property declaration is implicitly strong while redeclaration in class extension is weak", 473, SFINAE_Suppress, false, false, 2)
-DIAG(warn_property_method_deprecated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property access is using %0 method which is deprecated", 160, SFINAE_Suppress, false, false, 27)
-DIAG(warn_property_redecl_getter_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "getter name mismatch between property redeclaration (%1) and its original declaration (%0)", 539, SFINAE_Suppress, false, false, 2)
-DIAG(warn_property_types_are_incompatible, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property type %0 is incompatible with type %1 inherited from %2", 303, SFINAE_Suppress, false, false, 2)
-DIAG(warn_protocol_property_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property %select{of type %1|with attribute '%1'|without attribute '%1'|with getter %1|with setter %1}0 was selected for synthesis", 541, SFINAE_Suppress, false, false, 2)
-DIAG(warn_pt_guarded_pass_by_reference, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "passing the value that %1 points to by reference requires holding %0 %select{'%2'|'%2' exclusively}3", 654, SFINAE_Suppress, false, false, 2)
+DIAG(warn_property_implicitly_mismatched, CLASS_WARNING, (unsigned)diag::Severity::Warning, "primary property declaration is implicitly strong while redeclaration in class extension is weak", 483, SFINAE_Suppress, false, false, 2)
+DIAG(warn_property_method_deprecated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property access is using %0 method which is deprecated", 166, SFINAE_Suppress, false, false, 27)
+DIAG(warn_property_redecl_getter_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "getter name mismatch between property redeclaration (%1) and its original declaration (%0)", 551, SFINAE_Suppress, false, false, 2)
+DIAG(warn_property_types_are_incompatible, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property type %0 is incompatible with type %1 inherited from %2", 312, SFINAE_Suppress, false, false, 2)
+DIAG(warn_protocol_property_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property %select{of type %1|with attribute '%1'|without attribute '%1'|with getter %1|with setter %1}0 was selected for synthesis", 553, SFINAE_Suppress, false, false, 2)
+DIAG(warn_pt_guarded_pass_by_reference, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "passing the value that %1 points to by reference requires holding %0 %select{'%2'|'%2' exclusively}3", 667, SFINAE_Suppress, false, false, 2)
DIAG(warn_ptr_arith_exceeds_bounds, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "the pointer incremented by %0 refers past the end of the array (that contains %1 element%s2)", 33, SFINAE_Suppress, false, false, 2)
DIAG(warn_ptr_arith_precedes_bounds, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "the pointer decremented by %0 refers before the beginning of the array", 33, SFINAE_Suppress, false, false, 2)
DIAG(warn_ptr_independentclass_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'objc_independent_class' attribute may be put on Objective-C object pointer type only; attribute is ignored", 5, SFINAE_Suppress, false, false, 2)
-DIAG(warn_qual_return_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%0' type qualifier%s1 on return type %plural{1:has|:have}1 no effect", 279, SFINAE_Suppress, false, false, 2)
-DIAG(warn_readonly_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute 'readonly' of property %0 restricts attribute 'readwrite' of property inherited from %1", 539, SFINAE_Suppress, false, false, 2)
-DIAG(warn_receiver_forward_class, CLASS_WARNING, (unsigned)diag::Severity::Warning, "receiver %0 is a forward class and corresponding @interface may not exist", 547, SFINAE_Suppress, false, false, 2)
-DIAG(warn_receiver_forward_instance, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "receiver type %0 for instance message is a forward declaration", 547, SFINAE_Suppress, false, false, 5)
-DIAG(warn_redecl_library_builtin, CLASS_WARNING, (unsigned)diag::Severity::Warning, "incompatible redeclaration of library function %0", 299, SFINAE_Suppress, false, false, 2)
-DIAG(warn_redeclaration_without_attribute_prev_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%q0 redeclared without %1 attribute: previous %1 ignored", 309, SFINAE_Suppress, false, false, 2)
-DIAG(warn_redeclaration_without_import_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%q0 redeclared without 'dllimport' attribute: 'dllexport' attribute added", 309, SFINAE_Suppress, false, false, 2)
-DIAG(warn_redefine_extname_not_applied, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#pragma redefine_extname is applicable to external C declarations only; not applied to %select{function|variable}0 %1", 530, SFINAE_Suppress, false, false, 2)
-DIAG(warn_redefinition_in_param_list, CLASS_WARNING, (unsigned)diag::Severity::Warning, "redefinition of %0 will not be visible outside of this function", 736, SFINAE_Suppress, false, false, 2)
-DIAG(warn_redundant_loop_iteration, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable %0 is %select{decremented|incremented}1 both in the loop header and in the loop body", 225, SFINAE_Suppress, false, false, 2)
-DIAG(warn_redundant_move_on_return, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "redundant move in return statement", 550, SFINAE_Suppress, false, false, 2)
-DIAG(warn_redundant_parens_around_declarator, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "redundant parentheses surrounding declarator", 551, SFINAE_Suppress, false, false, 2)
-DIAG(warn_reference_field_is_uninit, CLASS_WARNING, (unsigned)diag::Severity::Warning, "reference %0 is not yet bound to a value when used here", 679, SFINAE_Suppress, false, false, 2)
+DIAG(warn_qual_return_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%0' type qualifier%s1 on return type %plural{1:has|:have}1 no effect", 287, SFINAE_Suppress, false, false, 2)
+DIAG(warn_readonly_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute 'readonly' of property %0 restricts attribute 'readwrite' of property inherited from %1", 551, SFINAE_Suppress, false, false, 2)
+DIAG(warn_receiver_forward_class, CLASS_WARNING, (unsigned)diag::Severity::Warning, "receiver %0 is a forward class and corresponding @interface may not exist", 559, SFINAE_Suppress, false, false, 2)
+DIAG(warn_receiver_forward_instance, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "receiver type %0 for instance message is a forward declaration", 559, SFINAE_Suppress, false, false, 5)
+DIAG(warn_redecl_library_builtin, CLASS_WARNING, (unsigned)diag::Severity::Warning, "incompatible redeclaration of library function %0", 308, SFINAE_Suppress, false, false, 2)
+DIAG(warn_redeclaration_without_attribute_prev_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%q0 redeclared without %1 attribute: previous %1 ignored", 318, SFINAE_Suppress, false, false, 2)
+DIAG(warn_redeclaration_without_import_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%q0 redeclared without 'dllimport' attribute: 'dllexport' attribute added", 318, SFINAE_Suppress, false, false, 2)
+DIAG(warn_redefine_extname_not_applied, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#pragma redefine_extname is applicable to external C declarations only; not applied to %select{function|variable}0 %1", 542, SFINAE_Suppress, false, false, 2)
+DIAG(warn_redefinition_in_param_list, CLASS_WARNING, (unsigned)diag::Severity::Warning, "redefinition of %0 will not be visible outside of this function", 749, SFINAE_Suppress, false, false, 2)
+DIAG(warn_redundant_loop_iteration, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable %0 is %select{decremented|incremented}1 both in the loop header and in the loop body", 233, SFINAE_Suppress, false, false, 2)
+DIAG(warn_redundant_move_on_return, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "redundant move in return statement", 562, SFINAE_Suppress, false, false, 2)
+DIAG(warn_redundant_parens_around_declarator, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "redundant parentheses surrounding declarator", 563, SFINAE_Suppress, false, false, 2)
+DIAG(warn_reference_field_is_uninit, CLASS_WARNING, (unsigned)diag::Severity::Warning, "reference %0 is not yet bound to a value when used here", 692, SFINAE_Suppress, false, false, 2)
DIAG(warn_register_objc_catch_parm, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'register' storage specifier on @catch parameter will be ignored", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_reinterpret_different_from_static, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'reinterpret_cast' %select{from|to}3 class %0 %select{to|from}3 its %select{virtual base|base at non-zero offset}2 %1 behaves differently from 'static_cast'", 553, SFINAE_Suppress, false, false, 2)
+DIAG(warn_reinterpret_different_from_static, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'reinterpret_cast' %select{from|to}3 class %0 %select{to|from}3 its %select{virtual base|base at non-zero offset}2 %1 behaves differently from 'static_cast'", 565, SFINAE_Suppress, false, false, 2)
DIAG(warn_related_result_type_compatibility_class, CLASS_WARNING, (unsigned)diag::Severity::Warning, "method is expected to return an instance of its class type %diff{$, but is declared to return $|, but is declared to return different type}0,1", 0, SFINAE_Suppress, false, false, 17)
DIAG(warn_related_result_type_compatibility_protocol, CLASS_WARNING, (unsigned)diag::Severity::Warning, "protocol method is expected to return an instance of the implementing class, but is declared to return %0", 0, SFINAE_Suppress, false, false, 17)
-DIAG(warn_remainder_division_by_zero, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{remainder|division}0 by zero is undefined", 176, SFINAE_Suppress, false, false, 2)
-DIAG(warn_ret_addr_label, CLASS_WARNING, (unsigned)diag::Severity::Warning, "returning address of label, which is local", 560, SFINAE_Suppress, false, false, 2)
-DIAG(warn_ret_local_temp_addr_ref, CLASS_WARNING, (unsigned)diag::Severity::Warning, "returning %select{address of|reference to}0 local temporary object", 560, SFINAE_Suppress, false, false, 2)
-DIAG(warn_ret_stack_addr_ref, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{address of|reference to}0 stack memory associated with %select{local variable|parameter}2 %1 returned", 560, SFINAE_Suppress, false, false, 2)
-DIAG(warn_return_missing_expr, CLASS_WARNING, (unsigned)diag::Severity::Error, "non-void %select{function|method}1 %0 should return a value", 563, SFINAE_Suppress, false, false, 2)
-DIAG(warn_return_std_move, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "local variable %0 will be copied despite being %select{returned|thrown}1 by name", 561, SFINAE_Suppress, false, false, 2)
-DIAG(warn_return_std_move_in_cxx11, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "prior to the resolution of a defect report against ISO C++11, local variable %0 would have been copied despite being returned by name, due to its not matching the function return type%diff{ ($ vs $)|}1,2", 562, SFINAE_Suppress, false, false, 2)
-DIAG(warn_return_typestate_for_unconsumable_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "return state set for an unconsumable type '%0'", 135, SFINAE_Suppress, false, false, 2)
-DIAG(warn_return_typestate_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "return value not in expected state; expected '%0', observed '%1'", 135, SFINAE_Suppress, false, false, 2)
-DIAG(warn_return_value_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "return value of %0 is a large (%1 bytes) pass-by-value object; pass it by reference instead ?", 344, SFINAE_Suppress, false, false, 2)
-DIAG(warn_return_value_udt, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 has C-linkage specified, but returns user-defined type %1 which is incompatible with C", 564, SFINAE_Suppress, false, false, 2)
-DIAG(warn_return_value_udt_incomplete, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 has C-linkage specified, but returns incomplete type %1 which could be incompatible with C", 564, SFINAE_Suppress, false, false, 2)
-DIAG(warn_riscv_interrupt_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "RISC-V 'interrupt' attribute only applies to functions that have %select{no parameters|a 'void' return type}0", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_riscv_repeated_interrupt_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "repeated RISC-V 'interrupt' attribute", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_root_inst_method_not_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "instance method %0 is being used on 'Class' which is not in the root class", 465, SFINAE_Suppress, false, false, 2)
-DIAG(warn_sampler_initializer_invalid_bits, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "sampler initializer has invalid %0 bits", 601, SFINAE_Suppress, false, false, 2)
-DIAG(warn_scanf_nonzero_width, CLASS_WARNING, (unsigned)diag::Severity::Warning, "zero field width in scanf format string is unused", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_scanf_scanlist_incomplete, CLASS_WARNING, (unsigned)diag::Severity::Warning, "no closing ']' for '%%[' in scanf format string", 226, SFINAE_Suppress, false, false, 28)
-DIAG(warn_second_arg_of_va_start_not_last_named_param, CLASS_WARNING, (unsigned)diag::Severity::Warning, "second argument to 'va_start' is not the last named parameter", 730, SFINAE_Suppress, false, false, 2)
-DIAG(warn_second_parameter_to_va_arg_never_compatible, CLASS_WARNING, (unsigned)diag::Severity::Warning, "second argument to 'va_arg' is of promotable type %0; this va_arg has undefined behavior because arguments will be promoted to %1", 730, SFINAE_Suppress, false, false, 2)
-DIAG(warn_second_parameter_to_va_arg_not_pod, CLASS_WARNING, (unsigned)diag::Severity::Error, "second argument to 'va_arg' is of non-POD type %0", 432, SFINAE_Suppress, false, false, 2)
-DIAG(warn_second_parameter_to_va_arg_ownership_qualified, CLASS_WARNING, (unsigned)diag::Severity::Error, "second argument to 'va_arg' is of ARC ownership-qualified type %0", 432, SFINAE_Suppress, false, false, 2)
-DIAG(warn_self_assignment_builtin, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicitly assigning value of variable of type %0 to itself", 569, SFINAE_Suppress, false, false, 2)
-DIAG(warn_self_assignment_overloaded, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicitly assigning value of variable of type %0 to itself", 571, SFINAE_Suppress, false, false, 2)
-DIAG(warn_self_move, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicitly moving variable of type %0 to itself", 572, SFINAE_Suppress, false, false, 2)
-DIAG(warn_setter_getter_impl_required, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property %0 requires method %1 to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation", 472, SFINAE_Suppress, false, false, 2)
-DIAG(warn_setter_getter_impl_required_in_category, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property %0 requires method %1 to be defined - use @dynamic or provide a method implementation in this category", 472, SFINAE_Suppress, false, false, 2)
-DIAG(warn_shadow_field, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "non-static data member %0 of %1 shadows member inherited from type %2", 579, SFINAE_Suppress, false, false, 0)
-DIAG(warn_shift_gt_typewidth, CLASS_WARNING, (unsigned)diag::Severity::Warning, "shift count >= width of type", 585, SFINAE_Suppress, false, false, 2)
-DIAG(warn_shift_lhs_negative, CLASS_WARNING, (unsigned)diag::Severity::Warning, "shifting a negative signed value is undefined", 586, SFINAE_Suppress, false, false, 2)
-DIAG(warn_shift_negative, CLASS_WARNING, (unsigned)diag::Severity::Warning, "shift count is negative", 584, SFINAE_Suppress, false, false, 2)
-DIAG(warn_shift_result_gt_typewidth, CLASS_WARNING, (unsigned)diag::Severity::Warning, "signed shift result (%0) requires %1 bits to represent, but %2 only has %3 bits", 588, SFINAE_Suppress, false, false, 2)
-DIAG(warn_shift_result_sets_sign_bit, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "signed shift result (%0) sets the sign bit of the shift expression's type (%1) and becomes negative", 589, SFINAE_Suppress, false, false, 2)
-DIAG(warn_side_effects_typeid, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expression with side effects will be evaluated despite being used as an operand to 'typeid'", 524, SFINAE_Suppress, false, false, 32)
-DIAG(warn_side_effects_unevaluated_context, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expression with side effects has no effect in an unevaluated context", 672, SFINAE_Suppress, false, false, 32)
+DIAG(warn_remainder_division_by_zero, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{remainder|division}0 by zero is undefined", 182, SFINAE_Suppress, false, false, 2)
+DIAG(warn_ret_addr_label, CLASS_WARNING, (unsigned)diag::Severity::Warning, "returning address of label, which is local", 572, SFINAE_Suppress, false, false, 2)
+DIAG(warn_ret_local_temp_addr_ref, CLASS_WARNING, (unsigned)diag::Severity::Warning, "returning %select{address of|reference to}0 local temporary object", 572, SFINAE_Suppress, false, false, 2)
+DIAG(warn_ret_stack_addr_ref, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{address of|reference to}0 stack memory associated with %select{local variable|parameter}2 %1 returned", 572, SFINAE_Suppress, false, false, 2)
+DIAG(warn_return_missing_expr, CLASS_WARNING, (unsigned)diag::Severity::Error, "non-void %select{function|method}1 %0 should return a value", 575, SFINAE_Suppress, false, false, 2)
+DIAG(warn_return_std_move, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "local variable %0 will be copied despite being %select{returned|thrown}1 by name", 573, SFINAE_Suppress, false, false, 2)
+DIAG(warn_return_std_move_in_cxx11, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "prior to the resolution of a defect report against ISO C++11, local variable %0 would have been copied despite being returned by name, due to its not matching the function return type%diff{ ($ vs $)|}1,2", 574, SFINAE_Suppress, false, false, 2)
+DIAG(warn_return_typestate_for_unconsumable_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "return state set for an unconsumable type '%0'", 136, SFINAE_Suppress, false, false, 2)
+DIAG(warn_return_typestate_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "return value not in expected state; expected '%0', observed '%1'", 136, SFINAE_Suppress, false, false, 2)
+DIAG(warn_return_value_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "return value of %0 is a large (%1 bytes) pass-by-value object; pass it by reference instead ?", 353, SFINAE_Suppress, false, false, 2)
+DIAG(warn_return_value_udt, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 has C-linkage specified, but returns user-defined type %1 which is incompatible with C", 576, SFINAE_Suppress, false, false, 2)
+DIAG(warn_return_value_udt_incomplete, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 has C-linkage specified, but returns incomplete type %1 which could be incompatible with C", 576, SFINAE_Suppress, false, false, 2)
+DIAG(warn_riscv_repeated_interrupt_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "repeated RISC-V 'interrupt' attribute", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_root_inst_method_not_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "instance method %0 is being used on 'Class' which is not in the root class", 475, SFINAE_Suppress, false, false, 2)
+DIAG(warn_sampler_initializer_invalid_bits, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "sampler initializer has invalid %0 bits", 614, SFINAE_Suppress, false, false, 2)
+DIAG(warn_scanf_nonzero_width, CLASS_WARNING, (unsigned)diag::Severity::Warning, "zero field width in scanf format string is unused", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_scanf_scanlist_incomplete, CLASS_WARNING, (unsigned)diag::Severity::Warning, "no closing ']' for '%%[' in scanf format string", 234, SFINAE_Suppress, false, false, 28)
+DIAG(warn_second_arg_of_va_start_not_last_named_param, CLASS_WARNING, (unsigned)diag::Severity::Warning, "second argument to 'va_start' is not the last named parameter", 743, SFINAE_Suppress, false, false, 2)
+DIAG(warn_second_parameter_to_va_arg_never_compatible, CLASS_WARNING, (unsigned)diag::Severity::Warning, "second argument to 'va_arg' is of promotable type %0; this va_arg has undefined behavior because arguments will be promoted to %1", 743, SFINAE_Suppress, false, false, 2)
+DIAG(warn_second_parameter_to_va_arg_not_pod, CLASS_WARNING, (unsigned)diag::Severity::Error, "second argument to 'va_arg' is of non-POD type %0", 442, SFINAE_Suppress, false, false, 2)
+DIAG(warn_second_parameter_to_va_arg_ownership_qualified, CLASS_WARNING, (unsigned)diag::Severity::Error, "second argument to 'va_arg' is of ARC ownership-qualified type %0", 442, SFINAE_Suppress, false, false, 2)
+DIAG(warn_self_assignment_builtin, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicitly assigning value of variable of type %0 to itself", 581, SFINAE_Suppress, false, false, 2)
+DIAG(warn_self_assignment_overloaded, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicitly assigning value of variable of type %0 to itself", 583, SFINAE_Suppress, false, false, 2)
+DIAG(warn_self_move, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicitly moving variable of type %0 to itself", 584, SFINAE_Suppress, false, false, 2)
+DIAG(warn_setter_getter_impl_required, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property %0 requires method %1 to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation", 482, SFINAE_Suppress, false, false, 2)
+DIAG(warn_setter_getter_impl_required_in_category, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property %0 requires method %1 to be defined - use @dynamic or provide a method implementation in this category", 482, SFINAE_Suppress, false, false, 2)
+DIAG(warn_shadow_field, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{parameter|non-static data member}3 %0 %select{|of %1 }3shadows member inherited from type %2", 591, SFINAE_Suppress, false, false, 0)
+DIAG(warn_shift_gt_typewidth, CLASS_WARNING, (unsigned)diag::Severity::Warning, "shift count >= width of type", 597, SFINAE_Suppress, false, false, 2)
+DIAG(warn_shift_lhs_negative, CLASS_WARNING, (unsigned)diag::Severity::Warning, "shifting a negative signed value is undefined", 598, SFINAE_Suppress, false, false, 2)
+DIAG(warn_shift_negative, CLASS_WARNING, (unsigned)diag::Severity::Warning, "shift count is negative", 596, SFINAE_Suppress, false, false, 2)
+DIAG(warn_shift_result_gt_typewidth, CLASS_WARNING, (unsigned)diag::Severity::Warning, "signed shift result (%0) requires %1 bits to represent, but %2 only has %3 bits", 600, SFINAE_Suppress, false, false, 2)
+DIAG(warn_shift_result_sets_sign_bit, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "signed shift result (%0) sets the sign bit of the shift expression's type (%1) and becomes negative", 601, SFINAE_Suppress, false, false, 2)
+DIAG(warn_side_effects_typeid, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expression with side effects will be evaluated despite being used as an operand to 'typeid'", 536, SFINAE_Suppress, false, false, 32)
+DIAG(warn_side_effects_unevaluated_context, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expression with side effects has no effect in an unevaluated context", 685, SFINAE_Suppress, false, false, 32)
DIAG(warn_signed_bitfield_enum_conversion, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "signed bit-field %0 needs an extra bit to represent the largest positive enumerators of %1", 60, SFINAE_Suppress, false, false, 24)
-DIAG(warn_sizeof_array_decay, CLASS_WARNING, (unsigned)diag::Severity::Warning, "sizeof on pointer operation will return size of %0 instead of %1", 596, SFINAE_Suppress, false, false, 2)
-DIAG(warn_sizeof_array_param, CLASS_WARNING, (unsigned)diag::Severity::Warning, "sizeof on array function parameter will return size of %0 instead of %1", 595, SFINAE_Suppress, false, false, 2)
-DIAG(warn_sizeof_pointer_expr_memaccess, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' call operates on objects of type %1 while the size is based on a different type %2", 597, SFINAE_Suppress, false, false, 2)
+DIAG(warn_sizeof_array_decay, CLASS_WARNING, (unsigned)diag::Severity::Warning, "sizeof on pointer operation will return size of %0 instead of %1", 608, SFINAE_Suppress, false, false, 2)
+DIAG(warn_sizeof_array_param, CLASS_WARNING, (unsigned)diag::Severity::Warning, "sizeof on array function parameter will return size of %0 instead of %1", 607, SFINAE_Suppress, false, false, 2)
+DIAG(warn_sizeof_pointer_expr_memaccess, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' call operates on objects of type %1 while the size is based on a different type %2", 610, SFINAE_Suppress, false, false, 2)
DIAG(warn_sizeof_pointer_expr_memaccess_note, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did you mean to %select{dereference the argument to 'sizeof' (and multiply it by the number of elements)|remove the addressof in the argument to 'sizeof' (and multiply it by the number of elements)|provide an explicit length}0?", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_sizeof_pointer_type_memaccess, CLASS_WARNING, (unsigned)diag::Severity::Warning, "argument to 'sizeof' in %0 call is the same pointer type %1 as the %select{destination|source}2; expected %3 or an explicit length", 597, SFINAE_Suppress, false, false, 2)
-DIAG(warn_sometimes_uninit_var, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable %0 is %select{used|captured}1 uninitialized whenever %select{'%3' condition is %select{true|false}4|'%3' loop %select{is entered|exits because its condition is false}4|'%3' loop %select{condition is true|exits because its condition is false}4|switch %3 is taken|its declaration is reached|%3 is called}2", 599, SFINAE_Suppress, false, false, 2)
-DIAG(warn_standalone_specifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' ignored on this declaration", 396, SFINAE_Suppress, false, false, 2)
-DIAG(warn_static_array_too_small, CLASS_WARNING, (unsigned)diag::Severity::Warning, "array argument is too small; contains %0 elements, callee requires at least %1", 32, SFINAE_Suppress, false, false, 2)
-DIAG(warn_static_local_in_extern_inline, CLASS_WARNING, (unsigned)diag::Severity::Warning, "non-constant static local variable in inline function may be different in different files", 606, SFINAE_Suppress, false, false, 2)
-DIAG(warn_static_main, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'main' should not be declared static", 354, SFINAE_Suppress, false, false, 2)
-DIAG(warn_static_self_reference_in_init, CLASS_WARNING, (unsigned)diag::Severity::Warning, "static variable %0 is suspiciously used within its own initialization", 607, SFINAE_Suppress, false, false, 2)
-DIAG(warn_strict_multiple_method_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "multiple methods named %0 found", 621, SFINAE_Suppress, false, false, 2)
-DIAG(warn_strict_prototypes, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "this %select{function declaration is not|block declaration is not|old-style function definition is not preceded by}0 a prototype", 620, SFINAE_Suppress, false, false, 2)
-DIAG(warn_string_plus_char, CLASS_WARNING, (unsigned)diag::Severity::Warning, "adding %0 to a string pointer does not append to the string", 624, SFINAE_Suppress, false, false, 2)
-DIAG(warn_string_plus_int, CLASS_WARNING, (unsigned)diag::Severity::Warning, "adding %0 to a string does not append to the string", 625, SFINAE_Suppress, false, false, 2)
-DIAG(warn_stringcompare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "result of comparison against %select{a string literal|@encode}0 is unspecified (use strncmp instead)", 622, SFINAE_Suppress, false, false, 2)
-DIAG(warn_strlcpycat_wrong_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "size argument in %0 call appears to be size of the source; expected the size of the destination", 626, SFINAE_Suppress, false, false, 2)
-DIAG(warn_strncat_large_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the value of the size argument in 'strncat' is too large, might lead to a buffer overflow", 627, SFINAE_Suppress, false, false, 2)
-DIAG(warn_strncat_src_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "size argument in 'strncat' call appears to be size of the source", 627, SFINAE_Suppress, false, false, 2)
-DIAG(warn_strncat_wrong_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the value of the size argument to 'strncat' is wrong", 627, SFINAE_Suppress, false, false, 2)
-DIAG(warn_struct_class_previous_tag_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%2 defined as %select{a struct|an interface|a class}0%select{| template}1 here but previously declared as %select{a struct|an interface|a class}3%select{| template}1", 394, SFINAE_Suppress, false, false, 2)
-DIAG(warn_struct_class_tag_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{struct|interface|class}0%select{| template}1 %2 was previously declared as a %select{struct|interface|class}3%select{| template}1", 394, SFINAE_Suppress, false, false, 2)
-DIAG(warn_sub_ptr_zero_size_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "subtraction of pointers to type %0 of zero size has undefined behavior", 519, SFINAE_Suppress, false, false, 2)
-DIAG(warn_subobject_initializer_overrides, CLASS_WARNING, (unsigned)diag::Severity::Warning, "subobject initialization overrides initialization of other fields within its enclosing subobject", 315, SFINAE_Suppress, false, false, 2)
-DIAG(warn_subscript_is_char, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "array subscript is of type 'char'", 121, SFINAE_Suppress, false, false, 2)
-DIAG(warn_suggest_noreturn_block, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "block could be declared with attribute 'noreturn'", 403, SFINAE_Suppress, false, false, 2)
-DIAG(warn_suggest_noreturn_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{function|method}0 %1 could be declared with attribute 'noreturn'", 403, SFINAE_Suppress, false, false, 2)
-DIAG(warn_superclass_variable_sized_type_not_at_end, CLASS_WARNING, (unsigned)diag::Severity::Warning, "field %0 can overwrite instance variable %1 with variable sized type %2 in superclass %3", 458, SFINAE_Suppress, false, false, 2)
-DIAG(warn_suspicious_bzero_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'size' argument to bzero is '0'", 629, SFINAE_Suppress, false, false, 2)
-DIAG(warn_suspicious_sizeof_memset, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{'size' argument to memset is '0'|setting buffer to a 'sizeof' expression}0; did you mean to transpose the last two arguments?", 359, SFINAE_Suppress, false, false, 2)
-DIAG(warn_sync_fetch_and_nand_semantics_change, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the semantics of this intrinsic changed with GCC version 4.4 - the newer semantics are provided here", 635, SFINAE_Suppress, false, false, 2)
+DIAG(warn_sizeof_pointer_type_memaccess, CLASS_WARNING, (unsigned)diag::Severity::Warning, "argument to 'sizeof' in %0 call is the same pointer type %1 as the %select{destination|source}2; expected %3 or an explicit length", 610, SFINAE_Suppress, false, false, 2)
+DIAG(warn_sometimes_uninit_var, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable %0 is %select{used|captured}1 uninitialized whenever %select{'%3' condition is %select{true|false}4|'%3' loop %select{is entered|exits because its condition is false}4|'%3' loop %select{condition is true|exits because its condition is false}4|switch %3 is taken|its declaration is reached|%3 is called}2", 612, SFINAE_Suppress, false, false, 2)
+DIAG(warn_standalone_specifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' ignored on this declaration", 405, SFINAE_Suppress, false, false, 2)
+DIAG(warn_static_array_too_small, CLASS_WARNING, (unsigned)diag::Severity::Warning, "array argument is too small; %select{contains %0 elements|is of size %0}2, callee requires at least %1", 32, SFINAE_Suppress, false, false, 2)
+DIAG(warn_static_local_in_extern_inline, CLASS_WARNING, (unsigned)diag::Severity::Warning, "non-constant static local variable in inline function may be different in different files", 619, SFINAE_Suppress, false, false, 2)
+DIAG(warn_static_main, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'main' should not be declared static", 363, SFINAE_Suppress, false, false, 2)
+DIAG(warn_static_self_reference_in_init, CLASS_WARNING, (unsigned)diag::Severity::Warning, "static variable %0 is suspiciously used within its own initialization", 620, SFINAE_Suppress, false, false, 2)
+DIAG(warn_strict_multiple_method_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "multiple methods named %0 found", 634, SFINAE_Suppress, false, false, 2)
+DIAG(warn_strict_prototypes, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "this %select{function declaration is not|block declaration is not|old-style function definition is not preceded by}0 a prototype", 633, SFINAE_Suppress, false, false, 2)
+DIAG(warn_string_plus_char, CLASS_WARNING, (unsigned)diag::Severity::Warning, "adding %0 to a string pointer does not append to the string", 637, SFINAE_Suppress, false, false, 2)
+DIAG(warn_string_plus_int, CLASS_WARNING, (unsigned)diag::Severity::Warning, "adding %0 to a string does not append to the string", 638, SFINAE_Suppress, false, false, 2)
+DIAG(warn_stringcompare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "result of comparison against %select{a string literal|@encode}0 is unspecified (use strncmp instead)", 635, SFINAE_Suppress, false, false, 2)
+DIAG(warn_strlcpycat_wrong_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "size argument in %0 call appears to be size of the source; expected the size of the destination", 639, SFINAE_Suppress, false, false, 2)
+DIAG(warn_strncat_large_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the value of the size argument in 'strncat' is too large, might lead to a buffer overflow", 640, SFINAE_Suppress, false, false, 2)
+DIAG(warn_strncat_src_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "size argument in 'strncat' call appears to be size of the source", 640, SFINAE_Suppress, false, false, 2)
+DIAG(warn_strncat_wrong_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the value of the size argument to 'strncat' is wrong", 640, SFINAE_Suppress, false, false, 2)
+DIAG(warn_struct_class_previous_tag_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%2 defined as %select{a struct|an interface|a class}0%select{| template}1 here but previously declared as %select{a struct|an interface|a class}3%select{| template}1; this is valid, but may result in linker errors under the Microsoft C++ ABI", 403, SFINAE_Suppress, false, false, 2)
+DIAG(warn_struct_class_tag_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{struct|interface|class}0%select{| template}1 %2 was previously declared as a %select{struct|interface|class}3%select{| template}1; this is valid, but may result in linker errors under the Microsoft C++ ABI", 403, SFINAE_Suppress, false, false, 2)
+DIAG(warn_sub_ptr_zero_size_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "subtraction of pointers to type %0 of zero size has undefined behavior", 530, SFINAE_Suppress, false, false, 2)
+DIAG(warn_subobject_initializer_overrides, CLASS_WARNING, (unsigned)diag::Severity::Warning, "subobject initialization overrides initialization of other fields within its enclosing subobject", 324, SFINAE_Suppress, false, false, 2)
+DIAG(warn_subscript_is_char, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "array subscript is of type 'char'", 122, SFINAE_Suppress, false, false, 2)
+DIAG(warn_suggest_noreturn_block, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "block could be declared with attribute 'noreturn'", 412, SFINAE_Suppress, false, false, 2)
+DIAG(warn_suggest_noreturn_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{function|method}0 %1 could be declared with attribute 'noreturn'", 412, SFINAE_Suppress, false, false, 2)
+DIAG(warn_superclass_variable_sized_type_not_at_end, CLASS_WARNING, (unsigned)diag::Severity::Warning, "field %0 can overwrite instance variable %1 with variable sized type %2 in superclass %3", 468, SFINAE_Suppress, false, false, 2)
+DIAG(warn_suspicious_bzero_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'size' argument to bzero is '0'", 642, SFINAE_Suppress, false, false, 2)
+DIAG(warn_suspicious_sizeof_memset, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{'size' argument to memset is '0'|setting buffer to a 'sizeof' expression}0; did you mean to transpose the last two arguments?", 368, SFINAE_Suppress, false, false, 2)
+DIAG(warn_sync_fetch_and_nand_semantics_change, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the semantics of this intrinsic changed with GCC version 4.4 - the newer semantics are provided here", 648, SFINAE_Suppress, false, false, 2)
DIAG(warn_taking_address_of_packed_member, CLASS_WARNING, (unsigned)diag::Severity::Warning, "taking address of packed member %0 of class or structure %q1 may result in an unaligned pointer value", 12, SFINAE_Suppress, false, false, 2)
-DIAG(warn_tautological_bool_compare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "result of comparison of %select{constant %0|true|false}1 with %select{expression of type %2|boolean expression}3 is always %4", 638, SFINAE_Suppress, false, false, 2)
-DIAG(warn_tautological_constant_compare, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "result of comparison %select{%3|%1}0 %2 %select{%1|%3}0 is always %4", 643, SFINAE_Suppress, false, false, 2)
-DIAG(warn_tautological_overlap_comparison, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "overlapping comparisons always evaluate to %select{false|true}0", 641, SFINAE_Suppress, false, false, 2)
-DIAG(warn_template_arg_negative, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "non-type template argument with value '%0' converted to '%1' for unsigned template parameter of type %2", 136, SFINAE_Suppress, false, false, 24)
-DIAG(warn_template_arg_too_large, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "non-type template argument value '%0' truncated to '%1' for template parameter of type %2", 136, SFINAE_Suppress, false, false, 24)
+DIAG(warn_tautological_bool_compare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "result of comparison of %select{constant %0|true|false}1 with %select{expression of type %2|boolean expression}3 is always %4", 651, SFINAE_Suppress, false, false, 2)
+DIAG(warn_tautological_constant_compare, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "result of comparison %select{%3|%1}0 %2 %select{%1|%3}0 is always %4", 656, SFINAE_Suppress, false, false, 2)
+DIAG(warn_tautological_overlap_comparison, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "overlapping comparisons always evaluate to %select{false|true}0", 654, SFINAE_Suppress, false, false, 2)
+DIAG(warn_template_arg_negative, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "non-type template argument with value '%0' converted to '%1' for unsigned template parameter of type %2", 137, SFINAE_Suppress, false, false, 24)
+DIAG(warn_template_arg_too_large, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "non-type template argument value '%0' truncated to '%1' for template parameter of type %2", 137, SFINAE_Suppress, false, false, 24)
DIAG(warn_template_export_unsupported, CLASS_WARNING, (unsigned)diag::Severity::Warning, "exported templates are unsupported", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_template_qualified_friend_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "dependent nested name specifier '%0' for friend template declaration is not supported; ignoring this friend declaration", 699, SFINAE_Suppress, false, false, 2)
-DIAG(warn_template_qualified_friend_unsupported, CLASS_WARNING, (unsigned)diag::Severity::Warning, "dependent nested name specifier '%0' for friend class declaration is not supported; turning off access control for %1", 699, SFINAE_Suppress, false, false, 2)
+DIAG(warn_template_qualified_friend_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "dependent nested name specifier '%0' for friend template declaration is not supported; ignoring this friend declaration", 712, SFINAE_Suppress, false, false, 2)
+DIAG(warn_template_qualified_friend_unsupported, CLASS_WARNING, (unsigned)diag::Severity::Warning, "dependent nested name specifier '%0' for friend class declaration is not supported; turning off access control for %1", 712, SFINAE_Suppress, false, false, 2)
DIAG(warn_template_spec_extra_headers, CLASS_WARNING, (unsigned)diag::Severity::Warning, "extraneous template parameter list in template specialization", 0, SFINAE_Suppress, false, false, 2)
DIAG(warn_tentative_incomplete_array, CLASS_WARNING, (unsigned)diag::Severity::Warning, "tentative array definition assumed to have one element", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_this_bool_conversion, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true", 665, SFINAE_Suppress, false, false, 24)
-DIAG(warn_this_null_compare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'this' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to %select{true|false}0", 644, SFINAE_Suppress, false, false, 2)
-DIAG(warn_thread_attribute_argument_not_lockable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 attribute requires arguments whose type is annotated with 'capability' attribute; type here is %1", 650, SFINAE_Suppress, false, false, 2)
-DIAG(warn_thread_attribute_decl_not_lockable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 attribute can only be applied in a context annotated with 'capability(\"mutex\")' attribute", 650, SFINAE_Suppress, false, false, 2)
-DIAG(warn_thread_attribute_decl_not_pointer, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 only applies to pointer types; type here is %1", 650, SFINAE_Suppress, false, false, 2)
-DIAG(warn_thread_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "ignoring %0 attribute because its argument is invalid", 650, SFINAE_Suppress, false, false, 2)
-DIAG(warn_thread_attribute_not_on_capability_member, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 attribute without capability arguments refers to 'this', but %1 isn't annotated with 'capability' or 'scoped_lockable' attribute", 650, SFINAE_Suppress, false, false, 2)
-DIAG(warn_thread_attribute_not_on_non_static_member, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 attribute without capability arguments can only be applied to non-static methods of a class", 650, SFINAE_Suppress, false, false, 2)
-DIAG(warn_thread_safety_beta, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "Thread safety beta warning.", 651, SFINAE_Suppress, false, false, 2)
-DIAG(warn_thread_safety_verbose, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "Thread safety verbose warning.", 655, SFINAE_Suppress, false, false, 2)
-DIAG(warn_throw_in_noexcept_func, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 has a non-throwing exception specification but can still throw", 205, SFINAE_Suppress, false, false, 2)
-DIAG(warn_transparent_union_attribute_field_size_align, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{alignment|size}0 of field %1 (%2 bits) does not match the %select{alignment|size}0 of the first field in transparent union; transparent_union attribute ignored", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_transparent_union_attribute_floating, CLASS_WARNING, (unsigned)diag::Severity::Warning, "first field of a transparent union cannot have %select{floating point|vector}0 type %1; transparent_union attribute ignored", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_transparent_union_attribute_not_definition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "transparent_union attribute can only be applied to a union definition; attribute ignored", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_transparent_union_attribute_zero_fields, CLASS_WARNING, (unsigned)diag::Severity::Warning, "transparent union definition must contain at least one field; transparent_union attribute ignored", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_type_attribute_wrong_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' only applies to %select{function|pointer|Objective-C object or block pointer}1 types; type here is %2", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_type_safety_null_pointer_required, CLASS_WARNING, (unsigned)diag::Severity::Warning, "specified %0 type tag requires a null pointer", 658, SFINAE_Suppress, false, false, 2)
-DIAG(warn_type_safety_type_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "argument type %0 doesn't match specified %1 type tag %select{that requires %3|}2", 658, SFINAE_Suppress, false, false, 2)
-DIAG(warn_type_tag_for_datatype_wrong_kind, CLASS_WARNING, (unsigned)diag::Severity::Warning, "this type tag was not designed to be used with this function", 658, SFINAE_Suppress, false, false, 2)
-DIAG(warn_typecheck_function_qualifiers_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' qualifier on function type %1 has no effect", 279, SFINAE_Suppress, false, false, 2)
+DIAG(warn_this_bool_conversion, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true", 678, SFINAE_Suppress, false, false, 24)
+DIAG(warn_this_null_compare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'this' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to %select{true|false}0", 657, SFINAE_Suppress, false, false, 2)
+DIAG(warn_thread_attribute_argument_not_lockable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 attribute requires arguments whose type is annotated with 'capability' attribute; type here is %1", 663, SFINAE_Suppress, false, false, 2)
+DIAG(warn_thread_attribute_decl_not_lockable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 attribute can only be applied in a context annotated with 'capability(\"mutex\")' attribute", 663, SFINAE_Suppress, false, false, 2)
+DIAG(warn_thread_attribute_decl_not_pointer, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 only applies to pointer types; type here is %1", 663, SFINAE_Suppress, false, false, 2)
+DIAG(warn_thread_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "ignoring %0 attribute because its argument is invalid", 663, SFINAE_Suppress, false, false, 2)
+DIAG(warn_thread_attribute_not_on_capability_member, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 attribute without capability arguments refers to 'this', but %1 isn't annotated with 'capability' or 'scoped_lockable' attribute", 663, SFINAE_Suppress, false, false, 2)
+DIAG(warn_thread_attribute_not_on_non_static_member, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 attribute without capability arguments can only be applied to non-static methods of a class", 663, SFINAE_Suppress, false, false, 2)
+DIAG(warn_thread_safety_beta, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "Thread safety beta warning.", 664, SFINAE_Suppress, false, false, 2)
+DIAG(warn_thread_safety_verbose, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "Thread safety verbose warning.", 668, SFINAE_Suppress, false, false, 2)
+DIAG(warn_throw_in_noexcept_func, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 has a non-throwing exception specification but can still throw", 212, SFINAE_Suppress, false, false, 2)
+DIAG(warn_transparent_union_attribute_field_size_align, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{alignment|size}0 of field %1 (%2 bits) does not match the %select{alignment|size}0 of the first field in transparent union; transparent_union attribute ignored", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_transparent_union_attribute_floating, CLASS_WARNING, (unsigned)diag::Severity::Warning, "first field of a transparent union cannot have %select{floating point|vector}0 type %1; transparent_union attribute ignored", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_transparent_union_attribute_not_definition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "transparent_union attribute can only be applied to a union definition; attribute ignored", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_transparent_union_attribute_zero_fields, CLASS_WARNING, (unsigned)diag::Severity::Warning, "transparent union definition must contain at least one field; transparent_union attribute ignored", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_type_attribute_wrong_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' only applies to %select{function|pointer|Objective-C object or block pointer}1 types; type here is %2", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_type_safety_null_pointer_required, CLASS_WARNING, (unsigned)diag::Severity::Warning, "specified %0 type tag requires a null pointer", 671, SFINAE_Suppress, false, false, 2)
+DIAG(warn_type_safety_type_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "argument type %0 doesn't match specified %1 type tag %select{that requires %3|}2", 671, SFINAE_Suppress, false, false, 2)
+DIAG(warn_type_tag_for_datatype_wrong_kind, CLASS_WARNING, (unsigned)diag::Severity::Warning, "this type tag was not designed to be used with this function", 671, SFINAE_Suppress, false, false, 2)
+DIAG(warn_typecheck_function_qualifiers_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' qualifier on function type %1 has no effect", 287, SFINAE_Suppress, false, false, 2)
DIAG(warn_typecheck_function_qualifiers_unspecified, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' qualifier on function type %1 has unspecified behavior", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_typecheck_reference_qualifiers, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' qualifier on reference type %1 has no effect", 279, SFINAE_Suppress, false, false, 2)
-DIAG(warn_typecheck_vector_element_sizes_not_equal, CLASS_WARNING, (unsigned)diag::Severity::Error, "vector operands do not have the same elements sizes (%0 and %1)", 732, SFINAE_Suppress, false, false, 2)
+DIAG(warn_typecheck_reference_qualifiers, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' qualifier on reference type %1 has no effect", 287, SFINAE_Suppress, false, false, 2)
+DIAG(warn_typecheck_vector_element_sizes_not_equal, CLASS_WARNING, (unsigned)diag::Severity::Error, "vector operands do not have the same elements sizes (%0 and %1)", 745, SFINAE_Suppress, false, false, 2)
DIAG(warn_typecheck_zero_static_array_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'static' has no effect on zero-length arrays", 32, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unannotated_fallthrough, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unannotated fall-through between switch labels", 284, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unannotated_fallthrough_per_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unannotated fall-through between switch labels in partly-annotated function", 285, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unavailable_def, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implementing unavailable method", 162, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unavailable_fwdclass_message, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 may be unavailable because the receiver type is unknown", 662, SFINAE_Suppress, false, false, 2)
-DIAG(warn_undeclared_selector, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "undeclared selector %0", 663, SFINAE_Suppress, false, false, 2)
-DIAG(warn_undeclared_selector_with_typo, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "undeclared selector %0; did you mean %1?", 663, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unannotated_fallthrough, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unannotated fall-through between switch labels", 292, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unannotated_fallthrough_per_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unannotated fall-through between switch labels in partly-annotated function", 293, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unavailable_def, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implementing unavailable method", 168, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unavailable_fwdclass_message, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 may be unavailable because the receiver type is unknown", 675, SFINAE_Suppress, false, false, 2)
+DIAG(warn_undeclared_selector, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "undeclared selector %0", 676, SFINAE_Suppress, false, false, 2)
+DIAG(warn_undeclared_selector_with_typo, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "undeclared selector %0; did you mean %1?", 676, SFINAE_Suppress, false, false, 2)
DIAG(warn_undef_interface, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cannot find interface declaration for %0", 0, SFINAE_Suppress, false, false, 2)
DIAG(warn_undef_interface_suggest, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cannot find interface declaration for %0; did you mean %1?", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_undef_method_impl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "method definition for %0 not found", 306, SFINAE_Suppress, false, false, 2)
+DIAG(warn_undef_method_impl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "method definition for %0 not found", 315, SFINAE_Suppress, false, false, 2)
DIAG(warn_undef_protocolref, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cannot find protocol definition for %0", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_undefined_inline, CLASS_WARNING, (unsigned)diag::Severity::Warning, "inline function %q0 is not defined", 667, SFINAE_Suppress, false, false, 2)
-DIAG(warn_undefined_internal, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{function|variable}0 %q1 has internal linkage but is not defined", 668, SFINAE_Suppress, false, false, 2)
-DIAG(warn_undefined_reinterpret_cast, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "reinterpret_cast from %0 to %1 has undefined behavior", 670, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unguarded_availability, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 is only available on %1 %2 or newer", 673, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unguarded_availability_new, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is only available on %1 %2 or newer", 674, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unhandled_ms_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "__declspec attribute %0 is not supported", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unimplemented_protocol_method, CLASS_WARNING, (unsigned)diag::Severity::Warning, "method %0 in protocol %1 not implemented", 540, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unimplemented_selector, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "no method with selector %0 is implemented in this translation unit", 567, SFINAE_Suppress, false, false, 2)
-DIAG(warn_uninit_byref_blockvar_captured_by_block, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "block pointer variable %0 is uninitialized when captured by block", 679, SFINAE_Suppress, false, false, 2)
-DIAG(warn_uninit_self_reference_in_init, CLASS_WARNING, (unsigned)diag::Severity::Warning, "variable %0 is uninitialized when used within its own initialization", 679, SFINAE_Suppress, false, false, 2)
-DIAG(warn_uninit_self_reference_in_reference_init, CLASS_WARNING, (unsigned)diag::Severity::Warning, "reference %0 is not yet bound to a value when used within its own initialization", 679, SFINAE_Suppress, false, false, 2)
-DIAG(warn_uninit_var, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable %0 is uninitialized when %select{used here|captured by block}1", 679, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unknown_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown attribute %0 ignored", 681, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unknown_sanitizer_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown sanitizer '%0' ignored", 684, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unlock_but_no_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "releasing %0 '%1' that was not held", 649, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unlock_kind_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "releasing %0 '%1' using %select{shared|exclusive}2 access, expected %select{shared|exclusive}3 access", 649, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unnecessary_packed, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "packed attribute is unnecessary for %0", 506, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unneeded_internal_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{function|variable}0 %1 is not needed and will not be emitted", 687, SFINAE_Suppress, false, false, 32)
-DIAG(warn_unneeded_member_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "member function %0 is not needed and will not be emitted", 688, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unneeded_static_internal_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'static' function %0 declared in header file should be declared 'static inline'", 687, SFINAE_Suppress, false, false, 32)
-DIAG(warn_unreachable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "code will never be executed", 689, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unreachable_break, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'break' will never be executed", 691, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unreachable_default, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "default label in switch which covers all enumeration values", 140, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unreachable_loop_increment, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "loop will run at most once (loop increment never executed)", 692, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unreachable_return, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'return' will never be executed", 693, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unsequenced_mod_mod, CLASS_WARNING, (unsigned)diag::Severity::Warning, "multiple unsequenced modifications to %0", 694, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unsequenced_mod_use, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unsequenced modification and access to %0", 694, SFINAE_Suppress, false, false, 2)
+DIAG(warn_undefined_inline, CLASS_WARNING, (unsigned)diag::Severity::Warning, "inline function %q0 is not defined", 680, SFINAE_Suppress, false, false, 2)
+DIAG(warn_undefined_internal, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{function|variable}0 %q1 has internal linkage but is not defined", 681, SFINAE_Suppress, false, false, 2)
+DIAG(warn_undefined_reinterpret_cast, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "reinterpret_cast from %0 to %1 has undefined behavior", 683, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unguarded_availability, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 is only available on %1 %2 or newer", 686, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unguarded_availability_new, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is only available on %1 %2 or newer", 687, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unhandled_ms_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "__declspec attribute %0 is not supported", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unimplemented_protocol_method, CLASS_WARNING, (unsigned)diag::Severity::Warning, "method %0 in protocol %1 not implemented", 552, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unimplemented_selector, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "no method with selector %0 is implemented in this translation unit", 579, SFINAE_Suppress, false, false, 2)
+DIAG(warn_uninit_byref_blockvar_captured_by_block, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "block pointer variable %0 is uninitialized when captured by block", 692, SFINAE_Suppress, false, false, 2)
+DIAG(warn_uninit_self_reference_in_init, CLASS_WARNING, (unsigned)diag::Severity::Warning, "variable %0 is uninitialized when used within its own initialization", 692, SFINAE_Suppress, false, false, 2)
+DIAG(warn_uninit_self_reference_in_reference_init, CLASS_WARNING, (unsigned)diag::Severity::Warning, "reference %0 is not yet bound to a value when used within its own initialization", 692, SFINAE_Suppress, false, false, 2)
+DIAG(warn_uninit_var, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable %0 is uninitialized when %select{used here|captured by block}1", 692, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unknown_sanitizer_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown sanitizer '%0' ignored", 697, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unlock_but_no_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "releasing %0 '%1' that was not held", 662, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unlock_kind_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "releasing %0 '%1' using %select{shared|exclusive}2 access, expected %select{shared|exclusive}3 access", 662, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unneeded_internal_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{function|variable}0 %1 is not needed and will not be emitted", 700, SFINAE_Suppress, false, false, 32)
+DIAG(warn_unneeded_member_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "member function %0 is not needed and will not be emitted", 701, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unneeded_static_internal_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'static' function %0 declared in header file should be declared 'static inline'", 700, SFINAE_Suppress, false, false, 32)
+DIAG(warn_unreachable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "code will never be executed", 702, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unreachable_break, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'break' will never be executed", 704, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unreachable_default, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "default label in switch which covers all enumeration values", 141, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unreachable_loop_increment, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "loop will run at most once (loop increment never executed)", 705, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unreachable_return, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'return' will never be executed", 706, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unsequenced_mod_mod, CLASS_WARNING, (unsigned)diag::Severity::Warning, "multiple unsequenced modifications to %0", 707, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unsequenced_mod_use, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unsequenced modification and access to %0", 707, SFINAE_Suppress, false, false, 2)
DIAG(warn_unsigned_abs, CLASS_WARNING, (unsigned)diag::Severity::Warning, "taking the absolute value of unsigned type %0 has no effect", 8, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unsigned_always_true_comparison, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "result of comparison of %select{%3|unsigned expression}0 %2 %select{unsigned expression|%3}0 is always %4", 646, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unsigned_always_true_comparison, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "result of comparison of %select{%3|unsigned expression}0 %2 %select{unsigned expression|%3}0 is always %4", 659, SFINAE_Suppress, false, false, 2)
DIAG(warn_unsigned_bitfield_assigned_signed_enum, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "assigning value of signed enum type %1 to unsigned bit-field %0; negative enumerators of enum %1 will be converted to positive values", 60, SFINAE_Suppress, false, false, 24)
-DIAG(warn_unsigned_enum_always_true_comparison, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "result of comparison of %select{%3|unsigned enum expression}0 %2 %select{unsigned enum expression|%3}0 is always %4", 645, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unsupported_lifetime_extension, CLASS_WARNING, (unsigned)diag::Severity::Warning, "sorry, lifetime extension of %select{temporary|backing array of initializer list}0 created by aggregate initialization using default member initializer is not supported; lifetime of %select{temporary|backing array}0 will end at the end of the full-expression", 146, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unsupported_target_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{unsupported|duplicate}0%select{| architecture}1 '%2' in the 'target' attribute string; 'target' attribute ignored", 274, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unused_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring return value of function declared with %0 attribute", 724, SFINAE_Suppress, false, false, 32)
-DIAG(warn_unused_comparison, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{equality|inequality|relational|three-way}0 comparison result unused", 708, SFINAE_Suppress, false, false, 32)
-DIAG(warn_unused_const_variable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused variable %0", 709, SFINAE_Suppress, false, false, 32)
-DIAG(warn_unused_container_subscript_expr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "container access result unused - container access should not be used for side effects", 724, SFINAE_Suppress, false, false, 32)
-DIAG(warn_unused_exception_param, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused exception parameter %0", 710, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unused_expr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expression result unused", 724, SFINAE_Suppress, false, false, 32)
-DIAG(warn_unused_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused function %0", 711, SFINAE_Suppress, false, false, 32)
-DIAG(warn_unused_label, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused label %0", 713, SFINAE_Suppress, false, false, 32)
-DIAG(warn_unused_lambda_capture, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "lambda capture %0 is not %select{used|required to be captured for this use}1", 714, SFINAE_Suppress, false, false, 32)
-DIAG(warn_unused_local_typedef, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused %select{typedef|type alias}0 %1", 715, SFINAE_Suppress, false, false, 32)
-DIAG(warn_unused_member_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused member function %0", 718, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unused_parameter, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused parameter %0", 719, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unused_private_field, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "private field %0 is not used", 720, SFINAE_Suppress, false, false, 32)
-DIAG(warn_unused_property_backing_ivar, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "ivar %0 which backs the property is not referenced in this property's accessor", 721, SFINAE_Suppress, false, false, 32)
-DIAG(warn_unused_property_expr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property access result unused - getters should not be used for side effects", 712, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unused_result, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring return value of function declared with %0 attribute", 722, SFINAE_Suppress, false, false, 32)
-DIAG(warn_unused_template, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused %select{function|variable}0 template %1", 723, SFINAE_Suppress, false, false, 2)
-DIAG(warn_unused_variable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused variable %0", 725, SFINAE_Suppress, false, false, 32)
-DIAG(warn_unused_voidptr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expression result unused; should this cast be to 'void'?", 724, SFINAE_Suppress, false, false, 32)
-DIAG(warn_unused_volatile, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expression result unused; assign into a variable to force a volatile load", 726, SFINAE_Suppress, false, false, 2)
-DIAG(warn_use_in_invalid_state, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "invalid invocation of method '%0' on object '%1' while it is in the '%2' state", 135, SFINAE_Suppress, false, false, 2)
-DIAG(warn_use_of_temp_in_invalid_state, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "invalid invocation of method '%0' on a temporary object while it is in the '%1' state", 135, SFINAE_Suppress, false, false, 2)
-DIAG(warn_used_but_marked_unused, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 was marked unused but was used", 727, SFINAE_Suppress, false, false, 2)
-DIAG(warn_user_literal_reserved, CLASS_WARNING, (unsigned)diag::Severity::Warning, "user-defined literal suffixes not starting with '_' are reserved%select{; no literal will invoke this operator|}0", 728, SFINAE_Suppress, false, false, 2)
-DIAG(warn_using_directive_in_header, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "using namespace directive in global context in header", 272, SFINAE_Suppress, false, false, 2)
-DIAG(warn_va_start_type_is_undefined, CLASS_WARNING, (unsigned)diag::Severity::Warning, "passing %select{an object that undergoes default argument promotion|an object of reference type|a parameter declared with the 'register' keyword}0 to 'va_start' has undefined behavior", 730, SFINAE_Suppress, false, false, 2)
-DIAG(warn_var_deref_requires_any_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{reading|writing}1 the value pointed to by %0 requires holding %select{any mutex|any mutex exclusively}1", 649, SFINAE_Suppress, false, false, 2)
-DIAG(warn_var_deref_requires_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{reading|writing}3 the value pointed to by %1 requires holding %0 %select{'%2'|'%2' exclusively}3", 649, SFINAE_Suppress, false, false, 2)
-DIAG(warn_var_deref_requires_lock_precise, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{reading|writing}3 the value pointed to by %1 requires holding %0 %select{'%2'|'%2' exclusively}3", 653, SFINAE_Suppress, false, false, 2)
-DIAG(warn_var_template_missing, CLASS_WARNING, (unsigned)diag::Severity::Warning, "instantiation of variable %q0 required here, but no definition is available", 671, SFINAE_Suppress, false, false, 2)
-DIAG(warn_variable_requires_any_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{reading|writing}1 variable %0 requires holding %select{any mutex|any mutex exclusively}1", 649, SFINAE_Suppress, false, false, 2)
-DIAG(warn_variable_requires_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{reading|writing}3 variable %1 requires holding %0 %select{'%2'|'%2' exclusively}3", 649, SFINAE_Suppress, false, false, 2)
-DIAG(warn_variable_requires_lock_precise, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{reading|writing}3 variable %1 requires holding %0 %select{'%2'|'%2' exclusively}3", 653, SFINAE_Suppress, false, false, 2)
-DIAG(warn_variable_sized_ivar_visibility, CLASS_WARNING, (unsigned)diag::Severity::Warning, "field %0 with variable sized type %1 is not visible to subclasses and can conflict with their instance variables", 458, SFINAE_Suppress, false, false, 2)
-DIAG(warn_variables_not_in_loop_body, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable%select{s| %1|s %1 and %2|s %1, %2, and %3|s %1, %2, %3, and %4}0 used in loop condition not modified in loop body", 225, SFINAE_Suppress, false, false, 2)
-DIAG(warn_vbase_moved_multiple_times, CLASS_WARNING, (unsigned)diag::Severity::Warning, "defaulted move assignment operator of %0 will move assign virtual base class %1 multiple times", 421, SFINAE_Suppress, false, false, 2)
-DIAG(warn_vector_long_decl_spec_combination, CLASS_WARNING, (unsigned)diag::Severity::Warning, "Use of 'long' with '__vector' is deprecated", 158, SFINAE_Suppress, false, false, 27)
-DIAG(warn_vector_mode_deprecated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "specifying vector types with the 'mode' attribute is deprecated; use the 'vector_size' attribute instead", 159, SFINAE_Suppress, false, false, 27)
-DIAG(warn_vla_used, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable length array used", 737, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unsigned_enum_always_true_comparison, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "result of comparison of %select{%3|unsigned enum expression}0 %2 %select{unsigned enum expression|%3}0 is always %4", 658, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unsupported_lifetime_extension, CLASS_WARNING, (unsigned)diag::Severity::Warning, "sorry, lifetime extension of %select{temporary|backing array of initializer list}0 created by aggregate initialization using default member initializer is not supported; lifetime of %select{temporary|backing array}0 will end at the end of the full-expression", 149, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unsupported_target_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{unsupported|duplicate}0%select{| architecture}1 '%2' in the 'target' attribute string; 'target' attribute ignored", 282, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unused_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring return value of function declared with %0 attribute", 737, SFINAE_Suppress, false, false, 32)
+DIAG(warn_unused_comparison, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{equality|inequality|relational|three-way}0 comparison result unused", 721, SFINAE_Suppress, false, false, 32)
+DIAG(warn_unused_const_variable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused variable %0", 722, SFINAE_Suppress, false, false, 32)
+DIAG(warn_unused_container_subscript_expr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "container access result unused - container access should not be used for side effects", 737, SFINAE_Suppress, false, false, 32)
+DIAG(warn_unused_exception_param, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused exception parameter %0", 723, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unused_expr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expression result unused", 737, SFINAE_Suppress, false, false, 32)
+DIAG(warn_unused_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused function %0", 724, SFINAE_Suppress, false, false, 32)
+DIAG(warn_unused_label, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused label %0", 726, SFINAE_Suppress, false, false, 32)
+DIAG(warn_unused_lambda_capture, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "lambda capture %0 is not %select{used|required to be captured for this use}1", 727, SFINAE_Suppress, false, false, 32)
+DIAG(warn_unused_local_typedef, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused %select{typedef|type alias}0 %1", 728, SFINAE_Suppress, false, false, 32)
+DIAG(warn_unused_member_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused member function %0", 731, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unused_parameter, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused parameter %0", 732, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unused_private_field, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "private field %0 is not used", 733, SFINAE_Suppress, false, false, 32)
+DIAG(warn_unused_property_backing_ivar, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "ivar %0 which backs the property is not referenced in this property's accessor", 734, SFINAE_Suppress, false, false, 32)
+DIAG(warn_unused_property_expr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property access result unused - getters should not be used for side effects", 725, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unused_result, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring return value of function declared with %0 attribute", 735, SFINAE_Suppress, false, false, 32)
+DIAG(warn_unused_template, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused %select{function|variable}0 template %1", 736, SFINAE_Suppress, false, false, 2)
+DIAG(warn_unused_variable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused variable %0", 738, SFINAE_Suppress, false, false, 32)
+DIAG(warn_unused_voidptr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expression result unused; should this cast be to 'void'?", 737, SFINAE_Suppress, false, false, 32)
+DIAG(warn_unused_volatile, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expression result unused; assign into a variable to force a volatile load", 739, SFINAE_Suppress, false, false, 2)
+DIAG(warn_use_in_invalid_state, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "invalid invocation of method '%0' on object '%1' while it is in the '%2' state", 136, SFINAE_Suppress, false, false, 2)
+DIAG(warn_use_of_temp_in_invalid_state, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "invalid invocation of method '%0' on a temporary object while it is in the '%1' state", 136, SFINAE_Suppress, false, false, 2)
+DIAG(warn_used_but_marked_unused, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 was marked unused but was used", 740, SFINAE_Suppress, false, false, 2)
+DIAG(warn_user_literal_reserved, CLASS_WARNING, (unsigned)diag::Severity::Warning, "user-defined literal suffixes not starting with '_' are reserved%select{; no literal will invoke this operator|}0", 741, SFINAE_Suppress, false, false, 2)
+DIAG(warn_using_directive_in_header, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "using namespace directive in global context in header", 280, SFINAE_Suppress, false, false, 2)
+DIAG(warn_va_start_type_is_undefined, CLASS_WARNING, (unsigned)diag::Severity::Warning, "passing %select{an object that undergoes default argument promotion|an object of reference type|a parameter declared with the 'register' keyword}0 to 'va_start' has undefined behavior", 743, SFINAE_Suppress, false, false, 2)
+DIAG(warn_var_deref_requires_any_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{reading|writing}1 the value pointed to by %0 requires holding %select{any mutex|any mutex exclusively}1", 662, SFINAE_Suppress, false, false, 2)
+DIAG(warn_var_deref_requires_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{reading|writing}3 the value pointed to by %1 requires holding %0 %select{'%2'|'%2' exclusively}3", 662, SFINAE_Suppress, false, false, 2)
+DIAG(warn_var_deref_requires_lock_precise, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{reading|writing}3 the value pointed to by %1 requires holding %0 %select{'%2'|'%2' exclusively}3", 666, SFINAE_Suppress, false, false, 2)
+DIAG(warn_var_template_missing, CLASS_WARNING, (unsigned)diag::Severity::Warning, "instantiation of variable %q0 required here, but no definition is available", 684, SFINAE_Suppress, false, false, 2)
+DIAG(warn_variable_requires_any_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{reading|writing}1 variable %0 requires holding %select{any mutex|any mutex exclusively}1", 662, SFINAE_Suppress, false, false, 2)
+DIAG(warn_variable_requires_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{reading|writing}3 variable %1 requires holding %0 %select{'%2'|'%2' exclusively}3", 662, SFINAE_Suppress, false, false, 2)
+DIAG(warn_variable_requires_lock_precise, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{reading|writing}3 variable %1 requires holding %0 %select{'%2'|'%2' exclusively}3", 666, SFINAE_Suppress, false, false, 2)
+DIAG(warn_variable_sized_ivar_visibility, CLASS_WARNING, (unsigned)diag::Severity::Warning, "field %0 with variable sized type %1 is not visible to subclasses and can conflict with their instance variables", 468, SFINAE_Suppress, false, false, 2)
+DIAG(warn_variables_not_in_loop_body, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable%select{s| %1|s %1 and %2|s %1, %2, and %3|s %1, %2, %3, and %4}0 used in loop condition not modified in loop body", 233, SFINAE_Suppress, false, false, 2)
+DIAG(warn_vbase_moved_multiple_times, CLASS_WARNING, (unsigned)diag::Severity::Warning, "defaulted move assignment operator of %0 will move assign virtual base class %1 multiple times", 430, SFINAE_Suppress, false, false, 2)
+DIAG(warn_vector_long_decl_spec_combination, CLASS_WARNING, (unsigned)diag::Severity::Warning, "Use of 'long' with '__vector' is deprecated", 164, SFINAE_Suppress, false, false, 27)
+DIAG(warn_vector_mode_deprecated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "specifying vector types with the 'mode' attribute is deprecated; use the 'vector_size' attribute instead", 165, SFINAE_Suppress, false, false, 27)
+DIAG(warn_vla_used, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable length array used", 750, SFINAE_Suppress, false, false, 2)
DIAG(warn_weak_identifier_undeclared, CLASS_WARNING, (unsigned)diag::Severity::Warning, "weak identifier %0 never declared", 0, SFINAE_Suppress, false, false, 2)
DIAG(warn_weak_import, CLASS_WARNING, (unsigned)diag::Severity::Warning, "an already-declared variable is made a weak_import declaration %0", 0, SFINAE_Suppress, false, false, 2)
-DIAG(warn_weak_template_vtable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicit template instantiation %0 will emit a vtable in every translation unit", 741, SFINAE_Suppress, false, false, 2)
-DIAG(warn_weak_vtable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit", 742, SFINAE_Suppress, false, false, 2)
+DIAG(warn_weak_template_vtable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicit template instantiation %0 will emit a vtable in every translation unit", 754, SFINAE_Suppress, false, false, 2)
+DIAG(warn_weak_vtable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit", 755, SFINAE_Suppress, false, false, 2)
DIAG(warn_wrong_absolute_value_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "using %select{integer|floating point|complex}1 absolute value function %0 when argument is of %select{integer|floating point|complex}2 type", 8, SFINAE_Suppress, false, false, 2)
-DIAG(warn_zero_as_null_pointer_constant, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "zero as null pointer constant", 745, SFINAE_Suppress, false, false, 19)
+DIAG(warn_zero_as_null_pointer_constant, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "zero as null pointer constant", 758, SFINAE_Suppress, false, false, 19)
DIAG(warn_zero_size_struct_union_compat, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{|empty }0%select{struct|union}1 has size 0 in C, %select{size 1|non-zero size}2 in C++", 71, SFINAE_Suppress, false, false, 2)
-DIAG(warn_zero_size_struct_union_in_extern_c, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{|empty }0%select{struct|union}1 has size 0 in C, %select{size 1|non-zero size}2 in C++", 211, SFINAE_Suppress, false, false, 2)
+DIAG(warn_zero_size_struct_union_in_extern_c, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{|empty }0%select{struct|union}1 has size 0 in C, %select{size 1|non-zero size}2 in C++", 218, SFINAE_Suppress, false, false, 2)
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticSerialization.h b/linux-x64/clang/include/clang/Basic/DiagnosticSerialization.h
new file mode 100644
index 0000000..7e46a36
--- /dev/null
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticSerialization.h
@@ -0,0 +1,28 @@
+//===--- DiagnosticSerialization.h - Serialization Diagnostics -*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_BASIC_DIAGNOSTICSERIALIZATION_H
+#define LLVM_CLANG_BASIC_DIAGNOSTICSERIALIZATION_H
+
+#include "clang/Basic/Diagnostic.h"
+
+namespace clang {
+namespace diag {
+enum {
+#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \
+ SHOWINSYSHEADER, CATEGORY) \
+ ENUM,
+#define SERIALIZATIONSTART
+#include "clang/Basic/DiagnosticSerializationKinds.inc"
+#undef DIAG
+ NUM_BUILTIN_SERIALIZATION_DIAGNOSTICS
+};
+} // end namespace diag
+} // end namespace clang
+
+#endif // LLVM_CLANG_BASIC_DIAGNOSTICSERIALIZATION_H
diff --git a/linux-x64/clang/include/clang/Basic/DiagnosticSerializationKinds.inc b/linux-x64/clang/include/clang/Basic/DiagnosticSerializationKinds.inc
index 0e4da50..cba4bcc 100644
--- a/linux-x64/clang/include/clang/Basic/DiagnosticSerializationKinds.inc
+++ b/linux-x64/clang/include/clang/Basic/DiagnosticSerializationKinds.inc
@@ -62,6 +62,6 @@
DIAG(note_pch_rebuild_required, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "please rebuild precompiled header '%0'", 0, SFINAE_Suppress, false, false, 15)
DIAG(note_pch_required_by, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "'%0' required by '%1'", 0, SFINAE_Suppress, false, false, 15)
DIAG(note_second_module_difference, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in second definition, possible difference is here", 0, SFINAE_Suppress, false, false, 15)
-DIAG(warn_duplicate_module_file_extension, CLASS_WARNING, (unsigned)diag::Severity::Warning, "duplicate module file extension block name '%0'", 412, SFINAE_Suppress, false, false, 15)
-DIAG(warn_module_system_bit_conflict, CLASS_WARNING, (unsigned)diag::Severity::Warning, "module file '%0' was validated as a system module and is now being imported as a non-system module; any difference in diagnostic options will be ignored", 410, SFINAE_Suppress, false, false, 15)
-DIAG(warn_module_uses_date_time, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{precompiled header|module}0 uses __DATE__ or __TIME__", 515, SFINAE_Suppress, false, false, 18)
+DIAG(warn_duplicate_module_file_extension, CLASS_WARNING, (unsigned)diag::Severity::Warning, "duplicate module file extension block name '%0'", 421, SFINAE_Suppress, false, false, 15)
+DIAG(warn_module_system_bit_conflict, CLASS_WARNING, (unsigned)diag::Severity::Warning, "module file '%0' was validated as a system module and is now being imported as a non-system module; any difference in diagnostic options will be ignored", 419, SFINAE_Suppress, false, false, 15)
+DIAG(warn_module_uses_date_time, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{precompiled header|module}0 uses __DATE__ or __TIME__", 526, SFINAE_Suppress, false, false, 18)
diff --git a/linux-x64/clang/include/clang/Basic/ExceptionSpecificationType.h b/linux-x64/clang/include/clang/Basic/ExceptionSpecificationType.h
index 0c2c8e6..2f65efe 100644
--- a/linux-x64/clang/include/clang/Basic/ExceptionSpecificationType.h
+++ b/linux-x64/clang/include/clang/Basic/ExceptionSpecificationType.h
@@ -1,9 +1,8 @@
//===--- ExceptionSpecificationType.h ---------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Basic/ExpressionTraits.h b/linux-x64/clang/include/clang/Basic/ExpressionTraits.h
index 2983add..8500533 100644
--- a/linux-x64/clang/include/clang/Basic/ExpressionTraits.h
+++ b/linux-x64/clang/include/clang/Basic/ExpressionTraits.h
@@ -1,9 +1,8 @@
//===- ExpressionTraits.h - C++ Expression Traits Support Enums -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Basic/Features.def b/linux-x64/clang/include/clang/Basic/Features.def
index d63c9a0..8fc4e5a 100644
--- a/linux-x64/clang/include/clang/Basic/Features.def
+++ b/linux-x64/clang/include/clang/Basic/Features.def
@@ -1,9 +1,8 @@
//===--- Features.def - Features and Extensions database --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -17,6 +16,12 @@
//
// The Predicate field dictates the conditions under which the feature or
// extension will be made available.
+//
+// FEATURE(...) should be used to advertise support for standard language
+// features, whereas EXTENSION(...) should be used for clang extensions. Note
+// that many of the identifiers in this file don't follow this rule for backward
+// compatibility reasons.
+//
//===----------------------------------------------------------------------===//
#if !defined(FEATURE) && !defined(EXTENSION)
@@ -51,6 +56,7 @@
FEATURE(attribute_availability_with_strict, true)
FEATURE(attribute_availability_with_replacement, true)
FEATURE(attribute_availability_in_templates, true)
+FEATURE(attribute_availability_swift, true)
FEATURE(attribute_cf_returns_not_retained, true)
FEATURE(attribute_cf_returns_retained, true)
FEATURE(attribute_cf_returns_on_parameters, true)
@@ -88,11 +94,11 @@
FEATURE(objc_arc, LangOpts.ObjCAutoRefCount)
FEATURE(objc_arc_fields, true)
FEATURE(objc_arc_weak, LangOpts.ObjCWeak)
-FEATURE(objc_default_synthesize_properties, LangOpts.ObjC2)
-FEATURE(objc_fixed_enum, true)
-FEATURE(objc_instancetype, LangOpts.ObjC2)
-FEATURE(objc_kindof, LangOpts.ObjC2)
-FEATURE(objc_modules, LangOpts.ObjC2 &&LangOpts.Modules)
+FEATURE(objc_default_synthesize_properties, LangOpts.ObjC)
+FEATURE(objc_fixed_enum, LangOpts.ObjC)
+FEATURE(objc_instancetype, LangOpts.ObjC)
+FEATURE(objc_kindof, LangOpts.ObjC)
+FEATURE(objc_modules, LangOpts.ObjC && LangOpts.Modules)
FEATURE(objc_nonfragile_abi, LangOpts.ObjCRuntime.isNonFragile())
FEATURE(objc_property_explicit_atomic, true)
FEATURE(objc_protocol_qualifier_mangling, true)
@@ -102,16 +108,16 @@
FEATURE(ownership_takes, true)
FEATURE(objc_bool, true)
FEATURE(objc_subscripting, LangOpts.ObjCRuntime.isNonFragile())
-FEATURE(objc_array_literals, LangOpts.ObjC2)
-FEATURE(objc_dictionary_literals, LangOpts.ObjC2)
-FEATURE(objc_boxed_expressions, LangOpts.ObjC2)
-FEATURE(objc_boxed_nsvalue_expressions, LangOpts.ObjC2)
+FEATURE(objc_array_literals, LangOpts.ObjC)
+FEATURE(objc_dictionary_literals, LangOpts.ObjC)
+FEATURE(objc_boxed_expressions, LangOpts.ObjC)
+FEATURE(objc_boxed_nsvalue_expressions, LangOpts.ObjC)
FEATURE(arc_cf_code_audited, true)
FEATURE(objc_bridge_id, true)
FEATURE(objc_bridge_id_on_typedefs, true)
-FEATURE(objc_generics, LangOpts.ObjC2)
-FEATURE(objc_generics_variance, LangOpts.ObjC2)
-FEATURE(objc_class_property, LangOpts.ObjC2)
+FEATURE(objc_generics, LangOpts.ObjC)
+FEATURE(objc_generics_variance, LangOpts.ObjC)
+FEATURE(objc_class_property, LangOpts.ObjC)
// C11 features
FEATURE(c_alignas, LangOpts.C11)
FEATURE(c_alignof, LangOpts.C11)
@@ -239,6 +245,7 @@
EXTENSION(cxx_variable_templates, LangOpts.CPlusPlus)
// Miscellaneous language extensions
EXTENSION(overloadable_unmarked, true)
+EXTENSION(pragma_clang_attribute_namespaces, true)
#undef EXTENSION
#undef FEATURE
diff --git a/linux-x64/clang/include/clang/Basic/FileManager.h b/linux-x64/clang/include/clang/Basic/FileManager.h
index 3e91dd9..88c1467 100644
--- a/linux-x64/clang/include/clang/Basic/FileManager.h
+++ b/linux-x64/clang/include/clang/Basic/FileManager.h
@@ -1,9 +1,8 @@
//===--- FileManager.h - File System Probing and Caching --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -103,6 +102,10 @@
void closeFile() const {
File.reset(); // rely on destructor to close File
}
+
+ // Only for use in tests to see if deferred opens are happening, rather than
+ // relying on RealPathName being empty.
+ bool isOpenForTests() const { return File != nullptr; }
};
struct FileData;
@@ -172,6 +175,9 @@
/// or a directory) as virtual directories.
void addAncestorsAsVirtualDirs(StringRef Path);
+ /// Fills the RealPathName in file entry.
+ void fillRealPathName(FileEntry *UFE, llvm::StringRef FileName);
+
public:
FileManager(const FileSystemOptions &FileSystemOpts,
IntrusiveRefCntPtr<llvm::vfs::FileSystem> FS = nullptr);
@@ -184,18 +190,10 @@
///
/// \param statCache the new stat cache to install. Ownership of this
/// object is transferred to the FileManager.
- ///
- /// \param AtBeginning whether this new stat cache must be installed at the
- /// beginning of the chain of stat caches. Otherwise, it will be added to
- /// the end of the chain.
- void addStatCache(std::unique_ptr<FileSystemStatCache> statCache,
- bool AtBeginning = false);
+ void setStatCache(std::unique_ptr<FileSystemStatCache> statCache);
- /// Removes the specified FileSystemStatCache object from the manager.
- void removeStatCache(FileSystemStatCache *statCache);
-
- /// Removes all FileSystemStatCache objects from the manager.
- void clearStatCaches();
+ /// Removes the FileSystemStatCache object from the manager.
+ void clearStatCache();
/// Lookup, cache, and verify the specified directory (real or
/// virtual).
diff --git a/linux-x64/clang/include/clang/Basic/FileSystemOptions.h b/linux-x64/clang/include/clang/Basic/FileSystemOptions.h
index 8b8b13b..458af0c 100644
--- a/linux-x64/clang/include/clang/Basic/FileSystemOptions.h
+++ b/linux-x64/clang/include/clang/Basic/FileSystemOptions.h
@@ -1,9 +1,8 @@
//===--- FileSystemOptions.h - File System Options --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Basic/FileSystemStatCache.h b/linux-x64/clang/include/clang/Basic/FileSystemStatCache.h
index a027700..0ae6a9e 100644
--- a/linux-x64/clang/include/clang/Basic/FileSystemStatCache.h
+++ b/linux-x64/clang/include/clang/Basic/FileSystemStatCache.h
@@ -1,9 +1,8 @@
//===- FileSystemStatCache.h - Caching for 'stat' calls ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -60,9 +59,6 @@
class FileSystemStatCache {
virtual void anchor();
-protected:
- std::unique_ptr<FileSystemStatCache> NextStatCache;
-
public:
virtual ~FileSystemStatCache() = default;
@@ -88,22 +84,6 @@
std::unique_ptr<llvm::vfs::File> *F,
FileSystemStatCache *Cache, llvm::vfs::FileSystem &FS);
- /// Sets the next stat call cache in the chain of stat caches.
- /// Takes ownership of the given stat cache.
- void setNextStatCache(std::unique_ptr<FileSystemStatCache> Cache) {
- NextStatCache = std::move(Cache);
- }
-
- /// Retrieve the next stat call cache in the chain.
- FileSystemStatCache *getNextStatCache() { return NextStatCache.get(); }
-
- /// Retrieve the next stat call cache in the chain, transferring
- /// ownership of this cache (and, transitively, all of the remaining caches)
- /// to the caller.
- std::unique_ptr<FileSystemStatCache> takeNextStatCache() {
- return std::move(NextStatCache);
- }
-
protected:
// FIXME: The pointer here is a non-owning/optional reference to the
// unique_ptr. Optional<unique_ptr<vfs::File>&> might be nicer, but
@@ -111,17 +91,6 @@
virtual LookupResult getStat(StringRef Path, FileData &Data, bool isFile,
std::unique_ptr<llvm::vfs::File> *F,
llvm::vfs::FileSystem &FS) = 0;
-
- LookupResult statChained(StringRef Path, FileData &Data, bool isFile,
- std::unique_ptr<llvm::vfs::File> *F,
- llvm::vfs::FileSystem &FS) {
- if (FileSystemStatCache *Next = getNextStatCache())
- return Next->getStat(Path, Data, isFile, F, FS);
-
- // If we hit the end of the list of stat caches to try, just compute and
- // return it without a cache.
- return get(Path, Data, isFile, F, nullptr, FS) ? CacheMissing : CacheExists;
- }
};
/// A stat "cache" that can be used by FileManager to keep
diff --git a/linux-x64/clang/include/clang/Basic/FixedPoint.h b/linux-x64/clang/include/clang/Basic/FixedPoint.h
index 9a9b7cc..f68ed56 100644
--- a/linux-x64/clang/include/clang/Basic/FixedPoint.h
+++ b/linux-x64/clang/include/clang/Basic/FixedPoint.h
@@ -1,9 +1,8 @@
//===- FixedPoint.h - Fixed point constant handling -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -18,6 +17,8 @@
#define LLVM_CLANG_BASIC_FIXEDPOINT_H
#include "llvm/ADT/APSInt.h"
+#include "llvm/ADT/SmallString.h"
+#include "llvm/Support/raw_ostream.h"
namespace clang {
@@ -36,6 +37,8 @@
: Width(Width), Scale(Scale), IsSigned(IsSigned),
IsSaturated(IsSaturated), HasUnsignedPadding(HasUnsignedPadding) {
assert(Width >= Scale && "Not enough room for the scale");
+ assert(!(IsSigned && HasUnsignedPadding) &&
+ "Cannot have unsigned padding on a signed type.");
}
unsigned getWidth() const { return Width; }
@@ -46,6 +49,9 @@
void setSaturated(bool Saturated) { IsSaturated = Saturated; }
+ /// Return the number of integral bits represented by these semantics. These
+ /// are separate from the fractional bits and do not include the sign or
+ /// padding bit.
unsigned getIntegralBits() const {
if (IsSigned || (!IsSigned && HasUnsignedPadding))
return Width - Scale - 1;
@@ -53,6 +59,21 @@
return Width - Scale;
}
+ /// Return the FixedPointSemantics that allows for calculating the full
+ /// precision semantic that can precisely represent the precision and ranges
+ /// of both input values. This does not compute the resulting semantics for a
+ /// given binary operation.
+ FixedPointSemantics
+ getCommonSemantics(const FixedPointSemantics &Other) const;
+
+ /// Return the FixedPointSemantics for an integer type.
+ static FixedPointSemantics GetIntegerSemantics(unsigned Width,
+ bool IsSigned) {
+ return FixedPointSemantics(Width, /*Scale=*/0, IsSigned,
+ /*IsSaturated=*/false,
+ /*HasUnsignedPadding=*/false);
+ }
+
private:
unsigned Width;
unsigned Scale;
@@ -83,19 +104,38 @@
: APFixedPoint(llvm::APInt(Sema.getWidth(), Val, Sema.isSigned()),
Sema) {}
+ // Zero initialization.
+ APFixedPoint(const FixedPointSemantics &Sema) : APFixedPoint(0, Sema) {}
+
llvm::APSInt getValue() const { return llvm::APSInt(Val, !Sema.isSigned()); }
inline unsigned getWidth() const { return Sema.getWidth(); }
inline unsigned getScale() const { return Sema.getScale(); }
inline bool isSaturated() const { return Sema.isSaturated(); }
inline bool isSigned() const { return Sema.isSigned(); }
inline bool hasPadding() const { return Sema.hasUnsignedPadding(); }
+ FixedPointSemantics getSemantics() const { return Sema; }
- // Convert this number to match the semantics provided.
- APFixedPoint convert(const FixedPointSemantics &DstSema) const;
+ bool getBoolValue() const { return Val.getBoolValue(); }
+
+ // Convert this number to match the semantics provided. If the overflow
+ // parameter is provided, set this value to true or false to indicate if this
+ // operation results in an overflow.
+ APFixedPoint convert(const FixedPointSemantics &DstSema,
+ bool *Overflow = nullptr) const;
+
+ // Perform binary operations on a fixed point type. The resulting fixed point
+ // value will be in the common, full precision semantics that can represent
+ // the precision and ranges os both input values. See convert() for an
+ // explanation of the Overflow parameter.
+ APFixedPoint add(const APFixedPoint &Other, bool *Overflow = nullptr) const;
+
+ /// Perform a unary negation (-X) on this fixed point type, taking into
+ /// account saturation if applicable.
+ APFixedPoint negate(bool *Overflow = nullptr) const;
APFixedPoint shr(unsigned Amt) const {
return APFixedPoint(Val >> Amt, Sema);
- }
+ }
APFixedPoint shl(unsigned Amt) const {
return APFixedPoint(Val << Amt, Sema);
@@ -108,6 +148,13 @@
return Val >> getScale();
}
+ void toString(llvm::SmallVectorImpl<char> &Str) const;
+ std::string toString() const {
+ llvm::SmallString<40> S;
+ toString(S);
+ return S.str();
+ }
+
// If LHS > RHS, return 1. If LHS == RHS, return 0. If LHS < RHS, return -1.
int compare(const APFixedPoint &Other) const;
bool operator==(const APFixedPoint &Other) const {
@@ -133,6 +180,12 @@
FixedPointSemantics Sema;
};
+inline llvm::raw_ostream &operator<<(llvm::raw_ostream &OS,
+ const APFixedPoint &FX) {
+ OS << FX.toString();
+ return OS;
+}
+
} // namespace clang
#endif
diff --git a/linux-x64/clang/include/clang/Basic/IdentifierTable.h b/linux-x64/clang/include/clang/Basic/IdentifierTable.h
index 478c25e..465486e 100644
--- a/linux-x64/clang/include/clang/Basic/IdentifierTable.h
+++ b/linux-x64/clang/include/clang/Basic/IdentifierTable.h
@@ -1,9 +1,8 @@
//===- IdentifierTable.h - Hash table for identifier lookup -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -116,10 +115,19 @@
llvm::StringMapEntry<IdentifierInfo *> *Entry = nullptr;
+ IdentifierInfo()
+ : TokenID(tok::identifier), ObjCOrBuiltinID(0), HasMacro(false),
+ HadMacro(false), IsExtension(false), IsFutureCompatKeyword(false),
+ IsPoisoned(false), IsCPPOperatorKeyword(false),
+ NeedsHandleIdentifier(false), IsFromAST(false), ChangedAfterLoad(false),
+ FEChangedAfterLoad(false), RevertedTokenID(false), OutOfDate(false),
+ IsModulesImport(false) {}
+
public:
- IdentifierInfo();
IdentifierInfo(const IdentifierInfo &) = delete;
IdentifierInfo &operator=(const IdentifierInfo &) = delete;
+ IdentifierInfo(IdentifierInfo &&) = delete;
+ IdentifierInfo &operator=(IdentifierInfo &&) = delete;
/// Return true if this is the identifier for the specified string.
///
@@ -138,31 +146,10 @@
/// Return the beginning of the actual null-terminated string for this
/// identifier.
- const char *getNameStart() const {
- if (Entry) return Entry->getKeyData();
- // FIXME: This is gross. It would be best not to embed specific details
- // of the PTH file format here.
- // The 'this' pointer really points to a
- // std::pair<IdentifierInfo, const char*>, where internal pointer
- // points to the external string data.
- using actualtype = std::pair<IdentifierInfo, const char *>;
-
- return ((const actualtype*) this)->second;
- }
+ const char *getNameStart() const { return Entry->getKeyData(); }
/// Efficiently return the length of this identifier info.
- unsigned getLength() const {
- if (Entry) return Entry->getKeyLength();
- // FIXME: This is gross. It would be best not to embed specific details
- // of the PTH file format here.
- // The 'this' pointer really points to a
- // std::pair<IdentifierInfo, const char*>, where internal pointer
- // points to the external string data.
- using actualtype = std::pair<IdentifierInfo, const char *>;
-
- const char* p = ((const actualtype*) this)->second - 2;
- return (((unsigned) p[0]) | (((unsigned) p[1]) << 8)) - 1;
- }
+ unsigned getLength() const { return Entry->getKeyLength(); }
/// Return the actual identifier string.
StringRef getName() const {
@@ -951,9 +938,6 @@
}
};
-template <>
-struct isPodLike<clang::Selector> { static const bool value = true; };
-
template<>
struct PointerLikeTypeTraits<clang::Selector> {
static const void *getAsVoidPointer(clang::Selector P) {
diff --git a/linux-x64/clang/include/clang/Basic/LLVM.h b/linux-x64/clang/include/clang/Basic/LLVM.h
index 3f833c6..e9bb96a 100644
--- a/linux-x64/clang/include/clang/Basic/LLVM.h
+++ b/linux-x64/clang/include/clang/Basic/LLVM.h
@@ -1,9 +1,8 @@
//===--- LLVM.h - Import various common LLVM datatypes ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/Lambda.h b/linux-x64/clang/include/clang/Basic/Lambda.h
index 675854e..853821a 100644
--- a/linux-x64/clang/include/clang/Basic/Lambda.h
+++ b/linux-x64/clang/include/clang/Basic/Lambda.h
@@ -1,9 +1,8 @@
//===--- Lambda.h - Types for C++ Lambdas -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Basic/LangOptions.def b/linux-x64/clang/include/clang/Basic/LangOptions.def
index 8b92841..d52f9c0 100644
--- a/linux-x64/clang/include/clang/Basic/LangOptions.def
+++ b/linux-x64/clang/include/clang/Basic/LangOptions.def
@@ -1,9 +1,8 @@
//===--- LangOptions.def - Language option database -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -92,8 +91,7 @@
LANGOPT(CPlusPlus14 , 1, 0, "C++14")
LANGOPT(CPlusPlus17 , 1, 0, "C++17")
LANGOPT(CPlusPlus2a , 1, 0, "C++2a")
-LANGOPT(ObjC1 , 1, 0, "Objective-C 1")
-LANGOPT(ObjC2 , 1, 0, "Objective-C 2")
+LANGOPT(ObjC , 1, 0, "Objective-C")
BENIGN_LANGOPT(ObjCDefaultSynthProperties , 1, 0,
"Objective-C auto-synthesized properties")
BENIGN_LANGOPT(EncodeExtendedBlockSig , 1, 0,
@@ -139,6 +137,7 @@
LANGOPT(NoMathBuiltin , 1, 0, "disable math builtin functions")
LANGOPT(GNUAsm , 1, 1, "GNU-style inline assembly")
LANGOPT(CoroutinesTS , 1, 0, "C++ coroutines TS")
+LANGOPT(DllExportInlines , 1, 1, "dllexported classes dllexport inline methods")
LANGOPT(RelaxedTemplateTemplateArgs, 1, 0, "C++17 relaxed matching of template template arguments")
LANGOPT(DoubleSquareBracketAttributes, 1, 0, "'[[]]' attributes extension for all language standard modes")
@@ -204,7 +203,9 @@
LANGOPT(OpenMPIsDevice , 1, 0, "Generate code only for OpenMP target device")
LANGOPT(OpenMPCUDAMode , 1, 0, "Generate code for OpenMP pragmas in SIMT/SPMD mode")
LANGOPT(OpenMPCUDAForceFullRuntime , 1, 0, "Force to use full runtime in all constructs when offloading to CUDA devices")
-LANGOPT(OpenMPHostCXXExceptions , 1, 0, "C++ exceptions handling in the host code.")
+LANGOPT(OpenMPCUDANumSMs , 32, 0, "Number of SMs for CUDA devices.")
+LANGOPT(OpenMPCUDABlocksPerSM , 32, 0, "Number of blocks per SM for CUDA devices.")
+LANGOPT(OpenMPOptimisticCollapse , 1, 0, "Use at most 32 bits to represent the collapsed loop nest counter.")
LANGOPT(RenderScript , 1, 0, "RenderScript")
LANGOPT(CUDAIsDevice , 1, 0, "compiling for CUDA device")
@@ -225,7 +226,8 @@
BENIGN_LANGOPT(DumpRecordLayoutsSimple , 1, 0, "dumping the layout of IRgen'd records in a simple form")
BENIGN_LANGOPT(DumpVTableLayouts , 1, 0, "dumping the layouts of emitted vtables")
LANGOPT(NoConstantCFStrings , 1, 0, "no constant CoreFoundation strings")
-BENIGN_LANGOPT(InlineVisibilityHidden , 1, 0, "hidden default visibility for inline C++ methods")
+BENIGN_LANGOPT(InlineVisibilityHidden , 1, 0, "hidden visibility for inline C++ methods")
+LANGOPT(GlobalAllocationFunctionVisibilityHidden , 1, 0, "hidden visibility for global operator new and delete declaration")
BENIGN_LANGOPT(ParseUnknownAnytype, 1, 0, "__unknown_anytype")
BENIGN_LANGOPT(DebuggerSupport , 1, 0, "debugger support")
BENIGN_LANGOPT(DebuggerCastResultToId, 1, 0, "for 'po' in the debugger, cast the result to id if it is of unknown type")
@@ -255,11 +257,15 @@
ENUM_LANGOPT(GC, GCMode, 2, NonGC, "Objective-C Garbage Collection mode")
ENUM_LANGOPT(ValueVisibilityMode, Visibility, 3, DefaultVisibility,
- "value symbol visibility")
+ "default visibility for functions and variables [-fvisibility]")
ENUM_LANGOPT(TypeVisibilityMode, Visibility, 3, DefaultVisibility,
- "type symbol visibility")
+ "default visibility for types [-ftype-visibility]")
+LANGOPT(SetVisibilityForExternDecls, 1, 0,
+ "apply global symbol visibility to external declarations without an explicit visibility")
ENUM_LANGOPT(StackProtector, StackProtectorMode, 2, SSPOff,
"stack protector mode")
+ENUM_LANGOPT(TrivialAutoVarInit, TrivialAutoVarInitKind, 2, TrivialAutoVarInitKind::Uninitialized,
+ "trivial automatic variable initialization")
ENUM_LANGOPT(SignedOverflowBehavior, SignedOverflowBehaviorTy, 2, SOB_Undefined,
"signed integer overflow handling")
diff --git a/linux-x64/clang/include/clang/Basic/LangOptions.h b/linux-x64/clang/include/clang/Basic/LangOptions.h
index 30ee203..c7e2993 100644
--- a/linux-x64/clang/include/clang/Basic/LangOptions.h
+++ b/linux-x64/clang/include/clang/Basic/LangOptions.h
@@ -1,9 +1,8 @@
//===- LangOptions.h - C Language Family Language Options -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -54,6 +53,11 @@
enum GCMode { NonGC, GCOnly, HybridGC };
enum StackProtectorMode { SSPOff, SSPOn, SSPStrong, SSPReq };
+ // Automatic variables live on the stack, and when trivial they're usually
+ // uninitialized because it's undefined behavior to use them without
+ // initializing them.
+ enum class TrivialAutoVarInitKind { Uninitialized, Zero, Pattern };
+
enum SignedOverflowBehaviorTy {
// Default C standard behavior.
SOB_Undefined,
@@ -98,11 +102,14 @@
enum AddrSpaceMapMangling { ASMM_Target, ASMM_On, ASMM_Off };
+ // Corresponds to _MSC_VER
enum MSVCMajorVersion {
- MSVC2010 = 16,
- MSVC2012 = 17,
- MSVC2013 = 18,
- MSVC2015 = 19
+ MSVC2010 = 1600,
+ MSVC2012 = 1700,
+ MSVC2013 = 1800,
+ MSVC2015 = 1900,
+ MSVC2017 = 1910,
+ MSVC2017_5 = 1912
};
/// Clang versions with different platform ABI conformance.
@@ -124,11 +131,34 @@
/// whether we reuse base class tail padding in some ABIs.
Ver6,
+ /// Attempt to be ABI-compatible with code generated by Clang 7.0.x
+ /// (SVN r338536). This causes alignof (C++) and _Alignof (C11) to be
+ /// compatible with __alignof (i.e., return the preferred alignment)
+ /// rather than returning the required alignment.
+ Ver7,
+
/// Conform to the underlying platform's C and C++ ABIs as closely
/// as we can.
Latest
};
+ enum class CoreFoundationABI {
+ /// No interoperability ABI has been specified
+ Unspecified,
+ /// CoreFoundation does not have any language interoperability
+ Standalone,
+ /// Interoperability with the ObjectiveC runtime
+ ObjectiveC,
+ /// Interoperability with the latest known version of the Swift runtime
+ Swift,
+ /// Interoperability with the Swift 5.0 runtime
+ Swift5_0,
+ /// Interoperability with the Swift 4.2 runtime
+ Swift4_2,
+ /// Interoperability with the Swift 4.1 runtime
+ Swift4_1,
+ };
+
enum FPContractModeKind {
// Form fused FP ops only where result will not be affected.
FPC_Off,
@@ -175,6 +205,8 @@
clang::ObjCRuntime ObjCRuntime;
+ CoreFoundationABI CFRuntime = CoreFoundationABI::Unspecified;
+
std::string ObjCConstantStringClass;
/// The name of the handler function to be called when -ftrapv is
@@ -183,7 +215,7 @@
/// If none is specified, abort (GCC-compatible behaviour).
std::string OverflowHandler;
- /// The module currently being compiled as speficied by -fmodule-name.
+ /// The module currently being compiled as specified by -fmodule-name.
std::string ModuleName;
/// The name of the current module, of which the main source file
@@ -246,7 +278,7 @@
}
bool isCompatibleWithMSVC(MSVCMajorVersion MajorVersion) const {
- return MSCompatibilityVersion >= MajorVersion * 10000000U;
+ return MSCompatibilityVersion >= MajorVersion * 100000U;
}
/// Reset all of the options that are not considered when building a
@@ -273,7 +305,7 @@
/// Floating point control options
class FPOptions {
public:
- FPOptions() : fp_contract(LangOptions::FPC_Off),
+ FPOptions() : fp_contract(LangOptions::FPC_Off),
fenv_access(LangOptions::FEA_Off) {}
// Used for serializing.
@@ -319,7 +351,7 @@
unsigned getInt() const { return fp_contract | (fenv_access << 2); }
private:
- /// Adjust BinaryOperator::FPFeatures to match the total bit-field size
+ /// Adjust BinaryOperator::FPFeatures to match the total bit-field size
/// of these two.
unsigned fp_contract : 2;
unsigned fenv_access : 1;
diff --git a/linux-x64/clang/include/clang/Basic/Linkage.h b/linux-x64/clang/include/clang/Basic/Linkage.h
index 529cfa9..696f85b 100644
--- a/linux-x64/clang/include/clang/Basic/Linkage.h
+++ b/linux-x64/clang/include/clang/Basic/Linkage.h
@@ -1,9 +1,8 @@
//===- Linkage.h - Linkage enumeration and utilities ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/MSP430Target.def b/linux-x64/clang/include/clang/Basic/MSP430Target.def
new file mode 100644
index 0000000..a1e192c
--- /dev/null
+++ b/linux-x64/clang/include/clang/Basic/MSP430Target.def
@@ -0,0 +1,246 @@
+//===--- MSP430Target.def - MSP430 Feature/Processor Database----*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines the MSP430 devices and their features.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef MSP430_MCU_FEAT
+#define MSP430_MCU_FEAT(NAME, HWMULT) MSP430_MCU(NAME)
+#endif
+
+#ifndef MSP430_MCU
+#define MSP430_MCU(NAME)
+#endif
+
+MSP430_MCU("msp430c111")
+MSP430_MCU("msp430c1111")
+MSP430_MCU("msp430c112")
+MSP430_MCU("msp430c1121")
+MSP430_MCU("msp430c1331")
+MSP430_MCU("msp430c1351")
+MSP430_MCU("msp430e112")
+MSP430_MCU("msp430f110")
+MSP430_MCU("msp430f1101")
+MSP430_MCU("msp430f1101a")
+MSP430_MCU("msp430f1111")
+MSP430_MCU("msp430f1111a")
+MSP430_MCU("msp430f112")
+MSP430_MCU("msp430f1121")
+MSP430_MCU("msp430f1121a")
+MSP430_MCU("msp430f1122")
+MSP430_MCU("msp430f1132")
+MSP430_MCU("msp430f122")
+MSP430_MCU("msp430f1222")
+MSP430_MCU("msp430f123")
+MSP430_MCU("msp430f1232")
+MSP430_MCU("msp430f133")
+MSP430_MCU("msp430f135")
+MSP430_MCU("msp430f155")
+MSP430_MCU("msp430f156")
+MSP430_MCU("msp430f157")
+MSP430_MCU("msp430p112")
+MSP430_MCU("msp430f2001")
+MSP430_MCU("msp430f2011")
+MSP430_MCU("msp430f2002")
+MSP430_MCU("msp430f2012")
+MSP430_MCU("msp430f2003")
+MSP430_MCU("msp430f2013")
+MSP430_MCU("msp430f2101")
+MSP430_MCU("msp430f2111")
+MSP430_MCU("msp430f2121")
+MSP430_MCU("msp430f2131")
+MSP430_MCU("msp430f2112")
+MSP430_MCU("msp430f2122")
+MSP430_MCU("msp430f2132")
+MSP430_MCU("msp430f2232")
+MSP430_MCU("msp430f2252")
+MSP430_MCU("msp430f2272")
+MSP430_MCU("msp430f2234")
+MSP430_MCU("msp430f2254")
+MSP430_MCU("msp430f2274")
+MSP430_MCU("msp430g2211")
+MSP430_MCU("msp430g2201")
+MSP430_MCU("msp430g2111")
+MSP430_MCU("msp430g2101")
+MSP430_MCU("msp430g2001")
+MSP430_MCU("msp430g2231")
+MSP430_MCU("msp430g2221")
+MSP430_MCU("msp430g2131")
+MSP430_MCU("msp430g2121")
+MSP430_MCU("msp430g2102")
+MSP430_MCU("msp430g2202")
+MSP430_MCU("msp430g2302")
+MSP430_MCU("msp430g2402")
+MSP430_MCU("msp430g2132")
+MSP430_MCU("msp430g2232")
+MSP430_MCU("msp430g2332")
+MSP430_MCU("msp430g2432")
+MSP430_MCU("msp430g2112")
+MSP430_MCU("msp430g2212")
+MSP430_MCU("msp430g2312")
+MSP430_MCU("msp430g2412")
+MSP430_MCU("msp430g2152")
+MSP430_MCU("msp430g2252")
+MSP430_MCU("msp430g2352")
+MSP430_MCU("msp430g2452")
+MSP430_MCU("msp430g2113")
+MSP430_MCU("msp430g2213")
+MSP430_MCU("msp430g2313")
+MSP430_MCU("msp430g2413")
+MSP430_MCU("msp430g2513")
+MSP430_MCU("msp430g2153")
+MSP430_MCU("msp430g2253")
+MSP430_MCU("msp430g2353")
+MSP430_MCU("msp430g2453")
+MSP430_MCU("msp430g2553")
+MSP430_MCU("msp430g2203")
+MSP430_MCU("msp430g2303")
+MSP430_MCU("msp430g2403")
+MSP430_MCU("msp430g2233")
+MSP430_MCU("msp430g2333")
+MSP430_MCU("msp430g2433")
+MSP430_MCU("msp430g2533")
+MSP430_MCU("msp430tch5e")
+MSP430_MCU("msp430g2444")
+MSP430_MCU("msp430g2544")
+MSP430_MCU("msp430g2744")
+MSP430_MCU("msp430g2755")
+MSP430_MCU("msp430g2855")
+MSP430_MCU("msp430g2955")
+MSP430_MCU("msp430g2230")
+MSP430_MCU("msp430g2210")
+MSP430_MCU("msp430c311s")
+MSP430_MCU("msp430c312")
+MSP430_MCU("msp430c313")
+MSP430_MCU("msp430c314")
+MSP430_MCU("msp430c315")
+MSP430_MCU("msp430c323")
+MSP430_MCU("msp430c325")
+MSP430_MCU("msp430c412")
+MSP430_MCU("msp430c413")
+MSP430_MCU("msp430e313")
+MSP430_MCU("msp430e315")
+MSP430_MCU("msp430e325")
+MSP430_MCU("msp430p313")
+MSP430_MCU("msp430p315")
+MSP430_MCU("msp430p315s")
+MSP430_MCU("msp430p325")
+MSP430_MCU("msp430f412")
+MSP430_MCU("msp430f413")
+MSP430_MCU("msp430f415")
+MSP430_MCU("msp430f417")
+MSP430_MCU("msp430f4132")
+MSP430_MCU("msp430f4152")
+MSP430_MCU("msp430f435")
+MSP430_MCU("msp430f436")
+MSP430_MCU("msp430f437")
+MSP430_MCU("msp430f4351")
+MSP430_MCU("msp430f4361")
+MSP430_MCU("msp430f4371")
+MSP430_MCU("msp430fe423")
+MSP430_MCU("msp430fe425")
+MSP430_MCU("msp430fe427")
+MSP430_MCU("msp430fe423a")
+MSP430_MCU("msp430fe425a")
+MSP430_MCU("msp430fe427a")
+MSP430_MCU("msp430fe4232")
+MSP430_MCU("msp430fe4242")
+MSP430_MCU("msp430fe4252")
+MSP430_MCU("msp430fe4272")
+MSP430_MCU("msp430f4250")
+MSP430_MCU("msp430f4260")
+MSP430_MCU("msp430f4270")
+MSP430_MCU("msp430fg4250")
+MSP430_MCU("msp430fg4260")
+MSP430_MCU("msp430fg4270")
+MSP430_MCU("msp430fw423")
+MSP430_MCU("msp430fw425")
+MSP430_MCU("msp430fw427")
+MSP430_MCU("msp430fw428")
+MSP430_MCU("msp430fw429")
+MSP430_MCU("msp430fg437")
+MSP430_MCU("msp430fg438")
+MSP430_MCU("msp430fg439")
+MSP430_MCU("msp430f438")
+MSP430_MCU("msp430f439")
+MSP430_MCU("msp430f477")
+MSP430_MCU("msp430f478")
+MSP430_MCU("msp430f479")
+MSP430_MCU("msp430fg477")
+MSP430_MCU("msp430fg478")
+MSP430_MCU("msp430fg479")
+
+// With 16-bit hardware multiplier
+MSP430_MCU_FEAT("msp430f147", "16bit")
+MSP430_MCU_FEAT("msp430f148", "16bit")
+MSP430_MCU_FEAT("msp430f149", "16bit")
+MSP430_MCU_FEAT("msp430f1471", "16bit")
+MSP430_MCU_FEAT("msp430f1481", "16bit")
+MSP430_MCU_FEAT("msp430f1491", "16bit")
+MSP430_MCU_FEAT("msp430f167", "16bit")
+MSP430_MCU_FEAT("msp430f168", "16bit")
+MSP430_MCU_FEAT("msp430f169", "16bit")
+MSP430_MCU_FEAT("msp430f1610", "16bit")
+MSP430_MCU_FEAT("msp430f1611", "16bit")
+MSP430_MCU_FEAT("msp430f1612", "16bit")
+MSP430_MCU_FEAT("msp430c336", "16bit")
+MSP430_MCU_FEAT("msp430c337", "16bit")
+MSP430_MCU_FEAT("msp430e337", "16bit")
+MSP430_MCU_FEAT("msp430p337", "16bit")
+MSP430_MCU_FEAT("msp430f423", "16bit")
+MSP430_MCU_FEAT("msp430f425", "16bit")
+MSP430_MCU_FEAT("msp430f427", "16bit")
+MSP430_MCU_FEAT("msp430f423a", "16bit")
+MSP430_MCU_FEAT("msp430f425a", "16bit")
+MSP430_MCU_FEAT("msp430f427a", "16bit")
+MSP430_MCU_FEAT("msp430f4481", "16bit")
+MSP430_MCU_FEAT("msp430f4491", "16bit")
+MSP430_MCU_FEAT("msp430f447", "16bit")
+MSP430_MCU_FEAT("msp430f448", "16bit")
+MSP430_MCU_FEAT("msp430f449", "16bit")
+MSP430_MCU_FEAT("msp430f2330", "16bit")
+MSP430_MCU_FEAT("msp430f2350", "16bit")
+MSP430_MCU_FEAT("msp430f2370", "16bit")
+MSP430_MCU_FEAT("msp430f233", "16bit")
+MSP430_MCU_FEAT("msp430f235", "16bit")
+MSP430_MCU_FEAT("msp430f247", "16bit")
+MSP430_MCU_FEAT("msp430f248", "16bit")
+MSP430_MCU_FEAT("msp430f249", "16bit")
+MSP430_MCU_FEAT("msp430f2410", "16bit")
+MSP430_MCU_FEAT("msp430f2471", "16bit")
+MSP430_MCU_FEAT("msp430f2481", "16bit")
+MSP430_MCU_FEAT("msp430f2491", "16bit")
+MSP430_MCU_FEAT("msp430i2020", "16bit")
+MSP430_MCU_FEAT("msp430i2021", "16bit")
+MSP430_MCU_FEAT("msp430i2030", "16bit")
+MSP430_MCU_FEAT("msp430i2031", "16bit")
+MSP430_MCU_FEAT("msp430i2040", "16bit")
+MSP430_MCU_FEAT("msp430i2041", "16bit")
+MSP430_MCU_FEAT("msp430afe221", "16bit")
+MSP430_MCU_FEAT("msp430afe231", "16bit")
+MSP430_MCU_FEAT("msp430afe251", "16bit")
+MSP430_MCU_FEAT("msp430afe222", "16bit")
+MSP430_MCU_FEAT("msp430afe232", "16bit")
+MSP430_MCU_FEAT("msp430afe252", "16bit")
+MSP430_MCU_FEAT("msp430afe223", "16bit")
+MSP430_MCU_FEAT("msp430afe233", "16bit")
+MSP430_MCU_FEAT("msp430afe253", "16bit")
+
+// With 32 Bit Hardware Multiplier
+MSP430_MCU_FEAT("msp430f4783", "32bit")
+MSP430_MCU_FEAT("msp430f4793", "32bit")
+MSP430_MCU_FEAT("msp430f4784", "32bit")
+MSP430_MCU_FEAT("msp430f4794", "32bit")
+
+// Generic MSUs
+MSP430_MCU("msp430")
+MSP430_MCU("msp430i2xxgeneric")
+
+#undef MSP430_MCU
+#undef MSP430_MCU_FEAT
diff --git a/linux-x64/clang/include/clang/Basic/MacroBuilder.h b/linux-x64/clang/include/clang/Basic/MacroBuilder.h
index b2edc97..96e67cb 100644
--- a/linux-x64/clang/include/clang/Basic/MacroBuilder.h
+++ b/linux-x64/clang/include/clang/Basic/MacroBuilder.h
@@ -1,9 +1,8 @@
//===--- MacroBuilder.h - CPP Macro building utility ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Basic/MemoryBufferCache.h b/linux-x64/clang/include/clang/Basic/MemoryBufferCache.h
index c79c3c4..9a2b62e 100644
--- a/linux-x64/clang/include/clang/Basic/MemoryBufferCache.h
+++ b/linux-x64/clang/include/clang/Basic/MemoryBufferCache.h
@@ -1,9 +1,8 @@
//===- MemoryBufferCache.h - Cache for loaded memory buffers ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Basic/Module.h b/linux-x64/clang/include/clang/Basic/Module.h
index 02a4ef6..0e891af 100644
--- a/linux-x64/clang/include/clang/Basic/Module.h
+++ b/linux-x64/clang/include/clang/Basic/Module.h
@@ -1,9 +1,8 @@
//===- Module.h - Describe a module -----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/ObjCRuntime.h b/linux-x64/clang/include/clang/Basic/ObjCRuntime.h
index c307c96..921df68 100644
--- a/linux-x64/clang/include/clang/Basic/ObjCRuntime.h
+++ b/linux-x64/clang/include/clang/Basic/ObjCRuntime.h
@@ -1,9 +1,8 @@
//===- ObjCRuntime.h - Objective-C Runtime Configuration --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -173,6 +172,80 @@
llvm_unreachable("bad kind");
}
+ /// Does this runtime provide ARC entrypoints that are likely to be faster
+ /// than an ordinary message send of the appropriate selector?
+ ///
+ /// The ARC entrypoints are guaranteed to be equivalent to just sending the
+ /// corresponding message. If the entrypoint is implemented naively as just a
+ /// message send, using it is a trade-off: it sacrifices a few cycles of
+ /// overhead to save a small amount of code. However, it's possible for
+ /// runtimes to detect and special-case classes that use "standard"
+ /// retain/release behavior; if that's dynamically a large proportion of all
+ /// retained objects, using the entrypoint will also be faster than using a
+ /// message send.
+ ///
+ /// When this method returns true, Clang will turn non-super message sends of
+ /// certain selectors into calls to the correspond entrypoint:
+ /// retain => objc_retain
+ /// release => objc_release
+ /// autorelease => objc_autorelease
+ bool shouldUseARCFunctionsForRetainRelease() const {
+ switch (getKind()) {
+ case FragileMacOSX:
+ return false;
+ case MacOSX:
+ return getVersion() >= VersionTuple(10, 10);
+ case iOS:
+ return getVersion() >= VersionTuple(8);
+ case WatchOS:
+ return true;
+ case GCC:
+ return false;
+ case GNUstep:
+ return false;
+ case ObjFW:
+ return false;
+ }
+ llvm_unreachable("bad kind");
+ }
+
+ /// Does this runtime provide entrypoints that are likely to be faster
+ /// than an ordinary message send of the "alloc" selector?
+ ///
+ /// The "alloc" entrypoint is guaranteed to be equivalent to just sending the
+ /// corresponding message. If the entrypoint is implemented naively as just a
+ /// message send, using it is a trade-off: it sacrifices a few cycles of
+ /// overhead to save a small amount of code. However, it's possible for
+ /// runtimes to detect and special-case classes that use "standard"
+ /// alloc behavior; if that's dynamically a large proportion of all
+ /// objects, using the entrypoint will also be faster than using a message
+ /// send.
+ ///
+ /// When this method returns true, Clang will turn non-super message sends of
+ /// certain selectors into calls to the corresponding entrypoint:
+ /// alloc => objc_alloc
+ /// allocWithZone:nil => objc_allocWithZone
+ bool shouldUseRuntimeFunctionsForAlloc() const {
+ switch (getKind()) {
+ case FragileMacOSX:
+ return false;
+ case MacOSX:
+ return getVersion() >= VersionTuple(10, 10);
+ case iOS:
+ return getVersion() >= VersionTuple(8);
+ case WatchOS:
+ return true;
+
+ case GCC:
+ return false;
+ case GNUstep:
+ return false;
+ case ObjFW:
+ return false;
+ }
+ llvm_unreachable("bad kind");
+ }
+
/// Does this runtime supports optimized setter entrypoints?
bool hasOptimizedSetter() const {
switch (getKind()) {
diff --git a/linux-x64/clang/include/clang/Basic/OpenCLExtensionTypes.def b/linux-x64/clang/include/clang/Basic/OpenCLExtensionTypes.def
new file mode 100644
index 0000000..84ffbe9
--- /dev/null
+++ b/linux-x64/clang/include/clang/Basic/OpenCLExtensionTypes.def
@@ -0,0 +1,40 @@
+//===-- OpenCLExtensionTypes.def - Metadata about BuiltinTypes ------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+// This file extends builtin types database with OpenCL extension types.
+// Custom code should define this macro:
+// EXT_OPAQUE_TYPE(Name, Id, Ext)
+
+#ifdef EXT_OPAQUE_TYPE
+
+#ifndef INTEL_SUBGROUP_AVC_TYPE
+#define INTEL_SUBGROUP_AVC_TYPE(Name, Id) \
+ EXT_OPAQUE_TYPE(intel_sub_group_avc_##Name, OCLIntelSubgroupAVC##Id, \
+ cl_intel_device_side_avc_motion_estimation)
+#endif
+
+#endif
+
+#ifdef INTEL_SUBGROUP_AVC_TYPE
+INTEL_SUBGROUP_AVC_TYPE(mce_payload_t, McePayload)
+INTEL_SUBGROUP_AVC_TYPE(ime_payload_t, ImePayload)
+INTEL_SUBGROUP_AVC_TYPE(ref_payload_t, RefPayload)
+INTEL_SUBGROUP_AVC_TYPE(sic_payload_t, SicPayload)
+INTEL_SUBGROUP_AVC_TYPE(mce_result_t, MceResult)
+INTEL_SUBGROUP_AVC_TYPE(ime_result_t, ImeResult)
+INTEL_SUBGROUP_AVC_TYPE(ref_result_t, RefResult)
+INTEL_SUBGROUP_AVC_TYPE(sic_result_t, SicResult)
+INTEL_SUBGROUP_AVC_TYPE(ime_result_single_reference_streamout_t, ImeResultSingleRefStreamout)
+INTEL_SUBGROUP_AVC_TYPE(ime_result_dual_reference_streamout_t, ImeResultDualRefStreamout)
+INTEL_SUBGROUP_AVC_TYPE(ime_single_reference_streamin_t, ImeSingleRefStreamin)
+INTEL_SUBGROUP_AVC_TYPE(ime_dual_reference_streamin_t, ImeDualRefStreamin)
+
+#undef INTEL_SUBGROUP_AVC_TYPE
+#endif // INTEL_SUBGROUP_AVC_TYPE
+
+#undef EXT_OPAQUE_TYPE
+
diff --git a/linux-x64/clang/include/clang/Basic/OpenCLExtensions.def b/linux-x64/clang/include/clang/Basic/OpenCLExtensions.def
index 13cb12e..40ac88f 100644
--- a/linux-x64/clang/include/clang/Basic/OpenCLExtensions.def
+++ b/linux-x64/clang/include/clang/Basic/OpenCLExtensions.def
@@ -1,9 +1,8 @@
//===--- OpenCLExtensions.def - OpenCL extension list -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -85,6 +84,7 @@
// Intel OpenCL extensions
OPENCLEXT_INTERNAL(cl_intel_subgroups, 120, ~0U)
OPENCLEXT_INTERNAL(cl_intel_subgroups_short, 120, ~0U)
+OPENCLEXT_INTERNAL(cl_intel_device_side_avc_motion_estimation, 120, ~0U)
#undef OPENCLEXT_INTERNAL
diff --git a/linux-x64/clang/include/clang/Basic/OpenCLImageTypes.def b/linux-x64/clang/include/clang/Basic/OpenCLImageTypes.def
index 0efed99..cfb018a 100644
--- a/linux-x64/clang/include/clang/Basic/OpenCLImageTypes.def
+++ b/linux-x64/clang/include/clang/Basic/OpenCLImageTypes.def
@@ -1,9 +1,8 @@
//===-- OpenCLImageTypes.def - Metadata about BuiltinTypes ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// This file extends builtin types database with OpenCL image singleton types.
diff --git a/linux-x64/clang/include/clang/Basic/OpenCLOptions.h b/linux-x64/clang/include/clang/Basic/OpenCLOptions.h
index cc4e992..47310da 100644
--- a/linux-x64/clang/include/clang/Basic/OpenCLOptions.h
+++ b/linux-x64/clang/include/clang/Basic/OpenCLOptions.h
@@ -1,9 +1,8 @@
//===--- OpenCLOptions.h ----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -15,6 +14,7 @@
#ifndef LLVM_CLANG_BASIC_OPENCLOPTIONS_H
#define LLVM_CLANG_BASIC_OPENCLOPTIONS_H
+#include "clang/Basic/LangOptions.h"
#include "llvm/ADT/StringMap.h"
namespace clang {
@@ -42,25 +42,29 @@
// Is supported as either an extension or an (optional) core feature for
// OpenCL version \p CLVer.
- bool isSupported(llvm::StringRef Ext, unsigned CLVer) const {
+ bool isSupported(llvm::StringRef Ext, LangOptions LO) const {
+ // In C++ mode all extensions should work at least as in v2.0.
+ auto CLVer = LO.OpenCLCPlusPlus ? 200 : LO.OpenCLVersion;
auto I = OptMap.find(Ext)->getValue();
return I.Supported && I.Avail <= CLVer;
}
// Is supported (optional) OpenCL core features for OpenCL version \p CLVer.
// For supported extension, return false.
- bool isSupportedCore(llvm::StringRef Ext, unsigned CLVer) const {
+ bool isSupportedCore(llvm::StringRef Ext, LangOptions LO) const {
+ // In C++ mode all extensions should work at least as in v2.0.
+ auto CLVer = LO.OpenCLCPlusPlus ? 200 : LO.OpenCLVersion;
auto I = OptMap.find(Ext)->getValue();
- return I.Supported && I.Avail <= CLVer &&
- I.Core != ~0U && CLVer >= I.Core;
+ return I.Supported && I.Avail <= CLVer && I.Core != ~0U && CLVer >= I.Core;
}
// Is supported OpenCL extension for OpenCL version \p CLVer.
// For supported (optional) core feature, return false.
- bool isSupportedExtension(llvm::StringRef Ext, unsigned CLVer) const {
+ bool isSupportedExtension(llvm::StringRef Ext, LangOptions LO) const {
+ // In C++ mode all extensions should work at least as in v2.0.
+ auto CLVer = LO.OpenCLCPlusPlus ? 200 : LO.OpenCLVersion;
auto I = OptMap.find(Ext)->getValue();
- return I.Supported && I.Avail <= CLVer &&
- (I.Core == ~0U || CLVer < I.Core);
+ return I.Supported && I.Avail <= CLVer && (I.Core == ~0U || CLVer < I.Core);
}
void enable(llvm::StringRef Ext, bool V = true) {
@@ -122,10 +126,10 @@
I->second.Enabled = false;
}
- void enableSupportedCore(unsigned CLVer) {
- for (llvm::StringMap<Info>::iterator I = OptMap.begin(),
- E = OptMap.end(); I != E; ++I)
- if (isSupportedCore(I->getKey(), CLVer))
+ void enableSupportedCore(LangOptions LO) {
+ for (llvm::StringMap<Info>::iterator I = OptMap.begin(), E = OptMap.end();
+ I != E; ++I)
+ if (isSupportedCore(I->getKey(), LO))
I->second.Enabled = true;
}
@@ -133,6 +137,6 @@
friend class ASTReader;
};
-} // end namespace clang
+} // end namespace clang
#endif
diff --git a/linux-x64/clang/include/clang/Basic/OpenMPKinds.def b/linux-x64/clang/include/clang/Basic/OpenMPKinds.def
index 375eddf..ecb2c8d 100644
--- a/linux-x64/clang/include/clang/Basic/OpenMPKinds.def
+++ b/linux-x64/clang/include/clang/Basic/OpenMPKinds.def
@@ -1,9 +1,8 @@
//===--- OpenMPKinds.def - OpenMP directives and clauses list ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -120,12 +119,18 @@
#ifndef OPENMP_MAP_KIND
#define OPENMP_MAP_KIND(Name)
#endif
+#ifndef OPENMP_MAP_MODIFIER_KIND
+#define OPENMP_MAP_MODIFIER_KIND(Name)
+#endif
#ifndef OPENMP_DIST_SCHEDULE_KIND
#define OPENMP_DIST_SCHEDULE_KIND(Name)
#endif
#ifndef OPENMP_DEFAULTMAP_KIND
#define OPENMP_DEFAULTMAP_KIND(Name)
#endif
+#ifndef OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND
+#define OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(Name)
+#endif
#ifndef OPENMP_DEFAULTMAP_MODIFIER
#define OPENMP_DEFAULTMAP_MODIFIER(Name)
#endif
@@ -174,6 +179,9 @@
#ifndef OPENMP_TASKGROUP_CLAUSE
#define OPENMP_TASKGROUP_CLAUSE(Name)
#endif
+#ifndef OPENMP_DECLARE_MAPPER_CLAUSE
+#define OPENMP_DECLARE_MAPPER_CLAUSE(Name)
+#endif
// OpenMP directives.
OPENMP_DIRECTIVE(threadprivate)
@@ -209,6 +217,7 @@
OPENMP_DIRECTIVE_EXT(for_simd, "for simd")
OPENMP_DIRECTIVE_EXT(cancellation_point, "cancellation point")
OPENMP_DIRECTIVE_EXT(declare_reduction, "declare reduction")
+OPENMP_DIRECTIVE_EXT(declare_mapper, "declare mapper")
OPENMP_DIRECTIVE_EXT(declare_simd, "declare simd")
OPENMP_DIRECTIVE(taskloop)
OPENMP_DIRECTIVE_EXT(taskloop_simd, "taskloop simd")
@@ -253,7 +262,6 @@
OPENMP_CLAUSE(nowait, OMPNowaitClause)
OPENMP_CLAUSE(untied, OMPUntiedClause)
OPENMP_CLAUSE(mergeable, OMPMergeableClause)
-OPENMP_CLAUSE(flush, OMPFlushClause)
OPENMP_CLAUSE(read, OMPReadClause)
OPENMP_CLAUSE(write, OMPWriteClause)
OPENMP_CLAUSE(update, OMPUpdateClause)
@@ -282,6 +290,8 @@
OPENMP_CLAUSE(unified_address, OMPUnifiedAddressClause)
OPENMP_CLAUSE(unified_shared_memory, OMPUnifiedSharedMemoryClause)
OPENMP_CLAUSE(reverse_offload, OMPReverseOffloadClause)
+OPENMP_CLAUSE(dynamic_allocators, OMPDynamicAllocatorsClause)
+OPENMP_CLAUSE(atomic_default_mem_order, OMPAtomicDefaultMemOrderClause)
// Clauses allowed for OpenMP directive 'parallel'.
OPENMP_PARALLEL_CLAUSE(if)
@@ -376,6 +386,7 @@
OPENMP_DEPEND_KIND(in)
OPENMP_DEPEND_KIND(out)
OPENMP_DEPEND_KIND(inout)
+OPENMP_DEPEND_KIND(mutexinoutset)
OPENMP_DEPEND_KIND(source)
OPENMP_DEPEND_KIND(sink)
@@ -467,6 +478,13 @@
OPENMP_REQUIRES_CLAUSE(unified_address)
OPENMP_REQUIRES_CLAUSE(unified_shared_memory)
OPENMP_REQUIRES_CLAUSE(reverse_offload)
+OPENMP_REQUIRES_CLAUSE(dynamic_allocators)
+OPENMP_REQUIRES_CLAUSE(atomic_default_mem_order)
+
+// Modifiers for 'atomic_default_mem_order' clause.
+OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(seq_cst)
+OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(acq_rel)
+OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(relaxed)
// Clauses allowed for OpenMP directive 'target data'.
OPENMP_TARGET_DATA_CLAUSE(if)
@@ -547,14 +565,17 @@
OPENMP_ORDERED_CLAUSE(simd)
OPENMP_ORDERED_CLAUSE(depend)
-// Map types and map type modifier for 'map' clause.
+// Map types for 'map' clause.
OPENMP_MAP_KIND(alloc)
OPENMP_MAP_KIND(to)
OPENMP_MAP_KIND(from)
OPENMP_MAP_KIND(tofrom)
OPENMP_MAP_KIND(delete)
OPENMP_MAP_KIND(release)
-OPENMP_MAP_KIND(always)
+
+// Map-type-modifiers for 'map' clause.
+OPENMP_MAP_MODIFIER_KIND(always)
+OPENMP_MAP_MODIFIER_KIND(close)
// Clauses allowed for OpenMP directive 'taskloop'.
OPENMP_TASKLOOP_CLAUSE(if)
@@ -871,6 +892,10 @@
// Clauses allowed for OpenMP directive 'taskgroup'.
OPENMP_TASKGROUP_CLAUSE(task_reduction)
+// Clauses allowed for OpenMP directive 'declare mapper'.
+OPENMP_DECLARE_MAPPER_CLAUSE(map)
+
+#undef OPENMP_DECLARE_MAPPER_CLAUSE
#undef OPENMP_TASKGROUP_CLAUSE
#undef OPENMP_TASKLOOP_SIMD_CLAUSE
#undef OPENMP_TASKLOOP_CLAUSE
@@ -896,6 +921,7 @@
#undef OPENMP_ATOMIC_CLAUSE
#undef OPENMP_TARGET_CLAUSE
#undef OPENMP_REQUIRES_CLAUSE
+#undef OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND
#undef OPENMP_TARGET_DATA_CLAUSE
#undef OPENMP_TARGET_ENTER_DATA_CLAUSE
#undef OPENMP_TARGET_EXIT_DATA_CLAUSE
@@ -906,6 +932,7 @@
#undef OPENMP_FOR_CLAUSE
#undef OPENMP_FOR_SIMD_CLAUSE
#undef OPENMP_MAP_KIND
+#undef OPENMP_MAP_MODIFIER_KIND
#undef OPENMP_DISTRIBUTE_CLAUSE
#undef OPENMP_DIST_SCHEDULE_KIND
#undef OPENMP_DEFAULTMAP_KIND
diff --git a/linux-x64/clang/include/clang/Basic/OpenMPKinds.h b/linux-x64/clang/include/clang/Basic/OpenMPKinds.h
index c47973e..17e66a5 100644
--- a/linux-x64/clang/include/clang/Basic/OpenMPKinds.h
+++ b/linux-x64/clang/include/clang/Basic/OpenMPKinds.h
@@ -1,9 +1,8 @@
//===--- OpenMPKinds.h - OpenMP enums ---------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -34,6 +33,7 @@
#define OPENMP_CLAUSE(Name, Class) \
OMPC_##Name,
#include "clang/Basic/OpenMPKinds.def"
+ OMPC_flush,
OMPC_threadprivate,
OMPC_uniform,
OMPC_unknown
@@ -96,6 +96,15 @@
OMPC_MAP_unknown
};
+/// OpenMP modifier kind for 'map' clause.
+enum OpenMPMapModifierKind {
+ OMPC_MAP_MODIFIER_unknown = OMPC_MAP_unknown,
+#define OPENMP_MAP_MODIFIER_KIND(Name) \
+ OMPC_MAP_MODIFIER_##Name,
+#include "clang/Basic/OpenMPKinds.def"
+ OMPC_MAP_MODIFIER_last
+};
+
/// OpenMP attributes for 'dist_schedule' clause.
enum OpenMPDistScheduleClauseKind {
#define OPENMP_DIST_SCHEDULE_KIND(Name) OMPC_DIST_SCHEDULE_##Name,
@@ -120,6 +129,14 @@
OMPC_DEFAULTMAP_MODIFIER_last
};
+/// OpenMP attributes for 'atomic_default_mem_order' clause.
+enum OpenMPAtomicDefaultMemOrderClauseKind {
+#define OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(Name) \
+ OMPC_ATOMIC_DEFAULT_MEM_ORDER_##Name,
+#include "clang/Basic/OpenMPKinds.def"
+ OMPC_ATOMIC_DEFAULT_MEM_ORDER_unknown
+};
+
/// Scheduling data for loop-based OpenMP directives.
struct OpenMPScheduleTy final {
OpenMPScheduleClauseKind Schedule = OMPC_SCHEDULE_unknown;
diff --git a/linux-x64/clang/include/clang/Basic/OperatorKinds.def b/linux-x64/clang/include/clang/Basic/OperatorKinds.def
index d86294b..d464db2 100644
--- a/linux-x64/clang/include/clang/Basic/OperatorKinds.def
+++ b/linux-x64/clang/include/clang/Basic/OperatorKinds.def
@@ -1,9 +1,8 @@
//===--- OperatorKinds.def - C++ Overloaded Operator Database ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/OperatorKinds.h b/linux-x64/clang/include/clang/Basic/OperatorKinds.h
index 3096f83..9757aca 100644
--- a/linux-x64/clang/include/clang/Basic/OperatorKinds.h
+++ b/linux-x64/clang/include/clang/Basic/OperatorKinds.h
@@ -1,9 +1,8 @@
//===--- OperatorKinds.h - C++ Overloaded Operators -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Basic/OperatorPrecedence.h b/linux-x64/clang/include/clang/Basic/OperatorPrecedence.h
index 4389e3b..61ac7ad 100644
--- a/linux-x64/clang/include/clang/Basic/OperatorPrecedence.h
+++ b/linux-x64/clang/include/clang/Basic/OperatorPrecedence.h
@@ -1,9 +1,8 @@
//===--- OperatorPrecedence.h - Operator precedence levels ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Basic/PartialDiagnostic.h b/linux-x64/clang/include/clang/Basic/PartialDiagnostic.h
index 9727af8..799951b 100644
--- a/linux-x64/clang/include/clang/Basic/PartialDiagnostic.h
+++ b/linux-x64/clang/include/clang/Basic/PartialDiagnostic.h
@@ -1,9 +1,8 @@
//===- PartialDiagnostic.h - Diagnostic "closures" --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/PlistSupport.h b/linux-x64/clang/include/clang/Basic/PlistSupport.h
index e41c247..f81b469 100644
--- a/linux-x64/clang/include/clang/Basic/PlistSupport.h
+++ b/linux-x64/clang/include/clang/Basic/PlistSupport.h
@@ -1,9 +1,8 @@
//===- PlistSupport.h - Plist Output Utilities ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Basic/PragmaKinds.h b/linux-x64/clang/include/clang/Basic/PragmaKinds.h
index b373a9e..103b97d 100644
--- a/linux-x64/clang/include/clang/Basic/PragmaKinds.h
+++ b/linux-x64/clang/include/clang/Basic/PragmaKinds.h
@@ -1,9 +1,8 @@
//===--- PragmaKinds.h - #pragma comment() kinds ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Basic/PrettyStackTrace.h b/linux-x64/clang/include/clang/Basic/PrettyStackTrace.h
index e652f52..545a63b 100644
--- a/linux-x64/clang/include/clang/Basic/PrettyStackTrace.h
+++ b/linux-x64/clang/include/clang/Basic/PrettyStackTrace.h
@@ -1,9 +1,8 @@
//===- clang/Basic/PrettyStackTrace.h - Pretty Crash Handling --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Basic/SanitizerBlacklist.h b/linux-x64/clang/include/clang/Basic/SanitizerBlacklist.h
index 1ae5c36..29af28b 100644
--- a/linux-x64/clang/include/clang/Basic/SanitizerBlacklist.h
+++ b/linux-x64/clang/include/clang/Basic/SanitizerBlacklist.h
@@ -1,9 +1,8 @@
//===--- SanitizerBlacklist.h - Blacklist for sanitizers --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/SanitizerSpecialCaseList.h b/linux-x64/clang/include/clang/Basic/SanitizerSpecialCaseList.h
index e325202..fb0db32 100644
--- a/linux-x64/clang/include/clang/Basic/SanitizerSpecialCaseList.h
+++ b/linux-x64/clang/include/clang/Basic/SanitizerSpecialCaseList.h
@@ -1,9 +1,8 @@
//===--- SanitizerSpecialCaseList.h - SCL for sanitizers --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/Sanitizers.def b/linux-x64/clang/include/clang/Basic/Sanitizers.def
index c3fc175..34bd6fc 100644
--- a/linux-x64/clang/include/clang/Basic/Sanitizers.def
+++ b/linux-x64/clang/include/clang/Basic/Sanitizers.def
@@ -1,9 +1,8 @@
//===--- Sanitizers.def - Runtime sanitizer options -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -135,12 +134,32 @@
SANITIZER_GROUP("undefined-trap", UndefinedTrap, Undefined)
// ImplicitConversionSanitizer
-SANITIZER("implicit-integer-truncation", ImplicitIntegerTruncation)
+SANITIZER("implicit-unsigned-integer-truncation",
+ ImplicitUnsignedIntegerTruncation)
+SANITIZER("implicit-signed-integer-truncation", ImplicitSignedIntegerTruncation)
+SANITIZER_GROUP("implicit-integer-truncation", ImplicitIntegerTruncation,
+ ImplicitUnsignedIntegerTruncation |
+ ImplicitSignedIntegerTruncation)
+
+SANITIZER("implicit-integer-sign-change", ImplicitIntegerSignChange)
+
+SANITIZER_GROUP("implicit-integer-arithmetic-value-change",
+ ImplicitIntegerArithmeticValueChange,
+ ImplicitIntegerSignChange | ImplicitSignedIntegerTruncation)
+
+// FIXME:
+//SANITIZER_GROUP("implicit-integer-conversion", ImplicitIntegerConversion,
+// ImplicitIntegerArithmeticValueChange |
+// ImplicitUnsignedIntegerTruncation)
+//SANITIZER_GROUP("implicit-conversion", ImplicitConversion,
+// ImplicitIntegerConversion)
+
SANITIZER_GROUP("implicit-conversion", ImplicitConversion,
- ImplicitIntegerTruncation)
+ ImplicitIntegerArithmeticValueChange |
+ ImplicitUnsignedIntegerTruncation)
SANITIZER_GROUP("integer", Integer,
- ImplicitIntegerTruncation | IntegerDivideByZero | Shift |
+ ImplicitConversion | IntegerDivideByZero | Shift |
SignedIntegerOverflow | UnsignedIntegerOverflow)
SANITIZER("local-bounds", LocalBounds)
diff --git a/linux-x64/clang/include/clang/Basic/Sanitizers.h b/linux-x64/clang/include/clang/Basic/Sanitizers.h
index 2ecbde8..f2cfadb 100644
--- a/linux-x64/clang/include/clang/Basic/Sanitizers.h
+++ b/linux-x64/clang/include/clang/Basic/Sanitizers.h
@@ -1,9 +1,8 @@
//===- Sanitizers.h - C Language Family Language Options --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -66,7 +65,7 @@
/// Disable the sanitizers specified in \p K.
void clear(SanitizerMask K = SanitizerKind::All) { Mask &= ~K; }
- /// Returns true if at least one sanitizer is enabled.
+ /// Returns true if no sanitizers are enabled.
bool empty() const { return Mask == 0; }
/// Bitmask of enabled sanitizers.
diff --git a/linux-x64/clang/include/clang/Basic/SourceLocation.h b/linux-x64/clang/include/clang/Basic/SourceLocation.h
index 014bdc3..ceebdf4 100644
--- a/linux-x64/clang/include/clang/Basic/SourceLocation.h
+++ b/linux-x64/clang/include/clang/Basic/SourceLocation.h
@@ -1,9 +1,8 @@
//===- SourceLocation.h - Compact identifier for Source Files ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -26,7 +25,6 @@
namespace llvm {
template <typename T> struct DenseMapInfo;
-template <typename T> struct isPodLike;
} // namespace llvm
@@ -458,11 +456,6 @@
}
};
- template <>
- struct isPodLike<clang::SourceLocation> { static const bool value = true; };
- template <>
- struct isPodLike<clang::FileID> { static const bool value = true; };
-
// Teach SmallPtrSet how to handle SourceLocation.
template<>
struct PointerLikeTypeTraits<clang::SourceLocation> {
diff --git a/linux-x64/clang/include/clang/Basic/SourceManager.h b/linux-x64/clang/include/clang/Basic/SourceManager.h
index c5a5396..2bdf1d5 100644
--- a/linux-x64/clang/include/clang/Basic/SourceManager.h
+++ b/linux-x64/clang/include/clang/Basic/SourceManager.h
@@ -1,9 +1,8 @@
//===- SourceManager.h - Track and cache source files -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -1024,13 +1023,14 @@
/// Set the number of FileIDs (files and macros) that were created
/// during preprocessing of \p FID, including it.
- void setNumCreatedFIDsForFileID(FileID FID, unsigned NumFIDs) const {
+ void setNumCreatedFIDsForFileID(FileID FID, unsigned NumFIDs,
+ bool Force = false) const {
bool Invalid = false;
const SrcMgr::SLocEntry &Entry = getSLocEntry(FID, &Invalid);
if (Invalid || !Entry.isFile())
return;
- assert(Entry.getFile().NumCreatedFIDs == 0 && "Already set!");
+ assert((Force || Entry.getFile().NumCreatedFIDs == 0) && "Already set!");
const_cast<SrcMgr::FileInfo &>(Entry.getFile()).NumCreatedFIDs = NumFIDs;
}
@@ -1428,6 +1428,24 @@
return getFileID(Loc) == getMainFileID();
}
+ /// Returns whether \p Loc is located in a <built-in> file.
+ bool isWrittenInBuiltinFile(SourceLocation Loc) const {
+ StringRef Filename(getPresumedLoc(Loc).getFilename());
+ return Filename.equals("<built-in>");
+ }
+
+ /// Returns whether \p Loc is located in a <command line> file.
+ bool isWrittenInCommandLineFile(SourceLocation Loc) const {
+ StringRef Filename(getPresumedLoc(Loc).getFilename());
+ return Filename.equals("<command line>");
+ }
+
+ /// Returns whether \p Loc is located in a <scratch space> file.
+ bool isWrittenInScratchSpace(SourceLocation Loc) const {
+ StringRef Filename(getPresumedLoc(Loc).getFilename());
+ return Filename.equals("<scratch space>");
+ }
+
/// Returns if a SourceLocation is in a system header.
bool isInSystemHeader(SourceLocation Loc) const {
return isSystem(getFileCharacteristic(Loc));
@@ -1440,7 +1458,15 @@
/// Returns whether \p Loc is expanded from a macro in a system header.
bool isInSystemMacro(SourceLocation loc) const {
- return loc.isMacroID() && isInSystemHeader(getSpellingLoc(loc));
+ if (!loc.isMacroID())
+ return false;
+
+ // This happens when the macro is the result of a paste, in that case
+ // its spelling is the scratch memory, so we take the parent context.
+ if (isWrittenInScratchSpace(getSpellingLoc(loc)))
+ return isInSystemHeader(getSpellingLoc(getImmediateMacroCallerLoc(loc)));
+
+ return isInSystemHeader(getSpellingLoc(loc));
}
/// The size of the SLocEntry that \p FID represents.
diff --git a/linux-x64/clang/include/clang/Basic/SourceManagerInternals.h b/linux-x64/clang/include/clang/Basic/SourceManagerInternals.h
index ddc58ff..e67b93a 100644
--- a/linux-x64/clang/include/clang/Basic/SourceManagerInternals.h
+++ b/linux-x64/clang/include/clang/Basic/SourceManagerInternals.h
@@ -1,9 +1,8 @@
//===- SourceManagerInternals.h - SourceManager Internals -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/Specifiers.h b/linux-x64/clang/include/clang/Basic/Specifiers.h
index cd8213f..7256aca 100644
--- a/linux-x64/clang/include/clang/Basic/Specifiers.h
+++ b/linux-x64/clang/include/clang/Basic/Specifiers.h
@@ -1,9 +1,8 @@
//===--- Specifiers.h - Declaration and Type Specifiers ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -251,6 +250,7 @@
CC_Swift, // __attribute__((swiftcall))
CC_PreserveMost, // __attribute__((preserve_most))
CC_PreserveAll, // __attribute__((preserve_all))
+ CC_AArch64VectorCall, // __attribute__((aarch64_vector_pcs))
};
/// Checks whether the given calling convention supports variadic
diff --git a/linux-x64/clang/include/clang/Basic/Stack.h b/linux-x64/clang/include/clang/Basic/Stack.h
index 15a37c6..e0b0409 100644
--- a/linux-x64/clang/include/clang/Basic/Stack.h
+++ b/linux-x64/clang/include/clang/Basic/Stack.h
@@ -1,9 +1,8 @@
//===--- Stack.h - Utilities for dealing with stack space -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Basic/SyncScope.h b/linux-x64/clang/include/clang/Basic/SyncScope.h
index db4461e..3ebf40f 100644
--- a/linux-x64/clang/include/clang/Basic/SyncScope.h
+++ b/linux-x64/clang/include/clang/Basic/SyncScope.h
@@ -1,9 +1,8 @@
//===--- SyncScope.h - Atomic synchronization scopes ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Basic/TargetBuiltins.h b/linux-x64/clang/include/clang/Basic/TargetBuiltins.h
index 75a3811..50262fa 100644
--- a/linux-x64/clang/include/clang/Basic/TargetBuiltins.h
+++ b/linux-x64/clang/include/clang/Basic/TargetBuiltins.h
@@ -1,9 +1,8 @@
//===--- TargetBuiltins.h - Target specific builtin IDs ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -150,16 +149,6 @@
};
}
- /// Nios2 builtins
- namespace Nios2 {
- enum {
- LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
-#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
-#include "clang/Basic/BuiltinsNios2.def"
- LastTSBuiltin
- };
- }
-
/// MIPS builtins
namespace Mips {
enum {
diff --git a/linux-x64/clang/include/clang/Basic/TargetCXXABI.h b/linux-x64/clang/include/clang/Basic/TargetCXXABI.h
index 455121a..b1be402 100644
--- a/linux-x64/clang/include/clang/Basic/TargetCXXABI.h
+++ b/linux-x64/clang/include/clang/Basic/TargetCXXABI.h
@@ -1,9 +1,8 @@
//===--- TargetCXXABI.h - C++ ABI Target Configuration ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Basic/TargetInfo.h b/linux-x64/clang/include/clang/Basic/TargetInfo.h
index c3ef561..d41f4c6 100644
--- a/linux-x64/clang/include/clang/Basic/TargetInfo.h
+++ b/linux-x64/clang/include/clang/Basic/TargetInfo.h
@@ -1,9 +1,8 @@
//===--- TargetInfo.h - Expose information about the target -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -49,21 +48,10 @@
namespace Builtin { struct Info; }
-/// Exposes information about the current target.
-///
-class TargetInfo : public RefCountedBase<TargetInfo> {
- std::shared_ptr<TargetOptions> TargetOpts;
- llvm::Triple Triple;
-protected:
- // Target values set by the ctor of the actual target implementation. Default
- // values are specified by the TargetInfo constructor.
- bool BigEndian;
- bool TLSSupported;
- bool VLASupported;
- bool NoAsmVariants; // True if {|} are normal characters.
- bool HasLegalHalfType; // True if the backend supports operations on the half
- // LLVM IR type.
- bool HasFloat128;
+/// Fields controlling how types are laid out in memory; these may need to
+/// be copied for targets like AMDGPU that base their ABIs on an auxiliary
+/// CPU target.
+struct TransferrableTargetInfo {
unsigned char PointerWidth, PointerAlign;
unsigned char BoolWidth, BoolAlign;
unsigned char IntWidth, IntAlign;
@@ -104,15 +92,92 @@
unsigned char SuitableAlign;
unsigned char DefaultAlignForAttributeAligned;
unsigned char MinGlobalAlign;
- unsigned char MaxAtomicPromoteWidth, MaxAtomicInlineWidth;
+
+ unsigned short NewAlign;
unsigned short MaxVectorAlign;
unsigned short MaxTLSAlign;
- unsigned short SimdDefaultAlign;
- unsigned short NewAlign;
- std::unique_ptr<llvm::DataLayout> DataLayout;
- const char *MCountName;
+
const llvm::fltSemantics *HalfFormat, *FloatFormat, *DoubleFormat,
*LongDoubleFormat, *Float128Format;
+
+ ///===---- Target Data Type Query Methods -------------------------------===//
+ enum IntType {
+ NoInt = 0,
+ SignedChar,
+ UnsignedChar,
+ SignedShort,
+ UnsignedShort,
+ SignedInt,
+ UnsignedInt,
+ SignedLong,
+ UnsignedLong,
+ SignedLongLong,
+ UnsignedLongLong
+ };
+
+ enum RealType {
+ NoFloat = 255,
+ Float = 0,
+ Double,
+ LongDouble,
+ Float128
+ };
+protected:
+ IntType SizeType, IntMaxType, PtrDiffType, IntPtrType, WCharType,
+ WIntType, Char16Type, Char32Type, Int64Type, SigAtomicType,
+ ProcessIDType;
+
+ /// Whether Objective-C's built-in boolean type should be signed char.
+ ///
+ /// Otherwise, when this flag is not set, the normal built-in boolean type is
+ /// used.
+ unsigned UseSignedCharForObjCBool : 1;
+
+ /// Control whether the alignment of bit-field types is respected when laying
+ /// out structures. If true, then the alignment of the bit-field type will be
+ /// used to (a) impact the alignment of the containing structure, and (b)
+ /// ensure that the individual bit-field will not straddle an alignment
+ /// boundary.
+ unsigned UseBitFieldTypeAlignment : 1;
+
+ /// Whether zero length bitfields (e.g., int : 0;) force alignment of
+ /// the next bitfield.
+ ///
+ /// If the alignment of the zero length bitfield is greater than the member
+ /// that follows it, `bar', `bar' will be aligned as the type of the
+ /// zero-length bitfield.
+ unsigned UseZeroLengthBitfieldAlignment : 1;
+
+ /// Whether explicit bit field alignment attributes are honored.
+ unsigned UseExplicitBitFieldAlignment : 1;
+
+ /// If non-zero, specifies a fixed alignment value for bitfields that follow
+ /// zero length bitfield, regardless of the zero length bitfield type.
+ unsigned ZeroLengthBitfieldBoundary;
+};
+
+/// Exposes information about the current target.
+///
+class TargetInfo : public virtual TransferrableTargetInfo,
+ public RefCountedBase<TargetInfo> {
+ std::shared_ptr<TargetOptions> TargetOpts;
+ llvm::Triple Triple;
+protected:
+ // Target values set by the ctor of the actual target implementation. Default
+ // values are specified by the TargetInfo constructor.
+ bool BigEndian;
+ bool TLSSupported;
+ bool VLASupported;
+ bool NoAsmVariants; // True if {|} are normal characters.
+ bool HasLegalHalfType; // True if the backend supports operations on the half
+ // LLVM IR type.
+ bool HasFloat128;
+ bool HasFloat16;
+
+ unsigned char MaxAtomicPromoteWidth, MaxAtomicInlineWidth;
+ unsigned short SimdDefaultAlign;
+ std::unique_ptr<llvm::DataLayout> DataLayout;
+ const char *MCountName;
unsigned char RegParmMax, SSERegParmMax;
TargetCXXABI TheCXXABI;
const LangASMap *AddrSpaceMap;
@@ -153,29 +218,6 @@
return *TargetOpts;
}
- ///===---- Target Data Type Query Methods -------------------------------===//
- enum IntType {
- NoInt = 0,
- SignedChar,
- UnsignedChar,
- SignedShort,
- UnsignedShort,
- SignedInt,
- UnsignedInt,
- SignedLong,
- UnsignedLong,
- SignedLongLong,
- UnsignedLongLong
- };
-
- enum RealType {
- NoFloat = 255,
- Float = 0,
- Double,
- LongDouble,
- Float128
- };
-
/// The different kinds of __builtin_va_list types defined by
/// the target implementation.
enum BuiltinVaListKind {
@@ -218,38 +260,6 @@
};
protected:
- IntType SizeType, IntMaxType, PtrDiffType, IntPtrType, WCharType,
- WIntType, Char16Type, Char32Type, Int64Type, SigAtomicType,
- ProcessIDType;
-
- /// Whether Objective-C's built-in boolean type should be signed char.
- ///
- /// Otherwise, when this flag is not set, the normal built-in boolean type is
- /// used.
- unsigned UseSignedCharForObjCBool : 1;
-
- /// Control whether the alignment of bit-field types is respected when laying
- /// out structures. If true, then the alignment of the bit-field type will be
- /// used to (a) impact the alignment of the containing structure, and (b)
- /// ensure that the individual bit-field will not straddle an alignment
- /// boundary.
- unsigned UseBitFieldTypeAlignment : 1;
-
- /// Whether zero length bitfields (e.g., int : 0;) force alignment of
- /// the next bitfield.
- ///
- /// If the alignment of the zero length bitfield is greater than the member
- /// that follows it, `bar', `bar' will be aligned as the type of the
- /// zero-length bitfield.
- unsigned UseZeroLengthBitfieldAlignment : 1;
-
- /// Whether explicit bit field alignment attributes are honored.
- unsigned UseExplicitBitFieldAlignment : 1;
-
- /// If non-zero, specifies a fixed alignment value for bitfields that follow
- /// zero length bitfield, regardless of the zero length bitfield type.
- unsigned ZeroLengthBitfieldBoundary;
-
/// Specify if mangling based on address space map should be used or
/// not for language specific address spaces
bool UseAddrSpaceMapMangling;
@@ -517,6 +527,9 @@
/// Determine whether the __float128 type is supported on this target.
virtual bool hasFloat128Type() const { return HasFloat128; }
+ /// Determine whether the _Float16 type is supported on this target.
+ virtual bool hasFloat16Type() const { return HasFloat16; }
+
/// Return the alignment that is suitable for storing any
/// object with a fundamental alignment requirement.
unsigned getSuitableAlign() const { return SuitableAlign; }
@@ -803,6 +816,7 @@
struct {
int Min;
int Max;
+ bool isConstrained;
} ImmRange;
llvm::SmallSet<int, 4> ImmSet;
@@ -813,6 +827,7 @@
: Flags(0), TiedOperand(-1), ConstraintStr(ConstraintStr.str()),
Name(Name.str()) {
ImmRange.Min = ImmRange.Max = 0;
+ ImmRange.isConstrained = false;
}
const std::string &getConstraintStr() const { return ConstraintStr; }
@@ -841,8 +856,9 @@
return (Flags & CI_ImmediateConstant) != 0;
}
bool isValidAsmImmediate(const llvm::APInt &Value) const {
- return (Value.sge(ImmRange.Min) && Value.sle(ImmRange.Max)) ||
- ImmSet.count(Value.getZExtValue()) != 0;
+ if (!ImmSet.empty())
+ return ImmSet.count(Value.getZExtValue()) != 0;
+ return !ImmRange.isConstrained || (Value.sge(ImmRange.Min) && Value.sle(ImmRange.Max));
}
void setIsReadWrite() { Flags |= CI_ReadWrite; }
@@ -854,6 +870,7 @@
Flags |= CI_ImmediateConstant;
ImmRange.Min = Min;
ImmRange.Max = Max;
+ ImmRange.isConstrained = true;
}
void setRequiresImmediate(llvm::ArrayRef<int> Exacts) {
Flags |= CI_ImmediateConstant;
@@ -866,8 +883,6 @@
}
void setRequiresImmediate() {
Flags |= CI_ImmediateConstant;
- ImmRange.Min = INT_MIN;
- ImmRange.Max = INT_MAX;
}
/// Indicate that this is an input operand that is tied to
@@ -1082,9 +1097,15 @@
return false;
}
- /// Identify whether this taret supports multiversioning of functions,
+ /// Identify whether this target supports multiversioning of functions,
/// which requires support for cpu_supports and cpu_is functionality.
- virtual bool supportsMultiVersioning() const { return false; }
+ bool supportsMultiVersioning() const {
+ return getTriple().getArch() == llvm::Triple::x86 ||
+ getTriple().getArch() == llvm::Triple::x86_64;
+ }
+
+ /// Identify whether this target supports IFuncs.
+ bool supportsIFunc() const { return getTriple().isOSBinFormatELF(); }
// Validate the contents of the __builtin_cpu_supports(const char*)
// argument.
@@ -1315,12 +1336,22 @@
return None;
}
+ /// \returns The version of the SDK which was used during the compilation if
+ /// one was specified, or an empty version otherwise.
+ const llvm::VersionTuple &getSDKVersion() const {
+ return getTargetOpts().SDKVersion;
+ }
+
/// Check the target is valid after it is fully initialized.
virtual bool validateTarget(DiagnosticsEngine &Diags) const {
return true;
}
+ virtual void setAuxTarget(const TargetInfo *Aux) {}
+
protected:
+ /// Copy type and layout related info.
+ void copyAuxTarget(const TargetInfo *Aux);
virtual uint64_t getPointerWidthV(unsigned AddrSpace) const {
return PointerWidth;
}
diff --git a/linux-x64/clang/include/clang/Basic/TargetOptions.h b/linux-x64/clang/include/clang/Basic/TargetOptions.h
index 7559e31..bbe86ae 100644
--- a/linux-x64/clang/include/clang/Basic/TargetOptions.h
+++ b/linux-x64/clang/include/clang/Basic/TargetOptions.h
@@ -1,9 +1,8 @@
//===--- TargetOptions.h ----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -15,10 +14,11 @@
#ifndef LLVM_CLANG_BASIC_TARGETOPTIONS_H
#define LLVM_CLANG_BASIC_TARGETOPTIONS_H
+#include "clang/Basic/OpenCLOptions.h"
+#include "llvm/Support/VersionTuple.h"
+#include "llvm/Target/TargetOptions.h"
#include <string>
#include <vector>
-#include "clang/Basic/OpenCLOptions.h"
-#include "llvm/Target/TargetOptions.h"
namespace clang {
@@ -73,6 +73,14 @@
// "default" for the case when the user has not explicitly specified a
// code model.
std::string CodeModel;
+
+ /// The version of the SDK which was used during the compilation.
+ /// The option is used for two different purposes:
+ /// * on darwin the version is propagated to LLVM where it's used
+ /// to support SDK Version metadata (See D55673).
+ /// * CUDA compilation uses it to control parts of CUDA compilation
+ /// in clang that depend on specific version of the CUDA SDK.
+ llvm::VersionTuple SDKVersion;
};
} // end namespace clang
diff --git a/linux-x64/clang/include/clang/Basic/TemplateKinds.h b/linux-x64/clang/include/clang/Basic/TemplateKinds.h
index a0bc362..cfed09f 100644
--- a/linux-x64/clang/include/clang/Basic/TemplateKinds.h
+++ b/linux-x64/clang/include/clang/Basic/TemplateKinds.h
@@ -1,9 +1,8 @@
//===--- TemplateKinds.h - Enum values for C++ Template Kinds ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Basic/TokenKinds.def b/linux-x64/clang/include/clang/Basic/TokenKinds.def
index caea67a..2a41d10 100644
--- a/linux-x64/clang/include/clang/Basic/TokenKinds.def
+++ b/linux-x64/clang/include/clang/Basic/TokenKinds.def
@@ -1,9 +1,8 @@
//===--- TokenKinds.def - C Family Token Kind Database ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -57,11 +56,8 @@
#ifndef CXX_KEYWORD_OPERATOR
#define CXX_KEYWORD_OPERATOR(X,Y)
#endif
-#ifndef OBJC1_AT_KEYWORD
-#define OBJC1_AT_KEYWORD(X)
-#endif
-#ifndef OBJC2_AT_KEYWORD
-#define OBJC2_AT_KEYWORD(X)
+#ifndef OBJC_AT_KEYWORD
+#define OBJC_AT_KEYWORD(X)
#endif
#ifndef TESTING_KEYWORD
#define TESTING_KEYWORD(X, L) KEYWORD(X, L)
@@ -579,15 +575,15 @@
KEYWORD(half , HALFSUPPORT)
// Objective-C ARC keywords.
-KEYWORD(__bridge , KEYARC)
-KEYWORD(__bridge_transfer , KEYARC)
-KEYWORD(__bridge_retained , KEYARC)
-KEYWORD(__bridge_retain , KEYARC)
+KEYWORD(__bridge , KEYOBJC)
+KEYWORD(__bridge_transfer , KEYOBJC)
+KEYWORD(__bridge_retained , KEYOBJC)
+KEYWORD(__bridge_retain , KEYOBJC)
// Objective-C keywords.
-KEYWORD(__covariant , KEYOBJC2)
-KEYWORD(__contravariant , KEYOBJC2)
-KEYWORD(__kindof , KEYOBJC2)
+KEYWORD(__covariant , KEYOBJC)
+KEYWORD(__contravariant , KEYOBJC)
+KEYWORD(__kindof , KEYOBJC)
// Alternate spelling for various tokens. There are GCC extensions in all
// languages, but should not be disabled in strict conformance mode.
@@ -677,34 +673,34 @@
// These have meaning after an '@' in Objective-C mode. These define enums in
// the tok::objc_* namespace.
-OBJC1_AT_KEYWORD(not_keyword)
-OBJC1_AT_KEYWORD(class)
-OBJC1_AT_KEYWORD(compatibility_alias)
-OBJC1_AT_KEYWORD(defs)
-OBJC1_AT_KEYWORD(encode)
-OBJC1_AT_KEYWORD(end)
-OBJC1_AT_KEYWORD(implementation)
-OBJC1_AT_KEYWORD(interface)
-OBJC1_AT_KEYWORD(private)
-OBJC1_AT_KEYWORD(protected)
-OBJC1_AT_KEYWORD(protocol)
-OBJC1_AT_KEYWORD(public)
-OBJC1_AT_KEYWORD(selector)
-OBJC1_AT_KEYWORD(throw)
-OBJC1_AT_KEYWORD(try)
-OBJC1_AT_KEYWORD(catch)
-OBJC1_AT_KEYWORD(finally)
-OBJC1_AT_KEYWORD(synchronized)
-OBJC1_AT_KEYWORD(autoreleasepool)
+OBJC_AT_KEYWORD(not_keyword)
+OBJC_AT_KEYWORD(class)
+OBJC_AT_KEYWORD(compatibility_alias)
+OBJC_AT_KEYWORD(defs)
+OBJC_AT_KEYWORD(encode)
+OBJC_AT_KEYWORD(end)
+OBJC_AT_KEYWORD(implementation)
+OBJC_AT_KEYWORD(interface)
+OBJC_AT_KEYWORD(private)
+OBJC_AT_KEYWORD(protected)
+OBJC_AT_KEYWORD(protocol)
+OBJC_AT_KEYWORD(public)
+OBJC_AT_KEYWORD(selector)
+OBJC_AT_KEYWORD(throw)
+OBJC_AT_KEYWORD(try)
+OBJC_AT_KEYWORD(catch)
+OBJC_AT_KEYWORD(finally)
+OBJC_AT_KEYWORD(synchronized)
+OBJC_AT_KEYWORD(autoreleasepool)
-OBJC2_AT_KEYWORD(property)
-OBJC2_AT_KEYWORD(package)
-OBJC2_AT_KEYWORD(required)
-OBJC2_AT_KEYWORD(optional)
-OBJC2_AT_KEYWORD(synthesize)
-OBJC2_AT_KEYWORD(dynamic)
-OBJC2_AT_KEYWORD(import)
-OBJC2_AT_KEYWORD(available)
+OBJC_AT_KEYWORD(property)
+OBJC_AT_KEYWORD(package)
+OBJC_AT_KEYWORD(required)
+OBJC_AT_KEYWORD(optional)
+OBJC_AT_KEYWORD(synthesize)
+OBJC_AT_KEYWORD(dynamic)
+OBJC_AT_KEYWORD(import)
+OBJC_AT_KEYWORD(available)
// TODO: What to do about context-sensitive keywords like:
// bycopy/byref/in/inout/oneway/out?
@@ -828,8 +824,7 @@
#undef ANNOTATION
#undef TESTING_KEYWORD
-#undef OBJC2_AT_KEYWORD
-#undef OBJC1_AT_KEYWORD
+#undef OBJC_AT_KEYWORD
#undef CXX_KEYWORD_OPERATOR
#undef PPKEYWORD
#undef ALIAS
diff --git a/linux-x64/clang/include/clang/Basic/TokenKinds.h b/linux-x64/clang/include/clang/Basic/TokenKinds.h
index fb4b525..264a8e2 100644
--- a/linux-x64/clang/include/clang/Basic/TokenKinds.h
+++ b/linux-x64/clang/include/clang/Basic/TokenKinds.h
@@ -1,9 +1,8 @@
//===--- TokenKinds.h - Enum values for C Token Kinds -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -39,8 +38,7 @@
/// Provides a namespace for Objective-C keywords which start with
/// an '@'.
enum ObjCKeywordKind {
-#define OBJC1_AT_KEYWORD(X) objc_##X,
-#define OBJC2_AT_KEYWORD(X) objc_##X,
+#define OBJC_AT_KEYWORD(X) objc_##X,
#include "clang/Basic/TokenKinds.def"
NUM_OBJC_KEYWORDS
};
diff --git a/linux-x64/clang/include/clang/Basic/TypeTraits.h b/linux-x64/clang/include/clang/Basic/TypeTraits.h
index bdb4268..7c1b571 100644
--- a/linux-x64/clang/include/clang/Basic/TypeTraits.h
+++ b/linux-x64/clang/include/clang/Basic/TypeTraits.h
@@ -1,9 +1,8 @@
//===--- TypeTraits.h - C++ Type Traits Support Enumerations ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -96,9 +95,15 @@
/// Names for the "expression or type" traits.
enum UnaryExprOrTypeTrait {
UETT_SizeOf,
+ /// Used for C's _Alignof and C++'s alignof.
+ /// _Alignof and alignof return the required ABI alignment.
UETT_AlignOf,
UETT_VecStep,
UETT_OpenMPRequiredSimdAlign,
+ /// Used for GCC's __alignof.
+ /// __alignof returns the preferred alignment of a type, the alignment
+ /// clang will attempt to give an object of the type if allowed by ABI.
+ UETT_PreferredAlignOf,
};
}
diff --git a/linux-x64/clang/include/clang/Basic/Version.h b/linux-x64/clang/include/clang/Basic/Version.h
index 6d625c6..2881d8d 100644
--- a/linux-x64/clang/include/clang/Basic/Version.h
+++ b/linux-x64/clang/include/clang/Basic/Version.h
@@ -1,9 +1,8 @@
//===- Version.h - Clang Version Number -------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Basic/Version.inc b/linux-x64/clang/include/clang/Basic/Version.inc
index ebe27c5..6bcda8f 100644
--- a/linux-x64/clang/include/clang/Basic/Version.inc
+++ b/linux-x64/clang/include/clang/Basic/Version.inc
@@ -1,5 +1,5 @@
-#define CLANG_VERSION 8.0.4
-#define CLANG_VERSION_STRING "8.0.4"
-#define CLANG_VERSION_MAJOR 8
+#define CLANG_VERSION 9.0.3
+#define CLANG_VERSION_STRING "9.0.3"
+#define CLANG_VERSION_MAJOR 9
#define CLANG_VERSION_MINOR 0
-#define CLANG_VERSION_PATCHLEVEL 4
+#define CLANG_VERSION_PATCHLEVEL 3
diff --git a/linux-x64/clang/include/clang/Basic/Visibility.h b/linux-x64/clang/include/clang/Basic/Visibility.h
index c5ab624..57d9754 100644
--- a/linux-x64/clang/include/clang/Basic/Visibility.h
+++ b/linux-x64/clang/include/clang/Basic/Visibility.h
@@ -1,9 +1,8 @@
//===--- Visibility.h - Visibility enumeration and utilities ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Basic/X86Target.def b/linux-x64/clang/include/clang/Basic/X86Target.def
index d2d2540..c6719ff 100644
--- a/linux-x64/clang/include/clang/Basic/X86Target.def
+++ b/linux-x64/clang/include/clang/Basic/X86Target.def
@@ -1,9 +1,8 @@
//===--- X86Target.def - X86 Feature/Processor Database ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -154,6 +153,10 @@
PROC_WITH_FEAT(SkylakeServer, "skylake-avx512", PROC_64_BIT, FEATURE_AVX512F)
PROC_ALIAS(SkylakeServer, "skx")
+/// \name Cascadelake Server
+/// Cascadelake Server microarchitecture based processors.
+PROC_WITH_FEAT(Cascadelake, "cascadelake", PROC_64_BIT, FEATURE_AVX512VNNI)
+
/// \name Cannonlake Client
/// Cannonlake client microarchitecture based processors.
PROC_WITH_FEAT(Cannonlake, "cannonlake", PROC_64_BIT, FEATURE_AVX512VBMI)
@@ -283,6 +286,11 @@
FEATURE(FEATURE_AVX5124VNNIW)
FEATURE(FEATURE_AVX5124FMAPS)
FEATURE(FEATURE_AVX512VPOPCNTDQ)
+FEATURE(FEATURE_AVX512VBMI2)
+FEATURE(FEATURE_GFNI)
+FEATURE(FEATURE_VPCLMULQDQ)
+FEATURE(FEATURE_AVX512VNNI)
+FEATURE(FEATURE_AVX512BITALG)
// FIXME: When commented out features are supported in LLVM, enable them here.
@@ -292,7 +300,7 @@
CPU_SPECIFIC("pentium_mmx", 'D', "+mmx")
CPU_SPECIFIC("pentium_ii", 'E', "+cmov,+mmx")
CPU_SPECIFIC("pentium_iii", 'H', "+cmov,+mmx,+sse")
-CPU_SPECIFIC("pentium_iii_no_xmm_regs", 'H',"+cmov,+sse")
+CPU_SPECIFIC_ALIAS("pentium_iii_no_xmm_regs", "pentium_iii")
CPU_SPECIFIC("pentium_4", 'J', "+cmov,+mmx,+sse,+sse2")
CPU_SPECIFIC("pentium_m", 'K', "+cmov,+mmx,+sse,+sse2")
CPU_SPECIFIC("pentium_4_sse3", 'L', "+cmov,+mmx,+sse,+sse2,+sse3")
diff --git a/linux-x64/clang/include/clang/Basic/XRayInstr.h b/linux-x64/clang/include/clang/Basic/XRayInstr.h
index 6efefcb..48e8884 100644
--- a/linux-x64/clang/include/clang/Basic/XRayInstr.h
+++ b/linux-x64/clang/include/clang/Basic/XRayInstr.h
@@ -1,9 +1,8 @@
//===--- XRayInstr.h --------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/XRayLists.h b/linux-x64/clang/include/clang/Basic/XRayLists.h
index 244b1d5..cf464f9 100644
--- a/linux-x64/clang/include/clang/Basic/XRayLists.h
+++ b/linux-x64/clang/include/clang/Basic/XRayLists.h
@@ -1,9 +1,8 @@
//===--- XRayLists.h - XRay automatic attribution ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Basic/arm_neon.inc b/linux-x64/clang/include/clang/Basic/arm_neon.inc
index a482e63..d62c1c6 100644
--- a/linux-x64/clang/include/clang/Basic/arm_neon.inc
+++ b/linux-x64/clang/include/clang/Basic/arm_neon.inc
@@ -264,6 +264,14 @@
BUILTIN(__builtin_neon_vfmaq_v, "V16ScV16ScV16ScV16Sci", "n")
BUILTIN(__builtin_neon_vfmas_lane_f32, "fffV2fIi", "n")
BUILTIN(__builtin_neon_vfmas_laneq_f32, "fffV4fIi", "n")
+BUILTIN(__builtin_neon_vfmlal_high_v, "V2fV2fV8ScV8Sci", "n")
+BUILTIN(__builtin_neon_vfmlal_low_v, "V2fV2fV8ScV8Sci", "n")
+BUILTIN(__builtin_neon_vfmlalq_high_v, "V4fV4fV16ScV16Sci", "n")
+BUILTIN(__builtin_neon_vfmlalq_low_v, "V4fV4fV16ScV16Sci", "n")
+BUILTIN(__builtin_neon_vfmlsl_high_v, "V2fV2fV8ScV8Sci", "n")
+BUILTIN(__builtin_neon_vfmlsl_low_v, "V2fV2fV8ScV8Sci", "n")
+BUILTIN(__builtin_neon_vfmlslq_high_v, "V4fV4fV16ScV16Sci", "n")
+BUILTIN(__builtin_neon_vfmlslq_low_v, "V4fV4fV16ScV16Sci", "n")
BUILTIN(__builtin_neon_vget_lane_f32, "fV2fIi", "n")
BUILTIN(__builtin_neon_vget_lane_f64, "dV1dIi", "n")
BUILTIN(__builtin_neon_vget_lane_i16, "UsV4sIi", "n")
@@ -842,6 +850,14 @@
case NEON::BI__builtin_neon_vfmaq_lane_v: mask = 0x70000000000ULL; break;
case NEON::BI__builtin_neon_vfmaq_laneq_v: mask = 0x70000000000ULL; break;
case NEON::BI__builtin_neon_vfmaq_v: mask = 0x70000000000ULL; break;
+case NEON::BI__builtin_neon_vfmlal_high_v: mask = 0x200ULL; break;
+case NEON::BI__builtin_neon_vfmlal_low_v: mask = 0x200ULL; break;
+case NEON::BI__builtin_neon_vfmlalq_high_v: mask = 0x20000000000ULL; break;
+case NEON::BI__builtin_neon_vfmlalq_low_v: mask = 0x20000000000ULL; break;
+case NEON::BI__builtin_neon_vfmlsl_high_v: mask = 0x200ULL; break;
+case NEON::BI__builtin_neon_vfmlsl_low_v: mask = 0x200ULL; break;
+case NEON::BI__builtin_neon_vfmlslq_high_v: mask = 0x20000000000ULL; break;
+case NEON::BI__builtin_neon_vfmlslq_low_v: mask = 0x20000000000ULL; break;
case NEON::BI__builtin_neon_vhadd_v: mask = 0x70007ULL; break;
case NEON::BI__builtin_neon_vhaddq_v: mask = 0x7000700000000ULL; break;
case NEON::BI__builtin_neon_vhsub_v: mask = 0x70007ULL; break;
diff --git a/linux-x64/clang/include/clang/CodeGen/BackendUtil.h b/linux-x64/clang/include/clang/CodeGen/BackendUtil.h
index 3d1221a..01b1f5b 100644
--- a/linux-x64/clang/include/clang/CodeGen/BackendUtil.h
+++ b/linux-x64/clang/include/clang/CodeGen/BackendUtil.h
@@ -1,9 +1,8 @@
//===--- BackendUtil.h - LLVM Backend Utilities -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/CodeGen/CGFunctionInfo.h b/linux-x64/clang/include/clang/CodeGen/CGFunctionInfo.h
index 58d1f0d..52157f0 100644
--- a/linux-x64/clang/include/clang/CodeGen/CGFunctionInfo.h
+++ b/linux-x64/clang/include/clang/CodeGen/CGFunctionInfo.h
@@ -1,9 +1,8 @@
//==-- CGFunctionInfo.h - Representation of function argument/return types -==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -441,31 +440,30 @@
///
/// If FD is not null, this will consider pass_object_size params in FD.
static RequiredArgs forPrototypePlus(const FunctionProtoType *prototype,
- unsigned additional,
- const FunctionDecl *FD) {
+ unsigned additional) {
if (!prototype->isVariadic()) return All;
- if (FD)
- additional +=
- llvm::count_if(FD->parameters(), [](const ParmVarDecl *PVD) {
- return PVD->hasAttr<PassObjectSizeAttr>();
+
+ if (prototype->hasExtParameterInfos())
+ additional += llvm::count_if(
+ prototype->getExtParameterInfos(),
+ [](const FunctionProtoType::ExtParameterInfo &ExtInfo) {
+ return ExtInfo.hasPassObjectSize();
});
+
return RequiredArgs(prototype->getNumParams() + additional);
}
- static RequiredArgs forPrototype(const FunctionProtoType *prototype,
- const FunctionDecl *FD) {
- return forPrototypePlus(prototype, 0, FD);
- }
-
- static RequiredArgs forPrototype(CanQual<FunctionProtoType> prototype,
- const FunctionDecl *FD) {
- return forPrototype(prototype.getTypePtr(), FD);
- }
-
static RequiredArgs forPrototypePlus(CanQual<FunctionProtoType> prototype,
- unsigned additional,
- const FunctionDecl *FD) {
- return forPrototypePlus(prototype.getTypePtr(), additional, FD);
+ unsigned additional) {
+ return forPrototypePlus(prototype.getTypePtr(), additional);
+ }
+
+ static RequiredArgs forPrototype(const FunctionProtoType *prototype) {
+ return forPrototypePlus(prototype, 0);
+ }
+
+ static RequiredArgs forPrototype(CanQual<FunctionProtoType> prototype) {
+ return forPrototypePlus(prototype.getTypePtr(), 0);
}
bool allowsOptionalArgs() const { return NumRequired != ~0U; }
diff --git a/linux-x64/clang/include/clang/CodeGen/CodeGenABITypes.h b/linux-x64/clang/include/clang/CodeGen/CodeGenABITypes.h
index 53619fa..febb25a 100644
--- a/linux-x64/clang/include/clang/CodeGen/CodeGenABITypes.h
+++ b/linux-x64/clang/include/clang/CodeGen/CodeGenABITypes.h
@@ -1,9 +1,8 @@
//==---- CodeGenABITypes.h - Convert Clang types to LLVM types for ABI -----==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -55,8 +54,7 @@
QualType receiverType);
const CGFunctionInfo &arrangeFreeFunctionType(CodeGenModule &CGM,
- CanQual<FunctionProtoType> Ty,
- const FunctionDecl *FD);
+ CanQual<FunctionProtoType> Ty);
const CGFunctionInfo &arrangeFreeFunctionType(CodeGenModule &CGM,
CanQual<FunctionNoProtoType> Ty);
diff --git a/linux-x64/clang/include/clang/CodeGen/CodeGenAction.h b/linux-x64/clang/include/clang/CodeGen/CodeGenAction.h
index 5a18a9d..1db904e 100644
--- a/linux-x64/clang/include/clang/CodeGen/CodeGenAction.h
+++ b/linux-x64/clang/include/clang/CodeGen/CodeGenAction.h
@@ -1,9 +1,8 @@
//===--- CodeGenAction.h - LLVM Code Generation Frontend Action -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/CodeGen/ConstantInitBuilder.h b/linux-x64/clang/include/clang/CodeGen/ConstantInitBuilder.h
index f2e78ad..fd07e91 100644
--- a/linux-x64/clang/include/clang/CodeGen/ConstantInitBuilder.h
+++ b/linux-x64/clang/include/clang/CodeGen/ConstantInitBuilder.h
@@ -1,9 +1,8 @@
//===- ConstantInitBuilder.h - Builder for LLVM IR constants ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/CodeGen/ConstantInitFuture.h b/linux-x64/clang/include/clang/CodeGen/ConstantInitFuture.h
index f1a7e22..b08f528 100644
--- a/linux-x64/clang/include/clang/CodeGen/ConstantInitFuture.h
+++ b/linux-x64/clang/include/clang/CodeGen/ConstantInitFuture.h
@@ -1,9 +1,8 @@
//===- ConstantInitFuture.h - "Future" constant initializers ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/CodeGen/ModuleBuilder.h b/linux-x64/clang/include/clang/CodeGen/ModuleBuilder.h
index e110f6f..f9d056e 100644
--- a/linux-x64/clang/include/clang/CodeGen/ModuleBuilder.h
+++ b/linux-x64/clang/include/clang/CodeGen/ModuleBuilder.h
@@ -1,9 +1,8 @@
//===--- CodeGen/ModuleBuilder.h - Build LLVM from ASTs ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/CodeGen/ObjectFilePCHContainerOperations.h b/linux-x64/clang/include/clang/CodeGen/ObjectFilePCHContainerOperations.h
index 67be671..8821cd7 100644
--- a/linux-x64/clang/include/clang/CodeGen/ObjectFilePCHContainerOperations.h
+++ b/linux-x64/clang/include/clang/CodeGen/ObjectFilePCHContainerOperations.h
@@ -1,9 +1,8 @@
//===-- CodeGen/ObjectFilePCHContainerOperations.h - ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/CodeGen/SwiftCallingConv.h b/linux-x64/clang/include/clang/CodeGen/SwiftCallingConv.h
index 45b3145..2c5e9a6 100644
--- a/linux-x64/clang/include/clang/CodeGen/SwiftCallingConv.h
+++ b/linux-x64/clang/include/clang/CodeGen/SwiftCallingConv.h
@@ -1,9 +1,8 @@
//==-- SwiftCallingConv.h - Swift ABI lowering ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -114,6 +113,9 @@
void addLegalTypedData(llvm::Type *type, CharUnits begin, CharUnits end);
void addEntry(llvm::Type *type, CharUnits begin, CharUnits end);
void splitVectorEntry(unsigned index);
+ static bool shouldMergeEntries(const StorageEntry &first,
+ const StorageEntry &second,
+ CharUnits chunkSize);
};
/// Should an aggregate which expands to the given type sequence
diff --git a/linux-x64/clang/include/clang/Config/config.h b/linux-x64/clang/include/clang/Config/config.h
index e2e45ce..cff84b2 100644
--- a/linux-x64/clang/include/clang/Config/config.h
+++ b/linux-x64/clang/include/clang/Config/config.h
@@ -6,7 +6,7 @@
#define CLANG_CONFIG_H
/* Bug report URL. */
-#define BUG_REPORT_URL "https://bugs.llvm.org/"
+#define BUG_REPORT_URL "https://github.com/android-ndk/ndk/issues"
/* Default linker to use. */
#define CLANG_DEFAULT_LINKER ""
@@ -61,7 +61,7 @@
#define CLANG_HAVE_RLIMITS 1
/* The LLVM product name and version */
-#define BACKEND_PACKAGE_STRING "LLVM 8.0.4svn"
+#define BACKEND_PACKAGE_STRING "LLVM 9.0.3svn"
/* Linker version detected at compile time. */
/* #undef HOST_LINK_VERSION */
diff --git a/linux-x64/clang/include/clang/CrossTU/CrossTUDiagnostic.h b/linux-x64/clang/include/clang/CrossTU/CrossTUDiagnostic.h
index dad3830..95a648a 100644
--- a/linux-x64/clang/include/clang/CrossTU/CrossTUDiagnostic.h
+++ b/linux-x64/clang/include/clang/CrossTU/CrossTUDiagnostic.h
@@ -1,29 +1,14 @@
//===--- CrossTUDiagnostic.h - Diagnostics for Cross TU ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_CROSSTU_CROSSTUDIAGNOSTIC_H
#define LLVM_CLANG_CROSSTU_CROSSTUDIAGNOSTIC_H
-#include "clang/Basic/Diagnostic.h"
+#include "clang/Basic/DiagnosticCrossTU.h"
-namespace clang {
-namespace diag {
-enum {
-#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \
- SHOWINSYSHEADER, CATEGORY) \
- ENUM,
-#define CROSSTUSTART
-#include "clang/Basic/DiagnosticCrossTUKinds.inc"
-#undef DIAG
- NUM_BUILTIN_CROSSTU_DIAGNOSTICS
-};
-} // end namespace diag
-} // end namespace clang
-
-#endif // LLVM_CLANG_FRONTEND_FRONTENDDIAGNOSTIC_H
+#endif // LLVM_CLANG_CROSSTU_CROSSTUDIAGNOSTIC_H
diff --git a/linux-x64/clang/include/clang/CrossTU/CrossTranslationUnit.h b/linux-x64/clang/include/clang/CrossTU/CrossTranslationUnit.h
index 041f1a8..507cf28 100644
--- a/linux-x64/clang/include/clang/CrossTU/CrossTranslationUnit.h
+++ b/linux-x64/clang/include/clang/CrossTU/CrossTranslationUnit.h
@@ -1,9 +1,8 @@
//===--- CrossTranslationUnit.h - -------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -15,6 +14,7 @@
#ifndef LLVM_CLANG_CROSSTU_CROSSTRANSLATIONUNIT_H
#define LLVM_CLANG_CROSSTU_CROSSTRANSLATIONUNIT_H
+#include "clang/AST/ASTImporterLookupTable.h"
#include "clang/Basic/LLVM.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallPtrSet.h"
@@ -41,7 +41,9 @@
missing_definition,
failed_import,
failed_to_get_external_ast,
- failed_to_generate_usr
+ failed_to_generate_usr,
+ triple_mismatch,
+ lang_mismatch
};
class IndexError : public llvm::ErrorInfo<IndexError> {
@@ -50,16 +52,25 @@
IndexError(index_error_code C) : Code(C), LineNo(0) {}
IndexError(index_error_code C, std::string FileName, int LineNo = 0)
: Code(C), FileName(std::move(FileName)), LineNo(LineNo) {}
+ IndexError(index_error_code C, std::string FileName, std::string TripleToName,
+ std::string TripleFromName)
+ : Code(C), FileName(std::move(FileName)),
+ TripleToName(std::move(TripleToName)),
+ TripleFromName(std::move(TripleFromName)) {}
void log(raw_ostream &OS) const override;
std::error_code convertToErrorCode() const override;
index_error_code getCode() const { return Code; }
int getLineNum() const { return LineNo; }
std::string getFileName() const { return FileName; }
+ std::string getTripleToName() const { return TripleToName; }
+ std::string getTripleFromName() const { return TripleFromName; }
private:
index_error_code Code;
std::string FileName;
int LineNo;
+ std::string TripleToName;
+ std::string TripleFromName;
};
/// This function parses an index file that determines which
@@ -78,11 +89,11 @@
/// This class is used for tools that requires cross translation
/// unit capability.
///
-/// This class can load function definitions from external AST files.
+/// This class can load definitions from external AST files.
/// The loaded definition will be merged back to the original AST using the
/// AST Importer.
/// In order to use this class, an index file is required that describes
-/// the locations of the AST files for each function definition.
+/// the locations of the AST files for each definition.
///
/// Note that this class also implements caching.
class CrossTranslationUnitContext {
@@ -108,7 +119,7 @@
/// Note that the AST files should also be in the \p CrossTUDir.
llvm::Expected<const FunctionDecl *>
getCrossTUDefinition(const FunctionDecl *FD, StringRef CrossTUDir,
- StringRef IndexName);
+ StringRef IndexName, bool DisplayCTUProgress = false);
/// This function loads a function definition from an external AST
/// file.
@@ -118,13 +129,15 @@
/// \p IndexName. In case the declaration is found in the index the
/// corresponding AST file will be loaded.
///
- /// \return Returns an ASTUnit that contains the definition of the looked up
- /// function.
+ /// \return Returns a pointer to the ASTUnit that contains the definition of
+ /// the looked up function or an Error.
+ /// The returned pointer is never a nullptr.
///
/// Note that the AST files should also be in the \p CrossTUDir.
llvm::Expected<ASTUnit *> loadExternalAST(StringRef LookupName,
StringRef CrossTUDir,
- StringRef IndexName);
+ StringRef IndexName,
+ bool DisplayCTUProgress = false);
/// This function merges a definition from a separate AST Unit into
/// the current one which was created by the compiler instance that
@@ -140,6 +153,7 @@
void emitCrossTUDiagnostics(const IndexError &IE);
private:
+ void lazyInitLookupTable(TranslationUnitDecl *ToTU);
ASTImporter &getOrCreateASTImporter(ASTContext &From);
const FunctionDecl *findFunctionInDeclContext(const DeclContext *DC,
StringRef LookupFnName);
@@ -151,6 +165,7 @@
ASTUnitImporterMap;
CompilerInstance &CI;
ASTContext &Context;
+ std::unique_ptr<ASTImporterLookupTable> LookupTable;
};
} // namespace cross_tu
diff --git a/linux-x64/clang/include/clang/Driver/Action.h b/linux-x64/clang/include/clang/Driver/Action.h
index f4aaa6c..c1ff0b1 100644
--- a/linux-x64/clang/include/clang/Driver/Action.h
+++ b/linux-x64/clang/include/clang/Driver/Action.h
@@ -1,9 +1,8 @@
//===- Action.h - Abstract compilation steps --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Driver/Compilation.h b/linux-x64/clang/include/clang/Driver/Compilation.h
index 20eb07f..33ae133 100644
--- a/linux-x64/clang/include/clang/Driver/Compilation.h
+++ b/linux-x64/clang/include/clang/Driver/Compilation.h
@@ -1,9 +1,8 @@
//===- Compilation.h - Compilation Task Data Structure ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Driver/DarwinSDKInfo.h b/linux-x64/clang/include/clang/Driver/DarwinSDKInfo.h
new file mode 100644
index 0000000..f7075a8
--- /dev/null
+++ b/linux-x64/clang/include/clang/Driver/DarwinSDKInfo.h
@@ -0,0 +1,41 @@
+//===--- DarwinSDKInfo.h - SDK Information parser for darwin ----*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_DRIVER_DARWIN_SDK_INFO_H
+#define LLVM_CLANG_DRIVER_DARWIN_SDK_INFO_H
+
+#include "clang/Basic/LLVM.h"
+#include "llvm/Support/Error.h"
+#include "llvm/Support/VersionTuple.h"
+#include "llvm/Support/VirtualFileSystem.h"
+
+namespace clang {
+namespace driver {
+
+/// The information about the darwin SDK that was used during this compilation.
+class DarwinSDKInfo {
+public:
+ DarwinSDKInfo(llvm::VersionTuple Version) : Version(Version) {}
+
+ const llvm::VersionTuple &getVersion() const { return Version; }
+
+private:
+ llvm::VersionTuple Version;
+};
+
+/// Parse the SDK information from the SDKSettings.json file.
+///
+/// \returns an error if the SDKSettings.json file is invalid, None if the
+/// SDK has no SDKSettings.json, or a valid \c DarwinSDKInfo otherwise.
+Expected<Optional<DarwinSDKInfo>> parseDarwinSDKInfo(llvm::vfs::FileSystem &VFS,
+ StringRef SDKRootPath);
+
+} // end namespace driver
+} // end namespace clang
+
+#endif // LLVM_CLANG_DRIVER_DARWIN_SDK_INFO_H
diff --git a/linux-x64/clang/include/clang/Driver/Distro.h b/linux-x64/clang/include/clang/Driver/Distro.h
index d3b0bc9..d9a31f1 100644
--- a/linux-x64/clang/include/clang/Driver/Distro.h
+++ b/linux-x64/clang/include/clang/Driver/Distro.h
@@ -1,9 +1,8 @@
//===--- Distro.h - Linux distribution detection support --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -39,6 +38,7 @@
RHEL6,
RHEL7,
Fedora,
+ Gentoo,
OpenSUSE,
UbuntuHardy,
UbuntuIntrepid,
@@ -62,6 +62,7 @@
UbuntuArtful,
UbuntuBionic,
UbuntuCosmic,
+ UbuntuDisco,
UnknownDistro
};
@@ -115,13 +116,17 @@
}
bool IsUbuntu() const {
- return DistroVal >= UbuntuHardy && DistroVal <= UbuntuCosmic;
+ return DistroVal >= UbuntuHardy && DistroVal <= UbuntuDisco;
}
bool IsAlpineLinux() const {
return DistroVal == AlpineLinux;
}
+ bool IsGentoo() const {
+ return DistroVal == Gentoo;
+ }
+
/// @}
};
diff --git a/linux-x64/clang/include/clang/Driver/Driver.h b/linux-x64/clang/include/clang/Driver/Driver.h
index 29fd31c..03e6458 100644
--- a/linux-x64/clang/include/clang/Driver/Driver.h
+++ b/linux-x64/clang/include/clang/Driver/Driver.h
@@ -1,9 +1,8 @@
//===--- Driver.h - Clang GCC Compatible Driver -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -227,9 +226,6 @@
unsigned CheckInputsExist : 1;
public:
- /// Use lazy precompiled headers for PCH support.
- unsigned CCCUsePCH : 1;
-
/// Force clang to emit reproducer for driver invocation. This is enabled
/// indirectly by setting FORCE_CLANG_DIAGNOSTICS_CRASH environment variable
/// or when using the -gen-reproducer driver flag.
@@ -281,6 +277,12 @@
SmallString<128> &CrashDiagDir);
public:
+
+ /// Takes the path to a binary that's either in bin/ or lib/ and returns
+ /// the path to clang's resource directory.
+ static std::string GetResourcesPath(StringRef BinaryPath,
+ StringRef CustomResourceDir = "");
+
Driver(StringRef ClangExecutable, StringRef TargetTriple,
DiagnosticsEngine &Diags,
IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS = nullptr);
@@ -362,6 +364,7 @@
/// ParseArgStrings - Parse the given list of strings into an
/// ArgList.
llvm::opt::InputArgList ParseArgStrings(ArrayRef<const char *> Args,
+ bool IsClCompatMode,
bool &ContainsError);
/// BuildInputs - Construct the list of inputs and their types from
@@ -507,6 +510,10 @@
/// GCC goes to extra lengths here to be a bit more robust.
std::string GetTemporaryPath(StringRef Prefix, StringRef Suffix) const;
+ /// GetTemporaryDirectory - Return the pathname of a temporary directory to
+ /// use as part of compilation; the directory will have the given prefix.
+ std::string GetTemporaryDirectory(StringRef Prefix) const;
+
/// Return the pathname of the pch file in clang-cl mode.
std::string GetClPchPath(Compilation &C, StringRef BaseName) const;
@@ -552,7 +559,7 @@
/// Get bitmasks for which option flags to include and exclude based on
/// the driver mode.
- std::pair<unsigned, unsigned> getIncludeExcludeOptionFlagMasks() const;
+ std::pair<unsigned, unsigned> getIncludeExcludeOptionFlagMasks(bool IsClCompatMode) const;
/// Helper used in BuildJobsForAction. Doesn't use the cache when building
/// jobs specifically for the given action, but will use the cache when
diff --git a/linux-x64/clang/include/clang/Driver/DriverDiagnostic.h b/linux-x64/clang/include/clang/Driver/DriverDiagnostic.h
index 680338a..ec2f8b4 100644
--- a/linux-x64/clang/include/clang/Driver/DriverDiagnostic.h
+++ b/linux-x64/clang/include/clang/Driver/DriverDiagnostic.h
@@ -1,28 +1,14 @@
//===--- DiagnosticDriver.h - Diagnostics for libdriver ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_DRIVER_DRIVERDIAGNOSTIC_H
#define LLVM_CLANG_DRIVER_DRIVERDIAGNOSTIC_H
-#include "clang/Basic/Diagnostic.h"
-
-namespace clang {
- namespace diag {
- enum {
-#define DIAG(ENUM,FLAGS,DEFAULT_MAPPING,DESC,GROUP,\
- SFINAE,NOWERROR,SHOWINSYSHEADER,CATEGORY) ENUM,
-#define DRIVERSTART
-#include "clang/Basic/DiagnosticDriverKinds.inc"
-#undef DIAG
- NUM_BUILTIN_DRIVER_DIAGNOSTICS
- };
- } // end namespace diag
-} // end namespace clang
+#include "clang/Basic/DiagnosticDriver.h"
#endif
diff --git a/linux-x64/clang/include/clang/Driver/Job.h b/linux-x64/clang/include/clang/Driver/Job.h
index 47d9e99..41d9722 100644
--- a/linux-x64/clang/include/clang/Driver/Job.h
+++ b/linux-x64/clang/include/clang/Driver/Job.h
@@ -1,9 +1,8 @@
//===- Job.h - Commands to Execute ------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -29,9 +28,6 @@
class InputInfo;
class Tool;
-// Re-export this as clang::driver::ArgStringList.
-using llvm::opt::ArgStringList;
-
struct CrashReportInfo {
StringRef Filename;
StringRef VFSPath;
@@ -59,6 +55,9 @@
/// The list of program arguments which are inputs.
llvm::opt::ArgStringList InputFilenames;
+ /// Whether to print the input filenames when executing.
+ bool PrintInputFilenames = false;
+
/// Response file name, if this command is set to use one, or nullptr
/// otherwise
const char *ResponseFile = nullptr;
@@ -128,6 +127,9 @@
/// Print a command argument, and optionally quote it.
static void printArg(llvm::raw_ostream &OS, StringRef Arg, bool Quote);
+
+ /// Set whether to print the input filenames when executing.
+ void setPrintInputFilenames(bool P) { PrintInputFilenames = P; }
};
/// Like Command, but with a fallback which is executed in case
@@ -135,7 +137,8 @@
class FallbackCommand : public Command {
public:
FallbackCommand(const Action &Source_, const Tool &Creator_,
- const char *Executable_, const ArgStringList &Arguments_,
+ const char *Executable_,
+ const llvm::opt::ArgStringList &Arguments_,
ArrayRef<InputInfo> Inputs,
std::unique_ptr<Command> Fallback_);
@@ -153,7 +156,8 @@
class ForceSuccessCommand : public Command {
public:
ForceSuccessCommand(const Action &Source_, const Tool &Creator_,
- const char *Executable_, const ArgStringList &Arguments_,
+ const char *Executable_,
+ const llvm::opt::ArgStringList &Arguments_,
ArrayRef<InputInfo> Inputs);
void Print(llvm::raw_ostream &OS, const char *Terminator, bool Quote,
diff --git a/linux-x64/clang/include/clang/Driver/Multilib.h b/linux-x64/clang/include/clang/Driver/Multilib.h
index 132d981..353aefd 100644
--- a/linux-x64/clang/include/clang/Driver/Multilib.h
+++ b/linux-x64/clang/include/clang/Driver/Multilib.h
@@ -1,9 +1,8 @@
//===- Multilib.h -----------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Driver/Options.h b/linux-x64/clang/include/clang/Driver/Options.h
index 2da3cb4..f8963d4 100644
--- a/linux-x64/clang/include/clang/Driver/Options.h
+++ b/linux-x64/clang/include/clang/Driver/Options.h
@@ -1,9 +1,8 @@
//===--- Options.h - Option info & table ------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Driver/Options.inc b/linux-x64/clang/include/clang/Driver/Options.inc
index 478434b..cacabe4 100644
--- a/linux-x64/clang/include/clang/Driver/Options.inc
+++ b/linux-x64/clang/include/clang/Driver/Options.inc
@@ -94,7 +94,7 @@
OPTION(prefix_1, "A-", A_DASH, Joined, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "add-plugin", add_plugin, Separate, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"Use the named plugin action in addition to the default action", "<name>", nullptr)
-OPTION(prefix_2, "AI", _SLASH_AI, Joined, cl_Group, INVALID, nullptr, CLOption | DriverOption | CLOption, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_2, "AI", _SLASH_AI, JoinedOrSeparate, cl_Group, INVALID, nullptr, CLOption | DriverOption | CLOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_3, "all-warnings", _all_warnings, Flag, INVALID, Wall, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "all_load", all__load, Flag, INVALID, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "allowable_client", allowable__client, Separate, INVALID, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
@@ -108,6 +108,11 @@
OPTION(prefix_1, "analyzer-checker=", analyzer_checker_EQ, Joined, INVALID, analyzer_checker, nullptr, CC1Option | NoDriverOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "analyzer-checker", analyzer_checker, Separate, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"Choose analyzer checkers to enable", nullptr, nullptr)
+OPTION(prefix_1, "analyzer-config-compatibility-mode=", analyzer_config_compatibility_mode_EQ, Joined, INVALID, analyzer_config_compatibility_mode, nullptr, CC1Option | NoDriverOption, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "analyzer-config-compatibility-mode", analyzer_config_compatibility_mode, Separate, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
+ "Don't emit errors on invalid analyzer-config inputs", nullptr, nullptr)
+OPTION(prefix_1, "analyzer-config-help", analyzer_config_help, Flag, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
+ "Display the list of -analyzer-config options", nullptr, nullptr)
OPTION(prefix_1, "analyzer-config", analyzer_config, Separate, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"Choose analyzer options to enable", nullptr, nullptr)
OPTION(prefix_1, "analyzer-constraints=", analyzer_constraints_EQ, Joined, INVALID, analyzer_constraints, nullptr, CC1Option | NoDriverOption, 0, nullptr, nullptr, nullptr)
@@ -232,10 +237,6 @@
"Simulate installation in the given directory", nullptr, nullptr)
OPTION(prefix_1, "ccc-objcmt-migrate", ccc_objcmt_migrate, Separate, internal_driver_Group, INVALID, nullptr, DriverOption | HelpHidden, 0,
"Apply modifications and produces temporary files to migrate to modern ObjC syntax", nullptr, nullptr)
-OPTION(prefix_1, "ccc-pch-is-pch", ccc_pch_is_pch, Flag, internal_driver_Group, INVALID, nullptr, DriverOption | HelpHidden, 0,
- "Use lazy PCH for precompiled headers", nullptr, nullptr)
-OPTION(prefix_1, "ccc-pch-is-pth", ccc_pch_is_pth, Flag, internal_driver_Group, INVALID, nullptr, DriverOption | HelpHidden, 0,
- "Use pretokenized headers for precompiled headers", nullptr, nullptr)
OPTION(prefix_1, "ccc-print-bindings", ccc_print_bindings, Flag, internal_debug_Group, INVALID, nullptr, DriverOption | HelpHidden | CoreOption, 0,
"Show bindings of tools to actions", nullptr, nullptr)
OPTION(prefix_1, "ccc-print-phases", ccc_print_phases, Flag, internal_debug_Group, INVALID, nullptr, DriverOption | HelpHidden | CoreOption, 0,
@@ -278,6 +279,8 @@
"OpenCL only. Defines that the global work-size be a multiple of the work-group size specified to clEnqueueNDRangeKernel", nullptr, nullptr)
OPTION(prefix_1, "cl-unsafe-math-optimizations", cl_unsafe_math_optimizations, Flag, opencl_Group, INVALID, nullptr, CC1Option, 0,
"OpenCL only. Allow unsafe floating-point optimizations. Also implies -cl-no-signed-zeros and -cl-mad-enable.", nullptr, nullptr)
+OPTION(prefix_2, "clang:", _SLASH_clang, Joined, cl_Group, INVALID, nullptr, CLOption | DriverOption | CLOption, 0,
+ "Pass <arg> to the clang driver", "<arg>", nullptr)
OPTION(prefix_3, "CLASSPATH=", _CLASSPATH_EQ, Joined, INVALID, fclasspath_EQ, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_3, "classpath=", _classpath_EQ, Joined, INVALID, fclasspath_EQ, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_3, "CLASSPATH", _CLASSPATH, Separate, INVALID, fclasspath_EQ, nullptr, 0, 0, nullptr, nullptr, nullptr)
@@ -339,7 +342,7 @@
OPTION(prefix_3, "cuda-host-only", cuda_host_only, Flag, INVALID, INVALID, nullptr, 0, 0,
"Compile CUDA code for host only. Has no effect on non-CUDA compilations.", nullptr, nullptr)
OPTION(prefix_3, "cuda-include-ptx=", cuda_include_ptx_EQ, Joined, INVALID, INVALID, nullptr, DriverOption, 0,
- "Include PTX for the follwing GPU architecture (e.g. sm_35) or 'all'. May be specified more than once.", nullptr, nullptr)
+ "Include PTX for the following GPU architecture (e.g. sm_35) or 'all'. May be specified more than once.", nullptr, nullptr)
OPTION(prefix_3, "cuda-noopt-device-debug", cuda_noopt_device_debug, Flag, INVALID, INVALID, nullptr, 0, 0,
"Enable device-side debug info generation. Disables ptxas optimizations.", nullptr, nullptr)
OPTION(prefix_3, "cuda-path-ignore-env", cuda_path_ignore_env, Flag, i_Group, INVALID, nullptr, 0, 0,
@@ -375,6 +378,8 @@
OPTION(prefix_3, "debug=", _debug_EQ, Joined, INVALID, g_Flag, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "debugger-tuning=", debugger_tuning_EQ, Joined, INVALID, INVALID, nullptr, CC1Option | CC1AsOption | NoDriverOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_3, "debug", _debug, Flag, INVALID, g_Flag, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "default-function-attr", default_function_attr, Separate, INVALID, INVALID, nullptr, CC1Option | CC1AsOption | NoDriverOption, 0,
+ "Apply given attribute to all functions", nullptr, nullptr)
OPTION(prefix_3, "define-macro=", _define_macro_EQ, Joined, INVALID, D, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_3, "define-macro", _define_macro, Separate, INVALID, D, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "defsym", defsym, Separate, INVALID, INVALID, nullptr, CC1AsOption | NoDriverOption, 0,
@@ -483,10 +488,12 @@
"Emit native object files", nullptr, nullptr)
OPTION(prefix_1, "emit-pch", emit_pch, Flag, Action_Group, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"Generate pre-compiled header file", nullptr, nullptr)
-OPTION(prefix_1, "emit-pth", emit_pth, Flag, Action_Group, INVALID, nullptr, CC1Option | NoDriverOption, 0,
- "Generate pre-tokenized header file", nullptr, nullptr)
+OPTION(prefix_1, "enable-split-dwarf=", enable_split_dwarf_EQ, Joined, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
+ "Set DWARF fission mode to either 'split' or 'single'", nullptr, "split,single")
OPTION(prefix_1, "enable-split-dwarf", enable_split_dwarf, Flag, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
- "Use split dwarf/Fission", nullptr, nullptr)
+ "Use DWARF fission in 'split' mode", nullptr, nullptr)
+OPTION(prefix_1, "enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang", enable_trivial_var_init_zero, Joined, INVALID, INVALID, nullptr, CC1Option, 0,
+ "Trivial automatic variable initialization to zero is only here for benchmarks, it'll eventually be removed, and I'm OK with that because I'm only using it to benchmark", nullptr, nullptr)
OPTION(prefix_3, "encoding=", _encoding_EQ, Joined, INVALID, fencoding_EQ, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_3, "encoding", _encoding, Separate, INVALID, fencoding_EQ, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_3, "entry", _entry, Flag, INVALID, e, nullptr, 0, 0, nullptr, nullptr, nullptr)
@@ -529,7 +536,7 @@
OPTION(prefix_1, "faligned-allocation", faligned_allocation, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Enable C++17 aligned allocation functions", nullptr, nullptr)
OPTION(prefix_1, "faligned-new=", faligned_new_EQ, Joined, INVALID, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "faligned-new", anonymous_18, Flag, INVALID, faligned_allocation, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "faligned-new", anonymous_20, Flag, INVALID, faligned_allocation, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fall-intrinsics", all_intrinsics_f, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_2, "fallback", _SLASH_fallback, Flag, cl_compile_Group, INVALID, nullptr, CLOption | DriverOption, 0,
"Fall back to cl.exe if clang-cl fails to compile", nullptr, nullptr)
@@ -549,6 +556,8 @@
"Enable Apple gcc-compatible #pragma pack handling", nullptr, nullptr)
OPTION(prefix_1, "fapplication-extension", fapplication_extension, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Restrict code to those available for App Extensions", nullptr, nullptr)
+OPTION(prefix_1, "fapply-global-visibility-to-externs", fapply_global_visibility_to_externs, Flag, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
+ "Apply global symbol visibility to external declarations without an explicit visibility", nullptr, nullptr)
OPTION(prefix_1, "fasm-blocks", fasm_blocks, Flag, f_Group, INVALID, nullptr, CC1Option, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fasm", fasm, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fassociative-math", fassociative_math, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
@@ -618,6 +627,7 @@
"Instrument control-flow architecture protection. Options: return, branch, full, none.", nullptr, "return,branch,full,none")
OPTION(prefix_1, "fcf-protection", fcf_protection, Flag, f_Group, fcf_protection_EQ, "full\0", CoreOption | CC1Option, 0,
"Enable cf-protection in 'full' mode", nullptr, nullptr)
+OPTION(prefix_1, "fcf-runtime-abi=", fcf_runtime_abi_EQ, Joined, f_Group, INVALID, nullptr, CC1Option, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fchar8_t", fchar8__t, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Enable C++ builtin type char8_t", nullptr, nullptr)
OPTION(prefix_1, "fcheck-array-temporaries", check_array_temporaries_f, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
@@ -693,6 +703,8 @@
OPTION(prefix_1, "fdebug-pass-structure", fdebug_pass_structure, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fdebug-prefix-map=", fdebug_prefix_map_EQ, Joined, f_Group, INVALID, nullptr, CC1Option | CC1AsOption, 0,
"remap file source paths in debug info", nullptr, nullptr)
+OPTION(prefix_1, "fdebug-ranges-base-address", fdebug_ranges_base_address, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
+ "Use DWARF base address selection entries in debug_ranges", nullptr, nullptr)
OPTION(prefix_1, "fdebug-types-section", fdebug_types_section, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Place debug types in their own section (ELF Only)", nullptr, nullptr)
OPTION(prefix_1, "fdebugger-cast-result-to-id", fdebugger_cast_result_to_id, Flag, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
@@ -709,7 +721,7 @@
OPTION(prefix_1, "fdefault-inline", default_inline_f, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fdefault-integer-8", default_integer_8_f, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fdefault-real-8", default_real_8_f, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "fdefer-pop", anonymous_10, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fdefer-pop", anonymous_12, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fdelayed-template-parsing", fdelayed_template_parsing, Flag, f_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
"Parse templated function definitions at the end of the translation unit", nullptr, nullptr)
OPTION(prefix_1, "fdelete-null-pointer-checks", fdelete_null_pointer_checks, Flag, f_Group, INVALID, nullptr, 0, 0,
@@ -776,7 +788,7 @@
OPTION(prefix_1, "feliminate-unused-debug-types", eliminate_unused_debug_types_f, Flag, clang_ignored_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fembed-bitcode-marker", fembed_bitcode_marker, Flag, INVALID, fembed_bitcode_EQ, "marker\0", 0, 0,
"Embed placeholder LLVM IR data as a marker", nullptr, nullptr)
-OPTION(prefix_1, "fembed-bitcode=", fembed_bitcode_EQ, Joined, f_Group, INVALID, nullptr, DriverOption | CC1Option, 0,
+OPTION(prefix_1, "fembed-bitcode=", fembed_bitcode_EQ, Joined, f_Group, INVALID, nullptr, DriverOption | CC1Option | CC1AsOption, 0,
"Embed LLVM bitcode (option: off, all, bitcode, marker)", "<option>", nullptr)
OPTION(prefix_1, "fembed-bitcode", fembed_bitcode, Flag, f_Group, fembed_bitcode_EQ, "all\0", 0, 0,
"Embed LLVM IR bitcode as data", nullptr, nullptr)
@@ -799,13 +811,13 @@
"Enable support for exception handling", nullptr, nullptr)
OPTION(prefix_1, "fexcess-precision=", fexcess_precision_EQ, Joined, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fexec-charset=", fexec_charset_EQ, Joined, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "fexpensive-optimizations", anonymous_8, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fexpensive-optimizations", anonymous_10, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fexperimental-isel", fexperimental_isel, Flag, f_clang_Group, INVALID, nullptr, 0, 0,
"Enables the experimental global instruction selector", nullptr, nullptr)
OPTION(prefix_1, "fexperimental-new-pass-manager", fexperimental_new_pass_manager, Flag, f_clang_Group, INVALID, nullptr, CC1Option, 0,
"Enables an experimental new pass manager in LLVM.", nullptr, nullptr)
OPTION(prefix_1, "fextdirs=", fextdirs_EQ, Joined, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "fextended-identifiers", anonymous_12, Flag, clang_ignored_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fextended-identifiers", anonymous_14, Flag, clang_ignored_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fexternal-blas", external_blas_f, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fexternc-nounwind", fexternc_nounwind, Flag, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"Assume all functions with C linkage do not unwind", nullptr, nullptr)
@@ -828,12 +840,40 @@
"Reserve register r19 (Hexagon only)", nullptr, nullptr)
OPTION(prefix_1, "ffixed-r9", ffixed_r9, Flag, m_arm_Features_Group, INVALID, nullptr, 0, 0,
"Reserve the r9 register (ARM only)", nullptr, nullptr)
+OPTION(prefix_1, "ffixed-x10", ffixed_x10, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
+ "Reserve the 10 register (AArch64 only)", nullptr, nullptr)
+OPTION(prefix_1, "ffixed-x11", ffixed_x11, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
+ "Reserve the 11 register (AArch64 only)", nullptr, nullptr)
+OPTION(prefix_1, "ffixed-x12", ffixed_x12, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
+ "Reserve the 12 register (AArch64 only)", nullptr, nullptr)
+OPTION(prefix_1, "ffixed-x13", ffixed_x13, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
+ "Reserve the 13 register (AArch64 only)", nullptr, nullptr)
+OPTION(prefix_1, "ffixed-x14", ffixed_x14, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
+ "Reserve the 14 register (AArch64 only)", nullptr, nullptr)
+OPTION(prefix_1, "ffixed-x15", ffixed_x15, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
+ "Reserve the 15 register (AArch64 only)", nullptr, nullptr)
OPTION(prefix_1, "ffixed-x18", ffixed_x18, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
"Reserve the 18 register (AArch64 only)", nullptr, nullptr)
OPTION(prefix_1, "ffixed-x1", ffixed_x1, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
"Reserve the 1 register (AArch64 only)", nullptr, nullptr)
OPTION(prefix_1, "ffixed-x20", ffixed_x20, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
"Reserve the 20 register (AArch64 only)", nullptr, nullptr)
+OPTION(prefix_1, "ffixed-x21", ffixed_x21, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
+ "Reserve the 21 register (AArch64 only)", nullptr, nullptr)
+OPTION(prefix_1, "ffixed-x22", ffixed_x22, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
+ "Reserve the 22 register (AArch64 only)", nullptr, nullptr)
+OPTION(prefix_1, "ffixed-x23", ffixed_x23, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
+ "Reserve the 23 register (AArch64 only)", nullptr, nullptr)
+OPTION(prefix_1, "ffixed-x24", ffixed_x24, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
+ "Reserve the 24 register (AArch64 only)", nullptr, nullptr)
+OPTION(prefix_1, "ffixed-x25", ffixed_x25, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
+ "Reserve the 25 register (AArch64 only)", nullptr, nullptr)
+OPTION(prefix_1, "ffixed-x26", ffixed_x26, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
+ "Reserve the 26 register (AArch64 only)", nullptr, nullptr)
+OPTION(prefix_1, "ffixed-x27", ffixed_x27, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
+ "Reserve the 27 register (AArch64 only)", nullptr, nullptr)
+OPTION(prefix_1, "ffixed-x28", ffixed_x28, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
+ "Reserve the 28 register (AArch64 only)", nullptr, nullptr)
OPTION(prefix_1, "ffixed-x2", ffixed_x2, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
"Reserve the 2 register (AArch64 only)", nullptr, nullptr)
OPTION(prefix_1, "ffixed-x3", ffixed_x3, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
@@ -846,6 +886,8 @@
"Reserve the 6 register (AArch64 only)", nullptr, nullptr)
OPTION(prefix_1, "ffixed-x7", ffixed_x7, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
"Reserve the 7 register (AArch64 only)", nullptr, nullptr)
+OPTION(prefix_1, "ffixed-x9", ffixed_x9, Flag, m_aarch64_Features_Group, INVALID, nullptr, 0, 0,
+ "Reserve the 9 register (AArch64 only)", nullptr, nullptr)
OPTION(prefix_1, "ffloat-store", float_store_f, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "ffor-scope", ffor_scope, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fforbid-guard-variables", fforbid_guard_variables, Flag, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
@@ -883,7 +925,7 @@
"Generate relocatable device code, also known as separate compilation mode.", nullptr, nullptr)
OPTION(prefix_1, "fheinous-gnu-extensions", fheinous_gnu_extensions, Flag, INVALID, INVALID, nullptr, CC1Option, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fhip-dump-offload-linker-script", fhip_dump_offload_linker_script, Flag, f_Group, INVALID, nullptr, NoArgumentUnused | HelpHidden, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "fhonor-infinites", anonymous_14, Flag, INVALID, fhonor_infinities, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fhonor-infinites", anonymous_16, Flag, INVALID, fhonor_infinities, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fhonor-infinities", fhonor_infinities, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fhonor-nans", fhonor_nans, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fhosted", fhosted, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
@@ -899,7 +941,7 @@
OPTION(prefix_1, "fimplicit-templates", implicit_templates_f, Flag, clang_ignored_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "finclude-default-header", finclude_default_header, Flag, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"Include the default header file for OpenCL", nullptr, nullptr)
-OPTION(prefix_1, "findirect-virtual-calls", anonymous_16, Flag, INVALID, fapple_kext, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "findirect-virtual-calls", anonymous_18, Flag, INVALID, fapple_kext, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "finit-character=", finit_character_EQ, Joined, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "finit-integer=", finit_integer_EQ, Joined, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "finit-local-zero", init_local_zero_f, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
@@ -944,7 +986,7 @@
OPTION(prefix_2, "Fi", _SLASH_Fi, Joined, cl_compile_Group, INVALID, nullptr, CLOption | DriverOption, 0,
"Set preprocess output file name (with /P)", "<file>", nullptr)
OPTION(prefix_1, "fjump-tables", fjump_tables, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "fkeep-inline-functions", anonymous_30_f, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fkeep-inline-functions", anonymous_34_f, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fkeep-static-consts", fkeep_static_consts, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Keep static const variables even if unused", nullptr, nullptr)
OPTION(prefix_1, "flat_namespace", flat__namespace, Flag, INVALID, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
@@ -1058,7 +1100,7 @@
OPTION(prefix_1, "fnested-functions", fnested_functions, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fnew-alignment=", fnew_alignment_EQ, Joined, f_Group, INVALID, nullptr, CC1Option, 0,
"Specifies the largest alignment guaranteed by '::operator new(size_t)'", "<align>", nullptr)
-OPTION(prefix_1, "fnew-alignment", anonymous_17, Separate, INVALID, fnew_alignment_EQ, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fnew-alignment", anonymous_19, Separate, INVALID, fnew_alignment_EQ, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fnext-runtime", fnext_runtime, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-access-control", fno_access_control, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Disable C++ access control", nullptr, nullptr)
@@ -1071,7 +1113,7 @@
OPTION(prefix_1, "fno-align-labels", align_labels_fno, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-align-loops", align_loops_fno, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-aligned-allocation", fno_aligned_allocation, Flag, f_Group, INVALID, nullptr, CC1Option, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "fno-aligned-new", anonymous_19, Flag, INVALID, fno_aligned_allocation, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fno-aligned-new", anonymous_21, Flag, INVALID, fno_aligned_allocation, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-all-intrinsics", all_intrinsics_fno, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-allow-editor-placeholders", fno_allow_editor_placeholders, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-altivec", fno_altivec, Flag, f_Group, INVALID, nullptr, DriverOption, 0, nullptr, nullptr, nullptr)
@@ -1104,7 +1146,7 @@
"Disable C++ static destructor registration", nullptr, nullptr)
OPTION(prefix_1, "fno-caller-saves", caller_saves_fno, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-caret-diagnostics", fno_caret_diagnostics, Flag, f_Group, INVALID, nullptr, CC1Option, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "fno-char8_t", fno_char8__t, Flag, f_Group, INVALID, nullptr, 0, 0,
+OPTION(prefix_1, "fno-char8_t", fno_char8__t, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Disable C++ builtin type char8_t", nullptr, nullptr)
OPTION(prefix_1, "fno-check-array-temporaries", check_array_temporaries_fno, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-check-new", fcheck_new_fno, Flag, clang_ignored_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
@@ -1140,6 +1182,7 @@
"Do not emit macro debug information", nullptr, nullptr)
OPTION(prefix_1, "fno-debug-pass-manager", fno_debug_pass_manager, Flag, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"Disables debug printing for the new pass manager", nullptr, nullptr)
+OPTION(prefix_1, "fno-debug-ranges-base-address", fno_debug_ranges_base_address, Flag, f_Group, INVALID, nullptr, CC1Option, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-debug-types-section", fno_debug_types_section, Flag, f_Group, INVALID, nullptr, CC1Option, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-declspec", fno_declspec, Flag, f_clang_Group, INVALID, nullptr, CC1Option, 0,
"Disallow __declspec as a keyword", nullptr, nullptr)
@@ -1147,7 +1190,7 @@
OPTION(prefix_1, "fno-default-inline", default_inline_fno, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-default-integer-8", default_integer_8_fno, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-default-real-8", default_real_8_fno, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "fno-defer-pop", anonymous_11, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fno-defer-pop", anonymous_13, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-delayed-template-parsing", fno_delayed_template_parsing, Flag, f_Group, INVALID, nullptr, DriverOption | CoreOption, 0,
"Disable delayed template parsing", nullptr, nullptr)
OPTION(prefix_1, "fno-delete-null-pointer-checks", fno_delete_null_pointer_checks, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
@@ -1168,6 +1211,7 @@
"Disallow alternative token representations '<:', ':>', '<%', '%>', '%:', '%:%:'", nullptr, nullptr)
OPTION(prefix_1, "fno-discard-value-names", fno_discard_value_names, Flag, f_clang_Group, INVALID, nullptr, DriverOption, 0,
"Do not discard value names in LLVM IR", nullptr, nullptr)
+OPTION(prefix_1, "fno-dllexport-inlines", fno_dllexport_inlines, Flag, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-dollar-ok", dollar_ok_fno, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-dollars-in-identifiers", fno_dollars_in_identifiers, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Disallow '$' in identifiers", nullptr, nullptr)
@@ -1187,12 +1231,12 @@
OPTION(prefix_1, "fno-emulated-tls", fno_emulated_tls, Flag, f_Group, INVALID, nullptr, CC1Option, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-escaping-block-tail-calls", fno_escaping_block_tail_calls, Flag, f_Group, INVALID, nullptr, CC1Option, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-exceptions", fno_exceptions, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "fno-expensive-optimizations", anonymous_9, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fno-expensive-optimizations", anonymous_11, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-experimental-isel", fno_experimental_isel, Flag, f_clang_Group, INVALID, nullptr, 0, 0,
"Disables the experimental global instruction selector", nullptr, nullptr)
OPTION(prefix_1, "fno-experimental-new-pass-manager", fno_experimental_new_pass_manager, Flag, f_clang_Group, INVALID, nullptr, CC1Option, 0,
"Disables an experimental new pass manager in LLVM.", nullptr, nullptr)
-OPTION(prefix_1, "fno-extended-identifiers", anonymous_13, Flag, f_Group, INVALID, nullptr, Unsupported, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fno-extended-identifiers", anonymous_15, Flag, f_Group, INVALID, nullptr, Unsupported, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-external-blas", external_blas_fno, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-f2c", f2c_fno, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-fast-math", fno_fast_math, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
@@ -1223,7 +1267,7 @@
OPTION(prefix_1, "fno-gnu89-inline", fno_gnu89_inline, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-gnu", gnu_fno, Flag, clang_ignored_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-gpu-rdc", fno_gpu_rdc, Flag, INVALID, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "fno-honor-infinites", anonymous_15, Flag, INVALID, fno_honor_infinities, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fno-honor-infinites", anonymous_17, Flag, INVALID, fno_honor_infinities, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-honor-infinities", fno_honor_infinities, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-honor-nans", fno_honor_nans, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-ident", anonymous_4, Flag, f_Group, Qn, nullptr, CC1Option, 0, nullptr, nullptr, nullptr)
@@ -1246,7 +1290,7 @@
OPTION(prefix_1, "fno-ivopts", ivopts_fno, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-jump-tables", fno_jump_tables, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Do not use jump tables for lowering switches", nullptr, nullptr)
-OPTION(prefix_1, "fno-keep-inline-functions", anonymous_30_fno, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fno-keep-inline-functions", anonymous_34_fno, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-lax-vector-conversions", fno_lax_vector_conversions, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Disallow implicit conversions between vectors with a different number of elements or different element types", nullptr, nullptr)
OPTION(prefix_1, "fno-limit-debug-info", fno_limit_debug_info, Flag, INVALID, fstandalone_debug, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
@@ -1279,6 +1323,7 @@
OPTION(prefix_1, "fno-non-call-exceptions", non_call_exceptions_fno, Flag, clang_ignored_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-objc-arc-exceptions", fno_objc_arc_exceptions, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-objc-arc", fno_objc_arc, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fno-objc-convert-messages-to-runtime-calls", fno_objc_convert_messages_to_runtime_calls, Flag, f_Group, INVALID, nullptr, CC1Option, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-objc-exceptions", fno_objc_exceptions, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-objc-infer-related-result-type", fno_objc_infer_related_result_type, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"do not infer Objective-C related result type based on method family", nullptr, nullptr)
@@ -1288,6 +1333,7 @@
OPTION(prefix_1, "fno-omit-frame-pointer", fno_omit_frame_pointer, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-openmp-cuda-force-full-runtime", fno_openmp_cuda_force_full_runtime, Flag, f_Group, INVALID, nullptr, NoArgumentUnused | HelpHidden, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-openmp-cuda-mode", fno_openmp_cuda_mode, Flag, f_Group, INVALID, nullptr, NoArgumentUnused | HelpHidden, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fno-openmp-optimistic-collapse", fno_openmp_optimistic_collapse, Flag, f_Group, INVALID, nullptr, NoArgumentUnused | HelpHidden, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-openmp-simd", fno_openmp_simd, Flag, f_Group, INVALID, nullptr, CC1Option | NoArgumentUnused, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-openmp", fno_openmp, Flag, f_Group, INVALID, nullptr, NoArgumentUnused, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-operator-names", fno_operator_names, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
@@ -1336,6 +1382,8 @@
OPTION(prefix_1, "fno-real-8-real-4", real_8_real_4_fno, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-realloc-lhs", realloc_lhs_fno, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-reciprocal-math", fno_reciprocal_math, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fno-record-command-line", fno_record_command_line, Flag, f_clang_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fno-record-gcc-switches", anonymous_9, Flag, INVALID, fno_record_command_line, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-recursive", recursive_fno, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-register-global-dtors-with-atexit", fno_register_global_dtors_with_atexit, Flag, f_Group, INVALID, nullptr, 0, 0,
"Don't use atexit or __cxa_atexit to register global destructors", nullptr, nullptr)
@@ -1358,10 +1406,12 @@
OPTION(prefix_1, "fno-rtti", fno_rtti, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Disable generation of rtti information", nullptr, nullptr)
OPTION(prefix_1, "fno-rwpi", fno_rwpi, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "fno-sanitize-address-poison-class-member-array-new-cookie", fno_sanitize_address_poison_class_member_array_new_cookie, Flag, f_clang_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
- "Disable poisoning array cookies when using class member operator new[] in AddressSanitizer", nullptr, nullptr)
+OPTION(prefix_1, "fno-sanitize-address-poison-custom-array-cookie", fno_sanitize_address_poison_custom_array_cookie, Flag, f_clang_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
+ "Disable poisoning array cookies when using custom operator new[] in AddressSanitizer", nullptr, nullptr)
OPTION(prefix_1, "fno-sanitize-address-use-after-scope", fno_sanitize_address_use_after_scope, Flag, f_clang_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
"Disable use-after-scope detection in AddressSanitizer", nullptr, nullptr)
+OPTION(prefix_1, "fno-sanitize-address-use-odr-indicator", fno_sanitize_address_use_odr_indicator, Flag, f_clang_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
+ "Disable ODR indicator globals", nullptr, nullptr)
OPTION(prefix_1, "fno-sanitize-blacklist", fno_sanitize_blacklist, Flag, f_clang_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
"Don't use blacklist file for sanitizers", nullptr, nullptr)
OPTION(prefix_1, "fno-sanitize-cfi-cross-dso", fno_sanitize_cfi_cross_dso, Flag, f_clang_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
@@ -1417,6 +1467,7 @@
OPTION(prefix_1, "fno-spell-checking", fno_spell_checking, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Disable spell-checking", nullptr, nullptr)
OPTION(prefix_1, "fno-split-dwarf-inlining", fno_split_dwarf_inlining, Flag, f_Group, INVALID, nullptr, CC1Option, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fno-split-lto-unit", fno_split_lto_unit, Flag, f_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-stack-arrays", stack_arrays_fno, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-stack-check", stack_check_fno, Flag, clang_ignored_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-stack-protector", fno_stack_protector, Flag, f_Group, INVALID, nullptr, 0, 0,
@@ -1442,10 +1493,10 @@
OPTION(prefix_1, "fno-trapping-math", fno_trapping_math, Flag, f_Group, INVALID, nullptr, CC1Option, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-tree-dce", tree_dce_fno, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-tree-salias", tree_salias_fno, Flag, clang_ignored_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "fno-tree-slp-vectorize", anonymous_24, Flag, INVALID, fno_slp_vectorize, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fno-tree-slp-vectorize", anonymous_26, Flag, INVALID, fno_slp_vectorize, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-tree-ter", tree_ter_fno, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-tree-vectorizer-verbose", tree_vectorizer_verbose_fno, Flag, clang_ignored_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "fno-tree-vectorize", anonymous_22, Flag, INVALID, fno_vectorize, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fno-tree-vectorize", anonymous_24, Flag, INVALID, fno_vectorize, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-tree-vrp", tree_vrp_fno, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-tree_loop_im", tree_loop_im_fno, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fno-tree_loop_ivcanon", tree_loop_ivcanon_fno, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
@@ -1502,6 +1553,7 @@
"Synthesize retain and release calls for Objective-C pointers", nullptr, nullptr)
OPTION(prefix_1, "fobjc-atdefs", fobjc_atdefs, Flag, clang_ignored_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fobjc-call-cxx-cdtors", fobjc_call_cxx_cdtors, Flag, clang_ignored_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fobjc-convert-messages-to-runtime-calls", fobjc_convert_messages_to_runtime_calls, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fobjc-dispatch-method=", fobjc_dispatch_method_EQ, Joined, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"Objective-C dispatch method to use", nullptr, "legacy,non-legacy,mixed")
OPTION(prefix_1, "fobjc-exceptions", fobjc_exceptions, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
@@ -1526,13 +1578,16 @@
OPTION(prefix_1, "fobjc-weak", fobjc_weak, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Enable ARC-style weak references in Objective-C", nullptr, nullptr)
OPTION(prefix_1, "fomit-frame-pointer", fomit_frame_pointer, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fopenmp-cuda-blocks-per-sm=", fopenmp_cuda_blocks_per_sm_EQ, Joined, f_Group, INVALID, nullptr, CC1Option | NoArgumentUnused | HelpHidden, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fopenmp-cuda-force-full-runtime", fopenmp_cuda_force_full_runtime, Flag, f_Group, INVALID, nullptr, CC1Option | NoArgumentUnused | HelpHidden, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fopenmp-cuda-mode", fopenmp_cuda_mode, Flag, f_Group, INVALID, nullptr, CC1Option | NoArgumentUnused | HelpHidden, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fopenmp-cuda-number-of-sm=", fopenmp_cuda_number_of_sm_EQ, Joined, f_Group, INVALID, nullptr, CC1Option | NoArgumentUnused | HelpHidden, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fopenmp-dump-offload-linker-script", fopenmp_dump_offload_linker_script, Flag, f_Group, INVALID, nullptr, NoArgumentUnused | HelpHidden, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fopenmp-host-ir-file-path", fopenmp_host_ir_file_path, Separate, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"Path to the IR file produced by the frontend for the host.", nullptr, nullptr)
OPTION(prefix_1, "fopenmp-is-device", fopenmp_is_device, Flag, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"Generate code only for an OpenMP target device.", nullptr, nullptr)
+OPTION(prefix_1, "fopenmp-optimistic-collapse", fopenmp_optimistic_collapse, Flag, f_Group, INVALID, nullptr, CC1Option | NoArgumentUnused | HelpHidden, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fopenmp-relocatable-target", fopenmp_relocatable_target, Flag, f_Group, INVALID, nullptr, CC1Option | NoArgumentUnused | HelpHidden, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fopenmp-simd", fopenmp_simd, Flag, f_Group, INVALID, nullptr, CC1Option | NoArgumentUnused, 0,
"Emit OpenMP code only for SIMD-based constructs.", nullptr, nullptr)
@@ -1580,6 +1635,8 @@
OPTION(prefix_1, "fparse-all-comments", fparse_all_comments, Flag, f_clang_Group, INVALID, nullptr, CC1Option, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fpascal-strings", fpascal_strings, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Recognize and construct Pascal-style string literals", nullptr, nullptr)
+OPTION(prefix_1, "fpass-plugin=", fpass_plugin_EQ, Joined, f_Group, INVALID, nullptr, CC1Option, 0,
+ "Load pass plugin from a dynamic shared object file (only with new pass manager).", "<dsopath>", nullptr)
OPTION(prefix_1, "fpcc-struct-return", fpcc_struct_return, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Override the default ABI to return all structs on the stack", nullptr, nullptr)
OPTION(prefix_1, "fpch-preprocess", fpch_preprocess, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
@@ -1603,6 +1660,10 @@
OPTION(prefix_1, "fprofile-arcs", fprofile_arcs, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fprofile-correction", profile_correction_f, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fprofile-dir=", fprofile_dir, Joined, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fprofile-exclude-files=", fprofile_exclude_files_EQ, Joined, f_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
+ "Instrument only functions from files where names don't match all the regexes separated by a semi-colon", nullptr, nullptr)
+OPTION(prefix_1, "fprofile-filter-files=", fprofile_filter_files_EQ, Joined, f_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
+ "Instrument only functions from files where names match any regex separated by a semi-colon", nullptr, nullptr)
OPTION(prefix_1, "fprofile-generate-sampling", profile_generate_sampling_f, Flag, clang_ignored_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fprofile-generate=", fprofile_generate_EQ, Joined, f_Group, INVALID, nullptr, DriverOption, 0,
"Generate instrumented code to collect execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)", "<directory>", nullptr)
@@ -1621,6 +1682,9 @@
"Specify the profile path in PGO use compilation", nullptr, nullptr)
OPTION(prefix_1, "fprofile-instrument=", fprofile_instrument_EQ, Joined, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"Enable PGO instrumentation. The accepted value is clang, llvm, or none", nullptr, "none,clang,llvm")
+OPTION(prefix_1, "fprofile-remapping-file=", fprofile_remapping_file_EQ, Joined, f_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
+ "Use the remappings described in <file> to match the profile data against names in the program", "<file>", nullptr)
+OPTION(prefix_1, "fprofile-remapping-file", fprofile_remapping_file, Separate, f_Group, fprofile_remapping_file_EQ, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fprofile-reusedist", profile_reusedist_f, Flag, clang_ignored_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fprofile-sample-accurate", fprofile_sample_accurate, Flag, f_Group, INVALID, nullptr, DriverOption | CC1Option, 0,
"Specifies that the sample profile is accurate", nullptr, nullptr)
@@ -1647,6 +1711,8 @@
OPTION(prefix_1, "frealloc-lhs", realloc_lhs_f, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "freciprocal-math", freciprocal_math, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Allow division operations to be reassociated", nullptr, nullptr)
+OPTION(prefix_1, "frecord-command-line", frecord_command_line, Flag, f_clang_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "frecord-gcc-switches", anonymous_8, Flag, INVALID, frecord_command_line, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "frecord-marker=", frecord_marker_EQ, Joined, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "frecursive", recursive_f, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "freg-struct-return", freg_struct_return, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
@@ -1679,10 +1745,12 @@
"Level of field padding for AddressSanitizer", nullptr, nullptr)
OPTION(prefix_1, "fsanitize-address-globals-dead-stripping", fsanitize_address_globals_dead_stripping, Flag, f_clang_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
"Enable linker dead stripping of globals in AddressSanitizer", nullptr, nullptr)
-OPTION(prefix_1, "fsanitize-address-poison-class-member-array-new-cookie", fsanitize_address_poison_class_member_array_new_cookie, Flag, f_clang_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
- "Enable poisoning array cookies when using class member operator new[] in AddressSanitizer", nullptr, nullptr)
+OPTION(prefix_1, "fsanitize-address-poison-custom-array-cookie", fsanitize_address_poison_custom_array_cookie, Flag, f_clang_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
+ "Enable poisoning array cookies when using custom operator new[] in AddressSanitizer", nullptr, nullptr)
OPTION(prefix_1, "fsanitize-address-use-after-scope", fsanitize_address_use_after_scope, Flag, f_clang_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
"Enable use-after-scope detection in AddressSanitizer", nullptr, nullptr)
+OPTION(prefix_1, "fsanitize-address-use-odr-indicator", fsanitize_address_use_odr_indicator, Flag, f_clang_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
+ "Enable ODR indicator globals to avoid false ODR violation reports in partially sanitized programs at the cost of an increase in binary size", nullptr, nullptr)
OPTION(prefix_1, "fsanitize-blacklist=", fsanitize_blacklist, Joined, f_clang_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
"Path to blacklist file for sanitizers", nullptr, nullptr)
OPTION(prefix_1, "fsanitize-cfi-cross-dso", fsanitize_cfi_cross_dso, Flag, f_clang_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
@@ -1717,6 +1785,8 @@
"Sanitizer coverage type", nullptr, nullptr)
OPTION(prefix_1, "fsanitize-coverage=", fsanitize_coverage, CommaJoined, f_clang_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
"Specify the type of coverage instrumentation for Sanitizers", nullptr, nullptr)
+OPTION(prefix_1, "fsanitize-hwaddress-abi=", fsanitize_hwaddress_abi_EQ, Joined, f_clang_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
+ "Select the HWAddressSanitizer ABI to target (interceptor or platform, default interceptor)", nullptr, nullptr)
OPTION(prefix_1, "fsanitize-link-c++-runtime", fsanitize_link_cxx_runtime, Flag, f_clang_Group, INVALID, nullptr, CC1Option | CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fsanitize-memory-track-origins=", fsanitize_memory_track_origins_EQ, Joined, f_clang_Group, INVALID, nullptr, CC1Option | CoreOption, 0,
"Enable origins tracking in MemorySanitizer", nullptr, nullptr)
@@ -1745,7 +1815,7 @@
"Turn on runtime checks for various forms of undefined or suspicious behavior. See user manual for available checks", "<check>", nullptr)
OPTION(prefix_1, "fsave-optimization-record", fsave_optimization_record, Flag, f_Group, INVALID, nullptr, 0, 0,
"Generate a YAML optimization record file", nullptr, nullptr)
-OPTION(prefix_1, "fsched-interblock", anonymous_20, Flag, clang_ignored_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fsched-interblock", anonymous_22, Flag, clang_ignored_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fschedule-insns2", schedule_insns2_f, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fschedule-insns", schedule_insns_f, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fsecond-underscore", second_underscore_f, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
@@ -1783,15 +1853,17 @@
OPTION(prefix_1, "fspell-checking", fspell_checking, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fsplit-dwarf-inlining", fsplit_dwarf_inlining, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Provide minimal debug info in the object/executable to facilitate online symbolication/stack traces in the absence of .dwo/.dwp files when using Split DWARF", nullptr, nullptr)
+OPTION(prefix_1, "fsplit-lto-unit", fsplit_lto_unit, Flag, f_Group, INVALID, nullptr, CoreOption | CC1Option, 0,
+ "Enables splitting of the LTO unit.", nullptr, nullptr)
OPTION(prefix_1, "fsplit-stack", fsplit_stack, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fstack-arrays", stack_arrays_f, Flag, gfortran_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fstack-check", stack_check_f, Flag, clang_ignored_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "fstack-protector-all", fstack_protector_all, Flag, f_Group, INVALID, nullptr, 0, 0,
- "Force the usage of stack protectors for all functions", nullptr, nullptr)
+ "Enable stack protectors for all functions", nullptr, nullptr)
OPTION(prefix_1, "fstack-protector-strong", fstack_protector_strong, Flag, f_Group, INVALID, nullptr, 0, 0,
- "Use a strong heuristic to apply stack protectors to functions", nullptr, nullptr)
+ "Enable stack protectors for some functions vulnerable to stack smashing. Compared to -fstack-protector, this uses a stronger heuristic that includes functions containing arrays of any size (and any type), as well as any calls to alloca or the taking of an address from a local variable", nullptr, nullptr)
OPTION(prefix_1, "fstack-protector", fstack_protector, Flag, f_Group, INVALID, nullptr, 0, 0,
- "Enable stack protectors for functions potentially vulnerable to stack smashing", nullptr, nullptr)
+ "Enable stack protectors for some functions vulnerable to stack smashing. This uses a loose heuristic which considers functions vulnerable if they contain a char (or 8bit integer) array or constant sized calls to alloca, which are of greater size than ssp-buffer-size (default: 8 bytes). All variable sized calls to alloca are considered vulnerable", nullptr, nullptr)
OPTION(prefix_1, "fstack-size-section", fstack_size_section, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Emit section containing metadata on function stack sizes", nullptr, nullptr)
OPTION(prefix_1, "fstandalone-debug", fstandalone_debug, Flag, f_Group, INVALID, nullptr, CoreOption, 0,
@@ -1820,7 +1892,7 @@
OPTION(prefix_1, "ftemplate-depth=", ftemplate_depth_EQ, Joined, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "ftemplate-depth", ftemplate_depth, Separate, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"Maximum depth of recursive template instantiation", nullptr, nullptr)
-OPTION(prefix_1, "fterminated-vtables", anonymous_25, Flag, INVALID, fapple_kext, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fterminated-vtables", anonymous_27, Flag, INVALID, fapple_kext, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "ftest-coverage", ftest_coverage, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "ftest-module-file-extension=", ftest_module_file_extension_EQ, Joined, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"introduce a module file extension for testing purposes. The argument is parsed as blockname:major:minor:hashed:user info", nullptr, nullptr)
@@ -1843,16 +1915,18 @@
"Trap on integer overflow", nullptr, nullptr)
OPTION(prefix_1, "ftree-dce", tree_dce_f, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "ftree-salias", tree_salias_f, Flag, clang_ignored_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "ftree-slp-vectorize", anonymous_23, Flag, INVALID, fslp_vectorize, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "ftree-slp-vectorize", anonymous_25, Flag, INVALID, fslp_vectorize, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "ftree-ter", tree_ter_f, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "ftree-vectorizer-verbose", tree_vectorizer_verbose_f, Flag, clang_ignored_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "ftree-vectorize", anonymous_21, Flag, INVALID, fvectorize, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "ftree-vectorize", anonymous_23, Flag, INVALID, fvectorize, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "ftree-vrp", tree_vrp_f, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "ftree_loop_im", tree_loop_im_f, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "ftree_loop_ivcanon", tree_loop_ivcanon_f, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "ftree_loop_linear", tree_loop_linear_f, Flag, clang_ignored_gcc_optimization_f_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "ftrigraphs", ftrigraphs, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Process trigraph sequences", nullptr, nullptr)
+OPTION(prefix_1, "ftrivial-auto-var-init=", ftrivial_auto_var_init, Joined, f_Group, INVALID, nullptr, CC1Option, 0,
+ "Initialize trivial automatic stack variables: uninitialized (default) | pattern", nullptr, "uninitialized,pattern")
OPTION(prefix_1, "ftype-visibility", ftype_visibility, Separate, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"Default type visibility", nullptr, nullptr)
OPTION(prefix_1, "function-alignment", function_alignment, Separate, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
@@ -1888,6 +1962,8 @@
OPTION(prefix_1, "fvectorize", fvectorize, Flag, f_Group, INVALID, nullptr, 0, 0,
"Enable the loop vectorization passes", nullptr, nullptr)
OPTION(prefix_1, "fverbose-asm", fverbose_asm, Flag, f_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "fvisibility-global-new-delete-hidden", fvisibility_global_new_delete_hidden, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
+ "Give global C++ operator new and delete declarations hidden visibility", nullptr, nullptr)
OPTION(prefix_1, "fvisibility-inlines-hidden", fvisibility_inlines_hidden, Flag, f_Group, INVALID, nullptr, CC1Option, 0,
"Give inline C++ member functions hidden visibility by default", nullptr, nullptr)
OPTION(prefix_1, "fvisibility-ms-compat", fvisibility_ms_compat, Flag, f_Group, INVALID, nullptr, 0, 0,
@@ -1947,6 +2023,8 @@
OPTION(prefix_3, "gcc-toolchain=", gcc_toolchain, Joined, INVALID, INVALID, nullptr, DriverOption, 0,
"Use the gcc toolchain at the given directory", nullptr, nullptr)
OPTION(prefix_1, "gcc-toolchain", gcc_toolchain_legacy_spelling, Separate, INVALID, gcc_toolchain, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "gcodeview-ghash", gcodeview_ghash, Flag, INVALID, INVALID, nullptr, CC1Option | CoreOption, 0,
+ "Emit type record hashes in a .debug$H section", nullptr, nullptr)
OPTION(prefix_1, "gcodeview", gcodeview, Flag, INVALID, INVALID, nullptr, CC1Option | CC1AsOption | CoreOption, 0,
"Generate CodeView debug information", nullptr, nullptr)
OPTION(prefix_1, "gcoff", gcoff, Joined, g_Group, INVALID, nullptr, Unsupported, 0, nullptr, nullptr, nullptr)
@@ -1993,17 +2071,20 @@
OPTION(prefix_1, "gmodules", gmodules, Flag, gN_Group, INVALID, nullptr, 0, 0,
"Generate debug info with external references to clang modules or precompiled headers", nullptr, nullptr)
OPTION(prefix_2, "Gm", _SLASH_Gm, Flag, cl_Group, INVALID, nullptr, CLOption | DriverOption | CLOption, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "gno-codeview-ghash", gno_codeview_ghash, Flag, INVALID, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "gno-column-info", gno_column_info, Flag, g_flags_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "gno-embed-source", gno_embed_source, Flag, g_flags_Group, INVALID, nullptr, DriverOption, 0,
"Restore the default behavior of not embedding source text in DWARF debug sections", nullptr, nullptr)
OPTION(prefix_1, "gno-gnu-pubnames", gno_gnu_pubnames, Flag, g_flags_Group, INVALID, nullptr, CC1Option, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "gno-pubnames", gno_pubnames, Flag, g_flags_Group, INVALID, nullptr, CC1Option, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "gno-record-gcc-switches", gno_record_gcc_switches, Flag, g_flags_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "gno-record-command-line", gno_record_command_line, Flag, g_flags_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "gno-record-gcc-switches", anonymous_29, Flag, INVALID, gno_record_command_line, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "gno-strict-dwarf", gno_strict_dwarf, Flag, g_flags_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "gpubnames", gpubnames, Flag, g_flags_Group, INVALID, nullptr, CC1Option, 0, nullptr, nullptr, nullptr)
OPTION(prefix_2, "GR-", _SLASH_GR_, Flag, cl_Group, INVALID, nullptr, CLOption | DriverOption | CLOption, 0,
"Disable emission of RTTI data", nullptr, nullptr)
-OPTION(prefix_1, "grecord-gcc-switches", grecord_gcc_switches, Flag, g_flags_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "grecord-command-line", grecord_command_line, Flag, g_flags_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "grecord-gcc-switches", anonymous_28, Flag, INVALID, grecord_command_line, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_2, "Gregcall", _SLASH_Gregcall, Flag, cl_Group, INVALID, nullptr, CLOption | DriverOption | CLOption, 0,
"Set __regcall as a default calling convention", nullptr, nullptr)
OPTION(prefix_2, "GR", _SLASH_GR, Flag, cl_Group, INVALID, nullptr, CLOption | DriverOption | CLOption, 0,
@@ -2013,12 +2094,14 @@
OPTION(prefix_2, "GS-", _SLASH_GS_, Flag, cl_Group, INVALID, nullptr, CLOption | DriverOption | CLOption, 0,
"Disable buffer security check", nullptr, nullptr)
OPTION(prefix_1, "gsce", gsce, Flag, gTune_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "gsplit-dwarf=", gsplit_dwarf_EQ, Joined, g_flags_Group, INVALID, nullptr, 0, 0,
+ "Set DWARF fission mode to either 'split' or 'single'", nullptr, "split,single")
OPTION(prefix_1, "gsplit-dwarf", gsplit_dwarf, Flag, g_flags_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "gstabs", gstabs, Joined, g_Group, INVALID, nullptr, Unsupported, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "gstrict-dwarf", gstrict_dwarf, Flag, g_flags_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_2, "GS", _SLASH_GS, Flag, cl_Group, INVALID, nullptr, CLOption | DriverOption | CLOption, 0,
"Enable buffer security check (default)", nullptr, nullptr)
-OPTION(prefix_2, "Gs", anonymous_31, Flag, cl_Group, mstack_probe_size, "4096\0", CLOption | DriverOption | CLOption, 0,
+OPTION(prefix_2, "Gs", anonymous_35, Flag, cl_Group, mstack_probe_size, "4096\0", CLOption | DriverOption | CLOption, 0,
"Use stack probes (default)", nullptr, nullptr)
OPTION(prefix_2, "Gs", _SLASH_Gs, Joined, cl_Group, mstack_probe_size, nullptr, CLOption | DriverOption | CLOption, 0,
"Set stack probe size (default 4096)", nullptr, nullptr)
@@ -2099,8 +2182,6 @@
"Include precompiled header file", "<file>", nullptr)
OPTION(prefix_3, "include-prefix=", _include_prefix_EQ, Joined, INVALID, iprefix, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_3, "include-prefix", _include_prefix, Separate, INVALID, iprefix, nullptr, 0, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "include-pth", include_pth, Separate, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
- "Include file before parsing", "<file>", nullptr)
OPTION(prefix_3, "include-with-prefix-after=", _include_with_prefix_after_EQ, Joined, INVALID, iwithprefix, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_3, "include-with-prefix-after", _include_with_prefix_after, Separate, INVALID, iwithprefix, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_3, "include-with-prefix-before=", _include_with_prefix_before_EQ, Joined, INVALID, iwithprefixbefore, nullptr, 0, 0, nullptr, nullptr, nullptr)
@@ -2116,7 +2197,7 @@
"Only execute frontend initialization", nullptr, nullptr)
OPTION(prefix_1, "init", init, Separate, INVALID, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "install_name", install__name, Separate, INVALID, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "integrated-as", anonymous_28, Flag, INVALID, fintegrated_as, nullptr, DriverOption, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "integrated-as", anonymous_32, Flag, INVALID, fintegrated_as, nullptr, DriverOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "internal-externc-isystem", internal_externc_isystem, JoinedOrSeparate, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"Add directory to the internal system include search path with implicit extern \"C\" semantics; these are assumed to not be user-provided and are used to model system and standard headers' paths.", "<directory>", nullptr)
OPTION(prefix_1, "internal-isystem", internal_isystem, JoinedOrSeparate, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
@@ -2225,6 +2306,10 @@
OPTION(prefix_1, "mbmi2", mbmi2, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mbmi", mbmi, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mbranch-likely", mbranch_likely, Flag, m_Group, INVALID, nullptr, HelpHidden, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "mbranch-protection=", mbranch_protection_EQ, Joined, INVALID, INVALID, nullptr, 0, 0,
+ "Enforce targets of indirect branches and function returns", nullptr, nullptr)
+OPTION(prefix_1, "mbranch-target-enforce", mbranch_target_enforce, Flag, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "mbulk-memory", mbulk_memory, Flag, m_wasm_Features_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mcheck-zero-division", mcheck_zero_division, Flag, m_mips_Features_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mcldemote", mcldemote, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mclflushopt", mclflushopt, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
@@ -2234,6 +2319,8 @@
OPTION(prefix_1, "mcmpb", mcmpb, Flag, m_ppc_Features_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mcode-model", mcode_model, Separate, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"The code model to use", nullptr, "tiny,small,kernel,medium,large")
+OPTION(prefix_1, "mcode-object-v3", mcode_object_v3, Flag, m_amdgpu_Features_Group, INVALID, nullptr, 0, 0,
+ "Enable code object v3 (AMDGPU only)", nullptr, nullptr)
OPTION(prefix_1, "mcompact-branches=", mcompact_branches_EQ, Joined, m_mips_Features_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mconsole", mconsole, Joined, m_Group, INVALID, nullptr, DriverOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mconstant-cfstrings", mconstant_cfstrings, Flag, clang_ignored_m_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
@@ -2329,6 +2416,7 @@
OPTION(prefix_3, "mhwdiv=", _mhwdiv_EQ, Joined, INVALID, mhwdiv_EQ, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mhwdiv=", mhwdiv_EQ, Joined, m_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_3, "mhwdiv", _mhwdiv, Separate, INVALID, mhwdiv_EQ, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "mhwmult=", mhwmult_EQ, Joined, m_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "miamcu", miamcu, Flag, m_Group, INVALID, nullptr, DriverOption | CoreOption, 0,
"Use Intel MCU ABI", nullptr, nullptr)
OPTION(prefix_1, "mieee-fp", mieee_fp, Flag, clang_ignored_m_Group, INVALID, nullptr, Ignored, 0, nullptr, nullptr, nullptr)
@@ -2460,12 +2548,15 @@
OPTION(prefix_1, "mno-bmi2", mno_bmi2, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-bmi", mno_bmi, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-branch-likely", mno_branch_likely, Flag, m_Group, INVALID, nullptr, HelpHidden, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "mno-bulk-memory", mno_bulk_memory, Flag, m_wasm_Features_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-check-zero-division", mno_check_zero_division, Flag, m_mips_Features_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-cldemote", mno_cldemote, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-clflushopt", mno_clflushopt, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-clwb", mno_clwb, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-clzero", mno_clzero, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-cmpb", mno_cmpb, Flag, m_ppc_Features_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "mno-code-object-v3", mno_code_object_v3, Flag, m_amdgpu_Features_Group, INVALID, nullptr, 0, 0,
+ "Disable code object v3 (AMDGPU only)", nullptr, nullptr)
OPTION(prefix_1, "mno-constant-cfstrings", mno_constant_cfstrings, Flag, m_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-crbits", mno_crbits, Flag, m_ppc_Features_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-crc", mno_crc, Flag, m_mips_Features_Group, INVALID, nullptr, 0, 0,
@@ -2573,6 +2664,8 @@
OPTION(prefix_1, "mno-rdseed", mno_rdseed, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-red-zone", mno_red_zone, Flag, m_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-relax-all", mno_relax_all, Flag, m_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "mno-relax-pic-calls", mno_relax_pic_calls, Flag, m_mips_Features_Group, INVALID, nullptr, HelpHidden, 0,
+ "Do not produce relaxation hints for linkers to try optimizing PIC call sequences into direct calls (MIPS only)", nullptr, nullptr)
OPTION(prefix_1, "mno-relax", mno_relax, Flag, m_riscv_Features_Group, INVALID, nullptr, 0, 0,
"Disable linker relaxation", nullptr, nullptr)
OPTION(prefix_1, "mno-restrict-it", mno_restrict_it, Flag, m_arm_Features_Group, INVALID, nullptr, 0, 0,
@@ -2589,6 +2682,8 @@
OPTION(prefix_1, "mno-simd128", mno_simd128, Flag, m_wasm_Features_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-soft-float", mno_soft_float, Flag, m_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-speculative-load-hardening", mno_speculative_load_hardening, Flag, m_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "mno-sram-ecc", mno_sram_ecc, Flag, m_amdgpu_Features_Group, INVALID, nullptr, 0, 0,
+ "Disable SRAM ECC (AMDGPU only)", nullptr, nullptr)
OPTION(prefix_1, "mno-sse2", mno_sse2, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-sse3", mno_sse3, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-sse4.1", mno_sse4_1, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
@@ -2602,8 +2697,11 @@
OPTION(prefix_1, "mno-stackrealign", mno_stackrealign, Flag, m_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-tbm", mno_tbm, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-thumb", mno_thumb, Flag, m_arm_Features_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "mno-tls-direct-seg-refs", mno_tls_direct_seg_refs, Flag, m_Group, INVALID, nullptr, CC1Option, 0,
+ "Disable direct TLS access through segment registers", nullptr, nullptr)
OPTION(prefix_1, "mno-unaligned-access", mno_unaligned_access, Flag, m_arm_Features_Group, INVALID, nullptr, 0, 0,
"Force all memory accesses to be aligned (AArch32/AArch64 only)", nullptr, nullptr)
+OPTION(prefix_1, "mno-unimplemented-simd128", mno_unimplemented_simd128, Flag, m_wasm_Features_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-vaes", mno_vaes, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-virt", mno_virt, Flag, m_mips_Features_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mno-vpclmulqdq", mno_vpclmulqdq, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
@@ -2685,6 +2783,8 @@
"Limit the number of registers available for integer arguments", nullptr, nullptr)
OPTION(prefix_1, "mrelax-all", mrelax_all, Flag, m_Group, INVALID, nullptr, CC1Option | CC1AsOption, 0,
"(integrated-as) Relax all machine instructions", nullptr, nullptr)
+OPTION(prefix_1, "mrelax-pic-calls", mrelax_pic_calls, Flag, m_mips_Features_Group, INVALID, nullptr, HelpHidden, 0,
+ "Produce relaxation hints for linkers to try optimizing PIC call sequences into direct calls (MIPS only)", nullptr, nullptr)
OPTION(prefix_3, "mrelax-relocations", mrelax_relocations, Flag, INVALID, INVALID, nullptr, CC1Option | CC1AsOption | NoDriverOption, 0,
"Use relaxable elf relocations", nullptr, nullptr)
OPTION(prefix_1, "mrelax", mrelax, Flag, m_riscv_Features_Group, INVALID, nullptr, 0, 0,
@@ -2706,7 +2806,8 @@
OPTION(prefix_1, "msha", msha, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mshstk", mshstk, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "msign-ext", msign_ext, Flag, m_wasm_Features_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_1, "msign-return-address=", msign_return_address, Joined, m_Group, INVALID, nullptr, CC1Option, 0,
+OPTION(prefix_1, "msign-return-address-key=", msign_return_address_key_EQ, Joined, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0, nullptr, nullptr, "a_key,b_key")
+OPTION(prefix_1, "msign-return-address=", msign_return_address_EQ, Joined, m_Group, INVALID, nullptr, CC1Option, 0,
"Select return address signing scope", nullptr, "none,all,non-leaf")
OPTION(prefix_1, "msimd128", msimd128, Flag, m_wasm_Features_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "msingle-float", msingle_float, Flag, m_mips_Features_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
@@ -2714,6 +2815,8 @@
OPTION(prefix_1, "msoft-float", msoft_float, Flag, m_Group, INVALID, nullptr, CC1Option, 0,
"Use software floating point", nullptr, nullptr)
OPTION(prefix_1, "mspeculative-load-hardening", mspeculative_load_hardening, Flag, m_Group, INVALID, nullptr, CoreOption | CC1Option, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "msram-ecc", msram_ecc, Flag, m_amdgpu_Features_Group, INVALID, nullptr, 0, 0,
+ "Enable SRAM ECC (AMDGPU only)", nullptr, nullptr)
OPTION(prefix_1, "msse2", msse2, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "msse3", msse3, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "msse4.1", msse4_1, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
@@ -2741,6 +2844,8 @@
"The thread model to use, e.g. posix, single (posix by default)", nullptr, "posix,single")
OPTION(prefix_1, "mthreads", mthreads, Joined, m_Group, INVALID, nullptr, DriverOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mthumb", mthumb, Flag, m_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "mtls-direct-seg-refs", mtls_direct_seg_refs, Flag, m_Group, INVALID, nullptr, 0, 0,
+ "Enable direct TLS access through segment registers (default)", nullptr, nullptr)
OPTION(prefix_1, "mtp=", mtp_mode_EQ, Joined, m_arm_Features_Group, INVALID, nullptr, 0, 0,
"Read thread pointer from coprocessor register (ARM only)", nullptr, "soft, cp15")
OPTION(prefix_1, "mtp", mtp, Separate, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
@@ -2759,14 +2864,15 @@
OPTION(prefix_1, "munaligned-access", munaligned_access, Flag, m_arm_Features_Group, INVALID, nullptr, 0, 0,
"Allow memory accesses to be unaligned (AArch32/AArch64 only)", nullptr, nullptr)
OPTION(prefix_1, "municode", municode, Joined, m_Group, INVALID, nullptr, DriverOption, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "munimplemented-simd128", munimplemented_simd128, Flag, m_wasm_Features_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "munwind-tables", munwind_tables, Flag, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"Generate unwinding tables for all functions", nullptr, nullptr)
-OPTION(prefix_1, "mv4", mv4, Flag, m_hexagon_Features_Group, mcpu_EQ, "hexagonv4\0", 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mv55", mv55, Flag, m_hexagon_Features_Group, mcpu_EQ, "hexagonv55\0", 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mv5", mv5, Flag, m_hexagon_Features_Group, mcpu_EQ, "hexagonv5\0", 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mv60", mv60, Flag, m_hexagon_Features_Group, mcpu_EQ, "hexagonv60\0", 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mv62", mv62, Flag, m_hexagon_Features_Group, mcpu_EQ, "hexagonv62\0", 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mv65", mv65, Flag, m_hexagon_Features_Group, mcpu_EQ, "hexagonv65\0", 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "mv66", mv66, Flag, m_hexagon_Features_Group, mcpu_EQ, "hexagonv66\0", 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mvaes", mvaes, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mvirt", mvirt, Flag, m_mips_Features_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "mvpclmulqdq", mvpclmulqdq, Flag, m_x86_Features_Group, INVALID, nullptr, CoreOption, 0, nullptr, nullptr, nullptr)
@@ -2806,7 +2912,7 @@
OPTION(prefix_3, "no-cuda-gpu-arch=", no_cuda_gpu_arch_EQ, Joined, INVALID, INVALID, nullptr, DriverOption, 0,
"Remove GPU architecture (e.g. sm_35) from the list of GPUs to compile for. 'all' resets the list to its default value.", nullptr, nullptr)
OPTION(prefix_3, "no-cuda-include-ptx=", no_cuda_include_ptx_EQ, Joined, INVALID, INVALID, nullptr, DriverOption, 0,
- "Do not include PTX for the follwing GPU architecture (e.g. sm_35) or 'all'. May be specified more than once.", nullptr, nullptr)
+ "Do not include PTX for the following GPU architecture (e.g. sm_35) or 'all'. May be specified more than once.", nullptr, nullptr)
OPTION(prefix_3, "no-cuda-noopt-device-debug", no_cuda_noopt_device_debug, Flag, INVALID, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_3, "no-cuda-version-check", no_cuda_version_check, Flag, INVALID, INVALID, nullptr, 0, 0,
"Don't error out if the detected version of the CUDA install is too low for the requested CUDA gpu architecture.", nullptr, nullptr)
@@ -2816,7 +2922,7 @@
"Do not remove finalize method in gc mode", nullptr, nullptr)
OPTION(prefix_1, "no-implicit-float", no_implicit_float, Flag, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"Don't generate implicit floating point instructions", nullptr, nullptr)
-OPTION(prefix_1, "no-integrated-as", anonymous_29, Flag, INVALID, fno_integrated_as, nullptr, CC1Option | DriverOption, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "no-integrated-as", anonymous_33, Flag, INVALID, fno_integrated_as, nullptr, CC1Option | DriverOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_4, "no-integrated-cpp", no_integrated_cpp, Flag, INVALID, INVALID, nullptr, DriverOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_3, "no-line-commands", _no_line_commands, Flag, INVALID, P, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "no-ns-alloc-error", migrator_no_nsalloc_error, Flag, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
@@ -2830,7 +2936,7 @@
"Turn off struct-path aware Type Based Alias Analysis", nullptr, nullptr)
OPTION(prefix_3, "no-system-header-prefix=", no_system_header_prefix, Joined, clang_i_Group, INVALID, nullptr, CC1Option, 0,
"Treat all #include paths starting with <prefix> as not including a system header.", "<prefix>", nullptr)
-OPTION(prefix_3, "no-system-header-prefix", anonymous_27, Separate, INVALID, no_system_header_prefix, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_3, "no-system-header-prefix", anonymous_31, Separate, INVALID, no_system_header_prefix, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_3, "no-undefined", _no_undefined, Flag, INVALID, INVALID, nullptr, LinkerInput, 0, nullptr, nullptr, nullptr)
OPTION(prefix_3, "no-warnings", _no_warnings, Flag, INVALID, w, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "no_dead_strip_inits_and_terms", no__dead__strip__inits__and__terms, Flag, INVALID, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
@@ -2859,18 +2965,18 @@
OPTION(prefix_1, "n", n, Flag, INVALID, INVALID, nullptr, CC1AsOption | NoDriverOption, 0,
"Don't automatically start assembly file with a text section", nullptr, nullptr)
OPTION(prefix_1, "O0", O0, Flag, O_Group, INVALID, nullptr, CC1Option | HelpHidden, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_2, "O0", anonymous_32, Flag, cl_Group, O0, nullptr, CLOption | DriverOption | CLOption, 0,
+OPTION(prefix_2, "O0", anonymous_36, Flag, cl_Group, O0, nullptr, CLOption | DriverOption | CLOption, 0,
"Disable optimization", nullptr, nullptr)
-OPTION(prefix_2, "O1", anonymous_33, Flag, cl_Group, _SLASH_O, "1\0", CLOption | DriverOption | CLOption, 0,
- "Optimize for size (equivalent to /Og /Os /Oy /Ob2 /GF /Gy)", nullptr, nullptr)
-OPTION(prefix_2, "O2", anonymous_34, Flag, cl_Group, _SLASH_O, "2\0", CLOption | DriverOption | CLOption, 0,
- "Optimize for speed (equivalent to /Og /Oi /Ot /Oy /Ob2 /GF /Gy)", nullptr, nullptr)
+OPTION(prefix_2, "O1", anonymous_37, Flag, cl_Group, _SLASH_O, "1\0", CLOption | DriverOption | CLOption, 0,
+ "Optimize for size (same as /Og /Os /Oy /Ob2 /GF /Gy)", nullptr, nullptr)
+OPTION(prefix_2, "O2", anonymous_38, Flag, cl_Group, _SLASH_O, "2\0", CLOption | DriverOption | CLOption, 0,
+ "Optimize for speed (same as /Og /Oi /Ot /Oy /Ob2 /GF /Gy)", nullptr, nullptr)
OPTION(prefix_1, "O4", O4, Flag, O_Group, INVALID, nullptr, CC1Option | HelpHidden, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_2, "Ob0", anonymous_35, Flag, cl_Group, _SLASH_O, "b0\0", CLOption | DriverOption | CLOption, 0,
+OPTION(prefix_2, "Ob0", anonymous_39, Flag, cl_Group, _SLASH_O, "b0\0", CLOption | DriverOption | CLOption, 0,
"Disable function inlining", nullptr, nullptr)
-OPTION(prefix_2, "Ob1", anonymous_36, Flag, cl_Group, _SLASH_O, "b1\0", CLOption | DriverOption | CLOption, 0,
+OPTION(prefix_2, "Ob1", anonymous_40, Flag, cl_Group, _SLASH_O, "b1\0", CLOption | DriverOption | CLOption, 0,
"Only inline functions which are (explicitly or implicitly) marked inline", nullptr, nullptr)
-OPTION(prefix_2, "Ob2", anonymous_37, Flag, cl_Group, _SLASH_O, "b2\0", CLOption | DriverOption | CLOption, 0,
+OPTION(prefix_2, "Ob2", anonymous_41, Flag, cl_Group, _SLASH_O, "b2\0", CLOption | DriverOption | CLOption, 0,
"Inline functions as deemed beneficial by the compiler", nullptr, nullptr)
OPTION(prefix_1, "ObjC++", ObjCXX, Flag, INVALID, INVALID, nullptr, DriverOption, 0,
"Treat source input files as Objective-C++ inputs", nullptr, nullptr)
@@ -2914,14 +3020,14 @@
OPTION(prefix_1, "ObjC", ObjC, Flag, INVALID, INVALID, nullptr, DriverOption, 0,
"Treat source input files as Objective-C inputs", nullptr, nullptr)
OPTION(prefix_1, "object", object, Flag, INVALID, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_2, "Od", anonymous_38, Flag, cl_Group, _SLASH_O, "d\0", CLOption | DriverOption | CLOption, 0,
+OPTION(prefix_2, "Od", anonymous_42, Flag, cl_Group, _SLASH_O, "d\0", CLOption | DriverOption | CLOption, 0,
"Disable optimization", nullptr, nullptr)
OPTION(prefix_1, "Ofast", Ofast, Joined, O_Group, INVALID, nullptr, CC1Option, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_2, "Og", anonymous_39, Flag, cl_Group, _SLASH_O, "g\0", CLOption | DriverOption | CLOption, 0,
+OPTION(prefix_2, "Og", anonymous_43, Flag, cl_Group, _SLASH_O, "g\0", CLOption | DriverOption | CLOption, 0,
"No effect", nullptr, nullptr)
-OPTION(prefix_2, "Oi-", anonymous_41, Flag, cl_Group, _SLASH_O, "i-\0", CLOption | DriverOption | CLOption, 0,
+OPTION(prefix_2, "Oi-", anonymous_45, Flag, cl_Group, _SLASH_O, "i-\0", CLOption | DriverOption | CLOption, 0,
"Disable use of builtin functions", nullptr, nullptr)
-OPTION(prefix_2, "Oi", anonymous_40, Flag, cl_Group, _SLASH_O, "i\0", CLOption | DriverOption | CLOption, 0,
+OPTION(prefix_2, "Oi", anonymous_44, Flag, cl_Group, _SLASH_O, "i\0", CLOption | DriverOption | CLOption, 0,
"Enable use of builtin functions", nullptr, nullptr)
OPTION(prefix_2, "openmp-", _SLASH_openmp_, Flag, cl_ignored_Group, INVALID, nullptr, CLOption | DriverOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_2, "openmp", _SLASH_openmp, Flag, cl_Group, INVALID, nullptr, CLOption | DriverOption | CLOption, 0, nullptr, nullptr, nullptr)
@@ -2929,9 +3035,9 @@
"File name to use for YAML optimization record output", nullptr, nullptr)
OPTION(prefix_3, "optimize=", _optimize_EQ, Joined, INVALID, O, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_3, "optimize", _optimize, Flag, INVALID, O, nullptr, 0, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_2, "Os", anonymous_42, Flag, cl_Group, _SLASH_O, "s\0", CLOption | DriverOption | CLOption, 0,
+OPTION(prefix_2, "Os", anonymous_46, Flag, cl_Group, _SLASH_O, "s\0", CLOption | DriverOption | CLOption, 0,
"Optimize for size", nullptr, nullptr)
-OPTION(prefix_2, "Ot", anonymous_43, Flag, cl_Group, _SLASH_O, "t\0", CLOption | DriverOption | CLOption, 0,
+OPTION(prefix_2, "Ot", anonymous_47, Flag, cl_Group, _SLASH_O, "t\0", CLOption | DriverOption | CLOption, 0,
"Optimize for speed", nullptr, nullptr)
OPTION(prefix_1, "output-asm-variant", output_asm_variant, Separate, INVALID, INVALID, nullptr, CC1AsOption | NoDriverOption, 0,
"Select the asm variant index to use for output", nullptr, nullptr)
@@ -2939,16 +3045,16 @@
OPTION(prefix_3, "output-class-directory", _output_class_directory, Separate, INVALID, foutput_class_dir_EQ, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_3, "output=", _output_EQ, Joined, INVALID, o, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_3, "output", _output, Separate, INVALID, o, nullptr, 0, 0, nullptr, nullptr, nullptr)
-OPTION(prefix_2, "Ox", anonymous_44, Flag, cl_Group, _SLASH_O, "x\0", CLOption | DriverOption | CLOption, 0,
- "Deprecated (equivalent to /Og /Oi /Ot /Oy /Ob2); use /O2 instead", nullptr, nullptr)
-OPTION(prefix_2, "Oy-", anonymous_46, Flag, cl_Group, _SLASH_O, "y-\0", CLOption | DriverOption | CLOption, 0,
+OPTION(prefix_2, "Ox", anonymous_48, Flag, cl_Group, _SLASH_O, "x\0", CLOption | DriverOption | CLOption, 0,
+ "Deprecated (same as /Og /Oi /Ot /Oy /Ob2); use /O2 instead", nullptr, nullptr)
+OPTION(prefix_2, "Oy-", anonymous_50, Flag, cl_Group, _SLASH_O, "y-\0", CLOption | DriverOption | CLOption, 0,
"Disable frame pointer omission (x86 only, default)", nullptr, nullptr)
-OPTION(prefix_2, "Oy", anonymous_45, Flag, cl_Group, _SLASH_O, "y\0", CLOption | DriverOption | CLOption, 0,
+OPTION(prefix_2, "Oy", anonymous_49, Flag, cl_Group, _SLASH_O, "y\0", CLOption | DriverOption | CLOption, 0,
"Enable frame pointer omission (x86 only)", nullptr, nullptr)
OPTION(prefix_1, "O", O_flag, Flag, INVALID, O, "2\0", CC1Option, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "O", O, Joined, O_Group, INVALID, nullptr, CC1Option, 0, nullptr, nullptr, nullptr)
OPTION(prefix_2, "O", _SLASH_O, Joined, cl_Group, INVALID, nullptr, CLOption | DriverOption | CLOption, 0,
- "Set multiple /O flags at once; e.g. '/O2y-' is the same as '/O2 /y-'", "<flags>", nullptr)
+ "Set multiple /O flags at once; e.g. '/O2y-' for '/O2 /Oy-'", "<flags>", nullptr)
OPTION(prefix_1, "o", o, JoinedOrSeparate, INVALID, INVALID, nullptr, DriverOption | RenderAsInput | CC1Option | CC1AsOption, 0,
"Write output to <file>", "<file>", nullptr)
OPTION(prefix_2, "o", _SLASH_o, JoinedOrSeparate, cl_Group, INVALID, nullptr, CLOption | DriverOption | CLOption, 0,
@@ -3047,6 +3153,8 @@
OPTION(prefix_1, "Q", Q, Flag, INVALID, INVALID, nullptr, HelpHidden, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "rdynamic", rdynamic, Flag, INVALID, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "read_only_relocs", read__only__relocs, Separate, INVALID, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_1, "record-command-line", record_command_line, Separate, INVALID, INVALID, nullptr, CC1Option | CC1AsOption | NoDriverOption, 0,
+ "The string to embed in the .LLVM.command.line section.", nullptr, nullptr)
OPTION(prefix_1, "relaxed-aliasing", relaxed_aliasing, Flag, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"Turn off Type Based Alias Analysis", nullptr, nullptr)
OPTION(prefix_4, "relocatable-pch", relocatable_pch, Flag, INVALID, INVALID, nullptr, CC1Option, 0,
@@ -3122,6 +3230,10 @@
"Print cl.exe style /showIncludes to stdout", nullptr, nullptr)
OPTION(prefix_1, "show-inst", show_inst, Flag, INVALID, INVALID, nullptr, CC1AsOption | NoDriverOption, 0,
"Show internal instruction representation in transliterate mode", nullptr, nullptr)
+OPTION(prefix_2, "showFilenames-", _SLASH_showFilenames_, Flag, cl_Group, INVALID, nullptr, CLOption | DriverOption | CLOption, 0,
+ "Don't print the name of each compiled file (default)", nullptr, nullptr)
+OPTION(prefix_2, "showFilenames", _SLASH_showFilenames, Flag, cl_Group, INVALID, nullptr, CLOption | DriverOption | CLOption, 0,
+ "Print the name of each compiled file", nullptr, nullptr)
OPTION(prefix_2, "showIncludes", _SLASH_showIncludes, Flag, cl_Group, show_includes, nullptr, CLOption | DriverOption | CLOption, 0,
"Print info about included files to stderr", nullptr, nullptr)
OPTION(prefix_3, "signed-char", _signed_char, Flag, INVALID, fsigned_char, nullptr, 0, 0, nullptr, nullptr, nullptr)
@@ -3167,7 +3279,7 @@
OPTION(prefix_3, "sysroot", _sysroot, Separate, INVALID, _sysroot_EQ, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_3, "system-header-prefix=", system_header_prefix, Joined, clang_i_Group, INVALID, nullptr, CC1Option, 0,
"Treat all #include paths starting with <prefix> as including a system header.", "<prefix>", nullptr)
-OPTION(prefix_3, "system-header-prefix", anonymous_26, Separate, INVALID, system_header_prefix, nullptr, 0, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_3, "system-header-prefix", anonymous_30, Separate, INVALID, system_header_prefix, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "S", S, Flag, Action_Group, INVALID, nullptr, DriverOption | CC1Option, 0,
"Only run preprocess and compilation steps", nullptr, nullptr)
OPTION(prefix_1, "s", s, Flag, Link_Group, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
@@ -3180,6 +3292,8 @@
OPTION(prefix_3, "target-help", _target_help, Flag, INVALID, INVALID, nullptr, 0, 0, nullptr, nullptr, nullptr)
OPTION(prefix_1, "target-linker-version", target_linker_version, Separate, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
"Target linker version", nullptr, nullptr)
+OPTION(prefix_1, "target-sdk-version=", target_sdk_version_EQ, Joined, INVALID, INVALID, nullptr, CC1Option | CC1AsOption | NoDriverOption, 0,
+ "The version of target SDK used for compilation", nullptr, nullptr)
OPTION(prefix_3, "target=", target, Joined, INVALID, INVALID, nullptr, DriverOption | CoreOption, 0,
"Generate code for the given target", nullptr, nullptr)
OPTION(prefix_1, "target", target_legacy_spelling, Separate, INVALID, target, nullptr, 0, 0, nullptr, nullptr, nullptr)
@@ -3197,8 +3311,6 @@
"Do not generate coverage files or remove coverage changes from IR", nullptr, nullptr)
OPTION(prefix_1, "time", time, Flag, INVALID, INVALID, nullptr, 0, 0,
"Time individual commands", nullptr, nullptr)
-OPTION(prefix_1, "token-cache", token_cache, Separate, INVALID, INVALID, nullptr, CC1Option | NoDriverOption, 0,
- "Use specified token cache file", "<path>", nullptr)
OPTION(prefix_2, "TP", _SLASH_TP, Flag, cl_compile_Group, INVALID, nullptr, CLOption | DriverOption, 0,
"Treat all source files as C++", nullptr, nullptr)
OPTION(prefix_2, "Tp", _SLASH_Tp, JoinedOrSeparate, cl_compile_Group, INVALID, nullptr, CLOption | DriverOption, 0,
@@ -3394,7 +3506,15 @@
"Enable CodeView debug information in object files", nullptr, nullptr)
OPTION(prefix_2, "Za", _SLASH_Za, Flag, cl_Group, INVALID, nullptr, CLOption | DriverOption | CLOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_2, "Zc:__cplusplus", _SLASH_Zc___cplusplus, Flag, cl_ignored_Group, INVALID, nullptr, CLOption | DriverOption, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_2, "Zc:alignedNew-", _SLASH_Zc_alignedNew_, Flag, cl_Group, fno_aligned_allocation, nullptr, CLOption | DriverOption | CLOption, 0,
+ "Disable C++17 aligned allocation functions", nullptr, nullptr)
+OPTION(prefix_2, "Zc:alignedNew", _SLASH_Zc_alignedNew, Flag, cl_Group, faligned_allocation, nullptr, CLOption | DriverOption | CLOption, 0,
+ "Enable C++17 aligned allocation functions", nullptr, nullptr)
OPTION(prefix_2, "Zc:auto", _SLASH_Zc_auto, Flag, cl_ignored_Group, INVALID, nullptr, CLOption | DriverOption, 0, nullptr, nullptr, nullptr)
+OPTION(prefix_2, "Zc:dllexportInlines-", _SLASH_Zc_dllexportInlines_, Flag, cl_Group, INVALID, nullptr, CLOption | DriverOption | CLOption, 0,
+ "Don't dllexport/dllimport inline member functions of dllexport/import classes", nullptr, nullptr)
+OPTION(prefix_2, "Zc:dllexportInlines", _SLASH_Zc_dllexportInlines, Flag, cl_Group, INVALID, nullptr, CLOption | DriverOption | CLOption, 0,
+ "dllexport/dllimport inline member functions of dllexport/import classes (default)", nullptr, nullptr)
OPTION(prefix_2, "Zc:forScope", _SLASH_Zc_forScope, Flag, cl_ignored_Group, INVALID, nullptr, CLOption | DriverOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_2, "Zc:inline", _SLASH_Zc_inline, Flag, cl_ignored_Group, INVALID, nullptr, CLOption | DriverOption, 0, nullptr, nullptr, nullptr)
OPTION(prefix_2, "Zc:rvalueCast", _SLASH_Zc_rvalueCast, Flag, cl_ignored_Group, INVALID, nullptr, CLOption | DriverOption, 0, nullptr, nullptr, nullptr)
@@ -3456,11 +3576,11 @@
const char *Values =
#define GET_CHECKERS
- #define CHECKER(FULLNAME, CLASS, DESCFILE, HT, G, H) FULLNAME ","
+ #define CHECKER(FULLNAME, CLASS, HT, DOC_URI) FULLNAME ","
#include "clang/StaticAnalyzer/Checkers/Checkers.inc"
#undef GET_CHECKERS
#define GET_PACKAGES
- #define PACKAGE(FULLNAME, G, D) FULLNAME ","
+ #define PACKAGE(FULLNAME) FULLNAME ","
#include "clang/StaticAnalyzer/Checkers/Checkers.inc"
#undef GET_PACKAGES
;
diff --git a/linux-x64/clang/include/clang/Driver/Phases.h b/linux-x64/clang/include/clang/Driver/Phases.h
index cd6b5b5..7199c65 100644
--- a/linux-x64/clang/include/clang/Driver/Phases.h
+++ b/linux-x64/clang/include/clang/Driver/Phases.h
@@ -1,9 +1,8 @@
//===--- Phases.h - Transformations on Driver Types -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Driver/SanitizerArgs.h b/linux-x64/clang/include/clang/Driver/SanitizerArgs.h
index d144e48..18e8e4f 100644
--- a/linux-x64/clang/include/clang/Driver/SanitizerArgs.h
+++ b/linux-x64/clang/include/clang/Driver/SanitizerArgs.h
@@ -1,9 +1,8 @@
//===--- SanitizerArgs.h - Arguments for sanitizer tools -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_DRIVER_SANITIZERARGS_H
@@ -36,7 +35,10 @@
int AsanFieldPadding = 0;
bool SharedRuntime = false;
bool AsanUseAfterScope = true;
+ bool AsanPoisonCustomArrayCookie = false;
bool AsanGlobalsDeadStripping = false;
+ bool AsanUseOdrIndicator = false;
+ std::string HwasanAbi;
bool LinkCXXRuntimes = false;
bool NeedPIE = false;
bool SafeStackRuntime = false;
@@ -78,8 +80,10 @@
bool requiresPIE() const;
bool needsUnwindTables() const;
+ bool needsLTO() const;
bool linkCXXRuntimes() const { return LinkCXXRuntimes; }
bool hasCrossDsoCfi() const { return CfiCrossDso; }
+ bool hasAnySanitizer() const { return !Sanitizers.empty(); }
void addArgs(const ToolChain &TC, const llvm::opt::ArgList &Args,
llvm::opt::ArgStringList &CmdArgs, types::ID InputType) const;
};
diff --git a/linux-x64/clang/include/clang/Driver/Tool.h b/linux-x64/clang/include/clang/Driver/Tool.h
index b02ac66..8d04916 100644
--- a/linux-x64/clang/include/clang/Driver/Tool.h
+++ b/linux-x64/clang/include/clang/Driver/Tool.h
@@ -1,9 +1,8 @@
//===--- Tool.h - Compilation Tools -----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Driver/ToolChain.h b/linux-x64/clang/include/clang/Driver/ToolChain.h
index bc61bc6..e82675d 100644
--- a/linux-x64/clang/include/clang/Driver/ToolChain.h
+++ b/linux-x64/clang/include/clang/Driver/ToolChain.h
@@ -1,16 +1,17 @@
//===- ToolChain.h - Collections of tools for one platform ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_DRIVER_TOOLCHAIN_H
#define LLVM_CLANG_DRIVER_TOOLCHAIN_H
+#include "clang/Basic/DebugInfoOptions.h"
#include "clang/Basic/LLVM.h"
+#include "clang/Basic/LangOptions.h"
#include "clang/Basic/Sanitizers.h"
#include "clang/Driver/Action.h"
#include "clang/Driver/Multilib.h"
@@ -348,6 +349,12 @@
return 0;
}
+ /// Get the default trivial automatic variable initialization.
+ virtual LangOptions::TrivialAutoVarInitKind
+ GetDefaultTrivialAutoVarInit() const {
+ return LangOptions::TrivialAutoVarInitKind::Uninitialized;
+ }
+
/// GetDefaultLinker - Get the default linker to use.
virtual const char *getDefaultLinker() const { return "ld"; }
@@ -380,6 +387,9 @@
/// needsProfileRT - returns true if instrumentation profile is on.
static bool needsProfileRT(const llvm::opt::ArgList &Args);
+ /// Returns true if gcov instrumentation (-fprofile-arcs or --coverage) is on.
+ static bool needsGCovInstrumentation(const llvm::opt::ArgList &Args);
+
/// IsUnwindTablesDefault - Does this tool chain use -funwind-tables
/// by default.
virtual bool IsUnwindTablesDefault(const llvm::opt::ArgList &Args) const;
@@ -402,6 +412,11 @@
/// Complain if this tool chain doesn't support Objective-C ARC.
virtual void CheckObjCARC() const {}
+ /// Get the default debug info format. Typically, this is DWARF.
+ virtual codegenoptions::DebugInfoFormat getDefaultDebugFormat() const {
+ return codegenoptions::DIF_DWARF;
+ }
+
/// UseDwarfDebugFlags - Embed the compile options to clang into the Dwarf
/// compile unit information.
virtual bool UseDwarfDebugFlags() const { return false; }
@@ -426,6 +441,10 @@
return true;
}
+ /// Adjust debug information kind considering all passed options.
+ virtual void adjustDebugInfoKind(codegenoptions::DebugInfoKind &DebugInfoKind,
+ const llvm::opt::ArgList &Args) const {}
+
/// GetExceptionModel - Return the tool chain exception model.
virtual llvm::ExceptionHandling
GetExceptionModel(const llvm::opt::ArgList &Args) const;
@@ -434,7 +453,9 @@
virtual bool SupportsEmbeddedBitcode() const { return false; }
/// getThreadModel() - Which thread model does this target use?
- virtual std::string getThreadModel() const { return "posix"; }
+ virtual std::string getThreadModel(const llvm::opt::ArgList &) const {
+ return "posix";
+ }
/// isThreadModelSupported() - Does this target support a thread model?
virtual bool isThreadModelSupported(const StringRef Model) const;
diff --git a/linux-x64/clang/include/clang/Driver/Types.def b/linux-x64/clang/include/clang/Driver/Types.def
index c25bc4b..d2aaf58 100644
--- a/linux-x64/clang/include/clang/Driver/Types.def
+++ b/linux-x64/clang/include/clang/Driver/Types.def
@@ -1,9 +1,8 @@
//===--- Types.def - Driver Type info ---------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Driver/Types.h b/linux-x64/clang/include/clang/Driver/Types.h
index 5bc6668..53afada 100644
--- a/linux-x64/clang/include/clang/Driver/Types.h
+++ b/linux-x64/clang/include/clang/Driver/Types.h
@@ -1,9 +1,8 @@
//===--- Types.h - Input & Temporary Driver Types ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Driver/Util.h b/linux-x64/clang/include/clang/Driver/Util.h
index 07495a1..6788420 100644
--- a/linux-x64/clang/include/clang/Driver/Util.h
+++ b/linux-x64/clang/include/clang/Driver/Util.h
@@ -1,9 +1,8 @@
//===--- Util.h - Common Driver Utilities -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Driver/XRayArgs.h b/linux-x64/clang/include/clang/Driver/XRayArgs.h
index c7ca945..fa2583f 100644
--- a/linux-x64/clang/include/clang/Driver/XRayArgs.h
+++ b/linux-x64/clang/include/clang/Driver/XRayArgs.h
@@ -1,9 +1,8 @@
//===--- XRayArgs.h - Arguments for XRay ------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_DRIVER_XRAYARGS_H
diff --git a/linux-x64/clang/include/clang/Edit/Commit.h b/linux-x64/clang/include/clang/Edit/Commit.h
index d6eb6cd..f6c7988 100644
--- a/linux-x64/clang/include/clang/Edit/Commit.h
+++ b/linux-x64/clang/include/clang/Edit/Commit.h
@@ -1,9 +1,8 @@
//===- Commit.h - A unit of edits -------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Edit/EditedSource.h b/linux-x64/clang/include/clang/Edit/EditedSource.h
index 52873c3..60072f6 100644
--- a/linux-x64/clang/include/clang/Edit/EditedSource.h
+++ b/linux-x64/clang/include/clang/Edit/EditedSource.h
@@ -1,9 +1,8 @@
//===- EditedSource.h - Collection of source edits --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Edit/EditsReceiver.h b/linux-x64/clang/include/clang/Edit/EditsReceiver.h
index 1bebbeb..75e7316 100644
--- a/linux-x64/clang/include/clang/Edit/EditsReceiver.h
+++ b/linux-x64/clang/include/clang/Edit/EditsReceiver.h
@@ -1,9 +1,8 @@
//===- EditedSource.h - Collection of source edits --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Edit/FileOffset.h b/linux-x64/clang/include/clang/Edit/FileOffset.h
index 02c1b96..b1f6176 100644
--- a/linux-x64/clang/include/clang/Edit/FileOffset.h
+++ b/linux-x64/clang/include/clang/Edit/FileOffset.h
@@ -1,9 +1,8 @@
//===- FileOffset.h - Offset in a file --------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Edit/Rewriters.h b/linux-x64/clang/include/clang/Edit/Rewriters.h
index 8338d71..210f9a8 100644
--- a/linux-x64/clang/include/clang/Edit/Rewriters.h
+++ b/linux-x64/clang/include/clang/Edit/Rewriters.h
@@ -1,9 +1,8 @@
//===--- Rewriters.h - Rewritings ---------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Format/Format.h b/linux-x64/clang/include/clang/Format/Format.h
index cb5886f..4bc0a5c 100644
--- a/linux-x64/clang/include/clang/Format/Format.h
+++ b/linux-x64/clang/include/clang/Format/Format.h
@@ -1,9 +1,8 @@
//===--- Format.h - Format C++ code -----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -533,20 +532,17 @@
/// \code
/// try {
/// foo();
- /// } catch () {
+ /// }
+ /// catch () {
/// }
/// void foo() { bar(); }
- /// class foo
- /// {
+ /// class foo {
/// };
/// if (foo()) {
- /// } else {
/// }
- /// enum X : int
- /// {
- /// A,
- /// B
- /// };
+ /// else {
+ /// }
+ /// enum X : int { A, B };
/// \endcode
BS_Stroustrup,
/// Always break before braces.
@@ -1139,11 +1135,13 @@
/// can be a subset of another - the longest prefix is always matched. Within
/// a group, the imports are ordered lexicographically.
///
- /// In the .clang-format configuration file, this can be configured like:
+ /// In the .clang-format configuration file, this can be configured like
+ /// in the following yaml example. This will result in imports being
+ /// formatted as in the Java example below.
/// \code{.yaml}
/// JavaImportGroups: ['com.example', 'com', 'org']
/// \endcode
- /// Which will result in imports being formatted as so:
+ ///
/// \code{.java}
/// import static com.example.function1;
///
diff --git a/linux-x64/clang/include/clang/Frontend/ASTConsumers.h b/linux-x64/clang/include/clang/Frontend/ASTConsumers.h
index c2144da..34958ee 100644
--- a/linux-x64/clang/include/clang/Frontend/ASTConsumers.h
+++ b/linux-x64/clang/include/clang/Frontend/ASTConsumers.h
@@ -1,9 +1,8 @@
//===--- ASTConsumers.h - ASTConsumer implementations -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Frontend/ASTUnit.h b/linux-x64/clang/include/clang/Frontend/ASTUnit.h
index d0b532c..cef638e 100644
--- a/linux-x64/clang/include/clang/Frontend/ASTUnit.h
+++ b/linux-x64/clang/include/clang/Frontend/ASTUnit.h
@@ -1,9 +1,8 @@
//===- ASTUnit.h - ASTUnit utility ------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Frontend/ChainedDiagnosticConsumer.h b/linux-x64/clang/include/clang/Frontend/ChainedDiagnosticConsumer.h
index 04c6077..ca28456 100644
--- a/linux-x64/clang/include/clang/Frontend/ChainedDiagnosticConsumer.h
+++ b/linux-x64/clang/include/clang/Frontend/ChainedDiagnosticConsumer.h
@@ -1,9 +1,8 @@
//===- ChainedDiagnosticConsumer.h - Chain Diagnostic Clients ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Frontend/CommandLineSourceLoc.h b/linux-x64/clang/include/clang/Frontend/CommandLineSourceLoc.h
index 7ae98e0..e95d100 100644
--- a/linux-x64/clang/include/clang/Frontend/CommandLineSourceLoc.h
+++ b/linux-x64/clang/include/clang/Frontend/CommandLineSourceLoc.h
@@ -1,10 +1,9 @@
//===--- CommandLineSourceLoc.h - Parsing for source locations-*- C++ -*---===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Frontend/CompilerInstance.h b/linux-x64/clang/include/clang/Frontend/CompilerInstance.h
index ad9784b..002cc61 100644
--- a/linux-x64/clang/include/clang/Frontend/CompilerInstance.h
+++ b/linux-x64/clang/include/clang/Frontend/CompilerInstance.h
@@ -1,9 +1,8 @@
//===-- CompilerInstance.h - Clang Compiler Instance ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -22,6 +21,7 @@
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/IntrusiveRefCntPtr.h"
#include "llvm/ADT/StringRef.h"
+#include "llvm/Support/BuryPointer.h"
#include <cassert>
#include <list>
#include <memory>
@@ -411,7 +411,7 @@
}
void resetAndLeakFileManager() {
- BuryPointer(FileMgr.get());
+ llvm::BuryPointer(FileMgr.get());
FileMgr.resetWithoutRelease();
}
@@ -431,7 +431,7 @@
}
void resetAndLeakSourceManager() {
- BuryPointer(SourceMgr.get());
+ llvm::BuryPointer(SourceMgr.get());
SourceMgr.resetWithoutRelease();
}
@@ -453,7 +453,7 @@
std::shared_ptr<Preprocessor> getPreprocessorPtr() { return PP; }
void resetAndLeakPreprocessor() {
- BuryPointer(new std::shared_ptr<Preprocessor>(PP));
+ llvm::BuryPointer(new std::shared_ptr<Preprocessor>(PP));
}
/// Replace the current preprocessor.
@@ -471,7 +471,7 @@
}
void resetAndLeakASTContext() {
- BuryPointer(Context.get());
+ llvm::BuryPointer(Context.get());
Context.resetWithoutRelease();
}
diff --git a/linux-x64/clang/include/clang/Frontend/CompilerInvocation.h b/linux-x64/clang/include/clang/Frontend/CompilerInvocation.h
index c2f3a43..413134b 100644
--- a/linux-x64/clang/include/clang/Frontend/CompilerInvocation.h
+++ b/linux-x64/clang/include/clang/Frontend/CompilerInvocation.h
@@ -1,20 +1,19 @@
//===- CompilerInvocation.h - Compiler Invocation Helper Data ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_FRONTEND_COMPILERINVOCATION_H
#define LLVM_CLANG_FRONTEND_COMPILERINVOCATION_H
+#include "clang/Basic/CodeGenOptions.h"
#include "clang/Basic/DiagnosticOptions.h"
#include "clang/Basic/FileSystemOptions.h"
#include "clang/Basic/LLVM.h"
#include "clang/Basic/LangOptions.h"
-#include "clang/Frontend/CodeGenOptions.h"
#include "clang/Frontend/DependencyOutputOptions.h"
#include "clang/Frontend/FrontendOptions.h"
#include "clang/Frontend/LangStandard.h"
diff --git a/linux-x64/clang/include/clang/Frontend/DependencyOutputOptions.h b/linux-x64/clang/include/clang/Frontend/DependencyOutputOptions.h
index f419d26..7a4f333 100644
--- a/linux-x64/clang/include/clang/Frontend/DependencyOutputOptions.h
+++ b/linux-x64/clang/include/clang/Frontend/DependencyOutputOptions.h
@@ -1,9 +1,8 @@
//===--- DependencyOutputOptions.h ------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Frontend/DiagnosticRenderer.h b/linux-x64/clang/include/clang/Frontend/DiagnosticRenderer.h
index 3bbf379..b939ebe 100644
--- a/linux-x64/clang/include/clang/Frontend/DiagnosticRenderer.h
+++ b/linux-x64/clang/include/clang/Frontend/DiagnosticRenderer.h
@@ -1,9 +1,8 @@
//===- DiagnosticRenderer.h - Diagnostic Pretty-Printing --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Frontend/FrontendAction.h b/linux-x64/clang/include/clang/Frontend/FrontendAction.h
index 2231438..3a107d5 100644
--- a/linux-x64/clang/include/clang/Frontend/FrontendAction.h
+++ b/linux-x64/clang/include/clang/Frontend/FrontendAction.h
@@ -1,9 +1,8 @@
//===-- FrontendAction.h - Generic Frontend Action Interface ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -305,6 +304,7 @@
std::unique_ptr<FrontendAction> WrappedAction;
protected:
+ bool PrepareToExecuteAction(CompilerInstance &CI) override;
std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
StringRef InFile) override;
bool BeginInvocation(CompilerInstance &CI) override;
diff --git a/linux-x64/clang/include/clang/Frontend/FrontendActions.h b/linux-x64/clang/include/clang/Frontend/FrontendActions.h
index 3986080..3acd1e7 100644
--- a/linux-x64/clang/include/clang/Frontend/FrontendActions.h
+++ b/linux-x64/clang/include/clang/Frontend/FrontendActions.h
@@ -1,9 +1,8 @@
//===-- FrontendActions.h - Useful Frontend Actions -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -261,11 +260,6 @@
void ExecuteAction() override;
};
-class GeneratePTHAction : public PreprocessorFrontendAction {
-protected:
- void ExecuteAction() override;
-};
-
class PreprocessOnlyAction : public PreprocessorFrontendAction {
protected:
void ExecuteAction() override;
diff --git a/linux-x64/clang/include/clang/Frontend/FrontendDiagnostic.h b/linux-x64/clang/include/clang/Frontend/FrontendDiagnostic.h
index 0f37b7e..f41504d 100644
--- a/linux-x64/clang/include/clang/Frontend/FrontendDiagnostic.h
+++ b/linux-x64/clang/include/clang/Frontend/FrontendDiagnostic.h
@@ -1,28 +1,14 @@
//===--- DiagnosticFrontend.h - Diagnostics for frontend --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_FRONTEND_FRONTENDDIAGNOSTIC_H
#define LLVM_CLANG_FRONTEND_FRONTENDDIAGNOSTIC_H
-#include "clang/Basic/Diagnostic.h"
-
-namespace clang {
- namespace diag {
- enum {
-#define DIAG(ENUM,FLAGS,DEFAULT_MAPPING,DESC,GROUP,\
- SFINAE,NOWERROR,SHOWINSYSHEADER,CATEGORY) ENUM,
-#define FRONTENDSTART
-#include "clang/Basic/DiagnosticFrontendKinds.inc"
-#undef DIAG
- NUM_BUILTIN_FRONTEND_DIAGNOSTICS
- };
- } // end namespace diag
-} // end namespace clang
+#include "clang/Basic/DiagnosticFrontend.h"
#endif
diff --git a/linux-x64/clang/include/clang/Frontend/FrontendOptions.h b/linux-x64/clang/include/clang/Frontend/FrontendOptions.h
index bc56838..4c4ed96 100644
--- a/linux-x64/clang/include/clang/Frontend/FrontendOptions.h
+++ b/linux-x64/clang/include/clang/Frontend/FrontendOptions.h
@@ -1,9 +1,8 @@
//===- FrontendOptions.h ----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -88,9 +87,6 @@
/// Generate pre-compiled header.
GeneratePCH,
- /// Generate pre-tokenized header.
- GeneratePTH,
-
/// Only execute frontend initialization.
InitOnly,
diff --git a/linux-x64/clang/include/clang/Frontend/FrontendPluginRegistry.h b/linux-x64/clang/include/clang/Frontend/FrontendPluginRegistry.h
index 9a85e89..8105785 100644
--- a/linux-x64/clang/include/clang/Frontend/FrontendPluginRegistry.h
+++ b/linux-x64/clang/include/clang/Frontend/FrontendPluginRegistry.h
@@ -1,9 +1,8 @@
//===- FrontendPluginRegistry.h ---------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Frontend/LangStandard.h b/linux-x64/clang/include/clang/Frontend/LangStandard.h
index 83e452d..406ca56 100644
--- a/linux-x64/clang/include/clang/Frontend/LangStandard.h
+++ b/linux-x64/clang/include/clang/Frontend/LangStandard.h
@@ -1,9 +1,8 @@
//===--- LangStandard.h -----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Frontend/LangStandards.def b/linux-x64/clang/include/clang/Frontend/LangStandards.def
index 1e895d7..196cb43 100644
--- a/linux-x64/clang/include/clang/Frontend/LangStandards.def
+++ b/linux-x64/clang/include/clang/Frontend/LangStandards.def
@@ -1,9 +1,8 @@
//===-- LangStandards.def - Language Standard Data --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -82,9 +81,12 @@
C, "ISO C 2017",
LineComment | C99 | C11 | C17 | Digraphs | HexFloat)
LANGSTANDARD_ALIAS(c17, "iso9899:2017")
+LANGSTANDARD_ALIAS(c17, "c18")
+LANGSTANDARD_ALIAS(c17, "iso9899:2018")
LANGSTANDARD(gnu17, "gnu17",
C, "ISO C 2017 with GNU extensions",
LineComment | C99 | C11 | C17 | Digraphs | GNUMode | HexFloat)
+LANGSTANDARD_ALIAS(gnu17, "gnu18")
// C++ modes
LANGSTANDARD(cxx98, "c++98",
diff --git a/linux-x64/clang/include/clang/Frontend/LayoutOverrideSource.h b/linux-x64/clang/include/clang/Frontend/LayoutOverrideSource.h
index 28e3cf0..ea16114 100644
--- a/linux-x64/clang/include/clang/Frontend/LayoutOverrideSource.h
+++ b/linux-x64/clang/include/clang/Frontend/LayoutOverrideSource.h
@@ -1,9 +1,8 @@
//===--- LayoutOverrideSource.h --Override Record Layouts -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Frontend/LogDiagnosticPrinter.h b/linux-x64/clang/include/clang/Frontend/LogDiagnosticPrinter.h
index 3286ecf..4816275 100644
--- a/linux-x64/clang/include/clang/Frontend/LogDiagnosticPrinter.h
+++ b/linux-x64/clang/include/clang/Frontend/LogDiagnosticPrinter.h
@@ -1,9 +1,8 @@
//===--- LogDiagnosticPrinter.h - Log Diagnostic Client ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Frontend/MigratorOptions.h b/linux-x64/clang/include/clang/Frontend/MigratorOptions.h
index 8eb71b1..cf50ffc 100644
--- a/linux-x64/clang/include/clang/Frontend/MigratorOptions.h
+++ b/linux-x64/clang/include/clang/Frontend/MigratorOptions.h
@@ -1,9 +1,8 @@
//===--- MigratorOptions.h - MigratorOptions Options ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Frontend/MultiplexConsumer.h b/linux-x64/clang/include/clang/Frontend/MultiplexConsumer.h
index 214fefb..ca6ed83 100644
--- a/linux-x64/clang/include/clang/Frontend/MultiplexConsumer.h
+++ b/linux-x64/clang/include/clang/Frontend/MultiplexConsumer.h
@@ -1,9 +1,8 @@
//===-- MultiplexConsumer.h - AST Consumer for PCH Generation ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Frontend/PCHContainerOperations.h b/linux-x64/clang/include/clang/Frontend/PCHContainerOperations.h
index 7a12ebc..fa977a6 100644
--- a/linux-x64/clang/include/clang/Frontend/PCHContainerOperations.h
+++ b/linux-x64/clang/include/clang/Frontend/PCHContainerOperations.h
@@ -1,119 +1,14 @@
//===--- Frontend/PCHContainerOperations.h - PCH Containers -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_PCH_CONTAINER_OPERATIONS_H
#define LLVM_CLANG_PCH_CONTAINER_OPERATIONS_H
-#include "clang/Basic/Module.h"
-#include "llvm/ADT/SmallVector.h"
-#include "llvm/ADT/StringMap.h"
-#include "llvm/Support/MemoryBuffer.h"
-#include <memory>
-
-namespace llvm {
-class raw_pwrite_stream;
-}
-
-using llvm::StringRef;
-
-namespace clang {
-
-class ASTConsumer;
-class CodeGenOptions;
-class DiagnosticsEngine;
-class CompilerInstance;
-
-struct PCHBuffer {
- ASTFileSignature Signature;
- llvm::SmallVector<char, 0> Data;
- bool IsComplete;
-};
-
-/// This abstract interface provides operations for creating
-/// containers for serialized ASTs (precompiled headers and clang
-/// modules).
-class PCHContainerWriter {
-public:
- virtual ~PCHContainerWriter() = 0;
- virtual StringRef getFormat() const = 0;
-
- /// Return an ASTConsumer that can be chained with a
- /// PCHGenerator that produces a wrapper file format containing a
- /// serialized AST bitstream.
- virtual std::unique_ptr<ASTConsumer>
- CreatePCHContainerGenerator(CompilerInstance &CI,
- const std::string &MainFileName,
- const std::string &OutputFileName,
- std::unique_ptr<llvm::raw_pwrite_stream> OS,
- std::shared_ptr<PCHBuffer> Buffer) const = 0;
-};
-
-/// This abstract interface provides operations for unwrapping
-/// containers for serialized ASTs (precompiled headers and clang
-/// modules).
-class PCHContainerReader {
-public:
- virtual ~PCHContainerReader() = 0;
- /// Equivalent to the format passed to -fmodule-format=
- virtual StringRef getFormat() const = 0;
-
- /// Returns the serialized AST inside the PCH container Buffer.
- virtual StringRef ExtractPCH(llvm::MemoryBufferRef Buffer) const = 0;
-};
-
-/// Implements write operations for a raw pass-through PCH container.
-class RawPCHContainerWriter : public PCHContainerWriter {
- StringRef getFormat() const override { return "raw"; }
-
- /// Return an ASTConsumer that can be chained with a
- /// PCHGenerator that writes the module to a flat file.
- std::unique_ptr<ASTConsumer>
- CreatePCHContainerGenerator(CompilerInstance &CI,
- const std::string &MainFileName,
- const std::string &OutputFileName,
- std::unique_ptr<llvm::raw_pwrite_stream> OS,
- std::shared_ptr<PCHBuffer> Buffer) const override;
-};
-
-/// Implements read operations for a raw pass-through PCH container.
-class RawPCHContainerReader : public PCHContainerReader {
- StringRef getFormat() const override { return "raw"; }
-
- /// Simply returns the buffer contained in Buffer.
- StringRef ExtractPCH(llvm::MemoryBufferRef Buffer) const override;
-};
-
-/// A registry of PCHContainerWriter and -Reader objects for different formats.
-class PCHContainerOperations {
- llvm::StringMap<std::unique_ptr<PCHContainerWriter>> Writers;
- llvm::StringMap<std::unique_ptr<PCHContainerReader>> Readers;
-public:
- /// Automatically registers a RawPCHContainerWriter and
- /// RawPCHContainerReader.
- PCHContainerOperations();
- void registerWriter(std::unique_ptr<PCHContainerWriter> Writer) {
- Writers[Writer->getFormat()] = std::move(Writer);
- }
- void registerReader(std::unique_ptr<PCHContainerReader> Reader) {
- Readers[Reader->getFormat()] = std::move(Reader);
- }
- const PCHContainerWriter *getWriterOrNull(StringRef Format) {
- return Writers[Format].get();
- }
- const PCHContainerReader *getReaderOrNull(StringRef Format) {
- return Readers[Format].get();
- }
- const PCHContainerReader &getRawReader() {
- return *getReaderOrNull("raw");
- }
-};
-
-}
+#include "clang/Serialization/PCHContainerOperations.h"
#endif
diff --git a/linux-x64/clang/include/clang/Frontend/PrecompiledPreamble.h b/linux-x64/clang/include/clang/Frontend/PrecompiledPreamble.h
index 6c79895..b1d55d8 100644
--- a/linux-x64/clang/include/clang/Frontend/PrecompiledPreamble.h
+++ b/linux-x64/clang/include/clang/Frontend/PrecompiledPreamble.h
@@ -1,9 +1,8 @@
//===--- PrecompiledPreamble.h - Build precompiled preambles ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -284,6 +283,8 @@
/// Creates wrapper class for PPCallbacks so we can also process information
/// about includes that are inside of a preamble
virtual std::unique_ptr<PPCallbacks> createPPCallbacks();
+ /// The returned CommentHandler will be added to the preprocessor if not null.
+ virtual CommentHandler *getCommentHandler();
};
enum class BuildPreambleError {
diff --git a/linux-x64/clang/include/clang/Frontend/PreprocessorOutputOptions.h b/linux-x64/clang/include/clang/Frontend/PreprocessorOutputOptions.h
index 94afcd0..72e5ad1 100644
--- a/linux-x64/clang/include/clang/Frontend/PreprocessorOutputOptions.h
+++ b/linux-x64/clang/include/clang/Frontend/PreprocessorOutputOptions.h
@@ -1,9 +1,8 @@
//===--- PreprocessorOutputOptions.h ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Frontend/SerializedDiagnosticPrinter.h b/linux-x64/clang/include/clang/Frontend/SerializedDiagnosticPrinter.h
index dc68c32..5c1ff7a 100644
--- a/linux-x64/clang/include/clang/Frontend/SerializedDiagnosticPrinter.h
+++ b/linux-x64/clang/include/clang/Frontend/SerializedDiagnosticPrinter.h
@@ -1,9 +1,8 @@
//===--- SerializedDiagnosticPrinter.h - Diagnostics serializer -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Frontend/SerializedDiagnosticReader.h b/linux-x64/clang/include/clang/Frontend/SerializedDiagnosticReader.h
index 595bdf1..7b3a6db 100644
--- a/linux-x64/clang/include/clang/Frontend/SerializedDiagnosticReader.h
+++ b/linux-x64/clang/include/clang/Frontend/SerializedDiagnosticReader.h
@@ -1,9 +1,8 @@
//===- SerializedDiagnosticReader.h - Reads diagnostics ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Frontend/SerializedDiagnostics.h b/linux-x64/clang/include/clang/Frontend/SerializedDiagnostics.h
index dacbc67..6ffcf52 100644
--- a/linux-x64/clang/include/clang/Frontend/SerializedDiagnostics.h
+++ b/linux-x64/clang/include/clang/Frontend/SerializedDiagnostics.h
@@ -1,9 +1,8 @@
//===--- SerializedDiagnostics.h - Common data for serialized diagnostics -===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Frontend/TextDiagnostic.h b/linux-x64/clang/include/clang/Frontend/TextDiagnostic.h
index 9f33b86..7cf5483 100644
--- a/linux-x64/clang/include/clang/Frontend/TextDiagnostic.h
+++ b/linux-x64/clang/include/clang/Frontend/TextDiagnostic.h
@@ -1,9 +1,8 @@
//===--- TextDiagnostic.h - Text Diagnostic Pretty-Printing -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Frontend/TextDiagnosticBuffer.h b/linux-x64/clang/include/clang/Frontend/TextDiagnosticBuffer.h
index 2295f9d..5945caf 100644
--- a/linux-x64/clang/include/clang/Frontend/TextDiagnosticBuffer.h
+++ b/linux-x64/clang/include/clang/Frontend/TextDiagnosticBuffer.h
@@ -1,9 +1,8 @@
//===- TextDiagnosticBuffer.h - Buffer Text Diagnostics ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Frontend/TextDiagnosticPrinter.h b/linux-x64/clang/include/clang/Frontend/TextDiagnosticPrinter.h
index 3cb4e02..ba756fa 100644
--- a/linux-x64/clang/include/clang/Frontend/TextDiagnosticPrinter.h
+++ b/linux-x64/clang/include/clang/Frontend/TextDiagnosticPrinter.h
@@ -1,9 +1,8 @@
//===--- TextDiagnosticPrinter.h - Text Diagnostic Client -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Frontend/Utils.h b/linux-x64/clang/include/clang/Frontend/Utils.h
index d1dd44e..124d4a9 100644
--- a/linux-x64/clang/include/clang/Frontend/Utils.h
+++ b/linux-x64/clang/include/clang/Frontend/Utils.h
@@ -1,9 +1,8 @@
//===- Utils.h - Misc utilities for the front-end ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -146,18 +145,18 @@
~ModuleDependencyCollector() override { writeFileMap(); }
StringRef getDest() { return DestDir; }
- bool insertSeen(StringRef Filename) { return Seen.insert(Filename).second; }
- void addFile(StringRef Filename, StringRef FileDst = {});
+ virtual bool insertSeen(StringRef Filename) { return Seen.insert(Filename).second; }
+ virtual void addFile(StringRef Filename, StringRef FileDst = {});
- void addFileMapping(StringRef VPath, StringRef RPath) {
+ virtual void addFileMapping(StringRef VPath, StringRef RPath) {
VFSWriter.addFileMapping(VPath, RPath);
}
void attachToPreprocessor(Preprocessor &PP) override;
void attachToASTReader(ASTReader &R) override;
- void writeFileMap();
- bool hasErrors() { return HasErrors; }
+ virtual void writeFileMap();
+ virtual bool hasErrors() { return HasErrors; }
};
/// AttachDependencyGraphGen - Create a dependency graph generator, and attach
@@ -183,9 +182,6 @@
StringRef OutputPath = {},
bool ShowDepth = true, bool MSStyle = false);
-/// Cache tokens for use with PCH. Note that this requires a seekable stream.
-void CacheTokens(Preprocessor &PP, raw_pwrite_stream *OS);
-
/// The ChainedIncludesSource class converts headers to chained PCHs in
/// memory, mainly for testing.
IntrusiveRefCntPtr<ExternalSemaSource>
@@ -226,14 +222,6 @@
return getLastArgUInt64Value(Args, Id, Default, &Diags);
}
-// When Clang->getFrontendOpts().DisableFree is set we don't delete some of the
-// global objects, but we don't want LeakDetectors to complain, so we bury them
-// in a globally visible array.
-void BuryPointer(const void *Ptr);
-template <typename T> void BuryPointer(std::unique_ptr<T> Ptr) {
- BuryPointer(Ptr.release());
-}
-
// Frontend timing utils
/// If the user specifies the -ftime-report argument on an Clang command line
diff --git a/linux-x64/clang/include/clang/Frontend/VerifyDiagnosticConsumer.h b/linux-x64/clang/include/clang/Frontend/VerifyDiagnosticConsumer.h
index f36970f..955eaeb 100644
--- a/linux-x64/clang/include/clang/Frontend/VerifyDiagnosticConsumer.h
+++ b/linux-x64/clang/include/clang/Frontend/VerifyDiagnosticConsumer.h
@@ -1,9 +1,8 @@
//===- VerifyDiagnosticConsumer.h - Verifying Diagnostic Client -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/FrontendTool/Utils.h b/linux-x64/clang/include/clang/FrontendTool/Utils.h
index 2e6b7b5..22ddec0 100644
--- a/linux-x64/clang/include/clang/FrontendTool/Utils.h
+++ b/linux-x64/clang/include/clang/FrontendTool/Utils.h
@@ -1,9 +1,8 @@
//===--- Utils.h - Misc utilities for the front-end -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Index/CodegenNameGenerator.h b/linux-x64/clang/include/clang/Index/CodegenNameGenerator.h
index e8dc196..d2528a1 100644
--- a/linux-x64/clang/include/clang/Index/CodegenNameGenerator.h
+++ b/linux-x64/clang/include/clang/Index/CodegenNameGenerator.h
@@ -1,9 +1,8 @@
//===- CodegenNameGenerator.h - Codegen name generation -------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Index/CommentToXML.h b/linux-x64/clang/include/clang/Index/CommentToXML.h
index 04f9501..66b8650 100644
--- a/linux-x64/clang/include/clang/Index/CommentToXML.h
+++ b/linux-x64/clang/include/clang/Index/CommentToXML.h
@@ -1,9 +1,8 @@
//===--- CommentToXML.h - Convert comments to XML representation ----------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Index/IndexDataConsumer.h b/linux-x64/clang/include/clang/Index/IndexDataConsumer.h
index c79f6be..bc1d866 100644
--- a/linux-x64/clang/include/clang/Index/IndexDataConsumer.h
+++ b/linux-x64/clang/include/clang/Index/IndexDataConsumer.h
@@ -1,9 +1,8 @@
//===--- IndexDataConsumer.h - Abstract index data consumer -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Index/IndexSymbol.h b/linux-x64/clang/include/clang/Index/IndexSymbol.h
index 8aaaa69..0b15b6c 100644
--- a/linux-x64/clang/include/clang/Index/IndexSymbol.h
+++ b/linux-x64/clang/include/clang/Index/IndexSymbol.h
@@ -1,9 +1,8 @@
//===- IndexSymbol.h - Types and functions for indexing symbols -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Index/IndexingAction.h b/linux-x64/clang/include/clang/Index/IndexingAction.h
index 63e3897..8b3d541 100644
--- a/linux-x64/clang/include/clang/Index/IndexingAction.h
+++ b/linux-x64/clang/include/clang/Index/IndexingAction.h
@@ -1,9 +1,8 @@
//===--- IndexingAction.h - Frontend index action ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -45,6 +44,8 @@
// callback is not available (e.g. after parsing has finished). Note that
// macro references are not available in Proprocessor.
bool IndexMacrosInPreprocessor = false;
+ // Has no effect if IndexFunctionLocals are false.
+ bool IndexParametersInDeclarations = false;
};
/// Creates a frontend action that indexes all symbols (macros and AST decls).
diff --git a/linux-x64/clang/include/clang/Index/USRGeneration.h b/linux-x64/clang/include/clang/Index/USRGeneration.h
index 0bb7123..f89fc5c 100644
--- a/linux-x64/clang/include/clang/Index/USRGeneration.h
+++ b/linux-x64/clang/include/clang/Index/USRGeneration.h
@@ -1,9 +1,8 @@
//===- USRGeneration.h - Routines for USR generation ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -14,11 +13,13 @@
#include "llvm/ADT/StringRef.h"
namespace clang {
+class ASTContext;
class Decl;
class MacroDefinitionRecord;
class Module;
class SourceLocation;
class SourceManager;
+class QualType;
namespace index {
@@ -71,6 +72,11 @@
bool generateUSRForMacro(StringRef MacroName, SourceLocation Loc,
const SourceManager &SM, SmallVectorImpl<char> &Buf);
+/// Generates a USR for a type.
+///
+/// \return true on error, false on success.
+bool generateUSRForType(QualType T, ASTContext &Ctx, SmallVectorImpl<char> &Buf);
+
/// Generate a USR for a module, including the USR prefix.
/// \returns true on error, false on success.
bool generateFullUSRForModule(const Module *Mod, raw_ostream &OS);
@@ -87,6 +93,7 @@
/// \returns true on error, false on success.
bool generateUSRFragmentForModuleName(StringRef ModName, raw_ostream &OS);
+
} // namespace index
} // namespace clang
diff --git a/linux-x64/clang/include/clang/Lex/CodeCompletionHandler.h b/linux-x64/clang/include/clang/Lex/CodeCompletionHandler.h
index bef804b..bd3e05a 100644
--- a/linux-x64/clang/include/clang/Lex/CodeCompletionHandler.h
+++ b/linux-x64/clang/include/clang/Lex/CodeCompletionHandler.h
@@ -1,9 +1,8 @@
//===--- CodeCompletionHandler.h - Preprocessor code completion -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Lex/DirectoryLookup.h b/linux-x64/clang/include/clang/Lex/DirectoryLookup.h
index bfb496b..7c556ac 100644
--- a/linux-x64/clang/include/clang/Lex/DirectoryLookup.h
+++ b/linux-x64/clang/include/clang/Lex/DirectoryLookup.h
@@ -1,9 +1,8 @@
//===--- DirectoryLookup.h - Info for searching for headers -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -171,6 +170,9 @@
/// set to true if the file is located in a framework that has been
/// user-specified to be treated as a system framework.
///
+ /// \param [out] IsFrameworkFound For a framework directory set to true if
+ /// specified '.framework' directory is found.
+ ///
/// \param [out] MappedName if this is a headermap which maps the filename to
/// a framework include ("Foo.h" -> "Foo/Foo.h"), set the new name to this
/// vector and point Filename to it.
@@ -181,6 +183,7 @@
Module *RequestingModule,
ModuleMap::KnownHeader *SuggestedModule,
bool &InUserSpecifiedSystemFramework,
+ bool &IsFrameworkFound,
bool &HasBeenMapped,
SmallVectorImpl<char> &MappedName) const;
@@ -191,7 +194,8 @@
SmallVectorImpl<char> *RelativePath,
Module *RequestingModule,
ModuleMap::KnownHeader *SuggestedModule,
- bool &InUserSpecifiedSystemFramework) const;
+ bool &InUserSpecifiedSystemFramework,
+ bool &IsFrameworkFound) const;
};
diff --git a/linux-x64/clang/include/clang/Lex/ExternalPreprocessorSource.h b/linux-x64/clang/include/clang/Lex/ExternalPreprocessorSource.h
index d849bbd..685941b 100644
--- a/linux-x64/clang/include/clang/Lex/ExternalPreprocessorSource.h
+++ b/linux-x64/clang/include/clang/Lex/ExternalPreprocessorSource.h
@@ -1,9 +1,8 @@
//===- ExternalPreprocessorSource.h - Abstract Macro Interface --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Lex/HeaderMap.h b/linux-x64/clang/include/clang/Lex/HeaderMap.h
index 793e7ed..eca8755 100644
--- a/linux-x64/clang/include/clang/Lex/HeaderMap.h
+++ b/linux-x64/clang/include/clang/Lex/HeaderMap.h
@@ -1,9 +1,8 @@
//===--- HeaderMap.h - A file that acts like dir of symlinks ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Lex/HeaderMapTypes.h b/linux-x64/clang/include/clang/Lex/HeaderMapTypes.h
index fbaf4ba..d8881d8 100644
--- a/linux-x64/clang/include/clang/Lex/HeaderMapTypes.h
+++ b/linux-x64/clang/include/clang/Lex/HeaderMapTypes.h
@@ -1,9 +1,8 @@
//===- HeaderMapTypes.h - Types for the header map format -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Lex/HeaderSearch.h b/linux-x64/clang/include/clang/Lex/HeaderSearch.h
index 7c69e21..879d24d 100644
--- a/linux-x64/clang/include/clang/Lex/HeaderSearch.h
+++ b/linux-x64/clang/include/clang/Lex/HeaderSearch.h
@@ -1,9 +1,8 @@
//===- HeaderSearch.h - Resolve Header File Locations -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -143,22 +142,22 @@
virtual HeaderFileInfo GetHeaderFileInfo(const FileEntry *FE) = 0;
};
+/// This structure is used to record entries in our framework cache.
+struct FrameworkCacheEntry {
+ /// The directory entry which should be used for the cached framework.
+ const DirectoryEntry *Directory;
+
+ /// Whether this framework has been "user-specified" to be treated as if it
+ /// were a system framework (even if it was found outside a system framework
+ /// directory).
+ bool IsUserSpecifiedSystemFramework;
+};
+
/// Encapsulates the information needed to find the file referenced
/// by a \#include or \#include_next, (sub-)framework lookup, etc.
class HeaderSearch {
friend class DirectoryLookup;
- /// This structure is used to record entries in our framework cache.
- struct FrameworkCacheEntry {
- /// The directory entry which should be used for the cached framework.
- const DirectoryEntry *Directory;
-
- /// Whether this framework has been "user-specified" to be treated as if it
- /// were a system framework (even if it was found outside a system framework
- /// directory).
- bool IsUserSpecifiedSystemFramework;
- };
-
/// Header-search options used to initialize this header search.
std::shared_ptr<HeaderSearchOptions> HSOpts;
@@ -391,13 +390,18 @@
///
/// \param IsMapped If non-null, and the search involved header maps, set to
/// true.
+ ///
+ /// \param IsFrameworkFound If non-null, will be set to true if a framework is
+ /// found in any of searched SearchDirs. Doesn't guarantee the requested file
+ /// is found.
const FileEntry *LookupFile(
StringRef Filename, SourceLocation IncludeLoc, bool isAngled,
const DirectoryLookup *FromDir, const DirectoryLookup *&CurDir,
ArrayRef<std::pair<const FileEntry *, const DirectoryEntry *>> Includers,
SmallVectorImpl<char> *SearchPath, SmallVectorImpl<char> *RelativePath,
Module *RequestingModule, ModuleMap::KnownHeader *SuggestedModule,
- bool *IsMapped, bool SkipCache = false, bool BuildSystemModule = false);
+ bool *IsMapped, bool *IsFrameworkFound, bool SkipCache = false,
+ bool BuildSystemModule = false);
/// Look up a subframework for the specified \#include file.
///
diff --git a/linux-x64/clang/include/clang/Lex/HeaderSearchOptions.h b/linux-x64/clang/include/clang/Lex/HeaderSearchOptions.h
index e5b52b3..ed128bc 100644
--- a/linux-x64/clang/include/clang/Lex/HeaderSearchOptions.h
+++ b/linux-x64/clang/include/clang/Lex/HeaderSearchOptions.h
@@ -1,9 +1,8 @@
//===- HeaderSearchOptions.h ------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Lex/LexDiagnostic.h b/linux-x64/clang/include/clang/Lex/LexDiagnostic.h
index 5d724c0..86ce162 100644
--- a/linux-x64/clang/include/clang/Lex/LexDiagnostic.h
+++ b/linux-x64/clang/include/clang/Lex/LexDiagnostic.h
@@ -1,28 +1,14 @@
//===--- DiagnosticLex.h - Diagnostics for liblex ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_LEX_LEXDIAGNOSTIC_H
#define LLVM_CLANG_LEX_LEXDIAGNOSTIC_H
-#include "clang/Basic/Diagnostic.h"
-
-namespace clang {
- namespace diag {
- enum {
-#define DIAG(ENUM,FLAGS,DEFAULT_MAPPING,DESC,GROUP,\
- SFINAE,NOWERROR,SHOWINSYSHEADER,CATEGORY) ENUM,
-#define LEXSTART
-#include "clang/Basic/DiagnosticLexKinds.inc"
-#undef DIAG
- NUM_BUILTIN_LEX_DIAGNOSTICS
- };
- } // end namespace diag
-} // end namespace clang
+#include "clang/Basic/DiagnosticLex.h"
#endif
diff --git a/linux-x64/clang/include/clang/Lex/Lexer.h b/linux-x64/clang/include/clang/Lex/Lexer.h
index a9b10b6..4a8a0f6 100644
--- a/linux-x64/clang/include/clang/Lex/Lexer.h
+++ b/linux-x64/clang/include/clang/Lex/Lexer.h
@@ -1,9 +1,8 @@
//===- Lexer.h - C Language Family Lexer ------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Lex/LiteralSupport.h b/linux-x64/clang/include/clang/Lex/LiteralSupport.h
index 3843a5a..b9d64c2 100644
--- a/linux-x64/clang/include/clang/Lex/LiteralSupport.h
+++ b/linux-x64/clang/include/clang/Lex/LiteralSupport.h
@@ -1,9 +1,8 @@
//===--- LiteralSupport.h ---------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Lex/MacroArgs.h b/linux-x64/clang/include/clang/Lex/MacroArgs.h
index 853eee2..c2ba4eb 100644
--- a/linux-x64/clang/include/clang/Lex/MacroArgs.h
+++ b/linux-x64/clang/include/clang/Lex/MacroArgs.h
@@ -1,9 +1,8 @@
//===--- MacroArgs.h - Formal argument info for Macros ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Lex/MacroInfo.h b/linux-x64/clang/include/clang/Lex/MacroInfo.h
index 0cc1cb9..550abf3 100644
--- a/linux-x64/clang/include/clang/Lex/MacroInfo.h
+++ b/linux-x64/clang/include/clang/Lex/MacroInfo.h
@@ -1,9 +1,8 @@
//===- MacroInfo.h - Information about #defined identifiers -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -395,7 +394,8 @@
/// Find macro definition active in the specified source location. If
/// this macro was not defined there, return NULL.
- const DefInfo findDirectiveAtLoc(SourceLocation L, SourceManager &SM) const;
+ const DefInfo findDirectiveAtLoc(SourceLocation L,
+ const SourceManager &SM) const;
void dump() const;
diff --git a/linux-x64/clang/include/clang/Lex/ModuleLoader.h b/linux-x64/clang/include/clang/Lex/ModuleLoader.h
index 05396dd..c93501a 100644
--- a/linux-x64/clang/include/clang/Lex/ModuleLoader.h
+++ b/linux-x64/clang/include/clang/Lex/ModuleLoader.h
@@ -1,9 +1,8 @@
//===- ModuleLoader.h - Module Loader Interface -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Lex/ModuleMap.h b/linux-x64/clang/include/clang/Lex/ModuleMap.h
index 4daa1dd..af236f5 100644
--- a/linux-x64/clang/include/clang/Lex/ModuleMap.h
+++ b/linux-x64/clang/include/clang/Lex/ModuleMap.h
@@ -1,9 +1,8 @@
//===- ModuleMap.h - Describe the layout of modules -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -45,6 +44,8 @@
/// A mechanism to observe the actions of the module map parser as it
/// reads module map files.
class ModuleMapCallbacks {
+ virtual void anchor();
+
public:
virtual ~ModuleMapCallbacks() = default;
diff --git a/linux-x64/clang/include/clang/Lex/MultipleIncludeOpt.h b/linux-x64/clang/include/clang/Lex/MultipleIncludeOpt.h
index ac0dcc7..7ceb7e5 100644
--- a/linux-x64/clang/include/clang/Lex/MultipleIncludeOpt.h
+++ b/linux-x64/clang/include/clang/Lex/MultipleIncludeOpt.h
@@ -1,9 +1,8 @@
//===--- MultipleIncludeOpt.h - Header Multiple-Include Optzn ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Lex/PPCallbacks.h b/linux-x64/clang/include/clang/Lex/PPCallbacks.h
index 2448b34..92943bd 100644
--- a/linux-x64/clang/include/clang/Lex/PPCallbacks.h
+++ b/linux-x64/clang/include/clang/Lex/PPCallbacks.h
@@ -1,9 +1,8 @@
//===--- PPCallbacks.h - Callbacks for Preprocessor actions -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Lex/PPConditionalDirectiveRecord.h b/linux-x64/clang/include/clang/Lex/PPConditionalDirectiveRecord.h
index a2ccf14..0774374 100644
--- a/linux-x64/clang/include/clang/Lex/PPConditionalDirectiveRecord.h
+++ b/linux-x64/clang/include/clang/Lex/PPConditionalDirectiveRecord.h
@@ -1,9 +1,8 @@
//===--- PPConditionalDirectiveRecord.h - Preprocessing Directives-*- C++ -*-=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Lex/PTHLexer.h b/linux-x64/clang/include/clang/Lex/PTHLexer.h
deleted file mode 100644
index 0b84df1..0000000
--- a/linux-x64/clang/include/clang/Lex/PTHLexer.h
+++ /dev/null
@@ -1,107 +0,0 @@
-//===- PTHLexer.h - Lexer based on Pre-tokenized input ----------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines the PTHLexer interface.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_LEX_PTHLEXER_H
-#define LLVM_CLANG_LEX_PTHLEXER_H
-
-#include "clang/Basic/SourceLocation.h"
-#include "clang/Basic/TokenKinds.h"
-#include "clang/Lex/PreprocessorLexer.h"
-#include "clang/Lex/Token.h"
-
-namespace clang {
-
-class Preprocessor;
-class PTHManager;
-
-class PTHLexer : public PreprocessorLexer {
- SourceLocation FileStartLoc;
-
- /// TokBuf - Buffer from PTH file containing raw token data.
- const unsigned char* TokBuf;
-
- /// CurPtr - Pointer into current offset of the token buffer where
- /// the next token will be read.
- const unsigned char* CurPtr;
-
- /// LastHashTokPtr - Pointer into TokBuf of the last processed '#'
- /// token that appears at the start of a line.
- const unsigned char* LastHashTokPtr = nullptr;
-
- /// PPCond - Pointer to a side table in the PTH file that provides a
- /// a concise summary of the preprocessor conditional block structure.
- /// This is used to perform quick skipping of conditional blocks.
- const unsigned char* PPCond;
-
- /// CurPPCondPtr - Pointer inside PPCond that refers to the next entry
- /// to process when doing quick skipping of preprocessor blocks.
- const unsigned char* CurPPCondPtr;
-
- /// ReadToken - Used by PTHLexer to read tokens TokBuf.
- void ReadToken(Token &T);
-
- bool LexEndOfFile(Token &Result);
-
- /// PTHMgr - The PTHManager object that created this PTHLexer.
- PTHManager& PTHMgr;
-
- Token EofToken;
-
-protected:
- friend class PTHManager;
-
- /// Create a PTHLexer for the specified token stream.
- PTHLexer(Preprocessor &pp, FileID FID, const unsigned char *D,
- const unsigned char* ppcond, PTHManager &PM);
-
-public:
- PTHLexer(const PTHLexer &) = delete;
- PTHLexer &operator=(const PTHLexer &) = delete;
- ~PTHLexer() override = default;
-
- /// Lex - Return the next token.
- bool Lex(Token &Tok);
-
- void getEOF(Token &Tok);
-
- /// DiscardToEndOfLine - Read the rest of the current preprocessor line as an
- /// uninterpreted string. This switches the lexer out of directive mode.
- void DiscardToEndOfLine();
-
- /// isNextPPTokenLParen - Return 1 if the next unexpanded token will return a
- /// tok::l_paren token, 0 if it is something else and 2 if there are no more
- /// tokens controlled by this lexer.
- unsigned isNextPPTokenLParen() {
- // isNextPPTokenLParen is not on the hot path, and all we care about is
- // whether or not we are at a token with kind tok::eof or tok::l_paren.
- // Just read the first byte from the current token pointer to determine
- // its kind.
- tok::TokenKind x = (tok::TokenKind)*CurPtr;
- return x == tok::eof ? 2 : x == tok::l_paren;
- }
-
- /// IndirectLex - An indirect call to 'Lex' that can be invoked via
- /// the PreprocessorLexer interface.
- void IndirectLex(Token &Result) override { Lex(Result); }
-
- /// getSourceLocation - Return a source location for the token in
- /// the current file.
- SourceLocation getSourceLocation() override;
-
- /// SkipBlock - Used by Preprocessor to skip the current conditional block.
- bool SkipBlock();
-};
-
-} // namespace clang
-
-#endif // LLVM_CLANG_LEX_PTHLEXER_H
diff --git a/linux-x64/clang/include/clang/Lex/PTHManager.h b/linux-x64/clang/include/clang/Lex/PTHManager.h
deleted file mode 100644
index 483b69f..0000000
--- a/linux-x64/clang/include/clang/Lex/PTHManager.h
+++ /dev/null
@@ -1,149 +0,0 @@
-//===- PTHManager.h - Manager object for PTH processing ---------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines the PTHManager interface.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_LEX_PTHMANAGER_H
-#define LLVM_CLANG_LEX_PTHMANAGER_H
-
-#include "clang/Basic/IdentifierTable.h"
-#include "clang/Basic/SourceLocation.h"
-#include "llvm/ADT/STLExtras.h"
-#include "llvm/ADT/StringRef.h"
-#include "llvm/Support/Allocator.h"
-#include "llvm/Support/OnDiskHashTable.h"
-#include <memory>
-
-namespace llvm {
-
-class MemoryBuffer;
-
-} // namespace llvm
-
-namespace clang {
-
-class DiagnosticsEngine;
-class FileSystemStatCache;
-class Preprocessor;
-class PTHLexer;
-
-class PTHManager : public IdentifierInfoLookup {
- friend class PTHLexer;
- friend class PTHStatCache;
-
- class PTHFileLookupTrait;
- class PTHStringLookupTrait;
-
- using PTHStringIdLookup = llvm::OnDiskChainedHashTable<PTHStringLookupTrait>;
- using PTHFileLookup = llvm::OnDiskChainedHashTable<PTHFileLookupTrait>;
-
- /// The memory mapped PTH file.
- std::unique_ptr<const llvm::MemoryBuffer> Buf;
-
- /// Alloc - Allocator used for IdentifierInfo objects.
- llvm::BumpPtrAllocator Alloc;
-
- /// IdMap - A lazily generated cache mapping from persistent identifiers to
- /// IdentifierInfo*.
- std::unique_ptr<IdentifierInfo *[], llvm::FreeDeleter> PerIDCache;
-
- /// FileLookup - Abstract data structure used for mapping between files
- /// and token data in the PTH file.
- std::unique_ptr<PTHFileLookup> FileLookup;
-
- /// IdDataTable - Array representing the mapping from persistent IDs to the
- /// data offset within the PTH file containing the information to
- /// reconsitute an IdentifierInfo.
- const unsigned char* const IdDataTable;
-
- /// SortedIdTable - Abstract data structure mapping from strings to
- /// persistent IDs. This is used by get().
- std::unique_ptr<PTHStringIdLookup> StringIdLookup;
-
- /// NumIds - The number of identifiers in the PTH file.
- const unsigned NumIds;
-
- /// PP - The Preprocessor object that will use this PTHManager to create
- /// PTHLexer objects.
- Preprocessor* PP = nullptr;
-
- /// SpellingBase - The base offset within the PTH memory buffer that
- /// contains the cached spellings for literals.
- const unsigned char* const SpellingBase;
-
- /// OriginalSourceFile - A null-terminated C-string that specifies the name
- /// if the file (if any) that was to used to generate the PTH cache.
- const char* OriginalSourceFile;
-
- /// This constructor is intended to only be called by the static 'Create'
- /// method.
- PTHManager(std::unique_ptr<const llvm::MemoryBuffer> buf,
- std::unique_ptr<PTHFileLookup> fileLookup,
- const unsigned char *idDataTable,
- std::unique_ptr<IdentifierInfo *[], llvm::FreeDeleter> perIDCache,
- std::unique_ptr<PTHStringIdLookup> stringIdLookup, unsigned numIds,
- const unsigned char *spellingBase, const char *originalSourceFile);
-
- /// getSpellingAtPTHOffset - Used by PTHLexer classes to get the cached
- /// spelling for a token.
- unsigned getSpellingAtPTHOffset(unsigned PTHOffset, const char*& Buffer);
-
- /// GetIdentifierInfo - Used to reconstruct IdentifierInfo objects from the
- /// PTH file.
- IdentifierInfo *GetIdentifierInfo(unsigned PersistentID) {
- // Check if the IdentifierInfo has already been resolved.
- if (IdentifierInfo* II = PerIDCache[PersistentID])
- return II;
- return LazilyCreateIdentifierInfo(PersistentID);
- }
- IdentifierInfo* LazilyCreateIdentifierInfo(unsigned PersistentID);
-
-public:
- // The current PTH version.
- enum { Version = 10 };
-
- PTHManager(const PTHManager &) = delete;
- PTHManager &operator=(const PTHManager &) = delete;
- ~PTHManager() override;
-
- /// getOriginalSourceFile - Return the full path to the original header
- /// file name that was used to generate the PTH cache.
- const char* getOriginalSourceFile() const {
- return OriginalSourceFile;
- }
-
- /// get - Return the identifier token info for the specified named identifier.
- /// Unlike the version in IdentifierTable, this returns a pointer instead
- /// of a reference. If the pointer is nullptr then the IdentifierInfo cannot
- /// be found.
- IdentifierInfo *get(StringRef Name) override;
-
- /// Create - This method creates PTHManager objects. The 'file' argument
- /// is the name of the PTH file. This method returns nullptr upon failure.
- static PTHManager *Create(StringRef file, DiagnosticsEngine &Diags);
-
- void setPreprocessor(Preprocessor *pp) { PP = pp; }
-
- /// CreateLexer - Return a PTHLexer that "lexes" the cached tokens for the
- /// specified file. This method returns nullptr if no cached tokens exist.
- /// It is the responsibility of the caller to 'delete' the returned object.
- PTHLexer *CreateLexer(FileID FID);
-
- /// createStatCache - Returns a FileSystemStatCache object for use with
- /// FileManager objects. These objects use the PTH data to speed up
- /// calls to stat by memoizing their results from when the PTH file
- /// was generated.
- std::unique_ptr<FileSystemStatCache> createStatCache();
-};
-
-} // namespace clang
-
-#endif // LLVM_CLANG_LEX_PTHMANAGER_H
diff --git a/linux-x64/clang/include/clang/Lex/Pragma.h b/linux-x64/clang/include/clang/Lex/Pragma.h
index fb2942f..365b95d 100644
--- a/linux-x64/clang/include/clang/Lex/Pragma.h
+++ b/linux-x64/clang/include/clang/Lex/Pragma.h
@@ -1,9 +1,8 @@
//===- Pragma.h - Pragma registration and handling --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Lex/PreprocessingRecord.h b/linux-x64/clang/include/clang/Lex/PreprocessingRecord.h
index 44d79d9..1160781 100644
--- a/linux-x64/clang/include/clang/Lex/PreprocessingRecord.h
+++ b/linux-x64/clang/include/clang/Lex/PreprocessingRecord.h
@@ -1,9 +1,8 @@
//===- PreprocessingRecord.h - Record of Preprocessing ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -15,6 +14,7 @@
#ifndef LLVM_CLANG_LEX_PREPROCESSINGRECORD_H
#define LLVM_CLANG_LEX_PREPROCESSINGRECORD_H
+#include "clang/Basic/IdentifierTable.h"
#include "clang/Basic/LLVM.h"
#include "clang/Basic/SourceLocation.h"
#include "clang/Lex/PPCallbacks.h"
diff --git a/linux-x64/clang/include/clang/Lex/Preprocessor.h b/linux-x64/clang/include/clang/Lex/Preprocessor.h
index 7591001..e701f14 100644
--- a/linux-x64/clang/include/clang/Lex/Preprocessor.h
+++ b/linux-x64/clang/include/clang/Lex/Preprocessor.h
@@ -1,9 +1,8 @@
//===- Preprocessor.h - C Language Family Preprocessor ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -29,7 +28,6 @@
#include "clang/Lex/ModuleLoader.h"
#include "clang/Lex/ModuleMap.h"
#include "clang/Lex/PPCallbacks.h"
-#include "clang/Lex/PTHLexer.h"
#include "clang/Lex/Token.h"
#include "clang/Lex/TokenLexer.h"
#include "llvm/ADT/ArrayRef.h"
@@ -79,7 +77,6 @@
class PreprocessingRecord;
class PreprocessorLexer;
class PreprocessorOptions;
-class PTHManager;
class ScratchBuffer;
class TargetInfo;
@@ -143,10 +140,6 @@
/// External source of macros.
ExternalPreprocessorSource *ExternalSource;
- /// An optional PTHManager object used for getting tokens from
- /// a token cache rather than lexing the original source file.
- std::unique_ptr<PTHManager> PTH;
-
/// A BumpPtrAllocator object used to quickly allocate and release
/// objects internal to the Preprocessor.
llvm::BumpPtrAllocator BP;
@@ -325,6 +318,10 @@
/// This is used when loading a precompiled preamble.
std::pair<int, bool> SkipMainFilePreamble;
+ /// Whether we hit an error due to reaching max allowed include depth. Allows
+ /// to avoid hitting the same error over and over again.
+ bool HasReachedMaxIncludeDepth = false;
+
public:
struct PreambleSkipInfo {
SourceLocation HashTokenLoc;
@@ -392,19 +389,13 @@
/// The current top of the stack that we're lexing from if
/// not expanding a macro and we are lexing directly from source code.
///
- /// Only one of CurLexer, CurPTHLexer, or CurTokenLexer will be non-null.
+ /// Only one of CurLexer, or CurTokenLexer will be non-null.
std::unique_ptr<Lexer> CurLexer;
- /// The current top of stack that we're lexing from if
- /// not expanding from a macro and we are lexing from a PTH cache.
- ///
- /// Only one of CurLexer, CurPTHLexer, or CurTokenLexer will be non-null.
- std::unique_ptr<PTHLexer> CurPTHLexer;
-
/// The current top of the stack what we're lexing from
/// if not expanding a macro.
///
- /// This is an alias for either CurLexer or CurPTHLexer.
+ /// This is an alias for CurLexer.
PreprocessorLexer *CurPPLexer = nullptr;
/// Used to find the current FileEntry, if CurLexer is non-null
@@ -422,7 +413,6 @@
/// The kind of lexer we're currently working with.
enum CurLexerKind {
CLK_Lexer,
- CLK_PTHLexer,
CLK_TokenLexer,
CLK_CachingLexer,
CLK_LexAfterModuleImport
@@ -439,7 +429,6 @@
enum CurLexerKind CurLexerKind;
Module *TheSubmodule;
std::unique_ptr<Lexer> TheLexer;
- std::unique_ptr<PTHLexer> ThePTHLexer;
PreprocessorLexer *ThePPLexer;
std::unique_ptr<TokenLexer> TheTokenLexer;
const DirectoryLookup *TheDirLookup;
@@ -448,13 +437,11 @@
// versions, only needed to pacify MSVC.
IncludeStackInfo(enum CurLexerKind CurLexerKind, Module *TheSubmodule,
std::unique_ptr<Lexer> &&TheLexer,
- std::unique_ptr<PTHLexer> &&ThePTHLexer,
PreprocessorLexer *ThePPLexer,
std::unique_ptr<TokenLexer> &&TheTokenLexer,
const DirectoryLookup *TheDirLookup)
: CurLexerKind(std::move(CurLexerKind)),
TheSubmodule(std::move(TheSubmodule)), TheLexer(std::move(TheLexer)),
- ThePTHLexer(std::move(ThePTHLexer)),
ThePPLexer(std::move(ThePPLexer)),
TheTokenLexer(std::move(TheTokenLexer)),
TheDirLookup(std::move(TheDirLookup)) {}
@@ -838,10 +825,6 @@
Builtin::Context &getBuiltinInfo() { return BuiltinInfo; }
llvm::BumpPtrAllocator &getPreprocessorAllocator() { return BP; }
- void setPTHManager(PTHManager* pm);
-
- PTHManager *getPTHManager() { return PTH.get(); }
-
void setExternalSource(ExternalPreprocessorSource *Source) {
ExternalSource = Source;
}
@@ -1456,7 +1439,7 @@
CachedTokens[CachedLexPos-1] = Tok;
}
- /// Recompute the current lexer kind based on the CurLexer/CurPTHLexer/
+ /// Recompute the current lexer kind based on the CurLexer/
/// CurTokenLexer pointers.
void recomputeCurLexerKind();
@@ -1832,8 +1815,8 @@
void CheckEndOfDirective(const char *DirType, bool EnableMacros = false);
/// Read and discard all tokens remaining on the current line until
- /// the tok::eod token is found.
- void DiscardUntilEndOfDirective();
+ /// the tok::eod token is found. Returns the range of the skipped tokens.
+ SourceRange DiscardUntilEndOfDirective();
/// Returns true if the preprocessor has seen a use of
/// __DATE__ or __TIME__ in the file so far.
@@ -1871,7 +1854,8 @@
SmallVectorImpl<char> *SearchPath,
SmallVectorImpl<char> *RelativePath,
ModuleMap::KnownHeader *SuggestedModule,
- bool *IsMapped, bool SkipCache = false);
+ bool *IsMapped, bool *IsFrameworkFound,
+ bool SkipCache = false);
/// Get the DirectoryLookup structure used to find the current
/// FileEntry, if CurLexer is non-null and if applicable.
@@ -1915,15 +1899,13 @@
void PushIncludeMacroStack() {
assert(CurLexerKind != CLK_CachingLexer && "cannot push a caching lexer");
IncludeMacroStack.emplace_back(CurLexerKind, CurLexerSubmodule,
- std::move(CurLexer), std::move(CurPTHLexer),
- CurPPLexer, std::move(CurTokenLexer),
- CurDirLookup);
+ std::move(CurLexer), CurPPLexer,
+ std::move(CurTokenLexer), CurDirLookup);
CurPPLexer = nullptr;
}
void PopIncludeMacroStack() {
CurLexer = std::move(IncludeMacroStack.back().TheLexer);
- CurPTHLexer = std::move(IncludeMacroStack.back().ThePTHLexer);
CurPPLexer = IncludeMacroStack.back().ThePPLexer;
CurTokenLexer = std::move(IncludeMacroStack.back().TheTokenLexer);
CurDirLookup = IncludeMacroStack.back().TheDirLookup;
@@ -1992,9 +1974,6 @@
bool FoundNonSkipPortion, bool FoundElse,
SourceLocation ElseLoc = SourceLocation());
- /// A fast PTH version of SkipExcludedConditionalBlock.
- void PTHSkipExcludedConditionalBlock();
-
/// Information about the result for evaluating an expression for a
/// preprocessor directive.
struct DirectiveEvalResult {
@@ -2003,6 +1982,9 @@
/// True if the expression contained identifiers that were undefined.
bool IncludedUndefinedIds;
+
+ /// The source range for the expression.
+ SourceRange ExprRange;
};
/// Evaluate an integer constant expression that may occur after a
@@ -2060,10 +2042,6 @@
/// start lexing tokens from it instead of the current buffer.
void EnterSourceFileWithLexer(Lexer *TheLexer, const DirectoryLookup *Dir);
- /// Add a lexer to the top of the include stack and
- /// start getting tokens from it using the PTH cache.
- void EnterSourceFileWithPTH(PTHLexer *PL, const DirectoryLookup *Dir);
-
/// Set the FileID for the preprocessor predefines.
void setPredefinesFileID(FileID FID) {
assert(PredefinesFileID.isInvalid() && "PredefinesFileID already set!");
@@ -2094,8 +2072,7 @@
bool InCachingLexMode() const {
// If the Lexer pointers are 0 and IncludeMacroStack is empty, it means
// that we are past EOF, not that we are in CachingLex mode.
- return !CurPPLexer && !CurTokenLexer && !CurPTHLexer &&
- !IncludeMacroStack.empty();
+ return !CurPPLexer && !CurTokenLexer && !IncludeMacroStack.empty();
}
void EnterCachingLexMode();
diff --git a/linux-x64/clang/include/clang/Lex/PreprocessorLexer.h b/linux-x64/clang/include/clang/Lex/PreprocessorLexer.h
index de918a2..5efe5fc 100644
--- a/linux-x64/clang/include/clang/Lex/PreprocessorLexer.h
+++ b/linux-x64/clang/include/clang/Lex/PreprocessorLexer.h
@@ -1,9 +1,8 @@
//===- PreprocessorLexer.h - C Language Family Lexer ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Lex/PreprocessorOptions.h b/linux-x64/clang/include/clang/Lex/PreprocessorOptions.h
index 6b38239..1480548 100644
--- a/linux-x64/clang/include/clang/Lex/PreprocessorOptions.h
+++ b/linux-x64/clang/include/clang/Lex/PreprocessorOptions.h
@@ -1,9 +1,8 @@
//===- PreprocessorOptions.h ------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -110,13 +109,6 @@
/// clients don't use them.
bool WriteCommentListToPCH = true;
- /// The implicit PTH input included at the start of the translation unit, or
- /// empty.
- std::string ImplicitPTHInclude;
-
- /// If given, a PTH cache file to use for speeding up header parsing.
- std::string TokenCache;
-
/// When enabled, preprocessor is in a mode for parsing a single file only.
///
/// Disables #includes of other files and if there are unresolved identifiers
@@ -204,8 +196,6 @@
ChainedIncludes.clear();
DumpDeserializedPCHDecls = false;
ImplicitPCHInclude.clear();
- ImplicitPTHInclude.clear();
- TokenCache.clear();
SingleFileParseMode = false;
LexEditorPlaceholders = true;
RetainRemappedFileBuffers = true;
diff --git a/linux-x64/clang/include/clang/Lex/ScratchBuffer.h b/linux-x64/clang/include/clang/Lex/ScratchBuffer.h
index a3d6096..f526f22 100644
--- a/linux-x64/clang/include/clang/Lex/ScratchBuffer.h
+++ b/linux-x64/clang/include/clang/Lex/ScratchBuffer.h
@@ -1,9 +1,8 @@
//===--- ScratchBuffer.h - Scratch space for forming tokens -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Lex/Token.h b/linux-x64/clang/include/clang/Lex/Token.h
index 85bef72..20483e3 100644
--- a/linux-x64/clang/include/clang/Lex/Token.h
+++ b/linux-x64/clang/include/clang/Lex/Token.h
@@ -1,9 +1,8 @@
//===--- Token.h - Token interface ------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -329,9 +328,4 @@
} // end namespace clang
-namespace llvm {
- template <>
- struct isPodLike<clang::Token> { static const bool value = true; };
-} // end namespace llvm
-
#endif // LLVM_CLANG_LEX_TOKEN_H
diff --git a/linux-x64/clang/include/clang/Lex/TokenConcatenation.h b/linux-x64/clang/include/clang/Lex/TokenConcatenation.h
index 3199e36..bd43172 100644
--- a/linux-x64/clang/include/clang/Lex/TokenConcatenation.h
+++ b/linux-x64/clang/include/clang/Lex/TokenConcatenation.h
@@ -1,9 +1,8 @@
//===--- TokenConcatenation.h - Token Concatenation Avoidance ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Lex/TokenLexer.h b/linux-x64/clang/include/clang/Lex/TokenLexer.h
index 6aae9ee..13b3c3e 100644
--- a/linux-x64/clang/include/clang/Lex/TokenLexer.h
+++ b/linux-x64/clang/include/clang/Lex/TokenLexer.h
@@ -1,9 +1,8 @@
//===- TokenLexer.h - Lex from a token buffer -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Lex/VariadicMacroSupport.h b/linux-x64/clang/include/clang/Lex/VariadicMacroSupport.h
index 3a7a955..4274a4d 100644
--- a/linux-x64/clang/include/clang/Lex/VariadicMacroSupport.h
+++ b/linux-x64/clang/include/clang/Lex/VariadicMacroSupport.h
@@ -1,9 +1,8 @@
//===- VariadicMacroSupport.h - state machines and scope guards -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Parse/AttrParserStringSwitches.inc b/linux-x64/clang/include/clang/Parse/AttrParserStringSwitches.inc
index 1913bb9..2e90aed 100644
--- a/linux-x64/clang/include/clang/Parse/AttrParserStringSwitches.inc
+++ b/linux-x64/clang/include/clang/Parse/AttrParserStringSwitches.inc
@@ -77,8 +77,13 @@
#if defined(CLANG_ATTR_VARIADIC_IDENTIFIER_ARG_LIST)
.Case("cpu_dispatch", true)
.Case("cpu_specific", true)
+.Case("callback", true)
#endif // CLANG_ATTR_VARIADIC_IDENTIFIER_ARG_LIST
+#if defined(CLANG_ATTR_THIS_ISA_IDENTIFIER_ARG_LIST)
+.Case("callback", true)
+#endif // CLANG_ATTR_THIS_ISA_IDENTIFIER_ARG_LIST
+
#if defined(CLANG_ATTR_TYPE_ARG_LIST)
.Case("iboutletcollection", true)
.Case("vec_type_hint", true)
diff --git a/linux-x64/clang/include/clang/Sema/LoopHint.h b/linux-x64/clang/include/clang/Parse/LoopHint.h
similarity index 79%
rename from linux-x64/clang/include/clang/Sema/LoopHint.h
rename to linux-x64/clang/include/clang/Parse/LoopHint.h
index 171435e..6e363f7 100644
--- a/linux-x64/clang/include/clang/Sema/LoopHint.h
+++ b/linux-x64/clang/include/clang/Parse/LoopHint.h
@@ -1,14 +1,13 @@
//===--- LoopHint.h - Types for LoopHint ------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_CLANG_SEMA_LOOPHINT_H
-#define LLVM_CLANG_SEMA_LOOPHINT_H
+#ifndef LLVM_CLANG_PARSE_LOOPHINT_H
+#define LLVM_CLANG_PARSE_LOOPHINT_H
#include "clang/Basic/IdentifierTable.h"
#include "clang/Basic/SourceLocation.h"
@@ -42,4 +41,4 @@
} // end namespace clang
-#endif // LLVM_CLANG_SEMA_LOOPHINT_H
+#endif // LLVM_CLANG_PARSE_LOOPHINT_H
diff --git a/linux-x64/clang/include/clang/Parse/ParseAST.h b/linux-x64/clang/include/clang/Parse/ParseAST.h
index f6e78ac..3a21f04 100644
--- a/linux-x64/clang/include/clang/Parse/ParseAST.h
+++ b/linux-x64/clang/include/clang/Parse/ParseAST.h
@@ -1,9 +1,8 @@
//===--- ParseAST.h - Define the ParseAST method ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Parse/ParseDiagnostic.h b/linux-x64/clang/include/clang/Parse/ParseDiagnostic.h
index f3a7f3b..f174464 100644
--- a/linux-x64/clang/include/clang/Parse/ParseDiagnostic.h
+++ b/linux-x64/clang/include/clang/Parse/ParseDiagnostic.h
@@ -1,28 +1,14 @@
//===--- DiagnosticParse.h - Diagnostics for libparse -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_PARSE_PARSEDIAGNOSTIC_H
#define LLVM_CLANG_PARSE_PARSEDIAGNOSTIC_H
-#include "clang/Basic/Diagnostic.h"
-
-namespace clang {
- namespace diag {
- enum {
-#define DIAG(ENUM,FLAGS,DEFAULT_MAPPING,DESC,GROUP,\
- SFINAE,NOWERROR,SHOWINSYSHEADER,CATEGORY) ENUM,
-#define PARSESTART
-#include "clang/Basic/DiagnosticParseKinds.inc"
-#undef DIAG
- NUM_BUILTIN_PARSE_DIAGNOSTICS
- };
- } // end namespace diag
-} // end namespace clang
+#include "clang/Basic/DiagnosticParse.h"
#endif
diff --git a/linux-x64/clang/include/clang/Parse/Parser.h b/linux-x64/clang/include/clang/Parse/Parser.h
index 8df6300..f5c70e7 100644
--- a/linux-x64/clang/include/clang/Parse/Parser.h
+++ b/linux-x64/clang/include/clang/Parse/Parser.h
@@ -1,9 +1,8 @@
//===--- Parser.h - C Language Parser ---------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -14,6 +13,7 @@
#ifndef LLVM_CLANG_PARSE_PARSER_H
#define LLVM_CLANG_PARSE_PARSER_H
+#include "clang/AST/OpenMPClause.h"
#include "clang/AST/Availability.h"
#include "clang/Basic/BitmaskEnum.h"
#include "clang/Basic/OpenMPKinds.h"
@@ -22,7 +22,6 @@
#include "clang/Lex/CodeCompletionHandler.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Sema/DeclSpec.h"
-#include "clang/Sema/LoopHint.h"
#include "clang/Sema/Sema.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Support/Compiler.h"
@@ -38,6 +37,7 @@
class CorrectionCandidateCallback;
class DeclGroupRef;
class DiagnosticBuilder;
+ struct LoopHint;
class Parser;
class ParsingDeclRAIIObject;
class ParsingDeclSpec;
@@ -74,6 +74,10 @@
// a statement).
SourceLocation PrevTokLocation;
+ /// Tracks an expected type for the current token when parsing an expression.
+ /// Used by code completion for ranking.
+ PreferredTypeBuilder PreferredType;
+
unsigned short ParenCount = 0, BracketCount = 0, BraceCount = 0;
unsigned short MisplacedModuleBeginCount = 0;
@@ -359,6 +363,11 @@
/// just a regular sub-expression.
SourceLocation ExprStatementTokLoc;
+ /// Tests whether an expression value is discarded based on token lookahead.
+ /// It will return true if the lexer is currently processing the })
+ /// terminating a GNU statement expression and false otherwise.
+ bool isExprValueDiscarded();
+
public:
Parser(Preprocessor &PP, Sema &Actions, bool SkipFunctionBodies);
~Parser() override;
@@ -804,7 +813,7 @@
///
/// Should only be used in Objective-C language modes.
bool isObjCInstancetype() {
- assert(getLangOpts().ObjC1);
+ assert(getLangOpts().ObjC);
if (Tok.isAnnotation())
return false;
if (!Ident_instancetype)
@@ -835,6 +844,7 @@
///
class TentativeParsingAction {
Parser &P;
+ PreferredTypeBuilder PrevPreferredType;
Token PrevTok;
size_t PrevTentativelyDeclaredIdentifierCount;
unsigned short PrevParenCount, PrevBracketCount, PrevBraceCount;
@@ -842,6 +852,7 @@
public:
explicit TentativeParsingAction(Parser& p) : P(p) {
+ PrevPreferredType = P.PreferredType;
PrevTok = P.Tok;
PrevTentativelyDeclaredIdentifierCount =
P.TentativelyDeclaredIdentifiers.size();
@@ -861,6 +872,7 @@
void Revert() {
assert(isActive && "Parsing action was finished!");
P.PP.Backtrack();
+ P.PreferredType = PrevPreferredType;
P.Tok = PrevTok;
P.TentativelyDeclaredIdentifiers.resize(
PrevTentativelyDeclaredIdentifierCount);
@@ -1888,6 +1900,7 @@
StmtResult ParseCompoundStatement(bool isStmtExpr,
unsigned ScopeFlags);
void ParseCompoundStatementLeadingPragmas();
+ bool ConsumeNullStmt(StmtVector &Stmts);
StmtResult ParseCompoundStatementBody(bool isStmtExpr = false);
bool ParseParenExprOrCondition(StmtResult *InitStmt,
Sema::ConditionResult &CondResult,
@@ -2144,6 +2157,8 @@
// 'for-init-statement' part of a 'for' statement.
/// Returns true for declaration, false for expression.
bool isForInitDeclaration() {
+ if (getLangOpts().OpenMP)
+ Actions.startOpenMPLoop();
if (getLangOpts().CPlusPlus)
return isCXXSimpleDeclaration(/*AllowForRangeDecl=*/true);
return isDeclarationSpecifier(true);
@@ -2657,9 +2672,16 @@
DeclGroupPtrTy ParseNamespace(DeclaratorContext Context,
SourceLocation &DeclEnd,
SourceLocation InlineLoc = SourceLocation());
- void ParseInnerNamespace(std::vector<SourceLocation> &IdentLoc,
- std::vector<IdentifierInfo *> &Ident,
- std::vector<SourceLocation> &NamespaceLoc,
+
+ struct InnerNamespaceInfo {
+ SourceLocation NamespaceLoc;
+ SourceLocation InlineLoc;
+ SourceLocation IdentLoc;
+ IdentifierInfo *Ident;
+ };
+ using InnerNamespaceInfoList = llvm::SmallVector<InnerNamespaceInfo, 4>;
+
+ void ParseInnerNamespace(const InnerNamespaceInfoList &InnerNSs,
unsigned int index, SourceLocation &InlineLoc,
ParsedAttributes &attrs,
BalancedDelimiterTracker &Tracker);
@@ -2765,6 +2787,11 @@
DeclGroupPtrTy ParseOMPDeclareSimdClauses(DeclGroupPtrTy Ptr,
CachedTokens &Toks,
SourceLocation Loc);
+ /// Parse clauses for '#pragma omp declare target'.
+ DeclGroupPtrTy ParseOMPDeclareTargetClauses();
+ /// Parse '#pragma omp end declare target'.
+ void ParseOMPEndDeclareTargetDirective(OpenMPDirectiveKind DKind,
+ SourceLocation Loc);
/// Parses declarative OpenMP directives.
DeclGroupPtrTy ParseOpenMPDeclarativeDirectiveWithExtDecl(
AccessSpecifier &AS, ParsedAttributesWithRange &Attrs,
@@ -2776,6 +2803,13 @@
/// initializer.
void ParseOpenMPReductionInitializerForDecl(VarDecl *OmpPrivParm);
+ /// Parses 'omp declare mapper' directive.
+ DeclGroupPtrTy ParseOpenMPDeclareMapperDirective(AccessSpecifier AS);
+ /// Parses variable declaration in 'omp declare mapper' directive.
+ TypeResult parseOpenMPDeclareMapperVarDecl(SourceRange &Range,
+ DeclarationName &Name,
+ AccessSpecifier AS = AS_none);
+
/// Parses simple list of variables.
///
/// \param Kind Kind of the directive.
@@ -2861,7 +2895,10 @@
DeclarationNameInfo ReductionId;
OpenMPDependClauseKind DepKind = OMPC_DEPEND_unknown;
OpenMPLinearClauseKind LinKind = OMPC_LINEAR_val;
- OpenMPMapClauseKind MapTypeModifier = OMPC_MAP_unknown;
+ SmallVector<OpenMPMapModifierKind, OMPMapClause::NumberOfModifiers>
+ MapTypeModifiers;
+ SmallVector<SourceLocation, OMPMapClause::NumberOfModifiers>
+ MapTypeModifiersLoc;
OpenMPMapClauseKind MapType = OMPC_MAP_unknown;
bool IsMapTypeImplicit = false;
SourceLocation DepLinMapLoc;
diff --git a/linux-x64/clang/include/clang/Parse/RAIIObjectsForParser.h b/linux-x64/clang/include/clang/Parse/RAIIObjectsForParser.h
index ba5e5fe..558106e 100644
--- a/linux-x64/clang/include/clang/Parse/RAIIObjectsForParser.h
+++ b/linux-x64/clang/include/clang/Parse/RAIIObjectsForParser.h
@@ -1,9 +1,8 @@
//===--- RAIIObjectsForParser.h - RAII helpers for the parser ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Rewrite/Core/DeltaTree.h b/linux-x64/clang/include/clang/Rewrite/Core/DeltaTree.h
index f798e9f..e566c92 100644
--- a/linux-x64/clang/include/clang/Rewrite/Core/DeltaTree.h
+++ b/linux-x64/clang/include/clang/Rewrite/Core/DeltaTree.h
@@ -1,9 +1,8 @@
//===- DeltaTree.h - B-Tree for Rewrite Delta tracking ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Rewrite/Core/HTMLRewrite.h b/linux-x64/clang/include/clang/Rewrite/Core/HTMLRewrite.h
index 0f1f490..340411e 100644
--- a/linux-x64/clang/include/clang/Rewrite/Core/HTMLRewrite.h
+++ b/linux-x64/clang/include/clang/Rewrite/Core/HTMLRewrite.h
@@ -1,9 +1,8 @@
//==- HTMLRewrite.h - Translate source code into prettified HTML ---*- C++ -*-//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Rewrite/Core/RewriteBuffer.h b/linux-x64/clang/include/clang/Rewrite/Core/RewriteBuffer.h
index c618298..b8f3417 100644
--- a/linux-x64/clang/include/clang/Rewrite/Core/RewriteBuffer.h
+++ b/linux-x64/clang/include/clang/Rewrite/Core/RewriteBuffer.h
@@ -1,9 +1,8 @@
//===- RewriteBuffer.h - Buffer rewriting interface -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Rewrite/Core/RewriteRope.h b/linux-x64/clang/include/clang/Rewrite/Core/RewriteRope.h
index 2a0e0a4..039927c 100644
--- a/linux-x64/clang/include/clang/Rewrite/Core/RewriteRope.h
+++ b/linux-x64/clang/include/clang/Rewrite/Core/RewriteRope.h
@@ -1,9 +1,8 @@
//===- RewriteRope.h - Rope specialized for rewriter ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Rewrite/Core/Rewriter.h b/linux-x64/clang/include/clang/Rewrite/Core/Rewriter.h
index 107968a..5a3ff6c 100644
--- a/linux-x64/clang/include/clang/Rewrite/Core/Rewriter.h
+++ b/linux-x64/clang/include/clang/Rewrite/Core/Rewriter.h
@@ -1,9 +1,8 @@
//===- Rewriter.h - Code rewriting interface --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Rewrite/Core/TokenRewriter.h b/linux-x64/clang/include/clang/Rewrite/Core/TokenRewriter.h
index ab2c2c8..13ca2dd 100644
--- a/linux-x64/clang/include/clang/Rewrite/Core/TokenRewriter.h
+++ b/linux-x64/clang/include/clang/Rewrite/Core/TokenRewriter.h
@@ -1,9 +1,8 @@
//===- TokenRewriter.h - Token-based Rewriter -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Rewrite/Frontend/ASTConsumers.h b/linux-x64/clang/include/clang/Rewrite/Frontend/ASTConsumers.h
index e054e75..618b380 100644
--- a/linux-x64/clang/include/clang/Rewrite/Frontend/ASTConsumers.h
+++ b/linux-x64/clang/include/clang/Rewrite/Frontend/ASTConsumers.h
@@ -1,9 +1,8 @@
//===--- ASTConsumers.h - ASTConsumer implementations -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Rewrite/Frontend/FixItRewriter.h b/linux-x64/clang/include/clang/Rewrite/Frontend/FixItRewriter.h
index 7456840..f514f36 100644
--- a/linux-x64/clang/include/clang/Rewrite/Frontend/FixItRewriter.h
+++ b/linux-x64/clang/include/clang/Rewrite/Frontend/FixItRewriter.h
@@ -1,9 +1,8 @@
//===- FixItRewriter.h - Fix-It Rewriter Diagnostic Client ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Rewrite/Frontend/FrontendActions.h b/linux-x64/clang/include/clang/Rewrite/Frontend/FrontendActions.h
index 40d2f4c..4e9d194 100644
--- a/linux-x64/clang/include/clang/Rewrite/Frontend/FrontendActions.h
+++ b/linux-x64/clang/include/clang/Rewrite/Frontend/FrontendActions.h
@@ -1,9 +1,8 @@
//===-- FrontendActions.h - Useful Frontend Actions -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Rewrite/Frontend/Rewriters.h b/linux-x64/clang/include/clang/Rewrite/Frontend/Rewriters.h
index 3ad76df..3f93322 100644
--- a/linux-x64/clang/include/clang/Rewrite/Frontend/Rewriters.h
+++ b/linux-x64/clang/include/clang/Rewrite/Frontend/Rewriters.h
@@ -1,9 +1,8 @@
//===--- Rewriters.h - Rewriter implementations -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Sema/AnalysisBasedWarnings.h b/linux-x64/clang/include/clang/Sema/AnalysisBasedWarnings.h
index 6e8d839..d5df536 100644
--- a/linux-x64/clang/include/clang/Sema/AnalysisBasedWarnings.h
+++ b/linux-x64/clang/include/clang/Sema/AnalysisBasedWarnings.h
@@ -1,9 +1,8 @@
//=- AnalysisBasedWarnings.h - Sema warnings based on libAnalysis -*- C++ -*-=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Sema/AttrParsedAttrImpl.inc b/linux-x64/clang/include/clang/Sema/AttrParsedAttrImpl.inc
index 2b4b649..b657936 100644
--- a/linux-x64/clang/include/clang/Sema/AttrParsedAttrImpl.inc
+++ b/linux-x64/clang/include/clang/Sema/AttrParsedAttrImpl.inc
@@ -338,7 +338,7 @@
}
static void matchRulesForArcWeakrefUnavailable(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC));
}
static bool checkArgumentWithTypeTagAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -442,7 +442,7 @@
}
static void matchRulesForAssumeAligned(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
}
@@ -462,11 +462,11 @@
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_field, /*IsSupported=*/true));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_namespace, /*IsSupported=*/LangOpts.CPlusPlus));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_category, /*IsSupported=*/LangOpts.ObjC1));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC1));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC1));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_property, /*IsSupported=*/LangOpts.ObjC1));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_protocol, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_category, /*IsSupported=*/LangOpts.ObjC));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_property, /*IsSupported=*/LangOpts.ObjC));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_protocol, /*IsSupported=*/LangOpts.ObjC));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_record, /*IsSupported=*/true));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_type_alias, /*IsSupported=*/true));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_variable, /*IsSupported=*/true));
@@ -617,7 +617,7 @@
}
static void matchRulesForCUDALaunchBounds(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_hasType_functionType, /*IsSupported=*/true));
}
@@ -660,6 +660,19 @@
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function_is_member, /*IsSupported=*/LangOpts.CPlusPlus));
}
+static bool checkCallbackAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
+ if (!D || (!isa<FunctionDecl>(D))) {
+ S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type_str)
+ << Attr << "functions";
+ return false;
+ }
+ return true;
+}
+
+static void matchRulesForCallback(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
+}
+
static bool checkCapabilityAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
if (!D || (!isa<RecordDecl>(D) && !isa<TypedefNameDecl>(D))) {
S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type_str)
@@ -703,7 +716,7 @@
static void matchRulesForCarriesDependency(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_variable_is_parameter, /*IsSupported=*/true));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
}
@@ -840,7 +853,16 @@
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_variable, /*IsSupported=*/true));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_record, /*IsSupported=*/true));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC));
+}
+
+static bool checkDLLExportStaticLocalAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
+ if (!D || (!isa<FunctionDecl>(D))) {
+ S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type_str)
+ << Attr << "functions";
+ return false;
+ }
+ return true;
}
static bool checkDLLImportAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -856,7 +878,16 @@
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_variable, /*IsSupported=*/true));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_record, /*IsSupported=*/true));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC));
+}
+
+static bool checkDLLImportStaticLocalAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
+ if (!D || (!isa<FunctionDecl>(D))) {
+ S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type_str)
+ << Attr << "functions";
+ return false;
+ }
+ return true;
}
static bool checkDestructorAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -892,7 +923,7 @@
static void matchRulesForDisableTailCalls(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
}
static bool checkEmptyBasesAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -984,11 +1015,11 @@
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_field, /*IsSupported=*/true));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_namespace, /*IsSupported=*/LangOpts.CPlusPlus));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_category, /*IsSupported=*/LangOpts.ObjC1));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC1));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC1));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_property, /*IsSupported=*/LangOpts.ObjC1));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_protocol, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_category, /*IsSupported=*/LangOpts.ObjC));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_property, /*IsSupported=*/LangOpts.ObjC));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_protocol, /*IsSupported=*/LangOpts.ObjC));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_record, /*IsSupported=*/true));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_type_alias, /*IsSupported=*/true));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_variable, /*IsSupported=*/true));
@@ -1038,6 +1069,19 @@
return true;
}
+static bool checkFortifyStdLibAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
+ if (!D || (!isa<FunctionDecl>(D))) {
+ S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type_str)
+ << Attr << "functions";
+ return false;
+ }
+ return true;
+}
+
+static void matchRulesForFortifyStdLib(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
+}
+
static bool checkGNUInlineAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
if (!D || (!isa<FunctionDecl>(D))) {
S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type_str)
@@ -1098,7 +1142,7 @@
}
static void matchRulesForIBAction(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method_is_instance, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method_is_instance, /*IsSupported=*/LangOpts.ObjC));
}
static bool checkIFuncAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -1320,7 +1364,7 @@
static void matchRulesForMinSize(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
}
static bool checkMinVectorWidthAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -1448,7 +1492,7 @@
}
static void matchRulesForNSConsumesSelf(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
}
static bool checkNakedAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -1503,7 +1547,7 @@
static void matchRulesForNoDebug(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_hasType_functionType, /*IsSupported=*/true));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_variable_not_is_parameter, /*IsSupported=*/true));
}
@@ -1609,7 +1653,7 @@
static void matchRulesForNoSanitize(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_variable_is_global, /*IsSupported=*/true));
}
@@ -1627,6 +1671,20 @@
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_variable_is_global, /*IsSupported=*/true));
}
+static bool checkNoSpeculativeLoadHardeningAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
+ if (!D || (!isa<FunctionDecl>(D) && !isa<ObjCMethodDecl>(D))) {
+ S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type_str)
+ << Attr << "functions and Objective-C methods";
+ return false;
+ }
+ return true;
+}
+
+static void matchRulesForNoSpeculativeLoadHardening(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
+}
+
static bool checkNoSplitStackAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
if (!D || (!isa<FunctionDecl>(D))) {
S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type_str)
@@ -1701,6 +1759,92 @@
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
}
+static bool checkOSConsumedAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
+ if (!D || (!isa<ParmVarDecl>(D))) {
+ S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type_str)
+ << Attr << "parameters";
+ return false;
+ }
+ return true;
+}
+
+static void matchRulesForOSConsumed(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_variable_is_parameter, /*IsSupported=*/true));
+}
+
+static bool isNonStaticCXXMethod(const Decl *D) {
+ if (const auto *S = dyn_cast<CXXMethodDecl>(D))
+ return !S->isStatic();
+ return false;
+}
+
+static bool checkOSConsumesThisAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
+ if (!D || (!isNonStaticCXXMethod(D))) {
+ S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type_str)
+ << Attr << "non-static member functions";
+ return false;
+ }
+ return true;
+}
+
+static bool checkOSReturnsNotRetainedAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
+ if (!D || (!isa<FunctionDecl>(D) && !isa<ObjCMethodDecl>(D) && !isa<ObjCPropertyDecl>(D) && !isa<ParmVarDecl>(D))) {
+ S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type_str)
+ << Attr << "functions, Objective-C methods, Objective-C properties, and parameters";
+ return false;
+ }
+ return true;
+}
+
+static void matchRulesForOSReturnsNotRetained(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_property, /*IsSupported=*/LangOpts.ObjC));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_variable_is_parameter, /*IsSupported=*/true));
+}
+
+static bool checkOSReturnsRetainedAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
+ if (!D || (!isa<FunctionDecl>(D) && !isa<ObjCMethodDecl>(D) && !isa<ObjCPropertyDecl>(D) && !isa<ParmVarDecl>(D))) {
+ S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type_str)
+ << Attr << "functions, Objective-C methods, Objective-C properties, and parameters";
+ return false;
+ }
+ return true;
+}
+
+static void matchRulesForOSReturnsRetained(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_property, /*IsSupported=*/LangOpts.ObjC));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_variable_is_parameter, /*IsSupported=*/true));
+}
+
+static bool checkOSReturnsRetainedOnNonZeroAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
+ if (!D || (!isa<ParmVarDecl>(D))) {
+ S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type_str)
+ << Attr << "parameters";
+ return false;
+ }
+ return true;
+}
+
+static void matchRulesForOSReturnsRetainedOnNonZero(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_variable_is_parameter, /*IsSupported=*/true));
+}
+
+static bool checkOSReturnsRetainedOnZeroAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
+ if (!D || (!isa<ParmVarDecl>(D))) {
+ S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type_str)
+ << Attr << "parameters";
+ return false;
+ }
+ return true;
+}
+
+static void matchRulesForOSReturnsRetainedOnZero(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_variable_is_parameter, /*IsSupported=*/true));
+}
+
static bool checkObjCBoxableAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
if (!D || (!isa<RecordDecl>(D))) {
S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type_str)
@@ -1754,24 +1898,19 @@
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_record, /*IsSupported=*/true));
}
-static bool isObjCInterfaceDeclInitMethod(const Decl *D) {
- if (const auto *S = dyn_cast<ObjCMethodDecl>(D))
- return S->getMethodFamily() == OMF_init &&
- (isa<ObjCInterfaceDecl>(S->getDeclContext()) ||
- (isa<ObjCCategoryDecl>(S->getDeclContext()) &&
- cast<ObjCCategoryDecl>(S->getDeclContext())->IsClassExtension()));
- return false;
-}
-
static bool checkObjCDesignatedInitializerAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
- if (!D || (!isObjCInterfaceDeclInitMethod(D))) {
+ if (!D || (!isa<ObjCMethodDecl>(D))) {
S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type_str)
- << Attr << "init methods of interface or class extension declarations";
+ << Attr << "Objective-C methods";
return false;
}
return true;
}
+static void matchRulesForObjCDesignatedInitializer(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
+}
+
static bool checkObjCExceptionAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
if (!D || (!isa<ObjCInterfaceDecl>(D))) {
S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type_str)
@@ -1782,7 +1921,7 @@
}
static void matchRulesForObjCException(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC));
}
static bool checkObjCExplicitProtocolImplAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -1795,7 +1934,31 @@
}
static void matchRulesForObjCExplicitProtocolImpl(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_protocol, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_protocol, /*IsSupported=*/LangOpts.ObjC));
+}
+
+static bool checkObjCExternallyRetainedAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
+ if (!D || (!isNonParmVar(D) && !isa<FunctionDecl>(D) && !isa<BlockDecl>(D) && !isa<ObjCMethodDecl>(D))) {
+ S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type_str)
+ << Attr << "variables, functions, blocks, and Objective-C methods";
+ return false;
+ }
+ return true;
+}
+
+static bool checkObjCAutoRefCountLangOpts(Sema &S, const ParsedAttr &Attr) {
+ if (S.LangOpts.ObjCAutoRefCount)
+ return true;
+
+ S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << Attr.getName();
+ return false;
+}
+
+static void matchRulesForObjCExternallyRetained(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_variable_not_is_parameter, /*IsSupported=*/true));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_block, /*IsSupported=*/LangOpts.Blocks));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
}
static bool checkObjCMethodFamilyAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -1808,7 +1971,28 @@
}
static void matchRulesForObjCMethodFamily(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
+}
+
+static bool checkObjCNonLazyClassAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
+ if (!D || (!isa<ObjCInterfaceDecl>(D))) {
+ S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type_str)
+ << Attr << "Objective-C interfaces";
+ return false;
+ }
+ return true;
+}
+
+static bool checkObjCLangOpts(Sema &S, const ParsedAttr &Attr) {
+ if (S.LangOpts.ObjC)
+ return true;
+
+ S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << Attr.getName();
+ return false;
+}
+
+static void matchRulesForObjCNonLazyClass(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC));
}
static bool checkObjCPreciseLifetimeAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -1834,7 +2018,7 @@
}
static void matchRulesForObjCRequiresPropertyDefs(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC));
}
static bool checkObjCRequiresSuperAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -1847,7 +2031,7 @@
}
static void matchRulesForObjCRequiresSuper(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
}
static bool checkObjCReturnsInnerPointerAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -1860,8 +2044,8 @@
}
static void matchRulesForObjCReturnsInnerPointer(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC1));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_property, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_property, /*IsSupported=*/LangOpts.ObjC));
}
static bool checkObjCRootClassAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -1874,7 +2058,7 @@
}
static void matchRulesForObjCRootClass(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC));
}
static bool checkObjCRuntimeNameAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -1887,8 +2071,8 @@
}
static void matchRulesForObjCRuntimeName(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC1));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_protocol, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_protocol, /*IsSupported=*/LangOpts.ObjC));
}
static bool checkObjCRuntimeVisibleAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -1901,7 +2085,7 @@
}
static void matchRulesForObjCRuntimeVisible(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC));
}
static bool checkObjCSubclassingRestrictedAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -1914,7 +2098,7 @@
}
static void matchRulesForObjCSubclassingRestricted(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_interface, /*IsSupported=*/LangOpts.ObjC));
}
static bool checkOpenCLAccessAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -1999,7 +2183,7 @@
static void matchRulesForOptimizeNone(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
}
static bool checkOverloadableAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -2317,7 +2501,7 @@
}
static void matchRulesForReturnsNonNull(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
}
@@ -2375,8 +2559,8 @@
static void matchRulesForSection(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_variable_is_global, /*IsSupported=*/true));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC1));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_property, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_property, /*IsSupported=*/LangOpts.ObjC));
}
static bool checkSetTypestateAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -2401,6 +2585,20 @@
return true;
}
+static bool checkSpeculativeLoadHardeningAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
+ if (!D || (!isa<FunctionDecl>(D) && !isa<ObjCMethodDecl>(D))) {
+ S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type_str)
+ << Attr << "functions and Objective-C methods";
+ return false;
+ }
+ return true;
+}
+
+static void matchRulesForSpeculativeLoadHardening(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
+}
+
static bool checkSwiftContextAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
if (!D || (!isa<ParmVarDecl>(D))) {
S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type_str)
@@ -2542,6 +2740,15 @@
}
}
+static bool checkUninitializedAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
+ if (!D || (!isLocalVar(D))) {
+ S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type_str)
+ << Attr << "local variables";
+ return false;
+ }
+ return true;
+}
+
static bool checkUnusedAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
if (!D || (!isa<VarDecl>(D) && !isa<ObjCIvarDecl>(D) && !isa<TypeDecl>(D) && !isa<EnumDecl>(D) && !isa<EnumConstantDecl>(D) && !isa<LabelDecl>(D) && !isa<FieldDecl>(D) && !isa<ObjCMethodDecl>(D) && !isFunctionLike(D))) {
S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type_str)
@@ -2670,7 +2877,7 @@
}
static void matchRulesForWarnUnusedResult(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_enum, /*IsSupported=*/true));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_record, /*IsSupported=*/true));
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_hasType_functionType, /*IsSupported=*/true));
@@ -2705,6 +2912,37 @@
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
}
+static bool checkWebAssemblyImportModuleAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
+ if (!D || (!isa<FunctionDecl>(D))) {
+ S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type_str)
+ << Attr << "functions";
+ return false;
+ }
+ return true;
+}
+
+static bool isTargetwasm32wasm64(const TargetInfo &Target) {
+ const llvm::Triple &T = Target.getTriple();
+ return true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64);
+}
+
+static void matchRulesForWebAssemblyImportModule(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
+}
+
+static bool checkWebAssemblyImportNameAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
+ if (!D || (!isa<FunctionDecl>(D))) {
+ S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type_str)
+ << Attr << "functions";
+ return false;
+ }
+ return true;
+}
+
+static void matchRulesForWebAssemblyImportName(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
+}
+
static bool checkWorkGroupSizeHintAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
if (!D || (!isa<FunctionDecl>(D))) {
S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type_str)
@@ -2751,7 +2989,7 @@
static void matchRulesForXRayInstrument(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
}
static bool checkXRayLogArgsAppertainsTo(Sema &S, const ParsedAttr &Attr, const Decl *D) {
@@ -2765,10 +3003,11 @@
static void matchRulesForXRayLogArgs(llvm::SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules, const LangOptions &LangOpts) {
MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_function, /*IsSupported=*/true));
- MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC1));
+ MatchRules.push_back(std::make_pair(attr::SubjectMatchRule_objc_method, /*IsSupported=*/LangOpts.ObjC));
}
static const ParsedAttrInfo AttrInfoMap[ParsedAttr::UnknownAttribute + 1] = {
+ { 0, 0, 0, 0, 1, 0, 0, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_AArch64VectorPcs
{ 2, 0, 0, 0, 0, 0, 0, 1, checkAMDGPUFlatWorkGroupSizeAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForAMDGPUFlatWorkGroupSize }, // AT_AMDGPUFlatWorkGroupSize
{ 1, 0, 0, 0, 0, 0, 0, 1, checkAMDGPUNumSGPRAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForAMDGPUNumSGPR }, // AT_AMDGPUNumSGPR
{ 1, 0, 0, 0, 0, 0, 0, 1, checkAMDGPUNumVGPRAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForAMDGPUNumVGPR }, // AT_AMDGPUNumVGPR
@@ -2798,7 +3037,7 @@
{ 0, 15, 0, 0, 0, 0, 0, 0, checkAssertExclusiveLockAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_AssertExclusiveLock
{ 0, 15, 0, 0, 0, 0, 0, 0, checkAssertSharedLockAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_AssertSharedLock
{ 1, 1, 0, 0, 0, 0, 1, 1, checkAssumeAlignedAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForAssumeAligned }, // AT_AssumeAligned
- { 8, 0, 1, 0, 0, 0, 0, 1, checkAvailabilityAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForAvailability }, // AT_Availability
+ { 9, 0, 1, 0, 0, 0, 0, 1, checkAvailabilityAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForAvailability }, // AT_Availability
{ 1, 0, 0, 0, 0, 0, 0, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_Blocks
{ 0, 0, 0, 0, 1, 0, 1, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_CDecl
{ 0, 0, 0, 0, 0, 0, 0, 1, checkCFAuditedTransferAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForCFAuditedTransfer }, // AT_CFAuditedTransfer
@@ -2817,6 +3056,7 @@
{ 0, 0, 0, 0, 0, 0, 0, 1, checkCUDASharedAppertainsTo, checkCUDALangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForCUDAShared }, // AT_CUDAShared
{ 0, 0, 0, 0, 0, 0, 0, 1, checkCXX11NoReturnAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForCXX11NoReturn }, // AT_CXX11NoReturn
{ 0, 15, 0, 0, 0, 0, 0, 1, checkCallableWhenAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForCallableWhen }, // AT_CallableWhen
+ { 0, 15, 0, 0, 0, 0, 0, 1, checkCallbackAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForCallback }, // AT_Callback
{ 1, 0, 0, 0, 0, 0, 0, 1, checkCapabilityAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, CapabilityAttrSpellingMap, matchRulesForCapability }, // AT_Capability
{ 0, 0, 0, 0, 0, 0, 0, 1, checkCarriesDependencyAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForCarriesDependency }, // AT_CarriesDependency
{ 1, 0, 0, 0, 0, 0, 1, 0, checkCleanupAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_Cleanup
@@ -2830,7 +3070,9 @@
{ 0, 0, 0, 0, 0, 0, 0, 1, checkConsumableSetOnReadAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForConsumableSetOnRead }, // AT_ConsumableSetOnRead
{ 0, 0, 0, 0, 0, 0, 0, 1, checkConvergentAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForConvergent }, // AT_Convergent
{ 0, 0, 0, 1, 0, 0, 1, 1, checkDLLExportAppertainsTo, defaultDiagnoseLangOpts, isTargetx86x86_64armthumbaarch64Win32, defaultSpellingIndexToSemanticSpelling, matchRulesForDLLExport }, // AT_DLLExport
+ { 0, 0, 0, 1, 0, 0, 0, 0, checkDLLExportStaticLocalAppertainsTo, defaultDiagnoseLangOpts, isTargetx86x86_64armthumbaarch64Win32, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_DLLExportStaticLocal
{ 0, 0, 0, 1, 0, 0, 1, 1, checkDLLImportAppertainsTo, defaultDiagnoseLangOpts, isTargetx86x86_64armthumbaarch64Win32, defaultSpellingIndexToSemanticSpelling, matchRulesForDLLImport }, // AT_DLLImport
+ { 0, 0, 0, 1, 0, 0, 0, 0, checkDLLImportStaticLocalAppertainsTo, defaultDiagnoseLangOpts, isTargetx86x86_64armthumbaarch64Win32, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_DLLImportStaticLocal
{ 0, 2, 0, 0, 0, 0, 1, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_Deprecated
{ 0, 1, 0, 0, 0, 0, 1, 1, checkDestructorAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForDestructor }, // AT_Destructor
{ 3, 0, 0, 0, 0, 0, 0, 0, checkDiagnoseIfAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_DiagnoseIf
@@ -2848,6 +3090,7 @@
{ 0, 0, 0, 0, 0, 0, 1, 1, checkFlattenAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForFlatten }, // AT_Flatten
{ 3, 0, 0, 0, 0, 0, 1, 0, checkFormatAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_Format
{ 1, 0, 0, 0, 0, 0, 1, 0, checkFormatArgAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_FormatArg
+ { 2, 0, 0, 0, 0, 0, 0, 1, checkFortifyStdLibAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForFortifyStdLib }, // AT_FortifyStdLib
{ 0, 0, 0, 0, 0, 0, 1, 1, checkGNUInlineAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForGNUInline }, // AT_GNUInline
{ 1, 0, 0, 0, 0, 0, 0, 0, checkGuardedByAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_GuardedBy
{ 0, 0, 0, 0, 0, 0, 0, 0, checkGuardedVarAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_GuardedVar
@@ -2889,6 +3132,7 @@
{ 0, 0, 0, 0, 0, 0, 0, 0, checkNoAliasAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_NoAlias
{ 0, 0, 0, 0, 0, 0, 1, 1, checkNoCommonAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForNoCommon }, // AT_NoCommon
{ 0, 0, 0, 0, 0, 0, 1, 1, checkNoDebugAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForNoDebug }, // AT_NoDebug
+ { 0, 0, 0, 0, 1, 0, 0, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_NoDeref
{ 0, 0, 0, 0, 0, 0, 0, 1, checkNoDestroyAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForNoDestroy }, // AT_NoDestroy
{ 0, 0, 0, 0, 0, 0, 0, 1, checkNoDuplicateAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForNoDuplicate }, // AT_NoDuplicate
{ 0, 0, 0, 0, 0, 0, 0, 1, checkNoEscapeAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForNoEscape }, // AT_NoEscape
@@ -2899,25 +3143,34 @@
{ 0, 0, 0, 0, 0, 0, 1, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_NoReturn
{ 0, 15, 0, 0, 0, 0, 0, 1, checkNoSanitizeAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForNoSanitize }, // AT_NoSanitize
{ 0, 0, 0, 0, 0, 0, 1, 1, checkNoSanitizeSpecificAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForNoSanitizeSpecific }, // AT_NoSanitizeSpecific
+ { 0, 0, 0, 0, 0, 0, 0, 1, checkNoSpeculativeLoadHardeningAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForNoSpeculativeLoadHardening }, // AT_NoSpeculativeLoadHardening
{ 0, 0, 0, 0, 0, 0, 1, 1, checkNoSplitStackAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForNoSplitStack }, // AT_NoSplitStack
{ 0, 0, 0, 0, 0, 0, 0, 1, checkNoStackProtectorAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForNoStackProtector }, // AT_NoStackProtector
{ 0, 0, 0, 0, 0, 0, 0, 1, checkNoThreadSafetyAnalysisAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForNoThreadSafetyAnalysis }, // AT_NoThreadSafetyAnalysis
{ 0, 0, 0, 0, 0, 0, 1, 1, checkNoThrowAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForNoThrow }, // AT_NoThrow
{ 0, 15, 0, 0, 0, 0, 1, 0, checkNonNullAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_NonNull
{ 0, 0, 0, 0, 0, 0, 0, 1, checkNotTailCalledAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForNotTailCalled }, // AT_NotTailCalled
+ { 0, 0, 0, 0, 0, 0, 0, 1, checkOSConsumedAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForOSConsumed }, // AT_OSConsumed
+ { 0, 0, 0, 0, 0, 0, 0, 0, checkOSConsumesThisAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_OSConsumesThis
+ { 0, 0, 0, 0, 0, 0, 0, 1, checkOSReturnsNotRetainedAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForOSReturnsNotRetained }, // AT_OSReturnsNotRetained
+ { 0, 0, 0, 0, 0, 0, 0, 1, checkOSReturnsRetainedAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForOSReturnsRetained }, // AT_OSReturnsRetained
+ { 0, 0, 0, 0, 0, 0, 0, 1, checkOSReturnsRetainedOnNonZeroAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForOSReturnsRetainedOnNonZero }, // AT_OSReturnsRetainedOnNonZero
+ { 0, 0, 0, 0, 0, 0, 0, 1, checkOSReturnsRetainedOnZeroAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForOSReturnsRetainedOnZero }, // AT_OSReturnsRetainedOnZero
{ 0, 0, 0, 0, 0, 0, 0, 1, checkObjCBoxableAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForObjCBoxable }, // AT_ObjCBoxable
{ 1, 0, 0, 0, 0, 0, 0, 1, checkObjCBridgeAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForObjCBridge }, // AT_ObjCBridge
{ 1, 0, 0, 0, 0, 0, 0, 1, checkObjCBridgeMutableAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForObjCBridgeMutable }, // AT_ObjCBridgeMutable
{ 3, 0, 1, 0, 0, 0, 0, 1, checkObjCBridgeRelatedAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForObjCBridgeRelated }, // AT_ObjCBridgeRelated
- { 0, 0, 0, 0, 0, 0, 0, 0, checkObjCDesignatedInitializerAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_ObjCDesignatedInitializer
+ { 0, 0, 0, 0, 0, 0, 0, 1, checkObjCDesignatedInitializerAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForObjCDesignatedInitializer }, // AT_ObjCDesignatedInitializer
{ 0, 0, 0, 0, 0, 0, 0, 1, checkObjCExceptionAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForObjCException }, // AT_ObjCException
{ 0, 0, 0, 0, 0, 0, 0, 1, checkObjCExplicitProtocolImplAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForObjCExplicitProtocolImpl }, // AT_ObjCExplicitProtocolImpl
+ { 0, 0, 0, 0, 0, 0, 0, 1, checkObjCExternallyRetainedAppertainsTo, checkObjCAutoRefCountLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForObjCExternallyRetained }, // AT_ObjCExternallyRetained
{ 1, 0, 0, 0, 1, 0, 0, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_ObjCGC
{ 0, 0, 0, 0, 0, 0, 0, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_ObjCIndependentClass
{ 0, 0, 0, 0, 1, 0, 0, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_ObjCInertUnsafeUnretained
{ 0, 0, 0, 0, 1, 0, 0, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_ObjCKindOf
{ 1, 0, 0, 0, 0, 0, 0, 1, checkObjCMethodFamilyAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForObjCMethodFamily }, // AT_ObjCMethodFamily
{ 0, 0, 0, 0, 0, 0, 0, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_ObjCNSObject
+ { 0, 0, 0, 0, 0, 0, 0, 1, checkObjCNonLazyClassAppertainsTo, checkObjCLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForObjCNonLazyClass }, // AT_ObjCNonLazyClass
{ 1, 0, 0, 0, 1, 0, 0, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_ObjCOwnership
{ 0, 0, 0, 0, 0, 0, 0, 1, checkObjCPreciseLifetimeAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForObjCPreciseLifetime }, // AT_ObjCPreciseLifetime
{ 0, 0, 0, 0, 0, 0, 0, 1, checkObjCRequiresPropertyDefsAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForObjCRequiresPropertyDefs }, // AT_ObjCRequiresPropertyDefs
@@ -2975,6 +3228,7 @@
{ 0, 2, 0, 0, 0, 0, 1, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_Sentinel
{ 1, 0, 0, 0, 0, 0, 0, 1, checkSetTypestateAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForSetTypestate }, // AT_SetTypestate
{ 1, 15, 0, 0, 0, 0, 0, 0, checkSharedTrylockFunctionAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_SharedTrylockFunction
+ { 0, 0, 0, 0, 0, 0, 0, 1, checkSpeculativeLoadHardeningAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForSpeculativeLoadHardening }, // AT_SpeculativeLoadHardening
{ 0, 0, 0, 0, 1, 0, 1, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_StdCall
{ 0, 15, 0, 0, 0, 1, 0, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_Suppress
{ 0, 0, 0, 0, 1, 0, 0, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_SwiftCall
@@ -2997,6 +3251,7 @@
{ 1, 0, 0, 0, 0, 0, 0, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_TypeVisibility
{ 0, 0, 0, 0, 1, 0, 0, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_UPtr
{ 0, 1, 0, 0, 0, 0, 0, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_Unavailable
+ { 0, 0, 0, 0, 0, 0, 0, 0, checkUninitializedAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_Uninitialized
{ 0, 0, 0, 0, 0, 0, 1, 0, checkUnusedAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, UnusedAttrSpellingMap, nullptr }, // AT_Unused
{ 0, 0, 0, 0, 0, 0, 1, 0, checkUsedAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_Used
{ 1, 0, 0, 0, 0, 0, 0, 0, checkUuidAppertainsTo, checkMicrosoftExtBorlandLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_Uuid
@@ -3010,6 +3265,8 @@
{ 0, 0, 0, 0, 0, 0, 1, 1, checkWeakAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForWeak }, // AT_Weak
{ 0, 0, 0, 0, 0, 0, 0, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_WeakImport
{ 0, 1, 0, 0, 0, 0, 1, 1, checkWeakRefAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForWeakRef }, // AT_WeakRef
+ { 1, 0, 0, 1, 0, 0, 0, 1, checkWebAssemblyImportModuleAppertainsTo, defaultDiagnoseLangOpts, isTargetwasm32wasm64, defaultSpellingIndexToSemanticSpelling, matchRulesForWebAssemblyImportModule }, // AT_WebAssemblyImportModule
+ { 1, 0, 0, 1, 0, 0, 0, 1, checkWebAssemblyImportNameAppertainsTo, defaultDiagnoseLangOpts, isTargetwasm32wasm64, defaultSpellingIndexToSemanticSpelling, matchRulesForWebAssemblyImportName }, // AT_WebAssemblyImportName
{ 3, 0, 0, 0, 0, 0, 0, 1, checkWorkGroupSizeHintAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, defaultSpellingIndexToSemanticSpelling, matchRulesForWorkGroupSizeHint }, // AT_WorkGroupSizeHint
{ 0, 0, 0, 1, 0, 0, 1, 0, defaultAppertainsTo, defaultDiagnoseLangOpts, isTargetx86x86_64, defaultSpellingIndexToSemanticSpelling, nullptr }, // AT_X86ForceAlignArgPointer
{ 0, 0, 0, 0, 0, 0, 0, 1, checkXRayInstrumentAppertainsTo, defaultDiagnoseLangOpts, defaultTargetRequirements, XRayInstrumentAttrSpellingMap, matchRulesForXRayInstrument }, // AT_XRayInstrument
diff --git a/linux-x64/clang/include/clang/Sema/AttrParsedAttrKinds.inc b/linux-x64/clang/include/clang/Sema/AttrParsedAttrKinds.inc
index 9990222..9ed0011 100644
--- a/linux-x64/clang/include/clang/Sema/AttrParsedAttrKinds.inc
+++ b/linux-x64/clang/include/clang/Sema/AttrParsedAttrKinds.inc
@@ -181,7 +181,7 @@
return ParsedAttr::AT_Unused; // "unused"
}
break;
- case 7: // 18 strings to match.
+ case 7: // 19 strings to match.
switch (Name[0]) {
default: break;
case '_': // 1 string to match.
@@ -217,16 +217,27 @@
if (memcmp(Name.data()+1, "insize", 6) != 0)
break;
return ParsedAttr::AT_MinSize; // "minsize"
- case 'n': // 4 strings to match.
+ case 'n': // 5 strings to match.
switch (Name[1]) {
default: break;
- case 'o': // 3 strings to match.
+ case 'o': // 4 strings to match.
switch (Name[2]) {
default: break;
- case 'd': // 1 string to match.
- if (memcmp(Name.data()+3, "ebug", 4) != 0)
+ case 'd': // 2 strings to match.
+ if (Name[3] != 'e')
break;
- return ParsedAttr::AT_NoDebug; // "nodebug"
+ switch (Name[4]) {
+ default: break;
+ case 'b': // 1 string to match.
+ if (memcmp(Name.data()+5, "ug", 2) != 0)
+ break;
+ return ParsedAttr::AT_NoDebug; // "nodebug"
+ case 'r': // 1 string to match.
+ if (memcmp(Name.data()+5, "ef", 2) != 0)
+ break;
+ return ParsedAttr::AT_NoDeref; // "noderef"
+ }
+ break;
case 'n': // 1 string to match.
if (memcmp(Name.data()+3, "null", 4) != 0)
break;
@@ -290,7 +301,7 @@
return ParsedAttr::AT_WeakRef; // "weakref"
}
break;
- case 8: // 15 strings to match.
+ case 8: // 16 strings to match.
switch (Name[0]) {
default: break;
case 'N': // 1 string to match.
@@ -301,10 +312,19 @@
if (memcmp(Name.data()+1, "nnotate", 7) != 0)
break;
return ParsedAttr::AT_Annotate; // "annotate"
- case 'c': // 1 string to match.
- if (memcmp(Name.data()+1, "onstant", 7) != 0)
- break;
- return ParsedAttr::AT_CUDAConstant; // "constant"
+ case 'c': // 2 strings to match.
+ switch (Name[1]) {
+ default: break;
+ case 'a': // 1 string to match.
+ if (memcmp(Name.data()+2, "llback", 6) != 0)
+ break;
+ return ParsedAttr::AT_Callback; // "callback"
+ case 'o': // 1 string to match.
+ if (memcmp(Name.data()+2, "nstant", 6) != 0)
+ break;
+ return ParsedAttr::AT_CUDAConstant; // "constant"
+ }
+ break;
case 'f': // 1 string to match.
if (memcmp(Name.data()+1, "astcall", 7) != 0)
break;
@@ -554,7 +574,7 @@
break;
}
break;
- case 11: // 16 strings to match.
+ case 11: // 18 strings to match.
switch (Name[0]) {
default: break;
case 'a': // 2 strings to match.
@@ -593,6 +613,10 @@
if (memcmp(Name.data()+1, "uarded_var", 10) != 0)
break;
return ParsedAttr::AT_GuardedVar; // "guarded_var"
+ case 'i': // 1 string to match.
+ if (memcmp(Name.data()+1, "mport_name", 10) != 0)
+ break;
+ return ParsedAttr::AT_WebAssemblyImportName; // "import_name"
case 'n': // 4 strings to match.
switch (Name[1]) {
default: break;
@@ -619,10 +643,19 @@
return ParsedAttr::AT_NSConsumed; // "ns_consumed"
}
break;
- case 'o': // 1 string to match.
- if (memcmp(Name.data()+1, "bjc_bridge", 10) != 0)
- break;
- return ParsedAttr::AT_ObjCBridge; // "objc_bridge"
+ case 'o': // 2 strings to match.
+ switch (Name[1]) {
+ default: break;
+ case 'b': // 1 string to match.
+ if (memcmp(Name.data()+2, "jc_bridge", 9) != 0)
+ break;
+ return ParsedAttr::AT_ObjCBridge; // "objc_bridge"
+ case 's': // 1 string to match.
+ if (memcmp(Name.data()+2, "_consumed", 9) != 0)
+ break;
+ return ParsedAttr::AT_OSConsumed; // "os_consumed"
+ }
+ break;
case 't': // 1 string to match.
if (memcmp(Name.data()+1, "rivial_abi", 10) != 0)
break;
@@ -691,7 +724,7 @@
return ParsedAttr::AT_PreserveAll; // "preserve_all"
}
break;
- case 13: // 15 strings to match.
+ case 13: // 17 strings to match.
switch (Name[0]) {
default: break;
case 'a': // 2 strings to match.
@@ -711,10 +744,19 @@
if (memcmp(Name.data()+1, "allable_when", 12) != 0)
break;
return ParsedAttr::AT_CallableWhen; // "callable_when"
- case 'i': // 1 string to match.
- if (memcmp(Name.data()+1, "nit_priority", 12) != 0)
- break;
- return ParsedAttr::AT_InitPriority; // "init_priority"
+ case 'i': // 2 strings to match.
+ switch (Name[1]) {
+ default: break;
+ case 'm': // 1 string to match.
+ if (memcmp(Name.data()+2, "port_module", 11) != 0)
+ break;
+ return ParsedAttr::AT_WebAssemblyImportModule; // "import_module"
+ case 'n': // 1 string to match.
+ if (memcmp(Name.data()+2, "it_priority", 11) != 0)
+ break;
+ return ParsedAttr::AT_InitPriority; // "init_priority"
+ }
+ break;
case 'l': // 3 strings to match.
switch (Name[1]) {
default: break;
@@ -773,6 +815,10 @@
return ParsedAttr::AT_SwiftContext; // "swift_context"
}
break;
+ case 'u': // 1 string to match.
+ if (memcmp(Name.data()+1, "ninitialized", 12) != 0)
+ break;
+ return ParsedAttr::AT_Uninitialized; // "uninitialized"
case 'v': // 1 string to match.
if (memcmp(Name.data()+1, "ec_type_hint", 12) != 0)
break;
@@ -783,7 +829,7 @@
return ParsedAttr::AT_XRayLogArgs; // "xray_log_args"
}
break;
- case 14: // 12 strings to match.
+ case 14: // 13 strings to match.
switch (Name[0]) {
default: break;
case 'a': // 3 strings to match.
@@ -811,6 +857,10 @@
if (memcmp(Name.data()+1, "evice_builtin", 13) != 0)
break;
return ParsedAttr::IgnoredAttribute; // "device_builtin"
+ case 'f': // 1 string to match.
+ if (memcmp(Name.data()+1, "ortify_stdlib", 13) != 0)
+ break;
+ return ParsedAttr::AT_FortifyStdLib; // "fortify_stdlib"
case 'i': // 1 string to match.
if (memcmp(Name.data()+1, "ntel_ocl_bicc", 13) != 0)
break;
@@ -929,7 +979,7 @@
return ParsedAttr::AT_ReleaseCapability; // "unlock_function"
}
break;
- case 16: // 6 strings to match.
+ case 16: // 7 strings to match.
switch (Name[0]) {
default: break;
case 'i': // 1 string to match.
@@ -953,6 +1003,10 @@
return ParsedAttr::AT_NSConsumesSelf; // "ns_consumes_self"
}
break;
+ case 'o': // 1 string to match.
+ if (memcmp(Name.data()+1, "s_consumes_this", 15) != 0)
+ break;
+ return ParsedAttr::AT_OSConsumesThis; // "os_consumes_this"
case 'p': // 1 string to match.
if (memcmp(Name.data()+1, "ass_object_size", 15) != 0)
break;
@@ -1002,12 +1056,16 @@
return ParsedAttr::AT_TransparentUnion; // "transparent_union"
}
break;
- case 18: // 14 strings to match.
+ case 18: // 16 strings to match.
switch (Name[0]) {
default: break;
- case 'a': // 2 strings to match.
+ case 'a': // 3 strings to match.
switch (Name[1]) {
default: break;
+ case 'a': // 1 string to match.
+ if (memcmp(Name.data()+2, "rch64_vector_pcs", 16) != 0)
+ break;
+ return ParsedAttr::AT_AArch64VectorPcs; // "aarch64_vector_pcs"
case 'c': // 1 string to match.
if (memcmp(Name.data()+2, "quire_capability", 16) != 0)
break;
@@ -1060,13 +1118,24 @@
return ParsedAttr::AT_NoStackProtector; // "no_stack_protector"
}
break;
- case 'o': // 2 strings to match.
+ case 'o': // 3 strings to match.
switch (Name[1]) {
default: break;
- case 'b': // 1 string to match.
- if (memcmp(Name.data()+2, "jc_method_family", 16) != 0)
+ case 'b': // 2 strings to match.
+ if (memcmp(Name.data()+2, "jc_", 3) != 0)
break;
- return ParsedAttr::AT_ObjCMethodFamily; // "objc_method_family"
+ switch (Name[5]) {
+ default: break;
+ case 'm': // 1 string to match.
+ if (memcmp(Name.data()+6, "ethod_family", 12) != 0)
+ break;
+ return ParsedAttr::AT_ObjCMethodFamily; // "objc_method_family"
+ case 'n': // 1 string to match.
+ if (memcmp(Name.data()+6, "onlazy_class", 12) != 0)
+ break;
+ return ParsedAttr::AT_ObjCNonLazyClass; // "objc_nonlazy_class"
+ }
+ break;
case 'p': // 1 string to match.
if (memcmp(Name.data()+2, "encl_unroll_hint", 16) != 0)
break;
@@ -1087,7 +1156,7 @@
return ParsedAttr::AT_WarnUnusedResult; // "warn_unused_result"
}
break;
- case 19: // 10 strings to match.
+ case 19: // 11 strings to match.
switch (Name[0]) {
default: break;
case 'a': // 1 string to match.
@@ -1126,30 +1195,39 @@
return ParsedAttr::AT_NSReturnsRetained; // "ns_returns_retained"
}
break;
- case 'o': // 3 strings to match.
- if (memcmp(Name.data()+1, "bjc_", 4) != 0)
- break;
- switch (Name[5]) {
+ case 'o': // 4 strings to match.
+ switch (Name[1]) {
default: break;
- case 'b': // 2 strings to match.
- if (memcmp(Name.data()+6, "ridge_", 6) != 0)
+ case 'b': // 3 strings to match.
+ if (memcmp(Name.data()+2, "jc_", 3) != 0)
break;
- switch (Name[12]) {
+ switch (Name[5]) {
default: break;
- case 'm': // 1 string to match.
- if (memcmp(Name.data()+13, "utable", 6) != 0)
+ case 'b': // 2 strings to match.
+ if (memcmp(Name.data()+6, "ridge_", 6) != 0)
break;
- return ParsedAttr::AT_ObjCBridgeMutable; // "objc_bridge_mutable"
+ switch (Name[12]) {
+ default: break;
+ case 'm': // 1 string to match.
+ if (memcmp(Name.data()+13, "utable", 6) != 0)
+ break;
+ return ParsedAttr::AT_ObjCBridgeMutable; // "objc_bridge_mutable"
+ case 'r': // 1 string to match.
+ if (memcmp(Name.data()+13, "elated", 6) != 0)
+ break;
+ return ParsedAttr::AT_ObjCBridgeRelated; // "objc_bridge_related"
+ }
+ break;
case 'r': // 1 string to match.
- if (memcmp(Name.data()+13, "elated", 6) != 0)
+ if (memcmp(Name.data()+6, "equires_super", 13) != 0)
break;
- return ParsedAttr::AT_ObjCBridgeRelated; // "objc_bridge_related"
+ return ParsedAttr::AT_ObjCRequiresSuper; // "objc_requires_super"
}
break;
- case 'r': // 1 string to match.
- if (memcmp(Name.data()+6, "equires_super", 13) != 0)
+ case 's': // 1 string to match.
+ if (memcmp(Name.data()+2, "_returns_retained", 17) != 0)
break;
- return ParsedAttr::AT_ObjCRequiresSuper; // "objc_requires_super"
+ return ParsedAttr::AT_OSReturnsRetained; // "os_returns_retained"
}
break;
case 'r': // 1 string to match.
@@ -1254,7 +1332,7 @@
return ParsedAttr::AT_XRayInstrument; // "xray_always_instrument"
}
break;
- case 23: // 6 strings to match.
+ case 23: // 7 strings to match.
switch (Name[0]) {
default: break;
case 'c': // 1 string to match.
@@ -1284,13 +1362,17 @@
return ParsedAttr::AT_NSReturnsNotRetained; // "ns_returns_not_retained"
}
break;
+ case 'o': // 1 string to match.
+ if (memcmp(Name.data()+1, "s_returns_not_retained", 22) != 0)
+ break;
+ return ParsedAttr::AT_OSReturnsNotRetained; // "os_returns_not_retained"
case 's': // 1 string to match.
if (memcmp(Name.data()+1, "hared_trylock_function", 22) != 0)
break;
return ParsedAttr::AT_SharedTrylockFunction; // "shared_trylock_function"
}
break;
- case 24: // 2 strings to match.
+ case 24: // 3 strings to match.
switch (Name[0]) {
default: break;
case 'a': // 1 string to match.
@@ -1301,6 +1383,10 @@
if (memcmp(Name.data()+1, "xclusive_locks_required", 23) != 0)
break;
return ParsedAttr::AT_RequiresCapability; // "exclusive_locks_required"
+ case 'o': // 1 string to match.
+ if (memcmp(Name.data()+1, "bjc_externally_retained", 23) != 0)
+ break;
+ return ParsedAttr::AT_ObjCExternallyRetained; // "objc_externally_retained"
}
break;
case 25: // 5 strings to match.
@@ -1335,7 +1421,7 @@
return ParsedAttr::AT_ReleaseCapability; // "release_shared_capability"
}
break;
- case 26: // 6 strings to match.
+ case 26: // 7 strings to match.
switch (Name[0]) {
default: break;
case 'c': // 1 string to match.
@@ -1369,9 +1455,13 @@
return ParsedAttr::AT_RequiresCapability; // "requires_shared_capability"
}
break;
+ case 's': // 1 string to match.
+ if (memcmp(Name.data()+1, "peculative_load_hardening", 25) != 0)
+ break;
+ return ParsedAttr::AT_SpeculativeLoadHardening; // "speculative_load_hardening"
}
break;
- case 27: // 5 strings to match.
+ case 27: // 6 strings to match.
switch (Name[0]) {
default: break;
case 'a': // 1 string to match.
@@ -1393,19 +1483,28 @@
return ParsedAttr::IgnoredAttribute; // "device_builtin_texture_type"
}
break;
- case 'o': // 2 strings to match.
- if (memcmp(Name.data()+1, "bjc_", 4) != 0)
- break;
- switch (Name[5]) {
+ case 'o': // 3 strings to match.
+ switch (Name[1]) {
default: break;
- case 'd': // 1 string to match.
- if (memcmp(Name.data()+6, "esignated_initializer", 21) != 0)
+ case 'b': // 2 strings to match.
+ if (memcmp(Name.data()+2, "jc_", 3) != 0)
break;
- return ParsedAttr::AT_ObjCDesignatedInitializer; // "objc_designated_initializer"
+ switch (Name[5]) {
+ default: break;
+ case 'd': // 1 string to match.
+ if (memcmp(Name.data()+6, "esignated_initializer", 21) != 0)
+ break;
+ return ParsedAttr::AT_ObjCDesignatedInitializer; // "objc_designated_initializer"
+ case 's': // 1 string to match.
+ if (memcmp(Name.data()+6, "ubclassing_restricted", 21) != 0)
+ break;
+ return ParsedAttr::AT_ObjCSubclassingRestricted; // "objc_subclassing_restricted"
+ }
+ break;
case 's': // 1 string to match.
- if (memcmp(Name.data()+6, "ubclassing_restricted", 21) != 0)
+ if (memcmp(Name.data()+2, "_returns_retained_on_zero", 25) != 0)
break;
- return ParsedAttr::AT_ObjCSubclassingRestricted; // "objc_subclassing_restricted"
+ return ParsedAttr::AT_OSReturnsRetainedOnZero; // "os_returns_retained_on_zero"
}
break;
}
@@ -1414,14 +1513,32 @@
if (memcmp(Name.data()+0, "consumable_set_state_on_read", 28) != 0)
break;
return ParsedAttr::AT_ConsumableSetOnRead; // "consumable_set_state_on_read"
- case 29: // 1 string to match.
- if (memcmp(Name.data()+0, "try_acquire_shared_capability", 29) != 0)
- break;
- return ParsedAttr::AT_TryAcquireCapability; // "try_acquire_shared_capability"
- case 31: // 1 string to match.
- if (memcmp(Name.data()+0, "require_constant_initialization", 31) != 0)
- break;
- return ParsedAttr::AT_RequireConstantInit; // "require_constant_initialization"
+ case 29: // 2 strings to match.
+ switch (Name[0]) {
+ default: break;
+ case 'n': // 1 string to match.
+ if (memcmp(Name.data()+1, "o_speculative_load_hardening", 28) != 0)
+ break;
+ return ParsedAttr::AT_NoSpeculativeLoadHardening; // "no_speculative_load_hardening"
+ case 't': // 1 string to match.
+ if (memcmp(Name.data()+1, "ry_acquire_shared_capability", 28) != 0)
+ break;
+ return ParsedAttr::AT_TryAcquireCapability; // "try_acquire_shared_capability"
+ }
+ break;
+ case 31: // 2 strings to match.
+ switch (Name[0]) {
+ default: break;
+ case 'o': // 1 string to match.
+ if (memcmp(Name.data()+1, "s_returns_retained_on_non_zero", 30) != 0)
+ break;
+ return ParsedAttr::AT_OSReturnsRetainedOnNonZero; // "os_returns_retained_on_non_zero"
+ case 'r': // 1 string to match.
+ if (memcmp(Name.data()+1, "equire_constant_initialization", 30) != 0)
+ break;
+ return ParsedAttr::AT_RequireConstantInit; // "require_constant_initialization"
+ }
+ break;
case 34: // 1 string to match.
if (memcmp(Name.data()+0, "objc_requires_property_definitions", 34) != 0)
break;
@@ -1583,10 +1700,30 @@
if (memcmp(Name.data()+0, "empty_bases", 11) != 0)
break;
return ParsedAttr::AT_EmptyBases; // "empty_bases"
- case 12: // 1 string to match.
- if (memcmp(Name.data()+0, "__constant__", 12) != 0)
+ case 12: // 3 strings to match.
+ switch (Name[0]) {
+ default: break;
+ case '_': // 1 string to match.
+ if (memcmp(Name.data()+1, "_constant__", 11) != 0)
+ break;
+ return ParsedAttr::AT_CUDAConstant; // "__constant__"
+ case 'c': // 2 strings to match.
+ if (memcmp(Name.data()+1, "pu_", 3) != 0)
+ break;
+ switch (Name[4]) {
+ default: break;
+ case 'd': // 1 string to match.
+ if (memcmp(Name.data()+5, "ispatch", 7) != 0)
+ break;
+ return ParsedAttr::AT_CPUDispatch; // "cpu_dispatch"
+ case 's': // 1 string to match.
+ if (memcmp(Name.data()+5, "pecific", 7) != 0)
+ break;
+ return ParsedAttr::AT_CPUSpecific; // "cpu_specific"
+ }
break;
- return ParsedAttr::AT_CUDAConstant; // "__constant__"
+ }
+ break;
case 14: // 1 string to match.
if (memcmp(Name.data()+0, "layout_version", 14) != 0)
break;
@@ -1961,14 +2098,14 @@
break;
}
break;
- case 14: // 13 strings to match.
+ case 14: // 14 strings to match.
switch (Name[0]) {
default: break;
case ':': // 1 string to match.
if (memcmp(Name.data()+1, ":maybe_unused", 13) != 0)
break;
return ParsedAttr::AT_Unused; // "::maybe_unused"
- case 'c': // 3 strings to match.
+ case 'c': // 4 strings to match.
if (memcmp(Name.data()+1, "lang::", 6) != 0)
break;
switch (Name[7]) {
@@ -1977,6 +2114,10 @@
if (memcmp(Name.data()+8, "insize", 6) != 0)
break;
return ParsedAttr::AT_MinSize; // "clang::minsize"
+ case 'n': // 1 string to match.
+ if (memcmp(Name.data()+8, "oderef", 6) != 0)
+ break;
+ return ParsedAttr::AT_NoDeref; // "clang::noderef"
case 'o': // 2 strings to match.
switch (Name[8]) {
default: break;
@@ -2049,10 +2190,10 @@
break;
}
break;
- case 15: // 14 strings to match.
+ case 15: // 15 strings to match.
switch (Name[0]) {
default: break;
- case 'c': // 5 strings to match.
+ case 'c': // 6 strings to match.
if (memcmp(Name.data()+1, "lang::", 6) != 0)
break;
switch (Name[7]) {
@@ -2065,6 +2206,10 @@
if (memcmp(Name.data()+8, "nnotate", 7) != 0)
break;
return ParsedAttr::AT_Annotate; // "clang::annotate"
+ case 'c': // 1 string to match.
+ if (memcmp(Name.data()+8, "allback", 7) != 0)
+ break;
+ return ParsedAttr::AT_Callback; // "clang::callback"
case 'i': // 2 strings to match.
if (Name[8] != 'b')
break;
@@ -2233,10 +2378,10 @@
return ParsedAttr::AT_VectorCall; // "clang::vectorcall"
}
break;
- case 18: // 13 strings to match.
+ case 18: // 15 strings to match.
switch (Name[0]) {
default: break;
- case 'c': // 10 strings to match.
+ case 'c': // 12 strings to match.
if (memcmp(Name.data()+1, "lang::", 6) != 0)
break;
switch (Name[7]) {
@@ -2253,6 +2398,10 @@
if (memcmp(Name.data()+8, "uarded_var", 10) != 0)
break;
return ParsedAttr::AT_GuardedVar; // "clang::guarded_var"
+ case 'i': // 1 string to match.
+ if (memcmp(Name.data()+8, "mport_name", 10) != 0)
+ break;
+ return ParsedAttr::AT_WebAssemblyImportName; // "clang::import_name"
case 'n': // 3 strings to match.
switch (Name[8]) {
default: break;
@@ -2275,10 +2424,19 @@
return ParsedAttr::AT_NSConsumed; // "clang::ns_consumed"
}
break;
- case 'o': // 1 string to match.
- if (memcmp(Name.data()+8, "bjc_bridge", 10) != 0)
- break;
- return ParsedAttr::AT_ObjCBridge; // "clang::objc_bridge"
+ case 'o': // 2 strings to match.
+ switch (Name[8]) {
+ default: break;
+ case 'b': // 1 string to match.
+ if (memcmp(Name.data()+9, "jc_bridge", 9) != 0)
+ break;
+ return ParsedAttr::AT_ObjCBridge; // "clang::objc_bridge"
+ case 's': // 1 string to match.
+ if (memcmp(Name.data()+9, "_consumed", 9) != 0)
+ break;
+ return ParsedAttr::AT_OSConsumed; // "clang::os_consumed"
+ }
+ break;
case 't': // 1 string to match.
if (memcmp(Name.data()+8, "rivial_abi", 10) != 0)
break;
@@ -2377,14 +2535,14 @@
break;
}
break;
- case 20: // 10 strings to match.
+ case 20: // 12 strings to match.
switch (Name[0]) {
default: break;
case ':': // 1 string to match.
if (memcmp(Name.data()+1, ":carries_dependency", 19) != 0)
break;
return ParsedAttr::AT_CarriesDependency; // "::carries_dependency"
- case 'c': // 8 strings to match.
+ case 'c': // 10 strings to match.
if (memcmp(Name.data()+1, "lang::", 6) != 0)
break;
switch (Name[7]) {
@@ -2397,6 +2555,10 @@
if (memcmp(Name.data()+8, "allable_when", 12) != 0)
break;
return ParsedAttr::AT_CallableWhen; // "clang::callable_when"
+ case 'i': // 1 string to match.
+ if (memcmp(Name.data()+8, "mport_module", 12) != 0)
+ break;
+ return ParsedAttr::AT_WebAssemblyImportModule; // "clang::import_module"
case 'l': // 1 string to match.
if (memcmp(Name.data()+8, "ifetimebound", 12) != 0)
break;
@@ -2422,6 +2584,10 @@
return ParsedAttr::AT_SwiftContext; // "clang::swift_context"
}
break;
+ case 'u': // 1 string to match.
+ if (memcmp(Name.data()+8, "ninitialized", 12) != 0)
+ break;
+ return ParsedAttr::AT_Uninitialized; // "clang::uninitialized"
case 'x': // 1 string to match.
if (memcmp(Name.data()+8, "ray_log_args", 12) != 0)
break;
@@ -2434,7 +2600,7 @@
return ParsedAttr::AT_ReturnsNonNull; // "gnu::returns_nonnull"
}
break;
- case 21: // 6 strings to match.
+ case 21: // 7 strings to match.
if (memcmp(Name.data()+0, "clang::", 7) != 0)
break;
switch (Name[7]) {
@@ -2443,6 +2609,10 @@
if (memcmp(Name.data()+8, "lways_destroy", 13) != 0)
break;
return ParsedAttr::AT_AlwaysDestroy; // "clang::always_destroy"
+ case 'f': // 1 string to match.
+ if (memcmp(Name.data()+8, "ortify_stdlib", 13) != 0)
+ break;
+ return ParsedAttr::AT_FortifyStdLib; // "clang::fortify_stdlib"
case 'i': // 1 string to match.
if (memcmp(Name.data()+8, "ntel_ocl_bicc", 13) != 0)
break;
@@ -2547,10 +2717,10 @@
return ParsedAttr::AT_TransparentUnion; // "gnu::transparent_union"
}
break;
- case 23: // 8 strings to match.
+ case 23: // 9 strings to match.
switch (Name[0]) {
default: break;
- case 'c': // 6 strings to match.
+ case 'c': // 7 strings to match.
if (memcmp(Name.data()+1, "lang::", 6) != 0)
break;
switch (Name[7]) {
@@ -2576,6 +2746,10 @@
return ParsedAttr::AT_NSConsumesSelf; // "clang::ns_consumes_self"
}
break;
+ case 'o': // 1 string to match.
+ if (memcmp(Name.data()+8, "s_consumes_this", 15) != 0)
+ break;
+ return ParsedAttr::AT_OSConsumesThis; // "clang::os_consumes_this"
case 'p': // 1 string to match.
if (memcmp(Name.data()+8, "ass_object_size", 15) != 0)
break;
@@ -2640,15 +2814,24 @@
return ParsedAttr::AT_NoSanitizeSpecific; // "gnu::no_sanitize_address"
}
break;
- case 25: // 10 strings to match.
+ case 25: // 12 strings to match.
if (memcmp(Name.data()+0, "clang::", 7) != 0)
break;
switch (Name[7]) {
default: break;
- case 'a': // 1 string to match.
- if (memcmp(Name.data()+8, "cquire_capability", 17) != 0)
- break;
- return ParsedAttr::AT_AcquireCapability; // "clang::acquire_capability"
+ case 'a': // 2 strings to match.
+ switch (Name[8]) {
+ default: break;
+ case 'a': // 1 string to match.
+ if (memcmp(Name.data()+9, "rch64_vector_pcs", 16) != 0)
+ break;
+ return ParsedAttr::AT_AArch64VectorPcs; // "clang::aarch64_vector_pcs"
+ case 'c': // 1 string to match.
+ if (memcmp(Name.data()+9, "quire_capability", 16) != 0)
+ break;
+ return ParsedAttr::AT_AcquireCapability; // "clang::acquire_capability"
+ }
+ break;
case 'd': // 1 string to match.
if (memcmp(Name.data()+8, "isable_tail_calls", 17) != 0)
break;
@@ -2676,10 +2859,21 @@
return ParsedAttr::AT_NoStackProtector; // "clang::no_stack_protector"
}
break;
- case 'o': // 1 string to match.
- if (memcmp(Name.data()+8, "bjc_method_family", 17) != 0)
+ case 'o': // 2 strings to match.
+ if (memcmp(Name.data()+8, "bjc_", 4) != 0)
break;
- return ParsedAttr::AT_ObjCMethodFamily; // "clang::objc_method_family"
+ switch (Name[12]) {
+ default: break;
+ case 'm': // 1 string to match.
+ if (memcmp(Name.data()+13, "ethod_family", 12) != 0)
+ break;
+ return ParsedAttr::AT_ObjCMethodFamily; // "clang::objc_method_family"
+ case 'n': // 1 string to match.
+ if (memcmp(Name.data()+13, "onlazy_class", 12) != 0)
+ break;
+ return ParsedAttr::AT_ObjCNonLazyClass; // "clang::objc_nonlazy_class"
+ }
+ break;
case 'r': // 1 string to match.
if (memcmp(Name.data()+8, "elease_capability", 17) != 0)
break;
@@ -2694,7 +2888,7 @@
return ParsedAttr::AT_WarnUnusedResult; // "clang::warn_unused_result"
}
break;
- case 26: // 9 strings to match.
+ case 26: // 10 strings to match.
if (memcmp(Name.data()+0, "clang::", 7) != 0)
break;
switch (Name[7]) {
@@ -2726,30 +2920,39 @@
if (memcmp(Name.data()+8, "s_returns_retained", 18) != 0)
break;
return ParsedAttr::AT_NSReturnsRetained; // "clang::ns_returns_retained"
- case 'o': // 3 strings to match.
- if (memcmp(Name.data()+8, "bjc_", 4) != 0)
- break;
- switch (Name[12]) {
+ case 'o': // 4 strings to match.
+ switch (Name[8]) {
default: break;
- case 'b': // 2 strings to match.
- if (memcmp(Name.data()+13, "ridge_", 6) != 0)
+ case 'b': // 3 strings to match.
+ if (memcmp(Name.data()+9, "jc_", 3) != 0)
break;
- switch (Name[19]) {
+ switch (Name[12]) {
default: break;
- case 'm': // 1 string to match.
- if (memcmp(Name.data()+20, "utable", 6) != 0)
+ case 'b': // 2 strings to match.
+ if (memcmp(Name.data()+13, "ridge_", 6) != 0)
break;
- return ParsedAttr::AT_ObjCBridgeMutable; // "clang::objc_bridge_mutable"
+ switch (Name[19]) {
+ default: break;
+ case 'm': // 1 string to match.
+ if (memcmp(Name.data()+20, "utable", 6) != 0)
+ break;
+ return ParsedAttr::AT_ObjCBridgeMutable; // "clang::objc_bridge_mutable"
+ case 'r': // 1 string to match.
+ if (memcmp(Name.data()+20, "elated", 6) != 0)
+ break;
+ return ParsedAttr::AT_ObjCBridgeRelated; // "clang::objc_bridge_related"
+ }
+ break;
case 'r': // 1 string to match.
- if (memcmp(Name.data()+20, "elated", 6) != 0)
+ if (memcmp(Name.data()+13, "equires_super", 13) != 0)
break;
- return ParsedAttr::AT_ObjCBridgeRelated; // "clang::objc_bridge_related"
+ return ParsedAttr::AT_ObjCRequiresSuper; // "clang::objc_requires_super"
}
break;
- case 'r': // 1 string to match.
- if (memcmp(Name.data()+13, "equires_super", 13) != 0)
+ case 's': // 1 string to match.
+ if (memcmp(Name.data()+9, "_returns_retained", 17) != 0)
break;
- return ParsedAttr::AT_ObjCRequiresSuper; // "clang::objc_requires_super"
+ return ParsedAttr::AT_OSReturnsRetained; // "clang::os_returns_retained"
}
break;
case 'r': // 1 string to match.
@@ -2858,10 +3061,10 @@
return ParsedAttr::AT_XRayInstrument; // "clang::xray_always_instrument"
}
break;
- case 30: // 4 strings to match.
+ case 30: // 5 strings to match.
switch (Name[0]) {
default: break;
- case 'c': // 3 strings to match.
+ case 'c': // 4 strings to match.
if (memcmp(Name.data()+1, "lang::", 6) != 0)
break;
switch (Name[7]) {
@@ -2885,6 +3088,10 @@
return ParsedAttr::AT_NSReturnsNotRetained; // "clang::ns_returns_not_retained"
}
break;
+ case 'o': // 1 string to match.
+ if (memcmp(Name.data()+8, "s_returns_not_retained", 22) != 0)
+ break;
+ return ParsedAttr::AT_OSReturnsNotRetained; // "clang::os_returns_not_retained"
}
break;
case 'g': // 1 string to match.
@@ -2893,10 +3100,10 @@
return ParsedAttr::AT_AnyX86NoCallerSavedRegisters; // "gnu::no_caller_saved_registers"
}
break;
- case 31: // 3 strings to match.
+ case 31: // 4 strings to match.
switch (Name[0]) {
default: break;
- case 'c': // 2 strings to match.
+ case 'c': // 3 strings to match.
if (memcmp(Name.data()+1, "lang::", 6) != 0)
break;
switch (Name[7]) {
@@ -2909,6 +3116,10 @@
if (memcmp(Name.data()+8, "xclusive_locks_required", 23) != 0)
break;
return ParsedAttr::AT_RequiresCapability; // "clang::exclusive_locks_required"
+ case 'o': // 1 string to match.
+ if (memcmp(Name.data()+8, "bjc_externally_retained", 23) != 0)
+ break;
+ return ParsedAttr::AT_ObjCExternallyRetained; // "clang::objc_externally_retained"
}
break;
case 'g': // 1 string to match.
@@ -2936,7 +3147,7 @@
return ParsedAttr::AT_ReleaseCapability; // "clang::release_shared_capability"
}
break;
- case 33: // 4 strings to match.
+ case 33: // 5 strings to match.
if (memcmp(Name.data()+0, "clang::", 7) != 0)
break;
switch (Name[7]) {
@@ -2964,9 +3175,13 @@
return ParsedAttr::AT_RequiresCapability; // "clang::requires_shared_capability"
}
break;
+ case 's': // 1 string to match.
+ if (memcmp(Name.data()+8, "peculative_load_hardening", 25) != 0)
+ break;
+ return ParsedAttr::AT_SpeculativeLoadHardening; // "clang::speculative_load_hardening"
}
break;
- case 34: // 3 strings to match.
+ case 34: // 4 strings to match.
if (memcmp(Name.data()+0, "clang::", 7) != 0)
break;
switch (Name[7]) {
@@ -2975,19 +3190,28 @@
if (memcmp(Name.data()+8, "mdgpu_flat_work_group_size", 26) != 0)
break;
return ParsedAttr::AT_AMDGPUFlatWorkGroupSize; // "clang::amdgpu_flat_work_group_size"
- case 'o': // 2 strings to match.
- if (memcmp(Name.data()+8, "bjc_", 4) != 0)
- break;
- switch (Name[12]) {
+ case 'o': // 3 strings to match.
+ switch (Name[8]) {
default: break;
- case 'd': // 1 string to match.
- if (memcmp(Name.data()+13, "esignated_initializer", 21) != 0)
+ case 'b': // 2 strings to match.
+ if (memcmp(Name.data()+9, "jc_", 3) != 0)
break;
- return ParsedAttr::AT_ObjCDesignatedInitializer; // "clang::objc_designated_initializer"
+ switch (Name[12]) {
+ default: break;
+ case 'd': // 1 string to match.
+ if (memcmp(Name.data()+13, "esignated_initializer", 21) != 0)
+ break;
+ return ParsedAttr::AT_ObjCDesignatedInitializer; // "clang::objc_designated_initializer"
+ case 's': // 1 string to match.
+ if (memcmp(Name.data()+13, "ubclassing_restricted", 21) != 0)
+ break;
+ return ParsedAttr::AT_ObjCSubclassingRestricted; // "clang::objc_subclassing_restricted"
+ }
+ break;
case 's': // 1 string to match.
- if (memcmp(Name.data()+13, "ubclassing_restricted", 21) != 0)
+ if (memcmp(Name.data()+9, "_returns_retained_on_zero", 25) != 0)
break;
- return ParsedAttr::AT_ObjCSubclassingRestricted; // "clang::objc_subclassing_restricted"
+ return ParsedAttr::AT_OSReturnsRetainedOnZero; // "clang::os_returns_retained_on_zero"
}
break;
}
@@ -2996,14 +3220,36 @@
if (memcmp(Name.data()+0, "clang::consumable_set_state_on_read", 35) != 0)
break;
return ParsedAttr::AT_ConsumableSetOnRead; // "clang::consumable_set_state_on_read"
- case 36: // 1 string to match.
- if (memcmp(Name.data()+0, "clang::try_acquire_shared_capability", 36) != 0)
+ case 36: // 2 strings to match.
+ if (memcmp(Name.data()+0, "clang::", 7) != 0)
break;
- return ParsedAttr::AT_TryAcquireCapability; // "clang::try_acquire_shared_capability"
- case 38: // 1 string to match.
- if (memcmp(Name.data()+0, "clang::require_constant_initialization", 38) != 0)
+ switch (Name[7]) {
+ default: break;
+ case 'n': // 1 string to match.
+ if (memcmp(Name.data()+8, "o_speculative_load_hardening", 28) != 0)
+ break;
+ return ParsedAttr::AT_NoSpeculativeLoadHardening; // "clang::no_speculative_load_hardening"
+ case 't': // 1 string to match.
+ if (memcmp(Name.data()+8, "ry_acquire_shared_capability", 28) != 0)
+ break;
+ return ParsedAttr::AT_TryAcquireCapability; // "clang::try_acquire_shared_capability"
+ }
+ break;
+ case 38: // 2 strings to match.
+ if (memcmp(Name.data()+0, "clang::", 7) != 0)
break;
- return ParsedAttr::AT_RequireConstantInit; // "clang::require_constant_initialization"
+ switch (Name[7]) {
+ default: break;
+ case 'o': // 1 string to match.
+ if (memcmp(Name.data()+8, "s_returns_retained_on_non_zero", 30) != 0)
+ break;
+ return ParsedAttr::AT_OSReturnsRetainedOnNonZero; // "clang::os_returns_retained_on_non_zero"
+ case 'r': // 1 string to match.
+ if (memcmp(Name.data()+8, "equire_constant_initialization", 30) != 0)
+ break;
+ return ParsedAttr::AT_RequireConstantInit; // "clang::require_constant_initialization"
+ }
+ break;
case 41: // 1 string to match.
if (memcmp(Name.data()+0, "clang::objc_requires_property_definitions", 41) != 0)
break;
@@ -3063,14 +3309,14 @@
break;
}
break;
- case 14: // 4 strings to match.
+ case 14: // 5 strings to match.
switch (Name[0]) {
default: break;
case ':': // 1 string to match.
if (memcmp(Name.data()+1, ":maybe_unused", 13) != 0)
break;
return ParsedAttr::AT_Unused; // "::maybe_unused"
- case 'c': // 3 strings to match.
+ case 'c': // 4 strings to match.
if (memcmp(Name.data()+1, "lang::", 6) != 0)
break;
switch (Name[7]) {
@@ -3079,6 +3325,10 @@
if (memcmp(Name.data()+8, "insize", 6) != 0)
break;
return ParsedAttr::AT_MinSize; // "clang::minsize"
+ case 'n': // 1 string to match.
+ if (memcmp(Name.data()+8, "oderef", 6) != 0)
+ break;
+ return ParsedAttr::AT_NoDeref; // "clang::noderef"
case 'o': // 2 strings to match.
switch (Name[8]) {
default: break;
@@ -3096,7 +3346,7 @@
break;
}
break;
- case 15: // 5 strings to match.
+ case 15: // 6 strings to match.
if (memcmp(Name.data()+0, "clang::", 7) != 0)
break;
switch (Name[7]) {
@@ -3109,6 +3359,10 @@
if (memcmp(Name.data()+8, "nnotate", 7) != 0)
break;
return ParsedAttr::AT_Annotate; // "clang::annotate"
+ case 'c': // 1 string to match.
+ if (memcmp(Name.data()+8, "allback", 7) != 0)
+ break;
+ return ParsedAttr::AT_Callback; // "clang::callback"
case 'i': // 2 strings to match.
if (Name[8] != 'b')
break;
@@ -3160,7 +3414,7 @@
return ParsedAttr::AT_VectorCall; // "clang::vectorcall"
}
break;
- case 18: // 7 strings to match.
+ case 18: // 9 strings to match.
if (memcmp(Name.data()+0, "clang::", 7) != 0)
break;
switch (Name[7]) {
@@ -3169,6 +3423,10 @@
if (memcmp(Name.data()+8, "f_consumed", 10) != 0)
break;
return ParsedAttr::AT_CFConsumed; // "clang::cf_consumed"
+ case 'i': // 1 string to match.
+ if (memcmp(Name.data()+8, "mport_name", 10) != 0)
+ break;
+ return ParsedAttr::AT_WebAssemblyImportName; // "clang::import_name"
case 'n': // 3 strings to match.
switch (Name[8]) {
default: break;
@@ -3191,10 +3449,19 @@
return ParsedAttr::AT_NSConsumed; // "clang::ns_consumed"
}
break;
- case 'o': // 1 string to match.
- if (memcmp(Name.data()+8, "bjc_bridge", 10) != 0)
- break;
- return ParsedAttr::AT_ObjCBridge; // "clang::objc_bridge"
+ case 'o': // 2 strings to match.
+ switch (Name[8]) {
+ default: break;
+ case 'b': // 1 string to match.
+ if (memcmp(Name.data()+9, "jc_bridge", 9) != 0)
+ break;
+ return ParsedAttr::AT_ObjCBridge; // "clang::objc_bridge"
+ case 's': // 1 string to match.
+ if (memcmp(Name.data()+9, "_consumed", 9) != 0)
+ break;
+ return ParsedAttr::AT_OSConsumed; // "clang::os_consumed"
+ }
+ break;
case 'u': // 1 string to match.
if (memcmp(Name.data()+8, "navailable", 10) != 0)
break;
@@ -3248,7 +3515,7 @@
return ParsedAttr::AT_PreserveAll; // "clang::preserve_all"
}
break;
- case 20: // 4 strings to match.
+ case 20: // 5 strings to match.
if (memcmp(Name.data()+0, "clang::", 7) != 0)
break;
switch (Name[7]) {
@@ -3257,6 +3524,10 @@
if (memcmp(Name.data()+8, "ddress_space", 12) != 0)
break;
return ParsedAttr::AT_AddressSpace; // "clang::address_space"
+ case 'i': // 1 string to match.
+ if (memcmp(Name.data()+8, "mport_module", 12) != 0)
+ break;
+ return ParsedAttr::AT_WebAssemblyImportModule; // "clang::import_module"
case 'p': // 1 string to match.
if (memcmp(Name.data()+8, "reserve_most", 12) != 0)
break;
@@ -3271,19 +3542,30 @@
return ParsedAttr::AT_XRayLogArgs; // "clang::xray_log_args"
}
break;
- case 21: // 2 strings to match.
- if (memcmp(Name.data()+0, "clang::objc_", 12) != 0)
+ case 21: // 3 strings to match.
+ if (memcmp(Name.data()+0, "clang::", 7) != 0)
break;
- switch (Name[12]) {
+ switch (Name[7]) {
default: break;
- case 'e': // 1 string to match.
- if (memcmp(Name.data()+13, "xception", 8) != 0)
+ case 'f': // 1 string to match.
+ if (memcmp(Name.data()+8, "ortify_stdlib", 13) != 0)
break;
- return ParsedAttr::AT_ObjCException; // "clang::objc_exception"
- case 'o': // 1 string to match.
- if (memcmp(Name.data()+13, "wnership", 8) != 0)
+ return ParsedAttr::AT_FortifyStdLib; // "clang::fortify_stdlib"
+ case 'o': // 2 strings to match.
+ if (memcmp(Name.data()+8, "bjc_", 4) != 0)
break;
- return ParsedAttr::AT_ObjCOwnership; // "clang::objc_ownership"
+ switch (Name[12]) {
+ default: break;
+ case 'e': // 1 string to match.
+ if (memcmp(Name.data()+13, "xception", 8) != 0)
+ break;
+ return ParsedAttr::AT_ObjCException; // "clang::objc_exception"
+ case 'o': // 1 string to match.
+ if (memcmp(Name.data()+13, "wnership", 8) != 0)
+ break;
+ return ParsedAttr::AT_ObjCOwnership; // "clang::objc_ownership"
+ }
+ break;
}
break;
case 22: // 5 strings to match.
@@ -3325,7 +3607,7 @@
return ParsedAttr::AT_TypeVisibility; // "clang::type_visibility"
}
break;
- case 23: // 5 strings to match.
+ case 23: // 6 strings to match.
if (memcmp(Name.data()+0, "clang::", 7) != 0)
break;
switch (Name[7]) {
@@ -3351,6 +3633,10 @@
return ParsedAttr::AT_NSConsumesSelf; // "clang::ns_consumes_self"
}
break;
+ case 'o': // 1 string to match.
+ if (memcmp(Name.data()+8, "s_consumes_this", 15) != 0)
+ break;
+ return ParsedAttr::AT_OSConsumesThis; // "clang::os_consumes_this"
case 'p': // 1 string to match.
if (memcmp(Name.data()+8, "ass_object_size", 15) != 0)
break;
@@ -3372,11 +3658,15 @@
return ParsedAttr::AT_Ownership; // "clang::ownership_returns"
}
break;
- case 25: // 7 strings to match.
+ case 25: // 9 strings to match.
if (memcmp(Name.data()+0, "clang::", 7) != 0)
break;
switch (Name[7]) {
default: break;
+ case 'a': // 1 string to match.
+ if (memcmp(Name.data()+8, "arch64_vector_pcs", 17) != 0)
+ break;
+ return ParsedAttr::AT_AArch64VectorPcs; // "clang::aarch64_vector_pcs"
case 'd': // 1 string to match.
if (memcmp(Name.data()+8, "isable_tail_calls", 17) != 0)
break;
@@ -3404,17 +3694,28 @@
return ParsedAttr::AT_NoStackProtector; // "clang::no_stack_protector"
}
break;
- case 'o': // 1 string to match.
- if (memcmp(Name.data()+8, "bjc_method_family", 17) != 0)
+ case 'o': // 2 strings to match.
+ if (memcmp(Name.data()+8, "bjc_", 4) != 0)
break;
- return ParsedAttr::AT_ObjCMethodFamily; // "clang::objc_method_family"
+ switch (Name[12]) {
+ default: break;
+ case 'm': // 1 string to match.
+ if (memcmp(Name.data()+13, "ethod_family", 12) != 0)
+ break;
+ return ParsedAttr::AT_ObjCMethodFamily; // "clang::objc_method_family"
+ case 'n': // 1 string to match.
+ if (memcmp(Name.data()+13, "onlazy_class", 12) != 0)
+ break;
+ return ParsedAttr::AT_ObjCNonLazyClass; // "clang::objc_nonlazy_class"
+ }
+ break;
case 's': // 1 string to match.
if (memcmp(Name.data()+8, "wift_error_result", 17) != 0)
break;
return ParsedAttr::AT_SwiftErrorResult; // "clang::swift_error_result"
}
break;
- case 26: // 7 strings to match.
+ case 26: // 8 strings to match.
if (memcmp(Name.data()+0, "clang::", 7) != 0)
break;
switch (Name[7]) {
@@ -3442,30 +3743,39 @@
if (memcmp(Name.data()+8, "s_returns_retained", 18) != 0)
break;
return ParsedAttr::AT_NSReturnsRetained; // "clang::ns_returns_retained"
- case 'o': // 3 strings to match.
- if (memcmp(Name.data()+8, "bjc_", 4) != 0)
- break;
- switch (Name[12]) {
+ case 'o': // 4 strings to match.
+ switch (Name[8]) {
default: break;
- case 'b': // 2 strings to match.
- if (memcmp(Name.data()+13, "ridge_", 6) != 0)
+ case 'b': // 3 strings to match.
+ if (memcmp(Name.data()+9, "jc_", 3) != 0)
break;
- switch (Name[19]) {
+ switch (Name[12]) {
default: break;
- case 'm': // 1 string to match.
- if (memcmp(Name.data()+20, "utable", 6) != 0)
+ case 'b': // 2 strings to match.
+ if (memcmp(Name.data()+13, "ridge_", 6) != 0)
break;
- return ParsedAttr::AT_ObjCBridgeMutable; // "clang::objc_bridge_mutable"
+ switch (Name[19]) {
+ default: break;
+ case 'm': // 1 string to match.
+ if (memcmp(Name.data()+20, "utable", 6) != 0)
+ break;
+ return ParsedAttr::AT_ObjCBridgeMutable; // "clang::objc_bridge_mutable"
+ case 'r': // 1 string to match.
+ if (memcmp(Name.data()+20, "elated", 6) != 0)
+ break;
+ return ParsedAttr::AT_ObjCBridgeRelated; // "clang::objc_bridge_related"
+ }
+ break;
case 'r': // 1 string to match.
- if (memcmp(Name.data()+20, "elated", 6) != 0)
+ if (memcmp(Name.data()+13, "equires_super", 13) != 0)
break;
- return ParsedAttr::AT_ObjCBridgeRelated; // "clang::objc_bridge_related"
+ return ParsedAttr::AT_ObjCRequiresSuper; // "clang::objc_requires_super"
}
break;
- case 'r': // 1 string to match.
- if (memcmp(Name.data()+13, "equires_super", 13) != 0)
+ case 's': // 1 string to match.
+ if (memcmp(Name.data()+9, "_returns_retained", 17) != 0)
break;
- return ParsedAttr::AT_ObjCRequiresSuper; // "clang::objc_requires_super"
+ return ParsedAttr::AT_OSReturnsRetained; // "clang::os_returns_retained"
}
break;
}
@@ -3539,7 +3849,7 @@
return ParsedAttr::AT_XRayInstrument; // "clang::xray_always_instrument"
}
break;
- case 30: // 3 strings to match.
+ case 30: // 4 strings to match.
if (memcmp(Name.data()+0, "clang::", 7) != 0)
break;
switch (Name[7]) {
@@ -3563,31 +3873,69 @@
return ParsedAttr::AT_NSReturnsNotRetained; // "clang::ns_returns_not_retained"
}
break;
+ case 'o': // 1 string to match.
+ if (memcmp(Name.data()+8, "s_returns_not_retained", 22) != 0)
+ break;
+ return ParsedAttr::AT_OSReturnsNotRetained; // "clang::os_returns_not_retained"
}
break;
+ case 31: // 1 string to match.
+ if (memcmp(Name.data()+0, "clang::objc_externally_retained", 31) != 0)
+ break;
+ return ParsedAttr::AT_ObjCExternallyRetained; // "clang::objc_externally_retained"
case 32: // 1 string to match.
if (memcmp(Name.data()+0, "clang::no_thread_safety_analysis", 32) != 0)
break;
return ParsedAttr::AT_NoThreadSafetyAnalysis; // "clang::no_thread_safety_analysis"
- case 33: // 1 string to match.
- if (memcmp(Name.data()+0, "clang::objc_returns_inner_pointer", 33) != 0)
+ case 33: // 2 strings to match.
+ if (memcmp(Name.data()+0, "clang::", 7) != 0)
break;
- return ParsedAttr::AT_ObjCReturnsInnerPointer; // "clang::objc_returns_inner_pointer"
- case 34: // 2 strings to match.
- if (memcmp(Name.data()+0, "clang::objc_", 12) != 0)
- break;
- switch (Name[12]) {
+ switch (Name[7]) {
default: break;
- case 'd': // 1 string to match.
- if (memcmp(Name.data()+13, "esignated_initializer", 21) != 0)
+ case 'o': // 1 string to match.
+ if (memcmp(Name.data()+8, "bjc_returns_inner_pointer", 25) != 0)
break;
- return ParsedAttr::AT_ObjCDesignatedInitializer; // "clang::objc_designated_initializer"
+ return ParsedAttr::AT_ObjCReturnsInnerPointer; // "clang::objc_returns_inner_pointer"
case 's': // 1 string to match.
- if (memcmp(Name.data()+13, "ubclassing_restricted", 21) != 0)
+ if (memcmp(Name.data()+8, "peculative_load_hardening", 25) != 0)
break;
- return ParsedAttr::AT_ObjCSubclassingRestricted; // "clang::objc_subclassing_restricted"
+ return ParsedAttr::AT_SpeculativeLoadHardening; // "clang::speculative_load_hardening"
}
break;
+ case 34: // 3 strings to match.
+ if (memcmp(Name.data()+0, "clang::o", 8) != 0)
+ break;
+ switch (Name[8]) {
+ default: break;
+ case 'b': // 2 strings to match.
+ if (memcmp(Name.data()+9, "jc_", 3) != 0)
+ break;
+ switch (Name[12]) {
+ default: break;
+ case 'd': // 1 string to match.
+ if (memcmp(Name.data()+13, "esignated_initializer", 21) != 0)
+ break;
+ return ParsedAttr::AT_ObjCDesignatedInitializer; // "clang::objc_designated_initializer"
+ case 's': // 1 string to match.
+ if (memcmp(Name.data()+13, "ubclassing_restricted", 21) != 0)
+ break;
+ return ParsedAttr::AT_ObjCSubclassingRestricted; // "clang::objc_subclassing_restricted"
+ }
+ break;
+ case 's': // 1 string to match.
+ if (memcmp(Name.data()+9, "_returns_retained_on_zero", 25) != 0)
+ break;
+ return ParsedAttr::AT_OSReturnsRetainedOnZero; // "clang::os_returns_retained_on_zero"
+ }
+ break;
+ case 36: // 1 string to match.
+ if (memcmp(Name.data()+0, "clang::no_speculative_load_hardening", 36) != 0)
+ break;
+ return ParsedAttr::AT_NoSpeculativeLoadHardening; // "clang::no_speculative_load_hardening"
+ case 38: // 1 string to match.
+ if (memcmp(Name.data()+0, "clang::os_returns_retained_on_non_zero", 38) != 0)
+ break;
+ return ParsedAttr::AT_OSReturnsRetainedOnNonZero; // "clang::os_returns_retained_on_non_zero"
case 41: // 1 string to match.
if (memcmp(Name.data()+0, "clang::objc_requires_property_definitions", 41) != 0)
break;
diff --git a/linux-x64/clang/include/clang/Sema/AttrParsedAttrList.inc b/linux-x64/clang/include/clang/Sema/AttrParsedAttrList.inc
index 8bac249..d4f3fd2 100644
--- a/linux-x64/clang/include/clang/Sema/AttrParsedAttrList.inc
+++ b/linux-x64/clang/include/clang/Sema/AttrParsedAttrList.inc
@@ -10,6 +10,7 @@
#define PARSED_ATTR(NAME) NAME
#endif
+PARSED_ATTR(AArch64VectorPcs)
PARSED_ATTR(AMDGPUFlatWorkGroupSize)
PARSED_ATTR(AMDGPUNumSGPR)
PARSED_ATTR(AMDGPUNumVGPR)
@@ -58,6 +59,7 @@
PARSED_ATTR(CUDAShared)
PARSED_ATTR(CXX11NoReturn)
PARSED_ATTR(CallableWhen)
+PARSED_ATTR(Callback)
PARSED_ATTR(Capability)
PARSED_ATTR(CarriesDependency)
PARSED_ATTR(Cleanup)
@@ -71,7 +73,9 @@
PARSED_ATTR(ConsumableSetOnRead)
PARSED_ATTR(Convergent)
PARSED_ATTR(DLLExport)
+PARSED_ATTR(DLLExportStaticLocal)
PARSED_ATTR(DLLImport)
+PARSED_ATTR(DLLImportStaticLocal)
PARSED_ATTR(Deprecated)
PARSED_ATTR(Destructor)
PARSED_ATTR(DiagnoseIf)
@@ -89,6 +93,7 @@
PARSED_ATTR(Flatten)
PARSED_ATTR(Format)
PARSED_ATTR(FormatArg)
+PARSED_ATTR(FortifyStdLib)
PARSED_ATTR(GNUInline)
PARSED_ATTR(GuardedBy)
PARSED_ATTR(GuardedVar)
@@ -130,6 +135,7 @@
PARSED_ATTR(NoAlias)
PARSED_ATTR(NoCommon)
PARSED_ATTR(NoDebug)
+PARSED_ATTR(NoDeref)
PARSED_ATTR(NoDestroy)
PARSED_ATTR(NoDuplicate)
PARSED_ATTR(NoEscape)
@@ -140,12 +146,19 @@
PARSED_ATTR(NoReturn)
PARSED_ATTR(NoSanitize)
PARSED_ATTR(NoSanitizeSpecific)
+PARSED_ATTR(NoSpeculativeLoadHardening)
PARSED_ATTR(NoSplitStack)
PARSED_ATTR(NoStackProtector)
PARSED_ATTR(NoThreadSafetyAnalysis)
PARSED_ATTR(NoThrow)
PARSED_ATTR(NonNull)
PARSED_ATTR(NotTailCalled)
+PARSED_ATTR(OSConsumed)
+PARSED_ATTR(OSConsumesThis)
+PARSED_ATTR(OSReturnsNotRetained)
+PARSED_ATTR(OSReturnsRetained)
+PARSED_ATTR(OSReturnsRetainedOnNonZero)
+PARSED_ATTR(OSReturnsRetainedOnZero)
PARSED_ATTR(ObjCBoxable)
PARSED_ATTR(ObjCBridge)
PARSED_ATTR(ObjCBridgeMutable)
@@ -153,12 +166,14 @@
PARSED_ATTR(ObjCDesignatedInitializer)
PARSED_ATTR(ObjCException)
PARSED_ATTR(ObjCExplicitProtocolImpl)
+PARSED_ATTR(ObjCExternallyRetained)
PARSED_ATTR(ObjCGC)
PARSED_ATTR(ObjCIndependentClass)
PARSED_ATTR(ObjCInertUnsafeUnretained)
PARSED_ATTR(ObjCKindOf)
PARSED_ATTR(ObjCMethodFamily)
PARSED_ATTR(ObjCNSObject)
+PARSED_ATTR(ObjCNonLazyClass)
PARSED_ATTR(ObjCOwnership)
PARSED_ATTR(ObjCPreciseLifetime)
PARSED_ATTR(ObjCRequiresPropertyDefs)
@@ -216,6 +231,7 @@
PARSED_ATTR(Sentinel)
PARSED_ATTR(SetTypestate)
PARSED_ATTR(SharedTrylockFunction)
+PARSED_ATTR(SpeculativeLoadHardening)
PARSED_ATTR(StdCall)
PARSED_ATTR(Suppress)
PARSED_ATTR(SwiftCall)
@@ -238,6 +254,7 @@
PARSED_ATTR(TypeVisibility)
PARSED_ATTR(UPtr)
PARSED_ATTR(Unavailable)
+PARSED_ATTR(Uninitialized)
PARSED_ATTR(Unused)
PARSED_ATTR(Used)
PARSED_ATTR(Uuid)
@@ -251,6 +268,8 @@
PARSED_ATTR(Weak)
PARSED_ATTR(WeakImport)
PARSED_ATTR(WeakRef)
+PARSED_ATTR(WebAssemblyImportModule)
+PARSED_ATTR(WebAssemblyImportName)
PARSED_ATTR(WorkGroupSizeHint)
PARSED_ATTR(X86ForceAlignArgPointer)
PARSED_ATTR(XRayInstrument)
diff --git a/linux-x64/clang/include/clang/Sema/AttrSpellingListIndex.inc b/linux-x64/clang/include/clang/Sema/AttrSpellingListIndex.inc
index 294fc6c..9056388 100644
--- a/linux-x64/clang/include/clang/Sema/AttrSpellingListIndex.inc
+++ b/linux-x64/clang/include/clang/Sema/AttrSpellingListIndex.inc
@@ -7,6 +7,15 @@
\*===----------------------------------------------------------------------===*/
switch (AttrKind) {
+ case AT_AArch64VectorPcs: {
+ if (Name == "aarch64_vector_pcs" && SyntaxUsed == 0 && Scope == "")
+ return 0;
+ if (Name == "aarch64_vector_pcs" && SyntaxUsed == 1 && Scope == "clang")
+ return 1;
+ if (Name == "aarch64_vector_pcs" && SyntaxUsed == 2 && Scope == "clang")
+ return 2;
+ break;
+ }
case AT_AMDGPUFlatWorkGroupSize: {
if (Name == "amdgpu_flat_work_group_size" && SyntaxUsed == 0 && Scope == "")
return 0;
@@ -313,6 +322,8 @@
return 1;
if (Name == "cpu_dispatch" && SyntaxUsed == 2 && Scope == "clang")
return 2;
+ if (Name == "cpu_dispatch" && SyntaxUsed == 3 && Scope == "")
+ return 3;
break;
}
case AT_CPUSpecific: {
@@ -322,6 +333,8 @@
return 1;
if (Name == "cpu_specific" && SyntaxUsed == 2 && Scope == "clang")
return 2;
+ if (Name == "cpu_specific" && SyntaxUsed == 3 && Scope == "")
+ return 3;
break;
}
case AT_CUDAConstant: {
@@ -381,6 +394,15 @@
return 1;
break;
}
+ case AT_Callback: {
+ if (Name == "callback" && SyntaxUsed == 0 && Scope == "")
+ return 0;
+ if (Name == "callback" && SyntaxUsed == 1 && Scope == "clang")
+ return 1;
+ if (Name == "callback" && SyntaxUsed == 2 && Scope == "clang")
+ return 2;
+ break;
+ }
case AT_Capability: {
if (Name == "capability" && SyntaxUsed == 0 && Scope == "")
return 0;
@@ -482,6 +504,9 @@
return 2;
break;
}
+ case AT_DLLExportStaticLocal: {
+ break;
+ }
case AT_DLLImport: {
if (Name == "dllimport" && SyntaxUsed == 3 && Scope == "")
return 0;
@@ -491,6 +516,9 @@
return 2;
break;
}
+ case AT_DLLImportStaticLocal: {
+ break;
+ }
case AT_Deprecated: {
if (Name == "deprecated" && SyntaxUsed == 0 && Scope == "")
return 0;
@@ -622,6 +650,15 @@
return 1;
break;
}
+ case AT_FortifyStdLib: {
+ if (Name == "fortify_stdlib" && SyntaxUsed == 0 && Scope == "")
+ return 0;
+ if (Name == "fortify_stdlib" && SyntaxUsed == 1 && Scope == "clang")
+ return 1;
+ if (Name == "fortify_stdlib" && SyntaxUsed == 2 && Scope == "clang")
+ return 2;
+ break;
+ }
case AT_GNUInline: {
if (Name == "gnu_inline" && SyntaxUsed == 0 && Scope == "")
return 0;
@@ -943,6 +980,15 @@
return 1;
break;
}
+ case AT_NoDeref: {
+ if (Name == "noderef" && SyntaxUsed == 0 && Scope == "")
+ return 0;
+ if (Name == "noderef" && SyntaxUsed == 1 && Scope == "clang")
+ return 1;
+ if (Name == "noderef" && SyntaxUsed == 2 && Scope == "clang")
+ return 2;
+ break;
+ }
case AT_NoDestroy: {
if (Name == "no_destroy" && SyntaxUsed == 0 && Scope == "")
return 0;
@@ -1037,6 +1083,15 @@
return 8;
break;
}
+ case AT_NoSpeculativeLoadHardening: {
+ if (Name == "no_speculative_load_hardening" && SyntaxUsed == 0 && Scope == "")
+ return 0;
+ if (Name == "no_speculative_load_hardening" && SyntaxUsed == 1 && Scope == "clang")
+ return 1;
+ if (Name == "no_speculative_load_hardening" && SyntaxUsed == 2 && Scope == "clang")
+ return 2;
+ break;
+ }
case AT_NoSplitStack: {
if (Name == "no_split_stack" && SyntaxUsed == 0 && Scope == "")
return 0;
@@ -1087,6 +1142,60 @@
return 2;
break;
}
+ case AT_OSConsumed: {
+ if (Name == "os_consumed" && SyntaxUsed == 0 && Scope == "")
+ return 0;
+ if (Name == "os_consumed" && SyntaxUsed == 1 && Scope == "clang")
+ return 1;
+ if (Name == "os_consumed" && SyntaxUsed == 2 && Scope == "clang")
+ return 2;
+ break;
+ }
+ case AT_OSConsumesThis: {
+ if (Name == "os_consumes_this" && SyntaxUsed == 0 && Scope == "")
+ return 0;
+ if (Name == "os_consumes_this" && SyntaxUsed == 1 && Scope == "clang")
+ return 1;
+ if (Name == "os_consumes_this" && SyntaxUsed == 2 && Scope == "clang")
+ return 2;
+ break;
+ }
+ case AT_OSReturnsNotRetained: {
+ if (Name == "os_returns_not_retained" && SyntaxUsed == 0 && Scope == "")
+ return 0;
+ if (Name == "os_returns_not_retained" && SyntaxUsed == 1 && Scope == "clang")
+ return 1;
+ if (Name == "os_returns_not_retained" && SyntaxUsed == 2 && Scope == "clang")
+ return 2;
+ break;
+ }
+ case AT_OSReturnsRetained: {
+ if (Name == "os_returns_retained" && SyntaxUsed == 0 && Scope == "")
+ return 0;
+ if (Name == "os_returns_retained" && SyntaxUsed == 1 && Scope == "clang")
+ return 1;
+ if (Name == "os_returns_retained" && SyntaxUsed == 2 && Scope == "clang")
+ return 2;
+ break;
+ }
+ case AT_OSReturnsRetainedOnNonZero: {
+ if (Name == "os_returns_retained_on_non_zero" && SyntaxUsed == 0 && Scope == "")
+ return 0;
+ if (Name == "os_returns_retained_on_non_zero" && SyntaxUsed == 1 && Scope == "clang")
+ return 1;
+ if (Name == "os_returns_retained_on_non_zero" && SyntaxUsed == 2 && Scope == "clang")
+ return 2;
+ break;
+ }
+ case AT_OSReturnsRetainedOnZero: {
+ if (Name == "os_returns_retained_on_zero" && SyntaxUsed == 0 && Scope == "")
+ return 0;
+ if (Name == "os_returns_retained_on_zero" && SyntaxUsed == 1 && Scope == "clang")
+ return 1;
+ if (Name == "os_returns_retained_on_zero" && SyntaxUsed == 2 && Scope == "clang")
+ return 2;
+ break;
+ }
case AT_ObjCBoxable: {
if (Name == "objc_boxable" && SyntaxUsed == 0 && Scope == "")
return 0;
@@ -1150,6 +1259,15 @@
return 2;
break;
}
+ case AT_ObjCExternallyRetained: {
+ if (Name == "objc_externally_retained" && SyntaxUsed == 0 && Scope == "")
+ return 0;
+ if (Name == "objc_externally_retained" && SyntaxUsed == 1 && Scope == "clang")
+ return 1;
+ if (Name == "objc_externally_retained" && SyntaxUsed == 2 && Scope == "clang")
+ return 2;
+ break;
+ }
case AT_ObjCGC: {
if (Name == "objc_gc" && SyntaxUsed == 0 && Scope == "")
return 0;
@@ -1196,6 +1314,15 @@
return 2;
break;
}
+ case AT_ObjCNonLazyClass: {
+ if (Name == "objc_nonlazy_class" && SyntaxUsed == 0 && Scope == "")
+ return 0;
+ if (Name == "objc_nonlazy_class" && SyntaxUsed == 1 && Scope == "clang")
+ return 1;
+ if (Name == "objc_nonlazy_class" && SyntaxUsed == 2 && Scope == "clang")
+ return 2;
+ break;
+ }
case AT_ObjCOwnership: {
if (Name == "objc_ownership" && SyntaxUsed == 0 && Scope == "")
return 0;
@@ -1647,6 +1774,15 @@
return 0;
break;
}
+ case AT_SpeculativeLoadHardening: {
+ if (Name == "speculative_load_hardening" && SyntaxUsed == 0 && Scope == "")
+ return 0;
+ if (Name == "speculative_load_hardening" && SyntaxUsed == 1 && Scope == "clang")
+ return 1;
+ if (Name == "speculative_load_hardening" && SyntaxUsed == 2 && Scope == "clang")
+ return 2;
+ break;
+ }
case AT_StdCall: {
if (Name == "stdcall" && SyntaxUsed == 0 && Scope == "")
return 0;
@@ -1815,6 +1951,13 @@
return 2;
break;
}
+ case AT_Uninitialized: {
+ if (Name == "uninitialized" && SyntaxUsed == 0 && Scope == "")
+ return 0;
+ if (Name == "uninitialized" && SyntaxUsed == 1 && Scope == "clang")
+ return 1;
+ break;
+ }
case AT_Unused: {
if (Name == "maybe_unused" && SyntaxUsed == 1 && Scope == "")
return 0;
@@ -1922,6 +2065,24 @@
return 1;
break;
}
+ case AT_WebAssemblyImportModule: {
+ if (Name == "import_module" && SyntaxUsed == 0 && Scope == "")
+ return 0;
+ if (Name == "import_module" && SyntaxUsed == 1 && Scope == "clang")
+ return 1;
+ if (Name == "import_module" && SyntaxUsed == 2 && Scope == "clang")
+ return 2;
+ break;
+ }
+ case AT_WebAssemblyImportName: {
+ if (Name == "import_name" && SyntaxUsed == 0 && Scope == "")
+ return 0;
+ if (Name == "import_name" && SyntaxUsed == 1 && Scope == "clang")
+ return 1;
+ if (Name == "import_name" && SyntaxUsed == 2 && Scope == "clang")
+ return 2;
+ break;
+ }
case AT_WorkGroupSizeHint: {
if (Name == "work_group_size_hint" && SyntaxUsed == 0 && Scope == "")
return 0;
diff --git a/linux-x64/clang/include/clang/Sema/AttrTemplateInstantiate.inc b/linux-x64/clang/include/clang/Sema/AttrTemplateInstantiate.inc
index ef0e92d..860b9c4 100644
--- a/linux-x64/clang/include/clang/Sema/AttrTemplateInstantiate.inc
+++ b/linux-x64/clang/include/clang/Sema/AttrTemplateInstantiate.inc
@@ -12,6 +12,10 @@
Attr *instantiateTemplateAttribute(const Attr *At, ASTContext &C, Sema &S,
const MultiLevelTemplateArgumentList &TemplateArgs) {
switch (At->getKind()) {
+ case attr::AArch64VectorPcs: {
+ const auto *A = cast<AArch64VectorPcsAttr>(At);
+ return A->clone(C);
+ }
case attr::AMDGPUFlatWorkGroupSize: {
const auto *A = cast<AMDGPUFlatWorkGroupSizeAttr>(At);
return A->clone(C);
@@ -290,6 +294,10 @@
const auto *A = cast<CallableWhenAttr>(At);
return A->clone(C);
}
+ case attr::Callback: {
+ const auto *A = cast<CallbackAttr>(At);
+ return A->clone(C);
+ }
case attr::Capability: {
const auto *A = cast<CapabilityAttr>(At);
return A->clone(C);
@@ -346,10 +354,18 @@
const auto *A = cast<DLLExportAttr>(At);
return A->clone(C);
}
+ case attr::DLLExportStaticLocal: {
+ const auto *A = cast<DLLExportStaticLocalAttr>(At);
+ return A->clone(C);
+ }
case attr::DLLImport: {
const auto *A = cast<DLLImportAttr>(At);
return A->clone(C);
}
+ case attr::DLLImportStaticLocal: {
+ const auto *A = cast<DLLImportStaticLocalAttr>(At);
+ return A->clone(C);
+ }
case attr::Deprecated: {
const auto *A = cast<DeprecatedAttr>(At);
return A->clone(C);
@@ -447,6 +463,10 @@
const auto *A = cast<FormatArgAttr>(At);
return A->clone(C);
}
+ case attr::FortifyStdLib: {
+ const auto *A = cast<FortifyStdLibAttr>(At);
+ return A->clone(C);
+ }
case attr::GNUInline: {
const auto *A = cast<GNUInlineAttr>(At);
return A->clone(C);
@@ -642,6 +662,10 @@
const auto *A = cast<NoDebugAttr>(At);
return A->clone(C);
}
+ case attr::NoDeref: {
+ const auto *A = cast<NoDerefAttr>(At);
+ return A->clone(C);
+ }
case attr::NoDestroy: {
const auto *A = cast<NoDestroyAttr>(At);
return A->clone(C);
@@ -678,6 +702,10 @@
const auto *A = cast<NoSanitizeAttr>(At);
return A->clone(C);
}
+ case attr::NoSpeculativeLoadHardening: {
+ const auto *A = cast<NoSpeculativeLoadHardeningAttr>(At);
+ return A->clone(C);
+ }
case attr::NoSplitStack: {
const auto *A = cast<NoSplitStackAttr>(At);
return A->clone(C);
@@ -726,6 +754,30 @@
const auto *A = cast<OMPThreadPrivateDeclAttr>(At);
return A->clone(C);
}
+ case attr::OSConsumed: {
+ const auto *A = cast<OSConsumedAttr>(At);
+ return A->clone(C);
+ }
+ case attr::OSConsumesThis: {
+ const auto *A = cast<OSConsumesThisAttr>(At);
+ return A->clone(C);
+ }
+ case attr::OSReturnsNotRetained: {
+ const auto *A = cast<OSReturnsNotRetainedAttr>(At);
+ return A->clone(C);
+ }
+ case attr::OSReturnsRetained: {
+ const auto *A = cast<OSReturnsRetainedAttr>(At);
+ return A->clone(C);
+ }
+ case attr::OSReturnsRetainedOnNonZero: {
+ const auto *A = cast<OSReturnsRetainedOnNonZeroAttr>(At);
+ return A->clone(C);
+ }
+ case attr::OSReturnsRetainedOnZero: {
+ const auto *A = cast<OSReturnsRetainedOnZeroAttr>(At);
+ return A->clone(C);
+ }
case attr::ObjCBoxable: {
const auto *A = cast<ObjCBoxableAttr>(At);
return A->clone(C);
@@ -754,6 +806,10 @@
const auto *A = cast<ObjCExplicitProtocolImplAttr>(At);
return A->clone(C);
}
+ case attr::ObjCExternallyRetained: {
+ const auto *A = cast<ObjCExternallyRetainedAttr>(At);
+ return A->clone(C);
+ }
case attr::ObjCGC: {
const auto *A = cast<ObjCGCAttr>(At);
return A->clone(C);
@@ -778,6 +834,10 @@
const auto *A = cast<ObjCNSObjectAttr>(At);
return A->clone(C);
}
+ case attr::ObjCNonLazyClass: {
+ const auto *A = cast<ObjCNonLazyClassAttr>(At);
+ return A->clone(C);
+ }
case attr::ObjCOwnership: {
const auto *A = cast<ObjCOwnershipAttr>(At);
return A->clone(C);
@@ -1051,6 +1111,10 @@
}
return new (C) SharedTrylockFunctionAttr(A->getLocation(), C, tempInstSuccessValue, tempInstArgs, A->args_size(), A->getSpellingListIndex());
}
+ case attr::SpeculativeLoadHardening: {
+ const auto *A = cast<SpeculativeLoadHardeningAttr>(At);
+ return A->clone(C);
+ }
case attr::StdCall: {
const auto *A = cast<StdCallAttr>(At);
return A->clone(C);
@@ -1155,6 +1219,10 @@
const auto *A = cast<UnavailableAttr>(At);
return A->clone(C);
}
+ case attr::Uninitialized: {
+ const auto *A = cast<UninitializedAttr>(At);
+ return A->clone(C);
+ }
case attr::Unused: {
const auto *A = cast<UnusedAttr>(At);
return A->clone(C);
@@ -1202,6 +1270,14 @@
const auto *A = cast<WeakRefAttr>(At);
return A->clone(C);
}
+ case attr::WebAssemblyImportModule: {
+ const auto *A = cast<WebAssemblyImportModuleAttr>(At);
+ return A->clone(C);
+ }
+ case attr::WebAssemblyImportName: {
+ const auto *A = cast<WebAssemblyImportNameAttr>(At);
+ return A->clone(C);
+ }
case attr::WorkGroupSizeHint: {
const auto *A = cast<WorkGroupSizeHintAttr>(At);
return A->clone(C);
@@ -1227,6 +1303,9 @@
ASTContext &C, Sema &S,
const MultiLevelTemplateArgumentList &TemplateArgs) {
switch (At->getKind()) {
+ case attr::AArch64VectorPcs: {
+ return nullptr;
+ }
case attr::AMDGPUFlatWorkGroupSize: {
return nullptr;
}
@@ -1387,6 +1466,9 @@
case attr::CallableWhen: {
return nullptr;
}
+ case attr::Callback: {
+ return nullptr;
+ }
case attr::Capability: {
return nullptr;
}
@@ -1429,9 +1511,15 @@
case attr::DLLExport: {
return nullptr;
}
+ case attr::DLLExportStaticLocal: {
+ return nullptr;
+ }
case attr::DLLImport: {
return nullptr;
}
+ case attr::DLLImportStaticLocal: {
+ return nullptr;
+ }
case attr::Deprecated: {
const auto *A = cast<DeprecatedAttr>(At);
return A->clone(C);
@@ -1485,6 +1573,9 @@
case attr::FormatArg: {
return nullptr;
}
+ case attr::FortifyStdLib: {
+ return nullptr;
+ }
case attr::GNUInline: {
return nullptr;
}
@@ -1614,6 +1705,9 @@
case attr::NoDebug: {
return nullptr;
}
+ case attr::NoDeref: {
+ return nullptr;
+ }
case attr::NoDestroy: {
return nullptr;
}
@@ -1641,6 +1735,9 @@
case attr::NoSanitize: {
return nullptr;
}
+ case attr::NoSpeculativeLoadHardening: {
+ return nullptr;
+ }
case attr::NoSplitStack: {
return nullptr;
}
@@ -1677,6 +1774,24 @@
case attr::OMPThreadPrivateDecl: {
return nullptr;
}
+ case attr::OSConsumed: {
+ return nullptr;
+ }
+ case attr::OSConsumesThis: {
+ return nullptr;
+ }
+ case attr::OSReturnsNotRetained: {
+ return nullptr;
+ }
+ case attr::OSReturnsRetained: {
+ return nullptr;
+ }
+ case attr::OSReturnsRetainedOnNonZero: {
+ return nullptr;
+ }
+ case attr::OSReturnsRetainedOnZero: {
+ return nullptr;
+ }
case attr::ObjCBoxable: {
return nullptr;
}
@@ -1698,6 +1813,9 @@
case attr::ObjCExplicitProtocolImpl: {
return nullptr;
}
+ case attr::ObjCExternallyRetained: {
+ return nullptr;
+ }
case attr::ObjCGC: {
return nullptr;
}
@@ -1716,6 +1834,9 @@
case attr::ObjCNSObject: {
return nullptr;
}
+ case attr::ObjCNonLazyClass: {
+ return nullptr;
+ }
case attr::ObjCOwnership: {
return nullptr;
}
@@ -1887,6 +2008,9 @@
case attr::SharedTrylockFunction: {
return nullptr;
}
+ case attr::SpeculativeLoadHardening: {
+ return nullptr;
+ }
case attr::StdCall: {
return nullptr;
}
@@ -1953,6 +2077,9 @@
case attr::Unavailable: {
return nullptr;
}
+ case attr::Uninitialized: {
+ return nullptr;
+ }
case attr::Unused: {
return nullptr;
}
@@ -1989,6 +2116,12 @@
case attr::WeakRef: {
return nullptr;
}
+ case attr::WebAssemblyImportModule: {
+ return nullptr;
+ }
+ case attr::WebAssemblyImportName: {
+ return nullptr;
+ }
case attr::WorkGroupSizeHint: {
return nullptr;
}
diff --git a/linux-x64/clang/include/clang/Sema/CXXFieldCollector.h b/linux-x64/clang/include/clang/Sema/CXXFieldCollector.h
index 6685751..f6ecd9f 100644
--- a/linux-x64/clang/include/clang/Sema/CXXFieldCollector.h
+++ b/linux-x64/clang/include/clang/Sema/CXXFieldCollector.h
@@ -1,9 +1,8 @@
//===- CXXFieldCollector.h - Utility class for C++ class semantic analysis ===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Sema/CleanupInfo.h b/linux-x64/clang/include/clang/Sema/CleanupInfo.h
index 751bfb6..ea9df49 100644
--- a/linux-x64/clang/include/clang/Sema/CleanupInfo.h
+++ b/linux-x64/clang/include/clang/Sema/CleanupInfo.h
@@ -1,9 +1,8 @@
//===--- CleanupInfo.cpp - Cleanup Control in Sema ------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Sema/CodeCompleteConsumer.h b/linux-x64/clang/include/clang/Sema/CodeCompleteConsumer.h
index c800b62..72ba8bf 100644
--- a/linux-x64/clang/include/clang/Sema/CodeCompleteConsumer.h
+++ b/linux-x64/clang/include/clang/Sema/CodeCompleteConsumer.h
@@ -1,9 +1,8 @@
//===- CodeCompleteConsumer.h - Code Completion Interface -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -272,11 +271,15 @@
CCC_Type,
/// Code completion occurred where a new name is expected.
- CCC_Name,
+ CCC_NewName,
- /// Code completion occurred where a new name is expected and a
- /// qualified name is permissible.
- CCC_PotentiallyQualifiedName,
+ /// Code completion occurred where both a new name and an existing symbol is
+ /// permissible.
+ CCC_SymbolOrNewName,
+
+ /// Code completion occurred where an existing name(such as type, function
+ /// or variable) is expected.
+ CCC_Symbol,
/// Code completion occurred where an macro is being defined.
CCC_MacroName,
@@ -377,6 +380,7 @@
/// if the expression is a variable initializer or a function argument, the
/// type of the corresponding variable or function parameter.
QualType getPreferredType() const { return PreferredType; }
+ void setPreferredType(QualType T) { PreferredType = T; }
/// Retrieve the type of the base object in a member-access
/// expression.
@@ -652,14 +656,6 @@
} // namespace clang
-namespace llvm {
-
-template <> struct isPodLike<clang::CodeCompletionString::Chunk> {
- static const bool value = true;
-};
-
-} // namespace llvm
-
namespace clang {
/// A builder class used to construct new code-completion strings.
@@ -821,6 +817,9 @@
/// Whether this result is hidden by another name.
bool Hidden : 1;
+ /// Whether this is a class member from base class.
+ bool InBaseClass : 1;
+
/// Whether this result was found via lookup into a base class.
bool QualifierIsInformative : 1;
@@ -859,7 +858,7 @@
bool Accessible = true,
std::vector<FixItHint> FixIts = std::vector<FixItHint>())
: Declaration(Declaration), Priority(Priority), Kind(RK_Declaration),
- FixIts(std::move(FixIts)), Hidden(false),
+ FixIts(std::move(FixIts)), Hidden(false), InBaseClass(false),
QualifierIsInformative(QualifierIsInformative),
StartsNestedNameSpecifier(false), AllParametersAreInformative(false),
DeclaringEntity(false), Qualifier(Qualifier) {
@@ -870,7 +869,7 @@
/// Build a result that refers to a keyword or symbol.
CodeCompletionResult(const char *Keyword, unsigned Priority = CCP_Keyword)
: Keyword(Keyword), Priority(Priority), Kind(RK_Keyword),
- CursorKind(CXCursor_NotImplemented), Hidden(false),
+ CursorKind(CXCursor_NotImplemented), Hidden(false), InBaseClass(false),
QualifierIsInformative(false), StartsNestedNameSpecifier(false),
AllParametersAreInformative(false), DeclaringEntity(false) {}
@@ -879,28 +878,29 @@
const MacroInfo *MI = nullptr,
unsigned Priority = CCP_Macro)
: Macro(Macro), Priority(Priority), Kind(RK_Macro),
- CursorKind(CXCursor_MacroDefinition), Hidden(false),
+ CursorKind(CXCursor_MacroDefinition), Hidden(false), InBaseClass(false),
QualifierIsInformative(false), StartsNestedNameSpecifier(false),
AllParametersAreInformative(false), DeclaringEntity(false),
MacroDefInfo(MI) {}
/// Build a result that refers to a pattern.
- CodeCompletionResult(CodeCompletionString *Pattern,
- unsigned Priority = CCP_CodePattern,
- CXCursorKind CursorKind = CXCursor_NotImplemented,
- CXAvailabilityKind Availability = CXAvailability_Available,
- const NamedDecl *D = nullptr)
+ CodeCompletionResult(
+ CodeCompletionString *Pattern, unsigned Priority = CCP_CodePattern,
+ CXCursorKind CursorKind = CXCursor_NotImplemented,
+ CXAvailabilityKind Availability = CXAvailability_Available,
+ const NamedDecl *D = nullptr)
: Declaration(D), Pattern(Pattern), Priority(Priority), Kind(RK_Pattern),
CursorKind(CursorKind), Availability(Availability), Hidden(false),
- QualifierIsInformative(false), StartsNestedNameSpecifier(false),
- AllParametersAreInformative(false), DeclaringEntity(false) {}
+ InBaseClass(false), QualifierIsInformative(false),
+ StartsNestedNameSpecifier(false), AllParametersAreInformative(false),
+ DeclaringEntity(false) {}
/// Build a result that refers to a pattern with an associated
/// declaration.
CodeCompletionResult(CodeCompletionString *Pattern, const NamedDecl *D,
unsigned Priority)
: Declaration(D), Pattern(Pattern), Priority(Priority), Kind(RK_Pattern),
- Hidden(false), QualifierIsInformative(false),
+ Hidden(false), InBaseClass(false), QualifierIsInformative(false),
StartsNestedNameSpecifier(false), AllParametersAreInformative(false),
DeclaringEntity(false) {
computeCursorKindAndAvailability();
diff --git a/linux-x64/clang/include/clang/Sema/CodeCompleteOptions.h b/linux-x64/clang/include/clang/Sema/CodeCompleteOptions.h
index 26f7f9d..a3403b0 100644
--- a/linux-x64/clang/include/clang/Sema/CodeCompleteOptions.h
+++ b/linux-x64/clang/include/clang/Sema/CodeCompleteOptions.h
@@ -1,9 +1,8 @@
//===---- CodeCompleteOptions.h - Code Completion Options -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Sema/DeclSpec.h b/linux-x64/clang/include/clang/Sema/DeclSpec.h
index b667e07..babdc9d 100644
--- a/linux-x64/clang/include/clang/Sema/DeclSpec.h
+++ b/linux-x64/clang/include/clang/Sema/DeclSpec.h
@@ -1,9 +1,8 @@
//===--- DeclSpec.h - Parsed declaration specifiers -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -593,6 +592,18 @@
FS_noreturnLoc = SourceLocation();
}
+ /// This method calls the passed in handler on each CVRU qual being
+ /// set.
+ /// Handle - a handler to be invoked.
+ void forEachCVRUQualifier(
+ llvm::function_ref<void(TQ, StringRef, SourceLocation)> Handle);
+
+ /// This method calls the passed in handler on each qual being
+ /// set.
+ /// Handle - a handler to be invoked.
+ void forEachQualifier(
+ llvm::function_ref<void(TQ, StringRef, SourceLocation)> Handle);
+
/// Return true if any type-specifier has been found.
bool hasTypeSpecifier() const {
return getTypeSpecType() != DeclSpec::TST_unspecified ||
@@ -683,6 +694,8 @@
ExprRep = Rep;
}
+ bool SetTypeQual(TQ T, SourceLocation Loc);
+
bool SetTypeQual(TQ T, SourceLocation Loc, const char *&PrevSpec,
unsigned &DiagID, const LangOptions &Lang);
@@ -1250,10 +1263,6 @@
/// Otherwise, it's an rvalue reference.
unsigned RefQualifierIsLValueRef : 1;
- /// The type qualifiers: const/volatile/restrict/__unaligned
- /// The qualifier bitmask values are the same as in QualType.
- unsigned TypeQuals : 4;
-
/// ExceptionSpecType - An ExceptionSpecificationType value.
unsigned ExceptionSpecType : 4;
@@ -1287,21 +1296,6 @@
/// If this is an invalid location, there is no ref-qualifier.
unsigned RefQualifierLoc;
- /// The location of the const-qualifier, if any.
- ///
- /// If this is an invalid location, there is no const-qualifier.
- unsigned ConstQualifierLoc;
-
- /// The location of the volatile-qualifier, if any.
- ///
- /// If this is an invalid location, there is no volatile-qualifier.
- unsigned VolatileQualifierLoc;
-
- /// The location of the restrict-qualifier, if any.
- ///
- /// If this is an invalid location, there is no restrict-qualifier.
- unsigned RestrictQualifierLoc;
-
/// The location of the 'mutable' qualifer in a lambda-declarator, if
/// any.
unsigned MutableLoc;
@@ -1317,6 +1311,12 @@
/// there are no parameters specified.
ParamInfo *Params;
+ /// DeclSpec for the function with the qualifier related info.
+ DeclSpec *MethodQualifiers;
+
+ /// AtttibuteFactory for the MethodQualifiers.
+ AttributeFactory *QualAttrFactory;
+
union {
/// Pointer to a new[]'d array of TypeAndRange objects that
/// contain the types in the function's dynamic exception specification
@@ -1356,6 +1356,8 @@
void destroy() {
freeParams();
+ delete QualAttrFactory;
+ delete MethodQualifiers;
switch (getExceptionSpecType()) {
default:
break;
@@ -1372,6 +1374,14 @@
}
}
+ DeclSpec &getOrCreateMethodQualifiers() {
+ if (!MethodQualifiers) {
+ QualAttrFactory = new AttributeFactory();
+ MethodQualifiers = new DeclSpec(*QualAttrFactory);
+ }
+ return *MethodQualifiers;
+ }
+
/// isKNRPrototype - Return true if this is a K&R style identifier list,
/// like "void foo(a,b,c)". In a function definition, this will be followed
/// by the parameter type definitions.
@@ -1406,19 +1416,22 @@
return SourceLocation::getFromRawEncoding(RefQualifierLoc);
}
- /// Retrieve the location of the 'const' qualifier, if any.
+ /// Retrieve the location of the 'const' qualifier.
SourceLocation getConstQualifierLoc() const {
- return SourceLocation::getFromRawEncoding(ConstQualifierLoc);
+ assert(MethodQualifiers);
+ return MethodQualifiers->getConstSpecLoc();
}
- /// Retrieve the location of the 'volatile' qualifier, if any.
+ /// Retrieve the location of the 'volatile' qualifier.
SourceLocation getVolatileQualifierLoc() const {
- return SourceLocation::getFromRawEncoding(VolatileQualifierLoc);
+ assert(MethodQualifiers);
+ return MethodQualifiers->getVolatileSpecLoc();
}
- /// Retrieve the location of the 'restrict' qualifier, if any.
+ /// Retrieve the location of the 'restrict' qualifier.
SourceLocation getRestrictQualifierLoc() const {
- return SourceLocation::getFromRawEncoding(RestrictQualifierLoc);
+ assert(MethodQualifiers);
+ return MethodQualifiers->getRestrictSpecLoc();
}
/// Retrieve the location of the 'mutable' qualifier, if any.
@@ -1434,6 +1447,12 @@
/// qualifier.
bool hasMutableQualifier() const { return getMutableLoc().isValid(); }
+ /// Determine whether this method has qualifiers.
+ bool hasMethodTypeQualifiers() const {
+ return MethodQualifiers && (MethodQualifiers->getTypeQualifiers() ||
+ MethodQualifiers->getAttributes().size());
+ }
+
/// Get the type of exception specification this function has.
ExceptionSpecificationType getExceptionSpecType() const {
return static_cast<ExceptionSpecificationType>(ExceptionSpecType);
@@ -1574,12 +1593,8 @@
ParamInfo *Params, unsigned NumParams,
SourceLocation EllipsisLoc,
SourceLocation RParenLoc,
- unsigned TypeQuals,
bool RefQualifierIsLvalueRef,
SourceLocation RefQualifierLoc,
- SourceLocation ConstQualifierLoc,
- SourceLocation VolatileQualifierLoc,
- SourceLocation RestrictQualifierLoc,
SourceLocation MutableLoc,
ExceptionSpecificationType ESpecType,
SourceRange ESpecRange,
@@ -1593,7 +1608,8 @@
SourceLocation LocalRangeEnd,
Declarator &TheDeclarator,
TypeResult TrailingReturnType =
- TypeResult());
+ TypeResult(),
+ DeclSpec *MethodQualifiers = nullptr);
/// Return a DeclaratorChunk for a block.
static DeclaratorChunk getBlockPointer(unsigned TypeQuals,
diff --git a/linux-x64/clang/include/clang/Sema/DelayedDiagnostic.h b/linux-x64/clang/include/clang/Sema/DelayedDiagnostic.h
index a26b6ff..929db5d 100644
--- a/linux-x64/clang/include/clang/Sema/DelayedDiagnostic.h
+++ b/linux-x64/clang/include/clang/Sema/DelayedDiagnostic.h
@@ -1,9 +1,8 @@
//===- DelayedDiagnostic.h - Delayed declarator diagnostics -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Sema/Designator.h b/linux-x64/clang/include/clang/Sema/Designator.h
index 55603fe..05f6611 100644
--- a/linux-x64/clang/include/clang/Sema/Designator.h
+++ b/linux-x64/clang/include/clang/Sema/Designator.h
@@ -1,9 +1,8 @@
//===--- Designator.h - Initialization Designator ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Sema/ExternalSemaSource.h b/linux-x64/clang/include/clang/Sema/ExternalSemaSource.h
index 00f80e2..88fa6f5 100644
--- a/linux-x64/clang/include/clang/Sema/ExternalSemaSource.h
+++ b/linux-x64/clang/include/clang/Sema/ExternalSemaSource.h
@@ -1,9 +1,8 @@
//===--- ExternalSemaSource.h - External Sema Interface ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Sema/IdentifierResolver.h b/linux-x64/clang/include/clang/Sema/IdentifierResolver.h
index 1c46e1d..7c8dc46 100644
--- a/linux-x64/clang/include/clang/Sema/IdentifierResolver.h
+++ b/linux-x64/clang/include/clang/Sema/IdentifierResolver.h
@@ -1,9 +1,8 @@
//===- IdentifierResolver.h - Lexical Scope Name lookup ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Sema/Initialization.h b/linux-x64/clang/include/clang/Sema/Initialization.h
index fb42e52..8efa2e7 100644
--- a/linux-x64/clang/include/clang/Sema/Initialization.h
+++ b/linux-x64/clang/include/clang/Sema/Initialization.h
@@ -1,9 +1,8 @@
//===- Initialization.h - Semantic Analysis for Initializers ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -893,11 +892,8 @@
/// Initialize an OpenCL sampler from an integer.
SK_OCLSamplerInit,
- /// Initialize queue_t from 0.
- SK_OCLZeroQueue,
-
- /// Passing zero to a function where OpenCL event_t is expected.
- SK_OCLZeroEvent
+ /// Initialize an opaque OpenCL type (event_t, queue_t, etc.) with zero
+ SK_OCLZeroOpaqueType
};
/// A single step in the initialization sequence.
@@ -1334,12 +1330,13 @@
/// constant.
void AddOCLSamplerInitStep(QualType T);
- /// Add a step to initialize an OpenCL event_t from a NULL
- /// constant.
- void AddOCLZeroEventStep(QualType T);
+ /// Add a step to initialzie an OpenCL opaque type (event_t, queue_t, etc.)
+ /// from a zero constant.
+ void AddOCLZeroOpaqueTypeStep(QualType T);
- /// Add a step to initialize an OpenCL queue_t from 0.
- void AddOCLZeroQueueStep(QualType T);
+ /// Add a step to initialize by zero types defined in the
+ /// cl_intel_device_side_avc_motion_estimation OpenCL extension
+ void AddOCLIntelSubgroupAVCZeroInitStep(QualType T);
/// Add steps to unwrap a initializer list for a reference around a
/// single element and rewrap it at the end.
diff --git a/linux-x64/clang/include/clang/Sema/Lookup.h b/linux-x64/clang/include/clang/Sema/Lookup.h
index 4f7da85..990005f 100644
--- a/linux-x64/clang/include/clang/Sema/Lookup.h
+++ b/linux-x64/clang/include/clang/Sema/Lookup.h
@@ -1,9 +1,8 @@
//===- Lookup.h - Classes for name lookup -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Sema/MultiplexExternalSemaSource.h b/linux-x64/clang/include/clang/Sema/MultiplexExternalSemaSource.h
index 86bddeb..8157e48 100644
--- a/linux-x64/clang/include/clang/Sema/MultiplexExternalSemaSource.h
+++ b/linux-x64/clang/include/clang/Sema/MultiplexExternalSemaSource.h
@@ -1,9 +1,8 @@
//===--- MultiplexExternalSemaSource.h - External Sema Interface-*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Sema/ObjCMethodList.h b/linux-x64/clang/include/clang/Sema/ObjCMethodList.h
index d0af4d1..bd2ce2a 100644
--- a/linux-x64/clang/include/clang/Sema/ObjCMethodList.h
+++ b/linux-x64/clang/include/clang/Sema/ObjCMethodList.h
@@ -1,9 +1,8 @@
//===--- ObjCMethodList.h - A singly linked list of methods -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Sema/Overload.h b/linux-x64/clang/include/clang/Sema/Overload.h
index 6ded010..f5490e8 100644
--- a/linux-x64/clang/include/clang/Sema/Overload.h
+++ b/linux-x64/clang/include/clang/Sema/Overload.h
@@ -1,9 +1,8 @@
//===- Overload.h - C++ Overloading -----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -755,12 +754,12 @@
ConversionFixItGenerator Fix;
/// Viable - True to indicate that this overload candidate is viable.
- bool Viable;
+ bool Viable : 1;
/// IsSurrogate - True to indicate that this candidate is a
/// surrogate for a conversion to a function pointer or reference
/// (C++ [over.call.object]).
- bool IsSurrogate;
+ bool IsSurrogate : 1;
/// IgnoreObjectArgument - True to indicate that the first
/// argument's conversion, which for this function represents the
@@ -769,7 +768,10 @@
/// implicit object argument is just a placeholder) or a
/// non-static member function when the call doesn't have an
/// object argument.
- bool IgnoreObjectArgument;
+ bool IgnoreObjectArgument : 1;
+
+ /// True if the candidate was found using ADL.
+ CallExpr::ADLCallKind IsADLCandidate : 1;
/// FailureKind - The reason why this candidate is not viable.
/// Actually an OverloadFailureKind.
@@ -823,6 +825,10 @@
return Function->getNumParams();
return ExplicitCallArguments;
}
+
+ private:
+ friend class OverloadCandidateSet;
+ OverloadCandidate() : IsADLCandidate(CallExpr::NotADL) {}
};
/// OverloadCandidateSet - A set of overload candidates, used in C++
diff --git a/linux-x64/clang/include/clang/Sema/Ownership.h b/linux-x64/clang/include/clang/Sema/Ownership.h
index ae2f178..f395282 100644
--- a/linux-x64/clang/include/clang/Sema/Ownership.h
+++ b/linux-x64/clang/include/clang/Sema/Ownership.h
@@ -1,9 +1,8 @@
//===- Ownership.h - Parser ownership helpers -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -129,9 +128,6 @@
}
};
- template <class T>
- struct isPodLike<clang::OpaquePtr<T>> { static const bool value = true; };
-
} // namespace llvm
namespace clang {
diff --git a/linux-x64/clang/include/clang/Sema/ParsedAttr.h b/linux-x64/clang/include/clang/Sema/ParsedAttr.h
index 7561e83..d125d3b 100644
--- a/linux-x64/clang/include/clang/Sema/ParsedAttr.h
+++ b/linux-x64/clang/include/clang/Sema/ParsedAttr.h
@@ -1,9 +1,8 @@
//======- ParsedAttr.h - Parsed attribute sets ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -208,6 +207,9 @@
/// A cached value.
mutable unsigned ProcessingCache : 8;
+ /// True if the attribute is specified using '#pragma clang attribute'.
+ mutable unsigned IsPragmaClangAttribute : 1;
+
/// The location of the 'unavailable' keyword in an
/// availability attribute.
SourceLocation UnavailableLoc;
@@ -239,7 +241,8 @@
ScopeLoc(scopeLoc), EllipsisLoc(ellipsisLoc), NumArgs(numArgs),
SyntaxUsed(syntaxUsed), Invalid(false), UsedAsTypeAttr(false),
IsAvailability(false), IsTypeTagForDatatype(false), IsProperty(false),
- HasParsedType(false), HasProcessingCache(false) {
+ HasParsedType(false), HasProcessingCache(false),
+ IsPragmaClangAttribute(false) {
if (numArgs) memcpy(getArgsBuffer(), args, numArgs * sizeof(ArgsUnion));
AttrKind = getKind(getName(), getScopeName(), syntaxUsed);
}
@@ -256,8 +259,8 @@
ScopeLoc(scopeLoc), NumArgs(1), SyntaxUsed(syntaxUsed), Invalid(false),
UsedAsTypeAttr(false), IsAvailability(true),
IsTypeTagForDatatype(false), IsProperty(false), HasParsedType(false),
- HasProcessingCache(false), UnavailableLoc(unavailable),
- MessageExpr(messageExpr) {
+ HasProcessingCache(false), IsPragmaClangAttribute(false),
+ UnavailableLoc(unavailable), MessageExpr(messageExpr) {
ArgsUnion PVal(Parm);
memcpy(getArgsBuffer(), &PVal, sizeof(ArgsUnion));
new (getAvailabilityData()) detail::AvailabilityData(
@@ -274,7 +277,7 @@
ScopeLoc(scopeLoc), NumArgs(3), SyntaxUsed(syntaxUsed), Invalid(false),
UsedAsTypeAttr(false), IsAvailability(false),
IsTypeTagForDatatype(false), IsProperty(false), HasParsedType(false),
- HasProcessingCache(false) {
+ HasProcessingCache(false), IsPragmaClangAttribute(false) {
ArgsUnion *Args = getArgsBuffer();
Args[0] = Parm1;
Args[1] = Parm2;
@@ -291,7 +294,7 @@
ScopeLoc(scopeLoc), NumArgs(1), SyntaxUsed(syntaxUsed), Invalid(false),
UsedAsTypeAttr(false), IsAvailability(false),
IsTypeTagForDatatype(true), IsProperty(false), HasParsedType(false),
- HasProcessingCache(false) {
+ HasProcessingCache(false), IsPragmaClangAttribute(false) {
ArgsUnion PVal(ArgKind);
memcpy(getArgsBuffer(), &PVal, sizeof(ArgsUnion));
detail::TypeTagForDatatypeData &ExtraData = getTypeTagForDatatypeDataSlot();
@@ -309,7 +312,7 @@
ScopeLoc(scopeLoc), NumArgs(0), SyntaxUsed(syntaxUsed), Invalid(false),
UsedAsTypeAttr(false), IsAvailability(false),
IsTypeTagForDatatype(false), IsProperty(false), HasParsedType(true),
- HasProcessingCache(false) {
+ HasProcessingCache(false), IsPragmaClangAttribute(false) {
new (&getTypeBuffer()) ParsedType(typeArg);
AttrKind = getKind(getName(), getScopeName(), syntaxUsed);
}
@@ -323,7 +326,7 @@
ScopeLoc(scopeLoc), NumArgs(0), SyntaxUsed(syntaxUsed), Invalid(false),
UsedAsTypeAttr(false), IsAvailability(false),
IsTypeTagForDatatype(false), IsProperty(true), HasParsedType(false),
- HasProcessingCache(false) {
+ HasProcessingCache(false), IsPragmaClangAttribute(false) {
new (&getPropertyDataBuffer()) detail::PropertyData(getterId, setterId);
AttrKind = getKind(getName(), getScopeName(), syntaxUsed);
}
@@ -383,6 +386,11 @@
IdentifierInfo *getScopeName() const { return ScopeName; }
SourceLocation getScopeLoc() const { return ScopeLoc; }
+ bool isGNUScope() const {
+ return ScopeName &&
+ (ScopeName->isStr("gnu") || ScopeName->isStr("__gnu__"));
+ }
+
bool hasParsedType() const { return HasParsedType; }
/// Is this the Microsoft __declspec(property) attribute?
@@ -432,6 +440,11 @@
bool isUsedAsTypeAttr() const { return UsedAsTypeAttr; }
void setUsedAsTypeAttr() { UsedAsTypeAttr = true; }
+ /// True if the attribute is specified using '#pragma clang attribute'.
+ bool isPragmaClangAttribute() const { return IsPragmaClangAttribute; }
+
+ void setIsPragmaClangAttribute() { IsPragmaClangAttribute = true; }
+
bool isPackExpansion() const { return EllipsisLoc.isValid(); }
SourceLocation getEllipsisLoc() const { return EllipsisLoc; }
@@ -563,6 +576,25 @@
/// parsed attribute does not have a semantic equivalent, or would not have
/// a Spelling enumeration, the value UINT_MAX is returned.
unsigned getSemanticSpelling() const;
+
+ /// If this is an OpenCL addr space attribute returns its representation
+ /// in LangAS, otherwise returns default addr space.
+ LangAS asOpenCLLangAS() const {
+ switch (getKind()) {
+ case ParsedAttr::AT_OpenCLConstantAddressSpace:
+ return LangAS::opencl_constant;
+ case ParsedAttr::AT_OpenCLGlobalAddressSpace:
+ return LangAS::opencl_global;
+ case ParsedAttr::AT_OpenCLLocalAddressSpace:
+ return LangAS::opencl_local;
+ case ParsedAttr::AT_OpenCLPrivateAddressSpace:
+ return LangAS::opencl_private;
+ case ParsedAttr::AT_OpenCLGenericAddressSpace:
+ return LangAS::opencl_generic;
+ default:
+ return LangAS::Default;
+ }
+ }
};
class AttributePool;
diff --git a/linux-x64/clang/include/clang/Sema/ParsedTemplate.h b/linux-x64/clang/include/clang/Sema/ParsedTemplate.h
index 258b229..2eed301 100644
--- a/linux-x64/clang/include/clang/Sema/ParsedTemplate.h
+++ b/linux-x64/clang/include/clang/Sema/ParsedTemplate.h
@@ -1,9 +1,8 @@
//===--- ParsedTemplate.h - Template Parsing Data Types ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Sema/Scope.h b/linux-x64/clang/include/clang/Sema/Scope.h
index 11fa036..a1b451c 100644
--- a/linux-x64/clang/include/clang/Sema/Scope.h
+++ b/linux-x64/clang/include/clang/Sema/Scope.h
@@ -1,9 +1,8 @@
//===- Scope.h - Scope interface --------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -14,6 +13,7 @@
#ifndef LLVM_CLANG_SEMA_SCOPE_H
#define LLVM_CLANG_SEMA_SCOPE_H
+#include "clang/AST/Decl.h"
#include "clang/Basic/Diagnostic.h"
#include "llvm/ADT/PointerIntPair.h"
#include "llvm/ADT/SmallPtrSet.h"
diff --git a/linux-x64/clang/include/clang/Sema/ScopeInfo.h b/linux-x64/clang/include/clang/Sema/ScopeInfo.h
index e09a68a..e2346fd 100644
--- a/linux-x64/clang/include/clang/Sema/ScopeInfo.h
+++ b/linux-x64/clang/include/clang/Sema/ScopeInfo.h
@@ -1,9 +1,8 @@
//===- ScopeInfo.h - Information about a semantic context -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Sema/Sema.h b/linux-x64/clang/include/clang/Sema/Sema.h
index e1e6dae..0c2479a 100644
--- a/linux-x64/clang/include/clang/Sema/Sema.h
+++ b/linux-x64/clang/include/clang/Sema/Sema.h
@@ -1,9 +1,8 @@
//===--- Sema.h - Semantic Analysis & AST Building --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -274,6 +273,41 @@
}
};
+/// Keeps track of expected type during expression parsing. The type is tied to
+/// a particular token, all functions that update or consume the type take a
+/// start location of the token they are looking at as a parameter. This allows
+/// to avoid updating the type on hot paths in the parser.
+class PreferredTypeBuilder {
+public:
+ PreferredTypeBuilder() = default;
+ explicit PreferredTypeBuilder(QualType Type) : Type(Type) {}
+
+ void enterCondition(Sema &S, SourceLocation Tok);
+ void enterReturn(Sema &S, SourceLocation Tok);
+ void enterVariableInit(SourceLocation Tok, Decl *D);
+
+ void enterParenExpr(SourceLocation Tok, SourceLocation LParLoc);
+ void enterUnary(Sema &S, SourceLocation Tok, tok::TokenKind OpKind,
+ SourceLocation OpLoc);
+ void enterBinary(Sema &S, SourceLocation Tok, Expr *LHS, tok::TokenKind Op);
+ void enterMemAccess(Sema &S, SourceLocation Tok, Expr *Base);
+ void enterSubscript(Sema &S, SourceLocation Tok, Expr *LHS);
+ /// Handles all type casts, including C-style cast, C++ casts, etc.
+ void enterTypeCast(SourceLocation Tok, QualType CastType);
+
+ QualType get(SourceLocation Tok) const {
+ if (Tok == ExpectedLoc)
+ return Type;
+ return QualType();
+ }
+
+private:
+ /// Start position of a token for which we store expected type.
+ SourceLocation ExpectedLoc;
+ /// Expected type for a token starting at ExpectedLoc.
+ QualType Type;
+};
+
/// Sema - This implements semantic analysis and AST building for C.
class Sema {
Sema(const Sema &) = delete;
@@ -307,6 +341,10 @@
}
bool shouldLinkPossiblyHiddenDecl(LookupResult &Old, const NamedDecl *New);
+ void setupImplicitSpecialMemberType(CXXMethodDecl *SpecialMem,
+ QualType ResultTy,
+ ArrayRef<QualType> Args);
+
public:
typedef OpaquePtr<DeclGroupRef> DeclGroupPtrTy;
typedef OpaquePtr<TemplateName> TemplateTy;
@@ -491,15 +529,24 @@
/// VisContext - Manages the stack for \#pragma GCC visibility.
void *VisContext; // Really a "PragmaVisStack*"
- /// This represents the stack of attributes that were pushed by
- /// \#pragma clang attribute.
+ /// This an attribute introduced by \#pragma clang attribute.
struct PragmaAttributeEntry {
SourceLocation Loc;
ParsedAttr *Attribute;
SmallVector<attr::SubjectMatchRule, 4> MatchRules;
bool IsUsed;
};
- SmallVector<PragmaAttributeEntry, 2> PragmaAttributeStack;
+
+ /// A push'd group of PragmaAttributeEntries.
+ struct PragmaAttributeGroup {
+ /// The location of the push attribute.
+ SourceLocation Loc;
+ /// The namespace of this push group.
+ const IdentifierInfo *Namespace;
+ SmallVector<PragmaAttributeEntry, 2> Entries;
+ };
+
+ SmallVector<PragmaAttributeGroup, 2> PragmaAttributeStack;
/// The declaration that is currently receiving an attribute from the
/// #pragma attribute stack.
@@ -992,6 +1039,8 @@
/// expressions for which we have deferred checking the destructor.
SmallVector<CXXBindTemporaryExpr *, 8> DelayedDecltypeBinds;
+ llvm::SmallPtrSet<const Expr *, 8> PossibleDerefs;
+
/// \brief Describes whether we are in an expression constext which we have
/// to handle differently.
enum ExpressionKind {
@@ -1025,6 +1074,9 @@
/// A stack of expression evaluation contexts.
SmallVector<ExpressionEvaluationContextRecord, 8> ExprEvalContexts;
+ /// Emit a warning for all pending noderef expressions that we recorded.
+ void WarnOnPendingNoDerefs(ExpressionEvaluationContextRecord &Rec);
+
/// Compute the mangling number context for a lambda expression or
/// block literal.
///
@@ -1351,6 +1403,7 @@
void PopCompoundScope();
sema::CompoundScopeInfo &getCurCompoundScope() const;
+ bool isCurCompoundStmtAStmtExpr() const;
bool hasAnyUnrecoverableErrorsInThisFunction() const;
@@ -1393,6 +1446,10 @@
QualType BuildVectorType(QualType T, Expr *VecSize, SourceLocation AttrLoc);
QualType BuildExtVectorType(QualType T, Expr *ArraySize,
SourceLocation AttrLoc);
+ QualType BuildAddressSpaceAttr(QualType &T, LangAS ASIdx, Expr *AddrSpace,
+ SourceLocation AttrLoc);
+
+ /// Same as above, but constructs the AddressSpace index if not provided.
QualType BuildAddressSpaceAttr(QualType &T, Expr *AddrSpace,
SourceLocation AttrLoc);
@@ -1537,6 +1594,17 @@
};
private:
+ /// Methods for marking which expressions involve dereferencing a pointer
+ /// marked with the 'noderef' attribute. Expressions are checked bottom up as
+ /// they are parsed, meaning that a noderef pointer may not be accessed. For
+ /// example, in `&*p` where `p` is a noderef pointer, we will first parse the
+ /// `*p`, but need to check that `address of` is called on it. This requires
+ /// keeping a container of all pending expressions and checking if the address
+ /// of them are eventually taken.
+ void CheckSubscriptAccessOfNoDeref(const ArraySubscriptExpr *E);
+ void CheckAddressOfNoDeref(const Expr *E);
+ void CheckMemberAccessOfNoDeref(const MemberExpr *E);
+
bool RequireCompleteTypeImpl(SourceLocation Loc, QualType T,
TypeDiagnoser *Diagnoser);
@@ -1934,7 +2002,7 @@
bool CheckVariableDeclaration(VarDecl *NewVD, LookupResult &Previous);
void CheckVariableDeclarationType(VarDecl *NewVD);
bool DeduceVariableDeclarationType(VarDecl *VDecl, bool DirectInit,
- Expr *Init);
+ Expr *&Init);
void CheckCompleteVariableDeclaration(VarDecl *VD);
void CheckCompleteDecompositionDeclaration(DecompositionDecl *DD);
void MaybeSuggestAddingStaticToDecl(const FunctionDecl *D);
@@ -1994,6 +2062,7 @@
SourceLocation AttrEnd);
void SetDeclDeleted(Decl *dcl, SourceLocation DelLoc);
void SetDeclDefaulted(Decl *dcl, SourceLocation DefaultLoc);
+ void CheckStaticLocalForDllExport(VarDecl *VD);
void FinalizeDeclaration(Decl *D);
DeclGroupPtrTy FinalizeDeclaratorGroup(Scope *S, const DeclSpec &DS,
ArrayRef<Decl *> Group);
@@ -2425,18 +2494,38 @@
AMK_ProtocolImplementation,
};
+ /// Describes the kind of priority given to an availability attribute.
+ ///
+ /// The sum of priorities deteremines the final priority of the attribute.
+ /// The final priority determines how the attribute will be merged.
+ /// An attribute with a lower priority will always remove higher priority
+ /// attributes for the specified platform when it is being applied. An
+ /// attribute with a higher priority will not be applied if the declaration
+ /// already has an availability attribute with a lower priority for the
+ /// specified platform. The final prirority values are not expected to match
+ /// the values in this enumeration, but instead should be treated as a plain
+ /// integer value. This enumeration just names the priority weights that are
+ /// used to calculate that final vaue.
+ enum AvailabilityPriority : int {
+ /// The availability attribute was specified explicitly next to the
+ /// declaration.
+ AP_Explicit = 0,
+
+ /// The availability attribute was applied using '#pragma clang attribute'.
+ AP_PragmaClangAttribute = 1,
+
+ /// The availability attribute for a specific platform was inferred from
+ /// an availability attribute for another platform.
+ AP_InferredFromOtherPlatform = 2
+ };
+
/// Attribute merging methods. Return true if a new attribute was added.
- AvailabilityAttr *mergeAvailabilityAttr(NamedDecl *D, SourceRange Range,
- IdentifierInfo *Platform,
- bool Implicit,
- VersionTuple Introduced,
- VersionTuple Deprecated,
- VersionTuple Obsoleted,
- bool IsUnavailable,
- StringRef Message,
- bool IsStrict, StringRef Replacement,
- AvailabilityMergeKind AMK,
- unsigned AttrSpellingListIndex);
+ AvailabilityAttr *mergeAvailabilityAttr(
+ NamedDecl *D, SourceRange Range, IdentifierInfo *Platform, bool Implicit,
+ VersionTuple Introduced, VersionTuple Deprecated, VersionTuple Obsoleted,
+ bool IsUnavailable, StringRef Message, bool IsStrict,
+ StringRef Replacement, AvailabilityMergeKind AMK, int Priority,
+ unsigned AttrSpellingListIndex);
TypeVisibilityAttr *mergeTypeVisibilityAttr(Decl *D, SourceRange Range,
TypeVisibilityAttr::VisibilityType Vis,
unsigned AttrSpellingListIndex);
@@ -2465,6 +2554,12 @@
unsigned AttrSpellingListIndex);
MinSizeAttr *mergeMinSizeAttr(Decl *D, SourceRange Range,
unsigned AttrSpellingListIndex);
+ NoSpeculativeLoadHardeningAttr *
+ mergeNoSpeculativeLoadHardeningAttr(Decl *D,
+ const NoSpeculativeLoadHardeningAttr &AL);
+ SpeculativeLoadHardeningAttr *
+ mergeSpeculativeLoadHardeningAttr(Decl *D,
+ const SpeculativeLoadHardeningAttr &AL);
OptimizeNoneAttr *mergeOptimizeNoneAttr(Decl *D, SourceRange Range,
unsigned AttrSpellingListIndex);
InternalLinkageAttr *mergeInternalLinkageAttr(Decl *D, const ParsedAttr &AL);
@@ -2725,13 +2820,15 @@
typedef llvm::SmallSetVector<DeclContext *, 16> AssociatedNamespaceSet;
typedef llvm::SmallSetVector<CXXRecordDecl *, 16> AssociatedClassSet;
- void AddOverloadCandidate(FunctionDecl *Function,
- DeclAccessPair FoundDecl,
+ using ADLCallKind = CallExpr::ADLCallKind;
+
+ void AddOverloadCandidate(FunctionDecl *Function, DeclAccessPair FoundDecl,
ArrayRef<Expr *> Args,
OverloadCandidateSet &CandidateSet,
bool SuppressUserConversions = false,
bool PartialOverloading = false,
bool AllowExplicit = false,
+ ADLCallKind IsADLCandidate = ADLCallKind::NotADL,
ConversionSequenceList EarlyConversions = None);
void AddFunctionCandidates(const UnresolvedSetImpl &Functions,
ArrayRef<Expr *> Args,
@@ -2765,13 +2862,12 @@
OverloadCandidateSet& CandidateSet,
bool SuppressUserConversions = false,
bool PartialOverloading = false);
- void AddTemplateOverloadCandidate(FunctionTemplateDecl *FunctionTemplate,
- DeclAccessPair FoundDecl,
- TemplateArgumentListInfo *ExplicitTemplateArgs,
- ArrayRef<Expr *> Args,
- OverloadCandidateSet& CandidateSet,
- bool SuppressUserConversions = false,
- bool PartialOverloading = false);
+ void AddTemplateOverloadCandidate(
+ FunctionTemplateDecl *FunctionTemplate, DeclAccessPair FoundDecl,
+ TemplateArgumentListInfo *ExplicitTemplateArgs, ArrayRef<Expr *> Args,
+ OverloadCandidateSet &CandidateSet, bool SuppressUserConversions = false,
+ bool PartialOverloading = false,
+ ADLCallKind IsADLCandidate = ADLCallKind::NotADL);
bool CheckNonDependentConversions(FunctionTemplateDecl *FunctionTemplate,
ArrayRef<QualType> ParamTypes,
ArrayRef<Expr *> Args,
@@ -2837,11 +2933,7 @@
/// Find the failed Boolean condition within a given Boolean
/// constant expression, and describe it with a string.
- ///
- /// \param AllowTopLevelCond Whether to allow the result to be the
- /// complete top-level condition.
- std::pair<Expr *, std::string>
- findFailedBooleanCondition(Expr *Cond, bool AllowTopLevelCond);
+ std::pair<Expr *, std::string> findFailedBooleanCondition(Expr *Cond);
/// Emit diagnostics for the diagnose_if attributes on Function, ignoring any
/// non-ArgDependent DiagnoseIfAttrs.
@@ -3063,6 +3155,8 @@
LookupObjCImplicitSelfParam,
/// Look up the name of an OpenMP user-defined reduction operation.
LookupOMPReductionName,
+ /// Look up the name of an OpenMP user-defined mapper.
+ LookupOMPMapperName,
/// Look up any declaration with any name.
LookupAnyName
};
@@ -3662,16 +3756,17 @@
return MakeFullExpr(Arg, Arg ? Arg->getExprLoc() : SourceLocation());
}
FullExprArg MakeFullExpr(Expr *Arg, SourceLocation CC) {
- return FullExprArg(ActOnFinishFullExpr(Arg, CC).get());
+ return FullExprArg(
+ ActOnFinishFullExpr(Arg, CC, /*DiscardedValue*/ false).get());
}
FullExprArg MakeFullDiscardedValueExpr(Expr *Arg) {
ExprResult FE =
- ActOnFinishFullExpr(Arg, Arg ? Arg->getExprLoc() : SourceLocation(),
- /*DiscardedValue*/ true);
+ ActOnFinishFullExpr(Arg, Arg ? Arg->getExprLoc() : SourceLocation(),
+ /*DiscardedValue*/ true);
return FullExprArg(FE.get());
}
- StmtResult ActOnExprStmt(ExprResult Arg);
+ StmtResult ActOnExprStmt(ExprResult Arg, bool DiscardedValue = true);
StmtResult ActOnExprStmtError();
StmtResult ActOnNullStmt(SourceLocation SemiLoc,
@@ -4214,7 +4309,7 @@
TemplateArgumentListInfo *ExplicitTemplateArgs = nullptr);
ExprResult BuildPredefinedExpr(SourceLocation Loc,
- PredefinedExpr::IdentType IT);
+ PredefinedExpr::IdentKind IK);
ExprResult ActOnPredefinedExpr(SourceLocation Loc, tok::TokenKind Kind);
ExprResult ActOnIntegerConstant(SourceLocation Loc, uint64_t Val);
@@ -4367,12 +4462,11 @@
MultiExprArg ArgExprs, SourceLocation RParenLoc,
Expr *ExecConfig = nullptr,
bool IsExecConfig = false);
- ExprResult BuildResolvedCallExpr(Expr *Fn, NamedDecl *NDecl,
- SourceLocation LParenLoc,
- ArrayRef<Expr *> Arg,
- SourceLocation RParenLoc,
- Expr *Config = nullptr,
- bool IsExecConfig = false);
+ ExprResult
+ BuildResolvedCallExpr(Expr *Fn, NamedDecl *NDecl, SourceLocation LParenLoc,
+ ArrayRef<Expr *> Arg, SourceLocation RParenLoc,
+ Expr *Config = nullptr, bool IsExecConfig = false,
+ ADLCallKind UsesADL = ADLCallKind::NotADL);
ExprResult ActOnCUDAExecConfigExpr(Scope *S, SourceLocation LLLLoc,
MultiExprArg ExecConfig,
@@ -4795,7 +4889,7 @@
ImplicitExceptionSpecification
ComputeDefaultedCopyCtorExceptionSpec(CXXMethodDecl *MD);
- /// Determine what sort of exception specification a defautled
+ /// Determine what sort of exception specification a defaulted
/// copy assignment operator of a class will have, and whether the
/// parameter will be const.
ImplicitExceptionSpecification
@@ -5095,7 +5189,7 @@
/// using the given declaration (which is either a class template or a
/// class) along with the given qualifiers.
/// along with the qualifiers placed on '*this'.
- CXXThisScopeRAII(Sema &S, Decl *ContextDecl, unsigned CXXThisTypeQuals,
+ CXXThisScopeRAII(Sema &S, Decl *ContextDecl, Qualifiers CXXThisTypeQuals,
bool Enabled = true);
~CXXThisScopeRAII();
@@ -5180,6 +5274,15 @@
SourceRange DirectInitRange,
Expr *Initializer);
+ /// Determine whether \p FD is an aligned allocation or deallocation
+ /// function that is unavailable.
+ bool isUnavailableAlignedAllocationFunction(const FunctionDecl &FD) const;
+
+ /// Produce diagnostics if \p FD is an aligned allocation or deallocation
+ /// function that is unavailable.
+ void diagnoseUnavailableAlignedAllocation(const FunctionDecl &FD,
+ SourceLocation Loc);
+
bool CheckAllocatedType(QualType AllocType, SourceLocation Loc,
SourceRange R);
@@ -5309,14 +5412,12 @@
CreateMaterializeTemporaryExpr(QualType T, Expr *Temporary,
bool BoundToLvalueReference);
- ExprResult ActOnFinishFullExpr(Expr *Expr) {
- return ActOnFinishFullExpr(Expr, Expr ? Expr->getExprLoc()
- : SourceLocation());
+ ExprResult ActOnFinishFullExpr(Expr *Expr, bool DiscardedValue) {
+ return ActOnFinishFullExpr(
+ Expr, Expr ? Expr->getExprLoc() : SourceLocation(), DiscardedValue);
}
ExprResult ActOnFinishFullExpr(Expr *Expr, SourceLocation CC,
- bool DiscardedValue = false,
- bool IsConstexpr = false,
- bool IsLambdaInitCaptureInitializer = false);
+ bool DiscardedValue, bool IsConstexpr = false);
StmtResult ActOnFinishFullStmt(Stmt *Stmt);
// Marks SS invalid if it represents an incomplete type.
@@ -5581,7 +5682,9 @@
void finishLambdaExplicitCaptures(sema::LambdaScopeInfo *LSI);
/// Introduce the lambda parameters into scope.
- void addLambdaParameters(CXXMethodDecl *CallOperator, Scope *CurScope);
+ void addLambdaParameters(
+ ArrayRef<LambdaIntroducer::LambdaCapture> Captures,
+ CXXMethodDecl *CallOperator, Scope *CurScope);
/// Deduce a block or lambda's return type based on the return
/// statements present in the body.
@@ -6056,7 +6159,8 @@
bool ForceCheck = false,
bool ForceUnprivileged = false);
void CheckLookupAccess(const LookupResult &R);
- bool IsSimplyAccessible(NamedDecl *decl, DeclContext *Ctx);
+ bool IsSimplyAccessible(NamedDecl *Decl, CXXRecordDecl *NamingClass,
+ QualType BaseType);
bool isSpecialMemberAccessibleForDeletion(CXXMethodDecl *decl,
AccessSpecifier access,
QualType objectType);
@@ -6322,9 +6426,9 @@
const TemplateArgumentListInfo &ExplicitTemplateArgs,
LookupResult &Previous);
- bool CheckFunctionTemplateSpecialization(FunctionDecl *FD,
- TemplateArgumentListInfo *ExplicitTemplateArgs,
- LookupResult &Previous);
+ bool CheckFunctionTemplateSpecialization(
+ FunctionDecl *FD, TemplateArgumentListInfo *ExplicitTemplateArgs,
+ LookupResult &Previous, bool QualifiedFriend = false);
bool CheckMemberSpecialization(NamedDecl *Member, LookupResult &Previous);
void CompleteMemberSpecialization(NamedDecl *Member, LookupResult &Previous);
@@ -7061,7 +7165,7 @@
QualType deduceVarTypeFromInitializer(VarDecl *VDecl, DeclarationName Name,
QualType Type, TypeSourceInfo *TSI,
SourceRange Range, bool DirectInit,
- Expr *Init);
+ Expr *&Init);
TypeLoc getReturnTypeLoc(FunctionDecl *FD) const;
@@ -7730,7 +7834,7 @@
SourceLocation Loc,
DeclarationName Entity,
CXXRecordDecl *ThisContext,
- unsigned ThisTypeQuals);
+ Qualifiers ThisTypeQuals);
void SubstExceptionSpec(FunctionDecl *New, const FunctionProtoType *Proto,
const MultiLevelTemplateArgumentList &Args);
bool SubstExceptionSpec(SourceLocation Loc,
@@ -8469,12 +8573,15 @@
/// the appropriate attribute.
void AddCFAuditedAttribute(Decl *D);
- /// Called on well-formed '\#pragma clang attribute push'.
- void ActOnPragmaAttributePush(ParsedAttr &Attribute, SourceLocation PragmaLoc,
- attr::ParsedSubjectMatchRuleSet Rules);
+ void ActOnPragmaAttributeAttribute(ParsedAttr &Attribute,
+ SourceLocation PragmaLoc,
+ attr::ParsedSubjectMatchRuleSet Rules);
+ void ActOnPragmaAttributeEmptyPush(SourceLocation PragmaLoc,
+ const IdentifierInfo *Namespace);
/// Called on well-formed '\#pragma clang attribute pop'.
- void ActOnPragmaAttributePop(SourceLocation PragmaLoc);
+ void ActOnPragmaAttributePop(SourceLocation PragmaLoc,
+ const IdentifierInfo *Namespace);
/// Adds the attributes that have been specified using the
/// '\#pragma clang attribute push' directives to the given declaration.
@@ -8534,9 +8641,9 @@
void AddParameterABIAttr(SourceRange AttrRange, Decl *D,
ParameterABI ABI, unsigned SpellingListIndex);
- void AddNSConsumedAttr(SourceRange AttrRange, Decl *D,
- unsigned SpellingListIndex, bool isNSConsumed,
- bool isTemplateInstantiation);
+ enum class RetainOwnershipKind {NS, CF, OS};
+ void AddXConsumedAttr(Decl *D, SourceRange SR, unsigned SpellingIndex,
+ RetainOwnershipKind K, bool IsTemplateInstantiation);
bool checkNSReturnsRetainedReturnType(SourceLocation loc, QualType type);
@@ -8576,6 +8683,21 @@
llvm::StringRef getCurrentOpenCLExtension() const {
return CurrOpenCLExtension;
}
+
+ /// Check if a function declaration \p FD associates with any
+ /// extensions present in OpenCLDeclExtMap and if so return the
+ /// extension(s) name(s).
+ std::string getOpenCLExtensionsFromDeclExtMap(FunctionDecl *FD);
+
+ /// Check if a function type \p FT associates with any
+ /// extensions present in OpenCLTypeExtMap and if so return the
+ /// extension(s) name(s).
+ std::string getOpenCLExtensionsFromTypeExtMap(FunctionType *FT);
+
+ /// Find an extension in an appropriate extension map and return its name
+ template<typename T, typename MapT>
+ std::string getOpenCLExtensionsFromExtMap(T* FT, MapT &Map);
+
void setCurrentOpenCLExtension(llvm::StringRef Ext) {
CurrOpenCLExtension = Ext;
}
@@ -8641,6 +8763,9 @@
/// Pop OpenMP function region for non-capturing function.
void popOpenMPFunctionRegion(const sema::FunctionScopeInfo *OldFSI);
+ /// Check whether we're allowed to call Callee from the current function.
+ void checkOpenMPDeviceFunction(SourceLocation Loc, FunctionDecl *Callee);
+
/// Checks if a type or a declaration is disabled due to the owning extension
/// being disabled, and emits diagnostic messages if it is disabled.
/// \param D type or declaration to be checked.
@@ -8670,6 +8795,10 @@
ExprResult getOpenMPCapturedExpr(VarDecl *Capture, ExprValueKind VK,
ExprObjectKind OK, SourceLocation Loc);
+ /// If the current region is a loop-based region, mark the start of the loop
+ /// construct.
+ void startOpenMPLoop();
+
/// Check if the specified variable is used in 'private' clause.
/// \param Level Relative level of nested OpenMP construct for that the check
/// is performed.
@@ -8746,6 +8875,27 @@
DeclGroupPtrTy ActOnOpenMPDeclareReductionDirectiveEnd(
Scope *S, DeclGroupPtrTy DeclReductions, bool IsValid);
+ /// Check variable declaration in 'omp declare mapper' construct.
+ TypeResult ActOnOpenMPDeclareMapperVarDecl(Scope *S, Declarator &D);
+ /// Check if the specified type is allowed to be used in 'omp declare
+ /// mapper' construct.
+ QualType ActOnOpenMPDeclareMapperType(SourceLocation TyLoc,
+ TypeResult ParsedType);
+ /// Called on start of '#pragma omp declare mapper'.
+ OMPDeclareMapperDecl *ActOnOpenMPDeclareMapperDirectiveStart(
+ Scope *S, DeclContext *DC, DeclarationName Name, QualType MapperType,
+ SourceLocation StartLoc, DeclarationName VN, AccessSpecifier AS,
+ Decl *PrevDeclInScope = nullptr);
+ /// Build the mapper variable of '#pragma omp declare mapper'.
+ void ActOnOpenMPDeclareMapperDirectiveVarDecl(OMPDeclareMapperDecl *DMD,
+ Scope *S, QualType MapperType,
+ SourceLocation StartLoc,
+ DeclarationName VN);
+ /// Called at the end of '#pragma omp declare mapper'.
+ DeclGroupPtrTy
+ ActOnOpenMPDeclareMapperDirectiveEnd(OMPDeclareMapperDecl *D, Scope *S,
+ ArrayRef<OMPClause *> ClauseList);
+
/// Called on the start of target region i.e. '#pragma omp declare target'.
bool ActOnStartOpenMPDeclareTargetDirective(SourceLocation Loc);
/// Called at the end of target region i.e. '#pragme omp end declare target'.
@@ -9176,13 +9326,24 @@
OMPClause *ActOnOpenMPReverseOffloadClause(SourceLocation StartLoc,
SourceLocation EndLoc);
+ /// Called on well-formed 'dynamic_allocators' clause.
+ OMPClause *ActOnOpenMPDynamicAllocatorsClause(SourceLocation StartLoc,
+ SourceLocation EndLoc);
+
+ /// Called on well-formed 'atomic_default_mem_order' clause.
+ OMPClause *ActOnOpenMPAtomicDefaultMemOrderClause(
+ OpenMPAtomicDefaultMemOrderClauseKind Kind, SourceLocation KindLoc,
+ SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc);
+
OMPClause *ActOnOpenMPVarListClause(
OpenMPClauseKind Kind, ArrayRef<Expr *> Vars, Expr *TailExpr,
SourceLocation StartLoc, SourceLocation LParenLoc,
SourceLocation ColonLoc, SourceLocation EndLoc,
CXXScopeSpec &ReductionIdScopeSpec,
const DeclarationNameInfo &ReductionId, OpenMPDependClauseKind DepKind,
- OpenMPLinearClauseKind LinKind, OpenMPMapClauseKind MapTypeModifier,
+ OpenMPLinearClauseKind LinKind,
+ ArrayRef<OpenMPMapModifierKind> MapTypeModifiers,
+ ArrayRef<SourceLocation> MapTypeModifiersLoc,
OpenMPMapClauseKind MapType, bool IsMapTypeImplicit,
SourceLocation DepLinMapLoc);
/// Called on well-formed 'private' clause.
@@ -9266,7 +9427,8 @@
SourceLocation EndLoc);
/// Called on well-formed 'map' clause.
OMPClause *
- ActOnOpenMPMapClause(OpenMPMapClauseKind MapTypeModifier,
+ ActOnOpenMPMapClause(ArrayRef<OpenMPMapModifierKind> MapTypeModifiers,
+ ArrayRef<SourceLocation> MapTypeModifiersLoc,
OpenMPMapClauseKind MapType, bool IsMapTypeImplicit,
SourceLocation MapLoc, SourceLocation ColonLoc,
ArrayRef<Expr *> VarList, SourceLocation StartLoc,
@@ -9593,6 +9755,10 @@
AssignmentAction Action,
CheckedConversionKind CCK);
+ ExprResult PerformQualificationConversion(
+ Expr *E, QualType Ty, ExprValueKind VK = VK_RValue,
+ CheckedConversionKind CCK = CCK_ImplicitConversion);
+
/// the following "Check" methods will return a valid/converted QualType
/// or a null QualType (indicating an error diagnostic was issued).
@@ -9784,21 +9950,20 @@
/// \param Method - May be null.
/// \param [out] ReturnType - The return type of the send.
/// \return true iff there were any incompatible types.
- bool CheckMessageArgumentTypes(QualType ReceiverType,
+ bool CheckMessageArgumentTypes(const Expr *Receiver, QualType ReceiverType,
MultiExprArg Args, Selector Sel,
ArrayRef<SourceLocation> SelectorLocs,
ObjCMethodDecl *Method, bool isClassMessage,
- bool isSuperMessage,
- SourceLocation lbrac, SourceLocation rbrac,
- SourceRange RecRange,
+ bool isSuperMessage, SourceLocation lbrac,
+ SourceLocation rbrac, SourceRange RecRange,
QualType &ReturnType, ExprValueKind &VK);
/// Determine the result of a message send expression based on
/// the type of the receiver, the method expected to receive the message,
/// and the form of the message send.
- QualType getMessageSendResultType(QualType ReceiverType,
- ObjCMethodDecl *Method,
- bool isClassMessage, bool isSuperMessage);
+ QualType getMessageSendResultType(const Expr *Receiver, QualType ReceiverType,
+ ObjCMethodDecl *Method, bool isClassMessage,
+ bool isSuperMessage);
/// If the given expression involves a message send to a method
/// with a related result type, emit a note describing what happened.
@@ -9949,7 +10114,7 @@
/// compilation, this is currently only enabled for CUDA compilations.
llvm::DenseMap<CanonicalDeclPtr<FunctionDecl>,
std::vector<PartialDiagnosticAt>>
- CUDADeferredDiags;
+ DeviceDeferredDiags;
/// A pair of a canonical FunctionDecl and a SourceLocation. When used as the
/// key in a hashtable, both the FD and location are hashed.
@@ -9970,21 +10135,22 @@
/// map.
llvm::DenseMap</* Callee = */ CanonicalDeclPtr<FunctionDecl>,
/* Caller = */ FunctionDeclAndLoc>
- CUDAKnownEmittedFns;
+ DeviceKnownEmittedFns;
- /// A partial call graph maintained during CUDA compilation to support
- /// deferred diagnostics.
+ /// A partial call graph maintained during CUDA/OpenMP device code compilation
+ /// to support deferred diagnostics.
///
/// Functions are only added here if, at the time they're considered, they are
/// not known-emitted. As soon as we discover that a function is
/// known-emitted, we remove it and everything it transitively calls from this
- /// set and add those functions to CUDAKnownEmittedFns.
+ /// set and add those functions to DeviceKnownEmittedFns.
llvm::DenseMap</* Caller = */ CanonicalDeclPtr<FunctionDecl>,
/* Callees = */ llvm::MapVector<CanonicalDeclPtr<FunctionDecl>,
SourceLocation>>
- CUDACallGraph;
+ DeviceCallGraph;
- /// Diagnostic builder for CUDA errors which may or may not be deferred.
+ /// Diagnostic builder for CUDA/OpenMP devices errors which may or may not be
+ /// deferred.
///
/// In CUDA, there exist constructs (e.g. variable-length arrays, try/catch)
/// which are not allowed to appear inside __device__ functions and are
@@ -9998,7 +10164,7 @@
/// diagnostic, or no diagnostic at all, according to an argument you pass to
/// its constructor, thus simplifying the process of creating these "maybe
/// deferred" diagnostics.
- class CUDADiagBuilder {
+ class DeviceDiagBuilder {
public:
enum Kind {
/// Emit no diagnostics.
@@ -10015,25 +10181,25 @@
K_Deferred
};
- CUDADiagBuilder(Kind K, SourceLocation Loc, unsigned DiagID,
- FunctionDecl *Fn, Sema &S);
- ~CUDADiagBuilder();
+ DeviceDiagBuilder(Kind K, SourceLocation Loc, unsigned DiagID,
+ FunctionDecl *Fn, Sema &S);
+ ~DeviceDiagBuilder();
/// Convertible to bool: True if we immediately emitted an error, false if
/// we didn't emit an error or we created a deferred error.
///
/// Example usage:
///
- /// if (CUDADiagBuilder(...) << foo << bar)
+ /// if (DeviceDiagBuilder(...) << foo << bar)
/// return ExprError();
///
/// But see CUDADiagIfDeviceCode() and CUDADiagIfHostCode() -- you probably
- /// want to use these instead of creating a CUDADiagBuilder yourself.
+ /// want to use these instead of creating a DeviceDiagBuilder yourself.
operator bool() const { return ImmediateDiag.hasValue(); }
template <typename T>
- friend const CUDADiagBuilder &operator<<(const CUDADiagBuilder &Diag,
- const T &Value) {
+ friend const DeviceDiagBuilder &operator<<(const DeviceDiagBuilder &Diag,
+ const T &Value) {
if (Diag.ImmediateDiag.hasValue())
*Diag.ImmediateDiag << Value;
else if (Diag.PartialDiag.hasValue())
@@ -10054,7 +10220,15 @@
llvm::Optional<PartialDiagnostic> PartialDiag;
};
- /// Creates a CUDADiagBuilder that emits the diagnostic if the current context
+ /// Indicate that this function (and thus everything it transtively calls)
+ /// will be codegen'ed, and emit any deferred diagnostics on this function and
+ /// its (transitive) callees.
+ void markKnownEmitted(
+ Sema &S, FunctionDecl *OrigCaller, FunctionDecl *OrigCallee,
+ SourceLocation OrigLoc,
+ const llvm::function_ref<bool(Sema &, FunctionDecl *)> IsKnownEmitted);
+
+ /// Creates a DeviceDiagBuilder that emits the diagnostic if the current context
/// is "used as device code".
///
/// - If CurContext is a __host__ function, does not emit any diagnostics.
@@ -10070,13 +10244,30 @@
/// if (CUDADiagIfDeviceCode(Loc, diag::err_cuda_vla) << CurrentCUDATarget())
/// return ExprError();
/// // Otherwise, continue parsing as normal.
- CUDADiagBuilder CUDADiagIfDeviceCode(SourceLocation Loc, unsigned DiagID);
+ DeviceDiagBuilder CUDADiagIfDeviceCode(SourceLocation Loc, unsigned DiagID);
- /// Creates a CUDADiagBuilder that emits the diagnostic if the current context
+ /// Creates a DeviceDiagBuilder that emits the diagnostic if the current context
/// is "used as host code".
///
/// Same as CUDADiagIfDeviceCode, with "host" and "device" switched.
- CUDADiagBuilder CUDADiagIfHostCode(SourceLocation Loc, unsigned DiagID);
+ DeviceDiagBuilder CUDADiagIfHostCode(SourceLocation Loc, unsigned DiagID);
+
+ /// Creates a DeviceDiagBuilder that emits the diagnostic if the current
+ /// context is "used as device code".
+ ///
+ /// - If CurContext is a `declare target` function or it is known that the
+ /// function is emitted for the device, emits the diagnostics immediately.
+ /// - If CurContext is a non-`declare target` function and we are compiling
+ /// for the device, creates a diagnostic which is emitted if and when we
+ /// realize that the function will be codegen'ed.
+ ///
+ /// Example usage:
+ ///
+ /// // Variable-length arrays are not allowed in NVPTX device code.
+ /// if (diagIfOpenMPDeviceCode(Loc, diag::err_vla_unsupported))
+ /// return ExprError();
+ /// // Otherwise, continue parsing as normal.
+ DeviceDiagBuilder diagIfOpenMPDeviceCode(SourceLocation Loc, unsigned DiagID);
enum CUDAFunctionTarget {
CFT_Device,
@@ -10209,6 +10400,11 @@
/// Copies target attributes from the template TD to the function FD.
void inheritCUDATargetAttrs(FunctionDecl *FD, const FunctionTemplateDecl &TD);
+ /// Returns the name of the launch configuration function. This is the name
+ /// of the function that will be called to configure kernel call, with the
+ /// parameters specified via <<<>>>.
+ std::string getCudaConfigureFuncName() const;
+
/// \name Code completion
//@{
/// Describes the context in which code completion occurs.
@@ -10267,11 +10463,14 @@
struct CodeCompleteExpressionData;
void CodeCompleteExpression(Scope *S,
const CodeCompleteExpressionData &Data);
- void CodeCompleteExpression(Scope *S, QualType PreferredType);
+ void CodeCompleteExpression(Scope *S, QualType PreferredType,
+ bool IsParenthesized = false);
void CodeCompleteMemberReferenceExpr(Scope *S, Expr *Base, Expr *OtherOpBase,
SourceLocation OpLoc, bool IsArrow,
- bool IsBaseExprStatement);
- void CodeCompletePostfixExpression(Scope *S, ExprResult LHS);
+ bool IsBaseExprStatement,
+ QualType PreferredType);
+ void CodeCompletePostfixExpression(Scope *S, ExprResult LHS,
+ QualType PreferredType);
void CodeCompleteTag(Scope *S, unsigned TagSpec);
void CodeCompleteTypeQualifiers(DeclSpec &DS);
void CodeCompleteFunctionQualifiers(DeclSpec &DS, Declarator &D,
@@ -10293,12 +10492,10 @@
IdentifierInfo *II,
SourceLocation OpenParLoc);
void CodeCompleteInitializer(Scope *S, Decl *D);
- void CodeCompleteReturn(Scope *S);
void CodeCompleteAfterIf(Scope *S);
- void CodeCompleteAssignmentRHS(Scope *S, Expr *LHS);
void CodeCompleteQualifiedId(Scope *S, CXXScopeSpec &SS,
- bool EnteringContext);
+ bool EnteringContext, QualType BaseType);
void CodeCompleteUsing(Scope *S);
void CodeCompleteUsingDirective(Scope *S);
void CodeCompleteNamespaceDecl(Scope *S);
@@ -10550,7 +10747,8 @@
/// Check if there is a field shadowing.
void CheckShadowInheritedFields(const SourceLocation &Loc,
DeclarationName FieldName,
- const CXXRecordDecl *RD);
+ const CXXRecordDecl *RD,
+ bool DeclIsField = true);
/// Check if the given expression contains 'break' or 'continue'
/// statement that produces control flow different from GCC.
diff --git a/linux-x64/clang/include/clang/Sema/SemaConsumer.h b/linux-x64/clang/include/clang/Sema/SemaConsumer.h
index a2caf86..1c5962e 100644
--- a/linux-x64/clang/include/clang/Sema/SemaConsumer.h
+++ b/linux-x64/clang/include/clang/Sema/SemaConsumer.h
@@ -1,9 +1,8 @@
//===--- SemaConsumer.h - Abstract interface for AST semantics --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Sema/SemaDiagnostic.h b/linux-x64/clang/include/clang/Sema/SemaDiagnostic.h
index 7740d5e..ae027ec 100644
--- a/linux-x64/clang/include/clang/Sema/SemaDiagnostic.h
+++ b/linux-x64/clang/include/clang/Sema/SemaDiagnostic.h
@@ -1,28 +1,14 @@
//===--- DiagnosticSema.h - Diagnostics for libsema -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_SEMA_SEMADIAGNOSTIC_H
#define LLVM_CLANG_SEMA_SEMADIAGNOSTIC_H
-#include "clang/Basic/Diagnostic.h"
-
-namespace clang {
- namespace diag {
- enum {
-#define DIAG(ENUM,FLAGS,DEFAULT_MAPPING,DESC,GROUP,\
- SFINAE,NOWERROR,SHOWINSYSHEADER,CATEGORY) ENUM,
-#define SEMASTART
-#include "clang/Basic/DiagnosticSemaKinds.inc"
-#undef DIAG
- NUM_BUILTIN_SEMA_DIAGNOSTICS
- };
- } // end namespace diag
-} // end namespace clang
+#include "clang/Basic/DiagnosticSema.h"
#endif
diff --git a/linux-x64/clang/include/clang/Sema/SemaFixItUtils.h b/linux-x64/clang/include/clang/Sema/SemaFixItUtils.h
index 84dc587..df9bc42 100644
--- a/linux-x64/clang/include/clang/Sema/SemaFixItUtils.h
+++ b/linux-x64/clang/include/clang/Sema/SemaFixItUtils.h
@@ -1,9 +1,8 @@
//===--- SemaFixItUtils.h - Sema FixIts -------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Sema/SemaInternal.h b/linux-x64/clang/include/clang/Sema/SemaInternal.h
index c55e16a..07e633c 100644
--- a/linux-x64/clang/include/clang/Sema/SemaInternal.h
+++ b/linux-x64/clang/include/clang/Sema/SemaInternal.h
@@ -1,9 +1,8 @@
//===--- SemaInternal.h - Internal Sema Interfaces --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Sema/SemaLambda.h b/linux-x64/clang/include/clang/Sema/SemaLambda.h
index 8edb9b5..e8eaa46 100644
--- a/linux-x64/clang/include/clang/Sema/SemaLambda.h
+++ b/linux-x64/clang/include/clang/Sema/SemaLambda.h
@@ -1,9 +1,8 @@
//===--- SemaLambda.h - Lambda Helper Functions --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Sema/Template.h b/linux-x64/clang/include/clang/Sema/Template.h
index 39b08e9..b2f0fbb 100644
--- a/linux-x64/clang/include/clang/Sema/Template.h
+++ b/linux-x64/clang/include/clang/Sema/Template.h
@@ -1,9 +1,8 @@
//===- SemaTemplate.h - C++ Templates ---------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//===----------------------------------------------------------------------===//
//
// This file provides types used in the semantic analysis of C++ templates.
diff --git a/linux-x64/clang/include/clang/Sema/TemplateDeduction.h b/linux-x64/clang/include/clang/Sema/TemplateDeduction.h
index 93395b4..662c407 100644
--- a/linux-x64/clang/include/clang/Sema/TemplateDeduction.h
+++ b/linux-x64/clang/include/clang/Sema/TemplateDeduction.h
@@ -1,9 +1,8 @@
//===- TemplateDeduction.h - C++ template argument deduction ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Sema/TemplateInstCallback.h b/linux-x64/clang/include/clang/Sema/TemplateInstCallback.h
index dc729d5..3ab0e8c 100644
--- a/linux-x64/clang/include/clang/Sema/TemplateInstCallback.h
+++ b/linux-x64/clang/include/clang/Sema/TemplateInstCallback.h
@@ -1,9 +1,8 @@
//===- TemplateInstCallback.h - Template Instantiation Callback - C++ --===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===---------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Sema/TypoCorrection.h b/linux-x64/clang/include/clang/Sema/TypoCorrection.h
index d8fe827..da57d1b 100644
--- a/linux-x64/clang/include/clang/Sema/TypoCorrection.h
+++ b/linux-x64/clang/include/clang/Sema/TypoCorrection.h
@@ -1,9 +1,8 @@
//===- TypoCorrection.h - Class for typo correction results -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Sema/Weak.h b/linux-x64/clang/include/clang/Sema/Weak.h
index 115e97b..4343936 100644
--- a/linux-x64/clang/include/clang/Sema/Weak.h
+++ b/linux-x64/clang/include/clang/Sema/Weak.h
@@ -1,9 +1,8 @@
//===-- UnresolvedSet.h - Unresolved sets of declarations ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Serialization/ASTBitCodes.h b/linux-x64/clang/include/clang/Serialization/ASTBitCodes.h
index 51a3999..a1ab611 100644
--- a/linux-x64/clang/include/clang/Serialization/ASTBitCodes.h
+++ b/linux-x64/clang/include/clang/Serialization/ASTBitCodes.h
@@ -1,9 +1,8 @@
//===- ASTBitCodes.h - Enum values for the PCH bitcode format ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -1015,6 +1014,10 @@
#define IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) \
PREDEF_TYPE_##Id##_ID,
#include "clang/Basic/OpenCLImageTypes.def"
+ /// \brief OpenCL extension types with auto numeration
+#define EXT_OPAQUE_TYPE(ExtType, Id, Ext) \
+ PREDEF_TYPE_##Id##_ID,
+#include "clang/Basic/OpenCLExtensionTypes.def"
};
/// The number of predefined type IDs that are reserved for
@@ -1534,8 +1537,13 @@
/// A PragmaDetectMismatchDecl record.
DECL_PRAGMA_DETECT_MISMATCH,
+ /// An OMPDeclareMapperDecl record.
+ DECL_OMP_DECLARE_MAPPER,
+
/// An OMPDeclareReductionDecl record.
DECL_OMP_DECLARE_REDUCTION,
+
+ DECL_LAST = DECL_OMP_DECLARE_REDUCTION
};
/// Record codes for each kind of statement or expression.
@@ -1548,7 +1556,7 @@
enum StmtCode {
/// A marker record that indicates that we are at the end
/// of an expression.
- STMT_STOP = 128,
+ STMT_STOP = DECL_LAST + 1,
/// A NULL expression.
STMT_NULL_PTR,
@@ -1616,6 +1624,9 @@
/// A MS-style AsmStmt record.
STMT_MSASM,
+ /// A constant expression context.
+ EXPR_CONSTANT,
+
/// A PredefinedExpr record.
EXPR_PREDEFINED,
diff --git a/linux-x64/clang/include/clang/Serialization/ASTDeserializationListener.h b/linux-x64/clang/include/clang/Serialization/ASTDeserializationListener.h
index c462a90..f3a01a4 100644
--- a/linux-x64/clang/include/clang/Serialization/ASTDeserializationListener.h
+++ b/linux-x64/clang/include/clang/Serialization/ASTDeserializationListener.h
@@ -1,9 +1,8 @@
//===- ASTDeserializationListener.h - Decl/Type PCH Read Events -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Serialization/ASTReader.h b/linux-x64/clang/include/clang/Serialization/ASTReader.h
index f97f545..798adee 100644
--- a/linux-x64/clang/include/clang/Serialization/ASTReader.h
+++ b/linux-x64/clang/include/clang/Serialization/ASTReader.h
@@ -1,9 +1,8 @@
//===- ASTReader.h - AST File Reader ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -2687,6 +2686,7 @@
: Record(Record), Context(Record.getContext()) {}
#define OPENMP_CLAUSE(Name, Class) void Visit##Class(Class *C);
+ OPENMP_CLAUSE(flush, OMPFlushClause)
#include "clang/Basic/OpenMPKinds.def"
OMPClause *readClause();
void VisitOMPClauseWithPreInit(OMPClauseWithPreInit *C);
diff --git a/linux-x64/clang/include/clang/Serialization/ASTWriter.h b/linux-x64/clang/include/clang/Serialization/ASTWriter.h
index da8b10a..2d12f6a 100644
--- a/linux-x64/clang/include/clang/Serialization/ASTWriter.h
+++ b/linux-x64/clang/include/clang/Serialization/ASTWriter.h
@@ -1,9 +1,8 @@
//===- ASTWriter.h - AST File Writer ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -26,10 +25,10 @@
#include "clang/AST/TypeLoc.h"
#include "clang/Basic/LLVM.h"
#include "clang/Basic/SourceLocation.h"
-#include "clang/Frontend/PCHContainerOperations.h"
#include "clang/Sema/SemaConsumer.h"
#include "clang/Serialization/ASTBitCodes.h"
#include "clang/Serialization/ASTDeserializationListener.h"
+#include "clang/Serialization/PCHContainerOperations.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseSet.h"
@@ -1000,6 +999,7 @@
public:
OMPClauseWriter(ASTRecordWriter &Record) : Record(Record) {}
#define OPENMP_CLAUSE(Name, Class) void Visit##Class(Class *S);
+ OPENMP_CLAUSE(flush, OMPFlushClause)
#include "clang/Basic/OpenMPKinds.def"
void writeClause(OMPClause *C);
void VisitOMPClauseWithPreInit(OMPClauseWithPreInit *C);
diff --git a/linux-x64/clang/include/clang/Serialization/AttrPCHRead.inc b/linux-x64/clang/include/clang/Serialization/AttrPCHRead.inc
index 159ff4b..7c6f09f 100644
--- a/linux-x64/clang/include/clang/Serialization/AttrPCHRead.inc
+++ b/linux-x64/clang/include/clang/Serialization/AttrPCHRead.inc
@@ -7,6 +7,15 @@
\*===----------------------------------------------------------------------===*/
switch (Kind) {
+ case attr::AArch64VectorPcs: {
+ bool isInherited = Record.readInt();
+ bool isImplicit = Record.readInt();
+ unsigned Spelling = Record.readInt();
+ New = new (Context) AArch64VectorPcsAttr(Range, Context, Spelling);
+ cast<InheritableAttr>(New)->setInherited(isInherited);
+ New->setImplicit(isImplicit);
+ break;
+ }
case attr::AMDGPUFlatWorkGroupSize: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
@@ -374,7 +383,8 @@
std::string message= Record.readString();
bool strict = Record.readInt();
std::string replacement= Record.readString();
- New = new (Context) AvailabilityAttr(Range, Context, platform, introduced, deprecated, obsoleted, unavailable, message, strict, replacement, Spelling);
+ int priority = Record.readInt();
+ New = new (Context) AvailabilityAttr(Range, Context, platform, introduced, deprecated, obsoleted, unavailable, message, strict, replacement, priority, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
@@ -568,6 +578,20 @@
New->setImplicit(isImplicit);
break;
}
+ case attr::Callback: {
+ bool isInherited = Record.readInt();
+ bool isImplicit = Record.readInt();
+ unsigned Spelling = Record.readInt();
+ unsigned encodingSize = Record.readInt();
+ SmallVector<int, 4> encoding;
+ encoding.reserve(encodingSize);
+ for (unsigned i = 0; i != encodingSize; ++i)
+ encoding.push_back(Record.readInt());
+ New = new (Context) CallbackAttr(Range, Context, encoding.data(), encodingSize, Spelling);
+ cast<InheritableAttr>(New)->setInherited(isInherited);
+ New->setImplicit(isImplicit);
+ break;
+ }
case attr::Capability: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
@@ -699,6 +723,15 @@
New->setImplicit(isImplicit);
break;
}
+ case attr::DLLExportStaticLocal: {
+ bool isInherited = Record.readInt();
+ bool isImplicit = Record.readInt();
+ unsigned Spelling = Record.readInt();
+ New = new (Context) DLLExportStaticLocalAttr(Range, Context, Spelling);
+ cast<InheritableAttr>(New)->setInherited(isInherited);
+ New->setImplicit(isImplicit);
+ break;
+ }
case attr::DLLImport: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
@@ -708,6 +741,15 @@
New->setImplicit(isImplicit);
break;
}
+ case attr::DLLImportStaticLocal: {
+ bool isInherited = Record.readInt();
+ bool isImplicit = Record.readInt();
+ unsigned Spelling = Record.readInt();
+ New = new (Context) DLLImportStaticLocalAttr(Range, Context, Spelling);
+ cast<InheritableAttr>(New)->setInherited(isInherited);
+ New->setImplicit(isImplicit);
+ break;
+ }
case attr::Deprecated: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
@@ -883,6 +925,17 @@
New->setImplicit(isImplicit);
break;
}
+ case attr::FortifyStdLib: {
+ bool isInherited = Record.readInt();
+ bool isImplicit = Record.readInt();
+ unsigned Spelling = Record.readInt();
+ int type = Record.readInt();
+ int flag = Record.readInt();
+ New = new (Context) FortifyStdLibAttr(Range, Context, type, flag, Spelling);
+ cast<InheritableAttr>(New)->setInherited(isInherited);
+ New->setImplicit(isImplicit);
+ break;
+ }
case attr::GNUInline: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
@@ -1284,6 +1337,13 @@
New->setImplicit(isImplicit);
break;
}
+ case attr::NoDeref: {
+ bool isImplicit = Record.readInt();
+ unsigned Spelling = Record.readInt();
+ New = new (Context) NoDerefAttr(Range, Context, Spelling);
+ New->setImplicit(isImplicit);
+ break;
+ }
case attr::NoDestroy: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
@@ -1372,6 +1432,15 @@
New->setImplicit(isImplicit);
break;
}
+ case attr::NoSpeculativeLoadHardening: {
+ bool isInherited = Record.readInt();
+ bool isImplicit = Record.readInt();
+ unsigned Spelling = Record.readInt();
+ New = new (Context) NoSpeculativeLoadHardeningAttr(Range, Context, Spelling);
+ cast<InheritableAttr>(New)->setInherited(isInherited);
+ New->setImplicit(isImplicit);
+ break;
+ }
case attr::NoSplitStack: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
@@ -1514,6 +1583,60 @@
New->setImplicit(isImplicit);
break;
}
+ case attr::OSConsumed: {
+ bool isInherited = Record.readInt();
+ bool isImplicit = Record.readInt();
+ unsigned Spelling = Record.readInt();
+ New = new (Context) OSConsumedAttr(Range, Context, Spelling);
+ cast<InheritableAttr>(New)->setInherited(isInherited);
+ New->setImplicit(isImplicit);
+ break;
+ }
+ case attr::OSConsumesThis: {
+ bool isInherited = Record.readInt();
+ bool isImplicit = Record.readInt();
+ unsigned Spelling = Record.readInt();
+ New = new (Context) OSConsumesThisAttr(Range, Context, Spelling);
+ cast<InheritableAttr>(New)->setInherited(isInherited);
+ New->setImplicit(isImplicit);
+ break;
+ }
+ case attr::OSReturnsNotRetained: {
+ bool isInherited = Record.readInt();
+ bool isImplicit = Record.readInt();
+ unsigned Spelling = Record.readInt();
+ New = new (Context) OSReturnsNotRetainedAttr(Range, Context, Spelling);
+ cast<InheritableAttr>(New)->setInherited(isInherited);
+ New->setImplicit(isImplicit);
+ break;
+ }
+ case attr::OSReturnsRetained: {
+ bool isInherited = Record.readInt();
+ bool isImplicit = Record.readInt();
+ unsigned Spelling = Record.readInt();
+ New = new (Context) OSReturnsRetainedAttr(Range, Context, Spelling);
+ cast<InheritableAttr>(New)->setInherited(isInherited);
+ New->setImplicit(isImplicit);
+ break;
+ }
+ case attr::OSReturnsRetainedOnNonZero: {
+ bool isInherited = Record.readInt();
+ bool isImplicit = Record.readInt();
+ unsigned Spelling = Record.readInt();
+ New = new (Context) OSReturnsRetainedOnNonZeroAttr(Range, Context, Spelling);
+ cast<InheritableAttr>(New)->setInherited(isInherited);
+ New->setImplicit(isImplicit);
+ break;
+ }
+ case attr::OSReturnsRetainedOnZero: {
+ bool isInherited = Record.readInt();
+ bool isImplicit = Record.readInt();
+ unsigned Spelling = Record.readInt();
+ New = new (Context) OSReturnsRetainedOnZeroAttr(Range, Context, Spelling);
+ cast<InheritableAttr>(New)->setInherited(isInherited);
+ New->setImplicit(isImplicit);
+ break;
+ }
case attr::ObjCBoxable: {
bool isImplicit = Record.readInt();
unsigned Spelling = Record.readInt();
@@ -1578,6 +1701,15 @@
New->setImplicit(isImplicit);
break;
}
+ case attr::ObjCExternallyRetained: {
+ bool isInherited = Record.readInt();
+ bool isImplicit = Record.readInt();
+ unsigned Spelling = Record.readInt();
+ New = new (Context) ObjCExternallyRetainedAttr(Range, Context, Spelling);
+ cast<InheritableAttr>(New)->setInherited(isInherited);
+ New->setImplicit(isImplicit);
+ break;
+ }
case attr::ObjCGC: {
bool isImplicit = Record.readInt();
unsigned Spelling = Record.readInt();
@@ -1628,6 +1760,13 @@
New->setImplicit(isImplicit);
break;
}
+ case attr::ObjCNonLazyClass: {
+ bool isImplicit = Record.readInt();
+ unsigned Spelling = Record.readInt();
+ New = new (Context) ObjCNonLazyClassAttr(Range, Context, Spelling);
+ New->setImplicit(isImplicit);
+ break;
+ }
case attr::ObjCOwnership: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
@@ -2158,6 +2297,15 @@
New->setImplicit(isImplicit);
break;
}
+ case attr::SpeculativeLoadHardening: {
+ bool isInherited = Record.readInt();
+ bool isImplicit = Record.readInt();
+ unsigned Spelling = Record.readInt();
+ New = new (Context) SpeculativeLoadHardeningAttr(Range, Context, Spelling);
+ cast<InheritableAttr>(New)->setInherited(isInherited);
+ New->setImplicit(isImplicit);
+ break;
+ }
case attr::StdCall: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
@@ -2369,6 +2517,15 @@
New->setImplicit(isImplicit);
break;
}
+ case attr::Uninitialized: {
+ bool isInherited = Record.readInt();
+ bool isImplicit = Record.readInt();
+ unsigned Spelling = Record.readInt();
+ New = new (Context) UninitializedAttr(Range, Context, Spelling);
+ cast<InheritableAttr>(New)->setInherited(isInherited);
+ New->setImplicit(isImplicit);
+ break;
+ }
case attr::Unused: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
@@ -2481,6 +2638,26 @@
New->setImplicit(isImplicit);
break;
}
+ case attr::WebAssemblyImportModule: {
+ bool isInherited = Record.readInt();
+ bool isImplicit = Record.readInt();
+ unsigned Spelling = Record.readInt();
+ std::string importModule= Record.readString();
+ New = new (Context) WebAssemblyImportModuleAttr(Range, Context, importModule, Spelling);
+ cast<InheritableAttr>(New)->setInherited(isInherited);
+ New->setImplicit(isImplicit);
+ break;
+ }
+ case attr::WebAssemblyImportName: {
+ bool isInherited = Record.readInt();
+ bool isImplicit = Record.readInt();
+ unsigned Spelling = Record.readInt();
+ std::string importName= Record.readString();
+ New = new (Context) WebAssemblyImportNameAttr(Range, Context, importName, Spelling);
+ cast<InheritableAttr>(New)->setInherited(isInherited);
+ New->setImplicit(isImplicit);
+ break;
+ }
case attr::WorkGroupSizeHint: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
diff --git a/linux-x64/clang/include/clang/Serialization/AttrPCHWrite.inc b/linux-x64/clang/include/clang/Serialization/AttrPCHWrite.inc
index 990333d..09a9af0 100644
--- a/linux-x64/clang/include/clang/Serialization/AttrPCHWrite.inc
+++ b/linux-x64/clang/include/clang/Serialization/AttrPCHWrite.inc
@@ -7,6 +7,13 @@
\*===----------------------------------------------------------------------===*/
switch (A->getKind()) {
+ case attr::AArch64VectorPcs: {
+ const auto *SA = cast<AArch64VectorPcsAttr>(A);
+ Record.push_back(SA->isInherited());
+ Record.push_back(A->isImplicit());
+ Record.push_back(A->getSpellingListIndex());
+ break;
+ }
case attr::AMDGPUFlatWorkGroupSize: {
const auto *SA = cast<AMDGPUFlatWorkGroupSizeAttr>(A);
Record.push_back(SA->isInherited());
@@ -294,6 +301,7 @@
Record.AddString(SA->getMessage());
Record.push_back(SA->getStrict());
Record.AddString(SA->getReplacement());
+ Record.push_back(SA->getPriority());
break;
}
case attr::Blocks: {
@@ -441,6 +449,16 @@
Record.push_back((*i));
break;
}
+ case attr::Callback: {
+ const auto *SA = cast<CallbackAttr>(A);
+ Record.push_back(SA->isInherited());
+ Record.push_back(A->isImplicit());
+ Record.push_back(A->getSpellingListIndex());
+ Record.push_back(SA->encoding_size());
+ for (auto &Val : SA->encoding())
+ Record.push_back(Val);
+ break;
+ }
case attr::Capability: {
const auto *SA = cast<CapabilityAttr>(A);
Record.push_back(SA->isInherited());
@@ -544,6 +562,13 @@
Record.push_back(A->getSpellingListIndex());
break;
}
+ case attr::DLLExportStaticLocal: {
+ const auto *SA = cast<DLLExportStaticLocalAttr>(A);
+ Record.push_back(SA->isInherited());
+ Record.push_back(A->isImplicit());
+ Record.push_back(A->getSpellingListIndex());
+ break;
+ }
case attr::DLLImport: {
const auto *SA = cast<DLLImportAttr>(A);
Record.push_back(SA->isInherited());
@@ -551,6 +576,13 @@
Record.push_back(A->getSpellingListIndex());
break;
}
+ case attr::DLLImportStaticLocal: {
+ const auto *SA = cast<DLLImportStaticLocalAttr>(A);
+ Record.push_back(SA->isInherited());
+ Record.push_back(A->isImplicit());
+ Record.push_back(A->getSpellingListIndex());
+ break;
+ }
case attr::Deprecated: {
const auto *SA = cast<DeprecatedAttr>(A);
Record.push_back(SA->isInherited());
@@ -690,6 +722,15 @@
Record.push_back(SA->getFormatIdx().serialize());
break;
}
+ case attr::FortifyStdLib: {
+ const auto *SA = cast<FortifyStdLibAttr>(A);
+ Record.push_back(SA->isInherited());
+ Record.push_back(A->isImplicit());
+ Record.push_back(A->getSpellingListIndex());
+ Record.push_back(SA->getType());
+ Record.push_back(SA->getFlag());
+ break;
+ }
case attr::GNUInline: {
const auto *SA = cast<GNUInlineAttr>(A);
Record.push_back(SA->isInherited());
@@ -1007,6 +1048,11 @@
Record.push_back(A->getSpellingListIndex());
break;
}
+ case attr::NoDeref: {
+ Record.push_back(A->isImplicit());
+ Record.push_back(A->getSpellingListIndex());
+ break;
+ }
case attr::NoDestroy: {
const auto *SA = cast<NoDestroyAttr>(A);
Record.push_back(SA->isInherited());
@@ -1071,6 +1117,13 @@
Record.AddString(Val);
break;
}
+ case attr::NoSpeculativeLoadHardening: {
+ const auto *SA = cast<NoSpeculativeLoadHardeningAttr>(A);
+ Record.push_back(SA->isInherited());
+ Record.push_back(A->isImplicit());
+ Record.push_back(A->getSpellingListIndex());
+ break;
+ }
case attr::NoSplitStack: {
const auto *SA = cast<NoSplitStackAttr>(A);
Record.push_back(SA->isInherited());
@@ -1178,6 +1231,48 @@
Record.push_back(A->getSpellingListIndex());
break;
}
+ case attr::OSConsumed: {
+ const auto *SA = cast<OSConsumedAttr>(A);
+ Record.push_back(SA->isInherited());
+ Record.push_back(A->isImplicit());
+ Record.push_back(A->getSpellingListIndex());
+ break;
+ }
+ case attr::OSConsumesThis: {
+ const auto *SA = cast<OSConsumesThisAttr>(A);
+ Record.push_back(SA->isInherited());
+ Record.push_back(A->isImplicit());
+ Record.push_back(A->getSpellingListIndex());
+ break;
+ }
+ case attr::OSReturnsNotRetained: {
+ const auto *SA = cast<OSReturnsNotRetainedAttr>(A);
+ Record.push_back(SA->isInherited());
+ Record.push_back(A->isImplicit());
+ Record.push_back(A->getSpellingListIndex());
+ break;
+ }
+ case attr::OSReturnsRetained: {
+ const auto *SA = cast<OSReturnsRetainedAttr>(A);
+ Record.push_back(SA->isInherited());
+ Record.push_back(A->isImplicit());
+ Record.push_back(A->getSpellingListIndex());
+ break;
+ }
+ case attr::OSReturnsRetainedOnNonZero: {
+ const auto *SA = cast<OSReturnsRetainedOnNonZeroAttr>(A);
+ Record.push_back(SA->isInherited());
+ Record.push_back(A->isImplicit());
+ Record.push_back(A->getSpellingListIndex());
+ break;
+ }
+ case attr::OSReturnsRetainedOnZero: {
+ const auto *SA = cast<OSReturnsRetainedOnZeroAttr>(A);
+ Record.push_back(SA->isInherited());
+ Record.push_back(A->isImplicit());
+ Record.push_back(A->getSpellingListIndex());
+ break;
+ }
case attr::ObjCBoxable: {
Record.push_back(A->isImplicit());
Record.push_back(A->getSpellingListIndex());
@@ -1228,6 +1323,13 @@
Record.push_back(A->getSpellingListIndex());
break;
}
+ case attr::ObjCExternallyRetained: {
+ const auto *SA = cast<ObjCExternallyRetainedAttr>(A);
+ Record.push_back(SA->isInherited());
+ Record.push_back(A->isImplicit());
+ Record.push_back(A->getSpellingListIndex());
+ break;
+ }
case attr::ObjCGC: {
const auto *SA = cast<ObjCGCAttr>(A);
Record.push_back(A->isImplicit());
@@ -1267,6 +1369,11 @@
Record.push_back(A->getSpellingListIndex());
break;
}
+ case attr::ObjCNonLazyClass: {
+ Record.push_back(A->isImplicit());
+ Record.push_back(A->getSpellingListIndex());
+ break;
+ }
case attr::ObjCOwnership: {
const auto *SA = cast<ObjCOwnershipAttr>(A);
Record.push_back(SA->isInherited());
@@ -1676,6 +1783,13 @@
Record.AddStmt(Val);
break;
}
+ case attr::SpeculativeLoadHardening: {
+ const auto *SA = cast<SpeculativeLoadHardeningAttr>(A);
+ Record.push_back(SA->isInherited());
+ Record.push_back(A->isImplicit());
+ Record.push_back(A->getSpellingListIndex());
+ break;
+ }
case attr::StdCall: {
const auto *SA = cast<StdCallAttr>(A);
Record.push_back(SA->isInherited());
@@ -1836,6 +1950,13 @@
Record.push_back(SA->getImplicitReason());
break;
}
+ case attr::Uninitialized: {
+ const auto *SA = cast<UninitializedAttr>(A);
+ Record.push_back(SA->isInherited());
+ Record.push_back(A->isImplicit());
+ Record.push_back(A->getSpellingListIndex());
+ break;
+ }
case attr::Unused: {
const auto *SA = cast<UnusedAttr>(A);
Record.push_back(SA->isInherited());
@@ -1924,6 +2045,22 @@
Record.AddString(SA->getAliasee());
break;
}
+ case attr::WebAssemblyImportModule: {
+ const auto *SA = cast<WebAssemblyImportModuleAttr>(A);
+ Record.push_back(SA->isInherited());
+ Record.push_back(A->isImplicit());
+ Record.push_back(A->getSpellingListIndex());
+ Record.AddString(SA->getImportModule());
+ break;
+ }
+ case attr::WebAssemblyImportName: {
+ const auto *SA = cast<WebAssemblyImportNameAttr>(A);
+ Record.push_back(SA->isInherited());
+ Record.push_back(A->isImplicit());
+ Record.push_back(A->getSpellingListIndex());
+ Record.AddString(SA->getImportName());
+ break;
+ }
case attr::WorkGroupSizeHint: {
const auto *SA = cast<WorkGroupSizeHintAttr>(A);
Record.push_back(SA->isInherited());
diff --git a/linux-x64/clang/include/clang/Serialization/ContinuousRangeMap.h b/linux-x64/clang/include/clang/Serialization/ContinuousRangeMap.h
index ad827e3..ce5748b 100644
--- a/linux-x64/clang/include/clang/Serialization/ContinuousRangeMap.h
+++ b/linux-x64/clang/include/clang/Serialization/ContinuousRangeMap.h
@@ -1,9 +1,8 @@
//===- ContinuousRangeMap.h - Map with int range as key ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Serialization/GlobalModuleIndex.h b/linux-x64/clang/include/clang/Serialization/GlobalModuleIndex.h
index d47fe95..2f9a70d 100644
--- a/linux-x64/clang/include/clang/Serialization/GlobalModuleIndex.h
+++ b/linux-x64/clang/include/clang/Serialization/GlobalModuleIndex.h
@@ -1,9 +1,8 @@
//===--- GlobalModuleIndex.h - Global Module Index --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -42,11 +41,6 @@
class ModuleFile;
}
-using llvm::SmallVector;
-using llvm::SmallVectorImpl;
-using llvm::StringRef;
-using serialization::ModuleFile;
-
/// A global index for a set of module files, providing information about
/// the identifiers within those module files.
///
@@ -59,6 +53,8 @@
/// imported, and can be queried to determine which modules the current
/// translation could or should load to fix a problem.
class GlobalModuleIndex {
+ using ModuleFile = serialization::ModuleFile;
+
/// Buffer containing the index file, which is lazily accessed so long
/// as the global module index is live.
std::unique_ptr<llvm::MemoryBuffer> Buffer;
@@ -147,7 +143,7 @@
/// \returns A pair containing the global module index (if it exists) and
/// the error code.
static std::pair<GlobalModuleIndex *, ErrorCode>
- readIndex(StringRef Path);
+ readIndex(llvm::StringRef Path);
/// Returns an iterator for identifiers stored in the index table.
///
@@ -158,12 +154,12 @@
///
/// \param ModuleFiles Will be populated with the set of module files that
/// have been indexed.
- void getKnownModules(SmallVectorImpl<ModuleFile *> &ModuleFiles);
+ void getKnownModules(llvm::SmallVectorImpl<ModuleFile *> &ModuleFiles);
/// Retrieve the set of module files on which the given module file
/// directly depends.
void getModuleDependencies(ModuleFile *File,
- SmallVectorImpl<ModuleFile *> &Dependencies);
+ llvm::SmallVectorImpl<ModuleFile *> &Dependencies);
/// A set of module files in which we found a result.
typedef llvm::SmallPtrSet<ModuleFile *, 4> HitSet;
@@ -177,7 +173,7 @@
/// information about this name.
///
/// \returns true if the identifier is known to the index, false otherwise.
- bool lookupIdentifier(StringRef Name, HitSet &Hits);
+ bool lookupIdentifier(llvm::StringRef Name, HitSet &Hits);
/// Note that the given module file has been loaded.
///
@@ -200,7 +196,7 @@
/// which the global index will be written.
static ErrorCode writeIndex(FileManager &FileMgr,
const PCHContainerReader &PCHContainerRdr,
- StringRef Path);
+ llvm::StringRef Path);
};
}
diff --git a/linux-x64/clang/include/clang/Serialization/Module.h b/linux-x64/clang/include/clang/Serialization/Module.h
index d6e78e6..45f82d4 100644
--- a/linux-x64/clang/include/clang/Serialization/Module.h
+++ b/linux-x64/clang/include/clang/Serialization/Module.h
@@ -1,9 +1,8 @@
//===- Module.h - Module description ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Serialization/ModuleFileExtension.h b/linux-x64/clang/include/clang/Serialization/ModuleFileExtension.h
index f70218e..63562c0 100644
--- a/linux-x64/clang/include/clang/Serialization/ModuleFileExtension.h
+++ b/linux-x64/clang/include/clang/Serialization/ModuleFileExtension.h
@@ -1,9 +1,8 @@
//===-- ModuleFileExtension.h - Module File Extensions ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Serialization/ModuleManager.h b/linux-x64/clang/include/clang/Serialization/ModuleManager.h
index cfc9a2e..7bd7dc2 100644
--- a/linux-x64/clang/include/clang/Serialization/ModuleManager.h
+++ b/linux-x64/clang/include/clang/Serialization/ModuleManager.h
@@ -1,9 +1,8 @@
//===- ModuleManager.cpp - Module Manager -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Serialization/PCHContainerOperations.h b/linux-x64/clang/include/clang/Serialization/PCHContainerOperations.h
new file mode 100644
index 0000000..33fc4a0
--- /dev/null
+++ b/linux-x64/clang/include/clang/Serialization/PCHContainerOperations.h
@@ -0,0 +1,116 @@
+//===--- Serialization/PCHContainerOperations.h - PCH Containers --*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_SERIALIZATION_PCHCONTAINEROPERATIONS_H
+#define LLVM_CLANG_SERIALIZATION_PCHCONTAINEROPERATIONS_H
+
+#include "clang/Basic/Module.h"
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/ADT/StringMap.h"
+#include "llvm/Support/MemoryBuffer.h"
+#include <memory>
+
+namespace llvm {
+class raw_pwrite_stream;
+}
+
+namespace clang {
+
+class ASTConsumer;
+class CodeGenOptions;
+class DiagnosticsEngine;
+class CompilerInstance;
+
+struct PCHBuffer {
+ ASTFileSignature Signature;
+ llvm::SmallVector<char, 0> Data;
+ bool IsComplete;
+};
+
+/// This abstract interface provides operations for creating
+/// containers for serialized ASTs (precompiled headers and clang
+/// modules).
+class PCHContainerWriter {
+public:
+ virtual ~PCHContainerWriter() = 0;
+ virtual llvm::StringRef getFormat() const = 0;
+
+ /// Return an ASTConsumer that can be chained with a
+ /// PCHGenerator that produces a wrapper file format containing a
+ /// serialized AST bitstream.
+ virtual std::unique_ptr<ASTConsumer>
+ CreatePCHContainerGenerator(CompilerInstance &CI,
+ const std::string &MainFileName,
+ const std::string &OutputFileName,
+ std::unique_ptr<llvm::raw_pwrite_stream> OS,
+ std::shared_ptr<PCHBuffer> Buffer) const = 0;
+};
+
+/// This abstract interface provides operations for unwrapping
+/// containers for serialized ASTs (precompiled headers and clang
+/// modules).
+class PCHContainerReader {
+public:
+ virtual ~PCHContainerReader() = 0;
+ /// Equivalent to the format passed to -fmodule-format=
+ virtual llvm::StringRef getFormat() const = 0;
+
+ /// Returns the serialized AST inside the PCH container Buffer.
+ virtual llvm::StringRef ExtractPCH(llvm::MemoryBufferRef Buffer) const = 0;
+};
+
+/// Implements write operations for a raw pass-through PCH container.
+class RawPCHContainerWriter : public PCHContainerWriter {
+ llvm::StringRef getFormat() const override { return "raw"; }
+
+ /// Return an ASTConsumer that can be chained with a
+ /// PCHGenerator that writes the module to a flat file.
+ std::unique_ptr<ASTConsumer>
+ CreatePCHContainerGenerator(CompilerInstance &CI,
+ const std::string &MainFileName,
+ const std::string &OutputFileName,
+ std::unique_ptr<llvm::raw_pwrite_stream> OS,
+ std::shared_ptr<PCHBuffer> Buffer) const override;
+};
+
+/// Implements read operations for a raw pass-through PCH container.
+class RawPCHContainerReader : public PCHContainerReader {
+ llvm::StringRef getFormat() const override { return "raw"; }
+
+ /// Simply returns the buffer contained in Buffer.
+ llvm::StringRef ExtractPCH(llvm::MemoryBufferRef Buffer) const override;
+};
+
+/// A registry of PCHContainerWriter and -Reader objects for different formats.
+class PCHContainerOperations {
+ llvm::StringMap<std::unique_ptr<PCHContainerWriter>> Writers;
+ llvm::StringMap<std::unique_ptr<PCHContainerReader>> Readers;
+public:
+ /// Automatically registers a RawPCHContainerWriter and
+ /// RawPCHContainerReader.
+ PCHContainerOperations();
+ void registerWriter(std::unique_ptr<PCHContainerWriter> Writer) {
+ Writers[Writer->getFormat()] = std::move(Writer);
+ }
+ void registerReader(std::unique_ptr<PCHContainerReader> Reader) {
+ Readers[Reader->getFormat()] = std::move(Reader);
+ }
+ const PCHContainerWriter *getWriterOrNull(llvm::StringRef Format) {
+ return Writers[Format].get();
+ }
+ const PCHContainerReader *getReaderOrNull(llvm::StringRef Format) {
+ return Readers[Format].get();
+ }
+ const PCHContainerReader &getRawReader() {
+ return *getReaderOrNull("raw");
+ }
+};
+
+}
+
+#endif
diff --git a/linux-x64/clang/include/clang/Serialization/SerializationDiagnostic.h b/linux-x64/clang/include/clang/Serialization/SerializationDiagnostic.h
index d50422a..7fc93c1 100644
--- a/linux-x64/clang/include/clang/Serialization/SerializationDiagnostic.h
+++ b/linux-x64/clang/include/clang/Serialization/SerializationDiagnostic.h
@@ -1,28 +1,14 @@
//===--- SerializationDiagnostic.h - Serialization Diagnostics -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_SERIALIZATION_SERIALIZATIONDIAGNOSTIC_H
#define LLVM_CLANG_SERIALIZATION_SERIALIZATIONDIAGNOSTIC_H
-#include "clang/Basic/Diagnostic.h"
-
-namespace clang {
- namespace diag {
- enum {
-#define DIAG(ENUM,FLAGS,DEFAULT_MAPPING,DESC,GROUP,\
- SFINAE,NOWERROR,SHOWINSYSHEADER,CATEGORY) ENUM,
-#define SERIALIZATIONSTART
-#include "clang/Basic/DiagnosticSerializationKinds.inc"
-#undef DIAG
- NUM_BUILTIN_SERIALIZATION_DIAGNOSTICS
- };
- } // end namespace diag
-} // end namespace clang
+#include "clang/Basic/DiagnosticSerialization.h"
#endif
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h b/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h
new file mode 100644
index 0000000..51b3002
--- /dev/null
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h
@@ -0,0 +1,40 @@
+//===--- ClangSACheckers.h - Registration functions for Checkers *- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// Declares the registation functions for the checkers defined in
+// libclangStaticAnalyzerCheckers.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_LIB_STATICANALYZER_CHECKERS_CLANGSACHECKERS_H
+#define LLVM_CLANG_LIB_STATICANALYZER_CHECKERS_CLANGSACHECKERS_H
+
+#include "clang/StaticAnalyzer/Core/BugReporter/CommonBugCategories.h"
+
+namespace clang {
+
+class LangOptions;
+
+namespace ento {
+
+class CheckerManager;
+class CheckerRegistry;
+
+#define GET_CHECKERS
+#define CHECKER(FULLNAME, CLASS, HELPTEXT, DOC_URI) \
+ void register##CLASS(CheckerManager &mgr); \
+ bool shouldRegister##CLASS(const LangOptions &LO);
+#include "clang/StaticAnalyzer/Checkers/Checkers.inc"
+#undef CHECKER
+#undef GET_CHECKERS
+
+} // end ento namespace
+
+} // end clang namespace
+
+#endif
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/Checkers.inc b/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/Checkers.inc
index 6726ea5..4182e84 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/Checkers.inc
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/Checkers.inc
@@ -1,557 +1,255 @@
-
-#ifdef GET_GROUPS
-#endif // GET_GROUPS
-
+// This file is automatically generated. Do not edit this file by hand.
#ifdef GET_PACKAGES
-PACKAGE("alpha", -1, false)
-PACKAGE("alpha.clone", -1, true)
-PACKAGE("alpha.core", -1, true)
-PACKAGE("alpha.cplusplus", -1, true)
-PACKAGE("alpha.deadcode", -1, true)
-PACKAGE("alpha.osx", -1, true)
-PACKAGE("alpha.osx.cocoa", -1, true)
-PACKAGE("alpha.osx.cocoa.localizability", -1, true)
-PACKAGE("alpha.security", -1, true)
-PACKAGE("alpha.security.taint", -1, true)
-PACKAGE("alpha.unix", -1, true)
-PACKAGE("alpha.unix.cstring", -1, true)
-PACKAGE("apiModeling", -1, true)
-PACKAGE("apiModeling.google", -1, true)
-PACKAGE("core", -1, false)
-PACKAGE("core.builtin", -1, false)
-PACKAGE("core.uninitialized", -1, false)
-PACKAGE("cplusplus", -1, false)
-PACKAGE("deadcode", -1, false)
-PACKAGE("debug", -1, false)
-PACKAGE("llvm", -1, false)
-PACKAGE("nullability", -1, false)
-PACKAGE("optin", -1, false)
-PACKAGE("optin.cplusplus", -1, false)
-PACKAGE("optin.mpi", -1, false)
-PACKAGE("optin.osx", -1, false)
-PACKAGE("optin.osx.cocoa", -1, false)
-PACKAGE("optin.osx.cocoa.localizability", -1, false)
-PACKAGE("optin.performance", -1, false)
-PACKAGE("optin.portability", -1, false)
-PACKAGE("osx", -1, false)
-PACKAGE("osx.cocoa", -1, false)
-PACKAGE("osx.coreFoundation", -1, false)
-PACKAGE("osx.coreFoundation.containers", -1, false)
-PACKAGE("security", -1, false)
-PACKAGE("security.insecureAPI", -1, false)
-PACKAGE("unix", -1, false)
-PACKAGE("unix.cstring", -1, true)
-PACKAGE("valist", -1, false)
+PACKAGE("alpha.unix.cstring")
+PACKAGE("unix")
+PACKAGE("alpha.clone")
+PACKAGE("alpha")
+PACKAGE("debug")
+PACKAGE("osx.coreFoundation")
+PACKAGE("apiModeling")
+PACKAGE("core")
+PACKAGE("optin")
+PACKAGE("unix.cstring")
+PACKAGE("optin.portability")
+PACKAGE("nullability")
+PACKAGE("core.uninitialized")
+PACKAGE("apiModeling.google")
+PACKAGE("alpha.security.taint")
+PACKAGE("alpha.deadcode")
+PACKAGE("alpha.cplusplus")
+PACKAGE("alpha.osx.cocoa")
+PACKAGE("optin.cplusplus")
+PACKAGE("optin.osx.cocoa")
+PACKAGE("deadcode")
+PACKAGE("optin.performance")
+PACKAGE("cplusplus")
+PACKAGE("osx.coreFoundation.containers")
+PACKAGE("osx.cocoa")
+PACKAGE("core.builtin")
+PACKAGE("alpha.llvm")
+PACKAGE("optin.osx.cocoa.localizability")
+PACKAGE("alpha.osx.cocoa.localizability")
+PACKAGE("optin.osx")
+PACKAGE("valist")
+PACKAGE("alpha.osx")
+PACKAGE("alpha.security")
+PACKAGE("security")
+PACKAGE("alpha.unix")
+PACKAGE("osx")
+PACKAGE("llvm")
+PACKAGE("alpha.core")
+PACKAGE("security.insecureAPI")
+PACKAGE("optin.mpi")
#endif // GET_PACKAGES
#ifdef GET_CHECKERS
-CHECKER("debug.AnalysisOrder", AnalysisOrderChecker, AnalysisOrder.cpp, "Print callbacks that are called during analysis in order", -1, false)
-CHECKER("debug.Stats", AnalyzerStatsChecker, AnalyzerStatsChecker.cpp, "Emit warnings with analyzer statistics", -1, false)
-CHECKER("alpha.security.ArrayBound", ArrayBoundChecker, ArrayBoundChecker.cpp, "Warn about buffer overflows (older checker)", -1, true)
-CHECKER("alpha.security.ArrayBoundV2", ArrayBoundCheckerV2, ArrayBoundCheckerV2.cpp, "Warn about buffer overflows (newer checker)", -1, true)
-CHECKER("osx.cocoa.AutoreleaseWrite", AutoreleaseWriteChecker, ObjCAutoreleaseWriteChecker.cpp, "Warn about potentially crashing writes to autoreleasing objects from different autoreleasing pools in Objective-C", -1, false)
-CHECKER("alpha.unix.BlockInCriticalSection", BlockInCriticalSectionChecker, BlockInCriticalSectionChecker.cpp, "Check for calls to blocking functions inside a critical section", -1, true)
-CHECKER("alpha.core.BoolAssignment", BoolAssignmentChecker, BoolAssignmentChecker.cpp, "Warn about assigning non-{0,1} values to Boolean variables", -1, true)
-CHECKER("core.builtin.BuiltinFunctions", BuiltinFunctionChecker, BuiltinFunctionChecker.cpp, "Evaluate compiler builtin functions (e.g., alloca())", -1, false)
-CHECKER("osx.coreFoundation.CFError", CFErrorChecker, NSErrorChecker.cpp, "Check usage of CFErrorRef* parameters", -1, false)
-CHECKER("debug.DumpCFG", CFGDumper, DebugCheckers.cpp, "Display Control-Flow Graphs", -1, false)
-CHECKER("debug.ViewCFG", CFGViewer, DebugCheckers.cpp, "View Control-Flow Graphs using GraphViz", -1, false)
-CHECKER("osx.coreFoundation.CFNumber", CFNumberChecker, BasicObjCFoundationChecks.cpp, "Check for proper uses of CFNumber APIs", -1, false)
-CHECKER("osx.coreFoundation.CFRetainRelease", CFRetainReleaseChecker, BasicObjCFoundationChecks.cpp, "Check for null arguments to CFRetain/CFRelease/CFMakeCollectable", -1, false)
-CHECKER("alpha.unix.cstring.BufferOverlap", CStringBufferOverlap, CStringChecker.cpp, "Checks for overlap in two buffer arguments", -1, true)
-CHECKER("alpha.unix.cstring.NotNullTerminated", CStringNotNullTerm, CStringChecker.cpp, "Check for arguments which are not null-terminating strings", -1, true)
-CHECKER("unix.cstring.NullArg", CStringNullArg, CStringChecker.cpp, "Check for null pointers being passed as arguments to C string functions", -1, true)
-CHECKER("alpha.unix.cstring.OutOfBounds", CStringOutOfBounds, CStringChecker.cpp, "Check for out-of-bounds access in string functions", -1, true)
-CHECKER("unix.cstring.BadSizeArg", CStringSyntaxChecker, CStringSyntaxChecker.cpp, "Check the size argument passed into C string functions for common erroneous patterns", -1, true)
-CHECKER("cplusplus.SelfAssignment", CXXSelfAssignmentChecker, CXXSelfAssignmentChecker.cpp, "Checks C++ copy and move assignment operators for self assignment", -1, false)
-CHECKER("core.CallAndMessage", CallAndMessageChecker, CallAndMessageChecker.cpp, "Check for logical errors for function calls and Objective-C message expressions (e.g., uninitialized arguments, null function pointers)", -1, false)
-CHECKER("alpha.core.CallAndMessageUnInitRefArg", CallAndMessageUnInitRefArg, CallAndMessageChecker.cpp, "Check for logical errors for function calls and Objective-C message expressions (e.g., uninitialized arguments, null function pointers, and pointer to undefined variables)", -1, true)
-CHECKER("debug.DumpCalls", CallDumper, TraversalChecker.cpp, "Print calls as they are traversed by the engine", -1, false)
-CHECKER("debug.DumpCallGraph", CallGraphDumper, DebugCheckers.cpp, "Display Call Graph", -1, false)
-CHECKER("debug.ViewCallGraph", CallGraphViewer, DebugCheckers.cpp, "View Call Graph using GraphViz", -1, false)
-CHECKER("alpha.core.CastSize", CastSizeChecker, CastSizeChecker.cpp, "Check when casting a malloc'ed type T, whether the size is a multiple of the size of T", -1, true)
-CHECKER("alpha.core.CastToStruct", CastToStructChecker, CastToStructChecker.cpp, "Check for cast from non-struct pointer to struct pointer", -1, true)
-CHECKER("alpha.unix.Chroot", ChrootChecker, ChrootChecker.cpp, "Check improper use of chroot", -1, true)
-CHECKER("osx.cocoa.ClassRelease", ClassReleaseChecker, BasicObjCFoundationChecks.cpp, "Check for sending 'retain', 'release', or 'autorelease' directly to a Class", -1, false)
-CHECKER("alpha.clone.CloneChecker", CloneChecker, CloneChecker.cpp, "Reports similar pieces of code.", -1, true)
-CHECKER("debug.ConfigDumper", ConfigDumper, DebugCheckers.cpp, "Dump config table", -1, false)
-CHECKER("alpha.core.Conversion", ConversionChecker, ConversionChecker.cpp, "Loss of sign/precision in implicit conversions", -1, true)
-CHECKER("valist.CopyToSelf", CopyToSelfChecker, ValistChecker.cpp, "Check for va_lists which are copied onto itself.", -1, false)
-CHECKER("deadcode.DeadStores", DeadStoresChecker, DeadStoresChecker.cpp, "Check for values stored to variables that are never read afterwards", -1, false)
-CHECKER("alpha.cplusplus.DeleteWithNonVirtualDtor", DeleteWithNonVirtualDtorChecker, DeleteWithNonVirtualDtorChecker.cpp, "Reports destructions of polymorphic objects with a non-virtual destructor in their base class", -1, true)
-CHECKER("core.NullDereference", DereferenceChecker, DereferenceChecker.cpp, "Check for dereferences of null pointers", -1, false)
-CHECKER("alpha.osx.cocoa.DirectIvarAssignment", DirectIvarAssignment, DirectIvarAssignment.cpp, "Check for direct assignments to instance variables", -1, true)
-CHECKER("alpha.osx.cocoa.DirectIvarAssignmentForAnnotatedFunctions", DirectIvarAssignmentForAnnotatedFunctions, DirectIvarAssignment.cpp, "Check for direct assignments to instance variables in the methods annotated with objc_no_direct_instance_variable_assignment", -1, true)
-CHECKER("core.DivideZero", DivZeroChecker, DivZeroChecker.cpp, "Check for division by zero", -1, false)
-CHECKER("debug.DumpDominators", DominatorsTreeDumper, DebugCheckers.cpp, "Print the dominance tree for a given CFG", -1, false)
-CHECKER("alpha.core.DynamicTypeChecker", DynamicTypeChecker, DynamicTypeChecker.cpp, "Check for cases where the dynamic and the static type of an object are unrelated.", -1, true)
-CHECKER("core.DynamicTypePropagation", DynamicTypePropagation, DynamicTypePropagation.cpp, "Generate dynamic type information", -1, false)
-CHECKER("optin.osx.cocoa.localizability.EmptyLocalizationContextChecker", EmptyLocalizationContextChecker, LocalizationChecker.cpp, "Check that NSLocalizedString macros include a comment for context", -1, false)
-CHECKER("debug.ViewExplodedGraph", ExplodedGraphViewer, DebugCheckers.cpp, "View Exploded Graphs using GraphViz", -1, false)
-CHECKER("debug.ExprInspection", ExprInspectionChecker, ExprInspectionChecker.cpp, "Check the analyzer's understanding of expressions", -1, false)
-CHECKER("alpha.core.FixedAddr", FixedAddressChecker, FixedAddressChecker.cpp, "Check for assignment of a fixed address to a pointer", -1, true)
-CHECKER("security.FloatLoopCounter", FloatLoopCounter, CheckSecuritySyntaxOnly.cpp, "Warn on using a floating point value as a loop counter (CERT: FLP30-C, FLP30-CPP)", -1, false)
-CHECKER("optin.performance.GCDAntipattern", GCDAntipattern, GCDAntipatternChecker.cpp, "Check for performance anti-patterns when using Grand Central Dispatch", -1, false)
-CHECKER("apiModeling.google.GTest", GTestChecker, GTestChecker.cpp, "Model gtest assertion APIs", -1, true)
-CHECKER("alpha.security.taint.TaintPropagation", GenericTaintChecker, GenericTaintChecker.cpp, "Generate taint information used by other checkers", -1, true)
-CHECKER("alpha.core.IdenticalExpr", IdenticalExprChecker, IdenticalExprChecker.cpp, "Warn about unintended use of identical expressions in operators", -1, true)
-CHECKER("cplusplus.InnerPointer", InnerPointerChecker, InnerPointerChecker.cpp, "Check for inner pointers of C++ containers used after re/deallocation", -1, false)
-CHECKER("alpha.osx.cocoa.InstanceVariableInvalidation", InstanceVariableInvalidation, IvarInvalidationChecker.cpp, "Check that the invalidatable instance variables are invalidated in the methods annotated with objc_instance_variable_invalidator", -1, true)
-CHECKER("alpha.cplusplus.InvalidatedIterator", InvalidatedIteratorChecker, IteratorChecker.cpp, "Check for use of invalidated iterators", -1, true)
-CHECKER("alpha.cplusplus.IteratorRange", IteratorRangeChecker, IteratorChecker.cpp, "Check for iterators used outside their valid ranges", -1, true)
-CHECKER("llvm.Conventions", LLVMConventionsChecker, LLVMConventionsChecker.cpp, "Check code for LLVM codebase conventions", -1, false)
-CHECKER("debug.DumpLiveVars", LiveVariablesDumper, DebugCheckers.cpp, "Print results of live variable analysis", -1, false)
-CHECKER("optin.mpi.MPI-Checker", MPIChecker, MPIChecker.cpp, "Checks MPI code", -1, false)
-CHECKER("osx.SecKeychainAPI", MacOSKeychainAPIChecker, MacOSKeychainAPIChecker.cpp, "Check for proper uses of Secure Keychain APIs", -1, false)
-CHECKER("osx.API", MacOSXAPIChecker, MacOSXAPIChecker.cpp, "Check for proper uses of various Apple APIs", -1, false)
-CHECKER("unix.Malloc", MallocChecker, MallocChecker.cpp, "Check for memory leaks, double free, and use-after-free problems. Traces memory managed by malloc()/free().", -1, false)
-CHECKER("alpha.security.MallocOverflow", MallocOverflowSecurityChecker, MallocOverflowSecurityChecker.cpp, "Check for overflows in the arguments to malloc()", -1, true)
-CHECKER("unix.MallocSizeof", MallocSizeofChecker, MallocSizeofChecker.cpp, "Check for dubious malloc arguments involving sizeof", -1, false)
-CHECKER("unix.MismatchedDeallocator", MismatchedDeallocatorChecker, MallocChecker.cpp, "Check for mismatched deallocators.", -1, false)
-CHECKER("alpha.cplusplus.MismatchedIterator", MismatchedIteratorChecker, IteratorChecker.cpp, "Check for use of iterators of different containers where iterators of the same container are expected", -1, true)
-CHECKER("alpha.osx.cocoa.MissingInvalidationMethod", MissingInvalidationMethod, IvarInvalidationChecker.cpp, "Check that the invalidation methods are present in classes that contain invalidatable instance variables", -1, true)
-CHECKER("alpha.cplusplus.MisusedMovedObject", MisusedMovedObjectChecker, MisusedMovedObjectChecker.cpp, "Method calls on a moved-from object and copying a moved-from object will be reported", -1, true)
-CHECKER("alpha.security.MmapWriteExec", MmapWriteExecChecker, MmapWriteExecChecker.cpp, "Warn on mmap() calls that are both writable and executable", -1, true)
-CHECKER("osx.cocoa.NSAutoreleasePool", NSAutoreleasePoolChecker, NSAutoreleasePoolChecker.cpp, "Warn for suboptimal uses of NSAutoreleasePool in Objective-C GC mode", -1, false)
-CHECKER("osx.cocoa.NSError", NSErrorChecker, NSErrorChecker.cpp, "Check usage of NSError** parameters", -1, false)
-CHECKER("cplusplus.NewDelete", NewDeleteChecker, MallocChecker.cpp, "Check for double-free and use-after-free problems. Traces memory managed by new/delete.", -1, false)
-CHECKER("cplusplus.NewDeleteLeaks", NewDeleteLeaksChecker, MallocChecker.cpp, "Check for memory leaks. Traces memory managed by new/delete.", -1, false)
-CHECKER("osx.cocoa.NilArg", NilArgChecker, BasicObjCFoundationChecks.cpp, "Check for prohibited nil arguments to ObjC method calls", -1, false)
-CHECKER("core.builtin.NoReturnFunctions", NoReturnFunctionChecker, NoReturnFunctionChecker.cpp, "Evaluate \"panic\" functions that are known to not return to the caller", -1, false)
-CHECKER("optin.osx.cocoa.localizability.NonLocalizedStringChecker", NonLocalizedStringChecker, LocalizationChecker.cpp, "Warns about uses of non-localized NSStrings passed to UI methods expecting localized NSStrings", -1, false)
-CHECKER("core.NonNullParamChecker", NonNullParamChecker, NonNullParamChecker.cpp, "Check for null pointers passed as arguments to a function whose arguments are references or marked with the 'nonnull' attribute", -1, false)
-CHECKER("core.NonnilStringConstants", NonnullGlobalConstantsChecker, NonilStringConstantsChecker.cpp, "Assume that const string-like globals are non-null", -1, false)
-CHECKER("nullability.NullPassedToNonnull", NullPassedToNonnullChecker, NullabilityChecker.cpp, "Warns when a null pointer is passed to a pointer which has a _Nonnull type.", -1, false)
-CHECKER("nullability.NullReturnedFromNonnull", NullReturnedFromNonnullChecker, NullabilityChecker.cpp, "Warns when a null pointer is returned from a function that has _Nonnull return type.", -1, false)
-CHECKER("nullability.NullableDereferenced", NullableDereferencedChecker, NullabilityChecker.cpp, "Warns when a nullable pointer is dereferenced.", -1, false)
-CHECKER("nullability.NullablePassedToNonnull", NullablePassedToNonnullChecker, NullabilityChecker.cpp, "Warns when a nullable pointer is passed to a pointer which has a _Nonnull type.", -1, false)
-CHECKER("nullability.NullableReturnedFromNonnull", NullableReturnedFromNonnullChecker, NullabilityChecker.cpp, "Warns when a nullable pointer is returned from a function that has _Nonnull return type.", -1, false)
-CHECKER("osx.NumberObjectConversion", NumberObjectConversionChecker, NumberObjectConversionChecker.cpp, "Check for erroneous conversions of objects representing numbers into numbers", -1, false)
-CHECKER("osx.cocoa.AtSync", ObjCAtSyncChecker, ObjCAtSyncChecker.cpp, "Check for nil pointers used as mutexes for @synchronized", -1, false)
-CHECKER("osx.coreFoundation.containers.PointerSizedValues", ObjCContainersASTChecker, ObjCContainersASTChecker.cpp, "Warns if 'CFArray', 'CFDictionary', 'CFSet' are created with non-pointer-size values", -1, false)
-CHECKER("osx.coreFoundation.containers.OutOfBounds", ObjCContainersChecker, ObjCContainersChecker.cpp, "Checks for index out-of-bounds when using 'CFArray' API", -1, false)
-CHECKER("osx.cocoa.Dealloc", ObjCDeallocChecker, CheckObjCDealloc.cpp, "Warn about Objective-C classes that lack a correct implementation of -dealloc", -1, false)
-CHECKER("osx.cocoa.ObjCGenerics", ObjCGenericsChecker, DynamicTypePropagation.cpp, "Check for type errors when using Objective-C generics", -1, false)
-CHECKER("osx.cocoa.Loops", ObjCLoopChecker, BasicObjCFoundationChecks.cpp, "Improved modeling of loops using Cocoa collection types", -1, false)
-CHECKER("osx.cocoa.IncompatibleMethodTypes", ObjCMethSigsChecker, CheckObjCInstMethSignature.cpp, "Warn about Objective-C method signatures with type incompatibilities", -1, false)
-CHECKER("osx.cocoa.NonNilReturnValue", ObjCNonNilReturnValueChecker, BasicObjCFoundationChecks.cpp, "Model the APIs that are guaranteed to return a non-nil value", -1, false)
-CHECKER("osx.ObjCProperty", ObjCPropertyChecker, ObjCPropertyChecker.cpp, "Check for proper uses of Objective-C properties", -1, false)
-CHECKER("osx.cocoa.SelfInit", ObjCSelfInitChecker, ObjCSelfInitChecker.cpp, "Check that 'self' is properly initialized inside an initializer method", -1, false)
-CHECKER("osx.cocoa.MissingSuperCall", ObjCSuperCallChecker, ObjCMissingSuperCallChecker.cpp, "Warn about Objective-C methods that lack a necessary call to super", -1, false)
-CHECKER("osx.cocoa.SuperDealloc", ObjCSuperDeallocChecker, ObjCSuperDeallocChecker.cpp, "Warn about improper use of '[super dealloc]' in Objective-C", -1, false)
-CHECKER("osx.cocoa.UnusedIvars", ObjCUnusedIvarsChecker, ObjCUnusedIVarsChecker.cpp, "Warn about private ivars that are never used", -1, false)
-CHECKER("optin.performance.Padding", PaddingChecker, PaddingChecker.cpp, "Check for excessively padded structs.", -1, false)
-CHECKER("alpha.osx.cocoa.localizability.PluralMisuseChecker", PluralMisuseChecker, LocalizationChecker.cpp, "Warns against using one vs. many plural pattern in code when generating localized strings.", -1, true)
-CHECKER("alpha.core.PointerArithm", PointerArithChecker, PointerArithChecker, "Check for pointer arithmetic on locations other than array elements", -1, true)
-CHECKER("alpha.core.PointerSub", PointerSubChecker, PointerSubChecker, "Check for pointer subtractions on two pointers pointing to different memory chunks", -1, true)
-CHECKER("alpha.unix.PthreadLock", PthreadLockChecker, PthreadLockChecker.cpp, "Simple lock -> unlock checker", -1, true)
-CHECKER("osx.cocoa.RetainCount", RetainCountChecker, RetainCountChecker.cpp, "Check for leaks and improper reference count management", -1, false)
-CHECKER("alpha.security.ReturnPtrRange", ReturnPointerRangeChecker, ReturnPointerRangeChecker.cpp, "Check for an out-of-bound pointer being returned to callers", -1, true)
-CHECKER("core.uninitialized.UndefReturn", ReturnUndefChecker, ReturnUndefChecker.cpp, "Check for uninitialized values being returned to the caller", -1, false)
-CHECKER("osx.cocoa.RunLoopAutoreleaseLeak", RunLoopAutoreleaseLeakChecker, RunLoopAutoreleaseLeakChecker.cpp, "Check for leaked memory in autorelease pools that will never be drained", -1, false)
-CHECKER("alpha.unix.SimpleStream", SimpleStreamChecker, SimpleStreamChecker.cpp, "Check for misuses of stream APIs", -1, true)
-CHECKER("alpha.core.SizeofPtr", SizeofPointerChecker, CheckSizeofPointer.cpp, "Warn about unintended use of sizeof() on pointer expressions", -1, true)
-CHECKER("alpha.core.StackAddressAsyncEscape", StackAddrAsyncEscapeChecker, StackAddrEscapeChecker.cpp, "Check that addresses to stack memory do not escape the function", -1, true)
-CHECKER("core.StackAddressEscape", StackAddrEscapeChecker, StackAddrEscapeChecker.cpp, "Check that addresses to stack memory do not escape the function", -1, false)
-CHECKER("apiModeling.StdCLibraryFunctions", StdCLibraryFunctionsChecker, StdLibraryFunctionsChecker.cpp, "Improve modeling of the C standard library functions", -1, true)
-CHECKER("alpha.unix.Stream", StreamChecker, StreamChecker.cpp, "Check stream handling functions", -1, true)
-CHECKER("debug.TaintTest", TaintTesterChecker, TaintTesterChecker.cpp, "Mark tainted symbols as such.", -1, false)
-CHECKER("alpha.core.TestAfterDivZero", TestAfterDivZeroChecker, TestAfterDivZeroChecker.cpp, "Check for division by variable that is later compared against 0. Either the comparison is useless or there is division by zero.", -1, true)
-CHECKER("debug.DumpTraversal", TraversalDumper, TraversalChecker.cpp, "Print branch conditions as they are traversed by the engine", -1, false)
-CHECKER("apiModeling.TrustNonnull", TrustNonnullChecker, TrustNonnullChecker.cpp, "Trust that returns from framework methods annotated with _Nonnull are not null", -1, true)
-CHECKER("security.insecureAPI.UncheckedReturn", UncheckedReturn, CheckSecuritySyntaxOnly.cpp, "Warn on uses of functions whose return values must be always checked", -1, false)
-CHECKER("core.uninitialized.Branch", UndefBranchChecker, UndefBranchChecker.cpp, "Check for uninitialized values used as branch conditions", -1, false)
-CHECKER("core.uninitialized.CapturedBlockVariable", UndefCapturedBlockVarChecker, UndefCapturedBlockVarChecker.cpp, "Check for blocks that capture uninitialized values", -1, false)
-CHECKER("core.UndefinedBinaryOperatorResult", UndefResultChecker, UndefResultChecker.cpp, "Check for undefined results of binary operators", -1, false)
-CHECKER("core.uninitialized.ArraySubscript", UndefinedArraySubscriptChecker, UndefinedArraySubscriptChecker.cpp, "Check for uninitialized values used as array subscripts", -1, false)
-CHECKER("core.uninitialized.Assign", UndefinedAssignmentChecker, UndefinedAssignmentChecker.cpp, "Check for assigning uninitialized values", -1, false)
-CHECKER("valist.Uninitialized", UninitializedChecker, ValistChecker.cpp, "Check for usages of uninitialized (or already released) va_lists.", -1, false)
-CHECKER("alpha.cplusplus.UninitializedObject", UninitializedObjectChecker, UninitializedObjectChecker.cpp, "Reports uninitialized fields after object construction", -1, true)
-CHECKER("unix.API", UnixAPIMisuseChecker, UnixAPIChecker.cpp, "Check calls to various UNIX/Posix functions", -1, false)
-CHECKER("optin.portability.UnixAPI", UnixAPIPortabilityChecker, UnixAPIChecker.cpp, "Finds implementation-defined behavior in UNIX/Posix functions", -1, false)
-CHECKER("alpha.deadcode.UnreachableCode", UnreachableCodeChecker, UnreachableCodeChecker.cpp, "Check unreachable code", -1, true)
-CHECKER("valist.Unterminated", UnterminatedChecker, ValistChecker.cpp, "Check for va_lists which are not released by a va_end call.", -1, false)
-CHECKER("core.VLASize", VLASizeChecker, VLASizeChecker.cpp, "Check for declarations of VLA of undefined or zero size", -1, false)
-CHECKER("osx.cocoa.VariadicMethodTypes", VariadicMethodTypeChecker, BasicObjCFoundationChecks.cpp, "Check for passing non-Objective-C types to variadic collection initialization methods that expect only Objective-C types", -1, false)
-CHECKER("unix.Vfork", VforkChecker, VforkChecker.cpp, "Check for proper usage of vfork", -1, false)
-CHECKER("optin.cplusplus.VirtualCall", VirtualCallChecker, VirtualCallChecker.cpp, "Check virtual function calls during construction or destruction", -1, false)
-CHECKER("security.insecureAPI.bcmp", bcmp, CheckSecuritySyntaxOnly.cpp, "Warn on uses of the 'bcmp' function", -1, false)
-CHECKER("security.insecureAPI.bcopy", bcopy, CheckSecuritySyntaxOnly.cpp, "Warn on uses of the 'bcopy' function", -1, false)
-CHECKER("security.insecureAPI.bzero", bzero, CheckSecuritySyntaxOnly.cpp, "Warn on uses of the 'bzero' function", -1, false)
-CHECKER("security.insecureAPI.getpw", getpw, CheckSecuritySyntaxOnly.cpp, "Warn on uses of the 'getpw' function", -1, false)
-CHECKER("security.insecureAPI.gets", gets, CheckSecuritySyntaxOnly.cpp, "Warn on uses of the 'gets' function", -1, false)
-CHECKER("security.insecureAPI.mkstemp", mkstemp, CheckSecuritySyntaxOnly.cpp, "Warn when 'mkstemp' is passed fewer than 6 X's in the format string", -1, false)
-CHECKER("security.insecureAPI.mktemp", mktemp, CheckSecuritySyntaxOnly.cpp, "Warn on uses of the 'mktemp' function", -1, false)
-CHECKER("security.insecureAPI.rand", rand, CheckSecuritySyntaxOnly.cpp, "Warn on uses of the 'rand', 'random', and related functions", -1, false)
-CHECKER("security.insecureAPI.strcpy", strcpy, CheckSecuritySyntaxOnly.cpp, "Warn on uses of the 'strcpy' and 'strcat' functions", -1, false)
-CHECKER("security.insecureAPI.vfork", vfork, CheckSecuritySyntaxOnly.cpp, "Warn on uses of the 'vfork' function", -1, false)
+
+CHECKER("debug.AnalysisOrder", AnalysisOrderChecker, "Print callbacks that are called during analysis in order", "")
+CHECKER("debug.Stats", AnalyzerStatsChecker, "Emit warnings with analyzer statistics", "")
+CHECKER("alpha.security.ArrayBound", ArrayBoundChecker, "Warn about buffer overflows (older checker)", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.security.ArrayBound")
+CHECKER("alpha.security.ArrayBoundV2", ArrayBoundCheckerV2, "Warn about buffer overflows (newer checker)", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.security.ArrayBoundV2")
+CHECKER("osx.cocoa.AutoreleaseWrite", AutoreleaseWriteChecker, "Warn about potentially crashing writes to autoreleasing objects from different autoreleasing pools in Objective-C", "")
+CHECKER("alpha.unix.BlockInCriticalSection", BlockInCriticalSectionChecker, "Check for calls to blocking functions inside a critical section", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.unix.BlockInCriticalSection")
+CHECKER("alpha.core.BoolAssignment", BoolAssignmentChecker, "Warn about assigning non-{0,1} values to Boolean variables", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.core.BoolAssignment")
+CHECKER("core.builtin.BuiltinFunctions", BuiltinFunctionChecker, "Evaluate compiler builtin functions (e.g., alloca())", "")
+CHECKER("osx.coreFoundation.CFError", CFErrorChecker, "Check usage of CFErrorRef* parameters", "https://clang-analyzer.llvm.org/available_checks.html#osx.coreFoundation.CFError")
+CHECKER("debug.DumpCFG", CFGDumper, "Display Control-Flow Graphs", "")
+CHECKER("debug.ViewCFG", CFGViewer, "View Control-Flow Graphs using GraphViz", "")
+CHECKER("osx.coreFoundation.CFNumber", CFNumberChecker, "Check for proper uses of CFNumber APIs", "https://clang-analyzer.llvm.org/available_checks.html#osx.coreFoundation.CFNumber")
+CHECKER("osx.coreFoundation.CFRetainRelease", CFRetainReleaseChecker, "Check for null arguments to CFRetain/CFRelease/CFMakeCollectable", "https://clang-analyzer.llvm.org/available_checks.html#osx.coreFoundation.CFRetainRelease")
+CHECKER("alpha.unix.cstring.BufferOverlap", CStringBufferOverlap, "Checks for overlap in two buffer arguments", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.unix.cstring.BufferOverlap")
+CHECKER("unix.cstring.CStringModeling", CStringModeling, "The base of several CString related checkers. On it's own it emits no reports, but adds valuable information to the analysis when enabled.", "")
+CHECKER("alpha.unix.cstring.NotNullTerminated", CStringNotNullTerm, "Check for arguments which are not null-terminating strings", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.unix.cstring.NotNullTerminated")
+CHECKER("unix.cstring.NullArg", CStringNullArg, "Check for null pointers being passed as arguments to C string functions", "https://clang-analyzer.llvm.org/available_checks.html#unix.cstring.NullArg")
+CHECKER("alpha.unix.cstring.OutOfBounds", CStringOutOfBounds, "Check for out-of-bounds access in string functions", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.unix.cstring.OutOfBounds")
+CHECKER("unix.cstring.BadSizeArg", CStringSyntaxChecker, "Check the size argument passed into C string functions for common erroneous patterns", "https://clang-analyzer.llvm.org/available_checks.html#unix.cstring.BadSizeArg")
+CHECKER("cplusplus.SelfAssignment", CXXSelfAssignmentChecker, "Checks C++ copy and move assignment operators for self assignment", "")
+CHECKER("core.CallAndMessage", CallAndMessageChecker, "Check for logical errors for function calls and Objective-C message expressions (e.g., uninitialized arguments, null function pointers)", "https://clang-analyzer.llvm.org/available_checks.html#core.CallAndMessage")
+CHECKER("alpha.core.CallAndMessageUnInitRefArg", CallAndMessageUnInitRefArg, "Check for logical errors for function calls and Objective-C message expressions (e.g., uninitialized arguments, null function pointers, and pointer to undefined variables)", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.core.CallAndMessageUnInitRefArg")
+CHECKER("debug.DumpCalls", CallDumper, "Print calls as they are traversed by the engine", "")
+CHECKER("debug.DumpCallGraph", CallGraphDumper, "Display Call Graph", "")
+CHECKER("debug.ViewCallGraph", CallGraphViewer, "View Call Graph using GraphViz", "")
+CHECKER("alpha.core.CastSize", CastSizeChecker, "Check when casting a malloc'ed type T, whether the size is a multiple of the size of T", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.core.CastSize")
+CHECKER("alpha.core.CastToStruct", CastToStructChecker, "Check for cast from non-struct pointer to struct pointer", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.core.CastToStruct")
+CHECKER("alpha.unix.Chroot", ChrootChecker, "Check improper use of chroot", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.unix.Chroot")
+CHECKER("osx.cocoa.ClassRelease", ClassReleaseChecker, "Check for sending 'retain', 'release', or 'autorelease' directly to a Class", "https://clang-analyzer.llvm.org/available_checks.html#osx.cocoa.ClassRelease")
+CHECKER("alpha.clone.CloneChecker", CloneChecker, "Reports similar pieces of code.", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.clone.CloneChecker")
+CHECKER("debug.ConfigDumper", ConfigDumper, "Dump config table", "")
+CHECKER("alpha.core.Conversion", ConversionChecker, "Loss of sign/precision in implicit conversions", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.core.Conversion")
+CHECKER("valist.CopyToSelf", CopyToSelfChecker, "Check for va_lists which are copied onto itself.", "")
+CHECKER("deadcode.DeadStores", DeadStoresChecker, "Check for values stored to variables that are never read afterwards", "https://clang-analyzer.llvm.org/available_checks.html#deadcode.DeadStores")
+CHECKER("alpha.cplusplus.DeleteWithNonVirtualDtor", DeleteWithNonVirtualDtorChecker, "Reports destructions of polymorphic objects with a non-virtual destructor in their base class", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.cplusplus.DeleteWithNonVirtualDtor")
+CHECKER("security.insecureAPI.DeprecatedOrUnsafeBufferHandling", DeprecatedOrUnsafeBufferHandling, "Warn on uses of unsecure or deprecated buffer manipulating functions", "https://clang-analyzer.llvm.org/available_checks.html#security.insecureAPI.DeprecatedOrUnsafeBufferHandling")
+CHECKER("core.NullDereference", DereferenceChecker, "Check for dereferences of null pointers", "https://clang-analyzer.llvm.org/available_checks.html#core.NullDereference")
+CHECKER("alpha.osx.cocoa.DirectIvarAssignment", DirectIvarAssignment, "Check for direct assignments to instance variables", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.osx.cocoa.DirectIvarAssignment")
+CHECKER("alpha.osx.cocoa.DirectIvarAssignmentForAnnotatedFunctions", DirectIvarAssignmentForAnnotatedFunctions, "Check for direct assignments to instance variables in the methods annotated with objc_no_direct_instance_variable_assignment", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.osx.cocoa.DirectIvarAssignmentForAnnotatedFunctions")
+CHECKER("core.DivideZero", DivZeroChecker, "Check for division by zero", "https://clang-analyzer.llvm.org/available_checks.html#core.DivideZero")
+CHECKER("debug.DumpDominators", DominatorsTreeDumper, "Print the dominance tree for a given CFG", "")
+CHECKER("unix.DynamicMemoryModeling", DynamicMemoryModeling, "The base of several malloc() related checkers. On it's own it emits no reports, but adds valuable information to the analysis when enabled.", "")
+CHECKER("alpha.core.DynamicTypeChecker", DynamicTypeChecker, "Check for cases where the dynamic and the static type of an object are unrelated.", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.core.DynamicTypeChecker")
+CHECKER("core.DynamicTypePropagation", DynamicTypePropagation, "Generate dynamic type information", "")
+CHECKER("optin.osx.cocoa.localizability.EmptyLocalizationContextChecker", EmptyLocalizationContextChecker, "Check that NSLocalizedString macros include a comment for context", "https://clang-analyzer.llvm.org/available_checks.html#optin.osx.cocoa.localizability.EmptyLocalizationContextChecker")
+CHECKER("alpha.cplusplus.EnumCastOutOfRange", EnumCastOutOfRangeChecker, "Check integer to enumeration casts for out of range values", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.cplusplus.EnumCastOutOfRange")
+CHECKER("debug.ViewExplodedGraph", ExplodedGraphViewer, "View Exploded Graphs using GraphViz", "")
+CHECKER("debug.ExprInspection", ExprInspectionChecker, "Check the analyzer's understanding of expressions", "")
+CHECKER("alpha.core.FixedAddr", FixedAddressChecker, "Check for assignment of a fixed address to a pointer", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.core.FixedAddr")
+CHECKER("security.FloatLoopCounter", FloatLoopCounter, "Warn on using a floating point value as a loop counter (CERT: FLP30-C, FLP30-CPP)", "https://clang-analyzer.llvm.org/available_checks.html#security.FloatLoopCounter")
+CHECKER("optin.performance.GCDAntipattern", GCDAntipattern, "Check for performance anti-patterns when using Grand Central Dispatch", "")
+CHECKER("apiModeling.google.GTest", GTestChecker, "Model gtest assertion APIs", "")
+CHECKER("alpha.security.taint.TaintPropagation", GenericTaintChecker, "Generate taint information used by other checkers", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.security.taint.TaintPropagation")
+CHECKER("alpha.core.IdenticalExpr", IdenticalExprChecker, "Warn about unintended use of identical expressions in operators", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.core.IdenticalExpr")
+CHECKER("cplusplus.InnerPointer", InnerPointerChecker, "Check for inner pointers of C++ containers used after re/deallocation", "")
+CHECKER("alpha.osx.cocoa.InstanceVariableInvalidation", InstanceVariableInvalidation, "Check that the invalidatable instance variables are invalidated in the methods annotated with objc_instance_variable_invalidator", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.osx.cocoa.InstanceVariableInvalidation")
+CHECKER("alpha.cplusplus.InvalidatedIterator", InvalidatedIteratorChecker, "Check for use of invalidated iterators", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.cplusplus.InvalidatedIterator")
+CHECKER("alpha.cplusplus.IteratorModeling", IteratorModeling, "Models iterators of C++ containers", "")
+CHECKER("alpha.cplusplus.IteratorRange", IteratorRangeChecker, "Check for iterators used outside their valid ranges", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.cplusplus.IteratorRange")
+CHECKER("alpha.osx.cocoa.IvarInvalidationModeling", IvarInvalidationModeling, "Gathers information for annotation driven invalidation checking for classes that contains a method annotated with 'objc_instance_variable_invalidator'", "")
+CHECKER("alpha.llvm.Conventions", LLVMConventionsChecker, "Check code for LLVM codebase conventions", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.llvm.Conventions")
+CHECKER("debug.DumpLiveStmts", LiveStatementsDumper, "Print results of live statement analysis", "")
+CHECKER("debug.DumpLiveVars", LiveVariablesDumper, "Print results of live variable analysis", "")
+CHECKER("optin.mpi.MPI-Checker", MPIChecker, "Checks MPI code", "https://clang-analyzer.llvm.org/available_checks.html#optin.mpi.MPI-Checker")
+CHECKER("osx.SecKeychainAPI", MacOSKeychainAPIChecker, "Check for proper uses of Secure Keychain APIs", "https://clang-analyzer.llvm.org/available_checks.html#osx.SecKeychainAPI")
+CHECKER("osx.API", MacOSXAPIChecker, "Check for proper uses of various Apple APIs", "https://clang-analyzer.llvm.org/available_checks.html#osx.API")
+CHECKER("unix.Malloc", MallocChecker, "Check for memory leaks, double free, and use-after-free problems. Traces memory managed by malloc()/free().", "https://clang-analyzer.llvm.org/available_checks.html#unix.Malloc")
+CHECKER("alpha.security.MallocOverflow", MallocOverflowSecurityChecker, "Check for overflows in the arguments to malloc()", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.security.MallocOverflow")
+CHECKER("unix.MallocSizeof", MallocSizeofChecker, "Check for dubious malloc arguments involving sizeof", "https://clang-analyzer.llvm.org/available_checks.html#unix.MallocSizeof")
+CHECKER("unix.MismatchedDeallocator", MismatchedDeallocatorChecker, "Check for mismatched deallocators.", "https://clang-analyzer.llvm.org/available_checks.html#unix.MismatchedDeallocator")
+CHECKER("alpha.cplusplus.MismatchedIterator", MismatchedIteratorChecker, "Check for use of iterators of different containers where iterators of the same container are expected", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.cplusplus.MismatchedIterator")
+CHECKER("alpha.osx.cocoa.MissingInvalidationMethod", MissingInvalidationMethod, "Check that the invalidation methods are present in classes that contain invalidatable instance variables", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.osx.cocoa.MissingInvalidationMethod")
+CHECKER("alpha.security.MmapWriteExec", MmapWriteExecChecker, "Warn on mmap() calls that are both writable and executable", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.security.MmapWriteExec")
+CHECKER("cplusplus.Move", MoveChecker, "Find use-after-move bugs in C++", "https://clang-analyzer.llvm.org/available_checks.html#cplusplus.Move")
+CHECKER("osx.cocoa.NSAutoreleasePool", NSAutoreleasePoolChecker, "Warn for suboptimal uses of NSAutoreleasePool in Objective-C GC mode", "https://clang-analyzer.llvm.org/available_checks.html#osx.cocoa.NSAutoreleasePool")
+CHECKER("osx.cocoa.NSError", NSErrorChecker, "Check usage of NSError** parameters", "https://clang-analyzer.llvm.org/available_checks.html#osx.cocoa.NSError")
+CHECKER("osx.NSOrCFErrorDerefChecker", NSOrCFErrorDerefChecker, "Implementation checker for NSErrorChecker and CFErrorChecker", "")
+CHECKER("cplusplus.NewDelete", NewDeleteChecker, "Check for double-free and use-after-free problems. Traces memory managed by new/delete.", "https://clang-analyzer.llvm.org/available_checks.html#cplusplus.NewDelete")
+CHECKER("cplusplus.NewDeleteLeaks", NewDeleteLeaksChecker, "Check for memory leaks. Traces memory managed by new/delete.", "https://clang-analyzer.llvm.org/available_checks.html#cplusplus.NewDeleteLeaks")
+CHECKER("osx.cocoa.NilArg", NilArgChecker, "Check for prohibited nil arguments to ObjC method calls", "https://clang-analyzer.llvm.org/available_checks.html#osx.cocoa.NilArg")
+CHECKER("core.builtin.NoReturnFunctions", NoReturnFunctionChecker, "Evaluate \"panic\" functions that are known to not return to the caller", "")
+CHECKER("optin.osx.cocoa.localizability.NonLocalizedStringChecker", NonLocalizedStringChecker, "Warns about uses of non-localized NSStrings passed to UI methods expecting localized NSStrings", "https://clang-analyzer.llvm.org/available_checks.html#optin.osx.cocoa.localizability.NonLocalizedStringChecker")
+CHECKER("core.NonNullParamChecker", NonNullParamChecker, "Check for null pointers passed as arguments to a function whose arguments are references or marked with the 'nonnull' attribute", "https://clang-analyzer.llvm.org/available_checks.html#core.NonNullParamChecker")
+CHECKER("core.NonnilStringConstants", NonnullGlobalConstantsChecker, "Assume that const string-like globals are non-null", "")
+CHECKER("nullability.NullPassedToNonnull", NullPassedToNonnullChecker, "Warns when a null pointer is passed to a pointer which has a _Nonnull type.", "https://clang-analyzer.llvm.org/available_checks.html#nullability.NullPassedToNonnull")
+CHECKER("nullability.NullReturnedFromNonnull", NullReturnedFromNonnullChecker, "Warns when a null pointer is returned from a function that has _Nonnull return type.", "https://clang-analyzer.llvm.org/available_checks.html#nullability.NullReturnedFromNonnull")
+CHECKER("nullability.NullabilityBase", NullabilityBase, "Stores information during the analysis about nullability.", "")
+CHECKER("nullability.NullableDereferenced", NullableDereferencedChecker, "Warns when a nullable pointer is dereferenced.", "https://clang-analyzer.llvm.org/available_checks.html#nullability.NullableDereferenced")
+CHECKER("nullability.NullablePassedToNonnull", NullablePassedToNonnullChecker, "Warns when a nullable pointer is passed to a pointer which has a _Nonnull type.", "https://clang-analyzer.llvm.org/available_checks.html#nullability.NullablePassedToNonnull")
+CHECKER("nullability.NullableReturnedFromNonnull", NullableReturnedFromNonnullChecker, "Warns when a nullable pointer is returned from a function that has _Nonnull return type.", "")
+CHECKER("osx.NumberObjectConversion", NumberObjectConversionChecker, "Check for erroneous conversions of objects representing numbers into numbers", "")
+CHECKER("optin.osx.OSObjectCStyleCast", OSObjectCStyleCast, "Checker for C-style casts of OSObjects", "")
+CHECKER("osx.OSObjectRetainCount", OSObjectRetainCountChecker, "Check for leaks and improper reference count management for OSObject", "")
+CHECKER("osx.cocoa.AtSync", ObjCAtSyncChecker, "Check for nil pointers used as mutexes for @synchronized", "https://clang-analyzer.llvm.org/available_checks.html#osx.cocoa.AtSync")
+CHECKER("osx.coreFoundation.containers.PointerSizedValues", ObjCContainersASTChecker, "Warns if 'CFArray', 'CFDictionary', 'CFSet' are created with non-pointer-size values", "https://clang-analyzer.llvm.org/available_checks.html#osx.coreFoundation.containers.PointerSizedValues")
+CHECKER("osx.coreFoundation.containers.OutOfBounds", ObjCContainersChecker, "Checks for index out-of-bounds when using 'CFArray' API", "https://clang-analyzer.llvm.org/available_checks.html#osx.coreFoundation.containers.OutOfBounds")
+CHECKER("osx.cocoa.Dealloc", ObjCDeallocChecker, "Warn about Objective-C classes that lack a correct implementation of -dealloc", "https://clang-analyzer.llvm.org/available_checks.html#osx.cocoa.Dealloc")
+CHECKER("osx.cocoa.ObjCGenerics", ObjCGenericsChecker, "Check for type errors when using Objective-C generics", "https://clang-analyzer.llvm.org/available_checks.html#osx.cocoa.ObjCGenerics")
+CHECKER("osx.cocoa.Loops", ObjCLoopChecker, "Improved modeling of loops using Cocoa collection types", "")
+CHECKER("osx.cocoa.IncompatibleMethodTypes", ObjCMethSigsChecker, "Warn about Objective-C method signatures with type incompatibilities", "https://clang-analyzer.llvm.org/available_checks.html#osx.cocoa.IncompatibleMethodTypes")
+CHECKER("osx.cocoa.NonNilReturnValue", ObjCNonNilReturnValueChecker, "Model the APIs that are guaranteed to return a non-nil value", "")
+CHECKER("osx.ObjCProperty", ObjCPropertyChecker, "Check for proper uses of Objective-C properties", "")
+CHECKER("osx.cocoa.SelfInit", ObjCSelfInitChecker, "Check that 'self' is properly initialized inside an initializer method", "https://clang-analyzer.llvm.org/available_checks.html#osx.cocoa.SelfInit")
+CHECKER("osx.cocoa.MissingSuperCall", ObjCSuperCallChecker, "Warn about Objective-C methods that lack a necessary call to super", "")
+CHECKER("osx.cocoa.SuperDealloc", ObjCSuperDeallocChecker, "Warn about improper use of '[super dealloc]' in Objective-C", "https://clang-analyzer.llvm.org/available_checks.html#osx.cocoa.SuperDealloc")
+CHECKER("osx.cocoa.UnusedIvars", ObjCUnusedIvarsChecker, "Warn about private ivars that are never used", "https://clang-analyzer.llvm.org/available_checks.html#osx.cocoa.UnusedIvars")
+CHECKER("optin.performance.Padding", PaddingChecker, "Check for excessively padded structs.", "")
+CHECKER("alpha.osx.cocoa.localizability.PluralMisuseChecker", PluralMisuseChecker, "Warns against using one vs. many plural pattern in code when generating localized strings.", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.osx.cocoa.localizability.PluralMisuseChecker")
+CHECKER("alpha.core.PointerArithm", PointerArithChecker, "Check for pointer arithmetic on locations other than array elements", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.core.PointerArithm")
+CHECKER("alpha.core.PointerSub", PointerSubChecker, "Check for pointer subtractions on two pointers pointing to different memory chunks", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.core.PointerSub")
+CHECKER("alpha.unix.PthreadLock", PthreadLockChecker, "Simple lock -> unlock checker", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.unix.PthreadLock")
+CHECKER("osx.cocoa.RetainCountBase", RetainCountBase, "Common base of various retain count related checkers", "")
+CHECKER("osx.cocoa.RetainCount", RetainCountChecker, "Check for leaks and improper reference count management", "https://clang-analyzer.llvm.org/available_checks.html#osx.cocoa.RetainCount")
+CHECKER("alpha.security.ReturnPtrRange", ReturnPointerRangeChecker, "Check for an out-of-bound pointer being returned to callers", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.security.ReturnPtrRange")
+CHECKER("core.uninitialized.UndefReturn", ReturnUndefChecker, "Check for uninitialized values being returned to the caller", "https://clang-analyzer.llvm.org/available_checks.html#core.uninitialized.UndefReturn")
+CHECKER("osx.cocoa.RunLoopAutoreleaseLeak", RunLoopAutoreleaseLeakChecker, "Check for leaked memory in autorelease pools that will never be drained", "")
+CHECKER("security.insecureAPI.SecuritySyntaxChecker", SecuritySyntaxChecker, "Base of various security function related checkers", "")
+CHECKER("alpha.unix.SimpleStream", SimpleStreamChecker, "Check for misuses of stream APIs", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.unix.SimpleStream")
+CHECKER("alpha.core.SizeofPtr", SizeofPointerChecker, "Warn about unintended use of sizeof() on pointer expressions", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.core.SizeofPtr")
+CHECKER("alpha.core.StackAddressAsyncEscape", StackAddrAsyncEscapeChecker, "Check that addresses to stack memory do not escape the function", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.core.StackAddressAsyncEscape")
+CHECKER("core.StackAddrEscapeBase", StackAddrEscapeBase, "Generate information about stack address escapes.", "")
+CHECKER("core.StackAddressEscape", StackAddrEscapeChecker, "Check that addresses to stack memory do not escape the function", "https://clang-analyzer.llvm.org/available_checks.html#core.StackAddressEscape")
+CHECKER("apiModeling.StdCLibraryFunctions", StdCLibraryFunctionsChecker, "Improve modeling of the C standard library functions", "")
+CHECKER("alpha.unix.Stream", StreamChecker, "Check stream handling functions", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.unix.Stream")
+CHECKER("debug.TaintTest", TaintTesterChecker, "Mark tainted symbols as such.", "")
+CHECKER("alpha.core.TestAfterDivZero", TestAfterDivZeroChecker, "Check for division by variable that is later compared against 0. Either the comparison is useless or there is division by zero.", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.core.TestAfterDivZero")
+CHECKER("debug.DumpTraversal", TraversalDumper, "Print branch conditions as they are traversed by the engine", "")
+CHECKER("apiModeling.TrustNonnull", TrustNonnullChecker, "Trust that returns from framework methods annotated with _Nonnull are not null", "")
+CHECKER("security.insecureAPI.UncheckedReturn", UncheckedReturn, "Warn on uses of functions whose return values must be always checked", "https://clang-analyzer.llvm.org/available_checks.html#security.insecureAPI.UncheckedReturn")
+CHECKER("core.uninitialized.Branch", UndefBranchChecker, "Check for uninitialized values used as branch conditions", "https://clang-analyzer.llvm.org/available_checks.html#core.uninitialized.Branch")
+CHECKER("core.uninitialized.CapturedBlockVariable", UndefCapturedBlockVarChecker, "Check for blocks that capture uninitialized values", "")
+CHECKER("core.UndefinedBinaryOperatorResult", UndefResultChecker, "Check for undefined results of binary operators", "https://clang-analyzer.llvm.org/available_checks.html#core.UndefinedBinaryOperatorResult")
+CHECKER("core.uninitialized.ArraySubscript", UndefinedArraySubscriptChecker, "Check for uninitialized values used as array subscripts", "https://clang-analyzer.llvm.org/available_checks.html#core.uninitialized.ArraySubscript")
+CHECKER("core.uninitialized.Assign", UndefinedAssignmentChecker, "Check for assigning uninitialized values", "https://clang-analyzer.llvm.org/available_checks.html#core.uninitialized.Assign")
+CHECKER("valist.Uninitialized", UninitializedChecker, "Check for usages of uninitialized (or already released) va_lists.", "")
+CHECKER("alpha.cplusplus.UninitializedObject", UninitializedObjectChecker, "Reports uninitialized fields after object construction", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.cplusplus.UninitializedObject")
+CHECKER("unix.API", UnixAPIMisuseChecker, "Check calls to various UNIX/Posix functions", "https://clang-analyzer.llvm.org/available_checks.html#unix.API")
+CHECKER("optin.portability.UnixAPI", UnixAPIPortabilityChecker, "Finds implementation-defined behavior in UNIX/Posix functions", "")
+CHECKER("alpha.deadcode.UnreachableCode", UnreachableCodeChecker, "Check unreachable code", "https://clang-analyzer.llvm.org/alpha_checks.html#alpha.deadcode.UnreachableCode")
+CHECKER("valist.Unterminated", UnterminatedChecker, "Check for va_lists which are not released by a va_end call.", "")
+CHECKER("core.VLASize", VLASizeChecker, "Check for declarations of VLA of undefined or zero size", "https://clang-analyzer.llvm.org/available_checks.html#core.VLASize")
+CHECKER("valist.ValistBase", ValistBase, "Gathers information about va_lists.", "")
+CHECKER("osx.cocoa.VariadicMethodTypes", VariadicMethodTypeChecker, "Check for passing non-Objective-C types to variadic collection initialization methods that expect only Objective-C types", "https://clang-analyzer.llvm.org/available_checks.html#osx.cocoa.VariadicMethodTypes")
+CHECKER("unix.Vfork", VforkChecker, "Check for proper usage of vfork", "https://clang-analyzer.llvm.org/available_checks.html#unix.Vfork")
+CHECKER("optin.cplusplus.VirtualCall", VirtualCallChecker, "Check virtual function calls during construction or destruction", "https://clang-analyzer.llvm.org/available_checks.html#optin.cplusplus.VirtualCall")
+CHECKER("security.insecureAPI.bcmp", bcmp, "Warn on uses of the 'bcmp' function", "https://clang-analyzer.llvm.org/available_checks.html#security.insecureAPI.bcmp")
+CHECKER("security.insecureAPI.bcopy", bcopy, "Warn on uses of the 'bcopy' function", "https://clang-analyzer.llvm.org/available_checks.html#security.insecureAPI.bcopy")
+CHECKER("security.insecureAPI.bzero", bzero, "Warn on uses of the 'bzero' function", "https://clang-analyzer.llvm.org/available_checks.html#security.insecureAPI.bzero")
+CHECKER("security.insecureAPI.getpw", getpw, "Warn on uses of the 'getpw' function", "https://clang-analyzer.llvm.org/available_checks.html#security.insecureAPI.getpw")
+CHECKER("security.insecureAPI.gets", gets, "Warn on uses of the 'gets' function", "https://clang-analyzer.llvm.org/available_checks.html#security.insecureAPI.gets")
+CHECKER("security.insecureAPI.mkstemp", mkstemp, "Warn when 'mkstemp' is passed fewer than 6 X's in the format string", "https://clang-analyzer.llvm.org/available_checks.html#security.insecureAPI.mkstemp")
+CHECKER("security.insecureAPI.mktemp", mktemp, "Warn on uses of the 'mktemp' function", "https://clang-analyzer.llvm.org/available_checks.html#security.insecureAPI.mktemp")
+CHECKER("security.insecureAPI.rand", rand, "Warn on uses of the 'rand', 'random', and related functions", "https://clang-analyzer.llvm.org/available_checks.html#security.insecureAPI.rand")
+CHECKER("security.insecureAPI.strcpy", strcpy, "Warn on uses of the 'strcpy' and 'strcat' functions", "https://clang-analyzer.llvm.org/available_checks.html#security.insecureAPI.strcpy")
+CHECKER("security.insecureAPI.vfork", vfork, "Warn on uses of the 'vfork' function", "https://clang-analyzer.llvm.org/available_checks.html#security.insecureAPI.vfork")
+
#endif // GET_CHECKERS
-#ifdef GET_MEMBER_ARRAYS
-static const short SubPackageArray0[] = { 3, 17, 24, 34, 42, 26, 1, -1 };
-static const short SubPackageArray1[] = { 2, -1 };
-static const short CheckerArray2[] = { 28, -1 };
-static const short SubPackageArray3[] = { 4, 6, 7, 8, 11, 10, 12, 13, 14, 5, 16, 9, 15, -1 };
-static const short CheckerArray4[] = { 6, -1 };
-static const short CheckerArray5[] = { 20, -1 };
-static const short CheckerArray6[] = { 24, -1 };
-static const short CheckerArray7[] = { 25, -1 };
-static const short CheckerArray8[] = { 30, -1 };
-static const short CheckerArray9[] = { 39, -1 };
-static const short CheckerArray10[] = { 44, -1 };
-static const short CheckerArray11[] = { 49, -1 };
-static const short CheckerArray12[] = { 97, -1 };
-static const short CheckerArray13[] = { 98, -1 };
-static const short CheckerArray14[] = { 105, -1 };
-static const short CheckerArray15[] = { 106, -1 };
-static const short CheckerArray16[] = { 111, -1 };
-static const short SubPackageArray17[] = { 18, 19, 20, 21, 22, 23, -1 };
-static const short CheckerArray18[] = { 33, -1 };
-static const short CheckerArray19[] = { 52, -1 };
-static const short CheckerArray20[] = { 53, -1 };
-static const short CheckerArray21[] = { 63, -1 };
-static const short CheckerArray22[] = { 65, -1 };
-static const short CheckerArray23[] = { 121, -1 };
-static const short SubPackageArray24[] = { 25, -1 };
-static const short CheckerArray25[] = { 124, -1 };
-static const short SubPackageArray26[] = { 27, -1 };
-static const short SubPackageArray27[] = { 32, 30, 31, 28, 29, -1 };
-static const short CheckerArray28[] = { 35, -1 };
-static const short CheckerArray29[] = { 36, -1 };
-static const short CheckerArray30[] = { 51, -1 };
-static const short CheckerArray31[] = { 64, -1 };
-static const short SubPackageArray32[] = { 33, -1 };
-static const short CheckerArray33[] = { 96, -1 };
-static const short SubPackageArray34[] = { 40, 35, 36, 39, 37, 38, -1 };
-static const short CheckerArray35[] = { 2, -1 };
-static const short CheckerArray36[] = { 3, -1 };
-static const short CheckerArray37[] = { 60, -1 };
-static const short CheckerArray38[] = { 66, -1 };
-static const short CheckerArray39[] = { 101, -1 };
-static const short SubPackageArray40[] = { 41, -1 };
-static const short CheckerArray41[] = { 48, -1 };
-static const short SubPackageArray42[] = { 48, 44, 45, 47, 46, 43, -1 };
-static const short CheckerArray43[] = { 5, -1 };
-static const short CheckerArray44[] = { 26, -1 };
-static const short CheckerArray45[] = { 99, -1 };
-static const short CheckerArray46[] = { 104, -1 };
-static const short CheckerArray47[] = { 109, -1 };
-static const short SubPackageArray48[] = { 51, 49, 50, -1 };
-static const short CheckerArray49[] = { 13, -1 };
-static const short CheckerArray50[] = { 14, -1 };
-static const short CheckerArray51[] = { 16, -1 };
-static const short SubPackageArray52[] = { 55, 53, 54, -1 };
-static const short CheckerArray53[] = { 108, -1 };
-static const short CheckerArray54[] = { 113, -1 };
-static const short SubPackageArray55[] = { 56, -1 };
-static const short CheckerArray56[] = { 47, -1 };
-static const short SubPackageArray57[] = { 67, 70, 63, 58, 61, 66, 59, 65, 64, 60, 62, -1 };
-static const short CheckerArray58[] = { 19, -1 };
-static const short CheckerArray59[] = { 37, -1 };
-static const short CheckerArray60[] = { 40, -1 };
-static const short CheckerArray61[] = { 74, -1 };
-static const short CheckerArray62[] = { 75, -1 };
-static const short CheckerArray63[] = { 34, -1 };
-static const short CheckerArray64[] = { 107, -1 };
-static const short CheckerArray65[] = { 117, -1 };
-static const short CheckerArray66[] = { 126, -1 };
-static const short SubPackageArray67[] = { 69, 68, -1 };
-static const short CheckerArray68[] = { 7, -1 };
-static const short CheckerArray69[] = { 72, -1 };
-static const short SubPackageArray70[] = { 71, 72, 73, 74, 75, -1 };
-static const short CheckerArray71[] = { 118, -1 };
-static const short CheckerArray72[] = { 119, -1 };
-static const short CheckerArray73[] = { 115, -1 };
-static const short CheckerArray74[] = { 116, -1 };
-static const short CheckerArray75[] = { 102, -1 };
-static const short SubPackageArray76[] = { 77, 78, 79, 80, -1 };
-static const short CheckerArray77[] = { 50, -1 };
-static const short CheckerArray78[] = { 69, -1 };
-static const short CheckerArray79[] = { 70, -1 };
-static const short CheckerArray80[] = { 18, -1 };
-static const short SubPackageArray81[] = { 82, -1 };
-static const short CheckerArray82[] = { 32, -1 };
-static const short SubPackageArray83[] = { 84, 89, 90, 95, 86, 96, 87, 85, 91, 88, 93, 94, 92, 97, -1 };
-static const short CheckerArray84[] = { 0, -1 };
-static const short CheckerArray85[] = { 29, -1 };
-static const short CheckerArray86[] = { 9, -1 };
-static const short CheckerArray87[] = { 22, -1 };
-static const short CheckerArray88[] = { 21, -1 };
-static const short CheckerArray89[] = { 38, -1 };
-static const short CheckerArray90[] = { 55, -1 };
-static const short CheckerArray91[] = { 112, -1 };
-static const short CheckerArray92[] = { 43, -1 };
-static const short CheckerArray93[] = { 1, -1 };
-static const short CheckerArray94[] = { 110, -1 };
-static const short CheckerArray95[] = { 10, -1 };
-static const short CheckerArray96[] = { 23, -1 };
-static const short CheckerArray97[] = { 42, -1 };
-static const short SubPackageArray98[] = { 99, -1 };
-static const short CheckerArray99[] = { 54, -1 };
-static const short SubPackageArray100[] = { 101, 102, 103, 104, 105, -1 };
-static const short CheckerArray101[] = { 76, -1 };
-static const short CheckerArray102[] = { 77, -1 };
-static const short CheckerArray103[] = { 78, -1 };
-static const short CheckerArray104[] = { 79, -1 };
-static const short CheckerArray105[] = { 80, -1 };
-static const short SubPackageArray106[] = { 119, 107, 116, 111, 109, -1 };
-static const short SubPackageArray107[] = { 108, -1 };
-static const short CheckerArray108[] = { 129, -1 };
-static const short SubPackageArray109[] = { 110, -1 };
-static const short CheckerArray110[] = { 56, -1 };
-static const short SubPackageArray111[] = { 112, -1 };
-static const short SubPackageArray112[] = { 113, -1 };
-static const short SubPackageArray113[] = { 115, 114, -1 };
-static const short CheckerArray114[] = { 41, -1 };
-static const short CheckerArray115[] = { 73, -1 };
-static const short SubPackageArray116[] = { 118, 117, -1 };
-static const short CheckerArray117[] = { 46, -1 };
-static const short CheckerArray118[] = { 95, -1 };
-static const short SubPackageArray119[] = { 120, -1 };
-static const short CheckerArray120[] = { 123, -1 };
-static const short SubPackageArray121[] = { 126, 145, 123, 122, 125, 124, -1 };
-static const short CheckerArray122[] = { 58, -1 };
-static const short CheckerArray123[] = { 81, -1 };
-static const short CheckerArray124[] = { 90, -1 };
-static const short CheckerArray125[] = { 57, -1 };
-static const short SubPackageArray126[] = { 140, 127, 136, 129, 144, 134, 131, 143, 141, 132, 137, 133, 135, 139, 138, 130, 142, 128, -1 };
-static const short CheckerArray127[] = { 82, -1 };
-static const short CheckerArray128[] = { 4, -1 };
-static const short CheckerArray129[] = { 27, -1 };
-static const short CheckerArray130[] = { 85, -1 };
-static const short CheckerArray131[] = { 88, -1 };
-static const short CheckerArray132[] = { 87, -1 };
-static const short CheckerArray133[] = { 92, -1 };
-static const short CheckerArray134[] = { 67, -1 };
-static const short CheckerArray135[] = { 68, -1 };
-static const short CheckerArray136[] = { 71, -1 };
-static const short CheckerArray137[] = { 89, -1 };
-static const short CheckerArray138[] = { 86, -1 };
-static const short CheckerArray139[] = { 100, -1 };
-static const short CheckerArray140[] = { 103, -1 };
-static const short CheckerArray141[] = { 91, -1 };
-static const short CheckerArray142[] = { 93, -1 };
-static const short CheckerArray143[] = { 94, -1 };
-static const short CheckerArray144[] = { 127, -1 };
-static const short SubPackageArray145[] = { 149, 147, 148, 146, -1 };
-static const short CheckerArray146[] = { 8, -1 };
-static const short CheckerArray147[] = { 11, -1 };
-static const short CheckerArray148[] = { 12, -1 };
-static const short SubPackageArray149[] = { 151, 150, -1 };
-static const short CheckerArray150[] = { 84, -1 };
-static const short CheckerArray151[] = { 83, -1 };
-static const short SubPackageArray152[] = { 154, 153, -1 };
-static const short CheckerArray153[] = { 45, -1 };
-static const short SubPackageArray154[] = { 156, 157, 158, 160, 159, 162, 161, 163, 164, 165, 155, -1 };
-static const short CheckerArray155[] = { 114, -1 };
-static const short CheckerArray156[] = { 130, -1 };
-static const short CheckerArray157[] = { 131, -1 };
-static const short CheckerArray158[] = { 132, -1 };
-static const short CheckerArray159[] = { 133, -1 };
-static const short CheckerArray160[] = { 134, -1 };
-static const short CheckerArray161[] = { 135, -1 };
-static const short CheckerArray162[] = { 136, -1 };
-static const short CheckerArray163[] = { 137, -1 };
-static const short CheckerArray164[] = { 138, -1 };
-static const short CheckerArray165[] = { 139, -1 };
-static const short SubPackageArray166[] = { 172, 167, 168, 169, 170, 171, -1 };
-static const short CheckerArray167[] = { 122, -1 };
-static const short CheckerArray168[] = { 59, -1 };
-static const short CheckerArray169[] = { 61, -1 };
-static const short CheckerArray170[] = { 62, -1 };
-static const short CheckerArray171[] = { 128, -1 };
-static const short SubPackageArray172[] = { 174, 173, -1 };
-static const short CheckerArray173[] = { 17, -1 };
-static const short CheckerArray174[] = { 15, -1 };
-static const short SubPackageArray175[] = { 177, 178, 176, -1 };
-static const short CheckerArray176[] = { 31, -1 };
-static const short CheckerArray177[] = { 120, -1 };
-static const short CheckerArray178[] = { 125, -1 };
-#endif // GET_MEMBER_ARRAYS
+#ifdef GET_CHECKER_DEPENDENCIES
+CHECKER_DEPENDENCY("osx.coreFoundation.CFError", "osx.NSOrCFErrorDerefChecker")
+CHECKER_DEPENDENCY("alpha.unix.cstring.BufferOverlap", "unix.cstring.CStringModeling")
+CHECKER_DEPENDENCY("alpha.unix.cstring.NotNullTerminated", "unix.cstring.CStringModeling")
+CHECKER_DEPENDENCY("unix.cstring.NullArg", "unix.cstring.CStringModeling")
+CHECKER_DEPENDENCY("alpha.unix.cstring.OutOfBounds", "unix.cstring.CStringModeling")
+CHECKER_DEPENDENCY("unix.cstring.BadSizeArg", "unix.cstring.CStringModeling")
+CHECKER_DEPENDENCY("alpha.core.CallAndMessageUnInitRefArg", "core.CallAndMessage")
+CHECKER_DEPENDENCY("valist.CopyToSelf", "valist.ValistBase")
+CHECKER_DEPENDENCY("security.insecureAPI.DeprecatedOrUnsafeBufferHandling", "security.insecureAPI.SecuritySyntaxChecker")
+CHECKER_DEPENDENCY("alpha.osx.cocoa.DirectIvarAssignmentForAnnotatedFunctions", "alpha.osx.cocoa.DirectIvarAssignment")
+CHECKER_DEPENDENCY("unix.DynamicMemoryModeling", "unix.cstring.CStringModeling")
+CHECKER_DEPENDENCY("security.FloatLoopCounter", "security.insecureAPI.SecuritySyntaxChecker")
+CHECKER_DEPENDENCY("cplusplus.InnerPointer", "unix.DynamicMemoryModeling")
+CHECKER_DEPENDENCY("alpha.osx.cocoa.InstanceVariableInvalidation", "alpha.osx.cocoa.IvarInvalidationModeling")
+CHECKER_DEPENDENCY("alpha.cplusplus.InvalidatedIterator", "alpha.cplusplus.IteratorModeling")
+CHECKER_DEPENDENCY("alpha.cplusplus.IteratorRange", "alpha.cplusplus.IteratorModeling")
+CHECKER_DEPENDENCY("unix.Malloc", "unix.DynamicMemoryModeling")
+CHECKER_DEPENDENCY("unix.MismatchedDeallocator", "unix.DynamicMemoryModeling")
+CHECKER_DEPENDENCY("alpha.cplusplus.MismatchedIterator", "alpha.cplusplus.IteratorModeling")
+CHECKER_DEPENDENCY("alpha.osx.cocoa.MissingInvalidationMethod", "alpha.osx.cocoa.IvarInvalidationModeling")
+CHECKER_DEPENDENCY("osx.cocoa.NSError", "osx.NSOrCFErrorDerefChecker")
+CHECKER_DEPENDENCY("cplusplus.NewDelete", "unix.DynamicMemoryModeling")
+CHECKER_DEPENDENCY("cplusplus.NewDeleteLeaks", "cplusplus.NewDelete")
+CHECKER_DEPENDENCY("nullability.NullPassedToNonnull", "nullability.NullabilityBase")
+CHECKER_DEPENDENCY("nullability.NullReturnedFromNonnull", "nullability.NullabilityBase")
+CHECKER_DEPENDENCY("nullability.NullableDereferenced", "nullability.NullabilityBase")
+CHECKER_DEPENDENCY("nullability.NullablePassedToNonnull", "nullability.NullabilityBase")
+CHECKER_DEPENDENCY("nullability.NullableReturnedFromNonnull", "nullability.NullabilityBase")
+CHECKER_DEPENDENCY("osx.OSObjectRetainCount", "osx.cocoa.RetainCountBase")
+CHECKER_DEPENDENCY("osx.cocoa.ObjCGenerics", "core.DynamicTypePropagation")
+CHECKER_DEPENDENCY("osx.cocoa.RetainCount", "osx.cocoa.RetainCountBase")
+CHECKER_DEPENDENCY("alpha.core.StackAddressAsyncEscape", "core.StackAddrEscapeBase")
+CHECKER_DEPENDENCY("core.StackAddressEscape", "core.StackAddrEscapeBase")
+CHECKER_DEPENDENCY("security.insecureAPI.UncheckedReturn", "security.insecureAPI.SecuritySyntaxChecker")
+CHECKER_DEPENDENCY("valist.Unterminated", "valist.ValistBase")
+CHECKER_DEPENDENCY("security.insecureAPI.bcmp", "security.insecureAPI.SecuritySyntaxChecker")
+CHECKER_DEPENDENCY("security.insecureAPI.bcopy", "security.insecureAPI.SecuritySyntaxChecker")
+CHECKER_DEPENDENCY("security.insecureAPI.bzero", "security.insecureAPI.SecuritySyntaxChecker")
+CHECKER_DEPENDENCY("security.insecureAPI.getpw", "security.insecureAPI.SecuritySyntaxChecker")
+CHECKER_DEPENDENCY("security.insecureAPI.gets", "security.insecureAPI.SecuritySyntaxChecker")
+CHECKER_DEPENDENCY("security.insecureAPI.mkstemp", "security.insecureAPI.SecuritySyntaxChecker")
+CHECKER_DEPENDENCY("security.insecureAPI.mktemp", "security.insecureAPI.SecuritySyntaxChecker")
+CHECKER_DEPENDENCY("security.insecureAPI.rand", "security.insecureAPI.SecuritySyntaxChecker")
+CHECKER_DEPENDENCY("security.insecureAPI.strcpy", "security.insecureAPI.SecuritySyntaxChecker")
+CHECKER_DEPENDENCY("security.insecureAPI.vfork", "security.insecureAPI.SecuritySyntaxChecker")
-
-#ifdef GET_CHECKNAME_TABLE
- { "alpha", 0, SubPackageArray0, false },
- { "alpha.clone", 0, SubPackageArray1, true },
- { "alpha.clone.CloneChecker", CheckerArray2, 0, false },
- { "alpha.core", 0, SubPackageArray3, true },
- { "alpha.core.BoolAssignment", CheckerArray4, 0, false },
- { "alpha.core.CallAndMessageUnInitRefArg", CheckerArray5, 0, false },
- { "alpha.core.CastSize", CheckerArray6, 0, false },
- { "alpha.core.CastToStruct", CheckerArray7, 0, false },
- { "alpha.core.Conversion", CheckerArray8, 0, false },
- { "alpha.core.DynamicTypeChecker", CheckerArray9, 0, false },
- { "alpha.core.FixedAddr", CheckerArray10, 0, false },
- { "alpha.core.IdenticalExpr", CheckerArray11, 0, false },
- { "alpha.core.PointerArithm", CheckerArray12, 0, false },
- { "alpha.core.PointerSub", CheckerArray13, 0, false },
- { "alpha.core.SizeofPtr", CheckerArray14, 0, false },
- { "alpha.core.StackAddressAsyncEscape", CheckerArray15, 0, false },
- { "alpha.core.TestAfterDivZero", CheckerArray16, 0, false },
- { "alpha.cplusplus", 0, SubPackageArray17, true },
- { "alpha.cplusplus.DeleteWithNonVirtualDtor", CheckerArray18, 0, false },
- { "alpha.cplusplus.InvalidatedIterator", CheckerArray19, 0, false },
- { "alpha.cplusplus.IteratorRange", CheckerArray20, 0, false },
- { "alpha.cplusplus.MismatchedIterator", CheckerArray21, 0, false },
- { "alpha.cplusplus.MisusedMovedObject", CheckerArray22, 0, false },
- { "alpha.cplusplus.UninitializedObject", CheckerArray23, 0, false },
- { "alpha.deadcode", 0, SubPackageArray24, true },
- { "alpha.deadcode.UnreachableCode", CheckerArray25, 0, false },
- { "alpha.osx", 0, SubPackageArray26, true },
- { "alpha.osx.cocoa", 0, SubPackageArray27, true },
- { "alpha.osx.cocoa.DirectIvarAssignment", CheckerArray28, 0, false },
- { "alpha.osx.cocoa.DirectIvarAssignmentForAnnotatedFunctions", CheckerArray29, 0, false },
- { "alpha.osx.cocoa.InstanceVariableInvalidation", CheckerArray30, 0, false },
- { "alpha.osx.cocoa.MissingInvalidationMethod", CheckerArray31, 0, false },
- { "alpha.osx.cocoa.localizability", 0, SubPackageArray32, true },
- { "alpha.osx.cocoa.localizability.PluralMisuseChecker", CheckerArray33, 0, false },
- { "alpha.security", 0, SubPackageArray34, true },
- { "alpha.security.ArrayBound", CheckerArray35, 0, false },
- { "alpha.security.ArrayBoundV2", CheckerArray36, 0, false },
- { "alpha.security.MallocOverflow", CheckerArray37, 0, false },
- { "alpha.security.MmapWriteExec", CheckerArray38, 0, false },
- { "alpha.security.ReturnPtrRange", CheckerArray39, 0, false },
- { "alpha.security.taint", 0, SubPackageArray40, true },
- { "alpha.security.taint.TaintPropagation", CheckerArray41, 0, false },
- { "alpha.unix", 0, SubPackageArray42, true },
- { "alpha.unix.BlockInCriticalSection", CheckerArray43, 0, false },
- { "alpha.unix.Chroot", CheckerArray44, 0, false },
- { "alpha.unix.PthreadLock", CheckerArray45, 0, false },
- { "alpha.unix.SimpleStream", CheckerArray46, 0, false },
- { "alpha.unix.Stream", CheckerArray47, 0, false },
- { "alpha.unix.cstring", 0, SubPackageArray48, true },
- { "alpha.unix.cstring.BufferOverlap", CheckerArray49, 0, false },
- { "alpha.unix.cstring.NotNullTerminated", CheckerArray50, 0, false },
- { "alpha.unix.cstring.OutOfBounds", CheckerArray51, 0, false },
- { "apiModeling", 0, SubPackageArray52, true },
- { "apiModeling.StdCLibraryFunctions", CheckerArray53, 0, false },
- { "apiModeling.TrustNonnull", CheckerArray54, 0, false },
- { "apiModeling.google", 0, SubPackageArray55, true },
- { "apiModeling.google.GTest", CheckerArray56, 0, false },
- { "core", 0, SubPackageArray57, false },
- { "core.CallAndMessage", CheckerArray58, 0, false },
- { "core.DivideZero", CheckerArray59, 0, false },
- { "core.DynamicTypePropagation", CheckerArray60, 0, false },
- { "core.NonNullParamChecker", CheckerArray61, 0, false },
- { "core.NonnilStringConstants", CheckerArray62, 0, false },
- { "core.NullDereference", CheckerArray63, 0, false },
- { "core.StackAddressEscape", CheckerArray64, 0, false },
- { "core.UndefinedBinaryOperatorResult", CheckerArray65, 0, false },
- { "core.VLASize", CheckerArray66, 0, false },
- { "core.builtin", 0, SubPackageArray67, false },
- { "core.builtin.BuiltinFunctions", CheckerArray68, 0, false },
- { "core.builtin.NoReturnFunctions", CheckerArray69, 0, false },
- { "core.uninitialized", 0, SubPackageArray70, false },
- { "core.uninitialized.ArraySubscript", CheckerArray71, 0, false },
- { "core.uninitialized.Assign", CheckerArray72, 0, false },
- { "core.uninitialized.Branch", CheckerArray73, 0, false },
- { "core.uninitialized.CapturedBlockVariable", CheckerArray74, 0, false },
- { "core.uninitialized.UndefReturn", CheckerArray75, 0, false },
- { "cplusplus", 0, SubPackageArray76, false },
- { "cplusplus.InnerPointer", CheckerArray77, 0, false },
- { "cplusplus.NewDelete", CheckerArray78, 0, false },
- { "cplusplus.NewDeleteLeaks", CheckerArray79, 0, false },
- { "cplusplus.SelfAssignment", CheckerArray80, 0, false },
- { "deadcode", 0, SubPackageArray81, false },
- { "deadcode.DeadStores", CheckerArray82, 0, false },
- { "debug", 0, SubPackageArray83, false },
- { "debug.AnalysisOrder", CheckerArray84, 0, false },
- { "debug.ConfigDumper", CheckerArray85, 0, false },
- { "debug.DumpCFG", CheckerArray86, 0, false },
- { "debug.DumpCallGraph", CheckerArray87, 0, false },
- { "debug.DumpCalls", CheckerArray88, 0, false },
- { "debug.DumpDominators", CheckerArray89, 0, false },
- { "debug.DumpLiveVars", CheckerArray90, 0, false },
- { "debug.DumpTraversal", CheckerArray91, 0, false },
- { "debug.ExprInspection", CheckerArray92, 0, false },
- { "debug.Stats", CheckerArray93, 0, false },
- { "debug.TaintTest", CheckerArray94, 0, false },
- { "debug.ViewCFG", CheckerArray95, 0, false },
- { "debug.ViewCallGraph", CheckerArray96, 0, false },
- { "debug.ViewExplodedGraph", CheckerArray97, 0, false },
- { "llvm", 0, SubPackageArray98, false },
- { "llvm.Conventions", CheckerArray99, 0, false },
- { "nullability", 0, SubPackageArray100, false },
- { "nullability.NullPassedToNonnull", CheckerArray101, 0, false },
- { "nullability.NullReturnedFromNonnull", CheckerArray102, 0, false },
- { "nullability.NullableDereferenced", CheckerArray103, 0, false },
- { "nullability.NullablePassedToNonnull", CheckerArray104, 0, false },
- { "nullability.NullableReturnedFromNonnull", CheckerArray105, 0, false },
- { "optin", 0, SubPackageArray106, false },
- { "optin.cplusplus", 0, SubPackageArray107, false },
- { "optin.cplusplus.VirtualCall", CheckerArray108, 0, false },
- { "optin.mpi", 0, SubPackageArray109, false },
- { "optin.mpi.MPI-Checker", CheckerArray110, 0, false },
- { "optin.osx", 0, SubPackageArray111, false },
- { "optin.osx.cocoa", 0, SubPackageArray112, false },
- { "optin.osx.cocoa.localizability", 0, SubPackageArray113, false },
- { "optin.osx.cocoa.localizability.EmptyLocalizationContextChecker", CheckerArray114, 0, false },
- { "optin.osx.cocoa.localizability.NonLocalizedStringChecker", CheckerArray115, 0, false },
- { "optin.performance", 0, SubPackageArray116, false },
- { "optin.performance.GCDAntipattern", CheckerArray117, 0, false },
- { "optin.performance.Padding", CheckerArray118, 0, false },
- { "optin.portability", 0, SubPackageArray119, false },
- { "optin.portability.UnixAPI", CheckerArray120, 0, false },
- { "osx", 0, SubPackageArray121, false },
- { "osx.API", CheckerArray122, 0, false },
- { "osx.NumberObjectConversion", CheckerArray123, 0, false },
- { "osx.ObjCProperty", CheckerArray124, 0, false },
- { "osx.SecKeychainAPI", CheckerArray125, 0, false },
- { "osx.cocoa", 0, SubPackageArray126, false },
- { "osx.cocoa.AtSync", CheckerArray127, 0, false },
- { "osx.cocoa.AutoreleaseWrite", CheckerArray128, 0, false },
- { "osx.cocoa.ClassRelease", CheckerArray129, 0, false },
- { "osx.cocoa.Dealloc", CheckerArray130, 0, false },
- { "osx.cocoa.IncompatibleMethodTypes", CheckerArray131, 0, false },
- { "osx.cocoa.Loops", CheckerArray132, 0, false },
- { "osx.cocoa.MissingSuperCall", CheckerArray133, 0, false },
- { "osx.cocoa.NSAutoreleasePool", CheckerArray134, 0, false },
- { "osx.cocoa.NSError", CheckerArray135, 0, false },
- { "osx.cocoa.NilArg", CheckerArray136, 0, false },
- { "osx.cocoa.NonNilReturnValue", CheckerArray137, 0, false },
- { "osx.cocoa.ObjCGenerics", CheckerArray138, 0, false },
- { "osx.cocoa.RetainCount", CheckerArray139, 0, false },
- { "osx.cocoa.RunLoopAutoreleaseLeak", CheckerArray140, 0, false },
- { "osx.cocoa.SelfInit", CheckerArray141, 0, false },
- { "osx.cocoa.SuperDealloc", CheckerArray142, 0, false },
- { "osx.cocoa.UnusedIvars", CheckerArray143, 0, false },
- { "osx.cocoa.VariadicMethodTypes", CheckerArray144, 0, false },
- { "osx.coreFoundation", 0, SubPackageArray145, false },
- { "osx.coreFoundation.CFError", CheckerArray146, 0, false },
- { "osx.coreFoundation.CFNumber", CheckerArray147, 0, false },
- { "osx.coreFoundation.CFRetainRelease", CheckerArray148, 0, false },
- { "osx.coreFoundation.containers", 0, SubPackageArray149, false },
- { "osx.coreFoundation.containers.OutOfBounds", CheckerArray150, 0, false },
- { "osx.coreFoundation.containers.PointerSizedValues", CheckerArray151, 0, false },
- { "security", 0, SubPackageArray152, false },
- { "security.FloatLoopCounter", CheckerArray153, 0, false },
- { "security.insecureAPI", 0, SubPackageArray154, false },
- { "security.insecureAPI.UncheckedReturn", CheckerArray155, 0, false },
- { "security.insecureAPI.bcmp", CheckerArray156, 0, false },
- { "security.insecureAPI.bcopy", CheckerArray157, 0, false },
- { "security.insecureAPI.bzero", CheckerArray158, 0, false },
- { "security.insecureAPI.getpw", CheckerArray159, 0, false },
- { "security.insecureAPI.gets", CheckerArray160, 0, false },
- { "security.insecureAPI.mkstemp", CheckerArray161, 0, false },
- { "security.insecureAPI.mktemp", CheckerArray162, 0, false },
- { "security.insecureAPI.rand", CheckerArray163, 0, false },
- { "security.insecureAPI.strcpy", CheckerArray164, 0, false },
- { "security.insecureAPI.vfork", CheckerArray165, 0, false },
- { "unix", 0, SubPackageArray166, false },
- { "unix.API", CheckerArray167, 0, false },
- { "unix.Malloc", CheckerArray168, 0, false },
- { "unix.MallocSizeof", CheckerArray169, 0, false },
- { "unix.MismatchedDeallocator", CheckerArray170, 0, false },
- { "unix.Vfork", CheckerArray171, 0, false },
- { "unix.cstring", 0, SubPackageArray172, true },
- { "unix.cstring.BadSizeArg", CheckerArray173, 0, false },
- { "unix.cstring.NullArg", CheckerArray174, 0, false },
- { "valist", 0, SubPackageArray175, false },
- { "valist.CopyToSelf", CheckerArray176, 0, false },
- { "valist.Uninitialized", CheckerArray177, 0, false },
- { "valist.Unterminated", CheckerArray178, 0, false },
-#endif // GET_CHECKNAME_TABLE
-
+#endif // GET_CHECKER_DEPENDENCIES
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/ClangCheckers.h b/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/ClangCheckers.h
deleted file mode 100644
index cf0a30a..0000000
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/ClangCheckers.h
+++ /dev/null
@@ -1,22 +0,0 @@
-//===--- ClangCheckers.h - Provides builtin checkers ------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_STATICANALYZER_CHECKERS_CLANGCHECKERS_H
-#define LLVM_CLANG_STATICANALYZER_CHECKERS_CLANGCHECKERS_H
-
-namespace clang {
-namespace ento {
-class CheckerRegistry;
-
-void registerBuiltinCheckers(CheckerRegistry ®istry);
-
-} // end namespace ento
-} // end namespace clang
-
-#endif
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/LocalCheckers.h b/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/LocalCheckers.h
index 463f04a..8f7148f 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/LocalCheckers.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/LocalCheckers.h
@@ -1,9 +1,8 @@
//==- LocalCheckers.h - Intra-Procedural+Flow-Sensitive Checkers -*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/MPIFunctionClassifier.h b/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/MPIFunctionClassifier.h
index 65e9089..bbc5111 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/MPIFunctionClassifier.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/MPIFunctionClassifier.h
@@ -1,9 +1,8 @@
//===-- MPIFunctionClassifier.h - classifies MPI functions ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/SValExplainer.h b/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/SValExplainer.h
index 62bb0f6..10c8902 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/SValExplainer.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Checkers/SValExplainer.h
@@ -1,9 +1,8 @@
//== SValExplainer.h - Symbolic value explainer -----------------*- C++ -*--==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/Analyses.def b/linux-x64/clang/include/clang/StaticAnalyzer/Core/Analyses.def
index 281a2ac..3774515 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/Analyses.def
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/Analyses.def
@@ -1,9 +1,8 @@
//===-- Analyses.def - Metadata about Static Analyses -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -33,6 +32,7 @@
ANALYSIS_DIAGNOSTICS(PLIST, "plist", "Output analysis results using Plists", createPlistDiagnosticConsumer)
ANALYSIS_DIAGNOSTICS(PLIST_MULTI_FILE, "plist-multi-file", "Output analysis results using Plists (allowing for multi-file bugs)", createPlistMultiFileDiagnosticConsumer)
ANALYSIS_DIAGNOSTICS(PLIST_HTML, "plist-html", "Output analysis results using HTML wrapped with Plists", createPlistHTMLDiagnosticConsumer)
+ANALYSIS_DIAGNOSTICS(SARIF, "sarif", "Output analysis results in a SARIF file", createSarifDiagnosticConsumer)
ANALYSIS_DIAGNOSTICS(TEXT, "text", "Text output of analysis results", createTextPathDiagnosticConsumer)
#ifndef ANALYSIS_PURGE
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/AnalyzerOptions.def b/linux-x64/clang/include/clang/StaticAnalyzer/Core/AnalyzerOptions.def
new file mode 100644
index 0000000..cc8b70b
--- /dev/null
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/AnalyzerOptions.def
@@ -0,0 +1,376 @@
+//===-- AnalyzerOptions.def - Metadata about Static Analyses ----*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines the analyzer options avaible with -analyzer-config.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_ADT_STRINGREF_H
+#error This .def file is expected to be included in translation units where \
+"llvm/ADT/StringRef.h" is already included!
+#endif
+
+#ifdef ANALYZER_OPTION
+#ifndef ANALYZER_OPTION_DEPENDS_ON_USER_MODE
+#error If you didnt include this file with the intent of generating methods, \
+define both 'ANALYZER_OPTION' and 'ANALYZER_OPTION_DEPENDS_ON_USER_MODE' macros!
+#endif
+#endif
+
+#ifndef ANALYZER_OPTION_DEPENDS_ON_USER_MODE
+#ifdef ANALYZER_OPTION
+#error If you didnt include this file with the intent of generating methods, \
+define both 'ANALYZER_OPTION' and 'ANALYZER_OPTION_DEPENDS_ON_USER_MODE' macros!
+#endif
+#endif
+
+#ifndef ANALYZER_OPTION
+/// Create a new analyzer option, but dont generate a method for it in
+/// AnalyzerOptions.
+///
+/// TYPE - The type of the option object that will be stored in
+/// AnalyzerOptions. This file is expected to be icluded in translation
+/// units where AnalyzerOptions.h is included, so types from that
+/// header should be used.
+/// NAME - The name of the option object.
+/// CMDFLAG - The command line flag for the option.
+/// (-analyzer-config CMDFLAG=VALUE)
+/// DESC - Description of the flag.
+/// DEFAULT_VAL - The default value for CMDFLAG.
+#define ANALYZER_OPTION(TYPE, NAME, CMDFLAG, DESC, DEFAULT_VAL)
+#endif
+
+#ifndef ANALYZER_OPTION_DEPENDS_ON_USER_MODE
+/// Create a new analyzer option, but dont generate a method for it in
+/// AnalyzerOptions. It's value depends on the option "user-mode".
+///
+/// TYPE - The type of the option object that will be stored in
+/// AnalyzerOptions. This file is expected to be icluded in translation
+/// units where AnalyzerOptions.h is included, so types from that
+/// header should be used.
+/// NAME - The name of the option object.
+/// CMDFLAG - The command line flag for the option.
+/// (-analyzer-config CMDFLAG=VALUE)
+/// DESC - Description of the flag.
+/// SHALLOW_VAL - The default value for CMDFLAG, when "user-mode" was set to
+/// "shallow".
+/// DEEP_VAL - The default value for CMDFLAG, when "user-mode" was set to
+/// "deep".
+#define ANALYZER_OPTION_DEPENDS_ON_USER_MODE(TYPE, NAME, CMDFLAG, DESC, \
+ SHALLOW_VAL, DEEP_VAL)
+#endif
+
+//===----------------------------------------------------------------------===//
+// The "mode" option. Since some options depend on this, we list it on top of
+// this file in order to make sure that the generated field for it is
+// initialized before the rest.
+//===----------------------------------------------------------------------===//
+
+ANALYZER_OPTION(
+ StringRef, UserMode, "mode",
+ "(string) Controls the high-level analyzer mode, which influences the "
+ "default settings for some of the lower-level config options (such as "
+ "IPAMode). Value: \"deep\", \"shallow\".",
+ "deep")
+
+//===----------------------------------------------------------------------===//
+// Boolean analyzer options.
+//===----------------------------------------------------------------------===//
+
+ANALYZER_OPTION(bool, ShouldIncludeImplicitDtorsInCFG, "cfg-implicit-dtors",
+ "Whether or not implicit destructors for C++ objects "
+ "should be included in the CFG.",
+ true)
+
+ANALYZER_OPTION(bool, ShouldIncludeTemporaryDtorsInCFG, "cfg-temporary-dtors",
+ "Whether or not the destructors for C++ temporary "
+ "objects should be included in the CFG.",
+ true)
+
+ANALYZER_OPTION(
+ bool, ShouldIncludeLifetimeInCFG, "cfg-lifetime",
+ "Whether or not end-of-lifetime information should be included in the CFG.",
+ false)
+
+ANALYZER_OPTION(bool, ShouldIncludeLoopExitInCFG, "cfg-loopexit",
+ "Whether or not the end of the loop information should "
+ "be included in the CFG.",
+ false)
+
+ANALYZER_OPTION(bool, ShouldIncludeRichConstructorsInCFG,
+ "cfg-rich-constructors",
+ "Whether or not construction site information should be "
+ "included in the CFG C++ constructor elements.",
+ true)
+
+ANALYZER_OPTION(
+ bool, ShouldIncludeScopesInCFG, "cfg-scopes",
+ "Whether or not scope information should be included in the CFG.", false)
+
+ANALYZER_OPTION(
+ bool, MayInlineTemplateFunctions, "c++-template-inlining",
+ "Whether or not templated functions may be considered for inlining.", true)
+
+ANALYZER_OPTION(bool, MayInlineCXXStandardLibrary, "c++-stdlib-inlining",
+ "Whether or not C++ standard library functions may be "
+ "considered for inlining.",
+ true)
+
+ANALYZER_OPTION(bool, MayInlineCXXAllocator, "c++-allocator-inlining",
+ "Whether or not allocator call may be considered for inlining.",
+ true)
+
+ANALYZER_OPTION(
+ bool, MayInlineCXXSharedPtrDtor, "c++-shared_ptr-inlining",
+ "Whether or not the destructor of C++ 'shared_ptr' may be considered for "
+ "inlining. This covers std::shared_ptr, std::tr1::shared_ptr, and "
+ "boost::shared_ptr, and indeed any destructor named '~shared_ptr'.",
+ false)
+
+ANALYZER_OPTION(bool, MayInlineCXXTemporaryDtors, "c++-temp-dtor-inlining",
+ "Whether C++ temporary destructors should be inlined "
+ "during analysis. If temporary destructors are disabled "
+ "in the CFG via the 'cfg-temporary-dtors' option, "
+ "temporary destructors would not be inlined anyway.",
+ true)
+
+ANALYZER_OPTION(
+ bool, ShouldSuppressNullReturnPaths, "suppress-null-return-paths",
+ "Whether or not paths that go through null returns should be suppressed. "
+ "This is a heuristic for avoiding bug reports with paths that go through "
+ "inlined functions that are more defensive than their callers.",
+ true)
+
+ANALYZER_OPTION(
+ bool, ShouldAvoidSuppressingNullArgumentPaths,
+ "avoid-suppressing-null-argument-paths",
+ "Whether a bug report should not be suppressed if its path includes a call "
+ "with a null argument, even if that call has a null return. This option "
+ "has no effect when ShouldSuppressNullReturnPaths is false. This is a "
+ "counter-heuristic to avoid false negatives.",
+ false)
+
+ANALYZER_OPTION(bool, ShouldSuppressInlinedDefensiveChecks,
+ "suppress-inlined-defensive-checks",
+ "Whether or not diagnostics containing inlined "
+ "defensive NULL checks should be suppressed.",
+ true)
+
+ANALYZER_OPTION(bool, MayInlineCXXContainerMethods, "c++-container-inlining",
+ "Whether or not methods of C++ container objects may be "
+ "considered for inlining.",
+ false)
+
+ANALYZER_OPTION(bool, ShouldSuppressFromCXXStandardLibrary,
+ "suppress-c++-stdlib",
+ "Whether or not diagnostics reported within the C++ "
+ "standard library should be suppressed.",
+ true)
+
+ANALYZER_OPTION(bool, ShouldCrosscheckWithZ3, "crosscheck-with-z3",
+ "Whether bug reports should be crosschecked with the Z3 "
+ "constraint manager backend.",
+ false)
+
+ANALYZER_OPTION(bool, ShouldReportIssuesInMainSourceFile,
+ "report-in-main-source-file",
+ "Whether or not the diagnostic report should be always "
+ "reported in the main source file and not the headers.",
+ false)
+
+ANALYZER_OPTION(bool, ShouldWriteStableReportFilename, "stable-report-filename",
+ "Whether or not the report filename should be random or not.",
+ false)
+
+ANALYZER_OPTION(
+ bool, ShouldSerializeStats, "serialize-stats",
+ "Whether the analyzer should serialize statistics to plist output. "
+ "Statistics would be serialized in JSON format inside the main dictionary "
+ "under the statistics key. Available only if compiled in assert mode or "
+ "with LLVM statistics explicitly enabled.",
+ false)
+
+ANALYZER_OPTION(bool, MayInlineObjCMethod, "objc-inlining",
+ "Whether ObjectiveC inlining is enabled, false otherwise.",
+ true)
+
+ANALYZER_OPTION(bool, ShouldPrunePaths, "prune-paths",
+ "Whether irrelevant parts of a bug report path should "
+ "be pruned out of the final output.",
+ true)
+
+ANALYZER_OPTION(
+ bool, ShouldConditionalizeStaticInitializers,
+ "cfg-conditional-static-initializers",
+ "Whether 'static' initializers should be in conditional logic in the CFG.",
+ true)
+
+ANALYZER_OPTION(bool, ShouldSynthesizeBodies, "faux-bodies",
+ "Whether the analyzer engine should synthesize fake "
+ "bodies for well-known functions.",
+ true)
+
+ANALYZER_OPTION(
+ bool, ShouldElideConstructors, "elide-constructors",
+ "Whether elidable C++ copy-constructors and move-constructors should be "
+ "actually elided during analysis. Both behaviors are allowed by the C++ "
+ "standard, and the analyzer, like CodeGen, defaults to eliding. Starting "
+ "with C++17 some elisions become mandatory, and in these cases the option "
+ "will be ignored.",
+ true)
+
+ANALYZER_OPTION(
+ bool, ShouldInlineLambdas, "inline-lambdas",
+ "Whether lambdas should be inlined. Otherwise a sink node will be "
+ "generated each time a LambdaExpr is visited.",
+ true)
+
+ANALYZER_OPTION(bool, ShouldWidenLoops, "widen-loops",
+ "Whether the analysis should try to widen loops.", false)
+
+ANALYZER_OPTION(
+ bool, ShouldUnrollLoops, "unroll-loops",
+ "Whether the analysis should try to unroll loops with known bounds.", false)
+
+ANALYZER_OPTION(
+ bool, ShouldDisplayNotesAsEvents, "notes-as-events",
+ "Whether the bug reporter should transparently treat extra note diagnostic "
+ "pieces as event diagnostic pieces. Useful when the diagnostic consumer "
+ "doesn't support the extra note pieces.",
+ false)
+
+ANALYZER_OPTION(
+ bool, ShouldAggressivelySimplifyBinaryOperation,
+ "aggressive-binary-operation-simplification",
+ "Whether SValBuilder should rearrange comparisons and additive operations "
+ "of symbolic expressions which consist of a sum of a symbol and a concrete "
+ "integer into the format where symbols are on the left-hand side and the "
+ "integer is on the right. This is only done if both symbols and both "
+ "concrete integers are signed, greater than or equal to the quarter of the "
+ "minimum value of the type and less than or equal to the quarter of the "
+ "maximum value of that type. A + n <OP> B + m becomes A - B <OP> m - n, "
+ "where A and B symbolic, n and m are integers. <OP> is any of '==', '!=', "
+ "'<', '<=', '>', '>=', '+' or '-'. The rearrangement also happens with '-' "
+ "instead of '+' on either or both side and also if any or both integers "
+ "are missing.",
+ false)
+
+ANALYZER_OPTION(
+ bool, ShouldEagerlyAssume, "eagerly-assume",
+ "Whether we should eagerly assume evaluations of conditionals, thus, "
+ "bifurcating the path. This indicates how the engine should handle "
+ "expressions such as: 'x = (y != 0)'. When this is true then the "
+ "subexpression 'y != 0' will be eagerly assumed to be true or false, thus "
+ "evaluating it to the integers 0 or 1 respectively. The upside is that "
+ "this can increase analysis precision until we have a better way to lazily "
+ "evaluate such logic. The downside is that it eagerly bifurcates paths.",
+ true)
+
+ANALYZER_OPTION(
+ bool, IsNaiveCTUEnabled, "experimental-enable-naive-ctu-analysis",
+ "Whether naive cross translation unit analysis is enabled. This is an "
+ "experimental feature to inline functions from other translation units.",
+ false)
+
+ANALYZER_OPTION(bool, ShouldDisplayMacroExpansions, "expand-macros",
+ "Whether macros related to the bugpath should be "
+ "expanded and included in the plist output.",
+ false)
+
+ANALYZER_OPTION(bool, DisplayCTUProgress, "display-ctu-progress",
+ "Whether to emit verbose output about "
+ "the analyzer's progress related to ctu.",
+ false)
+
+//===----------------------------------------------------------------------===//
+// Unsinged analyzer options.
+//===----------------------------------------------------------------------===//
+
+ANALYZER_OPTION(
+ unsigned, AlwaysInlineSize, "ipa-always-inline-size",
+ "The size of the functions (in basic blocks), which should be considered "
+ "to be small enough to always inline.",
+ 3)
+
+ANALYZER_OPTION(
+ unsigned, GraphTrimInterval, "graph-trim-interval",
+ "How often nodes in the ExplodedGraph should be recycled to save memory. "
+ "To disable node reclamation, set the option to 0.",
+ 1000)
+
+ANALYZER_OPTION(
+ unsigned, MinCFGSizeTreatFunctionsAsLarge,
+ "min-cfg-size-treat-functions-as-large",
+ "The number of basic blocks a function needs to have to be considered "
+ "large for the 'max-times-inline-large' config option.",
+ 14)
+
+ANALYZER_OPTION(unsigned, MaxSymbolComplexity, "max-symbol-complexity",
+ "The maximum complexity of symbolic constraint.", 35)
+
+ANALYZER_OPTION(unsigned, MaxTimesInlineLarge, "max-times-inline-large",
+ "The maximum times a large function could be inlined.", 32)
+
+ANALYZER_OPTION_DEPENDS_ON_USER_MODE(
+ unsigned, MaxInlinableSize, "max-inlinable-size",
+ "The bound on the number of basic blocks in an inlined function.",
+ /* SHALLOW_VAL */ 4, /* DEEP_VAL */ 100)
+
+ANALYZER_OPTION_DEPENDS_ON_USER_MODE(
+ unsigned, MaxNodesPerTopLevelFunction, "max-nodes",
+ "The maximum number of nodes the analyzer can generate while exploring a "
+ "top level function (for each exploded graph). 0 means no limit.",
+ /* SHALLOW_VAL */ 75000, /* DEEP_VAL */ 225000)
+
+ANALYZER_OPTION(
+ unsigned, RegionStoreSmallStructLimit, "region-store-small-struct-limit",
+ "The largest number of fields a struct can have and still be considered "
+ "small This is currently used to decide whether or not it is worth forcing "
+ "a LazyCompoundVal on bind. To disable all small-struct-dependent "
+ "behavior, set the option to 0.",
+ 2)
+
+//===----------------------------------------------------------------------===//
+// String analyzer options.
+//===----------------------------------------------------------------------===//
+
+ANALYZER_OPTION(StringRef, CTUDir, "ctu-dir",
+ "The directory containing the CTU related files.", "")
+
+ANALYZER_OPTION(StringRef, CTUIndexName, "ctu-index-name",
+ "the name of the file containing the CTU index of definitions.",
+ "externalDefMap.txt")
+
+ANALYZER_OPTION(
+ StringRef, ModelPath, "model-path",
+ "The analyzer can inline an alternative implementation written in C at the "
+ "call site if the called function's body is not available. This is a path "
+ "where to look for those alternative implementations (called models).",
+ "")
+
+ANALYZER_OPTION(
+ StringRef, CXXMemberInliningMode, "c++-inlining",
+ "Controls which C++ member functions will be considered for inlining. "
+ "Value: \"constructors\", \"destructors\", \"methods\".",
+ "destructors")
+
+ANALYZER_OPTION_DEPENDS_ON_USER_MODE(
+ StringRef, IPAMode, "ipa",
+ "Controls the mode of inter-procedural analysis. Value: \"none\", "
+ "\"basic-inlining\", \"inlining\", \"dynamic\", \"dynamic-bifurcate\".",
+ /* SHALLOW_VAL */ "inlining", /* DEEP_VAL */ "dynamic-bifurcate")
+
+ANALYZER_OPTION(
+ StringRef, ExplorationStrategy, "exploration_strategy",
+ "Value: \"dfs\", \"bfs\", \"unexplored_first\", "
+ "\"unexplored_first_queue\", \"unexplored_first_location_queue\", "
+ "\"bfs_block_dfs_contents\".",
+ "unexplored_first_queue")
+
+#undef ANALYZER_OPTION_DEPENDS_ON_USER_MODE
+#undef ANALYZER_OPTION
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/AnalyzerOptions.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/AnalyzerOptions.h
index 715cc2b..775f0dd 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/AnalyzerOptions.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/AnalyzerOptions.h
@@ -1,9 +1,8 @@
//===- AnalyzerOptions.h - Analysis Engine Options --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -20,6 +19,7 @@
#include "llvm/ADT/Optional.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
+#include "llvm/ADT/StringSwitch.h"
#include <string>
#include <utility>
#include <vector>
@@ -85,7 +85,7 @@
// Uninitialized = 0,
/// A dummy mode in which no C++ inlining is enabled.
- CIMK_None = 1,
+ CIMK_None,
/// Refers to regular member function and operator calls.
CIMK_MemberFunctions,
@@ -102,8 +102,6 @@
/// Describes the different modes of inter-procedural analysis.
enum IPAKind {
- IPAK_NotSet = 0,
-
/// Perform only intra-procedural analysis.
IPAK_None = 1,
@@ -121,6 +119,46 @@
IPAK_DynamicDispatchBifurcate = 5
};
+enum class ExplorationStrategyKind {
+ DFS,
+ BFS,
+ UnexploredFirst,
+ UnexploredFirstQueue,
+ UnexploredFirstLocationQueue,
+ BFSBlockDFSContents,
+};
+
+/// Describes the kinds for high-level analyzer mode.
+enum UserModeKind {
+ /// Perform shallow but fast analyzes.
+ UMK_Shallow = 1,
+
+ /// Perform deep analyzes.
+ UMK_Deep = 2
+};
+
+/// Stores options for the analyzer from the command line.
+///
+/// Some options are frontend flags (e.g.: -analyzer-output), but some are
+/// analyzer configuration options, which are preceded by -analyzer-config
+/// (e.g.: -analyzer-config notes-as-events=true).
+///
+/// If you'd like to add a new frontend flag, add it to
+/// include/clang/Driver/CC1Options.td, add a new field to store the value of
+/// that flag in this class, and initialize it in
+/// lib/Frontend/CompilerInvocation.cpp.
+///
+/// If you'd like to add a new non-checker configuration, register it in
+/// include/clang/StaticAnalyzer/Core/AnalyzerOptions.def, and refer to the
+/// top of the file for documentation.
+///
+/// If you'd like to add a new checker option, call getChecker*Option()
+/// whenever.
+///
+/// Some of the options are controlled by raw frontend flags for no good reason,
+/// and should be eventually converted into -analyzer-config flags. New analyzer
+/// options should not be implemented as frontend flags. Frontend flags still
+/// make sense for things that do not affect the actual analysis.
class AnalyzerOptions : public RefCountedBase<AnalyzerOptions> {
public:
using ConfigTable = llvm::StringMap<std::string>;
@@ -132,6 +170,7 @@
std::vector<std::pair<std::string, bool>> CheckersControlList;
/// A key-value table of use-specified configuration values.
+ // TODO: This shouldn't be public.
ConfigTable Config;
AnalysisStores AnalysisStoreOpt = RegionStoreModel;
AnalysisConstraints AnalysisConstraintsOpt = RangeConstraintsModel;
@@ -159,6 +198,8 @@
unsigned ShowCheckerHelp : 1;
unsigned ShowEnabledCheckerList : 1;
+ unsigned ShowConfigOptionsList : 1;
+ unsigned ShouldEmitErrorsOnInvalidConfigValue : 1;
unsigned AnalyzeAll : 1;
unsigned AnalyzerDisplayProgress : 1;
unsigned AnalyzeNestedBlocks : 1;
@@ -181,190 +222,51 @@
/// The mode of function selection used during inlining.
AnalysisInliningMode InliningMode = NoRedundancy;
- enum class ExplorationStrategyKind {
- DFS,
- BFS,
- UnexploredFirst,
- UnexploredFirstQueue,
- BFSBlockDFSContents,
- NotSet
+ // Create a field for each -analyzer-config option.
+#define ANALYZER_OPTION_DEPENDS_ON_USER_MODE(TYPE, NAME, CMDFLAG, DESC, \
+ SHALLOW_VAL, DEEP_VAL) \
+ ANALYZER_OPTION(TYPE, NAME, CMDFLAG, DESC, SHALLOW_VAL)
+
+#define ANALYZER_OPTION(TYPE, NAME, CMDFLAG, DESC, DEFAULT_VAL) \
+ TYPE NAME;
+
+#include "clang/StaticAnalyzer/Core/AnalyzerOptions.def"
+#undef ANALYZER_OPTION
+#undef ANALYZER_OPTION_DEPENDS_ON_USER_MODE
+
+ // Create an array of all -analyzer-config command line options. Sort it in
+ // the constructor.
+ std::vector<StringRef> AnalyzerConfigCmdFlags = {
+#define ANALYZER_OPTION_DEPENDS_ON_USER_MODE(TYPE, NAME, CMDFLAG, DESC, \
+ SHALLOW_VAL, DEEP_VAL) \
+ ANALYZER_OPTION(TYPE, NAME, CMDFLAG, DESC, SHALLOW_VAL)
+
+#define ANALYZER_OPTION(TYPE, NAME, CMDFLAG, DESC, DEFAULT_VAL) \
+ CMDFLAG,
+
+#include "clang/StaticAnalyzer/Core/AnalyzerOptions.def"
+#undef ANALYZER_OPTION
+#undef ANALYZER_OPTION_DEPENDS_ON_USER_MODE
};
-private:
- ExplorationStrategyKind ExplorationStrategy = ExplorationStrategyKind::NotSet;
+ bool isUnknownAnalyzerConfig(StringRef Name) const {
- /// Describes the kinds for high-level analyzer mode.
- enum UserModeKind {
- UMK_NotSet = 0,
+ assert(std::is_sorted(AnalyzerConfigCmdFlags.begin(),
+ AnalyzerConfigCmdFlags.end()));
- /// Perform shallow but fast analyzes.
- UMK_Shallow = 1,
+ return !std::binary_search(AnalyzerConfigCmdFlags.begin(),
+ AnalyzerConfigCmdFlags.end(), Name);
+ }
- /// Perform deep analyzes.
- UMK_Deep = 2
- };
-
- /// Controls the high-level analyzer mode, which influences the default
- /// settings for some of the lower-level config options (such as IPAMode).
- /// \sa getUserMode
- UserModeKind UserMode = UMK_NotSet;
-
- /// Controls the mode of inter-procedural analysis.
- IPAKind IPAMode = IPAK_NotSet;
-
- /// Controls which C++ member functions will be considered for inlining.
- CXXInlineableMemberKind CXXMemberInliningMode;
-
- /// \sa includeImplicitDtorsInCFG
- Optional<bool> IncludeImplicitDtorsInCFG;
-
- /// \sa includeTemporaryDtorsInCFG
- Optional<bool> IncludeTemporaryDtorsInCFG;
-
- /// \sa IncludeLifetimeInCFG
- Optional<bool> IncludeLifetimeInCFG;
-
- /// \sa IncludeLoopExitInCFG
- Optional<bool> IncludeLoopExitInCFG;
-
- /// \sa IncludeRichConstructorsInCFG
- Optional<bool> IncludeRichConstructorsInCFG;
-
- /// \sa mayInlineCXXStandardLibrary
- Optional<bool> InlineCXXStandardLibrary;
-
- /// \sa includeScopesInCFG
- Optional<bool> IncludeScopesInCFG;
-
- /// \sa mayInlineTemplateFunctions
- Optional<bool> InlineTemplateFunctions;
-
- /// \sa mayInlineCXXAllocator
- Optional<bool> InlineCXXAllocator;
-
- /// \sa mayInlineCXXContainerMethods
- Optional<bool> InlineCXXContainerMethods;
-
- /// \sa mayInlineCXXSharedPtrDtor
- Optional<bool> InlineCXXSharedPtrDtor;
-
- /// \sa mayInlineCXXTemporaryDtors
- Optional<bool> InlineCXXTemporaryDtors;
-
- /// \sa mayInlineObjCMethod
- Optional<bool> ObjCInliningMode;
-
- // Cache of the "ipa-always-inline-size" setting.
- // \sa getAlwaysInlineSize
- Optional<unsigned> AlwaysInlineSize;
-
- /// \sa shouldSuppressNullReturnPaths
- Optional<bool> SuppressNullReturnPaths;
-
- // \sa getMaxInlinableSize
- Optional<unsigned> MaxInlinableSize;
-
- /// \sa shouldAvoidSuppressingNullArgumentPaths
- Optional<bool> AvoidSuppressingNullArgumentPaths;
-
- /// \sa shouldSuppressInlinedDefensiveChecks
- Optional<bool> SuppressInlinedDefensiveChecks;
-
- /// \sa shouldSuppressFromCXXStandardLibrary
- Optional<bool> SuppressFromCXXStandardLibrary;
-
- /// \sa shouldCrosscheckWithZ3
- Optional<bool> CrosscheckWithZ3;
-
- /// \sa reportIssuesInMainSourceFile
- Optional<bool> ReportIssuesInMainSourceFile;
-
- /// \sa StableReportFilename
- Optional<bool> StableReportFilename;
-
- Optional<bool> SerializeStats;
-
- /// \sa getGraphTrimInterval
- Optional<unsigned> GraphTrimInterval;
-
- /// \sa getMaxSymbolComplexity
- Optional<unsigned> MaxSymbolComplexity;
-
- /// \sa getMaxTimesInlineLarge
- Optional<unsigned> MaxTimesInlineLarge;
-
- /// \sa getMinCFGSizeTreatFunctionsAsLarge
- Optional<unsigned> MinCFGSizeTreatFunctionsAsLarge;
-
- /// \sa getMaxNodesPerTopLevelFunction
- Optional<unsigned> MaxNodesPerTopLevelFunction;
-
- /// \sa shouldInlineLambdas
- Optional<bool> InlineLambdas;
-
- /// \sa shouldWidenLoops
- Optional<bool> WidenLoops;
-
- /// \sa shouldUnrollLoops
- Optional<bool> UnrollLoops;
-
- /// \sa shouldDisplayNotesAsEvents
- Optional<bool> DisplayNotesAsEvents;
-
- /// \sa shouldAggressivelySimplifyBinaryOperation
- Optional<bool> AggressiveBinaryOperationSimplification;
-
- /// \sa shouldEagerlyAssume
- Optional<bool> EagerlyAssumeBinOpBifurcation;
-
- /// \sa getCTUDir
- Optional<StringRef> CTUDir;
-
- /// \sa getCTUIndexName
- Optional<StringRef> CTUIndexName;
-
- /// \sa naiveCTUEnabled
- Optional<bool> NaiveCTU;
-
- /// \sa shouldElideConstructors
- Optional<bool> ElideConstructors;
-
-
- /// A helper function that retrieves option for a given full-qualified
- /// checker name.
- /// Options for checkers can be specified via 'analyzer-config' command-line
- /// option.
- /// Example:
- /// @code-analyzer-config unix.Malloc:OptionName=CheckerOptionValue @endcode
- /// or @code-analyzer-config unix:OptionName=GroupOptionValue @endcode
- /// for groups of checkers.
- /// @param [in] CheckerName Full-qualified checker name, like
- /// alpha.unix.StreamChecker.
- /// @param [in] OptionName Name of the option to get.
- /// @param [in] Default Default value if no option is specified.
- /// @param [in] SearchInParents If set to true and the searched option was not
- /// specified for the given checker the options for the parent packages will
- /// be searched as well. The inner packages take precedence over the outer
- /// ones.
- /// @retval CheckerOptionValue An option for a checker if it was specified.
- /// @retval GroupOptionValue An option for group if it was specified and no
- /// checker-specific options were found. The closer group to checker,
- /// the more priority it has. For example, @c coregroup.subgroup has more
- /// priority than @c coregroup for @c coregroup.subgroup.CheckerName checker.
- /// @retval Default If nor checker option, nor group option was found.
- StringRef getCheckerOption(StringRef CheckerName, StringRef OptionName,
- StringRef Default,
- bool SearchInParents = false);
-
-public:
AnalyzerOptions()
: DisableAllChecks(false), ShowCheckerHelp(false),
- ShowEnabledCheckerList(false), AnalyzeAll(false),
- AnalyzerDisplayProgress(false), AnalyzeNestedBlocks(false),
- eagerlyAssumeBinOpBifurcation(false), TrimGraph(false),
- visualizeExplodedGraphWithGraphViz(false),
- UnoptimizedCFG(false),
- PrintStats(false), NoRetryExhausted(false), CXXMemberInliningMode() {}
+ ShowEnabledCheckerList(false), ShowConfigOptionsList(false),
+ AnalyzeAll(false), AnalyzerDisplayProgress(false),
+ AnalyzeNestedBlocks(false), eagerlyAssumeBinOpBifurcation(false),
+ TrimGraph(false), visualizeExplodedGraphWithGraphViz(false),
+ UnoptimizedCFG(false), PrintStats(false), NoRetryExhausted(false) {
+ llvm::sort(AnalyzerConfigCmdFlags);
+ }
/// Interprets an option's string value as a boolean. The "true" string is
/// interpreted as true and the "false" string is interpreted as false.
@@ -373,34 +275,17 @@
/// @param [in] Name Name for option to retrieve.
/// @param [in] DefaultVal Default value returned if no such option was
/// specified.
- /// @param [in] C The optional checker parameter that can be used to restrict
- /// the search to the options of this particular checker (and its parents
- /// depending on search mode).
+ /// @param [in] C The checker object the option belongs to. Checker options
+ /// are retrieved in the following format:
+ /// `-analyzer-config <package and checker name>:OptionName=Value.
/// @param [in] SearchInParents If set to true and the searched option was not
/// specified for the given checker the options for the parent packages will
/// be searched as well. The inner packages take precedence over the outer
/// ones.
- bool getBooleanOption(StringRef Name, bool DefaultVal,
- const ento::CheckerBase *C = nullptr,
- bool SearchInParents = false);
+ bool getCheckerBooleanOption(StringRef Name, bool DefaultVal,
+ const ento::CheckerBase *C,
+ bool SearchInParents = false) const;
- /// Variant that accepts a Optional value to cache the result.
- ///
- /// @param [in,out] V Return value storage, returned if parameter contains
- /// an existing valid option, else it is used to store a return value
- /// @param [in] Name Name for option to retrieve.
- /// @param [in] DefaultVal Default value returned if no such option was
- /// specified.
- /// @param [in] C The optional checker parameter that can be used to restrict
- /// the search to the options of this particular checker (and its parents
- /// depending on search mode).
- /// @param [in] SearchInParents If set to true and the searched option was not
- /// specified for the given checker the options for the parent packages will
- /// be searched as well. The inner packages take precedence over the outer
- /// ones.
- bool getBooleanOption(Optional<bool> &V, StringRef Name, bool DefaultVal,
- const ento::CheckerBase *C = nullptr,
- bool SearchInParents = false);
/// Interprets an option's string value as an integer value.
///
@@ -408,16 +293,16 @@
/// @param [in] Name Name for option to retrieve.
/// @param [in] DefaultVal Default value returned if no such option was
/// specified.
- /// @param [in] C The optional checker parameter that can be used to restrict
- /// the search to the options of this particular checker (and its parents
- /// depending on search mode).
+ /// @param [in] C The checker object the option belongs to. Checker options
+ /// are retrieved in the following format:
+ /// `-analyzer-config <package and checker name>:OptionName=Value.
/// @param [in] SearchInParents If set to true and the searched option was not
/// specified for the given checker the options for the parent packages will
/// be searched as well. The inner packages take precedence over the outer
/// ones.
- int getOptionAsInteger(StringRef Name, int DefaultVal,
- const ento::CheckerBase *C = nullptr,
- bool SearchInParents = false);
+ int getCheckerIntegerOption(StringRef Name, int DefaultVal,
+ const ento::CheckerBase *C,
+ bool SearchInParents = false) const;
/// Query an option's string value.
///
@@ -425,26 +310,26 @@
/// @param [in] Name Name for option to retrieve.
/// @param [in] DefaultVal Default value returned if no such option was
/// specified.
- /// @param [in] C The optional checker parameter that can be used to restrict
- /// the search to the options of this particular checker (and its parents
- /// depending on search mode).
+ /// @param [in] C The checker object the option belongs to. Checker options
+ /// are retrieved in the following format:
+ /// `-analyzer-config <package and checker name>:OptionName=Value.
/// @param [in] SearchInParents If set to true and the searched option was not
/// specified for the given checker the options for the parent packages will
/// be searched as well. The inner packages take precedence over the outer
/// ones.
- StringRef getOptionAsString(StringRef Name, StringRef DefaultVal,
- const ento::CheckerBase *C = nullptr,
- bool SearchInParents = false);
+ StringRef getCheckerStringOption(StringRef Name, StringRef DefaultVal,
+ const ento::CheckerBase *C,
+ bool SearchInParents = false) const;
/// Retrieves and sets the UserMode. This is a high-level option,
/// which is used to set other low-level options. It is not accessible
/// outside of AnalyzerOptions.
- UserModeKind getUserMode();
+ UserModeKind getUserMode() const;
- ExplorationStrategyKind getExplorationStrategy();
+ ExplorationStrategyKind getExplorationStrategy() const;
/// Returns the inter-procedural analysis mode.
- IPAKind getIPAMode();
+ IPAKind getIPAMode() const;
/// Returns the option controlling which C++ member functions will be
/// considered for inlining.
@@ -452,286 +337,28 @@
/// This is controlled by the 'c++-inlining' config option.
///
/// \sa CXXMemberInliningMode
- bool mayInlineCXXMemberFunction(CXXInlineableMemberKind K);
-
- /// Returns true if ObjectiveC inlining is enabled, false otherwise.
- bool mayInlineObjCMethod();
-
- /// Returns whether or not the destructors for C++ temporary objects should
- /// be included in the CFG.
- ///
- /// This is controlled by the 'cfg-temporary-dtors' config option, which
- /// accepts the values "true" and "false".
- bool includeTemporaryDtorsInCFG();
-
- /// Returns whether or not implicit destructors for C++ objects should
- /// be included in the CFG.
- ///
- /// This is controlled by the 'cfg-implicit-dtors' config option, which
- /// accepts the values "true" and "false".
- bool includeImplicitDtorsInCFG();
-
- /// Returns whether or not end-of-lifetime information should be included in
- /// the CFG.
- ///
- /// This is controlled by the 'cfg-lifetime' config option, which accepts
- /// the values "true" and "false".
- bool includeLifetimeInCFG();
-
- /// Returns whether or not the end of the loop information should be included
- /// in the CFG.
- ///
- /// This is controlled by the 'cfg-loopexit' config option, which accepts
- /// the values "true" and "false".
- bool includeLoopExitInCFG();
-
- /// Returns whether or not construction site information should be included
- /// in the CFG C++ constructor elements.
- ///
- /// This is controlled by the 'cfg-rich-constructors' config options,
- /// which accepts the values "true" and "false".
- bool includeRichConstructorsInCFG();
-
- /// Returns whether or not scope information should be included in the CFG.
- ///
- /// This is controlled by the 'cfg-scope-info' config option, which accepts
- /// the values "true" and "false".
- bool includeScopesInCFG();
-
- /// Returns whether or not C++ standard library functions may be considered
- /// for inlining.
- ///
- /// This is controlled by the 'c++-stdlib-inlining' config option, which
- /// accepts the values "true" and "false".
- bool mayInlineCXXStandardLibrary();
-
- /// Returns whether or not templated functions may be considered for inlining.
- ///
- /// This is controlled by the 'c++-template-inlining' config option, which
- /// accepts the values "true" and "false".
- bool mayInlineTemplateFunctions();
-
- /// Returns whether or not allocator call may be considered for inlining.
- ///
- /// This is controlled by the 'c++-allocator-inlining' config option, which
- /// accepts the values "true" and "false".
- bool mayInlineCXXAllocator();
-
- /// Returns whether or not methods of C++ container objects may be considered
- /// for inlining.
- ///
- /// This is controlled by the 'c++-container-inlining' config option, which
- /// accepts the values "true" and "false".
- bool mayInlineCXXContainerMethods();
-
- /// Returns whether or not the destructor of C++ 'shared_ptr' may be
- /// considered for inlining.
- ///
- /// This covers std::shared_ptr, std::tr1::shared_ptr, and boost::shared_ptr,
- /// and indeed any destructor named "~shared_ptr".
- ///
- /// This is controlled by the 'c++-shared_ptr-inlining' config option, which
- /// accepts the values "true" and "false".
- bool mayInlineCXXSharedPtrDtor();
-
- /// Returns true if C++ temporary destructors should be inlined during
- /// analysis.
- ///
- /// If temporary destructors are disabled in the CFG via the
- /// 'cfg-temporary-dtors' option, temporary destructors would not be
- /// inlined anyway.
- ///
- /// This is controlled by the 'c++-temp-dtor-inlining' config option, which
- /// accepts the values "true" and "false".
- bool mayInlineCXXTemporaryDtors();
-
- /// Returns whether or not paths that go through null returns should be
- /// suppressed.
- ///
- /// This is a heuristic for avoiding bug reports with paths that go through
- /// inlined functions that are more defensive than their callers.
- ///
- /// This is controlled by the 'suppress-null-return-paths' config option,
- /// which accepts the values "true" and "false".
- bool shouldSuppressNullReturnPaths();
-
- /// Returns whether a bug report should \em not be suppressed if its path
- /// includes a call with a null argument, even if that call has a null return.
- ///
- /// This option has no effect when #shouldSuppressNullReturnPaths() is false.
- ///
- /// This is a counter-heuristic to avoid false negatives.
- ///
- /// This is controlled by the 'avoid-suppressing-null-argument-paths' config
- /// option, which accepts the values "true" and "false".
- bool shouldAvoidSuppressingNullArgumentPaths();
-
- /// Returns whether or not diagnostics containing inlined defensive NULL
- /// checks should be suppressed.
- ///
- /// This is controlled by the 'suppress-inlined-defensive-checks' config
- /// option, which accepts the values "true" and "false".
- bool shouldSuppressInlinedDefensiveChecks();
-
- /// Returns whether or not diagnostics reported within the C++ standard
- /// library should be suppressed.
- ///
- /// This is controlled by the 'suppress-c++-stdlib' config option,
- /// which accepts the values "true" and "false".
- bool shouldSuppressFromCXXStandardLibrary();
-
- /// Returns whether bug reports should be crosschecked with the Z3
- /// constraint manager backend.
- ///
- /// This is controlled by the 'crosscheck-with-z3' config option,
- /// which accepts the values "true" and "false".
- bool shouldCrosscheckWithZ3();
-
- /// Returns whether or not the diagnostic report should be always reported
- /// in the main source file and not the headers.
- ///
- /// This is controlled by the 'report-in-main-source-file' config option,
- /// which accepts the values "true" and "false".
- bool shouldReportIssuesInMainSourceFile();
-
- /// Returns whether or not the report filename should be random or not.
- ///
- /// This is controlled by the 'stable-report-filename' config option,
- /// which accepts the values "true" and "false". Default = false
- bool shouldWriteStableReportFilename();
-
- /// \return Whether the analyzer should
- /// serialize statistics to plist output.
- /// Statistics would be serialized in JSON format inside the main dictionary
- /// under the \c statistics key.
- /// Available only if compiled in assert mode or with LLVM statistics
- /// explicitly enabled.
- bool shouldSerializeStats();
-
- /// Returns whether irrelevant parts of a bug report path should be pruned
- /// out of the final output.
- ///
- /// This is controlled by the 'prune-paths' config option, which accepts the
- /// values "true" and "false".
- bool shouldPrunePaths();
-
- /// Returns true if 'static' initializers should be in conditional logic
- /// in the CFG.
- bool shouldConditionalizeStaticInitializers();
-
- // Returns the size of the functions (in basic blocks), which should be
- // considered to be small enough to always inline.
- //
- // This is controlled by "ipa-always-inline-size" analyzer-config option.
- unsigned getAlwaysInlineSize();
-
- // Returns the bound on the number of basic blocks in an inlined function
- // (50 by default).
- //
- // This is controlled by "-analyzer-config max-inlinable-size" option.
- unsigned getMaxInlinableSize();
-
- /// Returns true if the analyzer engine should synthesize fake bodies
- /// for well-known functions.
- bool shouldSynthesizeBodies();
-
- /// Returns how often nodes in the ExplodedGraph should be recycled to save
- /// memory.
- ///
- /// This is controlled by the 'graph-trim-interval' config option. To disable
- /// node reclamation, set the option to "0".
- unsigned getGraphTrimInterval();
-
- /// Returns the maximum complexity of symbolic constraint (50 by default).
- ///
- /// This is controlled by "-analyzer-config max-symbol-complexity" option.
- unsigned getMaxSymbolComplexity();
-
- /// Returns the maximum times a large function could be inlined.
- ///
- /// This is controlled by the 'max-times-inline-large' config option.
- unsigned getMaxTimesInlineLarge();
-
- /// Returns the number of basic blocks a function needs to have to be
- /// considered large for the 'max-times-inline-large' config option.
- ///
- /// This is controlled by the 'min-cfg-size-treat-functions-as-large' config
- /// option.
- unsigned getMinCFGSizeTreatFunctionsAsLarge();
-
- /// Returns the maximum number of nodes the analyzer can generate while
- /// exploring a top level function (for each exploded graph).
- /// 150000 is default; 0 means no limit.
- ///
- /// This is controlled by the 'max-nodes' config option.
- unsigned getMaxNodesPerTopLevelFunction();
-
- /// Returns true if lambdas should be inlined. Otherwise a sink node will be
- /// generated each time a LambdaExpr is visited.
- bool shouldInlineLambdas();
-
- /// Returns true if the analysis should try to widen loops.
- /// This is controlled by the 'widen-loops' config option.
- bool shouldWidenLoops();
-
- /// Returns true if the analysis should try to unroll loops with known bounds.
- /// This is controlled by the 'unroll-loops' config option.
- bool shouldUnrollLoops();
-
- /// Returns true if the bug reporter should transparently treat extra note
- /// diagnostic pieces as event diagnostic pieces. Useful when the diagnostic
- /// consumer doesn't support the extra note pieces.
- ///
- /// This is controlled by the 'extra-notes-as-events' option, which defaults
- /// to false when unset.
- bool shouldDisplayNotesAsEvents();
-
- /// Returns true if SValBuilder should rearrange comparisons and additive
- /// operations of symbolic expressions which consist of a sum of a symbol and
- /// a concrete integer into the format where symbols are on the left-hand
- /// side and the integer is on the right. This is only done if both symbols
- /// and both concrete integers are signed, greater than or equal to the
- /// quarter of the minimum value of the type and less than or equal to the
- /// quarter of the maximum value of that type.
- ///
- /// A + n <OP> B + m becomes A - B <OP> m - n, where A and B symbolic,
- /// n and m are integers. <OP> is any of '==', '!=', '<', '<=', '>', '>=',
- /// '+' or '-'. The rearrangement also happens with '-' instead of '+' on
- // either or both side and also if any or both integers are missing.
- bool shouldAggressivelySimplifyBinaryOperation();
-
- /// Returns true if we should eagerly assume evaluations of
- /// conditionals, thus, bifurcating the path.
- ///
- /// This indicates how the engine should handle expressions such as: 'x =
- /// (y != 0)'. When this is true then the subexpression 'y != 0' will be
- /// eagerly assumed to be true or false, thus evaluating it to the integers 0
- /// or 1 respectively. The upside is that this can increase analysis
- /// precision until we have a better way to lazily evaluate such logic. The
- /// downside is that it eagerly bifurcates paths.
- bool shouldEagerlyAssume();
-
- /// Returns the directory containing the CTU related files.
- StringRef getCTUDir();
-
- /// Returns the name of the file containing the CTU index of functions.
- StringRef getCTUIndexName();
-
- /// Returns true when naive cross translation unit analysis is enabled.
- /// This is an experimental feature to inline functions from another
- /// translation units.
- bool naiveCTUEnabled();
-
- /// Returns true if elidable C++ copy-constructors and move-constructors
- /// should be actually elided during analysis. Both behaviors are allowed
- /// by the C++ standard, and the analyzer, like CodeGen, defaults to eliding.
- /// Starting with C++17 some elisions become mandatory, and in these cases
- /// the option will be ignored.
- bool shouldElideConstructors();
+ bool mayInlineCXXMemberFunction(CXXInlineableMemberKind K) const;
};
using AnalyzerOptionsRef = IntrusiveRefCntPtr<AnalyzerOptions>;
+//===----------------------------------------------------------------------===//
+// We'll use AnalyzerOptions in the frontend, but we can't link the frontend
+// with clangStaticAnalyzerCore, because clangStaticAnalyzerCore depends on
+// clangFrontend.
+//
+// For this reason, implement some methods in this header file.
+//===----------------------------------------------------------------------===//
+
+inline UserModeKind AnalyzerOptions::getUserMode() const {
+ auto K = llvm::StringSwitch<llvm::Optional<UserModeKind>>(UserMode)
+ .Case("shallow", UMK_Shallow)
+ .Case("deep", UMK_Deep)
+ .Default(None);
+ assert(K.hasValue() && "User mode is invalid.");
+ return K.getValue();
+}
+
} // namespace clang
#endif // LLVM_CLANG_STATICANALYZER_CORE_ANALYZEROPTIONS_H
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
index 9041f4c..a53efbb 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
@@ -1,9 +1,8 @@
//===- BugReporter.h - Generate PathDiagnostics -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -95,7 +94,7 @@
friend class BugReportEquivClass;
friend class BugReporter;
- BugType& BT;
+ const BugType& BT;
const Decl *DeclWithIssue = nullptr;
std::string ShortDescription;
std::string Description;
@@ -164,15 +163,15 @@
void popInterestingSymbolsAndRegions();
public:
- BugReport(BugType& bt, StringRef desc, const ExplodedNode *errornode)
+ BugReport(const BugType& bt, StringRef desc, const ExplodedNode *errornode)
: BT(bt), Description(desc), ErrorNode(errornode) {}
- BugReport(BugType& bt, StringRef shortDesc, StringRef desc,
+ BugReport(const BugType& bt, StringRef shortDesc, StringRef desc,
const ExplodedNode *errornode)
: BT(bt), ShortDescription(shortDesc), Description(desc),
ErrorNode(errornode) {}
- BugReport(BugType &bt, StringRef desc, PathDiagnosticLocation l)
+ BugReport(const BugType &bt, StringRef desc, PathDiagnosticLocation l)
: BT(bt), Description(desc), Location(l) {}
/// Create a BugReport with a custom uniqueing location.
@@ -190,7 +189,7 @@
virtual ~BugReport();
const BugType& getBugType() const { return BT; }
- BugType& getBugType() { return BT; }
+ //BugType& getBugType() { return BT; }
/// True when the report has an execution path associated with it.
///
@@ -481,7 +480,7 @@
return {};
}
- void Register(BugType *BT);
+ void Register(const BugType *BT);
/// Add the given report to the set of reports tracked by BugReporter.
///
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h
index ee16522..91f7cee 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h
@@ -1,9 +1,8 @@
//===- BugReporterVisitors.h - Generate PathDiagnostics ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -345,12 +344,11 @@
namespace bugreporter {
-/// Attempts to add visitors to trace a null or undefined value back to its
-/// point of origin, whether it is a symbol constrained to null or an explicit
-/// assignment.
+/// Attempts to add visitors to track expression value back to its point of
+/// origin.
///
/// \param N A node "downstream" from the evaluation of the statement.
-/// \param S The statement whose value is null or undefined.
+/// \param E The expression value which we are tracking
/// \param R The bug report to which visitors should be attached.
/// \param EnableNullFPSuppression Whether we should employ false positive
/// suppression (inlined defensive checks, returned null).
@@ -358,13 +356,10 @@
/// \return Whether or not the function was able to add visitors for this
/// statement. Note that returning \c true does not actually imply
/// that any visitors were added.
-bool trackNullOrUndefValue(const ExplodedNode *N, const Stmt *S, BugReport &R,
- bool EnableNullFPSuppression = true);
+bool trackExpressionValue(const ExplodedNode *N, const Expr *E, BugReport &R,
+ bool EnableNullFPSuppression = true);
const Expr *getDerefExpr(const Stmt *S);
-const Stmt *GetDenomExpr(const ExplodedNode *N);
-const Stmt *GetRetValExpr(const ExplodedNode *N);
-bool isDeclRefExprToReference(const Expr *E);
} // namespace bugreporter
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h
index 727ec7c..324b531 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h
@@ -1,9 +1,8 @@
//===--- BugType.h - Bug Information Description ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -38,12 +37,14 @@
virtual void anchor();
public:
- BugType(CheckName Check, StringRef Name, StringRef Cat)
+ BugType(CheckName Check, StringRef Name, StringRef Cat,
+ bool SuppressOnSink=false)
: Check(Check), Name(Name), Category(Cat), Checker(nullptr),
- SuppressOnSink(false) {}
- BugType(const CheckerBase *Checker, StringRef Name, StringRef Cat)
+ SuppressOnSink(SuppressOnSink) {}
+ BugType(const CheckerBase *Checker, StringRef Name, StringRef Cat,
+ bool SuppressOnSink=false)
: Check(Checker->getCheckName()), Name(Name), Category(Cat),
- Checker(Checker), SuppressOnSink(false) {}
+ Checker(Checker), SuppressOnSink(SuppressOnSink) {}
virtual ~BugType() = default;
StringRef getName() const { return Name; }
@@ -64,7 +65,6 @@
/// type should be suppressed if the end node of the report is post-dominated
/// by a sink node.
bool isSuppressOnSink() const { return SuppressOnSink; }
- void setSuppressOnSink(bool x) { SuppressOnSink = x; }
};
class BuiltinBug : public BugType {
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/CommonBugCategories.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/CommonBugCategories.h
index 0e80e7b..85526eb 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/CommonBugCategories.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/CommonBugCategories.h
@@ -1,9 +1,8 @@
//=--- CommonBugCategories.h - Provides common issue categories -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -16,7 +15,7 @@
namespace categories {
extern const char * const CoreFoundationObjectiveC;
extern const char * const LogicError;
- extern const char * const MemoryCoreFoundationObjectiveC;
+ extern const char * const MemoryRefCount;
extern const char * const MemoryError;
extern const char * const UnixAPI;
}
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
index 7fff429..3c8f85e 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
@@ -1,9 +1,8 @@
//===- PathDiagnostic.h - Path-Specific Diagnostic Handling -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -118,7 +117,7 @@
/// Only runs visitors, no output generated.
None,
- /// Used for HTML and text output.
+ /// Used for HTML, SARIF, and text output.
Minimal,
/// Used for plist output, used for "arrows" generation.
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/Checker.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/Checker.h
index 8484cfe..db3ae74 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/Checker.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/Checker.h
@@ -1,9 +1,8 @@
//== Checker.h - Registration mechanism for checkers -------------*- C++ -*--=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -15,6 +14,7 @@
#define LLVM_CLANG_STATICANALYZER_CORE_CHECKER_H
#include "clang/Analysis/ProgramPoint.h"
+#include "clang/Basic/LangOptions.h"
#include "clang/StaticAnalyzer/Core/CheckerManager.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/SVals.h"
#include "llvm/Support/Casting.h"
@@ -558,6 +558,8 @@
// dereference might happen later (for example pointer passed to a parameter
// that is marked with nonnull attribute.)
bool IsDirectDereference;
+
+ static int Tag;
};
/// A helper class which wraps a boolean value set to false by default.
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h
index 463c842..b4de26d 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h
@@ -1,9 +1,8 @@
//===- CheckerManager.h - Static Analyzer Checker Manager -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -142,7 +141,7 @@
using CheckerDtor = CheckerFn<void ()>;
//===----------------------------------------------------------------------===//
-// registerChecker
+// Checker registration.
//===----------------------------------------------------------------------===//
/// Used to register checkers.
@@ -154,8 +153,7 @@
CHECKER *registerChecker(AT &&... Args) {
CheckerTag tag = getTag<CHECKER>();
CheckerRef &ref = CheckerTags[tag];
- if (ref)
- return static_cast<CHECKER *>(ref); // already registered.
+ assert(!ref && "Checker already registered, use getChecker!");
CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
checker->Name = CurrentCheckName;
@@ -165,8 +163,17 @@
return checker;
}
+ template <typename CHECKER>
+ CHECKER *getChecker() {
+ CheckerTag tag = getTag<CHECKER>();
+ assert(CheckerTags.count(tag) != 0 &&
+ "Requested checker is not registered! Maybe you should add it as a "
+ "dependency in Checkers.td?");
+ return static_cast<CHECKER *>(CheckerTags[tag]);
+ }
+
//===----------------------------------------------------------------------===//
-// Functions for running checkers for AST traversing..
+// Functions for running checkers for AST traversing.
//===----------------------------------------------------------------------===//
/// Run checkers handling Decls.
@@ -532,19 +539,19 @@
template <typename EVENT>
void _registerListenerForEvent(CheckEventFunc checkfn) {
- EventInfo &info = Events[getTag<EVENT>()];
+ EventInfo &info = Events[&EVENT::Tag];
info.Checkers.push_back(checkfn);
}
template <typename EVENT>
void _registerDispatcherForEvent() {
- EventInfo &info = Events[getTag<EVENT>()];
+ EventInfo &info = Events[&EVENT::Tag];
info.HasDispatcher = true;
}
template <typename EVENT>
void _dispatchEvent(const EVENT &event) const {
- EventsTy::const_iterator I = Events.find(getTag<EVENT>());
+ EventsTy::const_iterator I = Events.find(&EVENT::Tag);
if (I == Events.end())
return;
const EventInfo &info = I->second;
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/CheckerOptInfo.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/CheckerOptInfo.h
deleted file mode 100644
index 2d13bf3..0000000
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/CheckerOptInfo.h
+++ /dev/null
@@ -1,44 +0,0 @@
-//===--- CheckerOptInfo.h - Specifies which checkers to use -----*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_STATICANALYZER_CORE_CHECKEROPTINFO_H
-#define LLVM_CLANG_STATICANALYZER_CORE_CHECKEROPTINFO_H
-
-#include "clang/Basic/LLVM.h"
-#include "llvm/ADT/StringRef.h"
-
-namespace clang {
-namespace ento {
-
-/// Represents a request to include or exclude a checker or package from a
-/// specific analysis run.
-///
-/// \sa CheckerRegistry::initializeManager
-class CheckerOptInfo {
- StringRef Name;
- bool Enable;
- bool Claimed;
-
-public:
- CheckerOptInfo(StringRef name, bool enable)
- : Name(name), Enable(enable), Claimed(false) { }
-
- StringRef getName() const { return Name; }
- bool isEnabled() const { return Enable; }
- bool isDisabled() const { return !isEnabled(); }
-
- bool isClaimed() const { return Claimed; }
- bool isUnclaimed() const { return !isClaimed(); }
- void claim() { Claimed = true; }
-};
-
-} // end namespace ento
-} // end namespace clang
-
-#endif
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/CheckerRegistry.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/CheckerRegistry.h
deleted file mode 100644
index d580dda..0000000
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/CheckerRegistry.h
+++ /dev/null
@@ -1,148 +0,0 @@
-//===- CheckerRegistry.h - Maintains all available checkers -----*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_STATICANALYZER_CORE_CHECKERREGISTRY_H
-#define LLVM_CLANG_STATICANALYZER_CORE_CHECKERREGISTRY_H
-
-#include "clang/Basic/LLVM.h"
-#include "clang/StaticAnalyzer/Core/CheckerManager.h"
-#include "llvm/ADT/StringMap.h"
-#include "llvm/ADT/StringRef.h"
-#include <cstddef>
-#include <vector>
-
-// FIXME: move this information to an HTML file in docs/.
-// At the very least, a checker plugin is a dynamic library that exports
-// clang_analyzerAPIVersionString. This should be defined as follows:
-//
-// extern "C"
-// const char clang_analyzerAPIVersionString[] =
-// CLANG_ANALYZER_API_VERSION_STRING;
-//
-// This is used to check whether the current version of the analyzer is known to
-// be incompatible with a plugin. Plugins with incompatible version strings,
-// or without a version string at all, will not be loaded.
-//
-// To add a custom checker to the analyzer, the plugin must also define the
-// function clang_registerCheckers. For example:
-//
-// extern "C"
-// void clang_registerCheckers (CheckerRegistry ®istry) {
-// registry.addChecker<MainCallChecker>("example.MainCallChecker",
-// "Disallows calls to functions called main");
-// }
-//
-// The first method argument is the full name of the checker, including its
-// enclosing package. By convention, the registered name of a checker is the
-// name of the associated class (the template argument).
-// The second method argument is a short human-readable description of the
-// checker.
-//
-// The clang_registerCheckers function may add any number of checkers to the
-// registry. If any checkers require additional initialization, use the three-
-// argument form of CheckerRegistry::addChecker.
-//
-// To load a checker plugin, specify the full path to the dynamic library as
-// the argument to the -load option in the cc1 frontend. You can then enable
-// your custom checker using the -analyzer-checker:
-//
-// clang -cc1 -load </path/to/plugin.dylib> -analyze
-// -analyzer-checker=<example.MainCallChecker>
-//
-// For a complete working example, see examples/analyzer-plugin.
-
-#ifndef CLANG_ANALYZER_API_VERSION_STRING
-// FIXME: The Clang version string is not particularly granular;
-// the analyzer infrastructure can change a lot between releases.
-// Unfortunately, this string has to be statically embedded in each plugin,
-// so we can't just use the functions defined in Version.h.
-#include "clang/Basic/Version.h"
-#define CLANG_ANALYZER_API_VERSION_STRING CLANG_VERSION_STRING
-#endif
-
-namespace clang {
-
-class AnalyzerOptions;
-class DiagnosticsEngine;
-
-namespace ento {
-
-class CheckerOptInfo;
-
-/// Manages a set of available checkers for running a static analysis.
-/// The checkers are organized into packages by full name, where including
-/// a package will recursively include all subpackages and checkers within it.
-/// For example, the checker "core.builtin.NoReturnFunctionChecker" will be
-/// included if initializeManager() is called with an option of "core",
-/// "core.builtin", or the full name "core.builtin.NoReturnFunctionChecker".
-class CheckerRegistry {
-public:
- /// Initialization functions perform any necessary setup for a checker.
- /// They should include a call to CheckerManager::registerChecker.
- using InitializationFunction = void (*)(CheckerManager &);
-
- struct CheckerInfo {
- InitializationFunction Initialize;
- StringRef FullName;
- StringRef Desc;
-
- CheckerInfo(InitializationFunction fn, StringRef name, StringRef desc)
- : Initialize(fn), FullName(name), Desc(desc) {}
- };
-
- using CheckerInfoList = std::vector<CheckerInfo>;
-
-private:
- template <typename T>
- static void initializeManager(CheckerManager &mgr) {
- mgr.registerChecker<T>();
- }
-
-public:
- /// Adds a checker to the registry. Use this non-templated overload when your
- /// checker requires custom initialization.
- void addChecker(InitializationFunction fn, StringRef fullName,
- StringRef desc);
-
- /// Adds a checker to the registry. Use this templated overload when your
- /// checker does not require any custom initialization.
- template <class T>
- void addChecker(StringRef fullName, StringRef desc) {
- // Avoid MSVC's Compiler Error C2276:
- // http://msdn.microsoft.com/en-us/library/850cstw1(v=VS.80).aspx
- addChecker(&CheckerRegistry::initializeManager<T>, fullName, desc);
- }
-
- /// Initializes a CheckerManager by calling the initialization functions for
- /// all checkers specified by the given CheckerOptInfo list. The order of this
- /// list is significant; later options can be used to reverse earlier ones.
- /// This can be used to exclude certain checkers in an included package.
- void initializeManager(CheckerManager &mgr,
- SmallVectorImpl<CheckerOptInfo> &opts) const;
-
- /// Check if every option corresponds to a specific checker or package.
- void validateCheckerOptions(const AnalyzerOptions &opts,
- DiagnosticsEngine &diags) const;
-
- /// Prints the name and description of all checkers in this registry.
- /// This output is not intended to be machine-parseable.
- void printHelp(raw_ostream &out, size_t maxNameChars = 30) const;
- void printList(raw_ostream &out,
- SmallVectorImpl<CheckerOptInfo> &opts) const;
-
-private:
- mutable CheckerInfoList Checkers;
- mutable llvm::StringMap<size_t> Packages;
-};
-
-} // namespace ento
-
-} // namespace clang
-
-#endif // LLVM_CLANG_STATICANALYZER_CORE_CHECKERREGISTRY_H
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/IssueHash.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/IssueHash.h
index 03997aa..38d5f84 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/IssueHash.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/IssueHash.h
@@ -1,9 +1,8 @@
//===---------- IssueHash.h - Generate identification hashes ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_STATICANALYZER_CORE_ISSUE_HASH_H
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathDiagnosticConsumers.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathDiagnosticConsumers.h
index 2e81aa3..ef6e7e0 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathDiagnosticConsumers.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathDiagnosticConsumers.h
@@ -1,9 +1,8 @@
//===--- PathDiagnosticConsumers.h - Path Diagnostic Clients ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/APSIntType.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/APSIntType.h
index 243795e..4b7d605 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/APSIntType.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/APSIntType.h
@@ -1,9 +1,8 @@
//== APSIntType.h - Simple record of the type of APSInts --------*- C++ -*--==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h
index 50b9b56..b0dda78 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h
@@ -1,9 +1,8 @@
//== AnalysisManager.h - Path sensitive analysis data manager ------*- C++ -*-//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/BasicValueFactory.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/BasicValueFactory.h
index 1c5d4eb..ac218bc 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/BasicValueFactory.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/BasicValueFactory.h
@@ -1,9 +1,8 @@
//==- BasicValueFactory.h - Basic values for Path Sens analysis --*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/BlockCounter.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/BlockCounter.h
index 5e83109..46ff69e 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/BlockCounter.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/BlockCounter.h
@@ -1,9 +1,8 @@
//==- BlockCounter.h - ADT for counting block visits ---------------*- C++ -*-//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
index 4c50eaf..19996cf 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
@@ -1,9 +1,8 @@
//===- CallEvent.h - Wrapper for all function and method calls --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -921,15 +920,30 @@
return getOriginExpr()->getOperatorNew();
}
+ /// Number of non-placement arguments to the call. It is equal to 2 for
+ /// C++17 aligned operator new() calls that have alignment implicitly
+ /// passed as the second argument, and to 1 for other operator new() calls.
+ unsigned getNumImplicitArgs() const {
+ return getOriginExpr()->passAlignment() ? 2 : 1;
+ }
+
unsigned getNumArgs() const override {
- return getOriginExpr()->getNumPlacementArgs() + 1;
+ return getOriginExpr()->getNumPlacementArgs() + getNumImplicitArgs();
}
const Expr *getArgExpr(unsigned Index) const override {
// The first argument of an allocator call is the size of the allocation.
- if (Index == 0)
+ if (Index < getNumImplicitArgs())
return nullptr;
- return getOriginExpr()->getPlacementArg(Index - 1);
+ return getOriginExpr()->getPlacementArg(Index - getNumImplicitArgs());
+ }
+
+ /// Number of placement arguments to the operator new() call. For example,
+ /// standard std::nothrow operator new and standard placement new both have
+ /// 1 implicit argument (size) and 1 placement argument, while regular
+ /// operator new() has 1 implicit argument and 0 placement arguments.
+ const Expr *getPlacementArgExpr(unsigned Index) const {
+ return getOriginExpr()->getPlacementArg(Index);
}
Kind getKind() const override { return CE_CXXAllocator; }
@@ -1123,9 +1137,16 @@
public:
CallEventManager(llvm::BumpPtrAllocator &alloc) : Alloc(alloc) {}
+ /// Gets an outside caller given a callee context.
CallEventRef<>
getCaller(const StackFrameContext *CalleeCtx, ProgramStateRef State);
+ /// Gets a call event for a function call, Objective-C method call,
+ /// or a 'new' call.
+ CallEventRef<>
+ getCall(const Stmt *S, ProgramStateRef State,
+ const LocationContext *LC);
+
CallEventRef<>
getSimpleCall(const CallExpr *E, ProgramStateRef State,
const LocationContext *LCtx);
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h
index 6ee75b7..5710ee7 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h
@@ -1,9 +1,8 @@
//== CheckerContext.h - Context info for path-sensitive checkers--*- C++ -*--=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerHelpers.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerHelpers.h
index 7f34a7a..b53c042 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerHelpers.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerHelpers.h
@@ -1,9 +1,8 @@
//== CheckerHelpers.h - Helper functions for checkers ------------*- C++ -*--=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h
index d4f8fba..0a8712e 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h
@@ -1,9 +1,8 @@
//===- ConstraintManager.h - Constraints on symbolic values. ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
index 17369a8..a01678e 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
@@ -1,9 +1,8 @@
//===- CoreEngine.h - Path-Sensitive Dataflow Engine ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeInfo.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeInfo.h
index 092e23c..9bb1e21 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeInfo.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeInfo.h
@@ -1,9 +1,8 @@
//== DynamicTypeInfo.h - Runtime type information ----------------*- C++ -*--=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_DYNAMICTYPEINFO_H
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeMap.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeMap.h
index 2f8ead0..6608f26 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeMap.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeMap.h
@@ -1,9 +1,8 @@
//===- DynamicTypeMap.h - Dynamic type map ----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -36,10 +35,7 @@
template <>
struct ProgramStateTrait<DynamicTypeMap>
: public ProgramStatePartialTrait<DynamicTypeMapImpl> {
- static void *GDMIndex() {
- static int index = 0;
- return &index;
- }
+ static void *GDMIndex();
};
/// Get dynamic type information for a region.
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Environment.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Environment.h
index 6d49803..6fc589b 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Environment.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Environment.h
@@ -1,9 +1,8 @@
//===- Environment.h - Map from Stmt* to Locations/Values -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h
index cf4164d..727d04c 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h
@@ -1,9 +1,8 @@
//===- ExplodedGraph.h - Local, Path-Sens. "Exploded Graph" -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -210,10 +209,14 @@
return const_cast<ExplodedNode*>(this)->getFirstPred();
}
- const ExplodedNode *getFirstSucc() const {
+ ExplodedNode *getFirstSucc() {
return succ_empty() ? nullptr : *(succ_begin());
}
+ const ExplodedNode *getFirstSucc() const {
+ return const_cast<ExplodedNode*>(this)->getFirstSucc();
+ }
+
// Iterators over successor and predecessor vertices.
using succ_iterator = ExplodedNode * const *;
using const_succ_iterator = const ExplodedNode * const *;
@@ -243,8 +246,10 @@
int64_t getID(ExplodedGraph *G) const;
/// The node is trivial if it has only one successor, only one predecessor,
+ /// it's predecessor has only one successor,
/// and its program state is the same as the program state of the previous
/// node.
+ /// Trivial nodes may be skipped while printing exploded graph.
bool isTrivial() const;
private:
@@ -460,7 +465,6 @@
// GraphTraits
namespace llvm {
-
template <> struct GraphTraits<clang::ento::ExplodedGraph *> {
using GraphTy = clang::ento::ExplodedGraph *;
using NodeRef = clang::ento::ExplodedNode *;
@@ -471,17 +475,19 @@
return *G->roots_begin();
}
+ static bool predecessorOfTrivial(NodeRef N) {
+ return N->succ_size() == 1 && N->getFirstSucc()->isTrivial();
+ }
+
static ChildIteratorType child_begin(NodeRef N) {
- if (N->succ_size() == 1 && (*N->succ_begin())->isTrivial()) {
+ if (predecessorOfTrivial(N))
return child_begin(*N->succ_begin());
- }
return N->succ_begin();
}
static ChildIteratorType child_end(NodeRef N) {
- if (N->succ_size() == 1 && (*N->succ_begin())->isTrivial()) {
- return child_end(*N->succ_begin());
- }
+ if (predecessorOfTrivial(N))
+ return child_end(N->getFirstSucc());
return N->succ_end();
}
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
index 91e47b3..605e1c7 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
@@ -1,9 +1,8 @@
//===- ExprEngine.h - Path-Sensitive Expression-Level Dataflow --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -131,6 +130,9 @@
/// SymMgr - Object that manages the symbol information.
SymbolManager &SymMgr;
+ /// MRMgr - MemRegionManager object that creates memory regions.
+ MemRegionManager &MRMgr;
+
/// svalBuilder - SValBuilder object that creates SVals from expressions.
SValBuilder &svalBuilder;
@@ -180,6 +182,10 @@
AnalysisManager &getAnalysisManager() override { return AMgr; }
+ AnalysisDeclContextManager &getAnalysisDeclContextManager() {
+ return AMgr.getAnalysisDeclContextManager();
+ }
+
CheckerManager &getCheckerManager() const {
return *AMgr.getCheckerManager();
}
@@ -387,9 +393,9 @@
return StateMgr.getBasicVals();
}
- // FIXME: Remove when we migrate over to just using ValueManager.
SymbolManager &getSymbolManager() { return SymMgr; }
- const SymbolManager &getSymbolManager() const { return SymMgr; }
+ MemRegionManager &getRegionManager() { return MRMgr; }
+
// Functions for external checking of whether we have unfinished work
bool wasBlocksExhausted() const { return Engine.wasBlocksExhausted(); }
@@ -832,7 +838,7 @@
template <>
struct ProgramStateTrait<ReplayWithoutInlining> :
public ProgramStatePartialTrait<const void*> {
- static void *GDMIndex() { static int index = 0; return &index; }
+ static void *GDMIndex();
};
} // namespace ento
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/FunctionSummary.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/FunctionSummary.h
index b70faa1..53b4bf6 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/FunctionSummary.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/FunctionSummary.h
@@ -1,9 +1,8 @@
//===- FunctionSummary.h - Stores summaries of functions. -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/LoopUnrolling.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/LoopUnrolling.h
index a4c505c..d25d264 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/LoopUnrolling.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/LoopUnrolling.h
@@ -1,9 +1,8 @@
//===--- LoopUnrolling.h - Unroll loops -------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/LoopWidening.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/LoopWidening.h
index f494c5d..7484a51 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/LoopWidening.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/LoopWidening.h
@@ -1,9 +1,8 @@
//===--- LoopWidening.h - Widen loops ---------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
index 0b0e32b..071e350 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
@@ -1,9 +1,8 @@
//==- MemRegion.h - Abstract memory regions for static analysis -*- C++ -*--==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -24,6 +23,7 @@
#include "clang/AST/Expr.h"
#include "clang/AST/ExprObjC.h"
#include "clang/AST/Type.h"
+#include "clang/Analysis/AnalysisDeclContext.h"
#include "clang/Basic/LLVM.h"
#include "clang/Basic/SourceLocation.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/SVals.h"
@@ -118,6 +118,10 @@
const MemRegion *getBaseRegion() const;
+ /// Recursively retrieve the region of the most derived class instance of
+ /// regions of C++ base class instances.
+ const MemRegion *getMostDerivedObjectRegion() const;
+
/// Check if the region is a subregion of the given region.
/// Each region is a subregion of itself.
virtual bool isSubRegionOf(const MemRegion *R) const;
@@ -769,9 +773,6 @@
assert(s->getType()->isAnyPointerType() ||
s->getType()->isReferenceType() ||
s->getType()->isBlockPointerType());
-
- // populateWorklistFromSymbol() relies on this assertion, and needs to be
- // updated if more cases are introduced.
assert(isa<UnknownSpaceRegion>(sreg) || isa<HeapSpaceRegion>(sreg));
}
@@ -907,7 +908,7 @@
DeclRegion(const ValueDecl *d, const MemRegion *sReg, Kind k)
: TypedValueRegion(sReg, k), D(d) {
assert(classof(this));
- assert(d);
+ assert(d && d->isCanonicalDecl());
}
static void ProfileRegion(llvm::FoldingSetNodeID& ID, const Decl *D,
@@ -1077,7 +1078,7 @@
void dump() const;
};
-/// ElementRegin is used to represent both array elements and casts.
+/// ElementRegion is used to represent both array elements and casts.
class ElementRegion : public TypedValueRegion {
friend class MemRegionManager;
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
index 13f5b14..3b1c638 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
@@ -1,9 +1,8 @@
//== ProgramState.h - Path-sensitive "State" for tracking values -*- C++ -*--=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -348,6 +347,8 @@
/// a value of such type.
SVal getSValAsScalarOrLoc(const MemRegion *R) const;
+ using region_iterator = const MemRegion **;
+
/// Visits the symbols reachable from the given SVal using the provided
/// SymbolVisitor.
///
@@ -357,24 +358,14 @@
/// \sa ScanReachableSymbols
bool scanReachableSymbols(SVal val, SymbolVisitor& visitor) const;
- /// Visits the symbols reachable from the SVals in the given range
- /// using the provided SymbolVisitor.
- bool scanReachableSymbols(const SVal *I, const SVal *E,
- SymbolVisitor &visitor) const;
-
/// Visits the symbols reachable from the regions in the given
/// MemRegions range using the provided SymbolVisitor.
- bool scanReachableSymbols(const MemRegion * const *I,
- const MemRegion * const *E,
+ bool scanReachableSymbols(llvm::iterator_range<region_iterator> Reachable,
SymbolVisitor &visitor) const;
template <typename CB> CB scanReachableSymbols(SVal val) const;
- template <typename CB> CB scanReachableSymbols(const SVal *beg,
- const SVal *end) const;
-
template <typename CB> CB
- scanReachableSymbols(const MemRegion * const *beg,
- const MemRegion * const *end) const;
+ scanReachableSymbols(llvm::iterator_range<region_iterator> Reachable) const;
/// Create a new state in which the statement is marked as tainted.
LLVM_NODISCARD ProgramStateRef
@@ -563,15 +554,15 @@
MemRegionManager& getRegionManager() {
return svalBuilder->getRegionManager();
}
- const MemRegionManager& getRegionManager() const {
+ const MemRegionManager &getRegionManager() const {
return svalBuilder->getRegionManager();
}
CallEventManager &getCallEventManager() { return *CallEventMgr; }
- StoreManager& getStoreManager() { return *StoreMgr; }
- ConstraintManager& getConstraintManager() { return *ConstraintMgr; }
- SubEngine* getOwningEngine() { return Eng; }
+ StoreManager &getStoreManager() { return *StoreMgr; }
+ ConstraintManager &getConstraintManager() { return *ConstraintMgr; }
+ SubEngine &getOwningEngine() { return *Eng; }
ProgramStateRef removeDeadBindings(ProgramStateRef St,
const StackFrameContext *LCtx,
@@ -883,17 +874,10 @@
}
template <typename CB>
-CB ProgramState::scanReachableSymbols(const SVal *beg, const SVal *end) const {
+CB ProgramState::scanReachableSymbols(
+ llvm::iterator_range<region_iterator> Reachable) const {
CB cb(this);
- scanReachableSymbols(beg, end, cb);
- return cb;
-}
-
-template <typename CB>
-CB ProgramState::scanReachableSymbols(const MemRegion * const *beg,
- const MemRegion * const *end) const {
- CB cb(this);
- scanReachableSymbols(beg, end, cb);
+ scanReachableSymbols(Reachable, cb);
return cb;
}
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
index 64de736..da82a55 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
@@ -1,9 +1,8 @@
//ProgramStateTrait.h - Partial implementations of ProgramStateTrait -*- C++ -*-
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h
index 415bb77..0ea26bf 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h
@@ -1,9 +1,8 @@
//== ProgramState_Fwd.h - Incomplete declarations of ProgramState -*- C++ -*--=/
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h
index d2ba1f7..16c30ec 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h
@@ -1,9 +1,8 @@
//== RangedConstraintManager.h ----------------------------------*- C++ -*--==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -131,7 +130,7 @@
template <>
struct ProgramStateTrait<ConstraintRange>
: public ProgramStatePartialTrait<ConstraintRangeTy> {
- static void *GDMIndex() { static int Index; return &Index; }
+ static void *GDMIndex();
};
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Regions.def b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Regions.def
index 10f89ec..3c52c2b 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Regions.def
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Regions.def
@@ -1,9 +1,8 @@
//===-- Regions.def - Metadata about MemRegion kinds ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTSolver.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTAPI.h
similarity index 73%
rename from linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTSolver.h
rename to linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTAPI.h
index 62d1d65..5164892 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTSolver.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTAPI.h
@@ -1,9 +1,8 @@
-//== SMTSolver.h ------------------------------------------------*- C++ -*--==//
+//===- SMTAPI.h -------------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -15,13 +14,119 @@
#ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_SMTSOLVER_H
#define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_SMTSOLVER_H
-#include "clang/StaticAnalyzer/Core/PathSensitive/SMTExpr.h"
-#include "clang/StaticAnalyzer/Core/PathSensitive/SMTSort.h"
+#include "clang/Basic/TargetInfo.h"
#include "llvm/ADT/APSInt.h"
+#include "llvm/ADT/FoldingSet.h"
namespace clang {
namespace ento {
+/// Generic base class for SMT sorts
+class SMTSort {
+public:
+ SMTSort() = default;
+ virtual ~SMTSort() = default;
+
+ /// Returns true if the sort is a bitvector, calls isBitvectorSortImpl().
+ virtual bool isBitvectorSort() const { return isBitvectorSortImpl(); }
+
+ /// Returns true if the sort is a floating-point, calls isFloatSortImpl().
+ virtual bool isFloatSort() const { return isFloatSortImpl(); }
+
+ /// Returns true if the sort is a boolean, calls isBooleanSortImpl().
+ virtual bool isBooleanSort() const { return isBooleanSortImpl(); }
+
+ /// Returns the bitvector size, fails if the sort is not a bitvector
+ /// Calls getBitvectorSortSizeImpl().
+ virtual unsigned getBitvectorSortSize() const {
+ assert(isBitvectorSort() && "Not a bitvector sort!");
+ unsigned Size = getBitvectorSortSizeImpl();
+ assert(Size && "Size is zero!");
+ return Size;
+ };
+
+ /// Returns the floating-point size, fails if the sort is not a floating-point
+ /// Calls getFloatSortSizeImpl().
+ virtual unsigned getFloatSortSize() const {
+ assert(isFloatSort() && "Not a floating-point sort!");
+ unsigned Size = getFloatSortSizeImpl();
+ assert(Size && "Size is zero!");
+ return Size;
+ };
+
+ virtual void Profile(llvm::FoldingSetNodeID &ID) const = 0;
+
+ bool operator<(const SMTSort &Other) const {
+ llvm::FoldingSetNodeID ID1, ID2;
+ Profile(ID1);
+ Other.Profile(ID2);
+ return ID1 < ID2;
+ }
+
+ friend bool operator==(SMTSort const &LHS, SMTSort const &RHS) {
+ return LHS.equal_to(RHS);
+ }
+
+ virtual void print(raw_ostream &OS) const = 0;
+
+ LLVM_DUMP_METHOD void dump() const { print(llvm::errs()); }
+
+protected:
+ /// Query the SMT solver and returns true if two sorts are equal (same kind
+ /// and bit width). This does not check if the two sorts are the same objects.
+ virtual bool equal_to(SMTSort const &other) const = 0;
+
+ /// Query the SMT solver and checks if a sort is bitvector.
+ virtual bool isBitvectorSortImpl() const = 0;
+
+ /// Query the SMT solver and checks if a sort is floating-point.
+ virtual bool isFloatSortImpl() const = 0;
+
+ /// Query the SMT solver and checks if a sort is boolean.
+ virtual bool isBooleanSortImpl() const = 0;
+
+ /// Query the SMT solver and returns the sort bit width.
+ virtual unsigned getBitvectorSortSizeImpl() const = 0;
+
+ /// Query the SMT solver and returns the sort bit width.
+ virtual unsigned getFloatSortSizeImpl() const = 0;
+};
+
+/// Shared pointer for SMTSorts, used by SMTSolver API.
+using SMTSortRef = const SMTSort *;
+
+/// Generic base class for SMT exprs
+class SMTExpr {
+public:
+ SMTExpr() = default;
+ virtual ~SMTExpr() = default;
+
+ bool operator<(const SMTExpr &Other) const {
+ llvm::FoldingSetNodeID ID1, ID2;
+ Profile(ID1);
+ Other.Profile(ID2);
+ return ID1 < ID2;
+ }
+
+ virtual void Profile(llvm::FoldingSetNodeID &ID) const = 0;
+
+ friend bool operator==(SMTExpr const &LHS, SMTExpr const &RHS) {
+ return LHS.equal_to(RHS);
+ }
+
+ virtual void print(raw_ostream &OS) const = 0;
+
+ LLVM_DUMP_METHOD void dump() const { print(llvm::errs()); }
+
+protected:
+ /// Query the SMT solver and returns true if two sorts are equal (same kind
+ /// and bit width). This does not check if the two sorts are the same objects.
+ virtual bool equal_to(SMTExpr const &other) const = 0;
+};
+
+/// Shared pointer for SMTExprs, used by SMTSolver API.
+using SMTExprRef = const SMTExpr *;
+
/// Generic base class for SMT Solvers
///
/// This class is responsible for wrapping all sorts and expression generation,
@@ -71,9 +176,6 @@
// Returns an appropriate sort for the given AST.
virtual SMTSortRef getSort(const SMTExprRef &AST) = 0;
- // Returns a new SMTExprRef from an SMTExpr
- virtual SMTExprRef newExprRef(const SMTExpr &E) const = 0;
-
/// Given a constraint, adds it to the solver
virtual void addConstraint(const SMTExprRef &Exp) const = 0;
@@ -283,7 +385,10 @@
virtual void pop(unsigned NumStates = 1) = 0;
/// Reset the solver and remove all constraints.
- virtual void reset() const = 0;
+ virtual void reset() = 0;
+
+ /// Checks if the solver supports floating-points.
+ virtual bool isFPSupported() = 0;
virtual void print(raw_ostream &OS) const = 0;
};
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTConstraintManager.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTConstraintManager.h
index db05bda..72f3601 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTConstraintManager.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTConstraintManager.h
@@ -1,9 +1,8 @@
//== SMTConstraintManager.h -------------------------------------*- C++ -*--==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -18,17 +17,20 @@
#include "clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/SMTConv.h"
+typedef llvm::ImmutableSet<
+ std::pair<clang::ento::SymbolRef, const clang::ento::SMTExpr *>>
+ ConstraintSMTType;
+REGISTER_TRAIT_WITH_PROGRAMSTATE(ConstraintSMT, ConstraintSMTType)
+
namespace clang {
namespace ento {
-template <typename ConstraintSMT, typename SMTExprTy>
class SMTConstraintManager : public clang::ento::SimpleConstraintManager {
- SMTSolverRef &Solver;
+ mutable SMTSolverRef Solver = CreateZ3Solver();
public:
- SMTConstraintManager(clang::ento::SubEngine *SE, clang::ento::SValBuilder &SB,
- SMTSolverRef &S)
- : SimpleConstraintManager(SE, SB), Solver(S) {}
+ SMTConstraintManager(clang::ento::SubEngine *SE, clang::ento::SValBuilder &SB)
+ : SimpleConstraintManager(SE, SB) {}
virtual ~SMTConstraintManager() = default;
//===------------------------------------------------------------------===//
@@ -198,7 +200,7 @@
auto &CZFactory = State->get_context<ConstraintSMT>();
for (auto I = CZ.begin(), E = CZ.end(); I != E; ++I) {
- if (SymReaper.maybeDead(I->first))
+ if (SymReaper.isDead(I->first))
CZ = CZFactory.remove(CZ, *I);
}
@@ -213,11 +215,57 @@
OS << nl << sep << "Constraints:";
for (auto I = CZ.begin(), E = CZ.end(); I != E; ++I) {
OS << nl << ' ' << I->first << " : ";
- I->second.print(OS);
+ I->second->print(OS);
}
OS << nl;
}
+ bool canReasonAbout(SVal X) const override {
+ const TargetInfo &TI = getBasicVals().getContext().getTargetInfo();
+
+ Optional<nonloc::SymbolVal> SymVal = X.getAs<nonloc::SymbolVal>();
+ if (!SymVal)
+ return true;
+
+ const SymExpr *Sym = SymVal->getSymbol();
+ QualType Ty = Sym->getType();
+
+ // Complex types are not modeled
+ if (Ty->isComplexType() || Ty->isComplexIntegerType())
+ return false;
+
+ // Non-IEEE 754 floating-point types are not modeled
+ if ((Ty->isSpecificBuiltinType(BuiltinType::LongDouble) &&
+ (&TI.getLongDoubleFormat() == &llvm::APFloat::x87DoubleExtended() ||
+ &TI.getLongDoubleFormat() == &llvm::APFloat::PPCDoubleDouble())))
+ return false;
+
+ if (Ty->isRealFloatingType())
+ return Solver->isFPSupported();
+
+ if (isa<SymbolData>(Sym))
+ return true;
+
+ SValBuilder &SVB = getSValBuilder();
+
+ if (const SymbolCast *SC = dyn_cast<SymbolCast>(Sym))
+ return canReasonAbout(SVB.makeSymbolVal(SC->getOperand()));
+
+ if (const BinarySymExpr *BSE = dyn_cast<BinarySymExpr>(Sym)) {
+ if (const SymIntExpr *SIE = dyn_cast<SymIntExpr>(BSE))
+ return canReasonAbout(SVB.makeSymbolVal(SIE->getLHS()));
+
+ if (const IntSymExpr *ISE = dyn_cast<IntSymExpr>(BSE))
+ return canReasonAbout(SVB.makeSymbolVal(ISE->getRHS()));
+
+ if (const SymSymExpr *SSE = dyn_cast<SymSymExpr>(BSE))
+ return canReasonAbout(SVB.makeSymbolVal(SSE->getLHS())) &&
+ canReasonAbout(SVB.makeSymbolVal(SSE->getRHS()));
+ }
+
+ llvm_unreachable("Unsupported expression to reason about!");
+ }
+
/// Dumps SMT formula
LLVM_DUMP_METHOD void dump() const { Solver->dump(); }
@@ -227,8 +275,7 @@
const SMTExprRef &Exp) {
// Check the model, avoid simplifying AST to save time
if (checkModel(State, Sym, Exp).isConstrainedTrue())
- return State->add<ConstraintSMT>(
- std::make_pair(Sym, static_cast<const SMTExprTy &>(*Exp)));
+ return State->add<ConstraintSMT>(std::make_pair(Sym, Exp));
return nullptr;
}
@@ -244,9 +291,9 @@
if (I != IE) {
std::vector<SMTExprRef> ASTs;
- SMTExprRef Constraint = Solver->newExprRef(I++->second);
+ SMTExprRef Constraint = I++->second;
while (I != IE) {
- Constraint = Solver->mkAnd(Constraint, Solver->newExprRef(I++->second));
+ Constraint = Solver->mkAnd(Constraint, I++->second);
}
Solver->addConstraint(Constraint);
@@ -256,8 +303,8 @@
// Generate and check a Z3 model, using the given constraint.
ConditionTruthVal checkModel(ProgramStateRef State, SymbolRef Sym,
const SMTExprRef &Exp) const {
- ProgramStateRef NewState = State->add<ConstraintSMT>(
- std::make_pair(Sym, static_cast<const SMTExprTy &>(*Exp)));
+ ProgramStateRef NewState =
+ State->add<ConstraintSMT>(std::make_pair(Sym, Exp));
llvm::FoldingSetNodeID ID;
NewState->get<ConstraintSMT>().Profile(ID);
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTConv.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTConv.h
index cdca2a0..f514569 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTConv.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTConv.h
@@ -1,9 +1,8 @@
//== SMTConv.h --------------------------------------------------*- C++ -*--==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -16,7 +15,7 @@
#include "clang/AST/Expr.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/APSIntType.h"
-#include "clang/StaticAnalyzer/Core/PathSensitive/SMTSolver.h"
+#include "clang/StaticAnalyzer/Core/PathSensitive/SMTAPI.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h"
namespace clang {
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTExpr.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTExpr.h
deleted file mode 100644
index 9dedf96..0000000
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTExpr.h
+++ /dev/null
@@ -1,62 +0,0 @@
-//== SMTExpr.h --------------------------------------------------*- C++ -*--==//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines a SMT generic Expr API, which will be the base class
-// for every SMT solver expr specific class.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_SMTEXPR_H
-#define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_SMTEXPR_H
-
-#include "clang/Basic/TargetInfo.h"
-#include "llvm/ADT/FoldingSet.h"
-
-namespace clang {
-namespace ento {
-
-/// Generic base class for SMT exprs
-class SMTExpr {
-public:
- SMTExpr() = default;
- virtual ~SMTExpr() = default;
-
- bool operator<(const SMTExpr &Other) const {
- llvm::FoldingSetNodeID ID1, ID2;
- Profile(ID1);
- Other.Profile(ID2);
- return ID1 < ID2;
- }
-
- virtual void Profile(llvm::FoldingSetNodeID &ID) const {
- static int Tag = 0;
- ID.AddPointer(&Tag);
- }
-
- friend bool operator==(SMTExpr const &LHS, SMTExpr const &RHS) {
- return LHS.equal_to(RHS);
- }
-
- virtual void print(raw_ostream &OS) const = 0;
-
- LLVM_DUMP_METHOD void dump() const { print(llvm::errs()); }
-
-protected:
- /// Query the SMT solver and returns true if two sorts are equal (same kind
- /// and bit width). This does not check if the two sorts are the same objects.
- virtual bool equal_to(SMTExpr const &other) const = 0;
-};
-
-/// Shared pointer for SMTExprs, used by SMTSolver API.
-using SMTExprRef = std::shared_ptr<SMTExpr>;
-
-} // namespace ento
-} // namespace clang
-
-#endif
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTSort.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTSort.h
deleted file mode 100644
index 41ef573..0000000
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTSort.h
+++ /dev/null
@@ -1,91 +0,0 @@
-//== SMTSort.h --------------------------------------------------*- C++ -*--==//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines a SMT generic Sort API, which will be the base class
-// for every SMT solver sort specific class.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_SMTSORT_H
-#define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_SMTSORT_H
-
-#include "clang/Basic/TargetInfo.h"
-
-namespace clang {
-namespace ento {
-
-/// Generic base class for SMT sorts
-class SMTSort {
-public:
- SMTSort() = default;
- virtual ~SMTSort() = default;
-
- /// Returns true if the sort is a bitvector, calls isBitvectorSortImpl().
- virtual bool isBitvectorSort() const { return isBitvectorSortImpl(); }
-
- /// Returns true if the sort is a floating-point, calls isFloatSortImpl().
- virtual bool isFloatSort() const { return isFloatSortImpl(); }
-
- /// Returns true if the sort is a boolean, calls isBooleanSortImpl().
- virtual bool isBooleanSort() const { return isBooleanSortImpl(); }
-
- /// Returns the bitvector size, fails if the sort is not a bitvector
- /// Calls getBitvectorSortSizeImpl().
- virtual unsigned getBitvectorSortSize() const {
- assert(isBitvectorSort() && "Not a bitvector sort!");
- unsigned Size = getBitvectorSortSizeImpl();
- assert(Size && "Size is zero!");
- return Size;
- };
-
- /// Returns the floating-point size, fails if the sort is not a floating-point
- /// Calls getFloatSortSizeImpl().
- virtual unsigned getFloatSortSize() const {
- assert(isFloatSort() && "Not a floating-point sort!");
- unsigned Size = getFloatSortSizeImpl();
- assert(Size && "Size is zero!");
- return Size;
- };
-
- friend bool operator==(SMTSort const &LHS, SMTSort const &RHS) {
- return LHS.equal_to(RHS);
- }
-
- virtual void print(raw_ostream &OS) const = 0;
-
- LLVM_DUMP_METHOD void dump() const { print(llvm::errs()); }
-
-protected:
- /// Query the SMT solver and returns true if two sorts are equal (same kind
- /// and bit width). This does not check if the two sorts are the same objects.
- virtual bool equal_to(SMTSort const &other) const = 0;
-
- /// Query the SMT solver and checks if a sort is bitvector.
- virtual bool isBitvectorSortImpl() const = 0;
-
- /// Query the SMT solver and checks if a sort is floating-point.
- virtual bool isFloatSortImpl() const = 0;
-
- /// Query the SMT solver and checks if a sort is boolean.
- virtual bool isBooleanSortImpl() const = 0;
-
- /// Query the SMT solver and returns the sort bit width.
- virtual unsigned getBitvectorSortSizeImpl() const = 0;
-
- /// Query the SMT solver and returns the sort bit width.
- virtual unsigned getFloatSortSizeImpl() const = 0;
-};
-
-/// Shared pointer for SMTSorts, used by SMTSolver API.
-using SMTSortRef = std::shared_ptr<SMTSort>;
-
-} // namespace ento
-} // namespace clang
-
-#endif
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
index c9e284a..35ebefd 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
@@ -1,9 +1,8 @@
// SValBuilder.h - Construction of SVals from evaluating expressions -*- C++ -*-
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValVisitor.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValVisitor.h
index f87fdce..fc83e26 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValVisitor.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValVisitor.h
@@ -1,9 +1,8 @@
//===--- SValVisitor.h - Visitor for SVal subclasses ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.def b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.def
index a0e3099..eb05de6 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.def
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.def
@@ -1,9 +1,8 @@
//===-- SVals.def - Metadata about SVal kinds -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
index 1b79bfc..e859936 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
@@ -1,9 +1,8 @@
//===- SVals.h - Abstract Values for Static Analysis ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -530,9 +529,7 @@
return PTMDataType::getFromOpaqueValue(const_cast<void *>(Data));
}
- bool isNullMemberPointer() const {
- return getPTMData().isNull();
- }
+ bool isNullMemberPointer() const;
const DeclaratorDecl *getDecl() const;
@@ -670,13 +667,4 @@
} // namespace clang
-namespace llvm {
-
-template <typename T> struct isPodLike;
-template <> struct isPodLike<clang::ento::SVal> {
- static const bool value = true;
-};
-
-} // namespace llvm
-
#endif // LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_SVALS_H
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SimpleConstraintManager.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SimpleConstraintManager.h
index d64b90e..6bf5e94 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SimpleConstraintManager.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SimpleConstraintManager.h
@@ -1,9 +1,8 @@
//== SimpleConstraintManager.h ----------------------------------*- C++ -*--==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h
index 4ab7161..1773683 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h
@@ -1,9 +1,8 @@
//===- Store.h - Interface for maps from Locations to Values ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -260,12 +259,12 @@
public:
virtual ~BindingsHandler();
+ /// \return whether the iteration should continue.
virtual bool HandleBinding(StoreManager& SMgr, Store store,
const MemRegion *region, SVal val) = 0;
};
- class FindUniqueBinding :
- public BindingsHandler {
+ class FindUniqueBinding : public BindingsHandler {
SymbolRef Sym;
const MemRegion* Binding = nullptr;
bool First = true;
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/StoreRef.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/StoreRef.h
index 22259a2..a2dd05c 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/StoreRef.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/StoreRef.h
@@ -1,9 +1,8 @@
//===- StoreRef.h - Smart pointer for store objects -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h
index d745b0f..9296e17 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h
@@ -1,9 +1,8 @@
//== SubEngine.h - Interface of the subengine of CoreEngine --------*- C++ -*-//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SummaryManager.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SummaryManager.h
index 0a75eeb..1a56153 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SummaryManager.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SummaryManager.h
@@ -1,9 +1,8 @@
//== SummaryManager.h - Generic handling of function summaries --*- C++ -*--==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymExpr.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymExpr.h
index 69b9858..abfcd1d 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymExpr.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymExpr.h
@@ -1,9 +1,8 @@
//===- SymExpr.h - Management of Symbolic Values ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
index b014c63..d212e23 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
@@ -1,9 +1,8 @@
//===- SymbolManager.h - Management of Symbolic Values ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -558,7 +557,6 @@
SymbolMapTy TheLiving;
SymbolSetTy MetadataInUse;
- SymbolSetTy TheDead;
RegionSetTy RegionRoots;
@@ -603,21 +601,6 @@
/// symbol marking has occurred, i.e. in the MarkLiveSymbols callback.
void markInUse(SymbolRef sym);
- /// If a symbol is known to be live, marks the symbol as live.
- ///
- /// Otherwise, if the symbol cannot be proven live, it is marked as dead.
- /// Returns true if the symbol is dead, false if live.
- bool maybeDead(SymbolRef sym);
-
- using dead_iterator = SymbolSetTy::const_iterator;
-
- dead_iterator dead_begin() const { return TheDead.begin(); }
- dead_iterator dead_end() const { return TheDead.end(); }
-
- bool hasDeadSymbols() const {
- return !TheDead.empty();
- }
-
using region_iterator = RegionSetTy::const_iterator;
region_iterator region_begin() const { return RegionRoots.begin(); }
@@ -626,9 +609,9 @@
/// Returns whether or not a symbol has been confirmed dead.
///
/// This should only be called once all marking of dead symbols has completed.
- /// (For checkers, this means only in the evalDeadSymbols callback.)
- bool isDead(SymbolRef sym) const {
- return TheDead.count(sym);
+ /// (For checkers, this means only in the checkDeadSymbols callback.)
+ bool isDead(SymbolRef sym) {
+ return !isLive(sym);
}
void markLive(const MemRegion *region);
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Symbols.def b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Symbols.def
index 7d4d8fe..7163a16 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Symbols.def
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Symbols.def
@@ -1,9 +1,8 @@
//===-- Symbols.def - Metadata about SymExpr kinds --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/TaintManager.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/TaintManager.h
index ce19b71..9424392 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/TaintManager.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/TaintManager.h
@@ -1,9 +1,8 @@
//===- TaintManager.h - Managing taint --------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -34,10 +33,7 @@
template<> struct ProgramStateTrait<TaintMap>
: public ProgramStatePartialTrait<TaintMapImpl> {
- static void *GDMIndex() {
- static int index = 0;
- return &index;
- }
+ static void *GDMIndex();
};
/// The GDM component mapping derived symbols' parent symbols to their
@@ -49,10 +45,7 @@
template<> struct ProgramStateTrait<DerivedSymTaint>
: public ProgramStatePartialTrait<DerivedSymTaintImpl> {
- static void *GDMIndex() {
- static int index;
- return &index;
- }
+ static void *GDMIndex();
};
class TaintManager {
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/TaintTag.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/TaintTag.h
index 50c4b81..d1018f9 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/TaintTag.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/TaintTag.h
@@ -1,9 +1,8 @@
//===- TaintTag.h - Path-sensitive "State" for tracking values --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/WorkList.h b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/WorkList.h
index 07edd35..7beb7dd 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/WorkList.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Core/PathSensitive/WorkList.h
@@ -1,9 +1,8 @@
//==- WorkList.h - Worklist class used by CoreEngine ---------------*- C++ -*-//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -85,6 +84,7 @@
static std::unique_ptr<WorkList> makeBFSBlockDFSContents();
static std::unique_ptr<WorkList> makeUnexploredFirst();
static std::unique_ptr<WorkList> makeUnexploredFirstPriorityQueue();
+ static std::unique_ptr<WorkList> makeUnexploredFirstPriorityLocationQueue();
};
} // end ento namespace
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Frontend/AnalysisConsumer.h b/linux-x64/clang/include/clang/StaticAnalyzer/Frontend/AnalysisConsumer.h
index 59fbbc3..2d24e6a 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Frontend/AnalysisConsumer.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Frontend/AnalysisConsumer.h
@@ -1,9 +1,8 @@
//===--- AnalysisConsumer.h - Front-end Analysis Engine Hooks ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistration.h b/linux-x64/clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistration.h
index 6170954..52a5344 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistration.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistration.h
@@ -1,9 +1,8 @@
//===-- CheckerRegistration.h - Checker Registration Function ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h b/linux-x64/clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h
new file mode 100644
index 0000000..5487334
--- /dev/null
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h
@@ -0,0 +1,225 @@
+//===- CheckerRegistry.h - Maintains all available checkers -----*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_STATICANALYZER_CORE_CHECKERREGISTRY_H
+#define LLVM_CLANG_STATICANALYZER_CORE_CHECKERREGISTRY_H
+
+#include "clang/Basic/LLVM.h"
+#include "clang/StaticAnalyzer/Core/CheckerManager.h"
+#include "llvm/ADT/StringMap.h"
+#include "llvm/ADT/StringRef.h"
+#include <cstddef>
+#include <vector>
+
+// FIXME: move this information to an HTML file in docs/.
+// At the very least, a checker plugin is a dynamic library that exports
+// clang_analyzerAPIVersionString. This should be defined as follows:
+//
+// extern "C"
+// const char clang_analyzerAPIVersionString[] =
+// CLANG_ANALYZER_API_VERSION_STRING;
+//
+// This is used to check whether the current version of the analyzer is known to
+// be incompatible with a plugin. Plugins with incompatible version strings,
+// or without a version string at all, will not be loaded.
+//
+// To add a custom checker to the analyzer, the plugin must also define the
+// function clang_registerCheckers. For example:
+//
+// extern "C"
+// void clang_registerCheckers (CheckerRegistry ®istry) {
+// registry.addChecker<MainCallChecker>("example.MainCallChecker",
+// "Disallows calls to functions called main");
+// }
+//
+// The first method argument is the full name of the checker, including its
+// enclosing package. By convention, the registered name of a checker is the
+// name of the associated class (the template argument).
+// The second method argument is a short human-readable description of the
+// checker.
+//
+// The clang_registerCheckers function may add any number of checkers to the
+// registry. If any checkers require additional initialization, use the three-
+// argument form of CheckerRegistry::addChecker.
+//
+// To load a checker plugin, specify the full path to the dynamic library as
+// the argument to the -load option in the cc1 frontend. You can then enable
+// your custom checker using the -analyzer-checker:
+//
+// clang -cc1 -load </path/to/plugin.dylib> -analyze
+// -analyzer-checker=<example.MainCallChecker>
+//
+// For a complete working example, see examples/analyzer-plugin.
+
+#ifndef CLANG_ANALYZER_API_VERSION_STRING
+// FIXME: The Clang version string is not particularly granular;
+// the analyzer infrastructure can change a lot between releases.
+// Unfortunately, this string has to be statically embedded in each plugin,
+// so we can't just use the functions defined in Version.h.
+#include "clang/Basic/Version.h"
+#define CLANG_ANALYZER_API_VERSION_STRING CLANG_VERSION_STRING
+#endif
+
+namespace clang {
+
+class AnalyzerOptions;
+class DiagnosticsEngine;
+class LangOptions;
+
+namespace ento {
+
+/// Manages a set of available checkers for running a static analysis.
+/// The checkers are organized into packages by full name, where including
+/// a package will recursively include all subpackages and checkers within it.
+/// For example, the checker "core.builtin.NoReturnFunctionChecker" will be
+/// included if initializeManager() is called with an option of "core",
+/// "core.builtin", or the full name "core.builtin.NoReturnFunctionChecker".
+class CheckerRegistry {
+public:
+ CheckerRegistry(
+ ArrayRef<std::string> plugins, DiagnosticsEngine &diags,
+ AnalyzerOptions &AnOpts, const LangOptions &LangOpts,
+ ArrayRef<std::function<void(CheckerRegistry &)>>
+ checkerRegistrationFns = {});
+
+ /// Initialization functions perform any necessary setup for a checker.
+ /// They should include a call to CheckerManager::registerChecker.
+ using InitializationFunction = void (*)(CheckerManager &);
+ using ShouldRegisterFunction = bool (*)(const LangOptions &);
+
+ struct CheckerInfo;
+
+ using CheckerInfoList = std::vector<CheckerInfo>;
+ using CheckerInfoListRange = llvm::iterator_range<CheckerInfoList::iterator>;
+ using ConstCheckerInfoList = llvm::SmallVector<const CheckerInfo *, 0>;
+ using CheckerInfoSet = llvm::SetVector<const CheckerInfo *>;
+
+ struct CheckerInfo {
+ enum class StateFromCmdLine {
+ // This checker wasn't explicitly enabled or disabled.
+ State_Unspecified,
+ // This checker was explicitly disabled.
+ State_Disabled,
+ // This checker was explicitly enabled.
+ State_Enabled
+ };
+
+ InitializationFunction Initialize;
+ ShouldRegisterFunction ShouldRegister;
+ StringRef FullName;
+ StringRef Desc;
+ StringRef DocumentationUri;
+ StateFromCmdLine State = StateFromCmdLine::State_Unspecified;
+
+ ConstCheckerInfoList Dependencies;
+
+ bool isEnabled(const LangOptions &LO) const {
+ return State == StateFromCmdLine::State_Enabled && ShouldRegister(LO);
+ }
+
+ bool isDisabled(const LangOptions &LO) const {
+ return State == StateFromCmdLine::State_Disabled && ShouldRegister(LO);
+ }
+
+ CheckerInfo(InitializationFunction Fn, ShouldRegisterFunction sfn,
+ StringRef Name, StringRef Desc, StringRef DocsUri)
+ : Initialize(Fn), ShouldRegister(sfn), FullName(Name), Desc(Desc),
+ DocumentationUri(DocsUri) {}
+ };
+
+ using StateFromCmdLine = CheckerInfo::StateFromCmdLine;
+
+private:
+ template <typename T>
+ static void initializeManager(CheckerManager &mgr) {
+ mgr.registerChecker<T>();
+ }
+
+
+ template <typename T>
+ static bool returnTrue(const LangOptions &LO) {
+ return true;
+ }
+
+public:
+ /// Adds a checker to the registry. Use this non-templated overload when your
+ /// checker requires custom initialization.
+ void addChecker(InitializationFunction Fn, ShouldRegisterFunction sfn,
+ StringRef FullName, StringRef Desc, StringRef DocsUri);
+
+ /// Adds a checker to the registry. Use this templated overload when your
+ /// checker does not require any custom initialization.
+ template <class T>
+ void addChecker(StringRef FullName, StringRef Desc, StringRef DocsUri) {
+ // Avoid MSVC's Compiler Error C2276:
+ // http://msdn.microsoft.com/en-us/library/850cstw1(v=VS.80).aspx
+ addChecker(&CheckerRegistry::initializeManager<T>,
+ &CheckerRegistry::returnTrue<T>, FullName, Desc, DocsUri);
+ }
+
+ /// Makes the checker with the full name \p fullName depends on the checker
+ /// called \p dependency.
+ void addDependency(StringRef fullName, StringRef dependency) {
+ auto CheckerThatNeedsDeps =
+ [&fullName](const CheckerInfo &Chk) { return Chk.FullName == fullName; };
+ auto Dependency =
+ [&dependency](const CheckerInfo &Chk) {
+ return Chk.FullName == dependency;
+ };
+
+ auto CheckerIt = llvm::find_if(Checkers, CheckerThatNeedsDeps);
+ assert(CheckerIt != Checkers.end() &&
+ "Failed to find the checker while attempting to set up it's "
+ "dependencies!");
+
+ auto DependencyIt = llvm::find_if(Checkers, Dependency);
+ assert(DependencyIt != Checkers.end() &&
+ "Failed to find the dependency of a checker!");
+
+ CheckerIt->Dependencies.push_back(&*DependencyIt);
+ }
+
+ // FIXME: This *really* should be added to the frontend flag descriptions.
+ /// Initializes a CheckerManager by calling the initialization functions for
+ /// all checkers specified by the given CheckerOptInfo list. The order of this
+ /// list is significant; later options can be used to reverse earlier ones.
+ /// This can be used to exclude certain checkers in an included package.
+ void initializeManager(CheckerManager &mgr) const;
+
+ /// Check if every option corresponds to a specific checker or package.
+ void validateCheckerOptions() const;
+
+ /// Prints the name and description of all checkers in this registry.
+ /// This output is not intended to be machine-parseable.
+ void printHelp(raw_ostream &out, size_t maxNameChars = 30) const;
+ void printList(raw_ostream &out) const;
+
+private:
+ /// Collect all enabled checkers. The returned container preserves the order
+ /// of insertion, as dependencies have to be enabled before the checkers that
+ /// depend on them.
+ CheckerInfoSet getEnabledCheckers() const;
+
+ /// Return an iterator range of mutable CheckerInfos \p CmdLineArg applies to.
+ /// For example, it'll return the checkers for the core package, if
+ /// \p CmdLineArg is "core".
+ CheckerInfoListRange getMutableCheckersForCmdLineArg(StringRef CmdLineArg);
+
+ CheckerInfoList Checkers;
+ llvm::StringMap<size_t> Packages;
+
+ DiagnosticsEngine &Diags;
+ AnalyzerOptions &AnOpts;
+ const LangOptions &LangOpts;
+};
+
+} // namespace ento
+
+} // namespace clang
+
+#endif // LLVM_CLANG_STATICANALYZER_CORE_CHECKERREGISTRY_H
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Frontend/FrontendActions.h b/linux-x64/clang/include/clang/StaticAnalyzer/Frontend/FrontendActions.h
index ba37b7f..5f26a48 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Frontend/FrontendActions.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Frontend/FrontendActions.h
@@ -1,9 +1,8 @@
//===-- FrontendActions.h - Useful Frontend Actions -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -52,9 +51,16 @@
llvm::StringMap<Stmt *> &Bodies;
};
-void printCheckerHelp(raw_ostream &OS, ArrayRef<std::string> plugins);
+void printCheckerHelp(raw_ostream &OS,
+ ArrayRef<std::string> plugins,
+ AnalyzerOptions &opts,
+ DiagnosticsEngine &diags,
+ const LangOptions &LangOpts);
void printEnabledCheckerList(raw_ostream &OS, ArrayRef<std::string> plugins,
- const AnalyzerOptions &opts);
+ AnalyzerOptions &opts,
+ DiagnosticsEngine &diags,
+ const LangOptions &LangOpts);
+void printAnalyzerConfigList(raw_ostream &OS);
} // end GR namespace
diff --git a/linux-x64/clang/include/clang/StaticAnalyzer/Frontend/ModelConsumer.h b/linux-x64/clang/include/clang/StaticAnalyzer/Frontend/ModelConsumer.h
index fa00ffd..5f9ae78 100644
--- a/linux-x64/clang/include/clang/StaticAnalyzer/Frontend/ModelConsumer.h
+++ b/linux-x64/clang/include/clang/StaticAnalyzer/Frontend/ModelConsumer.h
@@ -1,9 +1,8 @@
//===-- ModelConsumer.h -----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Tooling/ASTDiff/ASTDiff.h b/linux-x64/clang/include/clang/Tooling/ASTDiff/ASTDiff.h
index dd11c91..d6cbc09 100644
--- a/linux-x64/clang/include/clang/Tooling/ASTDiff/ASTDiff.h
+++ b/linux-x64/clang/include/clang/Tooling/ASTDiff/ASTDiff.h
@@ -1,10 +1,9 @@
//===- ASTDiff.h - AST differencing API -----------------------*- C++ -*- -===//
//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Tooling/ASTDiff/ASTDiffInternal.h b/linux-x64/clang/include/clang/Tooling/ASTDiff/ASTDiffInternal.h
index a76ad37..0c15b30 100644
--- a/linux-x64/clang/include/clang/Tooling/ASTDiff/ASTDiffInternal.h
+++ b/linux-x64/clang/include/clang/Tooling/ASTDiff/ASTDiffInternal.h
@@ -1,10 +1,9 @@
//===- ASTDiffInternal.h --------------------------------------*- C++ -*- -===//
//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Tooling/AllTUsExecution.h b/linux-x64/clang/include/clang/Tooling/AllTUsExecution.h
index ee38433..e670f54 100644
--- a/linux-x64/clang/include/clang/Tooling/AllTUsExecution.h
+++ b/linux-x64/clang/include/clang/Tooling/AllTUsExecution.h
@@ -1,9 +1,8 @@
//===--- AllTUsExecution.h - Execute actions on all TUs. -*- C++ --------*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -72,6 +71,8 @@
unsigned ThreadCount;
};
+extern llvm::cl::opt<std::string> Filter;
+
} // end namespace tooling
} // end namespace clang
diff --git a/linux-x64/clang/include/clang/Tooling/ArgumentsAdjusters.h b/linux-x64/clang/include/clang/Tooling/ArgumentsAdjusters.h
index 94ccf1f..bf08860 100644
--- a/linux-x64/clang/include/clang/Tooling/ArgumentsAdjusters.h
+++ b/linux-x64/clang/include/clang/Tooling/ArgumentsAdjusters.h
@@ -1,9 +1,8 @@
//===- ArgumentsAdjusters.h - Command line arguments adjuster ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -61,6 +60,10 @@
const char *Extra,
ArgumentInsertPosition Pos = ArgumentInsertPosition::END);
+/// Gets an argument adjuster which strips plugin related command line
+/// arguments.
+ArgumentsAdjuster getStripPluginsAdjuster();
+
/// Gets an argument adjuster which adjusts the arguments in sequence
/// with the \p First adjuster and then with the \p Second one.
ArgumentsAdjuster combineAdjusters(ArgumentsAdjuster First,
diff --git a/linux-x64/clang/include/clang/Tooling/CommonOptionsParser.h b/linux-x64/clang/include/clang/Tooling/CommonOptionsParser.h
index 7aaa712..a5bfeee 100644
--- a/linux-x64/clang/include/clang/Tooling/CommonOptionsParser.h
+++ b/linux-x64/clang/include/clang/Tooling/CommonOptionsParser.h
@@ -1,9 +1,8 @@
//===- CommonOptionsParser.h - common options for clang tools -*- C++ -*-=====//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Tooling/CompilationDatabase.h b/linux-x64/clang/include/clang/Tooling/CompilationDatabase.h
index 37e515f..984e866 100644
--- a/linux-x64/clang/include/clang/Tooling/CompilationDatabase.h
+++ b/linux-x64/clang/include/clang/Tooling/CompilationDatabase.h
@@ -1,9 +1,8 @@
//===- CompilationDatabase.h ------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -141,27 +140,6 @@
virtual std::vector<CompileCommand> getAllCompileCommands() const;
};
-/// Interface for compilation database plugins.
-///
-/// A compilation database plugin allows the user to register custom compilation
-/// databases that are picked up as compilation database if the corresponding
-/// library is linked in. To register a plugin, declare a static variable like:
-///
-/// \code
-/// static CompilationDatabasePluginRegistry::Add<MyDatabasePlugin>
-/// X("my-compilation-database", "Reads my own compilation database");
-/// \endcode
-class CompilationDatabasePlugin {
-public:
- virtual ~CompilationDatabasePlugin();
-
- /// Loads a compilation database from a build directory.
- ///
- /// \see CompilationDatabase::loadFromDirectory().
- virtual std::unique_ptr<CompilationDatabase>
- loadFromDirectory(StringRef Directory, std::string &ErrorMessage) = 0;
-};
-
/// A compilation database that returns a single compile command line.
///
/// Useful when we want a tool to behave more like a compiler invocation.
diff --git a/linux-x64/clang/include/clang/Tooling/CompilationDatabasePluginRegistry.h b/linux-x64/clang/include/clang/Tooling/CompilationDatabasePluginRegistry.h
index 051a08e..8c58ad9 100644
--- a/linux-x64/clang/include/clang/Tooling/CompilationDatabasePluginRegistry.h
+++ b/linux-x64/clang/include/clang/Tooling/CompilationDatabasePluginRegistry.h
@@ -1,9 +1,8 @@
//===- CompilationDatabasePluginRegistry.h ----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -16,6 +15,27 @@
namespace clang {
namespace tooling {
+/// Interface for compilation database plugins.
+///
+/// A compilation database plugin allows the user to register custom compilation
+/// databases that are picked up as compilation database if the corresponding
+/// library is linked in. To register a plugin, declare a static variable like:
+///
+/// \code
+/// static CompilationDatabasePluginRegistry::Add<MyDatabasePlugin>
+/// X("my-compilation-database", "Reads my own compilation database");
+/// \endcode
+class CompilationDatabasePlugin {
+public:
+ virtual ~CompilationDatabasePlugin();
+
+ /// Loads a compilation database from a build directory.
+ ///
+ /// \see CompilationDatabase::loadFromDirectory().
+ virtual std::unique_ptr<CompilationDatabase>
+ loadFromDirectory(StringRef Directory, std::string &ErrorMessage) = 0;
+};
+
using CompilationDatabasePluginRegistry =
llvm::Registry<CompilationDatabasePlugin>;
diff --git a/linux-x64/clang/include/clang/Tooling/Core/Diagnostic.h b/linux-x64/clang/include/clang/Tooling/Core/Diagnostic.h
index ddb4010..646bb56 100644
--- a/linux-x64/clang/include/clang/Tooling/Core/Diagnostic.h
+++ b/linux-x64/clang/include/clang/Tooling/Core/Diagnostic.h
@@ -1,9 +1,8 @@
//===--- Diagnostic.h - Framework for clang diagnostics tools --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Tooling/Core/Lookup.h b/linux-x64/clang/include/clang/Tooling/Core/Lookup.h
index bc2b4db..a27e915 100644
--- a/linux-x64/clang/include/clang/Tooling/Core/Lookup.h
+++ b/linux-x64/clang/include/clang/Tooling/Core/Lookup.h
@@ -1,9 +1,8 @@
//===--- Lookup.h - Framework for clang refactoring tools --*- C++ -*------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Tooling/Core/Replacement.h b/linux-x64/clang/include/clang/Tooling/Core/Replacement.h
index ba11ca4..09374c5 100644
--- a/linux-x64/clang/include/clang/Tooling/Core/Replacement.h
+++ b/linux-x64/clang/include/clang/Tooling/Core/Replacement.h
@@ -1,9 +1,8 @@
//===- Replacement.h - Framework for clang refactoring tools ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Tooling/DiagnosticsYaml.h b/linux-x64/clang/include/clang/Tooling/DiagnosticsYaml.h
index bf0732b..1cd2a4e 100644
--- a/linux-x64/clang/include/clang/Tooling/DiagnosticsYaml.h
+++ b/linux-x64/clang/include/clang/Tooling/DiagnosticsYaml.h
@@ -1,9 +1,8 @@
//===-- DiagnosticsYaml.h -- Serialiazation for Diagnosticss ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -22,10 +21,19 @@
#include <string>
LLVM_YAML_IS_SEQUENCE_VECTOR(clang::tooling::Diagnostic)
+LLVM_YAML_IS_SEQUENCE_VECTOR(clang::tooling::DiagnosticMessage)
namespace llvm {
namespace yaml {
+template <> struct MappingTraits<clang::tooling::DiagnosticMessage> {
+ static void mapping(IO &Io, clang::tooling::DiagnosticMessage &M) {
+ Io.mapRequired("Message", M.Message);
+ Io.mapOptional("FilePath", M.FilePath);
+ Io.mapOptional("FileOffset", M.FileOffset);
+ }
+};
+
template <> struct MappingTraits<clang::tooling::Diagnostic> {
/// Helper to (de)serialize a Diagnostic since we don't have direct
/// access to its data members.
@@ -59,6 +67,7 @@
Io.mapRequired("Message", Keys->Message.Message);
Io.mapRequired("FileOffset", Keys->Message.FileOffset);
Io.mapRequired("FilePath", Keys->Message.FilePath);
+ Io.mapOptional("Notes", Keys->Notes);
// FIXME: Export properly all the different fields.
diff --git a/linux-x64/clang/include/clang/Tooling/Execution.h b/linux-x64/clang/include/clang/Tooling/Execution.h
index 7f4b145..74f0df5 100644
--- a/linux-x64/clang/include/clang/Tooling/Execution.h
+++ b/linux-x64/clang/include/clang/Tooling/Execution.h
@@ -1,9 +1,8 @@
//===--- Execution.h - Executing clang frontend actions -*- C++ ---------*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -37,6 +36,8 @@
namespace clang {
namespace tooling {
+extern llvm::cl::opt<std::string> ExecutorName;
+
/// An abstraction for the result of a tool execution. For example, the
/// underlying result can be in-memory or on-disk.
///
diff --git a/linux-x64/clang/include/clang/Tooling/FileMatchTrie.h b/linux-x64/clang/include/clang/Tooling/FileMatchTrie.h
index 11d12f3..6f5c8da 100644
--- a/linux-x64/clang/include/clang/Tooling/FileMatchTrie.h
+++ b/linux-x64/clang/include/clang/Tooling/FileMatchTrie.h
@@ -1,9 +1,8 @@
//===- FileMatchTrie.h ------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Tooling/FixIt.h b/linux-x64/clang/include/clang/Tooling/FixIt.h
index b36f378..8c76236 100644
--- a/linux-x64/clang/include/clang/Tooling/FixIt.h
+++ b/linux-x64/clang/include/clang/Tooling/FixIt.h
@@ -1,9 +1,8 @@
//===--- FixIt.h - FixIt Hint utilities -------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Tooling/Inclusions/HeaderIncludes.h b/linux-x64/clang/include/clang/Tooling/Inclusions/HeaderIncludes.h
index d99a328..ec6f0ea 100644
--- a/linux-x64/clang/include/clang/Tooling/Inclusions/HeaderIncludes.h
+++ b/linux-x64/clang/include/clang/Tooling/Inclusions/HeaderIncludes.h
@@ -1,9 +1,8 @@
//===--- HeaderIncludes.h - Insert/Delete #includes for C++ code--*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Tooling/Inclusions/IncludeStyle.h b/linux-x64/clang/include/clang/Tooling/Inclusions/IncludeStyle.h
index a093dff..7191380 100644
--- a/linux-x64/clang/include/clang/Tooling/Inclusions/IncludeStyle.h
+++ b/linux-x64/clang/include/clang/Tooling/Inclusions/IncludeStyle.h
@@ -1,9 +1,8 @@
//===--- IncludeStyle.h - Style of C++ #include directives -------*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Tooling/JSONCompilationDatabase.h b/linux-x64/clang/include/clang/Tooling/JSONCompilationDatabase.h
index 882afc6..9658245 100644
--- a/linux-x64/clang/include/clang/Tooling/JSONCompilationDatabase.h
+++ b/linux-x64/clang/include/clang/Tooling/JSONCompilationDatabase.h
@@ -1,9 +1,8 @@
//===- JSONCompilationDatabase.h --------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring.h b/linux-x64/clang/include/clang/Tooling/Refactoring.h
index 64b018e..b82b09f 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring.h
@@ -1,9 +1,8 @@
//===--- Refactoring.h - Framework for clang refactoring tools --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/ASTSelection.h b/linux-x64/clang/include/clang/Tooling/Refactoring/ASTSelection.h
index aa02a68..b87ed28 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/ASTSelection.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/ASTSelection.h
@@ -1,9 +1,8 @@
//===--- ASTSelection.h - Clang refactoring library -----------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/AtomicChange.h b/linux-x64/clang/include/clang/Tooling/Refactoring/AtomicChange.h
index bfe042f..32e4624 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/AtomicChange.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/AtomicChange.h
@@ -1,9 +1,8 @@
//===--- AtomicChange.h - AtomicChange class --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/Extract/Extract.h b/linux-x64/clang/include/clang/Tooling/Refactoring/Extract/Extract.h
index 2fd76d2..9309913 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/Extract/Extract.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/Extract/Extract.h
@@ -1,9 +1,8 @@
//===--- Extract.h - Clang refactoring library ----------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h b/linux-x64/clang/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h
index bd314f0..41a448f 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h
@@ -1,9 +1,8 @@
//===--- RecursiveSymbolVisitor.h - Clang refactoring library -------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringAction.h b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringAction.h
index c408023..d4294dd 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringAction.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringAction.h
@@ -1,9 +1,8 @@
//===--- RefactoringAction.h - Clang refactoring library ------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringActionRule.h b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringActionRule.h
index ce4a91c..0c6e38a 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringActionRule.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringActionRule.h
@@ -1,9 +1,8 @@
//===--- RefactoringActionRule.h - Clang refactoring library -------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringActionRuleRequirements.h b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringActionRuleRequirements.h
index 355a6a5..6a6dd83 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringActionRuleRequirements.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringActionRuleRequirements.h
@@ -1,9 +1,8 @@
//===--- RefactoringActionRuleRequirements.h - Clang refactoring library --===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringActionRules.h b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringActionRules.h
index 33206d9..e9606fd 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringActionRules.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringActionRules.h
@@ -1,9 +1,8 @@
//===--- RefactoringActionRules.h - Clang refactoring library -------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringActionRulesInternal.h b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringActionRulesInternal.h
index 75b6c8f..cc6ae83 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringActionRulesInternal.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringActionRulesInternal.h
@@ -1,9 +1,8 @@
//===--- RefactoringActionRulesInternal.h - Clang refactoring library -----===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringDiagnostic.h b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringDiagnostic.h
index 6767dc7..967e7b5 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringDiagnostic.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringDiagnostic.h
@@ -1,30 +1,14 @@
//===--- RefactoringDiagnostic.h - ------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_TOOLING_REFACTORING_REFACTORINGDIAGNOSTIC_H
#define LLVM_CLANG_TOOLING_REFACTORING_REFACTORINGDIAGNOSTIC_H
-#include "clang/Basic/Diagnostic.h"
-#include "clang/Basic/PartialDiagnostic.h"
-
-namespace clang {
-namespace diag {
-enum {
-#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \
- SHOWINSYSHEADER, CATEGORY) \
- ENUM,
-#define REFACTORINGSTART
-#include "clang/Basic/DiagnosticRefactoringKinds.inc"
-#undef DIAG
- NUM_BUILTIN_REFACTORING_DIAGNOSTICS
-};
-} // end namespace diag
-} // end namespace clang
+#include "clang/Basic/DiagnosticRefactoring.h"
#endif // LLVM_CLANG_TOOLING_REFACTORING_REFACTORINGDIAGNOSTIC_H
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringOption.h b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringOption.h
index 5011223..659e02b 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringOption.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringOption.h
@@ -1,9 +1,8 @@
//===--- RefactoringOption.h - Clang refactoring library ------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringOptionVisitor.h b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringOptionVisitor.h
index aea8fa5..d58b113 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringOptionVisitor.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringOptionVisitor.h
@@ -1,9 +1,8 @@
//===--- RefactoringOptionVisitor.h - Clang refactoring library -----------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringOptions.h b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringOptions.h
index e45c0a0..f25f526 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringOptions.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringOptions.h
@@ -1,9 +1,8 @@
//===--- RefactoringOptions.h - Clang refactoring library -----------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringResultConsumer.h b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringResultConsumer.h
index 005eb87..2035c02 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringResultConsumer.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringResultConsumer.h
@@ -1,9 +1,8 @@
//===--- RefactoringResultConsumer.h - Clang refactoring library ----------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringRuleContext.h b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringRuleContext.h
index 882ab82..5271a54 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringRuleContext.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/RefactoringRuleContext.h
@@ -1,9 +1,8 @@
//===--- RefactoringRuleContext.h - Clang refactoring library -------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/RenamingAction.h b/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/RenamingAction.h
index 5771a1c..315ce99 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/RenamingAction.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/RenamingAction.h
@@ -1,9 +1,8 @@
//===--- RenamingAction.h - Clang refactoring library ---------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/SymbolName.h b/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/SymbolName.h
index 42e0a5c..9131a45 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/SymbolName.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/SymbolName.h
@@ -1,9 +1,8 @@
//===--- SymbolName.h - Clang refactoring library -------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/SymbolOccurrences.h b/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/SymbolOccurrences.h
index 0f85301..3b903cb 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/SymbolOccurrences.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/SymbolOccurrences.h
@@ -1,9 +1,8 @@
//===--- SymbolOccurrences.h - Clang refactoring library ------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/USRFinder.h b/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/USRFinder.h
index 3622bd0..30f7f0a 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/USRFinder.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/USRFinder.h
@@ -1,9 +1,8 @@
//===--- USRFinder.h - Clang refactoring library --------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/USRFindingAction.h b/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/USRFindingAction.h
index ebc9790..726987d 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/USRFindingAction.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/USRFindingAction.h
@@ -1,9 +1,8 @@
//===--- USRFindingAction.h - Clang refactoring library -------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/USRLocFinder.h b/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/USRLocFinder.h
index e1228e9..7a7dd76 100644
--- a/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/USRLocFinder.h
+++ b/linux-x64/clang/include/clang/Tooling/Refactoring/Rename/USRLocFinder.h
@@ -1,9 +1,8 @@
//===--- USRLocFinder.h - Clang refactoring library -----------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Tooling/RefactoringCallbacks.h b/linux-x64/clang/include/clang/Tooling/RefactoringCallbacks.h
index 2137e00..ac3f28d 100644
--- a/linux-x64/clang/include/clang/Tooling/RefactoringCallbacks.h
+++ b/linux-x64/clang/include/clang/Tooling/RefactoringCallbacks.h
@@ -1,9 +1,8 @@
//===--- RefactoringCallbacks.h - Structural query framework ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Tooling/ReplacementsYaml.h b/linux-x64/clang/include/clang/Tooling/ReplacementsYaml.h
index 8e41525..83e35d6 100644
--- a/linux-x64/clang/include/clang/Tooling/ReplacementsYaml.h
+++ b/linux-x64/clang/include/clang/Tooling/ReplacementsYaml.h
@@ -1,9 +1,8 @@
//===-- ReplacementsYaml.h -- Serialiazation for Replacements ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/clang/Tooling/StandaloneExecution.h b/linux-x64/clang/include/clang/Tooling/StandaloneExecution.h
index 96487b4..5fbc1e4 100644
--- a/linux-x64/clang/include/clang/Tooling/StandaloneExecution.h
+++ b/linux-x64/clang/include/clang/Tooling/StandaloneExecution.h
@@ -1,9 +1,8 @@
//===--- StandaloneExecution.h - Standalone execution. -*- C++ ----------*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/clang/Tooling/ToolExecutorPluginRegistry.h b/linux-x64/clang/include/clang/Tooling/ToolExecutorPluginRegistry.h
index 921689d..5304ff2 100644
--- a/linux-x64/clang/include/clang/Tooling/ToolExecutorPluginRegistry.h
+++ b/linux-x64/clang/include/clang/Tooling/ToolExecutorPluginRegistry.h
@@ -1,9 +1,8 @@
//===- ToolExecutorPluginRegistry.h -----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/clang/Tooling/Tooling.h b/linux-x64/clang/include/clang/Tooling/Tooling.h
index 358acf3..f76484a 100644
--- a/linux-x64/clang/include/clang/Tooling/Tooling.h
+++ b/linux-x64/clang/include/clang/Tooling/Tooling.h
@@ -1,9 +1,8 @@
//===- Tooling.h - Framework for standalone Clang tools ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -205,7 +204,7 @@
///
/// \return The resulting AST or null if an error occurred.
std::unique_ptr<ASTUnit>
-buildASTFromCode(const Twine &Code, const Twine &FileName = "input.cc",
+buildASTFromCode(StringRef Code, StringRef FileName = "input.cc",
std::shared_ptr<PCHContainerOperations> PCHContainerOps =
std::make_shared<PCHContainerOperations>());
@@ -223,10 +222,10 @@
///
/// \return The resulting AST or null if an error occurred.
std::unique_ptr<ASTUnit> buildASTFromCodeWithArgs(
- const Twine &Code, const std::vector<std::string> &Args,
- const Twine &FileName = "input.cc", const Twine &ToolName = "clang-tool",
+ StringRef Code, const std::vector<std::string> &Args,
+ StringRef FileName = "input.cc", StringRef ToolName = "clang-tool",
std::shared_ptr<PCHContainerOperations> PCHContainerOps =
- std::make_shared<PCHContainerOperations>(),
+ std::make_shared<PCHContainerOperations>(),
ArgumentsAdjuster Adjuster = getClangStripDependencyFileAdjuster());
/// Utility to run a FrontendAction in a single clang invocation.
diff --git a/linux-x64/clang/include/lld/Common/Args.h b/linux-x64/clang/include/lld/Common/Args.h
index 769d484..d943646 100644
--- a/linux-x64/clang/include/lld/Common/Args.h
+++ b/linux-x64/clang/include/lld/Common/Args.h
@@ -1,9 +1,8 @@
//===- Args.h ---------------------------------------------------*- C++ -*-===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -11,6 +10,7 @@
#define LLD_ARGS_H
#include "lld/Common/LLVM.h"
+#include "llvm/Support/CodeGen.h"
#include "llvm/Support/MemoryBuffer.h"
#include <vector>
@@ -22,7 +22,11 @@
namespace lld {
namespace args {
+
+llvm::CodeGenOpt::Level getCGOptLevel(int OptLevelLTO);
+
int getInteger(llvm::opt::InputArgList &Args, unsigned Key, int Default);
+
std::vector<StringRef> getStrings(llvm::opt::InputArgList &Args, int Id);
uint64_t getZOptionValue(llvm::opt::InputArgList &Args, int Id, StringRef Key,
diff --git a/linux-x64/clang/include/lld/Common/Driver.h b/linux-x64/clang/include/lld/Common/Driver.h
index f6d9293..745ef72 100644
--- a/linux-x64/clang/include/lld/Common/Driver.h
+++ b/linux-x64/clang/include/lld/Common/Driver.h
@@ -1,9 +1,8 @@
//===- lld/Common/Driver.h - Linker Driver Emulator -----------------------===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/Common/ErrorHandler.h b/linux-x64/clang/include/lld/Common/ErrorHandler.h
index c169f7b..bd9c257 100644
--- a/linux-x64/clang/include/lld/Common/ErrorHandler.h
+++ b/linux-x64/clang/include/lld/Common/ErrorHandler.h
@@ -1,9 +1,8 @@
//===- ErrorHandler.h -------------------------------------------*- C++ -*-===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/lld/Common/LLVM.h b/linux-x64/clang/include/lld/Common/LLVM.h
index b5d0e2b..944bb41 100644
--- a/linux-x64/clang/include/lld/Common/LLVM.h
+++ b/linux-x64/clang/include/lld/Common/LLVM.h
@@ -1,9 +1,8 @@
//===--- LLVM.h - Import various common LLVM datatypes ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -22,53 +21,69 @@
#include <utility>
namespace llvm {
- // ADT's.
- class Error;
- class StringRef;
- class Twine;
- class MemoryBuffer;
- class MemoryBufferRef;
- template<typename T> class ArrayRef;
- template<unsigned InternalLen> class SmallString;
- template<typename T, unsigned N> class SmallVector;
- template<typename T> class SmallVectorImpl;
+// ADT's.
+class raw_ostream;
+class Error;
+class StringRef;
+class Twine;
+class MemoryBuffer;
+class MemoryBufferRef;
+template <typename T> class ArrayRef;
+template <unsigned InternalLen> class SmallString;
+template <typename T, unsigned N> class SmallVector;
+template <typename T> class ErrorOr;
+template <typename T> class Expected;
- template<typename T>
- struct SaveAndRestore;
+namespace object {
+class WasmObjectFile;
+struct WasmSection;
+struct WasmSegment;
+class WasmSymbol;
+} // namespace object
- template<typename T>
- class ErrorOr;
-
- template<typename T>
- class Expected;
-
- class raw_ostream;
- // TODO: DenseMap, ...
-}
+namespace wasm {
+struct WasmEvent;
+struct WasmEventType;
+struct WasmFunction;
+struct WasmGlobal;
+struct WasmGlobalType;
+struct WasmRelocation;
+struct WasmSignature;
+} // namespace wasm
+} // namespace llvm
namespace lld {
- // Casting operators.
- using llvm::isa;
- using llvm::cast;
- using llvm::dyn_cast;
- using llvm::dyn_cast_or_null;
- using llvm::cast_or_null;
+// Casting operators.
+using llvm::cast;
+using llvm::cast_or_null;
+using llvm::dyn_cast;
+using llvm::dyn_cast_or_null;
+using llvm::isa;
- // ADT's.
- using llvm::Error;
- using llvm::StringRef;
- using llvm::Twine;
- using llvm::MemoryBuffer;
- using llvm::MemoryBufferRef;
- using llvm::ArrayRef;
- using llvm::SmallString;
- using llvm::SmallVector;
- using llvm::SmallVectorImpl;
- using llvm::SaveAndRestore;
- using llvm::ErrorOr;
- using llvm::Expected;
+// ADT's.
+using llvm::ArrayRef;
+using llvm::Error;
+using llvm::ErrorOr;
+using llvm::Expected;
+using llvm::MemoryBuffer;
+using llvm::MemoryBufferRef;
+using llvm::raw_ostream;
+using llvm::SmallString;
+using llvm::SmallVector;
+using llvm::StringRef;
+using llvm::Twine;
- using llvm::raw_ostream;
+using llvm::object::WasmObjectFile;
+using llvm::object::WasmSection;
+using llvm::object::WasmSegment;
+using llvm::object::WasmSymbol;
+using llvm::wasm::WasmEvent;
+using llvm::wasm::WasmEventType;
+using llvm::wasm::WasmFunction;
+using llvm::wasm::WasmGlobal;
+using llvm::wasm::WasmGlobalType;
+using llvm::wasm::WasmRelocation;
+using llvm::wasm::WasmSignature;
} // end namespace lld.
namespace std {
@@ -78,6 +93,6 @@
return llvm::hash_value(s);
}
};
-}
+} // namespace std
#endif
diff --git a/linux-x64/clang/include/lld/Common/Memory.h b/linux-x64/clang/include/lld/Common/Memory.h
index 699f7c1..78f6e24 100644
--- a/linux-x64/clang/include/lld/Common/Memory.h
+++ b/linux-x64/clang/include/lld/Common/Memory.h
@@ -1,9 +1,8 @@
//===- Memory.h -------------------------------------------------*- C++ -*-===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/lld/Common/Reproduce.h b/linux-x64/clang/include/lld/Common/Reproduce.h
index 0f425de..ac7a822 100644
--- a/linux-x64/clang/include/lld/Common/Reproduce.h
+++ b/linux-x64/clang/include/lld/Common/Reproduce.h
@@ -1,9 +1,8 @@
//===- Reproduce.h - Utilities for creating reproducers ---------*- C++ -*-===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/Common/Strings.h b/linux-x64/clang/include/lld/Common/Strings.h
index e17b257..efc9245 100644
--- a/linux-x64/clang/include/lld/Common/Strings.h
+++ b/linux-x64/clang/include/lld/Common/Strings.h
@@ -1,9 +1,8 @@
//===- Strings.h ------------------------------------------------*- C++ -*-===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -41,9 +40,6 @@
std::vector<llvm::GlobPattern> Patterns;
};
-inline llvm::ArrayRef<uint8_t> toArrayRef(llvm::StringRef S) {
- return {reinterpret_cast<const uint8_t *>(S.data()), S.size()};
-}
} // namespace lld
#endif
diff --git a/linux-x64/clang/include/lld/Common/TargetOptionsCommandFlags.h b/linux-x64/clang/include/lld/Common/TargetOptionsCommandFlags.h
index 8443b18..9345e61 100644
--- a/linux-x64/clang/include/lld/Common/TargetOptionsCommandFlags.h
+++ b/linux-x64/clang/include/lld/Common/TargetOptionsCommandFlags.h
@@ -1,9 +1,8 @@
//===-- TargetOptionsCommandFlags.h ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -16,7 +15,8 @@
#include "llvm/Target/TargetOptions.h"
namespace lld {
-llvm::TargetOptions InitTargetOptionsFromCodeGenFlags();
-llvm::Optional<llvm::CodeModel::Model> GetCodeModelFromCMModel();
-std::string GetCPUStr();
+llvm::TargetOptions initTargetOptionsFromCodeGenFlags();
+llvm::Optional<llvm::CodeModel::Model> getCodeModelFromCMModel();
+std::string getCPUStr();
+std::vector<std::string> getMAttrs();
}
diff --git a/linux-x64/clang/include/lld/Common/Threads.h b/linux-x64/clang/include/lld/Common/Threads.h
index 8545907..e356fcd 100644
--- a/linux-x64/clang/include/lld/Common/Threads.h
+++ b/linux-x64/clang/include/lld/Common/Threads.h
@@ -1,9 +1,8 @@
//===- Threads.h ------------------------------------------------*- C++ -*-===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -74,7 +73,7 @@
}
inline void parallelForEachN(size_t Begin, size_t End,
- std::function<void(size_t)> Fn) {
+ llvm::function_ref<void(size_t)> Fn) {
if (ThreadsEnabled)
for_each_n(llvm::parallel::par, Begin, End, Fn);
else
diff --git a/linux-x64/clang/include/lld/Common/Timer.h b/linux-x64/clang/include/lld/Common/Timer.h
index 6654af6..e2b6951 100644
--- a/linux-x64/clang/include/lld/Common/Timer.h
+++ b/linux-x64/clang/include/lld/Common/Timer.h
@@ -1,9 +1,8 @@
//===- Timer.h ----------------------------------------------*- C++ -*-===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/Common/Version.h b/linux-x64/clang/include/lld/Common/Version.h
index 23a10ed..9571aa2 100644
--- a/linux-x64/clang/include/lld/Common/Version.h
+++ b/linux-x64/clang/include/lld/Common/Version.h
@@ -1,9 +1,8 @@
//===- lld/Common/Version.h - LLD Version Number ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/lld/Core/AbsoluteAtom.h b/linux-x64/clang/include/lld/Core/AbsoluteAtom.h
index ed25297..5214b41 100644
--- a/linux-x64/clang/include/lld/Core/AbsoluteAtom.h
+++ b/linux-x64/clang/include/lld/Core/AbsoluteAtom.h
@@ -1,9 +1,8 @@
//===- Core/AbsoluteAtom.h - An absolute Atom -----------------------------===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/Core/ArchiveLibraryFile.h b/linux-x64/clang/include/lld/Core/ArchiveLibraryFile.h
index 2c736e7..0abef40 100644
--- a/linux-x64/clang/include/lld/Core/ArchiveLibraryFile.h
+++ b/linux-x64/clang/include/lld/Core/ArchiveLibraryFile.h
@@ -1,9 +1,8 @@
//===- Core/ArchiveLibraryFile.h - Models static library ------------------===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/Core/Atom.h b/linux-x64/clang/include/lld/Core/Atom.h
index 149c3d5..4d3d27a 100644
--- a/linux-x64/clang/include/lld/Core/Atom.h
+++ b/linux-x64/clang/include/lld/Core/Atom.h
@@ -1,9 +1,8 @@
//===- Core/Atom.h - A node in linking graph --------------------*- C++ -*-===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/Core/DefinedAtom.h b/linux-x64/clang/include/lld/Core/DefinedAtom.h
index ba10b45..4b1de7f 100644
--- a/linux-x64/clang/include/lld/Core/DefinedAtom.h
+++ b/linux-x64/clang/include/lld/Core/DefinedAtom.h
@@ -1,9 +1,8 @@
//===- Core/DefinedAtom.h - An Atom with content --------------------------===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/Core/Error.h b/linux-x64/clang/include/lld/Core/Error.h
index 36a3672..c18fe96 100644
--- a/linux-x64/clang/include/lld/Core/Error.h
+++ b/linux-x64/clang/include/lld/Core/Error.h
@@ -1,9 +1,8 @@
//===- Error.h - system_error extensions for lld ----------------*- C++ -*-===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/lld/Core/File.h b/linux-x64/clang/include/lld/Core/File.h
index 54f5335..492f359 100644
--- a/linux-x64/clang/include/lld/Core/File.h
+++ b/linux-x64/clang/include/lld/Core/File.h
@@ -1,9 +1,8 @@
//===- Core/File.h - A Container of Atoms ---------------------------------===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/Core/Instrumentation.h b/linux-x64/clang/include/lld/Core/Instrumentation.h
index 939d645..602a37a 100644
--- a/linux-x64/clang/include/lld/Core/Instrumentation.h
+++ b/linux-x64/clang/include/lld/Core/Instrumentation.h
@@ -1,9 +1,8 @@
//===- include/Core/Instrumentation.h - Instrumentation API ---------------===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/lld/Core/LinkingContext.h b/linux-x64/clang/include/lld/Core/LinkingContext.h
index 52ab1a2..e090ff9 100644
--- a/linux-x64/clang/include/lld/Core/LinkingContext.h
+++ b/linux-x64/clang/include/lld/Core/LinkingContext.h
@@ -1,9 +1,8 @@
//===- lld/Core/LinkingContext.h - Linker Target Info Interface -*- C++ -*-===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/Core/Node.h b/linux-x64/clang/include/lld/Core/Node.h
index c304824..a224793 100644
--- a/linux-x64/clang/include/lld/Core/Node.h
+++ b/linux-x64/clang/include/lld/Core/Node.h
@@ -1,9 +1,8 @@
//===- lld/Core/Node.h - Input file class -----------------------*- C++ -*-===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/lld/Core/Pass.h b/linux-x64/clang/include/lld/Core/Pass.h
index bfe3f9b..57d5a40 100644
--- a/linux-x64/clang/include/lld/Core/Pass.h
+++ b/linux-x64/clang/include/lld/Core/Pass.h
@@ -1,9 +1,8 @@
//===------ Core/Pass.h - Base class for linker passes ----------*- C++ -*-===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/Core/PassManager.h b/linux-x64/clang/include/lld/Core/PassManager.h
index f2ef10f..02499d0 100644
--- a/linux-x64/clang/include/lld/Core/PassManager.h
+++ b/linux-x64/clang/include/lld/Core/PassManager.h
@@ -1,9 +1,8 @@
//===- lld/Core/PassManager.h - Manage linker passes ----------------------===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/Core/Reader.h b/linux-x64/clang/include/lld/Core/Reader.h
index 6cf6282..a2d7912 100644
--- a/linux-x64/clang/include/lld/Core/Reader.h
+++ b/linux-x64/clang/include/lld/Core/Reader.h
@@ -1,9 +1,8 @@
//===- lld/Core/Reader.h - Abstract File Format Reading Interface ---------===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/Core/Reference.h b/linux-x64/clang/include/lld/Core/Reference.h
index 1d3003c..191e0f0 100644
--- a/linux-x64/clang/include/lld/Core/Reference.h
+++ b/linux-x64/clang/include/lld/Core/Reference.h
@@ -1,9 +1,8 @@
//===- Core/References.h - A Reference to Another Atom ----------*- C++ -*-===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/Core/Resolver.h b/linux-x64/clang/include/lld/Core/Resolver.h
index 5157c9f..9ab2195 100644
--- a/linux-x64/clang/include/lld/Core/Resolver.h
+++ b/linux-x64/clang/include/lld/Core/Resolver.h
@@ -1,9 +1,8 @@
//===- Core/Resolver.h - Resolves Atom References -------------------------===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/Core/SharedLibraryAtom.h b/linux-x64/clang/include/lld/Core/SharedLibraryAtom.h
index 7fec7a3..171d154 100644
--- a/linux-x64/clang/include/lld/Core/SharedLibraryAtom.h
+++ b/linux-x64/clang/include/lld/Core/SharedLibraryAtom.h
@@ -1,9 +1,8 @@
//===- Core/SharedLibraryAtom.h - A Shared Library Atom -------------------===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/Core/SharedLibraryFile.h b/linux-x64/clang/include/lld/Core/SharedLibraryFile.h
index 53bf967..846d1f2 100644
--- a/linux-x64/clang/include/lld/Core/SharedLibraryFile.h
+++ b/linux-x64/clang/include/lld/Core/SharedLibraryFile.h
@@ -1,9 +1,8 @@
//===- Core/SharedLibraryFile.h - Models shared libraries as Atoms --------===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/Core/Simple.h b/linux-x64/clang/include/lld/Core/Simple.h
index feeed6a..f211beb 100644
--- a/linux-x64/clang/include/lld/Core/Simple.h
+++ b/linux-x64/clang/include/lld/Core/Simple.h
@@ -1,9 +1,8 @@
//===- lld/Core/Simple.h - Simple implementations of Atom and File --------===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/lld/Core/SymbolTable.h b/linux-x64/clang/include/lld/Core/SymbolTable.h
index 156c56e..c7502a4 100644
--- a/linux-x64/clang/include/lld/Core/SymbolTable.h
+++ b/linux-x64/clang/include/lld/Core/SymbolTable.h
@@ -1,9 +1,8 @@
//===- Core/SymbolTable.h - Main Symbol Table -----------------------------===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/Core/UndefinedAtom.h b/linux-x64/clang/include/lld/Core/UndefinedAtom.h
index f45d6ec..a40db36 100644
--- a/linux-x64/clang/include/lld/Core/UndefinedAtom.h
+++ b/linux-x64/clang/include/lld/Core/UndefinedAtom.h
@@ -1,9 +1,8 @@
//===- Core/UndefinedAtom.h - An Undefined Atom ---------------------------===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/Core/Writer.h b/linux-x64/clang/include/lld/Core/Writer.h
index 1cdfabe..0de5fca 100644
--- a/linux-x64/clang/include/lld/Core/Writer.h
+++ b/linux-x64/clang/include/lld/Core/Writer.h
@@ -1,9 +1,8 @@
//===- lld/Core/Writer.h - Abstract File Format Interface -----------------===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/ReaderWriter/MachOLinkingContext.h b/linux-x64/clang/include/lld/ReaderWriter/MachOLinkingContext.h
index fde6588..f48ad77 100644
--- a/linux-x64/clang/include/lld/ReaderWriter/MachOLinkingContext.h
+++ b/linux-x64/clang/include/lld/ReaderWriter/MachOLinkingContext.h
@@ -1,9 +1,8 @@
//===- lld/ReaderWriter/MachOLinkingContext.h -----------------------------===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/lld/ReaderWriter/YamlContext.h b/linux-x64/clang/include/lld/ReaderWriter/YamlContext.h
index b97d21f..dc133e3 100644
--- a/linux-x64/clang/include/lld/ReaderWriter/YamlContext.h
+++ b/linux-x64/clang/include/lld/ReaderWriter/YamlContext.h
@@ -1,9 +1,8 @@
//===- lld/ReaderWriter/YamlContext.h - object used in YAML I/O context ---===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm-c/Analysis.h b/linux-x64/clang/include/llvm-c/Analysis.h
index 36dcb89..cb9e8ec 100644
--- a/linux-x64/clang/include/llvm-c/Analysis.h
+++ b/linux-x64/clang/include/llvm-c/Analysis.h
@@ -1,9 +1,9 @@
/*===-- llvm-c/Analysis.h - Analysis Library C Interface --------*- C++ -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/BitReader.h b/linux-x64/clang/include/llvm-c/BitReader.h
index d1fc302..b307ee9 100644
--- a/linux-x64/clang/include/llvm-c/BitReader.h
+++ b/linux-x64/clang/include/llvm-c/BitReader.h
@@ -1,9 +1,9 @@
/*===-- llvm-c/BitReader.h - BitReader Library C Interface ------*- C++ -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/BitWriter.h b/linux-x64/clang/include/llvm-c/BitWriter.h
index 797d031..1870515 100644
--- a/linux-x64/clang/include/llvm-c/BitWriter.h
+++ b/linux-x64/clang/include/llvm-c/BitWriter.h
@@ -1,9 +1,9 @@
/*===-- llvm-c/BitWriter.h - BitWriter Library C Interface ------*- C++ -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/Comdat.h b/linux-x64/clang/include/llvm-c/Comdat.h
index 499996d..81fee3f 100644
--- a/linux-x64/clang/include/llvm-c/Comdat.h
+++ b/linux-x64/clang/include/llvm-c/Comdat.h
@@ -1,9 +1,9 @@
/*===-- llvm-c/Comdat.h - Module Comdat C Interface -------------*- C++ -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/Core.h b/linux-x64/clang/include/llvm-c/Core.h
index f7f2238..9c52189 100644
--- a/linux-x64/clang/include/llvm-c/Core.h
+++ b/linux-x64/clang/include/llvm-c/Core.h
@@ -1,9 +1,9 @@
/*===-- llvm-c/Core.h - Core Library C Interface ------------------*- C -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
@@ -54,6 +54,8 @@
* @{
*/
+/// External users depend on the following values being stable. It is not safe
+/// to reorder them.
typedef enum {
/* Terminator Instructions */
LLVMRet = 1,
@@ -63,6 +65,10 @@
LLVMInvoke = 5,
/* removed 6 due to API changes */
LLVMUnreachable = 7,
+ LLVMCallBr = 67,
+
+ /* Standard Unary Operators */
+ LLVMFNeg = 66,
/* Standard Binary Operators */
LLVMAdd = 8,
@@ -516,6 +522,23 @@
void *OpaqueHandle);
/**
+ * Retrieve whether the given context is set to discard all value names.
+ *
+ * @see LLVMContext::shouldDiscardValueNames()
+ */
+LLVMBool LLVMContextShouldDiscardValueNames(LLVMContextRef C);
+
+/**
+ * Set whether the given context discards all value names.
+ *
+ * If true, only the names of GlobalValue objects will be available in the IR.
+ * This can be used to save memory and runtime, especially in release mode.
+ *
+ * @see LLVMContext::setDiscardValueNames()
+ */
+void LLVMContextSetDiscardValueNames(LLVMContextRef C, LLVMBool Discard);
+
+/**
* Destroy a context instance.
*
* This should be called for every call to LLVMContextCreate() or memory
@@ -930,6 +953,44 @@
LLVMValueRef Val);
/**
+ * Return the directory of the debug location for this value, which must be
+ * an llvm::Instruction, llvm::GlobalVariable, or llvm::Function.
+ *
+ * @see llvm::Instruction::getDebugLoc()
+ * @see llvm::GlobalVariable::getDebugInfo()
+ * @see llvm::Function::getSubprogram()
+ */
+const char *LLVMGetDebugLocDirectory(LLVMValueRef Val, unsigned *Length);
+
+/**
+ * Return the filename of the debug location for this value, which must be
+ * an llvm::Instruction, llvm::GlobalVariable, or llvm::Function.
+ *
+ * @see llvm::Instruction::getDebugLoc()
+ * @see llvm::GlobalVariable::getDebugInfo()
+ * @see llvm::Function::getSubprogram()
+ */
+const char *LLVMGetDebugLocFilename(LLVMValueRef Val, unsigned *Length);
+
+/**
+ * Return the line number of the debug location for this value, which must be
+ * an llvm::Instruction, llvm::GlobalVariable, or llvm::Function.
+ *
+ * @see llvm::Instruction::getDebugLoc()
+ * @see llvm::GlobalVariable::getDebugInfo()
+ * @see llvm::Function::getSubprogram()
+ */
+unsigned LLVMGetDebugLocLine(LLVMValueRef Val);
+
+/**
+ * Return the column number of the debug location for this value, which must be
+ * an llvm::Instruction.
+ *
+ * @see llvm::Instruction::getDebugLoc()
+ */
+unsigned LLVMGetDebugLocColumn(LLVMValueRef Val);
+
+/**
* Add a function to a module under a specified name.
*
* @see llvm::Function::Create()
@@ -1501,16 +1562,15 @@
macro(SelectInst) \
macro(ShuffleVectorInst) \
macro(StoreInst) \
- macro(TerminatorInst) \
- macro(BranchInst) \
- macro(IndirectBrInst) \
- macro(InvokeInst) \
- macro(ReturnInst) \
- macro(SwitchInst) \
- macro(UnreachableInst) \
- macro(ResumeInst) \
- macro(CleanupReturnInst) \
- macro(CatchReturnInst) \
+ macro(BranchInst) \
+ macro(IndirectBrInst) \
+ macro(InvokeInst) \
+ macro(ReturnInst) \
+ macro(SwitchInst) \
+ macro(UnreachableInst) \
+ macro(ResumeInst) \
+ macro(CleanupReturnInst) \
+ macro(CatchReturnInst) \
macro(FuncletPadInst) \
macro(CatchPadInst) \
macro(CleanupPadInst) \
@@ -2026,9 +2086,14 @@
LLVMValueRef LLVMConstAShr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
LLVMValueRef LLVMConstGEP(LLVMValueRef ConstantVal,
LLVMValueRef *ConstantIndices, unsigned NumIndices);
+LLVMValueRef LLVMConstGEP2(LLVMTypeRef Ty, LLVMValueRef ConstantVal,
+ LLVMValueRef *ConstantIndices, unsigned NumIndices);
LLVMValueRef LLVMConstInBoundsGEP(LLVMValueRef ConstantVal,
LLVMValueRef *ConstantIndices,
unsigned NumIndices);
+LLVMValueRef LLVMConstInBoundsGEP2(LLVMTypeRef Ty, LLVMValueRef ConstantVal,
+ LLVMValueRef *ConstantIndices,
+ unsigned NumIndices);
LLVMValueRef LLVMConstTrunc(LLVMValueRef ConstantVal, LLVMTypeRef ToType);
LLVMValueRef LLVMConstSExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType);
LLVMValueRef LLVMConstZExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType);
@@ -2345,6 +2410,54 @@
unsigned LLVMGetIntrinsicID(LLVMValueRef Fn);
/**
+ * Create or insert the declaration of an intrinsic. For overloaded intrinsics,
+ * parameter types must be provided to uniquely identify an overload.
+ *
+ * @see llvm::Intrinsic::getDeclaration()
+ */
+LLVMValueRef LLVMGetIntrinsicDeclaration(LLVMModuleRef Mod,
+ unsigned ID,
+ LLVMTypeRef *ParamTypes,
+ size_t ParamCount);
+
+/**
+ * Retrieves the type of an intrinsic. For overloaded intrinsics, parameter
+ * types must be provided to uniquely identify an overload.
+ *
+ * @see llvm::Intrinsic::getType()
+ */
+LLVMTypeRef LLVMIntrinsicGetType(LLVMContextRef Ctx, unsigned ID,
+ LLVMTypeRef *ParamTypes, size_t ParamCount);
+
+/**
+ * Retrieves the name of an intrinsic.
+ *
+ * @see llvm::Intrinsic::getName()
+ */
+const char *LLVMIntrinsicGetName(unsigned ID, size_t *NameLength);
+
+/**
+ * Copies the name of an overloaded intrinsic identified by a given list of
+ * parameter types.
+ *
+ * Unlike LLVMIntrinsicGetName, the caller is responsible for freeing the
+ * returned string.
+ *
+ * @see llvm::Intrinsic::getName()
+ */
+const char *LLVMIntrinsicCopyOverloadedName(unsigned ID,
+ LLVMTypeRef *ParamTypes,
+ size_t ParamCount,
+ size_t *NameLength);
+
+/**
+ * Obtain if the intrinsic identified by the given ID is overloaded.
+ *
+ * @see llvm::Intrinsic::isOverloaded()
+ */
+LLVMBool LLVMIntrinsicIsOverloaded(unsigned ID);
+
+/**
* Obtain the calling function of a function.
*
* The returned value corresponds to the LLVMCallConv enumeration.
@@ -2500,6 +2613,103 @@
*/
/**
+ * @defgroup LLVMCCoreValueGlobalIFunc IFuncs
+ *
+ * Functions in this group relate to indirect functions.
+ *
+ * Functions in this group expect LLVMValueRef instances that correspond
+ * to llvm::GlobalIFunc instances.
+ *
+ * @{
+ */
+
+/**
+ * Add a global indirect function to a module under a specified name.
+ *
+ * @see llvm::GlobalIFunc::create()
+ */
+LLVMValueRef LLVMAddGlobalIFunc(LLVMModuleRef M,
+ const char *Name, size_t NameLen,
+ LLVMTypeRef Ty, unsigned AddrSpace,
+ LLVMValueRef Resolver);
+
+/**
+ * Obtain a GlobalIFunc value from a Module by its name.
+ *
+ * The returned value corresponds to a llvm::GlobalIFunc value.
+ *
+ * @see llvm::Module::getNamedIFunc()
+ */
+LLVMValueRef LLVMGetNamedGlobalIFunc(LLVMModuleRef M,
+ const char *Name, size_t NameLen);
+
+/**
+ * Obtain an iterator to the first GlobalIFunc in a Module.
+ *
+ * @see llvm::Module::ifunc_begin()
+ */
+LLVMValueRef LLVMGetFirstGlobalIFunc(LLVMModuleRef M);
+
+/**
+ * Obtain an iterator to the last GlobalIFunc in a Module.
+ *
+ * @see llvm::Module::ifunc_end()
+ */
+LLVMValueRef LLVMGetLastGlobalIFunc(LLVMModuleRef M);
+
+/**
+ * Advance a GlobalIFunc iterator to the next GlobalIFunc.
+ *
+ * Returns NULL if the iterator was already at the end and there are no more
+ * global aliases.
+ */
+LLVMValueRef LLVMGetNextGlobalIFunc(LLVMValueRef IFunc);
+
+/**
+ * Decrement a GlobalIFunc iterator to the previous GlobalIFunc.
+ *
+ * Returns NULL if the iterator was already at the beginning and there are
+ * no previous global aliases.
+ */
+LLVMValueRef LLVMGetPreviousGlobalIFunc(LLVMValueRef IFunc);
+
+/**
+ * Retrieves the resolver function associated with this indirect function, or
+ * NULL if it doesn't not exist.
+ *
+ * @see llvm::GlobalIFunc::getResolver()
+ */
+LLVMValueRef LLVMGetGlobalIFuncResolver(LLVMValueRef IFunc);
+
+/**
+ * Sets the resolver function associated with this indirect function.
+ *
+ * @see llvm::GlobalIFunc::setResolver()
+ */
+void LLVMSetGlobalIFuncResolver(LLVMValueRef IFunc, LLVMValueRef Resolver);
+
+/**
+ * Remove a global indirect function from its parent module and delete it.
+ *
+ * @see llvm::GlobalIFunc::eraseFromParent()
+ */
+void LLVMEraseGlobalIFunc(LLVMValueRef IFunc);
+
+/**
+ * Remove a global indirect function from its parent module.
+ *
+ * This unlinks the global indirect function from its containing module but
+ * keeps it alive.
+ *
+ * @see llvm::GlobalIFunc::removeFromParent()
+ */
+void LLVMRemoveGlobalIFunc(LLVMValueRef IFunc);
+
+/**
+ * @}
+ */
+
+/**
* @}
*/
@@ -2641,7 +2851,7 @@
* If the basic block does not have a terminator (it is not well-formed
* if it doesn't), then NULL is returned.
*
- * The returned LLVMValueRef corresponds to a llvm::TerminatorInst.
+ * The returned LLVMValueRef corresponds to an llvm::Instruction.
*
* @see llvm::BasicBlock::getTerminator()
*/
@@ -2700,6 +2910,14 @@
LLVMBasicBlockRef LLVMGetEntryBasicBlock(LLVMValueRef Fn);
/**
+ * Create a new basic block without inserting it into a function.
+ *
+ * @see llvm::BasicBlock::Create()
+ */
+LLVMBasicBlockRef LLVMCreateBasicBlockInContext(LLVMContextRef C,
+ const char *Name);
+
+/**
* Append a basic block to the end of a function.
*
* @see llvm::BasicBlock::Create()
@@ -2914,6 +3132,15 @@
LLVMValueRef LLVMInstructionClone(LLVMValueRef Inst);
/**
+ * Determine whether an instruction is a terminator. This routine is named to
+ * be compatible with historical functions that did this by querying the
+ * underlying C++ type.
+ *
+ * @see llvm::Instruction::isTerminator()
+ */
+LLVMValueRef LLVMIsATerminatorInst(LLVMValueRef Inst);
+
+/**
* @defgroup LLVMCCoreValueInstructionCall Call Sites and Invocations
*
* Functions in this group apply to instructions that refer to call
@@ -2976,6 +3203,13 @@
const char *K, unsigned KLen);
/**
+ * Obtain the function type called by this instruction.
+ *
+ * @see llvm::CallBase::getFunctionType()
+ */
+LLVMTypeRef LLVMGetCalledFunctionType(LLVMValueRef C);
+
+/**
* Obtain the pointer to the function invoked by this instruction.
*
* This expects an LLVMValueRef that corresponds to a llvm::CallInst or
@@ -3053,8 +3287,8 @@
/**
* @defgroup LLVMCCoreValueInstructionTerminator Terminators
*
- * Functions in this group only apply to instructions that map to
- * llvm::TerminatorInst instances.
+ * Functions in this group only apply to instructions for which
+ * LLVMIsATerminatorInst returns true.
*
* @{
*/
@@ -3062,21 +3296,21 @@
/**
* Return the number of successors that this terminator has.
*
- * @see llvm::TerminatorInst::getNumSuccessors
+ * @see llvm::Instruction::getNumSuccessors
*/
unsigned LLVMGetNumSuccessors(LLVMValueRef Term);
/**
* Return the specified successor.
*
- * @see llvm::TerminatorInst::getSuccessor
+ * @see llvm::Instruction::getSuccessor
*/
LLVMBasicBlockRef LLVMGetSuccessor(LLVMValueRef Term, unsigned i);
/**
* Update the specified successor to point at the provided block.
*
- * @see llvm::TerminatorInst::setSuccessor
+ * @see llvm::Instruction::setSuccessor
*/
void LLVMSetSuccessor(LLVMValueRef Term, unsigned i, LLVMBasicBlockRef block);
@@ -3267,10 +3501,16 @@
LLVMBasicBlockRef Else, unsigned NumCases);
LLVMValueRef LLVMBuildIndirectBr(LLVMBuilderRef B, LLVMValueRef Addr,
unsigned NumDests);
+// LLVMBuildInvoke is deprecated in favor of LLVMBuildInvoke2, in preparation
+// for opaque pointer types.
LLVMValueRef LLVMBuildInvoke(LLVMBuilderRef, LLVMValueRef Fn,
LLVMValueRef *Args, unsigned NumArgs,
LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch,
const char *Name);
+LLVMValueRef LLVMBuildInvoke2(LLVMBuilderRef, LLVMTypeRef Ty, LLVMValueRef Fn,
+ LLVMValueRef *Args, unsigned NumArgs,
+ LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch,
+ const char *Name);
LLVMValueRef LLVMBuildUnreachable(LLVMBuilderRef);
/* Exception Handling */
@@ -3427,13 +3667,48 @@
LLVMValueRef LLVMBuildMalloc(LLVMBuilderRef, LLVMTypeRef Ty, const char *Name);
LLVMValueRef LLVMBuildArrayMalloc(LLVMBuilderRef, LLVMTypeRef Ty,
LLVMValueRef Val, const char *Name);
+
+/**
+ * Creates and inserts a memset to the specified pointer and the
+ * specified value.
+ *
+ * @see llvm::IRRBuilder::CreateMemSet()
+ */
+LLVMValueRef LLVMBuildMemSet(LLVMBuilderRef B, LLVMValueRef Ptr,
+ LLVMValueRef Val, LLVMValueRef Len,
+ unsigned Align);
+/**
+ * Creates and inserts a memcpy between the specified pointers.
+ *
+ * @see llvm::IRRBuilder::CreateMemCpy()
+ */
+LLVMValueRef LLVMBuildMemCpy(LLVMBuilderRef B,
+ LLVMValueRef Dst, unsigned DstAlign,
+ LLVMValueRef Src, unsigned SrcAlign,
+ LLVMValueRef Size);
+/**
+ * Creates and inserts a memmove between the specified pointers.
+ *
+ * @see llvm::IRRBuilder::CreateMemMove()
+ */
+LLVMValueRef LLVMBuildMemMove(LLVMBuilderRef B,
+ LLVMValueRef Dst, unsigned DstAlign,
+ LLVMValueRef Src, unsigned SrcAlign,
+ LLVMValueRef Size);
+
LLVMValueRef LLVMBuildAlloca(LLVMBuilderRef, LLVMTypeRef Ty, const char *Name);
LLVMValueRef LLVMBuildArrayAlloca(LLVMBuilderRef, LLVMTypeRef Ty,
LLVMValueRef Val, const char *Name);
LLVMValueRef LLVMBuildFree(LLVMBuilderRef, LLVMValueRef PointerVal);
+// LLVMBuildLoad is deprecated in favor of LLVMBuildLoad2, in preparation for
+// opaque pointer types.
LLVMValueRef LLVMBuildLoad(LLVMBuilderRef, LLVMValueRef PointerVal,
const char *Name);
+LLVMValueRef LLVMBuildLoad2(LLVMBuilderRef, LLVMTypeRef Ty,
+ LLVMValueRef PointerVal, const char *Name);
LLVMValueRef LLVMBuildStore(LLVMBuilderRef, LLVMValueRef Val, LLVMValueRef Ptr);
+// LLVMBuildGEP, LLVMBuildInBoundsGEP, and LLVMBuildStructGEP are deprecated in
+// favor of LLVMBuild*GEP2, in preparation for opaque pointer types.
LLVMValueRef LLVMBuildGEP(LLVMBuilderRef B, LLVMValueRef Pointer,
LLVMValueRef *Indices, unsigned NumIndices,
const char *Name);
@@ -3442,6 +3717,15 @@
const char *Name);
LLVMValueRef LLVMBuildStructGEP(LLVMBuilderRef B, LLVMValueRef Pointer,
unsigned Idx, const char *Name);
+LLVMValueRef LLVMBuildGEP2(LLVMBuilderRef B, LLVMTypeRef Ty,
+ LLVMValueRef Pointer, LLVMValueRef *Indices,
+ unsigned NumIndices, const char *Name);
+LLVMValueRef LLVMBuildInBoundsGEP2(LLVMBuilderRef B, LLVMTypeRef Ty,
+ LLVMValueRef Pointer, LLVMValueRef *Indices,
+ unsigned NumIndices, const char *Name);
+LLVMValueRef LLVMBuildStructGEP2(LLVMBuilderRef B, LLVMTypeRef Ty,
+ LLVMValueRef Pointer, unsigned Idx,
+ const char *Name);
LLVMValueRef LLVMBuildGlobalString(LLVMBuilderRef B, const char *Str,
const char *Name);
LLVMValueRef LLVMBuildGlobalStringPtr(LLVMBuilderRef B, const char *Str,
@@ -3488,11 +3772,16 @@
LLVMTypeRef DestTy, const char *Name);
LLVMValueRef LLVMBuildPointerCast(LLVMBuilderRef, LLVMValueRef Val,
LLVMTypeRef DestTy, const char *Name);
-LLVMValueRef LLVMBuildIntCast(LLVMBuilderRef, LLVMValueRef Val, /*Signed cast!*/
- LLVMTypeRef DestTy, const char *Name);
+LLVMValueRef LLVMBuildIntCast2(LLVMBuilderRef, LLVMValueRef Val,
+ LLVMTypeRef DestTy, LLVMBool IsSigned,
+ const char *Name);
LLVMValueRef LLVMBuildFPCast(LLVMBuilderRef, LLVMValueRef Val,
LLVMTypeRef DestTy, const char *Name);
+/** Deprecated: This cast is always signed. Use LLVMBuildIntCast2 instead. */
+LLVMValueRef LLVMBuildIntCast(LLVMBuilderRef, LLVMValueRef Val, /*Signed cast!*/
+ LLVMTypeRef DestTy, const char *Name);
+
/* Comparisons */
LLVMValueRef LLVMBuildICmp(LLVMBuilderRef, LLVMIntPredicate Op,
LLVMValueRef LHS, LLVMValueRef RHS,
@@ -3503,9 +3792,14 @@
/* Miscellaneous instructions */
LLVMValueRef LLVMBuildPhi(LLVMBuilderRef, LLVMTypeRef Ty, const char *Name);
+// LLVMBuildCall is deprecated in favor of LLVMBuildCall2, in preparation for
+// opaque pointer types.
LLVMValueRef LLVMBuildCall(LLVMBuilderRef, LLVMValueRef Fn,
LLVMValueRef *Args, unsigned NumArgs,
const char *Name);
+LLVMValueRef LLVMBuildCall2(LLVMBuilderRef, LLVMTypeRef, LLVMValueRef Fn,
+ LLVMValueRef *Args, unsigned NumArgs,
+ const char *Name);
LLVMValueRef LLVMBuildSelect(LLVMBuilderRef, LLVMValueRef If,
LLVMValueRef Then, LLVMValueRef Else,
const char *Name);
diff --git a/linux-x64/clang/include/llvm-c/DataTypes.h b/linux-x64/clang/include/llvm-c/DataTypes.h
index 7081c83..893b22b 100644
--- a/linux-x64/clang/include/llvm-c/DataTypes.h
+++ b/linux-x64/clang/include/llvm-c/DataTypes.h
@@ -1,9 +1,9 @@
/*===-- include/llvm-c/DataTypes.h - Define fixed size types ------*- C -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/DebugInfo.h b/linux-x64/clang/include/llvm-c/DebugInfo.h
index bc341da..f840ce9 100644
--- a/linux-x64/clang/include/llvm-c/DebugInfo.h
+++ b/linux-x64/clang/include/llvm-c/DebugInfo.h
@@ -1,9 +1,8 @@
//===------------ DebugInfo.h - LLVM C API Debug Info API -----------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -54,7 +53,8 @@
LLVMDIFlagMainSubprogram = 1 << 21,
LLVMDIFlagTypePassByValue = 1 << 22,
LLVMDIFlagTypePassByReference = 1 << 23,
- LLVMDIFlagFixedEnum = 1 << 24,
+ LLVMDIFlagEnumClass = 1 << 24,
+ LLVMDIFlagFixedEnum = LLVMDIFlagEnumClass, // Deprecated.
LLVMDIFlagThunk = 1 << 25,
LLVMDIFlagTrivial = 1 << 26,
LLVMDIFlagBigEndian = 1 << 27,
diff --git a/linux-x64/clang/include/llvm-c/Disassembler.h b/linux-x64/clang/include/llvm-c/Disassembler.h
index 5e80b95..3adcc3c 100644
--- a/linux-x64/clang/include/llvm-c/Disassembler.h
+++ b/linux-x64/clang/include/llvm-c/Disassembler.h
@@ -1,9 +1,9 @@
/*===-- llvm-c/Disassembler.h - Disassembler Public C Interface ---*- C -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/DisassemblerTypes.h b/linux-x64/clang/include/llvm-c/DisassemblerTypes.h
index e8754ac..389e5ee 100644
--- a/linux-x64/clang/include/llvm-c/DisassemblerTypes.h
+++ b/linux-x64/clang/include/llvm-c/DisassemblerTypes.h
@@ -1,9 +1,9 @@
/*===-- llvm-c/DisassemblerTypedefs.h -----------------------------*- C -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*/
diff --git a/linux-x64/clang/include/llvm-c/Error.h b/linux-x64/clang/include/llvm-c/Error.h
index 71e8466..40ea1fb 100644
--- a/linux-x64/clang/include/llvm-c/Error.h
+++ b/linux-x64/clang/include/llvm-c/Error.h
@@ -1,9 +1,9 @@
/*===------- llvm-c/Error.h - llvm::Error class C Interface -------*- C -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/ErrorHandling.h b/linux-x64/clang/include/llvm-c/ErrorHandling.h
index 2059b3a..4927349 100644
--- a/linux-x64/clang/include/llvm-c/ErrorHandling.h
+++ b/linux-x64/clang/include/llvm-c/ErrorHandling.h
@@ -1,9 +1,9 @@
/*===-- llvm-c/ErrorHandling.h - Error Handling C Interface -------*- C -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/ExecutionEngine.h b/linux-x64/clang/include/llvm-c/ExecutionEngine.h
index 49ae6fe..ef714cd 100644
--- a/linux-x64/clang/include/llvm-c/ExecutionEngine.h
+++ b/linux-x64/clang/include/llvm-c/ExecutionEngine.h
@@ -1,9 +1,9 @@
/*===-- llvm-c/ExecutionEngine.h - ExecutionEngine Lib C Iface --*- C++ -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
@@ -186,7 +186,7 @@
LLVMJITEventListenerRef LLVMCreateGDBRegistrationListener(void);
LLVMJITEventListenerRef LLVMCreateIntelJITEventListener(void);
-LLVMJITEventListenerRef LLVMCreateOprofileJITEventListener(void);
+LLVMJITEventListenerRef LLVMCreateOProfileJITEventListener(void);
LLVMJITEventListenerRef LLVMCreatePerfJITEventListener(void);
/**
diff --git a/linux-x64/clang/include/llvm-c/IRReader.h b/linux-x64/clang/include/llvm-c/IRReader.h
index 5b58d99..4d0b696 100644
--- a/linux-x64/clang/include/llvm-c/IRReader.h
+++ b/linux-x64/clang/include/llvm-c/IRReader.h
@@ -1,9 +1,9 @@
/*===-- llvm-c/IRReader.h - IR Reader C Interface -----------------*- C -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/Initialization.h b/linux-x64/clang/include/llvm-c/Initialization.h
index e45eafb..36c41db 100644
--- a/linux-x64/clang/include/llvm-c/Initialization.h
+++ b/linux-x64/clang/include/llvm-c/Initialization.h
@@ -1,9 +1,9 @@
/*===-- llvm-c/Initialization.h - Initialization C Interface ------*- C -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/LinkTimeOptimizer.h b/linux-x64/clang/include/llvm-c/LinkTimeOptimizer.h
index 8bcf599..19b4f5c 100644
--- a/linux-x64/clang/include/llvm-c/LinkTimeOptimizer.h
+++ b/linux-x64/clang/include/llvm-c/LinkTimeOptimizer.h
@@ -1,9 +1,8 @@
//===-- llvm/LinkTimeOptimizer.h - LTO Public C Interface -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm-c/Linker.h b/linux-x64/clang/include/llvm-c/Linker.h
index d02c37f..9085130 100644
--- a/linux-x64/clang/include/llvm-c/Linker.h
+++ b/linux-x64/clang/include/llvm-c/Linker.h
@@ -1,9 +1,9 @@
/*===-- llvm-c/Linker.h - Module Linker C Interface -------------*- C++ -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/Object.h b/linux-x64/clang/include/llvm-c/Object.h
index a2980e8..bbea455 100644
--- a/linux-x64/clang/include/llvm-c/Object.h
+++ b/linux-x64/clang/include/llvm-c/Object.h
@@ -1,9 +1,9 @@
/*===-- llvm-c/Object.h - Object Lib C Iface --------------------*- C++ -*-===*/
/* */
-/* The LLVM Compiler Infrastructure */
-/* */
-/* This file is distributed under the University of Illinois Open Source */
-/* License. See LICENSE.TXT for details. */
+/* 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 */
/* */
/*===----------------------------------------------------------------------===*/
/* */
diff --git a/linux-x64/clang/include/llvm-c/OptRemarks.h b/linux-x64/clang/include/llvm-c/OptRemarks.h
new file mode 100644
index 0000000..b6cffc7
--- /dev/null
+++ b/linux-x64/clang/include/llvm-c/OptRemarks.h
@@ -0,0 +1,204 @@
+/*===-- llvm-c/OptRemarks.h - OptRemarks Public C Interface -------*- C -*-===*\
+|* *|
+|* 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 *|
+|* *|
+|*===----------------------------------------------------------------------===*|
+|* *|
+|* This header provides a public interface to an opt-remark library. *|
+|* LLVM provides an implementation of this interface. *|
+|* *|
+\*===----------------------------------------------------------------------===*/
+
+#ifndef LLVM_C_OPT_REMARKS_H
+#define LLVM_C_OPT_REMARKS_H
+
+#include "llvm-c/Core.h"
+#include "llvm-c/Types.h"
+#ifdef __cplusplus
+#include <cstddef>
+extern "C" {
+#else
+#include <stddef.h>
+#endif /* !defined(__cplusplus) */
+
+/**
+ * @defgroup LLVMCOPTREMARKS OptRemarks
+ * @ingroup LLVMC
+ *
+ * @{
+ */
+
+#define OPT_REMARKS_API_VERSION 0
+
+/**
+ * String containing a buffer and a length. The buffer is not guaranteed to be
+ * zero-terminated.
+ *
+ * \since OPT_REMARKS_API_VERSION=0
+ */
+typedef struct {
+ const char *Str;
+ uint32_t Len;
+} LLVMOptRemarkStringRef;
+
+/**
+ * DebugLoc containing File, Line and Column.
+ *
+ * \since OPT_REMARKS_API_VERSION=0
+ */
+typedef struct {
+ // File:
+ LLVMOptRemarkStringRef SourceFile;
+ // Line:
+ uint32_t SourceLineNumber;
+ // Column:
+ uint32_t SourceColumnNumber;
+} LLVMOptRemarkDebugLoc;
+
+/**
+ * Element of the "Args" list. The key might give more information about what
+ * are the semantics of the value, e.g. "Callee" will tell you that the value
+ * is a symbol that names a function.
+ *
+ * \since OPT_REMARKS_API_VERSION=0
+ */
+typedef struct {
+ // e.g. "Callee"
+ LLVMOptRemarkStringRef Key;
+ // e.g. "malloc"
+ LLVMOptRemarkStringRef Value;
+
+ // "DebugLoc": Optional
+ LLVMOptRemarkDebugLoc DebugLoc;
+} LLVMOptRemarkArg;
+
+/**
+ * One remark entry.
+ *
+ * \since OPT_REMARKS_API_VERSION=0
+ */
+typedef struct {
+ // e.g. !Missed, !Passed
+ LLVMOptRemarkStringRef RemarkType;
+ // "Pass": Required
+ LLVMOptRemarkStringRef PassName;
+ // "Name": Required
+ LLVMOptRemarkStringRef RemarkName;
+ // "Function": Required
+ LLVMOptRemarkStringRef FunctionName;
+
+ // "DebugLoc": Optional
+ LLVMOptRemarkDebugLoc DebugLoc;
+ // "Hotness": Optional
+ uint32_t Hotness;
+ // "Args": Optional. It is an array of `num_args` elements.
+ uint32_t NumArgs;
+ LLVMOptRemarkArg *Args;
+} LLVMOptRemarkEntry;
+
+typedef struct LLVMOptRemarkOpaqueParser *LLVMOptRemarkParserRef;
+
+/**
+ * Creates a remark parser that can be used to read and parse the buffer located
+ * in \p Buf of size \p Size.
+ *
+ * \p Buf cannot be NULL.
+ *
+ * This function should be paired with LLVMOptRemarkParserDispose() to avoid
+ * leaking resources.
+ *
+ * \since OPT_REMARKS_API_VERSION=0
+ */
+extern LLVMOptRemarkParserRef LLVMOptRemarkParserCreate(const void *Buf,
+ uint64_t Size);
+
+/**
+ * Returns the next remark in the file.
+ *
+ * The value pointed to by the return value is invalidated by the next call to
+ * LLVMOptRemarkParserGetNext().
+ *
+ * If the parser reaches the end of the buffer, the return value will be NULL.
+ *
+ * In the case of an error, the return value will be NULL, and:
+ *
+ * 1) LLVMOptRemarkParserHasError() will return `1`.
+ *
+ * 2) LLVMOptRemarkParserGetErrorMessage() will return a descriptive error
+ * message.
+ *
+ * An error may occur if:
+ *
+ * 1) An argument is invalid.
+ *
+ * 2) There is a YAML parsing error. This type of error aborts parsing
+ * immediately and returns `1`. It can occur on malformed YAML.
+ *
+ * 3) Remark parsing error. If this type of error occurs, the parser won't call
+ * the handler and will continue to the next one. It can occur on malformed
+ * remarks, like missing or extra fields in the file.
+ *
+ * Here is a quick example of the usage:
+ *
+ * ```
+ * LLVMOptRemarkParserRef Parser = LLVMOptRemarkParserCreate(Buf, Size);
+ * LLVMOptRemarkEntry *Remark = NULL;
+ * while ((Remark == LLVMOptRemarkParserGetNext(Parser))) {
+ * // use Remark
+ * }
+ * bool HasError = LLVMOptRemarkParserHasError(Parser);
+ * LLVMOptRemarkParserDispose(Parser);
+ * ```
+ *
+ * \since OPT_REMARKS_API_VERSION=0
+ */
+extern LLVMOptRemarkEntry *
+LLVMOptRemarkParserGetNext(LLVMOptRemarkParserRef Parser);
+
+/**
+ * Returns `1` if the parser encountered an error while parsing the buffer.
+ *
+ * \since OPT_REMARKS_API_VERSION=0
+ */
+extern LLVMBool LLVMOptRemarkParserHasError(LLVMOptRemarkParserRef Parser);
+
+/**
+ * Returns a null-terminated string containing an error message.
+ *
+ * In case of no error, the result is `NULL`.
+ *
+ * The memory of the string is bound to the lifetime of \p Parser. If
+ * LLVMOptRemarkParserDispose() is called, the memory of the string will be
+ * released.
+ *
+ * \since OPT_REMARKS_API_VERSION=0
+ */
+extern const char *
+LLVMOptRemarkParserGetErrorMessage(LLVMOptRemarkParserRef Parser);
+
+/**
+ * Releases all the resources used by \p Parser.
+ *
+ * \since OPT_REMARKS_API_VERSION=0
+ */
+extern void LLVMOptRemarkParserDispose(LLVMOptRemarkParserRef Parser);
+
+/**
+ * Returns the version of the opt-remarks dylib.
+ *
+ * \since OPT_REMARKS_API_VERSION=0
+ */
+extern uint32_t LLVMOptRemarkVersion(void);
+
+/**
+ * @} // endgoup LLVMCOPTREMARKS
+ */
+
+#ifdef __cplusplus
+}
+#endif /* !defined(__cplusplus) */
+
+#endif /* LLVM_C_OPT_REMARKS_H */
diff --git a/linux-x64/clang/include/llvm-c/OrcBindings.h b/linux-x64/clang/include/llvm-c/OrcBindings.h
index 570db87..9e92371 100644
--- a/linux-x64/clang/include/llvm-c/OrcBindings.h
+++ b/linux-x64/clang/include/llvm-c/OrcBindings.h
@@ -1,9 +1,9 @@
/*===----------- llvm-c/OrcBindings.h - Orc Lib C Iface ---------*- C++ -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/Support.h b/linux-x64/clang/include/llvm-c/Support.h
index 37d5d72..097f784 100644
--- a/linux-x64/clang/include/llvm-c/Support.h
+++ b/linux-x64/clang/include/llvm-c/Support.h
@@ -1,9 +1,9 @@
/*===-- llvm-c/Support.h - Support C Interface --------------------*- C -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/Target.h b/linux-x64/clang/include/llvm-c/Target.h
index 03004ba..9a792a0 100644
--- a/linux-x64/clang/include/llvm-c/Target.h
+++ b/linux-x64/clang/include/llvm-c/Target.h
@@ -1,9 +1,9 @@
/*===-- llvm-c/Target.h - Target Lib C Iface --------------------*- C++ -*-===*/
/* */
-/* The LLVM Compiler Infrastructure */
-/* */
-/* This file is distributed under the University of Illinois Open Source */
-/* License. See LICENSE.TXT for details. */
+/* 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 */
/* */
/*===----------------------------------------------------------------------===*/
/* */
diff --git a/linux-x64/clang/include/llvm-c/TargetMachine.h b/linux-x64/clang/include/llvm-c/TargetMachine.h
index bcfa001..28d7c09 100644
--- a/linux-x64/clang/include/llvm-c/TargetMachine.h
+++ b/linux-x64/clang/include/llvm-c/TargetMachine.h
@@ -1,9 +1,9 @@
/*===-- llvm-c/TargetMachine.h - Target Machine Library C Interface - C++ -*-=*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
@@ -39,7 +39,10 @@
LLVMRelocDefault,
LLVMRelocStatic,
LLVMRelocPIC,
- LLVMRelocDynamicNoPic
+ LLVMRelocDynamicNoPic,
+ LLVMRelocROPI,
+ LLVMRelocRWPI,
+ LLVMRelocROPI_RWPI
} LLVMRelocMode;
typedef enum {
diff --git a/linux-x64/clang/include/llvm-c/Transforms/AggressiveInstCombine.h b/linux-x64/clang/include/llvm-c/Transforms/AggressiveInstCombine.h
index 8756a22..c0b0141 100644
--- a/linux-x64/clang/include/llvm-c/Transforms/AggressiveInstCombine.h
+++ b/linux-x64/clang/include/llvm-c/Transforms/AggressiveInstCombine.h
@@ -1,9 +1,9 @@
/*===-- AggressiveInstCombine.h ---------------------------------*- C++ -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/Transforms/Coroutines.h b/linux-x64/clang/include/llvm-c/Transforms/Coroutines.h
index 827e30f..227e7cf 100644
--- a/linux-x64/clang/include/llvm-c/Transforms/Coroutines.h
+++ b/linux-x64/clang/include/llvm-c/Transforms/Coroutines.h
@@ -1,9 +1,9 @@
/*===-- Coroutines.h - Coroutines Library C Interface -----------*- C++ -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/Transforms/IPO.h b/linux-x64/clang/include/llvm-c/Transforms/IPO.h
index 7705b18..7a82ed4 100644
--- a/linux-x64/clang/include/llvm-c/Transforms/IPO.h
+++ b/linux-x64/clang/include/llvm-c/Transforms/IPO.h
@@ -1,9 +1,9 @@
/*===-- IPO.h - Interprocedural Transformations C Interface -----*- C++ -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/Transforms/InstCombine.h b/linux-x64/clang/include/llvm-c/Transforms/InstCombine.h
index e1c1572..166f278 100644
--- a/linux-x64/clang/include/llvm-c/Transforms/InstCombine.h
+++ b/linux-x64/clang/include/llvm-c/Transforms/InstCombine.h
@@ -1,9 +1,9 @@
/*===-- Scalar.h - Scalar Transformation Library C Interface ----*- C++ -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/Transforms/PassManagerBuilder.h b/linux-x64/clang/include/llvm-c/Transforms/PassManagerBuilder.h
index 69786b3..d164c00 100644
--- a/linux-x64/clang/include/llvm-c/Transforms/PassManagerBuilder.h
+++ b/linux-x64/clang/include/llvm-c/Transforms/PassManagerBuilder.h
@@ -1,9 +1,9 @@
/*===-- llvm-c/Transform/PassManagerBuilder.h - PMB C Interface ---*- C -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/Transforms/Scalar.h b/linux-x64/clang/include/llvm-c/Transforms/Scalar.h
index 3c3bb4e..031cf98 100644
--- a/linux-x64/clang/include/llvm-c/Transforms/Scalar.h
+++ b/linux-x64/clang/include/llvm-c/Transforms/Scalar.h
@@ -1,9 +1,9 @@
/*===-- Scalar.h - Scalar Transformation Library C Interface ----*- C++ -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/Transforms/Utils.h b/linux-x64/clang/include/llvm-c/Transforms/Utils.h
index f171f7f..ff28833 100644
--- a/linux-x64/clang/include/llvm-c/Transforms/Utils.h
+++ b/linux-x64/clang/include/llvm-c/Transforms/Utils.h
@@ -1,9 +1,9 @@
/*===-- Utils.h - Transformation Utils Library C Interface ------*- C++ -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/Transforms/Vectorize.h b/linux-x64/clang/include/llvm-c/Transforms/Vectorize.h
index e3f9961..e383481 100644
--- a/linux-x64/clang/include/llvm-c/Transforms/Vectorize.h
+++ b/linux-x64/clang/include/llvm-c/Transforms/Vectorize.h
@@ -1,10 +1,10 @@
/*===---------------------------Vectorize.h --------------------- -*- C -*-===*\
|*===----------- Vectorization Transformation Library C Interface ---------===*|
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/Types.h b/linux-x64/clang/include/llvm-c/Types.h
index ce1acf3..a2979bd 100644
--- a/linux-x64/clang/include/llvm-c/Types.h
+++ b/linux-x64/clang/include/llvm-c/Types.h
@@ -1,9 +1,9 @@
/*===-- llvm-c/Support.h - C Interface Types declarations ---------*- C -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm-c/lto.h b/linux-x64/clang/include/llvm-c/lto.h
index 090cd34..a22f0bb 100644
--- a/linux-x64/clang/include/llvm-c/lto.h
+++ b/linux-x64/clang/include/llvm-c/lto.h
@@ -1,9 +1,9 @@
/*===-- llvm-c/lto.h - LTO Public C Interface ---------------------*- C -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm/ADT/APFloat.h b/linux-x64/clang/include/llvm/ADT/APFloat.h
index 5c59af4..6255823 100644
--- a/linux-x64/clang/include/llvm/ADT/APFloat.h
+++ b/linux-x64/clang/include/llvm/ADT/APFloat.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/APFloat.h - Arbitrary Precision Floating Point ---*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -870,13 +869,13 @@
/// Factory for NaN values.
///
/// \param Negative - True iff the NaN generated should be negative.
- /// \param type - The unspecified fill bits for creating the NaN, 0 by
+ /// \param payload - The unspecified fill bits for creating the NaN, 0 by
/// default. The value is truncated as necessary.
static APFloat getNaN(const fltSemantics &Sem, bool Negative = false,
- unsigned type = 0) {
- if (type) {
- APInt fill(64, type);
- return getQNaN(Sem, Negative, &fill);
+ uint64_t payload = 0) {
+ if (payload) {
+ APInt intPayload(64, payload);
+ return getQNaN(Sem, Negative, &intPayload);
} else {
return getQNaN(Sem, Negative, nullptr);
}
@@ -1243,6 +1242,32 @@
return (A.compare(B) == APFloat::cmpLessThan) ? B : A;
}
+/// Implements IEEE 754-2018 minimum semantics. Returns the smaller of 2
+/// arguments, propagating NaNs and treating -0 as less than +0.
+LLVM_READONLY
+inline APFloat minimum(const APFloat &A, const APFloat &B) {
+ if (A.isNaN())
+ return A;
+ if (B.isNaN())
+ return B;
+ if (A.isZero() && B.isZero() && (A.isNegative() != B.isNegative()))
+ return A.isNegative() ? A : B;
+ return (B.compare(A) == APFloat::cmpLessThan) ? B : A;
+}
+
+/// Implements IEEE 754-2018 maximum semantics. Returns the larger of 2
+/// arguments, propagating NaNs and treating -0 as less than +0.
+LLVM_READONLY
+inline APFloat maximum(const APFloat &A, const APFloat &B) {
+ if (A.isNaN())
+ return A;
+ if (B.isNaN())
+ return B;
+ if (A.isZero() && B.isZero() && (A.isNegative() != B.isNegative()))
+ return A.isNegative() ? B : A;
+ return (A.compare(B) == APFloat::cmpLessThan) ? B : A;
+}
+
} // namespace llvm
#undef APFLOAT_DISPATCH_ON_SEMANTICS
diff --git a/linux-x64/clang/include/llvm/ADT/APInt.h b/linux-x64/clang/include/llvm/ADT/APInt.h
index 1befe7a..0f27dbf 100644
--- a/linux-x64/clang/include/llvm/ADT/APInt.h
+++ b/linux-x64/clang/include/llvm/ADT/APInt.h
@@ -1,9 +1,8 @@
//===-- llvm/ADT/APInt.h - For Arbitrary Precision Integer -----*- C++ -*--===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -1105,6 +1104,12 @@
APInt sshl_ov(const APInt &Amt, bool &Overflow) const;
APInt ushl_ov(const APInt &Amt, bool &Overflow) const;
+ // Operations that saturate
+ APInt sadd_sat(const APInt &RHS) const;
+ APInt uadd_sat(const APInt &RHS) const;
+ APInt ssub_sat(const APInt &RHS) const;
+ APInt usub_sat(const APInt &RHS) const;
+
/// Array-indexing support.
///
/// \returns the bit value at bitPosition
@@ -1395,7 +1400,7 @@
///
/// Set the given bit to 1 whose position is given as "bitPosition".
void setBit(unsigned BitPosition) {
- assert(BitPosition <= BitWidth && "BitPosition out of range");
+ assert(BitPosition < BitWidth && "BitPosition out of range");
WordType Mask = maskBit(BitPosition);
if (isSingleWord())
U.VAL |= Mask;
@@ -1454,7 +1459,7 @@
///
/// Set the given bit to 0 whose position is given as "bitPosition".
void clearBit(unsigned BitPosition) {
- assert(BitPosition <= BitWidth && "BitPosition out of range");
+ assert(BitPosition < BitWidth && "BitPosition out of range");
WordType Mask = ~maskBit(BitPosition);
if (isSingleWord())
U.VAL &= Mask;
diff --git a/linux-x64/clang/include/llvm/ADT/APSInt.h b/linux-x64/clang/include/llvm/ADT/APSInt.h
index 7ee2c4c..be36611 100644
--- a/linux-x64/clang/include/llvm/ADT/APSInt.h
+++ b/linux-x64/clang/include/llvm/ADT/APSInt.h
@@ -1,9 +1,8 @@
//===-- llvm/ADT/APSInt.h - Arbitrary Precision Signed Int -----*- C++ -*--===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/AllocatorList.h b/linux-x64/clang/include/llvm/ADT/AllocatorList.h
index 178c674..405a2e4 100644
--- a/linux-x64/clang/include/llvm/ADT/AllocatorList.h
+++ b/linux-x64/clang/include/llvm/ADT/AllocatorList.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/AllocatorList.h - Custom allocator list ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/ADT/Any.h b/linux-x64/clang/include/llvm/ADT/Any.h
index 7faa4c9..5dcd6e7 100644
--- a/linux-x64/clang/include/llvm/ADT/Any.h
+++ b/linux-x64/clang/include/llvm/ADT/Any.h
@@ -1,9 +1,8 @@
//===- Any.h - Generic type erased holder of any type -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/ArrayRef.h b/linux-x64/clang/include/llvm/ADT/ArrayRef.h
index 9cb25b0..75bb7d6 100644
--- a/linux-x64/clang/include/llvm/ADT/ArrayRef.h
+++ b/linux-x64/clang/include/llvm/ADT/ArrayRef.h
@@ -1,9 +1,8 @@
//===- ArrayRef.h - Array Reference Wrapper ---------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -526,12 +525,6 @@
/// @}
- // ArrayRefs can be treated like a POD type.
- template <typename T> struct isPodLike;
- template <typename T> struct isPodLike<ArrayRef<T>> {
- static const bool value = true;
- };
-
template <typename T> hash_code hash_value(ArrayRef<T> S) {
return hash_combine_range(S.begin(), S.end());
}
diff --git a/linux-x64/clang/include/llvm/ADT/BitVector.h b/linux-x64/clang/include/llvm/ADT/BitVector.h
index 9ab1da7..fabf5d9 100644
--- a/linux-x64/clang/include/llvm/ADT/BitVector.h
+++ b/linux-x64/clang/include/llvm/ADT/BitVector.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/BitVector.h - Bit vectors -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/BitmaskEnum.h b/linux-x64/clang/include/llvm/ADT/BitmaskEnum.h
index 18c6ba5..1a18bc7 100644
--- a/linux-x64/clang/include/llvm/ADT/BitmaskEnum.h
+++ b/linux-x64/clang/include/llvm/ADT/BitmaskEnum.h
@@ -1,9 +1,8 @@
//===-- llvm/ADT/BitmaskEnum.h ----------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/ADT/BreadthFirstIterator.h b/linux-x64/clang/include/llvm/ADT/BreadthFirstIterator.h
index 6bc63c2..cc6c860 100644
--- a/linux-x64/clang/include/llvm/ADT/BreadthFirstIterator.h
+++ b/linux-x64/clang/include/llvm/ADT/BreadthFirstIterator.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/BreadthFirstIterator.h - Breadth First iterator -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/CachedHashString.h b/linux-x64/clang/include/llvm/ADT/CachedHashString.h
index d8f0e7a..80144fb 100644
--- a/linux-x64/clang/include/llvm/ADT/CachedHashString.h
+++ b/linux-x64/clang/include/llvm/ADT/CachedHashString.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/CachedHashString.h - Prehashed string/StringRef -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/DAGDeltaAlgorithm.h b/linux-x64/clang/include/llvm/ADT/DAGDeltaAlgorithm.h
index 41fdd43..d4cdc3c 100644
--- a/linux-x64/clang/include/llvm/ADT/DAGDeltaAlgorithm.h
+++ b/linux-x64/clang/include/llvm/ADT/DAGDeltaAlgorithm.h
@@ -1,9 +1,8 @@
//===- DAGDeltaAlgorithm.h - A DAG Minimization Algorithm ------*- C++ -*--===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//===----------------------------------------------------------------------===//
#ifndef LLVM_ADT_DAGDELTAALGORITHM_H
diff --git a/linux-x64/clang/include/llvm/ADT/DeltaAlgorithm.h b/linux-x64/clang/include/llvm/ADT/DeltaAlgorithm.h
index 6becb2a..114b954 100644
--- a/linux-x64/clang/include/llvm/ADT/DeltaAlgorithm.h
+++ b/linux-x64/clang/include/llvm/ADT/DeltaAlgorithm.h
@@ -1,9 +1,8 @@
//===- DeltaAlgorithm.h - A Set Minimization Algorithm ---------*- C++ -*--===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//===----------------------------------------------------------------------===//
#ifndef LLVM_ADT_DELTAALGORITHM_H
diff --git a/linux-x64/clang/include/llvm/ADT/DenseMap.h b/linux-x64/clang/include/llvm/ADT/DenseMap.h
index 380f1db..e7cd370 100644
--- a/linux-x64/clang/include/llvm/ADT/DenseMap.h
+++ b/linux-x64/clang/include/llvm/ADT/DenseMap.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/DenseMap.h - Dense probed hash table ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -25,6 +24,7 @@
#include <cassert>
#include <cstddef>
#include <cstring>
+#include <initializer_list>
#include <iterator>
#include <new>
#include <type_traits>
@@ -38,6 +38,34 @@
// implementation without requiring two members.
template <typename KeyT, typename ValueT>
struct DenseMapPair : public std::pair<KeyT, ValueT> {
+
+ // FIXME: Switch to inheriting constructors when we drop support for older
+ // clang versions.
+ // NOTE: This default constructor is declared with '{}' rather than
+ // '= default' to work around a separate bug in clang-3.8. This can
+ // also go when we switch to inheriting constructors.
+ DenseMapPair() {}
+
+ DenseMapPair(const KeyT &Key, const ValueT &Value)
+ : std::pair<KeyT, ValueT>(Key, Value) {}
+
+ DenseMapPair(KeyT &&Key, ValueT &&Value)
+ : std::pair<KeyT, ValueT>(std::move(Key), std::move(Value)) {}
+
+ template <typename AltKeyT, typename AltValueT>
+ DenseMapPair(AltKeyT &&AltKey, AltValueT &&AltValue,
+ typename std::enable_if<
+ std::is_convertible<AltKeyT, KeyT>::value &&
+ std::is_convertible<AltValueT, ValueT>::value>::type * = 0)
+ : std::pair<KeyT, ValueT>(std::forward<AltKeyT>(AltKey),
+ std::forward<AltValueT>(AltValue)) {}
+
+ template <typename AltPairT>
+ DenseMapPair(AltPairT &&AltPair,
+ typename std::enable_if<std::is_convertible<
+ AltPairT, std::pair<KeyT, ValueT>>::value>::type * = 0)
+ : std::pair<KeyT, ValueT>(std::forward<AltPairT>(AltPair)) {}
+
KeyT &getFirst() { return std::pair<KeyT, ValueT>::first; }
const KeyT &getFirst() const { return std::pair<KeyT, ValueT>::first; }
ValueT &getSecond() { return std::pair<KeyT, ValueT>::second; }
@@ -46,9 +74,10 @@
} // end namespace detail
-template <
- typename KeyT, typename ValueT, typename KeyInfoT = DenseMapInfo<KeyT>,
- typename Bucket = detail::DenseMapPair<KeyT, ValueT>, bool IsConst = false>
+template <typename KeyT, typename ValueT,
+ typename KeyInfoT = DenseMapInfo<KeyT>,
+ typename Bucket = llvm::detail::DenseMapPair<KeyT, ValueT>,
+ bool IsConst = false>
class DenseMapIterator;
template <typename DerivedT, typename KeyT, typename ValueT, typename KeyInfoT,
@@ -116,7 +145,8 @@
}
const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
- if (isPodLike<KeyT>::value && isPodLike<ValueT>::value) {
+ if (is_trivially_copyable<KeyT>::value &&
+ is_trivially_copyable<ValueT>::value) {
// Use a simpler loop when these are trivial types.
for (BucketT *P = getBuckets(), *E = getBucketsEnd(); P != E; ++P)
P->getFirst() = EmptyKey;
@@ -392,7 +422,8 @@
setNumEntries(other.getNumEntries());
setNumTombstones(other.getNumTombstones());
- if (isPodLike<KeyT>::value && isPodLike<ValueT>::value)
+ if (is_trivially_copyable<KeyT>::value &&
+ is_trivially_copyable<ValueT>::value)
memcpy(reinterpret_cast<void *>(getBuckets()), other.getBuckets(),
getNumBuckets() * sizeof(BucketT));
else
@@ -639,9 +670,43 @@
}
};
+/// Equality comparison for DenseMap.
+///
+/// Iterates over elements of LHS confirming that each (key, value) pair in LHS
+/// is also in RHS, and that no additional pairs are in RHS.
+/// Equivalent to N calls to RHS.find and N value comparisons. Amortized
+/// complexity is linear, worst case is O(N^2) (if every hash collides).
+template <typename DerivedT, typename KeyT, typename ValueT, typename KeyInfoT,
+ typename BucketT>
+bool operator==(
+ const DenseMapBase<DerivedT, KeyT, ValueT, KeyInfoT, BucketT> &LHS,
+ const DenseMapBase<DerivedT, KeyT, ValueT, KeyInfoT, BucketT> &RHS) {
+ if (LHS.size() != RHS.size())
+ return false;
+
+ for (auto &KV : LHS) {
+ auto I = RHS.find(KV.first);
+ if (I == RHS.end() || I->second != KV.second)
+ return false;
+ }
+
+ return true;
+}
+
+/// Inequality comparison for DenseMap.
+///
+/// Equivalent to !(LHS == RHS). See operator== for performance notes.
+template <typename DerivedT, typename KeyT, typename ValueT, typename KeyInfoT,
+ typename BucketT>
+bool operator!=(
+ const DenseMapBase<DerivedT, KeyT, ValueT, KeyInfoT, BucketT> &LHS,
+ const DenseMapBase<DerivedT, KeyT, ValueT, KeyInfoT, BucketT> &RHS) {
+ return !(LHS == RHS);
+}
+
template <typename KeyT, typename ValueT,
typename KeyInfoT = DenseMapInfo<KeyT>,
- typename BucketT = detail::DenseMapPair<KeyT, ValueT>>
+ typename BucketT = llvm::detail::DenseMapPair<KeyT, ValueT>>
class DenseMap : public DenseMapBase<DenseMap<KeyT, ValueT, KeyInfoT, BucketT>,
KeyT, ValueT, KeyInfoT, BucketT> {
friend class DenseMapBase<DenseMap, KeyT, ValueT, KeyInfoT, BucketT>;
@@ -676,6 +741,11 @@
this->insert(I, E);
}
+ DenseMap(std::initializer_list<typename BaseT::value_type> Vals) {
+ init(Vals.size());
+ this->insert(Vals.begin(), Vals.end());
+ }
+
~DenseMap() {
this->destroyAll();
operator delete(Buckets);
@@ -798,7 +868,7 @@
template <typename KeyT, typename ValueT, unsigned InlineBuckets = 4,
typename KeyInfoT = DenseMapInfo<KeyT>,
- typename BucketT = detail::DenseMapPair<KeyT, ValueT>>
+ typename BucketT = llvm::detail::DenseMapPair<KeyT, ValueT>>
class SmallDenseMap
: public DenseMapBase<
SmallDenseMap<KeyT, ValueT, InlineBuckets, KeyInfoT, BucketT>, KeyT,
diff --git a/linux-x64/clang/include/llvm/ADT/DenseMapInfo.h b/linux-x64/clang/include/llvm/ADT/DenseMapInfo.h
index 5d12b42..18d6dff 100644
--- a/linux-x64/clang/include/llvm/ADT/DenseMapInfo.h
+++ b/linux-x64/clang/include/llvm/ADT/DenseMapInfo.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/DenseMapInfo.h - Type traits for DenseMap -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/DenseSet.h b/linux-x64/clang/include/llvm/ADT/DenseSet.h
index 52fe4ad..5eaaf27 100644
--- a/linux-x64/clang/include/llvm/ADT/DenseSet.h
+++ b/linux-x64/clang/include/llvm/ADT/DenseSet.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/DenseSet.h - Dense probed hash table ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -16,6 +15,7 @@
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseMapInfo.h"
+#include "llvm/Support/MathExtras.h"
#include "llvm/Support/type_traits.h"
#include <algorithm>
#include <cstddef>
@@ -67,7 +67,7 @@
explicit DenseSetImpl(unsigned InitialReserve = 0) : TheMap(InitialReserve) {}
DenseSetImpl(std::initializer_list<ValueT> Elems)
- : DenseSetImpl(Elems.size()) {
+ : DenseSetImpl(PowerOf2Ceil(Elems.size())) {
insert(Elems.begin(), Elems.end());
}
@@ -214,6 +214,34 @@
}
};
+/// Equality comparison for DenseSet.
+///
+/// Iterates over elements of LHS confirming that each element is also a member
+/// of RHS, and that RHS contains no additional values.
+/// Equivalent to N calls to RHS.count. Amortized complexity is linear, worst
+/// case is O(N^2) (if every hash collides).
+template <typename ValueT, typename MapTy, typename ValueInfoT>
+bool operator==(const DenseSetImpl<ValueT, MapTy, ValueInfoT> &LHS,
+ const DenseSetImpl<ValueT, MapTy, ValueInfoT> &RHS) {
+ if (LHS.size() != RHS.size())
+ return false;
+
+ for (auto &E : LHS)
+ if (!RHS.count(E))
+ return false;
+
+ return true;
+}
+
+/// Inequality comparison for DenseSet.
+///
+/// Equivalent to !(LHS == RHS). See operator== for performance notes.
+template <typename ValueT, typename MapTy, typename ValueInfoT>
+bool operator!=(const DenseSetImpl<ValueT, MapTy, ValueInfoT> &LHS,
+ const DenseSetImpl<ValueT, MapTy, ValueInfoT> &RHS) {
+ return !(LHS == RHS);
+}
+
} // end namespace detail
/// Implements a dense probed hash-table based set.
diff --git a/linux-x64/clang/include/llvm/ADT/DepthFirstIterator.h b/linux-x64/clang/include/llvm/ADT/DepthFirstIterator.h
index 1f3766d..11967f5 100644
--- a/linux-x64/clang/include/llvm/ADT/DepthFirstIterator.h
+++ b/linux-x64/clang/include/llvm/ADT/DepthFirstIterator.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/DepthFirstIterator.h - Depth First iterator -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/EpochTracker.h b/linux-x64/clang/include/llvm/ADT/EpochTracker.h
index 49ef192..a782b47 100644
--- a/linux-x64/clang/include/llvm/ADT/EpochTracker.h
+++ b/linux-x64/clang/include/llvm/ADT/EpochTracker.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/EpochTracker.h - ADT epoch tracking --------------*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/EquivalenceClasses.h b/linux-x64/clang/include/llvm/ADT/EquivalenceClasses.h
index e3f4843..2cb7108 100644
--- a/linux-x64/clang/include/llvm/ADT/EquivalenceClasses.h
+++ b/linux-x64/clang/include/llvm/ADT/EquivalenceClasses.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/EquivalenceClasses.h - Generic Equiv. Classes ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/FoldingSet.h b/linux-x64/clang/include/llvm/ADT/FoldingSet.h
index e363e69..d5837e5 100644
--- a/linux-x64/clang/include/llvm/ADT/FoldingSet.h
+++ b/linux-x64/clang/include/llvm/ADT/FoldingSet.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/FoldingSet.h - Uniquing Hash Set ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/FunctionExtras.h b/linux-x64/clang/include/llvm/ADT/FunctionExtras.h
index 2b75dc6..121aa52 100644
--- a/linux-x64/clang/include/llvm/ADT/FunctionExtras.h
+++ b/linux-x64/clang/include/llvm/ADT/FunctionExtras.h
@@ -1,9 +1,8 @@
//===- FunctionExtras.h - Function type erasure utilities -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/ADT/GraphTraits.h b/linux-x64/clang/include/llvm/ADT/GraphTraits.h
index d39b50f..3ce9122 100644
--- a/linux-x64/clang/include/llvm/ADT/GraphTraits.h
+++ b/linux-x64/clang/include/llvm/ADT/GraphTraits.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/GraphTraits.h - Graph traits template -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/Hashing.h b/linux-x64/clang/include/llvm/ADT/Hashing.h
index 9175c54..f639aa2 100644
--- a/linux-x64/clang/include/llvm/ADT/Hashing.h
+++ b/linux-x64/clang/include/llvm/ADT/Hashing.h
@@ -1,9 +1,8 @@
//===-- llvm/ADT/Hashing.h - Utilities for hashing --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/ImmutableList.h b/linux-x64/clang/include/llvm/ADT/ImmutableList.h
index 0541dc2..c9ee494 100644
--- a/linux-x64/clang/include/llvm/ADT/ImmutableList.h
+++ b/linux-x64/clang/include/llvm/ADT/ImmutableList.h
@@ -1,9 +1,8 @@
//==--- ImmutableList.h - Immutable (functional) list interface --*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -242,10 +241,6 @@
}
};
-template <typename T> struct isPodLike;
-template <typename T>
-struct isPodLike<ImmutableList<T>> { static const bool value = true; };
-
} // end namespace llvm
#endif // LLVM_ADT_IMMUTABLELIST_H
diff --git a/linux-x64/clang/include/llvm/ADT/ImmutableMap.h b/linux-x64/clang/include/llvm/ADT/ImmutableMap.h
index cbc27ff..86fd7fe 100644
--- a/linux-x64/clang/include/llvm/ADT/ImmutableMap.h
+++ b/linux-x64/clang/include/llvm/ADT/ImmutableMap.h
@@ -1,9 +1,8 @@
//===--- ImmutableMap.h - Immutable (functional) map interface --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/ImmutableSet.h b/linux-x64/clang/include/llvm/ADT/ImmutableSet.h
index b1d5f4a..5871054 100644
--- a/linux-x64/clang/include/llvm/ADT/ImmutableSet.h
+++ b/linux-x64/clang/include/llvm/ADT/ImmutableSet.h
@@ -1,9 +1,8 @@
//===--- ImmutableSet.h - Immutable (functional) set interface --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/IndexedMap.h b/linux-x64/clang/include/llvm/ADT/IndexedMap.h
index 2ee80d2..b44f16b 100644
--- a/linux-x64/clang/include/llvm/ADT/IndexedMap.h
+++ b/linux-x64/clang/include/llvm/ADT/IndexedMap.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/IndexedMap.h - An index map implementation ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/IntEqClasses.h b/linux-x64/clang/include/llvm/ADT/IntEqClasses.h
index 0baee2f..08f46a3 100644
--- a/linux-x64/clang/include/llvm/ADT/IntEqClasses.h
+++ b/linux-x64/clang/include/llvm/ADT/IntEqClasses.h
@@ -1,9 +1,8 @@
//===-- llvm/ADT/IntEqClasses.h - Equiv. Classes of Integers ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/IntervalMap.h b/linux-x64/clang/include/llvm/ADT/IntervalMap.h
index b75c492..12828c4 100644
--- a/linux-x64/clang/include/llvm/ADT/IntervalMap.h
+++ b/linux-x64/clang/include/llvm/ADT/IntervalMap.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/IntervalMap.h - A sorted interval map -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -1134,6 +1133,19 @@
I.find(x);
return I;
}
+
+ /// overlaps(a, b) - Return true if the intervals in this map overlap with the
+ /// interval [a;b].
+ bool overlaps(KeyT a, KeyT b) {
+ assert(Traits::nonEmpty(a, b));
+ const_iterator I = find(a);
+ if (!I.valid())
+ return false;
+ // [a;b] and [x;y] overlap iff x<=b and a<=y. The find() call guarantees the
+ // second part (y = find(a).stop()), so it is sufficient to check the first
+ // one.
+ return !Traits::stopLess(b, I.start());
+ }
};
/// treeSafeLookup - Return the mapped value at x or NotFound, assuming a
diff --git a/linux-x64/clang/include/llvm/ADT/IntrusiveRefCntPtr.h b/linux-x64/clang/include/llvm/ADT/IntrusiveRefCntPtr.h
index 430ef86..6d97fe1 100644
--- a/linux-x64/clang/include/llvm/ADT/IntrusiveRefCntPtr.h
+++ b/linux-x64/clang/include/llvm/ADT/IntrusiveRefCntPtr.h
@@ -1,9 +1,8 @@
//==- llvm/ADT/IntrusiveRefCntPtr.h - Smart Refcounting Pointer --*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/MapVector.h b/linux-x64/clang/include/llvm/ADT/MapVector.h
index 47b4987..1de1124 100644
--- a/linux-x64/clang/include/llvm/ADT/MapVector.h
+++ b/linux-x64/clang/include/llvm/ADT/MapVector.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/MapVector.h - Map w/ deterministic value order --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/None.h b/linux-x64/clang/include/llvm/ADT/None.h
index 4b6bc1e..004ca0a 100644
--- a/linux-x64/clang/include/llvm/ADT/None.h
+++ b/linux-x64/clang/include/llvm/ADT/None.h
@@ -1,9 +1,8 @@
//===-- None.h - Simple null value for implicit construction ------*- C++ -*-=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/Optional.h b/linux-x64/clang/include/llvm/ADT/Optional.h
index 353e5d0..25a3185 100644
--- a/linux-x64/clang/include/llvm/ADT/Optional.h
+++ b/linux-x64/clang/include/llvm/ADT/Optional.h
@@ -1,9 +1,8 @@
//===- Optional.h - Simple variant for passing optional values --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -27,9 +26,11 @@
namespace llvm {
+class raw_ostream;
+
namespace optional_detail {
/// Storage for any type.
-template <typename T, bool IsPodLike> struct OptionalStorage {
+template <typename T, bool = is_trivially_copyable<T>::value> struct OptionalStorage {
AlignedCharArrayUnion<T> storage;
bool hasVal = false;
@@ -108,28 +109,10 @@
}
};
-#if !defined(__GNUC__) || defined(__clang__) // GCC up to GCC7 miscompiles this.
-/// Storage for trivially copyable types only.
-template <typename T> struct OptionalStorage<T, true> {
- AlignedCharArrayUnion<T> storage;
- bool hasVal = false;
-
- OptionalStorage() = default;
-
- OptionalStorage(const T &y) : hasVal(true) { new (storage.buffer) T(y); }
- OptionalStorage &operator=(const T &y) {
- *reinterpret_cast<T *>(storage.buffer) = y;
- hasVal = true;
- return *this;
- }
-
- void reset() { hasVal = false; }
-};
-#endif
} // namespace optional_detail
template <typename T> class Optional {
- optional_detail::OptionalStorage<T, isPodLike<T>::value> Storage;
+ optional_detail::OptionalStorage<T> Storage;
public:
using value_type = T;
@@ -202,11 +185,6 @@
#endif
};
-template <typename T> struct isPodLike<Optional<T>> {
- // An Optional<T> is pod-like if T is.
- static const bool value = isPodLike<T>::value;
-};
-
template <typename T, typename U>
bool operator==(const Optional<T> &X, const Optional<U> &Y) {
if (X && Y)
@@ -341,6 +319,18 @@
return !(X < Y);
}
+raw_ostream &operator<<(raw_ostream &OS, NoneType);
+
+template <typename T, typename = decltype(std::declval<raw_ostream &>()
+ << std::declval<const T &>())>
+raw_ostream &operator<<(raw_ostream &OS, const Optional<T> &O) {
+ if (O)
+ OS << *O;
+ else
+ OS << None;
+ return OS;
+}
+
} // end namespace llvm
#endif // LLVM_ADT_OPTIONAL_H
diff --git a/linux-x64/clang/include/llvm/ADT/PackedVector.h b/linux-x64/clang/include/llvm/ADT/PackedVector.h
index 3d53c49..ae7f8cc 100644
--- a/linux-x64/clang/include/llvm/ADT/PackedVector.h
+++ b/linux-x64/clang/include/llvm/ADT/PackedVector.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/PackedVector.h - Packed values vector -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/PointerEmbeddedInt.h b/linux-x64/clang/include/llvm/ADT/PointerEmbeddedInt.h
index ab4e104..3eb6edb 100644
--- a/linux-x64/clang/include/llvm/ADT/PointerEmbeddedInt.h
+++ b/linux-x64/clang/include/llvm/ADT/PointerEmbeddedInt.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/PointerEmbeddedInt.h ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/ADT/PointerIntPair.h b/linux-x64/clang/include/llvm/ADT/PointerIntPair.h
index 884d051..24a2bb6 100644
--- a/linux-x64/clang/include/llvm/ADT/PointerIntPair.h
+++ b/linux-x64/clang/include/llvm/ADT/PointerIntPair.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/PointerIntPair.h - Pair for pointer and int -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -15,6 +14,7 @@
#define LLVM_ADT_POINTERINTPAIR_H
#include "llvm/Support/PointerLikeTypeTraits.h"
+#include "llvm/Support/type_traits.h"
#include <cassert>
#include <cstdint>
#include <limits>
@@ -42,6 +42,8 @@
typename PtrTraits = PointerLikeTypeTraits<PointerTy>,
typename Info = PointerIntPairInfo<PointerTy, IntBits, PtrTraits>>
class PointerIntPair {
+ // Used by MSVC visualizer and generally helpful for debugging/visualizing.
+ using InfoTy = Info;
intptr_t Value = 0;
public:
@@ -124,6 +126,19 @@
}
};
+// Specialize is_trivially_copyable to avoid limitation of llvm::is_trivially_copyable
+// when compiled with gcc 4.9.
+template <typename PointerTy, unsigned IntBits, typename IntType,
+ typename PtrTraits,
+ typename Info>
+struct is_trivially_copyable<PointerIntPair<PointerTy, IntBits, IntType, PtrTraits, Info>> : std::true_type {
+#ifdef HAVE_STD_IS_TRIVIALLY_COPYABLE
+ static_assert(std::is_trivially_copyable<PointerIntPair<PointerTy, IntBits, IntType, PtrTraits, Info>>::value,
+ "inconsistent behavior between llvm:: and std:: implementation of is_trivially_copyable");
+#endif
+};
+
+
template <typename PointerT, unsigned IntBits, typename PtrTraits>
struct PointerIntPairInfo {
static_assert(PtrTraits::NumLowBitsAvailable <
@@ -174,12 +189,6 @@
}
};
-template <typename T> struct isPodLike;
-template <typename PointerTy, unsigned IntBits, typename IntType>
-struct isPodLike<PointerIntPair<PointerTy, IntBits, IntType>> {
- static const bool value = true;
-};
-
// Provide specialization of DenseMapInfo for PointerIntPair.
template <typename PointerTy, unsigned IntBits, typename IntType>
struct DenseMapInfo<PointerIntPair<PointerTy, IntBits, IntType>> {
diff --git a/linux-x64/clang/include/llvm/ADT/PointerSumType.h b/linux-x64/clang/include/llvm/ADT/PointerSumType.h
index a19e45a..d467f83 100644
--- a/linux-x64/clang/include/llvm/ADT/PointerSumType.h
+++ b/linux-x64/clang/include/llvm/ADT/PointerSumType.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/PointerSumType.h --------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/ADT/PointerUnion.h b/linux-x64/clang/include/llvm/ADT/PointerUnion.h
index 315e583..0605429 100644
--- a/linux-x64/clang/include/llvm/ADT/PointerUnion.h
+++ b/linux-x64/clang/include/llvm/ADT/PointerUnion.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/PointerUnion.h - Discriminated Union of 2 Ptrs --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/PostOrderIterator.h b/linux-x64/clang/include/llvm/ADT/PostOrderIterator.h
index dc8a9b6..2fe7447 100644
--- a/linux-x64/clang/include/llvm/ADT/PostOrderIterator.h
+++ b/linux-x64/clang/include/llvm/ADT/PostOrderIterator.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/PostOrderIterator.h - PostOrder iterator --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -296,12 +295,15 @@
public:
using rpo_iterator = typename std::vector<NodeRef>::reverse_iterator;
+ using const_rpo_iterator = typename std::vector<NodeRef>::const_reverse_iterator;
ReversePostOrderTraversal(GraphT G) { Initialize(GT::getEntryNode(G)); }
// Because we want a reverse post order, use reverse iterators from the vector
rpo_iterator begin() { return Blocks.rbegin(); }
+ const_rpo_iterator begin() const { return Blocks.crbegin(); }
rpo_iterator end() { return Blocks.rend(); }
+ const_rpo_iterator end() const { return Blocks.crend(); }
};
} // end namespace llvm
diff --git a/linux-x64/clang/include/llvm/ADT/PriorityQueue.h b/linux-x64/clang/include/llvm/ADT/PriorityQueue.h
index 8ba871e..cf79ee1 100644
--- a/linux-x64/clang/include/llvm/ADT/PriorityQueue.h
+++ b/linux-x64/clang/include/llvm/ADT/PriorityQueue.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/PriorityQueue.h - Priority queues ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/PriorityWorklist.h b/linux-x64/clang/include/llvm/ADT/PriorityWorklist.h
index aa531f3..96d22c8 100644
--- a/linux-x64/clang/include/llvm/ADT/PriorityWorklist.h
+++ b/linux-x64/clang/include/llvm/ADT/PriorityWorklist.h
@@ -1,9 +1,8 @@
//===- PriorityWorklist.h - Worklist with insertion priority ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/ADT/SCCIterator.h b/linux-x64/clang/include/llvm/ADT/SCCIterator.h
index ab1dc46..eb1a5d0 100644
--- a/linux-x64/clang/include/llvm/ADT/SCCIterator.h
+++ b/linux-x64/clang/include/llvm/ADT/SCCIterator.h
@@ -1,9 +1,8 @@
//===- ADT/SCCIterator.h - Strongly Connected Comp. Iter. -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/ADT/STLExtras.h b/linux-x64/clang/include/llvm/ADT/STLExtras.h
index c209c4a..9a891d1 100644
--- a/linux-x64/clang/include/llvm/ADT/STLExtras.h
+++ b/linux-x64/clang/include/llvm/ADT/STLExtras.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/STLExtras.h - Useful STL related functions ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -71,6 +70,16 @@
struct conjunction<B1, Bn...>
: std::conditional<bool(B1::value), conjunction<Bn...>, B1>::type {};
+template <typename T> struct make_const_ptr {
+ using type =
+ typename std::add_pointer<typename std::add_const<T>::type>::type;
+};
+
+template <typename T> struct make_const_ref {
+ using type = typename std::add_lvalue_reference<
+ typename std::add_const<T>::type>::type;
+};
+
//===----------------------------------------------------------------------===//
// Extra additions to <functional>
//===----------------------------------------------------------------------===//
@@ -195,6 +204,12 @@
adl_detail::adl_swap(std::forward<T>(lhs), std::forward<T>(rhs));
}
+/// Test whether \p RangeOrContainer is empty. Similar to C++17 std::empty.
+template <typename T>
+constexpr bool empty(const T &RangeOrContainer) {
+ return adl_begin(RangeOrContainer) == adl_end(RangeOrContainer);
+}
+
// mapped_iterator - This is a simple iterator adapter that causes a function to
// be applied whenever operator* is invoked on the iterator.
@@ -502,9 +517,11 @@
EarlyIncIteratorT(std::end(std::forward<RangeT>(Range))));
}
-// forward declarations required by zip_shortest/zip_first
+// forward declarations required by zip_shortest/zip_first/zip_longest
template <typename R, typename UnaryPredicate>
bool all_of(R &&range, UnaryPredicate P);
+template <typename R, typename UnaryPredicate>
+bool any_of(R &&range, UnaryPredicate P);
template <size_t... I> struct index_sequence;
@@ -655,6 +672,132 @@
std::forward<T>(t), std::forward<U>(u), std::forward<Args>(args)...);
}
+namespace detail {
+template <typename Iter>
+static Iter next_or_end(const Iter &I, const Iter &End) {
+ if (I == End)
+ return End;
+ return std::next(I);
+}
+
+template <typename Iter>
+static auto deref_or_none(const Iter &I, const Iter &End)
+ -> llvm::Optional<typename std::remove_const<
+ typename std::remove_reference<decltype(*I)>::type>::type> {
+ if (I == End)
+ return None;
+ return *I;
+}
+
+template <typename Iter> struct ZipLongestItemType {
+ using type =
+ llvm::Optional<typename std::remove_const<typename std::remove_reference<
+ decltype(*std::declval<Iter>())>::type>::type>;
+};
+
+template <typename... Iters> struct ZipLongestTupleType {
+ using type = std::tuple<typename ZipLongestItemType<Iters>::type...>;
+};
+
+template <typename... Iters>
+class zip_longest_iterator
+ : public iterator_facade_base<
+ zip_longest_iterator<Iters...>,
+ typename std::common_type<
+ std::forward_iterator_tag,
+ typename std::iterator_traits<Iters>::iterator_category...>::type,
+ typename ZipLongestTupleType<Iters...>::type,
+ typename std::iterator_traits<typename std::tuple_element<
+ 0, std::tuple<Iters...>>::type>::difference_type,
+ typename ZipLongestTupleType<Iters...>::type *,
+ typename ZipLongestTupleType<Iters...>::type> {
+public:
+ using value_type = typename ZipLongestTupleType<Iters...>::type;
+
+private:
+ std::tuple<Iters...> iterators;
+ std::tuple<Iters...> end_iterators;
+
+ template <size_t... Ns>
+ bool test(const zip_longest_iterator<Iters...> &other,
+ index_sequence<Ns...>) const {
+ return llvm::any_of(
+ std::initializer_list<bool>{std::get<Ns>(this->iterators) !=
+ std::get<Ns>(other.iterators)...},
+ identity<bool>{});
+ }
+
+ template <size_t... Ns> value_type deref(index_sequence<Ns...>) const {
+ return value_type(
+ deref_or_none(std::get<Ns>(iterators), std::get<Ns>(end_iterators))...);
+ }
+
+ template <size_t... Ns>
+ decltype(iterators) tup_inc(index_sequence<Ns...>) const {
+ return std::tuple<Iters...>(
+ next_or_end(std::get<Ns>(iterators), std::get<Ns>(end_iterators))...);
+ }
+
+public:
+ zip_longest_iterator(std::pair<Iters &&, Iters &&>... ts)
+ : iterators(std::forward<Iters>(ts.first)...),
+ end_iterators(std::forward<Iters>(ts.second)...) {}
+
+ value_type operator*() { return deref(index_sequence_for<Iters...>{}); }
+
+ value_type operator*() const { return deref(index_sequence_for<Iters...>{}); }
+
+ zip_longest_iterator<Iters...> &operator++() {
+ iterators = tup_inc(index_sequence_for<Iters...>{});
+ return *this;
+ }
+
+ bool operator==(const zip_longest_iterator<Iters...> &other) const {
+ return !test(other, index_sequence_for<Iters...>{});
+ }
+};
+
+template <typename... Args> class zip_longest_range {
+public:
+ using iterator =
+ zip_longest_iterator<decltype(adl_begin(std::declval<Args>()))...>;
+ using iterator_category = typename iterator::iterator_category;
+ using value_type = typename iterator::value_type;
+ using difference_type = typename iterator::difference_type;
+ using pointer = typename iterator::pointer;
+ using reference = typename iterator::reference;
+
+private:
+ std::tuple<Args...> ts;
+
+ template <size_t... Ns> iterator begin_impl(index_sequence<Ns...>) const {
+ return iterator(std::make_pair(adl_begin(std::get<Ns>(ts)),
+ adl_end(std::get<Ns>(ts)))...);
+ }
+
+ template <size_t... Ns> iterator end_impl(index_sequence<Ns...>) const {
+ return iterator(std::make_pair(adl_end(std::get<Ns>(ts)),
+ adl_end(std::get<Ns>(ts)))...);
+ }
+
+public:
+ zip_longest_range(Args &&... ts_) : ts(std::forward<Args>(ts_)...) {}
+
+ iterator begin() const { return begin_impl(index_sequence_for<Args...>{}); }
+ iterator end() const { return end_impl(index_sequence_for<Args...>{}); }
+};
+} // namespace detail
+
+/// Iterate over two or more iterators at the same time. Iteration continues
+/// until all iterators reach the end. The llvm::Optional only contains a value
+/// if the iterator has not reached the end.
+template <typename T, typename U, typename... Args>
+detail::zip_longest_range<T, U, Args...> zip_longest(T &&t, U &&u,
+ Args &&... args) {
+ return detail::zip_longest_range<T, U, Args...>(
+ std::forward<T>(t), std::forward<U>(u), std::forward<Args>(args)...);
+}
+
/// Iterator wrapper that concatenates sequences together.
///
/// This can concatenate different iterators, even with different types, into
@@ -1399,6 +1542,40 @@
Indices{});
}
+/// Return true if the sequence [Begin, End) has exactly N items. Runs in O(N)
+/// time. Not meant for use with random-access iterators.
+template <typename IterTy>
+bool hasNItems(
+ IterTy &&Begin, IterTy &&End, unsigned N,
+ typename std::enable_if<
+ !std::is_same<
+ typename std::iterator_traits<typename std::remove_reference<
+ decltype(Begin)>::type>::iterator_category,
+ std::random_access_iterator_tag>::value,
+ void>::type * = nullptr) {
+ for (; N; --N, ++Begin)
+ if (Begin == End)
+ return false; // Too few.
+ return Begin == End;
+}
+
+/// Return true if the sequence [Begin, End) has N or more items. Runs in O(N)
+/// time. Not meant for use with random-access iterators.
+template <typename IterTy>
+bool hasNItemsOrMore(
+ IterTy &&Begin, IterTy &&End, unsigned N,
+ typename std::enable_if<
+ !std::is_same<
+ typename std::iterator_traits<typename std::remove_reference<
+ decltype(Begin)>::type>::iterator_category,
+ std::random_access_iterator_tag>::value,
+ void>::type * = nullptr) {
+ for (; N; --N, ++Begin)
+ if (Begin == End)
+ return false; // Too few.
+ return true;
+}
+
} // end namespace llvm
#endif // LLVM_ADT_STLEXTRAS_H
diff --git a/linux-x64/clang/include/llvm/ADT/ScopeExit.h b/linux-x64/clang/include/llvm/ADT/ScopeExit.h
index bd13755..712d912 100644
--- a/linux-x64/clang/include/llvm/ADT/ScopeExit.h
+++ b/linux-x64/clang/include/llvm/ADT/ScopeExit.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/ScopeExit.h - Execute code at scope exit --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/ScopedHashTable.h b/linux-x64/clang/include/llvm/ADT/ScopedHashTable.h
index 22b0c1b..40c49eb 100644
--- a/linux-x64/clang/include/llvm/ADT/ScopedHashTable.h
+++ b/linux-x64/clang/include/llvm/ADT/ScopedHashTable.h
@@ -1,9 +1,8 @@
//===- ScopedHashTable.h - A simple scoped hash table -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/Sequence.h b/linux-x64/clang/include/llvm/ADT/Sequence.h
index 3d4a897..8c505f2 100644
--- a/linux-x64/clang/include/llvm/ADT/Sequence.h
+++ b/linux-x64/clang/include/llvm/ADT/Sequence.h
@@ -1,9 +1,8 @@
//===- Sequence.h - Utility for producing sequences of values ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/ADT/SetOperations.h b/linux-x64/clang/include/llvm/ADT/SetOperations.h
index 7c9f2fb..037256a 100644
--- a/linux-x64/clang/include/llvm/ADT/SetOperations.h
+++ b/linux-x64/clang/include/llvm/ADT/SetOperations.h
@@ -1,9 +1,8 @@
//===-- llvm/ADT/SetOperations.h - Generic Set Operations -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/SetVector.h b/linux-x64/clang/include/llvm/ADT/SetVector.h
index 3d67810..d0a0d28 100644
--- a/linux-x64/clang/include/llvm/ADT/SetVector.h
+++ b/linux-x64/clang/include/llvm/ADT/SetVector.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/SetVector.h - Set with insert order iteration ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/SmallBitVector.h b/linux-x64/clang/include/llvm/ADT/SmallBitVector.h
index f86bebd..742450e 100644
--- a/linux-x64/clang/include/llvm/ADT/SmallBitVector.h
+++ b/linux-x64/clang/include/llvm/ADT/SmallBitVector.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/SmallBitVector.h - 'Normally small' bit vectors -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -92,10 +91,6 @@
};
private:
- bool isSmall() const {
- return X & uintptr_t(1);
- }
-
BitVector *getPointer() const {
assert(!isSmall());
return reinterpret_cast<BitVector *>(X);
@@ -186,6 +181,8 @@
return make_range(set_bits_begin(), set_bits_end());
}
+ bool isSmall() const { return X & uintptr_t(1); }
+
/// Tests whether there are no bits in this bitvector.
bool empty() const {
return isSmall() ? getSmallSize() == 0 : getPointer()->empty();
@@ -242,7 +239,7 @@
uintptr_t Bits = getSmallBits();
if (Bits == 0)
return -1;
- return NumBaseBits - countLeadingZeros(Bits);
+ return NumBaseBits - countLeadingZeros(Bits) - 1;
}
return getPointer()->find_last();
}
@@ -265,7 +262,9 @@
return -1;
uintptr_t Bits = getSmallBits();
- return NumBaseBits - countLeadingOnes(Bits);
+ // Set unused bits.
+ Bits |= ~uintptr_t(0) << getSmallSize();
+ return NumBaseBits - countLeadingOnes(Bits) - 1;
}
return getPointer()->find_last_unset();
}
@@ -487,10 +486,17 @@
bool operator==(const SmallBitVector &RHS) const {
if (size() != RHS.size())
return false;
- if (isSmall())
+ if (isSmall() && RHS.isSmall())
return getSmallBits() == RHS.getSmallBits();
- else
+ else if (!isSmall() && !RHS.isSmall())
return *getPointer() == *RHS.getPointer();
+ else {
+ for (size_t i = 0, e = size(); i != e; ++i) {
+ if ((*this)[i] != RHS[i])
+ return false;
+ }
+ return true;
+ }
}
bool operator!=(const SmallBitVector &RHS) const {
@@ -498,16 +504,19 @@
}
// Intersection, union, disjoint union.
+ // FIXME BitVector::operator&= does not resize the LHS but this does
SmallBitVector &operator&=(const SmallBitVector &RHS) {
resize(std::max(size(), RHS.size()));
- if (isSmall())
+ if (isSmall() && RHS.isSmall())
setSmallBits(getSmallBits() & RHS.getSmallBits());
- else if (!RHS.isSmall())
+ else if (!isSmall() && !RHS.isSmall())
getPointer()->operator&=(*RHS.getPointer());
else {
- SmallBitVector Copy = RHS;
- Copy.resize(size());
- getPointer()->operator&=(*Copy.getPointer());
+ size_t i, e;
+ for (i = 0, e = std::min(size(), RHS.size()); i != e; ++i)
+ (*this)[i] = test(i) && RHS.test(i);
+ for (e = size(); i != e; ++i)
+ reset(i);
}
return *this;
}
@@ -547,28 +556,26 @@
SmallBitVector &operator|=(const SmallBitVector &RHS) {
resize(std::max(size(), RHS.size()));
- if (isSmall())
+ if (isSmall() && RHS.isSmall())
setSmallBits(getSmallBits() | RHS.getSmallBits());
- else if (!RHS.isSmall())
+ else if (!isSmall() && !RHS.isSmall())
getPointer()->operator|=(*RHS.getPointer());
else {
- SmallBitVector Copy = RHS;
- Copy.resize(size());
- getPointer()->operator|=(*Copy.getPointer());
+ for (size_t i = 0, e = RHS.size(); i != e; ++i)
+ (*this)[i] = test(i) || RHS.test(i);
}
return *this;
}
SmallBitVector &operator^=(const SmallBitVector &RHS) {
resize(std::max(size(), RHS.size()));
- if (isSmall())
+ if (isSmall() && RHS.isSmall())
setSmallBits(getSmallBits() ^ RHS.getSmallBits());
- else if (!RHS.isSmall())
+ else if (!isSmall() && !RHS.isSmall())
getPointer()->operator^=(*RHS.getPointer());
else {
- SmallBitVector Copy = RHS;
- Copy.resize(size());
- getPointer()->operator^=(*Copy.getPointer());
+ for (size_t i = 0, e = RHS.size(); i != e; ++i)
+ (*this)[i] = test(i) != RHS.test(i);
}
return *this;
}
diff --git a/linux-x64/clang/include/llvm/ADT/SmallPtrSet.h b/linux-x64/clang/include/llvm/ADT/SmallPtrSet.h
index db08e40..9135182 100644
--- a/linux-x64/clang/include/llvm/ADT/SmallPtrSet.h
+++ b/linux-x64/clang/include/llvm/ADT/SmallPtrSet.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/SmallPtrSet.h - 'Normally small' pointer set ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/SmallSet.h b/linux-x64/clang/include/llvm/ADT/SmallSet.h
index 5d84627..6b128c2 100644
--- a/linux-x64/clang/include/llvm/ADT/SmallSet.h
+++ b/linux-x64/clang/include/llvm/ADT/SmallSet.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/SmallSet.h - 'Normally small' sets --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/SmallString.h b/linux-x64/clang/include/llvm/ADT/SmallString.h
index ff46e85..898be80 100644
--- a/linux-x64/clang/include/llvm/ADT/SmallString.h
+++ b/linux-x64/clang/include/llvm/ADT/SmallString.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/SmallString.h - 'Normally small' strings --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/SmallVector.h b/linux-x64/clang/include/llvm/ADT/SmallVector.h
index e4ddd12..e3bfb90 100644
--- a/linux-x64/clang/include/llvm/ADT/SmallVector.h
+++ b/linux-x64/clang/include/llvm/ADT/SmallVector.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/SmallVector.h - 'Normally small' vectors --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -125,13 +124,9 @@
using const_pointer = const T *;
// forward iterator creation methods.
- LLVM_ATTRIBUTE_ALWAYS_INLINE
iterator begin() { return (iterator)this->BeginX; }
- LLVM_ATTRIBUTE_ALWAYS_INLINE
const_iterator begin() const { return (const_iterator)this->BeginX; }
- LLVM_ATTRIBUTE_ALWAYS_INLINE
iterator end() { return begin() + size(); }
- LLVM_ATTRIBUTE_ALWAYS_INLINE
const_iterator end() const { return begin() + size(); }
// reverse iterator creation methods.
@@ -150,12 +145,10 @@
/// Return a pointer to the vector's buffer, even if empty().
const_pointer data() const { return const_pointer(begin()); }
- LLVM_ATTRIBUTE_ALWAYS_INLINE
reference operator[](size_type idx) {
assert(idx < size());
return begin()[idx];
}
- LLVM_ATTRIBUTE_ALWAYS_INLINE
const_reference operator[](size_type idx) const {
assert(idx < size());
return begin()[idx];
@@ -180,9 +173,9 @@
}
};
-/// SmallVectorTemplateBase<isPodLike = false> - This is where we put method
+/// SmallVectorTemplateBase<TriviallyCopyable = false> - This is where we put method
/// implementations that are designed to work with non-POD-like T's.
-template <typename T, bool isPodLike>
+template <typename T, bool = is_trivially_copyable<T>::value>
class SmallVectorTemplateBase : public SmallVectorTemplateCommon<T> {
protected:
SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
@@ -236,8 +229,8 @@
};
// Define this out-of-line to dissuade the C++ compiler from inlining it.
-template <typename T, bool isPodLike>
-void SmallVectorTemplateBase<T, isPodLike>::grow(size_t MinSize) {
+template <typename T, bool TriviallyCopyable>
+void SmallVectorTemplateBase<T, TriviallyCopyable>::grow(size_t MinSize) {
if (MinSize > UINT32_MAX)
report_bad_alloc_error("SmallVector capacity overflow during allocation");
@@ -260,9 +253,8 @@
this->Capacity = NewCapacity;
}
-
-/// SmallVectorTemplateBase<isPodLike = true> - This is where we put method
-/// implementations that are designed to work with POD-like T's.
+/// SmallVectorTemplateBase<TriviallyCopyable = true> - This is where we put
+/// method implementations that are designed to work with POD-like T's.
template <typename T>
class SmallVectorTemplateBase<T, true> : public SmallVectorTemplateCommon<T> {
protected:
@@ -320,8 +312,8 @@
/// This class consists of common code factored out of the SmallVector class to
/// reduce code duplication based on the SmallVector 'N' template parameter.
template <typename T>
-class SmallVectorImpl : public SmallVectorTemplateBase<T, isPodLike<T>::value> {
- using SuperClass = SmallVectorTemplateBase<T, isPodLike<T>::value>;
+class SmallVectorImpl : public SmallVectorTemplateBase<T> {
+ using SuperClass = SmallVectorTemplateBase<T>;
public:
using iterator = typename SuperClass::iterator;
@@ -331,7 +323,7 @@
protected:
// Default ctor - Initialize to empty.
explicit SmallVectorImpl(unsigned N)
- : SmallVectorTemplateBase<T, isPodLike<T>::value>(N) {}
+ : SmallVectorTemplateBase<T>(N) {}
public:
SmallVectorImpl(const SmallVectorImpl &) = delete;
diff --git a/linux-x64/clang/include/llvm/ADT/SparseBitVector.h b/linux-x64/clang/include/llvm/ADT/SparseBitVector.h
index 4cbf40c..12850e1 100644
--- a/linux-x64/clang/include/llvm/ADT/SparseBitVector.h
+++ b/linux-x64/clang/include/llvm/ADT/SparseBitVector.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/SparseBitVector.h - Efficient Sparse BitVector --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -261,21 +260,33 @@
BITWORD_SIZE = SparseBitVectorElement<ElementSize>::BITWORD_SIZE
};
- // Pointer to our current Element.
- ElementListIter CurrElementIter;
ElementList Elements;
+ // Pointer to our current Element. This has no visible effect on the external
+ // state of a SparseBitVector, it's just used to improve performance in the
+ // common case of testing/modifying bits with similar indices.
+ mutable ElementListIter CurrElementIter;
// This is like std::lower_bound, except we do linear searching from the
// current position.
- ElementListIter FindLowerBound(unsigned ElementIndex) {
+ ElementListIter FindLowerBoundImpl(unsigned ElementIndex) const {
+
+ // We cache a non-const iterator so we're forced to resort to const_cast to
+ // get the begin/end in the case where 'this' is const. To avoid duplication
+ // of code with the only difference being whether the const cast is present
+ // 'this' is always const in this particular function and we sort out the
+ // difference in FindLowerBound and FindLowerBoundConst.
+ ElementListIter Begin =
+ const_cast<SparseBitVector<ElementSize> *>(this)->Elements.begin();
+ ElementListIter End =
+ const_cast<SparseBitVector<ElementSize> *>(this)->Elements.end();
if (Elements.empty()) {
- CurrElementIter = Elements.begin();
- return Elements.begin();
+ CurrElementIter = Begin;
+ return CurrElementIter;
}
// Make sure our current iterator is valid.
- if (CurrElementIter == Elements.end())
+ if (CurrElementIter == End)
--CurrElementIter;
// Search from our current iterator, either backwards or forwards,
@@ -284,17 +295,23 @@
if (CurrElementIter->index() == ElementIndex) {
return ElementIter;
} else if (CurrElementIter->index() > ElementIndex) {
- while (ElementIter != Elements.begin()
+ while (ElementIter != Begin
&& ElementIter->index() > ElementIndex)
--ElementIter;
} else {
- while (ElementIter != Elements.end() &&
+ while (ElementIter != End &&
ElementIter->index() < ElementIndex)
++ElementIter;
}
CurrElementIter = ElementIter;
return ElementIter;
}
+ ElementListConstIter FindLowerBoundConst(unsigned ElementIndex) const {
+ return FindLowerBoundImpl(ElementIndex);
+ }
+ ElementListIter FindLowerBound(unsigned ElementIndex) {
+ return FindLowerBoundImpl(ElementIndex);
+ }
// Iterator to walk set bits in the bitmap. This iterator is a lot uglier
// than it would be, in order to be efficient.
@@ -423,22 +440,12 @@
public:
using iterator = SparseBitVectorIterator;
- SparseBitVector() {
- CurrElementIter = Elements.begin();
- }
+ SparseBitVector() : Elements(), CurrElementIter(Elements.begin()) {}
- // SparseBitVector copy ctor.
- SparseBitVector(const SparseBitVector &RHS) {
- ElementListConstIter ElementIter = RHS.Elements.begin();
- while (ElementIter != RHS.Elements.end()) {
- Elements.push_back(SparseBitVectorElement<ElementSize>(*ElementIter));
- ++ElementIter;
- }
-
- CurrElementIter = Elements.begin ();
- }
-
- ~SparseBitVector() = default;
+ SparseBitVector(const SparseBitVector &RHS)
+ : Elements(RHS.Elements), CurrElementIter(Elements.begin()) {}
+ SparseBitVector(SparseBitVector &&RHS)
+ : Elements(std::move(RHS.Elements)), CurrElementIter(Elements.begin()) {}
// Clear.
void clear() {
@@ -450,26 +457,23 @@
if (this == &RHS)
return *this;
- Elements.clear();
-
- ElementListConstIter ElementIter = RHS.Elements.begin();
- while (ElementIter != RHS.Elements.end()) {
- Elements.push_back(SparseBitVectorElement<ElementSize>(*ElementIter));
- ++ElementIter;
- }
-
- CurrElementIter = Elements.begin ();
-
+ Elements = RHS.Elements;
+ CurrElementIter = Elements.begin();
+ return *this;
+ }
+ SparseBitVector &operator=(SparseBitVector &&RHS) {
+ Elements = std::move(RHS.Elements);
+ CurrElementIter = Elements.begin();
return *this;
}
// Test, Reset, and Set a bit in the bitmap.
- bool test(unsigned Idx) {
+ bool test(unsigned Idx) const {
if (Elements.empty())
return false;
unsigned ElementIndex = Idx / ElementSize;
- ElementListIter ElementIter = FindLowerBound(ElementIndex);
+ ElementListConstIter ElementIter = FindLowerBoundConst(ElementIndex);
// If we can't find an element that is supposed to contain this bit, there
// is nothing more to do.
diff --git a/linux-x64/clang/include/llvm/ADT/SparseMultiSet.h b/linux-x64/clang/include/llvm/ADT/SparseMultiSet.h
index 3c86376..d9d3ff4 100644
--- a/linux-x64/clang/include/llvm/ADT/SparseMultiSet.h
+++ b/linux-x64/clang/include/llvm/ADT/SparseMultiSet.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/SparseMultiSet.h - Sparse multiset --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/SparseSet.h b/linux-x64/clang/include/llvm/ADT/SparseSet.h
index 74cc6da..a6eb9b9 100644
--- a/linux-x64/clang/include/llvm/ADT/SparseSet.h
+++ b/linux-x64/clang/include/llvm/ADT/SparseSet.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/SparseSet.h - Sparse set ------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/Statistic.h b/linux-x64/clang/include/llvm/ADT/Statistic.h
index 90c2eef..2ac59da 100644
--- a/linux-x64/clang/include/llvm/ADT/Statistic.h
+++ b/linux-x64/clang/include/llvm/ADT/Statistic.h
@@ -1,9 +1,8 @@
//===-- llvm/ADT/Statistic.h - Easy way to expose stats ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/StringExtras.h b/linux-x64/clang/include/llvm/ADT/StringExtras.h
index 60a0363..16ac90b 100644
--- a/linux-x64/clang/include/llvm/ADT/StringExtras.h
+++ b/linux-x64/clang/include/llvm/ADT/StringExtras.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/StringExtras.h - Useful string functions --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/StringMap.h b/linux-x64/clang/include/llvm/ADT/StringMap.h
index a9f83d3..d94e483 100644
--- a/linux-x64/clang/include/llvm/ADT/StringMap.h
+++ b/linux-x64/clang/include/llvm/ADT/StringMap.h
@@ -1,9 +1,8 @@
//===- StringMap.h - String Hash table map interface ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/StringRef.h b/linux-x64/clang/include/llvm/ADT/StringRef.h
index a5ba5b5..4661b1e 100644
--- a/linux-x64/clang/include/llvm/ADT/StringRef.h
+++ b/linux-x64/clang/include/llvm/ADT/StringRef.h
@@ -1,9 +1,8 @@
//===- StringRef.h - Constant String Reference Wrapper ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -63,7 +62,6 @@
// Workaround memcmp issue with null pointers (undefined behavior)
// by providing a specialized version
- LLVM_ATTRIBUTE_ALWAYS_INLINE
static int compareMemory(const char *Lhs, const char *Rhs, size_t Length) {
if (Length == 0) { return 0; }
return ::memcmp(Lhs,Rhs,Length);
@@ -81,17 +79,14 @@
StringRef(std::nullptr_t) = delete;
/// Construct a string ref from a cstring.
- LLVM_ATTRIBUTE_ALWAYS_INLINE
/*implicit*/ StringRef(const char *Str)
: Data(Str), Length(Str ? ::strlen(Str) : 0) {}
/// Construct a string ref from a pointer and length.
- LLVM_ATTRIBUTE_ALWAYS_INLINE
/*implicit*/ constexpr StringRef(const char *data, size_t length)
: Data(data), Length(length) {}
/// Construct a string ref from an std::string.
- LLVM_ATTRIBUTE_ALWAYS_INLINE
/*implicit*/ StringRef(const std::string &Str)
: Data(Str.data()), Length(Str.length()) {}
@@ -124,17 +119,14 @@
/// data - Get a pointer to the start of the string (which may not be null
/// terminated).
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
const char *data() const { return Data; }
/// empty - Check if the string is empty.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
bool empty() const { return Length == 0; }
/// size - Get the string size.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
size_t size() const { return Length; }
/// front - Get the first character in the string.
@@ -165,7 +157,6 @@
/// equals - Check for string equality, this is more efficient than
/// compare() when the relative ordering of inequal strings isn't needed.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
bool equals(StringRef RHS) const {
return (Length == RHS.Length &&
compareMemory(Data, RHS.Data, RHS.Length) == 0);
@@ -180,7 +171,6 @@
/// compare - Compare two strings; the result is -1, 0, or 1 if this string
/// is lexicographically less than, equal to, or greater than the \p RHS.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
int compare(StringRef RHS) const {
// Check the prefix for a mismatch.
if (int Res = compareMemory(Data, RHS.Data, std::min(Length, RHS.Length)))
@@ -263,7 +253,6 @@
/// Check if this string starts with the given \p Prefix.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
bool startswith(StringRef Prefix) const {
return Length >= Prefix.Length &&
compareMemory(Data, Prefix.Data, Prefix.Length) == 0;
@@ -275,7 +264,6 @@
/// Check if this string ends with the given \p Suffix.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
bool endswith(StringRef Suffix) const {
return Length >= Suffix.Length &&
compareMemory(end() - Suffix.Length, Suffix.Data, Suffix.Length) == 0;
@@ -294,7 +282,6 @@
/// \returns The index of the first occurrence of \p C, or npos if not
/// found.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
size_t find(char C, size_t From = 0) const {
size_t FindBegin = std::min(From, Length);
if (FindBegin < Length) { // Avoid calling memchr with nullptr.
@@ -317,7 +304,6 @@
/// \returns The index of the first character satisfying \p F starting from
/// \p From, or npos if not found.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
size_t find_if(function_ref<bool(char)> F, size_t From = 0) const {
StringRef S = drop_front(From);
while (!S.empty()) {
@@ -333,7 +319,6 @@
/// \returns The index of the first character not satisfying \p F starting
/// from \p From, or npos if not found.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
size_t find_if_not(function_ref<bool(char)> F, size_t From = 0) const {
return find_if([F](char c) { return !F(c); }, From);
}
@@ -444,19 +429,16 @@
/// Return true if the given string is a substring of *this, and false
/// otherwise.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
bool contains(StringRef Other) const { return find(Other) != npos; }
/// Return true if the given character is contained in *this, and false
/// otherwise.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
bool contains(char C) const { return find_first_of(C) != npos; }
/// Return true if the given string is a substring of *this, and false
/// otherwise.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
bool contains_lower(StringRef Other) const {
return find_lower(Other) != npos;
}
@@ -464,7 +446,6 @@
/// Return true if the given character is contained in *this, and false
/// otherwise.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
bool contains_lower(char C) const { return find_lower(C) != npos; }
/// @}
@@ -594,7 +575,6 @@
/// exceeds the number of characters remaining in the string, the string
/// suffix (starting with \p Start) will be returned.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringRef substr(size_t Start, size_t N = npos) const {
Start = std::min(Start, Length);
return StringRef(Data + Start, std::min(N, Length - Start));
@@ -604,7 +584,6 @@
/// elements remaining. If \p N is greater than the length of the
/// string, the entire string is returned.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringRef take_front(size_t N = 1) const {
if (N >= size())
return *this;
@@ -615,7 +594,6 @@
/// elements remaining. If \p N is greater than the length of the
/// string, the entire string is returned.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringRef take_back(size_t N = 1) const {
if (N >= size())
return *this;
@@ -625,7 +603,6 @@
/// Return the longest prefix of 'this' such that every character
/// in the prefix satisfies the given predicate.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringRef take_while(function_ref<bool(char)> F) const {
return substr(0, find_if_not(F));
}
@@ -633,7 +610,6 @@
/// Return the longest prefix of 'this' such that no character in
/// the prefix satisfies the given predicate.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringRef take_until(function_ref<bool(char)> F) const {
return substr(0, find_if(F));
}
@@ -641,7 +617,6 @@
/// Return a StringRef equal to 'this' but with the first \p N elements
/// dropped.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringRef drop_front(size_t N = 1) const {
assert(size() >= N && "Dropping more elements than exist");
return substr(N);
@@ -650,7 +625,6 @@
/// Return a StringRef equal to 'this' but with the last \p N elements
/// dropped.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringRef drop_back(size_t N = 1) const {
assert(size() >= N && "Dropping more elements than exist");
return substr(0, size()-N);
@@ -659,7 +633,6 @@
/// Return a StringRef equal to 'this', but with all characters satisfying
/// the given predicate dropped from the beginning of the string.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringRef drop_while(function_ref<bool(char)> F) const {
return substr(find_if_not(F));
}
@@ -667,14 +640,12 @@
/// Return a StringRef equal to 'this', but with all characters not
/// satisfying the given predicate dropped from the beginning of the string.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringRef drop_until(function_ref<bool(char)> F) const {
return substr(find_if(F));
}
/// Returns true if this StringRef has the given prefix and removes that
/// prefix.
- LLVM_ATTRIBUTE_ALWAYS_INLINE
bool consume_front(StringRef Prefix) {
if (!startswith(Prefix))
return false;
@@ -685,7 +656,6 @@
/// Returns true if this StringRef has the given suffix and removes that
/// suffix.
- LLVM_ATTRIBUTE_ALWAYS_INLINE
bool consume_back(StringRef Suffix) {
if (!endswith(Suffix))
return false;
@@ -706,7 +676,6 @@
/// will be returned. If this is less than \p Start, an empty string will
/// be returned.
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringRef slice(size_t Start, size_t End) const {
Start = std::min(Start, Length);
End = std::min(std::max(Start, End), Length);
@@ -894,12 +863,10 @@
/// @name StringRef Comparison Operators
/// @{
- LLVM_ATTRIBUTE_ALWAYS_INLINE
inline bool operator==(StringRef LHS, StringRef RHS) {
return LHS.equals(RHS);
}
- LLVM_ATTRIBUTE_ALWAYS_INLINE
inline bool operator!=(StringRef LHS, StringRef RHS) { return !(LHS == RHS); }
inline bool operator<(StringRef LHS, StringRef RHS) {
@@ -928,10 +895,6 @@
LLVM_NODISCARD
hash_code hash_value(StringRef S);
- // StringRefs can be treated like a POD type.
- template <typename T> struct isPodLike;
- template <> struct isPodLike<StringRef> { static const bool value = true; };
-
} // end namespace llvm
#endif // LLVM_ADT_STRINGREF_H
diff --git a/linux-x64/clang/include/llvm/ADT/StringSet.h b/linux-x64/clang/include/llvm/ADT/StringSet.h
index 9af44c0..fcf9519 100644
--- a/linux-x64/clang/include/llvm/ADT/StringSet.h
+++ b/linux-x64/clang/include/llvm/ADT/StringSet.h
@@ -1,9 +1,8 @@
//===- StringSet.h - The LLVM Compiler Driver -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open
-// Source License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/StringSwitch.h b/linux-x64/clang/include/llvm/ADT/StringSwitch.h
index b7860b9..fea911f 100644
--- a/linux-x64/clang/include/llvm/ADT/StringSwitch.h
+++ b/linux-x64/clang/include/llvm/ADT/StringSwitch.h
@@ -1,9 +1,8 @@
//===--- StringSwitch.h - Switch-on-literal-string Construct --------------===/
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//===----------------------------------------------------------------------===/
//
// This file implements the StringSwitch template, which mimics a switch()
@@ -49,7 +48,6 @@
Optional<T> Result;
public:
- LLVM_ATTRIBUTE_ALWAYS_INLINE
explicit StringSwitch(StringRef S)
: Str(S), Result() { }
@@ -66,7 +64,6 @@
~StringSwitch() = default;
// Case-sensitive case matchers
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringSwitch &Case(StringLiteral S, T Value) {
if (!Result && Str == S) {
Result = std::move(Value);
@@ -74,7 +71,6 @@
return *this;
}
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringSwitch& EndsWith(StringLiteral S, T Value) {
if (!Result && Str.endswith(S)) {
Result = std::move(Value);
@@ -82,7 +78,6 @@
return *this;
}
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringSwitch& StartsWith(StringLiteral S, T Value) {
if (!Result && Str.startswith(S)) {
Result = std::move(Value);
@@ -90,51 +85,43 @@
return *this;
}
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringSwitch &Cases(StringLiteral S0, StringLiteral S1, T Value) {
return Case(S0, Value).Case(S1, Value);
}
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2,
T Value) {
return Case(S0, Value).Cases(S1, S2, Value);
}
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2,
StringLiteral S3, T Value) {
return Case(S0, Value).Cases(S1, S2, S3, Value);
}
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2,
StringLiteral S3, StringLiteral S4, T Value) {
return Case(S0, Value).Cases(S1, S2, S3, S4, Value);
}
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2,
StringLiteral S3, StringLiteral S4, StringLiteral S5,
T Value) {
return Case(S0, Value).Cases(S1, S2, S3, S4, S5, Value);
}
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2,
StringLiteral S3, StringLiteral S4, StringLiteral S5,
StringLiteral S6, T Value) {
return Case(S0, Value).Cases(S1, S2, S3, S4, S5, S6, Value);
}
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2,
StringLiteral S3, StringLiteral S4, StringLiteral S5,
StringLiteral S6, StringLiteral S7, T Value) {
return Case(S0, Value).Cases(S1, S2, S3, S4, S5, S6, S7, Value);
}
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2,
StringLiteral S3, StringLiteral S4, StringLiteral S5,
StringLiteral S6, StringLiteral S7, StringLiteral S8,
@@ -142,7 +129,6 @@
return Case(S0, Value).Cases(S1, S2, S3, S4, S5, S6, S7, S8, Value);
}
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2,
StringLiteral S3, StringLiteral S4, StringLiteral S5,
StringLiteral S6, StringLiteral S7, StringLiteral S8,
@@ -151,7 +137,6 @@
}
// Case-insensitive case matchers.
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringSwitch &CaseLower(StringLiteral S, T Value) {
if (!Result && Str.equals_lower(S))
Result = std::move(Value);
@@ -159,7 +144,6 @@
return *this;
}
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringSwitch &EndsWithLower(StringLiteral S, T Value) {
if (!Result && Str.endswith_lower(S))
Result = Value;
@@ -167,7 +151,6 @@
return *this;
}
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringSwitch &StartsWithLower(StringLiteral S, T Value) {
if (!Result && Str.startswith_lower(S))
Result = std::move(Value);
@@ -175,31 +158,26 @@
return *this;
}
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringSwitch &CasesLower(StringLiteral S0, StringLiteral S1, T Value) {
return CaseLower(S0, Value).CaseLower(S1, Value);
}
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringSwitch &CasesLower(StringLiteral S0, StringLiteral S1, StringLiteral S2,
T Value) {
return CaseLower(S0, Value).CasesLower(S1, S2, Value);
}
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringSwitch &CasesLower(StringLiteral S0, StringLiteral S1, StringLiteral S2,
StringLiteral S3, T Value) {
return CaseLower(S0, Value).CasesLower(S1, S2, S3, Value);
}
- LLVM_ATTRIBUTE_ALWAYS_INLINE
StringSwitch &CasesLower(StringLiteral S0, StringLiteral S1, StringLiteral S2,
StringLiteral S3, StringLiteral S4, T Value) {
return CaseLower(S0, Value).CasesLower(S1, S2, S3, S4, Value);
}
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
R Default(T Value) {
if (Result)
return std::move(*Result);
@@ -207,7 +185,6 @@
}
LLVM_NODISCARD
- LLVM_ATTRIBUTE_ALWAYS_INLINE
operator R() {
assert(Result && "Fell off the end of a string-switch");
return std::move(*Result);
diff --git a/linux-x64/clang/include/llvm/ADT/TinyPtrVector.h b/linux-x64/clang/include/llvm/ADT/TinyPtrVector.h
index 1b8e9aa..ac82451 100644
--- a/linux-x64/clang/include/llvm/ADT/TinyPtrVector.h
+++ b/linux-x64/clang/include/llvm/ADT/TinyPtrVector.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/TinyPtrVector.h - 'Normally tiny' vectors -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/ADT/Triple.h b/linux-x64/clang/include/llvm/ADT/Triple.h
index fe78f78..70d8879 100644
--- a/linux-x64/clang/include/llvm/ADT/Triple.h
+++ b/linux-x64/clang/include/llvm/ADT/Triple.h
@@ -1,9 +1,8 @@
//===-- llvm/ADT/Triple.h - Target triple helper class ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -60,7 +59,6 @@
mips64, // MIPS64: mips64, mips64r6, mipsn32, mipsn32r6
mips64el, // MIPS64EL: mips64el, mips64r6el, mipsn32el, mipsn32r6el
msp430, // MSP430: msp430
- nios2, // NIOSII: nios2
ppc, // PPC: powerpc
ppc64, // PPC64: powerpc64, ppu
ppc64le, // PPC64LE: powerpc64le
@@ -186,7 +184,9 @@
Contiki,
AMDPAL, // AMD PAL Runtime
HermitCore, // HermitCore Unikernel/Multikernel
- LastOSType = HermitCore
+ Hurd, // GNU/Hurd
+ WASI, // Experimental WebAssembly OS
+ LastOSType = WASI
};
enum EnvironmentType {
UnknownEnvironment,
@@ -414,7 +414,7 @@
if (LHS[1] != Minor)
return LHS[1] < Minor;
if (LHS[2] != Micro)
- return LHS[1] < Micro;
+ return LHS[2] < Micro;
return false;
}
@@ -523,32 +523,36 @@
return getOS() == Triple::Haiku;
}
- /// Checks if the environment could be MSVC.
- bool isWindowsMSVCEnvironment() const {
- return getOS() == Triple::Win32 &&
- (getEnvironment() == Triple::UnknownEnvironment ||
- getEnvironment() == Triple::MSVC);
+ /// Tests whether the OS is Windows.
+ bool isOSWindows() const {
+ return getOS() == Triple::Win32;
}
/// Checks if the environment is MSVC.
bool isKnownWindowsMSVCEnvironment() const {
- return getOS() == Triple::Win32 && getEnvironment() == Triple::MSVC;
+ return isOSWindows() && getEnvironment() == Triple::MSVC;
+ }
+
+ /// Checks if the environment could be MSVC.
+ bool isWindowsMSVCEnvironment() const {
+ return isKnownWindowsMSVCEnvironment() ||
+ (isOSWindows() && getEnvironment() == Triple::UnknownEnvironment);
}
bool isWindowsCoreCLREnvironment() const {
- return getOS() == Triple::Win32 && getEnvironment() == Triple::CoreCLR;
+ return isOSWindows() && getEnvironment() == Triple::CoreCLR;
}
bool isWindowsItaniumEnvironment() const {
- return getOS() == Triple::Win32 && getEnvironment() == Triple::Itanium;
+ return isOSWindows() && getEnvironment() == Triple::Itanium;
}
bool isWindowsCygwinEnvironment() const {
- return getOS() == Triple::Win32 && getEnvironment() == Triple::Cygnus;
+ return isOSWindows() && getEnvironment() == Triple::Cygnus;
}
bool isWindowsGNUEnvironment() const {
- return getOS() == Triple::Win32 && getEnvironment() == Triple::GNU;
+ return isOSWindows() && getEnvironment() == Triple::GNU;
}
/// Tests for either Cygwin or MinGW OS
@@ -562,11 +566,6 @@
isWindowsItaniumEnvironment();
}
- /// Tests whether the OS is Windows.
- bool isOSWindows() const {
- return getOS() == Triple::Win32;
- }
-
/// Tests whether the OS is NaCl (Native Client)
bool isOSNaCl() const {
return getOS() == Triple::NaCl;
@@ -582,9 +581,20 @@
return getOS() == Triple::KFreeBSD;
}
+ /// Tests whether the OS is Hurd.
+ bool isOSHurd() const {
+ return getOS() == Triple::Hurd;
+ }
+
+ /// Tests whether the OS is WASI.
+ bool isOSWASI() const {
+ return getOS() == Triple::WASI;
+ }
+
/// Tests whether the OS uses glibc.
bool isOSGlibc() const {
- return (getOS() == Triple::Linux || getOS() == Triple::KFreeBSD) &&
+ return (getOS() == Triple::Linux || getOS() == Triple::KFreeBSD ||
+ getOS() == Triple::Hurd) &&
!isAndroid();
}
diff --git a/linux-x64/clang/include/llvm/ADT/Twine.h b/linux-x64/clang/include/llvm/ADT/Twine.h
index b60fd09..4140c22 100644
--- a/linux-x64/clang/include/llvm/ADT/Twine.h
+++ b/linux-x64/clang/include/llvm/ADT/Twine.h
@@ -1,9 +1,8 @@
//===- Twine.h - Fast Temporary String Concatenation ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -274,6 +273,9 @@
assert(isValid() && "Invalid twine!");
}
+ /// Delete the implicit conversion from nullptr as Twine(const char *)
+ /// cannot take nullptr.
+ /*implicit*/ Twine(std::nullptr_t) = delete;
/// Construct from an std::string.
/*implicit*/ Twine(const std::string &Str) : LHSKind(StdStringKind) {
diff --git a/linux-x64/clang/include/llvm/ADT/UniqueVector.h b/linux-x64/clang/include/llvm/ADT/UniqueVector.h
index c86bedd..bfea988 100644
--- a/linux-x64/clang/include/llvm/ADT/UniqueVector.h
+++ b/linux-x64/clang/include/llvm/ADT/UniqueVector.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/UniqueVector.h ----------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/ADT/VariadicFunction.h b/linux-x64/clang/include/llvm/ADT/VariadicFunction.h
index 9028abe..5aefb05 100644
--- a/linux-x64/clang/include/llvm/ADT/VariadicFunction.h
+++ b/linux-x64/clang/include/llvm/ADT/VariadicFunction.h
@@ -1,9 +1,8 @@
-//===--- VariadicFunctions.h - Variadic Functions ---------------*- C++ -*-===//
+//===- VariadicFunction.h - Variadic Functions ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/bit.h b/linux-x64/clang/include/llvm/ADT/bit.h
index a4aba7b..a790d5e 100644
--- a/linux-x64/clang/include/llvm/ADT/bit.h
+++ b/linux-x64/clang/include/llvm/ADT/bit.h
@@ -1,9 +1,8 @@
//===-- llvm/ADT/bit.h - C++20 <bit> ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -41,11 +40,11 @@
, typename = typename std::enable_if<__is_trivially_copyable(To)>::type
, typename = typename std::enable_if<__is_trivially_copyable(From)>::type
#else
- // This case is GCC 4.x. clang with libc++ or libstdc++ never get here. Unlike
- // llvm/Support/type_traits.h's isPodLike we don't want to provide a
- // good-enough answer here: developers in that configuration will hit
- // compilation failures on the bots instead of locally. That's acceptable
- // because it's very few developers, and only until we move past C++11.
+// This case is GCC 4.x. clang with libc++ or libstdc++ never get here. Unlike
+// llvm/Support/type_traits.h's is_trivially_copyable we don't want to
+// provide a good-enough answer here: developers in that configuration will hit
+// compilation failures on the bots instead of locally. That's acceptable
+// because it's very few developers, and only until we move past C++11.
#endif
>
inline To bit_cast(const From &from) noexcept {
diff --git a/linux-x64/clang/include/llvm/ADT/edit_distance.h b/linux-x64/clang/include/llvm/ADT/edit_distance.h
index b2e8ec5..4f51340 100644
--- a/linux-x64/clang/include/llvm/ADT/edit_distance.h
+++ b/linux-x64/clang/include/llvm/ADT/edit_distance.h
@@ -1,9 +1,8 @@
//===-- llvm/ADT/edit_distance.h - Array edit distance function --- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/fallible_iterator.h b/linux-x64/clang/include/llvm/ADT/fallible_iterator.h
new file mode 100644
index 0000000..6501ad2
--- /dev/null
+++ b/linux-x64/clang/include/llvm/ADT/fallible_iterator.h
@@ -0,0 +1,243 @@
+//===--- fallible_iterator.h - Wrapper for fallible iterators ---*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_ADT_FALLIBLE_ITERATOR_H
+#define LLVM_ADT_FALLIBLE_ITERATOR_H
+
+#include "llvm/ADT/PointerIntPair.h"
+#include "llvm/ADT/iterator_range.h"
+#include "llvm/Support/Error.h"
+
+#include <type_traits>
+
+namespace llvm {
+
+/// A wrapper class for fallible iterators.
+///
+/// The fallible_iterator template wraps an underlying iterator-like class
+/// whose increment and decrement operations are replaced with fallible versions
+/// like:
+///
+/// @code{.cpp}
+/// Error inc();
+/// Error dec();
+/// @endcode
+///
+/// It produces an interface that is (mostly) compatible with a traditional
+/// c++ iterator, including ++ and -- operators that do not fail.
+///
+/// Instances of the wrapper are constructed with an instance of the
+/// underlying iterator and (for non-end iterators) a reference to an Error
+/// instance. If the underlying increment/decrement operations fail, the Error
+/// is returned via this reference, and the resulting iterator value set to an
+/// end-of-range sentinel value. This enables the following loop idiom:
+///
+/// @code{.cpp}
+/// class Archive { // E.g. Potentially malformed on-disk archive
+/// public:
+/// fallible_iterator<ArchiveChildItr> children_begin(Error &Err);
+/// fallible_iterator<ArchiveChildItr> children_end();
+/// iterator_range<fallible_iterator<ArchiveChildItr>>
+/// children(Error &Err) {
+/// return make_range(children_begin(Err), children_end());
+/// //...
+/// };
+///
+/// void walk(Archive &A) {
+/// Error Err = Error::success();
+/// for (auto &C : A.children(Err)) {
+/// // Loop body only entered when increment succeeds.
+/// }
+/// if (Err) {
+/// // handle error.
+/// }
+/// }
+/// @endcode
+///
+/// The wrapper marks the referenced Error as unchecked after each increment
+/// and/or decrement operation, and clears the unchecked flag when a non-end
+/// value is compared against end (since, by the increment invariant, not being
+/// an end value proves that there was no error, and is equivalent to checking
+/// that the Error is success). This allows early exits from the loop body
+/// without requiring redundant error checks.
+template <typename Underlying> class fallible_iterator {
+private:
+ template <typename T>
+ using enable_if_struct_deref_supported = std::enable_if<
+ !std::is_void<decltype(std::declval<T>().operator->())>::value,
+ decltype(std::declval<T>().operator->())>;
+
+public:
+ /// Construct a fallible iterator that *cannot* be used as an end-of-range
+ /// value.
+ ///
+ /// A value created by this method can be dereferenced, incremented,
+ /// decremented and compared, providing the underlying type supports it.
+ ///
+ /// The error that is passed in will be initially marked as checked, so if the
+ /// iterator is not used at all the Error need not be checked.
+ static fallible_iterator itr(Underlying I, Error &Err) {
+ (void)!!Err;
+ return fallible_iterator(std::move(I), &Err);
+ }
+
+ /// Construct a fallible iteratro that can be used as an end-of-range value.
+ ///
+ /// A value created by this method can be dereferenced (if the underlying
+ /// value points at a valid value) and compared, but not incremented or
+ /// decremented.
+ static fallible_iterator end(Underlying I) {
+ return fallible_iterator(std::move(I), nullptr);
+ }
+
+ /// Forward dereference to the underlying iterator.
+ auto operator*() -> decltype(*std::declval<Underlying>()) { return *I; }
+
+ /// Forward const dereference to the underlying iterator.
+ auto operator*() const -> decltype(*std::declval<const Underlying>()) {
+ return *I;
+ }
+
+ /// Forward structure dereference to the underlying iterator (if the
+ /// underlying iterator supports it).
+ template <typename T = Underlying>
+ typename enable_if_struct_deref_supported<T>::type operator->() {
+ return I.operator->();
+ }
+
+ /// Forward const structure dereference to the underlying iterator (if the
+ /// underlying iterator supports it).
+ template <typename T = Underlying>
+ typename enable_if_struct_deref_supported<const T>::type operator->() const {
+ return I.operator->();
+ }
+
+ /// Increment the fallible iterator.
+ ///
+ /// If the underlying 'inc' operation fails, this will set the Error value
+ /// and update this iterator value to point to end-of-range.
+ ///
+ /// The Error value is marked as needing checking, regardless of whether the
+ /// 'inc' operation succeeds or fails.
+ fallible_iterator &operator++() {
+ assert(getErrPtr() && "Cannot increment end iterator");
+ if (auto Err = I.inc())
+ handleError(std::move(Err));
+ else
+ resetCheckedFlag();
+ return *this;
+ }
+
+ /// Decrement the fallible iterator.
+ ///
+ /// If the underlying 'dec' operation fails, this will set the Error value
+ /// and update this iterator value to point to end-of-range.
+ ///
+ /// The Error value is marked as needing checking, regardless of whether the
+ /// 'dec' operation succeeds or fails.
+ fallible_iterator &operator--() {
+ assert(getErrPtr() && "Cannot decrement end iterator");
+ if (auto Err = I.dec())
+ handleError(std::move(Err));
+ else
+ resetCheckedFlag();
+ return *this;
+ }
+
+ /// Compare fallible iterators for equality.
+ ///
+ /// Returns true if both LHS and RHS are end-of-range values, or if both are
+ /// non-end-of-range values whose underlying iterator values compare equal.
+ ///
+ /// If this is a comparison between an end-of-range iterator and a
+ /// non-end-of-range iterator, then the Error (referenced by the
+ /// non-end-of-range value) is marked as checked: Since all
+ /// increment/decrement operations result in an end-of-range value, comparing
+ /// false against end-of-range is equivalent to checking that the Error value
+ /// is success. This flag management enables early returns from loop bodies
+ /// without redundant Error checks.
+ friend bool operator==(const fallible_iterator &LHS,
+ const fallible_iterator &RHS) {
+ // If both iterators are in the end state they compare
+ // equal, regardless of whether either is valid.
+ if (LHS.isEnd() && RHS.isEnd())
+ return true;
+
+ assert(LHS.isValid() && RHS.isValid() &&
+ "Invalid iterators can only be compared against end");
+
+ bool Equal = LHS.I == RHS.I;
+
+ // If the iterators differ and this is a comparison against end then mark
+ // the Error as checked.
+ if (!Equal) {
+ if (LHS.isEnd())
+ (void)!!*RHS.getErrPtr();
+ else
+ (void)!!*LHS.getErrPtr();
+ }
+
+ return Equal;
+ }
+
+ /// Compare fallible iterators for inequality.
+ ///
+ /// See notes for operator==.
+ friend bool operator!=(const fallible_iterator &LHS,
+ const fallible_iterator &RHS) {
+ return !(LHS == RHS);
+ }
+
+private:
+ fallible_iterator(Underlying I, Error *Err)
+ : I(std::move(I)), ErrState(Err, false) {}
+
+ Error *getErrPtr() const { return ErrState.getPointer(); }
+
+ bool isEnd() const { return getErrPtr() == nullptr; }
+
+ bool isValid() const { return !ErrState.getInt(); }
+
+ void handleError(Error Err) {
+ *getErrPtr() = std::move(Err);
+ ErrState.setPointer(nullptr);
+ ErrState.setInt(true);
+ }
+
+ void resetCheckedFlag() {
+ *getErrPtr() = Error::success();
+ }
+
+ Underlying I;
+ mutable PointerIntPair<Error *, 1> ErrState;
+};
+
+/// Convenience wrapper to make a fallible_iterator value from an instance
+/// of an underlying iterator and an Error reference.
+template <typename Underlying>
+fallible_iterator<Underlying> make_fallible_itr(Underlying I, Error &Err) {
+ return fallible_iterator<Underlying>::itr(std::move(I), Err);
+}
+
+/// Convenience wrapper to make a fallible_iterator end value from an instance
+/// of an underlying iterator.
+template <typename Underlying>
+fallible_iterator<Underlying> make_fallible_end(Underlying E) {
+ return fallible_iterator<Underlying>::end(std::move(E));
+}
+
+template <typename Underlying>
+iterator_range<fallible_iterator<Underlying>>
+make_fallible_range(Underlying I, Underlying E, Error &Err) {
+ return make_range(make_fallible_itr(std::move(I), Err),
+ make_fallible_end(std::move(E)));
+}
+
+} // end namespace llvm
+
+#endif // LLVM_ADT_FALLIBLE_ITERATOR_H
diff --git a/linux-x64/clang/include/llvm/ADT/ilist.h b/linux-x64/clang/include/llvm/ADT/ilist.h
index 00bb6d5..06c7abf 100644
--- a/linux-x64/clang/include/llvm/ADT/ilist.h
+++ b/linux-x64/clang/include/llvm/ADT/ilist.h
@@ -1,9 +1,8 @@
//==-- llvm/ADT/ilist.h - Intrusive Linked List Template ---------*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -66,9 +65,8 @@
void addNodeToList(NodeTy *) {}
void removeNodeFromList(NodeTy *) {}
- /// Callback before transferring nodes to this list.
- ///
- /// \pre \c this!=&OldList
+ /// Callback before transferring nodes to this list. The nodes may already be
+ /// in this same list.
template <class Iterator>
void transferNodesFromList(ilist_callback_traits &OldList, Iterator /*first*/,
Iterator /*last*/) {
@@ -287,8 +285,8 @@
if (position == last)
return;
- if (this != &L2) // Notify traits we moved the nodes...
- this->transferNodesFromList(L2, first, last);
+ // Notify traits we moved the nodes...
+ this->transferNodesFromList(L2, first, last);
base_list_type::splice(position, L2, first, last);
}
diff --git a/linux-x64/clang/include/llvm/ADT/ilist_base.h b/linux-x64/clang/include/llvm/ADT/ilist_base.h
index 3d818a4..b8c098b 100644
--- a/linux-x64/clang/include/llvm/ADT/ilist_base.h
+++ b/linux-x64/clang/include/llvm/ADT/ilist_base.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/ilist_base.h - Intrusive List Base --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/ADT/ilist_iterator.h b/linux-x64/clang/include/llvm/ADT/ilist_iterator.h
index 671e644..cbe5cef 100644
--- a/linux-x64/clang/include/llvm/ADT/ilist_iterator.h
+++ b/linux-x64/clang/include/llvm/ADT/ilist_iterator.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/ilist_iterator.h - Intrusive List Iterator ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/ADT/ilist_node.h b/linux-x64/clang/include/llvm/ADT/ilist_node.h
index dd0e6b4..e040d96 100644
--- a/linux-x64/clang/include/llvm/ADT/ilist_node.h
+++ b/linux-x64/clang/include/llvm/ADT/ilist_node.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/ilist_node.h - Intrusive Linked List Helper -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ADT/ilist_node_base.h b/linux-x64/clang/include/llvm/ADT/ilist_node_base.h
index e5062ac..f6c518e 100644
--- a/linux-x64/clang/include/llvm/ADT/ilist_node_base.h
+++ b/linux-x64/clang/include/llvm/ADT/ilist_node_base.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/ilist_node_base.h - Intrusive List Node Base -----*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/ADT/ilist_node_options.h b/linux-x64/clang/include/llvm/ADT/ilist_node_options.h
index 7ff4005..9b95cdb 100644
--- a/linux-x64/clang/include/llvm/ADT/ilist_node_options.h
+++ b/linux-x64/clang/include/llvm/ADT/ilist_node_options.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/ilist_node_options.h - ilist_node Options -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/ADT/iterator.h b/linux-x64/clang/include/llvm/ADT/iterator.h
index cb40fc1..467fd4c 100644
--- a/linux-x64/clang/include/llvm/ADT/iterator.h
+++ b/linux-x64/clang/include/llvm/ADT/iterator.h
@@ -1,9 +1,8 @@
//===- iterator.h - Utilities for using and defining iterators --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -202,9 +201,7 @@
typename ReferenceT = typename std::conditional<
std::is_same<T, typename std::iterator_traits<
WrappedIteratorT>::value_type>::value,
- typename std::iterator_traits<WrappedIteratorT>::reference, T &>::type,
- // Don't provide these, they are mostly to act as aliases below.
- typename WrappedTraitsT = std::iterator_traits<WrappedIteratorT>>
+ typename std::iterator_traits<WrappedIteratorT>::reference, T &>::type>
class iterator_adaptor_base
: public iterator_facade_base<DerivedT, IteratorCategoryT, T,
DifferenceTypeT, PointerT, ReferenceT> {
@@ -311,8 +308,10 @@
template <typename WrappedIteratorT,
typename T = decltype(&*std::declval<WrappedIteratorT>())>
class pointer_iterator
- : public iterator_adaptor_base<pointer_iterator<WrappedIteratorT, T>,
- WrappedIteratorT, T> {
+ : public iterator_adaptor_base<
+ pointer_iterator<WrappedIteratorT, T>, WrappedIteratorT,
+ typename std::iterator_traits<WrappedIteratorT>::iterator_category,
+ T> {
mutable T Ptr;
public:
diff --git a/linux-x64/clang/include/llvm/ADT/iterator_range.h b/linux-x64/clang/include/llvm/ADT/iterator_range.h
index 2ba1286..774c7c4 100644
--- a/linux-x64/clang/include/llvm/ADT/iterator_range.h
+++ b/linux-x64/clang/include/llvm/ADT/iterator_range.h
@@ -1,9 +1,8 @@
//===- iterator_range.h - A range adaptor for iterators ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/ADT/simple_ilist.h b/linux-x64/clang/include/llvm/ADT/simple_ilist.h
index 4c7598a..9257b47 100644
--- a/linux-x64/clang/include/llvm/ADT/simple_ilist.h
+++ b/linux-x64/clang/include/llvm/ADT/simple_ilist.h
@@ -1,9 +1,8 @@
//===- llvm/ADT/simple_ilist.h - Simple Intrusive List ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Analysis/AliasAnalysis.h b/linux-x64/clang/include/llvm/Analysis/AliasAnalysis.h
index be3496b..4e55f01 100644
--- a/linux-x64/clang/include/llvm/Analysis/AliasAnalysis.h
+++ b/linux-x64/clang/include/llvm/Analysis/AliasAnalysis.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/AliasAnalysis.h - Alias Analysis Interface -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -43,7 +42,6 @@
#include "llvm/ADT/SmallVector.h"
#include "llvm/Analysis/MemoryLocation.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
-#include "llvm/IR/CallSite.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
@@ -335,8 +333,7 @@
/// A convenience wrapper around the primary \c alias interface.
AliasResult alias(const Value *V1, const Value *V2) {
- return alias(V1, MemoryLocation::UnknownSize, V2,
- MemoryLocation::UnknownSize);
+ return alias(V1, LocationSize::unknown(), V2, LocationSize::unknown());
}
/// A trivial helper function to check to see if the specified pointers are
@@ -364,7 +361,8 @@
/// A convenience wrapper around the \c isMustAlias helper interface.
bool isMustAlias(const Value *V1, const Value *V2) {
- return alias(V1, 1, V2, 1) == MustAlias;
+ return alias(V1, LocationSize::precise(1), V2, LocationSize::precise(1)) ==
+ MustAlias;
}
/// Checks whether the given location points to constant memory, or if
@@ -382,15 +380,15 @@
/// \name Simple mod/ref information
/// @{
- /// Get the ModRef info associated with a pointer argument of a callsite. The
+ /// Get the ModRef info associated with a pointer argument of a call. The
/// result's bits are set to indicate the allowed aliasing ModRef kinds. Note
/// that these bits do not necessarily account for the overall behavior of
/// the function, but rather only provide additional per-argument
/// information. This never sets ModRefInfo::Must.
- ModRefInfo getArgModRefInfo(ImmutableCallSite CS, unsigned ArgIdx);
+ ModRefInfo getArgModRefInfo(const CallBase *Call, unsigned ArgIdx);
/// Return the behavior of the given call site.
- FunctionModRefBehavior getModRefBehavior(ImmutableCallSite CS);
+ FunctionModRefBehavior getModRefBehavior(const CallBase *Call);
/// Return the behavior when calling the given function.
FunctionModRefBehavior getModRefBehavior(const Function *F);
@@ -406,8 +404,8 @@
/// property (e.g. calls to 'sin' and 'cos').
///
/// This property corresponds to the GCC 'const' attribute.
- bool doesNotAccessMemory(ImmutableCallSite CS) {
- return getModRefBehavior(CS) == FMRB_DoesNotAccessMemory;
+ bool doesNotAccessMemory(const CallBase *Call) {
+ return getModRefBehavior(Call) == FMRB_DoesNotAccessMemory;
}
/// Checks if the specified function is known to never read or write memory.
@@ -434,8 +432,8 @@
/// absence of interfering store instructions, such as CSE of strlen calls.
///
/// This property corresponds to the GCC 'pure' attribute.
- bool onlyReadsMemory(ImmutableCallSite CS) {
- return onlyReadsMemory(getModRefBehavior(CS));
+ bool onlyReadsMemory(const CallBase *Call) {
+ return onlyReadsMemory(getModRefBehavior(Call));
}
/// Checks if the specified function is known to only read from non-volatile
@@ -500,36 +498,12 @@
/// getModRefInfo (for call sites) - Return information about whether
/// a particular call site modifies or reads the specified memory location.
- ModRefInfo getModRefInfo(ImmutableCallSite CS, const MemoryLocation &Loc);
+ ModRefInfo getModRefInfo(const CallBase *Call, const MemoryLocation &Loc);
/// getModRefInfo (for call sites) - A convenience wrapper.
- ModRefInfo getModRefInfo(ImmutableCallSite CS, const Value *P,
+ ModRefInfo getModRefInfo(const CallBase *Call, const Value *P,
LocationSize Size) {
- return getModRefInfo(CS, MemoryLocation(P, Size));
- }
-
- /// getModRefInfo (for calls) - Return information about whether
- /// a particular call modifies or reads the specified memory location.
- ModRefInfo getModRefInfo(const CallInst *C, const MemoryLocation &Loc) {
- return getModRefInfo(ImmutableCallSite(C), Loc);
- }
-
- /// getModRefInfo (for calls) - A convenience wrapper.
- ModRefInfo getModRefInfo(const CallInst *C, const Value *P,
- LocationSize Size) {
- return getModRefInfo(C, MemoryLocation(P, Size));
- }
-
- /// getModRefInfo (for invokes) - Return information about whether
- /// a particular invoke modifies or reads the specified memory location.
- ModRefInfo getModRefInfo(const InvokeInst *I, const MemoryLocation &Loc) {
- return getModRefInfo(ImmutableCallSite(I), Loc);
- }
-
- /// getModRefInfo (for invokes) - A convenience wrapper.
- ModRefInfo getModRefInfo(const InvokeInst *I, const Value *P,
- LocationSize Size) {
- return getModRefInfo(I, MemoryLocation(P, Size));
+ return getModRefInfo(Call, MemoryLocation(P, Size));
}
/// getModRefInfo (for loads) - Return information about whether
@@ -569,7 +543,7 @@
/// getModRefInfo (for cmpxchges) - A convenience wrapper.
ModRefInfo getModRefInfo(const AtomicCmpXchgInst *CX, const Value *P,
- unsigned Size) {
+ LocationSize Size) {
return getModRefInfo(CX, MemoryLocation(P, Size));
}
@@ -579,7 +553,7 @@
/// getModRefInfo (for atomicrmws) - A convenience wrapper.
ModRefInfo getModRefInfo(const AtomicRMWInst *RMW, const Value *P,
- unsigned Size) {
+ LocationSize Size) {
return getModRefInfo(RMW, MemoryLocation(P, Size));
}
@@ -626,8 +600,8 @@
ModRefInfo getModRefInfo(const Instruction *I,
const Optional<MemoryLocation> &OptLoc) {
if (OptLoc == None) {
- if (auto CS = ImmutableCallSite(I)) {
- return createModRefInfo(getModRefBehavior(CS));
+ if (const auto *Call = dyn_cast<CallBase>(I)) {
+ return createModRefInfo(getModRefBehavior(Call));
}
}
@@ -661,12 +635,12 @@
/// Return information about whether a call and an instruction may refer to
/// the same memory locations.
- ModRefInfo getModRefInfo(Instruction *I, ImmutableCallSite Call);
+ ModRefInfo getModRefInfo(Instruction *I, const CallBase *Call);
/// Return information about whether two call sites may refer to the same set
/// of memory locations. See the AA documentation for details:
/// http://llvm.org/docs/AliasAnalysis.html#ModRefInfo
- ModRefInfo getModRefInfo(ImmutableCallSite CS1, ImmutableCallSite CS2);
+ ModRefInfo getModRefInfo(const CallBase *Call1, const CallBase *Call2);
/// Return information about whether a particular call site modifies
/// or reads the specified memory location \p MemLoc before instruction \p I
@@ -777,25 +751,25 @@
/// that these bits do not necessarily account for the overall behavior of
/// the function, but rather only provide additional per-argument
/// information.
- virtual ModRefInfo getArgModRefInfo(ImmutableCallSite CS,
+ virtual ModRefInfo getArgModRefInfo(const CallBase *Call,
unsigned ArgIdx) = 0;
/// Return the behavior of the given call site.
- virtual FunctionModRefBehavior getModRefBehavior(ImmutableCallSite CS) = 0;
+ virtual FunctionModRefBehavior getModRefBehavior(const CallBase *Call) = 0;
/// Return the behavior when calling the given function.
virtual FunctionModRefBehavior getModRefBehavior(const Function *F) = 0;
/// getModRefInfo (for call sites) - Return information about whether
/// a particular call site modifies or reads the specified memory location.
- virtual ModRefInfo getModRefInfo(ImmutableCallSite CS,
+ virtual ModRefInfo getModRefInfo(const CallBase *Call,
const MemoryLocation &Loc) = 0;
/// Return information about whether two call sites may refer to the same set
/// of memory locations. See the AA documentation for details:
/// http://llvm.org/docs/AliasAnalysis.html#ModRefInfo
- virtual ModRefInfo getModRefInfo(ImmutableCallSite CS1,
- ImmutableCallSite CS2) = 0;
+ virtual ModRefInfo getModRefInfo(const CallBase *Call1,
+ const CallBase *Call2) = 0;
/// @}
};
@@ -827,26 +801,26 @@
return Result.pointsToConstantMemory(Loc, OrLocal);
}
- ModRefInfo getArgModRefInfo(ImmutableCallSite CS, unsigned ArgIdx) override {
- return Result.getArgModRefInfo(CS, ArgIdx);
+ ModRefInfo getArgModRefInfo(const CallBase *Call, unsigned ArgIdx) override {
+ return Result.getArgModRefInfo(Call, ArgIdx);
}
- FunctionModRefBehavior getModRefBehavior(ImmutableCallSite CS) override {
- return Result.getModRefBehavior(CS);
+ FunctionModRefBehavior getModRefBehavior(const CallBase *Call) override {
+ return Result.getModRefBehavior(Call);
}
FunctionModRefBehavior getModRefBehavior(const Function *F) override {
return Result.getModRefBehavior(F);
}
- ModRefInfo getModRefInfo(ImmutableCallSite CS,
+ ModRefInfo getModRefInfo(const CallBase *Call,
const MemoryLocation &Loc) override {
- return Result.getModRefInfo(CS, Loc);
+ return Result.getModRefInfo(Call, Loc);
}
- ModRefInfo getModRefInfo(ImmutableCallSite CS1,
- ImmutableCallSite CS2) override {
- return Result.getModRefInfo(CS1, CS2);
+ ModRefInfo getModRefInfo(const CallBase *Call1,
+ const CallBase *Call2) override {
+ return Result.getModRefInfo(Call1, Call2);
}
};
@@ -901,25 +875,28 @@
: CurrentResult.pointsToConstantMemory(Loc, OrLocal);
}
- ModRefInfo getArgModRefInfo(ImmutableCallSite CS, unsigned ArgIdx) {
- return AAR ? AAR->getArgModRefInfo(CS, ArgIdx) : CurrentResult.getArgModRefInfo(CS, ArgIdx);
+ ModRefInfo getArgModRefInfo(const CallBase *Call, unsigned ArgIdx) {
+ return AAR ? AAR->getArgModRefInfo(Call, ArgIdx)
+ : CurrentResult.getArgModRefInfo(Call, ArgIdx);
}
- FunctionModRefBehavior getModRefBehavior(ImmutableCallSite CS) {
- return AAR ? AAR->getModRefBehavior(CS) : CurrentResult.getModRefBehavior(CS);
+ FunctionModRefBehavior getModRefBehavior(const CallBase *Call) {
+ return AAR ? AAR->getModRefBehavior(Call)
+ : CurrentResult.getModRefBehavior(Call);
}
FunctionModRefBehavior getModRefBehavior(const Function *F) {
return AAR ? AAR->getModRefBehavior(F) : CurrentResult.getModRefBehavior(F);
}
- ModRefInfo getModRefInfo(ImmutableCallSite CS, const MemoryLocation &Loc) {
- return AAR ? AAR->getModRefInfo(CS, Loc)
- : CurrentResult.getModRefInfo(CS, Loc);
+ ModRefInfo getModRefInfo(const CallBase *Call, const MemoryLocation &Loc) {
+ return AAR ? AAR->getModRefInfo(Call, Loc)
+ : CurrentResult.getModRefInfo(Call, Loc);
}
- ModRefInfo getModRefInfo(ImmutableCallSite CS1, ImmutableCallSite CS2) {
- return AAR ? AAR->getModRefInfo(CS1, CS2) : CurrentResult.getModRefInfo(CS1, CS2);
+ ModRefInfo getModRefInfo(const CallBase *Call1, const CallBase *Call2) {
+ return AAR ? AAR->getModRefInfo(Call1, Call2)
+ : CurrentResult.getModRefInfo(Call1, Call2);
}
};
@@ -951,11 +928,11 @@
return false;
}
- ModRefInfo getArgModRefInfo(ImmutableCallSite CS, unsigned ArgIdx) {
+ ModRefInfo getArgModRefInfo(const CallBase *Call, unsigned ArgIdx) {
return ModRefInfo::ModRef;
}
- FunctionModRefBehavior getModRefBehavior(ImmutableCallSite CS) {
+ FunctionModRefBehavior getModRefBehavior(const CallBase *Call) {
return FMRB_UnknownModRefBehavior;
}
@@ -963,11 +940,11 @@
return FMRB_UnknownModRefBehavior;
}
- ModRefInfo getModRefInfo(ImmutableCallSite CS, const MemoryLocation &Loc) {
+ ModRefInfo getModRefInfo(const CallBase *Call, const MemoryLocation &Loc) {
return ModRefInfo::ModRef;
}
- ModRefInfo getModRefInfo(ImmutableCallSite CS1, ImmutableCallSite CS2) {
+ ModRefInfo getModRefInfo(const CallBase *Call1, const CallBase *Call2) {
return ModRefInfo::ModRef;
}
};
@@ -1075,6 +1052,29 @@
void getAnalysisUsage(AnalysisUsage &AU) const override;
};
+/// A wrapper pass for external alias analyses. This just squirrels away the
+/// callback used to run any analyses and register their results.
+struct ExternalAAWrapperPass : ImmutablePass {
+ using CallbackT = std::function<void(Pass &, Function &, AAResults &)>;
+
+ CallbackT CB;
+
+ static char ID;
+
+ ExternalAAWrapperPass() : ImmutablePass(ID) {
+ initializeExternalAAWrapperPassPass(*PassRegistry::getPassRegistry());
+ }
+
+ explicit ExternalAAWrapperPass(CallbackT CB)
+ : ImmutablePass(ID), CB(std::move(CB)) {
+ initializeExternalAAWrapperPassPass(*PassRegistry::getPassRegistry());
+ }
+
+ void getAnalysisUsage(AnalysisUsage &AU) const override {
+ AU.setPreservesAll();
+ }
+};
+
FunctionPass *createAAResultsWrapperPass();
/// A wrapper pass around a callback which can be used to populate the
diff --git a/linux-x64/clang/include/llvm/Analysis/AliasAnalysisEvaluator.h b/linux-x64/clang/include/llvm/Analysis/AliasAnalysisEvaluator.h
index 0941814..972ecea 100644
--- a/linux-x64/clang/include/llvm/Analysis/AliasAnalysisEvaluator.h
+++ b/linux-x64/clang/include/llvm/Analysis/AliasAnalysisEvaluator.h
@@ -1,9 +1,8 @@
//===- AliasAnalysisEvaluator.h - Alias Analysis Accuracy Evaluator -------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Analysis/AliasSetTracker.h b/linux-x64/clang/include/llvm/Analysis/AliasSetTracker.h
index cf4981d..34a509b 100644
--- a/linux-x64/clang/include/llvm/Analysis/AliasSetTracker.h
+++ b/linux-x64/clang/include/llvm/Analysis/AliasSetTracker.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/AliasSetTracker.h - Build Alias Sets -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -37,6 +36,8 @@
class AliasSetTracker;
class BasicBlock;
class LoadInst;
+class Loop;
+class MemorySSA;
class AnyMemSetInst;
class AnyMemTransferInst;
class raw_ostream;
@@ -294,7 +295,8 @@
void removeFromTracker(AliasSetTracker &AST);
void addPointer(AliasSetTracker &AST, PointerRec &Entry, LocationSize Size,
- const AAMDNodes &AAInfo, bool KnownMustAlias = false);
+ const AAMDNodes &AAInfo, bool KnownMustAlias = false,
+ bool SkipSizeUpdate = false);
void addUnknownInst(Instruction *I, AliasAnalysis &AA);
void removeUnknownInst(AliasSetTracker &AST, Instruction *I) {
@@ -310,10 +312,10 @@
}
public:
- /// Return true if the specified pointer "may" (or must) alias one of the
- /// members in the set.
- bool aliasesPointer(const Value *Ptr, LocationSize Size,
- const AAMDNodes &AAInfo, AliasAnalysis &AA) const;
+ /// If the specified pointer "may" (or must) alias one of the members in the
+ /// set return the appropriate AliasResult. Otherwise return NoAlias.
+ AliasResult aliasesPointer(const Value *Ptr, LocationSize Size,
+ const AAMDNodes &AAInfo, AliasAnalysis &AA) const;
bool aliasesUnknownInst(const Instruction *Inst, AliasAnalysis &AA) const;
};
@@ -341,6 +343,8 @@
struct ASTCallbackVHDenseMapInfo : public DenseMapInfo<Value *> {};
AliasAnalysis &AA;
+ MemorySSA *MSSA;
+ Loop *L;
ilist<AliasSet> AliasSets;
using PointerMapType = DenseMap<ASTCallbackVH, AliasSet::PointerRec *,
@@ -353,6 +357,8 @@
/// Create an empty collection of AliasSets, and use the specified alias
/// analysis object to disambiguate load and store addresses.
explicit AliasSetTracker(AliasAnalysis &aa) : AA(aa) {}
+ explicit AliasSetTracker(AliasAnalysis &aa, MemorySSA *mssa, Loop *l)
+ : AA(aa), MSSA(mssa), L(l) {}
~AliasSetTracker() { clear(); }
/// These methods are used to add different types of instructions to the alias
@@ -377,6 +383,7 @@
void add(BasicBlock &BB); // Add all instructions in basic block
void add(const AliasSetTracker &AST); // Add alias relations from another AST
void addUnknown(Instruction *I);
+ void addAllInstructionsInLoopUsingMSSA();
void clear();
@@ -389,10 +396,6 @@
/// set is returned.
AliasSet &getAliasSetFor(const MemoryLocation &MemLoc);
- /// Return true if the specified instruction "may" (or must) alias one of the
- /// members in any of the sets.
- bool containsUnknown(const Instruction *I) const;
-
/// Return the underlying alias analysis object used by this tracker.
AliasAnalysis &getAliasAnalysis() const { return AA; }
@@ -441,14 +444,10 @@
return *Entry;
}
- AliasSet &addPointer(Value *P, LocationSize Size, const AAMDNodes &AAInfo,
- AliasSet::AccessLattice E);
- AliasSet &addPointer(MemoryLocation Loc,
- AliasSet::AccessLattice E) {
- return addPointer(const_cast<Value*>(Loc.Ptr), Loc.Size, Loc.AATags, E);
- }
+ AliasSet &addPointer(MemoryLocation Loc, AliasSet::AccessLattice E);
AliasSet *mergeAliasSetsForPointer(const Value *Ptr, LocationSize Size,
- const AAMDNodes &AAInfo);
+ const AAMDNodes &AAInfo,
+ bool &MustAliasAll);
/// Merge all alias sets into a single set that is considered to alias any
/// pointer.
diff --git a/linux-x64/clang/include/llvm/Analysis/AssumptionCache.h b/linux-x64/clang/include/llvm/Analysis/AssumptionCache.h
index 46538b1..b428464 100644
--- a/linux-x64/clang/include/llvm/Analysis/AssumptionCache.h
+++ b/linux-x64/clang/include/llvm/Analysis/AssumptionCache.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/AssumptionCache.h - Track @llvm.assume -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -104,6 +103,10 @@
/// not already be in the cache.
void registerAssumption(CallInst *CI);
+ /// Remove an \@llvm.assume intrinsic from this function's cache if it has
+ /// been added to the cache earlier.
+ void unregisterAssumption(CallInst *CI);
+
/// Update the cache of values being affected by this assumption (i.e.
/// the values about which this assumption provides information).
void updateAffectedValues(CallInst *CI);
@@ -209,6 +212,10 @@
/// existing cache will be returned.
AssumptionCache &getAssumptionCache(Function &F);
+ /// Return the cached assumptions for a function if it has already been
+ /// scanned. Otherwise return nullptr.
+ AssumptionCache *lookupAssumptionCache(Function &F);
+
AssumptionCacheTracker();
~AssumptionCacheTracker() override;
diff --git a/linux-x64/clang/include/llvm/Analysis/BasicAliasAnalysis.h b/linux-x64/clang/include/llvm/Analysis/BasicAliasAnalysis.h
index 6344e84..29f584c 100644
--- a/linux-x64/clang/include/llvm/Analysis/BasicAliasAnalysis.h
+++ b/linux-x64/clang/include/llvm/Analysis/BasicAliasAnalysis.h
@@ -1,9 +1,8 @@
//===- BasicAliasAnalysis.h - Stateless, local Alias Analysis ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -21,7 +20,7 @@
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/AssumptionCache.h"
#include "llvm/Analysis/MemoryLocation.h"
-#include "llvm/IR/CallSite.h"
+#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/PassManager.h"
#include "llvm/Pass.h"
#include <algorithm>
@@ -84,18 +83,18 @@
AliasResult alias(const MemoryLocation &LocA, const MemoryLocation &LocB);
- ModRefInfo getModRefInfo(ImmutableCallSite CS, const MemoryLocation &Loc);
+ ModRefInfo getModRefInfo(const CallBase *Call, const MemoryLocation &Loc);
- ModRefInfo getModRefInfo(ImmutableCallSite CS1, ImmutableCallSite CS2);
+ ModRefInfo getModRefInfo(const CallBase *Call1, const CallBase *Call2);
/// Chases pointers until we find a (constant global) or not.
bool pointsToConstantMemory(const MemoryLocation &Loc, bool OrLocal);
/// Get the location associated with a pointer argument of a callsite.
- ModRefInfo getArgModRefInfo(ImmutableCallSite CS, unsigned ArgIdx);
+ ModRefInfo getArgModRefInfo(const CallBase *Call, unsigned ArgIdx);
/// Returns the behavior when calling the given call site.
- FunctionModRefBehavior getModRefBehavior(ImmutableCallSite CS);
+ FunctionModRefBehavior getModRefBehavior(const CallBase *Call);
/// Returns the behavior when calling the given function. For use when the
/// call site is not known.
@@ -115,7 +114,7 @@
unsigned ZExtBits;
unsigned SExtBits;
- int64_t Scale;
+ APInt Scale;
bool operator==(const VariableGEPIndex &Other) const {
return V == Other.V && ZExtBits == Other.ZExtBits &&
@@ -133,10 +132,10 @@
// Base pointer of the GEP
const Value *Base;
// Total constant offset w.r.t the base from indexing into structs
- int64_t StructOffset;
+ APInt StructOffset;
// Total constant offset w.r.t the base from indexing through
// pointers/arrays/vectors
- int64_t OtherOffset;
+ APInt OtherOffset;
// Scaled variable (non-constant) indices.
SmallVector<VariableGEPIndex, 4> VarIndices;
};
@@ -145,6 +144,8 @@
using LocPair = std::pair<MemoryLocation, MemoryLocation>;
using AliasCacheTy = SmallDenseMap<LocPair, AliasResult, 8>;
AliasCacheTy AliasCache;
+ using IsCapturedCacheTy = SmallDenseMap<const Value *, bool, 8>;
+ IsCapturedCacheTy IsCapturedCache;
/// Tracks phi nodes we have visited.
///
@@ -189,7 +190,7 @@
bool
constantOffsetHeuristic(const SmallVectorImpl<VariableGEPIndex> &VarIndices,
LocationSize V1Size, LocationSize V2Size,
- int64_t BaseOffset, AssumptionCache *AC,
+ APInt BaseOffset, AssumptionCache *AC,
DominatorTree *DT);
bool isValueEqualInPotentialCycles(const Value *V1, const Value *V2);
diff --git a/linux-x64/clang/include/llvm/Analysis/BlockFrequencyInfo.h b/linux-x64/clang/include/llvm/Analysis/BlockFrequencyInfo.h
index ca12db6..c73c7fa 100644
--- a/linux-x64/clang/include/llvm/Analysis/BlockFrequencyInfo.h
+++ b/linux-x64/clang/include/llvm/Analysis/BlockFrequencyInfo.h
@@ -1,9 +1,8 @@
//===- BlockFrequencyInfo.h - Block Frequency Analysis ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -56,7 +55,7 @@
const Function *getFunction() const;
const BranchProbabilityInfo *getBPI() const;
- void view() const;
+ void view(StringRef = "BlockFrequencyDAGs") const;
/// getblockFreq - Return block frequency. Return 0 if we don't have the
/// information. Please note that initial frequency is equal to ENTRY_FREQ. It
diff --git a/linux-x64/clang/include/llvm/Analysis/BlockFrequencyInfoImpl.h b/linux-x64/clang/include/llvm/Analysis/BlockFrequencyInfoImpl.h
index 25b2efd..813bad4 100644
--- a/linux-x64/clang/include/llvm/Analysis/BlockFrequencyInfoImpl.h
+++ b/linux-x64/clang/include/llvm/Analysis/BlockFrequencyInfoImpl.h
@@ -1,9 +1,8 @@
//==- BlockFrequencyInfoImpl.h - Block Frequency Implementation --*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -160,10 +159,6 @@
} // end namespace bfi_detail
-template <> struct isPodLike<bfi_detail::BlockMass> {
- static const bool value = true;
-};
-
/// Base class for BlockFrequencyInfoImpl
///
/// BlockFrequencyInfoImplBase has supporting data structures and some
@@ -187,9 +182,9 @@
struct BlockNode {
using IndexType = uint32_t;
- IndexType Index = std::numeric_limits<uint32_t>::max();
+ IndexType Index;
- BlockNode() = default;
+ BlockNode() : Index(std::numeric_limits<uint32_t>::max()) {}
BlockNode(IndexType Index) : Index(Index) {}
bool operator==(const BlockNode &X) const { return Index == X.Index; }
diff --git a/linux-x64/clang/include/llvm/Analysis/BranchProbabilityInfo.h b/linux-x64/clang/include/llvm/Analysis/BranchProbabilityInfo.h
index 45277db..97cb730 100644
--- a/linux-x64/clang/include/llvm/Analysis/BranchProbabilityInfo.h
+++ b/linux-x64/clang/include/llvm/Analysis/BranchProbabilityInfo.h
@@ -1,9 +1,8 @@
//===- BranchProbabilityInfo.h - Branch Probability Analysis ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/CFG.h b/linux-x64/clang/include/llvm/Analysis/CFG.h
index cccdd16..bcff4fb 100644
--- a/linux-x64/clang/include/llvm/Analysis/CFG.h
+++ b/linux-x64/clang/include/llvm/Analysis/CFG.h
@@ -1,9 +1,8 @@
//===-- Analysis/CFG.h - BasicBlock Analyses --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -25,7 +24,6 @@
class Function;
class Instruction;
class LoopInfo;
-class TerminatorInst;
/// Analyze the specified function to find all of the loop backedges in the
/// function and return them. This is a relatively cheap (compared to
@@ -46,7 +44,7 @@
/// edges from a block with multiple successors to a block with multiple
/// predecessors.
///
-bool isCriticalEdge(const TerminatorInst *TI, unsigned SuccNum,
+bool isCriticalEdge(const Instruction *TI, unsigned SuccNum,
bool AllowIdenticalEdges = false);
/// Determine whether instruction 'To' is reachable from 'From',
diff --git a/linux-x64/clang/include/llvm/Analysis/CFGPrinter.h b/linux-x64/clang/include/llvm/Analysis/CFGPrinter.h
index a4b642b..aaefc11 100644
--- a/linux-x64/clang/include/llvm/Analysis/CFGPrinter.h
+++ b/linux-x64/clang/include/llvm/Analysis/CFGPrinter.h
@@ -1,9 +1,8 @@
//===-- CFGPrinter.h - CFG printer external interface -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -150,7 +149,7 @@
/// Display the raw branch weights from PGO.
std::string getEdgeAttributes(const BasicBlock *Node, succ_const_iterator I,
const Function *F) {
- const TerminatorInst *TI = Node->getTerminator();
+ const Instruction *TI = Node->getTerminator();
if (TI->getNumSuccessors() == 1)
return "";
diff --git a/linux-x64/clang/include/llvm/Analysis/CFLAliasAnalysisUtils.h b/linux-x64/clang/include/llvm/Analysis/CFLAliasAnalysisUtils.h
index 981a8dd..02f999a 100644
--- a/linux-x64/clang/include/llvm/Analysis/CFLAliasAnalysisUtils.h
+++ b/linux-x64/clang/include/llvm/Analysis/CFLAliasAnalysisUtils.h
@@ -1,9 +1,8 @@
//=- CFLAliasAnalysisUtils.h - Utilities for CFL Alias Analysis ----*- C++-*-=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// \file
diff --git a/linux-x64/clang/include/llvm/Analysis/CFLAndersAliasAnalysis.h b/linux-x64/clang/include/llvm/Analysis/CFLAndersAliasAnalysis.h
index 8ae7255..696aaeb 100644
--- a/linux-x64/clang/include/llvm/Analysis/CFLAndersAliasAnalysis.h
+++ b/linux-x64/clang/include/llvm/Analysis/CFLAndersAliasAnalysis.h
@@ -1,9 +1,8 @@
//==- CFLAndersAliasAnalysis.h - Unification-based Alias Analysis -*- C++-*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Analysis/CFLSteensAliasAnalysis.h b/linux-x64/clang/include/llvm/Analysis/CFLSteensAliasAnalysis.h
index 09e366f..2d3b43c 100644
--- a/linux-x64/clang/include/llvm/Analysis/CFLSteensAliasAnalysis.h
+++ b/linux-x64/clang/include/llvm/Analysis/CFLSteensAliasAnalysis.h
@@ -1,9 +1,8 @@
//==- CFLSteensAliasAnalysis.h - Unification-based Alias Analysis -*- C++-*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Analysis/CGSCCPassManager.h b/linux-x64/clang/include/llvm/Analysis/CGSCCPassManager.h
index f150064..6d26954 100644
--- a/linux-x64/clang/include/llvm/Analysis/CGSCCPassManager.h
+++ b/linux-x64/clang/include/llvm/Analysis/CGSCCPassManager.h
@@ -1,9 +1,8 @@
//===- CGSCCPassManager.h - Call graph pass management ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -441,7 +440,10 @@
PreservedAnalyses PassPA = Pass.run(*C, CGAM, CG, UR);
- PI.runAfterPass<LazyCallGraph::SCC>(Pass, *C);
+ if (UR.InvalidatedSCCs.count(C))
+ PI.runAfterPassInvalidated<LazyCallGraph::SCC>(Pass);
+ else
+ PI.runAfterPass<LazyCallGraph::SCC>(Pass, *C);
// Update the SCC and RefSCC if necessary.
C = UR.UpdatedC ? UR.UpdatedC : C;
@@ -762,7 +764,10 @@
PreservedAnalyses PassPA = Pass.run(*C, AM, CG, UR);
- PI.runAfterPass<LazyCallGraph::SCC>(Pass, *C);
+ if (UR.InvalidatedSCCs.count(C))
+ PI.runAfterPassInvalidated<LazyCallGraph::SCC>(Pass);
+ else
+ PI.runAfterPass<LazyCallGraph::SCC>(Pass, *C);
// If the SCC structure has changed, bail immediately and let the outer
// CGSCC layer handle any iteration to reflect the refined structure.
diff --git a/linux-x64/clang/include/llvm/Analysis/CallGraph.h b/linux-x64/clang/include/llvm/Analysis/CallGraph.h
index f109cf2..a743cbc 100644
--- a/linux-x64/clang/include/llvm/Analysis/CallGraph.h
+++ b/linux-x64/clang/include/llvm/Analysis/CallGraph.h
@@ -1,9 +1,8 @@
//===- CallGraph.h - Build a Module's call graph ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Analysis/CallGraphSCCPass.h b/linux-x64/clang/include/llvm/Analysis/CallGraphSCCPass.h
index ace5460..1b5b7e2 100644
--- a/linux-x64/clang/include/llvm/Analysis/CallGraphSCCPass.h
+++ b/linux-x64/clang/include/llvm/Analysis/CallGraphSCCPass.h
@@ -1,9 +1,8 @@
//===- CallGraphSCCPass.h - Pass that operates BU on call graph -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/CallPrinter.h b/linux-x64/clang/include/llvm/Analysis/CallPrinter.h
index 8b697d5..8d4159f 100644
--- a/linux-x64/clang/include/llvm/Analysis/CallPrinter.h
+++ b/linux-x64/clang/include/llvm/Analysis/CallPrinter.h
@@ -1,9 +1,8 @@
//===-- CallPrinter.h - Call graph printer external interface ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/CaptureTracking.h b/linux-x64/clang/include/llvm/Analysis/CaptureTracking.h
index 7a869a5..ca7abd3 100644
--- a/linux-x64/clang/include/llvm/Analysis/CaptureTracking.h
+++ b/linux-x64/clang/include/llvm/Analysis/CaptureTracking.h
@@ -1,9 +1,8 @@
//===----- llvm/Analysis/CaptureTracking.h - Pointer capture ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -22,6 +21,14 @@
class DominatorTree;
class OrderedBasicBlock;
+ /// The default value for MaxUsesToExplore argument. It's relatively small to
+ /// keep the cost of analysis reasonable for clients like BasicAliasAnalysis,
+ /// where the results can't be cached.
+ /// TODO: we should probably introduce a caching CaptureTracking analysis and
+ /// use it where possible. The caching version can use much higher limit or
+ /// don't have this cap at all.
+ unsigned constexpr DefaultMaxUsesToExplore = 20;
+
/// PointerMayBeCaptured - Return true if this pointer value may be captured
/// by the enclosing function (which is required to exist). This routine can
/// be expensive, so consider caching the results. The boolean ReturnCaptures
@@ -29,9 +36,12 @@
/// counts as capturing it or not. The boolean StoreCaptures specified
/// whether storing the value (or part of it) into memory anywhere
/// automatically counts as capturing it or not.
+ /// MaxUsesToExplore specifies how many uses should the analysis explore for
+ /// one value before giving up due too "too many uses".
bool PointerMayBeCaptured(const Value *V,
bool ReturnCaptures,
- bool StoreCaptures);
+ bool StoreCaptures,
+ unsigned MaxUsesToExplore = DefaultMaxUsesToExplore);
/// PointerMayBeCapturedBefore - Return true if this pointer value may be
/// captured by the enclosing function (which is required to exist). If a
@@ -44,10 +54,13 @@
/// or not. Captures by the provided instruction are considered if the
/// final parameter is true. An ordered basic block in \p OBB could be used
/// to speed up capture-tracker queries.
+ /// MaxUsesToExplore specifies how many uses should the analysis explore for
+ /// one value before giving up due too "too many uses".
bool PointerMayBeCapturedBefore(const Value *V, bool ReturnCaptures,
bool StoreCaptures, const Instruction *I,
const DominatorTree *DT, bool IncludeI = false,
- OrderedBasicBlock *OBB = nullptr);
+ OrderedBasicBlock *OBB = nullptr,
+ unsigned MaxUsesToExplore = DefaultMaxUsesToExplore);
/// This callback is used in conjunction with PointerMayBeCaptured. In
/// addition to the interface here, you'll need to provide your own getters
@@ -75,7 +88,10 @@
/// PointerMayBeCaptured - Visit the value and the values derived from it and
/// find values which appear to be capturing the pointer value. This feeds
/// results into and is controlled by the CaptureTracker object.
- void PointerMayBeCaptured(const Value *V, CaptureTracker *Tracker);
+ /// MaxUsesToExplore specifies how many uses should the analysis explore for
+ /// one value before giving up due too "too many uses".
+ void PointerMayBeCaptured(const Value *V, CaptureTracker *Tracker,
+ unsigned MaxUsesToExplore = DefaultMaxUsesToExplore);
} // end namespace llvm
#endif
diff --git a/linux-x64/clang/include/llvm/Analysis/CmpInstAnalysis.h b/linux-x64/clang/include/llvm/Analysis/CmpInstAnalysis.h
index 3cc69d9..3d34cd1 100644
--- a/linux-x64/clang/include/llvm/Analysis/CmpInstAnalysis.h
+++ b/linux-x64/clang/include/llvm/Analysis/CmpInstAnalysis.h
@@ -1,9 +1,8 @@
//===-- CmpInstAnalysis.h - Utils to help fold compare insts ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -46,19 +45,18 @@
///
unsigned getICmpCode(const ICmpInst *ICI, bool InvertPred = false);
- /// This is the complement of getICmpCode, which turns an opcode and two
- /// operands into either a constant true or false, or the predicate for a new
- /// ICmp instruction. The sign is passed in to determine which kind of
- /// predicate to use in the new icmp instruction.
+ /// This is the complement of getICmpCode. It turns a predicate code into
+ /// either a constant true or false or the predicate for a new ICmp.
+ /// The sign is passed in to determine which kind of predicate to use in the
+ /// new ICmp instruction.
/// Non-NULL return value will be a true or false constant.
- /// NULL return means a new ICmp is needed. The predicate for which is output
- /// in NewICmpPred.
- Value *getICmpValue(bool Sign, unsigned Code, Value *LHS, Value *RHS,
- CmpInst::Predicate &NewICmpPred);
+ /// NULL return means a new ICmp is needed. The predicate is output in Pred.
+ Constant *getPredForICmpCode(unsigned Code, bool Sign, Type *OpTy,
+ CmpInst::Predicate &Pred);
/// Return true if both predicates match sign or if at least one of them is an
/// equality comparison (which is signless).
- bool PredicatesFoldable(CmpInst::Predicate p1, CmpInst::Predicate p2);
+ bool predicatesFoldable(CmpInst::Predicate P1, CmpInst::Predicate P2);
/// Decompose an icmp into the form ((X & Mask) pred 0) if possible. The
/// returned predicate is either == or !=. Returns false if decomposition
diff --git a/linux-x64/clang/include/llvm/Analysis/CodeMetrics.h b/linux-x64/clang/include/llvm/Analysis/CodeMetrics.h
index 7529022..1482b66 100644
--- a/linux-x64/clang/include/llvm/Analysis/CodeMetrics.h
+++ b/linux-x64/clang/include/llvm/Analysis/CodeMetrics.h
@@ -1,9 +1,8 @@
//===- CodeMetrics.h - Code cost measurements -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -17,7 +16,6 @@
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallPtrSet.h"
-#include "llvm/IR/CallSite.h"
namespace llvm {
class AssumptionCache;
@@ -29,14 +27,6 @@
class TargetTransformInfo;
class Value;
-/// Check whether a call will lower to something small.
-///
-/// This tests checks whether this callsite will lower to something
-/// significantly cheaper than a traditional call, often a single
-/// instruction. Note that if isInstructionFree(CS.getInstruction()) would
-/// return true, so will this function.
-bool callIsSmall(ImmutableCallSite CS);
-
/// Utility to calculate the size and a few similar metrics for a set
/// of basic blocks.
struct CodeMetrics {
diff --git a/linux-x64/clang/include/llvm/Analysis/ConstantFolding.h b/linux-x64/clang/include/llvm/Analysis/ConstantFolding.h
index 192c1ab..43a2df0 100644
--- a/linux-x64/clang/include/llvm/Analysis/ConstantFolding.h
+++ b/linux-x64/clang/include/llvm/Analysis/ConstantFolding.h
@@ -1,9 +1,8 @@
//===-- ConstantFolding.h - Fold instructions into constants ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -23,7 +22,7 @@
namespace llvm {
class APInt;
template <typename T> class ArrayRef;
-class CallSite;
+class CallBase;
class Constant;
class ConstantExpr;
class ConstantVector;
@@ -31,7 +30,6 @@
class Function;
class GlobalValue;
class Instruction;
-class ImmutableCallSite;
class TargetLibraryInfo;
class Type;
@@ -139,11 +137,11 @@
/// canConstantFoldCallTo - Return true if its even possible to fold a call to
/// the specified function.
-bool canConstantFoldCallTo(ImmutableCallSite CS, const Function *F);
+bool canConstantFoldCallTo(const CallBase *Call, const Function *F);
/// ConstantFoldCall - Attempt to constant fold a call to the specified function
/// with the specified arguments, returning null if unsuccessful.
-Constant *ConstantFoldCall(ImmutableCallSite CS, Function *F,
+Constant *ConstantFoldCall(const CallBase *Call, Function *F,
ArrayRef<Constant *> Operands,
const TargetLibraryInfo *TLI = nullptr);
@@ -155,7 +153,7 @@
/// Check whether the given call has no side-effects.
/// Specifically checks for math routimes which sometimes set errno.
-bool isMathLibCallNoop(CallSite CS, const TargetLibraryInfo *TLI);
+bool isMathLibCallNoop(const CallBase *Call, const TargetLibraryInfo *TLI);
}
#endif
diff --git a/linux-x64/clang/include/llvm/Analysis/DOTGraphTraitsPass.h b/linux-x64/clang/include/llvm/Analysis/DOTGraphTraitsPass.h
index b7447a0..0410a33 100644
--- a/linux-x64/clang/include/llvm/Analysis/DOTGraphTraitsPass.h
+++ b/linux-x64/clang/include/llvm/Analysis/DOTGraphTraitsPass.h
@@ -1,9 +1,8 @@
//===-- DOTGraphTraitsPass.h - Print/View dotty graphs-----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/DemandedBits.h b/linux-x64/clang/include/llvm/Analysis/DemandedBits.h
index d438460..04db3eb 100644
--- a/linux-x64/clang/include/llvm/Analysis/DemandedBits.h
+++ b/linux-x64/clang/include/llvm/Analysis/DemandedBits.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/DemandedBits.h - Determine demanded bits ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -44,19 +43,30 @@
F(F), AC(AC), DT(DT) {}
/// Return the bits demanded from instruction I.
+ ///
+ /// For vector instructions individual vector elements are not distinguished:
+ /// A bit is demanded if it is demanded for any of the vector elements. The
+ /// size of the return value corresponds to the type size in bits of the
+ /// scalar type.
+ ///
+ /// Instructions that do not have integer or vector of integer type are
+ /// accepted, but will always produce a mask with all bits set.
APInt getDemandedBits(Instruction *I);
/// Return true if, during analysis, I could not be reached.
bool isInstructionDead(Instruction *I);
+ /// Return whether this use is dead by means of not having any demanded bits.
+ bool isUseDead(Use *U);
+
void print(raw_ostream &OS);
private:
void performAnalysis();
void determineLiveOperandBits(const Instruction *UserI,
- const Instruction *I, unsigned OperandNo,
+ const Value *Val, unsigned OperandNo,
const APInt &AOut, APInt &AB,
- KnownBits &Known, KnownBits &Known2);
+ KnownBits &Known, KnownBits &Known2, bool &KnownBitsComputed);
Function &F;
AssumptionCache &AC;
@@ -67,6 +77,9 @@
// The set of visited instructions (non-integer-typed only).
SmallPtrSet<Instruction*, 32> Visited;
DenseMap<Instruction *, APInt> AliveBits;
+ // Uses with no demanded bits. If the user also has no demanded bits, the use
+ // might not be stored explicitly in this map, to save memory during analysis.
+ SmallPtrSet<Use *, 16> DeadUses;
};
class DemandedBitsWrapperPass : public FunctionPass {
diff --git a/linux-x64/clang/include/llvm/Analysis/DependenceAnalysis.h b/linux-x64/clang/include/llvm/Analysis/DependenceAnalysis.h
index c8ec737..997013a 100644
--- a/linux-x64/clang/include/llvm/Analysis/DependenceAnalysis.h
+++ b/linux-x64/clang/include/llvm/Analysis/DependenceAnalysis.h
@@ -1,9 +1,8 @@
//===-- llvm/Analysis/DependenceAnalysis.h -------------------- -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -275,6 +274,10 @@
LoopInfo *LI)
: AA(AA), SE(SE), LI(LI), F(F) {}
+ /// Handle transitive invalidation when the cached analysis results go away.
+ bool invalidate(Function &F, const PreservedAnalyses &PA,
+ FunctionAnalysisManager::Invalidator &Inv);
+
/// depends - Tests for a dependence between the Src and Dst instructions.
/// Returns NULL if no dependence; otherwise, returns a Dependence (or a
/// FullDependence) with as much information as can be gleaned.
@@ -936,6 +939,17 @@
friend struct AnalysisInfoMixin<DependenceAnalysis>;
}; // class DependenceAnalysis
+ /// Printer pass to dump DA results.
+ struct DependenceAnalysisPrinterPass
+ : public PassInfoMixin<DependenceAnalysisPrinterPass> {
+ DependenceAnalysisPrinterPass(raw_ostream &OS) : OS(OS) {}
+
+ PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM);
+
+ private:
+ raw_ostream &OS;
+ }; // class DependenceAnalysisPrinterPass
+
/// Legacy pass manager pass to access dependence information
class DependenceAnalysisWrapperPass : public FunctionPass {
public:
diff --git a/linux-x64/clang/include/llvm/Analysis/DivergenceAnalysis.h b/linux-x64/clang/include/llvm/Analysis/DivergenceAnalysis.h
new file mode 100644
index 0000000..3cfb9d1
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Analysis/DivergenceAnalysis.h
@@ -0,0 +1,204 @@
+//===- llvm/Analysis/DivergenceAnalysis.h - Divergence Analysis -*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// \file
+// The divergence analysis determines which instructions and branches are
+// divergent given a set of divergent source instructions.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_ANALYSIS_DIVERGENCE_ANALYSIS_H
+#define LLVM_ANALYSIS_DIVERGENCE_ANALYSIS_H
+
+#include "llvm/ADT/DenseSet.h"
+#include "llvm/Analysis/SyncDependenceAnalysis.h"
+#include "llvm/IR/Function.h"
+#include "llvm/Pass.h"
+#include <vector>
+
+namespace llvm {
+class Module;
+class Value;
+class Instruction;
+class Loop;
+class raw_ostream;
+class TargetTransformInfo;
+
+/// \brief Generic divergence analysis for reducible CFGs.
+///
+/// This analysis propagates divergence in a data-parallel context from sources
+/// of divergence to all users. It requires reducible CFGs. All assignments
+/// should be in SSA form.
+class DivergenceAnalysis {
+public:
+ /// \brief This instance will analyze the whole function \p F or the loop \p
+ /// RegionLoop.
+ ///
+ /// \param RegionLoop if non-null the analysis is restricted to \p RegionLoop.
+ /// Otherwise the whole function is analyzed.
+ /// \param IsLCSSAForm whether the analysis may assume that the IR in the
+ /// region in in LCSSA form.
+ DivergenceAnalysis(const Function &F, const Loop *RegionLoop,
+ const DominatorTree &DT, const LoopInfo &LI,
+ SyncDependenceAnalysis &SDA, bool IsLCSSAForm);
+
+ /// \brief The loop that defines the analyzed region (if any).
+ const Loop *getRegionLoop() const { return RegionLoop; }
+ const Function &getFunction() const { return F; }
+
+ /// \brief Whether \p BB is part of the region.
+ bool inRegion(const BasicBlock &BB) const;
+ /// \brief Whether \p I is part of the region.
+ bool inRegion(const Instruction &I) const;
+
+ /// \brief Mark \p UniVal as a value that is always uniform.
+ void addUniformOverride(const Value &UniVal);
+
+ /// \brief Mark \p DivVal as a value that is always divergent.
+ void markDivergent(const Value &DivVal);
+
+ /// \brief Propagate divergence to all instructions in the region.
+ /// Divergence is seeded by calls to \p markDivergent.
+ void compute();
+
+ /// \brief Whether any value was marked or analyzed to be divergent.
+ bool hasDetectedDivergence() const { return !DivergentValues.empty(); }
+
+ /// \brief Whether \p Val will always return a uniform value regardless of its
+ /// operands
+ bool isAlwaysUniform(const Value &Val) const;
+
+ /// \brief Whether \p Val is a divergent value
+ bool isDivergent(const Value &Val) const;
+
+ void print(raw_ostream &OS, const Module *) const;
+
+private:
+ bool updateTerminator(const Instruction &Term) const;
+ bool updatePHINode(const PHINode &Phi) const;
+
+ /// \brief Computes whether \p Inst is divergent based on the
+ /// divergence of its operands.
+ ///
+ /// \returns Whether \p Inst is divergent.
+ ///
+ /// This should only be called for non-phi, non-terminator instructions.
+ bool updateNormalInstruction(const Instruction &Inst) const;
+
+ /// \brief Mark users of live-out users as divergent.
+ ///
+ /// \param LoopHeader the header of the divergent loop.
+ ///
+ /// Marks all users of live-out values of the loop headed by \p LoopHeader
+ /// as divergent and puts them on the worklist.
+ void taintLoopLiveOuts(const BasicBlock &LoopHeader);
+
+ /// \brief Push all users of \p Val (in the region) to the worklist
+ void pushUsers(const Value &I);
+
+ /// \brief Push all phi nodes in @block to the worklist
+ void pushPHINodes(const BasicBlock &Block);
+
+ /// \brief Mark \p Block as join divergent
+ ///
+ /// A block is join divergent if two threads may reach it from different
+ /// incoming blocks at the same time.
+ void markBlockJoinDivergent(const BasicBlock &Block) {
+ DivergentJoinBlocks.insert(&Block);
+ }
+
+ /// \brief Whether \p Val is divergent when read in \p ObservingBlock.
+ bool isTemporalDivergent(const BasicBlock &ObservingBlock,
+ const Value &Val) const;
+
+ /// \brief Whether \p Block is join divergent
+ ///
+ /// (see markBlockJoinDivergent).
+ bool isJoinDivergent(const BasicBlock &Block) const {
+ return DivergentJoinBlocks.find(&Block) != DivergentJoinBlocks.end();
+ }
+
+ /// \brief Propagate control-induced divergence to users (phi nodes and
+ /// instructions).
+ //
+ // \param JoinBlock is a divergent loop exit or join point of two disjoint
+ // paths.
+ // \returns Whether \p JoinBlock is a divergent loop exit of \p TermLoop.
+ bool propagateJoinDivergence(const BasicBlock &JoinBlock,
+ const Loop *TermLoop);
+
+ /// \brief Propagate induced value divergence due to control divergence in \p
+ /// Term.
+ void propagateBranchDivergence(const Instruction &Term);
+
+ /// \brief Propagate divergent caused by a divergent loop exit.
+ ///
+ /// \param ExitingLoop is a divergent loop.
+ void propagateLoopDivergence(const Loop &ExitingLoop);
+
+private:
+ const Function &F;
+ // If regionLoop != nullptr, analysis is only performed within \p RegionLoop.
+ // Otw, analyze the whole function
+ const Loop *RegionLoop;
+
+ const DominatorTree &DT;
+ const LoopInfo &LI;
+
+ // Recognized divergent loops
+ DenseSet<const Loop *> DivergentLoops;
+
+ // The SDA links divergent branches to divergent control-flow joins.
+ SyncDependenceAnalysis &SDA;
+
+ // Use simplified code path for LCSSA form.
+ bool IsLCSSAForm;
+
+ // Set of known-uniform values.
+ DenseSet<const Value *> UniformOverrides;
+
+ // Blocks with joining divergent control from different predecessors.
+ DenseSet<const BasicBlock *> DivergentJoinBlocks;
+
+ // Detected/marked divergent values.
+ DenseSet<const Value *> DivergentValues;
+
+ // Internal worklist for divergence propagation.
+ std::vector<const Instruction *> Worklist;
+};
+
+/// \brief Divergence analysis frontend for GPU kernels.
+class GPUDivergenceAnalysis {
+ SyncDependenceAnalysis SDA;
+ DivergenceAnalysis DA;
+
+public:
+ /// Runs the divergence analysis on @F, a GPU kernel
+ GPUDivergenceAnalysis(Function &F, const DominatorTree &DT,
+ const PostDominatorTree &PDT, const LoopInfo &LI,
+ const TargetTransformInfo &TTI);
+
+ /// Whether any divergence was detected.
+ bool hasDivergence() const { return DA.hasDetectedDivergence(); }
+
+ /// The GPU kernel this analysis result is for
+ const Function &getFunction() const { return DA.getFunction(); }
+
+ /// Whether \p V is divergent.
+ bool isDivergent(const Value &V) const;
+
+ /// Whether \p V is uniform/non-divergent
+ bool isUniform(const Value &V) const { return !isDivergent(V); }
+
+ /// Print all divergent values in the kernel.
+ void print(raw_ostream &OS, const Module *) const;
+};
+
+} // namespace llvm
+
+#endif // LLVM_ANALYSIS_DIVERGENCE_ANALYSIS_H
diff --git a/linux-x64/clang/include/llvm/Analysis/DomPrinter.h b/linux-x64/clang/include/llvm/Analysis/DomPrinter.h
index 0ed2899..a177f87 100644
--- a/linux-x64/clang/include/llvm/Analysis/DomPrinter.h
+++ b/linux-x64/clang/include/llvm/Analysis/DomPrinter.h
@@ -1,9 +1,8 @@
//===-- DomPrinter.h - Dom printer external interface ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/DomTreeUpdater.h b/linux-x64/clang/include/llvm/Analysis/DomTreeUpdater.h
similarity index 96%
rename from linux-x64/clang/include/llvm/IR/DomTreeUpdater.h
rename to linux-x64/clang/include/llvm/Analysis/DomTreeUpdater.h
index e5bb092..fcfd3c1 100644
--- a/linux-x64/clang/include/llvm/IR/DomTreeUpdater.h
+++ b/linux-x64/clang/include/llvm/Analysis/DomTreeUpdater.h
@@ -1,9 +1,8 @@
//===- DomTreeUpdater.h - DomTree/Post DomTree Updater ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -12,8 +11,8 @@
//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_DOMTREEUPDATER_H
-#define LLVM_DOMTREEUPDATER_H
+#ifndef LLVM_ANALYSIS_DOMTREEUPDATER_H
+#define LLVM_ANALYSIS_DOMTREEUPDATER_H
#include "llvm/Analysis/PostDominators.h"
#include "llvm/IR/Dominators.h"
@@ -254,4 +253,4 @@
};
} // namespace llvm
-#endif // LLVM_DOMTREEUPDATER_H
+#endif // LLVM_ANALYSIS_DOMTREEUPDATER_H
diff --git a/linux-x64/clang/include/llvm/Analysis/DominanceFrontier.h b/linux-x64/clang/include/llvm/Analysis/DominanceFrontier.h
index d94c420..c0bf30e 100644
--- a/linux-x64/clang/include/llvm/Analysis/DominanceFrontier.h
+++ b/linux-x64/clang/include/llvm/Analysis/DominanceFrontier.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/DominanceFrontier.h - Dominator Frontiers --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/DominanceFrontierImpl.h b/linux-x64/clang/include/llvm/Analysis/DominanceFrontierImpl.h
index 99224c0..aa764be 100644
--- a/linux-x64/clang/include/llvm/Analysis/DominanceFrontierImpl.h
+++ b/linux-x64/clang/include/llvm/Analysis/DominanceFrontierImpl.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/DominanceFrontier.h - Dominator Frontiers --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/EHPersonalities.h b/linux-x64/clang/include/llvm/Analysis/EHPersonalities.h
index fe0e65b..d89aa11 100644
--- a/linux-x64/clang/include/llvm/Analysis/EHPersonalities.h
+++ b/linux-x64/clang/include/llvm/Analysis/EHPersonalities.h
@@ -1,9 +1,8 @@
//===- EHPersonalities.h - Compute EH-related information -----------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Analysis/GlobalsModRef.h b/linux-x64/clang/include/llvm/Analysis/GlobalsModRef.h
index 09cef68..14b2097 100644
--- a/linux-x64/clang/include/llvm/Analysis/GlobalsModRef.h
+++ b/linux-x64/clang/include/llvm/Analysis/GlobalsModRef.h
@@ -1,9 +1,8 @@
//===- GlobalsModRef.h - Simple Mod/Ref AA for Globals ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -88,7 +87,7 @@
AliasResult alias(const MemoryLocation &LocA, const MemoryLocation &LocB);
using AAResultBase::getModRefInfo;
- ModRefInfo getModRefInfo(ImmutableCallSite CS, const MemoryLocation &Loc);
+ ModRefInfo getModRefInfo(const CallBase *Call, const MemoryLocation &Loc);
/// getModRefBehavior - Return the behavior of the specified function if
/// called from the specified call site. The call site may be null in which
@@ -98,7 +97,7 @@
/// getModRefBehavior - Return the behavior of the specified function if
/// called from the specified call site. The call site may be null in which
/// case the most generic behavior of this function should be returned.
- FunctionModRefBehavior getModRefBehavior(ImmutableCallSite CS);
+ FunctionModRefBehavior getModRefBehavior(const CallBase *Call);
private:
FunctionInfo *getFunctionInfo(const Function *F);
@@ -113,7 +112,7 @@
void CollectSCCMembership(CallGraph &CG);
bool isNonEscapingGlobalNoAlias(const GlobalValue *GV, const Value *V);
- ModRefInfo getModRefInfoForArgument(ImmutableCallSite CS,
+ ModRefInfo getModRefInfoForArgument(const CallBase *Call,
const GlobalValue *GV);
};
diff --git a/linux-x64/clang/include/llvm/Analysis/GuardUtils.h b/linux-x64/clang/include/llvm/Analysis/GuardUtils.h
index 3b151ee..41e7b7c 100644
--- a/linux-x64/clang/include/llvm/Analysis/GuardUtils.h
+++ b/linux-x64/clang/include/llvm/Analysis/GuardUtils.h
@@ -1,9 +1,8 @@
//===-- GuardUtils.h - Utils for work with guards ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// Utils that are used to perform analyzes related to guards and their
@@ -15,12 +14,31 @@
namespace llvm {
+class BasicBlock;
class User;
+class Value;
-/// Returns true iff \p U has semantics of a guard.
+/// Returns true iff \p U has semantics of a guard expressed in a form of call
+/// of llvm.experimental.guard intrinsic.
bool isGuard(const User *U);
+/// Returns true iff \p U has semantics of a guard expressed in a form of a
+/// widenable conditional branch to deopt block.
+bool isGuardAsWidenableBranch(const User *U);
+
+/// If U is widenable branch looking like:
+/// %cond = ...
+/// %wc = call i1 @llvm.experimental.widenable.condition()
+/// %branch_cond = and i1 %cond, %wc
+/// br i1 %branch_cond, label %if_true_bb, label %if_false_bb ; <--- U
+/// The function returns true, and the values %cond and %wc and blocks
+/// %if_true_bb, if_false_bb are returned in
+/// the parameters (Condition, WidenableCondition, IfTrueBB and IfFalseFF)
+/// respectively. If \p U does not match this pattern, return false.
+bool parseWidenableBranch(const User *U, Value *&Condition,
+ Value *&WidenableCondition, BasicBlock *&IfTrueBB,
+ BasicBlock *&IfFalseBB);
+
} // llvm
#endif // LLVM_ANALYSIS_GUARDUTILS_H
-
diff --git a/linux-x64/clang/include/llvm/Analysis/IVDescriptors.h b/linux-x64/clang/include/llvm/Analysis/IVDescriptors.h
index d1d7e5e..254cabf 100644
--- a/linux-x64/clang/include/llvm/Analysis/IVDescriptors.h
+++ b/linux-x64/clang/include/llvm/Analysis/IVDescriptors.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/IVDescriptors.h - IndVar Descriptors -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -140,7 +139,8 @@
/// Returns true if instruction I has multiple uses in Insts
static bool hasMultipleUsesOf(Instruction *I,
- SmallPtrSetImpl<Instruction *> &Insts);
+ SmallPtrSetImpl<Instruction *> &Insts,
+ unsigned MaxNumUses);
/// Returns true if all uses of the instruction I is within the Set.
static bool areAllUsesIn(Instruction *I, SmallPtrSetImpl<Instruction *> &Set);
@@ -150,6 +150,10 @@
/// or max(X, Y).
static InstDesc isMinMaxSelectCmpPattern(Instruction *I, InstDesc &Prev);
+ /// Returns a struct describing if the instruction is a
+ /// Select(FCmp(X, Y), (Z = X op PHINode), PHINode) instruction pattern.
+ static InstDesc isConditionalRdxPattern(RecurrenceKind Kind, Instruction *I);
+
/// Returns identity corresponding to the RecurrenceKind.
static Constant *getRecurrenceIdentity(RecurrenceKind K, Type *Tp);
diff --git a/linux-x64/clang/include/llvm/Analysis/IVUsers.h b/linux-x64/clang/include/llvm/Analysis/IVUsers.h
index 035b974..f8ea3bc 100644
--- a/linux-x64/clang/include/llvm/Analysis/IVUsers.h
+++ b/linux-x64/clang/include/llvm/Analysis/IVUsers.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/IVUsers.h - Induction Variable Users -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/IndirectCallPromotionAnalysis.h b/linux-x64/clang/include/llvm/Analysis/IndirectCallPromotionAnalysis.h
index be3a284..8a05e91 100644
--- a/linux-x64/clang/include/llvm/Analysis/IndirectCallPromotionAnalysis.h
+++ b/linux-x64/clang/include/llvm/Analysis/IndirectCallPromotionAnalysis.h
@@ -1,9 +1,8 @@
//===- IndirectCallPromotionAnalysis.h - Indirect call analysis -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Analysis/IndirectCallSiteVisitor.h b/linux-x64/clang/include/llvm/Analysis/IndirectCallSiteVisitor.h
deleted file mode 100644
index a30b59f..0000000
--- a/linux-x64/clang/include/llvm/Analysis/IndirectCallSiteVisitor.h
+++ /dev/null
@@ -1,40 +0,0 @@
-//===-- IndirectCallSiteVisitor.h - indirect call-sites visitor -----------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements defines a visitor class and a helper function that find
-// all indirect call-sites in a function.
-
-#ifndef LLVM_ANALYSIS_INDIRECTCALLSITEVISITOR_H
-#define LLVM_ANALYSIS_INDIRECTCALLSITEVISITOR_H
-
-#include "llvm/IR/InstVisitor.h"
-#include <vector>
-
-namespace llvm {
-// Visitor class that finds all indirect call sites.
-struct PGOIndirectCallSiteVisitor
- : public InstVisitor<PGOIndirectCallSiteVisitor> {
- std::vector<Instruction *> IndirectCallInsts;
- PGOIndirectCallSiteVisitor() {}
-
- void visitCallSite(CallSite CS) {
- if (CS.isIndirectCall())
- IndirectCallInsts.push_back(CS.getInstruction());
- }
-};
-
-// Helper function that finds all indirect call sites.
-inline std::vector<Instruction *> findIndirectCallSites(Function &F) {
- PGOIndirectCallSiteVisitor ICV;
- ICV.visit(F);
- return ICV.IndirectCallInsts;
-}
-}
-
-#endif
diff --git a/linux-x64/clang/include/llvm/Analysis/IndirectCallVisitor.h b/linux-x64/clang/include/llvm/Analysis/IndirectCallVisitor.h
new file mode 100644
index 0000000..1d1f3f4
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Analysis/IndirectCallVisitor.h
@@ -0,0 +1,38 @@
+//===-- IndirectCallVisitor.h - indirect call visitor ---------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements defines a visitor class and a helper function that find
+// all indirect call-sites in a function.
+
+#ifndef LLVM_ANALYSIS_INDIRECTCALLVISITOR_H
+#define LLVM_ANALYSIS_INDIRECTCALLVISITOR_H
+
+#include "llvm/IR/InstVisitor.h"
+#include <vector>
+
+namespace llvm {
+// Visitor class that finds all indirect call.
+struct PGOIndirectCallVisitor : public InstVisitor<PGOIndirectCallVisitor> {
+ std::vector<Instruction *> IndirectCalls;
+ PGOIndirectCallVisitor() {}
+
+ void visitCallBase(CallBase &Call) {
+ if (Call.isIndirectCall())
+ IndirectCalls.push_back(&Call);
+ }
+};
+
+// Helper function that finds all indirect call sites.
+inline std::vector<Instruction *> findIndirectCalls(Function &F) {
+ PGOIndirectCallVisitor ICV;
+ ICV.visit(F);
+ return ICV.IndirectCalls;
+}
+} // namespace llvm
+
+#endif
diff --git a/linux-x64/clang/include/llvm/Analysis/InlineCost.h b/linux-x64/clang/include/llvm/Analysis/InlineCost.h
index 529fb75..e386093 100644
--- a/linux-x64/clang/include/llvm/Analysis/InlineCost.h
+++ b/linux-x64/clang/include/llvm/Analysis/InlineCost.h
@@ -1,9 +1,8 @@
//===- InlineCost.h - Cost analysis for inliner -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -46,7 +45,6 @@
const int CallPenalty = 25;
const int LastCallToStaticBonus = 15000;
const int ColdccPenalty = 2000;
-const int NoreturnPenalty = 10000;
/// Do not inline functions which allocate this many bytes on the stack
/// when the caller is recursive.
const unsigned TotalAllocaSizeRecursiveCaller = 1024;
@@ -233,7 +231,7 @@
ProfileSummaryInfo *PSI, OptimizationRemarkEmitter *ORE);
/// Minimal filter to detect invalid constructs for inlining.
-bool isInlineViable(Function &Callee);
+InlineResult isInlineViable(Function &Callee);
}
#endif
diff --git a/linux-x64/clang/include/llvm/Analysis/InstructionPrecedenceTracking.h b/linux-x64/clang/include/llvm/Analysis/InstructionPrecedenceTracking.h
index 5178a33..eb72eac 100644
--- a/linux-x64/clang/include/llvm/Analysis/InstructionPrecedenceTracking.h
+++ b/linux-x64/clang/include/llvm/Analysis/InstructionPrecedenceTracking.h
@@ -1,9 +1,8 @@
//===-- InstructionPrecedenceTracking.h -------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// Implements a class that is able to define some instructions as "special"
@@ -75,8 +74,14 @@
virtual ~InstructionPrecedenceTracking() = default;
public:
- /// Clears cached information about this particular block.
- void invalidateBlock(const BasicBlock *BB);
+ /// Notifies this tracking that we are going to insert a new instruction \p
+ /// Inst to the basic block \p BB. It makes all necessary updates to internal
+ /// caches to keep them consistent.
+ void insertInstructionTo(const Instruction *Inst, const BasicBlock *BB);
+
+ /// Notifies this tracking that we are going to remove the instruction \p Inst
+ /// It makes all necessary updates to internal caches to keep them consistent.
+ void removeInstruction(const Instruction *Inst);
/// Invalidates all information from this tracking.
void clear();
@@ -114,6 +119,31 @@
virtual bool isSpecialInstruction(const Instruction *Insn) const;
};
+class MemoryWriteTracking : public InstructionPrecedenceTracking {
+public:
+ MemoryWriteTracking(DominatorTree *DT) : InstructionPrecedenceTracking(DT) {}
+
+ /// Returns the topmost instruction that may write memory from the given
+ /// basic block. Returns nullptr if there is no such instructions in the block.
+ const Instruction *getFirstMemoryWrite(const BasicBlock *BB) {
+ return getFirstSpecialInstruction(BB);
+ }
+
+ /// Returns true if at least one instruction from the given basic block may
+ /// write memory.
+ bool mayWriteToMemory(const BasicBlock *BB) {
+ return hasSpecialInstructions(BB);
+ }
+
+ /// Returns true if the first memory writing instruction of Insn's block
+ /// exists and dominates Insn.
+ bool isDominatedByMemoryWriteFromSameBlock(const Instruction *Insn) {
+ return isPreceededBySpecialInstruction(Insn);
+ }
+
+ virtual bool isSpecialInstruction(const Instruction *Insn) const;
+};
+
} // llvm
#endif // LLVM_ANALYSIS_INSTRUCTIONPRECEDENCETRACKING_H
diff --git a/linux-x64/clang/include/llvm/Analysis/InstructionSimplify.h b/linux-x64/clang/include/llvm/Analysis/InstructionSimplify.h
index 6662e91..a904043 100644
--- a/linux-x64/clang/include/llvm/Analysis/InstructionSimplify.h
+++ b/linux-x64/clang/include/llvm/Analysis/InstructionSimplify.h
@@ -1,9 +1,8 @@
//===-- InstructionSimplify.h - Fold instrs into simpler forms --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -41,8 +40,8 @@
template <typename T, typename... TArgs> class AnalysisManager;
template <class T> class ArrayRef;
class AssumptionCache;
+class CallBase;
class DominatorTree;
-class ImmutableCallSite;
class DataLayout;
class FastMathFlags;
struct LoopStandardAnalysisResults;
@@ -239,15 +238,15 @@
FastMathFlags FMF, const SimplifyQuery &Q);
/// Given a callsite, fold the result or return null.
-Value *SimplifyCall(ImmutableCallSite CS, const SimplifyQuery &Q);
+Value *SimplifyCall(CallBase *Call, const SimplifyQuery &Q);
/// Given a function and iterators over arguments, fold the result or return
/// null.
-Value *SimplifyCall(ImmutableCallSite CS, Value *V, User::op_iterator ArgBegin,
+Value *SimplifyCall(CallBase *Call, Value *V, User::op_iterator ArgBegin,
User::op_iterator ArgEnd, const SimplifyQuery &Q);
/// Given a function and set of arguments, fold the result or return null.
-Value *SimplifyCall(ImmutableCallSite CS, Value *V, ArrayRef<Value *> Args,
+Value *SimplifyCall(CallBase *Call, Value *V, ArrayRef<Value *> Args,
const SimplifyQuery &Q);
/// See if we can compute a simplified version of this instruction. If not,
diff --git a/linux-x64/clang/include/llvm/Analysis/Interval.h b/linux-x64/clang/include/llvm/Analysis/Interval.h
index f3714dd..5c9a453 100644
--- a/linux-x64/clang/include/llvm/Analysis/Interval.h
+++ b/linux-x64/clang/include/llvm/Analysis/Interval.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/Interval.h - Interval Class Declaration ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/IntervalIterator.h b/linux-x64/clang/include/llvm/Analysis/IntervalIterator.h
index 6ffcae5..efaaf97 100644
--- a/linux-x64/clang/include/llvm/Analysis/IntervalIterator.h
+++ b/linux-x64/clang/include/llvm/Analysis/IntervalIterator.h
@@ -1,9 +1,8 @@
//===- IntervalIterator.h - Interval Iterator Declaration -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/IntervalPartition.h b/linux-x64/clang/include/llvm/Analysis/IntervalPartition.h
index 5033516..5b127c2 100644
--- a/linux-x64/clang/include/llvm/Analysis/IntervalPartition.h
+++ b/linux-x64/clang/include/llvm/Analysis/IntervalPartition.h
@@ -1,9 +1,8 @@
//===- IntervalPartition.h - Interval partition Calculation -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/IteratedDominanceFrontier.h b/linux-x64/clang/include/llvm/Analysis/IteratedDominanceFrontier.h
index fdebb1b..e7d19d1 100644
--- a/linux-x64/clang/include/llvm/Analysis/IteratedDominanceFrontier.h
+++ b/linux-x64/clang/include/llvm/Analysis/IteratedDominanceFrontier.h
@@ -1,12 +1,11 @@
//===- IteratedDominanceFrontier.h - Calculate IDF --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
-//
+/// \file
/// Compute iterated dominance frontiers using a linear time algorithm.
///
/// The algorithm used here is based on:
diff --git a/linux-x64/clang/include/llvm/Analysis/LazyBlockFrequencyInfo.h b/linux-x64/clang/include/llvm/Analysis/LazyBlockFrequencyInfo.h
index d1afb63..0e7dc94 100644
--- a/linux-x64/clang/include/llvm/Analysis/LazyBlockFrequencyInfo.h
+++ b/linux-x64/clang/include/llvm/Analysis/LazyBlockFrequencyInfo.h
@@ -1,9 +1,8 @@
//===- LazyBlockFrequencyInfo.h - Lazy Block Frequency Analysis -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/LazyBranchProbabilityInfo.h b/linux-x64/clang/include/llvm/Analysis/LazyBranchProbabilityInfo.h
index 9e6bcfe..cae0778 100644
--- a/linux-x64/clang/include/llvm/Analysis/LazyBranchProbabilityInfo.h
+++ b/linux-x64/clang/include/llvm/Analysis/LazyBranchProbabilityInfo.h
@@ -1,9 +1,8 @@
//===- LazyBranchProbabilityInfo.h - Lazy Branch Probability ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/LazyCallGraph.h b/linux-x64/clang/include/llvm/Analysis/LazyCallGraph.h
index d1ec6a9..3286547 100644
--- a/linux-x64/clang/include/llvm/Analysis/LazyCallGraph.h
+++ b/linux-x64/clang/include/llvm/Analysis/LazyCallGraph.h
@@ -1,9 +1,8 @@
//===- LazyCallGraph.h - Analysis of a Module's call graph ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Analysis/LazyValueInfo.h b/linux-x64/clang/include/llvm/Analysis/LazyValueInfo.h
index 1a4fdb5..570a504 100644
--- a/linux-x64/clang/include/llvm/Analysis/LazyValueInfo.h
+++ b/linux-x64/clang/include/llvm/Analysis/LazyValueInfo.h
@@ -1,9 +1,8 @@
//===- LazyValueInfo.h - Value constraint analysis --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/LegacyDivergenceAnalysis.h b/linux-x64/clang/include/llvm/Analysis/LegacyDivergenceAnalysis.h
index 173ca28..0a338b8 100644
--- a/linux-x64/clang/include/llvm/Analysis/LegacyDivergenceAnalysis.h
+++ b/linux-x64/clang/include/llvm/Analysis/LegacyDivergenceAnalysis.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/LegacyDivergenceAnalysis.h - KernelDivergence Analysis -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -19,9 +18,11 @@
#include "llvm/ADT/DenseSet.h"
#include "llvm/IR/Function.h"
#include "llvm/Pass.h"
+#include "llvm/Analysis/DivergenceAnalysis.h"
namespace llvm {
class Value;
+class GPUDivergenceAnalysis;
class LegacyDivergenceAnalysis : public FunctionPass {
public:
static char ID;
@@ -41,7 +42,7 @@
//
// Even if this function returns false, V may still be divergent when used
// in a different basic block.
- bool isDivergent(const Value *V) const { return DivergentValues.count(V); }
+ bool isDivergent(const Value *V) const;
// Returns true if V is uniform/non-divergent.
//
@@ -53,6 +54,12 @@
void removeValue(const Value *V) { DivergentValues.erase(V); }
private:
+ // Whether analysis should be performed by GPUDivergenceAnalysis.
+ bool shouldUseGPUDivergenceAnalysis(const Function &F) const;
+
+ // (optional) handle to new DivergenceAnalysis
+ std::unique_ptr<GPUDivergenceAnalysis> gpuDA;
+
// Stores all divergent values.
DenseSet<const Value *> DivergentValues;
};
diff --git a/linux-x64/clang/include/llvm/Analysis/Lint.h b/linux-x64/clang/include/llvm/Analysis/Lint.h
index db5919f..0fea81e 100644
--- a/linux-x64/clang/include/llvm/Analysis/Lint.h
+++ b/linux-x64/clang/include/llvm/Analysis/Lint.h
@@ -1,9 +1,8 @@
//===-- llvm/Analysis/Lint.h - LLVM IR Lint ---------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/Loads.h b/linux-x64/clang/include/llvm/Analysis/Loads.h
index f110c28..0440116 100644
--- a/linux-x64/clang/include/llvm/Analysis/Loads.h
+++ b/linux-x64/clang/include/llvm/Analysis/Loads.h
@@ -1,9 +1,8 @@
//===- Loads.h - Local load analysis --------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/LoopAccessAnalysis.h b/linux-x64/clang/include/llvm/Analysis/LoopAccessAnalysis.h
index 86b402b..fa34afa 100644
--- a/linux-x64/clang/include/llvm/Analysis/LoopAccessAnalysis.h
+++ b/linux-x64/clang/include/llvm/Analysis/LoopAccessAnalysis.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/LoopAccessAnalysis.h -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -97,6 +96,19 @@
/// Set of potential dependent memory accesses.
typedef EquivalenceClasses<MemAccessInfo> DepCandidates;
+ /// Type to keep track of the status of the dependence check. The order of
+ /// the elements is important and has to be from most permissive to least
+ /// permissive.
+ enum class VectorizationSafetyStatus {
+ // Can vectorize safely without RT checks. All dependences are known to be
+ // safe.
+ Safe,
+ // Can possibly vectorize with RT checks to overcome unknown dependencies.
+ PossiblySafeWithRtChecks,
+ // Cannot vectorize due to known unsafe dependencies.
+ Unsafe,
+ };
+
/// Dependece between memory access instructions.
struct Dependence {
/// The type of the dependence.
@@ -146,7 +158,7 @@
Instruction *getDestination(const LoopAccessInfo &LAI) const;
/// Dependence types that don't prevent vectorization.
- static bool isSafeForVectorization(DepType Type);
+ static VectorizationSafetyStatus isSafeForVectorization(DepType Type);
/// Lexically forward dependence.
bool isForward() const;
@@ -164,8 +176,8 @@
MemoryDepChecker(PredicatedScalarEvolution &PSE, const Loop *L)
: PSE(PSE), InnermostLoop(L), AccessIdx(0), MaxSafeRegisterWidth(-1U),
- ShouldRetryWithRuntimeCheck(false), SafeForVectorization(true),
- RecordDependences(true) {}
+ FoundNonConstantDistanceDependence(false),
+ Status(VectorizationSafetyStatus::Safe), RecordDependences(true) {}
/// Register the location (instructions are given increasing numbers)
/// of a write access.
@@ -193,7 +205,9 @@
/// No memory dependence was encountered that would inhibit
/// vectorization.
- bool isSafeForVectorization() const { return SafeForVectorization; }
+ bool isSafeForVectorization() const {
+ return Status == VectorizationSafetyStatus::Safe;
+ }
/// The maximum number of bytes of a vector register we can vectorize
/// the accesses safely with.
@@ -205,7 +219,10 @@
/// In same cases when the dependency check fails we can still
/// vectorize the loop with a dynamic array access check.
- bool shouldRetryWithRuntimeCheck() { return ShouldRetryWithRuntimeCheck; }
+ bool shouldRetryWithRuntimeCheck() const {
+ return FoundNonConstantDistanceDependence &&
+ Status == VectorizationSafetyStatus::PossiblySafeWithRtChecks;
+ }
/// Returns the memory dependences. If null is returned we exceeded
/// the MaxDependences threshold and this information is not
@@ -267,11 +284,12 @@
/// If we see a non-constant dependence distance we can still try to
/// vectorize this loop with runtime checks.
- bool ShouldRetryWithRuntimeCheck;
+ bool FoundNonConstantDistanceDependence;
- /// No memory dependence was encountered that would inhibit
- /// vectorization.
- bool SafeForVectorization;
+ /// Result of the dependence checks, indicating whether the checked
+ /// dependences are safe for vectorization, require RT checks or are known to
+ /// be unsafe.
+ VectorizationSafetyStatus Status;
//// True if Dependences reflects the dependences in the
//// loop. If false we exceeded MaxDependences and
@@ -304,6 +322,11 @@
/// \return false if we shouldn't vectorize at all or avoid larger
/// vectorization factors by limiting MaxSafeDepDistBytes.
bool couldPreventStoreLoadForward(uint64_t Distance, uint64_t TypeByteSize);
+
+ /// Updates the current safety status with \p S. We can go from Safe to
+ /// either PossiblySafeWithRtChecks or Unsafe and from
+ /// PossiblySafeWithRtChecks to Unsafe.
+ void mergeInStatus(VectorizationSafetyStatus S);
};
/// Holds information about the memory runtime legality checks to verify
@@ -564,10 +587,10 @@
/// Print the information about the memory accesses in the loop.
void print(raw_ostream &OS, unsigned Depth = 0) const;
- /// If the loop has any store of a variant value to an invariant address, then
- /// return true, else return false.
- bool hasVariantStoreToLoopInvariantAddress() const {
- return HasVariantStoreToLoopInvariantAddress;
+ /// If the loop has memory dependence involving an invariant address, i.e. two
+ /// stores or a store and a load, then return true, else return false.
+ bool hasDependenceInvolvingLoopInvariantAddress() const {
+ return HasDependenceInvolvingLoopInvariantAddress;
}
/// Used to add runtime SCEV checks. Simplifies SCEV expressions and converts
@@ -620,8 +643,8 @@
/// Cache the result of analyzeLoop.
bool CanVecMem;
- /// Indicator that there is a store of a variant value to a uniform address.
- bool HasVariantStoreToLoopInvariantAddress;
+ /// Indicator that there are non vectorizable stores to a uniform address.
+ bool HasDependenceInvolvingLoopInvariantAddress;
/// The diagnostics report generated for the analysis. E.g. why we
/// couldn't analyze the loop.
diff --git a/linux-x64/clang/include/llvm/Analysis/LoopAnalysisManager.h b/linux-x64/clang/include/llvm/Analysis/LoopAnalysisManager.h
index 00e562c..b87d981 100644
--- a/linux-x64/clang/include/llvm/Analysis/LoopAnalysisManager.h
+++ b/linux-x64/clang/include/llvm/Analysis/LoopAnalysisManager.h
@@ -1,9 +1,8 @@
//===- LoopAnalysisManager.h - Loop analysis management ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Analysis/LoopInfo.h b/linux-x64/clang/include/llvm/Analysis/LoopInfo.h
index 30b29d6..0899630 100644
--- a/linux-x64/clang/include/llvm/Analysis/LoopInfo.h
+++ b/linux-x64/clang/include/llvm/Analysis/LoopInfo.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/LoopInfo.h - Natural Loop Calculator -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -408,6 +407,12 @@
/// Verify loop structure of this loop and all nested loops.
void verifyLoopNest(DenseSet<const LoopT *> *Loops) const;
+ /// Returns true if the loop is annotated parallel.
+ ///
+ /// Derived classes can override this method using static template
+ /// polymorphism.
+ bool isAnnotatedParallel() const { return false; }
+
/// Print loop with all the BBs inside it.
void print(raw_ostream &OS, unsigned Depth = 0, bool Verbose = false) const;
@@ -989,6 +994,46 @@
/// Function to print a loop's contents as LLVM's text IR assembly.
void printLoop(Loop &L, raw_ostream &OS, const std::string &Banner = "");
+/// Find and return the loop attribute node for the attribute @p Name in
+/// @p LoopID. Return nullptr if there is no such attribute.
+MDNode *findOptionMDForLoopID(MDNode *LoopID, StringRef Name);
+
+/// Find string metadata for a loop.
+///
+/// Returns the MDNode where the first operand is the metadata's name. The
+/// following operands are the metadata's values. If no metadata with @p Name is
+/// found, return nullptr.
+MDNode *findOptionMDForLoop(const Loop *TheLoop, StringRef Name);
+
+/// Return whether an MDNode might represent an access group.
+///
+/// Access group metadata nodes have to be distinct and empty. Being
+/// always-empty ensures that it never needs to be changed (which -- because
+/// MDNodes are designed immutable -- would require creating a new MDNode). Note
+/// that this is not a sufficient condition: not every distinct and empty NDNode
+/// is representing an access group.
+bool isValidAsAccessGroup(MDNode *AccGroup);
+
+/// Create a new LoopID after the loop has been transformed.
+///
+/// This can be used when no follow-up loop attributes are defined
+/// (llvm::makeFollowupLoopID returning None) to stop transformations to be
+/// applied again.
+///
+/// @param Context The LLVMContext in which to create the new LoopID.
+/// @param OrigLoopID The original LoopID; can be nullptr if the original
+/// loop has no LoopID.
+/// @param RemovePrefixes Remove all loop attributes that have these prefixes.
+/// Use to remove metadata of the transformation that has
+/// been applied.
+/// @param AddAttrs Add these loop attributes to the new LoopID.
+///
+/// @return A new LoopID that can be applied using Loop::setLoopID().
+llvm::MDNode *
+makePostTransformationMetadata(llvm::LLVMContext &Context, MDNode *OrigLoopID,
+ llvm::ArrayRef<llvm::StringRef> RemovePrefixes,
+ llvm::ArrayRef<llvm::MDNode *> AddAttrs);
+
} // End llvm namespace
#endif
diff --git a/linux-x64/clang/include/llvm/Analysis/LoopInfoImpl.h b/linux-x64/clang/include/llvm/Analysis/LoopInfoImpl.h
index d3054b7..ad42508 100644
--- a/linux-x64/clang/include/llvm/Analysis/LoopInfoImpl.h
+++ b/linux-x64/clang/include/llvm/Analysis/LoopInfoImpl.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/LoopInfoImpl.h - Natural Loop Calculator ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -392,7 +391,10 @@
template <class BlockT, class LoopT>
void LoopBase<BlockT, LoopT>::print(raw_ostream &OS, unsigned Depth,
bool Verbose) const {
- OS.indent(Depth * 2) << "Loop at depth " << getLoopDepth() << " containing: ";
+ OS.indent(Depth * 2);
+ if (static_cast<const LoopT *>(this)->isAnnotatedParallel())
+ OS << "Parallel ";
+ OS << "Loop at depth " << getLoopDepth() << " containing: ";
BlockT *H = getHeader();
for (unsigned i = 0; i < getBlocks().size(); ++i) {
diff --git a/linux-x64/clang/include/llvm/Analysis/LoopIterator.h b/linux-x64/clang/include/llvm/Analysis/LoopIterator.h
index 91c54b2..fa4da42 100644
--- a/linux-x64/clang/include/llvm/Analysis/LoopIterator.h
+++ b/linux-x64/clang/include/llvm/Analysis/LoopIterator.h
@@ -1,9 +1,8 @@
//===--------- LoopIterator.h - Iterate over loop blocks --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// This file defines iterators to visit the basic blocks within a loop.
diff --git a/linux-x64/clang/include/llvm/Analysis/LoopPass.h b/linux-x64/clang/include/llvm/Analysis/LoopPass.h
index 86cfecd..9215ab3 100644
--- a/linux-x64/clang/include/llvm/Analysis/LoopPass.h
+++ b/linux-x64/clang/include/llvm/Analysis/LoopPass.h
@@ -1,9 +1,8 @@
//===- LoopPass.h - LoopPass class ----------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/LoopUnrollAnalyzer.h b/linux-x64/clang/include/llvm/Analysis/LoopUnrollAnalyzer.h
index f45bf0b..5f332e3 100644
--- a/linux-x64/clang/include/llvm/Analysis/LoopUnrollAnalyzer.h
+++ b/linux-x64/clang/include/llvm/Analysis/LoopUnrollAnalyzer.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/LoopUnrollAnalyzer.h - Loop Unroll Analyzer-*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/MemoryBuiltins.h b/linux-x64/clang/include/llvm/Analysis/MemoryBuiltins.h
index 5418128..49b87a4 100644
--- a/linux-x64/clang/include/llvm/Analysis/MemoryBuiltins.h
+++ b/linux-x64/clang/include/llvm/Analysis/MemoryBuiltins.h
@@ -1,9 +1,8 @@
//==- llvm/Analysis/MemoryBuiltins.h - Calls to memory builtins --*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -178,14 +177,13 @@
const TargetLibraryInfo *TLI, ObjectSizeOpts Opts = {});
/// Try to turn a call to \@llvm.objectsize into an integer value of the given
-/// Type. Returns null on failure.
-/// If MustSucceed is true, this function will not return null, and may return
-/// conservative values governed by the second argument of the call to
-/// objectsize.
-ConstantInt *lowerObjectSizeCall(IntrinsicInst *ObjectSize,
- const DataLayout &DL,
- const TargetLibraryInfo *TLI,
- bool MustSucceed);
+/// Type. Returns null on failure. If MustSucceed is true, this function will
+/// not return null, and may return conservative values governed by the second
+/// argument of the call to objectsize.
+Value *lowerObjectSizeCall(IntrinsicInst *ObjectSize, const DataLayout &DL,
+ const TargetLibraryInfo *TLI, bool MustSucceed);
+
+
using SizeOffsetType = std::pair<APInt, APInt>;
@@ -265,17 +263,17 @@
Value *Zero;
CacheMapTy CacheMap;
PtrSetTy SeenVals;
- bool RoundToAlign;
-
- SizeOffsetEvalType unknown() {
- return std::make_pair(nullptr, nullptr);
- }
+ ObjectSizeOpts EvalOpts;
SizeOffsetEvalType compute_(Value *V);
public:
+ static SizeOffsetEvalType unknown() {
+ return std::make_pair(nullptr, nullptr);
+ }
+
ObjectSizeOffsetEvaluator(const DataLayout &DL, const TargetLibraryInfo *TLI,
- LLVMContext &Context, bool RoundToAlign = false);
+ LLVMContext &Context, ObjectSizeOpts EvalOpts = {});
SizeOffsetEvalType compute(Value *V);
diff --git a/linux-x64/clang/include/llvm/Analysis/MemoryDependenceAnalysis.h b/linux-x64/clang/include/llvm/Analysis/MemoryDependenceAnalysis.h
index 1c40cff..de57499 100644
--- a/linux-x64/clang/include/llvm/Analysis/MemoryDependenceAnalysis.h
+++ b/linux-x64/clang/include/llvm/Analysis/MemoryDependenceAnalysis.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/MemoryDependenceAnalysis.h - Memory Deps ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -37,7 +36,6 @@
namespace llvm {
class AssumptionCache;
-class CallSite;
class DominatorTree;
class Function;
class Instruction;
@@ -304,7 +302,7 @@
/// The maximum size of the dereferences of the pointer.
///
/// May be UnknownSize if the sizes are unknown.
- LocationSize Size = MemoryLocation::UnknownSize;
+ LocationSize Size = LocationSize::unknown();
/// The AA tags associated with dereferences of the pointer.
///
/// The members may be null if there are no tags or conflicting tags.
@@ -398,7 +396,7 @@
/// invalidated on the next non-local query or when an instruction is
/// removed. Clients must copy this data if they want it around longer than
/// that.
- const NonLocalDepInfo &getNonLocalCallDependency(CallSite QueryCS);
+ const NonLocalDepInfo &getNonLocalCallDependency(CallBase *QueryCall);
/// Perform a full dependency query for an access to the QueryInst's
/// specified memory location, returning the set of instructions that either
@@ -482,9 +480,9 @@
void releaseMemory();
private:
- MemDepResult getCallSiteDependencyFrom(CallSite C, bool isReadOnlyCall,
- BasicBlock::iterator ScanIt,
- BasicBlock *BB);
+ MemDepResult getCallDependencyFrom(CallBase *Call, bool isReadOnlyCall,
+ BasicBlock::iterator ScanIt,
+ BasicBlock *BB);
bool getNonLocalPointerDepFromBB(Instruction *QueryInst,
const PHITransAddr &Pointer,
const MemoryLocation &Loc, bool isLoad,
diff --git a/linux-x64/clang/include/llvm/Analysis/MemoryLocation.h b/linux-x64/clang/include/llvm/Analysis/MemoryLocation.h
index 509efa2..7c26353 100644
--- a/linux-x64/clang/include/llvm/Analysis/MemoryLocation.h
+++ b/linux-x64/clang/include/llvm/Analysis/MemoryLocation.h
@@ -1,9 +1,8 @@
//===- MemoryLocation.h - Memory location descriptions ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -16,9 +15,9 @@
#ifndef LLVM_ANALYSIS_MEMORYLOCATION_H
#define LLVM_ANALYSIS_MEMORYLOCATION_H
-#include "llvm/ADT/Optional.h"
#include "llvm/ADT/DenseMapInfo.h"
-#include "llvm/IR/CallSite.h"
+#include "llvm/ADT/Optional.h"
+#include "llvm/IR/Instructions.h"
#include "llvm/IR/Metadata.h"
namespace llvm {
@@ -135,6 +134,9 @@
return (Value & ImpreciseBit) == 0;
}
+ // Convenience method to check if this LocationSize's value is 0.
+ bool isZero() const { return hasValue() && getValue() == 0; }
+
bool operator==(const LocationSize &Other) const {
return Value == Other.Value;
}
@@ -231,15 +233,15 @@
static MemoryLocation getForDest(const AnyMemIntrinsic *MI);
/// Return a location representing a particular argument of a call.
- static MemoryLocation getForArgument(ImmutableCallSite CS, unsigned ArgIdx,
+ static MemoryLocation getForArgument(const CallBase *Call, unsigned ArgIdx,
const TargetLibraryInfo *TLI);
- static MemoryLocation getForArgument(ImmutableCallSite CS, unsigned ArgIdx,
+ static MemoryLocation getForArgument(const CallBase *Call, unsigned ArgIdx,
const TargetLibraryInfo &TLI) {
- return getForArgument(CS, ArgIdx, &TLI);
+ return getForArgument(Call, ArgIdx, &TLI);
}
explicit MemoryLocation(const Value *Ptr = nullptr,
- LocationSize Size = UnknownSize,
+ LocationSize Size = LocationSize::unknown(),
const AAMDNodes &AATags = AAMDNodes())
: Ptr(Ptr), Size(Size), AATags(AATags) {}
diff --git a/linux-x64/clang/include/llvm/Analysis/MemorySSA.h b/linux-x64/clang/include/llvm/Analysis/MemorySSA.h
index 6200837..fa92fd3 100644
--- a/linux-x64/clang/include/llvm/Analysis/MemorySSA.h
+++ b/linux-x64/clang/include/llvm/Analysis/MemorySSA.h
@@ -1,9 +1,8 @@
//===- MemorySSA.h - Build Memory SSA ---------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -404,6 +403,7 @@
void resetOptimized() {
OptimizedID = INVALID_MEMORYACCESS_ID;
+ setOperand(1, nullptr);
}
void print(raw_ostream &OS) const;
@@ -703,6 +703,7 @@
~MemorySSA();
MemorySSAWalker *getWalker();
+ MemorySSAWalker *getSkipSelfWalker();
/// Given a memory Mod/Ref'ing instruction, get the MemorySSA
/// access associated with it. If passed a basic block gets the memory phi
@@ -774,9 +775,6 @@
/// all uses, uses appear in the right places). This is used by unit tests.
void verifyMemorySSA() const;
- /// Check clobber sanity for an access.
- void checkClobberSanityAccess(const MemoryAccess *MA) const;
-
/// Used in various insertion functions to specify whether we are talking
/// about the beginning or end of a block.
enum InsertionPlace { Beginning, End };
@@ -791,7 +789,6 @@
void verifyDomination(Function &F) const;
void verifyOrdering(Function &F) const;
void verifyDominationNumbers(const Function &F) const;
- void verifyClobberSanity(const Function &F) const;
// This is used by the use optimizer and updater.
AccessList *getWritableBlockAccesses(const BasicBlock *BB) const {
@@ -828,7 +825,9 @@
const MemoryUseOrDef *Template = nullptr);
private:
+ class ClobberWalkerBase;
class CachingWalker;
+ class SkipSelfWalker;
class OptimizeUses;
CachingWalker *getWalkerImpl();
@@ -882,7 +881,9 @@
mutable DenseMap<const MemoryAccess *, unsigned long> BlockNumbering;
// Memory SSA building info
+ std::unique_ptr<ClobberWalkerBase> WalkerBase;
std::unique_ptr<CachingWalker> Walker;
+ std::unique_ptr<SkipSelfWalker> SkipWalker;
unsigned NextID;
};
diff --git a/linux-x64/clang/include/llvm/Analysis/MemorySSAUpdater.h b/linux-x64/clang/include/llvm/Analysis/MemorySSAUpdater.h
index 098876e..58cf1cc 100644
--- a/linux-x64/clang/include/llvm/Analysis/MemorySSAUpdater.h
+++ b/linux-x64/clang/include/llvm/Analysis/MemorySSAUpdater.h
@@ -1,9 +1,8 @@
//===- MemorySSAUpdater.h - Memory SSA Updater-------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -35,6 +34,7 @@
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
+#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/LoopIterator.h"
#include "llvm/Analysis/MemorySSA.h"
#include "llvm/IR/BasicBlock.h"
@@ -221,14 +221,14 @@
/// associated with it is erased from the program. For example, if a store or
/// load is simply erased (not replaced), removeMemoryAccess should be called
/// on the MemoryAccess for that store/load.
- void removeMemoryAccess(MemoryAccess *);
+ void removeMemoryAccess(MemoryAccess *, bool OptimizePhis = false);
/// Remove MemoryAccess for a given instruction, if a MemoryAccess exists.
/// This should be called when an instruction (load/store) is deleted from
/// the program.
- void removeMemoryAccess(const Instruction *I) {
+ void removeMemoryAccess(const Instruction *I, bool OptimizePhis = false) {
if (MemoryAccess *MA = MSSA->getMemoryAccess(I))
- removeMemoryAccess(MA);
+ removeMemoryAccess(MA, OptimizePhis);
}
/// Remove all MemoryAcceses in a set of BasicBlocks about to be deleted.
diff --git a/linux-x64/clang/include/llvm/Analysis/ModuleSummaryAnalysis.h b/linux-x64/clang/include/llvm/Analysis/ModuleSummaryAnalysis.h
index 9af7859..1572a49 100644
--- a/linux-x64/clang/include/llvm/Analysis/ModuleSummaryAnalysis.h
+++ b/linux-x64/clang/include/llvm/Analysis/ModuleSummaryAnalysis.h
@@ -1,9 +1,8 @@
//===- ModuleSummaryAnalysis.h - Module summary index builder ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Analysis/MustExecute.h b/linux-x64/clang/include/llvm/Analysis/MustExecute.h
index 40a0273..3ef539c 100644
--- a/linux-x64/clang/include/llvm/Analysis/MustExecute.h
+++ b/linux-x64/clang/include/llvm/Analysis/MustExecute.h
@@ -1,9 +1,8 @@
//===- MustExecute.h - Is an instruction known to execute--------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -19,6 +18,7 @@
#include "llvm/ADT/DenseMap.h"
#include "llvm/Analysis/EHPersonalities.h"
+#include "llvm/Analysis/InstructionPrecedenceTracking.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Dominators.h"
@@ -45,33 +45,30 @@
/// loop were made and the info wasn't recomputed properly, the behavior of all
/// methods except for computeLoopSafetyInfo is undefined.
class LoopSafetyInfo {
- bool MayThrow = false; // The current loop contains an instruction which
- // may throw.
- bool HeaderMayThrow = false; // Same as previous, but specific to loop header
-
- /// Collect all blocks from \p CurLoop which lie on all possible paths from
- /// the header of \p CurLoop (inclusive) to BB (exclusive) into the set
- /// \p Predecessors. If \p BB is the header, \p Predecessors will be empty.
- void collectTransitivePredecessors(
- const Loop *CurLoop, const BasicBlock *BB,
- SmallPtrSetImpl<const BasicBlock *> &Predecessors) const;
-
-public:
// Used to update funclet bundle operands.
DenseMap<BasicBlock *, ColorVector> BlockColors;
- /// Returns true iff the header block of the loop for which this info is
- /// calculated contains an instruction that may throw or otherwise exit
- /// abnormally.
- bool headerMayThrow() const;
+protected:
+ /// Computes block colors.
+ void computeBlockColors(const Loop *CurLoop);
+
+public:
+ /// Returns block colors map that is used to update funclet operand bundles.
+ const DenseMap<BasicBlock *, ColorVector> &getBlockColors() const;
+
+ /// Copy colors of block \p Old into the block \p New.
+ void copyColors(BasicBlock *New, BasicBlock *Old);
+
+ /// Returns true iff the block \p BB potentially may throw exception. It can
+ /// be false-positive in cases when we want to avoid complex analysis.
+ virtual bool blockMayThrow(const BasicBlock *BB) const = 0;
/// Returns true iff any block of the loop for which this info is contains an
/// instruction that may throw or otherwise exit abnormally.
- bool anyBlockMayThrow() const;
+ virtual bool anyBlockMayThrow() const = 0;
/// Return true if we must reach the block \p BB under assumption that the
- /// loop \p CurLoop is entered and no instruction throws or otherwise exits
- /// abnormally.
+ /// loop \p CurLoop is entered.
bool allLoopPathsLeadToBlock(const Loop *CurLoop, const BasicBlock *BB,
const DominatorTree *DT) const;
@@ -80,16 +77,92 @@
/// as argument. Updates safety information in LoopSafetyInfo argument.
/// Note: This is defined to clear and reinitialize an already initialized
/// LoopSafetyInfo. Some callers rely on this fact.
- void computeLoopSafetyInfo(Loop *);
+ virtual void computeLoopSafetyInfo(const Loop *CurLoop) = 0;
+
+ /// Returns true if the instruction in a loop is guaranteed to execute at
+ /// least once (under the assumption that the loop is entered).
+ virtual bool isGuaranteedToExecute(const Instruction &Inst,
+ const DominatorTree *DT,
+ const Loop *CurLoop) const = 0;
LoopSafetyInfo() = default;
+
+ virtual ~LoopSafetyInfo() = default;
};
-/// Returns true if the instruction in a loop is guaranteed to execute at least
-/// once (under the assumption that the loop is entered).
-bool isGuaranteedToExecute(const Instruction &Inst, const DominatorTree *DT,
- const Loop *CurLoop,
- const LoopSafetyInfo *SafetyInfo);
+
+/// Simple and conservative implementation of LoopSafetyInfo that can give
+/// false-positive answers to its queries in order to avoid complicated
+/// analysis.
+class SimpleLoopSafetyInfo: public LoopSafetyInfo {
+ bool MayThrow = false; // The current loop contains an instruction which
+ // may throw.
+ bool HeaderMayThrow = false; // Same as previous, but specific to loop header
+
+public:
+ virtual bool blockMayThrow(const BasicBlock *BB) const;
+
+ virtual bool anyBlockMayThrow() const;
+
+ virtual void computeLoopSafetyInfo(const Loop *CurLoop);
+
+ virtual bool isGuaranteedToExecute(const Instruction &Inst,
+ const DominatorTree *DT,
+ const Loop *CurLoop) const;
+
+ SimpleLoopSafetyInfo() : LoopSafetyInfo() {};
+
+ virtual ~SimpleLoopSafetyInfo() {};
+};
+
+/// This implementation of LoopSafetyInfo use ImplicitControlFlowTracking to
+/// give precise answers on "may throw" queries. This implementation uses cache
+/// that should be invalidated by calling the methods insertInstructionTo and
+/// removeInstruction whenever we modify a basic block's contents by adding or
+/// removing instructions.
+class ICFLoopSafetyInfo: public LoopSafetyInfo {
+ bool MayThrow = false; // The current loop contains an instruction which
+ // may throw.
+ // Contains information about implicit control flow in this loop's blocks.
+ mutable ImplicitControlFlowTracking ICF;
+ // Contains information about instruction that may possibly write memory.
+ mutable MemoryWriteTracking MW;
+
+public:
+ virtual bool blockMayThrow(const BasicBlock *BB) const;
+
+ virtual bool anyBlockMayThrow() const;
+
+ virtual void computeLoopSafetyInfo(const Loop *CurLoop);
+
+ virtual bool isGuaranteedToExecute(const Instruction &Inst,
+ const DominatorTree *DT,
+ const Loop *CurLoop) const;
+
+ /// Returns true if we could not execute a memory-modifying instruction before
+ /// we enter \p BB under assumption that \p CurLoop is entered.
+ bool doesNotWriteMemoryBefore(const BasicBlock *BB, const Loop *CurLoop)
+ const;
+
+ /// Returns true if we could not execute a memory-modifying instruction before
+ /// we execute \p I under assumption that \p CurLoop is entered.
+ bool doesNotWriteMemoryBefore(const Instruction &I, const Loop *CurLoop)
+ const;
+
+ /// Inform the safety info that we are planning to insert a new instruction
+ /// \p Inst into the basic block \p BB. It will make all cache updates to keep
+ /// it correct after this insertion.
+ void insertInstructionTo(const Instruction *Inst, const BasicBlock *BB);
+
+ /// Inform safety info that we are planning to remove the instruction \p Inst
+ /// from its block. It will make all cache updates to keep it correct after
+ /// this removal.
+ void removeInstruction(const Instruction *Inst);
+
+ ICFLoopSafetyInfo(DominatorTree *DT) : LoopSafetyInfo(), ICF(DT), MW(DT) {};
+
+ virtual ~ICFLoopSafetyInfo() {};
+};
}
diff --git a/linux-x64/clang/include/llvm/Analysis/ObjCARCAliasAnalysis.h b/linux-x64/clang/include/llvm/Analysis/ObjCARCAliasAnalysis.h
index 559c77c..ed15472 100644
--- a/linux-x64/clang/include/llvm/Analysis/ObjCARCAliasAnalysis.h
+++ b/linux-x64/clang/include/llvm/Analysis/ObjCARCAliasAnalysis.h
@@ -1,9 +1,8 @@
//===- ObjCARCAliasAnalysis.h - ObjC ARC Alias Analysis ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -60,7 +59,7 @@
FunctionModRefBehavior getModRefBehavior(const Function *F);
using AAResultBase::getModRefInfo;
- ModRefInfo getModRefInfo(ImmutableCallSite CS, const MemoryLocation &Loc);
+ ModRefInfo getModRefInfo(const CallBase *Call, const MemoryLocation &Loc);
};
/// Analysis pass providing a never-invalidated alias analysis result.
diff --git a/linux-x64/clang/include/llvm/Analysis/ObjCARCAnalysisUtils.h b/linux-x64/clang/include/llvm/Analysis/ObjCARCAnalysisUtils.h
index 07beb0b..522abd7 100644
--- a/linux-x64/clang/include/llvm/Analysis/ObjCARCAnalysisUtils.h
+++ b/linux-x64/clang/include/llvm/Analysis/ObjCARCAnalysisUtils.h
@@ -1,9 +1,8 @@
//===- ObjCARCAnalysisUtils.h - ObjC ARC Analysis Utilities -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -51,25 +50,25 @@
/// on.
inline bool ModuleHasARC(const Module &M) {
return
- M.getNamedValue("objc_retain") ||
- M.getNamedValue("objc_release") ||
- M.getNamedValue("objc_autorelease") ||
- M.getNamedValue("objc_retainAutoreleasedReturnValue") ||
- M.getNamedValue("objc_unsafeClaimAutoreleasedReturnValue") ||
- M.getNamedValue("objc_retainBlock") ||
- M.getNamedValue("objc_autoreleaseReturnValue") ||
- M.getNamedValue("objc_autoreleasePoolPush") ||
- M.getNamedValue("objc_loadWeakRetained") ||
- M.getNamedValue("objc_loadWeak") ||
- M.getNamedValue("objc_destroyWeak") ||
- M.getNamedValue("objc_storeWeak") ||
- M.getNamedValue("objc_initWeak") ||
- M.getNamedValue("objc_moveWeak") ||
- M.getNamedValue("objc_copyWeak") ||
- M.getNamedValue("objc_retainedObject") ||
- M.getNamedValue("objc_unretainedObject") ||
- M.getNamedValue("objc_unretainedPointer") ||
- M.getNamedValue("clang.arc.use");
+ M.getNamedValue("llvm.objc.retain") ||
+ M.getNamedValue("llvm.objc.release") ||
+ M.getNamedValue("llvm.objc.autorelease") ||
+ M.getNamedValue("llvm.objc.retainAutoreleasedReturnValue") ||
+ M.getNamedValue("llvm.objc.unsafeClaimAutoreleasedReturnValue") ||
+ M.getNamedValue("llvm.objc.retainBlock") ||
+ M.getNamedValue("llvm.objc.autoreleaseReturnValue") ||
+ M.getNamedValue("llvm.objc.autoreleasePoolPush") ||
+ M.getNamedValue("llvm.objc.loadWeakRetained") ||
+ M.getNamedValue("llvm.objc.loadWeak") ||
+ M.getNamedValue("llvm.objc.destroyWeak") ||
+ M.getNamedValue("llvm.objc.storeWeak") ||
+ M.getNamedValue("llvm.objc.initWeak") ||
+ M.getNamedValue("llvm.objc.moveWeak") ||
+ M.getNamedValue("llvm.objc.copyWeak") ||
+ M.getNamedValue("llvm.objc.retainedObject") ||
+ M.getNamedValue("llvm.objc.unretainedObject") ||
+ M.getNamedValue("llvm.objc.unretainedPointer") ||
+ M.getNamedValue("llvm.objc.clang.arc.use");
}
/// This is a wrapper around getUnderlyingObject which also knows how to
diff --git a/linux-x64/clang/include/llvm/Analysis/ObjCARCInstKind.h b/linux-x64/clang/include/llvm/Analysis/ObjCARCInstKind.h
index 0b92d8b..9890d5f 100644
--- a/linux-x64/clang/include/llvm/Analysis/ObjCARCInstKind.h
+++ b/linux-x64/clang/include/llvm/Analysis/ObjCARCInstKind.h
@@ -1,9 +1,8 @@
//===- ObjCARCInstKind.h - ARC instruction equivalence classes --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -11,6 +10,7 @@
#define LLVM_ANALYSIS_OBJCARCINSTKIND_H
#include "llvm/IR/Function.h"
+#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/Instructions.h"
namespace llvm {
@@ -48,7 +48,7 @@
CopyWeak, ///< objc_copyWeak (derived)
DestroyWeak, ///< objc_destroyWeak (derived)
StoreStrong, ///< objc_storeStrong (derived)
- IntrinsicUser, ///< clang.arc.use
+ IntrinsicUser, ///< llvm.objc.clang.arc.use
CallOrUser, ///< could call objc_release and/or "use" pointers
Call, ///< could call objc_release
User, ///< could "use" a pointer
diff --git a/linux-x64/clang/include/llvm/Analysis/OptimizationRemarkEmitter.h b/linux-x64/clang/include/llvm/Analysis/OptimizationRemarkEmitter.h
index fa83869..a2b2955 100644
--- a/linux-x64/clang/include/llvm/Analysis/OptimizationRemarkEmitter.h
+++ b/linux-x64/clang/include/llvm/Analysis/OptimizationRemarkEmitter.h
@@ -1,9 +1,8 @@
//===- OptimizationRemarkEmitter.h - Optimization Diagnostic ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/OrderedBasicBlock.h b/linux-x64/clang/include/llvm/Analysis/OrderedBasicBlock.h
index 0776aa6..6823f68 100644
--- a/linux-x64/clang/include/llvm/Analysis/OrderedBasicBlock.h
+++ b/linux-x64/clang/include/llvm/Analysis/OrderedBasicBlock.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/OrderedBasicBlock.h --------------------- -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/OrderedInstructions.h b/linux-x64/clang/include/llvm/Analysis/OrderedInstructions.h
index 7e3850b..967b146 100644
--- a/linux-x64/clang/include/llvm/Analysis/OrderedInstructions.h
+++ b/linux-x64/clang/include/llvm/Analysis/OrderedInstructions.h
@@ -1,9 +1,8 @@
//===- llvm/Transforms/Utils/OrderedInstructions.h -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/PHITransAddr.h b/linux-x64/clang/include/llvm/Analysis/PHITransAddr.h
index 0a335b6..54a07f0 100644
--- a/linux-x64/clang/include/llvm/Analysis/PHITransAddr.h
+++ b/linux-x64/clang/include/llvm/Analysis/PHITransAddr.h
@@ -1,9 +1,8 @@
//===- PHITransAddr.h - PHI Translation for Addresses -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/Passes.h b/linux-x64/clang/include/llvm/Analysis/Passes.h
index 081dd50..d9c97df 100644
--- a/linux-x64/clang/include/llvm/Analysis/Passes.h
+++ b/linux-x64/clang/include/llvm/Analysis/Passes.h
@@ -1,9 +1,8 @@
//===-- llvm/Analysis/Passes.h - Constructors for analyses ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/PhiValues.h b/linux-x64/clang/include/llvm/Analysis/PhiValues.h
index 76204ac..124fa21 100644
--- a/linux-x64/clang/include/llvm/Analysis/PhiValues.h
+++ b/linux-x64/clang/include/llvm/Analysis/PhiValues.h
@@ -1,9 +1,8 @@
//===- PhiValues.h - Phi Value Analysis -------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/PostDominators.h b/linux-x64/clang/include/llvm/Analysis/PostDominators.h
index f2dc8d1..87d2e03 100644
--- a/linux-x64/clang/include/llvm/Analysis/PostDominators.h
+++ b/linux-x64/clang/include/llvm/Analysis/PostDominators.h
@@ -1,9 +1,8 @@
//=- llvm/Analysis/PostDominators.h - Post Dominator Calculation --*- C++ -*-=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/ProfileSummaryInfo.h b/linux-x64/clang/include/llvm/Analysis/ProfileSummaryInfo.h
index 58b67e7..636b5d6 100644
--- a/linux-x64/clang/include/llvm/Analysis/ProfileSummaryInfo.h
+++ b/linux-x64/clang/include/llvm/Analysis/ProfileSummaryInfo.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/ProfileSummaryInfo.h - profile summary ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -98,14 +97,14 @@
bool isFunctionEntryCold(const Function *F);
/// Returns true if \p F contains only cold code.
bool isFunctionColdInCallGraph(const Function *F, BlockFrequencyInfo &BFI);
- /// Returns true if \p F is a hot function.
+ /// Returns true if count \p C is considered hot.
bool isHotCount(uint64_t C);
/// Returns true if count \p C is considered cold.
bool isColdCount(uint64_t C);
- /// Returns true if BasicBlock \p B is considered hot.
- bool isHotBB(const BasicBlock *B, BlockFrequencyInfo *BFI);
- /// Returns true if BasicBlock \p B is considered cold.
- bool isColdBB(const BasicBlock *B, BlockFrequencyInfo *BFI);
+ /// Returns true if BasicBlock \p BB is considered hot.
+ bool isHotBlock(const BasicBlock *BB, BlockFrequencyInfo *BFI);
+ /// Returns true if BasicBlock \p BB is considered cold.
+ bool isColdBlock(const BasicBlock *BB, BlockFrequencyInfo *BFI);
/// Returns true if CallSite \p CS is considered hot.
bool isHotCallSite(const CallSite &CS, BlockFrequencyInfo *BFI);
/// Returns true if Callsite \p CS is considered cold.
@@ -134,9 +133,8 @@
static char ID;
ProfileSummaryInfoWrapperPass();
- ProfileSummaryInfo *getPSI() {
- return &*PSI;
- }
+ ProfileSummaryInfo &getPSI() { return *PSI; }
+ const ProfileSummaryInfo &getPSI() const { return *PSI; }
bool doInitialization(Module &M) override;
bool doFinalization(Module &M) override;
diff --git a/linux-x64/clang/include/llvm/Analysis/PtrUseVisitor.h b/linux-x64/clang/include/llvm/Analysis/PtrUseVisitor.h
index b34b25c..dca8718 100644
--- a/linux-x64/clang/include/llvm/Analysis/PtrUseVisitor.h
+++ b/linux-x64/clang/include/llvm/Analysis/PtrUseVisitor.h
@@ -1,9 +1,8 @@
//===- PtrUseVisitor.h - InstVisitors over a pointers uses ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/RegionInfo.h b/linux-x64/clang/include/llvm/Analysis/RegionInfo.h
index 27f6cc1..8bcc3e8 100644
--- a/linux-x64/clang/include/llvm/Analysis/RegionInfo.h
+++ b/linux-x64/clang/include/llvm/Analysis/RegionInfo.h
@@ -1,9 +1,8 @@
//===- RegionInfo.h - SESE region analysis ----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/RegionInfoImpl.h b/linux-x64/clang/include/llvm/Analysis/RegionInfoImpl.h
index 5904214..c59c09d 100644
--- a/linux-x64/clang/include/llvm/Analysis/RegionInfoImpl.h
+++ b/linux-x64/clang/include/llvm/Analysis/RegionInfoImpl.h
@@ -1,9 +1,8 @@
//===- RegionInfoImpl.h - SESE region detection analysis --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// Detects single entry single exit regions in the control flow graph.
diff --git a/linux-x64/clang/include/llvm/Analysis/RegionIterator.h b/linux-x64/clang/include/llvm/Analysis/RegionIterator.h
index 4fd92fc..72bc5bb 100644
--- a/linux-x64/clang/include/llvm/Analysis/RegionIterator.h
+++ b/linux-x64/clang/include/llvm/Analysis/RegionIterator.h
@@ -1,9 +1,8 @@
//===- RegionIterator.h - Iterators to iteratate over Regions ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// This file defines the iterators to iterate over the elements of a Region.
diff --git a/linux-x64/clang/include/llvm/Analysis/RegionPass.h b/linux-x64/clang/include/llvm/Analysis/RegionPass.h
index b3da91c..5b1864a 100644
--- a/linux-x64/clang/include/llvm/Analysis/RegionPass.h
+++ b/linux-x64/clang/include/llvm/Analysis/RegionPass.h
@@ -1,9 +1,8 @@
//===- RegionPass.h - RegionPass class --------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/RegionPrinter.h b/linux-x64/clang/include/llvm/Analysis/RegionPrinter.h
index e132eae..154ac35 100644
--- a/linux-x64/clang/include/llvm/Analysis/RegionPrinter.h
+++ b/linux-x64/clang/include/llvm/Analysis/RegionPrinter.h
@@ -1,9 +1,8 @@
//===-- RegionPrinter.h - Region printer external interface -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/ScalarEvolution.h b/linux-x64/clang/include/llvm/Analysis/ScalarEvolution.h
index 89918e3..f3a0351 100644
--- a/linux-x64/clang/include/llvm/Analysis/ScalarEvolution.h
+++ b/linux-x64/clang/include/llvm/Analysis/ScalarEvolution.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/ScalarEvolution.h - Scalar Evolution -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -85,6 +84,9 @@
const unsigned short SCEVType;
protected:
+ // Estimated complexity of this node's expression tree size.
+ const unsigned short ExpressionSize;
+
/// This field is initialized to zero and may be used in subclasses to store
/// miscellaneous information.
unsigned short SubclassData = 0;
@@ -116,8 +118,9 @@
NoWrapMask = (1 << 3) - 1
};
- explicit SCEV(const FoldingSetNodeIDRef ID, unsigned SCEVTy)
- : FastID(ID), SCEVType(SCEVTy) {}
+ explicit SCEV(const FoldingSetNodeIDRef ID, unsigned SCEVTy,
+ unsigned short ExpressionSize)
+ : FastID(ID), SCEVType(SCEVTy), ExpressionSize(ExpressionSize) {}
SCEV(const SCEV &) = delete;
SCEV &operator=(const SCEV &) = delete;
@@ -138,6 +141,19 @@
/// Return true if the specified scev is negated, but not a constant.
bool isNonConstantNegative() const;
+ // Returns estimated size of the mathematical expression represented by this
+ // SCEV. The rules of its calculation are following:
+ // 1) Size of a SCEV without operands (like constants and SCEVUnknown) is 1;
+ // 2) Size SCEV with operands Op1, Op2, ..., OpN is calculated by formula:
+ // (1 + Size(Op1) + ... + Size(OpN)).
+ // This value gives us an estimation of time we need to traverse through this
+ // SCEV and all its operands recursively. We may use it to avoid performing
+ // heavy transformations on SCEVs of excessive size for sake of saving the
+ // compilation time.
+ unsigned short getExpressionSize() const {
+ return ExpressionSize;
+ }
+
/// Print out the internal representation of this scalar to the specified
/// stream. This should really only be used for debugging purposes.
void print(raw_ostream &OS) const;
@@ -1273,7 +1289,7 @@
using EdgeExitInfo = std::pair<BasicBlock *, ExitLimit>;
/// Initialize BackedgeTakenInfo from a list of exact exit counts.
- BackedgeTakenInfo(SmallVectorImpl<EdgeExitInfo> &&ExitCounts, bool Complete,
+ BackedgeTakenInfo(ArrayRef<EdgeExitInfo> ExitCounts, bool Complete,
const SCEV *MaxCount, bool MaxOrZero);
/// Test whether this BackedgeTakenInfo contains any computed information,
@@ -1826,13 +1842,17 @@
bool NoWrap);
/// Get add expr already created or create a new one.
- const SCEV *getOrCreateAddExpr(SmallVectorImpl<const SCEV *> &Ops,
+ const SCEV *getOrCreateAddExpr(ArrayRef<const SCEV *> Ops,
SCEV::NoWrapFlags Flags);
/// Get mul expr already created or create a new one.
- const SCEV *getOrCreateMulExpr(SmallVectorImpl<const SCEV *> &Ops,
+ const SCEV *getOrCreateMulExpr(ArrayRef<const SCEV *> Ops,
SCEV::NoWrapFlags Flags);
+ // Get addrec expr already created or create a new one.
+ const SCEV *getOrCreateAddRecExpr(ArrayRef<const SCEV *> Ops,
+ const Loop *L, SCEV::NoWrapFlags Flags);
+
/// Return x if \p Val is f(x) where f is a 1-1 function.
const SCEV *stripInjectiveFunctions(const SCEV *Val) const;
diff --git a/linux-x64/clang/include/llvm/Analysis/ScalarEvolutionAliasAnalysis.h b/linux-x64/clang/include/llvm/Analysis/ScalarEvolutionAliasAnalysis.h
index 329be51..d417850 100644
--- a/linux-x64/clang/include/llvm/Analysis/ScalarEvolutionAliasAnalysis.h
+++ b/linux-x64/clang/include/llvm/Analysis/ScalarEvolutionAliasAnalysis.h
@@ -1,9 +1,8 @@
//===- ScalarEvolutionAliasAnalysis.h - SCEV-based AA -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Analysis/ScalarEvolutionExpander.h b/linux-x64/clang/include/llvm/Analysis/ScalarEvolutionExpander.h
index 58d4268..a2c1258 100644
--- a/linux-x64/clang/include/llvm/Analysis/ScalarEvolutionExpander.h
+++ b/linux-x64/clang/include/llvm/Analysis/ScalarEvolutionExpander.h
@@ -1,9 +1,8 @@
//===---- llvm/Analysis/ScalarEvolutionExpander.h - SCEV Exprs --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/ScalarEvolutionExpressions.h b/linux-x64/clang/include/llvm/Analysis/ScalarEvolutionExpressions.h
index 42e7609..e187a96 100644
--- a/linux-x64/clang/include/llvm/Analysis/ScalarEvolutionExpressions.h
+++ b/linux-x64/clang/include/llvm/Analysis/ScalarEvolutionExpressions.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/ScalarEvolutionExpressions.h - SCEV Exprs --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -51,7 +50,7 @@
ConstantInt *V;
SCEVConstant(const FoldingSetNodeIDRef ID, ConstantInt *v) :
- SCEV(ID, scConstant), V(v) {}
+ SCEV(ID, scConstant, 1), V(v) {}
public:
ConstantInt *getValue() const { return V; }
@@ -65,6 +64,13 @@
}
};
+ static unsigned short computeExpressionSize(ArrayRef<const SCEV *> Args) {
+ APInt Size(16, 1);
+ for (auto *Arg : Args)
+ Size = Size.uadd_sat(APInt(16, Arg->getExpressionSize()));
+ return (unsigned short)Size.getZExtValue();
+ }
+
/// This is the base class for unary cast operator classes.
class SCEVCastExpr : public SCEV {
protected:
@@ -142,9 +148,10 @@
const SCEV *const *Operands;
size_t NumOperands;
- SCEVNAryExpr(const FoldingSetNodeIDRef ID,
- enum SCEVTypes T, const SCEV *const *O, size_t N)
- : SCEV(ID, T), Operands(O), NumOperands(N) {}
+ SCEVNAryExpr(const FoldingSetNodeIDRef ID, enum SCEVTypes T,
+ const SCEV *const *O, size_t N)
+ : SCEV(ID, T, computeExpressionSize(makeArrayRef(O, N))), Operands(O),
+ NumOperands(N) {}
public:
size_t getNumOperands() const { return NumOperands; }
@@ -258,7 +265,8 @@
const SCEV *RHS;
SCEVUDivExpr(const FoldingSetNodeIDRef ID, const SCEV *lhs, const SCEV *rhs)
- : SCEV(ID, scUDivExpr), LHS(lhs), RHS(rhs) {}
+ : SCEV(ID, scUDivExpr, computeExpressionSize({lhs, rhs})), LHS(lhs),
+ RHS(rhs) {}
public:
const SCEV *getLHS() const { return LHS; }
@@ -411,7 +419,7 @@
SCEVUnknown(const FoldingSetNodeIDRef ID, Value *V,
ScalarEvolution *se, SCEVUnknown *next) :
- SCEV(ID, scUnknown), CallbackVH(V), SE(se), Next(next) {}
+ SCEV(ID, scUnknown, 1), CallbackVH(V), SE(se), Next(next) {}
// Implement CallbackVH.
void deleted() override;
diff --git a/linux-x64/clang/include/llvm/Analysis/ScalarEvolutionNormalization.h b/linux-x64/clang/include/llvm/Analysis/ScalarEvolutionNormalization.h
index 51c9212..1a05594 100644
--- a/linux-x64/clang/include/llvm/Analysis/ScalarEvolutionNormalization.h
+++ b/linux-x64/clang/include/llvm/Analysis/ScalarEvolutionNormalization.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/ScalarEvolutionNormalization.h - See below -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/ScopedNoAliasAA.h b/linux-x64/clang/include/llvm/Analysis/ScopedNoAliasAA.h
index 508968e..94c6021 100644
--- a/linux-x64/clang/include/llvm/Analysis/ScopedNoAliasAA.h
+++ b/linux-x64/clang/include/llvm/Analysis/ScopedNoAliasAA.h
@@ -1,9 +1,8 @@
//===- ScopedNoAliasAA.h - Scoped No-Alias Alias Analysis -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -16,7 +15,7 @@
#define LLVM_ANALYSIS_SCOPEDNOALIASAA_H
#include "llvm/Analysis/AliasAnalysis.h"
-#include "llvm/IR/CallSite.h"
+#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/PassManager.h"
#include "llvm/Pass.h"
#include <memory>
@@ -41,8 +40,8 @@
}
AliasResult alias(const MemoryLocation &LocA, const MemoryLocation &LocB);
- ModRefInfo getModRefInfo(ImmutableCallSite CS, const MemoryLocation &Loc);
- ModRefInfo getModRefInfo(ImmutableCallSite CS1, ImmutableCallSite CS2);
+ ModRefInfo getModRefInfo(const CallBase *Call, const MemoryLocation &Loc);
+ ModRefInfo getModRefInfo(const CallBase *Call1, const CallBase *Call2);
private:
bool mayAliasInScopes(const MDNode *Scopes, const MDNode *NoAlias) const;
diff --git a/linux-x64/clang/include/llvm/Analysis/SparsePropagation.h b/linux-x64/clang/include/llvm/Analysis/SparsePropagation.h
index 04e94f7..fac92e4 100644
--- a/linux-x64/clang/include/llvm/Analysis/SparsePropagation.h
+++ b/linux-x64/clang/include/llvm/Analysis/SparsePropagation.h
@@ -1,9 +1,8 @@
//===- SparsePropagation.h - Sparse Conditional Property Propagation ------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -189,12 +188,12 @@
/// getFeasibleSuccessors - Return a vector of booleans to indicate which
/// successors are reachable from a given terminator instruction.
- void getFeasibleSuccessors(TerminatorInst &TI, SmallVectorImpl<bool> &Succs,
+ void getFeasibleSuccessors(Instruction &TI, SmallVectorImpl<bool> &Succs,
bool AggressiveUndef);
void visitInst(Instruction &I);
void visitPHINode(PHINode &I);
- void visitTerminatorInst(TerminatorInst &TI);
+ void visitTerminator(Instruction &TI);
};
//===----------------------------------------------------------------------===//
@@ -286,7 +285,7 @@
template <class LatticeKey, class LatticeVal, class KeyInfo>
void SparseSolver<LatticeKey, LatticeVal, KeyInfo>::getFeasibleSuccessors(
- TerminatorInst &TI, SmallVectorImpl<bool> &Succs, bool AggressiveUndef) {
+ Instruction &TI, SmallVectorImpl<bool> &Succs, bool AggressiveUndef) {
Succs.resize(TI.getNumSuccessors());
if (TI.getNumSuccessors() == 0)
return;
@@ -330,12 +329,8 @@
return;
}
- if (TI.isExceptionalTerminator()) {
- Succs.assign(Succs.size(), true);
- return;
- }
-
- if (isa<IndirectBrInst>(TI)) {
+ if (TI.isExceptionalTerminator() ||
+ TI.isIndirectTerminator()) {
Succs.assign(Succs.size(), true);
return;
}
@@ -374,7 +369,7 @@
bool SparseSolver<LatticeKey, LatticeVal, KeyInfo>::isEdgeFeasible(
BasicBlock *From, BasicBlock *To, bool AggressiveUndef) {
SmallVector<bool, 16> SuccFeasible;
- TerminatorInst *TI = From->getTerminator();
+ Instruction *TI = From->getTerminator();
getFeasibleSuccessors(*TI, SuccFeasible, AggressiveUndef);
for (unsigned i = 0, e = TI->getNumSuccessors(); i != e; ++i)
@@ -385,8 +380,8 @@
}
template <class LatticeKey, class LatticeVal, class KeyInfo>
-void SparseSolver<LatticeKey, LatticeVal, KeyInfo>::visitTerminatorInst(
- TerminatorInst &TI) {
+void SparseSolver<LatticeKey, LatticeVal, KeyInfo>::visitTerminator(
+ Instruction &TI) {
SmallVector<bool, 16> SuccFeasible;
getFeasibleSuccessors(TI, SuccFeasible, true);
@@ -465,8 +460,8 @@
if (ChangedValue.second != LatticeFunc->getUntrackedVal())
UpdateState(ChangedValue.first, ChangedValue.second);
- if (TerminatorInst *TI = dyn_cast<TerminatorInst>(&I))
- visitTerminatorInst(*TI);
+ if (I.isTerminator())
+ visitTerminator(I);
}
template <class LatticeKey, class LatticeVal, class KeyInfo>
diff --git a/linux-x64/clang/include/llvm/Analysis/StackSafetyAnalysis.h b/linux-x64/clang/include/llvm/Analysis/StackSafetyAnalysis.h
new file mode 100644
index 0000000..f9d8b08
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Analysis/StackSafetyAnalysis.h
@@ -0,0 +1,119 @@
+//===- StackSafetyAnalysis.h - Stack memory safety analysis -----*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// Stack Safety Analysis detects allocas and arguments with safe access.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_ANALYSIS_STACKSAFETYANALYSIS_H
+#define LLVM_ANALYSIS_STACKSAFETYANALYSIS_H
+
+#include "llvm/IR/PassManager.h"
+#include "llvm/Pass.h"
+
+namespace llvm {
+
+/// Interface to access stack safety analysis results for single function.
+class StackSafetyInfo {
+public:
+ struct FunctionInfo;
+
+private:
+ std::unique_ptr<FunctionInfo> Info;
+
+public:
+ StackSafetyInfo();
+ StackSafetyInfo(FunctionInfo &&Info);
+ StackSafetyInfo(StackSafetyInfo &&);
+ StackSafetyInfo &operator=(StackSafetyInfo &&);
+ ~StackSafetyInfo();
+
+ // TODO: Add useful for client methods.
+ void print(raw_ostream &O) const;
+};
+
+/// StackSafetyInfo wrapper for the new pass manager.
+class StackSafetyAnalysis : public AnalysisInfoMixin<StackSafetyAnalysis> {
+ friend AnalysisInfoMixin<StackSafetyAnalysis>;
+ static AnalysisKey Key;
+
+public:
+ using Result = StackSafetyInfo;
+ StackSafetyInfo run(Function &F, FunctionAnalysisManager &AM);
+};
+
+/// Printer pass for the \c StackSafetyAnalysis results.
+class StackSafetyPrinterPass : public PassInfoMixin<StackSafetyPrinterPass> {
+ raw_ostream &OS;
+
+public:
+ explicit StackSafetyPrinterPass(raw_ostream &OS) : OS(OS) {}
+ PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
+};
+
+/// StackSafetyInfo wrapper for the legacy pass manager
+class StackSafetyInfoWrapperPass : public FunctionPass {
+ StackSafetyInfo SSI;
+
+public:
+ static char ID;
+ StackSafetyInfoWrapperPass();
+
+ const StackSafetyInfo &getResult() const { return SSI; }
+
+ void print(raw_ostream &O, const Module *M) const override;
+ void getAnalysisUsage(AnalysisUsage &AU) const override;
+
+ bool runOnFunction(Function &F) override;
+};
+
+using StackSafetyGlobalInfo = std::map<const GlobalValue *, StackSafetyInfo>;
+
+/// This pass performs the global (interprocedural) stack safety analysis (new
+/// pass manager).
+class StackSafetyGlobalAnalysis
+ : public AnalysisInfoMixin<StackSafetyGlobalAnalysis> {
+ friend AnalysisInfoMixin<StackSafetyGlobalAnalysis>;
+ static AnalysisKey Key;
+
+public:
+ using Result = StackSafetyGlobalInfo;
+ Result run(Module &M, ModuleAnalysisManager &AM);
+};
+
+/// Printer pass for the \c StackSafetyGlobalAnalysis results.
+class StackSafetyGlobalPrinterPass
+ : public PassInfoMixin<StackSafetyGlobalPrinterPass> {
+ raw_ostream &OS;
+
+public:
+ explicit StackSafetyGlobalPrinterPass(raw_ostream &OS) : OS(OS) {}
+ PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
+};
+
+/// This pass performs the global (interprocedural) stack safety analysis
+/// (legacy pass manager).
+class StackSafetyGlobalInfoWrapperPass : public ModulePass {
+ StackSafetyGlobalInfo SSI;
+
+public:
+ static char ID;
+
+ StackSafetyGlobalInfoWrapperPass();
+
+ const StackSafetyGlobalInfo &getResult() const { return SSI; }
+
+ void print(raw_ostream &O, const Module *M) const override;
+ void getAnalysisUsage(AnalysisUsage &AU) const override;
+
+ bool runOnModule(Module &M) override;
+};
+
+} // end namespace llvm
+
+#endif // LLVM_ANALYSIS_STACKSAFETYANALYSIS_H
diff --git a/linux-x64/clang/include/llvm/Analysis/SyncDependenceAnalysis.h b/linux-x64/clang/include/llvm/Analysis/SyncDependenceAnalysis.h
new file mode 100644
index 0000000..099403b
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Analysis/SyncDependenceAnalysis.h
@@ -0,0 +1,85 @@
+//===- SyncDependenceAnalysis.h - Divergent Branch Dependence -*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// \file
+// This file defines the SyncDependenceAnalysis class, which computes for
+// every divergent branch the set of phi nodes that the branch will make
+// divergent.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_ANALYSIS_SYNC_DEPENDENCE_ANALYSIS_H
+#define LLVM_ANALYSIS_SYNC_DEPENDENCE_ANALYSIS_H
+
+#include "llvm/ADT/DenseMap.h"
+#include "llvm/ADT/PostOrderIterator.h"
+#include "llvm/ADT/SmallPtrSet.h"
+#include "llvm/Analysis/LoopInfo.h"
+#include <memory>
+
+namespace llvm {
+
+class BasicBlock;
+class DominatorTree;
+class Loop;
+class PostDominatorTree;
+
+using ConstBlockSet = SmallPtrSet<const BasicBlock *, 4>;
+
+/// \brief Relates points of divergent control to join points in
+/// reducible CFGs.
+///
+/// This analysis relates points of divergent control to points of converging
+/// divergent control. The analysis requires all loops to be reducible.
+class SyncDependenceAnalysis {
+ void visitSuccessor(const BasicBlock &succBlock, const Loop *termLoop,
+ const BasicBlock *defBlock);
+
+public:
+ bool inRegion(const BasicBlock &BB) const;
+
+ ~SyncDependenceAnalysis();
+ SyncDependenceAnalysis(const DominatorTree &DT, const PostDominatorTree &PDT,
+ const LoopInfo &LI);
+
+ /// \brief Computes divergent join points and loop exits caused by branch
+ /// divergence in \p Term.
+ ///
+ /// The set of blocks which are reachable by disjoint paths from \p Term.
+ /// The set also contains loop exits if there two disjoint paths:
+ /// one from \p Term to the loop exit and another from \p Term to the loop
+ /// header. Those exit blocks are added to the returned set.
+ /// If L is the parent loop of \p Term and an exit of L is in the returned
+ /// set then L is a divergent loop.
+ const ConstBlockSet &join_blocks(const Instruction &Term);
+
+ /// \brief Computes divergent join points and loop exits (in the surrounding
+ /// loop) caused by the divergent loop exits of\p Loop.
+ ///
+ /// The set of blocks which are reachable by disjoint paths from the
+ /// loop exits of \p Loop.
+ /// This treats the loop as a single node in \p Loop's parent loop.
+ /// The returned set has the same properties as for join_blocks(TermInst&).
+ const ConstBlockSet &join_blocks(const Loop &Loop);
+
+private:
+ static ConstBlockSet EmptyBlockSet;
+
+ ReversePostOrderTraversal<const Function *> FuncRPOT;
+ const DominatorTree &DT;
+ const PostDominatorTree &PDT;
+ const LoopInfo &LI;
+
+ std::map<const Loop *, std::unique_ptr<ConstBlockSet>> CachedLoopExitJoins;
+ std::map<const Instruction *, std::unique_ptr<ConstBlockSet>>
+ CachedBranchJoins;
+};
+
+} // namespace llvm
+
+#endif // LLVM_ANALYSIS_SYNC_DEPENDENCE_ANALYSIS_H
diff --git a/linux-x64/clang/include/llvm/Analysis/SyntheticCountsUtils.h b/linux-x64/clang/include/llvm/Analysis/SyntheticCountsUtils.h
index 87f4a01..b9b4c98 100644
--- a/linux-x64/clang/include/llvm/Analysis/SyntheticCountsUtils.h
+++ b/linux-x64/clang/include/llvm/Analysis/SyntheticCountsUtils.h
@@ -1,9 +1,8 @@
//===- SyntheticCountsUtils.h - utilities for count propagation--*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -36,16 +35,17 @@
using EdgeRef = typename CGT::EdgeRef;
using SccTy = std::vector<NodeRef>;
- using GetRelBBFreqTy = function_ref<Optional<Scaled64>(EdgeRef)>;
- using GetCountTy = function_ref<uint64_t(NodeRef)>;
- using AddCountTy = function_ref<void(NodeRef, uint64_t)>;
+ // Not all EdgeRef have information about the source of the edge. Hence
+ // NodeRef corresponding to the source of the EdgeRef is explicitly passed.
+ using GetProfCountTy = function_ref<Optional<Scaled64>(NodeRef, EdgeRef)>;
+ using AddCountTy = function_ref<void(NodeRef, Scaled64)>;
- static void propagate(const CallGraphType &CG, GetRelBBFreqTy GetRelBBFreq,
- GetCountTy GetCount, AddCountTy AddCount);
+ static void propagate(const CallGraphType &CG, GetProfCountTy GetProfCount,
+ AddCountTy AddCount);
private:
- static void propagateFromSCC(const SccTy &SCC, GetRelBBFreqTy GetRelBBFreq,
- GetCountTy GetCount, AddCountTy AddCount);
+ static void propagateFromSCC(const SccTy &SCC, GetProfCountTy GetProfCount,
+ AddCountTy AddCount);
};
} // namespace llvm
diff --git a/linux-x64/clang/include/llvm/Analysis/TargetFolder.h b/linux-x64/clang/include/llvm/Analysis/TargetFolder.h
index ae75d37..b8047a4 100644
--- a/linux-x64/clang/include/llvm/Analysis/TargetFolder.h
+++ b/linux-x64/clang/include/llvm/Analysis/TargetFolder.h
@@ -1,9 +1,8 @@
//====- TargetFolder.h - Constant folding helper ---------------*- C++ -*-====//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/TargetLibraryInfo.def b/linux-x64/clang/include/llvm/Analysis/TargetLibraryInfo.def
index f94debb..f73c69e 100644
--- a/linux-x64/clang/include/llvm/Analysis/TargetLibraryInfo.def
+++ b/linux-x64/clang/include/llvm/Analysis/TargetLibraryInfo.def
@@ -1,9 +1,8 @@
//===-- TargetLibraryInfo.def - Library information -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -565,6 +564,30 @@
/// char *ctermid(char *s);
TLI_DEFINE_ENUM_INTERNAL(ctermid)
TLI_DEFINE_STRING_INTERNAL("ctermid")
+/// int execl(const char *path, const char *arg, ...);
+TLI_DEFINE_ENUM_INTERNAL(execl)
+TLI_DEFINE_STRING_INTERNAL("execl")
+/// int execle(const char *file, const char *arg, ..., char * const envp[]);
+TLI_DEFINE_ENUM_INTERNAL(execle)
+TLI_DEFINE_STRING_INTERNAL("execle")
+/// int execlp(const char *file, const char *arg, ...);
+TLI_DEFINE_ENUM_INTERNAL(execlp)
+TLI_DEFINE_STRING_INTERNAL("execlp")
+/// int execv(const char *path, char *const argv[]);
+TLI_DEFINE_ENUM_INTERNAL(execv)
+TLI_DEFINE_STRING_INTERNAL("execv")
+/// int execvP(const char *file, const char *search_path, char *const argv[]);
+TLI_DEFINE_ENUM_INTERNAL(execvP)
+TLI_DEFINE_STRING_INTERNAL("execvP")
+/// int execve(const char *filename, char *const argv[], char *const envp[]);
+TLI_DEFINE_ENUM_INTERNAL(execve)
+TLI_DEFINE_STRING_INTERNAL("execve")
+/// int execvp(const char *file, char *const argv[]);
+TLI_DEFINE_ENUM_INTERNAL(execvp)
+TLI_DEFINE_STRING_INTERNAL("execvp")
+/// int execvpe(const char *file, char *const argv[], char *const envp[]);
+TLI_DEFINE_ENUM_INTERNAL(execvpe)
+TLI_DEFINE_STRING_INTERNAL("execvpe")
/// double exp(double x);
TLI_DEFINE_ENUM_INTERNAL(exp)
TLI_DEFINE_STRING_INTERNAL("exp")
@@ -709,6 +732,9 @@
/// FILE *fopen64(const char *filename, const char *opentype)
TLI_DEFINE_ENUM_INTERNAL(fopen64)
TLI_DEFINE_STRING_INTERNAL("fopen64")
+/// int fork();
+TLI_DEFINE_ENUM_INTERNAL(fork)
+TLI_DEFINE_STRING_INTERNAL("fork")
/// int fprintf(FILE *stream, const char *format, ...);
TLI_DEFINE_ENUM_INTERNAL(fprintf)
TLI_DEFINE_STRING_INTERNAL("fprintf")
diff --git a/linux-x64/clang/include/llvm/Analysis/TargetLibraryInfo.h b/linux-x64/clang/include/llvm/Analysis/TargetLibraryInfo.h
index a3fe834..fc6811e 100644
--- a/linux-x64/clang/include/llvm/Analysis/TargetLibraryInfo.h
+++ b/linux-x64/clang/include/llvm/Analysis/TargetLibraryInfo.h
@@ -1,9 +1,8 @@
//===-- TargetLibraryInfo.h - Library information ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Analysis/TargetTransformInfo.h b/linux-x64/clang/include/llvm/Analysis/TargetTransformInfo.h
index 18b5a5c..60dbf67 100644
--- a/linux-x64/clang/include/llvm/Analysis/TargetTransformInfo.h
+++ b/linux-x64/clang/include/llvm/Analysis/TargetTransformInfo.h
@@ -1,9 +1,8 @@
//===- TargetTransformInfo.h ------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -487,6 +486,10 @@
/// addressing mode expressions.
bool shouldFavorPostInc() const;
+ /// Return true if LSR should make efforts to generate indexed addressing
+ /// modes that operate across loop iterations.
+ bool shouldFavorBackedgeIndex(const Loop *L) const;
+
/// Return true if the target supports masked load/store
/// AVX2 and AVX-512 targets allow masks for consecutive load and store
bool isLegalMaskedStore(Type *DataType) const;
@@ -581,12 +584,21 @@
struct MemCmpExpansionOptions {
// The list of available load sizes (in bytes), sorted in decreasing order.
SmallVector<unsigned, 8> LoadSizes;
+ // Set to true to allow overlapping loads. For example, 7-byte compares can
+ // be done with two 4-byte compares instead of 4+2+1-byte compares. This
+ // requires all loads in LoadSizes to be doable in an unaligned way.
+ bool AllowOverlappingLoads = false;
};
const MemCmpExpansionOptions *enableMemCmpExpansion(bool IsZeroCmp) const;
/// Enable matching of interleaved access groups.
bool enableInterleavedAccessVectorization() const;
+ /// Enable matching of interleaved access groups that contain predicated
+ /// accesses or gaps and therefore vectorized using masked
+ /// vector loads/stores.
+ bool enableMaskedInterleavedAccessVectorization() const;
+
/// Indicate that it is potentially unsafe to automatically vectorize
/// floating-point operations because the semantics of vector and scalar
/// floating-point semantics may differ. For example, ARM NEON v7 SIMD math
@@ -739,9 +751,9 @@
/// and the number of execution units in the CPU.
unsigned getMaxInterleaveFactor(unsigned VF) const;
- /// Collect properties of V used in cost analyzis, e.g. OP_PowerOf2.
- OperandValueKind getOperandInfo(Value *V,
- OperandValueProperties &OpProps) const;
+ /// Collect properties of V used in cost analysis, e.g. OP_PowerOf2.
+ static OperandValueKind getOperandInfo(Value *V,
+ OperandValueProperties &OpProps);
/// This is an approximation of reciprocal throughput of a math/logic op.
/// A higher cost indicates less expected throughput.
@@ -766,7 +778,9 @@
/// \return The cost of a shuffle instruction of kind Kind and of type Tp.
/// The index and subtype parameters are used by the subvector insertion and
- /// extraction shuffle kinds.
+ /// extraction shuffle kinds to show the insert/extract point and the type of
+ /// the subvector being inserted/extracted.
+ /// NOTE: For subvector extractions Tp represents the source type.
int getShuffleCost(ShuffleKind Kind, Type *Tp, int Index = 0,
Type *SubTp = nullptr) const;
@@ -821,9 +835,13 @@
/// load allows gaps)
/// \p Alignment is the alignment of the memory operation
/// \p AddressSpace is address space of the pointer.
+ /// \p UseMaskForCond indicates if the memory access is predicated.
+ /// \p UseMaskForGaps indicates if gaps should be masked.
int getInterleavedMemoryOpCost(unsigned Opcode, Type *VecTy, unsigned Factor,
ArrayRef<unsigned> Indices, unsigned Alignment,
- unsigned AddressSpace) const;
+ unsigned AddressSpace,
+ bool UseMaskForCond = false,
+ bool UseMaskForGaps = false) const;
/// Calculate the cost of performing a vector reduction.
///
@@ -919,6 +937,14 @@
bool areInlineCompatible(const Function *Caller,
const Function *Callee) const;
+ /// \returns True if the caller and callee agree on how \p Args will be passed
+ /// to the callee.
+ /// \param[out] Args The list of compatible arguments. The implementation may
+ /// filter out any incompatible args from this list.
+ bool areFunctionArgsABICompatible(const Function *Caller,
+ const Function *Callee,
+ SmallPtrSetImpl<Argument *> &Args) const;
+
/// The type of load/store indexing.
enum MemIndexedMode {
MIM_Unindexed, ///< No indexing.
@@ -1043,6 +1069,7 @@
TargetTransformInfo::LSRCost &C2) = 0;
virtual bool canMacroFuseCmp() = 0;
virtual bool shouldFavorPostInc() const = 0;
+ virtual bool shouldFavorBackedgeIndex(const Loop *L) const = 0;
virtual bool isLegalMaskedStore(Type *DataType) = 0;
virtual bool isLegalMaskedLoad(Type *DataType) = 0;
virtual bool isLegalMaskedScatter(Type *DataType) = 0;
@@ -1072,6 +1099,7 @@
virtual const MemCmpExpansionOptions *enableMemCmpExpansion(
bool IsZeroCmp) const = 0;
virtual bool enableInterleavedAccessVectorization() = 0;
+ virtual bool enableMaskedInterleavedAccessVectorization() = 0;
virtual bool isFPVectorizationPotentiallyUnsafe() = 0;
virtual bool allowsMisalignedMemoryAccesses(LLVMContext &Context,
unsigned BitWidth,
@@ -1132,7 +1160,9 @@
unsigned Factor,
ArrayRef<unsigned> Indices,
unsigned Alignment,
- unsigned AddressSpace) = 0;
+ unsigned AddressSpace,
+ bool UseMaskForCond = false,
+ bool UseMaskForGaps = false) = 0;
virtual int getArithmeticReductionCost(unsigned Opcode, Type *Ty,
bool IsPairwiseForm) = 0;
virtual int getMinMaxReductionCost(Type *Ty, Type *CondTy,
@@ -1161,6 +1191,9 @@
unsigned RemainingBytes, unsigned SrcAlign, unsigned DestAlign) const = 0;
virtual bool areInlineCompatible(const Function *Caller,
const Function *Callee) const = 0;
+ virtual bool
+ areFunctionArgsABICompatible(const Function *Caller, const Function *Callee,
+ SmallPtrSetImpl<Argument *> &Args) const = 0;
virtual bool isIndexedLoadLegal(MemIndexedMode Mode, Type *Ty) const = 0;
virtual bool isIndexedStoreLegal(MemIndexedMode Mode,Type *Ty) const = 0;
virtual unsigned getLoadStoreVecRegBitWidth(unsigned AddrSpace) const = 0;
@@ -1273,6 +1306,9 @@
bool shouldFavorPostInc() const override {
return Impl.shouldFavorPostInc();
}
+ bool shouldFavorBackedgeIndex(const Loop *L) const override {
+ return Impl.shouldFavorBackedgeIndex(L);
+ }
bool isLegalMaskedStore(Type *DataType) override {
return Impl.isLegalMaskedStore(DataType);
}
@@ -1346,6 +1382,9 @@
bool enableInterleavedAccessVectorization() override {
return Impl.enableInterleavedAccessVectorization();
}
+ bool enableMaskedInterleavedAccessVectorization() override {
+ return Impl.enableMaskedInterleavedAccessVectorization();
+ }
bool isFPVectorizationPotentiallyUnsafe() override {
return Impl.isFPVectorizationPotentiallyUnsafe();
}
@@ -1471,9 +1510,11 @@
}
int getInterleavedMemoryOpCost(unsigned Opcode, Type *VecTy, unsigned Factor,
ArrayRef<unsigned> Indices, unsigned Alignment,
- unsigned AddressSpace) override {
+ unsigned AddressSpace, bool UseMaskForCond,
+ bool UseMaskForGaps) override {
return Impl.getInterleavedMemoryOpCost(Opcode, VecTy, Factor, Indices,
- Alignment, AddressSpace);
+ Alignment, AddressSpace,
+ UseMaskForCond, UseMaskForGaps);
}
int getArithmeticReductionCost(unsigned Opcode, Type *Ty,
bool IsPairwiseForm) override {
@@ -1534,6 +1575,11 @@
const Function *Callee) const override {
return Impl.areInlineCompatible(Caller, Callee);
}
+ bool areFunctionArgsABICompatible(
+ const Function *Caller, const Function *Callee,
+ SmallPtrSetImpl<Argument *> &Args) const override {
+ return Impl.areFunctionArgsABICompatible(Caller, Callee, Args);
+ }
bool isIndexedLoadLegal(MemIndexedMode Mode, Type *Ty) const override {
return Impl.isIndexedLoadLegal(Mode, Ty, getDataLayout());
}
diff --git a/linux-x64/clang/include/llvm/Analysis/TargetTransformInfoImpl.h b/linux-x64/clang/include/llvm/Analysis/TargetTransformInfoImpl.h
index e39fe66..4705933 100644
--- a/linux-x64/clang/include/llvm/Analysis/TargetTransformInfoImpl.h
+++ b/linux-x64/clang/include/llvm/Analysis/TargetTransformInfoImpl.h
@@ -1,9 +1,8 @@
//===- TargetTransformInfoImpl.h --------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -160,6 +159,7 @@
case Intrinsic::invariant_end:
case Intrinsic::launder_invariant_group:
case Intrinsic::strip_invariant_group:
+ case Intrinsic::is_constant:
case Intrinsic::lifetime_start:
case Intrinsic::lifetime_end:
case Intrinsic::objectsize:
@@ -253,6 +253,8 @@
bool shouldFavorPostInc() const { return false; }
+ bool shouldFavorBackedgeIndex(const Loop *L) const { return false; }
+
bool isLegalMaskedStore(Type *DataType) { return false; }
bool isLegalMaskedLoad(Type *DataType) { return false; }
@@ -313,6 +315,8 @@
bool enableInterleavedAccessVectorization() { return false; }
+ bool enableMaskedInterleavedAccessVectorization() { return false; }
+
bool isFPVectorizationPotentiallyUnsafe() { return false; }
bool allowsMisalignedMemoryAccesses(LLVMContext &Context,
@@ -450,8 +454,9 @@
unsigned getInterleavedMemoryOpCost(unsigned Opcode, Type *VecTy,
unsigned Factor,
ArrayRef<unsigned> Indices,
- unsigned Alignment,
- unsigned AddressSpace) {
+ unsigned Alignment, unsigned AddressSpace,
+ bool UseMaskForCond = false,
+ bool UseMaskForGaps = false) {
return 1;
}
@@ -522,6 +527,14 @@
Callee->getFnAttribute("target-features"));
}
+ bool areFunctionArgsABICompatible(const Function *Caller, const Function *Callee,
+ SmallPtrSetImpl<Argument *> &Args) const {
+ return (Caller->getFnAttribute("target-cpu") ==
+ Callee->getFnAttribute("target-cpu")) &&
+ (Caller->getFnAttribute("target-features") ==
+ Callee->getFnAttribute("target-features"));
+ }
+
bool isIndexedLoadLegal(TTI::MemIndexedMode Mode, Type *Ty,
const DataLayout &DL) const {
return false;
diff --git a/linux-x64/clang/include/llvm/Analysis/Trace.h b/linux-x64/clang/include/llvm/Analysis/Trace.h
index b05d384..a1ffd03 100644
--- a/linux-x64/clang/include/llvm/Analysis/Trace.h
+++ b/linux-x64/clang/include/llvm/Analysis/Trace.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/Trace.h - Represent one trace of LLVM code -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/TypeBasedAliasAnalysis.h b/linux-x64/clang/include/llvm/Analysis/TypeBasedAliasAnalysis.h
index 7fcfdb3..1235005 100644
--- a/linux-x64/clang/include/llvm/Analysis/TypeBasedAliasAnalysis.h
+++ b/linux-x64/clang/include/llvm/Analysis/TypeBasedAliasAnalysis.h
@@ -1,9 +1,8 @@
//===- TypeBasedAliasAnalysis.h - Type-Based Alias Analysis -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -17,7 +16,7 @@
#define LLVM_ANALYSIS_TYPEBASEDALIASANALYSIS_H
#include "llvm/Analysis/AliasAnalysis.h"
-#include "llvm/IR/CallSite.h"
+#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/PassManager.h"
#include "llvm/Pass.h"
#include <memory>
@@ -43,10 +42,10 @@
AliasResult alias(const MemoryLocation &LocA, const MemoryLocation &LocB);
bool pointsToConstantMemory(const MemoryLocation &Loc, bool OrLocal);
- FunctionModRefBehavior getModRefBehavior(ImmutableCallSite CS);
+ FunctionModRefBehavior getModRefBehavior(const CallBase *Call);
FunctionModRefBehavior getModRefBehavior(const Function *F);
- ModRefInfo getModRefInfo(ImmutableCallSite CS, const MemoryLocation &Loc);
- ModRefInfo getModRefInfo(ImmutableCallSite CS1, ImmutableCallSite CS2);
+ ModRefInfo getModRefInfo(const CallBase *Call, const MemoryLocation &Loc);
+ ModRefInfo getModRefInfo(const CallBase *Call1, const CallBase *Call2);
private:
bool Aliases(const MDNode *A, const MDNode *B) const;
diff --git a/linux-x64/clang/include/llvm/Analysis/TypeMetadataUtils.h b/linux-x64/clang/include/llvm/Analysis/TypeMetadataUtils.h
index 3bf9c5d..82cf8ef 100644
--- a/linux-x64/clang/include/llvm/Analysis/TypeMetadataUtils.h
+++ b/linux-x64/clang/include/llvm/Analysis/TypeMetadataUtils.h
@@ -1,9 +1,8 @@
//===- TypeMetadataUtils.h - Utilities related to type metadata --*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/Utils/Local.h b/linux-x64/clang/include/llvm/Analysis/Utils/Local.h
index b4141bb..acbdf5d 100644
--- a/linux-x64/clang/include/llvm/Analysis/Utils/Local.h
+++ b/linux-x64/clang/include/llvm/Analysis/Utils/Local.h
@@ -1,9 +1,8 @@
//===- Local.h - Functions to perform local transformations -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/ValueLattice.h b/linux-x64/clang/include/llvm/Analysis/ValueLattice.h
index 0744ca6..56519d7 100644
--- a/linux-x64/clang/include/llvm/Analysis/ValueLattice.h
+++ b/linux-x64/clang/include/llvm/Analysis/ValueLattice.h
@@ -1,9 +1,8 @@
//===- ValueLattice.h - Value constraint analysis ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Analysis/ValueLatticeUtils.h b/linux-x64/clang/include/llvm/Analysis/ValueLatticeUtils.h
index 0207267..a3bbb96 100644
--- a/linux-x64/clang/include/llvm/Analysis/ValueLatticeUtils.h
+++ b/linux-x64/clang/include/llvm/Analysis/ValueLatticeUtils.h
@@ -1,9 +1,8 @@
//===-- ValueLatticeUtils.h - Utils for solving lattices --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Analysis/ValueTracking.h b/linux-x64/clang/include/llvm/Analysis/ValueTracking.h
index a92ba8e..b3c07b1 100644
--- a/linux-x64/clang/include/llvm/Analysis/ValueTracking.h
+++ b/linux-x64/clang/include/llvm/Analysis/ValueTracking.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/ValueTracking.h - Walk computations --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -297,10 +296,10 @@
/// This function returns call pointer argument that is considered the same by
/// aliasing rules. You CAN'T use it to replace one value with another.
- const Value *getArgumentAliasingToReturnedPointer(ImmutableCallSite CS);
- inline Value *getArgumentAliasingToReturnedPointer(CallSite CS) {
- return const_cast<Value *>(
- getArgumentAliasingToReturnedPointer(ImmutableCallSite(CS)));
+ const Value *getArgumentAliasingToReturnedPointer(const CallBase *Call);
+ inline Value *getArgumentAliasingToReturnedPointer(CallBase *Call) {
+ return const_cast<Value *>(getArgumentAliasingToReturnedPointer(
+ const_cast<const CallBase *>(Call)));
}
// {launder,strip}.invariant.group returns pointer that aliases its argument,
@@ -309,7 +308,7 @@
// considered as capture. The arguments are not marked as returned neither,
// because it would make it useless.
bool isIntrinsicReturningPointerAliasingArgumentWithoutCapturing(
- ImmutableCallSite CS);
+ const CallBase *Call);
/// This method strips off any GEP address adjustments and pointer casts from
/// the specified value, returning the original object being addressed. Note
@@ -610,6 +609,12 @@
Optional<bool> isImpliedCondition(const Value *LHS, const Value *RHS,
const DataLayout &DL, bool LHSIsTrue = true,
unsigned Depth = 0);
+
+ /// Return the boolean condition value in the context of the given instruction
+ /// if it is known based on dominating conditions.
+ Optional<bool> isImpliedByDomCondition(const Value *Cond,
+ const Instruction *ContextI,
+ const DataLayout &DL);
} // end namespace llvm
#endif // LLVM_ANALYSIS_VALUETRACKING_H
diff --git a/linux-x64/clang/include/llvm/Analysis/VectorUtils.h b/linux-x64/clang/include/llvm/Analysis/VectorUtils.h
index 622d932..60ef633 100644
--- a/linux-x64/clang/include/llvm/Analysis/VectorUtils.h
+++ b/linux-x64/clang/include/llvm/Analysis/VectorUtils.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/VectorUtils.h - Vector utilities -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -24,6 +23,7 @@
template <typename T> class ArrayRef;
class DemandedBits;
class GetElementPtrInst;
+template <typename InstTy> class InterleaveGroup;
class Loop;
class ScalarEvolution;
class TargetTransformInfo;
@@ -116,8 +116,24 @@
DemandedBits &DB,
const TargetTransformInfo *TTI=nullptr);
+/// Compute the union of two access-group lists.
+///
+/// If the list contains just one access group, it is returned directly. If the
+/// list is empty, returns nullptr.
+MDNode *uniteAccessGroups(MDNode *AccGroups1, MDNode *AccGroups2);
+
+/// Compute the access-group list of access groups that @p Inst1 and @p Inst2
+/// are both in. If either instruction does not access memory at all, it is
+/// considered to be in every list.
+///
+/// If the list contains just one access group, it is returned directly. If the
+/// list is empty, returns nullptr.
+MDNode *intersectAccessGroups(const Instruction *Inst1,
+ const Instruction *Inst2);
+
/// Specifically, let Kinds = [MD_tbaa, MD_alias_scope, MD_noalias, MD_fpmath,
-/// MD_nontemporal]. For K in Kinds, we get the MDNode for K from each of the
+/// MD_nontemporal, MD_access_group].
+/// For K in Kinds, we get the MDNode for K from each of the
/// elements of VL, compute their "intersection" (i.e., the most generic
/// metadata value that covers all of the individual values), and set I's
/// metadata for M equal to the intersection value.
@@ -125,6 +141,35 @@
/// This function always sets a (possibly null) value for each K in Kinds.
Instruction *propagateMetadata(Instruction *I, ArrayRef<Value *> VL);
+/// Create a mask that filters the members of an interleave group where there
+/// are gaps.
+///
+/// For example, the mask for \p Group with interleave-factor 3
+/// and \p VF 4, that has only its first member present is:
+///
+/// <1,0,0,1,0,0,1,0,0,1,0,0>
+///
+/// Note: The result is a mask of 0's and 1's, as opposed to the other
+/// create[*]Mask() utilities which create a shuffle mask (mask that
+/// consists of indices).
+Constant *createBitMaskForGaps(IRBuilder<> &Builder, unsigned VF,
+ const InterleaveGroup<Instruction> &Group);
+
+/// Create a mask with replicated elements.
+///
+/// This function creates a shuffle mask for replicating each of the \p VF
+/// elements in a vector \p ReplicationFactor times. It can be used to
+/// transform a mask of \p VF elements into a mask of
+/// \p VF * \p ReplicationFactor elements used by a predicated
+/// interleaved-group of loads/stores whose Interleaved-factor ==
+/// \p ReplicationFactor.
+///
+/// For example, the mask for \p ReplicationFactor=3 and \p VF=4 is:
+///
+/// <0,0,0,1,1,1,2,2,2,3,3,3>
+Constant *createReplicatedMask(IRBuilder<> &Builder, unsigned ReplicationFactor,
+ unsigned VF);
+
/// Create an interleave shuffle mask.
///
/// This function creates a shuffle mask for interleaving \p NumVecs vectors of
@@ -203,9 +248,12 @@
///
/// Note: the interleaved load group could have gaps (missing members), but
/// the interleaved store group doesn't allow gaps.
-class InterleaveGroup {
+template <typename InstTy> class InterleaveGroup {
public:
- InterleaveGroup(Instruction *Instr, int Stride, unsigned Align)
+ InterleaveGroup(unsigned Factor, bool Reverse, unsigned Align)
+ : Factor(Factor), Reverse(Reverse), Align(Align), InsertPos(nullptr) {}
+
+ InterleaveGroup(InstTy *Instr, int Stride, unsigned Align)
: Align(Align), InsertPos(Instr) {
assert(Align && "The alignment should be non-zero");
@@ -226,7 +274,7 @@
/// negative if it is the new leader.
///
/// \returns false if the instruction doesn't belong to the group.
- bool insertMember(Instruction *Instr, int Index, unsigned NewAlign) {
+ bool insertMember(InstTy *Instr, int Index, unsigned NewAlign) {
assert(NewAlign && "The new member's alignment should be non-zero");
int Key = Index + SmallestKey;
@@ -258,7 +306,7 @@
/// Get the member with the given index \p Index
///
/// \returns nullptr if contains no such member.
- Instruction *getMember(unsigned Index) const {
+ InstTy *getMember(unsigned Index) const {
int Key = SmallestKey + Index;
auto Member = Members.find(Key);
if (Member == Members.end())
@@ -269,16 +317,17 @@
/// Get the index for the given member. Unlike the key in the member
/// map, the index starts from 0.
- unsigned getIndex(Instruction *Instr) const {
- for (auto I : Members)
+ unsigned getIndex(const InstTy *Instr) const {
+ for (auto I : Members) {
if (I.second == Instr)
return I.first - SmallestKey;
+ }
llvm_unreachable("InterleaveGroup contains no such member");
}
- Instruction *getInsertPos() const { return InsertPos; }
- void setInsertPos(Instruction *Inst) { InsertPos = Inst; }
+ InstTy *getInsertPos() const { return InsertPos; }
+ void setInsertPos(InstTy *Inst) { InsertPos = Inst; }
/// Add metadata (e.g. alias info) from the instructions in this group to \p
/// NewInst.
@@ -286,18 +335,30 @@
/// FIXME: this function currently does not add noalias metadata a'la
/// addNewMedata. To do that we need to compute the intersection of the
/// noalias info from all members.
- void addMetadata(Instruction *NewInst) const {
- SmallVector<Value *, 4> VL;
- std::transform(Members.begin(), Members.end(), std::back_inserter(VL),
- [](std::pair<int, Instruction *> p) { return p.second; });
- propagateMetadata(NewInst, VL);
+ void addMetadata(InstTy *NewInst) const;
+
+ /// Returns true if this Group requires a scalar iteration to handle gaps.
+ bool requiresScalarEpilogue() const {
+ // If the last member of the Group exists, then a scalar epilog is not
+ // needed for this group.
+ if (getMember(getFactor() - 1))
+ return false;
+
+ // We have a group with gaps. It therefore cannot be a group of stores,
+ // and it can't be a reversed access, because such groups get invalidated.
+ assert(!getMember(0)->mayWriteToMemory() &&
+ "Group should have been invalidated");
+ assert(!isReverse() && "Group should have been invalidated");
+
+ // This is a group of loads, with gaps, and without a last-member
+ return true;
}
private:
unsigned Factor; // Interleave Factor.
bool Reverse;
unsigned Align;
- DenseMap<int, Instruction *> Members;
+ DenseMap<int, InstTy *> Members;
int SmallestKey = 0;
int LargestKey = 0;
@@ -312,7 +373,7 @@
// store i32 %even
// %odd = add i32 // Def of %odd
// store i32 %odd // Insert Position
- Instruction *InsertPos;
+ InstTy *InsertPos;
};
/// Drive the analysis of interleaved memory accesses in the loop.
@@ -328,20 +389,31 @@
InterleavedAccessInfo(PredicatedScalarEvolution &PSE, Loop *L,
DominatorTree *DT, LoopInfo *LI,
const LoopAccessInfo *LAI)
- : PSE(PSE), TheLoop(L), DT(DT), LI(LI), LAI(LAI) {}
+ : PSE(PSE), TheLoop(L), DT(DT), LI(LI), LAI(LAI) {}
- ~InterleavedAccessInfo() {
- SmallPtrSet<InterleaveGroup *, 4> DelSet;
+ ~InterleavedAccessInfo() { reset(); }
+
+ /// Analyze the interleaved accesses and collect them in interleave
+ /// groups. Substitute symbolic strides using \p Strides.
+ /// Consider also predicated loads/stores in the analysis if
+ /// \p EnableMaskedInterleavedGroup is true.
+ void analyzeInterleaving(bool EnableMaskedInterleavedGroup);
+
+ /// Invalidate groups, e.g., in case all blocks in loop will be predicated
+ /// contrary to original assumption. Although we currently prevent group
+ /// formation for predicated accesses, we may be able to relax this limitation
+ /// in the future once we handle more complicated blocks.
+ void reset() {
+ SmallPtrSet<InterleaveGroup<Instruction> *, 4> DelSet;
// Avoid releasing a pointer twice.
for (auto &I : InterleaveGroupMap)
DelSet.insert(I.second);
for (auto *Ptr : DelSet)
delete Ptr;
+ InterleaveGroupMap.clear();
+ RequiresScalarEpilogue = false;
}
- /// Analyze the interleaved accesses and collect them in interleave
- /// groups. Substitute symbolic strides using \p Strides.
- void analyzeInterleaving();
/// Check if \p Instr belongs to any interleave group.
bool isInterleaved(Instruction *Instr) const {
@@ -351,17 +423,27 @@
/// Get the interleave group that \p Instr belongs to.
///
/// \returns nullptr if doesn't have such group.
- InterleaveGroup *getInterleaveGroup(Instruction *Instr) const {
- auto Group = InterleaveGroupMap.find(Instr);
- if (Group == InterleaveGroupMap.end())
- return nullptr;
- return Group->second;
+ InterleaveGroup<Instruction> *
+ getInterleaveGroup(const Instruction *Instr) const {
+ if (InterleaveGroupMap.count(Instr))
+ return InterleaveGroupMap.find(Instr)->second;
+ return nullptr;
+ }
+
+ iterator_range<SmallPtrSetIterator<llvm::InterleaveGroup<Instruction> *>>
+ getInterleaveGroups() {
+ return make_range(InterleaveGroups.begin(), InterleaveGroups.end());
}
/// Returns true if an interleaved group that may access memory
/// out-of-bounds requires a scalar epilogue iteration for correctness.
bool requiresScalarEpilogue() const { return RequiresScalarEpilogue; }
+ /// Invalidate groups that require a scalar epilogue (due to gaps). This can
+ /// happen when optimizing for size forbids a scalar epilogue, and the gap
+ /// cannot be filtered by masking the load/store.
+ void invalidateGroupsRequiringScalarEpilogue();
+
private:
/// A wrapper around ScalarEvolution, used to add runtime SCEV checks.
/// Simplifies SCEV expressions in the context of existing SCEV assumptions.
@@ -380,7 +462,9 @@
bool RequiresScalarEpilogue = false;
/// Holds the relationships between the members and the interleave group.
- DenseMap<Instruction *, InterleaveGroup *> InterleaveGroupMap;
+ DenseMap<Instruction *, InterleaveGroup<Instruction> *> InterleaveGroupMap;
+
+ SmallPtrSet<InterleaveGroup<Instruction> *, 4> InterleaveGroups;
/// Holds dependences among the memory accesses in the loop. It maps a source
/// access to a set of dependent sink accesses.
@@ -413,19 +497,23 @@
/// stride \p Stride and alignment \p Align.
///
/// \returns the newly created interleave group.
- InterleaveGroup *createInterleaveGroup(Instruction *Instr, int Stride,
- unsigned Align) {
- assert(!isInterleaved(Instr) && "Already in an interleaved access group");
- InterleaveGroupMap[Instr] = new InterleaveGroup(Instr, Stride, Align);
+ InterleaveGroup<Instruction> *
+ createInterleaveGroup(Instruction *Instr, int Stride, unsigned Align) {
+ assert(!InterleaveGroupMap.count(Instr) &&
+ "Already in an interleaved access group");
+ InterleaveGroupMap[Instr] =
+ new InterleaveGroup<Instruction>(Instr, Stride, Align);
+ InterleaveGroups.insert(InterleaveGroupMap[Instr]);
return InterleaveGroupMap[Instr];
}
/// Release the group and remove all the relationships.
- void releaseGroup(InterleaveGroup *Group) {
+ void releaseGroup(InterleaveGroup<Instruction> *Group) {
for (unsigned i = 0; i < Group->getFactor(); i++)
if (Instruction *Member = Group->getMember(i))
InterleaveGroupMap.erase(Member);
+ InterleaveGroups.erase(Group);
delete Group;
}
diff --git a/linux-x64/clang/include/llvm/AsmParser/Parser.h b/linux-x64/clang/include/llvm/AsmParser/Parser.h
index 285a7c0..b0c6034 100644
--- a/linux-x64/clang/include/llvm/AsmParser/Parser.h
+++ b/linux-x64/clang/include/llvm/AsmParser/Parser.h
@@ -1,9 +1,8 @@
//===-- Parser.h - Parser for LLVM IR text assembly files -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/AsmParser/SlotMapping.h b/linux-x64/clang/include/llvm/AsmParser/SlotMapping.h
index bd7e8fc..0e95eb8 100644
--- a/linux-x64/clang/include/llvm/AsmParser/SlotMapping.h
+++ b/linux-x64/clang/include/llvm/AsmParser/SlotMapping.h
@@ -1,9 +1,8 @@
//===-- SlotMapping.h - Slot number mapping for unnamed values --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/BinaryFormat/AMDGPUMetadataVerifier.h b/linux-x64/clang/include/llvm/BinaryFormat/AMDGPUMetadataVerifier.h
new file mode 100644
index 0000000..522721a
--- /dev/null
+++ b/linux-x64/clang/include/llvm/BinaryFormat/AMDGPUMetadataVerifier.h
@@ -0,0 +1,69 @@
+//===- AMDGPUMetadataVerifier.h - MsgPack Types -----------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+/// \file
+/// This is a verifier for AMDGPU HSA metadata, which can verify both
+/// well-typed metadata and untyped metadata. When verifying in the non-strict
+/// mode, untyped metadata is coerced into the correct type if possible.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_BINARYFORMAT_AMDGPUMETADATAVERIFIER_H
+#define LLVM_BINARYFORMAT_AMDGPUMETADATAVERIFIER_H
+
+#include "llvm/BinaryFormat/MsgPackTypes.h"
+
+namespace llvm {
+namespace AMDGPU {
+namespace HSAMD {
+namespace V3 {
+
+/// Verifier for AMDGPU HSA metadata.
+///
+/// Operates in two modes:
+///
+/// In strict mode, metadata must already be well-typed.
+///
+/// In non-strict mode, metadata is coerced into expected types when possible.
+class MetadataVerifier {
+ bool Strict;
+
+ bool verifyScalar(msgpack::Node &Node, msgpack::ScalarNode::ScalarKind SKind,
+ function_ref<bool(msgpack::ScalarNode &)> verifyValue = {});
+ bool verifyInteger(msgpack::Node &Node);
+ bool verifyArray(msgpack::Node &Node,
+ function_ref<bool(msgpack::Node &)> verifyNode,
+ Optional<size_t> Size = None);
+ bool verifyEntry(msgpack::MapNode &MapNode, StringRef Key, bool Required,
+ function_ref<bool(msgpack::Node &)> verifyNode);
+ bool
+ verifyScalarEntry(msgpack::MapNode &MapNode, StringRef Key, bool Required,
+ msgpack::ScalarNode::ScalarKind SKind,
+ function_ref<bool(msgpack::ScalarNode &)> verifyValue = {});
+ bool verifyIntegerEntry(msgpack::MapNode &MapNode, StringRef Key,
+ bool Required);
+ bool verifyKernelArgs(msgpack::Node &Node);
+ bool verifyKernel(msgpack::Node &Node);
+
+public:
+ /// Construct a MetadataVerifier, specifying whether it will operate in \p
+ /// Strict mode.
+ MetadataVerifier(bool Strict) : Strict(Strict) {}
+
+ /// Verify given HSA metadata.
+ ///
+ /// \returns True when successful, false when metadata is invalid.
+ bool verify(msgpack::Node &HSAMetadataRoot);
+};
+
+} // end namespace V3
+} // end namespace HSAMD
+} // end namespace AMDGPU
+} // end namespace llvm
+
+#endif // LLVM_BINARYFORMAT_AMDGPUMETADATAVERIFIER_H
diff --git a/linux-x64/clang/include/llvm/BinaryFormat/COFF.h b/linux-x64/clang/include/llvm/BinaryFormat/COFF.h
index 7b973c0..e0543de 100644
--- a/linux-x64/clang/include/llvm/BinaryFormat/COFF.h
+++ b/linux-x64/clang/include/llvm/BinaryFormat/COFF.h
@@ -1,9 +1,8 @@
//===-- llvm/BinaryFormat/COFF.h --------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -371,13 +370,15 @@
IMAGE_REL_ARM_TOKEN = 0x0005,
IMAGE_REL_ARM_BLX24 = 0x0008,
IMAGE_REL_ARM_BLX11 = 0x0009,
+ IMAGE_REL_ARM_REL32 = 0x000A,
IMAGE_REL_ARM_SECTION = 0x000E,
IMAGE_REL_ARM_SECREL = 0x000F,
IMAGE_REL_ARM_MOV32A = 0x0010,
IMAGE_REL_ARM_MOV32T = 0x0011,
IMAGE_REL_ARM_BRANCH20T = 0x0012,
IMAGE_REL_ARM_BRANCH24T = 0x0014,
- IMAGE_REL_ARM_BLX23T = 0x0015
+ IMAGE_REL_ARM_BLX23T = 0x0015,
+ IMAGE_REL_ARM_PAIR = 0x0016,
};
enum RelocationTypesARM64 : unsigned {
@@ -398,6 +399,7 @@
IMAGE_REL_ARM64_ADDR64 = 0x000E,
IMAGE_REL_ARM64_BRANCH19 = 0x000F,
IMAGE_REL_ARM64_BRANCH14 = 0x0010,
+ IMAGE_REL_ARM64_REL32 = 0x0011,
};
enum COMDATType : unsigned {
diff --git a/linux-x64/clang/include/llvm/BinaryFormat/Dwarf.def b/linux-x64/clang/include/llvm/BinaryFormat/Dwarf.def
index 6b7a741..90ae023 100644
--- a/linux-x64/clang/include/llvm/BinaryFormat/Dwarf.def
+++ b/linux-x64/clang/include/llvm/BinaryFormat/Dwarf.def
@@ -1,9 +1,8 @@
//===- llvm/Support/Dwarf.def - Dwarf definitions ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -18,7 +17,8 @@
defined HANDLE_DW_VIRTUALITY || defined HANDLE_DW_DEFAULTED || \
defined HANDLE_DW_CC || defined HANDLE_DW_LNS || defined HANDLE_DW_LNE || \
defined HANDLE_DW_LNCT || defined HANDLE_DW_MACRO || \
- defined HANDLE_DW_RLE || defined HANDLE_DW_CFA || \
+ defined HANDLE_DW_RLE || \
+ (defined HANDLE_DW_CFA && defined HANDLE_DW_CFA_PRED) || \
defined HANDLE_DW_APPLE_PROPERTY || defined HANDLE_DW_UT || \
defined HANDLE_DWARF_SECTION || defined HANDLE_DW_IDX || \
defined HANDLE_DW_END)
@@ -42,7 +42,7 @@
#endif
#ifndef HANDLE_DW_LANG
-#define HANDLE_DW_LANG(ID, NAME, VERSION, VENDOR)
+#define HANDLE_DW_LANG(ID, NAME, LOWER_BOUND, VERSION, VENDOR)
#endif
#ifndef HANDLE_DW_ATE
@@ -85,6 +85,10 @@
#define HANDLE_DW_CFA(ID, NAME)
#endif
+#ifndef HANDLE_DW_CFA_PRED
+#define HANDLE_DW_CFA_PRED(ID, NAME, PRED)
+#endif
+
#ifndef HANDLE_DW_APPLE_PROPERTY
#define HANDLE_DW_APPLE_PROPERTY(ID, NAME)
#endif
@@ -627,50 +631,50 @@
HANDLE_DW_OP(0xfc, GNU_const_index, 0, GNU)
// DWARF languages.
-HANDLE_DW_LANG(0x0001, C89, 2, DWARF)
-HANDLE_DW_LANG(0x0002, C, 2, DWARF)
-HANDLE_DW_LANG(0x0003, Ada83, 2, DWARF)
-HANDLE_DW_LANG(0x0004, C_plus_plus, 2, DWARF)
-HANDLE_DW_LANG(0x0005, Cobol74, 2, DWARF)
-HANDLE_DW_LANG(0x0006, Cobol85, 2, DWARF)
-HANDLE_DW_LANG(0x0007, Fortran77, 2, DWARF)
-HANDLE_DW_LANG(0x0008, Fortran90, 2, DWARF)
-HANDLE_DW_LANG(0x0009, Pascal83, 2, DWARF)
-HANDLE_DW_LANG(0x000a, Modula2, 2, DWARF)
+HANDLE_DW_LANG(0x0001, C89, 0, 2, DWARF)
+HANDLE_DW_LANG(0x0002, C, 0, 2, DWARF)
+HANDLE_DW_LANG(0x0003, Ada83, 1, 2, DWARF)
+HANDLE_DW_LANG(0x0004, C_plus_plus, 0, 2, DWARF)
+HANDLE_DW_LANG(0x0005, Cobol74, 1, 2, DWARF)
+HANDLE_DW_LANG(0x0006, Cobol85, 1, 2, DWARF)
+HANDLE_DW_LANG(0x0007, Fortran77, 1, 2, DWARF)
+HANDLE_DW_LANG(0x0008, Fortran90, 1, 2, DWARF)
+HANDLE_DW_LANG(0x0009, Pascal83, 1, 2, DWARF)
+HANDLE_DW_LANG(0x000a, Modula2, 1, 2, DWARF)
// New in DWARF v3:
-HANDLE_DW_LANG(0x000b, Java, 3, DWARF)
-HANDLE_DW_LANG(0x000c, C99, 3, DWARF)
-HANDLE_DW_LANG(0x000d, Ada95, 3, DWARF)
-HANDLE_DW_LANG(0x000e, Fortran95, 3, DWARF)
-HANDLE_DW_LANG(0x000f, PLI, 3, DWARF)
-HANDLE_DW_LANG(0x0010, ObjC, 3, DWARF)
-HANDLE_DW_LANG(0x0011, ObjC_plus_plus, 3, DWARF)
-HANDLE_DW_LANG(0x0012, UPC, 3, DWARF)
-HANDLE_DW_LANG(0x0013, D, 3, DWARF)
+HANDLE_DW_LANG(0x000b, Java, 0, 3, DWARF)
+HANDLE_DW_LANG(0x000c, C99, 0, 3, DWARF)
+HANDLE_DW_LANG(0x000d, Ada95, 1, 3, DWARF)
+HANDLE_DW_LANG(0x000e, Fortran95, 1, 3, DWARF)
+HANDLE_DW_LANG(0x000f, PLI, 1, 3, DWARF)
+HANDLE_DW_LANG(0x0010, ObjC, 0, 3, DWARF)
+HANDLE_DW_LANG(0x0011, ObjC_plus_plus, 0, 3, DWARF)
+HANDLE_DW_LANG(0x0012, UPC, 0, 3, DWARF)
+HANDLE_DW_LANG(0x0013, D, 0, 3, DWARF)
// New in DWARF v4:
-HANDLE_DW_LANG(0x0014, Python, 4, DWARF)
+HANDLE_DW_LANG(0x0014, Python, 0, 4, DWARF)
// New in DWARF v5:
-HANDLE_DW_LANG(0x0015, OpenCL, 5, DWARF)
-HANDLE_DW_LANG(0x0016, Go, 5, DWARF)
-HANDLE_DW_LANG(0x0017, Modula3, 5, DWARF)
-HANDLE_DW_LANG(0x0018, Haskell, 5, DWARF)
-HANDLE_DW_LANG(0x0019, C_plus_plus_03, 5, DWARF)
-HANDLE_DW_LANG(0x001a, C_plus_plus_11, 5, DWARF)
-HANDLE_DW_LANG(0x001b, OCaml, 5, DWARF)
-HANDLE_DW_LANG(0x001c, Rust, 5, DWARF)
-HANDLE_DW_LANG(0x001d, C11, 5, DWARF)
-HANDLE_DW_LANG(0x001e, Swift, 5, DWARF)
-HANDLE_DW_LANG(0x001f, Julia, 5, DWARF)
-HANDLE_DW_LANG(0x0020, Dylan, 5, DWARF)
-HANDLE_DW_LANG(0x0021, C_plus_plus_14, 5, DWARF)
-HANDLE_DW_LANG(0x0022, Fortran03, 5, DWARF)
-HANDLE_DW_LANG(0x0023, Fortran08, 5, DWARF)
-HANDLE_DW_LANG(0x0024, RenderScript, 5, DWARF)
-HANDLE_DW_LANG(0x0025, BLISS, 5, DWARF)
+HANDLE_DW_LANG(0x0015, OpenCL, 0, 5, DWARF)
+HANDLE_DW_LANG(0x0016, Go, 0, 5, DWARF)
+HANDLE_DW_LANG(0x0017, Modula3, 1, 5, DWARF)
+HANDLE_DW_LANG(0x0018, Haskell, 0, 5, DWARF)
+HANDLE_DW_LANG(0x0019, C_plus_plus_03, 0, 5, DWARF)
+HANDLE_DW_LANG(0x001a, C_plus_plus_11, 0, 5, DWARF)
+HANDLE_DW_LANG(0x001b, OCaml, 0, 5, DWARF)
+HANDLE_DW_LANG(0x001c, Rust, 0, 5, DWARF)
+HANDLE_DW_LANG(0x001d, C11, 0, 5, DWARF)
+HANDLE_DW_LANG(0x001e, Swift, 0, 5, DWARF)
+HANDLE_DW_LANG(0x001f, Julia, 1, 5, DWARF)
+HANDLE_DW_LANG(0x0020, Dylan, 0, 5, DWARF)
+HANDLE_DW_LANG(0x0021, C_plus_plus_14, 0, 5, DWARF)
+HANDLE_DW_LANG(0x0022, Fortran03, 1, 5, DWARF)
+HANDLE_DW_LANG(0x0023, Fortran08, 1, 5, DWARF)
+HANDLE_DW_LANG(0x0024, RenderScript, 0, 5, DWARF)
+HANDLE_DW_LANG(0x0025, BLISS, 0, 5, DWARF)
// Vendor extensions:
-HANDLE_DW_LANG(0x8001, Mips_Assembler, 0, MIPS)
-HANDLE_DW_LANG(0x8e57, GOOGLE_RenderScript, 0, GOOGLE)
-HANDLE_DW_LANG(0xb000, BORLAND_Delphi, 0, BORLAND)
+HANDLE_DW_LANG(0x8001, Mips_Assembler, None, 0, MIPS)
+HANDLE_DW_LANG(0x8e57, GOOGLE_RenderScript, 0, 0, GOOGLE)
+HANDLE_DW_LANG(0xb000, BORLAND_Delphi, 0, 0, BORLAND)
// DWARF attribute type encodings.
HANDLE_DW_ATE(0x01, address, 2, DWARF)
@@ -831,9 +835,10 @@
HANDLE_DW_CFA(0x15, val_offset_sf)
HANDLE_DW_CFA(0x16, val_expression)
// Vendor extensions:
-HANDLE_DW_CFA(0x1d, MIPS_advance_loc8)
-HANDLE_DW_CFA(0x2d, GNU_window_save)
-HANDLE_DW_CFA(0x2e, GNU_args_size)
+HANDLE_DW_CFA_PRED(0x1d, MIPS_advance_loc8, SELECT_MIPS64)
+HANDLE_DW_CFA_PRED(0x2d, GNU_window_save, SELECT_SPARC)
+HANDLE_DW_CFA_PRED(0x2d, AARCH64_negate_ra_state, SELECT_AARCH64)
+HANDLE_DW_CFA_PRED(0x2e, GNU_args_size, SELECT_X86)
// Apple Objective-C Property Attributes.
// Keep this list in sync with clang's DeclSpec.h ObjCPropertyAttributeKind!
@@ -873,6 +878,7 @@
HANDLE_DWARF_SECTION(DebugLine, ".debug_line", "debug-line")
HANDLE_DWARF_SECTION(DebugLineStr, ".debug_line_str", "debug-line-str")
HANDLE_DWARF_SECTION(DebugLoc, ".debug_loc", "debug-loc")
+HANDLE_DWARF_SECTION(DebugLoclists, ".debug_loclists", "debug-loclists")
HANDLE_DWARF_SECTION(DebugFrame, ".debug_frame", "debug-frame")
HANDLE_DWARF_SECTION(DebugMacro, ".debug_macro", "debug-macro")
HANDLE_DWARF_SECTION(DebugNames, ".debug_names", "debug-names")
@@ -915,6 +921,7 @@
#undef HANDLE_DW_MACRO
#undef HANDLE_DW_RLE
#undef HANDLE_DW_CFA
+#undef HANDLE_DW_CFA_PRED
#undef HANDLE_DW_APPLE_PROPERTY
#undef HANDLE_DW_UT
#undef HANDLE_DWARF_SECTION
diff --git a/linux-x64/clang/include/llvm/BinaryFormat/Dwarf.h b/linux-x64/clang/include/llvm/BinaryFormat/Dwarf.h
index 330e31c..3757c75 100644
--- a/linux-x64/clang/include/llvm/BinaryFormat/Dwarf.h
+++ b/linux-x64/clang/include/llvm/BinaryFormat/Dwarf.h
@@ -1,9 +1,8 @@
//===-- llvm/BinaryFormat/Dwarf.h ---Dwarf Constants-------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -26,6 +25,7 @@
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/FormatVariadicDetails.h"
+#include "llvm/ADT/Triple.h"
namespace llvm {
class StringRef;
@@ -183,7 +183,8 @@
};
enum SourceLanguage {
-#define HANDLE_DW_LANG(ID, NAME, VERSION, VENDOR) DW_LANG_##NAME = ID,
+#define HANDLE_DW_LANG(ID, NAME, LOWER_BOUND, VERSION, VENDOR) \
+ DW_LANG_##NAME = ID,
#include "llvm/BinaryFormat/Dwarf.def"
DW_LANG_lo_user = 0x8000,
DW_LANG_hi_user = 0xffff
@@ -272,6 +273,7 @@
/// Call frame instruction encodings.
enum CallFrameInfo {
#define HANDLE_DW_CFA(ID, NAME) DW_CFA_##NAME = ID,
+#define HANDLE_DW_CFA_PRED(ID, NAME, ARCH) DW_CFA_##NAME = ID,
#include "llvm/BinaryFormat/Dwarf.def"
DW_CFA_extended = 0x00,
@@ -430,7 +432,7 @@
StringRef LNExtendedString(unsigned Encoding);
StringRef MacinfoString(unsigned Encoding);
StringRef RangeListEncodingString(unsigned Encoding);
-StringRef CallFrameString(unsigned Encoding);
+StringRef CallFrameString(unsigned Encoding, Triple::ArchType Arch);
StringRef ApplePropertyString(unsigned);
StringRef UnitTypeString(unsigned);
StringRef AtomTypeString(unsigned Atom);
@@ -488,6 +490,8 @@
unsigned LanguageVendor(SourceLanguage L);
/// @}
+Optional<unsigned> LanguageLowerBound(SourceLanguage L);
+
/// A helper struct providing information about the byte size of DW_FORM
/// values that vary in size depending on the DWARF version, address byte
/// size, or DWARF32/DWARF64.
diff --git a/linux-x64/clang/include/llvm/BinaryFormat/ELF.h b/linux-x64/clang/include/llvm/BinaryFormat/ELF.h
index 2e77877..8e3860c 100644
--- a/linux-x64/clang/include/llvm/BinaryFormat/ELF.h
+++ b/linux-x64/clang/include/llvm/BinaryFormat/ELF.h
@@ -1,9 +1,8 @@
//===- llvm/BinaryFormat/ELF.h - ELF constants and structures ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -582,6 +581,7 @@
EF_HEXAGON_MACH_V60 = 0x00000060, // Hexagon V60
EF_HEXAGON_MACH_V62 = 0x00000062, // Hexagon V62
EF_HEXAGON_MACH_V65 = 0x00000065, // Hexagon V65
+ EF_HEXAGON_MACH_V66 = 0x00000066, // Hexagon V66
// Highest ISA version flags
EF_HEXAGON_ISA_MACH = 0x00000000, // Same as specified in bits[11:0]
@@ -594,6 +594,7 @@
EF_HEXAGON_ISA_V60 = 0x00000060, // Hexagon V60 ISA
EF_HEXAGON_ISA_V62 = 0x00000062, // Hexagon V62 ISA
EF_HEXAGON_ISA_V65 = 0x00000065, // Hexagon V65 ISA
+ EF_HEXAGON_ISA_V66 = 0x00000066, // Hexagon V66 ISA
};
// Hexagon-specific section indexes for common small data
@@ -701,6 +702,7 @@
EF_AMDGPU_MACH_AMDGCN_GFX902 = 0x02d,
EF_AMDGPU_MACH_AMDGCN_GFX904 = 0x02e,
EF_AMDGPU_MACH_AMDGCN_GFX906 = 0x02f,
+ EF_AMDGPU_MACH_AMDGCN_GFX909 = 0x031,
// Reserved for AMDGCN-based processors.
EF_AMDGPU_MACH_AMDGCN_RESERVED0 = 0x027,
@@ -708,11 +710,14 @@
// First/last AMDGCN-based processors.
EF_AMDGPU_MACH_AMDGCN_FIRST = EF_AMDGPU_MACH_AMDGCN_GFX600,
- EF_AMDGPU_MACH_AMDGCN_LAST = EF_AMDGPU_MACH_AMDGCN_GFX906,
+ EF_AMDGPU_MACH_AMDGCN_LAST = EF_AMDGPU_MACH_AMDGCN_GFX909,
- // Indicates if the xnack target feature is enabled for all code contained in
- // the object.
+ // Indicates if the "xnack" target feature is enabled for all code contained
+ // in the object.
EF_AMDGPU_XNACK = 0x100,
+ // Indicates if the "sram-ecc" target feature is enabled for all code
+ // contained in the object.
+ EF_AMDGPU_SRAM_ECC = 0x200,
};
// ELF Relocation types for AMDGPU
@@ -725,6 +730,38 @@
#include "ELFRelocs/BPF.def"
};
+// MSP430 specific e_flags
+enum : unsigned {
+ EF_MSP430_MACH_MSP430x11 = 11,
+ EF_MSP430_MACH_MSP430x11x1 = 110,
+ EF_MSP430_MACH_MSP430x12 = 12,
+ EF_MSP430_MACH_MSP430x13 = 13,
+ EF_MSP430_MACH_MSP430x14 = 14,
+ EF_MSP430_MACH_MSP430x15 = 15,
+ EF_MSP430_MACH_MSP430x16 = 16,
+ EF_MSP430_MACH_MSP430x20 = 20,
+ EF_MSP430_MACH_MSP430x22 = 22,
+ EF_MSP430_MACH_MSP430x23 = 23,
+ EF_MSP430_MACH_MSP430x24 = 24,
+ EF_MSP430_MACH_MSP430x26 = 26,
+ EF_MSP430_MACH_MSP430x31 = 31,
+ EF_MSP430_MACH_MSP430x32 = 32,
+ EF_MSP430_MACH_MSP430x33 = 33,
+ EF_MSP430_MACH_MSP430x41 = 41,
+ EF_MSP430_MACH_MSP430x42 = 42,
+ EF_MSP430_MACH_MSP430x43 = 43,
+ EF_MSP430_MACH_MSP430x44 = 44,
+ EF_MSP430_MACH_MSP430X = 45,
+ EF_MSP430_MACH_MSP430x46 = 46,
+ EF_MSP430_MACH_MSP430x47 = 47,
+ EF_MSP430_MACH_MSP430x54 = 54,
+};
+
+// ELF Relocation types for MSP430
+enum {
+#include "ELFRelocs/MSP430.def"
+};
+
#undef ELF_RELOC
// Section header.
@@ -829,6 +866,8 @@
SHT_MIPS_DWARF = 0x7000001e, // DWARF debugging section.
SHT_MIPS_ABIFLAGS = 0x7000002a, // ABI information.
+ SHT_MSP430_ATTRIBUTES = 0x70000003U,
+
SHT_HIPROC = 0x7fffffff, // Highest processor arch-specific type.
SHT_LOUSER = 0x80000000, // Lowest type reserved for applications.
SHT_HIUSER = 0xffffffff // Highest type reserved for applications.
@@ -1312,16 +1351,29 @@
enum : unsigned {
GNU_PROPERTY_STACK_SIZE = 1,
GNU_PROPERTY_NO_COPY_ON_PROTECTED = 2,
- GNU_PROPERTY_X86_FEATURE_1_AND = 0xc0000002
+ GNU_PROPERTY_X86_FEATURE_1_AND = 0xc0000002,
+ GNU_PROPERTY_X86_FEATURE_2_NEEDED = 0xc0008001,
+ GNU_PROPERTY_X86_FEATURE_2_USED = 0xc0010001,
};
-// CET properties
-enum {
+// x86 processor feature bits.
+enum : unsigned {
GNU_PROPERTY_X86_FEATURE_1_IBT = 1 << 0,
- GNU_PROPERTY_X86_FEATURE_1_SHSTK = 1 << 1
+ GNU_PROPERTY_X86_FEATURE_1_SHSTK = 1 << 1,
+
+ GNU_PROPERTY_X86_FEATURE_2_X86 = 1 << 0,
+ GNU_PROPERTY_X86_FEATURE_2_X87 = 1 << 1,
+ GNU_PROPERTY_X86_FEATURE_2_MMX = 1 << 2,
+ GNU_PROPERTY_X86_FEATURE_2_XMM = 1 << 3,
+ GNU_PROPERTY_X86_FEATURE_2_YMM = 1 << 4,
+ GNU_PROPERTY_X86_FEATURE_2_ZMM = 1 << 5,
+ GNU_PROPERTY_X86_FEATURE_2_FXSR = 1 << 6,
+ GNU_PROPERTY_X86_FEATURE_2_XSAVE = 1 << 7,
+ GNU_PROPERTY_X86_FEATURE_2_XSAVEOPT = 1 << 8,
+ GNU_PROPERTY_X86_FEATURE_2_XSAVEC = 1 << 9,
};
-// AMDGPU specific notes.
+// AMD specific notes. (Code Object V2)
enum {
// Note types with values between 0 and 9 (inclusive) are reserved.
NT_AMD_AMDGPU_HSA_METADATA = 10,
@@ -1329,6 +1381,12 @@
NT_AMD_AMDGPU_PAL_METADATA = 12
};
+// AMDGPU specific notes. (Code Object V3)
+enum {
+ // Note types with values between 0 and 31 (inclusive) are reserved.
+ NT_AMDGPU_METADATA = 32
+};
+
enum {
GNU_ABI_TAG_LINUX = 0,
GNU_ABI_TAG_HURD = 1,
@@ -1339,6 +1397,8 @@
GNU_ABI_TAG_NACL = 6,
};
+constexpr const char *ELF_NOTE_GNU = "GNU";
+
// Android packed relocation group flags.
enum {
RELOCATION_GROUPED_BY_INFO_FLAG = 1,
diff --git a/linux-x64/clang/include/llvm/BinaryFormat/ELFRelocs/MSP430.def b/linux-x64/clang/include/llvm/BinaryFormat/ELFRelocs/MSP430.def
new file mode 100644
index 0000000..96990ab
--- /dev/null
+++ b/linux-x64/clang/include/llvm/BinaryFormat/ELFRelocs/MSP430.def
@@ -0,0 +1,16 @@
+
+#ifndef ELF_RELOC
+#error "ELF_RELOC must be defined"
+#endif
+
+ELF_RELOC(R_MSP430_NONE, 0)
+ELF_RELOC(R_MSP430_32, 1)
+ELF_RELOC(R_MSP430_10_PCREL, 2)
+ELF_RELOC(R_MSP430_16, 3)
+ELF_RELOC(R_MSP430_16_PCREL, 4)
+ELF_RELOC(R_MSP430_16_BYTE, 5)
+ELF_RELOC(R_MSP430_16_PCREL_BYTE, 6)
+ELF_RELOC(R_MSP430_2X_PCREL, 7)
+ELF_RELOC(R_MSP430_RL_PCREL, 8)
+ELF_RELOC(R_MSP430_8, 9)
+ELF_RELOC(R_MSP430_SYM_DIFF, 10)
diff --git a/linux-x64/clang/include/llvm/BinaryFormat/MachO.def b/linux-x64/clang/include/llvm/BinaryFormat/MachO.def
index 95de48d..76dcc58 100644
--- a/linux-x64/clang/include/llvm/BinaryFormat/MachO.def
+++ b/linux-x64/clang/include/llvm/BinaryFormat/MachO.def
@@ -1,9 +1,8 @@
//,,,-- llvm/Support/MachO.def - The MachO file definitions -----*- C++ -*-,,,//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//,,,----------------------------------------------------------------------,,,//
//
diff --git a/linux-x64/clang/include/llvm/BinaryFormat/MachO.h b/linux-x64/clang/include/llvm/BinaryFormat/MachO.h
index c5294c7..08fe780 100644
--- a/linux-x64/clang/include/llvm/BinaryFormat/MachO.h
+++ b/linux-x64/clang/include/llvm/BinaryFormat/MachO.h
@@ -1,9 +1,8 @@
//===-- llvm/BinaryFormat/MachO.h - The MachO file format -------*- C++/-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -335,6 +334,7 @@
N_WEAK_DEF = 0x0080u,
N_SYMBOL_RESOLVER = 0x0100u,
N_ALT_ENTRY = 0x0200u,
+ N_COLD_FUNC = 0x0400u,
// For undefined symbols coming from libraries, see GET_LIBRARY_ORDINAL()
// as these are in the top 8 bits.
SELF_LIBRARY_ORDINAL = 0x0,
@@ -486,7 +486,10 @@
PLATFORM_IOS = 2,
PLATFORM_TVOS = 3,
PLATFORM_WATCHOS = 4,
- PLATFORM_BRIDGEOS = 5
+ PLATFORM_BRIDGEOS = 5,
+ PLATFORM_IOSSIMULATOR = 7,
+ PLATFORM_TVOSSIMULATOR = 8,
+ PLATFORM_WATCHOSSIMULATOR = 9
};
// Values for tools enum in build_tool_version.
diff --git a/linux-x64/clang/include/llvm/BinaryFormat/Magic.h b/linux-x64/clang/include/llvm/BinaryFormat/Magic.h
index 04801f8..05af2c3 100644
--- a/linux-x64/clang/include/llvm/BinaryFormat/Magic.h
+++ b/linux-x64/clang/include/llvm/BinaryFormat/Magic.h
@@ -1,9 +1,8 @@
//===- llvm/BinaryFormat/Magic.h - File magic identification ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/BinaryFormat/MsgPack.def b/linux-x64/clang/include/llvm/BinaryFormat/MsgPack.def
index 781b49f..7ad83ff 100644
--- a/linux-x64/clang/include/llvm/BinaryFormat/MsgPack.def
+++ b/linux-x64/clang/include/llvm/BinaryFormat/MsgPack.def
@@ -1,9 +1,8 @@
//===- MsgPack.def - MessagePack definitions --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/BinaryFormat/MsgPack.h b/linux-x64/clang/include/llvm/BinaryFormat/MsgPack.h
index d431912..9fda14b 100644
--- a/linux-x64/clang/include/llvm/BinaryFormat/MsgPack.h
+++ b/linux-x64/clang/include/llvm/BinaryFormat/MsgPack.h
@@ -1,9 +1,8 @@
//===-- MsgPack.h - MessagePack Constants -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/BinaryFormat/MsgPackReader.h b/linux-x64/clang/include/llvm/BinaryFormat/MsgPackReader.h
index 511c314..2d332f5 100644
--- a/linux-x64/clang/include/llvm/BinaryFormat/MsgPackReader.h
+++ b/linux-x64/clang/include/llvm/BinaryFormat/MsgPackReader.h
@@ -1,9 +1,8 @@
//===- MsgPackReader.h - Simple MsgPack reader ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/BinaryFormat/MsgPackTypes.h b/linux-x64/clang/include/llvm/BinaryFormat/MsgPackTypes.h
new file mode 100644
index 0000000..fcb11ab
--- /dev/null
+++ b/linux-x64/clang/include/llvm/BinaryFormat/MsgPackTypes.h
@@ -0,0 +1,371 @@
+//===- MsgPackTypes.h - MsgPack Types ---------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+/// \file
+/// This is a data structure for representing MessagePack "documents", with
+/// methods to go to and from MessagePack. The types also specialize YAMLIO
+/// traits in order to go to and from YAML.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/ADT/Optional.h"
+#include "llvm/BinaryFormat/MsgPackReader.h"
+#include "llvm/BinaryFormat/MsgPackWriter.h"
+#include "llvm/Support/Casting.h"
+#include "llvm/Support/YAMLTraits.h"
+#include <vector>
+
+#ifndef LLVM_BINARYFORMAT_MSGPACKTYPES_H
+#define LLVM_BINARYFORMAT_MSGPACKTYPES_H
+
+namespace llvm {
+namespace msgpack {
+
+class Node;
+
+/// Short-hand for a Node pointer.
+using NodePtr = std::shared_ptr<Node>;
+
+/// Short-hand for an Optional Node pointer.
+using OptNodePtr = Optional<NodePtr>;
+
+/// Abstract base-class which can be any MessagePack type.
+class Node {
+public:
+ enum NodeKind {
+ NK_Scalar,
+ NK_Array,
+ NK_Map,
+ };
+
+private:
+ virtual void anchor() = 0;
+ const NodeKind Kind;
+
+ static Expected<OptNodePtr> readArray(Reader &MPReader, size_t Length);
+ static Expected<OptNodePtr> readMap(Reader &MPReader, size_t Length);
+
+public:
+ NodeKind getKind() const { return Kind; }
+
+ /// Construct a Node. Used by derived classes to track kind information.
+ Node(NodeKind Kind) : Kind(Kind) {}
+
+ virtual ~Node() = default;
+
+ /// Read from a MessagePack reader \p MPReader, returning an error if one is
+ /// encountered, or None if \p MPReader is at the end of stream, or some Node
+ /// pointer if some type is read.
+ static Expected<OptNodePtr> read(Reader &MPReader);
+
+ /// Write to a MessagePack writer \p MPWriter.
+ virtual void write(Writer &MPWriter) = 0;
+};
+
+/// A MessagePack scalar.
+class ScalarNode : public Node {
+public:
+ enum ScalarKind {
+ SK_Int,
+ SK_UInt,
+ SK_Nil,
+ SK_Boolean,
+ SK_Float,
+ SK_String,
+ SK_Binary,
+ };
+
+private:
+ void anchor() override;
+
+ void destroy();
+
+ ScalarKind SKind;
+
+ union {
+ int64_t IntValue;
+ uint64_t UIntValue;
+ bool BoolValue;
+ double FloatValue;
+ std::string StringValue;
+ };
+
+public:
+ /// Construct an Int ScalarNode.
+ ScalarNode(int64_t IntValue);
+ /// Construct an Int ScalarNode.
+ ScalarNode(int32_t IntValue);
+ /// Construct an UInt ScalarNode.
+ ScalarNode(uint64_t UIntValue);
+ /// Construct an UInt ScalarNode.
+ ScalarNode(uint32_t UIntValue);
+ /// Construct a Nil ScalarNode.
+ ScalarNode();
+ /// Construct a Boolean ScalarNode.
+ ScalarNode(bool BoolValue);
+ /// Construct a Float ScalarNode.
+ ScalarNode(double FloatValue);
+ /// Construct a String ScalarNode.
+ ScalarNode(StringRef StringValue);
+ /// Construct a String ScalarNode.
+ ScalarNode(const char *StringValue);
+ /// Construct a String ScalarNode.
+ ScalarNode(std::string &&StringValue);
+ /// Construct a Binary ScalarNode.
+ ScalarNode(MemoryBufferRef BinaryValue);
+
+ ~ScalarNode();
+
+ ScalarNode &operator=(const ScalarNode &RHS) = delete;
+ /// A ScalarNode can only be move assigned.
+ ScalarNode &operator=(ScalarNode &&RHS);
+
+ /// Change the kind of this ScalarNode, zero initializing it to the new type.
+ void setScalarKind(ScalarKind SKind) {
+ switch (SKind) {
+ case SK_Int:
+ *this = int64_t(0);
+ break;
+ case SK_UInt:
+ *this = uint64_t(0);
+ break;
+ case SK_Boolean:
+ *this = false;
+ break;
+ case SK_Float:
+ *this = 0.0;
+ break;
+ case SK_String:
+ *this = StringRef();
+ break;
+ case SK_Binary:
+ *this = MemoryBufferRef("", "");
+ break;
+ case SK_Nil:
+ *this = ScalarNode();
+ break;
+ }
+ }
+
+ /// Get the current kind of ScalarNode.
+ ScalarKind getScalarKind() { return SKind; }
+
+ /// Get the value of an Int scalar.
+ ///
+ /// \warning Assumes getScalarKind() == SK_Int
+ int64_t getInt() {
+ assert(SKind == SK_Int);
+ return IntValue;
+ }
+
+ /// Get the value of a UInt scalar.
+ ///
+ /// \warning Assumes getScalarKind() == SK_UInt
+ uint64_t getUInt() {
+ assert(SKind == SK_UInt);
+ return UIntValue;
+ }
+
+ /// Get the value of an Boolean scalar.
+ ///
+ /// \warning Assumes getScalarKind() == SK_Boolean
+ bool getBool() {
+ assert(SKind == SK_Boolean);
+ return BoolValue;
+ }
+
+ /// Get the value of an Float scalar.
+ ///
+ /// \warning Assumes getScalarKind() == SK_Float
+ double getFloat() {
+ assert(SKind == SK_Float);
+ return FloatValue;
+ }
+
+ /// Get the value of a String scalar.
+ ///
+ /// \warning Assumes getScalarKind() == SK_String
+ StringRef getString() {
+ assert(SKind == SK_String);
+ return StringValue;
+ }
+
+ /// Get the value of a Binary scalar.
+ ///
+ /// \warning Assumes getScalarKind() == SK_Binary
+ StringRef getBinary() {
+ assert(SKind == SK_Binary);
+ return StringValue;
+ }
+
+ static bool classof(const Node *N) { return N->getKind() == NK_Scalar; }
+
+ void write(Writer &MPWriter) override;
+
+ /// Parse a YAML scalar of the current ScalarKind from \p ScalarStr.
+ ///
+ /// \returns An empty string on success, otherwise an error message.
+ StringRef inputYAML(StringRef ScalarStr);
+
+ /// Output a YAML scalar of the current ScalarKind into \p OS.
+ void outputYAML(raw_ostream &OS) const;
+
+ /// Determine which YAML quoting type the current value would need when
+ /// output.
+ yaml::QuotingType mustQuoteYAML(StringRef ScalarStr) const;
+
+ /// Get the YAML tag for the current ScalarKind.
+ StringRef getYAMLTag() const;
+
+ /// Flag which affects how the type handles YAML tags when reading and
+ /// writing.
+ ///
+ /// When false, tags are used when reading and writing. When reading, the tag
+ /// is used to decide the ScalarKind before parsing. When writing, the tag is
+ /// output along with the value.
+ ///
+ /// When true, tags are ignored when reading and writing. When reading, the
+ /// ScalarKind is always assumed to be String. When writing, the tag is not
+ /// output.
+ bool IgnoreTag = false;
+
+ static const char *IntTag;
+ static const char *NilTag;
+ static const char *BooleanTag;
+ static const char *FloatTag;
+ static const char *StringTag;
+ static const char *BinaryTag;
+};
+
+class ArrayNode : public Node, public std::vector<NodePtr> {
+ void anchor() override;
+
+public:
+ ArrayNode() : Node(NK_Array) {}
+ static bool classof(const Node *N) { return N->getKind() == NK_Array; }
+
+ void write(Writer &MPWriter) override {
+ MPWriter.writeArraySize(this->size());
+ for (auto &N : *this)
+ N->write(MPWriter);
+ }
+};
+
+class MapNode : public Node, public StringMap<NodePtr> {
+ void anchor() override;
+
+public:
+ MapNode() : Node(NK_Map) {}
+ static bool classof(const Node *N) { return N->getKind() == NK_Map; }
+
+ void write(Writer &MPWriter) override {
+ MPWriter.writeMapSize(this->size());
+ for (auto &N : *this) {
+ MPWriter.write(N.first());
+ N.second->write(MPWriter);
+ }
+ }
+};
+
+} // end namespace msgpack
+
+namespace yaml {
+
+template <> struct PolymorphicTraits<msgpack::NodePtr> {
+ static NodeKind getKind(const msgpack::NodePtr &N) {
+ if (isa<msgpack::ScalarNode>(*N))
+ return NodeKind::Scalar;
+ if (isa<msgpack::MapNode>(*N))
+ return NodeKind::Map;
+ if (isa<msgpack::ArrayNode>(*N))
+ return NodeKind::Sequence;
+ llvm_unreachable("NodeKind not supported");
+ }
+ static msgpack::ScalarNode &getAsScalar(msgpack::NodePtr &N) {
+ if (!N || !isa<msgpack::ScalarNode>(*N))
+ N.reset(new msgpack::ScalarNode());
+ return *cast<msgpack::ScalarNode>(N.get());
+ }
+ static msgpack::MapNode &getAsMap(msgpack::NodePtr &N) {
+ if (!N || !isa<msgpack::MapNode>(*N))
+ N.reset(new msgpack::MapNode());
+ return *cast<msgpack::MapNode>(N.get());
+ }
+ static msgpack::ArrayNode &getAsSequence(msgpack::NodePtr &N) {
+ if (!N || !isa<msgpack::ArrayNode>(*N))
+ N.reset(new msgpack::ArrayNode());
+ return *cast<msgpack::ArrayNode>(N.get());
+ }
+};
+
+template <> struct TaggedScalarTraits<msgpack::ScalarNode> {
+ static void output(const msgpack::ScalarNode &S, void *Ctxt,
+ raw_ostream &ScalarOS, raw_ostream &TagOS) {
+ if (!S.IgnoreTag)
+ TagOS << S.getYAMLTag();
+ S.outputYAML(ScalarOS);
+ }
+
+ static StringRef input(StringRef ScalarStr, StringRef Tag, void *Ctxt,
+ msgpack::ScalarNode &S) {
+ if (Tag == msgpack::ScalarNode::IntTag) {
+ S.setScalarKind(msgpack::ScalarNode::SK_UInt);
+ if (S.inputYAML(ScalarStr) == StringRef())
+ return StringRef();
+ S.setScalarKind(msgpack::ScalarNode::SK_Int);
+ return S.inputYAML(ScalarStr);
+ }
+
+ if (S.IgnoreTag || Tag == msgpack::ScalarNode::StringTag ||
+ Tag == "tag:yaml.org,2002:str")
+ S.setScalarKind(msgpack::ScalarNode::SK_String);
+ else if (Tag == msgpack::ScalarNode::NilTag)
+ S.setScalarKind(msgpack::ScalarNode::SK_Nil);
+ else if (Tag == msgpack::ScalarNode::BooleanTag)
+ S.setScalarKind(msgpack::ScalarNode::SK_Boolean);
+ else if (Tag == msgpack::ScalarNode::FloatTag)
+ S.setScalarKind(msgpack::ScalarNode::SK_Float);
+ else if (Tag == msgpack::ScalarNode::StringTag)
+ S.setScalarKind(msgpack::ScalarNode::SK_String);
+ else if (Tag == msgpack::ScalarNode::BinaryTag)
+ S.setScalarKind(msgpack::ScalarNode::SK_Binary);
+ else
+ return "Unsupported messagepack tag";
+
+ return S.inputYAML(ScalarStr);
+ }
+
+ static QuotingType mustQuote(const msgpack::ScalarNode &S, StringRef Str) {
+ return S.mustQuoteYAML(Str);
+ }
+};
+
+template <> struct CustomMappingTraits<msgpack::MapNode> {
+ static void inputOne(IO &IO, StringRef Key, msgpack::MapNode &M) {
+ IO.mapRequired(Key.str().c_str(), M[Key]);
+ }
+ static void output(IO &IO, msgpack::MapNode &M) {
+ for (auto &N : M)
+ IO.mapRequired(N.getKey().str().c_str(), N.getValue());
+ }
+};
+
+template <> struct SequenceTraits<msgpack::ArrayNode> {
+ static size_t size(IO &IO, msgpack::ArrayNode &A) { return A.size(); }
+ static msgpack::NodePtr &element(IO &IO, msgpack::ArrayNode &A,
+ size_t Index) {
+ if (Index >= A.size())
+ A.resize(Index + 1);
+ return A[Index];
+ }
+};
+
+} // end namespace yaml
+} // end namespace llvm
+
+#endif // LLVM_BINARYFORMAT_MSGPACKTYPES_H
diff --git a/linux-x64/clang/include/llvm/BinaryFormat/MsgPackWriter.h b/linux-x64/clang/include/llvm/BinaryFormat/MsgPackWriter.h
index 98af422..3b610b7 100644
--- a/linux-x64/clang/include/llvm/BinaryFormat/MsgPackWriter.h
+++ b/linux-x64/clang/include/llvm/BinaryFormat/MsgPackWriter.h
@@ -1,9 +1,8 @@
//===- MsgPackWriter.h - Simple MsgPack writer ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/BinaryFormat/Wasm.h b/linux-x64/clang/include/llvm/BinaryFormat/Wasm.h
index 44dd92e..51f6ab2 100644
--- a/linux-x64/clang/include/llvm/BinaryFormat/Wasm.h
+++ b/linux-x64/clang/include/llvm/BinaryFormat/Wasm.h
@@ -1,9 +1,8 @@
//===- Wasm.h - Wasm object file format -------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -26,7 +25,7 @@
// Wasm binary format version
const uint32_t WasmVersion = 0x1;
// Wasm linking metadata version
-const uint32_t WasmMetadataVersion = 0x1;
+const uint32_t WasmMetadataVersion = 0x2;
// Wasm uses a 64k page size
const uint32_t WasmPageSize = 65536;
@@ -35,6 +34,20 @@
uint32_t Version;
};
+struct WasmDylinkInfo {
+ uint32_t MemorySize; // Memory size in bytes
+ uint32_t MemoryAlignment; // P2 alignment of memory
+ uint32_t TableSize; // Table size in elements
+ uint32_t TableAlignment; // P2 alignment of table
+ std::vector<StringRef> Needed; // Shared library depenedencies
+};
+
+struct WasmProducerInfo {
+ std::vector<std::pair<std::string, std::string>> Languages;
+ std::vector<std::pair<std::string, std::string>> Tools;
+ std::vector<std::pair<std::string, std::string>> SDKs;
+};
+
struct WasmExport {
StringRef Name;
uint8_t Kind;
@@ -75,6 +88,18 @@
StringRef SymbolName; // from the "linking" section
};
+struct WasmEventType {
+ // Kind of event. Currently only WASM_EVENT_ATTRIBUTE_EXCEPTION is possible.
+ uint32_t Attribute;
+ uint32_t SigIndex;
+};
+
+struct WasmEvent {
+ uint32_t Index;
+ WasmEventType Type;
+ StringRef SymbolName; // from the "linking" section
+};
+
struct WasmImport {
StringRef Module;
StringRef Field;
@@ -84,6 +109,7 @@
WasmGlobalType Global;
WasmTable Table;
WasmLimits Memory;
+ WasmEventType Event;
};
};
@@ -144,7 +170,8 @@
StringRef Name;
uint8_t Kind;
uint32_t Flags;
- StringRef Module; // For undefined symbols the module name of the import
+ StringRef ImportModule; // For undefined symbols the module of the import
+ StringRef ImportName; // For undefined symbols the name of the import
union {
// For function or global symbols, the index in function or global index
// space.
@@ -167,18 +194,20 @@
};
enum : unsigned {
- WASM_SEC_CUSTOM = 0, // Custom / User-defined section
- WASM_SEC_TYPE = 1, // Function signature declarations
- WASM_SEC_IMPORT = 2, // Import declarations
- WASM_SEC_FUNCTION = 3, // Function declarations
- WASM_SEC_TABLE = 4, // Indirect function table and other tables
- WASM_SEC_MEMORY = 5, // Memory attributes
- WASM_SEC_GLOBAL = 6, // Global declarations
- WASM_SEC_EXPORT = 7, // Exports
- WASM_SEC_START = 8, // Start function declaration
- WASM_SEC_ELEM = 9, // Elements section
- WASM_SEC_CODE = 10, // Function bodies (code)
- WASM_SEC_DATA = 11 // Data segments
+ WASM_SEC_CUSTOM = 0, // Custom / User-defined section
+ WASM_SEC_TYPE = 1, // Function signature declarations
+ WASM_SEC_IMPORT = 2, // Import declarations
+ WASM_SEC_FUNCTION = 3, // Function declarations
+ WASM_SEC_TABLE = 4, // Indirect function table and other tables
+ WASM_SEC_MEMORY = 5, // Memory attributes
+ WASM_SEC_GLOBAL = 6, // Global declarations
+ WASM_SEC_EXPORT = 7, // Exports
+ WASM_SEC_START = 8, // Start function declaration
+ WASM_SEC_ELEM = 9, // Elements section
+ WASM_SEC_CODE = 10, // Function bodies (code)
+ WASM_SEC_DATA = 11, // Data segments
+ WASM_SEC_DATACOUNT = 12, // Data segment count
+ WASM_SEC_EVENT = 13 // Event declarations
};
// Type immediate encodings used in various contexts.
@@ -188,7 +217,7 @@
WASM_TYPE_F32 = 0x7D,
WASM_TYPE_F64 = 0x7C,
WASM_TYPE_V128 = 0x7B,
- WASM_TYPE_ANYFUNC = 0x70,
+ WASM_TYPE_FUNCREF = 0x70,
WASM_TYPE_EXCEPT_REF = 0x68,
WASM_TYPE_FUNC = 0x60,
WASM_TYPE_NORESULT = 0x40, // for blocks with no result values
@@ -200,12 +229,13 @@
WASM_EXTERNAL_TABLE = 0x1,
WASM_EXTERNAL_MEMORY = 0x2,
WASM_EXTERNAL_GLOBAL = 0x3,
+ WASM_EXTERNAL_EVENT = 0x4,
};
// Opcodes used in initializer expressions.
enum : unsigned {
WASM_OPCODE_END = 0x0b,
- WASM_OPCODE_GET_GLOBAL = 0x23,
+ WASM_OPCODE_GLOBAL_GET = 0x23,
WASM_OPCODE_I32_CONST = 0x41,
WASM_OPCODE_I64_CONST = 0x42,
WASM_OPCODE_F32_CONST = 0x43,
@@ -214,6 +244,7 @@
enum : unsigned {
WASM_LIMITS_FLAG_HAS_MAX = 0x1,
+ WASM_LIMITS_FLAG_IS_SHARED = 0x2,
};
// Kind codes used in the custom "name" section
@@ -242,6 +273,12 @@
WASM_SYMBOL_TYPE_DATA = 0x1,
WASM_SYMBOL_TYPE_GLOBAL = 0x2,
WASM_SYMBOL_TYPE_SECTION = 0x3,
+ WASM_SYMBOL_TYPE_EVENT = 0x4,
+};
+
+// Kinds of event attributes.
+enum WasmEventAttribute : unsigned {
+ WASM_EVENT_ATTRIBUTE_EXCEPTION = 0x0,
};
const unsigned WASM_SYMBOL_BINDING_MASK = 0x3;
@@ -253,6 +290,8 @@
const unsigned WASM_SYMBOL_VISIBILITY_DEFAULT = 0x0;
const unsigned WASM_SYMBOL_VISIBILITY_HIDDEN = 0x4;
const unsigned WASM_SYMBOL_UNDEFINED = 0x10;
+const unsigned WASM_SYMBOL_EXPORTED = 0x20;
+const unsigned WASM_SYMBOL_EXPLICIT_NAME = 0x40;
#define WASM_RELOC(name, value) name = value,
@@ -273,13 +312,13 @@
};
struct WasmSignature {
- SmallVector<wasm::ValType, 1> Returns;
- SmallVector<wasm::ValType, 4> Params;
+ SmallVector<ValType, 1> Returns;
+ SmallVector<ValType, 4> Params;
// Support empty and tombstone instances, needed by DenseMap.
enum { Plain, Empty, Tombstone } State = Plain;
- WasmSignature(SmallVector<wasm::ValType, 1> &&InReturns,
- SmallVector<wasm::ValType, 4> &&InParams)
+ WasmSignature(SmallVector<ValType, 1> &&InReturns,
+ SmallVector<ValType, 4> &&InParams)
: Returns(InReturns), Params(InParams) {}
WasmSignature() = default;
};
@@ -302,7 +341,7 @@
return !(LHS == RHS);
}
-std::string toString(wasm::WasmSymbolType type);
+std::string toString(WasmSymbolType type);
std::string relocTypetoString(uint32_t type);
} // end namespace wasm
diff --git a/linux-x64/clang/include/llvm/BinaryFormat/WasmRelocs.def b/linux-x64/clang/include/llvm/BinaryFormat/WasmRelocs.def
index 8ffd51e..59a786b 100644
--- a/linux-x64/clang/include/llvm/BinaryFormat/WasmRelocs.def
+++ b/linux-x64/clang/include/llvm/BinaryFormat/WasmRelocs.def
@@ -1,15 +1,15 @@
-
#ifndef WASM_RELOC
#error "WASM_RELOC must be defined"
#endif
-WASM_RELOC(R_WEBASSEMBLY_FUNCTION_INDEX_LEB, 0)
-WASM_RELOC(R_WEBASSEMBLY_TABLE_INDEX_SLEB, 1)
-WASM_RELOC(R_WEBASSEMBLY_TABLE_INDEX_I32, 2)
-WASM_RELOC(R_WEBASSEMBLY_MEMORY_ADDR_LEB, 3)
-WASM_RELOC(R_WEBASSEMBLY_MEMORY_ADDR_SLEB, 4)
-WASM_RELOC(R_WEBASSEMBLY_MEMORY_ADDR_I32, 5)
-WASM_RELOC(R_WEBASSEMBLY_TYPE_INDEX_LEB, 6)
-WASM_RELOC(R_WEBASSEMBLY_GLOBAL_INDEX_LEB, 7)
-WASM_RELOC(R_WEBASSEMBLY_FUNCTION_OFFSET_I32, 8)
-WASM_RELOC(R_WEBASSEMBLY_SECTION_OFFSET_I32, 9)
+WASM_RELOC(R_WASM_FUNCTION_INDEX_LEB, 0)
+WASM_RELOC(R_WASM_TABLE_INDEX_SLEB, 1)
+WASM_RELOC(R_WASM_TABLE_INDEX_I32, 2)
+WASM_RELOC(R_WASM_MEMORY_ADDR_LEB, 3)
+WASM_RELOC(R_WASM_MEMORY_ADDR_SLEB, 4)
+WASM_RELOC(R_WASM_MEMORY_ADDR_I32, 5)
+WASM_RELOC(R_WASM_TYPE_INDEX_LEB, 6)
+WASM_RELOC(R_WASM_GLOBAL_INDEX_LEB, 7)
+WASM_RELOC(R_WASM_FUNCTION_OFFSET_I32, 8)
+WASM_RELOC(R_WASM_SECTION_OFFSET_I32, 9)
+WASM_RELOC(R_WASM_EVENT_INDEX_LEB, 10)
diff --git a/linux-x64/clang/include/llvm/Bitcode/BitCodes.h b/linux-x64/clang/include/llvm/Bitcode/BitCodes.h
index bf21e14..a0d8dfd 100644
--- a/linux-x64/clang/include/llvm/Bitcode/BitCodes.h
+++ b/linux-x64/clang/include/llvm/Bitcode/BitCodes.h
@@ -1,9 +1,8 @@
//===- BitCodes.h - Enum values for the bitcode format ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -160,8 +159,6 @@
};
-template <> struct isPodLike<BitCodeAbbrevOp> { static const bool value=true; };
-
/// BitCodeAbbrev - This class represents an abbreviation record. An
/// abbreviation allows a complex record that has redundancy to be stored in a
/// specialized format instead of the fully-general, fully-vbr, format.
diff --git a/linux-x64/clang/include/llvm/Bitcode/BitcodeReader.h b/linux-x64/clang/include/llvm/Bitcode/BitcodeReader.h
index ce8bdd9..3e8e7ed 100644
--- a/linux-x64/clang/include/llvm/Bitcode/BitcodeReader.h
+++ b/linux-x64/clang/include/llvm/Bitcode/BitcodeReader.h
@@ -1,9 +1,8 @@
//===- llvm/Bitcode/BitcodeReader.h - Bitcode reader ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -51,6 +50,7 @@
struct BitcodeLTOInfo {
bool IsThinLTO;
bool HasSummary;
+ bool EnableSplitLTOUnit;
};
/// Represents a module in a bitcode file.
diff --git a/linux-x64/clang/include/llvm/Bitcode/BitcodeWriter.h b/linux-x64/clang/include/llvm/Bitcode/BitcodeWriter.h
index 0010cf6..39061e0 100644
--- a/linux-x64/clang/include/llvm/Bitcode/BitcodeWriter.h
+++ b/linux-x64/clang/include/llvm/Bitcode/BitcodeWriter.h
@@ -1,9 +1,8 @@
//===- llvm/Bitcode/BitcodeWriter.h - Bitcode writers -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Bitcode/BitcodeWriterPass.h b/linux-x64/clang/include/llvm/Bitcode/BitcodeWriterPass.h
index 05044c9..1773d1b 100644
--- a/linux-x64/clang/include/llvm/Bitcode/BitcodeWriterPass.h
+++ b/linux-x64/clang/include/llvm/Bitcode/BitcodeWriterPass.h
@@ -1,9 +1,8 @@
//===-- BitcodeWriterPass.h - Bitcode writing pass --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Bitcode/BitstreamReader.h b/linux-x64/clang/include/llvm/Bitcode/BitstreamReader.h
index 72e7619..90cbe7b 100644
--- a/linux-x64/clang/include/llvm/Bitcode/BitstreamReader.h
+++ b/linux-x64/clang/include/llvm/Bitcode/BitstreamReader.h
@@ -1,9 +1,8 @@
//===- BitstreamReader.h - Low-level bitstream reader interface -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Bitcode/BitstreamWriter.h b/linux-x64/clang/include/llvm/Bitcode/BitstreamWriter.h
index c854769..3de3998 100644
--- a/linux-x64/clang/include/llvm/Bitcode/BitstreamWriter.h
+++ b/linux-x64/clang/include/llvm/Bitcode/BitstreamWriter.h
@@ -1,9 +1,8 @@
//===- BitstreamWriter.h - Low-level bitstream writer interface -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Bitcode/LLVMBitCodes.h b/linux-x64/clang/include/llvm/Bitcode/LLVMBitCodes.h
index 5467ecc..71148ac 100644
--- a/linux-x64/clang/include/llvm/Bitcode/LLVMBitCodes.h
+++ b/linux-x64/clang/include/llvm/Bitcode/LLVMBitCodes.h
@@ -1,9 +1,8 @@
//===- LLVMBitCodes.h - Enum values for the LLVM bitcode format -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -342,6 +341,7 @@
CST_CODE_INLINEASM = 23, // INLINEASM: [sideeffect|alignstack|
// asmdialect,asmstr,conststr]
CST_CODE_CE_GEP_WITH_INRANGE_INDEX = 24, // [opty, flags, n x operands]
+ CST_CODE_CE_UNOP = 25, // CE_UNOP: [opcode, opval]
};
/// CastOpcodes - These are values used in the bitcode files to encode which
@@ -364,6 +364,14 @@
CAST_ADDRSPACECAST = 12
};
+/// UnaryOpcodes - These are values used in the bitcode files to encode which
+/// unop a CST_CODE_CE_UNOP or a XXX refers to. The values of these enums
+/// have no fixed relation to the LLVM IR enum values. Changing these will
+/// break compatibility with old files.
+enum UnaryOpcodes {
+ UNOP_NEG = 0
+};
+
/// BinaryOpcodes - These are values used in the bitcode files to encode which
/// binop a CST_CODE_CE_BINOP or a XXX refers to. The values of these enums
/// have no fixed relation to the LLVM IR enum values. Changing these will
@@ -398,7 +406,9 @@
RMW_MAX = 7,
RMW_MIN = 8,
RMW_UMAX = 9,
- RMW_UMIN = 10
+ RMW_UMIN = 10,
+ RMW_FADD = 11,
+ RMW_FSUB = 12
};
/// OverflowingBinaryOperatorOptionalFlags - Flags for serializing
@@ -524,6 +534,9 @@
// 53 is unused.
// 54 is unused.
FUNC_CODE_OPERAND_BUNDLE = 55, // OPERAND_BUNDLE: [tag#, value...]
+ FUNC_CODE_INST_UNOP = 56, // UNOP: [opcode, ty, opval]
+ FUNC_CODE_INST_CALLBR = 57, // CALLBR: [attr, cc, norm, transfs,
+ // fnty, fnid, args...]
};
enum UseListCodes {
diff --git a/linux-x64/clang/include/llvm/CodeGen/AccelTable.h b/linux-x64/clang/include/llvm/CodeGen/AccelTable.h
index 1392858..9731abd 100644
--- a/linux-x64/clang/include/llvm/CodeGen/AccelTable.h
+++ b/linux-x64/clang/include/llvm/CodeGen/AccelTable.h
@@ -1,9 +1,8 @@
//==- include/llvm/CodeGen/AccelTable.h - Accelerator Tables -----*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/Analysis.h b/linux-x64/clang/include/llvm/CodeGen/Analysis.h
index d77aee6..468768d 100644
--- a/linux-x64/clang/include/llvm/CodeGen/Analysis.h
+++ b/linux-x64/clang/include/llvm/CodeGen/Analysis.h
@@ -1,9 +1,8 @@
//===- CodeGen/Analysis.h - CodeGen LLVM IR Analysis Utilities --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/AsmPrinter.h b/linux-x64/clang/include/llvm/CodeGen/AsmPrinter.h
index 14bc081..fb12bb2 100644
--- a/linux-x64/clang/include/llvm/CodeGen/AsmPrinter.h
+++ b/linux-x64/clang/include/llvm/CodeGen/AsmPrinter.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/AsmPrinter.h - AsmPrinter Framework ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -71,6 +70,7 @@
class MDNode;
class Module;
class raw_ostream;
+class StackMaps;
class TargetLoweringObjectFile;
class TargetMachine;
@@ -121,9 +121,6 @@
using GOTEquivUsePair = std::pair<const GlobalVariable *, unsigned>;
MapVector<const MCSymbol *, GOTEquivUsePair> GlobalGOTEquivs;
- /// Enable print [latency:throughput] in output.
- bool EnablePrintSchedInfo = false;
-
private:
MCSymbol *CurrentFnBegin = nullptr;
MCSymbol *CurrentFnEnd = nullptr;
@@ -137,6 +134,9 @@
static char ID;
+protected:
+ /// Protected struct HandlerInfo and Handlers permit target extended
+ /// AsmPrinter adds their own handlers.
struct HandlerInfo {
AsmPrinterHandler *Handler;
const char *TimerName;
@@ -223,6 +223,9 @@
void EmitToStreamer(MCStreamer &S, const MCInst &Inst);
+ /// Emits inital debug location directive.
+ void emitInitialRawDwarfLocDirective(const MachineFunction &MF);
+
/// Return the current section we are emitting to.
const MCSection *getCurrentSection() const;
@@ -365,6 +368,9 @@
/// emit the proxies we previously omitted in EmitGlobalVariable.
void emitGlobalGOTEquivs();
+ /// Emit the stack maps.
+ void emitStackMaps(StackMaps &SM);
+
//===------------------------------------------------------------------===//
// Overridable Hooks
//===------------------------------------------------------------------===//
@@ -542,7 +548,7 @@
///
/// \p Value - The value to emit.
/// \p Size - The size of the integer (in bytes) to emit.
- virtual void EmitDebugThreadLocal(const MCExpr *Value, unsigned Size) const;
+ virtual void EmitDebugValue(const MCExpr *Value, unsigned Size) const;
//===------------------------------------------------------------------===//
// Dwarf Lowering Routines
@@ -652,6 +658,8 @@
void EmitLLVMUsedList(const ConstantArray *InitList);
/// Emit llvm.ident metadata in an '.ident' directive.
void EmitModuleIdents(Module &M);
+ /// Emit bytes for llvm.commandline metadata.
+ void EmitModuleCommandLines(Module &M);
void EmitXXStructorList(const DataLayout &DL, const Constant *List,
bool isCtor);
diff --git a/linux-x64/clang/include/llvm/CodeGen/AsmPrinterHandler.h b/linux-x64/clang/include/llvm/CodeGen/AsmPrinterHandler.h
new file mode 100644
index 0000000..affb558
--- /dev/null
+++ b/linux-x64/clang/include/llvm/CodeGen/AsmPrinterHandler.h
@@ -0,0 +1,73 @@
+//===-- llvm/CodeGen/AsmPrinterHandler.h -----------------------*- C++ -*--===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file contains a generic interface for AsmPrinter handlers,
+// like debug and EH info emitters.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CODEGEN_ASMPRINTERHANDLER_H
+#define LLVM_CODEGEN_ASMPRINTERHANDLER_H
+
+#include "llvm/Support/DataTypes.h"
+
+namespace llvm {
+
+class AsmPrinter;
+class MachineBasicBlock;
+class MachineFunction;
+class MachineInstr;
+class MCSymbol;
+
+typedef MCSymbol *ExceptionSymbolProvider(AsmPrinter *Asm);
+
+/// Collects and handles AsmPrinter objects required to build debug
+/// or EH information.
+class AsmPrinterHandler {
+public:
+ virtual ~AsmPrinterHandler();
+
+ /// For symbols that have a size designated (e.g. common symbols),
+ /// this tracks that size.
+ virtual void setSymbolSize(const MCSymbol *Sym, uint64_t Size) = 0;
+
+ /// Emit all sections that should come after the content.
+ virtual void endModule() = 0;
+
+ /// Gather pre-function debug information.
+ /// Every beginFunction(MF) call should be followed by an endFunction(MF)
+ /// call.
+ virtual void beginFunction(const MachineFunction *MF) = 0;
+
+ // Emit any of function marker (like .cfi_endproc). This is called
+ // before endFunction and cannot switch sections.
+ virtual void markFunctionEnd();
+
+ /// Gather post-function debug information.
+ /// Please note that some AsmPrinter implementations may not call
+ /// beginFunction at all.
+ virtual void endFunction(const MachineFunction *MF) = 0;
+
+ virtual void beginFragment(const MachineBasicBlock *MBB,
+ ExceptionSymbolProvider ESP) {}
+ virtual void endFragment() {}
+
+ /// Emit target-specific EH funclet machinery.
+ virtual void beginFunclet(const MachineBasicBlock &MBB,
+ MCSymbol *Sym = nullptr) {}
+ virtual void endFunclet() {}
+
+ /// Process beginning of an instruction.
+ virtual void beginInstruction(const MachineInstr *MI) = 0;
+
+ /// Process end of an instruction.
+ virtual void endInstruction() = 0;
+};
+} // End of namespace llvm
+
+#endif
diff --git a/linux-x64/clang/include/llvm/CodeGen/AtomicExpandUtils.h b/linux-x64/clang/include/llvm/CodeGen/AtomicExpandUtils.h
index b1adf66..8a46c6e 100644
--- a/linux-x64/clang/include/llvm/CodeGen/AtomicExpandUtils.h
+++ b/linux-x64/clang/include/llvm/CodeGen/AtomicExpandUtils.h
@@ -1,9 +1,8 @@
//===- AtomicExpandUtils.h - Utilities for expanding atomic instructions --===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/CodeGen/BasicTTIImpl.h b/linux-x64/clang/include/llvm/CodeGen/BasicTTIImpl.h
index b460cdc..1e9aeab 100644
--- a/linux-x64/clang/include/llvm/CodeGen/BasicTTIImpl.h
+++ b/linux-x64/clang/include/llvm/CodeGen/BasicTTIImpl.h
@@ -1,9 +1,8 @@
//===- BasicTTIImpl.h -------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -80,6 +79,23 @@
using BaseT = TargetTransformInfoImplCRTPBase<T>;
using TTI = TargetTransformInfo;
+ /// Estimate a cost of Broadcast as an extract and sequence of insert
+ /// operations.
+ unsigned getBroadcastShuffleOverhead(Type *Ty) {
+ assert(Ty->isVectorTy() && "Can only shuffle vectors");
+ unsigned Cost = 0;
+ // Broadcast cost is equal to the cost of extracting the zero'th element
+ // plus the cost of inserting it into every element of the result vector.
+ Cost += static_cast<T *>(this)->getVectorInstrCost(
+ Instruction::ExtractElement, Ty, 0);
+
+ for (int i = 0, e = Ty->getVectorNumElements(); i < e; ++i) {
+ Cost += static_cast<T *>(this)->getVectorInstrCost(
+ Instruction::InsertElement, Ty, i);
+ }
+ return Cost;
+ }
+
/// Estimate a cost of shuffle as a sequence of extract and insert
/// operations.
unsigned getPermuteShuffleOverhead(Type *Ty) {
@@ -101,6 +117,50 @@
return Cost;
}
+ /// Estimate a cost of subvector extraction as a sequence of extract and
+ /// insert operations.
+ unsigned getExtractSubvectorOverhead(Type *Ty, int Index, Type *SubTy) {
+ assert(Ty && Ty->isVectorTy() && SubTy && SubTy->isVectorTy() &&
+ "Can only extract subvectors from vectors");
+ int NumSubElts = SubTy->getVectorNumElements();
+ assert((Index + NumSubElts) <= (int)Ty->getVectorNumElements() &&
+ "SK_ExtractSubvector index out of range");
+
+ unsigned Cost = 0;
+ // Subvector extraction cost is equal to the cost of extracting element from
+ // the source type plus the cost of inserting them into the result vector
+ // type.
+ for (int i = 0; i != NumSubElts; ++i) {
+ Cost += static_cast<T *>(this)->getVectorInstrCost(
+ Instruction::ExtractElement, Ty, i + Index);
+ Cost += static_cast<T *>(this)->getVectorInstrCost(
+ Instruction::InsertElement, SubTy, i);
+ }
+ return Cost;
+ }
+
+ /// Estimate a cost of subvector insertion as a sequence of extract and
+ /// insert operations.
+ unsigned getInsertSubvectorOverhead(Type *Ty, int Index, Type *SubTy) {
+ assert(Ty && Ty->isVectorTy() && SubTy && SubTy->isVectorTy() &&
+ "Can only insert subvectors into vectors");
+ int NumSubElts = SubTy->getVectorNumElements();
+ assert((Index + NumSubElts) <= (int)Ty->getVectorNumElements() &&
+ "SK_InsertSubvector index out of range");
+
+ unsigned Cost = 0;
+ // Subvector insertion cost is equal to the cost of extracting element from
+ // the source type plus the cost of inserting them into the result vector
+ // type.
+ for (int i = 0; i != NumSubElts; ++i) {
+ Cost += static_cast<T *>(this)->getVectorInstrCost(
+ Instruction::ExtractElement, SubTy, i);
+ Cost += static_cast<T *>(this)->getVectorInstrCost(
+ Instruction::InsertElement, Ty, i + Index);
+ }
+ return Cost;
+ }
+
/// Local query method delegates up to T which *must* implement this!
const TargetSubtargetInfo *getST() const {
return static_cast<const T *>(this)->getST();
@@ -554,14 +614,20 @@
unsigned getShuffleCost(TTI::ShuffleKind Kind, Type *Tp, int Index,
Type *SubTp) {
switch (Kind) {
+ case TTI::SK_Broadcast:
+ return getBroadcastShuffleOverhead(Tp);
case TTI::SK_Select:
+ case TTI::SK_Reverse:
case TTI::SK_Transpose:
case TTI::SK_PermuteSingleSrc:
case TTI::SK_PermuteTwoSrc:
return getPermuteShuffleOverhead(Tp);
- default:
- return 1;
+ case TTI::SK_ExtractSubvector:
+ return getExtractSubvectorOverhead(Tp, Index, SubTp);
+ case TTI::SK_InsertSubvector:
+ return getInsertSubvectorOverhead(Tp, Index, SubTp);
}
+ llvm_unreachable("Unknown TTI::ShuffleKind");
}
unsigned getCastInstrCost(unsigned Opcode, Type *Dst, Type *Src,
@@ -783,8 +849,9 @@
unsigned getInterleavedMemoryOpCost(unsigned Opcode, Type *VecTy,
unsigned Factor,
ArrayRef<unsigned> Indices,
- unsigned Alignment,
- unsigned AddressSpace) {
+ unsigned Alignment, unsigned AddressSpace,
+ bool UseMaskForCond = false,
+ bool UseMaskForGaps = false) {
VectorType *VT = dyn_cast<VectorType>(VecTy);
assert(VT && "Expect a vector type for interleaved memory op");
@@ -795,8 +862,13 @@
VectorType *SubVT = VectorType::get(VT->getElementType(), NumSubElts);
// Firstly, the cost of load/store operation.
- unsigned Cost = static_cast<T *>(this)->getMemoryOpCost(
- Opcode, VecTy, Alignment, AddressSpace);
+ unsigned Cost;
+ if (UseMaskForCond || UseMaskForGaps)
+ Cost = static_cast<T *>(this)->getMaskedMemoryOpCost(
+ Opcode, VecTy, Alignment, AddressSpace);
+ else
+ Cost = static_cast<T *>(this)->getMemoryOpCost(Opcode, VecTy, Alignment,
+ AddressSpace);
// Legalize the vector type, and get the legalized and unlegalized type
// sizes.
@@ -892,6 +964,40 @@
->getVectorInstrCost(Instruction::InsertElement, VT, i);
}
+ if (!UseMaskForCond)
+ return Cost;
+
+ Type *I8Type = Type::getInt8Ty(VT->getContext());
+ VectorType *MaskVT = VectorType::get(I8Type, NumElts);
+ SubVT = VectorType::get(I8Type, NumSubElts);
+
+ // The Mask shuffling cost is extract all the elements of the Mask
+ // and insert each of them Factor times into the wide vector:
+ //
+ // E.g. an interleaved group with factor 3:
+ // %mask = icmp ult <8 x i32> %vec1, %vec2
+ // %interleaved.mask = shufflevector <8 x i1> %mask, <8 x i1> undef,
+ // <24 x i32> <0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7>
+ // The cost is estimated as extract all mask elements from the <8xi1> mask
+ // vector and insert them factor times into the <24xi1> shuffled mask
+ // vector.
+ for (unsigned i = 0; i < NumSubElts; i++)
+ Cost += static_cast<T *>(this)->getVectorInstrCost(
+ Instruction::ExtractElement, SubVT, i);
+
+ for (unsigned i = 0; i < NumElts; i++)
+ Cost += static_cast<T *>(this)->getVectorInstrCost(
+ Instruction::InsertElement, MaskVT, i);
+
+ // The Gaps mask is invariant and created outside the loop, therefore the
+ // cost of creating it is not accounted for here. However if we have both
+ // a MaskForGaps and some other mask that guards the execution of the
+ // memory access, we need to account for the cost of And-ing the two masks
+ // inside the loop.
+ if (UseMaskForGaps)
+ Cost += static_cast<T *>(this)->getArithmeticInstrCost(
+ BinaryOperator::And, MaskVT);
+
return Cost;
}
@@ -901,6 +1007,7 @@
unsigned VF = 1) {
unsigned RetVF = (RetTy->isVectorTy() ? RetTy->getVectorNumElements() : 1);
assert((RetVF == 1 || VF == 1) && "VF > 1 and RetVF is a vector type");
+ auto *ConcreteTTI = static_cast<T *>(this);
switch (IID) {
default: {
@@ -926,29 +1033,24 @@
ScalarizationCost += getOperandsScalarizationOverhead(Args, VF);
}
- return static_cast<T *>(this)->
- getIntrinsicInstrCost(IID, RetTy, Types, FMF, ScalarizationCost);
+ return ConcreteTTI->getIntrinsicInstrCost(IID, RetTy, Types, FMF,
+ ScalarizationCost);
}
case Intrinsic::masked_scatter: {
assert(VF == 1 && "Can't vectorize types here.");
Value *Mask = Args[3];
bool VarMask = !isa<Constant>(Mask);
unsigned Alignment = cast<ConstantInt>(Args[2])->getZExtValue();
- return
- static_cast<T *>(this)->getGatherScatterOpCost(Instruction::Store,
- Args[0]->getType(),
- Args[1], VarMask,
- Alignment);
+ return ConcreteTTI->getGatherScatterOpCost(
+ Instruction::Store, Args[0]->getType(), Args[1], VarMask, Alignment);
}
case Intrinsic::masked_gather: {
assert(VF == 1 && "Can't vectorize types here.");
Value *Mask = Args[2];
bool VarMask = !isa<Constant>(Mask);
unsigned Alignment = cast<ConstantInt>(Args[1])->getZExtValue();
- return
- static_cast<T *>(this)->getGatherScatterOpCost(Instruction::Load,
- RetTy, Args[0], VarMask,
- Alignment);
+ return ConcreteTTI->getGatherScatterOpCost(Instruction::Load, RetTy,
+ Args[0], VarMask, Alignment);
}
case Intrinsic::experimental_vector_reduce_add:
case Intrinsic::experimental_vector_reduce_mul:
@@ -964,6 +1066,45 @@
case Intrinsic::experimental_vector_reduce_umax:
case Intrinsic::experimental_vector_reduce_umin:
return getIntrinsicInstrCost(IID, RetTy, Args[0]->getType(), FMF);
+ case Intrinsic::fshl:
+ case Intrinsic::fshr: {
+ Value *X = Args[0];
+ Value *Y = Args[1];
+ Value *Z = Args[2];
+ TTI::OperandValueProperties OpPropsX, OpPropsY, OpPropsZ, OpPropsBW;
+ TTI::OperandValueKind OpKindX = TTI::getOperandInfo(X, OpPropsX);
+ TTI::OperandValueKind OpKindY = TTI::getOperandInfo(Y, OpPropsY);
+ TTI::OperandValueKind OpKindZ = TTI::getOperandInfo(Z, OpPropsZ);
+ TTI::OperandValueKind OpKindBW = TTI::OK_UniformConstantValue;
+ OpPropsBW = isPowerOf2_32(RetTy->getScalarSizeInBits()) ? TTI::OP_PowerOf2
+ : TTI::OP_None;
+ // fshl: (X << (Z % BW)) | (Y >> (BW - (Z % BW)))
+ // fshr: (X << (BW - (Z % BW))) | (Y >> (Z % BW))
+ unsigned Cost = 0;
+ Cost += ConcreteTTI->getArithmeticInstrCost(BinaryOperator::Or, RetTy);
+ Cost += ConcreteTTI->getArithmeticInstrCost(BinaryOperator::Sub, RetTy);
+ Cost += ConcreteTTI->getArithmeticInstrCost(BinaryOperator::Shl, RetTy,
+ OpKindX, OpKindZ, OpPropsX);
+ Cost += ConcreteTTI->getArithmeticInstrCost(BinaryOperator::LShr, RetTy,
+ OpKindY, OpKindZ, OpPropsY);
+ // Non-constant shift amounts requires a modulo.
+ if (OpKindZ != TTI::OK_UniformConstantValue &&
+ OpKindZ != TTI::OK_NonUniformConstantValue)
+ Cost += ConcreteTTI->getArithmeticInstrCost(BinaryOperator::URem, RetTy,
+ OpKindZ, OpKindBW, OpPropsZ,
+ OpPropsBW);
+ // For non-rotates (X != Y) we must add shift-by-zero handling costs.
+ if (X != Y) {
+ Type *CondTy = Type::getInt1Ty(RetTy->getContext());
+ if (RetVF > 1)
+ CondTy = VectorType::get(CondTy, RetVF);
+ Cost += ConcreteTTI->getCmpSelInstrCost(BinaryOperator::ICmp, RetTy,
+ CondTy, nullptr);
+ Cost += ConcreteTTI->getCmpSelInstrCost(BinaryOperator::Select, RetTy,
+ CondTy, nullptr);
+ }
+ return Cost;
+ }
}
}
@@ -974,6 +1115,9 @@
unsigned getIntrinsicInstrCost(
Intrinsic::ID IID, Type *RetTy, ArrayRef<Type *> Tys, FastMathFlags FMF,
unsigned ScalarizationCostPassed = std::numeric_limits<unsigned>::max()) {
+ unsigned RetVF = (RetTy->isVectorTy() ? RetTy->getVectorNumElements() : 1);
+ auto *ConcreteTTI = static_cast<T *>(this);
+
SmallVector<unsigned, 2> ISDs;
unsigned SingleCallCost = 10; // Library call cost. Make it expensive.
switch (IID) {
@@ -1002,8 +1146,8 @@
if (ScalarCalls == 1)
return 1; // Return cost of a scalar intrinsic. Assume it to be cheap.
- unsigned ScalarCost = static_cast<T *>(this)->getIntrinsicInstrCost(
- IID, ScalarRetTy, ScalarTys, FMF);
+ unsigned ScalarCost =
+ ConcreteTTI->getIntrinsicInstrCost(IID, ScalarRetTy, ScalarTys, FMF);
return ScalarCalls * ScalarCost + ScalarizationCost;
}
@@ -1042,12 +1186,12 @@
case Intrinsic::minnum:
ISDs.push_back(ISD::FMINNUM);
if (FMF.noNaNs())
- ISDs.push_back(ISD::FMINNAN);
+ ISDs.push_back(ISD::FMINIMUM);
break;
case Intrinsic::maxnum:
ISDs.push_back(ISD::FMAXNUM);
if (FMF.noNaNs())
- ISDs.push_back(ISD::FMAXNAN);
+ ISDs.push_back(ISD::FMAXIMUM);
break;
case Intrinsic::copysign:
ISDs.push_back(ISD::FCOPYSIGN);
@@ -1085,44 +1229,123 @@
case Intrinsic::sideeffect:
return 0;
case Intrinsic::masked_store:
- return static_cast<T *>(this)
- ->getMaskedMemoryOpCost(Instruction::Store, Tys[0], 0, 0);
+ return ConcreteTTI->getMaskedMemoryOpCost(Instruction::Store, Tys[0], 0,
+ 0);
case Intrinsic::masked_load:
- return static_cast<T *>(this)
- ->getMaskedMemoryOpCost(Instruction::Load, RetTy, 0, 0);
+ return ConcreteTTI->getMaskedMemoryOpCost(Instruction::Load, RetTy, 0, 0);
case Intrinsic::experimental_vector_reduce_add:
- return static_cast<T *>(this)->getArithmeticReductionCost(
- Instruction::Add, Tys[0], /*IsPairwiseForm=*/false);
+ return ConcreteTTI->getArithmeticReductionCost(Instruction::Add, Tys[0],
+ /*IsPairwiseForm=*/false);
case Intrinsic::experimental_vector_reduce_mul:
- return static_cast<T *>(this)->getArithmeticReductionCost(
- Instruction::Mul, Tys[0], /*IsPairwiseForm=*/false);
+ return ConcreteTTI->getArithmeticReductionCost(Instruction::Mul, Tys[0],
+ /*IsPairwiseForm=*/false);
case Intrinsic::experimental_vector_reduce_and:
- return static_cast<T *>(this)->getArithmeticReductionCost(
- Instruction::And, Tys[0], /*IsPairwiseForm=*/false);
+ return ConcreteTTI->getArithmeticReductionCost(Instruction::And, Tys[0],
+ /*IsPairwiseForm=*/false);
case Intrinsic::experimental_vector_reduce_or:
- return static_cast<T *>(this)->getArithmeticReductionCost(
- Instruction::Or, Tys[0], /*IsPairwiseForm=*/false);
+ return ConcreteTTI->getArithmeticReductionCost(Instruction::Or, Tys[0],
+ /*IsPairwiseForm=*/false);
case Intrinsic::experimental_vector_reduce_xor:
- return static_cast<T *>(this)->getArithmeticReductionCost(
- Instruction::Xor, Tys[0], /*IsPairwiseForm=*/false);
+ return ConcreteTTI->getArithmeticReductionCost(Instruction::Xor, Tys[0],
+ /*IsPairwiseForm=*/false);
case Intrinsic::experimental_vector_reduce_fadd:
- return static_cast<T *>(this)->getArithmeticReductionCost(
- Instruction::FAdd, Tys[0], /*IsPairwiseForm=*/false);
+ return ConcreteTTI->getArithmeticReductionCost(Instruction::FAdd, Tys[0],
+ /*IsPairwiseForm=*/false);
case Intrinsic::experimental_vector_reduce_fmul:
- return static_cast<T *>(this)->getArithmeticReductionCost(
- Instruction::FMul, Tys[0], /*IsPairwiseForm=*/false);
+ return ConcreteTTI->getArithmeticReductionCost(Instruction::FMul, Tys[0],
+ /*IsPairwiseForm=*/false);
case Intrinsic::experimental_vector_reduce_smax:
case Intrinsic::experimental_vector_reduce_smin:
case Intrinsic::experimental_vector_reduce_fmax:
case Intrinsic::experimental_vector_reduce_fmin:
- return static_cast<T *>(this)->getMinMaxReductionCost(
+ return ConcreteTTI->getMinMaxReductionCost(
Tys[0], CmpInst::makeCmpResultType(Tys[0]), /*IsPairwiseForm=*/false,
/*IsSigned=*/true);
case Intrinsic::experimental_vector_reduce_umax:
case Intrinsic::experimental_vector_reduce_umin:
- return static_cast<T *>(this)->getMinMaxReductionCost(
+ return ConcreteTTI->getMinMaxReductionCost(
Tys[0], CmpInst::makeCmpResultType(Tys[0]), /*IsPairwiseForm=*/false,
/*IsSigned=*/false);
+ case Intrinsic::sadd_sat:
+ case Intrinsic::ssub_sat: {
+ Type *CondTy = Type::getInt1Ty(RetTy->getContext());
+ if (RetVF > 1)
+ CondTy = VectorType::get(CondTy, RetVF);
+
+ Type *OpTy = StructType::create({RetTy, CondTy});
+ Intrinsic::ID OverflowOp = IID == Intrinsic::sadd_sat
+ ? Intrinsic::sadd_with_overflow
+ : Intrinsic::ssub_with_overflow;
+
+ // SatMax -> Overflow && SumDiff < 0
+ // SatMin -> Overflow && SumDiff >= 0
+ unsigned Cost = 0;
+ Cost += ConcreteTTI->getIntrinsicInstrCost(
+ OverflowOp, OpTy, {RetTy, RetTy}, FMF, ScalarizationCostPassed);
+ Cost += ConcreteTTI->getCmpSelInstrCost(BinaryOperator::ICmp, RetTy,
+ CondTy, nullptr);
+ Cost += 2 * ConcreteTTI->getCmpSelInstrCost(BinaryOperator::Select, RetTy,
+ CondTy, nullptr);
+ return Cost;
+ }
+ case Intrinsic::uadd_sat:
+ case Intrinsic::usub_sat: {
+ Type *CondTy = Type::getInt1Ty(RetTy->getContext());
+ if (RetVF > 1)
+ CondTy = VectorType::get(CondTy, RetVF);
+
+ Type *OpTy = StructType::create({RetTy, CondTy});
+ Intrinsic::ID OverflowOp = IID == Intrinsic::uadd_sat
+ ? Intrinsic::uadd_with_overflow
+ : Intrinsic::usub_with_overflow;
+
+ unsigned Cost = 0;
+ Cost += ConcreteTTI->getIntrinsicInstrCost(
+ OverflowOp, OpTy, {RetTy, RetTy}, FMF, ScalarizationCostPassed);
+ Cost += ConcreteTTI->getCmpSelInstrCost(BinaryOperator::Select, RetTy,
+ CondTy, nullptr);
+ return Cost;
+ }
+ case Intrinsic::sadd_with_overflow:
+ case Intrinsic::ssub_with_overflow: {
+ Type *SumTy = RetTy->getContainedType(0);
+ Type *OverflowTy = RetTy->getContainedType(1);
+ unsigned Opcode = IID == Intrinsic::sadd_with_overflow
+ ? BinaryOperator::Add
+ : BinaryOperator::Sub;
+
+ // LHSSign -> LHS >= 0
+ // RHSSign -> RHS >= 0
+ // SumSign -> Sum >= 0
+ //
+ // Add:
+ // Overflow -> (LHSSign == RHSSign) && (LHSSign != SumSign)
+ // Sub:
+ // Overflow -> (LHSSign != RHSSign) && (LHSSign != SumSign)
+ unsigned Cost = 0;
+ Cost += ConcreteTTI->getArithmeticInstrCost(Opcode, SumTy);
+ Cost += 3 * ConcreteTTI->getCmpSelInstrCost(BinaryOperator::ICmp, SumTy,
+ OverflowTy, nullptr);
+ Cost += 2 * ConcreteTTI->getCmpSelInstrCost(
+ BinaryOperator::ICmp, OverflowTy, OverflowTy, nullptr);
+ Cost +=
+ ConcreteTTI->getArithmeticInstrCost(BinaryOperator::And, OverflowTy);
+ return Cost;
+ }
+ case Intrinsic::uadd_with_overflow:
+ case Intrinsic::usub_with_overflow: {
+ Type *SumTy = RetTy->getContainedType(0);
+ Type *OverflowTy = RetTy->getContainedType(1);
+ unsigned Opcode = IID == Intrinsic::uadd_with_overflow
+ ? BinaryOperator::Add
+ : BinaryOperator::Sub;
+
+ unsigned Cost = 0;
+ Cost += ConcreteTTI->getArithmeticInstrCost(Opcode, SumTy);
+ Cost += ConcreteTTI->getCmpSelInstrCost(BinaryOperator::ICmp, SumTy,
+ OverflowTy, nullptr);
+ return Cost;
+ }
case Intrinsic::ctpop:
ISDs.push_back(ISD::CTPOP);
// In case of legalization use TCC_Expensive. This is cheaper than a
@@ -1163,17 +1386,16 @@
if (MinLegalCostI != LegalCost.end())
return *MinLegalCostI;
- auto MinCustomCostI = std::min_element(CustomCost.begin(), CustomCost.end());
+ auto MinCustomCostI =
+ std::min_element(CustomCost.begin(), CustomCost.end());
if (MinCustomCostI != CustomCost.end())
return *MinCustomCostI;
// If we can't lower fmuladd into an FMA estimate the cost as a floating
// point mul followed by an add.
if (IID == Intrinsic::fmuladd)
- return static_cast<T *>(this)
- ->getArithmeticInstrCost(BinaryOperator::FMul, RetTy) +
- static_cast<T *>(this)
- ->getArithmeticInstrCost(BinaryOperator::FAdd, RetTy);
+ return ConcreteTTI->getArithmeticInstrCost(BinaryOperator::FMul, RetTy) +
+ ConcreteTTI->getArithmeticInstrCost(BinaryOperator::FAdd, RetTy);
// Else, assume that we need to scalarize this intrinsic. For math builtins
// this will emit a costly libcall, adding call overhead and spills. Make it
@@ -1191,7 +1413,7 @@
Ty = Ty->getScalarType();
ScalarTys.push_back(Ty);
}
- unsigned ScalarCost = static_cast<T *>(this)->getIntrinsicInstrCost(
+ unsigned ScalarCost = ConcreteTTI->getIntrinsicInstrCost(
IID, RetTy->getScalarType(), ScalarTys, FMF);
for (unsigned i = 0, ie = Tys.size(); i != ie; ++i) {
if (Tys[i]->isVectorTy()) {
@@ -1284,24 +1506,36 @@
LT.second.isVector() ? LT.second.getVectorNumElements() : 1;
while (NumVecElts > MVTLen) {
NumVecElts /= 2;
+ Type *SubTy = VectorType::get(ScalarTy, NumVecElts);
// Assume the pairwise shuffles add a cost.
ShuffleCost += (IsPairwise + 1) *
ConcreteTTI->getShuffleCost(TTI::SK_ExtractSubvector, Ty,
- NumVecElts, Ty);
- ArithCost += ConcreteTTI->getArithmeticInstrCost(Opcode, Ty);
- Ty = VectorType::get(ScalarTy, NumVecElts);
+ NumVecElts, SubTy);
+ ArithCost += ConcreteTTI->getArithmeticInstrCost(Opcode, SubTy);
+ Ty = SubTy;
++LongVectorCount;
}
+
+ NumReduxLevels -= LongVectorCount;
+
// The minimal length of the vector is limited by the real length of vector
// operations performed on the current platform. That's why several final
// reduction operations are performed on the vectors with the same
// architecture-dependent length.
- ShuffleCost += (NumReduxLevels - LongVectorCount) * (IsPairwise + 1) *
- ConcreteTTI->getShuffleCost(TTI::SK_ExtractSubvector, Ty,
- NumVecElts, Ty);
- ArithCost += (NumReduxLevels - LongVectorCount) *
+
+ // Non pairwise reductions need one shuffle per reduction level. Pairwise
+ // reductions need two shuffles on every level, but the last one. On that
+ // level one of the shuffles is <0, u, u, ...> which is identity.
+ unsigned NumShuffles = NumReduxLevels;
+ if (IsPairwise && NumReduxLevels >= 1)
+ NumShuffles += NumReduxLevels - 1;
+ ShuffleCost += NumShuffles *
+ ConcreteTTI->getShuffleCost(TTI::SK_PermuteSingleSrc, Ty,
+ 0, Ty);
+ ArithCost += NumReduxLevels *
ConcreteTTI->getArithmeticInstrCost(Opcode, Ty);
- return ShuffleCost + ArithCost + getScalarizationOverhead(Ty, false, true);
+ return ShuffleCost + ArithCost +
+ ConcreteTTI->getVectorInstrCost(Instruction::ExtractElement, Ty, 0);
}
/// Try to calculate op costs for min/max reduction operations.
@@ -1331,37 +1565,46 @@
LT.second.isVector() ? LT.second.getVectorNumElements() : 1;
while (NumVecElts > MVTLen) {
NumVecElts /= 2;
+ Type *SubTy = VectorType::get(ScalarTy, NumVecElts);
+ CondTy = VectorType::get(ScalarCondTy, NumVecElts);
+
// Assume the pairwise shuffles add a cost.
ShuffleCost += (IsPairwise + 1) *
ConcreteTTI->getShuffleCost(TTI::SK_ExtractSubvector, Ty,
- NumVecElts, Ty);
+ NumVecElts, SubTy);
MinMaxCost +=
- ConcreteTTI->getCmpSelInstrCost(CmpOpcode, Ty, CondTy, nullptr) +
- ConcreteTTI->getCmpSelInstrCost(Instruction::Select, Ty, CondTy,
+ ConcreteTTI->getCmpSelInstrCost(CmpOpcode, SubTy, CondTy, nullptr) +
+ ConcreteTTI->getCmpSelInstrCost(Instruction::Select, SubTy, CondTy,
nullptr);
- Ty = VectorType::get(ScalarTy, NumVecElts);
- CondTy = VectorType::get(ScalarCondTy, NumVecElts);
+ Ty = SubTy;
++LongVectorCount;
}
+
+ NumReduxLevels -= LongVectorCount;
+
// The minimal length of the vector is limited by the real length of vector
// operations performed on the current platform. That's why several final
// reduction opertions are perfomed on the vectors with the same
// architecture-dependent length.
- ShuffleCost += (NumReduxLevels - LongVectorCount) * (IsPairwise + 1) *
- ConcreteTTI->getShuffleCost(TTI::SK_ExtractSubvector, Ty,
- NumVecElts, Ty);
+
+ // Non pairwise reductions need one shuffle per reduction level. Pairwise
+ // reductions need two shuffles on every level, but the last one. On that
+ // level one of the shuffles is <0, u, u, ...> which is identity.
+ unsigned NumShuffles = NumReduxLevels;
+ if (IsPairwise && NumReduxLevels >= 1)
+ NumShuffles += NumReduxLevels - 1;
+ ShuffleCost += NumShuffles *
+ ConcreteTTI->getShuffleCost(TTI::SK_PermuteSingleSrc, Ty,
+ 0, Ty);
MinMaxCost +=
- (NumReduxLevels - LongVectorCount) *
+ NumReduxLevels *
(ConcreteTTI->getCmpSelInstrCost(CmpOpcode, Ty, CondTy, nullptr) +
ConcreteTTI->getCmpSelInstrCost(Instruction::Select, Ty, CondTy,
nullptr));
- // Need 3 extractelement instructions for scalarization + an additional
- // scalar select instruction.
+ // The last min/max should be in vector registers and we counted it above.
+ // So just need a single extractelement.
return ShuffleCost + MinMaxCost +
- 3 * getScalarizationOverhead(Ty, /*Insert=*/false,
- /*Extract=*/true) +
- ConcreteTTI->getCmpSelInstrCost(Instruction::Select, ScalarTy,
- ScalarCondTy, nullptr);
+ ConcreteTTI->getVectorInstrCost(Instruction::ExtractElement, Ty, 0);
}
unsigned getVectorSplitCost() { return 1; }
diff --git a/linux-x64/clang/include/llvm/CodeGen/BuiltinGCs.h b/linux-x64/clang/include/llvm/CodeGen/BuiltinGCs.h
new file mode 100644
index 0000000..d44183d
--- /dev/null
+++ b/linux-x64/clang/include/llvm/CodeGen/BuiltinGCs.h
@@ -0,0 +1,32 @@
+//===-- BuiltinGCs.h - Garbage collector linkage hacks --------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file contains hack functions to force linking in the builtin GC
+// components.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CODEGEN_GCS_H
+#define LLVM_CODEGEN_GCS_H
+
+namespace llvm {
+
+/// FIXME: Collector instances are not useful on their own. These no longer
+/// serve any purpose except to link in the plugins.
+
+/// Ensure the definition of the builtin GCs gets linked in
+void linkAllBuiltinGCs();
+
+/// Creates an ocaml-compatible metadata printer.
+void linkOcamlGCPrinter();
+
+/// Creates an erlang-compatible metadata printer.
+void linkErlangGCPrinter();
+}
+
+#endif
diff --git a/linux-x64/clang/include/llvm/CodeGen/CalcSpillWeights.h b/linux-x64/clang/include/llvm/CodeGen/CalcSpillWeights.h
index f85767f..9b8b732 100644
--- a/linux-x64/clang/include/llvm/CodeGen/CalcSpillWeights.h
+++ b/linux-x64/clang/include/llvm/CodeGen/CalcSpillWeights.h
@@ -1,9 +1,8 @@
//===- lib/CodeGen/CalcSpillWeights.h ---------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/CodeGen/CallingConvLower.h b/linux-x64/clang/include/llvm/CodeGen/CallingConvLower.h
index efcf80b..78aebbe 100644
--- a/linux-x64/clang/include/llvm/CodeGen/CallingConvLower.h
+++ b/linux-x64/clang/include/llvm/CodeGen/CallingConvLower.h
@@ -1,9 +1,8 @@
//===- llvm/CallingConvLower.h - Calling Conventions ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/CommandFlags.inc b/linux-x64/clang/include/llvm/CodeGen/CommandFlags.inc
index 6535e06..5b9564c 100644
--- a/linux-x64/clang/include/llvm/CodeGen/CommandFlags.inc
+++ b/linux-x64/clang/include/llvm/CodeGen/CommandFlags.inc
@@ -1,9 +1,8 @@
//===-- CommandFlags.h - Command Line Flags Interface -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -114,10 +113,16 @@
clEnumValN(TargetMachine::CGFT_Null, "null",
"Emit nothing, for performance testing")));
-static cl::opt<bool>
- DisableFPElim("disable-fp-elim",
- cl::desc("Disable frame pointer elimination optimization"),
- cl::init(false));
+static cl::opt<llvm::FramePointer::FP> FramePointerUsage(
+ "frame-pointer", cl::desc("Specify frame pointer elimination optimization"),
+ cl::init(llvm::FramePointer::None),
+ cl::values(
+ clEnumValN(llvm::FramePointer::All, "all",
+ "Disable frame pointer elimination"),
+ clEnumValN(llvm::FramePointer::NonLeaf, "non-leaf",
+ "Disable frame pointer elimination for non-leaf frame"),
+ clEnumValN(llvm::FramePointer::None, "none",
+ "Enable frame pointer elimination")));
static cl::opt<bool> EnableUnsafeFPMath(
"enable-unsafe-fp-math",
@@ -368,9 +373,14 @@
NewAttrs.addAttribute("target-cpu", CPU);
if (!Features.empty())
NewAttrs.addAttribute("target-features", Features);
- if (DisableFPElim.getNumOccurrences() > 0)
- NewAttrs.addAttribute("no-frame-pointer-elim",
- DisableFPElim ? "true" : "false");
+ if (FramePointerUsage.getNumOccurrences() > 0) {
+ if (FramePointerUsage == llvm::FramePointer::All)
+ NewAttrs.addAttribute("frame-pointer", "all");
+ else if (FramePointerUsage == llvm::FramePointer::NonLeaf)
+ NewAttrs.addAttribute("frame-pointer", "non-leaf");
+ else if (FramePointerUsage == llvm::FramePointer::None)
+ NewAttrs.addAttribute("frame-pointer", "none");
+ }
if (DisableTailCalls.getNumOccurrences() > 0)
NewAttrs.addAttribute("disable-tail-calls",
toStringRef(DisableTailCalls));
diff --git a/linux-x64/clang/include/llvm/CodeGen/CostTable.h b/linux-x64/clang/include/llvm/CodeGen/CostTable.h
index 48ad769..52f3bfa 100644
--- a/linux-x64/clang/include/llvm/CodeGen/CostTable.h
+++ b/linux-x64/clang/include/llvm/CodeGen/CostTable.h
@@ -1,9 +1,8 @@
//===-- CostTable.h - Instruction Cost Table handling -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/CodeGen/DAGCombine.h b/linux-x64/clang/include/llvm/CodeGen/DAGCombine.h
index 8b59190..9441873 100644
--- a/linux-x64/clang/include/llvm/CodeGen/DAGCombine.h
+++ b/linux-x64/clang/include/llvm/CodeGen/DAGCombine.h
@@ -1,9 +1,8 @@
//===-- llvm/CodeGen/DAGCombine.h ------- SelectionDAG Nodes ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/DFAPacketizer.h b/linux-x64/clang/include/llvm/CodeGen/DFAPacketizer.h
index d3aabe2..cf58ee0 100644
--- a/linux-x64/clang/include/llvm/CodeGen/DFAPacketizer.h
+++ b/linux-x64/clang/include/llvm/CodeGen/DFAPacketizer.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/DFAPacketizer.h - DFA Packetizer for VLIW ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// This class implements a deterministic finite automaton (DFA) based
diff --git a/linux-x64/clang/include/llvm/CodeGen/DIE.h b/linux-x64/clang/include/llvm/CodeGen/DIE.h
index 7d486b1..9e7167f 100644
--- a/linux-x64/clang/include/llvm/CodeGen/DIE.h
+++ b/linux-x64/clang/include/llvm/CodeGen/DIE.h
@@ -1,9 +1,8 @@
//===- lib/CodeGen/DIE.h - DWARF Info Entries -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -800,7 +799,7 @@
const uint16_t Version; /// The Dwarf version number for this unit.
const uint8_t AddrSize; /// The size in bytes of an address for this unit.
protected:
- ~DIEUnit() = default;
+ virtual ~DIEUnit() = default;
public:
DIEUnit(uint16_t Version, uint8_t AddrSize, dwarf::Tag UnitTag);
diff --git a/linux-x64/clang/include/llvm/CodeGen/DIEValue.def b/linux-x64/clang/include/llvm/CodeGen/DIEValue.def
index a3fce9b..c6c4c9a 100644
--- a/linux-x64/clang/include/llvm/CodeGen/DIEValue.def
+++ b/linux-x64/clang/include/llvm/CodeGen/DIEValue.def
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/DIEValue.def - DIEValue types ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/DbgEntityHistoryCalculator.h b/linux-x64/clang/include/llvm/CodeGen/DbgEntityHistoryCalculator.h
new file mode 100644
index 0000000..b5374d8
--- /dev/null
+++ b/linux-x64/clang/include/llvm/CodeGen/DbgEntityHistoryCalculator.h
@@ -0,0 +1,86 @@
+//===- llvm/CodeGen/DbgEntityHistoryCalculator.h ----------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CODEGEN_DBGVALUEHISTORYCALCULATOR_H
+#define LLVM_CODEGEN_DBGVALUEHISTORYCALCULATOR_H
+
+#include "llvm/ADT/MapVector.h"
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/IR/DebugInfoMetadata.h"
+#include <utility>
+
+namespace llvm {
+
+class DILocalVariable;
+class MachineFunction;
+class MachineInstr;
+class TargetRegisterInfo;
+
+// For each user variable, keep a list of instruction ranges where this variable
+// is accessible. The variables are listed in order of appearance.
+class DbgValueHistoryMap {
+ // Each instruction range starts with a DBG_VALUE instruction, specifying the
+ // location of a variable, which is assumed to be valid until the end of the
+ // range. If end is not specified, location is valid until the start
+ // instruction of the next instruction range, or until the end of the
+ // function.
+public:
+ using InstrRange = std::pair<const MachineInstr *, const MachineInstr *>;
+ using InstrRanges = SmallVector<InstrRange, 4>;
+ using InlinedEntity = std::pair<const DINode *, const DILocation *>;
+ using InstrRangesMap = MapVector<InlinedEntity, InstrRanges>;
+
+private:
+ InstrRangesMap VarInstrRanges;
+
+public:
+ void startInstrRange(InlinedEntity Var, const MachineInstr &MI);
+ void endInstrRange(InlinedEntity Var, const MachineInstr &MI);
+
+ // Returns register currently describing @Var. If @Var is currently
+ // unaccessible or is not described by a register, returns 0.
+ unsigned getRegisterForVar(InlinedEntity Var) const;
+
+ bool empty() const { return VarInstrRanges.empty(); }
+ void clear() { VarInstrRanges.clear(); }
+ InstrRangesMap::const_iterator begin() const { return VarInstrRanges.begin(); }
+ InstrRangesMap::const_iterator end() const { return VarInstrRanges.end(); }
+
+#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
+ LLVM_DUMP_METHOD void dump() const;
+#endif
+};
+
+/// For each inlined instance of a source-level label, keep the corresponding
+/// DBG_LABEL instruction. The DBG_LABEL instruction could be used to generate
+/// a temporary (assembler) label before it.
+class DbgLabelInstrMap {
+public:
+ using InlinedEntity = std::pair<const DINode *, const DILocation *>;
+ using InstrMap = MapVector<InlinedEntity, const MachineInstr *>;
+
+private:
+ InstrMap LabelInstr;
+
+public:
+ void addInstr(InlinedEntity Label, const MachineInstr &MI);
+
+ bool empty() const { return LabelInstr.empty(); }
+ void clear() { LabelInstr.clear(); }
+ InstrMap::const_iterator begin() const { return LabelInstr.begin(); }
+ InstrMap::const_iterator end() const { return LabelInstr.end(); }
+};
+
+void calculateDbgEntityHistory(const MachineFunction *MF,
+ const TargetRegisterInfo *TRI,
+ DbgValueHistoryMap &DbgValues,
+ DbgLabelInstrMap &DbgLabels);
+
+} // end namespace llvm
+
+#endif // LLVM_CODEGEN_DBGVALUEHISTORYCALCULATOR_H
diff --git a/linux-x64/clang/include/llvm/CodeGen/DebugHandlerBase.h b/linux-x64/clang/include/llvm/CodeGen/DebugHandlerBase.h
new file mode 100644
index 0000000..3771d48
--- /dev/null
+++ b/linux-x64/clang/include/llvm/CodeGen/DebugHandlerBase.h
@@ -0,0 +1,137 @@
+//===-- llvm/CodeGen/DebugHandlerBase.h -----------------------*- C++ -*--===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// Common functionality for different debug information format backends.
+// LLVM currently supports DWARF and CodeView.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CODEGEN_DEBUGHANDLERBASE_H
+#define LLVM_CODEGEN_DEBUGHANDLERBASE_H
+
+#include "llvm/ADT/Optional.h"
+#include "llvm/CodeGen/AsmPrinterHandler.h"
+#include "llvm/CodeGen/DbgEntityHistoryCalculator.h"
+#include "llvm/CodeGen/LexicalScopes.h"
+#include "llvm/CodeGen/MachineInstr.h"
+#include "llvm/IR/DebugInfoMetadata.h"
+
+namespace llvm {
+
+class AsmPrinter;
+class MachineInstr;
+class MachineModuleInfo;
+
+/// Represents the location at which a variable is stored.
+struct DbgVariableLocation {
+ /// Base register.
+ unsigned Register;
+
+ /// Chain of offsetted loads necessary to load the value if it lives in
+ /// memory. Every load except for the last is pointer-sized.
+ SmallVector<int64_t, 1> LoadChain;
+
+ /// Present if the location is part of a larger variable.
+ llvm::Optional<llvm::DIExpression::FragmentInfo> FragmentInfo;
+
+ /// Extract a VariableLocation from a MachineInstr.
+ /// This will only work if Instruction is a debug value instruction
+ /// and the associated DIExpression is in one of the supported forms.
+ /// If these requirements are not met, the returned Optional will not
+ /// have a value.
+ static Optional<DbgVariableLocation>
+ extractFromMachineInstruction(const MachineInstr &Instruction);
+};
+
+/// Base class for debug information backends. Common functionality related to
+/// tracking which variables and scopes are alive at a given PC live here.
+class DebugHandlerBase : public AsmPrinterHandler {
+protected:
+ DebugHandlerBase(AsmPrinter *A);
+
+ /// Target of debug info emission.
+ AsmPrinter *Asm;
+
+ /// Collected machine module information.
+ MachineModuleInfo *MMI;
+
+ /// Previous instruction's location information. This is used to
+ /// determine label location to indicate scope boundaries in debug info.
+ /// We track the previous instruction's source location (if not line 0),
+ /// whether it was a label, and its parent BB.
+ DebugLoc PrevInstLoc;
+ MCSymbol *PrevLabel = nullptr;
+ const MachineBasicBlock *PrevInstBB = nullptr;
+
+ /// This location indicates end of function prologue and beginning of
+ /// function body.
+ DebugLoc PrologEndLoc;
+
+ /// If nonnull, stores the current machine instruction we're processing.
+ const MachineInstr *CurMI = nullptr;
+
+ LexicalScopes LScopes;
+
+ /// History of DBG_VALUE and clobber instructions for each user
+ /// variable. Variables are listed in order of appearance.
+ DbgValueHistoryMap DbgValues;
+
+ /// Mapping of inlined labels and DBG_LABEL machine instruction.
+ DbgLabelInstrMap DbgLabels;
+
+ /// Maps instruction with label emitted before instruction.
+ /// FIXME: Make this private from DwarfDebug, we have the necessary accessors
+ /// for it.
+ DenseMap<const MachineInstr *, MCSymbol *> LabelsBeforeInsn;
+
+ /// Maps instruction with label emitted after instruction.
+ DenseMap<const MachineInstr *, MCSymbol *> LabelsAfterInsn;
+
+ /// Indentify instructions that are marking the beginning of or
+ /// ending of a scope.
+ void identifyScopeMarkers();
+
+ /// Ensure that a label will be emitted before MI.
+ void requestLabelBeforeInsn(const MachineInstr *MI) {
+ LabelsBeforeInsn.insert(std::make_pair(MI, nullptr));
+ }
+
+ /// Ensure that a label will be emitted after MI.
+ void requestLabelAfterInsn(const MachineInstr *MI) {
+ LabelsAfterInsn.insert(std::make_pair(MI, nullptr));
+ }
+
+ virtual void beginFunctionImpl(const MachineFunction *MF) = 0;
+ virtual void endFunctionImpl(const MachineFunction *MF) = 0;
+ virtual void skippedNonDebugFunction() {}
+
+ // AsmPrinterHandler overrides.
+public:
+ void beginInstruction(const MachineInstr *MI) override;
+ void endInstruction() override;
+
+ void beginFunction(const MachineFunction *MF) override;
+ void endFunction(const MachineFunction *MF) override;
+
+ /// Return Label preceding the instruction.
+ MCSymbol *getLabelBeforeInsn(const MachineInstr *MI);
+
+ /// Return Label immediately following the instruction.
+ MCSymbol *getLabelAfterInsn(const MachineInstr *MI);
+
+ /// Return the function-local offset of an instruction. A label for the
+ /// instruction \p MI should exist (\ref getLabelAfterInsn).
+ const MCExpr *getFunctionLocalOffsetAfterInsn(const MachineInstr *MI);
+
+ /// If this type is derived from a base type then return base type size.
+ static uint64_t getBaseTypeSize(const DITypeRef TyRef);
+};
+
+}
+
+#endif
diff --git a/linux-x64/clang/include/llvm/CodeGen/DwarfStringPoolEntry.h b/linux-x64/clang/include/llvm/CodeGen/DwarfStringPoolEntry.h
index 8b1a7af..e189352 100644
--- a/linux-x64/clang/include/llvm/CodeGen/DwarfStringPoolEntry.h
+++ b/linux-x64/clang/include/llvm/CodeGen/DwarfStringPoolEntry.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/DwarfStringPoolEntry.h - String pool entry --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/CodeGen/EdgeBundles.h b/linux-x64/clang/include/llvm/CodeGen/EdgeBundles.h
index c31fad2..28cdf54 100644
--- a/linux-x64/clang/include/llvm/CodeGen/EdgeBundles.h
+++ b/linux-x64/clang/include/llvm/CodeGen/EdgeBundles.h
@@ -1,9 +1,8 @@
//===-------- EdgeBundles.h - Bundles of CFG edges --------------*- c++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/ExecutionDomainFix.h b/linux-x64/clang/include/llvm/CodeGen/ExecutionDomainFix.h
index 338c214..6836678 100644
--- a/linux-x64/clang/include/llvm/CodeGen/ExecutionDomainFix.h
+++ b/linux-x64/clang/include/llvm/CodeGen/ExecutionDomainFix.h
@@ -1,9 +1,8 @@
//==-- llvm/CodeGen/ExecutionDomainFix.h - Execution Domain Fix -*- C++ -*--==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/ExpandReductions.h b/linux-x64/clang/include/llvm/CodeGen/ExpandReductions.h
index c6aaaad..5dbed07 100644
--- a/linux-x64/clang/include/llvm/CodeGen/ExpandReductions.h
+++ b/linux-x64/clang/include/llvm/CodeGen/ExpandReductions.h
@@ -1,9 +1,8 @@
//===----- ExpandReductions.h - Expand experimental reduction intrinsics --===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/CodeGen/FastISel.h b/linux-x64/clang/include/llvm/CodeGen/FastISel.h
index 865d8a8..394324b 100644
--- a/linux-x64/clang/include/llvm/CodeGen/FastISel.h
+++ b/linux-x64/clang/include/llvm/CodeGen/FastISel.h
@@ -1,9 +1,8 @@
//===- FastISel.h - Definition of the FastISel class ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/CodeGen/FaultMaps.h b/linux-x64/clang/include/llvm/CodeGen/FaultMaps.h
index 55e25c9..a1e2349 100644
--- a/linux-x64/clang/include/llvm/CodeGen/FaultMaps.h
+++ b/linux-x64/clang/include/llvm/CodeGen/FaultMaps.h
@@ -1,9 +1,8 @@
//===- FaultMaps.h - The "FaultMaps" section --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/CodeGen/FunctionLoweringInfo.h b/linux-x64/clang/include/llvm/CodeGen/FunctionLoweringInfo.h
index 5fe4f89..f5f37d1 100644
--- a/linux-x64/clang/include/llvm/CodeGen/FunctionLoweringInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/FunctionLoweringInfo.h
@@ -1,9 +1,8 @@
//===- FunctionLoweringInfo.h - Lower functions from LLVM IR ---*- C++ -*--===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -16,6 +15,7 @@
#define LLVM_CODEGEN_FUNCTIONLOWERINGINFO_H
#include "llvm/ADT/APInt.h"
+#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/IndexedMap.h"
#include "llvm/ADT/Optional.h"
@@ -175,6 +175,10 @@
/// function arguments that are inserted after scheduling is completed.
SmallVector<MachineInstr*, 8> ArgDbgValues;
+ /// Bitvector with a bit set if corresponding argument is described in
+ /// ArgDbgValues. Using arg numbers according to Argument numbering.
+ BitVector DescribedArgs;
+
/// RegFixups - Registers which need to be replaced after isel is done.
DenseMap<unsigned, unsigned> RegFixups;
@@ -246,6 +250,7 @@
return 0;
unsigned &R = ValueMap[V];
assert(R == 0 && "Already initialized this value register!");
+ assert(VirtReg2Value.empty());
return R = CreateRegs(V->getType());
}
diff --git a/linux-x64/clang/include/llvm/CodeGen/GCMetadata.h b/linux-x64/clang/include/llvm/CodeGen/GCMetadata.h
index ad2599f..77cd356 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GCMetadata.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GCMetadata.h
@@ -1,9 +1,8 @@
//===- GCMetadata.h - Garbage collector metadata ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -55,12 +54,11 @@
/// GCPoint - Metadata for a collector-safe point in machine code.
///
struct GCPoint {
- GC::PointKind Kind; ///< The kind of the safe point.
MCSymbol *Label; ///< A label.
DebugLoc Loc;
- GCPoint(GC::PointKind K, MCSymbol *L, DebugLoc DL)
- : Kind(K), Label(L), Loc(std::move(DL)) {}
+ GCPoint(MCSymbol *L, DebugLoc DL)
+ : Label(L), Loc(std::move(DL)) {}
};
/// GCRoot - Metadata for a pointer to an object managed by the garbage
@@ -124,8 +122,8 @@
/// addSafePoint - Notes the existence of a safe point. Num is the ID of the
/// label just prior to the safe point (if the code generator is using
/// MachineModuleInfo).
- void addSafePoint(GC::PointKind Kind, MCSymbol *Label, const DebugLoc &DL) {
- SafePoints.emplace_back(Kind, Label, DL);
+ void addSafePoint(MCSymbol *Label, const DebugLoc &DL) {
+ SafePoints.emplace_back(Label, DL);
}
/// getFrameSize/setFrameSize - Records the function's frame size.
diff --git a/linux-x64/clang/include/llvm/CodeGen/GCMetadataPrinter.h b/linux-x64/clang/include/llvm/CodeGen/GCMetadataPrinter.h
index 1cc69a7..f9527c9 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GCMetadataPrinter.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GCMetadataPrinter.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/GCMetadataPrinter.h - Prints asm GC tables --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -29,6 +28,7 @@
class GCModuleInfo;
class GCStrategy;
class Module;
+class StackMaps;
/// GCMetadataPrinterRegistry - The GC assembly printer registry uses all the
/// defaults from Registry.
@@ -60,6 +60,11 @@
/// Called after the assembly for the module is generated by
/// the AsmPrinter (but before target specific hooks)
virtual void finishAssembly(Module &M, GCModuleInfo &Info, AsmPrinter &AP) {}
+
+ /// Called when the stack maps are generated. Return true if
+ /// stack maps with a custom format are generated. Otherwise
+ /// returns false and the default format will be used.
+ virtual bool emitStackMaps(StackMaps &SM, AsmPrinter &AP) { return false; }
};
} // end namespace llvm
diff --git a/linux-x64/clang/include/llvm/CodeGen/GCStrategy.h b/linux-x64/clang/include/llvm/CodeGen/GCStrategy.h
index f835bac..c573152 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GCStrategy.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GCStrategy.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/GCStrategy.h - Garbage collection -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -59,19 +58,6 @@
class Type;
-namespace GC {
-
-/// PointKind - Used to indicate whether the address of the call instruction
-/// or the address after the call instruction is listed in the stackmap. For
-/// most runtimes, PostCall safepoints are appropriate.
-///
-enum PointKind {
- PreCall, ///< Instr is a call instruction.
- PostCall ///< Instr is the return address of a call.
-};
-
-} // end namespace GC
-
/// GCStrategy describes a garbage collector algorithm's code generation
/// requirements, and provides overridable hooks for those needs which cannot
/// be abstractly described. GCStrategy objects must be looked up through
@@ -88,11 +74,7 @@
/// if set, none of the other options can be
/// anything but their default values.
- unsigned NeededSafePoints = 0; ///< Bitmask of required safe points.
- bool CustomReadBarriers = false; ///< Default is to insert loads.
- bool CustomWriteBarriers = false; ///< Default is to insert stores.
- bool CustomRoots = false; ///< Default is to pass through to backend.
- bool InitRoots= true; ///< If set, roots are nulled during lowering.
+ bool NeededSafePoints = false; ///< if set, calls are inferred to be safepoints
bool UsesMetadata = false; ///< If set, backend must emit metadata tables.
public:
@@ -103,16 +85,6 @@
/// name string specified on functions which use this strategy.
const std::string &getName() const { return Name; }
- /// By default, write barriers are replaced with simple store
- /// instructions. If true, you must provide a custom pass to lower
- /// calls to \@llvm.gcwrite.
- bool customWriteBarrier() const { return CustomWriteBarriers; }
-
- /// By default, read barriers are replaced with simple load
- /// instructions. If true, you must provide a custom pass to lower
- /// calls to \@llvm.gcread.
- bool customReadBarrier() const { return CustomReadBarriers; }
-
/// Returns true if this strategy is expecting the use of gc.statepoints,
/// and false otherwise.
bool useStatepoints() const { return UseStatepoints; }
@@ -135,25 +107,8 @@
*/
///@{
- /// True if safe points of any kind are required. By default, none are
- /// recorded.
- bool needsSafePoints() const { return NeededSafePoints != 0; }
-
- /// True if the given kind of safe point is required. By default, none are
- /// recorded.
- bool needsSafePoint(GC::PointKind Kind) const {
- return (NeededSafePoints & 1 << Kind) != 0;
- }
-
- /// By default, roots are left for the code generator so it can generate a
- /// stack map. If true, you must provide a custom pass to lower
- /// calls to \@llvm.gcroot.
- bool customRoots() const { return CustomRoots; }
-
- /// If set, gcroot intrinsics should initialize their allocas to null
- /// before the first use. This is necessary for most GCs and is enabled by
- /// default.
- bool initializeRoots() const { return InitRoots; }
+ /// True if safe points need to be inferred on call sites
+ bool needsSafePoints() const { return NeededSafePoints; }
/// If set, appropriate metadata tables must be emitted by the back-end
/// (assembler, JIT, or otherwise). For statepoint, this method is
diff --git a/linux-x64/clang/include/llvm/CodeGen/GCs.h b/linux-x64/clang/include/llvm/CodeGen/GCs.h
deleted file mode 100644
index 5207f80..0000000
--- a/linux-x64/clang/include/llvm/CodeGen/GCs.h
+++ /dev/null
@@ -1,46 +0,0 @@
-//===-- GCs.h - Garbage collector linkage hacks ---------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file contains hack functions to force linking in the GC components.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CODEGEN_GCS_H
-#define LLVM_CODEGEN_GCS_H
-
-namespace llvm {
-class GCStrategy;
-class GCMetadataPrinter;
-
-/// FIXME: Collector instances are not useful on their own. These no longer
-/// serve any purpose except to link in the plugins.
-
-/// Creates a CoreCLR-compatible garbage collector.
-void linkCoreCLRGC();
-
-/// Creates an ocaml-compatible garbage collector.
-void linkOcamlGC();
-
-/// Creates an ocaml-compatible metadata printer.
-void linkOcamlGCPrinter();
-
-/// Creates an erlang-compatible garbage collector.
-void linkErlangGC();
-
-/// Creates an erlang-compatible metadata printer.
-void linkErlangGCPrinter();
-
-/// Creates a shadow stack garbage collector. This collector requires no code
-/// generator support.
-void linkShadowStackGC();
-
-void linkStatepointExampleGC();
-}
-
-#endif
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/CSEInfo.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/CSEInfo.h
new file mode 100644
index 0000000..97f3cd5
--- /dev/null
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/CSEInfo.h
@@ -0,0 +1,236 @@
+//===- llvm/CodeGen/GlobalISel/CSEInfo.h ------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+/// Provides analysis for continuously CSEing during GISel passes.
+//
+//===----------------------------------------------------------------------===//
+#ifndef LLVM_CODEGEN_GLOBALISEL_CSEINFO_H
+#define LLVM_CODEGEN_GLOBALISEL_CSEINFO_H
+
+#include "llvm/ADT/FoldingSet.h"
+#include "llvm/CodeGen/GlobalISel/GISelChangeObserver.h"
+#include "llvm/CodeGen/GlobalISel/GISelWorkList.h"
+#include "llvm/CodeGen/GlobalISel/Utils.h"
+#include "llvm/CodeGen/MachineBasicBlock.h"
+#include "llvm/CodeGen/MachineFunctionPass.h"
+#include "llvm/IR/PassManager.h"
+#include "llvm/Pass.h"
+#include "llvm/Support/Allocator.h"
+
+namespace llvm {
+
+/// A class that wraps MachineInstrs and derives from FoldingSetNode in order to
+/// be uniqued in a CSEMap. The tradeoff here is extra memory allocations for
+/// UniqueMachineInstr vs making MachineInstr bigger.
+class UniqueMachineInstr : public FoldingSetNode {
+ friend class GISelCSEInfo;
+ const MachineInstr *MI;
+ explicit UniqueMachineInstr(const MachineInstr *MI) : MI(MI) {}
+
+public:
+ void Profile(FoldingSetNodeID &ID);
+};
+
+// Class representing some configuration that can be done during CSE analysis.
+// Currently it only supports shouldCSE method that each pass can set.
+class CSEConfig {
+public:
+ virtual ~CSEConfig() = default;
+ // Hook for defining which Generic instructions should be CSEd.
+ // GISelCSEInfo currently only calls this hook when dealing with generic
+ // opcodes.
+ virtual bool shouldCSEOpc(unsigned Opc);
+};
+
+// TODO: Find a better place for this.
+// Commonly used for O0 config.
+class CSEConfigConstantOnly : public CSEConfig {
+public:
+ virtual ~CSEConfigConstantOnly() = default;
+ virtual bool shouldCSEOpc(unsigned Opc) override;
+};
+
+/// The CSE Analysis object.
+/// This installs itself as a delegate to the MachineFunction to track
+/// new instructions as well as deletions. It however will not be able to
+/// track instruction mutations. In such cases, recordNewInstruction should be
+/// called (for eg inside MachineIRBuilder::recordInsertion).
+/// Also because of how just the instruction can be inserted without adding any
+/// operands to the instruction, instructions are uniqued and inserted lazily.
+/// CSEInfo should assert when trying to enter an incomplete instruction into
+/// the CSEMap. There is Opcode level granularity on which instructions can be
+/// CSE'd and for now, only Generic instructions are CSEable.
+class GISelCSEInfo : public GISelChangeObserver {
+ // Make it accessible only to CSEMIRBuilder.
+ friend class CSEMIRBuilder;
+
+ BumpPtrAllocator UniqueInstrAllocator;
+ FoldingSet<UniqueMachineInstr> CSEMap;
+ MachineRegisterInfo *MRI = nullptr;
+ MachineFunction *MF = nullptr;
+ std::unique_ptr<CSEConfig> CSEOpt;
+ /// Keep a cache of UniqueInstrs for each MachineInstr. In GISel,
+ /// often instructions are mutated (while their ID has completely changed).
+ /// Whenever mutation happens, invalidate the UniqueMachineInstr for the
+ /// MachineInstr
+ DenseMap<const MachineInstr *, UniqueMachineInstr *> InstrMapping;
+
+ /// Store instructions that are not fully formed in TemporaryInsts.
+ /// Also because CSE insertion happens lazily, we can remove insts from this
+ /// list and avoid inserting and then removing from the CSEMap.
+ GISelWorkList<8> TemporaryInsts;
+
+ // Only used in asserts.
+ DenseMap<unsigned, unsigned> OpcodeHitTable;
+
+ bool isUniqueMachineInstValid(const UniqueMachineInstr &UMI) const;
+
+ void invalidateUniqueMachineInstr(UniqueMachineInstr *UMI);
+
+ UniqueMachineInstr *getNodeIfExists(FoldingSetNodeID &ID,
+ MachineBasicBlock *MBB, void *&InsertPos);
+
+ /// Allocate and construct a new UniqueMachineInstr for MI and return.
+ UniqueMachineInstr *getUniqueInstrForMI(const MachineInstr *MI);
+
+ void insertNode(UniqueMachineInstr *UMI, void *InsertPos = nullptr);
+
+ /// Get the MachineInstr(Unique) if it exists already in the CSEMap and the
+ /// same MachineBasicBlock.
+ MachineInstr *getMachineInstrIfExists(FoldingSetNodeID &ID,
+ MachineBasicBlock *MBB,
+ void *&InsertPos);
+
+ /// Use this method to allocate a new UniqueMachineInstr for MI and insert it
+ /// into the CSEMap. MI should return true for shouldCSE(MI->getOpcode())
+ void insertInstr(MachineInstr *MI, void *InsertPos = nullptr);
+
+public:
+ GISelCSEInfo() = default;
+
+ virtual ~GISelCSEInfo();
+
+ void setMF(MachineFunction &MF);
+
+ /// Records a newly created inst in a list and lazily insert it to the CSEMap.
+ /// Sometimes, this method might be called with a partially constructed
+ /// MachineInstr,
+ // (right after BuildMI without adding any operands) - and in such cases,
+ // defer the hashing of the instruction to a later stage.
+ void recordNewInstruction(MachineInstr *MI);
+
+ /// Use this callback to inform CSE about a newly fully created instruction.
+ void handleRecordedInst(MachineInstr *MI);
+
+ /// Use this callback to insert all the recorded instructions. At this point,
+ /// all of these insts need to be fully constructed and should not be missing
+ /// any operands.
+ void handleRecordedInsts();
+
+ /// Remove this inst from the CSE map. If this inst has not been inserted yet,
+ /// it will be removed from the Tempinsts list if it exists.
+ void handleRemoveInst(MachineInstr *MI);
+
+ void releaseMemory();
+
+ void setCSEConfig(std::unique_ptr<CSEConfig> Opt) { CSEOpt = std::move(Opt); }
+
+ bool shouldCSE(unsigned Opc) const;
+
+ void analyze(MachineFunction &MF);
+
+ void countOpcodeHit(unsigned Opc);
+
+ void print();
+
+ // Observer API
+ void erasingInstr(MachineInstr &MI) override;
+ void createdInstr(MachineInstr &MI) override;
+ void changingInstr(MachineInstr &MI) override;
+ void changedInstr(MachineInstr &MI) override;
+};
+
+class TargetRegisterClass;
+class RegisterBank;
+
+// Simple builder class to easily profile properties about MIs.
+class GISelInstProfileBuilder {
+ FoldingSetNodeID &ID;
+ const MachineRegisterInfo &MRI;
+
+public:
+ GISelInstProfileBuilder(FoldingSetNodeID &ID, const MachineRegisterInfo &MRI)
+ : ID(ID), MRI(MRI) {}
+ // Profiling methods.
+ const GISelInstProfileBuilder &addNodeIDOpcode(unsigned Opc) const;
+ const GISelInstProfileBuilder &addNodeIDRegType(const LLT &Ty) const;
+ const GISelInstProfileBuilder &addNodeIDRegType(const unsigned) const;
+
+ const GISelInstProfileBuilder &
+ addNodeIDRegType(const TargetRegisterClass *RC) const;
+ const GISelInstProfileBuilder &addNodeIDRegType(const RegisterBank *RB) const;
+
+ const GISelInstProfileBuilder &addNodeIDRegNum(unsigned Reg) const;
+
+ const GISelInstProfileBuilder &addNodeIDImmediate(int64_t Imm) const;
+ const GISelInstProfileBuilder &
+ addNodeIDMBB(const MachineBasicBlock *MBB) const;
+
+ const GISelInstProfileBuilder &
+ addNodeIDMachineOperand(const MachineOperand &MO) const;
+
+ const GISelInstProfileBuilder &addNodeIDFlag(unsigned Flag) const;
+ const GISelInstProfileBuilder &addNodeID(const MachineInstr *MI) const;
+};
+
+/// Simple wrapper that does the following.
+/// 1) Lazily evaluate the MachineFunction to compute CSEable instructions.
+/// 2) Allows configuration of which instructions are CSEd through CSEConfig
+/// object. Provides a method called get which takes a CSEConfig object.
+class GISelCSEAnalysisWrapper {
+ GISelCSEInfo Info;
+ MachineFunction *MF = nullptr;
+ bool AlreadyComputed = false;
+
+public:
+ /// Takes a CSEConfig object that defines what opcodes get CSEd.
+ /// If CSEConfig is already set, and the CSE Analysis has been preserved,
+ /// it will not use the new CSEOpt(use Recompute to force using the new
+ /// CSEOpt).
+ GISelCSEInfo &get(std::unique_ptr<CSEConfig> CSEOpt, bool ReCompute = false);
+ void setMF(MachineFunction &MFunc) { MF = &MFunc; }
+ void setComputed(bool Computed) { AlreadyComputed = Computed; }
+ void releaseMemory() { Info.releaseMemory(); }
+};
+
+/// The actual analysis pass wrapper.
+class GISelCSEAnalysisWrapperPass : public MachineFunctionPass {
+ GISelCSEAnalysisWrapper Wrapper;
+
+public:
+ static char ID;
+ GISelCSEAnalysisWrapperPass() : MachineFunctionPass(ID) {
+ initializeGISelCSEAnalysisWrapperPassPass(*PassRegistry::getPassRegistry());
+ }
+
+ void getAnalysisUsage(AnalysisUsage &AU) const override;
+
+ const GISelCSEAnalysisWrapper &getCSEWrapper() const { return Wrapper; }
+ GISelCSEAnalysisWrapper &getCSEWrapper() { return Wrapper; }
+
+ bool runOnMachineFunction(MachineFunction &MF) override;
+
+ void releaseMemory() override {
+ Wrapper.releaseMemory();
+ Wrapper.setComputed(false);
+ }
+};
+
+} // namespace llvm
+
+#endif
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/CSEMIRBuilder.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/CSEMIRBuilder.h
new file mode 100644
index 0000000..4f95335
--- /dev/null
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/CSEMIRBuilder.h
@@ -0,0 +1,109 @@
+//===-- llvm/CodeGen/GlobalISel/CSEMIRBuilder.h --*- C++ -*-==//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+/// This file implements a version of MachineIRBuilder which CSEs insts within
+/// a MachineBasicBlock.
+//===----------------------------------------------------------------------===//
+#ifndef LLVM_CODEGEN_GLOBALISEL_CSEMIRBUILDER_H
+#define LLVM_CODEGEN_GLOBALISEL_CSEMIRBUILDER_H
+
+#include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h"
+#include "llvm/CodeGen/GlobalISel/Utils.h"
+
+namespace llvm {
+
+/// Defines a builder that does CSE of MachineInstructions using GISelCSEInfo.
+/// Eg usage.
+///
+///
+/// GISelCSEInfo *Info =
+/// &getAnalysis<GISelCSEAnalysisWrapperPass>().getCSEInfo(); CSEMIRBuilder
+/// CB(Builder.getState()); CB.setCSEInfo(Info); auto A = CB.buildConstant(s32,
+/// 42); auto B = CB.buildConstant(s32, 42); assert(A == B); unsigned CReg =
+/// MRI.createGenericVirtualRegister(s32); auto C = CB.buildConstant(CReg, 42);
+/// assert(C->getOpcode() == TargetOpcode::COPY);
+/// Explicitly passing in a register would materialize a copy if possible.
+/// CSEMIRBuilder also does trivial constant folding for binary ops.
+class CSEMIRBuilder : public MachineIRBuilder {
+
+ /// Returns true if A dominates B (within the same basic block).
+ /// Both iterators must be in the same basic block.
+ //
+ // TODO: Another approach for checking dominance is having two iterators and
+ // making them go towards each other until they meet or reach begin/end. Which
+ // approach is better? Should this even change dynamically? For G_CONSTANTS
+ // most of which will be at the top of the BB, the top down approach would be
+ // a better choice. Does IRTranslator placing constants at the beginning still
+ // make sense? Should this change based on Opcode?
+ bool dominates(MachineBasicBlock::const_iterator A,
+ MachineBasicBlock::const_iterator B) const;
+
+ /// For given ID, find a machineinstr in the CSE Map. If found, check if it
+ /// dominates the current insertion point and if not, move it just before the
+ /// current insertion point and return it. If not found, return Null
+ /// MachineInstrBuilder.
+ MachineInstrBuilder getDominatingInstrForID(FoldingSetNodeID &ID,
+ void *&NodeInsertPos);
+ /// Simple check if we can CSE (we have the CSEInfo) or if this Opcode is
+ /// safe to CSE.
+ bool canPerformCSEForOpc(unsigned Opc) const;
+
+ void profileDstOp(const DstOp &Op, GISelInstProfileBuilder &B) const;
+
+ void profileDstOps(ArrayRef<DstOp> Ops, GISelInstProfileBuilder &B) const {
+ for (const DstOp &Op : Ops)
+ profileDstOp(Op, B);
+ }
+
+ void profileSrcOp(const SrcOp &Op, GISelInstProfileBuilder &B) const;
+
+ void profileSrcOps(ArrayRef<SrcOp> Ops, GISelInstProfileBuilder &B) const {
+ for (const SrcOp &Op : Ops)
+ profileSrcOp(Op, B);
+ }
+
+ void profileMBBOpcode(GISelInstProfileBuilder &B, unsigned Opc) const;
+
+ void profileEverything(unsigned Opc, ArrayRef<DstOp> DstOps,
+ ArrayRef<SrcOp> SrcOps, Optional<unsigned> Flags,
+ GISelInstProfileBuilder &B) const;
+
+ // Takes a MachineInstrBuilder and inserts it into the CSEMap using the
+ // NodeInsertPos.
+ MachineInstrBuilder memoizeMI(MachineInstrBuilder MIB, void *NodeInsertPos);
+
+ // If we have can CSE an instruction, but still need to materialize to a VReg,
+ // we emit a copy from the CSE'd inst to the VReg.
+ MachineInstrBuilder generateCopiesIfRequired(ArrayRef<DstOp> DstOps,
+ MachineInstrBuilder &MIB);
+
+ // If we have can CSE an instruction, but still need to materialize to a VReg,
+ // check if we can generate copies. It's not possible to return a single MIB,
+ // while emitting copies to multiple vregs.
+ bool checkCopyToDefsPossible(ArrayRef<DstOp> DstOps);
+
+public:
+ // Pull in base class constructors.
+ using MachineIRBuilder::MachineIRBuilder;
+ // Unhide buildInstr
+ MachineInstrBuilder buildInstr(unsigned Opc, ArrayRef<DstOp> DstOps,
+ ArrayRef<SrcOp> SrcOps,
+ Optional<unsigned> Flag = None) override;
+ // Bring in the other overload from the base class.
+ using MachineIRBuilder::buildConstant;
+
+ MachineInstrBuilder buildConstant(const DstOp &Res,
+ const ConstantInt &Val) override;
+
+ // Bring in the other overload from the base class.
+ using MachineIRBuilder::buildFConstant;
+ MachineInstrBuilder buildFConstant(const DstOp &Res,
+ const ConstantFP &Val) override;
+};
+} // namespace llvm
+#endif
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/CallLowering.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/CallLowering.h
index 32980ce..9b72b70 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/CallLowering.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/CallLowering.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/GlobalISel/CallLowering.h - Call lowering ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -40,6 +39,7 @@
class CallLowering {
const TargetLowering *TLI;
+ virtual void anchor();
public:
struct ArgInfo {
unsigned Reg;
@@ -108,6 +108,9 @@
MachineIRBuilder &MIRBuilder;
MachineRegisterInfo &MRI;
CCAssignFn *AssignFn;
+
+ private:
+ virtual void anchor();
};
protected:
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Combiner.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Combiner.h
index fa49e8c..12a1f97 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Combiner.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Combiner.h
@@ -1,9 +1,8 @@
//== ----- llvm/CodeGen/GlobalISel/Combiner.h --------------------- == //
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -21,31 +20,25 @@
namespace llvm {
class MachineRegisterInfo;
class CombinerInfo;
+class GISelCSEInfo;
class TargetPassConfig;
class MachineFunction;
-class CombinerChangeObserver {
-public:
- virtual ~CombinerChangeObserver() {}
-
- /// An instruction was erased.
- virtual void erasedInstr(MachineInstr &MI) = 0;
- /// An instruction was created and inseerted into the function.
- virtual void createdInstr(MachineInstr &MI) = 0;
-};
-
class Combiner {
public:
Combiner(CombinerInfo &CombinerInfo, const TargetPassConfig *TPC);
- bool combineMachineInstrs(MachineFunction &MF);
+ /// If CSEInfo is not null, then the Combiner will setup observer for
+ /// CSEInfo and instantiate a CSEMIRBuilder. Pass nullptr if CSE is not
+ /// needed.
+ bool combineMachineInstrs(MachineFunction &MF, GISelCSEInfo *CSEInfo);
protected:
CombinerInfo &CInfo;
MachineRegisterInfo *MRI = nullptr;
const TargetPassConfig *TPC;
- MachineIRBuilder Builder;
+ std::unique_ptr<MachineIRBuilder> Builder;
};
} // End namespace llvm.
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/CombinerHelper.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/CombinerHelper.h
index ee67f90..ee30ba9 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/CombinerHelper.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/CombinerHelper.h
@@ -1,9 +1,8 @@
-//== llvm/CodeGen/GlobalISel/CombinerHelper.h -------------- -*- C++ -*-==//
+//===-- llvm/CodeGen/GlobalISel/CombinerHelper.h --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===--------------------------------------------------------------------===//
//
@@ -20,21 +19,27 @@
namespace llvm {
-class CombinerChangeObserver;
+class GISelChangeObserver;
class MachineIRBuilder;
class MachineRegisterInfo;
class MachineInstr;
+class MachineOperand;
class CombinerHelper {
MachineIRBuilder &Builder;
MachineRegisterInfo &MRI;
- CombinerChangeObserver &Observer;
-
- void eraseInstr(MachineInstr &MI);
- void scheduleForVisit(MachineInstr &MI);
+ GISelChangeObserver &Observer;
public:
- CombinerHelper(CombinerChangeObserver &Observer, MachineIRBuilder &B);
+ CombinerHelper(GISelChangeObserver &Observer, MachineIRBuilder &B);
+
+ /// MachineRegisterInfo::replaceRegWith() and inform the observer of the changes
+ void replaceRegWith(MachineRegisterInfo &MRI, unsigned FromReg, unsigned ToReg) const;
+
+ /// Replace a single register operand with a new register and inform the
+ /// observer of the changes.
+ void replaceRegOpWith(MachineRegisterInfo &MRI, MachineOperand &FromRegOp,
+ unsigned ToReg) const;
/// If \p MI is COPY, try to combine it.
/// Returns true if MI changed.
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/CombinerInfo.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/CombinerInfo.h
index 98c5b98..3b09a8e 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/CombinerInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/CombinerInfo.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/GlobalISel/CombinerInfo.h ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -17,7 +16,7 @@
#include <cassert>
namespace llvm {
-class CombinerChangeObserver;
+class GISelChangeObserver;
class LegalizerInfo;
class MachineInstr;
class MachineIRBuilder;
@@ -43,7 +42,18 @@
/// illegal ops that are created.
bool LegalizeIllegalOps; // TODO: Make use of this.
const LegalizerInfo *LInfo;
- virtual bool combine(CombinerChangeObserver &Observer, MachineInstr &MI,
+
+ /// Attempt to combine instructions using MI as the root.
+ ///
+ /// Use Observer to report the creation, modification, and erasure of
+ /// instructions. GISelChangeObserver will automatically report certain
+ /// kinds of operations. These operations are:
+ /// * Instructions that are newly inserted into the MachineFunction
+ /// * Instructions that are erased from the MachineFunction.
+ ///
+ /// However, it is important to report instruction modification and this is
+ /// not automatic.
+ virtual bool combine(GISelChangeObserver &Observer, MachineInstr &MI,
MachineIRBuilder &B) const = 0;
};
} // namespace llvm
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/ConstantFoldingMIRBuilder.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/ConstantFoldingMIRBuilder.h
index 8d61f9a..e817d9b 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/ConstantFoldingMIRBuilder.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/ConstantFoldingMIRBuilder.h
@@ -1,9 +1,8 @@
//===-- llvm/CodeGen/GlobalISel/ConstantFoldingMIRBuilder.h --*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -15,91 +14,20 @@
namespace llvm {
-static Optional<APInt> ConstantFoldBinOp(unsigned Opcode, const unsigned Op1,
- const unsigned Op2,
- const MachineRegisterInfo &MRI) {
- auto MaybeOp1Cst = getConstantVRegVal(Op1, MRI);
- auto MaybeOp2Cst = getConstantVRegVal(Op2, MRI);
- if (MaybeOp1Cst && MaybeOp2Cst) {
- LLT Ty = MRI.getType(Op1);
- APInt C1(Ty.getSizeInBits(), *MaybeOp1Cst, true);
- APInt C2(Ty.getSizeInBits(), *MaybeOp2Cst, true);
- switch (Opcode) {
- default:
- break;
- case TargetOpcode::G_ADD:
- return C1 + C2;
- case TargetOpcode::G_AND:
- return C1 & C2;
- case TargetOpcode::G_ASHR:
- return C1.ashr(C2);
- case TargetOpcode::G_LSHR:
- return C1.lshr(C2);
- case TargetOpcode::G_MUL:
- return C1 * C2;
- case TargetOpcode::G_OR:
- return C1 | C2;
- case TargetOpcode::G_SHL:
- return C1 << C2;
- case TargetOpcode::G_SUB:
- return C1 - C2;
- case TargetOpcode::G_XOR:
- return C1 ^ C2;
- case TargetOpcode::G_UDIV:
- if (!C2.getBoolValue())
- break;
- return C1.udiv(C2);
- case TargetOpcode::G_SDIV:
- if (!C2.getBoolValue())
- break;
- return C1.sdiv(C2);
- case TargetOpcode::G_UREM:
- if (!C2.getBoolValue())
- break;
- return C1.urem(C2);
- case TargetOpcode::G_SREM:
- if (!C2.getBoolValue())
- break;
- return C1.srem(C2);
- }
- }
- return None;
-}
-
/// An MIRBuilder which does trivial constant folding of binary ops.
/// Calls to buildInstr will also try to constant fold binary ops.
-class ConstantFoldingMIRBuilder
- : public FoldableInstructionsBuilder<ConstantFoldingMIRBuilder> {
+class ConstantFoldingMIRBuilder : public MachineIRBuilder {
public:
// Pull in base class constructors.
- using FoldableInstructionsBuilder<
- ConstantFoldingMIRBuilder>::FoldableInstructionsBuilder;
- // Unhide buildInstr
- using FoldableInstructionsBuilder<ConstantFoldingMIRBuilder>::buildInstr;
+ using MachineIRBuilder::MachineIRBuilder;
- // Implement buildBinaryOp required by FoldableInstructionsBuilder which
- // tries to constant fold.
- MachineInstrBuilder buildBinaryOp(unsigned Opcode, unsigned Dst,
- unsigned Src0, unsigned Src1) {
- validateBinaryOp(Dst, Src0, Src1);
- auto MaybeCst = ConstantFoldBinOp(Opcode, Src0, Src1, getMF().getRegInfo());
- if (MaybeCst)
- return buildConstant(Dst, MaybeCst->getSExtValue());
- return buildInstr(Opcode).addDef(Dst).addUse(Src0).addUse(Src1);
- }
-
- template <typename DstTy, typename UseArg1Ty, typename UseArg2Ty>
- MachineInstrBuilder buildInstr(unsigned Opc, DstTy &&Ty, UseArg1Ty &&Arg1,
- UseArg2Ty &&Arg2) {
- unsigned Dst = getDestFromArg(Ty);
- return buildInstr(Opc, Dst, getRegFromArg(std::forward<UseArg1Ty>(Arg1)),
- getRegFromArg(std::forward<UseArg2Ty>(Arg2)));
- }
+ virtual ~ConstantFoldingMIRBuilder() = default;
// Try to provide an overload for buildInstr for binary ops in order to
// constant fold.
- MachineInstrBuilder buildInstr(unsigned Opc, unsigned Dst, unsigned Src0,
- unsigned Src1) {
+ MachineInstrBuilder buildInstr(unsigned Opc, ArrayRef<DstOp> DstOps,
+ ArrayRef<SrcOp> SrcOps,
+ Optional<unsigned> Flags = None) override {
switch (Opc) {
default:
break;
@@ -116,19 +44,18 @@
case TargetOpcode::G_SDIV:
case TargetOpcode::G_UREM:
case TargetOpcode::G_SREM: {
- return buildBinaryOp(Opc, Dst, Src0, Src1);
+ assert(DstOps.size() == 1 && "Invalid dst ops");
+ assert(SrcOps.size() == 2 && "Invalid src ops");
+ const DstOp &Dst = DstOps[0];
+ const SrcOp &Src0 = SrcOps[0];
+ const SrcOp &Src1 = SrcOps[1];
+ if (auto MaybeCst =
+ ConstantFoldBinOp(Opc, Src0.getReg(), Src1.getReg(), *getMRI()))
+ return buildConstant(Dst, MaybeCst->getSExtValue());
+ break;
}
}
- return buildInstr(Opc).addDef(Dst).addUse(Src0).addUse(Src1);
- }
-
- // Fallback implementation of buildInstr.
- template <typename DstTy, typename... UseArgsTy>
- MachineInstrBuilder buildInstr(unsigned Opc, DstTy &&Ty,
- UseArgsTy &&... Args) {
- auto MIB = buildInstr(Opc).addDef(getDestFromArg(Ty));
- addUsesFromArgs(MIB, std::forward<UseArgsTy>(Args)...);
- return MIB;
+ return MachineIRBuilder::buildInstr(Opc, DstOps, SrcOps);
}
};
} // namespace llvm
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/GISelChangeObserver.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/GISelChangeObserver.h
new file mode 100644
index 0000000..e5691cb
--- /dev/null
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/GISelChangeObserver.h
@@ -0,0 +1,117 @@
+//===----- llvm/CodeGen/GlobalISel/GISelChangeObserver.h --------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+/// This contains common code to allow clients to notify changes to machine
+/// instr.
+//
+//===----------------------------------------------------------------------===//
+#ifndef LLVM_CODEGEN_GLOBALISEL_GISELCHANGEOBSERVER_H
+#define LLVM_CODEGEN_GLOBALISEL_GISELCHANGEOBSERVER_H
+
+#include "llvm/ADT/SmallPtrSet.h"
+#include "llvm/CodeGen/MachineFunction.h"
+
+namespace llvm {
+class MachineInstr;
+class MachineRegisterInfo;
+
+/// Abstract class that contains various methods for clients to notify about
+/// changes. This should be the preferred way for APIs to notify changes.
+/// Typically calling erasingInstr/createdInstr multiple times should not affect
+/// the result. The observer would likely need to check if it was already
+/// notified earlier (consider using GISelWorkList).
+class GISelChangeObserver {
+ SmallPtrSet<MachineInstr *, 4> ChangingAllUsesOfReg;
+
+public:
+ virtual ~GISelChangeObserver() {}
+
+ /// An instruction is about to be erased.
+ virtual void erasingInstr(MachineInstr &MI) = 0;
+
+ /// An instruction has been created and inserted into the function.
+ /// Note that the instruction might not be a fully fledged instruction at this
+ /// point and won't be if the MachineFunction::Delegate is calling it. This is
+ /// because the delegate only sees the construction of the MachineInstr before
+ /// operands have been added.
+ virtual void createdInstr(MachineInstr &MI) = 0;
+
+ /// This instruction is about to be mutated in some way.
+ virtual void changingInstr(MachineInstr &MI) = 0;
+
+ /// This instruction was mutated in some way.
+ virtual void changedInstr(MachineInstr &MI) = 0;
+
+ /// All the instructions using the given register are being changed.
+ /// For convenience, finishedChangingAllUsesOfReg() will report the completion
+ /// of the changes. The use list may change between this call and
+ /// finishedChangingAllUsesOfReg().
+ void changingAllUsesOfReg(const MachineRegisterInfo &MRI, unsigned Reg);
+ /// All instructions reported as changing by changingAllUsesOfReg() have
+ /// finished being changed.
+ void finishedChangingAllUsesOfReg();
+
+};
+
+/// Simple wrapper observer that takes several observers, and calls
+/// each one for each event. If there are multiple observers (say CSE,
+/// Legalizer, Combiner), it's sufficient to register this to the machine
+/// function as the delegate.
+class GISelObserverWrapper : public MachineFunction::Delegate,
+ public GISelChangeObserver {
+ SmallVector<GISelChangeObserver *, 4> Observers;
+
+public:
+ GISelObserverWrapper() = default;
+ GISelObserverWrapper(ArrayRef<GISelChangeObserver *> Obs)
+ : Observers(Obs.begin(), Obs.end()) {}
+ // Adds an observer.
+ void addObserver(GISelChangeObserver *O) { Observers.push_back(O); }
+ // Removes an observer from the list and does nothing if observer is not
+ // present.
+ void removeObserver(GISelChangeObserver *O) {
+ auto It = std::find(Observers.begin(), Observers.end(), O);
+ if (It != Observers.end())
+ Observers.erase(It);
+ }
+ // API for Observer.
+ void erasingInstr(MachineInstr &MI) override {
+ for (auto &O : Observers)
+ O->erasingInstr(MI);
+ }
+ void createdInstr(MachineInstr &MI) override {
+ for (auto &O : Observers)
+ O->createdInstr(MI);
+ }
+ void changingInstr(MachineInstr &MI) override {
+ for (auto &O : Observers)
+ O->changingInstr(MI);
+ }
+ void changedInstr(MachineInstr &MI) override {
+ for (auto &O : Observers)
+ O->changedInstr(MI);
+ }
+ // API for MachineFunction::Delegate
+ void MF_HandleInsertion(MachineInstr &MI) override { createdInstr(MI); }
+ void MF_HandleRemoval(MachineInstr &MI) override { erasingInstr(MI); }
+};
+
+/// A simple RAII based CSEInfo installer.
+/// Use this in a scope to install a delegate to the MachineFunction and reset
+/// it at the end of the scope.
+class RAIIDelegateInstaller {
+ MachineFunction &MF;
+ MachineFunction::Delegate *Delegate;
+
+public:
+ RAIIDelegateInstaller(MachineFunction &MF, MachineFunction::Delegate *Del);
+ ~RAIIDelegateInstaller();
+};
+
+} // namespace llvm
+#endif
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/GISelWorkList.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/GISelWorkList.h
index 167905d..626a666 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/GISelWorkList.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/GISelWorkList.h
@@ -1,9 +1,8 @@
//===- GISelWorkList.h - Worklist for GISel passes ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -12,38 +11,42 @@
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallVector.h"
+#include "llvm/CodeGen/MachineBasicBlock.h"
+#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/Support/Debug.h"
namespace llvm {
class MachineInstr;
+class MachineFunction;
-// Worklist which mostly works similar to InstCombineWorkList, but on MachineInstrs.
-// The main difference with something like a SetVector is that erasing an element doesn't
-// move all elements over one place - instead just nulls out the element of the vector.
-// FIXME: Does it make sense to factor out common code with the instcombinerWorkList?
+// Worklist which mostly works similar to InstCombineWorkList, but on
+// MachineInstrs. The main difference with something like a SetVector is that
+// erasing an element doesn't move all elements over one place - instead just
+// nulls out the element of the vector.
+//
+// FIXME: Does it make sense to factor out common code with the
+// instcombinerWorkList?
template<unsigned N>
class GISelWorkList {
- SmallVector<MachineInstr*, N> Worklist;
- DenseMap<MachineInstr*, unsigned> WorklistMap;
+ SmallVector<MachineInstr *, N> Worklist;
+ DenseMap<MachineInstr *, unsigned> WorklistMap;
public:
- GISelWorkList() = default;
+ GISelWorkList() : WorklistMap(N) {}
bool empty() const { return WorklistMap.empty(); }
unsigned size() const { return WorklistMap.size(); }
- /// Add - Add the specified instruction to the worklist if it isn't already
- /// in it.
+ /// Add the specified instruction to the worklist if it isn't already in it.
void insert(MachineInstr *I) {
- if (WorklistMap.try_emplace(I, Worklist.size()).second) {
+ if (WorklistMap.try_emplace(I, Worklist.size()).second)
Worklist.push_back(I);
- }
}
- /// Remove - remove I from the worklist if it exists.
- void remove(MachineInstr *I) {
+ /// Remove I from the worklist if it exists.
+ void remove(const MachineInstr *I) {
auto It = WorklistMap.find(I);
if (It == WorklistMap.end()) return; // Not in worklist.
@@ -53,6 +56,11 @@
WorklistMap.erase(It);
}
+ void clear() {
+ Worklist.clear();
+ WorklistMap.clear();
+ }
+
MachineInstr *pop_back_val() {
MachineInstr *I;
do {
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/IRTranslator.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/IRTranslator.h
index 2498ee9..c75d823 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/IRTranslator.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/IRTranslator.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/GlobalISel/IRTranslator.h - IRTranslator ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -21,11 +20,11 @@
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallVector.h"
-#include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h"
+#include "llvm/CodeGen/GlobalISel/CSEMIRBuilder.h"
#include "llvm/CodeGen/GlobalISel/Types.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
-#include "llvm/Support/Allocator.h"
#include "llvm/IR/Intrinsics.h"
+#include "llvm/Support/Allocator.h"
#include <memory>
#include <utility>
@@ -217,6 +216,17 @@
bool translateOverflowIntrinsic(const CallInst &CI, unsigned Op,
MachineIRBuilder &MIRBuilder);
+ /// Helper function for translateSimpleIntrinsic.
+ /// \return The generic opcode for \p IntrinsicID if \p IntrinsicID is a
+ /// simple intrinsic (ceil, fabs, etc.). Otherwise, returns
+ /// Intrinsic::not_intrinsic.
+ unsigned getSimpleIntrinsicOpcode(Intrinsic::ID ID);
+
+ /// Translates the intrinsics defined in getSimpleIntrinsicOpcode.
+ /// \return true if the translation succeeded.
+ bool translateSimpleIntrinsic(const CallInst &CI, Intrinsic::ID ID,
+ MachineIRBuilder &MIRBuilder);
+
bool translateKnownIntrinsic(const CallInst &CI, Intrinsic::ID ID,
MachineIRBuilder &MIRBuilder);
@@ -242,6 +252,8 @@
bool translateInvoke(const User &U, MachineIRBuilder &MIRBuilder);
+ bool translateCallBr(const User &U, MachineIRBuilder &MIRBuilder);
+
bool translateLandingPad(const User &U, MachineIRBuilder &MIRBuilder);
/// Translate one of LLVM's cast instructions into MachineInstrs, with the
@@ -300,6 +312,8 @@
bool translateFSub(const User &U, MachineIRBuilder &MIRBuilder);
+ bool translateFNeg(const User &U, MachineIRBuilder &MIRBuilder);
+
bool translateAdd(const User &U, MachineIRBuilder &MIRBuilder) {
return translateBinaryOp(TargetOpcode::G_ADD, U, MIRBuilder);
}
@@ -442,11 +456,13 @@
// I.e., compared to regular MIBuilder, this one also inserts the instruction
// in the current block, it can creates block, etc., basically a kind of
// IRBuilder, but for Machine IR.
- MachineIRBuilder CurBuilder;
+ // CSEMIRBuilder CurBuilder;
+ std::unique_ptr<MachineIRBuilder> CurBuilder;
// Builder set to the entry block (just after ABI lowering instructions). Used
// as a convenient location for Constants.
- MachineIRBuilder EntryBuilder;
+ // CSEMIRBuilder EntryBuilder;
+ std::unique_ptr<MachineIRBuilder> EntryBuilder;
// The MachineFunction currently being translated.
MachineFunction *MF;
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/InstructionSelect.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/InstructionSelect.h
index 01521c4..1af46e0 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/InstructionSelect.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/InstructionSelect.h
@@ -1,9 +1,8 @@
//== llvm/CodeGen/GlobalISel/InstructionSelect.h -----------------*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file This file describes the interface of the MachineFunctionPass
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/InstructionSelector.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/InstructionSelector.h
index 471def7..e4d05a5 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/InstructionSelector.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/InstructionSelector.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/GlobalISel/InstructionSelector.h ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/InstructionSelectorImpl.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/InstructionSelectorImpl.h
index 2003a79..87ef2f8 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/InstructionSelectorImpl.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/InstructionSelectorImpl.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/GlobalISel/InstructionSelectorImpl.h --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h
index 8735876..e7680e1 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h
@@ -1,9 +1,8 @@
-//===-- llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h --===========//
+//===-- llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h -----*- C++ -*-//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// This file contains some helper functions which try to cleanup artifacts
@@ -14,12 +13,14 @@
#include "llvm/CodeGen/GlobalISel/Legalizer.h"
#include "llvm/CodeGen/GlobalISel/LegalizerInfo.h"
+#include "llvm/CodeGen/GlobalISel/MIPatternMatch.h"
#include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h"
#include "llvm/CodeGen/GlobalISel/Utils.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/Support/Debug.h"
#define DEBUG_TYPE "legalizer"
+using namespace llvm::MIPatternMatch;
namespace llvm {
class LegalizationArtifactCombiner {
@@ -36,15 +37,29 @@
SmallVectorImpl<MachineInstr *> &DeadInsts) {
if (MI.getOpcode() != TargetOpcode::G_ANYEXT)
return false;
- if (MachineInstr *DefMI = getOpcodeDef(TargetOpcode::G_TRUNC,
- MI.getOperand(1).getReg(), MRI)) {
+
+ Builder.setInstr(MI);
+ unsigned DstReg = MI.getOperand(0).getReg();
+ unsigned SrcReg = lookThroughCopyInstrs(MI.getOperand(1).getReg());
+
+ // aext(trunc x) - > aext/copy/trunc x
+ unsigned TruncSrc;
+ if (mi_match(SrcReg, MRI, m_GTrunc(m_Reg(TruncSrc)))) {
LLVM_DEBUG(dbgs() << ".. Combine MI: " << MI;);
- unsigned DstReg = MI.getOperand(0).getReg();
- unsigned SrcReg = DefMI->getOperand(1).getReg();
- Builder.setInstr(MI);
- // We get a copy/trunc/extend depending on the sizes
- Builder.buildAnyExtOrTrunc(DstReg, SrcReg);
- markInstAndDefDead(MI, *DefMI, DeadInsts);
+ Builder.buildAnyExtOrTrunc(DstReg, TruncSrc);
+ markInstAndDefDead(MI, *MRI.getVRegDef(SrcReg), DeadInsts);
+ return true;
+ }
+
+ // aext([asz]ext x) -> [asz]ext x
+ unsigned ExtSrc;
+ MachineInstr *ExtMI;
+ if (mi_match(SrcReg, MRI,
+ m_all_of(m_MInstr(ExtMI), m_any_of(m_GAnyExt(m_Reg(ExtSrc)),
+ m_GSExt(m_Reg(ExtSrc)),
+ m_GZExt(m_Reg(ExtSrc)))))) {
+ Builder.buildInstr(ExtMI->getOpcode(), {DstReg}, {ExtSrc});
+ markInstAndDefDead(MI, *ExtMI, DeadInsts);
return true;
}
return tryFoldImplicitDef(MI, DeadInsts);
@@ -55,24 +70,25 @@
if (MI.getOpcode() != TargetOpcode::G_ZEXT)
return false;
- if (MachineInstr *DefMI = getOpcodeDef(TargetOpcode::G_TRUNC,
- MI.getOperand(1).getReg(), MRI)) {
- unsigned DstReg = MI.getOperand(0).getReg();
+
+ Builder.setInstr(MI);
+ unsigned DstReg = MI.getOperand(0).getReg();
+ unsigned SrcReg = lookThroughCopyInstrs(MI.getOperand(1).getReg());
+
+ // zext(trunc x) - > and (aext/copy/trunc x), mask
+ unsigned TruncSrc;
+ if (mi_match(SrcReg, MRI, m_GTrunc(m_Reg(TruncSrc)))) {
LLT DstTy = MRI.getType(DstReg);
if (isInstUnsupported({TargetOpcode::G_AND, {DstTy}}) ||
- isInstUnsupported({TargetOpcode::G_CONSTANT, {DstTy}}))
+ isConstantUnsupported(DstTy))
return false;
LLVM_DEBUG(dbgs() << ".. Combine MI: " << MI;);
- Builder.setInstr(MI);
- unsigned ZExtSrc = MI.getOperand(1).getReg();
- LLT ZExtSrcTy = MRI.getType(ZExtSrc);
- APInt Mask = APInt::getAllOnesValue(ZExtSrcTy.getSizeInBits());
- auto MaskCstMIB = Builder.buildConstant(DstTy, Mask.getZExtValue());
- unsigned TruncSrc = DefMI->getOperand(1).getReg();
- // We get a copy/trunc/extend depending on the sizes
- auto SrcCopyOrTrunc = Builder.buildAnyExtOrTrunc(DstTy, TruncSrc);
- Builder.buildAnd(DstReg, SrcCopyOrTrunc, MaskCstMIB);
- markInstAndDefDead(MI, *DefMI, DeadInsts);
+ LLT SrcTy = MRI.getType(SrcReg);
+ APInt Mask = APInt::getAllOnesValue(SrcTy.getScalarSizeInBits());
+ auto MIBMask = Builder.buildConstant(DstTy, Mask.getZExtValue());
+ Builder.buildAnd(DstReg, Builder.buildAnyExtOrTrunc(DstTy, TruncSrc),
+ MIBMask);
+ markInstAndDefDead(MI, *MRI.getVRegDef(SrcReg), DeadInsts);
return true;
}
return tryFoldImplicitDef(MI, DeadInsts);
@@ -83,33 +99,36 @@
if (MI.getOpcode() != TargetOpcode::G_SEXT)
return false;
- if (MachineInstr *DefMI = getOpcodeDef(TargetOpcode::G_TRUNC,
- MI.getOperand(1).getReg(), MRI)) {
- unsigned DstReg = MI.getOperand(0).getReg();
+
+ Builder.setInstr(MI);
+ unsigned DstReg = MI.getOperand(0).getReg();
+ unsigned SrcReg = lookThroughCopyInstrs(MI.getOperand(1).getReg());
+
+ // sext(trunc x) - > ashr (shl (aext/copy/trunc x), c), c
+ unsigned TruncSrc;
+ if (mi_match(SrcReg, MRI, m_GTrunc(m_Reg(TruncSrc)))) {
LLT DstTy = MRI.getType(DstReg);
- if (isInstUnsupported({TargetOpcode::G_SHL, {DstTy}}) ||
- isInstUnsupported({TargetOpcode::G_ASHR, {DstTy}}) ||
- isInstUnsupported({TargetOpcode::G_CONSTANT, {DstTy}}))
+ // Guess on the RHS shift amount type, which should be re-legalized if
+ // applicable.
+ if (isInstUnsupported({TargetOpcode::G_SHL, {DstTy, DstTy}}) ||
+ isInstUnsupported({TargetOpcode::G_ASHR, {DstTy, DstTy}}) ||
+ isConstantUnsupported(DstTy))
return false;
LLVM_DEBUG(dbgs() << ".. Combine MI: " << MI;);
- Builder.setInstr(MI);
- unsigned SExtSrc = MI.getOperand(1).getReg();
- LLT SExtSrcTy = MRI.getType(SExtSrc);
- unsigned SizeDiff = DstTy.getSizeInBits() - SExtSrcTy.getSizeInBits();
- auto SizeDiffMIB = Builder.buildConstant(DstTy, SizeDiff);
- unsigned TruncSrcReg = DefMI->getOperand(1).getReg();
- // We get a copy/trunc/extend depending on the sizes
- auto SrcCopyExtOrTrunc = Builder.buildAnyExtOrTrunc(DstTy, TruncSrcReg);
- auto ShlMIB = Builder.buildInstr(TargetOpcode::G_SHL, DstTy,
- SrcCopyExtOrTrunc, SizeDiffMIB);
- Builder.buildInstr(TargetOpcode::G_ASHR, DstReg, ShlMIB, SizeDiffMIB);
- markInstAndDefDead(MI, *DefMI, DeadInsts);
+ LLT SrcTy = MRI.getType(SrcReg);
+ unsigned ShAmt = DstTy.getScalarSizeInBits() - SrcTy.getScalarSizeInBits();
+ auto MIBShAmt = Builder.buildConstant(DstTy, ShAmt);
+ auto MIBShl = Builder.buildInstr(
+ TargetOpcode::G_SHL, {DstTy},
+ {Builder.buildAnyExtOrTrunc(DstTy, TruncSrc), MIBShAmt});
+ Builder.buildInstr(TargetOpcode::G_ASHR, {DstReg}, {MIBShl, MIBShAmt});
+ markInstAndDefDead(MI, *MRI.getVRegDef(SrcReg), DeadInsts);
return true;
}
return tryFoldImplicitDef(MI, DeadInsts);
}
- /// Try to fold sb = EXTEND (G_IMPLICIT_DEF sa) -> sb = G_IMPLICIT_DEF
+ /// Try to fold G_[ASZ]EXT (G_IMPLICIT_DEF).
bool tryFoldImplicitDef(MachineInstr &MI,
SmallVectorImpl<MachineInstr *> &DeadInsts) {
unsigned Opcode = MI.getOpcode();
@@ -119,19 +138,41 @@
if (MachineInstr *DefMI = getOpcodeDef(TargetOpcode::G_IMPLICIT_DEF,
MI.getOperand(1).getReg(), MRI)) {
+ Builder.setInstr(MI);
unsigned DstReg = MI.getOperand(0).getReg();
LLT DstTy = MRI.getType(DstReg);
- if (isInstUnsupported({TargetOpcode::G_IMPLICIT_DEF, {DstTy}}))
- return false;
- LLVM_DEBUG(dbgs() << ".. Combine EXT(IMPLICIT_DEF) " << MI;);
- Builder.setInstr(MI);
- Builder.buildInstr(TargetOpcode::G_IMPLICIT_DEF, DstReg);
+
+ if (Opcode == TargetOpcode::G_ANYEXT) {
+ // G_ANYEXT (G_IMPLICIT_DEF) -> G_IMPLICIT_DEF
+ if (isInstUnsupported({TargetOpcode::G_IMPLICIT_DEF, {DstTy}}))
+ return false;
+ LLVM_DEBUG(dbgs() << ".. Combine G_ANYEXT(G_IMPLICIT_DEF): " << MI;);
+ Builder.buildInstr(TargetOpcode::G_IMPLICIT_DEF, {DstReg}, {});
+ } else {
+ // G_[SZ]EXT (G_IMPLICIT_DEF) -> G_CONSTANT 0 because the top
+ // bits will be 0 for G_ZEXT and 0/1 for the G_SEXT.
+ if (isConstantUnsupported(DstTy))
+ return false;
+ LLVM_DEBUG(dbgs() << ".. Combine G_[SZ]EXT(G_IMPLICIT_DEF): " << MI;);
+ Builder.buildConstant(DstReg, 0);
+ }
+
markInstAndDefDead(MI, *DefMI, DeadInsts);
return true;
}
return false;
}
+ static unsigned getMergeOpcode(LLT OpTy, LLT DestTy) {
+ if (OpTy.isVector() && DestTy.isVector())
+ return TargetOpcode::G_CONCAT_VECTORS;
+
+ if (OpTy.isVector() && !DestTy.isVector())
+ return TargetOpcode::G_BUILD_VECTOR;
+
+ return TargetOpcode::G_MERGE_VALUES;
+ }
+
bool tryCombineMerges(MachineInstr &MI,
SmallVectorImpl<MachineInstr *> &DeadInsts) {
@@ -139,8 +180,14 @@
return false;
unsigned NumDefs = MI.getNumOperands() - 1;
- MachineInstr *MergeI = getOpcodeDef(TargetOpcode::G_MERGE_VALUES,
- MI.getOperand(NumDefs).getReg(), MRI);
+
+ LLT OpTy = MRI.getType(MI.getOperand(NumDefs).getReg());
+ LLT DestTy = MRI.getType(MI.getOperand(0).getReg());
+
+ unsigned MergingOpcode = getMergeOpcode(OpTy, DestTy);
+ MachineInstr *MergeI =
+ getOpcodeDef(MergingOpcode, MI.getOperand(NumDefs).getReg(), MRI);
+
if (!MergeI)
return false;
@@ -206,6 +253,65 @@
return true;
}
+ static bool isMergeLikeOpcode(unsigned Opc) {
+ switch (Opc) {
+ case TargetOpcode::G_MERGE_VALUES:
+ case TargetOpcode::G_BUILD_VECTOR:
+ case TargetOpcode::G_CONCAT_VECTORS:
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ bool tryCombineExtract(MachineInstr &MI,
+ SmallVectorImpl<MachineInstr *> &DeadInsts) {
+ assert(MI.getOpcode() == TargetOpcode::G_EXTRACT);
+
+ // Try to use the source registers from a G_MERGE_VALUES
+ //
+ // %2 = G_MERGE_VALUES %0, %1
+ // %3 = G_EXTRACT %2, N
+ // =>
+ //
+ // for N < %2.getSizeInBits() / 2
+ // %3 = G_EXTRACT %0, N
+ //
+ // for N >= %2.getSizeInBits() / 2
+ // %3 = G_EXTRACT %1, (N - %0.getSizeInBits()
+
+ unsigned Src = lookThroughCopyInstrs(MI.getOperand(1).getReg());
+ MachineInstr *MergeI = MRI.getVRegDef(Src);
+ if (!MergeI || !isMergeLikeOpcode(MergeI->getOpcode()))
+ return false;
+
+ LLT DstTy = MRI.getType(MI.getOperand(0).getReg());
+ LLT SrcTy = MRI.getType(Src);
+
+ // TODO: Do we need to check if the resulting extract is supported?
+ unsigned ExtractDstSize = DstTy.getSizeInBits();
+ unsigned Offset = MI.getOperand(2).getImm();
+ unsigned NumMergeSrcs = MergeI->getNumOperands() - 1;
+ unsigned MergeSrcSize = SrcTy.getSizeInBits() / NumMergeSrcs;
+ unsigned MergeSrcIdx = Offset / MergeSrcSize;
+
+ // Compute the offset of the last bit the extract needs.
+ unsigned EndMergeSrcIdx = (Offset + ExtractDstSize - 1) / MergeSrcSize;
+
+ // Can't handle the case where the extract spans multiple inputs.
+ if (MergeSrcIdx != EndMergeSrcIdx)
+ return false;
+
+ // TODO: We could modify MI in place in most cases.
+ Builder.setInstr(MI);
+ Builder.buildExtract(
+ MI.getOperand(0).getReg(),
+ MergeI->getOperand(MergeSrcIdx + 1).getReg(),
+ Offset - MergeSrcIdx * MergeSrcSize);
+ markInstAndDefDead(MI, *MergeI, DeadInsts);
+ return true;
+ }
+
/// Try to combine away MI.
/// Returns true if it combined away the MI.
/// Adds instructions that are dead as a result of the combine
@@ -223,6 +329,8 @@
return tryCombineSExt(MI, DeadInsts);
case TargetOpcode::G_UNMERGE_VALUES:
return tryCombineMerges(MI, DeadInsts);
+ case TargetOpcode::G_EXTRACT:
+ return tryCombineExtract(MI, DeadInsts);
case TargetOpcode::G_TRUNC: {
bool Changed = false;
for (auto &Use : MRI.use_instructions(MI.getOperand(0).getReg()))
@@ -233,6 +341,23 @@
}
private:
+
+ static unsigned getArtifactSrcReg(const MachineInstr &MI) {
+ switch (MI.getOpcode()) {
+ case TargetOpcode::COPY:
+ case TargetOpcode::G_TRUNC:
+ case TargetOpcode::G_ZEXT:
+ case TargetOpcode::G_ANYEXT:
+ case TargetOpcode::G_SEXT:
+ case TargetOpcode::G_UNMERGE_VALUES:
+ return MI.getOperand(MI.getNumOperands() - 1).getReg();
+ case TargetOpcode::G_EXTRACT:
+ return MI.getOperand(1).getReg();
+ default:
+ llvm_unreachable("Not a legalization artifact happen");
+ }
+ }
+
/// Mark MI as dead. If a def of one of MI's operands, DefMI, would also be
/// dead due to MI being killed, then mark DefMI as dead too.
/// Some of the combines (extends(trunc)), try to walk through redundant
@@ -253,8 +378,8 @@
// and as a result, %3, %2, %1 are dead.
MachineInstr *PrevMI = &MI;
while (PrevMI != &DefMI) {
- unsigned PrevRegSrc =
- PrevMI->getOperand(PrevMI->getNumOperands() - 1).getReg();
+ unsigned PrevRegSrc = getArtifactSrcReg(*PrevMI);
+
MachineInstr *TmpDef = MRI.getVRegDef(PrevRegSrc);
if (MRI.hasOneUse(PrevRegSrc)) {
if (TmpDef != &DefMI) {
@@ -277,6 +402,28 @@
auto Step = LI.getAction(Query);
return Step.Action == Unsupported || Step.Action == NotFound;
}
+
+ bool isConstantUnsupported(LLT Ty) const {
+ if (!Ty.isVector())
+ return isInstUnsupported({TargetOpcode::G_CONSTANT, {Ty}});
+
+ LLT EltTy = Ty.getElementType();
+ return isInstUnsupported({TargetOpcode::G_CONSTANT, {EltTy}}) ||
+ isInstUnsupported({TargetOpcode::G_BUILD_VECTOR, {Ty, EltTy}});
+ }
+
+ /// Looks through copy instructions and returns the actual
+ /// source register.
+ unsigned lookThroughCopyInstrs(unsigned Reg) {
+ unsigned TmpReg;
+ while (mi_match(Reg, MRI, m_Copy(m_Reg(TmpReg)))) {
+ if (MRI.getType(TmpReg).isValid())
+ Reg = TmpReg;
+ else
+ break;
+ }
+ return Reg;
+ }
};
} // namespace llvm
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Legalizer.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Legalizer.h
index 8284ab6..0181650 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Legalizer.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Legalizer.h
@@ -1,9 +1,8 @@
-//== llvm/CodeGen/GlobalISel/LegalizePass.h ------------- -*- C++ -*-==//
+//== llvm/CodeGen/GlobalISel/Legalizer.h ---------------- -*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h
index 4d804d0..136356c 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h
@@ -1,9 +1,8 @@
//== llvm/CodeGen/GlobalISel/LegalizerHelper.h ---------------- -*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -32,6 +31,7 @@
class LegalizerInfo;
class Legalizer;
class MachineRegisterInfo;
+class GISelChangeObserver;
class LegalizerHelper {
public:
@@ -48,8 +48,10 @@
UnableToLegalize,
};
- LegalizerHelper(MachineFunction &MF);
- LegalizerHelper(MachineFunction &MF, const LegalizerInfo &LI);
+ LegalizerHelper(MachineFunction &MF, GISelChangeObserver &Observer,
+ MachineIRBuilder &B);
+ LegalizerHelper(MachineFunction &MF, const LegalizerInfo &LI,
+ GISelChangeObserver &Observer, MachineIRBuilder &B);
/// Replace \p MI by a sequence of legal instructions that can implement the
/// same operation. Note that this means \p MI may be deleted, so any iterator
@@ -84,11 +86,11 @@
/// Legalize a vector instruction by increasing the number of vector elements
/// involved and ignoring the added elements later.
LegalizeResult moreElementsVector(MachineInstr &MI, unsigned TypeIdx,
- LLT WideTy);
+ LLT MoreTy);
/// Expose MIRBuilder so clients can set their own RecordInsertInstruction
/// functions
- MachineIRBuilder MIRBuilder;
+ MachineIRBuilder &MIRBuilder;
/// Expose LegalizerInfo so the clients can re-use.
const LegalizerInfo &getLegalizerInfo() const { return LI; }
@@ -102,21 +104,102 @@
unsigned ExtOpcode);
/// Legalize a single operand \p OpIdx of the machine instruction \p MI as a
+ /// Use by truncating the operand's type to \p NarrowTy using G_TRUNC, and
+ /// replacing the vreg of the operand in place.
+ void narrowScalarSrc(MachineInstr &MI, LLT NarrowTy, unsigned OpIdx);
+
+ /// Legalize a single operand \p OpIdx of the machine instruction \p MI as a
/// Def by extending the operand's type to \p WideTy and truncating it back
/// with the \p TruncOpcode, and replacing the vreg of the operand in place.
void widenScalarDst(MachineInstr &MI, LLT WideTy, unsigned OpIdx = 0,
unsigned TruncOpcode = TargetOpcode::G_TRUNC);
+ // Legalize a single operand \p OpIdx of the machine instruction \p MI as a
+ // Def by truncating the operand's type to \p NarrowTy, replacing in place and
+ // extending back with \p ExtOpcode.
+ void narrowScalarDst(MachineInstr &MI, LLT NarrowTy, unsigned OpIdx,
+ unsigned ExtOpcode);
+ /// Legalize a single operand \p OpIdx of the machine instruction \p MI as a
+ /// Def by performing it with additional vector elements and extracting the
+ /// result elements, and replacing the vreg of the operand in place.
+ void moreElementsVectorDst(MachineInstr &MI, LLT MoreTy, unsigned OpIdx);
+
+ LegalizeResult
+ widenScalarMergeValues(MachineInstr &MI, unsigned TypeIdx, LLT WideTy);
+ LegalizeResult
+ widenScalarUnmergeValues(MachineInstr &MI, unsigned TypeIdx, LLT WideTy);
+ LegalizeResult
+ widenScalarExtract(MachineInstr &MI, unsigned TypeIdx, LLT WideTy);
+ LegalizeResult
+ widenScalarInsert(MachineInstr &MI, unsigned TypeIdx, LLT WideTy);
+
/// Helper function to split a wide generic register into bitwise blocks with
/// the given Type (which implies the number of blocks needed). The generic
/// registers created are appended to Ops, starting at bit 0 of Reg.
void extractParts(unsigned Reg, LLT Ty, int NumParts,
SmallVectorImpl<unsigned> &VRegs);
+ /// Version which handles irregular splits.
+ bool extractParts(unsigned Reg, LLT RegTy, LLT MainTy,
+ LLT &LeftoverTy,
+ SmallVectorImpl<unsigned> &VRegs,
+ SmallVectorImpl<unsigned> &LeftoverVRegs);
+
+ /// Helper function to build a wide generic register \p DstReg of type \p
+ /// RegTy from smaller parts. This will produce a G_MERGE_VALUES,
+ /// G_BUILD_VECTOR, G_CONCAT_VECTORS, or sequence of G_INSERT as appropriate
+ /// for the types.
+ ///
+ /// \p PartRegs must be registers of type \p PartTy.
+ ///
+ /// If \p ResultTy does not evenly break into \p PartTy sized pieces, the
+ /// remainder must be specified with \p LeftoverRegs of type \p LeftoverTy.
+ void insertParts(unsigned DstReg, LLT ResultTy,
+ LLT PartTy, ArrayRef<unsigned> PartRegs,
+ LLT LeftoverTy = LLT(), ArrayRef<unsigned> LeftoverRegs = {});
+
+ LegalizeResult fewerElementsVectorImplicitDef(MachineInstr &MI,
+ unsigned TypeIdx, LLT NarrowTy);
+
+ /// Legalize a simple vector instruction where all operands are the same type
+ /// by splitting into multiple components.
+ LegalizeResult fewerElementsVectorBasic(MachineInstr &MI, unsigned TypeIdx,
+ LLT NarrowTy);
+
+ /// Legalize a instruction with a vector type where each operand may have a
+ /// different element type. All type indexes must have the same number of
+ /// elements.
+ LegalizeResult fewerElementsVectorMultiEltType(MachineInstr &MI,
+ unsigned TypeIdx, LLT NarrowTy);
+
+ LegalizeResult fewerElementsVectorCasts(MachineInstr &MI, unsigned TypeIdx,
+ LLT NarrowTy);
+
+ LegalizeResult
+ fewerElementsVectorCmp(MachineInstr &MI, unsigned TypeIdx, LLT NarrowTy);
+
+ LegalizeResult
+ fewerElementsVectorSelect(MachineInstr &MI, unsigned TypeIdx, LLT NarrowTy);
+
+ LegalizeResult
+ reduceLoadStoreWidth(MachineInstr &MI, unsigned TypeIdx, LLT NarrowTy);
+
+ LegalizeResult narrowScalarShiftByConstant(MachineInstr &MI, const APInt &Amt,
+ LLT HalfTy, LLT ShiftAmtTy);
+
+ LegalizeResult narrowScalarShift(MachineInstr &MI, unsigned TypeIdx, LLT Ty);
+ LegalizeResult narrowScalarMul(MachineInstr &MI, unsigned TypeIdx, LLT Ty);
+ LegalizeResult narrowScalarExtract(MachineInstr &MI, unsigned TypeIdx, LLT Ty);
+ LegalizeResult narrowScalarInsert(MachineInstr &MI, unsigned TypeIdx, LLT Ty);
+
+ LegalizeResult narrowScalarSelect(MachineInstr &MI, unsigned TypeIdx, LLT Ty);
+
LegalizeResult lowerBitCount(MachineInstr &MI, unsigned TypeIdx, LLT Ty);
MachineRegisterInfo &MRI;
const LegalizerInfo &LI;
+ /// To keep track of changes made by the LegalizerHelper.
+ GISelChangeObserver &Observer;
};
/// Helper function that creates the given libcall.
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
index a8c2608..5979173 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/GlobalISel/LegalizerInfo.h ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -39,6 +38,7 @@
class MachineIRBuilder;
class MachineRegisterInfo;
class MCInstrInfo;
+class GISelChangeObserver;
namespace LegalizeActions {
enum LegalizeAction : std::uint8_t {
@@ -121,7 +121,7 @@
ArrayRef<LLT> Types;
struct MemDesc {
- uint64_t Size;
+ uint64_t SizeInBits;
AtomicOrdering Ordering;
};
@@ -204,15 +204,40 @@
std::initializer_list<TypePairAndMemSize> TypesAndMemSizeInit);
/// True iff the specified type index is a scalar.
LegalityPredicate isScalar(unsigned TypeIdx);
+/// True iff the specified type index is a vector.
+LegalityPredicate isVector(unsigned TypeIdx);
+/// True iff the specified type index is a pointer (with any address space).
+LegalityPredicate isPointer(unsigned TypeIdx);
+/// True iff the specified type index is a pointer with the specified address
+/// space.
+LegalityPredicate isPointer(unsigned TypeIdx, unsigned AddrSpace);
+
/// True iff the specified type index is a scalar that's narrower than the given
/// size.
LegalityPredicate narrowerThan(unsigned TypeIdx, unsigned Size);
+
/// True iff the specified type index is a scalar that's wider than the given
/// size.
LegalityPredicate widerThan(unsigned TypeIdx, unsigned Size);
+
+/// True iff the specified type index is a scalar or vector with an element type
+/// that's narrower than the given size.
+LegalityPredicate scalarOrEltNarrowerThan(unsigned TypeIdx, unsigned Size);
+
+/// True iff the specified type index is a scalar or a vector with an element
+/// type that's wider than the given size.
+LegalityPredicate scalarOrEltWiderThan(unsigned TypeIdx, unsigned Size);
+
/// True iff the specified type index is a scalar whose size is not a power of
/// 2.
LegalityPredicate sizeNotPow2(unsigned TypeIdx);
+
+/// True iff the specified type index is a scalar or vector whose element size
+/// is not a power of 2.
+LegalityPredicate scalarOrEltSizeNotPow2(unsigned TypeIdx);
+
+/// True iff the specified type indices are both the same bit size.
+LegalityPredicate sameSize(unsigned TypeIdx0, unsigned TypeIdx1);
/// True iff the specified MMO index has a size that is not a power of 2
LegalityPredicate memSizeInBytesNotPow2(unsigned MMOIdx);
/// True iff the specified type index is a vector whose element count is not a
@@ -227,13 +252,25 @@
namespace LegalizeMutations {
/// Select this specific type for the given type index.
LegalizeMutation changeTo(unsigned TypeIdx, LLT Ty);
+
/// Keep the same type as the given type index.
LegalizeMutation changeTo(unsigned TypeIdx, unsigned FromTypeIdx);
-/// Widen the type for the given type index to the next power of 2.
-LegalizeMutation widenScalarToNextPow2(unsigned TypeIdx, unsigned Min = 0);
+
+/// Keep the same scalar or element type as the given type index.
+LegalizeMutation changeElementTo(unsigned TypeIdx, unsigned FromTypeIdx);
+
+/// Keep the same scalar or element type as the given type.
+LegalizeMutation changeElementTo(unsigned TypeIdx, LLT Ty);
+
+/// Widen the scalar type or vector element type for the given type index to the
+/// next power of 2.
+LegalizeMutation widenScalarOrEltToNextPow2(unsigned TypeIdx, unsigned Min = 0);
+
/// Add more elements to the type for the given type index to the next power of
/// 2.
LegalizeMutation moreElementsToNextPow2(unsigned TypeIdx, unsigned Min = 0);
+/// Break up the vector type for the given type index into the element type.
+LegalizeMutation scalarize(unsigned TypeIdx);
} // end namespace LegalizeMutations
/// A single rule in a legalizer info ruleset.
@@ -596,13 +633,29 @@
return actionForCartesianProduct(LegalizeAction::Custom, Types0, Types1);
}
+ /// Unconditionally custom lower.
+ LegalizeRuleSet &custom() {
+ return customIf(always);
+ }
+
/// Widen the scalar to the next power of two that is at least MinSize.
/// No effect if the type is not a scalar or is a power of two.
LegalizeRuleSet &widenScalarToNextPow2(unsigned TypeIdx,
unsigned MinSize = 0) {
using namespace LegalityPredicates;
- return actionIf(LegalizeAction::WidenScalar, sizeNotPow2(typeIdx(TypeIdx)),
- LegalizeMutations::widenScalarToNextPow2(TypeIdx, MinSize));
+ return actionIf(
+ LegalizeAction::WidenScalar, sizeNotPow2(typeIdx(TypeIdx)),
+ LegalizeMutations::widenScalarOrEltToNextPow2(TypeIdx, MinSize));
+ }
+
+ /// Widen the scalar or vector element type to the next power of two that is
+ /// at least MinSize. No effect if the scalar size is a power of two.
+ LegalizeRuleSet &widenScalarOrEltToNextPow2(unsigned TypeIdx,
+ unsigned MinSize = 0) {
+ using namespace LegalityPredicates;
+ return actionIf(
+ LegalizeAction::WidenScalar, scalarOrEltSizeNotPow2(typeIdx(TypeIdx)),
+ LegalizeMutations::widenScalarOrEltToNextPow2(TypeIdx, MinSize));
}
LegalizeRuleSet &narrowScalar(unsigned TypeIdx, LegalizeMutation Mutation) {
@@ -611,6 +664,21 @@
Mutation);
}
+ LegalizeRuleSet &scalarize(unsigned TypeIdx) {
+ using namespace LegalityPredicates;
+ return actionIf(LegalizeAction::FewerElements, isVector(typeIdx(TypeIdx)),
+ LegalizeMutations::scalarize(TypeIdx));
+ }
+
+ /// Ensure the scalar is at least as wide as Ty.
+ LegalizeRuleSet &minScalarOrElt(unsigned TypeIdx, const LLT &Ty) {
+ using namespace LegalityPredicates;
+ using namespace LegalizeMutations;
+ return actionIf(LegalizeAction::WidenScalar,
+ scalarOrEltNarrowerThan(TypeIdx, Ty.getScalarSizeInBits()),
+ changeElementTo(typeIdx(TypeIdx), Ty));
+ }
+
/// Ensure the scalar is at least as wide as Ty.
LegalizeRuleSet &minScalar(unsigned TypeIdx, const LLT &Ty) {
using namespace LegalityPredicates;
@@ -621,6 +689,15 @@
}
/// Ensure the scalar is at most as wide as Ty.
+ LegalizeRuleSet &maxScalarOrElt(unsigned TypeIdx, const LLT &Ty) {
+ using namespace LegalityPredicates;
+ using namespace LegalizeMutations;
+ return actionIf(LegalizeAction::NarrowScalar,
+ scalarOrEltWiderThan(TypeIdx, Ty.getScalarSizeInBits()),
+ changeElementTo(typeIdx(TypeIdx), Ty));
+ }
+
+ /// Ensure the scalar is at most as wide as Ty.
LegalizeRuleSet &maxScalar(unsigned TypeIdx, const LLT &Ty) {
using namespace LegalityPredicates;
using namespace LegalizeMutations;
@@ -636,12 +713,12 @@
const LLT &Ty) {
using namespace LegalityPredicates;
using namespace LegalizeMutations;
- return actionIf(LegalizeAction::NarrowScalar,
- [=](const LegalityQuery &Query) {
- return widerThan(TypeIdx, Ty.getSizeInBits()) &&
- Predicate(Query);
- },
- changeTo(typeIdx(TypeIdx), Ty));
+ return actionIf(
+ LegalizeAction::NarrowScalar,
+ [=](const LegalityQuery &Query) {
+ return widerThan(TypeIdx, Ty.getSizeInBits()) && Predicate(Query);
+ },
+ changeElementTo(typeIdx(TypeIdx), Ty));
}
/// Limit the range of scalar sizes to MinTy and MaxTy.
@@ -651,6 +728,27 @@
return minScalar(TypeIdx, MinTy).maxScalar(TypeIdx, MaxTy);
}
+ /// Limit the range of scalar sizes to MinTy and MaxTy.
+ LegalizeRuleSet &clampScalarOrElt(unsigned TypeIdx, const LLT &MinTy,
+ const LLT &MaxTy) {
+ return minScalarOrElt(TypeIdx, MinTy).maxScalarOrElt(TypeIdx, MaxTy);
+ }
+
+ /// Widen the scalar to match the size of another.
+ LegalizeRuleSet &minScalarSameAs(unsigned TypeIdx, unsigned LargeTypeIdx) {
+ typeIdx(TypeIdx);
+ return widenScalarIf(
+ [=](const LegalityQuery &Query) {
+ return Query.Types[LargeTypeIdx].getScalarSizeInBits() >
+ Query.Types[TypeIdx].getSizeInBits();
+ },
+ [=](const LegalityQuery &Query) {
+ LLT T = Query.Types[LargeTypeIdx];
+ return std::make_pair(TypeIdx,
+ T.isVector() ? T.getElementType() : T);
+ });
+ }
+
/// Add more elements to the vector to reach the next power of two.
/// No effect if the type is not a vector or the element count is a power of
/// two.
@@ -676,7 +774,7 @@
[=](const LegalityQuery &Query) {
LLT VecTy = Query.Types[TypeIdx];
return std::make_pair(
- TypeIdx, LLT::vector(MinElements, VecTy.getScalarSizeInBits()));
+ TypeIdx, LLT::vector(MinElements, VecTy.getElementType()));
});
}
/// Limit the number of elements in EltTy vectors to at most MaxElements.
@@ -693,8 +791,8 @@
},
[=](const LegalityQuery &Query) {
LLT VecTy = Query.Types[TypeIdx];
- return std::make_pair(
- TypeIdx, LLT::vector(MaxElements, VecTy.getScalarSizeInBits()));
+ LLT NewTy = LLT::scalarOrVector(MaxElements, VecTy.getElementType());
+ return std::make_pair(TypeIdx, NewTy);
});
}
/// Limit the number of elements for the given vectors to at least MinTy's
@@ -947,9 +1045,9 @@
bool isLegal(const MachineInstr &MI, const MachineRegisterInfo &MRI) const;
- virtual bool legalizeCustom(MachineInstr &MI,
- MachineRegisterInfo &MRI,
- MachineIRBuilder &MIRBuilder) const;
+ virtual bool legalizeCustom(MachineInstr &MI, MachineRegisterInfo &MRI,
+ MachineIRBuilder &MIRBuilder,
+ GISelChangeObserver &Observer) const;
private:
/// Determine what action should be taken to legalize the given generic
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Localizer.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Localizer.h
index 1e2d476..cfc7c35 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Localizer.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Localizer.h
@@ -1,9 +1,8 @@
//== llvm/CodeGen/GlobalISel/Localizer.h - Localizer -------------*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/MIPatternMatch.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/MIPatternMatch.h
index f77f9a8..1f4ee8a 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/MIPatternMatch.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/MIPatternMatch.h
@@ -1,9 +1,8 @@
//== ----- llvm/CodeGen/GlobalISel/MIPatternMatch.h --------------------- == //
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h
index a837cf0..6e1ff7c 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h
@@ -1,9 +1,8 @@
//===-- llvm/CodeGen/GlobalISel/MachineIRBuilder.h - MIBuilder --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -14,6 +13,7 @@
#ifndef LLVM_CODEGEN_GLOBALISEL_MACHINEIRBUILDER_H
#define LLVM_CODEGEN_GLOBALISEL_MACHINEIRBUILDER_H
+#include "llvm/CodeGen/GlobalISel/CSEInfo.h"
#include "llvm/CodeGen/GlobalISel/Types.h"
#include "llvm/CodeGen/LowLevelType.h"
@@ -30,6 +30,7 @@
class MachineFunction;
class MachineInstr;
class TargetInstrInfo;
+class GISelChangeObserver;
/// Class which stores all the state required in a MachineIRBuilder.
/// Since MachineIRBuilders will only store state in this object, it allows
@@ -50,57 +51,175 @@
MachineBasicBlock::iterator II;
/// @}
- std::function<void(MachineInstr *)> InsertedInstr;
+ GISelChangeObserver *Observer;
+
+ GISelCSEInfo *CSEInfo;
};
+class DstOp {
+ union {
+ LLT LLTTy;
+ unsigned Reg;
+ const TargetRegisterClass *RC;
+ };
+
+public:
+ enum class DstType { Ty_LLT, Ty_Reg, Ty_RC };
+ DstOp(unsigned R) : Reg(R), Ty(DstType::Ty_Reg) {}
+ DstOp(const MachineOperand &Op) : Reg(Op.getReg()), Ty(DstType::Ty_Reg) {}
+ DstOp(const LLT &T) : LLTTy(T), Ty(DstType::Ty_LLT) {}
+ DstOp(const TargetRegisterClass *TRC) : RC(TRC), Ty(DstType::Ty_RC) {}
+
+ void addDefToMIB(MachineRegisterInfo &MRI, MachineInstrBuilder &MIB) const {
+ switch (Ty) {
+ case DstType::Ty_Reg:
+ MIB.addDef(Reg);
+ break;
+ case DstType::Ty_LLT:
+ MIB.addDef(MRI.createGenericVirtualRegister(LLTTy));
+ break;
+ case DstType::Ty_RC:
+ MIB.addDef(MRI.createVirtualRegister(RC));
+ break;
+ }
+ }
+
+ LLT getLLTTy(const MachineRegisterInfo &MRI) const {
+ switch (Ty) {
+ case DstType::Ty_RC:
+ return LLT{};
+ case DstType::Ty_LLT:
+ return LLTTy;
+ case DstType::Ty_Reg:
+ return MRI.getType(Reg);
+ }
+ llvm_unreachable("Unrecognised DstOp::DstType enum");
+ }
+
+ unsigned getReg() const {
+ assert(Ty == DstType::Ty_Reg && "Not a register");
+ return Reg;
+ }
+
+ const TargetRegisterClass *getRegClass() const {
+ switch (Ty) {
+ case DstType::Ty_RC:
+ return RC;
+ default:
+ llvm_unreachable("Not a RC Operand");
+ }
+ }
+
+ DstType getDstOpKind() const { return Ty; }
+
+private:
+ DstType Ty;
+};
+
+class SrcOp {
+ union {
+ MachineInstrBuilder SrcMIB;
+ unsigned Reg;
+ CmpInst::Predicate Pred;
+ };
+
+public:
+ enum class SrcType { Ty_Reg, Ty_MIB, Ty_Predicate };
+ SrcOp(unsigned R) : Reg(R), Ty(SrcType::Ty_Reg) {}
+ SrcOp(const MachineOperand &Op) : Reg(Op.getReg()), Ty(SrcType::Ty_Reg) {}
+ SrcOp(const MachineInstrBuilder &MIB) : SrcMIB(MIB), Ty(SrcType::Ty_MIB) {}
+ SrcOp(const CmpInst::Predicate P) : Pred(P), Ty(SrcType::Ty_Predicate) {}
+
+ void addSrcToMIB(MachineInstrBuilder &MIB) const {
+ switch (Ty) {
+ case SrcType::Ty_Predicate:
+ MIB.addPredicate(Pred);
+ break;
+ case SrcType::Ty_Reg:
+ MIB.addUse(Reg);
+ break;
+ case SrcType::Ty_MIB:
+ MIB.addUse(SrcMIB->getOperand(0).getReg());
+ break;
+ }
+ }
+
+ LLT getLLTTy(const MachineRegisterInfo &MRI) const {
+ switch (Ty) {
+ case SrcType::Ty_Predicate:
+ llvm_unreachable("Not a register operand");
+ case SrcType::Ty_Reg:
+ return MRI.getType(Reg);
+ case SrcType::Ty_MIB:
+ return MRI.getType(SrcMIB->getOperand(0).getReg());
+ }
+ llvm_unreachable("Unrecognised SrcOp::SrcType enum");
+ }
+
+ unsigned getReg() const {
+ switch (Ty) {
+ case SrcType::Ty_Predicate:
+ llvm_unreachable("Not a register operand");
+ case SrcType::Ty_Reg:
+ return Reg;
+ case SrcType::Ty_MIB:
+ return SrcMIB->getOperand(0).getReg();
+ }
+ llvm_unreachable("Unrecognised SrcOp::SrcType enum");
+ }
+
+ CmpInst::Predicate getPredicate() const {
+ switch (Ty) {
+ case SrcType::Ty_Predicate:
+ return Pred;
+ default:
+ llvm_unreachable("Not a register operand");
+ }
+ }
+
+ SrcType getSrcOpKind() const { return Ty; }
+
+private:
+ SrcType Ty;
+};
+
+class FlagsOp {
+ Optional<unsigned> Flags;
+
+public:
+ explicit FlagsOp(unsigned F) : Flags(F) {}
+ FlagsOp() : Flags(None) {}
+ Optional<unsigned> getFlags() const { return Flags; }
+};
/// Helper class to build MachineInstr.
/// It keeps internally the insertion point and debug location for all
/// the new instructions we want to create.
/// This information can be modify via the related setters.
-class MachineIRBuilderBase {
+class MachineIRBuilder {
MachineIRBuilderState State;
- void validateTruncExt(unsigned Dst, unsigned Src, bool IsExtend);
protected:
- unsigned getDestFromArg(unsigned Reg) { return Reg; }
- unsigned getDestFromArg(LLT Ty) {
- return getMF().getRegInfo().createGenericVirtualRegister(Ty);
- }
- unsigned getDestFromArg(const TargetRegisterClass *RC) {
- return getMF().getRegInfo().createVirtualRegister(RC);
- }
+ void validateTruncExt(const LLT &Dst, const LLT &Src, bool IsExtend);
- void addUseFromArg(MachineInstrBuilder &MIB, unsigned Reg) {
- MIB.addUse(Reg);
- }
+ void validateBinaryOp(const LLT &Res, const LLT &Op0, const LLT &Op1);
+ void validateShiftOp(const LLT &Res, const LLT &Op0, const LLT &Op1);
- void addUseFromArg(MachineInstrBuilder &MIB, const MachineInstrBuilder &UseMIB) {
- MIB.addUse(UseMIB->getOperand(0).getReg());
- }
-
- void addUsesFromArgs(MachineInstrBuilder &MIB) { }
- template<typename UseArgTy, typename ... UseArgsTy>
- void addUsesFromArgs(MachineInstrBuilder &MIB, UseArgTy &&Arg1, UseArgsTy &&... Args) {
- addUseFromArg(MIB, Arg1);
- addUsesFromArgs(MIB, std::forward<UseArgsTy>(Args)...);
- }
- unsigned getRegFromArg(unsigned Reg) { return Reg; }
- unsigned getRegFromArg(const MachineInstrBuilder &MIB) {
- return MIB->getOperand(0).getReg();
- }
-
- void validateBinaryOp(unsigned Res, unsigned Op0, unsigned Op1);
+ void validateSelectOp(const LLT &ResTy, const LLT &TstTy, const LLT &Op0Ty,
+ const LLT &Op1Ty);
+ void recordInsertion(MachineInstr *MI) const;
public:
/// Some constructors for easy use.
- MachineIRBuilderBase() = default;
- MachineIRBuilderBase(MachineFunction &MF) { setMF(MF); }
- MachineIRBuilderBase(MachineInstr &MI) : MachineIRBuilderBase(*MI.getMF()) {
+ MachineIRBuilder() = default;
+ MachineIRBuilder(MachineFunction &MF) { setMF(MF); }
+ MachineIRBuilder(MachineInstr &MI) : MachineIRBuilder(*MI.getMF()) {
setInstr(MI);
}
- MachineIRBuilderBase(const MachineIRBuilderState &BState) : State(BState) {}
+ virtual ~MachineIRBuilder() = default;
+
+ MachineIRBuilder(const MachineIRBuilderState &BState) : State(BState) {}
const TargetInstrInfo &getTII() {
assert(State.TII && "TargetInstrInfo is not set");
@@ -113,21 +232,35 @@
return *State.MF;
}
+ const MachineFunction &getMF() const {
+ assert(State.MF && "MachineFunction is not set");
+ return *State.MF;
+ }
+
/// Getter for DebugLoc
const DebugLoc &getDL() { return State.DL; }
/// Getter for MRI
MachineRegisterInfo *getMRI() { return State.MRI; }
+ const MachineRegisterInfo *getMRI() const { return State.MRI; }
/// Getter for the State
MachineIRBuilderState &getState() { return State; }
/// Getter for the basic block we currently build.
- MachineBasicBlock &getMBB() {
+ const MachineBasicBlock &getMBB() const {
assert(State.MBB && "MachineBasicBlock is not set");
return *State.MBB;
}
+ MachineBasicBlock &getMBB() {
+ return const_cast<MachineBasicBlock &>(
+ const_cast<const MachineIRBuilder *>(this)->getMBB());
+ }
+
+ GISelCSEInfo *getCSEInfo() { return State.CSEInfo; }
+ const GISelCSEInfo *getCSEInfo() const { return State.CSEInfo; }
+
/// Current insertion point for new instructions.
MachineBasicBlock::iterator getInsertPt() { return State.II; }
@@ -137,10 +270,12 @@
void setInsertPt(MachineBasicBlock &MBB, MachineBasicBlock::iterator II);
/// @}
+ void setCSEInfo(GISelCSEInfo *Info);
+
/// \name Setters for the insertion point.
/// @{
/// Set the MachineFunction where to build instructions.
- void setMF(MachineFunction &);
+ void setMF(MachineFunction &MF);
/// Set the insertion point to the end of \p MBB.
/// \pre \p MBB must be contained by getMF().
@@ -151,12 +286,8 @@
void setInstr(MachineInstr &MI);
/// @}
- /// \name Control where instructions we create are recorded (typically for
- /// visiting again later during legalization).
- /// @{
- void recordInsertion(MachineInstr *InsertedInstr) const;
- void recordInsertions(std::function<void(MachineInstr *)> InsertedInstr);
- void stopRecordingInsertions();
+ void setChangeObserver(GISelChangeObserver &Observer);
+ void stopObservingChanges();
/// @}
/// Set the debug location to \p DL for all the next build instructions.
@@ -300,9 +431,9 @@
/// registers with the same scalar type (typically s1)
///
/// \return The newly created instruction.
- MachineInstrBuilder buildUAdde(unsigned Res, unsigned CarryOut, unsigned Op0,
- unsigned Op1, unsigned CarryIn);
-
+ MachineInstrBuilder buildUAdde(const DstOp &Res, const DstOp &CarryOut,
+ const SrcOp &Op0, const SrcOp &Op1,
+ const SrcOp &CarryIn);
/// Build and insert \p Res = G_ANYEXT \p Op0
///
@@ -318,11 +449,7 @@
///
/// \return The newly created instruction.
- MachineInstrBuilder buildAnyExt(unsigned Res, unsigned Op);
- template <typename DstType, typename ArgType>
- MachineInstrBuilder buildAnyExt(DstType &&Res, ArgType &&Arg) {
- return buildAnyExt(getDestFromArg(Res), getRegFromArg(Arg));
- }
+ MachineInstrBuilder buildAnyExt(const DstOp &Res, const SrcOp &Op);
/// Build and insert \p Res = G_SEXT \p Op
///
@@ -336,11 +463,16 @@
/// \pre \p Op must be smaller than \p Res
///
/// \return The newly created instruction.
- template <typename DstType, typename ArgType>
- MachineInstrBuilder buildSExt(DstType &&Res, ArgType &&Arg) {
- return buildSExt(getDestFromArg(Res), getRegFromArg(Arg));
- }
- MachineInstrBuilder buildSExt(unsigned Res, unsigned Op);
+ MachineInstrBuilder buildSExt(const DstOp &Res, const SrcOp &Op);
+
+ /// \return The opcode of the extension the target wants to use for boolean
+ /// values.
+ unsigned getBoolExtOp(bool IsVec, bool IsFP) const;
+
+ // Build and insert \p Res = G_ANYEXT \p Op, \p Res = G_SEXT \p Op, or \p Res
+ // = G_ZEXT \p Op depending on how the target wants to extend boolean values.
+ MachineInstrBuilder buildBoolExt(const DstOp &Res, const SrcOp &Op,
+ bool IsFP);
/// Build and insert \p Res = G_ZEXT \p Op
///
@@ -354,11 +486,7 @@
/// \pre \p Op must be smaller than \p Res
///
/// \return The newly created instruction.
- template <typename DstType, typename ArgType>
- MachineInstrBuilder buildZExt(DstType &&Res, ArgType &&Arg) {
- return buildZExt(getDestFromArg(Res), getRegFromArg(Arg));
- }
- MachineInstrBuilder buildZExt(unsigned Res, unsigned Op);
+ MachineInstrBuilder buildZExt(const DstOp &Res, const SrcOp &Op);
/// Build and insert \p Res = G_SEXT \p Op, \p Res = G_TRUNC \p Op, or
/// \p Res = COPY \p Op depending on the differing sizes of \p Res and \p Op.
@@ -368,11 +496,7 @@
/// \pre \p Op must be a generic virtual register with scalar or vector type.
///
/// \return The newly created instruction.
- template <typename DstTy, typename UseArgTy>
- MachineInstrBuilder buildSExtOrTrunc(DstTy &&Dst, UseArgTy &&Use) {
- return buildSExtOrTrunc(getDestFromArg(Dst), getRegFromArg(Use));
- }
- MachineInstrBuilder buildSExtOrTrunc(unsigned Res, unsigned Op);
+ MachineInstrBuilder buildSExtOrTrunc(const DstOp &Res, const SrcOp &Op);
/// Build and insert \p Res = G_ZEXT \p Op, \p Res = G_TRUNC \p Op, or
/// \p Res = COPY \p Op depending on the differing sizes of \p Res and \p Op.
@@ -382,11 +506,7 @@
/// \pre \p Op must be a generic virtual register with scalar or vector type.
///
/// \return The newly created instruction.
- template <typename DstTy, typename UseArgTy>
- MachineInstrBuilder buildZExtOrTrunc(DstTy &&Dst, UseArgTy &&Use) {
- return buildZExtOrTrunc(getDestFromArg(Dst), getRegFromArg(Use));
- }
- MachineInstrBuilder buildZExtOrTrunc(unsigned Res, unsigned Op);
+ MachineInstrBuilder buildZExtOrTrunc(const DstOp &Res, const SrcOp &Op);
// Build and insert \p Res = G_ANYEXT \p Op, \p Res = G_TRUNC \p Op, or
/// \p Res = COPY \p Op depending on the differing sizes of \p Res and \p Op.
@@ -396,11 +516,7 @@
/// \pre \p Op must be a generic virtual register with scalar or vector type.
///
/// \return The newly created instruction.
- template <typename DstTy, typename UseArgTy>
- MachineInstrBuilder buildAnyExtOrTrunc(DstTy &&Dst, UseArgTy &&Use) {
- return buildAnyExtOrTrunc(getDestFromArg(Dst), getRegFromArg(Use));
- }
- MachineInstrBuilder buildAnyExtOrTrunc(unsigned Res, unsigned Op);
+ MachineInstrBuilder buildAnyExtOrTrunc(const DstOp &Res, const SrcOp &Op);
/// Build and insert \p Res = \p ExtOpc, \p Res = G_TRUNC \p
/// Op, or \p Res = COPY \p Op depending on the differing sizes of \p Res and
@@ -411,15 +527,11 @@
/// \pre \p Op must be a generic virtual register with scalar or vector type.
///
/// \return The newly created instruction.
- MachineInstrBuilder buildExtOrTrunc(unsigned ExtOpc, unsigned Res,
- unsigned Op);
+ MachineInstrBuilder buildExtOrTrunc(unsigned ExtOpc, const DstOp &Res,
+ const SrcOp &Op);
/// Build and insert an appropriate cast between two registers of equal size.
- template <typename DstType, typename ArgType>
- MachineInstrBuilder buildCast(DstType &&Res, ArgType &&Arg) {
- return buildCast(getDestFromArg(Res), getRegFromArg(Arg));
- }
- MachineInstrBuilder buildCast(unsigned Dst, unsigned Src);
+ MachineInstrBuilder buildCast(const DstOp &Dst, const SrcOp &Src);
/// Build and insert G_BR \p Dest
///
@@ -464,7 +576,8 @@
/// type.
///
/// \return The newly created instruction.
- MachineInstrBuilder buildConstant(unsigned Res, const ConstantInt &Val);
+ virtual MachineInstrBuilder buildConstant(const DstOp &Res,
+ const ConstantInt &Val);
/// Build and insert \p Res = G_CONSTANT \p Val
///
@@ -474,12 +587,9 @@
/// \pre \p Res must be a generic virtual register with scalar type.
///
/// \return The newly created instruction.
- MachineInstrBuilder buildConstant(unsigned Res, int64_t Val);
+ MachineInstrBuilder buildConstant(const DstOp &Res, int64_t Val);
+ MachineInstrBuilder buildConstant(const DstOp &Res, const APInt &Val);
- template <typename DstType>
- MachineInstrBuilder buildConstant(DstType &&Res, int64_t Val) {
- return buildConstant(getDestFromArg(Res), Val);
- }
/// Build and insert \p Res = G_FCONSTANT \p Val
///
/// G_FCONSTANT is a floating-point constant with the specified size and
@@ -489,17 +599,10 @@
/// \pre \p Res must be a generic virtual register with scalar type.
///
/// \return The newly created instruction.
- template <typename DstType>
- MachineInstrBuilder buildFConstant(DstType &&Res, const ConstantFP &Val) {
- return buildFConstant(getDestFromArg(Res), Val);
- }
- MachineInstrBuilder buildFConstant(unsigned Res, const ConstantFP &Val);
+ virtual MachineInstrBuilder buildFConstant(const DstOp &Res,
+ const ConstantFP &Val);
- template <typename DstType>
- MachineInstrBuilder buildFConstant(DstType &&Res, double Val) {
- return buildFConstant(getDestFromArg(Res), Val);
- }
- MachineInstrBuilder buildFConstant(unsigned Res, double Val);
+ MachineInstrBuilder buildFConstant(const DstOp &Res, double Val);
/// Build and insert \p Res = COPY Op
///
@@ -508,11 +611,7 @@
/// \pre setBasicBlock or setMI must have been called.
///
/// \return a MachineInstrBuilder for the newly created instruction.
- MachineInstrBuilder buildCopy(unsigned Res, unsigned Op);
- template <typename DstType, typename SrcType>
- MachineInstrBuilder buildCopy(DstType &&Res, SrcType &&Src) {
- return buildCopy(getDestFromArg(Res), getRegFromArg(Src));
- }
+ MachineInstrBuilder buildCopy(const DstOp &Res, const SrcOp &Op);
/// Build and insert `Res = G_LOAD Addr, MMO`.
///
@@ -559,10 +658,7 @@
MachineInstrBuilder buildExtract(unsigned Res, unsigned Src, uint64_t Index);
/// Build and insert \p Res = IMPLICIT_DEF.
- template <typename DstType> MachineInstrBuilder buildUndef(DstType &&Res) {
- return buildUndef(getDestFromArg(Res));
- }
- MachineInstrBuilder buildUndef(unsigned Res);
+ MachineInstrBuilder buildUndef(const DstOp &Res);
/// Build and insert instructions to put \p Ops together at the specified p
/// Indices to form a larger register.
@@ -591,7 +687,7 @@
/// \pre The type of all \p Ops registers must be identical.
///
/// \return a MachineInstrBuilder for the newly created instruction.
- MachineInstrBuilder buildMerge(unsigned Res, ArrayRef<unsigned> Ops);
+ MachineInstrBuilder buildMerge(const DstOp &Res, ArrayRef<unsigned> Ops);
/// Build and insert \p Res0, ... = G_UNMERGE_VALUES \p Op
///
@@ -603,7 +699,55 @@
/// \pre The type of all \p Res registers must be identical.
///
/// \return a MachineInstrBuilder for the newly created instruction.
- MachineInstrBuilder buildUnmerge(ArrayRef<unsigned> Res, unsigned Op);
+ MachineInstrBuilder buildUnmerge(ArrayRef<LLT> Res, const SrcOp &Op);
+ MachineInstrBuilder buildUnmerge(ArrayRef<unsigned> Res, const SrcOp &Op);
+
+ /// Build and insert \p Res = G_BUILD_VECTOR \p Op0, ...
+ ///
+ /// G_BUILD_VECTOR creates a vector value from multiple scalar registers.
+ /// \pre setBasicBlock or setMI must have been called.
+ /// \pre The entire register \p Res (and no more) must be covered by the
+ /// input scalar registers.
+ /// \pre The type of all \p Ops registers must be identical.
+ ///
+ /// \return a MachineInstrBuilder for the newly created instruction.
+ MachineInstrBuilder buildBuildVector(const DstOp &Res,
+ ArrayRef<unsigned> Ops);
+
+ /// Build and insert \p Res = G_BUILD_VECTOR with \p Src replicated to fill
+ /// the number of elements
+ MachineInstrBuilder buildSplatVector(const DstOp &Res,
+ const SrcOp &Src);
+
+ /// Build and insert \p Res = G_BUILD_VECTOR_TRUNC \p Op0, ...
+ ///
+ /// G_BUILD_VECTOR_TRUNC creates a vector value from multiple scalar registers
+ /// which have types larger than the destination vector element type, and
+ /// truncates the values to fit.
+ ///
+ /// If the operands given are already the same size as the vector elt type,
+ /// then this method will instead create a G_BUILD_VECTOR instruction.
+ ///
+ /// \pre setBasicBlock or setMI must have been called.
+ /// \pre The type of all \p Ops registers must be identical.
+ ///
+ /// \return a MachineInstrBuilder for the newly created instruction.
+ MachineInstrBuilder buildBuildVectorTrunc(const DstOp &Res,
+ ArrayRef<unsigned> Ops);
+
+ /// Build and insert \p Res = G_CONCAT_VECTORS \p Op0, ...
+ ///
+ /// G_CONCAT_VECTORS creates a vector from the concatenation of 2 or more
+ /// vectors.
+ ///
+ /// \pre setBasicBlock or setMI must have been called.
+ /// \pre The entire register \p Res (and no more) must be covered by the input
+ /// registers.
+ /// \pre The type of all source operands must be identical.
+ ///
+ /// \return a MachineInstrBuilder for the newly created instruction.
+ MachineInstrBuilder buildConcatVectors(const DstOp &Res,
+ ArrayRef<unsigned> Ops);
MachineInstrBuilder buildInsert(unsigned Res, unsigned Src,
unsigned Op, unsigned Index);
@@ -631,11 +775,7 @@
/// \pre \p Res must be smaller than \p Op
///
/// \return The newly created instruction.
- template <typename DstType, typename SrcType>
- MachineInstrBuilder buildFPTrunc(DstType &&Res, SrcType &&Src) {
- return buildFPTrunc(getDestFromArg(Res), getRegFromArg(Src));
- }
- MachineInstrBuilder buildFPTrunc(unsigned Res, unsigned Op);
+ MachineInstrBuilder buildFPTrunc(const DstOp &Res, const SrcOp &Op);
/// Build and insert \p Res = G_TRUNC \p Op
///
@@ -648,11 +788,7 @@
/// \pre \p Res must be smaller than \p Op
///
/// \return The newly created instruction.
- MachineInstrBuilder buildTrunc(unsigned Res, unsigned Op);
- template <typename DstType, typename SrcType>
- MachineInstrBuilder buildTrunc(DstType &&Res, SrcType &&Src) {
- return buildTrunc(getDestFromArg(Res), getRegFromArg(Src));
- }
+ MachineInstrBuilder buildTrunc(const DstOp &Res, const SrcOp &Op);
/// Build and insert a \p Res = G_ICMP \p Pred, \p Op0, \p Op1
///
@@ -666,13 +802,8 @@
/// \pre \p Pred must be an integer predicate.
///
/// \return a MachineInstrBuilder for the newly created instruction.
- MachineInstrBuilder buildICmp(CmpInst::Predicate Pred,
- unsigned Res, unsigned Op0, unsigned Op1);
- template <typename DstTy, typename... UseArgsTy>
- MachineInstrBuilder buildICmp(CmpInst::Predicate Pred, DstTy &&Dst,
- UseArgsTy &&... UseArgs) {
- return buildICmp(Pred, getDestFromArg(Dst), getRegFromArg(UseArgs)...);
- }
+ MachineInstrBuilder buildICmp(CmpInst::Predicate Pred, const DstOp &Res,
+ const SrcOp &Op0, const SrcOp &Op1);
/// Build and insert a \p Res = G_FCMP \p Pred\p Op0, \p Op1
///
@@ -686,8 +817,8 @@
/// \pre \p Pred must be a floating-point predicate.
///
/// \return a MachineInstrBuilder for the newly created instruction.
- MachineInstrBuilder buildFCmp(CmpInst::Predicate Pred,
- unsigned Res, unsigned Op0, unsigned Op1);
+ MachineInstrBuilder buildFCmp(CmpInst::Predicate Pred, const DstOp &Res,
+ const SrcOp &Op0, const SrcOp &Op1);
/// Build and insert a \p Res = G_SELECT \p Tst, \p Op0, \p Op1
///
@@ -699,12 +830,8 @@
/// elements as the other parameters.
///
/// \return a MachineInstrBuilder for the newly created instruction.
- MachineInstrBuilder buildSelect(unsigned Res, unsigned Tst,
- unsigned Op0, unsigned Op1);
- template <typename DstTy, typename... UseArgsTy>
- MachineInstrBuilder buildSelect(DstTy &&Dst, UseArgsTy &&... UseArgs) {
- return buildSelect(getDestFromArg(Dst), getRegFromArg(UseArgs)...);
- }
+ MachineInstrBuilder buildSelect(const DstOp &Res, const SrcOp &Tst,
+ const SrcOp &Op0, const SrcOp &Op1);
/// Build and insert \p Res = G_INSERT_VECTOR_ELT \p Val,
/// \p Elt, \p Idx
@@ -716,8 +843,10 @@
/// with scalar type.
///
/// \return The newly created instruction.
- MachineInstrBuilder buildInsertVectorElement(unsigned Res, unsigned Val,
- unsigned Elt, unsigned Idx);
+ MachineInstrBuilder buildInsertVectorElement(const DstOp &Res,
+ const SrcOp &Val,
+ const SrcOp &Elt,
+ const SrcOp &Idx);
/// Build and insert \p Res = G_EXTRACT_VECTOR_ELT \p Val, \p Idx
///
@@ -727,8 +856,9 @@
/// \pre \p Idx must be a generic virtual register with scalar type.
///
/// \return The newly created instruction.
- MachineInstrBuilder buildExtractVectorElement(unsigned Res, unsigned Val,
- unsigned Idx);
+ MachineInstrBuilder buildExtractVectorElement(const DstOp &Res,
+ const SrcOp &Val,
+ const SrcOp &Idx);
/// Build and insert `OldValRes<def>, SuccessRes<def> =
/// G_ATOMIC_CMPXCHG_WITH_SUCCESS Addr, CmpVal, NewVal, MMO`.
@@ -965,19 +1095,7 @@
///
/// \return The newly created instruction.
MachineInstrBuilder buildBlockAddress(unsigned Res, const BlockAddress *BA);
-};
-/// A CRTP class that contains methods for building instructions that can
-/// be constant folded. MachineIRBuilders that want to inherit from this will
-/// need to implement buildBinaryOp (for constant folding binary ops).
-/// Alternatively, they can implement buildInstr(Opc, Dst, Uses...) to perform
-/// additional folding for Opc.
-template <typename Base>
-class FoldableInstructionsBuilder : public MachineIRBuilderBase {
- Base &base() { return static_cast<Base &>(*this); }
-
-public:
- using MachineIRBuilderBase::MachineIRBuilderBase;
/// Build and insert \p Res = G_ADD \p Op0, \p Op1
///
/// G_ADD sets \p Res to the sum of integer parameters \p Op0 and \p Op1,
@@ -989,13 +1107,10 @@
///
/// \return a MachineInstrBuilder for the newly created instruction.
- MachineInstrBuilder buildAdd(unsigned Dst, unsigned Src0, unsigned Src1) {
- return base().buildBinaryOp(TargetOpcode::G_ADD, Dst, Src0, Src1);
- }
- template <typename DstTy, typename... UseArgsTy>
- MachineInstrBuilder buildAdd(DstTy &&Ty, UseArgsTy &&... UseArgs) {
- unsigned Res = base().getDestFromArg(Ty);
- return base().buildAdd(Res, (base().getRegFromArg(UseArgs))...);
+ MachineInstrBuilder buildAdd(const DstOp &Dst, const SrcOp &Src0,
+ const SrcOp &Src1,
+ Optional<unsigned> Flags = None) {
+ return buildInstr(TargetOpcode::G_ADD, {Dst}, {Src0, Src1}, Flags);
}
/// Build and insert \p Res = G_SUB \p Op0, \p Op1
@@ -1009,13 +1124,10 @@
///
/// \return a MachineInstrBuilder for the newly created instruction.
- MachineInstrBuilder buildSub(unsigned Dst, unsigned Src0, unsigned Src1) {
- return base().buildBinaryOp(TargetOpcode::G_SUB, Dst, Src0, Src1);
- }
- template <typename DstTy, typename... UseArgsTy>
- MachineInstrBuilder buildSub(DstTy &&Ty, UseArgsTy &&... UseArgs) {
- unsigned Res = base().getDestFromArg(Ty);
- return base().buildSub(Res, (base().getRegFromArg(UseArgs))...);
+ MachineInstrBuilder buildSub(const DstOp &Dst, const SrcOp &Src0,
+ const SrcOp &Src1,
+ Optional<unsigned> Flags = None) {
+ return buildInstr(TargetOpcode::G_SUB, {Dst}, {Src0, Src1}, Flags);
}
/// Build and insert \p Res = G_MUL \p Op0, \p Op1
@@ -1028,13 +1140,40 @@
/// with the same (scalar or vector) type).
///
/// \return a MachineInstrBuilder for the newly created instruction.
- MachineInstrBuilder buildMul(unsigned Dst, unsigned Src0, unsigned Src1) {
- return base().buildBinaryOp(TargetOpcode::G_MUL, Dst, Src0, Src1);
+ MachineInstrBuilder buildMul(const DstOp &Dst, const SrcOp &Src0,
+ const SrcOp &Src1,
+ Optional<unsigned> Flags = None) {
+ return buildInstr(TargetOpcode::G_MUL, {Dst}, {Src0, Src1}, Flags);
}
- template <typename DstTy, typename... UseArgsTy>
- MachineInstrBuilder buildMul(DstTy &&Ty, UseArgsTy &&... UseArgs) {
- unsigned Res = base().getDestFromArg(Ty);
- return base().buildMul(Res, (base().getRegFromArg(UseArgs))...);
+
+ MachineInstrBuilder buildUMulH(const DstOp &Dst, const SrcOp &Src0,
+ const SrcOp &Src1,
+ Optional<unsigned> Flags = None) {
+ return buildInstr(TargetOpcode::G_UMULH, {Dst}, {Src0, Src1}, Flags);
+ }
+
+ MachineInstrBuilder buildSMulH(const DstOp &Dst, const SrcOp &Src0,
+ const SrcOp &Src1,
+ Optional<unsigned> Flags = None) {
+ return buildInstr(TargetOpcode::G_SMULH, {Dst}, {Src0, Src1}, Flags);
+ }
+
+ MachineInstrBuilder buildShl(const DstOp &Dst, const SrcOp &Src0,
+ const SrcOp &Src1,
+ Optional<unsigned> Flags = None) {
+ return buildInstr(TargetOpcode::G_SHL, {Dst}, {Src0, Src1}, Flags);
+ }
+
+ MachineInstrBuilder buildLShr(const DstOp &Dst, const SrcOp &Src0,
+ const SrcOp &Src1,
+ Optional<unsigned> Flags = None) {
+ return buildInstr(TargetOpcode::G_LSHR, {Dst}, {Src0, Src1}, Flags);
+ }
+
+ MachineInstrBuilder buildAShr(const DstOp &Dst, const SrcOp &Src0,
+ const SrcOp &Src1,
+ Optional<unsigned> Flags = None) {
+ return buildInstr(TargetOpcode::G_ASHR, {Dst}, {Src0, Src1}, Flags);
}
/// Build and insert \p Res = G_AND \p Op0, \p Op1
@@ -1048,13 +1187,9 @@
///
/// \return a MachineInstrBuilder for the newly created instruction.
- MachineInstrBuilder buildAnd(unsigned Dst, unsigned Src0, unsigned Src1) {
- return base().buildBinaryOp(TargetOpcode::G_AND, Dst, Src0, Src1);
- }
- template <typename DstTy, typename... UseArgsTy>
- MachineInstrBuilder buildAnd(DstTy &&Ty, UseArgsTy &&... UseArgs) {
- unsigned Res = base().getDestFromArg(Ty);
- return base().buildAnd(Res, (base().getRegFromArg(UseArgs))...);
+ MachineInstrBuilder buildAnd(const DstOp &Dst, const SrcOp &Src0,
+ const SrcOp &Src1) {
+ return buildInstr(TargetOpcode::G_AND, {Dst}, {Src0, Src1});
}
/// Build and insert \p Res = G_OR \p Op0, \p Op1
@@ -1067,39 +1202,14 @@
/// with the same (scalar or vector) type).
///
/// \return a MachineInstrBuilder for the newly created instruction.
- MachineInstrBuilder buildOr(unsigned Dst, unsigned Src0, unsigned Src1) {
- return base().buildBinaryOp(TargetOpcode::G_OR, Dst, Src0, Src1);
+ MachineInstrBuilder buildOr(const DstOp &Dst, const SrcOp &Src0,
+ const SrcOp &Src1) {
+ return buildInstr(TargetOpcode::G_OR, {Dst}, {Src0, Src1});
}
- template <typename DstTy, typename... UseArgsTy>
- MachineInstrBuilder buildOr(DstTy &&Ty, UseArgsTy &&... UseArgs) {
- unsigned Res = base().getDestFromArg(Ty);
- return base().buildOr(Res, (base().getRegFromArg(UseArgs))...);
- }
-};
-class MachineIRBuilder : public FoldableInstructionsBuilder<MachineIRBuilder> {
-public:
- using FoldableInstructionsBuilder<
- MachineIRBuilder>::FoldableInstructionsBuilder;
- MachineInstrBuilder buildBinaryOp(unsigned Opcode, unsigned Dst,
- unsigned Src0, unsigned Src1) {
- validateBinaryOp(Dst, Src0, Src1);
- return buildInstr(Opcode).addDef(Dst).addUse(Src0).addUse(Src1);
- }
- using FoldableInstructionsBuilder<MachineIRBuilder>::buildInstr;
- /// DAG like Generic method for building arbitrary instructions as above.
- /// \Opc opcode for the instruction.
- /// \Ty Either LLT/TargetRegisterClass/unsigned types for Dst
- /// \Args Variadic list of uses of types(unsigned/MachineInstrBuilder)
- /// Uses of type MachineInstrBuilder will perform
- /// getOperand(0).getReg() to convert to register.
- template <typename DstTy, typename... UseArgsTy>
- MachineInstrBuilder buildInstr(unsigned Opc, DstTy &&Ty,
- UseArgsTy &&... Args) {
- auto MIB = buildInstr(Opc).addDef(getDestFromArg(Ty));
- addUsesFromArgs(MIB, std::forward<UseArgsTy>(Args)...);
- return MIB;
- }
+ virtual MachineInstrBuilder buildInstr(unsigned Opc, ArrayRef<DstOp> DstOps,
+ ArrayRef<SrcOp> SrcOps,
+ Optional<unsigned> Flags = None);
};
} // End namespace llvm.
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/RegBankSelect.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/RegBankSelect.h
index c53ae41..c31ca5c 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/RegBankSelect.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/RegBankSelect.h
@@ -1,9 +1,8 @@
//=- llvm/CodeGen/GlobalISel/RegBankSelect.h - Reg Bank Selector --*- C++ -*-=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/RegisterBank.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/RegisterBank.h
index d5612e1..f528d1a 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/RegisterBank.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/RegisterBank.h
@@ -1,9 +1,8 @@
//==-- llvm/CodeGen/GlobalISel/RegisterBank.h - Register Bank ----*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h
index 82fd7ed..37a63d1 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/GlobalISel/RegisterBankInfo.h ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -103,8 +102,8 @@
/// Currently the TableGen-like file would look like:
/// \code
/// PartialMapping[] = {
- /// /*32-bit add*/ {0, 32, GPR},
- /// /*2x32-bit add*/ {0, 32, GPR}, {0, 32, GPR}, // <-- Same entry 3x
+ /// /*32-bit add*/ {0, 32, GPR}, // Scalar entry repeated for first vec elt.
+ /// /*2x32-bit add*/ {0, 32, GPR}, {32, 32, GPR},
/// /*<2x32-bit> vadd {0, 64, VPR}
/// }; // PartialMapping duplicated.
///
@@ -118,14 +117,15 @@
/// With the array of pointer, we would have:
/// \code
/// PartialMapping[] = {
- /// /*32-bit add*/ {0, 32, GPR},
+ /// /*32-bit add lower */ {0, 32, GPR},
+ /// /*32-bit add upper */ {32, 32, GPR},
/// /*<2x32-bit> vadd {0, 64, VPR}
/// }; // No more duplication.
///
/// BreakDowns[] = {
/// /*AddBreakDown*/ &PartialMapping[0],
- /// /*2xAddBreakDown*/ &PartialMapping[0], &PartialMapping[0],
- /// /*VAddBreakDown*/ &PartialMapping[1]
+ /// /*2xAddBreakDown*/ &PartialMapping[0], &PartialMapping[1],
+ /// /*VAddBreakDown*/ &PartialMapping[2]
/// }; // Addresses of PartialMapping duplicated (smaller).
///
/// ValueMapping[] {
@@ -160,6 +160,10 @@
const PartialMapping *begin() const { return BreakDown; }
const PartialMapping *end() const { return BreakDown + NumBreakDowns; }
+ /// \return true if all partial mappings are the same size and register
+ /// bank.
+ bool partsAllUniform() const;
+
/// Check if this ValueMapping is valid.
bool isValid() const { return BreakDown && NumBreakDowns; }
@@ -617,6 +621,15 @@
return &A != &B;
}
+ /// Get the cost of using \p ValMapping to decompose a register. This is
+ /// similar to ::copyCost, except for cases where multiple copy-like
+ /// operations need to be inserted. If the register is used as a source
+ /// operand and already has a bank assigned, \p CurBank is non-null.
+ virtual unsigned getBreakDownCost(const ValueMapping &ValMapping,
+ const RegisterBank *CurBank = nullptr) const {
+ return std::numeric_limits<unsigned>::max();
+ }
+
/// Constrain the (possibly generic) virtual register \p Reg to \p RC.
///
/// \pre \p Reg is a virtual register that either has a bank or a class.
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Types.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Types.h
index 7b22e34..4fd7043 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Types.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Types.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/GlobalISel/Types.h - Types used by GISel ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Utils.h b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Utils.h
index 51e3a27..dd14a0c 100644
--- a/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Utils.h
+++ b/linux-x64/clang/include/llvm/CodeGen/GlobalISel/Utils.h
@@ -1,9 +1,8 @@
//==-- llvm/CodeGen/GlobalISel/Utils.h ---------------------------*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -108,5 +107,8 @@
/// fallback.
void getSelectionDAGFallbackAnalysisUsage(AnalysisUsage &AU);
+Optional<APInt> ConstantFoldBinOp(unsigned Opcode, const unsigned Op1,
+ const unsigned Op2,
+ const MachineRegisterInfo &MRI);
} // End namespace llvm.
#endif
diff --git a/linux-x64/clang/include/llvm/CodeGen/ISDOpcodes.h b/linux-x64/clang/include/llvm/CodeGen/ISDOpcodes.h
index ec9c461..ed4bfe7 100644
--- a/linux-x64/clang/include/llvm/CodeGen/ISDOpcodes.h
+++ b/linux-x64/clang/include/llvm/CodeGen/ISDOpcodes.h
@@ -1,9 +1,8 @@
//===-- llvm/CodeGen/ISDOpcodes.h - CodeGen opcodes -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -70,7 +69,7 @@
/// of the frame or return address to return. An index of zero corresponds
/// to the current function's frame or return address, an index of one to
/// the parent's frame or return address, and so on.
- FRAMEADDR, RETURNADDR, ADDROFRETURNADDR,
+ FRAMEADDR, RETURNADDR, ADDROFRETURNADDR, SPONENTRY,
/// LOCAL_RECOVER - Represents the llvm.localrecover intrinsic.
/// Materializes the offset from the local object pointer of another
@@ -256,6 +255,29 @@
/// Same for multiplication.
SMULO, UMULO,
+ /// RESULT = [US]ADDSAT(LHS, RHS) - Perform saturation addition on 2
+ /// integers with the same bit width (W). If the true value of LHS + RHS
+ /// exceeds the largest value that can be represented by W bits, the
+ /// resulting value is this maximum value. Otherwise, if this value is less
+ /// than the smallest value that can be represented by W bits, the
+ /// resulting value is this minimum value.
+ SADDSAT, UADDSAT,
+
+ /// RESULT = [US]SUBSAT(LHS, RHS) - Perform saturation subtraction on 2
+ /// integers with the same bit width (W). If the true value of LHS - RHS
+ /// exceeds the largest value that can be represented by W bits, the
+ /// resulting value is this maximum value. Otherwise, if this value is less
+ /// than the smallest value that can be represented by W bits, the
+ /// resulting value is this minimum value.
+ SSUBSAT, USUBSAT,
+
+ /// RESULT = [US]MULFIX(LHS, RHS, SCALE) - Perform fixed point multiplication on
+ /// 2 integers with the same width and scale. SCALE represents the scale of
+ /// both operands as fixed point numbers. This SCALE parameter must be a
+ /// constant integer. A scale of zero is effectively performing
+ /// multiplication on 2 integers.
+ SMULFIX, UMULFIX,
+
/// Simple binary floating point operators.
FADD, FSUB, FMUL, FDIV, FREM,
@@ -272,7 +294,8 @@
/// They are used to limit optimizations while the DAG is being optimized.
STRICT_FSQRT, STRICT_FPOW, STRICT_FPOWI, STRICT_FSIN, STRICT_FCOS,
STRICT_FEXP, STRICT_FEXP2, STRICT_FLOG, STRICT_FLOG10, STRICT_FLOG2,
- STRICT_FRINT, STRICT_FNEARBYINT,
+ STRICT_FRINT, STRICT_FNEARBYINT, STRICT_FMAXNUM, STRICT_FMINNUM,
+ STRICT_FCEIL, STRICT_FFLOOR, STRICT_FROUND, STRICT_FTRUNC,
/// FMA - Perform a * b + c with no intermediate rounding step.
FMA,
@@ -377,9 +400,13 @@
/// When the 1st operand is a vector, the shift amount must be in the same
/// type. (TLI.getShiftAmountTy() will return the same type when the input
/// type is a vector.)
- /// For rotates, the shift amount is treated as an unsigned amount modulo
- /// the element size of the first operand.
- SHL, SRA, SRL, ROTL, ROTR,
+ /// For rotates and funnel shifts, the shift amount is treated as an unsigned
+ /// amount modulo the element size of the first operand.
+ ///
+ /// Funnel 'double' shifts take 3 operands, 2 inputs and the shift amount.
+ /// fshl(X,Y,Z): (X << (Z % BW)) | (Y >> (BW - (Z % BW)))
+ /// fshr(X,Y,Z): (X << (BW - (Z % BW))) | (Y >> (Z % BW))
+ SHL, SRA, SRL, ROTL, ROTR, FSHL, FSHR,
/// Byte Swap and Counting operators.
BSWAP, CTTZ, CTLZ, CTPOP, BITREVERSE,
@@ -461,31 +488,33 @@
/// in-register any-extension of the low lanes of an integer vector. The
/// result type must have fewer elements than the operand type, and those
/// elements must be larger integer types such that the total size of the
- /// operand type and the result type match. Each of the low operand
- /// elements is any-extended into the corresponding, wider result
- /// elements with the high bits becoming undef.
+ /// operand type is less than or equal to the size of the result type. Each
+ /// of the low operand elements is any-extended into the corresponding,
+ /// wider result elements with the high bits becoming undef.
+ /// NOTE: The type legalizer prefers to make the operand and result size
+ /// the same to allow expansion to shuffle vector during op legalization.
ANY_EXTEND_VECTOR_INREG,
/// SIGN_EXTEND_VECTOR_INREG(Vector) - This operator represents an
/// in-register sign-extension of the low lanes of an integer vector. The
/// result type must have fewer elements than the operand type, and those
/// elements must be larger integer types such that the total size of the
- /// operand type and the result type match. Each of the low operand
- /// elements is sign-extended into the corresponding, wider result
- /// elements.
- // FIXME: The SIGN_EXTEND_INREG node isn't specifically limited to
- // scalars, but it also doesn't handle vectors well. Either it should be
- // restricted to scalars or this node (and its handling) should be merged
- // into it.
+ /// operand type is less than or equal to the size of the result type. Each
+ /// of the low operand elements is sign-extended into the corresponding,
+ /// wider result elements.
+ /// NOTE: The type legalizer prefers to make the operand and result size
+ /// the same to allow expansion to shuffle vector during op legalization.
SIGN_EXTEND_VECTOR_INREG,
/// ZERO_EXTEND_VECTOR_INREG(Vector) - This operator represents an
/// in-register zero-extension of the low lanes of an integer vector. The
/// result type must have fewer elements than the operand type, and those
/// elements must be larger integer types such that the total size of the
- /// operand type and the result type match. Each of the low operand
- /// elements is zero-extended into the corresponding, wider result
- /// elements.
+ /// operand type is less than or equal to the size of the result type. Each
+ /// of the low operand elements is zero-extended into the corresponding,
+ /// wider result elements.
+ /// NOTE: The type legalizer prefers to make the operand and result size
+ /// the same to allow expansion to shuffle vector during op legalization.
ZERO_EXTEND_VECTOR_INREG,
/// FP_TO_[US]INT - Convert a floating point value to a signed or unsigned
@@ -550,19 +579,31 @@
/// is often a storage-only type but has native conversions.
FP16_TO_FP, FP_TO_FP16,
- /// Perform various unary floating-point operations inspired by libm.
+ /// Perform various unary floating-point operations inspired by libm. For
+ /// FPOWI, the result is undefined if if the integer operand doesn't fit
+ /// into 32 bits.
FNEG, FABS, FSQRT, FCBRT, FSIN, FCOS, FPOWI, FPOW,
FLOG, FLOG2, FLOG10, FEXP, FEXP2,
FCEIL, FTRUNC, FRINT, FNEARBYINT, FROUND, FFLOOR,
/// FMINNUM/FMAXNUM - Perform floating-point minimum or maximum on two
/// values.
- /// In the case where a single input is NaN, the non-NaN input is returned.
+ //
+ /// In the case where a single input is a NaN (either signaling or quiet),
+ /// the non-NaN input is returned.
///
/// The return value of (FMINNUM 0.0, -0.0) could be either 0.0 or -0.0.
FMINNUM, FMAXNUM,
- /// FMINNAN/FMAXNAN - Behave identically to FMINNUM/FMAXNUM, except that
- /// when a single input is NaN, NaN is returned.
- FMINNAN, FMAXNAN,
+
+ /// FMINNUM_IEEE/FMAXNUM_IEEE - Perform floating-point minimum or maximum on
+ /// two values, following the IEEE-754 2008 definition. This differs from
+ /// FMINNUM/FMAXNUM in the handling of signaling NaNs. If one input is a
+ /// signaling NaN, returns a quiet NaN.
+ FMINNUM_IEEE, FMAXNUM_IEEE,
+
+ /// FMINIMUM/FMAXIMUM - NaN-propagating minimum/maximum that also treat -0.0
+ /// as less than 0.0. While FMINNUM_IEEE/FMAXNUM_IEEE follow IEEE 754-2008
+ /// semantics, FMINIMUM/FMAXIMUM follow IEEE 754-2018 draft semantics.
+ FMINIMUM, FMAXIMUM,
/// FSINCOS - Compute both fsin and fcos as a single operation.
FSINCOS,
@@ -626,6 +667,9 @@
/// SDOperands.
INLINEASM,
+ /// INLINEASM_BR - Terminator version of inline asm. Used by asm-goto.
+ INLINEASM_BR,
+
/// EH_LABEL - Represents a label in mid basic block used to track
/// locations needed for debug and exception handling tables. These nodes
/// take a chain as input and return a chain.
@@ -779,6 +823,8 @@
ATOMIC_LOAD_MAX,
ATOMIC_LOAD_UMIN,
ATOMIC_LOAD_UMAX,
+ ATOMIC_LOAD_FADD,
+ ATOMIC_LOAD_FSUB,
// Masked load and store - consecutive vector load and store operations
// with additional mask operand that prevents memory accesses to the
diff --git a/linux-x64/clang/include/llvm/CodeGen/IntrinsicLowering.h b/linux-x64/clang/include/llvm/CodeGen/IntrinsicLowering.h
index 597d684..daf2d9a 100644
--- a/linux-x64/clang/include/llvm/CodeGen/IntrinsicLowering.h
+++ b/linux-x64/clang/include/llvm/CodeGen/IntrinsicLowering.h
@@ -1,9 +1,8 @@
//===-- IntrinsicLowering.h - Intrinsic Function Lowering -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -31,10 +30,6 @@
public:
explicit IntrinsicLowering(const DataLayout &DL) : DL(DL), Warned(false) {}
- /// Add all of the prototypes that might be needed by an intrinsic lowering
- /// implementation to be inserted into the module specified.
- void AddPrototypes(Module &M);
-
/// Replace a call to the specified intrinsic function.
/// If an intrinsic function must be implemented by the code generator
/// (such as va_start), this function should print a message and abort.
diff --git a/linux-x64/clang/include/llvm/CodeGen/LatencyPriorityQueue.h b/linux-x64/clang/include/llvm/CodeGen/LatencyPriorityQueue.h
index 9b8d83c..95f4c64 100644
--- a/linux-x64/clang/include/llvm/CodeGen/LatencyPriorityQueue.h
+++ b/linux-x64/clang/include/llvm/CodeGen/LatencyPriorityQueue.h
@@ -1,9 +1,8 @@
//===---- LatencyPriorityQueue.h - A latency-oriented priority queue ------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/LazyMachineBlockFrequencyInfo.h b/linux-x64/clang/include/llvm/CodeGen/LazyMachineBlockFrequencyInfo.h
index 221f16a..ca99c6c 100644
--- a/linux-x64/clang/include/llvm/CodeGen/LazyMachineBlockFrequencyInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/LazyMachineBlockFrequencyInfo.h
@@ -1,9 +1,8 @@
///===- LazyMachineBlockFrequencyInfo.h - Lazy Block Frequency -*- C++ -*--===//
///
-/// The LLVM Compiler Infrastructure
-///
-/// This file is distributed under the University of Illinois Open Source
-/// License. See LICENSE.TXT for details.
+/// 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
///
///===---------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/CodeGen/LexicalScopes.h b/linux-x64/clang/include/llvm/CodeGen/LexicalScopes.h
index 3ba5034..253d473 100644
--- a/linux-x64/clang/include/llvm/CodeGen/LexicalScopes.h
+++ b/linux-x64/clang/include/llvm/CodeGen/LexicalScopes.h
@@ -1,9 +1,8 @@
//===- LexicalScopes.cpp - Collecting lexical scope info --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/LinkAllAsmWriterComponents.h b/linux-x64/clang/include/llvm/CodeGen/LinkAllAsmWriterComponents.h
index c3046da..75a5c35 100644
--- a/linux-x64/clang/include/llvm/CodeGen/LinkAllAsmWriterComponents.h
+++ b/linux-x64/clang/include/llvm/CodeGen/LinkAllAsmWriterComponents.h
@@ -1,9 +1,8 @@
//===- llvm/Codegen/LinkAllAsmWriterComponents.h ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -15,7 +14,7 @@
#ifndef LLVM_CODEGEN_LINKALLASMWRITERCOMPONENTS_H
#define LLVM_CODEGEN_LINKALLASMWRITERCOMPONENTS_H
-#include "llvm/CodeGen/GCs.h"
+#include "llvm/CodeGen/BuiltinGCs.h"
#include <cstdlib>
namespace {
diff --git a/linux-x64/clang/include/llvm/CodeGen/LinkAllCodegenComponents.h b/linux-x64/clang/include/llvm/CodeGen/LinkAllCodegenComponents.h
index fee131e..56c93b2 100644
--- a/linux-x64/clang/include/llvm/CodeGen/LinkAllCodegenComponents.h
+++ b/linux-x64/clang/include/llvm/CodeGen/LinkAllCodegenComponents.h
@@ -1,9 +1,8 @@
//===- llvm/Codegen/LinkAllCodegenComponents.h ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -15,7 +14,7 @@
#ifndef LLVM_CODEGEN_LINKALLCODEGENCOMPONENTS_H
#define LLVM_CODEGEN_LINKALLCODEGENCOMPONENTS_H
-#include "llvm/CodeGen/GCs.h"
+#include "llvm/CodeGen/BuiltinGCs.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/CodeGen/SchedulerRegistry.h"
#include "llvm/Target/TargetMachine.h"
@@ -36,11 +35,7 @@
(void) llvm::createGreedyRegisterAllocator();
(void) llvm::createDefaultPBQPRegisterAllocator();
- llvm::linkCoreCLRGC();
- llvm::linkOcamlGC();
- llvm::linkErlangGC();
- llvm::linkShadowStackGC();
- llvm::linkStatepointExampleGC();
+ llvm::linkAllBuiltinGCs();
(void) llvm::createBURRListDAGScheduler(nullptr,
llvm::CodeGenOpt::Default);
diff --git a/linux-x64/clang/include/llvm/CodeGen/LiveInterval.h b/linux-x64/clang/include/llvm/CodeGen/LiveInterval.h
index cdf9ad2..622c124 100644
--- a/linux-x64/clang/include/llvm/CodeGen/LiveInterval.h
+++ b/linux-x64/clang/include/llvm/CodeGen/LiveInterval.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/LiveInterval.h - Interval representation ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/LiveIntervalUnion.h b/linux-x64/clang/include/llvm/CodeGen/LiveIntervalUnion.h
index 9e2799b..05506d2 100644
--- a/linux-x64/clang/include/llvm/CodeGen/LiveIntervalUnion.h
+++ b/linux-x64/clang/include/llvm/CodeGen/LiveIntervalUnion.h
@@ -1,9 +1,8 @@
//===- LiveIntervalUnion.h - Live interval union data struct ---*- C++ -*--===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/LiveIntervals.h b/linux-x64/clang/include/llvm/CodeGen/LiveIntervals.h
index 291a07a..d0791be 100644
--- a/linux-x64/clang/include/llvm/CodeGen/LiveIntervals.h
+++ b/linux-x64/clang/include/llvm/CodeGen/LiveIntervals.h
@@ -1,9 +1,8 @@
//===- LiveIntervals.h - Live Interval Analysis -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -198,10 +197,10 @@
void pruneValue(LiveRange &LR, SlotIndex Kill,
SmallVectorImpl<SlotIndex> *EndPoints);
- /// This function should not be used. Its intend is to tell you that
- /// you are doing something wrong if you call pruveValue directly on a
+ /// This function should not be used. Its intent is to tell you that you are
+ /// doing something wrong if you call pruneValue directly on a
/// LiveInterval. Indeed, you are supposed to call pruneValue on the main
- /// LiveRange and all the LiveRange of the subranges if any.
+ /// LiveRange and all the LiveRanges of the subranges if any.
LLVM_ATTRIBUTE_UNUSED void pruneValue(LiveInterval &, SlotIndex,
SmallVectorImpl<SlotIndex> *) {
llvm_unreachable(
diff --git a/linux-x64/clang/include/llvm/CodeGen/LivePhysRegs.h b/linux-x64/clang/include/llvm/CodeGen/LivePhysRegs.h
index 301a450..50da0b3 100644
--- a/linux-x64/clang/include/llvm/CodeGen/LivePhysRegs.h
+++ b/linux-x64/clang/include/llvm/CodeGen/LivePhysRegs.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/LivePhysRegs.h - Live Physical Register Set -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -48,7 +47,8 @@
/// when walking backward/forward through a basic block.
class LivePhysRegs {
const TargetRegisterInfo *TRI = nullptr;
- SparseSet<unsigned> LiveRegs;
+ using RegisterSet = SparseSet<MCPhysReg, identity<MCPhysReg>>;
+ RegisterSet LiveRegs;
public:
/// Constructs an unitialized set. init() needs to be called to initialize it.
@@ -76,7 +76,7 @@
bool empty() const { return LiveRegs.empty(); }
/// Adds a physical register and all its sub-registers to the set.
- void addReg(unsigned Reg) {
+ void addReg(MCPhysReg Reg) {
assert(TRI && "LivePhysRegs is not initialized.");
assert(Reg <= TRI->getNumRegs() && "Expected a physical register.");
for (MCSubRegIterator SubRegs(Reg, TRI, /*IncludeSelf=*/true);
@@ -86,7 +86,7 @@
/// Removes a physical register, all its sub-registers, and all its
/// super-registers from the set.
- void removeReg(unsigned Reg) {
+ void removeReg(MCPhysReg Reg) {
assert(TRI && "LivePhysRegs is not initialized.");
assert(Reg <= TRI->getNumRegs() && "Expected a physical register.");
for (MCRegAliasIterator R(Reg, TRI, true); R.isValid(); ++R)
@@ -95,7 +95,7 @@
/// Removes physical registers clobbered by the regmask operand \p MO.
void removeRegsInMask(const MachineOperand &MO,
- SmallVectorImpl<std::pair<unsigned, const MachineOperand*>> *Clobbers =
+ SmallVectorImpl<std::pair<MCPhysReg, const MachineOperand*>> *Clobbers =
nullptr);
/// Returns true if register \p Reg is contained in the set. This also
@@ -103,10 +103,10 @@
/// addReg() always adds all sub-registers to the set as well.
/// Note: Returns false if just some sub registers are live, use available()
/// when searching a free register.
- bool contains(unsigned Reg) const { return LiveRegs.count(Reg); }
+ bool contains(MCPhysReg Reg) const { return LiveRegs.count(Reg); }
/// Returns true if register \p Reg and no aliasing register is in the set.
- bool available(const MachineRegisterInfo &MRI, unsigned Reg) const;
+ bool available(const MachineRegisterInfo &MRI, MCPhysReg Reg) const;
/// Remove defined registers and regmask kills from the set.
void removeDefs(const MachineInstr &MI);
@@ -126,7 +126,7 @@
/// defined or clobbered by a regmask. The operand will identify whether this
/// is a regmask or register operand.
void stepForward(const MachineInstr &MI,
- SmallVectorImpl<std::pair<unsigned, const MachineOperand*>> &Clobbers);
+ SmallVectorImpl<std::pair<MCPhysReg, const MachineOperand*>> &Clobbers);
/// Adds all live-in registers of basic block \p MBB.
/// Live in registers are the registers in the blocks live-in list and the
@@ -143,7 +143,7 @@
/// registers.
void addLiveOutsNoPristines(const MachineBasicBlock &MBB);
- using const_iterator = SparseSet<unsigned>::const_iterator;
+ using const_iterator = RegisterSet::const_iterator;
const_iterator begin() const { return LiveRegs.begin(); }
const_iterator end() const { return LiveRegs.end(); }
diff --git a/linux-x64/clang/include/llvm/CodeGen/LiveRangeEdit.h b/linux-x64/clang/include/llvm/CodeGen/LiveRangeEdit.h
index 5383029..6519937 100644
--- a/linux-x64/clang/include/llvm/CodeGen/LiveRangeEdit.h
+++ b/linux-x64/clang/include/llvm/CodeGen/LiveRangeEdit.h
@@ -1,9 +1,8 @@
//===- LiveRangeEdit.h - Basic tools for split and spill --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/LiveRegMatrix.h b/linux-x64/clang/include/llvm/CodeGen/LiveRegMatrix.h
index f62a55c..ab4d44f 100644
--- a/linux-x64/clang/include/llvm/CodeGen/LiveRegMatrix.h
+++ b/linux-x64/clang/include/llvm/CodeGen/LiveRegMatrix.h
@@ -1,9 +1,8 @@
//===- LiveRegMatrix.h - Track register interference ----------*- C++ -*---===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/LiveRegUnits.h b/linux-x64/clang/include/llvm/CodeGen/LiveRegUnits.h
index 2495459..7dbb2fe 100644
--- a/linux-x64/clang/include/llvm/CodeGen/LiveRegUnits.h
+++ b/linux-x64/clang/include/llvm/CodeGen/LiveRegUnits.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/LiveRegUnits.h - Register Unit Set ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -85,14 +84,14 @@
bool empty() const { return Units.none(); }
/// Adds register units covered by physical register \p Reg.
- void addReg(unsigned Reg) {
+ void addReg(MCPhysReg Reg) {
for (MCRegUnitIterator Unit(Reg, TRI); Unit.isValid(); ++Unit)
Units.set(*Unit);
}
/// Adds register units covered by physical register \p Reg that are
/// part of the lanemask \p Mask.
- void addRegMasked(unsigned Reg, LaneBitmask Mask) {
+ void addRegMasked(MCPhysReg Reg, LaneBitmask Mask) {
for (MCRegUnitMaskIterator Unit(Reg, TRI); Unit.isValid(); ++Unit) {
LaneBitmask UnitMask = (*Unit).second;
if (UnitMask.none() || (UnitMask & Mask).any())
@@ -101,7 +100,7 @@
}
/// Removes all register units covered by physical register \p Reg.
- void removeReg(unsigned Reg) {
+ void removeReg(MCPhysReg Reg) {
for (MCRegUnitIterator Unit(Reg, TRI); Unit.isValid(); ++Unit)
Units.reset(*Unit);
}
@@ -115,7 +114,7 @@
void addRegsInMask(const uint32_t *RegMask);
/// Returns true if no part of physical register \p Reg is live.
- bool available(unsigned Reg) const {
+ bool available(MCPhysReg Reg) const {
for (MCRegUnitIterator Unit(Reg, TRI); Unit.isValid(); ++Unit) {
if (Units.test(*Unit))
return false;
diff --git a/linux-x64/clang/include/llvm/CodeGen/LiveStacks.h b/linux-x64/clang/include/llvm/CodeGen/LiveStacks.h
index 44ed785..7c4c64d 100644
--- a/linux-x64/clang/include/llvm/CodeGen/LiveStacks.h
+++ b/linux-x64/clang/include/llvm/CodeGen/LiveStacks.h
@@ -1,9 +1,8 @@
//===- LiveStacks.h - Live Stack Slot Analysis ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/LiveVariables.h b/linux-x64/clang/include/llvm/CodeGen/LiveVariables.h
index ed8da86..71de306 100644
--- a/linux-x64/clang/include/llvm/CodeGen/LiveVariables.h
+++ b/linux-x64/clang/include/llvm/CodeGen/LiveVariables.h
@@ -1,9 +1,8 @@
//===-- llvm/CodeGen/LiveVariables.h - Live Variable Analysis ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/LoopTraversal.h b/linux-x64/clang/include/llvm/CodeGen/LoopTraversal.h
index 750da01..e5810ef 100644
--- a/linux-x64/clang/include/llvm/CodeGen/LoopTraversal.h
+++ b/linux-x64/clang/include/llvm/CodeGen/LoopTraversal.h
@@ -1,9 +1,8 @@
//==------ llvm/CodeGen/LoopTraversal.h - Loop Traversal -*- C++ -*---------==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/LowLevelType.h b/linux-x64/clang/include/llvm/CodeGen/LowLevelType.h
index a3c5c93..687233e 100644
--- a/linux-x64/clang/include/llvm/CodeGen/LowLevelType.h
+++ b/linux-x64/clang/include/llvm/CodeGen/LowLevelType.h
@@ -1,9 +1,8 @@
//== llvm/CodeGen/LowLevelType.h ------------------------------- -*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MIRParser/MIRParser.h b/linux-x64/clang/include/llvm/CodeGen/MIRParser/MIRParser.h
index e199a1f..6a04e48 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MIRParser/MIRParser.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MIRParser/MIRParser.h
@@ -1,9 +1,8 @@
//===- MIRParser.h - MIR serialization format parser ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MIRPrinter.h b/linux-x64/clang/include/llvm/CodeGen/MIRPrinter.h
index 078c4b2..b95cf0f 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MIRPrinter.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MIRPrinter.h
@@ -1,9 +1,8 @@
//===- MIRPrinter.h - MIR serialization format printer --------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MIRYamlMapping.h b/linux-x64/clang/include/llvm/CodeGen/MIRYamlMapping.h
index dc90575..b600ec9 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MIRYamlMapping.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MIRYamlMapping.h
@@ -1,9 +1,8 @@
-//===- MIRYAMLMapping.h - Describes the mapping between MIR and YAML ------===//
+//===- MIRYamlMapping.h - Describes the mapping between MIR and YAML ------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -494,6 +493,7 @@
bool FailedISel = false;
// Register information
bool TracksRegLiveness = false;
+ bool HasWinCFI = false;
std::vector<VirtualRegisterDefinition> VirtualRegisters;
std::vector<MachineFunctionLiveIn> LiveIns;
Optional<std::vector<FlowStringValue>> CalleeSavedRegisters;
@@ -517,6 +517,7 @@
YamlIO.mapOptional("selected", MF.Selected, false);
YamlIO.mapOptional("failedISel", MF.FailedISel, false);
YamlIO.mapOptional("tracksRegLiveness", MF.TracksRegLiveness, false);
+ YamlIO.mapOptional("hasWinCFI", MF.HasWinCFI, false);
YamlIO.mapOptional("registers", MF.VirtualRegisters,
std::vector<VirtualRegisterDefinition>());
YamlIO.mapOptional("liveins", MF.LiveIns,
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachORelocation.h b/linux-x64/clang/include/llvm/CodeGen/MachORelocation.h
index cbb4969..0185c7c 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachORelocation.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachORelocation.h
@@ -1,9 +1,8 @@
//=== MachORelocation.h - Mach-O Relocation Info ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineBasicBlock.h b/linux-x64/clang/include/llvm/CodeGen/MachineBasicBlock.h
index ec2f270..34e18ba 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineBasicBlock.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineBasicBlock.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/MachineBasicBlock.h -------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineBlockFrequencyInfo.h b/linux-x64/clang/include/llvm/CodeGen/MachineBlockFrequencyInfo.h
index 5b4b99c..a438ecf 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineBlockFrequencyInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineBlockFrequencyInfo.h
@@ -1,9 +1,8 @@
//===- MachineBlockFrequencyInfo.h - MBB Frequency Analysis -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineBranchProbabilityInfo.h b/linux-x64/clang/include/llvm/CodeGen/MachineBranchProbabilityInfo.h
index 81b0524..2b9b203 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineBranchProbabilityInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineBranchProbabilityInfo.h
@@ -1,9 +1,8 @@
//=- MachineBranchProbabilityInfo.h - Branch Probability Analysis -*- C++ -*-=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineCombinerPattern.h b/linux-x64/clang/include/llvm/CodeGen/MachineCombinerPattern.h
index 586535f..4f4034b 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineCombinerPattern.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineCombinerPattern.h
@@ -1,10 +1,9 @@
//===-- llvm/CodeGen/MachineCombinerPattern.h - Instruction pattern supported by
// combiner ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineConstantPool.h b/linux-x64/clang/include/llvm/CodeGen/MachineConstantPool.h
index b0b5420..4d07b62 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineConstantPool.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineConstantPool.h
@@ -1,9 +1,8 @@
//===- CodeGen/MachineConstantPool.h - Abstract Constant Pool ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineDominanceFrontier.h b/linux-x64/clang/include/llvm/CodeGen/MachineDominanceFrontier.h
index 75d75bc..f7bbd07 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineDominanceFrontier.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineDominanceFrontier.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/MachineDominanceFrontier.h ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineDominators.h b/linux-x64/clang/include/llvm/CodeGen/MachineDominators.h
index e3d3d16..d220008 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineDominators.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineDominators.h
@@ -1,9 +1,8 @@
//==- llvm/CodeGen/MachineDominators.h - Machine Dom Calculation -*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineFrameInfo.h b/linux-x64/clang/include/llvm/CodeGen/MachineFrameInfo.h
index 02b2f1b..402a2dc 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineFrameInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineFrameInfo.h
@@ -1,9 +1,8 @@
//===-- CodeGen/MachineFrameInfo.h - Abstract Stack Frame Rep. --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -28,9 +27,14 @@
/// The CalleeSavedInfo class tracks the information need to locate where a
/// callee saved register is in the current frame.
+/// Callee saved reg can also be saved to a different register rather than
+/// on the stack by setting DstReg instead of FrameIdx.
class CalleeSavedInfo {
unsigned Reg;
- int FrameIdx;
+ union {
+ int FrameIdx;
+ unsigned DstReg;
+ };
/// Flag indicating whether the register is actually restored in the epilog.
/// In most cases, if a register is saved, it is also restored. There are
/// some situations, though, when this is not the case. For example, the
@@ -44,17 +48,29 @@
/// by implicit uses on the return instructions, however, the required
/// changes in the ARM backend would be quite extensive.
bool Restored;
+ /// Flag indicating whether the register is spilled to stack or another
+ /// register.
+ bool SpilledToReg;
public:
explicit CalleeSavedInfo(unsigned R, int FI = 0)
- : Reg(R), FrameIdx(FI), Restored(true) {}
+ : Reg(R), FrameIdx(FI), Restored(true), SpilledToReg(false) {}
// Accessors.
unsigned getReg() const { return Reg; }
int getFrameIdx() const { return FrameIdx; }
- void setFrameIdx(int FI) { FrameIdx = FI; }
+ unsigned getDstReg() const { return DstReg; }
+ void setFrameIdx(int FI) {
+ FrameIdx = FI;
+ SpilledToReg = false;
+ }
+ void setDstReg(unsigned SpillReg) {
+ DstReg = SpillReg;
+ SpilledToReg = true;
+ }
bool isRestored() const { return Restored; }
void setRestored(bool R) { Restored = R; }
+ bool isSpilledToReg() const { return SpilledToReg; }
};
/// The MachineFrameInfo class represents an abstract stack frame until
@@ -271,9 +287,9 @@
unsigned CVBytesOfCalleeSavedRegisters = 0;
/// The prolog/epilog code inserter fills in this vector with each
- /// callee saved register saved in the frame. Beyond its use by the prolog/
- /// epilog code inserter, this data used for debug info and exception
- /// handling.
+ /// callee saved register saved in either the frame or a different
+ /// register. Beyond its use by the prolog/ epilog code inserter,
+ /// this data is used for debug info and exception handling.
std::vector<CalleeSavedInfo> CSInfo;
/// Has CSInfo been set yet?
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineFunction.h b/linux-x64/clang/include/llvm/CodeGen/MachineFunction.h
index 7471b31..34ceb15 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineFunction.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineFunction.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/MachineFunction.h ---------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -58,6 +57,7 @@
class DILocation;
class Function;
class GlobalValue;
+class LLVMTargetMachine;
class MachineConstantPool;
class MachineFrameInfo;
class MachineFunction;
@@ -70,7 +70,6 @@
class PseudoSourceValueManager;
class raw_ostream;
class SlotIndexes;
-class TargetMachine;
class TargetRegisterClass;
class TargetSubtargetInfo;
struct WasmEHFuncInfo;
@@ -86,7 +85,7 @@
template <class Iterator>
void transferNodesFromList(ilist_callback_traits &OldList, Iterator, Iterator) {
- llvm_unreachable("Never transfer between lists");
+ assert(this == &OldList && "never transfer MBBs between functions");
}
};
@@ -225,7 +224,7 @@
class MachineFunction {
const Function &F;
- const TargetMachine &Target;
+ const LLVMTargetMachine &Target;
const TargetSubtargetInfo *STI;
MCContext &Ctx;
MachineModuleInfo &MMI;
@@ -316,6 +315,9 @@
/// Map a landing pad's EH symbol to the call site indexes.
DenseMap<MCSymbol*, SmallVector<unsigned, 4>> LPadToCallSiteMap;
+ /// Map a landing pad to its index.
+ DenseMap<const MachineBasicBlock *, unsigned> WasmLPadToIndexMap;
+
/// Map of invoke call site index values to associated begin EH_LABEL.
DenseMap<MCSymbol*, unsigned> CallSiteMap;
@@ -369,23 +371,25 @@
public:
virtual ~Delegate() = default;
- virtual void MF_HandleInsertion(const MachineInstr &MI) = 0;
- virtual void MF_HandleRemoval(const MachineInstr &MI) = 0;
+ /// Callback after an insertion. This should not modify the MI directly.
+ virtual void MF_HandleInsertion(MachineInstr &MI) = 0;
+ /// Callback before a removal. This should not modify the MI directly.
+ virtual void MF_HandleRemoval(MachineInstr &MI) = 0;
};
private:
Delegate *TheDelegate = nullptr;
// Callbacks for insertion and removal.
- void handleInsertion(const MachineInstr &MI);
- void handleRemoval(const MachineInstr &MI);
+ void handleInsertion(MachineInstr &MI);
+ void handleRemoval(MachineInstr &MI);
friend struct ilist_traits<MachineInstr>;
public:
using VariableDbgInfoMapTy = SmallVector<VariableDbgInfo, 4>;
VariableDbgInfoMapTy VariableDbgInfos;
- MachineFunction(const Function &F, const TargetMachine &Target,
+ MachineFunction(const Function &F, const LLVMTargetMachine &Target,
const TargetSubtargetInfo &STI, unsigned FunctionNum,
MachineModuleInfo &MMI);
MachineFunction(const MachineFunction &) = delete;
@@ -433,7 +437,7 @@
unsigned getFunctionNumber() const { return FunctionNumber; }
/// getTarget - Return the target machine this machine code is compiled with
- const TargetMachine &getTarget() const { return Target; }
+ const LLVMTargetMachine &getTarget() const { return Target; }
/// getSubtarget - Return the subtarget for which this machine code is being
/// compiled.
@@ -810,7 +814,8 @@
LandingPadInfo &getOrCreateLandingPadInfo(MachineBasicBlock *LandingPad);
/// Remap landing pad labels and remove any deleted landing pads.
- void tidyLandingPads(DenseMap<MCSymbol*, uintptr_t> *LPMap = nullptr);
+ void tidyLandingPads(DenseMap<MCSymbol *, uintptr_t> *LPMap = nullptr,
+ bool TidyIfNoBeginLabels = true);
/// Return a reference to the landing pad info for the current function.
const std::vector<LandingPadInfo> &getLandingPads() const {
@@ -853,6 +858,22 @@
/// Map the landing pad's EH symbol to the call site indexes.
void setCallSiteLandingPad(MCSymbol *Sym, ArrayRef<unsigned> Sites);
+ /// Map the landing pad to its index. Used for Wasm exception handling.
+ void setWasmLandingPadIndex(const MachineBasicBlock *LPad, unsigned Index) {
+ WasmLPadToIndexMap[LPad] = Index;
+ }
+
+ /// Returns true if the landing pad has an associate index in wasm EH.
+ bool hasWasmLandingPadIndex(const MachineBasicBlock *LPad) const {
+ return WasmLPadToIndexMap.count(LPad);
+ }
+
+ /// Get the index in wasm EH for a given landing pad.
+ unsigned getWasmLandingPadIndex(const MachineBasicBlock *LPad) const {
+ assert(hasWasmLandingPadIndex(LPad));
+ return WasmLPadToIndexMap.lookup(LPad);
+ }
+
/// Get the call site indexes for a landing pad EH symbol.
SmallVectorImpl<unsigned> &getCallSiteLandingPad(MCSymbol *Sym) {
assert(hasCallSiteLandingPad(Sym) &&
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineFunctionPass.h b/linux-x64/clang/include/llvm/CodeGen/MachineFunctionPass.h
index 6d978da..caaf22c 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineFunctionPass.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineFunctionPass.h
@@ -1,9 +1,8 @@
//===-- MachineFunctionPass.h - Pass for MachineFunctions --------*-C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineInstr.h b/linux-x64/clang/include/llvm/CodeGen/MachineInstr.h
index 7c4e771..4cb39c5 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineInstr.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineInstr.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/MachineInstr.h - MachineInstr class ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -408,7 +407,7 @@
/// Returns the opcode of this MachineInstr.
unsigned getOpcode() const { return MCID->Opcode; }
- /// Access to explicit operands of the instruction.
+ /// Retuns the total number of operands.
unsigned getNumOperands() const { return NumOperands; }
const MachineOperand& getOperand(unsigned i) const {
@@ -1012,10 +1011,13 @@
}
bool isKill() const { return getOpcode() == TargetOpcode::KILL; }
bool isImplicitDef() const { return getOpcode()==TargetOpcode::IMPLICIT_DEF; }
- bool isInlineAsm() const { return getOpcode() == TargetOpcode::INLINEASM; }
+ bool isInlineAsm() const {
+ return getOpcode() == TargetOpcode::INLINEASM ||
+ getOpcode() == TargetOpcode::INLINEASM_BR;
+ }
bool isMSInlineAsm() const {
- return getOpcode() == TargetOpcode::INLINEASM && getInlineAsmDialect();
+ return isInlineAsm() && getInlineAsmDialect() == InlineAsm::AD_Intel;
}
bool isStackAligningInlineAsm() const;
@@ -1400,6 +1402,19 @@
/// Return true if all the defs of this instruction are dead.
bool allDefsAreDead() const;
+ /// Return a valid size if the instruction is a spill instruction.
+ Optional<unsigned> getSpillSize(const TargetInstrInfo *TII) const;
+
+ /// Return a valid size if the instruction is a folded spill instruction.
+ Optional<unsigned> getFoldedSpillSize(const TargetInstrInfo *TII) const;
+
+ /// Return a valid size if the instruction is a restore instruction.
+ Optional<unsigned> getRestoreSize(const TargetInstrInfo *TII) const;
+
+ /// Return a valid size if the instruction is a folded restore instruction.
+ Optional<unsigned>
+ getFoldedRestoreSize(const TargetInstrInfo *TII) const;
+
/// Copy implicit register operands from specified
/// instruction to this instruction.
void copyImplicitOps(MachineFunction &MF, const MachineInstr &MI);
@@ -1526,6 +1541,8 @@
/// not modify the MIFlags of this MachineInstr.
uint16_t mergeFlagsWith(const MachineInstr& Other) const;
+ static uint16_t copyFlagsFromInstruction(const Instruction &I);
+
/// Copy all flags to MachineInst MIFlags
void copyIRFlags(const Instruction &I);
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineInstrBuilder.h b/linux-x64/clang/include/llvm/CodeGen/MachineInstrBuilder.h
index b5e523f..4a8cd68 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineInstrBuilder.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineInstrBuilder.h
@@ -1,9 +1,8 @@
//===- CodeGen/MachineInstrBuilder.h - Simplify creation of MIs --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -80,6 +79,11 @@
/// explicitly.
MachineInstr *getInstr() const { return MI; }
+ /// Get the register for the operand index.
+ /// The operand at the index should be a register (asserted by
+ /// MachineOperand).
+ unsigned getReg(unsigned Idx) { return MI->getOperand(Idx).getReg(); }
+
/// Add a new virtual register operand.
const MachineInstrBuilder &addReg(unsigned RegNo, unsigned flags = 0,
unsigned SubReg = 0) const {
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineInstrBundle.h b/linux-x64/clang/include/llvm/CodeGen/MachineInstrBundle.h
index b5341fd..9bb5b63 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineInstrBundle.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineInstrBundle.h
@@ -1,9 +1,8 @@
-//===-- CodeGen/MachineInstBundle.h - MI bundle utilities -------*- C++ -*-===//
+//===- llvm/CodeGen/MachineInstrBundle.h - MI bundle utilities --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineInstrBundleIterator.h b/linux-x64/clang/include/llvm/CodeGen/MachineInstrBundleIterator.h
index 5fe4964..0f59563 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineInstrBundleIterator.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineInstrBundleIterator.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/MachineInstrBundleIterator.h ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineJumpTableInfo.h b/linux-x64/clang/include/llvm/CodeGen/MachineJumpTableInfo.h
index 25a3e6b..1178114 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineJumpTableInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineJumpTableInfo.h
@@ -1,9 +1,8 @@
//===-- CodeGen/MachineJumpTableInfo.h - Abstract Jump Tables --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineLoopInfo.h b/linux-x64/clang/include/llvm/CodeGen/MachineLoopInfo.h
index 917fb90..da6df59 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineLoopInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineLoopInfo.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/MachineLoopInfo.h - Natural Loop Calculator -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineMemOperand.h b/linux-x64/clang/include/llvm/CodeGen/MachineMemOperand.h
index 078ef7c..12fae2f 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineMemOperand.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineMemOperand.h
@@ -1,9 +1,8 @@
//==- llvm/CodeGen/MachineMemOperand.h - MachineMemOperand class -*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -267,13 +266,13 @@
bool isAtomic() const { return getOrdering() != AtomicOrdering::NotAtomic; }
/// Returns true if this memory operation doesn't have any ordering
- /// constraints other than normal aliasing. Volatile and atomic memory
- /// operations can't be reordered.
- ///
- /// Currently, we don't model the difference between volatile and atomic
- /// operations. They should retain their ordering relative to all memory
- /// operations.
- bool isUnordered() const { return !isVolatile(); }
+ /// constraints other than normal aliasing. Volatile and (ordered) atomic
+ /// memory operations can't be reordered.
+ bool isUnordered() const {
+ return (getOrdering() == AtomicOrdering::NotAtomic ||
+ getOrdering() == AtomicOrdering::Unordered) &&
+ !isVolatile();
+ }
/// Update this MachineMemOperand to reflect the alignment of MMO, if it has a
/// greater alignment. This must only be used when the new alignment applies
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineModuleInfo.h b/linux-x64/clang/include/llvm/CodeGen/MachineModuleInfo.h
index 554e890..9b81dc6 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineModuleInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineModuleInfo.h
@@ -1,9 +1,8 @@
//===-- llvm/CodeGen/MachineModuleInfo.h ------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -46,10 +45,10 @@
class BasicBlock;
class CallInst;
class Function;
-class MachineFunction;
+class LLVMTargetMachine;
class MMIAddrLabelMap;
+class MachineFunction;
class Module;
-class TargetMachine;
//===----------------------------------------------------------------------===//
/// This class can be derived from and used by targets to hold private
@@ -76,7 +75,7 @@
/// for specific use.
///
class MachineModuleInfo : public ImmutablePass {
- const TargetMachine &TM;
+ const LLVMTargetMachine &TM;
/// This is the MCContext used for the entire code generator.
MCContext Context;
@@ -114,10 +113,9 @@
/// True if debugging information is available in this module.
bool DbgInfoAvailable;
- /// True if this module calls VarArg function with floating-point arguments.
- /// This is used to emit an undefined reference to _fltused on Windows
- /// targets.
- bool UsesVAFloatArgument;
+ /// True if this module is being built for windows/msvc, and uses floating
+ /// point. This is used to emit an undefined reference to _fltused.
+ bool UsesMSVCFloatingPoint;
/// True if the module calls the __morestack function indirectly, as is
/// required under the large code model on x86. This is used to emit
@@ -145,7 +143,7 @@
public:
static char ID; // Pass identification, replacement for typeid
- explicit MachineModuleInfo(const TargetMachine *TM = nullptr);
+ explicit MachineModuleInfo(const LLVMTargetMachine *TM = nullptr);
~MachineModuleInfo() override;
// Initialization and Finalization
@@ -187,13 +185,9 @@
bool hasDebugInfo() const { return DbgInfoAvailable; }
void setDebugInfoAvailability(bool avail) { DbgInfoAvailable = avail; }
- bool usesVAFloatArgument() const {
- return UsesVAFloatArgument;
- }
+ bool usesMSVCFloatingPoint() const { return UsesMSVCFloatingPoint; }
- void setUsesVAFloatArgument(bool b) {
- UsesVAFloatArgument = b;
- }
+ void setUsesMSVCFloatingPoint(bool b) { UsesMSVCFloatingPoint = b; }
bool usesMorestackAddr() const {
return UsesMorestackAddr;
@@ -258,14 +252,6 @@
/// \}
}; // End class MachineModuleInfo
-//===- MMI building helpers -----------------------------------------------===//
-
-/// Determine if any floating-point values are being passed to this variadic
-/// function, and set the MachineModuleInfo's usesVAFloatArgument flag if so.
-/// This flag is used to emit an undefined reference to _fltused on Windows,
-/// which will link in MSVCRT's floating-point support.
-void computeUsesVAFloatArgument(const CallInst &I, MachineModuleInfo &MMI);
-
} // end namespace llvm
#endif // LLVM_CODEGEN_MACHINEMODULEINFO_H
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineModuleInfoImpls.h b/linux-x64/clang/include/llvm/CodeGen/MachineModuleInfoImpls.h
index 17df1fa..746e922 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineModuleInfoImpls.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineModuleInfoImpls.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/MachineModuleInfoImpls.h --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineOperand.h b/linux-x64/clang/include/llvm/CodeGen/MachineOperand.h
index 53e8889..ddcdc07 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineOperand.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineOperand.h
@@ -1,9 +1,8 @@
//===-- llvm/CodeGen/MachineOperand.h - MachineOperand class ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineOptimizationRemarkEmitter.h b/linux-x64/clang/include/llvm/CodeGen/MachineOptimizationRemarkEmitter.h
index a7ce870..9a0fd56 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineOptimizationRemarkEmitter.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineOptimizationRemarkEmitter.h
@@ -1,9 +1,8 @@
///===- MachineOptimizationRemarkEmitter.h - Opt Diagnostics -*- C++ -*----===//
///
-/// The LLVM Compiler Infrastructure
-///
-/// This file is distributed under the University of Illinois Open Source
-/// License. See LICENSE.TXT for details.
+/// 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
///
///===---------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineOutliner.h b/linux-x64/clang/include/llvm/CodeGen/MachineOutliner.h
index 95bfc24..377df4e 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineOutliner.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineOutliner.h
@@ -1,9 +1,8 @@
//===---- MachineOutliner.h - Outliner data structures ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -61,9 +60,6 @@
/// \p OutlinedFunctions.
unsigned FunctionIdx;
- /// Set to false if the candidate overlapped with another candidate.
- bool InCandidateList = true;
-
/// Identifier denoting the instructions to emit to call an outlined function
/// from this point. Defined by the target.
unsigned CallConstructionID;
@@ -82,6 +78,12 @@
/// been used across the sequence.
LiveRegUnits UsedInSequence;
+ /// Target-specific flags for this Candidate's MBB.
+ unsigned Flags = 0x0;
+
+ /// True if initLRU has been called on this Candidate.
+ bool LRUWasSet = false;
+
/// Return the number of instructions in this Candidate.
unsigned getLength() const { return Len; }
@@ -99,9 +101,7 @@
}
/// Returns the call overhead of this candidate if it is in the list.
- unsigned getCallOverhead() const {
- return InCandidateList ? CallOverhead : 0;
- }
+ unsigned getCallOverhead() const { return CallOverhead; }
MachineBasicBlock::iterator &front() { return FirstInst; }
MachineBasicBlock::iterator &back() { return LastInst; }
@@ -120,9 +120,9 @@
Candidate(unsigned StartIdx, unsigned Len,
MachineBasicBlock::iterator &FirstInst,
MachineBasicBlock::iterator &LastInst, MachineBasicBlock *MBB,
- unsigned FunctionIdx)
+ unsigned FunctionIdx, unsigned Flags)
: StartIdx(StartIdx), Len(Len), FirstInst(FirstInst), LastInst(LastInst),
- MBB(MBB), FunctionIdx(FunctionIdx) {}
+ MBB(MBB), FunctionIdx(FunctionIdx), Flags(Flags) {}
Candidate() {}
/// Used to ensure that \p Candidates are outlined in an order that
@@ -138,6 +138,10 @@
void initLRU(const TargetRegisterInfo &TRI) {
assert(MBB->getParent()->getRegInfo().tracksLiveness() &&
"Candidate's Machine Function must track liveness");
+ // Only initialize once.
+ if (LRUWasSet)
+ return;
+ LRUWasSet = true;
LRU.init(TRI);
LRU.addLiveOuts(*MBB);
@@ -158,24 +162,13 @@
/// class of candidate.
struct OutlinedFunction {
-private:
- /// The number of candidates for this \p OutlinedFunction.
- unsigned OccurrenceCount = 0;
-
public:
- std::vector<std::shared_ptr<Candidate>> Candidates;
+ std::vector<Candidate> Candidates;
/// The actual outlined function created.
/// This is initialized after we go through and create the actual function.
MachineFunction *MF = nullptr;
- /// A number assigned to this function which appears at the end of its name.
- unsigned Name;
-
- /// The sequence of integers corresponding to the instructions in this
- /// function.
- std::vector<unsigned> Sequence;
-
/// Represents the size of a sequence in bytes. (Some instructions vary
/// widely in size, so just counting the instructions isn't very useful.)
unsigned SequenceSize;
@@ -187,49 +180,41 @@
unsigned FrameConstructionID;
/// Return the number of candidates for this \p OutlinedFunction.
- unsigned getOccurrenceCount() { return OccurrenceCount; }
-
- /// Decrement the occurrence count of this OutlinedFunction and return the
- /// new count.
- unsigned decrement() {
- assert(OccurrenceCount > 0 && "Can't decrement an empty function!");
- OccurrenceCount--;
- return getOccurrenceCount();
- }
+ unsigned getOccurrenceCount() const { return Candidates.size(); }
/// Return the number of bytes it would take to outline this
/// function.
- unsigned getOutliningCost() {
+ unsigned getOutliningCost() const {
unsigned CallOverhead = 0;
- for (std::shared_ptr<Candidate> &C : Candidates)
- CallOverhead += C->getCallOverhead();
+ for (const Candidate &C : Candidates)
+ CallOverhead += C.getCallOverhead();
return CallOverhead + SequenceSize + FrameOverhead;
}
/// Return the size in bytes of the unoutlined sequences.
- unsigned getNotOutlinedCost() { return OccurrenceCount * SequenceSize; }
+ unsigned getNotOutlinedCost() const {
+ return getOccurrenceCount() * SequenceSize;
+ }
/// Return the number of instructions that would be saved by outlining
/// this function.
- unsigned getBenefit() {
+ unsigned getBenefit() const {
unsigned NotOutlinedCost = getNotOutlinedCost();
unsigned OutlinedCost = getOutliningCost();
return (NotOutlinedCost < OutlinedCost) ? 0
: NotOutlinedCost - OutlinedCost;
}
- OutlinedFunction(std::vector<Candidate> &Cands,
- unsigned SequenceSize, unsigned FrameOverhead,
- unsigned FrameConstructionID)
- : SequenceSize(SequenceSize), FrameOverhead(FrameOverhead),
- FrameConstructionID(FrameConstructionID) {
- OccurrenceCount = Cands.size();
- for (Candidate &C : Cands)
- Candidates.push_back(std::make_shared<outliner::Candidate>(C));
+ /// Return the number of instructions in this sequence.
+ unsigned getNumInstrs() const { return Candidates[0].getLength(); }
- unsigned B = getBenefit();
- for (std::shared_ptr<Candidate> &C : Candidates)
- C->Benefit = B;
+ OutlinedFunction(std::vector<Candidate> &Candidates, unsigned SequenceSize,
+ unsigned FrameOverhead, unsigned FrameConstructionID)
+ : Candidates(Candidates), SequenceSize(SequenceSize),
+ FrameOverhead(FrameOverhead), FrameConstructionID(FrameConstructionID) {
+ const unsigned B = getBenefit();
+ for (Candidate &C : Candidates)
+ C.Benefit = B;
}
OutlinedFunction() {}
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachinePassRegistry.h b/linux-x64/clang/include/llvm/CodeGen/MachinePassRegistry.h
index 3aba0bb..f5b3723 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachinePassRegistry.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachinePassRegistry.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/MachinePassRegistry.h -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -24,22 +23,20 @@
namespace llvm {
-using MachinePassCtor = void *(*)();
-
//===----------------------------------------------------------------------===//
///
/// MachinePassRegistryListener - Listener to adds and removals of nodes in
/// registration list.
///
//===----------------------------------------------------------------------===//
-class MachinePassRegistryListener {
- virtual void anchor();
+template <class PassCtorTy> class MachinePassRegistryListener {
+ virtual void anchor() {}
public:
MachinePassRegistryListener() = default;
virtual ~MachinePassRegistryListener() = default;
- virtual void NotifyAdd(StringRef N, MachinePassCtor C, StringRef D) = 0;
+ virtual void NotifyAdd(StringRef N, PassCtorTy C, StringRef D) = 0;
virtual void NotifyRemove(StringRef N) = 0;
};
@@ -48,15 +45,15 @@
/// MachinePassRegistryNode - Machine pass node stored in registration list.
///
//===----------------------------------------------------------------------===//
-class MachinePassRegistryNode {
+template <typename PassCtorTy> class MachinePassRegistryNode {
private:
MachinePassRegistryNode *Next = nullptr; // Next function pass in list.
StringRef Name; // Name of function pass.
StringRef Description; // Description string.
- MachinePassCtor Ctor; // Function pass creator.
+ PassCtorTy Ctor; // Pass creator.
public:
- MachinePassRegistryNode(const char *N, const char *D, MachinePassCtor C)
+ MachinePassRegistryNode(const char *N, const char *D, PassCtorTy C)
: Name(N), Description(D), Ctor(C) {}
// Accessors
@@ -64,7 +61,7 @@
MachinePassRegistryNode **getNextAddress() { return &Next; }
StringRef getName() const { return Name; }
StringRef getDescription() const { return Description; }
- MachinePassCtor getCtor() const { return Ctor; }
+ PassCtorTy getCtor() const { return Ctor; }
void setNext(MachinePassRegistryNode *N) { Next = N; }
};
@@ -73,11 +70,12 @@
/// MachinePassRegistry - Track the registration of machine passes.
///
//===----------------------------------------------------------------------===//
-class MachinePassRegistry {
+template <typename PassCtorTy> class MachinePassRegistry {
private:
- MachinePassRegistryNode *List; // List of registry nodes.
- MachinePassCtor Default; // Default function pass creator.
- MachinePassRegistryListener *Listener; // Listener for list adds are removes.
+ MachinePassRegistryNode<PassCtorTy> *List; // List of registry nodes.
+ PassCtorTy Default; // Default function pass creator.
+ MachinePassRegistryListener<PassCtorTy>
+ *Listener; // Listener for list adds are removes.
public:
// NO CONSTRUCTOR - we don't want static constructor ordering to mess
@@ -85,19 +83,47 @@
// Accessors.
//
- MachinePassRegistryNode *getList() { return List; }
- MachinePassCtor getDefault() { return Default; }
- void setDefault(MachinePassCtor C) { Default = C; }
- void setDefault(StringRef Name);
- void setListener(MachinePassRegistryListener *L) { Listener = L; }
+ MachinePassRegistryNode<PassCtorTy> *getList() { return List; }
+ PassCtorTy getDefault() { return Default; }
+ void setDefault(PassCtorTy C) { Default = C; }
+ /// setDefault - Set the default constructor by name.
+ void setDefault(StringRef Name) {
+ PassCtorTy Ctor = nullptr;
+ for (MachinePassRegistryNode<PassCtorTy> *R = getList(); R;
+ R = R->getNext()) {
+ if (R->getName() == Name) {
+ Ctor = R->getCtor();
+ break;
+ }
+ }
+ assert(Ctor && "Unregistered pass name");
+ setDefault(Ctor);
+ }
+ void setListener(MachinePassRegistryListener<PassCtorTy> *L) { Listener = L; }
/// Add - Adds a function pass to the registration list.
///
- void Add(MachinePassRegistryNode *Node);
+ void Add(MachinePassRegistryNode<PassCtorTy> *Node) {
+ Node->setNext(List);
+ List = Node;
+ if (Listener)
+ Listener->NotifyAdd(Node->getName(), Node->getCtor(),
+ Node->getDescription());
+ }
/// Remove - Removes a function pass from the registration list.
///
- void Remove(MachinePassRegistryNode *Node);
+ void Remove(MachinePassRegistryNode<PassCtorTy> *Node) {
+ for (MachinePassRegistryNode<PassCtorTy> **I = &List; *I;
+ I = (*I)->getNextAddress()) {
+ if (*I == Node) {
+ if (Listener)
+ Listener->NotifyRemove(Node->getName());
+ *I = (*I)->getNext();
+ break;
+ }
+ }
+ }
};
//===----------------------------------------------------------------------===//
@@ -105,9 +131,11 @@
/// RegisterPassParser class - Handle the addition of new machine passes.
///
//===----------------------------------------------------------------------===//
-template<class RegistryClass>
-class RegisterPassParser : public MachinePassRegistryListener,
- public cl::parser<typename RegistryClass::FunctionPassCtor> {
+template <class RegistryClass>
+class RegisterPassParser
+ : public MachinePassRegistryListener<
+ typename RegistryClass::FunctionPassCtor>,
+ public cl::parser<typename RegistryClass::FunctionPassCtor> {
public:
RegisterPassParser(cl::Option &O)
: cl::parser<typename RegistryClass::FunctionPassCtor>(O) {}
@@ -129,8 +157,9 @@
}
// Implement the MachinePassRegistryListener callbacks.
- void NotifyAdd(StringRef N, MachinePassCtor C, StringRef D) override {
- this->addLiteralOption(N, (typename RegistryClass::FunctionPassCtor)C, D);
+ void NotifyAdd(StringRef N, typename RegistryClass::FunctionPassCtor C,
+ StringRef D) override {
+ this->addLiteralOption(N, C, D);
}
void NotifyRemove(StringRef N) override {
this->removeLiteralOption(N);
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachinePipeliner.h b/linux-x64/clang/include/llvm/CodeGen/MachinePipeliner.h
new file mode 100644
index 0000000..a30e4b9
--- /dev/null
+++ b/linux-x64/clang/include/llvm/CodeGen/MachinePipeliner.h
@@ -0,0 +1,614 @@
+//===- MachinePipeliner.h - Machine Software Pipeliner Pass -------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// An implementation of the Swing Modulo Scheduling (SMS) software pipeliner.
+//
+// Software pipelining (SWP) is an instruction scheduling technique for loops
+// that overlap loop iterations and exploits ILP via a compiler transformation.
+//
+// Swing Modulo Scheduling is an implementation of software pipelining
+// that generates schedules that are near optimal in terms of initiation
+// interval, register requirements, and stage count. See the papers:
+//
+// "Swing Modulo Scheduling: A Lifetime-Sensitive Approach", by J. Llosa,
+// A. Gonzalez, E. Ayguade, and M. Valero. In PACT '96 Proceedings of the 1996
+// Conference on Parallel Architectures and Compilation Techiniques.
+//
+// "Lifetime-Sensitive Modulo Scheduling in a Production Environment", by J.
+// Llosa, E. Ayguade, A. Gonzalez, M. Valero, and J. Eckhardt. In IEEE
+// Transactions on Computers, Vol. 50, No. 3, 2001.
+//
+// "An Implementation of Swing Modulo Scheduling With Extensions for
+// Superblocks", by T. Lattner, Master's Thesis, University of Illinois at
+// Urbana-Champaign, 2005.
+//
+//
+// The SMS algorithm consists of three main steps after computing the minimal
+// initiation interval (MII).
+// 1) Analyze the dependence graph and compute information about each
+// instruction in the graph.
+// 2) Order the nodes (instructions) by priority based upon the heuristics
+// described in the algorithm.
+// 3) Attempt to schedule the nodes in the specified order using the MII.
+//
+//===----------------------------------------------------------------------===//
+#ifndef LLVM_LIB_CODEGEN_MACHINEPIPELINER_H
+#define LLVM_LIB_CODEGEN_MACHINEPIPELINER_H
+
+#include "llvm/CodeGen/MachineDominators.h"
+#include "llvm/CodeGen/RegisterClassInfo.h"
+#include "llvm/CodeGen/ScheduleDAGInstrs.h"
+#include "llvm/CodeGen/TargetInstrInfo.h"
+
+namespace llvm {
+
+class NodeSet;
+class SMSchedule;
+
+extern cl::opt<bool> SwpEnableCopyToPhi;
+
+/// The main class in the implementation of the target independent
+/// software pipeliner pass.
+class MachinePipeliner : public MachineFunctionPass {
+public:
+ MachineFunction *MF = nullptr;
+ const MachineLoopInfo *MLI = nullptr;
+ const MachineDominatorTree *MDT = nullptr;
+ const InstrItineraryData *InstrItins;
+ const TargetInstrInfo *TII = nullptr;
+ RegisterClassInfo RegClassInfo;
+ bool disabledByPragma = false;
+ unsigned II_setByPragma = 0;
+
+#ifndef NDEBUG
+ static int NumTries;
+#endif
+
+ /// Cache the target analysis information about the loop.
+ struct LoopInfo {
+ MachineBasicBlock *TBB = nullptr;
+ MachineBasicBlock *FBB = nullptr;
+ SmallVector<MachineOperand, 4> BrCond;
+ MachineInstr *LoopInductionVar = nullptr;
+ MachineInstr *LoopCompare = nullptr;
+ };
+ LoopInfo LI;
+
+ static char ID;
+
+ MachinePipeliner() : MachineFunctionPass(ID) {
+ initializeMachinePipelinerPass(*PassRegistry::getPassRegistry());
+ }
+
+ bool runOnMachineFunction(MachineFunction &MF) override;
+
+ void getAnalysisUsage(AnalysisUsage &AU) const override {
+ AU.addRequired<AAResultsWrapperPass>();
+ AU.addPreserved<AAResultsWrapperPass>();
+ AU.addRequired<MachineLoopInfo>();
+ AU.addRequired<MachineDominatorTree>();
+ AU.addRequired<LiveIntervals>();
+ MachineFunctionPass::getAnalysisUsage(AU);
+ }
+
+private:
+ void preprocessPhiNodes(MachineBasicBlock &B);
+ bool canPipelineLoop(MachineLoop &L);
+ bool scheduleLoop(MachineLoop &L);
+ bool swingModuloScheduler(MachineLoop &L);
+ void setPragmaPipelineOptions(MachineLoop &L);
+};
+
+/// This class builds the dependence graph for the instructions in a loop,
+/// and attempts to schedule the instructions using the SMS algorithm.
+class SwingSchedulerDAG : public ScheduleDAGInstrs {
+ MachinePipeliner &Pass;
+ /// The minimum initiation interval between iterations for this schedule.
+ unsigned MII = 0;
+ /// The maximum initiation interval between iterations for this schedule.
+ unsigned MAX_II = 0;
+ /// Set to true if a valid pipelined schedule is found for the loop.
+ bool Scheduled = false;
+ MachineLoop &Loop;
+ LiveIntervals &LIS;
+ const RegisterClassInfo &RegClassInfo;
+ unsigned II_setByPragma = 0;
+
+ /// A toplogical ordering of the SUnits, which is needed for changing
+ /// dependences and iterating over the SUnits.
+ ScheduleDAGTopologicalSort Topo;
+
+ struct NodeInfo {
+ int ASAP = 0;
+ int ALAP = 0;
+ int ZeroLatencyDepth = 0;
+ int ZeroLatencyHeight = 0;
+
+ NodeInfo() = default;
+ };
+ /// Computed properties for each node in the graph.
+ std::vector<NodeInfo> ScheduleInfo;
+
+ enum OrderKind { BottomUp = 0, TopDown = 1 };
+ /// Computed node ordering for scheduling.
+ SetVector<SUnit *> NodeOrder;
+
+ using NodeSetType = SmallVector<NodeSet, 8>;
+ using ValueMapTy = DenseMap<unsigned, unsigned>;
+ using MBBVectorTy = SmallVectorImpl<MachineBasicBlock *>;
+ using InstrMapTy = DenseMap<MachineInstr *, MachineInstr *>;
+
+ /// Instructions to change when emitting the final schedule.
+ DenseMap<SUnit *, std::pair<unsigned, int64_t>> InstrChanges;
+
+ /// We may create a new instruction, so remember it because it
+ /// must be deleted when the pass is finished.
+ SmallPtrSet<MachineInstr *, 4> NewMIs;
+
+ /// Ordered list of DAG postprocessing steps.
+ std::vector<std::unique_ptr<ScheduleDAGMutation>> Mutations;
+
+ /// Helper class to implement Johnson's circuit finding algorithm.
+ class Circuits {
+ std::vector<SUnit> &SUnits;
+ SetVector<SUnit *> Stack;
+ BitVector Blocked;
+ SmallVector<SmallPtrSet<SUnit *, 4>, 10> B;
+ SmallVector<SmallVector<int, 4>, 16> AdjK;
+ // Node to Index from ScheduleDAGTopologicalSort
+ std::vector<int> *Node2Idx;
+ unsigned NumPaths;
+ static unsigned MaxPaths;
+
+ public:
+ Circuits(std::vector<SUnit> &SUs, ScheduleDAGTopologicalSort &Topo)
+ : SUnits(SUs), Blocked(SUs.size()), B(SUs.size()), AdjK(SUs.size()) {
+ Node2Idx = new std::vector<int>(SUs.size());
+ unsigned Idx = 0;
+ for (const auto &NodeNum : Topo)
+ Node2Idx->at(NodeNum) = Idx++;
+ }
+
+ ~Circuits() { delete Node2Idx; }
+
+ /// Reset the data structures used in the circuit algorithm.
+ void reset() {
+ Stack.clear();
+ Blocked.reset();
+ B.assign(SUnits.size(), SmallPtrSet<SUnit *, 4>());
+ NumPaths = 0;
+ }
+
+ void createAdjacencyStructure(SwingSchedulerDAG *DAG);
+ bool circuit(int V, int S, NodeSetType &NodeSets, bool HasBackedge = false);
+ void unblock(int U);
+ };
+
+ struct CopyToPhiMutation : public ScheduleDAGMutation {
+ void apply(ScheduleDAGInstrs *DAG) override;
+ };
+
+public:
+ SwingSchedulerDAG(MachinePipeliner &P, MachineLoop &L, LiveIntervals &lis,
+ const RegisterClassInfo &rci, unsigned II)
+ : ScheduleDAGInstrs(*P.MF, P.MLI, false), Pass(P), Loop(L), LIS(lis),
+ RegClassInfo(rci), II_setByPragma(II), Topo(SUnits, &ExitSU) {
+ P.MF->getSubtarget().getSMSMutations(Mutations);
+ if (SwpEnableCopyToPhi)
+ Mutations.push_back(llvm::make_unique<CopyToPhiMutation>());
+ }
+
+ void schedule() override;
+ void finishBlock() override;
+
+ /// Return true if the loop kernel has been scheduled.
+ bool hasNewSchedule() { return Scheduled; }
+
+ /// Return the earliest time an instruction may be scheduled.
+ int getASAP(SUnit *Node) { return ScheduleInfo[Node->NodeNum].ASAP; }
+
+ /// Return the latest time an instruction my be scheduled.
+ int getALAP(SUnit *Node) { return ScheduleInfo[Node->NodeNum].ALAP; }
+
+ /// The mobility function, which the number of slots in which
+ /// an instruction may be scheduled.
+ int getMOV(SUnit *Node) { return getALAP(Node) - getASAP(Node); }
+
+ /// The depth, in the dependence graph, for a node.
+ unsigned getDepth(SUnit *Node) { return Node->getDepth(); }
+
+ /// The maximum unweighted length of a path from an arbitrary node to the
+ /// given node in which each edge has latency 0
+ int getZeroLatencyDepth(SUnit *Node) {
+ return ScheduleInfo[Node->NodeNum].ZeroLatencyDepth;
+ }
+
+ /// The height, in the dependence graph, for a node.
+ unsigned getHeight(SUnit *Node) { return Node->getHeight(); }
+
+ /// The maximum unweighted length of a path from the given node to an
+ /// arbitrary node in which each edge has latency 0
+ int getZeroLatencyHeight(SUnit *Node) {
+ return ScheduleInfo[Node->NodeNum].ZeroLatencyHeight;
+ }
+
+ /// Return true if the dependence is a back-edge in the data dependence graph.
+ /// Since the DAG doesn't contain cycles, we represent a cycle in the graph
+ /// using an anti dependence from a Phi to an instruction.
+ bool isBackedge(SUnit *Source, const SDep &Dep) {
+ if (Dep.getKind() != SDep::Anti)
+ return false;
+ return Source->getInstr()->isPHI() || Dep.getSUnit()->getInstr()->isPHI();
+ }
+
+ bool isLoopCarriedDep(SUnit *Source, const SDep &Dep, bool isSucc = true);
+
+ /// The distance function, which indicates that operation V of iteration I
+ /// depends on operations U of iteration I-distance.
+ unsigned getDistance(SUnit *U, SUnit *V, const SDep &Dep) {
+ // Instructions that feed a Phi have a distance of 1. Computing larger
+ // values for arrays requires data dependence information.
+ if (V->getInstr()->isPHI() && Dep.getKind() == SDep::Anti)
+ return 1;
+ return 0;
+ }
+
+ void applyInstrChange(MachineInstr *MI, SMSchedule &Schedule);
+
+ void fixupRegisterOverlaps(std::deque<SUnit *> &Instrs);
+
+ /// Return the new base register that was stored away for the changed
+ /// instruction.
+ unsigned getInstrBaseReg(SUnit *SU) {
+ DenseMap<SUnit *, std::pair<unsigned, int64_t>>::iterator It =
+ InstrChanges.find(SU);
+ if (It != InstrChanges.end())
+ return It->second.first;
+ return 0;
+ }
+
+ void addMutation(std::unique_ptr<ScheduleDAGMutation> Mutation) {
+ Mutations.push_back(std::move(Mutation));
+ }
+
+ static bool classof(const ScheduleDAGInstrs *DAG) { return true; }
+
+private:
+ void addLoopCarriedDependences(AliasAnalysis *AA);
+ void updatePhiDependences();
+ void changeDependences();
+ unsigned calculateResMII();
+ unsigned calculateRecMII(NodeSetType &RecNodeSets);
+ void findCircuits(NodeSetType &NodeSets);
+ void fuseRecs(NodeSetType &NodeSets);
+ void removeDuplicateNodes(NodeSetType &NodeSets);
+ void computeNodeFunctions(NodeSetType &NodeSets);
+ void registerPressureFilter(NodeSetType &NodeSets);
+ void colocateNodeSets(NodeSetType &NodeSets);
+ void checkNodeSets(NodeSetType &NodeSets);
+ void groupRemainingNodes(NodeSetType &NodeSets);
+ void addConnectedNodes(SUnit *SU, NodeSet &NewSet,
+ SetVector<SUnit *> &NodesAdded);
+ void computeNodeOrder(NodeSetType &NodeSets);
+ void checkValidNodeOrder(const NodeSetType &Circuits) const;
+ bool schedulePipeline(SMSchedule &Schedule);
+ void generatePipelinedLoop(SMSchedule &Schedule);
+ void generateProlog(SMSchedule &Schedule, unsigned LastStage,
+ MachineBasicBlock *KernelBB, ValueMapTy *VRMap,
+ MBBVectorTy &PrologBBs);
+ void generateEpilog(SMSchedule &Schedule, unsigned LastStage,
+ MachineBasicBlock *KernelBB, ValueMapTy *VRMap,
+ MBBVectorTy &EpilogBBs, MBBVectorTy &PrologBBs);
+ void generateExistingPhis(MachineBasicBlock *NewBB, MachineBasicBlock *BB1,
+ MachineBasicBlock *BB2, MachineBasicBlock *KernelBB,
+ SMSchedule &Schedule, ValueMapTy *VRMap,
+ InstrMapTy &InstrMap, unsigned LastStageNum,
+ unsigned CurStageNum, bool IsLast);
+ void generatePhis(MachineBasicBlock *NewBB, MachineBasicBlock *BB1,
+ MachineBasicBlock *BB2, MachineBasicBlock *KernelBB,
+ SMSchedule &Schedule, ValueMapTy *VRMap,
+ InstrMapTy &InstrMap, unsigned LastStageNum,
+ unsigned CurStageNum, bool IsLast);
+ void removeDeadInstructions(MachineBasicBlock *KernelBB,
+ MBBVectorTy &EpilogBBs);
+ void splitLifetimes(MachineBasicBlock *KernelBB, MBBVectorTy &EpilogBBs,
+ SMSchedule &Schedule);
+ void addBranches(MBBVectorTy &PrologBBs, MachineBasicBlock *KernelBB,
+ MBBVectorTy &EpilogBBs, SMSchedule &Schedule,
+ ValueMapTy *VRMap);
+ bool computeDelta(MachineInstr &MI, unsigned &Delta);
+ void updateMemOperands(MachineInstr &NewMI, MachineInstr &OldMI,
+ unsigned Num);
+ MachineInstr *cloneInstr(MachineInstr *OldMI, unsigned CurStageNum,
+ unsigned InstStageNum);
+ MachineInstr *cloneAndChangeInstr(MachineInstr *OldMI, unsigned CurStageNum,
+ unsigned InstStageNum,
+ SMSchedule &Schedule);
+ void updateInstruction(MachineInstr *NewMI, bool LastDef,
+ unsigned CurStageNum, unsigned InstrStageNum,
+ SMSchedule &Schedule, ValueMapTy *VRMap);
+ MachineInstr *findDefInLoop(unsigned Reg);
+ unsigned getPrevMapVal(unsigned StageNum, unsigned PhiStage, unsigned LoopVal,
+ unsigned LoopStage, ValueMapTy *VRMap,
+ MachineBasicBlock *BB);
+ void rewritePhiValues(MachineBasicBlock *NewBB, unsigned StageNum,
+ SMSchedule &Schedule, ValueMapTy *VRMap,
+ InstrMapTy &InstrMap);
+ void rewriteScheduledInstr(MachineBasicBlock *BB, SMSchedule &Schedule,
+ InstrMapTy &InstrMap, unsigned CurStageNum,
+ unsigned PhiNum, MachineInstr *Phi,
+ unsigned OldReg, unsigned NewReg,
+ unsigned PrevReg = 0);
+ bool canUseLastOffsetValue(MachineInstr *MI, unsigned &BasePos,
+ unsigned &OffsetPos, unsigned &NewBase,
+ int64_t &NewOffset);
+ void postprocessDAG();
+ /// Set the Minimum Initiation Interval for this schedule attempt.
+ void setMII(unsigned ResMII, unsigned RecMII);
+ /// Set the Maximum Initiation Interval for this schedule attempt.
+ void setMAX_II();
+};
+
+/// A NodeSet contains a set of SUnit DAG nodes with additional information
+/// that assigns a priority to the set.
+class NodeSet {
+ SetVector<SUnit *> Nodes;
+ bool HasRecurrence = false;
+ unsigned RecMII = 0;
+ int MaxMOV = 0;
+ unsigned MaxDepth = 0;
+ unsigned Colocate = 0;
+ SUnit *ExceedPressure = nullptr;
+ unsigned Latency = 0;
+
+public:
+ using iterator = SetVector<SUnit *>::const_iterator;
+
+ NodeSet() = default;
+ NodeSet(iterator S, iterator E) : Nodes(S, E), HasRecurrence(true) {
+ Latency = 0;
+ for (unsigned i = 0, e = Nodes.size(); i < e; ++i)
+ for (const SDep &Succ : Nodes[i]->Succs)
+ if (Nodes.count(Succ.getSUnit()))
+ Latency += Succ.getLatency();
+ }
+
+ bool insert(SUnit *SU) { return Nodes.insert(SU); }
+
+ void insert(iterator S, iterator E) { Nodes.insert(S, E); }
+
+ template <typename UnaryPredicate> bool remove_if(UnaryPredicate P) {
+ return Nodes.remove_if(P);
+ }
+
+ unsigned count(SUnit *SU) const { return Nodes.count(SU); }
+
+ bool hasRecurrence() { return HasRecurrence; };
+
+ unsigned size() const { return Nodes.size(); }
+
+ bool empty() const { return Nodes.empty(); }
+
+ SUnit *getNode(unsigned i) const { return Nodes[i]; };
+
+ void setRecMII(unsigned mii) { RecMII = mii; };
+
+ void setColocate(unsigned c) { Colocate = c; };
+
+ void setExceedPressure(SUnit *SU) { ExceedPressure = SU; }
+
+ bool isExceedSU(SUnit *SU) { return ExceedPressure == SU; }
+
+ int compareRecMII(NodeSet &RHS) { return RecMII - RHS.RecMII; }
+
+ int getRecMII() { return RecMII; }
+
+ /// Summarize node functions for the entire node set.
+ void computeNodeSetInfo(SwingSchedulerDAG *SSD) {
+ for (SUnit *SU : *this) {
+ MaxMOV = std::max(MaxMOV, SSD->getMOV(SU));
+ MaxDepth = std::max(MaxDepth, SSD->getDepth(SU));
+ }
+ }
+
+ unsigned getLatency() { return Latency; }
+
+ unsigned getMaxDepth() { return MaxDepth; }
+
+ void clear() {
+ Nodes.clear();
+ RecMII = 0;
+ HasRecurrence = false;
+ MaxMOV = 0;
+ MaxDepth = 0;
+ Colocate = 0;
+ ExceedPressure = nullptr;
+ }
+
+ operator SetVector<SUnit *> &() { return Nodes; }
+
+ /// Sort the node sets by importance. First, rank them by recurrence MII,
+ /// then by mobility (least mobile done first), and finally by depth.
+ /// Each node set may contain a colocate value which is used as the first
+ /// tie breaker, if it's set.
+ bool operator>(const NodeSet &RHS) const {
+ if (RecMII == RHS.RecMII) {
+ if (Colocate != 0 && RHS.Colocate != 0 && Colocate != RHS.Colocate)
+ return Colocate < RHS.Colocate;
+ if (MaxMOV == RHS.MaxMOV)
+ return MaxDepth > RHS.MaxDepth;
+ return MaxMOV < RHS.MaxMOV;
+ }
+ return RecMII > RHS.RecMII;
+ }
+
+ bool operator==(const NodeSet &RHS) const {
+ return RecMII == RHS.RecMII && MaxMOV == RHS.MaxMOV &&
+ MaxDepth == RHS.MaxDepth;
+ }
+
+ bool operator!=(const NodeSet &RHS) const { return !operator==(RHS); }
+
+ iterator begin() { return Nodes.begin(); }
+ iterator end() { return Nodes.end(); }
+ void print(raw_ostream &os) const;
+
+#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
+ LLVM_DUMP_METHOD void dump() const;
+#endif
+};
+
+/// This class represents the scheduled code. The main data structure is a
+/// map from scheduled cycle to instructions. During scheduling, the
+/// data structure explicitly represents all stages/iterations. When
+/// the algorithm finshes, the schedule is collapsed into a single stage,
+/// which represents instructions from different loop iterations.
+///
+/// The SMS algorithm allows negative values for cycles, so the first cycle
+/// in the schedule is the smallest cycle value.
+class SMSchedule {
+private:
+ /// Map from execution cycle to instructions.
+ DenseMap<int, std::deque<SUnit *>> ScheduledInstrs;
+
+ /// Map from instruction to execution cycle.
+ std::map<SUnit *, int> InstrToCycle;
+
+ /// Map for each register and the max difference between its uses and def.
+ /// The first element in the pair is the max difference in stages. The
+ /// second is true if the register defines a Phi value and loop value is
+ /// scheduled before the Phi.
+ std::map<unsigned, std::pair<unsigned, bool>> RegToStageDiff;
+
+ /// Keep track of the first cycle value in the schedule. It starts
+ /// as zero, but the algorithm allows negative values.
+ int FirstCycle = 0;
+
+ /// Keep track of the last cycle value in the schedule.
+ int LastCycle = 0;
+
+ /// The initiation interval (II) for the schedule.
+ int InitiationInterval = 0;
+
+ /// Target machine information.
+ const TargetSubtargetInfo &ST;
+
+ /// Virtual register information.
+ MachineRegisterInfo &MRI;
+
+ std::unique_ptr<DFAPacketizer> Resources;
+
+public:
+ SMSchedule(MachineFunction *mf)
+ : ST(mf->getSubtarget()), MRI(mf->getRegInfo()),
+ Resources(ST.getInstrInfo()->CreateTargetScheduleState(ST)) {}
+
+ void reset() {
+ ScheduledInstrs.clear();
+ InstrToCycle.clear();
+ RegToStageDiff.clear();
+ FirstCycle = 0;
+ LastCycle = 0;
+ InitiationInterval = 0;
+ }
+
+ /// Set the initiation interval for this schedule.
+ void setInitiationInterval(int ii) { InitiationInterval = ii; }
+
+ /// Return the first cycle in the completed schedule. This
+ /// can be a negative value.
+ int getFirstCycle() const { return FirstCycle; }
+
+ /// Return the last cycle in the finalized schedule.
+ int getFinalCycle() const { return FirstCycle + InitiationInterval - 1; }
+
+ /// Return the cycle of the earliest scheduled instruction in the dependence
+ /// chain.
+ int earliestCycleInChain(const SDep &Dep);
+
+ /// Return the cycle of the latest scheduled instruction in the dependence
+ /// chain.
+ int latestCycleInChain(const SDep &Dep);
+
+ void computeStart(SUnit *SU, int *MaxEarlyStart, int *MinLateStart,
+ int *MinEnd, int *MaxStart, int II, SwingSchedulerDAG *DAG);
+ bool insert(SUnit *SU, int StartCycle, int EndCycle, int II);
+
+ /// Iterators for the cycle to instruction map.
+ using sched_iterator = DenseMap<int, std::deque<SUnit *>>::iterator;
+ using const_sched_iterator =
+ DenseMap<int, std::deque<SUnit *>>::const_iterator;
+
+ /// Return true if the instruction is scheduled at the specified stage.
+ bool isScheduledAtStage(SUnit *SU, unsigned StageNum) {
+ return (stageScheduled(SU) == (int)StageNum);
+ }
+
+ /// Return the stage for a scheduled instruction. Return -1 if
+ /// the instruction has not been scheduled.
+ int stageScheduled(SUnit *SU) const {
+ std::map<SUnit *, int>::const_iterator it = InstrToCycle.find(SU);
+ if (it == InstrToCycle.end())
+ return -1;
+ return (it->second - FirstCycle) / InitiationInterval;
+ }
+
+ /// Return the cycle for a scheduled instruction. This function normalizes
+ /// the first cycle to be 0.
+ unsigned cycleScheduled(SUnit *SU) const {
+ std::map<SUnit *, int>::const_iterator it = InstrToCycle.find(SU);
+ assert(it != InstrToCycle.end() && "Instruction hasn't been scheduled.");
+ return (it->second - FirstCycle) % InitiationInterval;
+ }
+
+ /// Return the maximum stage count needed for this schedule.
+ unsigned getMaxStageCount() {
+ return (LastCycle - FirstCycle) / InitiationInterval;
+ }
+
+ /// Return the max. number of stages/iterations that can occur between a
+ /// register definition and its uses.
+ unsigned getStagesForReg(int Reg, unsigned CurStage) {
+ std::pair<unsigned, bool> Stages = RegToStageDiff[Reg];
+ if (CurStage > getMaxStageCount() && Stages.first == 0 && Stages.second)
+ return 1;
+ return Stages.first;
+ }
+
+ /// The number of stages for a Phi is a little different than other
+ /// instructions. The minimum value computed in RegToStageDiff is 1
+ /// because we assume the Phi is needed for at least 1 iteration.
+ /// This is not the case if the loop value is scheduled prior to the
+ /// Phi in the same stage. This function returns the number of stages
+ /// or iterations needed between the Phi definition and any uses.
+ unsigned getStagesForPhi(int Reg) {
+ std::pair<unsigned, bool> Stages = RegToStageDiff[Reg];
+ if (Stages.second)
+ return Stages.first;
+ return Stages.first - 1;
+ }
+
+ /// Return the instructions that are scheduled at the specified cycle.
+ std::deque<SUnit *> &getInstructions(int cycle) {
+ return ScheduledInstrs[cycle];
+ }
+
+ bool isValidSchedule(SwingSchedulerDAG *SSD);
+ void finalizeSchedule(SwingSchedulerDAG *SSD);
+ void orderDependence(SwingSchedulerDAG *SSD, SUnit *SU,
+ std::deque<SUnit *> &Insts);
+ bool isLoopCarried(SwingSchedulerDAG *SSD, MachineInstr &Phi);
+ bool isLoopCarriedDefOfUse(SwingSchedulerDAG *SSD, MachineInstr *Def,
+ MachineOperand &MO);
+ void print(raw_ostream &os) const;
+ void dump() const;
+};
+
+} // end namespace llvm
+
+#endif // LLVM_LIB_CODEGEN_MACHINEPIPELINER_H
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachinePostDominators.h b/linux-x64/clang/include/llvm/CodeGen/MachinePostDominators.h
index c6a4159..b67e6b5 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachinePostDominators.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachinePostDominators.h
@@ -1,9 +1,8 @@
-//=- llvm/CodeGen/MachineDominators.h ----------------------------*- C++ -*-==//
+//===- llvm/CodeGen/MachinePostDominators.h ----------------------*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineRegionInfo.h b/linux-x64/clang/include/llvm/CodeGen/MachineRegionInfo.h
index 8394b58..6d9fb9b 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineRegionInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineRegionInfo.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/MachineRegionInfo.h -------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineRegisterInfo.h b/linux-x64/clang/include/llvm/CodeGen/MachineRegisterInfo.h
index a6836a5..d25cd98 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineRegisterInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineRegisterInfo.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/MachineRegisterInfo.h -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -689,15 +688,14 @@
unsigned MinNumRegs = 0);
/// Constrain the register class or the register bank of the virtual register
- /// \p Reg to be a common subclass and a common bank of both registers
- /// provided respectively. Do nothing if any of the attributes (classes,
- /// banks, or low-level types) of the registers are deemed incompatible, or if
- /// the resulting register will have a class smaller than before and of size
- /// less than \p MinNumRegs. Return true if such register attributes exist,
- /// false otherwise.
+ /// \p Reg (and low-level type) to be a common subclass or a common bank of
+ /// both registers provided respectively (and a common low-level type). Do
+ /// nothing if any of the attributes (classes, banks, or low-level types) of
+ /// the registers are deemed incompatible, or if the resulting register will
+ /// have a class smaller than before and of size less than \p MinNumRegs.
+ /// Return true if such register attributes exist, false otherwise.
///
- /// \note Assumes that each register has either a low-level type or a class
- /// assigned, but not both. Use this method instead of constrainRegClass and
+ /// \note Use this method instead of constrainRegClass and
/// RegisterBankInfo::constrainGenericRegister everywhere but SelectionDAG
/// ISel / FastISel and GlobalISel's InstructionSelect pass respectively.
bool constrainRegAttrs(unsigned Reg, unsigned ConstrainingReg,
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineSSAUpdater.h b/linux-x64/clang/include/llvm/CodeGen/MachineSSAUpdater.h
index 5e91246..0319ec7 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineSSAUpdater.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineSSAUpdater.h
@@ -1,9 +1,8 @@
//===- MachineSSAUpdater.h - Unstructured SSA Update Tool -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineScheduler.h b/linux-x64/clang/include/llvm/CodeGen/MachineScheduler.h
index 6003b1b..7057998 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineScheduler.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineScheduler.h
@@ -1,9 +1,8 @@
//===- MachineScheduler.h - MachineInstr Scheduling Pass --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -132,17 +131,19 @@
/// MachineSchedRegistry provides a selection of available machine instruction
/// schedulers.
-class MachineSchedRegistry : public MachinePassRegistryNode {
+class MachineSchedRegistry
+ : public MachinePassRegistryNode<
+ ScheduleDAGInstrs *(*)(MachineSchedContext *)> {
public:
using ScheduleDAGCtor = ScheduleDAGInstrs *(*)(MachineSchedContext *);
// RegisterPassParser requires a (misnamed) FunctionPassCtor type.
using FunctionPassCtor = ScheduleDAGCtor;
- static MachinePassRegistry Registry;
+ static MachinePassRegistry<ScheduleDAGCtor> Registry;
MachineSchedRegistry(const char *N, const char *D, ScheduleDAGCtor C)
- : MachinePassRegistryNode(N, D, (MachinePassCtor)C) {
+ : MachinePassRegistryNode(N, D, C) {
Registry.Add(this);
}
@@ -158,7 +159,7 @@
return (MachineSchedRegistry *)Registry.getList();
}
- static void setListener(MachinePassRegistryListener *L) {
+ static void setListener(MachinePassRegistryListener<FunctionPassCtor> *L) {
Registry.setListener(L);
}
};
@@ -792,7 +793,7 @@
/// Represent the type of SchedCandidate found within a single queue.
/// pickNodeBidirectional depends on these listed by decreasing priority.
enum CandReason : uint8_t {
- NoCand, Only1, PhysRegCopy, RegExcess, RegCritical, Stall, Cluster, Weak,
+ NoCand, Only1, PhysReg, RegExcess, RegCritical, Stall, Cluster, Weak,
RegMax, ResourceReduce, ResourceDemand, BotHeightReduce, BotPathReduce,
TopDepthReduce, TopPathReduce, NextDefUse, NodeOrder};
@@ -926,7 +927,7 @@
const TargetRegisterInfo *TRI,
const MachineFunction &MF);
unsigned getWeakLeft(const SUnit *SU, bool isTop);
-int biasPhysRegCopy(const SUnit *SU, bool isTop);
+int biasPhysReg(const SUnit *SU, bool isTop);
/// GenericScheduler shrinks the unscheduled zone using heuristics to balance
/// the schedule.
@@ -1004,7 +1005,7 @@
const RegPressureTracker &RPTracker,
SchedCandidate &Candidate);
- void reschedulePhysRegCopies(SUnit *SU, bool isTop);
+ void reschedulePhysReg(SUnit *SU, bool isTop);
};
/// PostGenericScheduler - Interface to the scheduling algorithm used by
diff --git a/linux-x64/clang/include/llvm/CodeGen/MachineTraceMetrics.h b/linux-x64/clang/include/llvm/CodeGen/MachineTraceMetrics.h
index 9d8db39..0259895 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MachineTraceMetrics.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MachineTraceMetrics.h
@@ -1,9 +1,8 @@
//===- lib/CodeGen/MachineTraceMetrics.h - Super-scalar metrics -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/MacroFusion.h b/linux-x64/clang/include/llvm/CodeGen/MacroFusion.h
index a77226d..3a140fe 100644
--- a/linux-x64/clang/include/llvm/CodeGen/MacroFusion.h
+++ b/linux-x64/clang/include/llvm/CodeGen/MacroFusion.h
@@ -1,9 +1,8 @@
//===- MacroFusion.h - Macro Fusion -----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/PBQP/CostAllocator.h b/linux-x64/clang/include/llvm/CodeGen/PBQP/CostAllocator.h
index bde451a..0d6d8a3 100644
--- a/linux-x64/clang/include/llvm/CodeGen/PBQP/CostAllocator.h
+++ b/linux-x64/clang/include/llvm/CodeGen/PBQP/CostAllocator.h
@@ -1,9 +1,8 @@
//===- CostAllocator.h - PBQP Cost Allocator --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/PBQP/Graph.h b/linux-x64/clang/include/llvm/CodeGen/PBQP/Graph.h
index a6d88b0..c2cd6da 100644
--- a/linux-x64/clang/include/llvm/CodeGen/PBQP/Graph.h
+++ b/linux-x64/clang/include/llvm/CodeGen/PBQP/Graph.h
@@ -1,9 +1,8 @@
//===- Graph.h - PBQP Graph -------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/PBQP/Math.h b/linux-x64/clang/include/llvm/CodeGen/PBQP/Math.h
index d1432a3..8b014cc 100644
--- a/linux-x64/clang/include/llvm/CodeGen/PBQP/Math.h
+++ b/linux-x64/clang/include/llvm/CodeGen/PBQP/Math.h
@@ -1,9 +1,8 @@
//===- Math.h - PBQP Vector and Matrix classes ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/CodeGen/PBQP/ReductionRules.h b/linux-x64/clang/include/llvm/CodeGen/PBQP/ReductionRules.h
index 21b9902..51822d0 100644
--- a/linux-x64/clang/include/llvm/CodeGen/PBQP/ReductionRules.h
+++ b/linux-x64/clang/include/llvm/CodeGen/PBQP/ReductionRules.h
@@ -1,9 +1,8 @@
//===- ReductionRules.h - Reduction Rules -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/PBQP/Solution.h b/linux-x64/clang/include/llvm/CodeGen/PBQP/Solution.h
index 4d4379f..d5b1474 100644
--- a/linux-x64/clang/include/llvm/CodeGen/PBQP/Solution.h
+++ b/linux-x64/clang/include/llvm/CodeGen/PBQP/Solution.h
@@ -1,9 +1,8 @@
//===- Solution.h - PBQP Solution -------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/PBQPRAConstraint.h b/linux-x64/clang/include/llvm/CodeGen/PBQPRAConstraint.h
index 995467d..876ab97 100644
--- a/linux-x64/clang/include/llvm/CodeGen/PBQPRAConstraint.h
+++ b/linux-x64/clang/include/llvm/CodeGen/PBQPRAConstraint.h
@@ -1,9 +1,8 @@
-//===- RegAllocPBQP.h -------------------------------------------*- C++ -*-===//
+//===- llvm/CodeGen/PBQPRAConstraint.h --------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/ParallelCG.h b/linux-x64/clang/include/llvm/CodeGen/ParallelCG.h
index dbf09ea..a44715d 100644
--- a/linux-x64/clang/include/llvm/CodeGen/ParallelCG.h
+++ b/linux-x64/clang/include/llvm/CodeGen/ParallelCG.h
@@ -1,9 +1,8 @@
//===-- llvm/CodeGen/ParallelCG.h - Parallel code generation ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/Passes.h b/linux-x64/clang/include/llvm/CodeGen/Passes.h
index cb12b14..c59473a 100644
--- a/linux-x64/clang/include/llvm/CodeGen/Passes.h
+++ b/linux-x64/clang/include/llvm/CodeGen/Passes.h
@@ -1,9 +1,8 @@
//===-- Passes.h - Target independent code generation passes ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -379,14 +378,20 @@
///
FunctionPass *createInterleavedAccessPass();
+ /// InterleavedLoadCombines Pass - This pass identifies interleaved loads and
+ /// combines them into wide loads detectable by InterleavedAccessPass
+ ///
+ FunctionPass *createInterleavedLoadCombinePass();
+
/// LowerEmuTLS - This pass generates __emutls_[vt].xyz variables for all
/// TLS variables for the emulated TLS model.
///
ModulePass *createLowerEmuTLSPass();
- /// This pass lowers the \@llvm.load.relative intrinsic to instructions.
- /// This is unsafe to do earlier because a pass may combine the constant
- /// initializer into the load, which may result in an overflowing evaluation.
+ /// This pass lowers the \@llvm.load.relative and \@llvm.objc.* intrinsics to
+ /// instructions. This is unsafe to do earlier because a pass may combine the
+ /// constant initializer into the load, which may result in an overflowing
+ /// evaluation.
ModulePass *createPreISelIntrinsicLoweringPass();
/// GlobalMerge - This pass merges internal (by default) globals into structs
diff --git a/linux-x64/clang/include/llvm/CodeGen/PreISelIntrinsicLowering.h b/linux-x64/clang/include/llvm/CodeGen/PreISelIntrinsicLowering.h
index 7a007eb..73d7d77 100644
--- a/linux-x64/clang/include/llvm/CodeGen/PreISelIntrinsicLowering.h
+++ b/linux-x64/clang/include/llvm/CodeGen/PreISelIntrinsicLowering.h
@@ -1,13 +1,13 @@
//===- PreISelIntrinsicLowering.h - Pre-ISel intrinsic lowering pass ------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
-// This pass implements IR lowering for the llvm.load.relative intrinsic.
+// This pass implements IR lowering for the llvm.load.relative and llvm.objc.*
+// intrinsics.
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CODEGEN_PREISELINTRINSICLOWERING_H
diff --git a/linux-x64/clang/include/llvm/CodeGen/PseudoSourceValue.h b/linux-x64/clang/include/llvm/CodeGen/PseudoSourceValue.h
index f66191b..4920f23 100644
--- a/linux-x64/clang/include/llvm/CodeGen/PseudoSourceValue.h
+++ b/linux-x64/clang/include/llvm/CodeGen/PseudoSourceValue.h
@@ -1,9 +1,8 @@
//===-- llvm/CodeGen/PseudoSourceValue.h ------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/ReachingDefAnalysis.h b/linux-x64/clang/include/llvm/CodeGen/ReachingDefAnalysis.h
index b21b745..a599fb6 100644
--- a/linux-x64/clang/include/llvm/CodeGen/ReachingDefAnalysis.h
+++ b/linux-x64/clang/include/llvm/CodeGen/ReachingDefAnalysis.h
@@ -1,15 +1,14 @@
//==--- llvm/CodeGen/ReachingDefAnalysis.h - Reaching Def Analysis -*- C++ -*---==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
/// \file Reaching Defs Analysis pass.
///
-/// This pass tracks for each instruction what is the “closest” reaching def of
+/// This pass tracks for each instruction what is the "closest" reaching def of
/// a given register. It is used by BreakFalseDeps (for clearance calculation)
/// and ExecutionDomainFix (for arbitrating conflicting domains).
///
diff --git a/linux-x64/clang/include/llvm/CodeGen/RegAllocPBQP.h b/linux-x64/clang/include/llvm/CodeGen/RegAllocPBQP.h
index ba97630..f7f9224 100644
--- a/linux-x64/clang/include/llvm/CodeGen/RegAllocPBQP.h
+++ b/linux-x64/clang/include/llvm/CodeGen/RegAllocPBQP.h
@@ -1,9 +1,8 @@
//===- RegAllocPBQP.h -------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/RegAllocRegistry.h b/linux-x64/clang/include/llvm/CodeGen/RegAllocRegistry.h
index 481747d..7077aa3 100644
--- a/linux-x64/clang/include/llvm/CodeGen/RegAllocRegistry.h
+++ b/linux-x64/clang/include/llvm/CodeGen/RegAllocRegistry.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/RegAllocRegistry.h --------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -26,14 +25,14 @@
/// RegisterRegAlloc class - Track the registration of register allocators.
///
//===----------------------------------------------------------------------===//
-class RegisterRegAlloc : public MachinePassRegistryNode {
+class RegisterRegAlloc : public MachinePassRegistryNode<FunctionPass *(*)()> {
public:
using FunctionPassCtor = FunctionPass *(*)();
- static MachinePassRegistry Registry;
+ static MachinePassRegistry<FunctionPassCtor> Registry;
RegisterRegAlloc(const char *N, const char *D, FunctionPassCtor C)
- : MachinePassRegistryNode(N, D, (MachinePassCtor)C) {
+ : MachinePassRegistryNode(N, D, C) {
Registry.Add(this);
}
@@ -48,15 +47,11 @@
return (RegisterRegAlloc *)Registry.getList();
}
- static FunctionPassCtor getDefault() {
- return (FunctionPassCtor)Registry.getDefault();
- }
+ static FunctionPassCtor getDefault() { return Registry.getDefault(); }
- static void setDefault(FunctionPassCtor C) {
- Registry.setDefault((MachinePassCtor)C);
- }
+ static void setDefault(FunctionPassCtor C) { Registry.setDefault(C); }
- static void setListener(MachinePassRegistryListener *L) {
+ static void setListener(MachinePassRegistryListener<FunctionPassCtor> *L) {
Registry.setListener(L);
}
};
diff --git a/linux-x64/clang/include/llvm/CodeGen/RegisterClassInfo.h b/linux-x64/clang/include/llvm/CodeGen/RegisterClassInfo.h
index 97113c5..14af5c4 100644
--- a/linux-x64/clang/include/llvm/CodeGen/RegisterClassInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/RegisterClassInfo.h
@@ -1,9 +1,8 @@
//===- RegisterClassInfo.h - Dynamic Register Class Info --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/RegisterPressure.h b/linux-x64/clang/include/llvm/CodeGen/RegisterPressure.h
index 79054b9..5bbaa03 100644
--- a/linux-x64/clang/include/llvm/CodeGen/RegisterPressure.h
+++ b/linux-x64/clang/include/llvm/CodeGen/RegisterPressure.h
@@ -1,9 +1,8 @@
//===- RegisterPressure.h - Dynamic Register Pressure -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -132,10 +131,6 @@
}
};
-template <> struct isPodLike<PressureChange> {
- static const bool value = true;
-};
-
/// List of PressureChanges in order of increasing, unique PSetID.
///
/// Use a small fixed number, because we can fit more PressureChanges in an
diff --git a/linux-x64/clang/include/llvm/CodeGen/RegisterScavenging.h b/linux-x64/clang/include/llvm/CodeGen/RegisterScavenging.h
index b6bd028..478ea38 100644
--- a/linux-x64/clang/include/llvm/CodeGen/RegisterScavenging.h
+++ b/linux-x64/clang/include/llvm/CodeGen/RegisterScavenging.h
@@ -1,9 +1,8 @@
//===- RegisterScavenging.h - Machine register scavenging -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/RegisterUsageInfo.h b/linux-x64/clang/include/llvm/CodeGen/RegisterUsageInfo.h
index efd175e..3355455 100644
--- a/linux-x64/clang/include/llvm/CodeGen/RegisterUsageInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/RegisterUsageInfo.h
@@ -1,9 +1,8 @@
//==- RegisterUsageInfo.h - Register Usage Informartion Storage --*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -29,7 +28,7 @@
namespace llvm {
class Function;
-class TargetMachine;
+class LLVMTargetMachine;
class PhysicalRegisterUsageInfo : public ImmutablePass {
public:
@@ -41,7 +40,7 @@
}
/// Set TargetMachine which is used to print analysis.
- void setTargetMachine(const TargetMachine &TM);
+ void setTargetMachine(const LLVMTargetMachine &TM);
bool doInitialization(Module &M) override;
@@ -63,7 +62,7 @@
/// and 1 means content of register will be preserved around function call.
DenseMap<const Function *, std::vector<uint32_t>> RegMasks;
- const TargetMachine *TM;
+ const LLVMTargetMachine *TM;
};
} // end namespace llvm
diff --git a/linux-x64/clang/include/llvm/CodeGen/ResourcePriorityQueue.h b/linux-x64/clang/include/llvm/CodeGen/ResourcePriorityQueue.h
index 8d582ee..81587a3 100644
--- a/linux-x64/clang/include/llvm/CodeGen/ResourcePriorityQueue.h
+++ b/linux-x64/clang/include/llvm/CodeGen/ResourcePriorityQueue.h
@@ -1,9 +1,8 @@
//===----- ResourcePriorityQueue.h - A DFA-oriented priority queue -------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/RuntimeLibcalls.h b/linux-x64/clang/include/llvm/CodeGen/RuntimeLibcalls.h
index 28567a1..f71f39e 100644
--- a/linux-x64/clang/include/llvm/CodeGen/RuntimeLibcalls.h
+++ b/linux-x64/clang/include/llvm/CodeGen/RuntimeLibcalls.h
@@ -1,9 +1,8 @@
//===-- CodeGen/RuntimeLibcalls.h - Runtime Library Calls -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/SDNodeProperties.td b/linux-x64/clang/include/llvm/CodeGen/SDNodeProperties.td
index 83bbab2..d25e0bd 100644
--- a/linux-x64/clang/include/llvm/CodeGen/SDNodeProperties.td
+++ b/linux-x64/clang/include/llvm/CodeGen/SDNodeProperties.td
@@ -1,9 +1,8 @@
//===- SDNodeProperties.td - Common code for DAG isels ---*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/CodeGen/ScheduleDAG.h b/linux-x64/clang/include/llvm/CodeGen/ScheduleDAG.h
index f2b0727..68614dd 100644
--- a/linux-x64/clang/include/llvm/CodeGen/ScheduleDAG.h
+++ b/linux-x64/clang/include/llvm/CodeGen/ScheduleDAG.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/ScheduleDAG.h - Common Base Class -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -33,15 +32,15 @@
namespace llvm {
template<class Graph> class GraphWriter;
+class LLVMTargetMachine;
class MachineFunction;
class MachineRegisterInfo;
class MCInstrDesc;
struct MCSchedClassDesc;
-class ScheduleDAG;
class SDNode;
class SUnit;
+class ScheduleDAG;
class TargetInstrInfo;
-class TargetMachine;
class TargetRegisterClass;
class TargetRegisterInfo;
@@ -239,9 +238,6 @@
void dump(const TargetRegisterInfo *TRI = nullptr) const;
};
- template <>
- struct isPodLike<SDep> { static const bool value = true; };
-
/// Scheduling unit. This is a node in the scheduling DAG.
class SUnit {
private:
@@ -558,7 +554,7 @@
class ScheduleDAG {
public:
- const TargetMachine &TM; ///< Target processor
+ const LLVMTargetMachine &TM; ///< Target processor
const TargetInstrInfo *TII; ///< Target instruction information
const TargetRegisterInfo *TRI; ///< Target processor register info
MachineFunction &MF; ///< Machine function
diff --git a/linux-x64/clang/include/llvm/CodeGen/ScheduleDAGInstrs.h b/linux-x64/clang/include/llvm/CodeGen/ScheduleDAGInstrs.h
index daad181..fa7f886 100644
--- a/linux-x64/clang/include/llvm/CodeGen/ScheduleDAGInstrs.h
+++ b/linux-x64/clang/include/llvm/CodeGen/ScheduleDAGInstrs.h
@@ -1,9 +1,8 @@
//===- ScheduleDAGInstrs.h - MachineInstr Scheduling ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/ScheduleDAGMutation.h b/linux-x64/clang/include/llvm/CodeGen/ScheduleDAGMutation.h
index 5c23642..d1dd728 100644
--- a/linux-x64/clang/include/llvm/CodeGen/ScheduleDAGMutation.h
+++ b/linux-x64/clang/include/llvm/CodeGen/ScheduleDAGMutation.h
@@ -1,9 +1,8 @@
//===- ScheduleDAGMutation.h - MachineInstr Scheduling ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/ScheduleDFS.h b/linux-x64/clang/include/llvm/CodeGen/ScheduleDFS.h
index 3ecc033..d60deab 100644
--- a/linux-x64/clang/include/llvm/CodeGen/ScheduleDFS.h
+++ b/linux-x64/clang/include/llvm/CodeGen/ScheduleDFS.h
@@ -1,9 +1,8 @@
-//===- ScheduleDAGILP.h - ILP metric for ScheduleDAGInstrs ------*- C++ -*-===//
+//===- ScheduleDFS.h - ILP metric for ScheduleDAGInstrs ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/ScheduleHazardRecognizer.h b/linux-x64/clang/include/llvm/CodeGen/ScheduleHazardRecognizer.h
index ace4a2d..37590f4 100644
--- a/linux-x64/clang/include/llvm/CodeGen/ScheduleHazardRecognizer.h
+++ b/linux-x64/clang/include/llvm/CodeGen/ScheduleHazardRecognizer.h
@@ -1,9 +1,8 @@
//=- llvm/CodeGen/ScheduleHazardRecognizer.h - Scheduling Support -*- C++ -*-=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/SchedulerRegistry.h b/linux-x64/clang/include/llvm/CodeGen/SchedulerRegistry.h
index badf927..0ccfaaf 100644
--- a/linux-x64/clang/include/llvm/CodeGen/SchedulerRegistry.h
+++ b/linux-x64/clang/include/llvm/CodeGen/SchedulerRegistry.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/SchedulerRegistry.h -------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -29,16 +28,19 @@
class ScheduleDAGSDNodes;
class SelectionDAGISel;
-class RegisterScheduler : public MachinePassRegistryNode {
+class RegisterScheduler
+ : public MachinePassRegistryNode<
+ ScheduleDAGSDNodes *(*)(SelectionDAGISel *, CodeGenOpt::Level)> {
public:
using FunctionPassCtor = ScheduleDAGSDNodes *(*)(SelectionDAGISel*,
CodeGenOpt::Level);
- static MachinePassRegistry Registry;
+ static MachinePassRegistry<FunctionPassCtor> Registry;
RegisterScheduler(const char *N, const char *D, FunctionPassCtor C)
- : MachinePassRegistryNode(N, D, (MachinePassCtor)C)
- { Registry.Add(this); }
+ : MachinePassRegistryNode(N, D, C) {
+ Registry.Add(this);
+ }
~RegisterScheduler() { Registry.Remove(this); }
@@ -51,7 +53,7 @@
return (RegisterScheduler *)Registry.getList();
}
- static void setListener(MachinePassRegistryListener *L) {
+ static void setListener(MachinePassRegistryListener<FunctionPassCtor> *L) {
Registry.setListener(L);
}
};
diff --git a/linux-x64/clang/include/llvm/CodeGen/ScoreboardHazardRecognizer.h b/linux-x64/clang/include/llvm/CodeGen/ScoreboardHazardRecognizer.h
index 3f75d10..ac67f30 100644
--- a/linux-x64/clang/include/llvm/CodeGen/ScoreboardHazardRecognizer.h
+++ b/linux-x64/clang/include/llvm/CodeGen/ScoreboardHazardRecognizer.h
@@ -1,9 +1,8 @@
//=- llvm/CodeGen/ScoreboardHazardRecognizer.h - Schedule Support -*- C++ -*-=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/SelectionDAG.h b/linux-x64/clang/include/llvm/CodeGen/SelectionDAG.h
index 973a3dd..dfd1d49 100644
--- a/linux-x64/clang/include/llvm/CodeGen/SelectionDAG.h
+++ b/linux-x64/clang/include/llvm/CodeGen/SelectionDAG.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/SelectionDAG.h - InstSelection DAG ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -308,6 +307,9 @@
: DAGUpdateListener(DAG), Callback(std::move(Callback)) {}
void NodeDeleted(SDNode *N, SDNode *E) override { Callback(N, E); }
+
+ private:
+ virtual void anchor();
};
/// When true, additional steps are taken to
@@ -786,24 +788,6 @@
/// value assuming it was the smaller SrcTy value.
SDValue getZeroExtendInReg(SDValue Op, const SDLoc &DL, EVT VT);
- /// Return an operation which will any-extend the low lanes of the operand
- /// into the specified vector type. For example,
- /// this can convert a v16i8 into a v4i32 by any-extending the low four
- /// lanes of the operand from i8 to i32.
- SDValue getAnyExtendVectorInReg(SDValue Op, const SDLoc &DL, EVT VT);
-
- /// Return an operation which will sign extend the low lanes of the operand
- /// into the specified vector type. For example,
- /// this can convert a v16i8 into a v4i32 by sign extending the low four
- /// lanes of the operand from i8 to i32.
- SDValue getSignExtendVectorInReg(SDValue Op, const SDLoc &DL, EVT VT);
-
- /// Return an operation which will zero extend the low lanes of the operand
- /// into the specified vector type. For example,
- /// this can convert a v16i8 into a v4i32 by zero extending the low four
- /// lanes of the operand from i8 to i32.
- SDValue getZeroExtendVectorInReg(SDValue Op, const SDLoc &DL, EVT VT);
-
/// Convert Op, which must be of integer type, to the integer type VT,
/// by using an extension appropriate for the target's
/// BooleanContent for type OpVT or truncating it.
@@ -947,41 +931,45 @@
Type *SizeTy, unsigned ElemSz, bool isTailCall,
MachinePointerInfo DstPtrInfo);
- /// Helper function to make it easier to build SetCC's if you just
- /// have an ISD::CondCode instead of an SDValue.
- ///
+ /// Helper function to make it easier to build SetCC's if you just have an
+ /// ISD::CondCode instead of an SDValue.
SDValue getSetCC(const SDLoc &DL, EVT VT, SDValue LHS, SDValue RHS,
ISD::CondCode Cond) {
assert(LHS.getValueType().isVector() == RHS.getValueType().isVector() &&
- "Cannot compare scalars to vectors");
+ "Cannot compare scalars to vectors");
assert(LHS.getValueType().isVector() == VT.isVector() &&
- "Cannot compare scalars to vectors");
+ "Cannot compare scalars to vectors");
assert(Cond != ISD::SETCC_INVALID &&
- "Cannot create a setCC of an invalid node.");
+ "Cannot create a setCC of an invalid node.");
return getNode(ISD::SETCC, DL, VT, LHS, RHS, getCondCode(Cond));
}
- /// Helper function to make it easier to build Select's if you just
- /// have operands and don't want to check for vector.
+ /// Helper function to make it easier to build Select's if you just have
+ /// operands and don't want to check for vector.
SDValue getSelect(const SDLoc &DL, EVT VT, SDValue Cond, SDValue LHS,
SDValue RHS) {
assert(LHS.getValueType() == RHS.getValueType() &&
"Cannot use select on differing types");
assert(VT.isVector() == LHS.getValueType().isVector() &&
"Cannot mix vectors and scalars");
- return getNode(Cond.getValueType().isVector() ? ISD::VSELECT : ISD::SELECT, DL, VT,
- Cond, LHS, RHS);
+ auto Opcode = Cond.getValueType().isVector() ? ISD::VSELECT : ISD::SELECT;
+ return getNode(Opcode, DL, VT, Cond, LHS, RHS);
}
- /// Helper function to make it easier to build SelectCC's if you
- /// just have an ISD::CondCode instead of an SDValue.
- ///
+ /// Helper function to make it easier to build SelectCC's if you just have an
+ /// ISD::CondCode instead of an SDValue.
SDValue getSelectCC(const SDLoc &DL, SDValue LHS, SDValue RHS, SDValue True,
SDValue False, ISD::CondCode Cond) {
- return getNode(ISD::SELECT_CC, DL, True.getValueType(),
- LHS, RHS, True, False, getCondCode(Cond));
+ return getNode(ISD::SELECT_CC, DL, True.getValueType(), LHS, RHS, True,
+ False, getCondCode(Cond));
}
+ /// Try to simplify a select/vselect into 1 of its operands or a constant.
+ SDValue simplifySelect(SDValue Cond, SDValue TVal, SDValue FVal);
+
+ /// Try to simplify a shift into 1 of its operands or a constant.
+ SDValue simplifyShift(SDValue X, SDValue Y);
+
/// VAArg produces a result and token chain, and takes a pointer
/// and a source value as input.
SDValue getVAArg(EVT VT, const SDLoc &dl, SDValue Chain, SDValue Ptr,
@@ -1004,10 +992,6 @@
/// Gets a node for an atomic op, produces result (if relevant)
/// and chain and takes 2 operands.
SDValue getAtomic(unsigned Opcode, const SDLoc &dl, EVT MemVT, SDValue Chain,
- SDValue Ptr, SDValue Val, const Value *PtrVal,
- unsigned Alignment, AtomicOrdering Ordering,
- SyncScope::ID SSID);
- SDValue getAtomic(unsigned Opcode, const SDLoc &dl, EVT MemVT, SDValue Chain,
SDValue Ptr, SDValue Val, MachineMemOperand *MMO);
/// Gets a node for an atomic op, produces result and chain and
@@ -1142,6 +1126,13 @@
/// Expand the specified \c ISD::VACOPY node as the Legalize pass would.
SDValue expandVACopy(SDNode *Node);
+ /// Returs an GlobalAddress of the function from the current module with
+ /// name matching the given ExternalSymbol. Additionally can provide the
+ /// matched function.
+ /// Panics the function doesn't exists.
+ SDValue getSymbolFunctionGlobalAddress(SDValue Op,
+ Function **TargetFunction = nullptr);
+
/// *Mutate* the specified node in-place to have the
/// specified operands. If the resultant node already exists in the DAG,
/// this does not modify the specified node, instead it returns the node that
@@ -1158,6 +1149,11 @@
SDValue Op3, SDValue Op4, SDValue Op5);
SDNode *UpdateNodeOperands(SDNode *N, ArrayRef<SDValue> Ops);
+ /// Creates a new TokenFactor containing \p Vals. If \p Vals contains 64k
+ /// values or more, move values into new TokenFactors in 64k-1 blocks, until
+ /// the final TokenFactor has less than 64k operands.
+ SDValue getTokenFactor(const SDLoc &DL, SmallVectorImpl<SDValue> &Vals);
+
/// *Mutate* the specified machine node's memory references to the provided
/// list.
void setNodeMemRefs(MachineSDNode *N,
@@ -1362,21 +1358,20 @@
/// with this SelectionDAG.
bool hasDebugValues() const { return !DbgInfo->empty(); }
- SDDbgInfo::DbgIterator DbgBegin() { return DbgInfo->DbgBegin(); }
- SDDbgInfo::DbgIterator DbgEnd() { return DbgInfo->DbgEnd(); }
+ SDDbgInfo::DbgIterator DbgBegin() const { return DbgInfo->DbgBegin(); }
+ SDDbgInfo::DbgIterator DbgEnd() const { return DbgInfo->DbgEnd(); }
- SDDbgInfo::DbgIterator ByvalParmDbgBegin() {
+ SDDbgInfo::DbgIterator ByvalParmDbgBegin() const {
return DbgInfo->ByvalParmDbgBegin();
}
-
- SDDbgInfo::DbgIterator ByvalParmDbgEnd() {
+ SDDbgInfo::DbgIterator ByvalParmDbgEnd() const {
return DbgInfo->ByvalParmDbgEnd();
}
- SDDbgInfo::DbgLabelIterator DbgLabelBegin() {
+ SDDbgInfo::DbgLabelIterator DbgLabelBegin() const {
return DbgInfo->DbgLabelBegin();
}
- SDDbgInfo::DbgLabelIterator DbgLabelEnd() {
+ SDDbgInfo::DbgLabelIterator DbgLabelEnd() const {
return DbgInfo->DbgLabelEnd();
}
@@ -1399,11 +1394,11 @@
const SDNode *N2);
SDValue FoldConstantArithmetic(unsigned Opcode, const SDLoc &DL, EVT VT,
- SDNode *Cst1, SDNode *Cst2);
+ SDNode *N1, SDNode *N2);
SDValue FoldConstantArithmetic(unsigned Opcode, const SDLoc &DL, EVT VT,
- const ConstantSDNode *Cst1,
- const ConstantSDNode *Cst2);
+ const ConstantSDNode *C1,
+ const ConstantSDNode *C2);
SDValue FoldConstantVectorArithmetic(unsigned Opcode, const SDLoc &DL, EVT VT,
ArrayRef<SDValue> Ops,
@@ -1446,18 +1441,6 @@
KnownBits computeKnownBits(SDValue Op, const APInt &DemandedElts,
unsigned Depth = 0) const;
- /// \copydoc SelectionDAG::computeKnownBits(SDValue,unsigned)
- void computeKnownBits(SDValue Op, KnownBits &Known,
- unsigned Depth = 0) const {
- Known = computeKnownBits(Op, Depth);
- }
-
- /// \copydoc SelectionDAG::computeKnownBits(SDValue,const APInt&,unsigned)
- void computeKnownBits(SDValue Op, KnownBits &Known, const APInt &DemandedElts,
- unsigned Depth = 0) const {
- Known = computeKnownBits(Op, DemandedElts, Depth);
- }
-
/// Used to represent the possible overflow behavior of an operation.
/// Never: the operation cannot overflow.
/// Always: the operation will always overflow.
@@ -1529,6 +1512,18 @@
/// allow an 'add' to be transformed into an 'or'.
bool haveNoCommonBitsSet(SDValue A, SDValue B) const;
+ /// Test whether \p V has a splatted value for all the demanded elements.
+ ///
+ /// On success \p UndefElts will indicate the elements that have UNDEF
+ /// values instead of the splat value, this is only guaranteed to be correct
+ /// for \p DemandedElts.
+ ///
+ /// NOTE: The function will return true for a demanded splat of UNDEF values.
+ bool isSplatValue(SDValue V, const APInt &DemandedElts, APInt &UndefElts);
+
+ /// Test whether \p V has a splatted value.
+ bool isSplatValue(SDValue V, bool AllowUndefs = false);
+
/// Match a binop + shuffle pyramid that represents a horizontal reduction
/// over the elements of a vector starting from the EXTRACT_VECTOR_ELT node /p
/// Extract. The reduction must use one of the opcodes listed in /p
diff --git a/linux-x64/clang/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h b/linux-x64/clang/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h
index 5806064..f168b84 100644
--- a/linux-x64/clang/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h
+++ b/linux-x64/clang/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h
@@ -1,9 +1,8 @@
//===- SelectionDAGAddressAnalysis.h - DAG Address Analysis -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -45,18 +44,24 @@
IsIndexSignExt(IsIndexSignExt) {}
SDValue getBase() { return Base; }
+ SDValue getBase() const { return Base; }
SDValue getIndex() { return Index; }
+ SDValue getIndex() const { return Index; }
- bool equalBaseIndex(BaseIndexOffset &Other, const SelectionDAG &DAG) {
+ bool equalBaseIndex(const BaseIndexOffset &Other,
+ const SelectionDAG &DAG) const {
int64_t Off;
return equalBaseIndex(Other, DAG, Off);
}
- bool equalBaseIndex(BaseIndexOffset &Other, const SelectionDAG &DAG,
- int64_t &Off);
+ bool equalBaseIndex(const BaseIndexOffset &Other, const SelectionDAG &DAG,
+ int64_t &Off) const;
/// Parses tree in Ptr for base, index, offset addresses.
- static BaseIndexOffset match(LSBaseSDNode *N, const SelectionDAG &DAG);
+ static BaseIndexOffset match(const LSBaseSDNode *N, const SelectionDAG &DAG);
+
+ void print(raw_ostream& OS) const;
+ void dump() const;
};
} // end namespace llvm
diff --git a/linux-x64/clang/include/llvm/CodeGen/SelectionDAGISel.h b/linux-x64/clang/include/llvm/CodeGen/SelectionDAGISel.h
index 86df0af..2acb922 100644
--- a/linux-x64/clang/include/llvm/CodeGen/SelectionDAGISel.h
+++ b/linux-x64/clang/include/llvm/CodeGen/SelectionDAGISel.h
@@ -1,9 +1,8 @@
//===-- llvm/CodeGen/SelectionDAGISel.h - Common Base Class------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -132,6 +131,7 @@
OPC_CheckChild2Same, OPC_CheckChild3Same,
OPC_CheckPatternPredicate,
OPC_CheckPredicate,
+ OPC_CheckPredicateWithOperands,
OPC_CheckOpcode,
OPC_SwitchOpcode,
OPC_CheckType,
@@ -267,6 +267,17 @@
llvm_unreachable("Tblgen should generate the implementation of this!");
}
+ /// CheckNodePredicateWithOperands - This function is generated by tblgen in
+ /// the target.
+ /// It runs node predicate number PredNo and returns true if it succeeds or
+ /// false if it fails. The number is a private implementation detail to the
+ /// code tblgen produces.
+ virtual bool CheckNodePredicateWithOperands(
+ SDNode *N, unsigned PredNo,
+ const SmallVectorImpl<SDValue> &Operands) const {
+ llvm_unreachable("Tblgen should generate the implementation of this!");
+ }
+
virtual bool CheckComplexPattern(SDNode *Root, SDNode *Parent, SDValue N,
unsigned PatternNo,
SmallVectorImpl<std::pair<SDValue, SDNode*> > &Result) {
@@ -291,7 +302,7 @@
private:
// Calls to these functions are generated by tblgen.
- void Select_INLINEASM(SDNode *N);
+ void Select_INLINEASM(SDNode *N, bool Branch);
void Select_READ_REGISTER(SDNode *Op);
void Select_WRITE_REGISTER(SDNode *Op);
void Select_UNDEF(SDNode *N);
diff --git a/linux-x64/clang/include/llvm/CodeGen/SelectionDAGNodes.h b/linux-x64/clang/include/llvm/CodeGen/SelectionDAGNodes.h
index 28d27b7..c0dd9d1 100644
--- a/linux-x64/clang/include/llvm/CodeGen/SelectionDAGNodes.h
+++ b/linux-x64/clang/include/llvm/CodeGen/SelectionDAGNodes.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/SelectionDAGNodes.h - SelectionDAG Nodes ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -184,6 +183,7 @@
inline unsigned getNumOperands() const;
inline const SDValue &getOperand(unsigned i) const;
inline uint64_t getConstantOperandVal(unsigned i) const;
+ inline const APInt &getConstantOperandAPInt(unsigned i) const;
inline bool isTargetMemoryOpcode() const;
inline bool isTargetOpcode() const;
inline bool isMachineOpcode() const;
@@ -232,7 +232,6 @@
return LHS == RHS;
}
};
-template <> struct isPodLike<SDValue> { static const bool value = true; };
/// Allow casting operators to work directly on
/// SDValues as if they were SDNode*'s.
@@ -672,6 +671,12 @@
case ISD::STRICT_FLOG2:
case ISD::STRICT_FRINT:
case ISD::STRICT_FNEARBYINT:
+ case ISD::STRICT_FMAXNUM:
+ case ISD::STRICT_FMINNUM:
+ case ISD::STRICT_FCEIL:
+ case ISD::STRICT_FFLOOR:
+ case ISD::STRICT_FROUND:
+ case ISD::STRICT_FTRUNC:
return true;
}
}
@@ -892,9 +897,17 @@
/// Return the number of values used by this operation.
unsigned getNumOperands() const { return NumOperands; }
+ /// Return the maximum number of operands that a SDNode can hold.
+ static constexpr size_t getMaxNumOperands() {
+ return std::numeric_limits<decltype(SDNode::NumOperands)>::max();
+ }
+
/// Helper method returns the integer value of a ConstantSDNode operand.
inline uint64_t getConstantOperandVal(unsigned Num) const;
+ /// Helper method returns the APInt of a ConstantSDNode operand.
+ inline const APInt &getConstantOperandAPInt(unsigned Num) const;
+
const SDValue &getOperand(unsigned Num) const {
assert(Num < NumOperands && "Invalid child # of SDNode!");
return OperandList[Num];
@@ -1122,6 +1135,10 @@
return Node->getConstantOperandVal(i);
}
+inline const APInt &SDValue::getConstantOperandAPInt(unsigned i) const {
+ return Node->getConstantOperandAPInt(i);
+}
+
inline bool SDValue::isTargetOpcode() const {
return Node->isTargetOpcode();
}
@@ -1350,6 +1367,8 @@
N->getOpcode() == ISD::ATOMIC_LOAD_MAX ||
N->getOpcode() == ISD::ATOMIC_LOAD_UMIN ||
N->getOpcode() == ISD::ATOMIC_LOAD_UMAX ||
+ N->getOpcode() == ISD::ATOMIC_LOAD_FADD ||
+ N->getOpcode() == ISD::ATOMIC_LOAD_FSUB ||
N->getOpcode() == ISD::ATOMIC_LOAD ||
N->getOpcode() == ISD::ATOMIC_STORE ||
N->getOpcode() == ISD::MLOAD ||
@@ -1402,6 +1421,8 @@
N->getOpcode() == ISD::ATOMIC_LOAD_MAX ||
N->getOpcode() == ISD::ATOMIC_LOAD_UMIN ||
N->getOpcode() == ISD::ATOMIC_LOAD_UMAX ||
+ N->getOpcode() == ISD::ATOMIC_LOAD_FADD ||
+ N->getOpcode() == ISD::ATOMIC_LOAD_FSUB ||
N->getOpcode() == ISD::ATOMIC_LOAD ||
N->getOpcode() == ISD::ATOMIC_STORE;
}
@@ -1530,6 +1551,10 @@
return cast<ConstantSDNode>(getOperand(Num))->getZExtValue();
}
+const APInt &SDNode::getConstantOperandAPInt(unsigned Num) const {
+ return cast<ConstantSDNode>(getOperand(Num))->getAPIntValue();
+}
+
class ConstantFPSDNode : public SDNode {
friend class SelectionDAG;
@@ -1607,6 +1632,21 @@
/// Returns the SDNode if it is a constant splat BuildVector or constant float.
ConstantFPSDNode *isConstOrConstSplatFP(SDValue N, bool AllowUndefs = false);
+/// Return true if the value is a constant 0 integer or a splatted vector of
+/// a constant 0 integer (with no undefs by default).
+/// Build vector implicit truncation is not an issue for null values.
+bool isNullOrNullSplat(SDValue V, bool AllowUndefs = false);
+
+/// Return true if the value is a constant 1 integer or a splatted vector of a
+/// constant 1 integer (with no undefs).
+/// Does not permit build vector implicit truncation.
+bool isOneOrOneSplat(SDValue V);
+
+/// Return true if the value is a constant -1 integer or a splatted vector of a
+/// constant -1 integer (with no undefs).
+/// Does not permit build vector implicit truncation.
+bool isAllOnesOrAllOnesSplat(SDValue V);
+
class GlobalAddressSDNode : public SDNode {
friend class SelectionDAG;
@@ -2466,15 +2506,18 @@
/// Attempt to match a unary predicate against a scalar/splat constant or
/// every element of a constant BUILD_VECTOR.
+ /// If AllowUndef is true, then UNDEF elements will pass nullptr to Match.
bool matchUnaryPredicate(SDValue Op,
- std::function<bool(ConstantSDNode *)> Match);
+ std::function<bool(ConstantSDNode *)> Match,
+ bool AllowUndefs = false);
/// Attempt to match a binary predicate against a pair of scalar/splat
/// constants or every element of a pair of constant BUILD_VECTORs.
+ /// If AllowUndef is true, then UNDEF elements will pass nullptr to Match.
bool matchBinaryPredicate(
SDValue LHS, SDValue RHS,
- std::function<bool(ConstantSDNode *, ConstantSDNode *)> Match);
-
+ std::function<bool(ConstantSDNode *, ConstantSDNode *)> Match,
+ bool AllowUndefs = false);
} // end namespace ISD
} // end namespace llvm
diff --git a/linux-x64/clang/include/llvm/CodeGen/SelectionDAGTargetInfo.h b/linux-x64/clang/include/llvm/CodeGen/SelectionDAGTargetInfo.h
index 45c1df4..7c9f57b 100644
--- a/linux-x64/clang/include/llvm/CodeGen/SelectionDAGTargetInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/SelectionDAGTargetInfo.h
@@ -1,9 +1,8 @@
//==- llvm/CodeGen/SelectionDAGTargetInfo.h - SelectionDAG Info --*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/SlotIndexes.h b/linux-x64/clang/include/llvm/CodeGen/SlotIndexes.h
index 5508222..63461d6 100644
--- a/linux-x64/clang/include/llvm/CodeGen/SlotIndexes.h
+++ b/linux-x64/clang/include/llvm/CodeGen/SlotIndexes.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/SlotIndexes.h - Slot indexes representation -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -302,8 +301,6 @@
}
};
- template <> struct isPodLike<SlotIndex> { static const bool value = true; };
-
inline raw_ostream& operator<<(raw_ostream &os, SlotIndex li) {
li.print(os);
return os;
@@ -413,10 +410,14 @@
/// Returns the base index for the given instruction.
SlotIndex getInstructionIndex(const MachineInstr &MI) const {
// Instructions inside a bundle have the same number as the bundle itself.
- const MachineInstr &BundleStart = *getBundleStart(MI.getIterator());
- assert(!BundleStart.isDebugInstr() &&
+ auto BundleStart = getBundleStart(MI.getIterator());
+ auto BundleEnd = getBundleEnd(MI.getIterator());
+ // Use the first non-debug instruction in the bundle to get SlotIndex.
+ const MachineInstr &BundleNonDebug =
+ *skipDebugInstructionsForward(BundleStart, BundleEnd);
+ assert(!BundleNonDebug.isDebugInstr() &&
"Could not use a debug instruction to query mi2iMap.");
- Mi2IndexMap::const_iterator itr = mi2iMap.find(&BundleStart);
+ Mi2IndexMap::const_iterator itr = mi2iMap.find(&BundleNonDebug);
assert(itr != mi2iMap.end() && "Instruction not found in maps.");
return itr->second;
}
@@ -444,7 +445,7 @@
/// MI is not required to have an index.
SlotIndex getIndexBefore(const MachineInstr &MI) const {
const MachineBasicBlock *MBB = MI.getParent();
- assert(MBB && "MI must be inserted inna basic block");
+ assert(MBB && "MI must be inserted in a basic block");
MachineBasicBlock::const_iterator I = MI, B = MBB->begin();
while (true) {
if (I == B)
@@ -461,7 +462,7 @@
/// MI is not required to have an index.
SlotIndex getIndexAfter(const MachineInstr &MI) const {
const MachineBasicBlock *MBB = MI.getParent();
- assert(MBB && "MI must be inserted inna basic block");
+ assert(MBB && "MI must be inserted in a basic block");
MachineBasicBlock::const_iterator I = MI, E = MBB->end();
while (true) {
++I;
diff --git a/linux-x64/clang/include/llvm/CodeGen/StackMaps.h b/linux-x64/clang/include/llvm/CodeGen/StackMaps.h
index e584a41..d7d88de 100644
--- a/linux-x64/clang/include/llvm/CodeGen/StackMaps.h
+++ b/linux-x64/clang/include/llvm/CodeGen/StackMaps.h
@@ -1,9 +1,8 @@
//===- StackMaps.h - StackMaps ----------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -236,25 +235,6 @@
FnInfos.clear();
}
- /// Generate a stackmap record for a stackmap instruction.
- ///
- /// MI must be a raw STACKMAP, not a PATCHPOINT.
- void recordStackMap(const MachineInstr &MI);
-
- /// Generate a stackmap record for a patchpoint instruction.
- void recordPatchPoint(const MachineInstr &MI);
-
- /// Generate a stackmap record for a statepoint instruction.
- void recordStatepoint(const MachineInstr &MI);
-
- /// If there is any stack map data, create a stack map section and serialize
- /// the map info into it. This clears the stack map data structures
- /// afterwards.
- void serializeToStackMapSection();
-
-private:
- static const char *WSMP;
-
using LocationVec = SmallVector<Location, 8>;
using LiveOutVec = SmallVector<LiveOutReg, 8>;
using ConstantPool = MapVector<uint64_t, uint64_t>;
@@ -283,6 +263,31 @@
using FnInfoMap = MapVector<const MCSymbol *, FunctionInfo>;
using CallsiteInfoList = std::vector<CallsiteInfo>;
+ /// Generate a stackmap record for a stackmap instruction.
+ ///
+ /// MI must be a raw STACKMAP, not a PATCHPOINT.
+ void recordStackMap(const MachineInstr &MI);
+
+ /// Generate a stackmap record for a patchpoint instruction.
+ void recordPatchPoint(const MachineInstr &MI);
+
+ /// Generate a stackmap record for a statepoint instruction.
+ void recordStatepoint(const MachineInstr &MI);
+
+ /// If there is any stack map data, create a stack map section and serialize
+ /// the map info into it. This clears the stack map data structures
+ /// afterwards.
+ void serializeToStackMapSection();
+
+ /// Get call site info.
+ CallsiteInfoList &getCSInfos() { return CSInfos; }
+
+ /// Get function info.
+ FnInfoMap &getFnInfos() { return FnInfos; }
+
+private:
+ static const char *WSMP;
+
AsmPrinter &AP;
CallsiteInfoList CSInfos;
ConstantPool ConstPool;
diff --git a/linux-x64/clang/include/llvm/CodeGen/StackProtector.h b/linux-x64/clang/include/llvm/CodeGen/StackProtector.h
index a506ac6..ed52db3 100644
--- a/linux-x64/clang/include/llvm/CodeGen/StackProtector.h
+++ b/linux-x64/clang/include/llvm/CodeGen/StackProtector.h
@@ -1,9 +1,8 @@
//===- StackProtector.h - Stack Protector Insertion -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/TailDuplicator.h b/linux-x64/clang/include/llvm/CodeGen/TailDuplicator.h
index be6562c..358798d 100644
--- a/linux-x64/clang/include/llvm/CodeGen/TailDuplicator.h
+++ b/linux-x64/clang/include/llvm/CodeGen/TailDuplicator.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/TailDuplicator.h ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/TargetCallingConv.h b/linux-x64/clang/include/llvm/CodeGen/TargetCallingConv.h
index 7d138f5..f82c05d 100644
--- a/linux-x64/clang/include/llvm/CodeGen/TargetCallingConv.h
+++ b/linux-x64/clang/include/llvm/CodeGen/TargetCallingConv.h
@@ -1,9 +1,8 @@
//===-- llvm/CodeGen/TargetCallingConv.h - Calling Convention ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/TargetFrameLowering.h b/linux-x64/clang/include/llvm/CodeGen/TargetFrameLowering.h
index f8effee..754ee5c 100644
--- a/linux-x64/clang/include/llvm/CodeGen/TargetFrameLowering.h
+++ b/linux-x64/clang/include/llvm/CodeGen/TargetFrameLowering.h
@@ -1,9 +1,8 @@
//===-- llvm/CodeGen/TargetFrameLowering.h ----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -207,8 +206,11 @@
return false;
}
- /// Return true if the target needs to disable frame pointer elimination.
- virtual bool noFramePointerElim(const MachineFunction &MF) const;
+ /// Return true if the target wants to keep the frame pointer regardless of
+ /// the function attribute "frame-pointer".
+ virtual bool keepFramePointer(const MachineFunction &MF) const {
+ return false;
+ }
/// hasFP - Return true if the specified function should have a dedicated
/// frame pointer register. For most targets this is true only if the function
@@ -259,6 +261,17 @@
return getFrameIndexReference(MF, FI, FrameReg);
}
+ /// getNonLocalFrameIndexReference - This method returns the offset used to
+ /// reference a frame index location. The offset can be from either FP/BP/SP
+ /// based on which base register is returned by llvm.localaddress.
+ virtual int getNonLocalFrameIndexReference(const MachineFunction &MF,
+ int FI) const {
+ // By default, dispatch to getFrameIndexReference. Interested targets can
+ // override this.
+ unsigned FrameReg;
+ return getFrameIndexReference(MF, FI, FrameReg);
+ }
+
/// This method determines which of the registers reported by
/// TargetRegisterInfo::getCalleeSavedRegs() should actually get saved.
/// The default implementation checks populates the \p SavedRegs bitset with
diff --git a/linux-x64/clang/include/llvm/CodeGen/TargetInstrInfo.h b/linux-x64/clang/include/llvm/CodeGen/TargetInstrInfo.h
index 1fa3de4..b732be6 100644
--- a/linux-x64/clang/include/llvm/CodeGen/TargetInstrInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/TargetInstrInfo.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/TargetInstrInfo.h - Instruction Info --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -429,6 +428,13 @@
RegSubRegPair(unsigned Reg = 0, unsigned SubReg = 0)
: Reg(Reg), SubReg(SubReg) {}
+
+ bool operator==(const RegSubRegPair& P) const {
+ return Reg == P.Reg && SubReg == P.SubReg;
+ }
+ bool operator!=(const RegSubRegPair& P) const {
+ return !(*this == P);
+ }
};
/// A pair composed of a pair of a register and a sub-register index,
@@ -1136,11 +1142,11 @@
return false;
}
- /// Get the base register and byte offset of an instruction that reads/writes
+ /// Get the base operand and byte offset of an instruction that reads/writes
/// memory.
- virtual bool getMemOpBaseRegImmOfs(MachineInstr &MemOp, unsigned &BaseReg,
- int64_t &Offset,
- const TargetRegisterInfo *TRI) const {
+ virtual bool getMemOperandWithOffset(MachineInstr &MI,
+ MachineOperand *&BaseOp, int64_t &Offset,
+ const TargetRegisterInfo *TRI) const {
return false;
}
@@ -1164,8 +1170,8 @@
/// or
/// DAG->addMutation(createStoreClusterDAGMutation(DAG->TII, DAG->TRI));
/// to TargetPassConfig::createMachineScheduler() to have an effect.
- virtual bool shouldClusterMemOps(MachineInstr &FirstLdSt, unsigned BaseReg1,
- MachineInstr &SecondLdSt, unsigned BaseReg2,
+ virtual bool shouldClusterMemOps(MachineOperand &BaseOp1,
+ MachineOperand &BaseOp2,
unsigned NumLoads) const {
llvm_unreachable("target did not implement shouldClusterMemOps()");
}
@@ -1635,10 +1641,11 @@
"Target didn't implement TargetInstrInfo::getOutliningType!");
}
- /// Returns target-defined flags defining properties of the MBB for
- /// the outliner.
- virtual unsigned getMachineOutlinerMBBFlags(MachineBasicBlock &MBB) const {
- return 0x0;
+ /// Optional target hook that returns true if \p MBB is safe to outline from,
+ /// and returns any target-specific information in \p Flags.
+ virtual bool isMBBSafeToOutlineFrom(MachineBasicBlock &MBB,
+ unsigned &Flags) const {
+ return true;
}
/// Insert a custom frame for outlined functions.
diff --git a/linux-x64/clang/include/llvm/CodeGen/TargetLowering.h b/linux-x64/clang/include/llvm/CodeGen/TargetLowering.h
index a593907..fa71024 100644
--- a/linux-x64/clang/include/llvm/CodeGen/TargetLowering.h
+++ b/linux-x64/clang/include/llvm/CodeGen/TargetLowering.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/TargetLowering.h - Target Lowering Info -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -195,7 +194,11 @@
IsNest(false), IsByVal(false), IsInAlloca(false), IsReturned(false),
IsSwiftSelf(false), IsSwiftError(false) {}
- void setAttributes(ImmutableCallSite *CS, unsigned ArgIdx);
+ void setAttributes(const CallBase *Call, unsigned ArgIdx);
+
+ void setAttributes(ImmutableCallSite *CS, unsigned ArgIdx) {
+ return setAttributes(cast<CallBase>(CS->getInstruction()), ArgIdx);
+ }
};
using ArgListTy = std::vector<ArgListEntry>;
@@ -269,6 +272,14 @@
return true;
}
+ /// Return true if it is profitable to convert a select of FP constants into
+ /// a constant pool load whose address depends on the select condition. The
+ /// parameter may be used to differentiate a select with FP compare from
+ /// integer compare.
+ virtual bool reduceSelectOfFPConstantLoads(bool IsFPSetCC) const {
+ return true;
+ }
+
/// Return true if multiple condition registers are available.
bool hasMultipleConditionRegisters() const {
return HasMultipleConditionRegisters;
@@ -279,7 +290,7 @@
/// Return the preferred vector type legalization action.
virtual TargetLoweringBase::LegalizeTypeAction
- getPreferredVectorAction(EVT VT) const {
+ getPreferredVectorAction(MVT VT) const {
// The default action for one element vectors is to scalarize
if (VT.getVectorNumElements() == 1)
return TypeScalarizeVector;
@@ -635,6 +646,13 @@
return RepRegClassCostForVT[VT.SimpleTy];
}
+ /// Return true if SHIFT instructions should be expanded to SHIFT_PARTS
+ /// instructions, and false if a library call is preferred (e.g for code-size
+ /// reasons).
+ virtual bool shouldExpandShift(SelectionDAG &DAG, SDNode *N) const {
+ return true;
+ }
+
/// Return true if the target has native support for the specified value type.
/// This means that it has a register that directly holds it without
/// promotions or expansions.
@@ -797,6 +815,39 @@
return OpActions[(unsigned)VT.getSimpleVT().SimpleTy][Op];
}
+ /// Custom method defined by each target to indicate if an operation which
+ /// may require a scale is supported natively by the target.
+ /// If not, the operation is illegal.
+ virtual bool isSupportedFixedPointOperation(unsigned Op, EVT VT,
+ unsigned Scale) const {
+ return false;
+ }
+
+ /// Some fixed point operations may be natively supported by the target but
+ /// only for specific scales. This method allows for checking
+ /// if the width is supported by the target for a given operation that may
+ /// depend on scale.
+ LegalizeAction getFixedPointOperationAction(unsigned Op, EVT VT,
+ unsigned Scale) const {
+ auto Action = getOperationAction(Op, VT);
+ if (Action != Legal)
+ return Action;
+
+ // This operation is supported in this type but may only work on specific
+ // scales.
+ bool Supported;
+ switch (Op) {
+ default:
+ llvm_unreachable("Unexpected fixed point operation.");
+ case ISD::SMULFIX:
+ case ISD::UMULFIX:
+ Supported = isSupportedFixedPointOperation(Op, VT, Scale);
+ break;
+ }
+
+ return Supported ? Action : Expand;
+ }
+
LegalizeAction getStrictFPOperationAction(unsigned Op, EVT VT) const {
unsigned EqOpc;
switch (Op) {
@@ -819,6 +870,12 @@
case ISD::STRICT_FLOG2: EqOpc = ISD::FLOG2; break;
case ISD::STRICT_FRINT: EqOpc = ISD::FRINT; break;
case ISD::STRICT_FNEARBYINT: EqOpc = ISD::FNEARBYINT; break;
+ case ISD::STRICT_FMAXNUM: EqOpc = ISD::FMAXNUM; break;
+ case ISD::STRICT_FMINNUM: EqOpc = ISD::FMINNUM; break;
+ case ISD::STRICT_FCEIL: EqOpc = ISD::FCEIL; break;
+ case ISD::STRICT_FFLOOR: EqOpc = ISD::FFLOOR; break;
+ case ISD::STRICT_FROUND: EqOpc = ISD::FROUND; break;
+ case ISD::STRICT_FTRUNC: EqOpc = ISD::FTRUNC; break;
}
auto Action = getOperationAction(EqOpc, VT);
@@ -1207,13 +1264,15 @@
/// reduce runtime.
virtual bool ShouldShrinkFPConstant(EVT) const { return true; }
- // Return true if it is profitable to reduce the given load node to a smaller
- // type.
- //
- // e.g. (i16 (trunc (i32 (load x))) -> i16 load x should be performed
- virtual bool shouldReduceLoadWidth(SDNode *Load,
- ISD::LoadExtType ExtTy,
+ /// Return true if it is profitable to reduce a load to a smaller type.
+ /// Example: (i16 (trunc (i32 (load x))) -> i16 load x
+ virtual bool shouldReduceLoadWidth(SDNode *Load, ISD::LoadExtType ExtTy,
EVT NewVT) const {
+ // By default, assume that it is cheaper to extract a subvector from a wide
+ // vector load rather than creating multiple narrow vector loads.
+ if (NewVT.isVector() && !Load->hasOneUse())
+ return false;
+
return true;
}
@@ -1467,7 +1526,7 @@
/// performs validation and error handling, returns the function. Otherwise,
/// returns nullptr. Must be previously inserted by insertSSPDeclarations.
/// Should be used only when getIRStackGuard returns nullptr.
- virtual Value *getSSPStackGuardCheck(const Module &M) const;
+ virtual Function *getSSPStackGuardCheck(const Module &M) const;
protected:
Value *getDefaultSafeStackPointerLocation(IRBuilder<> &IRB,
@@ -1668,8 +1727,9 @@
/// Returns how the IR-level AtomicExpand pass should expand the given
/// AtomicRMW, if at all. Default is to never expand.
- virtual AtomicExpansionKind shouldExpandAtomicRMWInIR(AtomicRMWInst *) const {
- return AtomicExpansionKind::None;
+ virtual AtomicExpansionKind shouldExpandAtomicRMWInIR(AtomicRMWInst *RMW) const {
+ return RMW->isFloatingPointOperation() ?
+ AtomicExpansionKind::CmpXChg : AtomicExpansionKind::None;
}
/// On some platforms, an AtomicRMW that never actually modifies the value
@@ -1714,6 +1774,8 @@
Action != TypeSplitVector;
}
+ virtual bool isProfitableToCombineMinNumMaxNum(EVT VT) const { return true; }
+
/// Return true if a select of constants (select Cond, C1, C2) should be
/// transformed into simple math ops with the condition value. For example:
/// select Cond, C1, C1-1 --> add (zext Cond), C1-1
@@ -1730,6 +1792,16 @@
return false;
}
+ /// Return true if it is more correct/profitable to use strict FP_TO_INT
+ /// conversion operations - canonicalizing the FP source value instead of
+ /// converting all cases and then selecting based on value.
+ /// This may be true if the target throws exceptions for out of bounds
+ /// conversions or has fast FP CMOV.
+ virtual bool shouldUseStrictFP_TO_INT(EVT FpVT, EVT IntVT,
+ bool IsSigned) const {
+ return false;
+ }
+
//===--------------------------------------------------------------------===//
// TargetLowering Configuration Methods - These methods should be invoked by
// the derived class constructor to configure this object for the target.
@@ -2058,6 +2130,14 @@
return true;
}
+ /// Return true if the specified immediate is legal for the value input of a
+ /// store instruction.
+ virtual bool isLegalStoreImmediate(int64_t Value) const {
+ // Default implementation assumes that at least 0 works since it is likely
+ // that a zero register exists or a zero immediate is allowed.
+ return Value == 0;
+ }
+
/// Return true if it's significantly cheaper to shift a vector by a uniform
/// scalar than by an amount which will vary across each lane. On x86, for
/// example, there is a "psllw" instruction for the former case, but no simple
@@ -2089,10 +2169,12 @@
case ISD::UADDO:
case ISD::ADDC:
case ISD::ADDE:
+ case ISD::SADDSAT:
+ case ISD::UADDSAT:
case ISD::FMINNUM:
case ISD::FMAXNUM:
- case ISD::FMINNAN:
- case ISD::FMAXNAN:
+ case ISD::FMINIMUM:
+ case ISD::FMAXIMUM:
return true;
default: return false;
}
@@ -2196,6 +2278,22 @@
return false;
}
+ /// Return true if sign-extension from FromTy to ToTy is cheaper than
+ /// zero-extension.
+ virtual bool isSExtCheaperThanZExt(EVT FromTy, EVT ToTy) const {
+ return false;
+ }
+
+ /// Return true if sinking I's operands to the same basic block as I is
+ /// profitable, e.g. because the operands can be folded into a target
+ /// instruction during instruction selection. After calling the function
+ /// \p Ops contains the Uses to sink ordered by dominance (dominating users
+ /// come first).
+ virtual bool shouldSinkOperands(Instruction *I,
+ SmallVectorImpl<Use *> &Ops) const {
+ return false;
+ }
+
/// Return true if the target supplies and combines to a paired load
/// two loaded values of type LoadedType next to each other in memory.
/// RequiredAlignment gives the minimal alignment constraints that must be met
@@ -2335,6 +2433,12 @@
return false;
}
+ /// Try to convert an extract element of a vector binary operation into an
+ /// extract element followed by a scalar operation.
+ virtual bool shouldScalarizeBinop(SDValue VecOp) const {
+ return false;
+ }
+
// Return true if it is profitable to use a scalar input to a BUILD_VECTOR
// even if the vector itself has multiple uses.
virtual bool aggressivelyPreferBuildVectorSources(EVT VecVT) const {
@@ -2817,32 +2921,28 @@
bool ShrinkDemandedOp(SDValue Op, unsigned BitWidth, const APInt &Demanded,
TargetLoweringOpt &TLO) const;
- /// Helper for SimplifyDemandedBits that can simplify an operation with
- /// multiple uses. This function simplifies operand \p OpIdx of \p User and
- /// then updates \p User with the simplified version. No other uses of
- /// \p OpIdx are updated. If \p User is the only user of \p OpIdx, this
- /// function behaves exactly like function SimplifyDemandedBits declared
- /// below except that it also updates the DAG by calling
- /// DCI.CommitTargetLoweringOpt.
- bool SimplifyDemandedBits(SDNode *User, unsigned OpIdx, const APInt &Demanded,
- DAGCombinerInfo &DCI, TargetLoweringOpt &TLO) const;
-
- /// Look at Op. At this point, we know that only the DemandedMask bits of the
+ /// Look at Op. At this point, we know that only the DemandedBits bits of the
/// result of Op are ever used downstream. If we can use this information to
/// simplify Op, create a new simplified DAG node and return true, returning
/// the original and new nodes in Old and New. Otherwise, analyze the
/// expression and return a mask of KnownOne and KnownZero bits for the
/// expression (used to simplify the caller). The KnownZero/One bits may only
- /// be accurate for those bits in the DemandedMask.
+ /// be accurate for those bits in the Demanded masks.
/// \p AssumeSingleUse When this parameter is true, this function will
/// attempt to simplify \p Op even if there are multiple uses.
/// Callers are responsible for correctly updating the DAG based on the
/// results of this function, because simply replacing replacing TLO.Old
/// with TLO.New will be incorrect when this parameter is true and TLO.Old
/// has multiple uses.
- bool SimplifyDemandedBits(SDValue Op, const APInt &DemandedMask,
- KnownBits &Known,
- TargetLoweringOpt &TLO,
+ bool SimplifyDemandedBits(SDValue Op, const APInt &DemandedBits,
+ const APInt &DemandedElts, KnownBits &Known,
+ TargetLoweringOpt &TLO, unsigned Depth = 0,
+ bool AssumeSingleUse = false) const;
+
+ /// Helper wrapper around SimplifyDemandedBits, demanding all elements.
+ /// Adds Op back to the worklist upon success.
+ bool SimplifyDemandedBits(SDValue Op, const APInt &DemandedBits,
+ KnownBits &Known, TargetLoweringOpt &TLO,
unsigned Depth = 0,
bool AssumeSingleUse = false) const;
@@ -2908,11 +3008,23 @@
/// elements, returning true on success. Otherwise, analyze the expression and
/// return a mask of KnownUndef and KnownZero elements for the expression
/// (used to simplify the caller). The KnownUndef/Zero elements may only be
- /// accurate for those bits in the DemandedMask
+ /// accurate for those bits in the DemandedMask.
virtual bool SimplifyDemandedVectorEltsForTargetNode(
SDValue Op, const APInt &DemandedElts, APInt &KnownUndef,
APInt &KnownZero, TargetLoweringOpt &TLO, unsigned Depth = 0) const;
+ /// Attempt to simplify any target nodes based on the demanded bits/elts,
+ /// returning true on success. Otherwise, analyze the
+ /// expression and return a mask of KnownOne and KnownZero bits for the
+ /// expression (used to simplify the caller). The KnownZero/One bits may only
+ /// be accurate for those bits in the Demanded masks.
+ virtual bool SimplifyDemandedBitsForTargetNode(SDValue Op,
+ const APInt &DemandedBits,
+ const APInt &DemandedElts,
+ KnownBits &Known,
+ TargetLoweringOpt &TLO,
+ unsigned Depth = 0) const;
+
/// If \p SNaN is false, \returns true if \p Op is known to never be any
/// NaN. If \p sNaN is true, returns if \p Op is known to never be a signaling
/// NaN.
@@ -3000,6 +3112,15 @@
return true;
}
+ /// Return true if it is profitable to fold a pair of shifts into a mask.
+ /// This is usually true on most targets. But some targets, like Thumb1,
+ /// have immediate shift instructions, but no immediate "and" instruction;
+ /// this makes the fold unprofitable.
+ virtual bool shouldFoldShiftPairToMask(const SDNode *N,
+ CombineLevel Level) const {
+ return true;
+ }
+
// Return true if it is profitable to combine a BUILD_VECTOR with a stride-pattern
// to a shuffle and a truncate.
// Example of such a combine:
@@ -3541,6 +3662,12 @@
std::vector<SDValue> &Ops,
SelectionDAG &DAG) const;
+ // Lower custom output constraints. If invalid, return SDValue().
+ virtual SDValue LowerAsmOutputForConstraint(SDValue &Chain, SDValue *Flag,
+ SDLoc DL,
+ const AsmOperandInfo &OpInfo,
+ SelectionDAG &DAG) const;
+
//===--------------------------------------------------------------------===//
// Div utility functions
//
@@ -3638,12 +3765,68 @@
SDValue LL = SDValue(), SDValue LH = SDValue(),
SDValue RL = SDValue(), SDValue RH = SDValue()) const;
+ /// Expand funnel shift.
+ /// \param N Node to expand
+ /// \param Result output after conversion
+ /// \returns True, if the expansion was successful, false otherwise
+ bool expandFunnelShift(SDNode *N, SDValue &Result, SelectionDAG &DAG) const;
+
+ /// Expand rotations.
+ /// \param N Node to expand
+ /// \param Result output after conversion
+ /// \returns True, if the expansion was successful, false otherwise
+ bool expandROT(SDNode *N, SDValue &Result, SelectionDAG &DAG) const;
+
/// Expand float(f32) to SINT(i64) conversion
/// \param N Node to expand
/// \param Result output after conversion
/// \returns True, if the expansion was successful, false otherwise
bool expandFP_TO_SINT(SDNode *N, SDValue &Result, SelectionDAG &DAG) const;
+ /// Expand float to UINT conversion
+ /// \param N Node to expand
+ /// \param Result output after conversion
+ /// \returns True, if the expansion was successful, false otherwise
+ bool expandFP_TO_UINT(SDNode *N, SDValue &Result, SelectionDAG &DAG) const;
+
+ /// Expand UINT(i64) to double(f64) conversion
+ /// \param N Node to expand
+ /// \param Result output after conversion
+ /// \returns True, if the expansion was successful, false otherwise
+ bool expandUINT_TO_FP(SDNode *N, SDValue &Result, SelectionDAG &DAG) const;
+
+ /// Expand fminnum/fmaxnum into fminnum_ieee/fmaxnum_ieee with quieted inputs.
+ SDValue expandFMINNUM_FMAXNUM(SDNode *N, SelectionDAG &DAG) const;
+
+ /// Expand CTPOP nodes. Expands vector/scalar CTPOP nodes,
+ /// vector nodes can only succeed if all operations are legal/custom.
+ /// \param N Node to expand
+ /// \param Result output after conversion
+ /// \returns True, if the expansion was successful, false otherwise
+ bool expandCTPOP(SDNode *N, SDValue &Result, SelectionDAG &DAG) const;
+
+ /// Expand CTLZ/CTLZ_ZERO_UNDEF nodes. Expands vector/scalar CTLZ nodes,
+ /// vector nodes can only succeed if all operations are legal/custom.
+ /// \param N Node to expand
+ /// \param Result output after conversion
+ /// \returns True, if the expansion was successful, false otherwise
+ bool expandCTLZ(SDNode *N, SDValue &Result, SelectionDAG &DAG) const;
+
+ /// Expand CTTZ/CTTZ_ZERO_UNDEF nodes. Expands vector/scalar CTTZ nodes,
+ /// vector nodes can only succeed if all operations are legal/custom.
+ /// \param N Node to expand
+ /// \param Result output after conversion
+ /// \returns True, if the expansion was successful, false otherwise
+ bool expandCTTZ(SDNode *N, SDValue &Result, SelectionDAG &DAG) const;
+
+ /// Expand ABS nodes. Expands vector/scalar ABS nodes,
+ /// vector nodes can only succeed if all operations are legal/custom.
+ /// (ABS x) -> (XOR (ADD x, (SRA x, type_size)), (SRA x, type_size))
+ /// \param N Node to expand
+ /// \param Result output after conversion
+ /// \returns True, if the expansion was successful, false otherwise
+ bool expandABS(SDNode *N, SDValue &Result, SelectionDAG &DAG) const;
+
/// Turn load of vector type into a load of the individual elements.
/// \param LD load to expand
/// \returns MERGE_VALUEs of the scalar loads with their chains.
@@ -3681,6 +3864,14 @@
SDValue getVectorElementPointer(SelectionDAG &DAG, SDValue VecPtr, EVT VecVT,
SDValue Index) const;
+ /// Method for building the DAG expansion of ISD::[US][ADD|SUB]SAT. This
+ /// method accepts integers as its arguments.
+ SDValue expandAddSubSat(SDNode *Node, SelectionDAG &DAG) const;
+
+ /// Method for building the DAG expansion of ISD::SMULFIX. This method accepts
+ /// integers as its arguments.
+ SDValue expandFixedPointMul(SDNode *Node, SelectionDAG &DAG) const;
+
//===--------------------------------------------------------------------===//
// Instruction Emitting Hooks
//
@@ -3732,9 +3923,10 @@
SDValue lowerCmpEqZeroToCtlzSrl(SDValue Op, SelectionDAG &DAG) const;
private:
- SDValue simplifySetCCWithAnd(EVT VT, SDValue N0, SDValue N1,
- ISD::CondCode Cond, DAGCombinerInfo &DCI,
- const SDLoc &DL) const;
+ SDValue foldSetCCWithAnd(EVT VT, SDValue N0, SDValue N1, ISD::CondCode Cond,
+ const SDLoc &DL, DAGCombinerInfo &DCI) const;
+ SDValue foldSetCCWithBinOp(EVT VT, SDValue N0, SDValue N1, ISD::CondCode Cond,
+ const SDLoc &DL, DAGCombinerInfo &DCI) const;
SDValue optimizeSetCCOfSignedTruncationCheck(EVT SCCVT, SDValue N0,
SDValue N1, ISD::CondCode Cond,
diff --git a/linux-x64/clang/include/llvm/CodeGen/TargetLoweringObjectFileImpl.h b/linux-x64/clang/include/llvm/CodeGen/TargetLoweringObjectFileImpl.h
index f5c7fc8..a1fb81c 100644
--- a/linux-x64/clang/include/llvm/CodeGen/TargetLoweringObjectFileImpl.h
+++ b/linux-x64/clang/include/llvm/CodeGen/TargetLoweringObjectFileImpl.h
@@ -1,9 +1,8 @@
//==- llvm/CodeGen/TargetLoweringObjectFileImpl.h - Object Info --*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -90,6 +89,8 @@
const MCExpr *lowerRelativeReference(const GlobalValue *LHS,
const GlobalValue *RHS,
const TargetMachine &TM) const override;
+
+ MCSection *getSectionForCommandLines() const override;
};
class TargetLoweringObjectFileMachO : public TargetLoweringObjectFile {
diff --git a/linux-x64/clang/include/llvm/CodeGen/TargetOpcodes.h b/linux-x64/clang/include/llvm/CodeGen/TargetOpcodes.h
index d0d959c..080a244 100644
--- a/linux-x64/clang/include/llvm/CodeGen/TargetOpcodes.h
+++ b/linux-x64/clang/include/llvm/CodeGen/TargetOpcodes.h
@@ -1,9 +1,8 @@
//===-- llvm/CodeGen/TargetOpcodes.h - Target Indep Opcodes -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/TargetPassConfig.h b/linux-x64/clang/include/llvm/CodeGen/TargetPassConfig.h
index 8f5c9cb..1def50d 100644
--- a/linux-x64/clang/include/llvm/CodeGen/TargetPassConfig.h
+++ b/linux-x64/clang/include/llvm/CodeGen/TargetPassConfig.h
@@ -1,9 +1,8 @@
//===- TargetPassConfig.h - Code Generation pass options --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -75,9 +74,6 @@
}
};
-template <> struct isPodLike<IdentifyingPassPtr> {
- static const bool value = true;
-};
/// Target-Independent Code Generator Pass Configuration Options.
///
@@ -90,6 +86,19 @@
AnalysisID StartAfter = nullptr;
AnalysisID StopBefore = nullptr;
AnalysisID StopAfter = nullptr;
+
+ unsigned StartBeforeInstanceNum = 0;
+ unsigned StartBeforeCount = 0;
+
+ unsigned StartAfterInstanceNum = 0;
+ unsigned StartAfterCount = 0;
+
+ unsigned StopBeforeInstanceNum = 0;
+ unsigned StopBeforeCount = 0;
+
+ unsigned StopAfterInstanceNum = 0;
+ unsigned StopAfterCount = 0;
+
bool Started = true;
bool Stopped = false;
bool AddingMachinePasses = false;
@@ -145,13 +154,13 @@
CodeGenOpt::Level getOptLevel() const;
- /// Describe the status of the codegen
- /// pipeline set by this target pass config.
- /// Having a limited codegen pipeline means that options
- /// have been used to restrict what codegen is doing.
- /// In particular, that means that codegen won't emit
- /// assembly code.
- bool hasLimitedCodeGenPipeline() const;
+ /// Returns true if one of the `-start-after`, `-start-before`, `-stop-after`
+ /// or `-stop-before` options is set.
+ static bool hasLimitedCodeGenPipeline();
+
+ /// Returns true if none of the `-stop-before` and `-stop-after` options is
+ /// set.
+ static bool willCompleteCodeGenPipeline();
/// If hasLimitedCodeGenPipeline is true, this method
/// returns a string with the name of the options, separated
@@ -159,13 +168,6 @@
std::string
getLimitedCodeGenPipelineReason(const char *Separator = "/") const;
- /// Check if the codegen pipeline is limited in such a way that it
- /// won't be complete. When the codegen pipeline is not complete,
- /// this means it may not be possible to generate assembly from it.
- bool willCompleteCodeGenPipeline() const {
- return !hasLimitedCodeGenPipeline() || (!StopAfter && !StopBefore);
- }
-
void setDisableVerify(bool Disable) { setOpt(DisableVerify, Disable); }
bool getEnableTailMerge() const { return EnableTailMerge; }
@@ -313,6 +315,10 @@
/// when GlobalISel failed and isGlobalISelAbortEnabled is false.
virtual bool reportDiagnosticWhenGlobalISelFallback() const;
+ /// Check whether continuous CSE should be enabled in GISel passes.
+ /// By default, it's enabled for non O0 levels.
+ virtual bool isGISelCSEEnabled() const;
+
protected:
// Helper to verify the analysis is really immutable.
void setOpt(bool &Opt, bool Val);
diff --git a/linux-x64/clang/include/llvm/CodeGen/TargetRegisterInfo.h b/linux-x64/clang/include/llvm/CodeGen/TargetRegisterInfo.h
index 0fbff31..5ed1e44 100644
--- a/linux-x64/clang/include/llvm/CodeGen/TargetRegisterInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/TargetRegisterInfo.h
@@ -1,9 +1,8 @@
//==- CodeGen/TargetRegisterInfo.h - Target Register Information -*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/TargetSchedule.h b/linux-x64/clang/include/llvm/CodeGen/TargetSchedule.h
index 6173925..cce85c8 100644
--- a/linux-x64/clang/include/llvm/CodeGen/TargetSchedule.h
+++ b/linux-x64/clang/include/llvm/CodeGen/TargetSchedule.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/TargetSchedule.h - Sched Machine Model ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/TargetSubtargetInfo.h b/linux-x64/clang/include/llvm/CodeGen/TargetSubtargetInfo.h
index e28673d..bf0e9b2 100644
--- a/linux-x64/clang/include/llvm/CodeGen/TargetSubtargetInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/TargetSubtargetInfo.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/TargetSubtargetInfo.h - Target Information --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -169,6 +168,19 @@
return isZeroIdiom(MI, Mask);
}
+ /// Returns true if MI is a candidate for move elimination.
+ ///
+ /// A candidate for move elimination may be optimized out at register renaming
+ /// stage. Subtargets can specify the set of optimizable moves by
+ /// instantiating tablegen class `IsOptimizableRegisterMove` (see
+ /// llvm/Target/TargetInstrPredicate.td).
+ ///
+ /// SubtargetEmitter is responsible for processing all the definitions of class
+ /// IsOptimizableRegisterMove, and auto-generate an override for this method.
+ virtual bool isOptimizableRegisterMove(const MachineInstr *MI) const {
+ return false;
+ }
+
/// True if the subtarget should run MachineScheduler after aggressive
/// coalescing.
///
@@ -177,9 +189,6 @@
/// TargetLowering preference). It does not yet disable the postRA scheduler.
virtual bool enableMachineScheduler() const;
- /// Support printing of [latency:throughput] comment in output .S file.
- virtual bool supportPrintSchedInfo() const { return false; }
-
/// True if the machine scheduler should disable the TLI preference
/// for preRA scheduling with the source level scheduler.
virtual bool enableMachineSchedDefaultSched() const { return true; }
@@ -273,10 +282,6 @@
/// possible.
virtual bool enableSubRegLiveness() const { return false; }
- /// Returns string representation of scheduler comment
- std::string getSchedInfoStr(const MachineInstr &MI) const;
- std::string getSchedInfoStr(MCInst const &MCI) const override;
-
/// This is called after a .mir file was loaded.
virtual void mirFileLoaded(MachineFunction &MF) const;
};
diff --git a/linux-x64/clang/include/llvm/CodeGen/UnreachableBlockElim.h b/linux-x64/clang/include/llvm/CodeGen/UnreachableBlockElim.h
index 3e7afd4..d52d7c3 100644
--- a/linux-x64/clang/include/llvm/CodeGen/UnreachableBlockElim.h
+++ b/linux-x64/clang/include/llvm/CodeGen/UnreachableBlockElim.h
@@ -1,9 +1,8 @@
//===-- UnreachableBlockElim.h - Remove unreachable blocks for codegen --===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/ValueTypes.h b/linux-x64/clang/include/llvm/CodeGen/ValueTypes.h
index d2ef4a9..c540c94 100644
--- a/linux-x64/clang/include/llvm/CodeGen/ValueTypes.h
+++ b/linux-x64/clang/include/llvm/CodeGen/ValueTypes.h
@@ -1,9 +1,8 @@
//===- CodeGen/ValueTypes.h - Low-Level Target independ. types --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/ValueTypes.td b/linux-x64/clang/include/llvm/CodeGen/ValueTypes.td
index 0abb4ec..f82faf2 100644
--- a/linux-x64/clang/include/llvm/CodeGen/ValueTypes.td
+++ b/linux-x64/clang/include/llvm/CodeGen/ValueTypes.td
@@ -1,9 +1,8 @@
//===- ValueTypes.td - ValueType definitions ---------------*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/VirtRegMap.h b/linux-x64/clang/include/llvm/CodeGen/VirtRegMap.h
index 6a8e50a..7bdecbe 100644
--- a/linux-x64/clang/include/llvm/CodeGen/VirtRegMap.h
+++ b/linux-x64/clang/include/llvm/CodeGen/VirtRegMap.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/VirtRegMap.h - Virtual Register Map ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/CodeGen/WasmEHFuncInfo.h b/linux-x64/clang/include/llvm/CodeGen/WasmEHFuncInfo.h
index aa97934..aaca847 100644
--- a/linux-x64/clang/include/llvm/CodeGen/WasmEHFuncInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/WasmEHFuncInfo.h
@@ -1,9 +1,8 @@
//===--- llvm/CodeGen/WasmEHFuncInfo.h --------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -21,6 +20,8 @@
namespace llvm {
+enum EventTag { CPP_EXCEPTION = 0, C_LONGJMP = 1 };
+
using BBOrMBB = PointerUnion<const BasicBlock *, MachineBasicBlock *>;
struct WasmEHFuncInfo {
diff --git a/linux-x64/clang/include/llvm/CodeGen/WinEHFuncInfo.h b/linux-x64/clang/include/llvm/CodeGen/WinEHFuncInfo.h
index 8043024..f098316 100644
--- a/linux-x64/clang/include/llvm/CodeGen/WinEHFuncInfo.h
+++ b/linux-x64/clang/include/llvm/CodeGen/WinEHFuncInfo.h
@@ -1,9 +1,8 @@
//===- llvm/CodeGen/WinEHFuncInfo.h -----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Config/AsmParsers.def b/linux-x64/clang/include/llvm/Config/AsmParsers.def
index 931883b..300ab0e 100644
--- a/linux-x64/clang/include/llvm/Config/AsmParsers.def
+++ b/linux-x64/clang/include/llvm/Config/AsmParsers.def
@@ -1,9 +1,9 @@
/*===- llvm/Config/AsmParsers.def - LLVM Assembly Parsers -------*- C++ -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm/Config/AsmPrinters.def b/linux-x64/clang/include/llvm/Config/AsmPrinters.def
index e01fe2b..43fa135 100644
--- a/linux-x64/clang/include/llvm/Config/AsmPrinters.def
+++ b/linux-x64/clang/include/llvm/Config/AsmPrinters.def
@@ -1,9 +1,9 @@
/*===- llvm/Config/AsmPrinters.def - LLVM Assembly Printers -----*- C++ -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm/Config/Disassemblers.def b/linux-x64/clang/include/llvm/Config/Disassemblers.def
index 21f4b0c..7793ee4 100644
--- a/linux-x64/clang/include/llvm/Config/Disassemblers.def
+++ b/linux-x64/clang/include/llvm/Config/Disassemblers.def
@@ -1,9 +1,9 @@
/*===- llvm/Config/Disassemblers.def - LLVM Assembly Parsers ----*- C++ -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm/Config/Targets.def b/linux-x64/clang/include/llvm/Config/Targets.def
index 02725f3..61f46b7 100644
--- a/linux-x64/clang/include/llvm/Config/Targets.def
+++ b/linux-x64/clang/include/llvm/Config/Targets.def
@@ -1,9 +1,9 @@
/*===- llvm/Config/Targets.def - LLVM Target Architectures ------*- C++ -*-===*\
|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
+|* 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 *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
diff --git a/linux-x64/clang/include/llvm/Config/abi-breaking.h b/linux-x64/clang/include/llvm/Config/abi-breaking.h
index d7f82e1..3338004 100644
--- a/linux-x64/clang/include/llvm/Config/abi-breaking.h
+++ b/linux-x64/clang/include/llvm/Config/abi-breaking.h
@@ -1,9 +1,9 @@
/*===------- llvm/Config/abi-breaking.h - llvm configuration -------*- C -*-===*/
/* */
-/* The LLVM Compiler Infrastructure */
-/* */
-/* This file is distributed under the University of Illinois Open Source */
-/* License. See LICENSE.TXT for details. */
+/* 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 */
/* */
/*===----------------------------------------------------------------------===*/
diff --git a/linux-x64/clang/include/llvm/Config/llvm-config.h b/linux-x64/clang/include/llvm/Config/llvm-config.h
index 5895e85..483d60c 100644
--- a/linux-x64/clang/include/llvm/Config/llvm-config.h
+++ b/linux-x64/clang/include/llvm/Config/llvm-config.h
@@ -1,9 +1,9 @@
/*===------- llvm/Config/llvm-config.h - llvm configuration -------*- C -*-===*/
/* */
-/* The LLVM Compiler Infrastructure */
-/* */
-/* This file is distributed under the University of Illinois Open Source */
-/* License. See LICENSE.TXT for details. */
+/* 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 */
/* */
/*===----------------------------------------------------------------------===*/
@@ -66,16 +66,16 @@
#define LLVM_USE_PERF 0
/* Major version of the LLVM API */
-#define LLVM_VERSION_MAJOR 8
+#define LLVM_VERSION_MAJOR 9
/* Minor version of the LLVM API */
#define LLVM_VERSION_MINOR 0
/* Patch version of the LLVM API */
-#define LLVM_VERSION_PATCH 4
+#define LLVM_VERSION_PATCH 3
/* LLVM version string */
-#define LLVM_VERSION_STRING "8.0.4svn"
+#define LLVM_VERSION_STRING "9.0.3svn"
/* Whether LLVM records statistics for use with GetStatistics(),
* PrintStatistics() or PrintStatisticsJSON()
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/AppendingTypeTableBuilder.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/AppendingTypeTableBuilder.h
index bd17435..0ac8b65 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/AppendingTypeTableBuilder.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/AppendingTypeTableBuilder.h
@@ -1,9 +1,8 @@
//===- AppendingTypeTableBuilder.h -------------------------------*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/CVRecord.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/CVRecord.h
index 9dbeb43..1df3d16 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/CVRecord.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/CVRecord.h
@@ -1,9 +1,8 @@
-//===- RecordIterator.h -----------------------------------------*- C++ -*-===//
+//===- CVRecord.h -----------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -45,13 +44,8 @@
return RecordData.drop_front(sizeof(RecordPrefix));
}
- Optional<uint32_t> hash() const { return Hash; }
-
- void setHash(uint32_t Value) { Hash = Value; }
-
Kind Type;
ArrayRef<uint8_t> RecordData;
- Optional<uint32_t> Hash;
};
template <typename Kind> struct RemappedRecord {
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/CVSymbolVisitor.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/CVSymbolVisitor.h
index 7c8cd12..1615ff4 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/CVSymbolVisitor.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/CVSymbolVisitor.h
@@ -1,9 +1,8 @@
//===- CVSymbolVisitor.h ----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/CVTypeVisitor.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/CVTypeVisitor.h
index b765ba1..7538cb2 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/CVTypeVisitor.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/CVTypeVisitor.h
@@ -1,9 +1,8 @@
//===- CVTypeVisitor.h ------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeView.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeView.h
index 4b96bc1..4fbf507 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeView.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeView.h
@@ -1,9 +1,8 @@
//===- CodeView.h -----------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -358,7 +357,9 @@
Const = 0x00000400,
Unaligned = 0x00000800,
Restrict = 0x00001000,
- WinRTSmartPointer = 0x00080000
+ WinRTSmartPointer = 0x00080000,
+ LValueRefThisPointer = 0x00100000,
+ RValueRefThisPointer = 0x00200000
};
CV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS(PointerOptions)
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewError.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewError.h
index d4615d0..9990c8d 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewError.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewError.h
@@ -1,9 +1,8 @@
//===- CodeViewError.h - Error extensions for CodeView ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewRecordIO.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewRecordIO.h
index 94f104f..b2476f1 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewRecordIO.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewRecordIO.h
@@ -1,9 +1,8 @@
//===- CodeViewRecordIO.h ---------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewRegisters.def b/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewRegisters.def
index fdfcf4d..0593bc0 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewRegisters.def
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewRegisters.def
@@ -1,9 +1,8 @@
//===-- CodeViewRegisters.def - CodeView registers --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewSymbols.def b/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewSymbols.def
index b5f1cc0..e36d804 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewSymbols.def
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewSymbols.def
@@ -1,9 +1,8 @@
//===-- CodeViewSymbols.def - All CodeView leaf types -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewTypes.def b/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewTypes.def
index e9a479d..a31111e 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewTypes.def
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/CodeViewTypes.def
@@ -1,9 +1,8 @@
//===-- CodeViewTypes.def - All CodeView leaf types -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/ContinuationRecordBuilder.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/ContinuationRecordBuilder.h
index 7f851a2..cd67f78 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/ContinuationRecordBuilder.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/ContinuationRecordBuilder.h
@@ -1,9 +1,8 @@
//===- ContinuationRecordBuilder.h ------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugChecksumsSubsection.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugChecksumsSubsection.h
index 78b2845..01f8367 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugChecksumsSubsection.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugChecksumsSubsection.h
@@ -1,9 +1,8 @@
//===- DebugChecksumsSubsection.h -------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugCrossExSubsection.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugCrossExSubsection.h
index 2f9e981..64a78a7 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugCrossExSubsection.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugCrossExSubsection.h
@@ -1,9 +1,8 @@
//===- DebugCrossExSubsection.h ---------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugCrossImpSubsection.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugCrossImpSubsection.h
index 8be7ef2..e7683cb 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugCrossImpSubsection.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugCrossImpSubsection.h
@@ -1,9 +1,8 @@
-//===- DebugCrossExSubsection.h ---------------------------------*- C++ -*-===//
+//===- DebugCrossImpSubsection.h --------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugFrameDataSubsection.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugFrameDataSubsection.h
index f74120a..d5cd640 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugFrameDataSubsection.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugFrameDataSubsection.h
@@ -1,9 +1,8 @@
//===- DebugFrameDataSubsection.h ------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -13,6 +12,7 @@
#include "llvm/DebugInfo/CodeView/CodeView.h"
#include "llvm/DebugInfo/CodeView/DebugSubsection.h"
#include "llvm/Support/BinaryStreamReader.h"
+#include "llvm/Support/Endian.h"
#include "llvm/Support/Error.h"
namespace llvm {
@@ -31,10 +31,10 @@
FixedStreamArray<FrameData>::Iterator begin() const { return Frames.begin(); }
FixedStreamArray<FrameData>::Iterator end() const { return Frames.end(); }
- const uint32_t *getRelocPtr() const { return RelocPtr; }
+ const support::ulittle32_t *getRelocPtr() const { return RelocPtr; }
private:
- const uint32_t *RelocPtr = nullptr;
+ const support::ulittle32_t *RelocPtr = nullptr;
FixedStreamArray<FrameData> Frames;
};
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugInlineeLinesSubsection.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugInlineeLinesSubsection.h
index b88c0ea..1ca2bd0 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugInlineeLinesSubsection.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugInlineeLinesSubsection.h
@@ -1,9 +1,8 @@
//===- DebugInlineeLinesSubsection.h ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugLinesSubsection.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugLinesSubsection.h
index 53044b6..1f8e56c 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugLinesSubsection.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugLinesSubsection.h
@@ -1,9 +1,8 @@
//===- DebugLinesSubsection.h -----------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugStringTableSubsection.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugStringTableSubsection.h
index bebc960..6e5b8ad 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugStringTableSubsection.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugStringTableSubsection.h
@@ -1,9 +1,8 @@
//===- DebugStringTableSubsection.h - CodeView String Table -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSubsection.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSubsection.h
index e427e00..6627287 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSubsection.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSubsection.h
@@ -1,9 +1,8 @@
//===- DebugSubsection.h ------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSubsectionRecord.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSubsectionRecord.h
index fc0cf0d..bcb379f 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSubsectionRecord.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSubsectionRecord.h
@@ -1,9 +1,8 @@
//===- DebugSubsectionRecord.h ----------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSubsectionVisitor.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSubsectionVisitor.h
index 75f749d..720b1b4 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSubsectionVisitor.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSubsectionVisitor.h
@@ -1,9 +1,8 @@
//===- DebugSubsectionVisitor.h -----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSymbolRVASubsection.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSymbolRVASubsection.h
index a4c04b5..91b740c 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSymbolRVASubsection.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSymbolRVASubsection.h
@@ -1,9 +1,8 @@
//===- DebugSymbolRVASubsection.h -------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSymbolsSubsection.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSymbolsSubsection.h
index dfda7de..784fc59 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSymbolsSubsection.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugSymbolsSubsection.h
@@ -1,9 +1,8 @@
//===- DebugSymbolsSubsection.h --------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugUnknownSubsection.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugUnknownSubsection.h
index ea9a96c..fa7df32 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugUnknownSubsection.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/DebugUnknownSubsection.h
@@ -1,9 +1,8 @@
//===- DebugUnknownSubsection.h -----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/EnumTables.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/EnumTables.h
index ee0f0f7..74f8c71 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/EnumTables.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/EnumTables.h
@@ -1,9 +1,8 @@
//===- EnumTables.h - Enum to string conversion tables ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/Formatters.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/Formatters.h
index 278ad02..7d04a6a 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/Formatters.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/Formatters.h
@@ -1,9 +1,8 @@
//===- Formatters.h ---------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/FunctionId.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/FunctionId.h
index 1af3da8..bc10227 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/FunctionId.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/FunctionId.h
@@ -1,9 +1,8 @@
//===- FunctionId.h ---------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/GUID.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/GUID.h
index a055ce9..5f807e6 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/GUID.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/GUID.h
@@ -1,9 +1,8 @@
//===- GUID.h ---------------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/GlobalTypeTableBuilder.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/GlobalTypeTableBuilder.h
index c470416..a43ce20 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/GlobalTypeTableBuilder.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/GlobalTypeTableBuilder.h
@@ -1,9 +1,8 @@
//===- GlobalTypeTableBuilder.h ----------------------------------*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -74,14 +73,30 @@
CreateFunc Create) {
auto Result = HashedRecords.try_emplace(Hash, nextTypeIndex());
- if (LLVM_UNLIKELY(Result.second)) {
+ if (LLVM_UNLIKELY(Result.second /*inserted*/ ||
+ Result.first->second.isSimple())) {
uint8_t *Stable = RecordStorage.Allocate<uint8_t>(RecordSize);
MutableArrayRef<uint8_t> Data(Stable, RecordSize);
- SeenRecords.push_back(Create(Data));
+ ArrayRef<uint8_t> StableRecord = Create(Data);
+ if (StableRecord.empty()) {
+ // Records with forward references into the Type stream will be deferred
+ // for insertion at a later time, on the second pass.
+ Result.first->getSecond() = TypeIndex(SimpleTypeKind::NotTranslated);
+ return TypeIndex(SimpleTypeKind::NotTranslated);
+ }
+ if (Result.first->second.isSimple()) {
+ assert(Result.first->second.getIndex() ==
+ (uint32_t)SimpleTypeKind::NotTranslated);
+ // On the second pass, update with index to remapped record. The
+ // (initially misbehaved) record will now come *after* other records
+ // resolved in the first pass, with proper *back* references in the
+ // stream.
+ Result.first->second = nextTypeIndex();
+ }
+ SeenRecords.push_back(StableRecord);
SeenHashes.push_back(Hash);
}
- // Update the caller's copy of Record to point a stable copy.
return Result.first->second;
}
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/LazyRandomTypeCollection.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/LazyRandomTypeCollection.h
index 383f7dd..4e03627 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/LazyRandomTypeCollection.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/LazyRandomTypeCollection.h
@@ -1,9 +1,8 @@
//===- LazyRandomTypeCollection.h -------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/Line.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/Line.h
index ac229c3..eb2aa15 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/Line.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/Line.h
@@ -1,9 +1,8 @@
//===- Line.h ---------------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/MergingTypeTableBuilder.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/MergingTypeTableBuilder.h
index 9030918..1b2f6d2 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/MergingTypeTableBuilder.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/MergingTypeTableBuilder.h
@@ -1,9 +1,8 @@
//===- MergingTypeTableBuilder.h ---------------------------------*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/RecordName.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/RecordName.h
index b022108..cc09db8 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/RecordName.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/RecordName.h
@@ -1,9 +1,8 @@
//===- RecordName.h ------------------------------------------- *- C++ --*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/RecordSerialization.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/RecordSerialization.h
index 58449c2..618146c 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/RecordSerialization.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/RecordSerialization.h
@@ -1,9 +1,8 @@
//===- RecordSerialization.h ------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -180,26 +179,6 @@
return serialize_numeric_impl<T>(Item);
}
-// This field is only present in the byte record if the condition is true. The
-// condition is evaluated lazily, so it can depend on items that were
-// deserialized
-// earlier.
-#define CV_CONDITIONAL_FIELD(I, C) \
- serialize_conditional(I, [&]() { return !!(C); })
-
-// This is an array of N items, where N is evaluated lazily, so it can refer
-// to a field deserialized earlier.
-#define CV_ARRAY_FIELD_N(I, N) serialize_array(I, [&]() { return N; })
-
-// This is an array that exhausts the remainder of the input buffer.
-#define CV_ARRAY_FIELD_TAIL(I) serialize_array_tail(I)
-
-// This is an array that consumes null terminated strings until a double null
-// is encountered.
-#define CV_STRING_ARRAY_NULL_TERM(I) serialize_null_term_string_array(I)
-
-#define CV_NUMERIC_FIELD(I) serialize_numeric(I)
-
template <typename T, typename U>
Error consume(BinaryStreamReader &Reader,
const serialize_conditional_impl<T, U> &Item) {
@@ -242,9 +221,6 @@
return consume(Reader, Y, std::forward<Args>(Rest)...);
}
-#define CV_DESERIALIZE(...) \
- if (auto EC = consume(__VA_ARGS__)) \
- return std::move(EC);
}
}
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SimpleTypeSerializer.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SimpleTypeSerializer.h
index a85d927..3ca09b4 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SimpleTypeSerializer.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SimpleTypeSerializer.h
@@ -1,9 +1,8 @@
//===- SimpleTypeSerializer.h -----------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/StringsAndChecksums.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/StringsAndChecksums.h
index 22a333e..22a283e 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/StringsAndChecksums.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/StringsAndChecksums.h
@@ -1,9 +1,8 @@
//===- StringsAndChecksums.h ------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h
index b5479db..62761cb 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h
@@ -1,9 +1,8 @@
//===- SymbolDeserializer.h -------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -47,7 +46,7 @@
return Error::success();
}
template <typename T> static Expected<T> deserializeAs(CVSymbol Symbol) {
- T Record(Symbol.kind());
+ T Record(static_cast<SymbolRecordKind>(Symbol.kind()));
if (auto EC = deserializeAs<T>(Symbol, Record))
return std::move(EC);
return Record;
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolDumpDelegate.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolDumpDelegate.h
index 823636c..12f45dc 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolDumpDelegate.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolDumpDelegate.h
@@ -1,9 +1,8 @@
//===-- SymbolDumpDelegate.h ------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolDumper.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolDumper.h
index 215da2e..d832a48 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolDumper.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolDumper.h
@@ -1,9 +1,8 @@
//===-- SymbolDumper.h - CodeView symbol info dumper ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolRecord.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolRecord.h
index c63fb98..ac7b106 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolRecord.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolRecord.h
@@ -1,9 +1,8 @@
//===- SymbolRecord.h -------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -400,6 +399,7 @@
uint16_t Module;
StringRef Name;
+ uint16_t modi() const { return Module - 1; }
uint32_t RecordOffset;
};
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolRecordHelpers.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolRecordHelpers.h
new file mode 100644
index 0000000..57dbc56
--- /dev/null
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolRecordHelpers.h
@@ -0,0 +1,61 @@
+//===- SymbolRecordHelpers.h ------------------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_DEBUGINFO_CODEVIEW_SYMBOLRECORDHELPERS_H
+#define LLVM_DEBUGINFO_CODEVIEW_SYMBOLRECORDHELPERS_H
+
+#include "llvm/DebugInfo/CodeView/SymbolRecord.h"
+
+namespace llvm {
+namespace codeview {
+/// Return true if this symbol opens a scope. This implies that the symbol has
+/// "parent" and "end" fields, which contain the offset of the S_END or
+/// S_INLINESITE_END record.
+inline bool symbolOpensScope(SymbolKind Kind) {
+ switch (Kind) {
+ case SymbolKind::S_GPROC32:
+ case SymbolKind::S_LPROC32:
+ case SymbolKind::S_LPROC32_ID:
+ case SymbolKind::S_GPROC32_ID:
+ case SymbolKind::S_BLOCK32:
+ case SymbolKind::S_SEPCODE:
+ case SymbolKind::S_THUNK32:
+ case SymbolKind::S_INLINESITE:
+ case SymbolKind::S_INLINESITE2:
+ return true;
+ default:
+ break;
+ }
+ return false;
+}
+
+/// Return true if this ssymbol ends a scope.
+inline bool symbolEndsScope(SymbolKind Kind) {
+ switch (Kind) {
+ case SymbolKind::S_END:
+ case SymbolKind::S_PROC_ID_END:
+ case SymbolKind::S_INLINESITE_END:
+ return true;
+ default:
+ break;
+ }
+ return false;
+}
+
+/// Given a symbol P for which symbolOpensScope(P) == true, return the
+/// corresponding end offset.
+uint32_t getScopeEndOffset(const CVSymbol &Symbol);
+uint32_t getScopeParentOffset(const CVSymbol &Symbol);
+
+CVSymbolArray limitSymbolArrayToScope(const CVSymbolArray &Symbols,
+ uint32_t ScopeBegin);
+
+} // namespace codeview
+} // namespace llvm
+
+#endif
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolRecordMapping.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolRecordMapping.h
index 391e8f1..34368b6 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolRecordMapping.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolRecordMapping.h
@@ -1,9 +1,8 @@
//===- SymbolRecordMapping.h ------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolSerializer.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolSerializer.h
index f4d8ab0..08271c1 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolSerializer.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolSerializer.h
@@ -1,9 +1,8 @@
//===- SymbolSerializer.h ---------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h
index e29511a..145d63a 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h
@@ -1,9 +1,8 @@
//===- SymbolVisitorCallbackPipeline.h --------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h
index 0816f7c..1a4d5b9 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h
@@ -1,9 +1,8 @@
//===- SymbolVisitorCallbacks.h ---------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolVisitorDelegate.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolVisitorDelegate.h
index a2a3c6f..368d8b2 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolVisitorDelegate.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/SymbolVisitorDelegate.h
@@ -1,9 +1,8 @@
//===-- SymbolVisitorDelegate.h ---------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeCollection.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeCollection.h
index e9fc9b0..58b1dd0 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeCollection.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeCollection.h
@@ -1,9 +1,8 @@
//===- TypeCollection.h - A collection of CodeView type records -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeDeserializer.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeDeserializer.h
index 9887d90..d2ee347 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeDeserializer.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeDeserializer.h
@@ -1,9 +1,8 @@
//===- TypeDeserializer.h ---------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h
index afb8b36..41a219a 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h
@@ -1,9 +1,8 @@
//===-- TypeDumpVisitor.h - CodeView type info dumper -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeHashing.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeHashing.h
index 1f732d2..c2fbff6 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeHashing.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeHashing.h
@@ -1,9 +1,8 @@
//===- TypeHashing.h ---------------------------------------------*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -85,6 +84,8 @@
}
std::array<uint8_t, 8> Hash;
+ bool empty() const { return *(const uint64_t*)Hash.data() == 0; }
+
/// Given a sequence of bytes representing a record, compute a global hash for
/// this record. Due to the nature of global hashes incorporating the hashes
/// of referenced records, this function requires a list of types and ids
@@ -108,8 +109,33 @@
template <typename Range>
static std::vector<GloballyHashedType> hashTypes(Range &&Records) {
std::vector<GloballyHashedType> Hashes;
- for (const auto &R : Records)
- Hashes.push_back(hashType(R, Hashes, Hashes));
+ bool UnresolvedRecords = false;
+ for (const auto &R : Records) {
+ GloballyHashedType H = hashType(R, Hashes, Hashes);
+ if (H.empty())
+ UnresolvedRecords = true;
+ Hashes.push_back(H);
+ }
+
+ // In some rare cases, there might be records with forward references in the
+ // stream. Several passes might be needed to fully hash each record in the
+ // Type stream. However this occurs on very small OBJs generated by MASM,
+ // with a dozen records at most. Therefore this codepath isn't
+ // time-critical, as it isn't taken in 99% of cases.
+ while (UnresolvedRecords) {
+ UnresolvedRecords = false;
+ auto HashIt = Hashes.begin();
+ for (const auto &R : Records) {
+ if (HashIt->empty()) {
+ GloballyHashedType H = hashType(R, Hashes, Hashes);
+ if (H.empty())
+ UnresolvedRecords = true;
+ else
+ *HashIt = H;
+ }
+ ++HashIt;
+ }
+ }
return Hashes;
}
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeIndex.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeIndex.h
index 681b5f3..b9e2562 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeIndex.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeIndex.h
@@ -1,9 +1,8 @@
//===- TypeIndex.h ----------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -145,6 +144,13 @@
return TypeIndex(SimpleTypeKind::Void, SimpleTypeMode::NearPointer64);
}
+ static TypeIndex NullptrT() {
+ // std::nullptr_t uses the pointer mode that doesn't indicate bit-width,
+ // presumably because std::nullptr_t is intended to be compatible with any
+ // pointer type.
+ return TypeIndex(SimpleTypeKind::Void, SimpleTypeMode::NearPointer);
+ }
+
static TypeIndex SignedCharacter() {
return TypeIndex(SimpleTypeKind::SignedCharacter);
}
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeIndexDiscovery.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeIndexDiscovery.h
index c424a09..4697687 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeIndexDiscovery.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeIndexDiscovery.h
@@ -1,9 +1,8 @@
//===- TypeIndexDiscovery.h -------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeRecord.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeRecord.h
index ee6f538..b147dd6 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeRecord.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeRecord.h
@@ -1,9 +1,8 @@
//===- TypeRecord.h ---------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -95,6 +94,11 @@
return MP == MethodKind::IntroducingVirtual ||
MP == MethodKind::PureIntroducingVirtual;
}
+
+ /// Is this method static.
+ bool isStatic() const {
+ return getMethodKind() == MethodKind::Static;
+ }
};
// Does not correspond to any tag, this is the tail of an LF_POINTER record
@@ -264,14 +268,18 @@
// LF_POINTER
class PointerRecord : public TypeRecord {
public:
+ // ---------------------------XXXXX
static const uint32_t PointerKindShift = 0;
static const uint32_t PointerKindMask = 0x1F;
+ // ------------------------XXX-----
static const uint32_t PointerModeShift = 5;
static const uint32_t PointerModeMask = 0x07;
- static const uint32_t PointerOptionMask = 0xFF;
+ // ----------XXX------XXXXX--------
+ static const uint32_t PointerOptionMask = 0x381f00;
+ // -------------XXXXXX------------
static const uint32_t PointerSizeShift = 13;
static const uint32_t PointerSizeMask = 0xFF;
@@ -305,7 +313,7 @@
}
PointerOptions getOptions() const {
- return static_cast<PointerOptions>(Attrs);
+ return static_cast<PointerOptions>(Attrs & PointerOptionMask);
}
uint8_t getSize() const {
@@ -334,6 +342,14 @@
return !!(Attrs & uint32_t(PointerOptions::Restrict));
}
+ bool isLValueReferenceThisPtr() const {
+ return !!(Attrs & uint32_t(PointerOptions::LValueRefThisPointer));
+ }
+
+ bool isRValueReferenceThisPtr() const {
+ return !!(Attrs & uint32_t(PointerOptions::RValueRefThisPointer));
+ }
+
TypeIndex ReferentType;
uint32_t Attrs;
Optional<MemberPointerInfo> MemberInfo;
@@ -429,6 +445,14 @@
return (Options & ClassOptions::ForwardReference) != ClassOptions::None;
}
+ bool containsNestedClass() const {
+ return (Options & ClassOptions::ContainsNestedClass) != ClassOptions::None;
+ }
+
+ bool isScoped() const {
+ return (Options & ClassOptions::Scoped) != ClassOptions::None;
+ }
+
uint16_t getMemberCount() const { return MemberCount; }
ClassOptions getOptions() const { return Options; }
TypeIndex getFieldList() const { return FieldList; }
@@ -655,7 +679,17 @@
ArrayRef<TypeIndex> getArgs() const { return ArgIndices; }
- SmallVector<TypeIndex, 4> ArgIndices;
+ /// Indices of known build info arguments.
+ enum BuildInfoArg {
+ CurrentDirectory, ///< Absolute CWD path
+ BuildTool, ///< Absolute compiler path
+ SourceFile, ///< Path to main source file, relative or absolute
+ TypeServerPDB, ///< Absolute path of type server PDB (/Fd)
+ CommandLine, ///< Full canonical command line (maybe -cc1)
+ MaxArgs
+ };
+
+ SmallVector<TypeIndex, MaxArgs> ArgIndices;
};
// LF_VFTABLE
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeRecordHelpers.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeRecordHelpers.h
index 389472e..e84704d 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeRecordHelpers.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeRecordHelpers.h
@@ -1,9 +1,8 @@
//===- TypeRecordHelpers.h --------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h
index cbe8d60..b885d54 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h
@@ -1,9 +1,8 @@
//===- TypeRecordMapping.h --------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h
index 583740d..d0506cc 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h
@@ -1,9 +1,8 @@
//===- TypeStreamMerger.h ---------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -83,18 +82,21 @@
Error mergeTypeAndIdRecords(MergingTypeTableBuilder &DestIds,
MergingTypeTableBuilder &DestTypes,
SmallVectorImpl<TypeIndex> &SourceToDest,
- const CVTypeArray &IdsAndTypes);
+ const CVTypeArray &IdsAndTypes,
+ Optional<uint32_t> &PCHSignature);
Error mergeTypeAndIdRecords(GlobalTypeTableBuilder &DestIds,
GlobalTypeTableBuilder &DestTypes,
SmallVectorImpl<TypeIndex> &SourceToDest,
const CVTypeArray &IdsAndTypes,
- ArrayRef<GloballyHashedType> Hashes);
+ ArrayRef<GloballyHashedType> Hashes,
+ Optional<uint32_t> &PCHSignature);
Error mergeTypeRecords(GlobalTypeTableBuilder &Dest,
SmallVectorImpl<TypeIndex> &SourceToDest,
const CVTypeArray &Types,
- ArrayRef<GloballyHashedType> Hashes);
+ ArrayRef<GloballyHashedType> Hashes,
+ Optional<uint32_t> &PCHSignature);
Error mergeIdRecords(GlobalTypeTableBuilder &Dest, ArrayRef<TypeIndex> Types,
SmallVectorImpl<TypeIndex> &SourceToDest,
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeSymbolEmitter.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeSymbolEmitter.h
index dfba83d..4f2e5de 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeSymbolEmitter.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeSymbolEmitter.h
@@ -1,9 +1,8 @@
//===- TypeSymbolEmitter.h --------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeTableCollection.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeTableCollection.h
index 80326a0..5cbe340 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeTableCollection.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeTableCollection.h
@@ -1,9 +1,8 @@
//===- TypeTableCollection.h ---------------------------------- *- C++ --*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h
index 126fb8a..fb0b579 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h
@@ -1,9 +1,8 @@
//===- TypeVisitorCallbackPipeline.h ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h
index d7a4733..33f8b1f 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h
@@ -1,9 +1,8 @@
//===- TypeVisitorCallbacks.h -----------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DIContext.h b/linux-x64/clang/include/llvm/DebugInfo/DIContext.h
index bbdd5e0..a41ab21 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DIContext.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DIContext.h
@@ -1,9 +1,8 @@
//===- DIContext.h ----------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -81,7 +80,7 @@
public:
DIInliningInfo() = default;
- DILineInfo getFrame(unsigned Index) const {
+ const DILineInfo & getFrame(unsigned Index) const {
assert(Index < Frames.size());
return Frames[Index];
}
@@ -98,6 +97,11 @@
void addFrame(const DILineInfo &Frame) {
Frames.push_back(Frame);
}
+
+ void resize(unsigned i) {
+ Frames.resize(i);
+ }
+
};
/// Container for description of a global variable.
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h
index 84b2339..ccf2891 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h
@@ -1,9 +1,8 @@
//===- DWARFAbbreviationDeclaration.h ---------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h
index 1d44872..0f09a59 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h
@@ -1,9 +1,8 @@
//===- DWARFAcceleratorTable.h ----------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFAddressRange.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFAddressRange.h
index 5a7df5c..56d46c6 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFAddressRange.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFAddressRange.h
@@ -1,9 +1,8 @@
//===- DWARFAddressRange.h --------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFAttribute.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFAttribute.h
index f0672bb..fc6f0a4 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFAttribute.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFAttribute.h
@@ -1,9 +1,8 @@
//===- DWARFAttribute.h -----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFCompileUnit.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFCompileUnit.h
index 27d56d7..16b9bfb 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFCompileUnit.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFCompileUnit.h
@@ -1,9 +1,8 @@
//===- DWARFCompileUnit.h ---------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -18,13 +17,13 @@
class DWARFCompileUnit : public DWARFUnit {
public:
DWARFCompileUnit(DWARFContext &Context, const DWARFSection &Section,
- const DWARFUnitHeader &Header,
- const DWARFDebugAbbrev *DA, const DWARFSection *RS,
+ const DWARFUnitHeader &Header, const DWARFDebugAbbrev *DA,
+ const DWARFSection *RS, const DWARFSection *LocSection,
StringRef SS, const DWARFSection &SOS,
const DWARFSection *AOS, const DWARFSection &LS, bool LE,
bool IsDWO, const DWARFUnitVector &UnitVector)
- : DWARFUnit(Context, Section, Header, DA, RS, SS, SOS, AOS, LS, LE, IsDWO,
- UnitVector) {}
+ : DWARFUnit(Context, Section, Header, DA, RS, LocSection, SS, SOS, AOS,
+ LS, LE, IsDWO, UnitVector) {}
/// VTable anchor.
~DWARFCompileUnit() override;
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFContext.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFContext.h
index c5b98ea..e415927 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFContext.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFContext.h
@@ -1,9 +1,8 @@
//===- DWARFContext.h -------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===/
@@ -76,7 +75,7 @@
DWARFUnitVector DWOUnits;
std::unique_ptr<DWARFDebugAbbrev> AbbrevDWO;
- std::unique_ptr<DWARFDebugLocDWO> LocDWO;
+ std::unique_ptr<DWARFDebugLoclists> LocDWO;
/// The maximum DWARF version of all units.
unsigned MaxVersion = 0;
@@ -262,7 +261,7 @@
const DWARFDebugAbbrev *getDebugAbbrevDWO();
/// Get a pointer to the parsed DebugLoc object.
- const DWARFDebugLocDWO *getDebugLocDWO();
+ const DWARFDebugLoclists *getDebugLocDWO();
/// Get a pointer to the parsed DebugAranges object.
const DWARFDebugAranges *getDebugAranges();
@@ -360,6 +359,10 @@
/// Dump Error as warning message to stderr.
static void dumpWarning(Error Warning);
+ Triple::ArchType getArch() const {
+ return getDWARFObj().getFile()->getArch();
+ }
+
private:
/// Return the compile unit which contains instruction with provided
/// address.
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDataExtractor.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDataExtractor.h
index 1ed0875..7c2a159 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDataExtractor.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDataExtractor.h
@@ -1,9 +1,8 @@
//===- DWARFDataExtractor.h -------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugAbbrev.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugAbbrev.h
index d277ec3..28fd848 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugAbbrev.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugAbbrev.h
@@ -1,9 +1,8 @@
//===- DWARFDebugAbbrev.h ---------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugAddr.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugAddr.h
index ffbd1b0..a98bf28 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugAddr.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugAddr.h
@@ -1,9 +1,8 @@
//===- DWARFDebugAddr.h -------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugArangeSet.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugArangeSet.h
index ab46fac..5b6c578 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugArangeSet.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugArangeSet.h
@@ -1,9 +1,8 @@
//===- DWARFDebugArangeSet.h ------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugAranges.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugAranges.h
index ea71a50..6d3af24 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugAranges.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugAranges.h
@@ -1,9 +1,8 @@
//===- DWARFDebugAranges.h --------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h
index ff1c7fb..d960f4b 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h
@@ -1,9 +1,8 @@
//===- DWARFDebugFrame.h - Parsing of .debug_frame --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -13,6 +12,7 @@
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/iterator.h"
#include "llvm/ADT/SmallString.h"
+#include "llvm/ADT/Triple.h"
#include "llvm/DebugInfo/DWARF/DWARFDataExtractor.h"
#include "llvm/DebugInfo/DWARF/DWARFExpression.h"
#include "llvm/Support/Error.h"
@@ -59,9 +59,11 @@
unsigned size() const { return (unsigned)Instructions.size(); }
bool empty() const { return Instructions.empty(); }
- CFIProgram(uint64_t CodeAlignmentFactor, int64_t DataAlignmentFactor)
+ CFIProgram(uint64_t CodeAlignmentFactor, int64_t DataAlignmentFactor,
+ Triple::ArchType Arch)
: CodeAlignmentFactor(CodeAlignmentFactor),
- DataAlignmentFactor(DataAlignmentFactor) {}
+ DataAlignmentFactor(DataAlignmentFactor),
+ Arch(Arch) {}
/// Parse and store a sequence of CFI instructions from Data,
/// starting at *Offset and ending at EndOffset. *Offset is updated
@@ -76,6 +78,7 @@
std::vector<Instruction> Instructions;
const uint64_t CodeAlignmentFactor;
const int64_t DataAlignmentFactor;
+ Triple::ArchType Arch;
/// Convenience method to add a new instruction with the given opcode.
void addInstruction(uint8_t Opcode) {
@@ -130,8 +133,9 @@
enum FrameKind { FK_CIE, FK_FDE };
FrameEntry(FrameKind K, uint64_t Offset, uint64_t Length, uint64_t CodeAlign,
- int64_t DataAlign)
- : Kind(K), Offset(Offset), Length(Length), CFIs(CodeAlign, DataAlign) {}
+ int64_t DataAlign, Triple::ArchType Arch)
+ : Kind(K), Offset(Offset), Length(Length),
+ CFIs(CodeAlign, DataAlign, Arch) {}
virtual ~FrameEntry() {}
@@ -168,9 +172,9 @@
int64_t DataAlignmentFactor, uint64_t ReturnAddressRegister,
SmallString<8> AugmentationData, uint32_t FDEPointerEncoding,
uint32_t LSDAPointerEncoding, Optional<uint64_t> Personality,
- Optional<uint32_t> PersonalityEnc)
+ Optional<uint32_t> PersonalityEnc, Triple::ArchType Arch)
: FrameEntry(FK_CIE, Offset, Length, CodeAlignmentFactor,
- DataAlignmentFactor),
+ DataAlignmentFactor, Arch),
Version(Version), Augmentation(std::move(Augmentation)),
AddressSize(AddressSize), SegmentDescriptorSize(SegmentDescriptorSize),
CodeAlignmentFactor(CodeAlignmentFactor),
@@ -224,10 +228,11 @@
// is obtained lazily once it's actually required.
FDE(uint64_t Offset, uint64_t Length, int64_t LinkedCIEOffset,
uint64_t InitialLocation, uint64_t AddressRange, CIE *Cie,
- Optional<uint64_t> LSDAAddress)
+ Optional<uint64_t> LSDAAddress, Triple::ArchType Arch)
: FrameEntry(FK_FDE, Offset, Length,
Cie ? Cie->getCodeAlignmentFactor() : 0,
- Cie ? Cie->getDataAlignmentFactor() : 0),
+ Cie ? Cie->getDataAlignmentFactor() : 0,
+ Arch),
LinkedCIEOffset(LinkedCIEOffset), InitialLocation(InitialLocation),
AddressRange(AddressRange), LinkedCIE(Cie), LSDAAddress(LSDAAddress) {}
@@ -256,6 +261,7 @@
/// A parsed .debug_frame or .eh_frame section
class DWARFDebugFrame {
+ const Triple::ArchType Arch;
// True if this is parsing an eh_frame section.
const bool IsEH;
// Not zero for sane pointer values coming out of eh_frame
@@ -272,7 +278,8 @@
// it is a .debug_frame section. EHFrameAddress should be different
// than zero for correct parsing of .eh_frame addresses when they
// use a PC-relative encoding.
- DWARFDebugFrame(bool IsEH = false, uint64_t EHFrameAddress = 0);
+ DWARFDebugFrame(Triple::ArchType Arch,
+ bool IsEH = false, uint64_t EHFrameAddress = 0);
~DWARFDebugFrame();
/// Dump the section data into the given stream.
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugInfoEntry.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugInfoEntry.h
index 88c8f57..f50063b 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugInfoEntry.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugInfoEntry.h
@@ -1,9 +1,8 @@
//===- DWARFDebugInfoEntry.h ------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h
index d50af5a..9e40c84 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h
@@ -1,9 +1,8 @@
//===- DWARFDebugLine.h -----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h
index 9a73745..dbed959 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h
@@ -1,9 +1,8 @@
//===- DWARFDebugLoc.h ------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -73,19 +72,21 @@
uint32_t *Offset);
};
-class DWARFDebugLocDWO {
+class DWARFDebugLoclists {
public:
struct Entry {
- uint64_t Start;
- uint32_t Length;
+ uint8_t Kind;
+ uint64_t Value0;
+ uint64_t Value1;
SmallVector<char, 4> Loc;
};
struct LocationList {
unsigned Offset;
SmallVector<Entry, 2> Entries;
- void dump(raw_ostream &OS, bool IsLittleEndian, unsigned AddressSize,
- const MCRegisterInfo *RegInfo, unsigned Indent) const;
+ void dump(raw_ostream &OS, uint64_t BaseAddr, bool IsLittleEndian,
+ unsigned AddressSize, const MCRegisterInfo *RegInfo,
+ unsigned Indent) const;
};
private:
@@ -98,15 +99,15 @@
bool IsLittleEndian;
public:
- void parse(DataExtractor data);
- void dump(raw_ostream &OS, const MCRegisterInfo *RegInfo,
+ void parse(DataExtractor data, unsigned Version);
+ void dump(raw_ostream &OS, uint64_t BaseAddr, const MCRegisterInfo *RegInfo,
Optional<uint64_t> Offset) const;
/// Return the location list at the given offset or nullptr.
LocationList const *getLocationListAtOffset(uint64_t Offset) const;
- static Optional<LocationList> parseOneLocationList(DataExtractor Data,
- uint32_t *Offset);
+ static Optional<LocationList>
+ parseOneLocationList(DataExtractor Data, unsigned *Offset, unsigned Version);
};
} // end namespace llvm
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugMacro.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugMacro.h
index bfe2fc3..a6c1259 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugMacro.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugMacro.h
@@ -1,9 +1,8 @@
//===- DWARFDebugMacro.h ----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugPubTable.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugPubTable.h
index cae4804..99e91ca 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugPubTable.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugPubTable.h
@@ -1,9 +1,8 @@
//===- DWARFDebugPubTable.h -------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -13,6 +12,7 @@
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/BinaryFormat/Dwarf.h"
+#include "llvm/DebugInfo/DWARF/DWARFObject.h"
#include <cstdint>
#include <vector>
@@ -67,7 +67,8 @@
bool GnuStyle;
public:
- DWARFDebugPubTable(StringRef Data, bool LittleEndian, bool GnuStyle);
+ DWARFDebugPubTable(const DWARFObject &Obj, const DWARFSection &Sec,
+ bool LittleEndian, bool GnuStyle);
void dump(raw_ostream &OS) const;
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h
index ce7436d..c1c0f42 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h
@@ -1,9 +1,8 @@
//===- DWARFDebugRangeList.h ------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -18,7 +17,6 @@
namespace llvm {
-struct BaseAddress;
class raw_ostream;
class DWARFDebugRangeList {
@@ -78,7 +76,7 @@
/// list. Has to be passed base address of the compile unit referencing this
/// range list.
DWARFAddressRangesVector
- getAbsoluteRanges(llvm::Optional<BaseAddress> BaseAddr) const;
+ getAbsoluteRanges(llvm::Optional<SectionedAddress> BaseAddr) const;
};
} // end namespace llvm
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugRnglists.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugRnglists.h
index e2e8ab5..c6661a8 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugRnglists.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDebugRnglists.h
@@ -1,15 +1,15 @@
//===- DWARFDebugRnglists.h -------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_DEBUGINFO_DWARFDEBUGRNGLISTS_H
#define LLVM_DEBUGINFO_DWARFDEBUGRNGLISTS_H
+#include "llvm/ADT/Optional.h"
#include "llvm/BinaryFormat/Dwarf.h"
#include "llvm/DebugInfo/DIContext.h"
#include "llvm/DebugInfo/DWARF/DWARFDataExtractor.h"
@@ -23,6 +23,7 @@
class Error;
class raw_ostream;
+class DWARFUnit;
/// A class representing a single range list entry.
struct RangeListEntry : public DWARFListEntryBase {
@@ -35,7 +36,9 @@
Error extract(DWARFDataExtractor Data, uint32_t End, uint32_t *OffsetPtr);
void dump(raw_ostream &OS, uint8_t AddrSize, uint8_t MaxEncodingStringLength,
- uint64_t &CurrentBase, DIDumpOptions DumpOpts) const;
+ uint64_t &CurrentBase, DIDumpOptions DumpOpts,
+ llvm::function_ref<Optional<SectionedAddress>(uint32_t)>
+ LookupPooledAddress) const;
bool isSentinel() const { return EntryKind == dwarf::DW_RLE_end_of_list; }
};
@@ -44,7 +47,8 @@
public:
/// Build a DWARFAddressRangesVector from a rangelist.
DWARFAddressRangesVector
- getAbsoluteRanges(llvm::Optional<BaseAddress> BaseAddr) const;
+ getAbsoluteRanges(llvm::Optional<SectionedAddress> BaseAddr,
+ DWARFUnit &U) const;
};
class DWARFDebugRnglistTable : public DWARFListTableBase<DWARFDebugRnglist> {
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDie.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDie.h
index c77034f..21e68f9 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDie.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFDie.h
@@ -1,9 +1,8 @@
//===- DWARFDie.h -----------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -180,6 +179,7 @@
/// \returns a valid DWARFDie instance if the attribute exists, or an invalid
/// DWARFDie object if it doesn't.
DWARFDie getAttributeValueAsReferencedDie(dwarf::Attribute Attr) const;
+ DWARFDie getAttributeValueAsReferencedDie(const DWARFFormValue &V) const;
/// Extract the range base attribute from this DIE as absolute section offset.
///
@@ -404,6 +404,10 @@
Die = Die.getPreviousSibling();
}
+ llvm::DWARFDie::iterator base() const {
+ return llvm::DWARFDie::iterator(AtEnd ? Die : Die.getSibling());
+ }
+
reverse_iterator<llvm::DWARFDie::iterator> &operator++() {
assert(!AtEnd && "Incrementing rend");
llvm::DWARFDie D = Die.getPreviousSibling();
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFExpression.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFExpression.h
index 3fad68a..8049094 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFExpression.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFExpression.h
@@ -1,9 +1,8 @@
//===--- DWARFExpression.h - DWARF Expression handling ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFFormValue.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFFormValue.h
index 1b5f71c..e092d96 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFFormValue.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFFormValue.h
@@ -1,9 +1,8 @@
//===- DWARFFormValue.h -----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -61,7 +60,6 @@
dwarf::Form getForm() const { return Form; }
uint64_t getRawUValue() const { return Value.uval; }
- uint64_t getSectionIndex() const { return Value.SectionIndex; }
void setForm(dwarf::Form F) { Form = F; }
void setUValue(uint64_t V) { Value.uval = V; }
void setSValue(int64_t V) { Value.sval = V; }
@@ -75,6 +73,10 @@
bool isFormClass(FormClass FC) const;
const DWARFUnit *getUnit() const { return U; }
void dump(raw_ostream &OS, DIDumpOptions DumpOpts = DIDumpOptions()) const;
+ void dumpSectionedAddress(raw_ostream &OS, DIDumpOptions DumpOpts,
+ SectionedAddress SA) const;
+ static void dumpAddressSection(const DWARFObject &Obj, raw_ostream &OS,
+ DIDumpOptions DumpOpts, uint64_t SectionIndex);
/// Extracts a value in \p Data at offset \p *OffsetPtr. The information
/// in \p FormParams is needed to interpret some forms. The optional
@@ -101,6 +103,7 @@
Optional<int64_t> getAsSignedConstant() const;
Optional<const char *> getAsCString() const;
Optional<uint64_t> getAsAddress() const;
+ Optional<SectionedAddress> getAsSectionedAddress() const;
Optional<uint64_t> getAsSectionOffset() const;
Optional<ArrayRef<uint8_t>> getAsBlock() const;
Optional<uint64_t> getAsCStringOffset() const;
@@ -238,6 +241,13 @@
return None;
}
+inline Optional<SectionedAddress>
+toSectionedAddress(const Optional<DWARFFormValue> &V) {
+ if (V)
+ return V->getAsSectionedAddress();
+ return None;
+}
+
/// Take an optional DWARFFormValue and extract a address.
///
/// \param V and optional DWARFFormValue to attempt to extract the value from.
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFGdbIndex.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFGdbIndex.h
index 8d1ac5c..38cd42d 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFGdbIndex.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFGdbIndex.h
@@ -1,9 +1,8 @@
//===- DWARFGdbIndex.h ------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -24,6 +23,7 @@
uint32_t Version;
uint32_t CuListOffset;
+ uint32_t TuListOffset;
uint32_t AddressAreaOffset;
uint32_t SymbolTableOffset;
uint32_t ConstantPoolOffset;
@@ -34,6 +34,13 @@
};
SmallVector<CompUnitEntry, 0> CuList;
+ struct TypeUnitEntry {
+ uint64_t Offset;
+ uint64_t TypeOffset;
+ uint64_t TypeSignature;
+ };
+ SmallVector<TypeUnitEntry, 0> TuList;
+
struct AddressEntry {
uint64_t LowAddress; /// The low address.
uint64_t HighAddress; /// The high address.
@@ -55,6 +62,7 @@
uint32_t StringPoolOffset;
void dumpCUList(raw_ostream &OS) const;
+ void dumpTUList(raw_ostream &OS) const;
void dumpAddressArea(raw_ostream &OS) const;
void dumpSymbolTable(raw_ostream &OS) const;
void dumpConstantPool(raw_ostream &OS) const;
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFListTable.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFListTable.h
index 8cf9e40..6c13db3 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFListTable.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFListTable.h
@@ -1,9 +1,8 @@
//===- DWARFListTable.h -----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -99,6 +98,7 @@
uint32_t getHeaderOffset() const { return HeaderOffset; }
uint8_t getAddrSize() const { return HeaderData.AddrSize; }
uint32_t getLength() const { return HeaderData.Length; }
+ uint16_t getVersion() const { return HeaderData.Version; }
StringRef getSectionName() const { return SectionName; }
StringRef getListTypeString() const { return ListTypeString; }
dwarf::DwarfFormat getFormat() const { return Format; }
@@ -156,7 +156,10 @@
uint32_t getHeaderOffset() const { return Header.getHeaderOffset(); }
uint8_t getAddrSize() const { return Header.getAddrSize(); }
- void dump(raw_ostream &OS, DIDumpOptions DumpOpts = {}) const;
+ void dump(raw_ostream &OS,
+ llvm::function_ref<Optional<SectionedAddress>(uint32_t)>
+ LookupPooledAddress,
+ DIDumpOptions DumpOpts = {}) const;
/// Return the contents of the offset entry designated by a given index.
Optional<uint32_t> getOffsetEntry(uint32_t Index) const {
@@ -229,8 +232,11 @@
}
template <typename DWARFListType>
-void DWARFListTableBase<DWARFListType>::dump(raw_ostream &OS,
- DIDumpOptions DumpOpts) const {
+void DWARFListTableBase<DWARFListType>::dump(
+ raw_ostream &OS,
+ llvm::function_ref<Optional<SectionedAddress>(uint32_t)>
+ LookupPooledAddress,
+ DIDumpOptions DumpOpts) const {
Header.dump(OS, DumpOpts);
OS << HeaderString << "\n";
@@ -249,7 +255,7 @@
for (const auto &List : ListMap)
for (const auto &Entry : List.second.getEntries())
Entry.dump(OS, getAddrSize(), MaxEncodingStringLength, CurrentBase,
- DumpOpts);
+ DumpOpts, LookupPooledAddress);
}
template <typename DWARFListType>
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFObject.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFObject.h
index 6e8f370..1bba74a 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFObject.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFObject.h
@@ -1,9 +1,8 @@
//===- DWARFObject.h --------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===-----------------------------------------------------------------------===/
@@ -33,11 +32,13 @@
virtual ArrayRef<SectionName> getSectionNames() const { return {}; }
virtual bool isLittleEndian() const = 0;
virtual uint8_t getAddressSize() const { llvm_unreachable("unimplemented"); }
- virtual const DWARFSection &getInfoSection() const { return Dummy; }
+ virtual void
+ forEachInfoSections(function_ref<void(const DWARFSection &)> F) const {}
virtual void
forEachTypesSections(function_ref<void(const DWARFSection &)> F) const {}
virtual StringRef getAbbrevSection() const { return ""; }
virtual const DWARFSection &getLocSection() const { return Dummy; }
+ virtual const DWARFSection &getLoclistsSection() const { return Dummy; }
virtual StringRef getARangeSection() const { return ""; }
virtual StringRef getDebugFrameSection() const { return ""; }
virtual StringRef getEHFrameSection() const { return ""; }
@@ -47,12 +48,13 @@
virtual const DWARFSection &getRangeSection() const { return Dummy; }
virtual const DWARFSection &getRnglistsSection() const { return Dummy; }
virtual StringRef getMacinfoSection() const { return ""; }
- virtual StringRef getPubNamesSection() const { return ""; }
- virtual StringRef getPubTypesSection() const { return ""; }
- virtual StringRef getGnuPubNamesSection() const { return ""; }
- virtual StringRef getGnuPubTypesSection() const { return ""; }
+ virtual const DWARFSection &getPubNamesSection() const { return Dummy; }
+ virtual const DWARFSection &getPubTypesSection() const { return Dummy; }
+ virtual const DWARFSection &getGnuPubNamesSection() const { return Dummy; }
+ virtual const DWARFSection &getGnuPubTypesSection() const { return Dummy; }
virtual const DWARFSection &getStringOffsetSection() const { return Dummy; }
- virtual const DWARFSection &getInfoDWOSection() const { return Dummy; }
+ virtual void
+ forEachInfoDWOSections(function_ref<void(const DWARFSection &)> F) const {}
virtual void
forEachTypesDWOSections(function_ref<void(const DWARFSection &)> F) const {}
virtual StringRef getAbbrevDWOSection() const { return ""; }
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFRelocMap.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFRelocMap.h
index f518384..a8f5b28 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFRelocMap.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFRelocMap.h
@@ -1,9 +1,8 @@
//===- DWARFRelocMap.h ------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFSection.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFSection.h
index 77045f0..bb00046 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFSection.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFSection.h
@@ -1,9 +1,8 @@
//===- DWARFSection.h -------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -23,6 +22,11 @@
bool IsNameUnique;
};
+struct SectionedAddress {
+ uint64_t Address;
+ uint64_t SectionIndex;
+};
+
} // end namespace llvm
#endif // LLVM_DEBUGINFO_DWARF_DWARFSECTION_H
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFTypeUnit.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFTypeUnit.h
index 0a5a1aa..90d8937 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFTypeUnit.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFTypeUnit.h
@@ -1,9 +1,8 @@
//===- DWARFTypeUnit.h ------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -26,13 +25,13 @@
class DWARFTypeUnit : public DWARFUnit {
public:
DWARFTypeUnit(DWARFContext &Context, const DWARFSection &Section,
- const DWARFUnitHeader &Header,
- const DWARFDebugAbbrev *DA, const DWARFSection *RS,
+ const DWARFUnitHeader &Header, const DWARFDebugAbbrev *DA,
+ const DWARFSection *RS, const DWARFSection *LocSection,
StringRef SS, const DWARFSection &SOS, const DWARFSection *AOS,
const DWARFSection &LS, bool LE, bool IsDWO,
const DWARFUnitVector &UnitVector)
- : DWARFUnit(Context, Section, Header, DA, RS, SS, SOS, AOS, LS, LE, IsDWO,
- UnitVector) {}
+ : DWARFUnit(Context, Section, Header, DA, RS, LocSection, SS, SOS, AOS,
+ LS, LE, IsDWO, UnitVector) {}
uint64_t getTypeHash() const { return getHeader().getTypeHash(); }
uint32_t getTypeOffset() const { return getHeader().getTypeOffset(); }
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFUnit.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFUnit.h
index 39d43b9..e82ce8e 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFUnit.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFUnit.h
@@ -1,9 +1,8 @@
//===- DWARFUnit.h ----------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -72,7 +71,8 @@
/// Parse a unit header from \p debug_info starting at \p offset_ptr.
bool extract(DWARFContext &Context, const DWARFDataExtractor &debug_info,
uint32_t *offset_ptr, DWARFSectionKind Kind = DW_SECT_INFO,
- const DWARFUnitIndex *Index = nullptr);
+ const DWARFUnitIndex *Index = nullptr,
+ const DWARFUnitIndex::Entry *Entry = nullptr);
uint32_t getOffset() const { return Offset; }
const dwarf::FormParams &getFormParams() const { return FormParams; }
uint16_t getVersion() const { return FormParams.Version; }
@@ -108,7 +108,8 @@
/// .debug_info and .debug_types, or from .debug_info.dwo and .debug_types.dwo.
class DWARFUnitVector final : public SmallVector<std::unique_ptr<DWARFUnit>, 1> {
std::function<std::unique_ptr<DWARFUnit>(uint32_t, DWARFSectionKind,
- const DWARFSection *)>
+ const DWARFSection *,
+ const DWARFUnitIndex::Entry *)>
Parser;
int NumInfoUnits = -1;
@@ -153,18 +154,13 @@
private:
void addUnitsImpl(DWARFContext &Context, const DWARFObject &Obj,
const DWARFSection &Section, const DWARFDebugAbbrev *DA,
- const DWARFSection *RS, StringRef SS,
- const DWARFSection &SOS, const DWARFSection *AOS,
- const DWARFSection &LS, bool LE, bool IsDWO, bool Lazy,
- DWARFSectionKind SectionKind);
+ const DWARFSection *RS, const DWARFSection *LocSection,
+ StringRef SS, const DWARFSection &SOS,
+ const DWARFSection *AOS, const DWARFSection &LS, bool LE,
+ bool IsDWO, bool Lazy, DWARFSectionKind SectionKind);
};
/// Represents base address of the CU.
-struct BaseAddress {
- uint64_t Address;
- uint64_t SectionIndex;
-};
-
/// Represents a unit's contribution to the string offsets table.
struct StrOffsetsContributionDescriptor {
uint64_t Base = 0;
@@ -198,13 +194,19 @@
const DWARFDebugAbbrev *Abbrev;
const DWARFSection *RangeSection;
uint32_t RangeSectionBase;
+ /// We either keep track of the location list section or its data, depending
+ /// on whether we are handling a split DWARF section or not.
+ union {
+ const DWARFSection *LocSection;
+ StringRef LocSectionData;
+ };
const DWARFSection &LineSection;
StringRef StringSection;
const DWARFSection &StringOffsetSection;
const DWARFSection *AddrOffsetSection;
uint32_t AddrOffsetSectionBase = 0;
bool isLittleEndian;
- bool isDWO;
+ bool IsDWO;
const DWARFUnitVector &UnitVector;
/// Start, length, and DWARF format of the unit's contribution to the string
@@ -215,7 +217,7 @@
Optional<DWARFDebugRnglistTable> RngListTable;
mutable const DWARFAbbreviationDeclarationSet *Abbrevs;
- llvm::Optional<BaseAddress> BaseAddr;
+ llvm::Optional<SectionedAddress> BaseAddr;
/// The compile unit debug information entry items.
std::vector<DWARFDebugInfoEntry> DieArray;
@@ -245,29 +247,30 @@
/// length and form. The given offset is expected to be derived from the unit
/// DIE's DW_AT_str_offsets_base attribute.
Optional<StrOffsetsContributionDescriptor>
- determineStringOffsetsTableContribution(DWARFDataExtractor &DA,
- uint64_t Offset);
+ determineStringOffsetsTableContribution(DWARFDataExtractor &DA);
/// Find the unit's contribution to the string offsets table and determine its
/// length and form. The given offset is expected to be 0 in a dwo file or,
/// in a dwp file, the start of the unit's contribution to the string offsets
/// table section (as determined by the index table).
Optional<StrOffsetsContributionDescriptor>
- determineStringOffsetsTableContributionDWO(DWARFDataExtractor &DA,
- uint64_t Offset);
+ determineStringOffsetsTableContributionDWO(DWARFDataExtractor &DA);
public:
DWARFUnit(DWARFContext &Context, const DWARFSection &Section,
- const DWARFUnitHeader &Header,
- const DWARFDebugAbbrev *DA, const DWARFSection *RS, StringRef SS,
- const DWARFSection &SOS, const DWARFSection *AOS,
+ const DWARFUnitHeader &Header, const DWARFDebugAbbrev *DA,
+ const DWARFSection *RS, const DWARFSection *LocSection,
+ StringRef SS, const DWARFSection &SOS, const DWARFSection *AOS,
const DWARFSection &LS, bool LE, bool IsDWO,
const DWARFUnitVector &UnitVector);
virtual ~DWARFUnit();
+ bool isDWOUnit() const { return IsDWO; }
DWARFContext& getContext() const { return Context; }
const DWARFSection &getInfoSection() const { return InfoSection; }
+ const DWARFSection *getLocSection() const { return LocSection; }
+ StringRef getLocSectionData() const { return LocSectionData; }
uint32_t getOffset() const { return Header.getOffset(); }
const dwarf::FormParams &getFormParams() const {
return Header.getFormParams();
@@ -301,8 +304,8 @@
RangeSectionBase = Base;
}
- bool getAddrOffsetSectionItem(uint32_t Index, uint64_t &Result) const;
- bool getStringOffsetSectionItem(uint32_t Index, uint64_t &Result) const;
+ Optional<SectionedAddress> getAddrOffsetSectionItem(uint32_t Index) const;
+ Optional<uint64_t> getStringOffsetSectionItem(uint32_t Index) const;
DWARFDataExtractor getDebugInfoExtractor() const;
@@ -372,7 +375,7 @@
llvm_unreachable("Invalid UnitType.");
}
- llvm::Optional<BaseAddress> getBaseAddress();
+ llvm::Optional<SectionedAddress> getBaseAddress();
DWARFDie getUnitDIE(bool ExtractUnitDIEOnly = true) {
extractDIEsIfNeeded(ExtractUnitDIEOnly);
@@ -406,7 +409,7 @@
return None;
}
- void collectAddressRanges(DWARFAddressRangesVector &CURanges);
+ Expected<DWARFAddressRangesVector> collectAddressRanges();
/// Returns subprogram DIE with address range encompassing the provided
/// address. The pointer is alive as long as parsed compile unit DIEs are not
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFUnitIndex.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFUnitIndex.h
index 16be5f9..fc8c707 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFUnitIndex.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFUnitIndex.h
@@ -1,9 +1,8 @@
//===- DWARFUnitIndex.h -----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFVerifier.h b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFVerifier.h
index 3ad65cf..f1268f2 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFVerifier.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/DWARF/DWARFVerifier.h
@@ -1,9 +1,8 @@
//===- DWARFVerifier.h ----------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -97,6 +96,9 @@
/// lies between to valid DIEs.
std::map<uint64_t, std::set<uint32_t>> ReferenceToDIEOffsets;
uint32_t NumDebugLineErrors = 0;
+ // Used to relax some checks that do not currently work portably
+ bool IsObjectFile;
+ bool IsMachOObject;
raw_ostream &error() const;
raw_ostream &warn() const;
@@ -286,8 +288,8 @@
public:
DWARFVerifier(raw_ostream &S, DWARFContext &D,
- DIDumpOptions DumpOpts = DIDumpOptions::getForSingleDIE())
- : OS(S), DCtx(D), DumpOpts(std::move(DumpOpts)) {}
+ DIDumpOptions DumpOpts = DIDumpOptions::getForSingleDIE());
+
/// Verify the information in any of the following sections, if available:
/// .debug_abbrev, debug_abbrev.dwo
///
diff --git a/linux-x64/clang/include/llvm/DebugInfo/MSF/IMSFFile.h b/linux-x64/clang/include/llvm/DebugInfo/MSF/IMSFFile.h
index f98e715..7e80f96 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/MSF/IMSFFile.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/MSF/IMSFFile.h
@@ -1,9 +1,8 @@
//===- IMSFFile.h - Abstract base class for an MSF file ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/MSF/MSFBuilder.h b/linux-x64/clang/include/llvm/DebugInfo/MSF/MSFBuilder.h
index 3de98c4..282870f 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/MSF/MSFBuilder.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/MSF/MSFBuilder.h
@@ -1,9 +1,8 @@
//===- MSFBuilder.h - MSF Directory & Metadata Builder ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/MSF/MSFCommon.h b/linux-x64/clang/include/llvm/DebugInfo/MSF/MSFCommon.h
index 2db2b71..83331b1 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/MSF/MSFCommon.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/MSF/MSFCommon.h
@@ -1,9 +1,8 @@
//===- MSFCommon.h - Common types and functions for MSF files ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/MSF/MSFError.h b/linux-x64/clang/include/llvm/DebugInfo/MSF/MSFError.h
index 5c043a7..fbc4e69 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/MSF/MSFError.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/MSF/MSFError.h
@@ -1,9 +1,8 @@
//===- MSFError.h - Error extensions for MSF Files --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/MSF/MappedBlockStream.h b/linux-x64/clang/include/llvm/DebugInfo/MSF/MappedBlockStream.h
index f65e529..593d781 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/MSF/MappedBlockStream.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/MSF/MappedBlockStream.h
@@ -1,9 +1,8 @@
//==- MappedBlockStream.h - Discontiguous stream data in an MSF --*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/ConcreteSymbolEnumerator.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/ConcreteSymbolEnumerator.h
index ac7f196..49ba20a 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/ConcreteSymbolEnumerator.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/ConcreteSymbolEnumerator.h
@@ -1,9 +1,8 @@
//===- ConcreteSymbolEnumerator.h -------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIADataStream.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIADataStream.h
index 881d732..f05b58c 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIADataStream.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIADataStream.h
@@ -1,9 +1,8 @@
//===- DIADataStream.h - DIA implementation of IPDBDataStream ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumDebugStreams.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumDebugStreams.h
index 1f12905..8a00ad4 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumDebugStreams.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumDebugStreams.h
@@ -1,9 +1,8 @@
//==- DIAEnumDebugStreams.h - DIA Debug Stream Enumerator impl ---*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumFrameData.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumFrameData.h
new file mode 100644
index 0000000..bd417c0
--- /dev/null
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumFrameData.h
@@ -0,0 +1,35 @@
+//==- DIAEnumFrameData.h --------------------------------------- -*- C++ -*-==//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_DEBUGINFO_PDB_DIA_DIAENUMFRAMEDATA_H
+#define LLVM_DEBUGINFO_PDB_DIA_DIAENUMFRAMEDATA_H
+
+#include "DIASupport.h"
+#include "llvm/DebugInfo/PDB/IPDBEnumChildren.h"
+#include "llvm/DebugInfo/PDB/IPDBFrameData.h"
+
+namespace llvm {
+namespace pdb {
+
+class DIAEnumFrameData : public IPDBEnumChildren<IPDBFrameData> {
+public:
+ explicit DIAEnumFrameData(CComPtr<IDiaEnumFrameData> DiaEnumerator);
+
+ uint32_t getChildCount() const override;
+ ChildTypePtr getChildAtIndex(uint32_t Index) const override;
+ ChildTypePtr getNext() override;
+ void reset() override;
+
+private:
+ CComPtr<IDiaEnumFrameData> Enumerator;
+};
+
+} // namespace pdb
+} // namespace llvm
+
+#endif
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumInjectedSources.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumInjectedSources.h
index 4669a8d..1f75ca2 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumInjectedSources.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumInjectedSources.h
@@ -1,9 +1,8 @@
//==- DIAEnumInjectedSources.h - DIA Injected Sources Enumerator -*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumLineNumbers.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumLineNumbers.h
index f1cb626..8800baa 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumLineNumbers.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumLineNumbers.h
@@ -1,9 +1,8 @@
//==- DIAEnumLineNumbers.h - DIA Line Number Enumerator impl -----*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumSectionContribs.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumSectionContribs.h
index ac2ae31..be8613b 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumSectionContribs.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumSectionContribs.h
@@ -1,9 +1,8 @@
//==- DIAEnumSectionContribs.h --------------------------------- -*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumSourceFiles.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumSourceFiles.h
index dac3df0..6127899 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumSourceFiles.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumSourceFiles.h
@@ -1,9 +1,8 @@
//==- DIAEnumSourceFiles.h - DIA Source File Enumerator impl -----*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumSymbols.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumSymbols.h
index 9689859..f55342c 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumSymbols.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumSymbols.h
@@ -1,9 +1,8 @@
//==- DIAEnumSymbols.h - DIA Symbol Enumerator impl --------------*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumTables.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumTables.h
index f4f856e..057cb06 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumTables.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAEnumTables.h
@@ -1,9 +1,8 @@
//===- DIAEnumTables.h - DIA Tables Enumerator Impl -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAError.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAError.h
index 2b33a65..96d9605 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAError.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAError.h
@@ -1,9 +1,8 @@
//===- DIAError.h - Error extensions for PDB DIA implementation -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAFrameData.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAFrameData.h
new file mode 100644
index 0000000..c04f7cd
--- /dev/null
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAFrameData.h
@@ -0,0 +1,38 @@
+//===- DIAFrameData.h - DIA Impl. of IPDBFrameData ---------------- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_DEBUGINFO_PDB_DIA_DIAFRAMEDATA_H
+#define LLVM_DEBUGINFO_PDB_DIA_DIAFRAMEDATA_H
+
+#include "DIASupport.h"
+#include "llvm/DebugInfo/PDB/IPDBFrameData.h"
+
+namespace llvm {
+namespace pdb {
+
+class DIASession;
+
+class DIAFrameData : public IPDBFrameData {
+public:
+ explicit DIAFrameData(CComPtr<IDiaFrameData> DiaFrameData);
+
+ uint32_t getAddressOffset() const override;
+ uint32_t getAddressSection() const override;
+ uint32_t getLengthBlock() const override;
+ std::string getProgram() const override;
+ uint32_t getRelativeVirtualAddress() const override;
+ uint64_t getVirtualAddress() const override;
+
+private:
+ CComPtr<IDiaFrameData> FrameData;
+};
+
+} // namespace pdb
+} // namespace llvm
+
+#endif
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAInjectedSource.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAInjectedSource.h
index 635508d..8be06f8 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAInjectedSource.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAInjectedSource.h
@@ -1,9 +1,8 @@
//===- DIAInjectedSource.h - DIA impl for IPDBInjectedSource ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIALineNumber.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIALineNumber.h
index a59e3a1..d8bb272 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIALineNumber.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIALineNumber.h
@@ -1,9 +1,8 @@
//===- DIALineNumber.h - DIA implementation of IPDBLineNumber ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIARawSymbol.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIARawSymbol.h
index 5d4f855..7f201d3 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIARawSymbol.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIARawSymbol.h
@@ -1,9 +1,8 @@
//===- DIARawSymbol.h - DIA implementation of IPDBRawSymbol ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIASectionContrib.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIASectionContrib.h
index 4688f1f..0972831 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIASectionContrib.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIASectionContrib.h
@@ -1,9 +1,8 @@
//===- DIASectionContrib.h - DIA Impl. of IPDBSectionContrib ------ C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIASession.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIASession.h
index e355605..6f62e60 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIASession.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIASession.h
@@ -1,9 +1,8 @@
//===- DIASession.h - DIA implementation of IPDBSession ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -85,6 +84,7 @@
std::unique_ptr<IPDBEnumSectionContribs> getSectionContribs() const override;
+ std::unique_ptr<IPDBEnumFrameData> getFrameData() const override;
private:
CComPtr<IDiaSession> Session;
};
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIASourceFile.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIASourceFile.h
index 1088ea5..96edfc9 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIASourceFile.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIASourceFile.h
@@ -1,9 +1,8 @@
//===- DIASourceFile.h - DIA implementation of IPDBSourceFile ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIASupport.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIASupport.h
index 92ebc04..1a7c2f3 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIASupport.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIASupport.h
@@ -1,9 +1,8 @@
//===- DIASupport.h - Common header includes for DIA ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// Common defines and header includes for all LLVMDebugInfoPDBDIA. The
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIATable.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIATable.h
index ce93fa0..65396a0 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIATable.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIATable.h
@@ -1,9 +1,8 @@
//===- DIATable.h - DIA implementation of IPDBTable -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAUtils.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAUtils.h
index aa843e0..5e01d8f 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAUtils.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/DIA/DIAUtils.h
@@ -1,9 +1,8 @@
//===- DIAUtils.h - Utility functions for working with DIA ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/GenericError.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/GenericError.h
index 4e2e8b1..ec85d92 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/GenericError.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/GenericError.h
@@ -1,9 +1,8 @@
-//===- Error.h - system_error extensions for PDB ----------------*- C++ -*-===//
+//===- GenericError.h - system_error extensions for PDB ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -21,24 +20,24 @@
dia_sdk_not_present,
dia_failed_loading,
signature_out_of_date,
- type_server_not_found,
+ external_cmdline_ref,
unspecified,
};
-} // namespace codeview
+} // namespace pdb
} // namespace llvm
namespace std {
- template <>
- struct is_error_code_enum<llvm::pdb::pdb_error_code> : std::true_type {};
+template <>
+struct is_error_code_enum<llvm::pdb::pdb_error_code> : std::true_type {};
} // namespace std
namespace llvm {
namespace pdb {
- const std::error_category &PDBErrCategory();
+const std::error_category &PDBErrCategory();
- inline std::error_code make_error_code(pdb_error_code E) {
- return std::error_code(static_cast<int>(E), PDBErrCategory());
- }
+inline std::error_code make_error_code(pdb_error_code E) {
+ return std::error_code(static_cast<int>(E), PDBErrCategory());
+}
/// Base class for errors originating when parsing raw PDB files
class PDBError : public ErrorInfo<PDBError, StringError> {
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBDataStream.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBDataStream.h
index 0d7a286..4d0589a 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBDataStream.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBDataStream.h
@@ -1,9 +1,8 @@
//===- IPDBDataStream.h - base interface for child enumerator ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBEnumChildren.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBEnumChildren.h
index 7017f26..bfa67d3 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBEnumChildren.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBEnumChildren.h
@@ -1,9 +1,8 @@
//===- IPDBEnumChildren.h - base interface for child enumerator -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBFrameData.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBFrameData.h
new file mode 100644
index 0000000..24138b3
--- /dev/null
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBFrameData.h
@@ -0,0 +1,35 @@
+//===- IPDBFrameData.h - base interface for frame data ----------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_DEBUGINFO_PDB_IPDBFRAMEDATA_H
+#define LLVM_DEBUGINFO_PDB_IPDBFRAMEDATA_H
+
+#include <cstdint>
+#include <string>
+
+namespace llvm {
+namespace pdb {
+
+/// IPDBFrameData defines an interface used to represent a frame data of some
+/// code block.
+class IPDBFrameData {
+public:
+ virtual ~IPDBFrameData();
+
+ virtual uint32_t getAddressOffset() const = 0;
+ virtual uint32_t getAddressSection() const = 0;
+ virtual uint32_t getLengthBlock() const = 0;
+ virtual std::string getProgram() const = 0;
+ virtual uint32_t getRelativeVirtualAddress() const = 0;
+ virtual uint64_t getVirtualAddress() const = 0;
+};
+
+} // namespace pdb
+} // namespace llvm
+
+#endif
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBInjectedSource.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBInjectedSource.h
index e75d64a..56e85d1 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBInjectedSource.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBInjectedSource.h
@@ -1,9 +1,8 @@
//===- IPDBInjectedSource.h - base class for PDB injected file --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBLineNumber.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBLineNumber.h
index e20080f..77e8899 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBLineNumber.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBLineNumber.h
@@ -1,9 +1,8 @@
//===- IPDBLineNumber.h - base interface for PDB line no. info ---*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h
index 7c818d7..b24e712 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h
@@ -1,9 +1,8 @@
//===- IPDBRawSymbol.h - base interface for PDB symbol types ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBSectionContrib.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBSectionContrib.h
index 4fda624..c5cf4bb 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBSectionContrib.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBSectionContrib.h
@@ -1,9 +1,8 @@
//==- IPDBSectionContrib.h - Interfaces for PDB SectionContribs --*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBSession.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBSession.h
index 24573cd..aa8d9c7 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBSession.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBSession.h
@@ -1,9 +1,8 @@
//===- IPDBSession.h - base interface for a PDB symbol context --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -91,6 +90,9 @@
virtual std::unique_ptr<IPDBEnumSectionContribs>
getSectionContribs() const = 0;
+
+ virtual std::unique_ptr<IPDBEnumFrameData>
+ getFrameData() const = 0;
};
} // namespace pdb
} // namespace llvm
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBSourceFile.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBSourceFile.h
index 3676c40..d7e49fb 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBSourceFile.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBSourceFile.h
@@ -1,9 +1,8 @@
//===- IPDBSourceFile.h - base interface for a PDB source file --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBTable.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBTable.h
index 4561c4e..55ca230 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBTable.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/IPDBTable.h
@@ -1,9 +1,8 @@
//===- IPDBTable.h - Base Interface for a PDB Symbol Context ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptor.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptor.h
index 9eef404..568f0c9 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptor.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptor.h
@@ -1,9 +1,8 @@
//===- DbiModuleDescriptor.h - PDB module information -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.h
index ce4d079..4f5d28b 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.h
@@ -1,9 +1,8 @@
//===- DbiModuleDescriptorBuilder.h - PDB module information ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -51,6 +50,7 @@
void setObjFileName(StringRef Name);
void setFirstSectionContrib(const SectionContrib &SC);
void addSymbol(codeview::CVSymbol Symbol);
+ void addSymbolsInBulk(ArrayRef<uint8_t> BulkSymbols);
void
addDebugSubsection(std::shared_ptr<codeview::DebugSubsection> Subsection);
@@ -91,7 +91,7 @@
std::string ModuleName;
std::string ObjFileName;
std::vector<std::string> SourceFiles;
- std::vector<codeview::CVSymbol> Symbols;
+ std::vector<ArrayRef<uint8_t>> Symbols;
std::vector<std::unique_ptr<codeview::DebugSubsectionRecordBuilder>>
C13Builders;
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiModuleList.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiModuleList.h
index 5f6e7ab..1422327 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiModuleList.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiModuleList.h
@@ -1,9 +1,8 @@
//===- DbiModuleList.h - PDB module information list ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiStream.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiStream.h
index a3ca607..7d75c15 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiStream.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiStream.h
@@ -1,9 +1,8 @@
//===- DbiStream.h - PDB Dbi Stream (Stream 3) Access -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -11,6 +10,7 @@
#define LLVM_DEBUGINFO_PDB_RAW_PDBDBISTREAM_H
#include "llvm/DebugInfo/CodeView/DebugSubsection.h"
+#include "llvm/DebugInfo/CodeView/DebugFrameDataSubsection.h"
#include "llvm/DebugInfo/MSF/MappedBlockStream.h"
#include "llvm/DebugInfo/PDB/Native/DbiModuleDescriptor.h"
#include "llvm/DebugInfo/PDB/Native/DbiModuleList.h"
@@ -80,7 +80,10 @@
FixedStreamArray<object::coff_section> getSectionHeaders() const;
- FixedStreamArray<object::FpoData> getFpoRecords();
+ bool hasOldFpoRecords() const;
+ FixedStreamArray<object::FpoData> getOldFpoRecords() const;
+ bool hasNewFpoRecords() const;
+ const codeview::DebugFrameDataSubsectionRef &getNewFpoRecords() const;
FixedStreamArray<SecMapEntry> getSectionMap() const;
void visitSectionContributions(ISectionContribVisitor &Visitor) const;
@@ -91,7 +94,11 @@
Error initializeSectionContributionData();
Error initializeSectionHeadersData(PDBFile *Pdb);
Error initializeSectionMapData();
- Error initializeFpoRecords(PDBFile *Pdb);
+ Error initializeOldFpoRecords(PDBFile *Pdb);
+ Error initializeNewFpoRecords(PDBFile *Pdb);
+
+ Expected<std::unique_ptr<msf::MappedBlockStream>>
+ createIndexedStreamForHeaderType(PDBFile *Pdb, DbgHeaderType Type) const;
std::unique_ptr<BinaryStream> Stream;
@@ -117,8 +124,11 @@
std::unique_ptr<msf::MappedBlockStream> SectionHeaderStream;
FixedStreamArray<object::coff_section> SectionHeaders;
- std::unique_ptr<msf::MappedBlockStream> FpoStream;
- FixedStreamArray<object::FpoData> FpoRecords;
+ std::unique_ptr<msf::MappedBlockStream> OldFpoStream;
+ FixedStreamArray<object::FpoData> OldFpoRecords;
+
+ std::unique_ptr<msf::MappedBlockStream> NewFpoStream;
+ codeview::DebugFrameDataSubsectionRef NewFpoRecords;
const DbiStreamHeader *Header;
};
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiStreamBuilder.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiStreamBuilder.h
index b538de5..d9be238 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiStreamBuilder.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/DbiStreamBuilder.h
@@ -1,9 +1,8 @@
//===- DbiStreamBuilder.h - PDB Dbi Stream Creation -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/EnumTables.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/EnumTables.h
index c018445..70161fa 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/EnumTables.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/EnumTables.h
@@ -1,9 +1,8 @@
//===- EnumTables.h - Enum to string conversion tables ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/Formatters.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/Formatters.h
index 7d5eab2..29c957e 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/Formatters.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/Formatters.h
@@ -1,9 +1,8 @@
//===- Formatters.h ---------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/GSIStreamBuilder.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/GSIStreamBuilder.h
index 1a4f89d..a497956 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/GSIStreamBuilder.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/GSIStreamBuilder.h
@@ -1,9 +1,8 @@
//===- GSIStreamBuilder.h - PDB Publics/Globals Stream Creation -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -61,7 +60,6 @@
void addGlobalSymbol(const codeview::ProcRefSym &Sym);
void addGlobalSymbol(const codeview::DataSym &Sym);
void addGlobalSymbol(const codeview::ConstantSym &Sym);
- void addGlobalSymbol(const codeview::UDTSym &Sym);
void addGlobalSymbol(const codeview::CVSymbol &Sym);
private:
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/GlobalsStream.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/GlobalsStream.h
index 7f84564..404baaa 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/GlobalsStream.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/GlobalsStream.h
@@ -1,9 +1,8 @@
//===- GlobalsStream.h - PDB Index of Symbols by Name -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/Hash.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/Hash.h
index 1f11d43..b048d87 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/Hash.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/Hash.h
@@ -1,9 +1,8 @@
//===- Hash.h - PDB hash functions ------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/HashTable.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/HashTable.h
index 34cc617..e8f08c6 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/HashTable.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/HashTable.h
@@ -1,9 +1,8 @@
//===- HashTable.h - PDB Hash Table -----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/ISectionContribVisitor.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/ISectionContribVisitor.h
index fb00d6a..717dce2 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/ISectionContribVisitor.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/ISectionContribVisitor.h
@@ -1,9 +1,8 @@
//===- ISectionContribVisitor.h ---------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/InfoStream.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/InfoStream.h
index 8c52b04..315b093 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/InfoStream.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/InfoStream.h
@@ -1,9 +1,8 @@
//===- InfoStream.h - PDB Info Stream (Stream 1) Access ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/InfoStreamBuilder.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/InfoStreamBuilder.h
index 101127a..208a37c 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/InfoStreamBuilder.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/InfoStreamBuilder.h
@@ -1,9 +1,8 @@
//===- InfoStreamBuilder.h - PDB Info Stream Creation -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/ModuleDebugStream.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/ModuleDebugStream.h
index 19b0ebd..161aa32 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/ModuleDebugStream.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/ModuleDebugStream.h
@@ -1,9 +1,8 @@
//===- ModuleDebugStream.h - PDB Module Info Stream Access ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -44,6 +43,8 @@
symbols(bool *HadError) const;
const codeview::CVSymbolArray &getSymbolArray() const { return SymbolArray; }
+ const codeview::CVSymbolArray
+ getSymbolArrayForScope(uint32_t ScopeBegin) const;
BinarySubstreamRef getSymbolsSubstream() const;
BinarySubstreamRef getC11LinesSubstream() const;
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NamedStreamMap.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NamedStreamMap.h
index 01b8f1b..c49d796 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NamedStreamMap.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NamedStreamMap.h
@@ -1,9 +1,8 @@
//===- NamedStreamMap.h - PDB Named Stream Map ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeCompilandSymbol.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeCompilandSymbol.h
index 3cd4655..50d4376 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeCompilandSymbol.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeCompilandSymbol.h
@@ -1,9 +1,8 @@
//===- NativeCompilandSymbol.h - native impl for compiland syms -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeEnumGlobals.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeEnumGlobals.h
index 4442a1e..073878a 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeEnumGlobals.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeEnumGlobals.h
@@ -1,9 +1,8 @@
//==- NativeEnumGlobals.h - Native Global Enumerator impl --------*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeEnumModules.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeEnumModules.h
index c268641..94f1ee1 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeEnumModules.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeEnumModules.h
@@ -1,9 +1,8 @@
//==- NativeEnumModules.h - Native Module Enumerator impl --------*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeEnumTypes.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeEnumTypes.h
index f8ac165..25c5656 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeEnumTypes.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeEnumTypes.h
@@ -1,9 +1,8 @@
//==- NativeEnumTypes.h - Native Type Enumerator impl ------------*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeExeSymbol.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeExeSymbol.h
index f4030da..280358d 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeExeSymbol.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeExeSymbol.h
@@ -1,9 +1,8 @@
//===- NativeExeSymbol.h - native impl for PDBSymbolExe ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeRawSymbol.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeRawSymbol.h
index 6505a7d..4133be2 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeRawSymbol.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeRawSymbol.h
@@ -1,9 +1,8 @@
//==- NativeRawSymbol.h - Native implementation of IPDBRawSymbol -*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeSession.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeSession.h
index 07ce85e..ee7d8cd 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeSession.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeSession.h
@@ -1,9 +1,8 @@
//===- NativeSession.h - Native implementation of IPDBSession ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -93,6 +92,8 @@
std::unique_ptr<IPDBEnumSectionContribs> getSectionContribs() const override;
+ std::unique_ptr<IPDBEnumFrameData> getFrameData() const override;
+
PDBFile &getPDBFile() { return *Pdb; }
const PDBFile &getPDBFile() const { return *Pdb; }
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeSymbolEnumerator.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeSymbolEnumerator.h
index acc5eb8..0635850 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeSymbolEnumerator.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeSymbolEnumerator.h
@@ -1,9 +1,8 @@
//===- NativeSymbolEnumerator.h - info about enumerator values --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeArray.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeArray.h
index 10e68e6..262864f 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeArray.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeArray.h
@@ -1,9 +1,8 @@
//===- NativeTypeArray.h ------------------------------------------ C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeBuiltin.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeBuiltin.h
index 725dfb8..8bb09f0 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeBuiltin.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeBuiltin.h
@@ -1,9 +1,8 @@
//===- NativeTypeBuiltin.h ---------------------------------------- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeEnum.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeEnum.h
index a5cbefc..2068c88 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeEnum.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeEnum.h
@@ -1,9 +1,8 @@
//===- NativeTypeEnum.h - info about enum type ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeFunctionSig.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeFunctionSig.h
index 1b1b87f..a7ea287 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeFunctionSig.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeFunctionSig.h
@@ -1,9 +1,8 @@
//===- NativeTypeFunctionSig.h - info about function signature ---*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypePointer.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypePointer.h
index bcb7431..446f77d 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypePointer.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypePointer.h
@@ -1,9 +1,8 @@
//===- NativeTypePointer.h - info about pointer type -------------*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeTypedef.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeTypedef.h
index 06eb6fc..fe8a6f7 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeTypedef.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeTypedef.h
@@ -1,9 +1,8 @@
//===- NativeTypeTypedef.h - info about typedef ------------------*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeUDT.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeUDT.h
index 84821d8..8f4dee3 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeUDT.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeUDT.h
@@ -1,9 +1,8 @@
//===- NativeTypeUDT.h - info about class/struct type ------------*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeVTShape.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeVTShape.h
index a996f34..4ec0f9b 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeVTShape.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/NativeTypeVTShape.h
@@ -1,9 +1,8 @@
//===- NativeTypeVTShape.h - info about virtual table shape ------*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PDBFile.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PDBFile.h
index 5e39ac3..cb9bd07 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PDBFile.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PDBFile.h
@@ -1,9 +1,8 @@
//===- PDBFile.h - Low level interface to a PDB file ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PDBFileBuilder.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PDBFileBuilder.h
index 3745874..72000bd 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PDBFileBuilder.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PDBFileBuilder.h
@@ -1,9 +1,8 @@
//===- PDBFileBuilder.h - PDB File Creation ---------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PDBStringTable.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PDBStringTable.h
index 29167c9..57f0b64 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PDBStringTable.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PDBStringTable.h
@@ -1,9 +1,8 @@
//===- PDBStringTable.h - PDB String Table -----------------------*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PDBStringTableBuilder.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PDBStringTableBuilder.h
index 0f81c18..57267ef 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PDBStringTableBuilder.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PDBStringTableBuilder.h
@@ -1,9 +1,8 @@
//===- PDBStringTableBuilder.h - PDB String Table Builder -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PublicsStream.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PublicsStream.h
index 2d0222a..ee28d10 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PublicsStream.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/PublicsStream.h
@@ -1,9 +1,8 @@
//===- PublicsStream.h - PDB Public Symbol Stream -------- ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/RawConstants.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/RawConstants.h
index fbbd331..0dde5ef 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/RawConstants.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/RawConstants.h
@@ -1,9 +1,8 @@
//===- RawConstants.h -------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/RawError.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/RawError.h
index 97d11b4..aadb64c 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/RawError.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/RawError.h
@@ -1,9 +1,8 @@
//===- RawError.h - Error extensions for raw PDB implementation -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/RawTypes.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/RawTypes.h
index 8f6d661..84b0cb3 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/RawTypes.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/RawTypes.h
@@ -1,9 +1,8 @@
//===- RawTypes.h -----------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/SymbolCache.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/SymbolCache.h
index 08e1d41..0b15ab4 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/SymbolCache.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/SymbolCache.h
@@ -1,9 +1,8 @@
//==- SymbolCache.h - Cache of native symbols and ids ------------*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/SymbolStream.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/SymbolStream.h
index ae9f7d6..4fe1bd9 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/SymbolStream.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/SymbolStream.h
@@ -1,9 +1,8 @@
//===- SymbolStream.cpp - PDB Symbol Stream Access --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/TpiHashing.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/TpiHashing.h
index c2996cc..4ac60a8 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/TpiHashing.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/TpiHashing.h
@@ -1,9 +1,8 @@
//===- TpiHashing.h ---------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/TpiStream.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/TpiStream.h
index 00cc720..1b7fd2d 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/TpiStream.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/TpiStream.h
@@ -1,9 +1,8 @@
//===- TpiStream.cpp - PDB Type Info (TPI) Stream 2 Access ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -61,6 +60,10 @@
Expected<codeview::TypeIndex>
findFullDeclForForwardRef(codeview::TypeIndex ForwardRefTI) const;
+ std::vector<codeview::TypeIndex> findRecordsByName(StringRef Name) const;
+
+ codeview::CVType getType(codeview::TypeIndex Index);
+
BinarySubstreamRef getTypeRecordsSubstream() const;
Error commit();
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/TpiStreamBuilder.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/TpiStreamBuilder.h
index 411720d..72d98e9 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/TpiStreamBuilder.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/Native/TpiStreamBuilder.h
@@ -1,9 +1,8 @@
//===- TpiStreamBuilder.h - PDB Tpi Stream Creation -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDB.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDB.h
index 9f9da39..6d734dc 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDB.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDB.h
@@ -1,9 +1,8 @@
//===- PDB.h - base header file for creating a PDB reader -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBContext.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBContext.h
index 0ce49f5..e404e07 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBContext.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBContext.h
@@ -1,9 +1,8 @@
//===-- PDBContext.h --------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===/
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBExtras.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBExtras.h
index aaec71a..b9a8d8f 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBExtras.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBExtras.h
@@ -1,9 +1,8 @@
//===- PDBExtras.h - helper functions and classes for PDBs ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymDumper.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymDumper.h
index c976935..f81b15f 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymDumper.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymDumper.h
@@ -1,9 +1,8 @@
//===- PDBSymDumper.h - base interface for PDB symbol dumper *- C++ -----*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbol.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbol.h
index 3a74f7c..d9004a8 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbol.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbol.h
@@ -1,9 +1,8 @@
//===- PDBSymbol.h - base class for user-facing symbol types -----*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolAnnotation.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolAnnotation.h
index ef00df1..c76466a 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolAnnotation.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolAnnotation.h
@@ -1,9 +1,8 @@
//===- PDBSymbolAnnotation.h - Accessors for querying PDB annotations ---*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLANNOTATION_H
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolBlock.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolBlock.h
index 2cf9c72..cf47145 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolBlock.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolBlock.h
@@ -1,9 +1,8 @@
//===- PDBSymbolBlock.h - Accessors for querying PDB blocks -------------*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLBLOCK_H
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolCompiland.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolCompiland.h
index 04dbd96..ca8b39d 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolCompiland.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolCompiland.h
@@ -1,9 +1,8 @@
//===- PDBSymbolCompiland.h - Accessors for querying PDB compilands -----*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLCOMPILAND_H
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h
index 3d651a4..b82bb6c 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h
@@ -1,9 +1,8 @@
//===- PDBSymbolCompilandDetails.h - PDB compiland details ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h
index ffc4083..61607a0 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h
@@ -1,9 +1,8 @@
//===- PDBSymbolCompilandEnv.h - compiland environment variables *- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolCustom.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolCustom.h
index c29e4c3..75a8641 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolCustom.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolCustom.h
@@ -1,9 +1,8 @@
//===- PDBSymbolCustom.h - compiler-specific types --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolData.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolData.h
index 217e1e9..7e9b69d 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolData.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolData.h
@@ -1,9 +1,8 @@
//===- PDBSymbolData.h - PDB data (e.g. variable) accessors -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolExe.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolExe.h
index 366d0cf..1a9fb24 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolExe.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolExe.h
@@ -1,9 +1,8 @@
//===- PDBSymbolExe.h - Accessors for querying executables in a PDB ----*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h
index 129e557..6be27c8 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h
@@ -1,9 +1,8 @@
//===- PDBSymbolFunc.h - class representing a function instance -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h
index 18db8a5..7152249 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h
@@ -1,9 +1,8 @@
//===- PDBSymbolFuncDebugEnd.h - function end bounds info -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h
index 83d82f0..3125c27 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h
@@ -1,9 +1,8 @@
//===- PDBSymbolFuncDebugStart.h - function start bounds info ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolLabel.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolLabel.h
index 8b2617f..3625e23 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolLabel.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolLabel.h
@@ -1,9 +1,8 @@
//===- PDBSymbolLabel.h - label info ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h
index 9def3ed..e2b2545 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h
@@ -1,9 +1,8 @@
//===- PDBSymbolPublicSymbol.h - public symbol info -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolThunk.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolThunk.h
index 7bb0555..274de8b 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolThunk.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolThunk.h
@@ -1,9 +1,8 @@
//===- PDBSymbolThunk.h - Support for querying PDB thunks ---------------*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeArray.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeArray.h
index 488f668..c0215c9 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeArray.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeArray.h
@@ -1,9 +1,8 @@
//===- PDBSymbolTypeArray.h - array type information ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h
index 550deed..bab292e 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h
@@ -1,9 +1,8 @@
//===- PDBSymbolTypeBaseClass.h - base class type information ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h
index e07e888..7d94c3c 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h
@@ -1,9 +1,8 @@
//===- PDBSymbolTypeBuiltin.h - builtin type information --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h
index 0d8979c..dc647af 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h
@@ -1,9 +1,8 @@
//===- PDBSymbolTypeCustom.h - custom compiler type information -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h
index 58292a6..7a9e437 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h
@@ -1,9 +1,8 @@
//===- PDBSymbolTypeDimension.h - array dimension type info -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h
index f463047..3ac7280 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h
@@ -1,9 +1,8 @@
//===- PDBSymbolTypeEnum.h - enum type info ---------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h
index 5b940b0..c4d9dd6 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h
@@ -1,9 +1,8 @@
//===- PDBSymbolTypeFriend.h - friend type info -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h
index 074cb41..22d3623 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h
@@ -1,9 +1,8 @@
//===- PDBSymbolTypeFunctionArg.h - function arg type info ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h
index dfdf436..a1491ca 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h
@@ -1,9 +1,8 @@
//===- PDBSymbolTypeFunctionSig.h - function signature type info *- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h
index d716abd..6bc70bc 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h
@@ -1,9 +1,8 @@
//===- PDBSymbolTypeManaged.h - managed type info ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypePointer.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypePointer.h
index 300d672..b36f459 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypePointer.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypePointer.h
@@ -1,9 +1,8 @@
//===- PDBSymbolTypePointer.h - pointer type info ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h
index d6e2a36..2712d06 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h
@@ -1,9 +1,8 @@
//===- PDBSymbolTypeTypedef.h - typedef type info ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h
index 937dd6c..3e73ad7 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h
@@ -1,9 +1,8 @@
//===- PDBSymbolTypeUDT.h - UDT type info -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h
index 6efce4b..e8161d3 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h
@@ -1,9 +1,8 @@
//===- PDBSymbolTypeVTable.h - VTable type info -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h
index 8949052..6140608 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h
@@ -1,9 +1,8 @@
//===- PDBSymbolTypeVTableShape.h - VTable shape info -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h
index e935ac6..cc29d38 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h
@@ -1,9 +1,8 @@
//===- PDBSymbolUnknown.h - unknown symbol type -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h
index 4e8c99f..fd812cb 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h
@@ -1,9 +1,8 @@
//===- PDBSymbolUsingNamespace.h - using namespace info ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBTypes.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBTypes.h
index 6247018..6d26b64 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBTypes.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/PDBTypes.h
@@ -1,9 +1,8 @@
//===- PDBTypes.h - Defines enums for various fields contained in PDB ----====//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -12,6 +11,7 @@
#include "llvm/DebugInfo/CodeView/CodeView.h"
#include "llvm/DebugInfo/PDB/IPDBEnumChildren.h"
+#include "llvm/DebugInfo/PDB/IPDBFrameData.h"
#include "llvm/DebugInfo/PDB/Native/RawTypes.h"
#include <cctype>
#include <cstddef>
@@ -71,6 +71,7 @@
using IPDBEnumTables = IPDBEnumChildren<IPDBTable>;
using IPDBEnumInjectedSources = IPDBEnumChildren<IPDBInjectedSource>;
using IPDBEnumSectionContribs = IPDBEnumChildren<IPDBSectionContrib>;
+using IPDBEnumFrameData = IPDBEnumChildren<IPDBFrameData>;
/// Specifies which PDB reader implementation is to be used. Only a value
/// of PDB_ReaderType::DIA is currently supported, but Native is in the works.
diff --git a/linux-x64/clang/include/llvm/DebugInfo/PDB/UDTLayout.h b/linux-x64/clang/include/llvm/DebugInfo/PDB/UDTLayout.h
index c4234c1..c67b093 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/PDB/UDTLayout.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/PDB/UDTLayout.h
@@ -1,9 +1,8 @@
//===- UDTLayout.h - UDT layout info ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/Symbolize/DIPrinter.h b/linux-x64/clang/include/llvm/DebugInfo/Symbolize/DIPrinter.h
index ab82be3..71663f3 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/Symbolize/DIPrinter.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/Symbolize/DIPrinter.h
@@ -1,9 +1,8 @@
//===- llvm/DebugInfo/Symbolize/DIPrinter.h ---------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -30,6 +29,7 @@
bool PrintPretty;
int PrintSourceContext;
bool Verbose;
+ bool Basenames;
void print(const DILineInfo &Info, bool Inlined);
void printContext(const std::string &FileName, int64_t Line);
@@ -37,10 +37,10 @@
public:
DIPrinter(raw_ostream &OS, bool PrintFunctionNames = true,
bool PrintPretty = false, int PrintSourceContext = 0,
- bool Verbose = false)
+ bool Verbose = false, bool Basenames = false)
: OS(OS), PrintFunctionNames(PrintFunctionNames),
PrintPretty(PrintPretty), PrintSourceContext(PrintSourceContext),
- Verbose(Verbose) {}
+ Verbose(Verbose), Basenames(Basenames) {}
DIPrinter &operator<<(const DILineInfo &Info);
DIPrinter &operator<<(const DIInliningInfo &Info);
diff --git a/linux-x64/clang/include/llvm/DebugInfo/Symbolize/SymbolizableModule.h b/linux-x64/clang/include/llvm/DebugInfo/Symbolize/SymbolizableModule.h
index e576a91..f0862d0 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/Symbolize/SymbolizableModule.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/Symbolize/SymbolizableModule.h
@@ -1,9 +1,8 @@
//===- SymbolizableModule.h -------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/DebugInfo/Symbolize/Symbolize.h b/linux-x64/clang/include/llvm/DebugInfo/Symbolize/Symbolize.h
index 289148f..4e57fe4 100644
--- a/linux-x64/clang/include/llvm/DebugInfo/Symbolize/Symbolize.h
+++ b/linux-x64/clang/include/llvm/DebugInfo/Symbolize/Symbolize.h
@@ -1,9 +1,8 @@
//===- Symbolize.h ----------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -42,13 +41,16 @@
bool RelativeAddresses : 1;
std::string DefaultArch;
std::vector<std::string> DsymHints;
+ std::string FallbackDebugPath;
Options(FunctionNameKind PrintFunctions = FunctionNameKind::LinkageName,
bool UseSymbolTable = true, bool Demangle = true,
- bool RelativeAddresses = false, std::string DefaultArch = "")
+ bool RelativeAddresses = false, std::string DefaultArch = "",
+ std::string FallbackDebugPath = "")
: PrintFunctions(PrintFunctions), UseSymbolTable(UseSymbolTable),
Demangle(Demangle), RelativeAddresses(RelativeAddresses),
- DefaultArch(std::move(DefaultArch)) {}
+ DefaultArch(std::move(DefaultArch)),
+ FallbackDebugPath(std::move(FallbackDebugPath)) {}
};
LLVMSymbolizer(const Options &Opts = Options()) : Opts(Opts) {}
diff --git a/linux-x64/clang/include/llvm/Demangle/Compiler.h b/linux-x64/clang/include/llvm/Demangle/Compiler.h
deleted file mode 100644
index 248d6e3..0000000
--- a/linux-x64/clang/include/llvm/Demangle/Compiler.h
+++ /dev/null
@@ -1,93 +0,0 @@
-//===--- Compiler.h ---------------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//
-// This file contains a variety of feature test macros copied from
-// include/llvm/Support/Compiler.h so that LLVMDemangle does not need to take
-// a dependency on LLVMSupport.
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_DEMANGLE_COMPILER_H
-#define LLVM_DEMANGLE_COMPILER_H
-
-#ifdef _MSC_VER
-// snprintf is implemented in VS 2015
-#if _MSC_VER < 1900
-#define snprintf _snprintf_s
-#endif
-#endif
-
-#ifndef __has_feature
-#define __has_feature(x) 0
-#endif
-
-#ifndef __has_cpp_attribute
-#define __has_cpp_attribute(x) 0
-#endif
-
-#ifndef __has_attribute
-#define __has_attribute(x) 0
-#endif
-
-#ifndef __has_builtin
-#define __has_builtin(x) 0
-#endif
-
-#ifndef LLVM_GNUC_PREREQ
-#if defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
-#define LLVM_GNUC_PREREQ(maj, min, patch) \
- ((__GNUC__ << 20) + (__GNUC_MINOR__ << 10) + __GNUC_PATCHLEVEL__ >= \
- ((maj) << 20) + ((min) << 10) + (patch))
-#elif defined(__GNUC__) && defined(__GNUC_MINOR__)
-#define LLVM_GNUC_PREREQ(maj, min, patch) \
- ((__GNUC__ << 20) + (__GNUC_MINOR__ << 10) >= ((maj) << 20) + ((min) << 10))
-#else
-#define LLVM_GNUC_PREREQ(maj, min, patch) 0
-#endif
-#endif
-
-#if __has_attribute(used) || LLVM_GNUC_PREREQ(3, 1, 0)
-#define LLVM_ATTRIBUTE_USED __attribute__((__used__))
-#else
-#define LLVM_ATTRIBUTE_USED
-#endif
-
-#if __has_builtin(__builtin_unreachable) || LLVM_GNUC_PREREQ(4, 5, 0)
-#define LLVM_BUILTIN_UNREACHABLE __builtin_unreachable()
-#elif defined(_MSC_VER)
-#define LLVM_BUILTIN_UNREACHABLE __assume(false)
-#endif
-
-#if __has_attribute(noinline) || LLVM_GNUC_PREREQ(3, 4, 0)
-#define LLVM_ATTRIBUTE_NOINLINE __attribute__((noinline))
-#elif defined(_MSC_VER)
-#define LLVM_ATTRIBUTE_NOINLINE __declspec(noinline)
-#else
-#define LLVM_ATTRIBUTE_NOINLINE
-#endif
-
-#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
-#define LLVM_DUMP_METHOD LLVM_ATTRIBUTE_NOINLINE LLVM_ATTRIBUTE_USED
-#else
-#define LLVM_DUMP_METHOD LLVM_ATTRIBUTE_NOINLINE
-#endif
-
-#if __cplusplus > 201402L && __has_cpp_attribute(fallthrough)
-#define LLVM_FALLTHROUGH [[fallthrough]]
-#elif __has_cpp_attribute(gnu::fallthrough)
-#define LLVM_FALLTHROUGH [[gnu::fallthrough]]
-#elif !__cplusplus
-// Workaround for llvm.org/PR23435, since clang 3.6 and below emit a spurious
-// error when __has_cpp_attribute is given a scoped attribute in C mode.
-#define LLVM_FALLTHROUGH
-#elif __has_cpp_attribute(clang::fallthrough)
-#define LLVM_FALLTHROUGH [[clang::fallthrough]]
-#else
-#define LLVM_FALLTHROUGH
-#endif
-
-#endif
diff --git a/linux-x64/clang/include/llvm/Demangle/Demangle.h b/linux-x64/clang/include/llvm/Demangle/Demangle.h
index b9b4d15..6fea7ef 100644
--- a/linux-x64/clang/include/llvm/Demangle/Demangle.h
+++ b/linux-x64/clang/include/llvm/Demangle/Demangle.h
@@ -1,9 +1,8 @@
//===--- Demangle.h ---------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -11,6 +10,7 @@
#define LLVM_DEMANGLE_DEMANGLE_H
#include <cstddef>
+#include <string>
namespace llvm {
/// This is a llvm local version of __cxa_demangle. Other than the name and
@@ -31,16 +31,18 @@
char *itaniumDemangle(const char *mangled_name, char *buf, size_t *n,
int *status);
-/// Calls the callback \c Callback with \c Ctx as an argument whenever a type is
-/// encountered. Returns true if \c MangledName couldn't be parsed.
-bool itaniumFindTypesInMangledName(const char *MangledName, void *Ctx,
- void (*Callback)(void *, const char *));
-
enum MSDemangleFlags { MSDF_None = 0, MSDF_DumpBackrefs = 1 << 0 };
char *microsoftDemangle(const char *mangled_name, char *buf, size_t *n,
int *status, MSDemangleFlags Flags = MSDF_None);
+/// Attempt to demangle a string using different demangling schemes.
+/// The function uses heuristics to determine which demangling scheme to use.
+/// \param MangledName - reference to string to demangle.
+/// \returns - the demangled string, or a copy of the input string if no
+/// demangling occurred.
+std::string demangle(const std::string &MangledName);
+
/// "Partial" demangler. This supports demangling a string into an AST
/// (typically an intermediate stage in itaniumDemangle) and querying certain
/// properties or partially printing the demangled name.
diff --git a/linux-x64/clang/include/llvm/Demangle/DemangleConfig.h b/linux-x64/clang/include/llvm/Demangle/DemangleConfig.h
new file mode 100644
index 0000000..73f89d3
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Demangle/DemangleConfig.h
@@ -0,0 +1,99 @@
+//===--- DemangleConfig.h ---------------------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file contains a variety of feature test macros copied from
+// include/llvm/Support/Compiler.h so that LLVMDemangle does not need to take
+// a dependency on LLVMSupport.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_DEMANGLE_COMPILER_H
+#define LLVM_DEMANGLE_COMPILER_H
+
+#ifdef _MSC_VER
+// snprintf is implemented in VS 2015
+#if _MSC_VER < 1900
+#define snprintf _snprintf_s
+#endif
+#endif
+
+#ifndef __has_feature
+#define __has_feature(x) 0
+#endif
+
+#ifndef __has_cpp_attribute
+#define __has_cpp_attribute(x) 0
+#endif
+
+#ifndef __has_attribute
+#define __has_attribute(x) 0
+#endif
+
+#ifndef __has_builtin
+#define __has_builtin(x) 0
+#endif
+
+#ifndef DEMANGLE_GNUC_PREREQ
+#if defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
+#define DEMANGLE_GNUC_PREREQ(maj, min, patch) \
+ ((__GNUC__ << 20) + (__GNUC_MINOR__ << 10) + __GNUC_PATCHLEVEL__ >= \
+ ((maj) << 20) + ((min) << 10) + (patch))
+#elif defined(__GNUC__) && defined(__GNUC_MINOR__)
+#define DEMANGLE_GNUC_PREREQ(maj, min, patch) \
+ ((__GNUC__ << 20) + (__GNUC_MINOR__ << 10) >= ((maj) << 20) + ((min) << 10))
+#else
+#define DEMANGLE_GNUC_PREREQ(maj, min, patch) 0
+#endif
+#endif
+
+#if __has_attribute(used) || DEMANGLE_GNUC_PREREQ(3, 1, 0)
+#define DEMANGLE_ATTRIBUTE_USED __attribute__((__used__))
+#else
+#define DEMANGLE_ATTRIBUTE_USED
+#endif
+
+#if __has_builtin(__builtin_unreachable) || DEMANGLE_GNUC_PREREQ(4, 5, 0)
+#define DEMANGLE_UNREACHABLE __builtin_unreachable()
+#elif defined(_MSC_VER)
+#define DEMANGLE_UNREACHABLE __assume(false)
+#else
+#define DEMANGLE_UNREACHABLE
+#endif
+
+#if __has_attribute(noinline) || DEMANGLE_GNUC_PREREQ(3, 4, 0)
+#define DEMANGLE_ATTRIBUTE_NOINLINE __attribute__((noinline))
+#elif defined(_MSC_VER)
+#define DEMANGLE_ATTRIBUTE_NOINLINE __declspec(noinline)
+#else
+#define DEMANGLE_ATTRIBUTE_NOINLINE
+#endif
+
+#if !defined(NDEBUG)
+#define DEMANGLE_DUMP_METHOD DEMANGLE_ATTRIBUTE_NOINLINE DEMANGLE_ATTRIBUTE_USED
+#else
+#define DEMANGLE_DUMP_METHOD DEMANGLE_ATTRIBUTE_NOINLINE
+#endif
+
+#if __cplusplus > 201402L && __has_cpp_attribute(fallthrough)
+#define DEMANGLE_FALLTHROUGH [[fallthrough]]
+#elif __has_cpp_attribute(gnu::fallthrough)
+#define DEMANGLE_FALLTHROUGH [[gnu::fallthrough]]
+#elif !__cplusplus
+// Workaround for llvm.org/PR23435, since clang 3.6 and below emit a spurious
+// error when __has_cpp_attribute is given a scoped attribute in C mode.
+#define DEMANGLE_FALLTHROUGH
+#elif __has_cpp_attribute(clang::fallthrough)
+#define DEMANGLE_FALLTHROUGH [[clang::fallthrough]]
+#else
+#define DEMANGLE_FALLTHROUGH
+#endif
+
+#define DEMANGLE_NAMESPACE_BEGIN namespace llvm { namespace itanium_demangle {
+#define DEMANGLE_NAMESPACE_END } }
+
+#endif
diff --git a/linux-x64/clang/include/llvm/Demangle/ItaniumDemangle.h b/linux-x64/clang/include/llvm/Demangle/ItaniumDemangle.h
index bc60bc3..df06aa6 100644
--- a/linux-x64/clang/include/llvm/Demangle/ItaniumDemangle.h
+++ b/linux-x64/clang/include/llvm/Demangle/ItaniumDemangle.h
@@ -1,23 +1,26 @@
//===------------------------- ItaniumDemangle.h ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
+// 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
//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
+//===----------------------------------------------------------------------===//
+//
+// Generic itanium demangler library. This file has two byte-per-byte identical
+// copies in the source tree, one in libcxxabi, and the other in llvm.
//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_DEMANGLE_ITANIUMDEMANGLE_H
-#define LLVM_DEMANGLE_ITANIUMDEMANGLE_H
+#ifndef DEMANGLE_ITANIUMDEMANGLE_H
+#define DEMANGLE_ITANIUMDEMANGLE_H
// FIXME: (possibly) incomplete list of features that clang mangles that this
// file does not yet support:
// - C++ modules TS
-#include "llvm/Demangle/Compiler.h"
-#include "llvm/Demangle/StringView.h"
-#include "llvm/Demangle/Utility.h"
-
+#include "DemangleConfig.h"
+#include "StringView.h"
+#include "Utility.h"
#include <cassert>
#include <cctype>
#include <cstdio>
@@ -95,8 +98,8 @@
X(BracedExpr) \
X(BracedRangeExpr)
-namespace llvm {
-namespace itanium_demangle {
+DEMANGLE_NAMESPACE_BEGIN
+
// Base class of all AST nodes. The AST is built by the parser, then is
// traversed by the printLeft/Right functions to produce a demangled string.
class Node {
@@ -194,7 +197,7 @@
virtual ~Node() = default;
#ifndef NDEBUG
- LLVM_DUMP_METHOD void dump() const;
+ DEMANGLE_DUMP_METHOD void dump() const;
#endif
};
@@ -1278,7 +1281,7 @@
case SpecialSubKind::iostream:
return StringView("basic_iostream");
}
- LLVM_BUILTIN_UNREACHABLE;
+ DEMANGLE_UNREACHABLE;
}
void printLeft(OutputStream &S) const override {
@@ -1330,7 +1333,7 @@
case SpecialSubKind::iostream:
return StringView("iostream");
}
- LLVM_BUILTIN_UNREACHABLE;
+ DEMANGLE_UNREACHABLE;
}
void printLeft(OutputStream &S) const override {
@@ -2134,8 +2137,7 @@
}
};
-template <typename Alloc>
-struct Db {
+template <typename Derived, typename Alloc> struct AbstractManglingParser {
const char *First;
const char *Last;
@@ -2158,16 +2160,16 @@
// conversion operator's type, and are resolved in the enclosing <encoding>.
PODSmallVector<ForwardTemplateReference *, 4> ForwardTemplateRefs;
- void (*TypeCallback)(void *, const char *) = nullptr;
- void *TypeCallbackContext = nullptr;
-
bool TryToParseTemplateArgs = true;
bool PermitForwardTemplateReferences = false;
bool ParsingLambdaParams = false;
Alloc ASTAllocator;
- Db(const char *First_, const char *Last_) : First(First_), Last(Last_) {}
+ AbstractManglingParser(const char *First_, const char *Last_)
+ : First(First_), Last(Last_) {}
+
+ Derived &getDerived() { return static_cast<Derived &>(*this); }
void reset(const char *First_, const char *Last_) {
First = First_;
@@ -2274,7 +2276,7 @@
FunctionRefQual ReferenceQualifier = FrefQualNone;
size_t ForwardTemplateRefsBegin;
- NameState(Db *Enclosing)
+ NameState(AbstractManglingParser *Enclosing)
: ForwardTemplateRefsBegin(Enclosing->ForwardTemplateRefs.size()) {}
};
@@ -2324,35 +2326,36 @@
//
// <unscoped-template-name> ::= <unscoped-name>
// ::= <substitution>
-template<typename Alloc> Node *Db<Alloc>::parseName(NameState *State) {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseName(NameState *State) {
consumeIf('L'); // extension
if (look() == 'N')
- return parseNestedName(State);
+ return getDerived().parseNestedName(State);
if (look() == 'Z')
- return parseLocalName(State);
+ return getDerived().parseLocalName(State);
// ::= <unscoped-template-name> <template-args>
if (look() == 'S' && look(1) != 't') {
- Node *S = parseSubstitution();
+ Node *S = getDerived().parseSubstitution();
if (S == nullptr)
return nullptr;
if (look() != 'I')
return nullptr;
- Node *TA = parseTemplateArgs(State != nullptr);
+ Node *TA = getDerived().parseTemplateArgs(State != nullptr);
if (TA == nullptr)
return nullptr;
if (State) State->EndsWithTemplateArgs = true;
return make<NameWithTemplateArgs>(S, TA);
}
- Node *N = parseUnscopedName(State);
+ Node *N = getDerived().parseUnscopedName(State);
if (N == nullptr)
return nullptr;
// ::= <unscoped-template-name> <template-args>
if (look() == 'I') {
Subs.push_back(N);
- Node *TA = parseTemplateArgs(State != nullptr);
+ Node *TA = getDerived().parseTemplateArgs(State != nullptr);
if (TA == nullptr)
return nullptr;
if (State) State->EndsWithTemplateArgs = true;
@@ -2365,10 +2368,11 @@
// <local-name> := Z <function encoding> E <entity name> [<discriminator>]
// := Z <function encoding> E s [<discriminator>]
// := Z <function encoding> Ed [ <parameter number> ] _ <entity name>
-template<typename Alloc> Node *Db<Alloc>::parseLocalName(NameState *State) {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseLocalName(NameState *State) {
if (!consumeIf('Z'))
return nullptr;
- Node *Encoding = parseEncoding();
+ Node *Encoding = getDerived().parseEncoding();
if (Encoding == nullptr || !consumeIf('E'))
return nullptr;
@@ -2384,13 +2388,13 @@
parseNumber(true);
if (!consumeIf('_'))
return nullptr;
- Node *N = parseName(State);
+ Node *N = getDerived().parseName(State);
if (N == nullptr)
return nullptr;
return make<LocalName>(Encoding, N);
}
- Node *Entity = parseName(State);
+ Node *Entity = getDerived().parseName(State);
if (Entity == nullptr)
return nullptr;
First = parse_discriminator(First, Last);
@@ -2400,14 +2404,16 @@
// <unscoped-name> ::= <unqualified-name>
// ::= St <unqualified-name> # ::std::
// extension ::= StL<unqualified-name>
-template<typename Alloc> Node *Db<Alloc>::parseUnscopedName(NameState *State) {
- if (consumeIf("StL") || consumeIf("St")) {
- Node *R = parseUnqualifiedName(State);
- if (R == nullptr)
- return nullptr;
- return make<StdQualifiedName>(R);
- }
- return parseUnqualifiedName(State);
+template <typename Derived, typename Alloc>
+Node *
+AbstractManglingParser<Derived, Alloc>::parseUnscopedName(NameState *State) {
+ if (consumeIf("StL") || consumeIf("St")) {
+ Node *R = getDerived().parseUnqualifiedName(State);
+ if (R == nullptr)
+ return nullptr;
+ return make<StdQualifiedName>(R);
+ }
+ return getDerived().parseUnqualifiedName(State);
}
// <unqualified-name> ::= <operator-name> [abi-tags]
@@ -2415,27 +2421,28 @@
// ::= <source-name>
// ::= <unnamed-type-name>
// ::= DC <source-name>+ E # structured binding declaration
-template<typename Alloc>
-Node *Db<Alloc>::parseUnqualifiedName(NameState *State) {
+template <typename Derived, typename Alloc>
+Node *
+AbstractManglingParser<Derived, Alloc>::parseUnqualifiedName(NameState *State) {
// <ctor-dtor-name>s are special-cased in parseNestedName().
Node *Result;
if (look() == 'U')
- Result = parseUnnamedTypeName(State);
+ Result = getDerived().parseUnnamedTypeName(State);
else if (look() >= '1' && look() <= '9')
- Result = parseSourceName(State);
+ Result = getDerived().parseSourceName(State);
else if (consumeIf("DC")) {
size_t BindingsBegin = Names.size();
do {
- Node *Binding = parseSourceName(State);
+ Node *Binding = getDerived().parseSourceName(State);
if (Binding == nullptr)
return nullptr;
Names.push_back(Binding);
} while (!consumeIf('E'));
Result = make<StructuredBindingName>(popTrailingNodeArray(BindingsBegin));
} else
- Result = parseOperatorName(State);
+ Result = getDerived().parseOperatorName(State);
if (Result != nullptr)
- Result = parseAbiTags(Result);
+ Result = getDerived().parseAbiTags(Result);
return Result;
}
@@ -2445,7 +2452,9 @@
// <closure-type-name> ::= Ul <lambda-sig> E [ <nonnegative number> ] _
//
// <lambda-sig> ::= <parameter type>+ # Parameter types or "v" if the lambda has no parameters
-template<typename Alloc> Node *Db<Alloc>::parseUnnamedTypeName(NameState *) {
+template <typename Derived, typename Alloc>
+Node *
+AbstractManglingParser<Derived, Alloc>::parseUnnamedTypeName(NameState *) {
if (consumeIf("Ut")) {
StringView Count = parseNumber();
if (!consumeIf('_'))
@@ -2458,7 +2467,7 @@
if (!consumeIf("vE")) {
size_t ParamsBegin = Names.size();
do {
- Node *P = parseType();
+ Node *P = getDerived().parseType();
if (P == nullptr)
return nullptr;
Names.push_back(P);
@@ -2470,11 +2479,18 @@
return nullptr;
return make<ClosureTypeName>(Params, Count);
}
+ if (consumeIf("Ub")) {
+ (void)parseNumber();
+ if (!consumeIf('_'))
+ return nullptr;
+ return make<NameType>("'block-literal'");
+ }
return nullptr;
}
// <source-name> ::= <positive length number> <identifier>
-template<typename Alloc> Node *Db<Alloc>::parseSourceName(NameState *) {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseSourceName(NameState *) {
size_t Length = 0;
if (parsePositiveInteger(&Length))
return nullptr;
@@ -2538,7 +2554,9 @@
// ::= rS # >>=
// ::= ss # <=> C++2a
// ::= v <digit> <source-name> # vendor extended operator
-template<typename Alloc> Node *Db<Alloc>::parseOperatorName(NameState *State) {
+template <typename Derived, typename Alloc>
+Node *
+AbstractManglingParser<Derived, Alloc>::parseOperatorName(NameState *State) {
switch (look()) {
case 'a':
switch (look(1)) {
@@ -2578,7 +2596,7 @@
SwapAndRestore<bool> SavePermit(PermitForwardTemplateReferences,
PermitForwardTemplateReferences ||
State != nullptr);
- Node* Ty = parseType();
+ Node *Ty = getDerived().parseType();
if (Ty == nullptr)
return nullptr;
if (State) State->CtorDtorConversion = true;
@@ -2642,7 +2660,7 @@
// ::= li <source-name> # operator ""
case 'i': {
First += 2;
- Node *SN = parseSourceName(State);
+ Node *SN = getDerived().parseSourceName(State);
if (SN == nullptr)
return nullptr;
return make<LiteralOperator>(SN);
@@ -2763,7 +2781,7 @@
case 'v':
if (std::isdigit(look(1))) {
First += 2;
- Node *SN = parseSourceName(State);
+ Node *SN = getDerived().parseSourceName(State);
if (SN == nullptr)
return nullptr;
return make<ConversionOperatorType>(SN);
@@ -2781,8 +2799,10 @@
// ::= D1 # complete object destructor
// ::= D2 # base object destructor
// extension ::= D5 # ?
-template<typename Alloc>
-Node *Db<Alloc>::parseCtorDtorName(Node *&SoFar, NameState *State) {
+template <typename Derived, typename Alloc>
+Node *
+AbstractManglingParser<Derived, Alloc>::parseCtorDtorName(Node *&SoFar,
+ NameState *State) {
if (SoFar->getKind() == Node::KSpecialSubstitution) {
auto SSK = static_cast<SpecialSubstitution *>(SoFar)->SSK;
switch (SSK) {
@@ -2793,6 +2813,7 @@
SoFar = make<ExpandedSpecialSubstitution>(SSK);
if (!SoFar)
return nullptr;
+ break;
default:
break;
}
@@ -2806,7 +2827,7 @@
++First;
if (State) State->CtorDtorConversion = true;
if (IsInherited) {
- if (parseName(State) == nullptr)
+ if (getDerived().parseName(State) == nullptr)
return nullptr;
}
return make<CtorDtorName>(SoFar, false, Variant);
@@ -2840,7 +2861,9 @@
// <template-prefix> ::= <prefix> <template unqualified-name>
// ::= <template-param>
// ::= <substitution>
-template<typename Alloc> Node *Db<Alloc>::parseNestedName(NameState *State) {
+template <typename Derived, typename Alloc>
+Node *
+AbstractManglingParser<Derived, Alloc>::parseNestedName(NameState *State) {
if (!consumeIf('N'))
return nullptr;
@@ -2881,7 +2904,7 @@
// ::= <template-param>
if (look() == 'T') {
- if (!PushComponent(parseTemplateParam()))
+ if (!PushComponent(getDerived().parseTemplateParam()))
return nullptr;
Subs.push_back(SoFar);
continue;
@@ -2889,7 +2912,7 @@
// ::= <template-prefix> <template-args>
if (look() == 'I') {
- Node *TA = parseTemplateArgs(State != nullptr);
+ Node *TA = getDerived().parseTemplateArgs(State != nullptr);
if (TA == nullptr || SoFar == nullptr)
return nullptr;
SoFar = make<NameWithTemplateArgs>(SoFar, TA);
@@ -2902,7 +2925,7 @@
// ::= <decltype>
if (look() == 'D' && (look(1) == 't' || look(1) == 'T')) {
- if (!PushComponent(parseDecltype()))
+ if (!PushComponent(getDerived().parseDecltype()))
return nullptr;
Subs.push_back(SoFar);
continue;
@@ -2910,7 +2933,7 @@
// ::= <substitution>
if (look() == 'S' && look(1) != 't') {
- Node *S = parseSubstitution();
+ Node *S = getDerived().parseSubstitution();
if (!PushComponent(S))
return nullptr;
if (SoFar != S)
@@ -2922,9 +2945,9 @@
if (look() == 'C' || (look() == 'D' && look(1) != 'C')) {
if (SoFar == nullptr)
return nullptr;
- if (!PushComponent(parseCtorDtorName(SoFar, State)))
+ if (!PushComponent(getDerived().parseCtorDtorName(SoFar, State)))
return nullptr;
- SoFar = parseAbiTags(SoFar);
+ SoFar = getDerived().parseAbiTags(SoFar);
if (SoFar == nullptr)
return nullptr;
Subs.push_back(SoFar);
@@ -2932,7 +2955,7 @@
}
// ::= <prefix> <unqualified-name>
- if (!PushComponent(parseUnqualifiedName(State)))
+ if (!PushComponent(getDerived().parseUnqualifiedName(State)))
return nullptr;
Subs.push_back(SoFar);
}
@@ -2945,12 +2968,13 @@
}
// <simple-id> ::= <source-name> [ <template-args> ]
-template<typename Alloc> Node *Db<Alloc>::parseSimpleId() {
- Node *SN = parseSourceName(/*NameState=*/nullptr);
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseSimpleId() {
+ Node *SN = getDerived().parseSourceName(/*NameState=*/nullptr);
if (SN == nullptr)
return nullptr;
if (look() == 'I') {
- Node *TA = parseTemplateArgs();
+ Node *TA = getDerived().parseTemplateArgs();
if (TA == nullptr)
return nullptr;
return make<NameWithTemplateArgs>(SN, TA);
@@ -2960,12 +2984,13 @@
// <destructor-name> ::= <unresolved-type> # e.g., ~T or ~decltype(f())
// ::= <simple-id> # e.g., ~A<2*N>
-template<typename Alloc> Node *Db<Alloc>::parseDestructorName() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseDestructorName() {
Node *Result;
if (std::isdigit(look()))
- Result = parseSimpleId();
+ Result = getDerived().parseSimpleId();
else
- Result = parseUnresolvedType();
+ Result = getDerived().parseUnresolvedType();
if (Result == nullptr)
return nullptr;
return make<DtorName>(Result);
@@ -2974,22 +2999,23 @@
// <unresolved-type> ::= <template-param>
// ::= <decltype>
// ::= <substitution>
-template<typename Alloc> Node *Db<Alloc>::parseUnresolvedType() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseUnresolvedType() {
if (look() == 'T') {
- Node *TP = parseTemplateParam();
+ Node *TP = getDerived().parseTemplateParam();
if (TP == nullptr)
return nullptr;
Subs.push_back(TP);
return TP;
}
if (look() == 'D') {
- Node *DT = parseDecltype();
+ Node *DT = getDerived().parseDecltype();
if (DT == nullptr)
return nullptr;
Subs.push_back(DT);
return DT;
}
- return parseSubstitution();
+ return getDerived().parseSubstitution();
}
// <base-unresolved-name> ::= <simple-id> # unresolved name
@@ -2999,20 +3025,21 @@
// ::= on <operator-name> <template-args> # unresolved operator template-id
// ::= dn <destructor-name> # destructor or pseudo-destructor;
// # e.g. ~X or ~X<N-1>
-template<typename Alloc> Node *Db<Alloc>::parseBaseUnresolvedName() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseBaseUnresolvedName() {
if (std::isdigit(look()))
- return parseSimpleId();
+ return getDerived().parseSimpleId();
if (consumeIf("dn"))
- return parseDestructorName();
+ return getDerived().parseDestructorName();
consumeIf("on");
- Node *Oper = parseOperatorName(/*NameState=*/nullptr);
+ Node *Oper = getDerived().parseOperatorName(/*NameState=*/nullptr);
if (Oper == nullptr)
return nullptr;
if (look() == 'I') {
- Node *TA = parseTemplateArgs();
+ Node *TA = getDerived().parseTemplateArgs();
if (TA == nullptr)
return nullptr;
return make<NameWithTemplateArgs>(Oper, TA);
@@ -3031,18 +3058,19 @@
// (ignored) ::= srN <unresolved-type> <unresolved-qualifier-level>+ E <base-unresolved-name>
//
// <unresolved-qualifier-level> ::= <simple-id>
-template<typename Alloc> Node *Db<Alloc>::parseUnresolvedName() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseUnresolvedName() {
Node *SoFar = nullptr;
// srN <unresolved-type> [<template-args>] <unresolved-qualifier-level>* E <base-unresolved-name>
// srN <unresolved-type> <unresolved-qualifier-level>+ E <base-unresolved-name>
if (consumeIf("srN")) {
- SoFar = parseUnresolvedType();
+ SoFar = getDerived().parseUnresolvedType();
if (SoFar == nullptr)
return nullptr;
if (look() == 'I') {
- Node *TA = parseTemplateArgs();
+ Node *TA = getDerived().parseTemplateArgs();
if (TA == nullptr)
return nullptr;
SoFar = make<NameWithTemplateArgs>(SoFar, TA);
@@ -3051,7 +3079,7 @@
}
while (!consumeIf('E')) {
- Node *Qual = parseSimpleId();
+ Node *Qual = getDerived().parseSimpleId();
if (Qual == nullptr)
return nullptr;
SoFar = make<QualifiedName>(SoFar, Qual);
@@ -3059,7 +3087,7 @@
return nullptr;
}
- Node *Base = parseBaseUnresolvedName();
+ Node *Base = getDerived().parseBaseUnresolvedName();
if (Base == nullptr)
return nullptr;
return make<QualifiedName>(SoFar, Base);
@@ -3069,7 +3097,7 @@
// [gs] <base-unresolved-name> # x or (with "gs") ::x
if (!consumeIf("sr")) {
- SoFar = parseBaseUnresolvedName();
+ SoFar = getDerived().parseBaseUnresolvedName();
if (SoFar == nullptr)
return nullptr;
if (Global)
@@ -3080,7 +3108,7 @@
// [gs] sr <unresolved-qualifier-level>+ E <base-unresolved-name>
if (std::isdigit(look())) {
do {
- Node *Qual = parseSimpleId();
+ Node *Qual = getDerived().parseSimpleId();
if (Qual == nullptr)
return nullptr;
if (SoFar)
@@ -3096,12 +3124,12 @@
// sr <unresolved-type> <base-unresolved-name>
// sr <unresolved-type> <template-args> <base-unresolved-name>
else {
- SoFar = parseUnresolvedType();
+ SoFar = getDerived().parseUnresolvedType();
if (SoFar == nullptr)
return nullptr;
if (look() == 'I') {
- Node *TA = parseTemplateArgs();
+ Node *TA = getDerived().parseTemplateArgs();
if (TA == nullptr)
return nullptr;
SoFar = make<NameWithTemplateArgs>(SoFar, TA);
@@ -3112,7 +3140,7 @@
assert(SoFar != nullptr);
- Node *Base = parseBaseUnresolvedName();
+ Node *Base = getDerived().parseBaseUnresolvedName();
if (Base == nullptr)
return nullptr;
return make<QualifiedName>(SoFar, Base);
@@ -3120,7 +3148,8 @@
// <abi-tags> ::= <abi-tag> [<abi-tags>]
// <abi-tag> ::= B <source-name>
-template<typename Alloc> Node *Db<Alloc>::parseAbiTags(Node *N) {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseAbiTags(Node *N) {
while (consumeIf('B')) {
StringView SN = parseBareSourceName();
if (SN.empty())
@@ -3133,8 +3162,9 @@
}
// <number> ::= [n] <non-negative decimal integer>
-template<typename Alloc>
-StringView Db<Alloc>::parseNumber(bool AllowNegative) {
+template <typename Alloc, typename Derived>
+StringView
+AbstractManglingParser<Alloc, Derived>::parseNumber(bool AllowNegative) {
const char *Tmp = First;
if (AllowNegative)
consumeIf('n');
@@ -3146,7 +3176,8 @@
}
// <positive length number> ::= [0-9]*
-template<typename Alloc> bool Db<Alloc>::parsePositiveInteger(size_t *Out) {
+template <typename Alloc, typename Derived>
+bool AbstractManglingParser<Alloc, Derived>::parsePositiveInteger(size_t *Out) {
*Out = 0;
if (look() < '0' || look() > '9')
return true;
@@ -3157,7 +3188,8 @@
return false;
}
-template<typename Alloc> StringView Db<Alloc>::parseBareSourceName() {
+template <typename Alloc, typename Derived>
+StringView AbstractManglingParser<Alloc, Derived>::parseBareSourceName() {
size_t Int = 0;
if (parsePositiveInteger(&Int) || numLeft() < Int)
return StringView();
@@ -3174,7 +3206,8 @@
//
// <ref-qualifier> ::= R # & ref-qualifier
// <ref-qualifier> ::= O # && ref-qualifier
-template<typename Alloc> Node *Db<Alloc>::parseFunctionType() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseFunctionType() {
Qualifiers CVQuals = parseCVQualifiers();
Node *ExceptionSpec = nullptr;
@@ -3183,7 +3216,7 @@
if (!ExceptionSpec)
return nullptr;
} else if (consumeIf("DO")) {
- Node *E = parseExpr();
+ Node *E = getDerived().parseExpr();
if (E == nullptr || !consumeIf('E'))
return nullptr;
ExceptionSpec = make<NoexceptSpec>(E);
@@ -3192,7 +3225,7 @@
} else if (consumeIf("Dw")) {
size_t SpecsBegin = Names.size();
while (!consumeIf('E')) {
- Node *T = parseType();
+ Node *T = getDerived().parseType();
if (T == nullptr)
return nullptr;
Names.push_back(T);
@@ -3208,7 +3241,7 @@
if (!consumeIf('F'))
return nullptr;
consumeIf('Y'); // extern "C"
- Node *ReturnType = parseType();
+ Node *ReturnType = getDerived().parseType();
if (ReturnType == nullptr)
return nullptr;
@@ -3227,7 +3260,7 @@
ReferenceQualifier = FrefQualRValue;
break;
}
- Node *T = parseType();
+ Node *T = getDerived().parseType();
if (T == nullptr)
return nullptr;
Names.push_back(T);
@@ -3243,7 +3276,8 @@
// ::= Dv [<dimension expression>] _ <element type>
// <extended element type> ::= <element type>
// ::= p # AltiVec vector pixel
-template<typename Alloc> Node *Db<Alloc>::parseVectorType() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseVectorType() {
if (!consumeIf("Dv"))
return nullptr;
if (look() >= '1' && look() <= '9') {
@@ -3252,24 +3286,24 @@
return nullptr;
if (consumeIf('p'))
return make<PixelVectorType>(DimensionNumber);
- Node *ElemType = parseType();
+ Node *ElemType = getDerived().parseType();
if (ElemType == nullptr)
return nullptr;
return make<VectorType>(ElemType, DimensionNumber);
}
if (!consumeIf('_')) {
- Node *DimExpr = parseExpr();
+ Node *DimExpr = getDerived().parseExpr();
if (!DimExpr)
return nullptr;
if (!consumeIf('_'))
return nullptr;
- Node *ElemType = parseType();
+ Node *ElemType = getDerived().parseType();
if (!ElemType)
return nullptr;
return make<VectorType>(ElemType, DimExpr);
}
- Node *ElemType = parseType();
+ Node *ElemType = getDerived().parseType();
if (!ElemType)
return nullptr;
return make<VectorType>(ElemType, StringView());
@@ -3277,12 +3311,13 @@
// <decltype> ::= Dt <expression> E # decltype of an id-expression or class member access (C++0x)
// ::= DT <expression> E # decltype of an expression (C++0x)
-template<typename Alloc> Node *Db<Alloc>::parseDecltype() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseDecltype() {
if (!consumeIf('D'))
return nullptr;
if (!consumeIf('t') && !consumeIf('T'))
return nullptr;
- Node *E = parseExpr();
+ Node *E = getDerived().parseExpr();
if (E == nullptr)
return nullptr;
if (!consumeIf('E'))
@@ -3292,7 +3327,8 @@
// <array-type> ::= A <positive dimension number> _ <element type>
// ::= A [<dimension expression>] _ <element type>
-template<typename Alloc> Node *Db<Alloc>::parseArrayType() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseArrayType() {
if (!consumeIf('A'))
return nullptr;
@@ -3303,7 +3339,7 @@
if (!consumeIf('_'))
return nullptr;
} else if (!consumeIf('_')) {
- Node *DimExpr = parseExpr();
+ Node *DimExpr = getDerived().parseExpr();
if (DimExpr == nullptr)
return nullptr;
if (!consumeIf('_'))
@@ -3311,20 +3347,21 @@
Dimension = DimExpr;
}
- Node *Ty = parseType();
+ Node *Ty = getDerived().parseType();
if (Ty == nullptr)
return nullptr;
return make<ArrayType>(Ty, Dimension);
}
// <pointer-to-member-type> ::= M <class type> <member type>
-template<typename Alloc> Node *Db<Alloc>::parsePointerToMemberType() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parsePointerToMemberType() {
if (!consumeIf('M'))
return nullptr;
- Node *ClassType = parseType();
+ Node *ClassType = getDerived().parseType();
if (ClassType == nullptr)
return nullptr;
- Node *MemberType = parseType();
+ Node *MemberType = getDerived().parseType();
if (MemberType == nullptr)
return nullptr;
return make<PointerToMemberType>(ClassType, MemberType);
@@ -3334,7 +3371,8 @@
// ::= Ts <name> # dependent elaborated type specifier using 'struct' or 'class'
// ::= Tu <name> # dependent elaborated type specifier using 'union'
// ::= Te <name> # dependent elaborated type specifier using 'enum'
-template<typename Alloc> Node *Db<Alloc>::parseClassEnumType() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseClassEnumType() {
StringView ElabSpef;
if (consumeIf("Ts"))
ElabSpef = "struct";
@@ -3343,7 +3381,7 @@
else if (consumeIf("Te"))
ElabSpef = "enum";
- Node *Name = parseName();
+ Node *Name = getDerived().parseName();
if (Name == nullptr)
return nullptr;
@@ -3356,7 +3394,8 @@
// <qualified-type> ::= <qualifiers> <type>
// <qualifiers> ::= <extended-qualifier>* <CV-qualifiers>
// <extended-qualifier> ::= U <source-name> [<template-args>] # vendor extended type qualifier
-template<typename Alloc> Node *Db<Alloc>::parseQualifiedType() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseQualifiedType() {
if (consumeIf('U')) {
StringView Qual = parseBareSourceName();
if (Qual.empty())
@@ -3375,20 +3414,20 @@
}
if (Proto.empty())
return nullptr;
- Node *Child = parseQualifiedType();
+ Node *Child = getDerived().parseQualifiedType();
if (Child == nullptr)
return nullptr;
return make<ObjCProtoName>(Child, Proto);
}
- Node *Child = parseQualifiedType();
+ Node *Child = getDerived().parseQualifiedType();
if (Child == nullptr)
return nullptr;
return make<VendorExtQualType>(Child, Qual);
}
Qualifiers Quals = parseCVQualifiers();
- Node *Ty = parseType();
+ Node *Ty = getDerived().parseType();
if (Ty == nullptr)
return nullptr;
if (Quals != QualNone)
@@ -3416,12 +3455,10 @@
//
// <objc-name> ::= <k0 number> objcproto <k1 number> <identifier> # k0 = 9 + <number of digits in k1> + k1
// <objc-type> ::= <source-name> # PU<11+>objcproto 11objc_object<source-name> 11objc_object -> id<source-name>
-template<typename Alloc> Node *Db<Alloc>::parseType() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseType() {
Node *Result = nullptr;
- if (TypeCallback != nullptr)
- TypeCallback(TypeCallbackContext, First);
-
switch (look()) {
// ::= <qualified-type>
case 'r':
@@ -3436,13 +3473,13 @@
(look(AfterQuals) == 'D' &&
(look(AfterQuals + 1) == 'o' || look(AfterQuals + 1) == 'O' ||
look(AfterQuals + 1) == 'w' || look(AfterQuals + 1) == 'x'))) {
- Result = parseFunctionType();
+ Result = getDerived().parseFunctionType();
break;
}
- LLVM_FALLTHROUGH;
+ DEMANGLE_FALLTHROUGH;
}
case 'U': {
- Result = parseQualifiedType();
+ Result = getDerived().parseQualifiedType();
break;
}
// <builtin-type> ::= v # void
@@ -3580,18 +3617,18 @@
// ::= <decltype>
case 't':
case 'T': {
- Result = parseDecltype();
+ Result = getDerived().parseDecltype();
break;
}
// extension ::= <vector-type> # <vector-type> starts with Dv
case 'v': {
- Result = parseVectorType();
+ Result = getDerived().parseVectorType();
break;
}
// ::= Dp <type> # pack expansion (C++0x)
case 'p': {
First += 2;
- Node *Child = parseType();
+ Node *Child = getDerived().parseType();
if (!Child)
return nullptr;
Result = make<ParameterPackExpansion>(Child);
@@ -3603,34 +3640,34 @@
case 'w':
// Transaction safe function type.
case 'x':
- Result = parseFunctionType();
+ Result = getDerived().parseFunctionType();
break;
}
break;
// ::= <function-type>
case 'F': {
- Result = parseFunctionType();
+ Result = getDerived().parseFunctionType();
break;
}
// ::= <array-type>
case 'A': {
- Result = parseArrayType();
+ Result = getDerived().parseArrayType();
break;
}
// ::= <pointer-to-member-type>
case 'M': {
- Result = parsePointerToMemberType();
+ Result = getDerived().parsePointerToMemberType();
break;
}
// ::= <template-param>
case 'T': {
// This could be an elaborate type specifier on a <class-enum-type>.
if (look(1) == 's' || look(1) == 'u' || look(1) == 'e') {
- Result = parseClassEnumType();
+ Result = getDerived().parseClassEnumType();
break;
}
- Result = parseTemplateParam();
+ Result = getDerived().parseTemplateParam();
if (Result == nullptr)
return nullptr;
@@ -3645,7 +3682,7 @@
// parse them, take the second production.
if (TryToParseTemplateArgs && look() == 'I') {
- Node *TA = parseTemplateArgs();
+ Node *TA = getDerived().parseTemplateArgs();
if (TA == nullptr)
return nullptr;
Result = make<NameWithTemplateArgs>(Result, TA);
@@ -3655,7 +3692,7 @@
// ::= P <type> # pointer
case 'P': {
++First;
- Node *Ptr = parseType();
+ Node *Ptr = getDerived().parseType();
if (Ptr == nullptr)
return nullptr;
Result = make<PointerType>(Ptr);
@@ -3664,7 +3701,7 @@
// ::= R <type> # l-value reference
case 'R': {
++First;
- Node *Ref = parseType();
+ Node *Ref = getDerived().parseType();
if (Ref == nullptr)
return nullptr;
Result = make<ReferenceType>(Ref, ReferenceKind::LValue);
@@ -3673,7 +3710,7 @@
// ::= O <type> # r-value reference (C++11)
case 'O': {
++First;
- Node *Ref = parseType();
+ Node *Ref = getDerived().parseType();
if (Ref == nullptr)
return nullptr;
Result = make<ReferenceType>(Ref, ReferenceKind::RValue);
@@ -3682,7 +3719,7 @@
// ::= C <type> # complex pair (C99)
case 'C': {
++First;
- Node *P = parseType();
+ Node *P = getDerived().parseType();
if (P == nullptr)
return nullptr;
Result = make<PostfixQualifiedType>(P, " complex");
@@ -3691,7 +3728,7 @@
// ::= G <type> # imaginary (C99)
case 'G': {
++First;
- Node *P = parseType();
+ Node *P = getDerived().parseType();
if (P == nullptr)
return P;
Result = make<PostfixQualifiedType>(P, " imaginary");
@@ -3700,7 +3737,7 @@
// ::= <substitution> # See Compression below
case 'S': {
if (look(1) && look(1) != 't') {
- Node *Sub = parseSubstitution();
+ Node *Sub = getDerived().parseSubstitution();
if (Sub == nullptr)
return nullptr;
@@ -3715,7 +3752,7 @@
// parse them, take the second production.
if (TryToParseTemplateArgs && look() == 'I') {
- Node *TA = parseTemplateArgs();
+ Node *TA = getDerived().parseTemplateArgs();
if (TA == nullptr)
return nullptr;
Result = make<NameWithTemplateArgs>(Sub, TA);
@@ -3726,11 +3763,11 @@
// substitution table.
return Sub;
}
- LLVM_FALLTHROUGH;
+ DEMANGLE_FALLTHROUGH;
}
// ::= <class-enum-type>
default: {
- Result = parseClassEnumType();
+ Result = getDerived().parseClassEnumType();
break;
}
}
@@ -3743,24 +3780,28 @@
return Result;
}
-template<typename Alloc> Node *Db<Alloc>::parsePrefixExpr(StringView Kind) {
- Node *E = parseExpr();
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parsePrefixExpr(StringView Kind) {
+ Node *E = getDerived().parseExpr();
if (E == nullptr)
return nullptr;
return make<PrefixExpr>(Kind, E);
}
-template<typename Alloc> Node *Db<Alloc>::parseBinaryExpr(StringView Kind) {
- Node *LHS = parseExpr();
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseBinaryExpr(StringView Kind) {
+ Node *LHS = getDerived().parseExpr();
if (LHS == nullptr)
return nullptr;
- Node *RHS = parseExpr();
+ Node *RHS = getDerived().parseExpr();
if (RHS == nullptr)
return nullptr;
return make<BinaryExpr>(LHS, Kind, RHS);
}
-template<typename Alloc> Node *Db<Alloc>::parseIntegerLiteral(StringView Lit) {
+template <typename Derived, typename Alloc>
+Node *
+AbstractManglingParser<Derived, Alloc>::parseIntegerLiteral(StringView Lit) {
StringView Tmp = parseNumber(true);
if (!Tmp.empty() && consumeIf('E'))
return make<IntegerLiteral>(Lit, Tmp);
@@ -3768,7 +3809,8 @@
}
// <CV-Qualifiers> ::= [r] [V] [K]
-template<typename Alloc> Qualifiers Db<Alloc>::parseCVQualifiers() {
+template <typename Alloc, typename Derived>
+Qualifiers AbstractManglingParser<Alloc, Derived>::parseCVQualifiers() {
Qualifiers CVR = QualNone;
if (consumeIf('r'))
CVR |= QualRestrict;
@@ -3783,7 +3825,8 @@
// ::= fp <top-level CV-Qualifiers> <parameter-2 non-negative number> _ # L == 0, second and later parameters
// ::= fL <L-1 non-negative number> p <top-level CV-Qualifiers> _ # L > 0, first parameter
// ::= fL <L-1 non-negative number> p <top-level CV-Qualifiers> <parameter-2 non-negative number> _ # L > 0, second and later parameters
-template<typename Alloc> Node *Db<Alloc>::parseFunctionParam() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseFunctionParam() {
if (consumeIf("fp")) {
parseCVQualifiers();
StringView Num = parseNumber();
@@ -3810,26 +3853,27 @@
// [gs] na <expression>* _ <type> E # new[] (expr-list) type
// [gs] na <expression>* _ <type> <initializer> # new[] (expr-list) type (init)
// <initializer> ::= pi <expression>* E # parenthesized initialization
-template<typename Alloc> Node *Db<Alloc>::parseNewExpr() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseNewExpr() {
bool Global = consumeIf("gs");
bool IsArray = look(1) == 'a';
if (!consumeIf("nw") && !consumeIf("na"))
return nullptr;
size_t Exprs = Names.size();
while (!consumeIf('_')) {
- Node *Ex = parseExpr();
+ Node *Ex = getDerived().parseExpr();
if (Ex == nullptr)
return nullptr;
Names.push_back(Ex);
}
NodeArray ExprList = popTrailingNodeArray(Exprs);
- Node *Ty = parseType();
+ Node *Ty = getDerived().parseType();
if (Ty == nullptr)
return Ty;
if (consumeIf("pi")) {
size_t InitsBegin = Names.size();
while (!consumeIf('E')) {
- Node *Init = parseExpr();
+ Node *Init = getDerived().parseExpr();
if (Init == nullptr)
return Init;
Names.push_back(Init);
@@ -3843,13 +3887,14 @@
// cv <type> <expression> # conversion with one argument
// cv <type> _ <expression>* E # conversion with a different number of arguments
-template<typename Alloc> Node *Db<Alloc>::parseConversionExpr() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseConversionExpr() {
if (!consumeIf("cv"))
return nullptr;
Node *Ty;
{
SwapAndRestore<bool> SaveTemp(TryToParseTemplateArgs, false);
- Ty = parseType();
+ Ty = getDerived().parseType();
}
if (Ty == nullptr)
@@ -3858,7 +3903,7 @@
if (consumeIf('_')) {
size_t ExprsBegin = Names.size();
while (!consumeIf('E')) {
- Node *E = parseExpr();
+ Node *E = getDerived().parseExpr();
if (E == nullptr)
return E;
Names.push_back(E);
@@ -3867,7 +3912,7 @@
return make<ConversionExpr>(Ty, Exprs);
}
- Node *E[1] = {parseExpr()};
+ Node *E[1] = {getDerived().parseExpr()};
if (E[0] == nullptr)
return nullptr;
return make<ConversionExpr>(Ty, makeNodeArray(E, E + 1));
@@ -3879,13 +3924,14 @@
// ::= L <nullptr type> E # nullptr literal (i.e., "LDnE")
// FIXME: ::= L <type> <real-part float> _ <imag-part float> E # complex floating point literal (C 2000)
// ::= L <mangled-name> E # external name
-template<typename Alloc> Node *Db<Alloc>::parseExprPrimary() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseExprPrimary() {
if (!consumeIf('L'))
return nullptr;
switch (look()) {
case 'w':
++First;
- return parseIntegerLiteral("wchar_t");
+ return getDerived().parseIntegerLiteral("wchar_t");
case 'b':
if (consumeIf("b0E"))
return make<BoolExpr>(0);
@@ -3894,55 +3940,55 @@
return nullptr;
case 'c':
++First;
- return parseIntegerLiteral("char");
+ return getDerived().parseIntegerLiteral("char");
case 'a':
++First;
- return parseIntegerLiteral("signed char");
+ return getDerived().parseIntegerLiteral("signed char");
case 'h':
++First;
- return parseIntegerLiteral("unsigned char");
+ return getDerived().parseIntegerLiteral("unsigned char");
case 's':
++First;
- return parseIntegerLiteral("short");
+ return getDerived().parseIntegerLiteral("short");
case 't':
++First;
- return parseIntegerLiteral("unsigned short");
+ return getDerived().parseIntegerLiteral("unsigned short");
case 'i':
++First;
- return parseIntegerLiteral("");
+ return getDerived().parseIntegerLiteral("");
case 'j':
++First;
- return parseIntegerLiteral("u");
+ return getDerived().parseIntegerLiteral("u");
case 'l':
++First;
- return parseIntegerLiteral("l");
+ return getDerived().parseIntegerLiteral("l");
case 'm':
++First;
- return parseIntegerLiteral("ul");
+ return getDerived().parseIntegerLiteral("ul");
case 'x':
++First;
- return parseIntegerLiteral("ll");
+ return getDerived().parseIntegerLiteral("ll");
case 'y':
++First;
- return parseIntegerLiteral("ull");
+ return getDerived().parseIntegerLiteral("ull");
case 'n':
++First;
- return parseIntegerLiteral("__int128");
+ return getDerived().parseIntegerLiteral("__int128");
case 'o':
++First;
- return parseIntegerLiteral("unsigned __int128");
+ return getDerived().parseIntegerLiteral("unsigned __int128");
case 'f':
++First;
- return parseFloatingLiteral<float>();
+ return getDerived().template parseFloatingLiteral<float>();
case 'd':
++First;
- return parseFloatingLiteral<double>();
+ return getDerived().template parseFloatingLiteral<double>();
case 'e':
++First;
- return parseFloatingLiteral<long double>();
+ return getDerived().template parseFloatingLiteral<long double>();
case '_':
if (consumeIf("_Z")) {
- Node *R = parseEncoding();
+ Node *R = getDerived().parseEncoding();
if (R != nullptr && consumeIf('E'))
return R;
}
@@ -3953,7 +3999,7 @@
return nullptr;
default: {
// might be named type
- Node *T = parseType();
+ Node *T = getDerived().parseType();
if (T == nullptr)
return nullptr;
StringView N = parseNumber();
@@ -3973,45 +4019,46 @@
// ::= di <field source-name> <braced-expression> # .name = expr
// ::= dx <index expression> <braced-expression> # [expr] = expr
// ::= dX <range begin expression> <range end expression> <braced-expression>
-template<typename Alloc> Node *Db<Alloc>::parseBracedExpr() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseBracedExpr() {
if (look() == 'd') {
switch (look(1)) {
case 'i': {
First += 2;
- Node *Field = parseSourceName(/*NameState=*/nullptr);
+ Node *Field = getDerived().parseSourceName(/*NameState=*/nullptr);
if (Field == nullptr)
return nullptr;
- Node *Init = parseBracedExpr();
+ Node *Init = getDerived().parseBracedExpr();
if (Init == nullptr)
return nullptr;
return make<BracedExpr>(Field, Init, /*isArray=*/false);
}
case 'x': {
First += 2;
- Node *Index = parseExpr();
+ Node *Index = getDerived().parseExpr();
if (Index == nullptr)
return nullptr;
- Node *Init = parseBracedExpr();
+ Node *Init = getDerived().parseBracedExpr();
if (Init == nullptr)
return nullptr;
return make<BracedExpr>(Index, Init, /*isArray=*/true);
}
case 'X': {
First += 2;
- Node *RangeBegin = parseExpr();
+ Node *RangeBegin = getDerived().parseExpr();
if (RangeBegin == nullptr)
return nullptr;
- Node *RangeEnd = parseExpr();
+ Node *RangeEnd = getDerived().parseExpr();
if (RangeEnd == nullptr)
return nullptr;
- Node *Init = parseBracedExpr();
+ Node *Init = getDerived().parseBracedExpr();
if (Init == nullptr)
return nullptr;
return make<BracedRangeExpr>(RangeBegin, RangeEnd, Init);
}
}
}
- return parseExpr();
+ return getDerived().parseExpr();
}
// (not yet in the spec)
@@ -4019,7 +4066,8 @@
// ::= fR <binary-operator-name> <expression> <expression>
// ::= fl <binary-operator-name> <expression>
// ::= fr <binary-operator-name> <expression>
-template<typename Alloc> Node *Db<Alloc>::parseFoldExpr() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseFoldExpr() {
if (!consumeIf('f'))
return nullptr;
@@ -4069,11 +4117,11 @@
else if (consumeIf("rS")) OperatorName = ">>=";
else return nullptr;
- Node *Pack = parseExpr(), *Init = nullptr;
+ Node *Pack = getDerived().parseExpr(), *Init = nullptr;
if (Pack == nullptr)
return nullptr;
if (HasInitializer) {
- Init = parseExpr();
+ Init = getDerived().parseExpr();
if (Init == nullptr)
return nullptr;
}
@@ -4128,49 +4176,50 @@
// ::= fl <binary-operator-name> <expression>
// ::= fr <binary-operator-name> <expression>
// ::= <expr-primary>
-template<typename Alloc> Node *Db<Alloc>::parseExpr() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
bool Global = consumeIf("gs");
if (numLeft() < 2)
return nullptr;
switch (*First) {
case 'L':
- return parseExprPrimary();
+ return getDerived().parseExprPrimary();
case 'T':
- return parseTemplateParam();
+ return getDerived().parseTemplateParam();
case 'f': {
// Disambiguate a fold expression from a <function-param>.
if (look(1) == 'p' || (look(1) == 'L' && std::isdigit(look(2))))
- return parseFunctionParam();
- return parseFoldExpr();
+ return getDerived().parseFunctionParam();
+ return getDerived().parseFoldExpr();
}
case 'a':
switch (First[1]) {
case 'a':
First += 2;
- return parseBinaryExpr("&&");
+ return getDerived().parseBinaryExpr("&&");
case 'd':
First += 2;
- return parsePrefixExpr("&");
+ return getDerived().parsePrefixExpr("&");
case 'n':
First += 2;
- return parseBinaryExpr("&");
+ return getDerived().parseBinaryExpr("&");
case 'N':
First += 2;
- return parseBinaryExpr("&=");
+ return getDerived().parseBinaryExpr("&=");
case 'S':
First += 2;
- return parseBinaryExpr("=");
+ return getDerived().parseBinaryExpr("=");
case 't': {
First += 2;
- Node *Ty = parseType();
+ Node *Ty = getDerived().parseType();
if (Ty == nullptr)
return nullptr;
return make<EnclosingExpr>("alignof (", Ty, ")");
}
case 'z': {
First += 2;
- Node *Ty = parseExpr();
+ Node *Ty = getDerived().parseExpr();
if (Ty == nullptr)
return nullptr;
return make<EnclosingExpr>("alignof (", Ty, ")");
@@ -4182,10 +4231,10 @@
// cc <type> <expression> # const_cast<type>(expression)
case 'c': {
First += 2;
- Node *Ty = parseType();
+ Node *Ty = getDerived().parseType();
if (Ty == nullptr)
return Ty;
- Node *Ex = parseExpr();
+ Node *Ex = getDerived().parseExpr();
if (Ex == nullptr)
return Ex;
return make<CastExpr>("const_cast", Ty, Ex);
@@ -4193,12 +4242,12 @@
// cl <expression>+ E # call
case 'l': {
First += 2;
- Node *Callee = parseExpr();
+ Node *Callee = getDerived().parseExpr();
if (Callee == nullptr)
return Callee;
size_t ExprsBegin = Names.size();
while (!consumeIf('E')) {
- Node *E = parseExpr();
+ Node *E = getDerived().parseExpr();
if (E == nullptr)
return E;
Names.push_back(E);
@@ -4207,104 +4256,104 @@
}
case 'm':
First += 2;
- return parseBinaryExpr(",");
+ return getDerived().parseBinaryExpr(",");
case 'o':
First += 2;
- return parsePrefixExpr("~");
+ return getDerived().parsePrefixExpr("~");
case 'v':
- return parseConversionExpr();
+ return getDerived().parseConversionExpr();
}
return nullptr;
case 'd':
switch (First[1]) {
case 'a': {
First += 2;
- Node *Ex = parseExpr();
+ Node *Ex = getDerived().parseExpr();
if (Ex == nullptr)
return Ex;
return make<DeleteExpr>(Ex, Global, /*is_array=*/true);
}
case 'c': {
First += 2;
- Node *T = parseType();
+ Node *T = getDerived().parseType();
if (T == nullptr)
return T;
- Node *Ex = parseExpr();
+ Node *Ex = getDerived().parseExpr();
if (Ex == nullptr)
return Ex;
return make<CastExpr>("dynamic_cast", T, Ex);
}
case 'e':
First += 2;
- return parsePrefixExpr("*");
+ return getDerived().parsePrefixExpr("*");
case 'l': {
First += 2;
- Node *E = parseExpr();
+ Node *E = getDerived().parseExpr();
if (E == nullptr)
return E;
return make<DeleteExpr>(E, Global, /*is_array=*/false);
}
case 'n':
- return parseUnresolvedName();
+ return getDerived().parseUnresolvedName();
case 's': {
First += 2;
- Node *LHS = parseExpr();
+ Node *LHS = getDerived().parseExpr();
if (LHS == nullptr)
return nullptr;
- Node *RHS = parseExpr();
+ Node *RHS = getDerived().parseExpr();
if (RHS == nullptr)
return nullptr;
return make<MemberExpr>(LHS, ".*", RHS);
}
case 't': {
First += 2;
- Node *LHS = parseExpr();
+ Node *LHS = getDerived().parseExpr();
if (LHS == nullptr)
return LHS;
- Node *RHS = parseExpr();
+ Node *RHS = getDerived().parseExpr();
if (RHS == nullptr)
return nullptr;
return make<MemberExpr>(LHS, ".", RHS);
}
case 'v':
First += 2;
- return parseBinaryExpr("/");
+ return getDerived().parseBinaryExpr("/");
case 'V':
First += 2;
- return parseBinaryExpr("/=");
+ return getDerived().parseBinaryExpr("/=");
}
return nullptr;
case 'e':
switch (First[1]) {
case 'o':
First += 2;
- return parseBinaryExpr("^");
+ return getDerived().parseBinaryExpr("^");
case 'O':
First += 2;
- return parseBinaryExpr("^=");
+ return getDerived().parseBinaryExpr("^=");
case 'q':
First += 2;
- return parseBinaryExpr("==");
+ return getDerived().parseBinaryExpr("==");
}
return nullptr;
case 'g':
switch (First[1]) {
case 'e':
First += 2;
- return parseBinaryExpr(">=");
+ return getDerived().parseBinaryExpr(">=");
case 't':
First += 2;
- return parseBinaryExpr(">");
+ return getDerived().parseBinaryExpr(">");
}
return nullptr;
case 'i':
switch (First[1]) {
case 'x': {
First += 2;
- Node *Base = parseExpr();
+ Node *Base = getDerived().parseExpr();
if (Base == nullptr)
return nullptr;
- Node *Index = parseExpr();
+ Node *Index = getDerived().parseExpr();
if (Index == nullptr)
return Index;
return make<ArraySubscriptExpr>(Base, Index);
@@ -4313,7 +4362,7 @@
First += 2;
size_t InitsBegin = Names.size();
while (!consumeIf('E')) {
- Node *E = parseBracedExpr();
+ Node *E = getDerived().parseBracedExpr();
if (E == nullptr)
return nullptr;
Names.push_back(E);
@@ -4326,37 +4375,37 @@
switch (First[1]) {
case 'e':
First += 2;
- return parseBinaryExpr("<=");
+ return getDerived().parseBinaryExpr("<=");
case 's':
First += 2;
- return parseBinaryExpr("<<");
+ return getDerived().parseBinaryExpr("<<");
case 'S':
First += 2;
- return parseBinaryExpr("<<=");
+ return getDerived().parseBinaryExpr("<<=");
case 't':
First += 2;
- return parseBinaryExpr("<");
+ return getDerived().parseBinaryExpr("<");
}
return nullptr;
case 'm':
switch (First[1]) {
case 'i':
First += 2;
- return parseBinaryExpr("-");
+ return getDerived().parseBinaryExpr("-");
case 'I':
First += 2;
- return parseBinaryExpr("-=");
+ return getDerived().parseBinaryExpr("-=");
case 'l':
First += 2;
- return parseBinaryExpr("*");
+ return getDerived().parseBinaryExpr("*");
case 'L':
First += 2;
- return parseBinaryExpr("*=");
+ return getDerived().parseBinaryExpr("*=");
case 'm':
First += 2;
if (consumeIf('_'))
- return parsePrefixExpr("--");
- Node *Ex = parseExpr();
+ return getDerived().parsePrefixExpr("--");
+ Node *Ex = getDerived().parseExpr();
if (Ex == nullptr)
return nullptr;
return make<PostfixExpr>(Ex, "--");
@@ -4366,19 +4415,19 @@
switch (First[1]) {
case 'a':
case 'w':
- return parseNewExpr();
+ return getDerived().parseNewExpr();
case 'e':
First += 2;
- return parseBinaryExpr("!=");
+ return getDerived().parseBinaryExpr("!=");
case 'g':
First += 2;
- return parsePrefixExpr("-");
+ return getDerived().parsePrefixExpr("-");
case 't':
First += 2;
- return parsePrefixExpr("!");
+ return getDerived().parsePrefixExpr("!");
case 'x':
First += 2;
- Node *Ex = parseExpr();
+ Node *Ex = getDerived().parseExpr();
if (Ex == nullptr)
return Ex;
return make<EnclosingExpr>("noexcept (", Ex, ")");
@@ -4387,47 +4436,47 @@
case 'o':
switch (First[1]) {
case 'n':
- return parseUnresolvedName();
+ return getDerived().parseUnresolvedName();
case 'o':
First += 2;
- return parseBinaryExpr("||");
+ return getDerived().parseBinaryExpr("||");
case 'r':
First += 2;
- return parseBinaryExpr("|");
+ return getDerived().parseBinaryExpr("|");
case 'R':
First += 2;
- return parseBinaryExpr("|=");
+ return getDerived().parseBinaryExpr("|=");
}
return nullptr;
case 'p':
switch (First[1]) {
case 'm':
First += 2;
- return parseBinaryExpr("->*");
+ return getDerived().parseBinaryExpr("->*");
case 'l':
First += 2;
- return parseBinaryExpr("+");
+ return getDerived().parseBinaryExpr("+");
case 'L':
First += 2;
- return parseBinaryExpr("+=");
+ return getDerived().parseBinaryExpr("+=");
case 'p': {
First += 2;
if (consumeIf('_'))
- return parsePrefixExpr("++");
- Node *Ex = parseExpr();
+ return getDerived().parsePrefixExpr("++");
+ Node *Ex = getDerived().parseExpr();
if (Ex == nullptr)
return Ex;
return make<PostfixExpr>(Ex, "++");
}
case 's':
First += 2;
- return parsePrefixExpr("+");
+ return getDerived().parsePrefixExpr("+");
case 't': {
First += 2;
- Node *L = parseExpr();
+ Node *L = getDerived().parseExpr();
if (L == nullptr)
return nullptr;
- Node *R = parseExpr();
+ Node *R = getDerived().parseExpr();
if (R == nullptr)
return nullptr;
return make<MemberExpr>(L, "->", R);
@@ -4437,13 +4486,13 @@
case 'q':
if (First[1] == 'u') {
First += 2;
- Node *Cond = parseExpr();
+ Node *Cond = getDerived().parseExpr();
if (Cond == nullptr)
return nullptr;
- Node *LHS = parseExpr();
+ Node *LHS = getDerived().parseExpr();
if (LHS == nullptr)
return nullptr;
- Node *RHS = parseExpr();
+ Node *RHS = getDerived().parseExpr();
if (RHS == nullptr)
return nullptr;
return make<ConditionalExpr>(Cond, LHS, RHS);
@@ -4453,59 +4502,59 @@
switch (First[1]) {
case 'c': {
First += 2;
- Node *T = parseType();
+ Node *T = getDerived().parseType();
if (T == nullptr)
return T;
- Node *Ex = parseExpr();
+ Node *Ex = getDerived().parseExpr();
if (Ex == nullptr)
return Ex;
return make<CastExpr>("reinterpret_cast", T, Ex);
}
case 'm':
First += 2;
- return parseBinaryExpr("%");
+ return getDerived().parseBinaryExpr("%");
case 'M':
First += 2;
- return parseBinaryExpr("%=");
+ return getDerived().parseBinaryExpr("%=");
case 's':
First += 2;
- return parseBinaryExpr(">>");
+ return getDerived().parseBinaryExpr(">>");
case 'S':
First += 2;
- return parseBinaryExpr(">>=");
+ return getDerived().parseBinaryExpr(">>=");
}
return nullptr;
case 's':
switch (First[1]) {
case 'c': {
First += 2;
- Node *T = parseType();
+ Node *T = getDerived().parseType();
if (T == nullptr)
return T;
- Node *Ex = parseExpr();
+ Node *Ex = getDerived().parseExpr();
if (Ex == nullptr)
return Ex;
return make<CastExpr>("static_cast", T, Ex);
}
case 'p': {
First += 2;
- Node *Child = parseExpr();
+ Node *Child = getDerived().parseExpr();
if (Child == nullptr)
return nullptr;
return make<ParameterPackExpansion>(Child);
}
case 'r':
- return parseUnresolvedName();
+ return getDerived().parseUnresolvedName();
case 't': {
First += 2;
- Node *Ty = parseType();
+ Node *Ty = getDerived().parseType();
if (Ty == nullptr)
return Ty;
return make<EnclosingExpr>("sizeof (", Ty, ")");
}
case 'z': {
First += 2;
- Node *Ex = parseExpr();
+ Node *Ex = getDerived().parseExpr();
if (Ex == nullptr)
return Ex;
return make<EnclosingExpr>("sizeof (", Ex, ")");
@@ -4513,12 +4562,12 @@
case 'Z':
First += 2;
if (look() == 'T') {
- Node *R = parseTemplateParam();
+ Node *R = getDerived().parseTemplateParam();
if (R == nullptr)
return nullptr;
return make<SizeofParamPackExpr>(R);
} else if (look() == 'f') {
- Node *FP = parseFunctionParam();
+ Node *FP = getDerived().parseFunctionParam();
if (FP == nullptr)
return nullptr;
return make<EnclosingExpr>("sizeof... (", FP, ")");
@@ -4528,7 +4577,7 @@
First += 2;
size_t ArgsBegin = Names.size();
while (!consumeIf('E')) {
- Node *Arg = parseTemplateArg();
+ Node *Arg = getDerived().parseTemplateArg();
if (Arg == nullptr)
return nullptr;
Names.push_back(Arg);
@@ -4544,26 +4593,26 @@
switch (First[1]) {
case 'e': {
First += 2;
- Node *Ex = parseExpr();
+ Node *Ex = getDerived().parseExpr();
if (Ex == nullptr)
return Ex;
return make<EnclosingExpr>("typeid (", Ex, ")");
}
case 'i': {
First += 2;
- Node *Ty = parseType();
+ Node *Ty = getDerived().parseType();
if (Ty == nullptr)
return Ty;
return make<EnclosingExpr>("typeid (", Ty, ")");
}
case 'l': {
First += 2;
- Node *Ty = parseType();
+ Node *Ty = getDerived().parseType();
if (Ty == nullptr)
return nullptr;
size_t InitsBegin = Names.size();
while (!consumeIf('E')) {
- Node *E = parseBracedExpr();
+ Node *E = getDerived().parseBracedExpr();
if (E == nullptr)
return nullptr;
Names.push_back(E);
@@ -4575,7 +4624,7 @@
return make<NameType>("throw");
case 'w': {
First += 2;
- Node *Ex = parseExpr();
+ Node *Ex = getDerived().parseExpr();
if (Ex == nullptr)
return nullptr;
return make<ThrowExpr>(Ex);
@@ -4591,7 +4640,7 @@
case '7':
case '8':
case '9':
- return parseUnresolvedName();
+ return getDerived().parseUnresolvedName();
}
return nullptr;
}
@@ -4604,7 +4653,8 @@
//
// <v-offset> ::= <offset number> _ <virtual offset number>
// # virtual base override, with vcall offset
-template<typename Alloc> bool Db<Alloc>::parseCallOffset() {
+template <typename Alloc, typename Derived>
+bool AbstractManglingParser<Alloc, Derived>::parseCallOffset() {
// Just scan through the call offset, we never add this information into the
// output.
if (consumeIf('h'))
@@ -4633,14 +4683,15 @@
// ::= GR <object name> <seq-id> _ # Subsequent temporaries
// extension ::= TC <first type> <number> _ <second type> # construction vtable for second-in-first
// extension ::= GR <object name> # reference temporary for object
-template<typename Alloc> Node *Db<Alloc>::parseSpecialName() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseSpecialName() {
switch (look()) {
case 'T':
switch (look(1)) {
// TV <type> # virtual table
case 'V': {
First += 2;
- Node *Ty = parseType();
+ Node *Ty = getDerived().parseType();
if (Ty == nullptr)
return nullptr;
return make<SpecialName>("vtable for ", Ty);
@@ -4648,7 +4699,7 @@
// TT <type> # VTT structure (construction vtable index)
case 'T': {
First += 2;
- Node *Ty = parseType();
+ Node *Ty = getDerived().parseType();
if (Ty == nullptr)
return nullptr;
return make<SpecialName>("VTT for ", Ty);
@@ -4656,7 +4707,7 @@
// TI <type> # typeinfo structure
case 'I': {
First += 2;
- Node *Ty = parseType();
+ Node *Ty = getDerived().parseType();
if (Ty == nullptr)
return nullptr;
return make<SpecialName>("typeinfo for ", Ty);
@@ -4664,7 +4715,7 @@
// TS <type> # typeinfo name (null-terminated byte string)
case 'S': {
First += 2;
- Node *Ty = parseType();
+ Node *Ty = getDerived().parseType();
if (Ty == nullptr)
return nullptr;
return make<SpecialName>("typeinfo name for ", Ty);
@@ -4674,7 +4725,7 @@
First += 2;
if (parseCallOffset() || parseCallOffset())
return nullptr;
- Node *Encoding = parseEncoding();
+ Node *Encoding = getDerived().parseEncoding();
if (Encoding == nullptr)
return nullptr;
return make<SpecialName>("covariant return thunk to ", Encoding);
@@ -4683,12 +4734,12 @@
// # construction vtable for second-in-first
case 'C': {
First += 2;
- Node *FirstType = parseType();
+ Node *FirstType = getDerived().parseType();
if (FirstType == nullptr)
return nullptr;
if (parseNumber(true).empty() || !consumeIf('_'))
return nullptr;
- Node *SecondType = parseType();
+ Node *SecondType = getDerived().parseType();
if (SecondType == nullptr)
return nullptr;
return make<CtorVtableSpecialName>(SecondType, FirstType);
@@ -4696,7 +4747,7 @@
// TW <object name> # Thread-local wrapper
case 'W': {
First += 2;
- Node *Name = parseName();
+ Node *Name = getDerived().parseName();
if (Name == nullptr)
return nullptr;
return make<SpecialName>("thread-local wrapper routine for ", Name);
@@ -4704,7 +4755,7 @@
// TH <object name> # Thread-local initialization
case 'H': {
First += 2;
- Node *Name = parseName();
+ Node *Name = getDerived().parseName();
if (Name == nullptr)
return nullptr;
return make<SpecialName>("thread-local initialization routine for ", Name);
@@ -4715,7 +4766,7 @@
bool IsVirt = look() == 'v';
if (parseCallOffset())
return nullptr;
- Node *BaseEncoding = parseEncoding();
+ Node *BaseEncoding = getDerived().parseEncoding();
if (BaseEncoding == nullptr)
return nullptr;
if (IsVirt)
@@ -4729,7 +4780,7 @@
// GV <object name> # Guard variable for one-time initialization
case 'V': {
First += 2;
- Node *Name = parseName();
+ Node *Name = getDerived().parseName();
if (Name == nullptr)
return nullptr;
return make<SpecialName>("guard variable for ", Name);
@@ -4739,7 +4790,7 @@
// GR <object name> <seq-id> _ # Subsequent temporaries
case 'R': {
First += 2;
- Node *Name = parseName();
+ Node *Name = getDerived().parseName();
if (Name == nullptr)
return nullptr;
size_t Count;
@@ -4756,9 +4807,10 @@
// <encoding> ::= <function name> <bare-function-type>
// ::= <data name>
// ::= <special-name>
-template<typename Alloc> Node *Db<Alloc>::parseEncoding() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseEncoding() {
if (look() == 'G' || look() == 'T')
- return parseSpecialName();
+ return getDerived().parseSpecialName();
auto IsEndOfEncoding = [&] {
// The set of chars that can potentially follow an <encoding> (none of which
@@ -4768,7 +4820,7 @@
};
NameState NameInfo(this);
- Node *Name = parseName(&NameInfo);
+ Node *Name = getDerived().parseName(&NameInfo);
if (Name == nullptr)
return nullptr;
@@ -4782,7 +4834,7 @@
if (consumeIf("Ua9enable_ifI")) {
size_t BeforeArgs = Names.size();
while (!consumeIf('E')) {
- Node *Arg = parseTemplateArg();
+ Node *Arg = getDerived().parseTemplateArg();
if (Arg == nullptr)
return nullptr;
Names.push_back(Arg);
@@ -4794,7 +4846,7 @@
Node *ReturnType = nullptr;
if (!NameInfo.CtorDtorConversion && NameInfo.EndsWithTemplateArgs) {
- ReturnType = parseType();
+ ReturnType = getDerived().parseType();
if (ReturnType == nullptr)
return nullptr;
}
@@ -4806,7 +4858,7 @@
size_t ParamsBegin = Names.size();
do {
- Node *Ty = parseType();
+ Node *Ty = getDerived().parseType();
if (Ty == nullptr)
return nullptr;
Names.push_back(Ty);
@@ -4852,9 +4904,9 @@
static constexpr const char *spec = "%LaL";
};
-template<typename Alloc>
-template<class Float>
-Node *Db<Alloc>::parseFloatingLiteral() {
+template <typename Alloc, typename Derived>
+template <class Float>
+Node *AbstractManglingParser<Alloc, Derived>::parseFloatingLiteral() {
const size_t N = FloatData<Float>::mangled_size;
if (numLeft() <= N)
return nullptr;
@@ -4869,7 +4921,8 @@
}
// <seq-id> ::= <0-9A-Z>+
-template<typename Alloc> bool Db<Alloc>::parseSeqId(size_t *Out) {
+template <typename Alloc, typename Derived>
+bool AbstractManglingParser<Alloc, Derived>::parseSeqId(size_t *Out) {
if (!(look() >= '0' && look() <= '9') &&
!(look() >= 'A' && look() <= 'Z'))
return true;
@@ -4900,7 +4953,8 @@
// <substitution> ::= Si # ::std::basic_istream<char, std::char_traits<char> >
// <substitution> ::= So # ::std::basic_ostream<char, std::char_traits<char> >
// <substitution> ::= Sd # ::std::basic_iostream<char, std::char_traits<char> >
-template<typename Alloc> Node *Db<Alloc>::parseSubstitution() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseSubstitution() {
if (!consumeIf('S'))
return nullptr;
@@ -4939,7 +4993,7 @@
// Itanium C++ ABI 5.1.2: If a name that would use a built-in <substitution>
// has ABI tags, the tags are appended to the substitution; the result is a
// substitutable component.
- Node *WithTags = parseAbiTags(SpecialSub);
+ Node *WithTags = getDerived().parseAbiTags(SpecialSub);
if (WithTags != SpecialSub) {
Subs.push_back(WithTags);
SpecialSub = WithTags;
@@ -4966,7 +5020,8 @@
// <template-param> ::= T_ # first template parameter
// ::= T <parameter-2 non-negative number> _
-template<typename Alloc> Node *Db<Alloc>::parseTemplateParam() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseTemplateParam() {
if (!consumeIf('T'))
return nullptr;
@@ -5007,11 +5062,12 @@
// ::= <expr-primary> # simple expressions
// ::= J <template-arg>* E # argument pack
// ::= LZ <encoding> E # extension
-template<typename Alloc> Node *Db<Alloc>::parseTemplateArg() {
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parseTemplateArg() {
switch (look()) {
case 'X': {
++First;
- Node *Arg = parseExpr();
+ Node *Arg = getDerived().parseExpr();
if (Arg == nullptr || !consumeIf('E'))
return nullptr;
return Arg;
@@ -5020,7 +5076,7 @@
++First;
size_t ArgsBegin = Names.size();
while (!consumeIf('E')) {
- Node *Arg = parseTemplateArg();
+ Node *Arg = getDerived().parseTemplateArg();
if (Arg == nullptr)
return nullptr;
Names.push_back(Arg);
@@ -5032,23 +5088,24 @@
// ::= LZ <encoding> E # extension
if (look(1) == 'Z') {
First += 2;
- Node *Arg = parseEncoding();
+ Node *Arg = getDerived().parseEncoding();
if (Arg == nullptr || !consumeIf('E'))
return nullptr;
return Arg;
}
// ::= <expr-primary> # simple expressions
- return parseExprPrimary();
+ return getDerived().parseExprPrimary();
}
default:
- return parseType();
+ return getDerived().parseType();
}
}
// <template-args> ::= I <template-arg>* E
// extension, the abi says <template-arg>+
-template <typename Alloc>
-Node *Db<Alloc>::parseTemplateArgs(bool TagTemplates) {
+template <typename Derived, typename Alloc>
+Node *
+AbstractManglingParser<Derived, Alloc>::parseTemplateArgs(bool TagTemplates) {
if (!consumeIf('I'))
return nullptr;
@@ -5061,7 +5118,7 @@
while (!consumeIf('E')) {
if (TagTemplates) {
auto OldParams = std::move(TemplateParams);
- Node *Arg = parseTemplateArg();
+ Node *Arg = getDerived().parseTemplateArg();
TemplateParams = std::move(OldParams);
if (Arg == nullptr)
return nullptr;
@@ -5075,7 +5132,7 @@
}
TemplateParams.push_back(TableEntry);
} else {
- Node *Arg = parseTemplateArg();
+ Node *Arg = getDerived().parseTemplateArg();
if (Arg == nullptr)
return nullptr;
Names.push_back(Arg);
@@ -5089,9 +5146,10 @@
// extension ::= ___Z <encoding> _block_invoke
// extension ::= ___Z <encoding> _block_invoke<decimal-digit>+
// extension ::= ___Z <encoding> _block_invoke_<decimal-digit>+
-template<typename Alloc> Node *Db<Alloc>::parse() {
- if (consumeIf("_Z")) {
- Node *Encoding = parseEncoding();
+template <typename Derived, typename Alloc>
+Node *AbstractManglingParser<Derived, Alloc>::parse() {
+ if (consumeIf("_Z") || consumeIf("__Z")) {
+ Node *Encoding = getDerived().parseEncoding();
if (Encoding == nullptr)
return nullptr;
if (look() == '.') {
@@ -5103,8 +5161,8 @@
return Encoding;
}
- if (consumeIf("___Z")) {
- Node *Encoding = parseEncoding();
+ if (consumeIf("___Z") || consumeIf("____Z")) {
+ Node *Encoding = getDerived().parseEncoding();
if (Encoding == nullptr || !consumeIf("_block_invoke"))
return nullptr;
bool RequireNumber = consumeIf('_');
@@ -5117,13 +5175,18 @@
return make<SpecialName>("invocation function for block in ", Encoding);
}
- Node *Ty = parseType();
+ Node *Ty = getDerived().parseType();
if (numLeft() != 0)
return nullptr;
return Ty;
}
-} // namespace itanium_demangle
-} // namespace llvm
+template <typename Alloc>
+struct ManglingParser : AbstractManglingParser<ManglingParser<Alloc>, Alloc> {
+ using AbstractManglingParser<ManglingParser<Alloc>,
+ Alloc>::AbstractManglingParser;
+};
-#endif // LLVM_DEMANGLE_ITANIUMDEMANGLE_H
+DEMANGLE_NAMESPACE_END
+
+#endif // DEMANGLE_ITANIUMDEMANGLE_H
diff --git a/linux-x64/clang/include/llvm/Demangle/MicrosoftDemangle.h b/linux-x64/clang/include/llvm/Demangle/MicrosoftDemangle.h
new file mode 100644
index 0000000..a23e327
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Demangle/MicrosoftDemangle.h
@@ -0,0 +1,275 @@
+//===------------------------- MicrosoftDemangle.h --------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_DEMANGLE_MICROSOFT_DEMANGLE_H
+#define LLVM_DEMANGLE_MICROSOFT_DEMANGLE_H
+
+#include "llvm/Demangle/DemangleConfig.h"
+#include "llvm/Demangle/MicrosoftDemangleNodes.h"
+#include "llvm/Demangle/StringView.h"
+#include "llvm/Demangle/Utility.h"
+
+#include <utility>
+
+namespace llvm {
+namespace ms_demangle {
+// This memory allocator is extremely fast, but it doesn't call dtors
+// for allocated objects. That means you can't use STL containers
+// (such as std::vector) with this allocator. But it pays off --
+// the demangler is 3x faster with this allocator compared to one with
+// STL containers.
+constexpr size_t AllocUnit = 4096;
+
+class ArenaAllocator {
+ struct AllocatorNode {
+ uint8_t *Buf = nullptr;
+ size_t Used = 0;
+ size_t Capacity = 0;
+ AllocatorNode *Next = nullptr;
+ };
+
+ void addNode(size_t Capacity) {
+ AllocatorNode *NewHead = new AllocatorNode;
+ NewHead->Buf = new uint8_t[Capacity];
+ NewHead->Next = Head;
+ NewHead->Capacity = Capacity;
+ Head = NewHead;
+ NewHead->Used = 0;
+ }
+
+public:
+ ArenaAllocator() { addNode(AllocUnit); }
+
+ ~ArenaAllocator() {
+ while (Head) {
+ assert(Head->Buf);
+ delete[] Head->Buf;
+ AllocatorNode *Next = Head->Next;
+ delete Head;
+ Head = Next;
+ }
+ }
+
+ char *allocUnalignedBuffer(size_t Length) {
+ uint8_t *Buf = Head->Buf + Head->Used;
+
+ Head->Used += Length;
+ if (Head->Used > Head->Capacity) {
+ // It's possible we need a buffer which is larger than our default unit
+ // size, so we need to be careful to add a node with capacity that is at
+ // least as large as what we need.
+ addNode(std::max(AllocUnit, Length));
+ Head->Used = Length;
+ Buf = Head->Buf;
+ }
+
+ return reinterpret_cast<char *>(Buf);
+ }
+
+ template <typename T, typename... Args> T *allocArray(size_t Count) {
+
+ size_t Size = Count * sizeof(T);
+ assert(Head && Head->Buf);
+
+ size_t P = (size_t)Head->Buf + Head->Used;
+ uintptr_t AlignedP =
+ (((size_t)P + alignof(T) - 1) & ~(size_t)(alignof(T) - 1));
+ uint8_t *PP = (uint8_t *)AlignedP;
+ size_t Adjustment = AlignedP - P;
+
+ Head->Used += Size + Adjustment;
+ if (Head->Used < Head->Capacity)
+ return new (PP) T[Count]();
+
+ addNode(AllocUnit);
+ Head->Used = Size;
+ return new (Head->Buf) T[Count]();
+ }
+
+ template <typename T, typename... Args> T *alloc(Args &&... ConstructorArgs) {
+
+ size_t Size = sizeof(T);
+ assert(Head && Head->Buf);
+
+ size_t P = (size_t)Head->Buf + Head->Used;
+ uintptr_t AlignedP =
+ (((size_t)P + alignof(T) - 1) & ~(size_t)(alignof(T) - 1));
+ uint8_t *PP = (uint8_t *)AlignedP;
+ size_t Adjustment = AlignedP - P;
+
+ Head->Used += Size + Adjustment;
+ if (Head->Used < Head->Capacity)
+ return new (PP) T(std::forward<Args>(ConstructorArgs)...);
+
+ addNode(AllocUnit);
+ Head->Used = Size;
+ return new (Head->Buf) T(std::forward<Args>(ConstructorArgs)...);
+ }
+
+private:
+ AllocatorNode *Head = nullptr;
+};
+
+struct BackrefContext {
+ static constexpr size_t Max = 10;
+
+ TypeNode *FunctionParams[Max];
+ size_t FunctionParamCount = 0;
+
+ // The first 10 BackReferences in a mangled name can be back-referenced by
+ // special name @[0-9]. This is a storage for the first 10 BackReferences.
+ NamedIdentifierNode *Names[Max];
+ size_t NamesCount = 0;
+};
+
+enum class QualifierMangleMode { Drop, Mangle, Result };
+
+enum NameBackrefBehavior : uint8_t {
+ NBB_None = 0, // don't save any names as backrefs.
+ NBB_Template = 1 << 0, // save template instanations.
+ NBB_Simple = 1 << 1, // save simple names.
+};
+
+enum class FunctionIdentifierCodeGroup { Basic, Under, DoubleUnder };
+
+// Demangler class takes the main role in demangling symbols.
+// It has a set of functions to parse mangled symbols into Type instances.
+// It also has a set of functions to convert Type instances to strings.
+class Demangler {
+public:
+ Demangler() = default;
+ virtual ~Demangler() = default;
+
+ // You are supposed to call parse() first and then check if error is true. If
+ // it is false, call output() to write the formatted name to the given stream.
+ SymbolNode *parse(StringView &MangledName);
+
+ TagTypeNode *parseTagUniqueName(StringView &MangledName);
+
+ // True if an error occurred.
+ bool Error = false;
+
+ void dumpBackReferences();
+
+private:
+ SymbolNode *demangleEncodedSymbol(StringView &MangledName,
+ QualifiedNameNode *QN);
+
+ VariableSymbolNode *demangleVariableEncoding(StringView &MangledName,
+ StorageClass SC);
+ FunctionSymbolNode *demangleFunctionEncoding(StringView &MangledName);
+
+ Qualifiers demanglePointerExtQualifiers(StringView &MangledName);
+
+ // Parser functions. This is a recursive-descent parser.
+ TypeNode *demangleType(StringView &MangledName, QualifierMangleMode QMM);
+ PrimitiveTypeNode *demanglePrimitiveType(StringView &MangledName);
+ CustomTypeNode *demangleCustomType(StringView &MangledName);
+ TagTypeNode *demangleClassType(StringView &MangledName);
+ PointerTypeNode *demanglePointerType(StringView &MangledName);
+ PointerTypeNode *demangleMemberPointerType(StringView &MangledName);
+ FunctionSignatureNode *demangleFunctionType(StringView &MangledName,
+ bool HasThisQuals);
+
+ ArrayTypeNode *demangleArrayType(StringView &MangledName);
+
+ NodeArrayNode *demangleTemplateParameterList(StringView &MangledName);
+ NodeArrayNode *demangleFunctionParameterList(StringView &MangledName);
+
+ std::pair<uint64_t, bool> demangleNumber(StringView &MangledName);
+ uint64_t demangleUnsigned(StringView &MangledName);
+ int64_t demangleSigned(StringView &MangledName);
+
+ void memorizeString(StringView s);
+ void memorizeIdentifier(IdentifierNode *Identifier);
+
+ /// Allocate a copy of \p Borrowed into memory that we own.
+ StringView copyString(StringView Borrowed);
+
+ QualifiedNameNode *demangleFullyQualifiedTypeName(StringView &MangledName);
+ QualifiedNameNode *demangleFullyQualifiedSymbolName(StringView &MangledName);
+
+ IdentifierNode *demangleUnqualifiedTypeName(StringView &MangledName,
+ bool Memorize);
+ IdentifierNode *demangleUnqualifiedSymbolName(StringView &MangledName,
+ NameBackrefBehavior NBB);
+
+ QualifiedNameNode *demangleNameScopeChain(StringView &MangledName,
+ IdentifierNode *UnqualifiedName);
+ IdentifierNode *demangleNameScopePiece(StringView &MangledName);
+
+ NamedIdentifierNode *demangleBackRefName(StringView &MangledName);
+ IdentifierNode *demangleTemplateInstantiationName(StringView &MangledName,
+ NameBackrefBehavior NBB);
+ IdentifierNode *demangleFunctionIdentifierCode(StringView &MangledName);
+ IdentifierNode *
+ demangleFunctionIdentifierCode(StringView &MangledName,
+ FunctionIdentifierCodeGroup Group);
+ StructorIdentifierNode *demangleStructorIdentifier(StringView &MangledName,
+ bool IsDestructor);
+ ConversionOperatorIdentifierNode *
+ demangleConversionOperatorIdentifier(StringView &MangledName);
+ LiteralOperatorIdentifierNode *
+ demangleLiteralOperatorIdentifier(StringView &MangledName);
+
+ SymbolNode *demangleSpecialIntrinsic(StringView &MangledName);
+ SpecialTableSymbolNode *
+ demangleSpecialTableSymbolNode(StringView &MangledName,
+ SpecialIntrinsicKind SIK);
+ LocalStaticGuardVariableNode *
+ demangleLocalStaticGuard(StringView &MangledName);
+ VariableSymbolNode *demangleUntypedVariable(ArenaAllocator &Arena,
+ StringView &MangledName,
+ StringView VariableName);
+ VariableSymbolNode *
+ demangleRttiBaseClassDescriptorNode(ArenaAllocator &Arena,
+ StringView &MangledName);
+ FunctionSymbolNode *demangleInitFiniStub(StringView &MangledName,
+ bool IsDestructor);
+
+ NamedIdentifierNode *demangleSimpleName(StringView &MangledName,
+ bool Memorize);
+ NamedIdentifierNode *demangleAnonymousNamespaceName(StringView &MangledName);
+ NamedIdentifierNode *demangleLocallyScopedNamePiece(StringView &MangledName);
+ EncodedStringLiteralNode *demangleStringLiteral(StringView &MangledName);
+ FunctionSymbolNode *demangleVcallThunkNode(StringView &MangledName);
+
+ StringView demangleSimpleString(StringView &MangledName, bool Memorize);
+
+ FuncClass demangleFunctionClass(StringView &MangledName);
+ CallingConv demangleCallingConvention(StringView &MangledName);
+ StorageClass demangleVariableStorageClass(StringView &MangledName);
+ bool demangleThrowSpecification(StringView &MangledName);
+ wchar_t demangleWcharLiteral(StringView &MangledName);
+ uint8_t demangleCharLiteral(StringView &MangledName);
+
+ std::pair<Qualifiers, bool> demangleQualifiers(StringView &MangledName);
+
+ // Memory allocator.
+ ArenaAllocator Arena;
+
+ // A single type uses one global back-ref table for all function params.
+ // This means back-refs can even go "into" other types. Examples:
+ //
+ // // Second int* is a back-ref to first.
+ // void foo(int *, int*);
+ //
+ // // Second int* is not a back-ref to first (first is not a function param).
+ // int* foo(int*);
+ //
+ // // Second int* is a back-ref to first (ALL function types share the same
+ // // back-ref map.
+ // using F = void(*)(int*);
+ // F G(int *);
+ BackrefContext Backrefs;
+};
+
+} // namespace ms_demangle
+} // namespace llvm
+
+#endif // LLVM_DEMANGLE_MICROSOFT_DEMANGLE_H
diff --git a/linux-x64/clang/include/llvm/Demangle/MicrosoftDemangleNodes.h b/linux-x64/clang/include/llvm/Demangle/MicrosoftDemangleNodes.h
new file mode 100644
index 0000000..b478418
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Demangle/MicrosoftDemangleNodes.h
@@ -0,0 +1,624 @@
+//===- MicrosoftDemangleNodes.h ---------------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines the AST nodes used in the MSVC demangler.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_SUPPORT_MICROSOFTDEMANGLENODES_H
+#define LLVM_SUPPORT_MICROSOFTDEMANGLENODES_H
+
+#include "llvm/Demangle/DemangleConfig.h"
+#include "llvm/Demangle/StringView.h"
+#include <array>
+
+namespace llvm {
+namespace itanium_demangle {
+class OutputStream;
+}
+}
+
+using llvm::itanium_demangle::OutputStream;
+using llvm::itanium_demangle::StringView;
+
+namespace llvm {
+namespace ms_demangle {
+
+// Storage classes
+enum Qualifiers : uint8_t {
+ Q_None = 0,
+ Q_Const = 1 << 0,
+ Q_Volatile = 1 << 1,
+ Q_Far = 1 << 2,
+ Q_Huge = 1 << 3,
+ Q_Unaligned = 1 << 4,
+ Q_Restrict = 1 << 5,
+ Q_Pointer64 = 1 << 6
+};
+
+enum class StorageClass : uint8_t {
+ None,
+ PrivateStatic,
+ ProtectedStatic,
+ PublicStatic,
+ Global,
+ FunctionLocalStatic,
+};
+
+enum class PointerAffinity { None, Pointer, Reference, RValueReference };
+enum class FunctionRefQualifier { None, Reference, RValueReference };
+
+// Calling conventions
+enum class CallingConv : uint8_t {
+ None,
+ Cdecl,
+ Pascal,
+ Thiscall,
+ Stdcall,
+ Fastcall,
+ Clrcall,
+ Eabi,
+ Vectorcall,
+ Regcall,
+};
+
+enum class ReferenceKind : uint8_t { None, LValueRef, RValueRef };
+
+enum OutputFlags {
+ OF_Default = 0,
+ OF_NoCallingConvention = 1,
+ OF_NoTagSpecifier = 2,
+};
+
+// Types
+enum class PrimitiveKind {
+ Void,
+ Bool,
+ Char,
+ Schar,
+ Uchar,
+ Char16,
+ Char32,
+ Short,
+ Ushort,
+ Int,
+ Uint,
+ Long,
+ Ulong,
+ Int64,
+ Uint64,
+ Wchar,
+ Float,
+ Double,
+ Ldouble,
+ Nullptr,
+};
+
+enum class CharKind {
+ Char,
+ Char16,
+ Char32,
+ Wchar,
+};
+
+enum class IntrinsicFunctionKind : uint8_t {
+ None,
+ New, // ?2 # operator new
+ Delete, // ?3 # operator delete
+ Assign, // ?4 # operator=
+ RightShift, // ?5 # operator>>
+ LeftShift, // ?6 # operator<<
+ LogicalNot, // ?7 # operator!
+ Equals, // ?8 # operator==
+ NotEquals, // ?9 # operator!=
+ ArraySubscript, // ?A # operator[]
+ Pointer, // ?C # operator->
+ Dereference, // ?D # operator*
+ Increment, // ?E # operator++
+ Decrement, // ?F # operator--
+ Minus, // ?G # operator-
+ Plus, // ?H # operator+
+ BitwiseAnd, // ?I # operator&
+ MemberPointer, // ?J # operator->*
+ Divide, // ?K # operator/
+ Modulus, // ?L # operator%
+ LessThan, // ?M operator<
+ LessThanEqual, // ?N operator<=
+ GreaterThan, // ?O operator>
+ GreaterThanEqual, // ?P operator>=
+ Comma, // ?Q operator,
+ Parens, // ?R operator()
+ BitwiseNot, // ?S operator~
+ BitwiseXor, // ?T operator^
+ BitwiseOr, // ?U operator|
+ LogicalAnd, // ?V operator&&
+ LogicalOr, // ?W operator||
+ TimesEqual, // ?X operator*=
+ PlusEqual, // ?Y operator+=
+ MinusEqual, // ?Z operator-=
+ DivEqual, // ?_0 operator/=
+ ModEqual, // ?_1 operator%=
+ RshEqual, // ?_2 operator>>=
+ LshEqual, // ?_3 operator<<=
+ BitwiseAndEqual, // ?_4 operator&=
+ BitwiseOrEqual, // ?_5 operator|=
+ BitwiseXorEqual, // ?_6 operator^=
+ VbaseDtor, // ?_D # vbase destructor
+ VecDelDtor, // ?_E # vector deleting destructor
+ DefaultCtorClosure, // ?_F # default constructor closure
+ ScalarDelDtor, // ?_G # scalar deleting destructor
+ VecCtorIter, // ?_H # vector constructor iterator
+ VecDtorIter, // ?_I # vector destructor iterator
+ VecVbaseCtorIter, // ?_J # vector vbase constructor iterator
+ VdispMap, // ?_K # virtual displacement map
+ EHVecCtorIter, // ?_L # eh vector constructor iterator
+ EHVecDtorIter, // ?_M # eh vector destructor iterator
+ EHVecVbaseCtorIter, // ?_N # eh vector vbase constructor iterator
+ CopyCtorClosure, // ?_O # copy constructor closure
+ LocalVftableCtorClosure, // ?_T # local vftable constructor closure
+ ArrayNew, // ?_U operator new[]
+ ArrayDelete, // ?_V operator delete[]
+ ManVectorCtorIter, // ?__A managed vector ctor iterator
+ ManVectorDtorIter, // ?__B managed vector dtor iterator
+ EHVectorCopyCtorIter, // ?__C EH vector copy ctor iterator
+ EHVectorVbaseCopyCtorIter, // ?__D EH vector vbase copy ctor iterator
+ VectorCopyCtorIter, // ?__G vector copy constructor iterator
+ VectorVbaseCopyCtorIter, // ?__H vector vbase copy constructor iterator
+ ManVectorVbaseCopyCtorIter, // ?__I managed vector vbase copy constructor
+ CoAwait, // ?__L co_await
+ Spaceship, // operator<=>
+ MaxIntrinsic
+};
+
+enum class SpecialIntrinsicKind {
+ None,
+ Vftable,
+ Vbtable,
+ Typeof,
+ VcallThunk,
+ LocalStaticGuard,
+ StringLiteralSymbol,
+ UdtReturning,
+ Unknown,
+ DynamicInitializer,
+ DynamicAtexitDestructor,
+ RttiTypeDescriptor,
+ RttiBaseClassDescriptor,
+ RttiBaseClassArray,
+ RttiClassHierarchyDescriptor,
+ RttiCompleteObjLocator,
+ LocalVftable,
+ LocalStaticThreadGuard,
+};
+
+// Function classes
+enum FuncClass : uint16_t {
+ FC_None = 0,
+ FC_Public = 1 << 0,
+ FC_Protected = 1 << 1,
+ FC_Private = 1 << 2,
+ FC_Global = 1 << 3,
+ FC_Static = 1 << 4,
+ FC_Virtual = 1 << 5,
+ FC_Far = 1 << 6,
+ FC_ExternC = 1 << 7,
+ FC_NoParameterList = 1 << 8,
+ FC_VirtualThisAdjust = 1 << 9,
+ FC_VirtualThisAdjustEx = 1 << 10,
+ FC_StaticThisAdjust = 1 << 11,
+};
+
+enum class TagKind { Class, Struct, Union, Enum };
+
+enum class NodeKind {
+ Unknown,
+ Md5Symbol,
+ PrimitiveType,
+ FunctionSignature,
+ Identifier,
+ NamedIdentifier,
+ VcallThunkIdentifier,
+ LocalStaticGuardIdentifier,
+ IntrinsicFunctionIdentifier,
+ ConversionOperatorIdentifier,
+ DynamicStructorIdentifier,
+ StructorIdentifier,
+ LiteralOperatorIdentifier,
+ ThunkSignature,
+ PointerType,
+ TagType,
+ ArrayType,
+ Custom,
+ IntrinsicType,
+ NodeArray,
+ QualifiedName,
+ TemplateParameterReference,
+ EncodedStringLiteral,
+ IntegerLiteral,
+ RttiBaseClassDescriptor,
+ LocalStaticGuardVariable,
+ FunctionSymbol,
+ VariableSymbol,
+ SpecialTableSymbol
+};
+
+struct Node {
+ explicit Node(NodeKind K) : Kind(K) {}
+ virtual ~Node() = default;
+
+ NodeKind kind() const { return Kind; }
+
+ virtual void output(OutputStream &OS, OutputFlags Flags) const = 0;
+
+ std::string toString(OutputFlags Flags = OF_Default) const;
+
+private:
+ NodeKind Kind;
+};
+
+struct TypeNode;
+struct PrimitiveTypeNode;
+struct FunctionSignatureNode;
+struct IdentifierNode;
+struct NamedIdentifierNode;
+struct VcallThunkIdentifierNode;
+struct IntrinsicFunctionIdentifierNode;
+struct LiteralOperatorIdentifierNode;
+struct ConversionOperatorIdentifierNode;
+struct StructorIdentifierNode;
+struct ThunkSignatureNode;
+struct PointerTypeNode;
+struct ArrayTypeNode;
+struct CustomNode;
+struct TagTypeNode;
+struct IntrinsicTypeNode;
+struct NodeArrayNode;
+struct QualifiedNameNode;
+struct TemplateParameterReferenceNode;
+struct EncodedStringLiteralNode;
+struct IntegerLiteralNode;
+struct RttiBaseClassDescriptorNode;
+struct LocalStaticGuardVariableNode;
+struct SymbolNode;
+struct FunctionSymbolNode;
+struct VariableSymbolNode;
+struct SpecialTableSymbolNode;
+
+struct TypeNode : public Node {
+ explicit TypeNode(NodeKind K) : Node(K) {}
+
+ virtual void outputPre(OutputStream &OS, OutputFlags Flags) const = 0;
+ virtual void outputPost(OutputStream &OS, OutputFlags Flags) const = 0;
+
+ void output(OutputStream &OS, OutputFlags Flags) const override {
+ outputPre(OS, Flags);
+ outputPost(OS, Flags);
+ }
+
+ void outputQuals(bool SpaceBefore, bool SpaceAfter) const;
+
+ Qualifiers Quals = Q_None;
+};
+
+struct PrimitiveTypeNode : public TypeNode {
+ explicit PrimitiveTypeNode(PrimitiveKind K)
+ : TypeNode(NodeKind::PrimitiveType), PrimKind(K) {}
+
+ void outputPre(OutputStream &OS, OutputFlags Flags) const;
+ void outputPost(OutputStream &OS, OutputFlags Flags) const {}
+
+ PrimitiveKind PrimKind;
+};
+
+struct FunctionSignatureNode : public TypeNode {
+ explicit FunctionSignatureNode(NodeKind K) : TypeNode(K) {}
+ FunctionSignatureNode() : TypeNode(NodeKind::FunctionSignature) {}
+
+ void outputPre(OutputStream &OS, OutputFlags Flags) const override;
+ void outputPost(OutputStream &OS, OutputFlags Flags) const override;
+
+ // Valid if this FunctionTypeNode is the Pointee of a PointerType or
+ // MemberPointerType.
+ PointerAffinity Affinity = PointerAffinity::None;
+
+ // The function's calling convention.
+ CallingConv CallConvention = CallingConv::None;
+
+ // Function flags (gloabl, public, etc)
+ FuncClass FunctionClass = FC_Global;
+
+ FunctionRefQualifier RefQualifier = FunctionRefQualifier::None;
+
+ // The return type of the function.
+ TypeNode *ReturnType = nullptr;
+
+ // True if this is a C-style ... varargs function.
+ bool IsVariadic = false;
+
+ // Function parameters
+ NodeArrayNode *Params = nullptr;
+
+ // True if the function type is noexcept
+ bool IsNoexcept = false;
+};
+
+struct IdentifierNode : public Node {
+ explicit IdentifierNode(NodeKind K) : Node(K) {}
+
+ NodeArrayNode *TemplateParams = nullptr;
+
+protected:
+ void outputTemplateParameters(OutputStream &OS, OutputFlags Flags) const;
+};
+
+struct VcallThunkIdentifierNode : public IdentifierNode {
+ VcallThunkIdentifierNode() : IdentifierNode(NodeKind::VcallThunkIdentifier) {}
+
+ void output(OutputStream &OS, OutputFlags Flags) const override;
+
+ uint64_t OffsetInVTable = 0;
+};
+
+struct DynamicStructorIdentifierNode : public IdentifierNode {
+ DynamicStructorIdentifierNode()
+ : IdentifierNode(NodeKind::DynamicStructorIdentifier) {}
+
+ void output(OutputStream &OS, OutputFlags Flags) const override;
+
+ VariableSymbolNode *Variable = nullptr;
+ QualifiedNameNode *Name = nullptr;
+ bool IsDestructor = false;
+};
+
+struct NamedIdentifierNode : public IdentifierNode {
+ NamedIdentifierNode() : IdentifierNode(NodeKind::NamedIdentifier) {}
+
+ void output(OutputStream &OS, OutputFlags Flags) const override;
+
+ StringView Name;
+};
+
+struct IntrinsicFunctionIdentifierNode : public IdentifierNode {
+ explicit IntrinsicFunctionIdentifierNode(IntrinsicFunctionKind Operator)
+ : IdentifierNode(NodeKind::IntrinsicFunctionIdentifier),
+ Operator(Operator) {}
+
+ void output(OutputStream &OS, OutputFlags Flags) const override;
+
+ IntrinsicFunctionKind Operator;
+};
+
+struct LiteralOperatorIdentifierNode : public IdentifierNode {
+ LiteralOperatorIdentifierNode()
+ : IdentifierNode(NodeKind::LiteralOperatorIdentifier) {}
+
+ void output(OutputStream &OS, OutputFlags Flags) const override;
+
+ StringView Name;
+};
+
+struct LocalStaticGuardIdentifierNode : public IdentifierNode {
+ LocalStaticGuardIdentifierNode()
+ : IdentifierNode(NodeKind::LocalStaticGuardIdentifier) {}
+
+ void output(OutputStream &OS, OutputFlags Flags) const override;
+
+ uint32_t ScopeIndex = 0;
+};
+
+struct ConversionOperatorIdentifierNode : public IdentifierNode {
+ ConversionOperatorIdentifierNode()
+ : IdentifierNode(NodeKind::ConversionOperatorIdentifier) {}
+
+ void output(OutputStream &OS, OutputFlags Flags) const override;
+
+ // The type that this operator converts too.
+ TypeNode *TargetType = nullptr;
+};
+
+struct StructorIdentifierNode : public IdentifierNode {
+ StructorIdentifierNode() : IdentifierNode(NodeKind::StructorIdentifier) {}
+ explicit StructorIdentifierNode(bool IsDestructor)
+ : IdentifierNode(NodeKind::StructorIdentifier),
+ IsDestructor(IsDestructor) {}
+
+ void output(OutputStream &OS, OutputFlags Flags) const override;
+
+ // The name of the class that this is a structor of.
+ IdentifierNode *Class = nullptr;
+ bool IsDestructor = false;
+};
+
+struct ThunkSignatureNode : public FunctionSignatureNode {
+ ThunkSignatureNode() : FunctionSignatureNode(NodeKind::ThunkSignature) {}
+
+ void outputPre(OutputStream &OS, OutputFlags Flags) const override;
+ void outputPost(OutputStream &OS, OutputFlags Flags) const override;
+
+ struct ThisAdjustor {
+ uint32_t StaticOffset = 0;
+ int32_t VBPtrOffset = 0;
+ int32_t VBOffsetOffset = 0;
+ int32_t VtordispOffset = 0;
+ };
+
+ ThisAdjustor ThisAdjust;
+};
+
+struct PointerTypeNode : public TypeNode {
+ PointerTypeNode() : TypeNode(NodeKind::PointerType) {}
+ void outputPre(OutputStream &OS, OutputFlags Flags) const override;
+ void outputPost(OutputStream &OS, OutputFlags Flags) const override;
+
+ // Is this a pointer, reference, or rvalue-reference?
+ PointerAffinity Affinity = PointerAffinity::None;
+
+ // If this is a member pointer, this is the class that the member is in.
+ QualifiedNameNode *ClassParent = nullptr;
+
+ // Represents a type X in "a pointer to X", "a reference to X", or
+ // "rvalue-reference to X"
+ TypeNode *Pointee = nullptr;
+};
+
+struct TagTypeNode : public TypeNode {
+ explicit TagTypeNode(TagKind Tag) : TypeNode(NodeKind::TagType), Tag(Tag) {}
+
+ void outputPre(OutputStream &OS, OutputFlags Flags) const;
+ void outputPost(OutputStream &OS, OutputFlags Flags) const;
+
+ QualifiedNameNode *QualifiedName = nullptr;
+ TagKind Tag;
+};
+
+struct ArrayTypeNode : public TypeNode {
+ ArrayTypeNode() : TypeNode(NodeKind::ArrayType) {}
+
+ void outputPre(OutputStream &OS, OutputFlags Flags) const;
+ void outputPost(OutputStream &OS, OutputFlags Flags) const;
+
+ void outputDimensionsImpl(OutputStream &OS, OutputFlags Flags) const;
+ void outputOneDimension(OutputStream &OS, OutputFlags Flags, Node *N) const;
+
+ // A list of array dimensions. e.g. [3,4,5] in `int Foo[3][4][5]`
+ NodeArrayNode *Dimensions = nullptr;
+
+ // The type of array element.
+ TypeNode *ElementType = nullptr;
+};
+
+struct IntrinsicNode : public TypeNode {
+ IntrinsicNode() : TypeNode(NodeKind::IntrinsicType) {}
+ void output(OutputStream &OS, OutputFlags Flags) const override {}
+};
+
+struct CustomTypeNode : public TypeNode {
+ CustomTypeNode() : TypeNode(NodeKind::Custom) {}
+
+ void outputPre(OutputStream &OS, OutputFlags Flags) const override;
+ void outputPost(OutputStream &OS, OutputFlags Flags) const override;
+
+ IdentifierNode *Identifier;
+};
+
+struct NodeArrayNode : public Node {
+ NodeArrayNode() : Node(NodeKind::NodeArray) {}
+
+ void output(OutputStream &OS, OutputFlags Flags) const override;
+
+ void output(OutputStream &OS, OutputFlags Flags, StringView Separator) const;
+
+ Node **Nodes = 0;
+ size_t Count = 0;
+};
+
+struct QualifiedNameNode : public Node {
+ QualifiedNameNode() : Node(NodeKind::QualifiedName) {}
+
+ void output(OutputStream &OS, OutputFlags Flags) const override;
+
+ NodeArrayNode *Components = nullptr;
+
+ IdentifierNode *getUnqualifiedIdentifier() {
+ Node *LastComponent = Components->Nodes[Components->Count - 1];
+ return static_cast<IdentifierNode *>(LastComponent);
+ }
+};
+
+struct TemplateParameterReferenceNode : public Node {
+ TemplateParameterReferenceNode()
+ : Node(NodeKind::TemplateParameterReference) {}
+
+ void output(OutputStream &OS, OutputFlags Flags) const override;
+
+ SymbolNode *Symbol = nullptr;
+
+ int ThunkOffsetCount = 0;
+ std::array<int64_t, 3> ThunkOffsets;
+ PointerAffinity Affinity = PointerAffinity::None;
+ bool IsMemberPointer = false;
+};
+
+struct IntegerLiteralNode : public Node {
+ IntegerLiteralNode() : Node(NodeKind::IntegerLiteral) {}
+ IntegerLiteralNode(uint64_t Value, bool IsNegative)
+ : Node(NodeKind::IntegerLiteral), Value(Value), IsNegative(IsNegative) {}
+
+ void output(OutputStream &OS, OutputFlags Flags) const override;
+
+ uint64_t Value = 0;
+ bool IsNegative = false;
+};
+
+struct RttiBaseClassDescriptorNode : public IdentifierNode {
+ RttiBaseClassDescriptorNode()
+ : IdentifierNode(NodeKind::RttiBaseClassDescriptor) {}
+
+ void output(OutputStream &OS, OutputFlags Flags) const override;
+
+ uint32_t NVOffset = 0;
+ int32_t VBPtrOffset = 0;
+ uint32_t VBTableOffset = 0;
+ uint32_t Flags = 0;
+};
+
+struct SymbolNode : public Node {
+ explicit SymbolNode(NodeKind K) : Node(K) {}
+ void output(OutputStream &OS, OutputFlags Flags) const override;
+ QualifiedNameNode *Name = nullptr;
+};
+
+struct SpecialTableSymbolNode : public SymbolNode {
+ explicit SpecialTableSymbolNode()
+ : SymbolNode(NodeKind::SpecialTableSymbol) {}
+
+ void output(OutputStream &OS, OutputFlags Flags) const override;
+ QualifiedNameNode *TargetName = nullptr;
+ Qualifiers Quals;
+};
+
+struct LocalStaticGuardVariableNode : public SymbolNode {
+ LocalStaticGuardVariableNode()
+ : SymbolNode(NodeKind::LocalStaticGuardVariable) {}
+
+ void output(OutputStream &OS, OutputFlags Flags) const override;
+
+ bool IsVisible = false;
+};
+
+struct EncodedStringLiteralNode : public SymbolNode {
+ EncodedStringLiteralNode() : SymbolNode(NodeKind::EncodedStringLiteral) {}
+
+ void output(OutputStream &OS, OutputFlags Flags) const override;
+
+ StringView DecodedString;
+ bool IsTruncated = false;
+ CharKind Char = CharKind::Char;
+};
+
+struct VariableSymbolNode : public SymbolNode {
+ VariableSymbolNode() : SymbolNode(NodeKind::VariableSymbol) {}
+
+ void output(OutputStream &OS, OutputFlags Flags) const override;
+
+ StorageClass SC = StorageClass::None;
+ TypeNode *Type = nullptr;
+};
+
+struct FunctionSymbolNode : public SymbolNode {
+ FunctionSymbolNode() : SymbolNode(NodeKind::FunctionSymbol) {}
+
+ void output(OutputStream &OS, OutputFlags Flags) const override;
+
+ FunctionSignatureNode *Signature = nullptr;
+};
+
+} // namespace ms_demangle
+} // namespace llvm
+
+#endif
diff --git a/linux-x64/clang/include/llvm/Demangle/StringView.h b/linux-x64/clang/include/llvm/Demangle/StringView.h
index a89deda..ceb6c79 100644
--- a/linux-x64/clang/include/llvm/Demangle/StringView.h
+++ b/linux-x64/clang/include/llvm/Demangle/StringView.h
@@ -1,22 +1,25 @@
//===--- StringView.h -------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
+// 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
//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+//===----------------------------------------------------------------------===//
//
+// FIXME: Use std::string_view instead when we support C++17.
//
-// This file contains a limited version of LLVM's StringView class. It is
-// copied here so that LLVMDemangle need not take a dependency on LLVMSupport.
//===----------------------------------------------------------------------===//
-#ifndef LLVM_DEMANGLE_STRINGVIEW_H
-#define LLVM_DEMANGLE_STRINGVIEW_H
+#ifndef DEMANGLE_STRINGVIEW_H
+#define DEMANGLE_STRINGVIEW_H
+#include "DemangleConfig.h"
#include <algorithm>
#include <cassert>
#include <cstring>
+DEMANGLE_NAMESPACE_BEGIN
+
class StringView {
const char *First;
const char *Last;
@@ -43,7 +46,7 @@
if (FindBegin < size()) {
// Just forward to memchr, which is faster than a hand-rolled loop.
if (const void *P = ::memchr(First + FindBegin, C, size() - FindBegin))
- return static_cast<const char *>(P) - First;
+ return size_t(static_cast<const char *>(P) - First);
}
return npos;
}
@@ -118,4 +121,6 @@
std::equal(LHS.begin(), LHS.end(), RHS.begin());
}
+DEMANGLE_NAMESPACE_END
+
#endif
diff --git a/linux-x64/clang/include/llvm/Demangle/Utility.h b/linux-x64/clang/include/llvm/Demangle/Utility.h
index da4a0c0..ec23859 100644
--- a/linux-x64/clang/include/llvm/Demangle/Utility.h
+++ b/linux-x64/clang/include/llvm/Demangle/Utility.h
@@ -1,25 +1,27 @@
//===--- Utility.h ----------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
+// 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
//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+//===----------------------------------------------------------------------===//
//
+// Provide some utility classes for use in the demangler(s).
//
-// This file contains several utility classes used by the demangle library.
//===----------------------------------------------------------------------===//
-#ifndef LLVM_DEMANGLE_UTILITY_H
-#define LLVM_DEMANGLE_UTILITY_H
+#ifndef DEMANGLE_UTILITY_H
+#define DEMANGLE_UTILITY_H
#include "StringView.h"
-
#include <cstdint>
#include <cstdlib>
#include <cstring>
#include <iterator>
#include <limits>
+DEMANGLE_NAMESPACE_BEGIN
+
// Stream that AST nodes write their string representation into after the AST
// has been parsed.
class OutputStream {
@@ -175,13 +177,15 @@
if (Buf == nullptr) {
Buf = static_cast<char *>(std::malloc(InitSize));
if (Buf == nullptr)
- return true;
+ return false;
BufferSize = InitSize;
} else
BufferSize = *N;
S.reset(Buf, BufferSize);
- return false;
+ return true;
}
+DEMANGLE_NAMESPACE_END
+
#endif
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/ExecutionEngine.h b/linux-x64/clang/include/llvm/ExecutionEngine/ExecutionEngine.h
index b61cb24..68cc920 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/ExecutionEngine.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/ExecutionEngine.h
@@ -1,9 +1,8 @@
//===- ExecutionEngine.h - Abstract Execution Engine Interface --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/GenericValue.h b/linux-x64/clang/include/llvm/ExecutionEngine/GenericValue.h
index 504e30a..1ca989d 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/GenericValue.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/GenericValue.h
@@ -1,9 +1,8 @@
//===- GenericValue.h - Represent any type of LLVM value --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Interpreter.h b/linux-x64/clang/include/llvm/ExecutionEngine/Interpreter.h
index a147078..0749409 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Interpreter.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Interpreter.h
@@ -1,9 +1,8 @@
//===-- Interpreter.h - Abstract Execution Engine Interface -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/JITEventListener.h b/linux-x64/clang/include/llvm/ExecutionEngine/JITEventListener.h
index 1ce772c..606b6f7 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/JITEventListener.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/JITEventListener.h
@@ -1,9 +1,8 @@
//===- JITEventListener.h - Exposes events from JIT compilation -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -35,25 +34,6 @@
} // end namespace object
-/// JITEvent_EmittedFunctionDetails - Helper struct for containing information
-/// about a generated machine code function.
-struct JITEvent_EmittedFunctionDetails {
- struct LineStart {
- /// The address at which the current line changes.
- uintptr_t Address;
-
- /// The new location information. These can be translated to DebugLocTuples
- /// using MF->getDebugLocTuple().
- DebugLoc Loc;
- };
-
- /// The machine function the struct contains information for.
- const MachineFunction *MF;
-
- /// The list of line boundary information, sorted by address.
- std::vector<LineStart> LineStarts;
-};
-
/// JITEventListener - Abstract interface for use by the JIT to notify clients
/// about significant events during compilation. For example, to notify
/// profilers and debuggers that need to know where functions have been emitted.
@@ -61,26 +41,26 @@
/// The default implementation of each method does nothing.
class JITEventListener {
public:
- using EmittedFunctionDetails = JITEvent_EmittedFunctionDetails;
+ using ObjectKey = uint64_t;
-public:
JITEventListener() = default;
virtual ~JITEventListener() = default;
- /// NotifyObjectEmitted - Called after an object has been successfully
- /// emitted to memory. NotifyFunctionEmitted will not be called for
+ /// notifyObjectLoaded - Called after an object has had its sections allocated
+ /// and addresses assigned to all symbols. Note: Section memory will not have
+ /// been relocated yet. notifyFunctionLoaded will not be called for
/// individual functions in the object.
///
/// ELF-specific information
/// The ObjectImage contains the generated object image
/// with section headers updated to reflect the address at which sections
/// were loaded and with relocations performed in-place on debug sections.
- virtual void NotifyObjectEmitted(const object::ObjectFile &Obj,
- const RuntimeDyld::LoadedObjectInfo &L) {}
+ virtual void notifyObjectLoaded(ObjectKey K, const object::ObjectFile &Obj,
+ const RuntimeDyld::LoadedObjectInfo &L) {}
- /// NotifyFreeingObject - Called just before the memory associated with
+ /// notifyFreeingObject - Called just before the memory associated with
/// a previously emitted object is released.
- virtual void NotifyFreeingObject(const object::ObjectFile &Obj) {}
+ virtual void notifyFreeingObject(ObjectKey K) {}
// Get a pointe to the GDB debugger registration listener.
static JITEventListener *createGDBRegistrationListener();
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/JITSymbol.h b/linux-x64/clang/include/llvm/ExecutionEngine/JITSymbol.h
index 18b972e..da1352f 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/JITSymbol.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/JITSymbol.h
@@ -1,9 +1,8 @@
//===- JITSymbol.h - JIT symbol abstraction ---------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -40,6 +39,18 @@
/// Represents an address in the target process's address space.
using JITTargetAddress = uint64_t;
+/// Convert a JITTargetAddress to a pointer.
+template <typename T> T jitTargetAddressToPointer(JITTargetAddress Addr) {
+ static_assert(std::is_pointer<T>::value, "T must be a pointer type");
+ uintptr_t IntPtr = static_cast<uintptr_t>(Addr);
+ assert(IntPtr == Addr && "JITTargetAddress value out of range for uintptr_t");
+ return reinterpret_cast<T>(IntPtr);
+}
+
+template <typename T> JITTargetAddress pointerToJITTargetAddress(T *Ptr) {
+ return static_cast<JITTargetAddress>(reinterpret_cast<uintptr_t>(Ptr));
+}
+
/// Flags for symbols in the JIT.
class JITSymbolFlags {
public:
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/MCJIT.h b/linux-x64/clang/include/llvm/ExecutionEngine/MCJIT.h
index 66ddb7c..8253bf9 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/MCJIT.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/MCJIT.h
@@ -1,9 +1,8 @@
//===-- MCJIT.h - MC-Based Just-In-Time Execution Engine --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/OProfileWrapper.h b/linux-x64/clang/include/llvm/ExecutionEngine/OProfileWrapper.h
index 05da594..b13d7f6 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/OProfileWrapper.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/OProfileWrapper.h
@@ -1,9 +1,8 @@
//===-- OProfileWrapper.h - OProfile JIT API Wrapper ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// This file defines a OProfileWrapper object that detects if the oprofile
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/ObjectCache.h b/linux-x64/clang/include/llvm/ExecutionEngine/ObjectCache.h
index 0770444..47e94f1 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/ObjectCache.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/ObjectCache.h
@@ -1,9 +1,8 @@
//===-- ObjectCache.h - Class definition for the ObjectCache ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h
index 2003f8e..ca1ce40 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h
@@ -1,9 +1,8 @@
//===- CompileOnDemandLayer.h - Compile each function on demand -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -62,7 +61,7 @@
class ExtractingIRMaterializationUnit;
-class CompileOnDemandLayer2 : public IRLayer {
+class CompileOnDemandLayer : public IRLayer {
friend class PartitioningIRMaterializationUnit;
public:
@@ -84,8 +83,8 @@
/// symbol in them is requested.
static Optional<GlobalValueSet> compileWholeModule(GlobalValueSet Requested);
- /// Construct a CompileOnDemandLayer2.
- CompileOnDemandLayer2(ExecutionSession &ES, IRLayer &BaseLayer,
+ /// Construct a CompileOnDemandLayer.
+ CompileOnDemandLayer(ExecutionSession &ES, IRLayer &BaseLayer,
LazyCallThroughManager &LCTMgr,
IndirectStubsManagerBuilder BuildIndirectStubsManager);
@@ -94,8 +93,7 @@
/// Emits the given module. This should not be called by clients: it will be
/// called by the JIT when a definition added via the add method is requested.
- void emit(MaterializationResponsibility R, VModuleKey K,
- ThreadSafeModule TSM) override;
+ void emit(MaterializationResponsibility R, ThreadSafeModule TSM) override;
private:
struct PerDylibResources {
@@ -142,7 +140,7 @@
template <typename BaseLayerT,
typename CompileCallbackMgrT = JITCompileCallbackManager,
typename IndirectStubsMgrT = IndirectStubsManager>
-class CompileOnDemandLayer {
+class LegacyCompileOnDemandLayer {
private:
template <typename MaterializerFtor>
class LambdaMaterializer final : public ValueMaterializer {
@@ -266,13 +264,13 @@
std::function<void(VModuleKey K, std::shared_ptr<SymbolResolver> R)>;
/// Construct a compile-on-demand layer instance.
- CompileOnDemandLayer(ExecutionSession &ES, BaseLayerT &BaseLayer,
- SymbolResolverGetter GetSymbolResolver,
- SymbolResolverSetter SetSymbolResolver,
- PartitioningFtor Partition,
- CompileCallbackMgrT &CallbackMgr,
- IndirectStubsManagerBuilderT CreateIndirectStubsManager,
- bool CloneStubsIntoPartitions = true)
+ LegacyCompileOnDemandLayer(ExecutionSession &ES, BaseLayerT &BaseLayer,
+ SymbolResolverGetter GetSymbolResolver,
+ SymbolResolverSetter SetSymbolResolver,
+ PartitioningFtor Partition,
+ CompileCallbackMgrT &CallbackMgr,
+ IndirectStubsManagerBuilderT CreateIndirectStubsManager,
+ bool CloneStubsIntoPartitions = true)
: ES(ES), BaseLayer(BaseLayer),
GetSymbolResolver(std::move(GetSymbolResolver)),
SetSymbolResolver(std::move(SetSymbolResolver)),
@@ -280,7 +278,7 @@
CreateIndirectStubsManager(std::move(CreateIndirectStubsManager)),
CloneStubsIntoPartitions(CloneStubsIntoPartitions) {}
- ~CompileOnDemandLayer() {
+ ~LegacyCompileOnDemandLayer() {
// FIXME: Report error on log.
while (!LogicalDylibs.empty())
consumeError(removeModule(LogicalDylibs.begin()->first));
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/CompileUtils.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/CompileUtils.h
index 3d02f9d..15a6566 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/CompileUtils.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/CompileUtils.h
@@ -1,9 +1,8 @@
//===- CompileUtils.h - Utilities for compiling IR in the JIT ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -38,7 +37,7 @@
/// Simple compile functor: Takes a single IR module and returns an ObjectFile.
/// This compiler supports a single compilation thread and LLVMContext only.
-/// For multithreaded compilation, use MultiThreadedSimpleCompiler below.
+/// For multithreaded compilation, use ConcurrentIRCompiler below.
class SimpleCompiler {
public:
using CompileResult = std::unique_ptr<MemoryBuffer>;
@@ -105,10 +104,10 @@
///
/// This class creates a new TargetMachine and SimpleCompiler instance for each
/// compile.
-class MultiThreadedSimpleCompiler {
+class ConcurrentIRCompiler {
public:
- MultiThreadedSimpleCompiler(JITTargetMachineBuilder JTMB,
- ObjectCache *ObjCache = nullptr)
+ ConcurrentIRCompiler(JITTargetMachineBuilder JTMB,
+ ObjectCache *ObjCache = nullptr)
: JTMB(std::move(JTMB)), ObjCache(ObjCache) {}
void setObjectCache(ObjectCache *ObjCache) { this->ObjCache = ObjCache; }
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/Core.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/Core.h
index f3ea2ae..299247a 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/Core.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/Core.h
@@ -1,9 +1,8 @@
//===------ Core.h -- Core ORC APIs (Layer, JITDylib, etc.) -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -20,10 +19,7 @@
#include "llvm/IR/Module.h"
#include "llvm/Support/Debug.h"
-#include <list>
-#include <map>
#include <memory>
-#include <set>
#include <vector>
#define DEBUG_TYPE "orc"
@@ -44,21 +40,21 @@
/// A set of symbol names (represented by SymbolStringPtrs for
// efficiency).
-using SymbolNameSet = std::set<SymbolStringPtr>;
+using SymbolNameSet = DenseSet<SymbolStringPtr>;
/// A map from symbol names (as SymbolStringPtrs) to JITSymbols
/// (address/flags pairs).
-using SymbolMap = std::map<SymbolStringPtr, JITEvaluatedSymbol>;
+using SymbolMap = DenseMap<SymbolStringPtr, JITEvaluatedSymbol>;
/// A map from symbol names (as SymbolStringPtrs) to JITSymbolFlags.
-using SymbolFlagsMap = std::map<SymbolStringPtr, JITSymbolFlags>;
+using SymbolFlagsMap = DenseMap<SymbolStringPtr, JITSymbolFlags>;
/// A base class for materialization failures that allows the failing
/// symbols to be obtained for logging.
-using SymbolDependenceMap = std::map<JITDylib *, SymbolNameSet>;
+using SymbolDependenceMap = DenseMap<JITDylib *, SymbolNameSet>;
-/// A list of JITDylib pointers.
-using JITDylibList = std::vector<JITDylib *>;
+/// A list of (JITDylib*, bool) pairs.
+using JITDylibSearchList = std::vector<std::pair<JITDylib *, bool>>;
/// Render a SymbolStringPtr.
raw_ostream &operator<<(raw_ostream &OS, const SymbolStringPtr &Sym);
@@ -88,8 +84,8 @@
/// Render a MaterializationUnit.
raw_ostream &operator<<(raw_ostream &OS, const MaterializationUnit &MU);
-/// Render a JITDylibList.
-raw_ostream &operator<<(raw_ostream &OS, const JITDylibList &JDs);
+/// Render a JITDylibSearchList.
+raw_ostream &operator<<(raw_ostream &OS, const JITDylibSearchList &JDs);
/// Callback to notify client that symbols have been resolved.
using SymbolsResolvedCallback = std::function<void(Expected<SymbolMap>)>;
@@ -171,6 +167,9 @@
/// into.
JITDylib &getTargetJITDylib() const { return JD; }
+ /// Returns the VModuleKey for this instance.
+ VModuleKey getVModuleKey() const { return K; }
+
/// Returns the symbol flags map for this responsibility instance.
/// Note: The returned flags may have transient flags (Lazy, Materializing)
/// set. These should be stripped with JITSymbolFlags::stripTransientFlags
@@ -221,7 +220,8 @@
/// Delegates responsibility for the given symbols to the returned
/// materialization responsibility. Useful for breaking up work between
/// threads, or different kinds of materialization processes.
- MaterializationResponsibility delegate(const SymbolNameSet &Symbols);
+ MaterializationResponsibility delegate(const SymbolNameSet &Symbols,
+ VModuleKey NewKey = VModuleKey());
void addDependencies(const SymbolStringPtr &Name,
const SymbolDependenceMap &Dependencies);
@@ -232,10 +232,12 @@
private:
/// Create a MaterializationResponsibility for the given JITDylib and
/// initial symbols.
- MaterializationResponsibility(JITDylib &JD, SymbolFlagsMap SymbolFlags);
+ MaterializationResponsibility(JITDylib &JD, SymbolFlagsMap SymbolFlags,
+ VModuleKey K);
JITDylib &JD;
SymbolFlagsMap SymbolFlags;
+ VModuleKey K;
};
/// A MaterializationUnit represents a set of symbol definitions that can
@@ -248,8 +250,8 @@
/// stronger definition is added or already present.
class MaterializationUnit {
public:
- MaterializationUnit(SymbolFlagsMap InitalSymbolFlags)
- : SymbolFlags(std::move(InitalSymbolFlags)) {}
+ MaterializationUnit(SymbolFlagsMap InitalSymbolFlags, VModuleKey K)
+ : SymbolFlags(std::move(InitalSymbolFlags)), K(std::move(K)) {}
virtual ~MaterializationUnit() {}
@@ -264,7 +266,8 @@
/// ExecutionSession::DispatchMaterializationFunction) to trigger
/// materialization of this MaterializationUnit.
void doMaterialize(JITDylib &JD) {
- materialize(MaterializationResponsibility(JD, std::move(SymbolFlags)));
+ materialize(MaterializationResponsibility(JD, std::move(SymbolFlags),
+ std::move(K)));
}
/// Called by JITDylibs to notify MaterializationUnits that the given symbol
@@ -276,6 +279,7 @@
protected:
SymbolFlagsMap SymbolFlags;
+ VModuleKey K;
private:
virtual void anchor();
@@ -301,7 +305,7 @@
/// materialized.
class AbsoluteSymbolsMaterializationUnit : public MaterializationUnit {
public:
- AbsoluteSymbolsMaterializationUnit(SymbolMap Symbols);
+ AbsoluteSymbolsMaterializationUnit(SymbolMap Symbols, VModuleKey K);
StringRef getName() const override;
@@ -324,9 +328,9 @@
/// \endcode
///
inline std::unique_ptr<AbsoluteSymbolsMaterializationUnit>
-absoluteSymbols(SymbolMap Symbols) {
+absoluteSymbols(SymbolMap Symbols, VModuleKey K = VModuleKey()) {
return llvm::make_unique<AbsoluteSymbolsMaterializationUnit>(
- std::move(Symbols));
+ std::move(Symbols), std::move(K));
}
struct SymbolAliasMapEntry {
@@ -339,20 +343,22 @@
};
/// A map of Symbols to (Symbol, Flags) pairs.
-using SymbolAliasMap = std::map<SymbolStringPtr, SymbolAliasMapEntry>;
+using SymbolAliasMap = DenseMap<SymbolStringPtr, SymbolAliasMapEntry>;
/// A materialization unit for symbol aliases. Allows existing symbols to be
/// aliased with alternate flags.
class ReExportsMaterializationUnit : public MaterializationUnit {
public:
/// SourceJD is allowed to be nullptr, in which case the source JITDylib is
- /// taken to be whatever JITDylib these definitions are materialized in. This
- /// is useful for defining aliases within a JITDylib.
+ /// taken to be whatever JITDylib these definitions are materialized in (and
+ /// MatchNonExported has no effect). This is useful for defining aliases
+ /// within a JITDylib.
///
/// Note: Care must be taken that no sets of aliases form a cycle, as such
/// a cycle will result in a deadlock when any symbol in the cycle is
/// resolved.
- ReExportsMaterializationUnit(JITDylib *SourceJD, SymbolAliasMap Aliases);
+ ReExportsMaterializationUnit(JITDylib *SourceJD, bool MatchNonExported,
+ SymbolAliasMap Aliases, VModuleKey K);
StringRef getName() const override;
@@ -362,6 +368,7 @@
static SymbolFlagsMap extractFlags(const SymbolAliasMap &Aliases);
JITDylib *SourceJD = nullptr;
+ bool MatchNonExported = false;
SymbolAliasMap Aliases;
};
@@ -377,17 +384,21 @@
/// return Err;
/// \endcode
inline std::unique_ptr<ReExportsMaterializationUnit>
-symbolAliases(SymbolAliasMap Aliases) {
- return llvm::make_unique<ReExportsMaterializationUnit>(nullptr,
- std::move(Aliases));
+symbolAliases(SymbolAliasMap Aliases, VModuleKey K = VModuleKey()) {
+ return llvm::make_unique<ReExportsMaterializationUnit>(
+ nullptr, true, std::move(Aliases), std::move(K));
}
/// Create a materialization unit for re-exporting symbols from another JITDylib
/// with alternative names/flags.
+/// If MatchNonExported is true then non-exported symbols from SourceJD can be
+/// re-exported. If it is false, attempts to re-export a non-exported symbol
+/// will result in a "symbol not found" error.
inline std::unique_ptr<ReExportsMaterializationUnit>
-reexports(JITDylib &SourceJD, SymbolAliasMap Aliases) {
- return llvm::make_unique<ReExportsMaterializationUnit>(&SourceJD,
- std::move(Aliases));
+reexports(JITDylib &SourceJD, SymbolAliasMap Aliases,
+ bool MatchNonExported = false, VModuleKey K = VModuleKey()) {
+ return llvm::make_unique<ReExportsMaterializationUnit>(
+ &SourceJD, MatchNonExported, std::move(Aliases), std::move(K));
}
/// Build a SymbolAliasMap for the common case where you want to re-export
@@ -395,15 +406,23 @@
Expected<SymbolAliasMap>
buildSimpleReexportsAliasMap(JITDylib &SourceJD, const SymbolNameSet &Symbols);
-class ReexportsFallbackDefinitionGenerator {
+/// ReexportsGenerator can be used with JITDylib::setGenerator to automatically
+/// re-export a subset of the source JITDylib's symbols in the target.
+class ReexportsGenerator {
public:
using SymbolPredicate = std::function<bool(SymbolStringPtr)>;
- ReexportsFallbackDefinitionGenerator(JITDylib &BackingJD,
- SymbolPredicate Allow);
+
+ /// Create a reexports generator. If an Allow predicate is passed, only
+ /// symbols for which the predicate returns true will be reexported. If no
+ /// Allow predicate is passed, all symbols will be exported.
+ ReexportsGenerator(JITDylib &SourceJD, bool MatchNonExported = false,
+ SymbolPredicate Allow = SymbolPredicate());
+
SymbolNameSet operator()(JITDylib &JD, const SymbolNameSet &Names);
private:
- JITDylib &BackingJD;
+ JITDylib &SourceJD;
+ bool MatchNonExported = false;
SymbolPredicate Allow;
};
@@ -478,11 +497,11 @@
friend class ExecutionSession;
friend class MaterializationResponsibility;
public:
- using FallbackDefinitionGeneratorFunction = std::function<SymbolNameSet(
+ using GeneratorFunction = std::function<SymbolNameSet(
JITDylib &Parent, const SymbolNameSet &Names)>;
using AsynchronousSymbolQuerySet =
- std::set<std::shared_ptr<AsynchronousSymbolQuery>>;
+ std::set<std::shared_ptr<AsynchronousSymbolQuery>>;
JITDylib(const JITDylib &) = delete;
JITDylib &operator=(const JITDylib &) = delete;
@@ -495,12 +514,12 @@
/// Get a reference to the ExecutionSession for this JITDylib.
ExecutionSession &getExecutionSession() const { return ES; }
- /// Set a fallback defenition generator. If set, lookup and lookupFlags will
- /// pass the unresolved symbols set to the fallback definition generator,
- /// allowing it to add a new definition to the JITDylib.
- void setFallbackDefinitionGenerator(
- FallbackDefinitionGeneratorFunction FallbackDefinitionGenerator) {
- this->FallbackDefinitionGenerator = std::move(FallbackDefinitionGenerator);
+ /// Set a definition generator. If set, whenever a symbol fails to resolve
+ /// within this JITDylib, lookup and lookupFlags will pass the unresolved
+ /// symbols set to the definition generator. The generator can optionally
+ /// add a definition for the unresolved symbols to the dylib.
+ void setGenerator(GeneratorFunction DefGenerator) {
+ this->DefGenerator = std::move(DefGenerator);
}
/// Set the search order to be used when fixing up definitions in JITDylib.
@@ -522,16 +541,18 @@
/// as the first in the search order (instead of this dylib) ensures that
/// definitions within this dylib resolve to the lazy-compiling stubs,
/// rather than immediately materializing the definitions in this dylib.
- void setSearchOrder(JITDylibList NewSearchOrder,
- bool SearchThisJITDylibFirst = true);
+ void setSearchOrder(JITDylibSearchList NewSearchOrder,
+ bool SearchThisJITDylibFirst = true,
+ bool MatchNonExportedInThisDylib = true);
/// Add the given JITDylib to the search order for definitions in this
/// JITDylib.
- void addToSearchOrder(JITDylib &JD);
+ void addToSearchOrder(JITDylib &JD, bool MatcNonExported = false);
/// Replace OldJD with NewJD in the search order if OldJD is present.
/// Otherwise this operation is a no-op.
- void replaceInSearchOrder(JITDylib &OldJD, JITDylib &NewJD);
+ void replaceInSearchOrder(JITDylib &OldJD, JITDylib &NewJD,
+ bool MatchNonExported = false);
/// Remove the given JITDylib from the search order for this JITDylib if it is
/// present. Otherwise this operation is a no-op.
@@ -540,7 +561,7 @@
/// Do something with the search order (run under the session lock).
template <typename Func>
auto withSearchOrderDo(Func &&F)
- -> decltype(F(std::declval<const JITDylibList &>()));
+ -> decltype(F(std::declval<const JITDylibSearchList &>()));
/// Define all symbols provided by the materialization unit to be part of this
/// JITDylib.
@@ -602,7 +623,7 @@
};
using UnmaterializedInfosMap =
- std::map<SymbolStringPtr, std::shared_ptr<UnmaterializedInfo>>;
+ DenseMap<SymbolStringPtr, std::shared_ptr<UnmaterializedInfo>>;
struct MaterializingInfo {
AsynchronousSymbolQueryList PendingQueries;
@@ -611,7 +632,7 @@
bool IsEmitted = false;
};
- using MaterializingInfosMap = std::map<SymbolStringPtr, MaterializingInfo>;
+ using MaterializingInfosMap = DenseMap<SymbolStringPtr, MaterializingInfo>;
using LookupImplActionFlags = enum {
None = 0,
@@ -628,10 +649,12 @@
const SymbolNameSet &Names);
void lodgeQuery(std::shared_ptr<AsynchronousSymbolQuery> &Q,
- SymbolNameSet &Unresolved, MaterializationUnitList &MUs);
+ SymbolNameSet &Unresolved, bool MatchNonExported,
+ MaterializationUnitList &MUs);
void lodgeQueryImpl(std::shared_ptr<AsynchronousSymbolQuery> &Q,
- SymbolNameSet &Unresolved, MaterializationUnitList &MUs);
+ SymbolNameSet &Unresolved, bool MatchNonExported,
+ MaterializationUnitList &MUs);
LookupImplActionFlags
lookupImpl(std::shared_ptr<AsynchronousSymbolQuery> &Q,
@@ -665,8 +688,8 @@
SymbolMap Symbols;
UnmaterializedInfosMap UnmaterializedInfos;
MaterializingInfosMap MaterializingInfos;
- FallbackDefinitionGeneratorFunction FallbackDefinitionGenerator;
- JITDylibList SearchOrder;
+ GeneratorFunction DefGenerator;
+ JITDylibSearchList SearchOrder;
};
/// An ExecutionSession represents a running JIT program.
@@ -750,6 +773,10 @@
/// Search the given JITDylib list for the given symbols.
///
+ /// SearchOrder lists the JITDylibs to search. For each dylib, the associated
+ /// boolean indicates whether the search should match against non-exported
+ /// (hidden visibility) symbols in that dylib (true means match against
+ /// non-exported symbols, false means do not match).
///
/// The OnResolve callback will be called once all requested symbols are
/// resolved, or if an error occurs prior to resolution.
@@ -766,7 +793,7 @@
/// dependenant symbols for this query (e.g. it is being made by a top level
/// client to get an address to call) then the value NoDependenciesToRegister
/// can be used.
- void lookup(const JITDylibList &JDs, SymbolNameSet Symbols,
+ void lookup(const JITDylibSearchList &SearchOrder, SymbolNameSet Symbols,
SymbolsResolvedCallback OnResolve, SymbolsReadyCallback OnReady,
RegisterDependenciesFunction RegisterDependencies);
@@ -777,20 +804,29 @@
/// or an error occurs. If WaitUntilReady is false and an error occurs
/// after resolution, the function will return a success value, but the
/// error will be reported via reportErrors.
- Expected<SymbolMap> lookup(const JITDylibList &JDs,
+ Expected<SymbolMap> lookup(const JITDylibSearchList &SearchOrder,
const SymbolNameSet &Symbols,
- RegisterDependenciesFunction RegisterDependencies,
+ RegisterDependenciesFunction RegisterDependencies =
+ NoDependenciesToRegister,
bool WaitUntilReady = true);
- /// Convenience version of the blocking version of lookup above. Uses the main
- /// JITDylib's search order as the lookup order, and registers no
- /// dependencies.
- Expected<SymbolMap> lookup(const SymbolNameSet &Symbols) {
- return getMainJITDylib().withSearchOrderDo(
- [&](const JITDylibList &SearchOrder) {
- return lookup(SearchOrder, Symbols, NoDependenciesToRegister, true);
- });
- }
+ /// Convenience version of blocking lookup.
+ /// Searches each of the JITDylibs in the search order in turn for the given
+ /// symbol.
+ Expected<JITEvaluatedSymbol> lookup(const JITDylibSearchList &SearchOrder,
+ SymbolStringPtr Symbol);
+
+ /// Convenience version of blocking lookup.
+ /// Searches each of the JITDylibs in the search order in turn for the given
+ /// symbol. The search will not find non-exported symbols.
+ Expected<JITEvaluatedSymbol> lookup(ArrayRef<JITDylib *> SearchOrder,
+ SymbolStringPtr Symbol);
+
+ /// Convenience version of blocking lookup.
+ /// Searches each of the JITDylibs in the search order in turn for the given
+ /// symbol. The search will not find non-exported symbols.
+ Expected<JITEvaluatedSymbol> lookup(ArrayRef<JITDylib *> SearchOrder,
+ StringRef Symbol);
/// Materialize the given unit.
void dispatchMaterialization(JITDylib &JD,
@@ -836,7 +872,7 @@
template <typename Func>
auto JITDylib::withSearchOrderDo(Func &&F)
- -> decltype(F(std::declval<const JITDylibList &>())) {
+ -> decltype(F(std::declval<const JITDylibSearchList &>())) {
return ES.runSessionLocked([&]() { return F(SearchOrder); });
}
@@ -873,16 +909,6 @@
});
}
-/// Look up the given names in the given JITDylibs.
-/// JDs will be searched in order and no JITDylib pointer may be null.
-/// All symbols must be found within the given JITDylibs or an error
-/// will be returned.
-Expected<SymbolMap> lookup(const JITDylibList &JDs, SymbolNameSet Names);
-
-/// Look up a symbol by searching a list of JITDylibs.
-Expected<JITEvaluatedSymbol> lookup(const JITDylibList &JDs,
- SymbolStringPtr Name);
-
/// Mangles symbol names then uniques them in the context of an
/// ExecutionSession.
class MangleAndInterner {
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h
index 5225066..40dd415 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h
@@ -1,9 +1,8 @@
//===- ExecutionUtils.h - Utilities for executing code in Orc ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -94,11 +93,11 @@
/// Convenience class for recording constructor/destructor names for
/// later execution.
template <typename JITLayerT>
-class CtorDtorRunner {
+class LegacyCtorDtorRunner {
public:
/// Construct a CtorDtorRunner for the given range using the given
/// name mangling function.
- CtorDtorRunner(std::vector<std::string> CtorDtorNames, VModuleKey K)
+ LegacyCtorDtorRunner(std::vector<std::string> CtorDtorNames, VModuleKey K)
: CtorDtorNames(std::move(CtorDtorNames)), K(K) {}
/// Run the recorded constructors/destructors through the given JIT
@@ -129,9 +128,9 @@
orc::VModuleKey K;
};
-class CtorDtorRunner2 {
+class CtorDtorRunner {
public:
- CtorDtorRunner2(JITDylib &JD) : JD(JD) {}
+ CtorDtorRunner(JITDylib &JD) : JD(JD) {}
void add(iterator_range<CtorDtorIterator> CtorDtors);
Error run();
@@ -177,11 +176,11 @@
void *DSOHandle);
};
-class LocalCXXRuntimeOverrides : public LocalCXXRuntimeOverridesBase {
+class LegacyLocalCXXRuntimeOverrides : public LocalCXXRuntimeOverridesBase {
public:
/// Create a runtime-overrides class.
template <typename MangleFtorT>
- LocalCXXRuntimeOverrides(const MangleFtorT &Mangle) {
+ LegacyLocalCXXRuntimeOverrides(const MangleFtorT &Mangle) {
addOverride(Mangle("__dso_handle"), toTargetAddress(&DSOHandleOverride));
addOverride(Mangle("__cxa_atexit"), toTargetAddress(&CXAAtExitOverride));
}
@@ -202,7 +201,7 @@
StringMap<JITTargetAddress> CXXRuntimeOverrides;
};
-class LocalCXXRuntimeOverrides2 : public LocalCXXRuntimeOverridesBase {
+class LocalCXXRuntimeOverrides : public LocalCXXRuntimeOverridesBase {
public:
Error enable(JITDylib &JD, MangleAndInterner &Mangler);
};
@@ -212,32 +211,30 @@
/// If an instance of this class is attached to a JITDylib as a fallback
/// definition generator, then any symbol found in the given DynamicLibrary that
/// passes the 'Allow' predicate will be added to the JITDylib.
-class DynamicLibraryFallbackGenerator {
+class DynamicLibrarySearchGenerator {
public:
using SymbolPredicate = std::function<bool(SymbolStringPtr)>;
- static bool AllowAll(SymbolStringPtr Name) { return true; }
-
- /// Create a DynamicLibraryFallbackGenerator that searches for symbols in the
+ /// Create a DynamicLibrarySearchGenerator that searches for symbols in the
/// given sys::DynamicLibrary.
- /// Only symbols that match the 'Allow' predicate will be searched for.
- DynamicLibraryFallbackGenerator(sys::DynamicLibrary Dylib,
- const DataLayout &DL,
- SymbolPredicate Allow = AllowAll);
+ /// If the Allow predicate is given then only symbols matching the predicate
+ /// will be searched for in the DynamicLibrary. If the predicate is not given
+ /// then all symbols will be searched for.
+ DynamicLibrarySearchGenerator(sys::DynamicLibrary Dylib, const DataLayout &DL,
+ SymbolPredicate Allow = SymbolPredicate());
/// Permanently loads the library at the given path and, on success, returns
- /// a DynamicLibraryFallbackGenerator that will search it for symbol
- /// definitions matching the Allow predicate.
- /// On failure returns the reason the library failed to load.
- static Expected<DynamicLibraryFallbackGenerator>
+ /// a DynamicLibrarySearchGenerator that will search it for symbol definitions
+ /// in the library. On failure returns the reason the library failed to load.
+ static Expected<DynamicLibrarySearchGenerator>
Load(const char *FileName, const DataLayout &DL,
- SymbolPredicate Allow = AllowAll);
+ SymbolPredicate Allow = SymbolPredicate());
- /// Creates a DynamicLibraryFallbackGenerator that searches for symbols in
+ /// Creates a DynamicLibrarySearchGenerator that searches for symbols in
/// the current process.
- static Expected<DynamicLibraryFallbackGenerator>
- CreateForCurrentProcess(const DataLayout &DL,
- SymbolPredicate Allow = AllowAll) {
+ static Expected<DynamicLibrarySearchGenerator>
+ GetForCurrentProcess(const DataLayout &DL,
+ SymbolPredicate Allow = SymbolPredicate()) {
return Load(nullptr, DL, std::move(Allow));
}
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/GlobalMappingLayer.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/GlobalMappingLayer.h
index a8a88d7..a4e43d4 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/GlobalMappingLayer.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/GlobalMappingLayer.h
@@ -1,9 +1,8 @@
//===- GlobalMappingLayer.h - Run all IR through a functor ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/IRCompileLayer.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/IRCompileLayer.h
index cb8df26..ecff09b 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/IRCompileLayer.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/IRCompileLayer.h
@@ -1,9 +1,8 @@
//===- IRCompileLayer.h -- Eagerly compile IR for JIT -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -28,7 +27,7 @@
namespace orc {
-class IRCompileLayer2 : public IRLayer {
+class IRCompileLayer : public IRLayer {
public:
using CompileFunction =
std::function<Expected<std::unique_ptr<MemoryBuffer>>(Module &)>;
@@ -36,13 +35,12 @@
using NotifyCompiledFunction =
std::function<void(VModuleKey K, ThreadSafeModule TSM)>;
- IRCompileLayer2(ExecutionSession &ES, ObjectLayer &BaseLayer,
- CompileFunction Compile);
+ IRCompileLayer(ExecutionSession &ES, ObjectLayer &BaseLayer,
+ CompileFunction Compile);
void setNotifyCompiled(NotifyCompiledFunction NotifyCompiled);
- void emit(MaterializationResponsibility R, VModuleKey K,
- ThreadSafeModule TSM) override;
+ void emit(MaterializationResponsibility R, ThreadSafeModule TSM) override;
private:
mutable std::mutex IRLayerMutex;
@@ -57,15 +55,15 @@
/// object file and adds this module file to the layer below, which must
/// implement the object layer concept.
template <typename BaseLayerT, typename CompileFtor>
-class IRCompileLayer {
+class LegacyIRCompileLayer {
public:
/// Callback type for notifications when modules are compiled.
using NotifyCompiledCallback =
std::function<void(VModuleKey K, std::unique_ptr<Module>)>;
- /// Construct an IRCompileLayer with the given BaseLayer, which must
+ /// Construct an LegacyIRCompileLayer with the given BaseLayer, which must
/// implement the ObjectLayer concept.
- IRCompileLayer(
+ LegacyIRCompileLayer(
BaseLayerT &BaseLayer, CompileFtor Compile,
NotifyCompiledCallback NotifyCompiled = NotifyCompiledCallback())
: BaseLayer(BaseLayer), Compile(std::move(Compile)),
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/IRTransformLayer.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/IRTransformLayer.h
index d5f91ce..8890a57 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/IRTransformLayer.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/IRTransformLayer.h
@@ -1,9 +1,8 @@
//===- IRTransformLayer.h - Run all IR through a functor --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -23,20 +22,19 @@
class Module;
namespace orc {
-class IRTransformLayer2 : public IRLayer {
+class IRTransformLayer : public IRLayer {
public:
using TransformFunction = std::function<Expected<ThreadSafeModule>(
ThreadSafeModule, const MaterializationResponsibility &R)>;
- IRTransformLayer2(ExecutionSession &ES, IRLayer &BaseLayer,
- TransformFunction Transform = identityTransform);
+ IRTransformLayer(ExecutionSession &ES, IRLayer &BaseLayer,
+ TransformFunction Transform = identityTransform);
void setTransform(TransformFunction Transform) {
this->Transform = std::move(Transform);
}
- void emit(MaterializationResponsibility R, VModuleKey K,
- ThreadSafeModule TSM) override;
+ void emit(MaterializationResponsibility R, ThreadSafeModule TSM) override;
static ThreadSafeModule
identityTransform(ThreadSafeModule TSM,
@@ -54,11 +52,11 @@
/// This layer applies a user supplied transform to each module that is added,
/// then adds the transformed module to the layer below.
template <typename BaseLayerT, typename TransformFtor>
-class IRTransformLayer {
+class LegacyIRTransformLayer {
public:
- /// Construct an IRTransformLayer with the given BaseLayer
- IRTransformLayer(BaseLayerT &BaseLayer,
+ /// Construct an LegacyIRTransformLayer with the given BaseLayer
+ LegacyIRTransformLayer(BaseLayerT &BaseLayer,
TransformFtor Transform = TransformFtor())
: BaseLayer(BaseLayer), Transform(std::move(Transform)) {}
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h
index c252780..2ea9ac1 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h
@@ -1,9 +1,8 @@
//===- IndirectionUtils.h - Utilities for adding indirections ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/JITTargetMachineBuilder.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/JITTargetMachineBuilder.h
index eb9b6bf..bcbd72e 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/JITTargetMachineBuilder.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/JITTargetMachineBuilder.h
@@ -1,9 +1,8 @@
//===- JITTargetMachineBuilder.h - Build TargetMachines for JIT -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/LLJIT.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/LLJIT.h
index 400d4cb..b0ef20d 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/LLJIT.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/LLJIT.h
@@ -1,9 +1,8 @@
//===----- LLJIT.h -- An ORC-based JIT for compiling LLVM IR ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for 3Bdetails.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -49,6 +48,11 @@
/// Returns a reference to the JITDylib representing the JIT'd main program.
JITDylib &getMainJITDylib() { return Main; }
+ /// Create a new JITDylib with the given name and return a reference to it.
+ JITDylib &createJITDylib(std::string Name) {
+ return ES->createJITDylib(std::move(Name));
+ }
+
/// Convenience method for defining an absolute symbol.
Error defineAbsolute(StringRef Name, JITEvaluatedSymbol Address);
@@ -99,7 +103,7 @@
Error runDestructors() { return DtorRunner.run(); }
/// Returns a reference to the ObjLinkingLayer
- RTDyldObjectLinkingLayer2 &getObjLinkingLayer() { return ObjLinkingLayer; }
+ RTDyldObjectLinkingLayer &getObjLinkingLayer() { return ObjLinkingLayer; }
protected:
@@ -111,8 +115,6 @@
LLJIT(std::unique_ptr<ExecutionSession> ES, JITTargetMachineBuilder JTMB,
DataLayout DL, unsigned NumCompileThreads);
- std::unique_ptr<RuntimeDyld::MemoryManager> getMemoryManager(VModuleKey K);
-
std::string mangle(StringRef UnmangledName);
Error applyDataLayout(Module &M);
@@ -125,10 +127,10 @@
DataLayout DL;
std::unique_ptr<ThreadPool> CompileThreads;
- RTDyldObjectLinkingLayer2 ObjLinkingLayer;
- IRCompileLayer2 CompileLayer;
+ RTDyldObjectLinkingLayer ObjLinkingLayer;
+ IRCompileLayer CompileLayer;
- CtorDtorRunner2 CtorRunner, DtorRunner;
+ CtorDtorRunner CtorRunner, DtorRunner;
};
/// An extended version of LLJIT that supports lazy function-at-a-time
@@ -141,17 +143,17 @@
/// LLLazyJIT with the given number of compile threads.
static Expected<std::unique_ptr<LLLazyJIT>>
Create(JITTargetMachineBuilder JTMB, DataLayout DL,
- unsigned NumCompileThreads = 0);
+ JITTargetAddress ErrorAddr, unsigned NumCompileThreads = 0);
/// Set an IR transform (e.g. pass manager pipeline) to run on each function
/// when it is compiled.
- void setLazyCompileTransform(IRTransformLayer2::TransformFunction Transform) {
+ void setLazyCompileTransform(IRTransformLayer::TransformFunction Transform) {
TransformLayer.setTransform(std::move(Transform));
}
/// Sets the partition function.
void
- setPartitionFunction(CompileOnDemandLayer2::PartitionFunction Partition) {
+ setPartitionFunction(CompileOnDemandLayer::PartitionFunction Partition) {
CODLayer.setPartitionFunction(std::move(Partition));
}
@@ -180,8 +182,8 @@
std::unique_ptr<LazyCallThroughManager> LCTMgr;
std::function<std::unique_ptr<IndirectStubsManager>()> ISMBuilder;
- IRTransformLayer2 TransformLayer;
- CompileOnDemandLayer2 CODLayer;
+ IRTransformLayer TransformLayer;
+ CompileOnDemandLayer CODLayer;
};
} // End namespace orc
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/LambdaResolver.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/LambdaResolver.h
index 7b6f3d2..92efded 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/LambdaResolver.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/LambdaResolver.h
@@ -1,9 +1,8 @@
//===- LambdaResolverMM - Redirect symbol lookup via a functor --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/Layer.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/Layer.h
index 3bd23ae..8f9bd70 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/Layer.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/Layer.h
@@ -1,9 +1,8 @@
//===---------------- Layer.h -- Layer interfaces --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -49,17 +48,11 @@
/// Adds a MaterializationUnit representing the given IR to the given
/// JITDylib.
- virtual Error add(JITDylib &JD, VModuleKey K, ThreadSafeModule TSM);
-
- /// Adds a MaterializationUnit representing the given IR to the main
- /// JITDylib.
- Error add(VModuleKey K, ThreadSafeModule TSM) {
- return add(ES.getMainJITDylib(), K, std::move(TSM));
- }
+ virtual Error add(JITDylib &JD, ThreadSafeModule TSM,
+ VModuleKey K = VModuleKey());
/// Emit should materialize the given IR.
- virtual void emit(MaterializationResponsibility R, VModuleKey K,
- ThreadSafeModule TSM) = 0;
+ virtual void emit(MaterializationResponsibility R, ThreadSafeModule TSM) = 0;
private:
bool CloneToNewContextOnEmit = false;
@@ -76,14 +69,16 @@
/// Create an IRMaterializationLayer. Scans the module to build the
/// SymbolFlags and SymbolToDefinition maps.
- IRMaterializationUnit(ExecutionSession &ES, ThreadSafeModule TSM);
+ IRMaterializationUnit(ExecutionSession &ES, ThreadSafeModule TSM,
+ VModuleKey K);
/// Create an IRMaterializationLayer from a module, and pre-existing
/// SymbolFlags and SymbolToDefinition maps. The maps must provide
/// entries for each definition in M.
/// This constructor is useful for delegating work from one
/// IRMaterializationUnit to another.
- IRMaterializationUnit(ThreadSafeModule TSM, SymbolFlagsMap SymbolFlags,
+ IRMaterializationUnit(ThreadSafeModule TSM, VModuleKey K,
+ SymbolFlagsMap SymbolFlags,
SymbolNameToDefinitionMap SymbolToDefinition);
/// Return the ModuleIdentifier as the name for this MaterializationUnit.
@@ -125,16 +120,11 @@
/// Adds a MaterializationUnit representing the given IR to the given
/// JITDylib.
- virtual Error add(JITDylib &JD, VModuleKey K, std::unique_ptr<MemoryBuffer> O);
-
- /// Adds a MaterializationUnit representing the given object to the main
- /// JITDylib.
- Error add(VModuleKey K, std::unique_ptr<MemoryBuffer> O) {
- return add(ES.getMainJITDylib(), K, std::move(O));
- }
+ virtual Error add(JITDylib &JD, std::unique_ptr<MemoryBuffer> O,
+ VModuleKey K = VModuleKey());
/// Emit should materialize the given IR.
- virtual void emit(MaterializationResponsibility R, VModuleKey K,
+ virtual void emit(MaterializationResponsibility R,
std::unique_ptr<MemoryBuffer> O) = 0;
private:
@@ -161,7 +151,6 @@
void discard(const JITDylib &JD, const SymbolStringPtr &Name) override;
ObjectLayer &L;
- VModuleKey K;
std::unique_ptr<MemoryBuffer> O;
};
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h
index 46761b0..fdf64d0 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h
@@ -1,9 +1,8 @@
//===- LazyEmittingLayer.h - Lazily emit IR to lower JIT layers -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/LazyReexports.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/LazyReexports.h
index 8f89700..9fdd1d1 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/LazyReexports.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/LazyReexports.h
@@ -1,9 +1,8 @@
//===------ LazyReexports.h -- Utilities for lazy reexports -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -159,7 +158,8 @@
LazyReexportsMaterializationUnit(LazyCallThroughManager &LCTManager,
IndirectStubsManager &ISManager,
JITDylib &SourceJD,
- SymbolAliasMap CallableAliases);
+ SymbolAliasMap CallableAliases,
+ VModuleKey K);
StringRef getName() const override;
@@ -182,9 +182,10 @@
inline std::unique_ptr<LazyReexportsMaterializationUnit>
lazyReexports(LazyCallThroughManager &LCTManager,
IndirectStubsManager &ISManager, JITDylib &SourceJD,
- SymbolAliasMap CallableAliases) {
+ SymbolAliasMap CallableAliases, VModuleKey K = VModuleKey()) {
return llvm::make_unique<LazyReexportsMaterializationUnit>(
- LCTManager, ISManager, SourceJD, std::move(CallableAliases));
+ LCTManager, ISManager, SourceJD, std::move(CallableAliases),
+ std::move(K));
}
} // End namespace orc
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/Legacy.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/Legacy.h
index 4c6162a..e0e5526 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/Legacy.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/Legacy.h
@@ -1,9 +1,8 @@
//===--- Legacy.h -- Adapters for ExecutionEngine API interop ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/NullResolver.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/NullResolver.h
index 03fefb6..ffa37a1 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/NullResolver.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/NullResolver.h
@@ -1,9 +1,8 @@
//===------ NullResolver.h - Reject symbol lookup requests ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/ObjectTransformLayer.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/ObjectTransformLayer.h
index c6b43a9..de4603f 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/ObjectTransformLayer.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/ObjectTransformLayer.h
@@ -1,9 +1,8 @@
//===- ObjectTransformLayer.h - Run all objects through functor -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -23,16 +22,16 @@
namespace llvm {
namespace orc {
-class ObjectTransformLayer2 : public ObjectLayer {
+class ObjectTransformLayer : public ObjectLayer {
public:
using TransformFunction =
std::function<Expected<std::unique_ptr<MemoryBuffer>>(
std::unique_ptr<MemoryBuffer>)>;
- ObjectTransformLayer2(ExecutionSession &ES, ObjectLayer &BaseLayer,
- TransformFunction Transform);
+ ObjectTransformLayer(ExecutionSession &ES, ObjectLayer &BaseLayer,
+ TransformFunction Transform);
- void emit(MaterializationResponsibility R, VModuleKey K,
+ void emit(MaterializationResponsibility R,
std::unique_ptr<MemoryBuffer> O) override;
private:
@@ -46,11 +45,11 @@
/// immediately applies the user supplied functor to each object, then adds
/// the set of transformed objects to the layer below.
template <typename BaseLayerT, typename TransformFtor>
-class ObjectTransformLayer {
+class LegacyObjectTransformLayer {
public:
/// Construct an ObjectTransformLayer with the given BaseLayer
- ObjectTransformLayer(BaseLayerT &BaseLayer,
- TransformFtor Transform = TransformFtor())
+ LegacyObjectTransformLayer(BaseLayerT &BaseLayer,
+ TransformFtor Transform = TransformFtor())
: BaseLayer(BaseLayer), Transform(std::move(Transform)) {}
/// Apply the transform functor to each object in the object set, then
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcABISupport.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcABISupport.h
index 49e7b53..38246bc 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcABISupport.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcABISupport.h
@@ -1,9 +1,8 @@
//===- OrcABISupport.h - ABI support code -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -287,7 +286,7 @@
public:
static const unsigned PointerSize = 8;
static const unsigned TrampolineSize = 40;
- static const unsigned ResolverCodeSize = 0x11C;
+ static const unsigned ResolverCodeSize = 0x120;
using IndirectStubsInfo = GenericIndirectStubsInfo<32>;
using JITReentryFn = JITTargetAddress (*)(void *CallbackMgr,
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcError.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcError.h
index dc60e8d..e5d6a3e 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcError.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcError.h
@@ -1,9 +1,8 @@
//===------ OrcError.h - Reject symbol lookup requests ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h
index 99468e2..8b875b7 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h
@@ -1,9 +1,8 @@
//===- OrcRemoteTargetClient.h - Orc Remote-target Client -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -118,30 +117,33 @@
Unmapped.back().RemoteCodeAddr =
Client.reserveMem(Id, CodeSize, CodeAlign);
- LLVM_DEBUG(dbgs() << " code: "
- << format("0x%016x", Unmapped.back().RemoteCodeAddr)
- << " (" << CodeSize << " bytes, alignment "
- << CodeAlign << ")\n");
+ LLVM_DEBUG(
+ dbgs() << " code: "
+ << format("0x%016" PRIx64, Unmapped.back().RemoteCodeAddr)
+ << " (" << CodeSize << " bytes, alignment " << CodeAlign
+ << ")\n");
}
if (RODataSize != 0) {
Unmapped.back().RemoteRODataAddr =
Client.reserveMem(Id, RODataSize, RODataAlign);
- LLVM_DEBUG(dbgs() << " ro-data: "
- << format("0x%016x", Unmapped.back().RemoteRODataAddr)
- << " (" << RODataSize << " bytes, alignment "
- << RODataAlign << ")\n");
+ LLVM_DEBUG(
+ dbgs() << " ro-data: "
+ << format("0x%016" PRIx64, Unmapped.back().RemoteRODataAddr)
+ << " (" << RODataSize << " bytes, alignment " << RODataAlign
+ << ")\n");
}
if (RWDataSize != 0) {
Unmapped.back().RemoteRWDataAddr =
Client.reserveMem(Id, RWDataSize, RWDataAlign);
- LLVM_DEBUG(dbgs() << " rw-data: "
- << format("0x%016x", Unmapped.back().RemoteRWDataAddr)
- << " (" << RWDataSize << " bytes, alignment "
- << RWDataAlign << ")\n");
+ LLVM_DEBUG(
+ dbgs() << " rw-data: "
+ << format("0x%016" PRIx64, Unmapped.back().RemoteRWDataAddr)
+ << " (" << RWDataSize << " bytes, alignment " << RWDataAlign
+ << ")\n");
}
}
@@ -269,9 +271,9 @@
for (auto &Alloc : Allocs) {
NextAddr = alignTo(NextAddr, Alloc.getAlign());
Dyld.mapSectionAddress(Alloc.getLocalAddress(), NextAddr);
- LLVM_DEBUG(dbgs() << " "
- << static_cast<void *>(Alloc.getLocalAddress())
- << " -> " << format("0x%016x", NextAddr) << "\n");
+ LLVM_DEBUG(
+ dbgs() << " " << static_cast<void *>(Alloc.getLocalAddress())
+ << " -> " << format("0x%016" PRIx64, NextAddr) << "\n");
Alloc.setRemoteAddress(NextAddr);
// Only advance NextAddr if it was non-null to begin with,
@@ -293,7 +295,7 @@
LLVM_DEBUG(dbgs() << " copying section: "
<< static_cast<void *>(Alloc.getLocalAddress())
<< " -> "
- << format("0x%016x", Alloc.getRemoteAddress())
+ << format("0x%016" PRIx64, Alloc.getRemoteAddress())
<< " (" << Alloc.getSize() << " bytes)\n";);
if (Client.writeMem(Alloc.getRemoteAddress(), Alloc.getLocalAddress(),
@@ -306,7 +308,8 @@
<< (Permissions & sys::Memory::MF_WRITE ? 'W' : '-')
<< (Permissions & sys::Memory::MF_EXEC ? 'X' : '-')
<< " permissions on block: "
- << format("0x%016x", RemoteSegmentAddr) << "\n");
+ << format("0x%016" PRIx64, RemoteSegmentAddr)
+ << "\n");
if (Client.setProtections(Id, RemoteSegmentAddr, Permissions))
return true;
}
@@ -510,8 +513,8 @@
/// Call the int(void) function at the given address in the target and return
/// its result.
Expected<int> callIntVoid(JITTargetAddress Addr) {
- LLVM_DEBUG(dbgs() << "Calling int(*)(void) " << format("0x%016x", Addr)
- << "\n");
+ LLVM_DEBUG(dbgs() << "Calling int(*)(void) "
+ << format("0x%016" PRIx64, Addr) << "\n");
return callB<exec::CallIntVoid>(Addr);
}
@@ -520,15 +523,15 @@
Expected<int> callMain(JITTargetAddress Addr,
const std::vector<std::string> &Args) {
LLVM_DEBUG(dbgs() << "Calling int(*)(int, char*[]) "
- << format("0x%016x", Addr) << "\n");
+ << format("0x%016" PRIx64, Addr) << "\n");
return callB<exec::CallMain>(Addr, Args);
}
/// Call the void() function at the given address in the target and wait for
/// it to finish.
Error callVoidVoid(JITTargetAddress Addr) {
- LLVM_DEBUG(dbgs() << "Calling void(*)(void) " << format("0x%016x", Addr)
- << "\n");
+ LLVM_DEBUG(dbgs() << "Calling void(*)(void) "
+ << format("0x%016" PRIx64, Addr) << "\n");
return callB<exec::CallVoidVoid>(Addr);
}
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetRPCAPI.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetRPCAPI.h
index 8db9e31..e7b598d 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetRPCAPI.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetRPCAPI.h
@@ -1,9 +1,8 @@
//===- OrcRemoteTargetRPCAPI.h - Orc Remote-target RPC API ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetServer.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetServer.h
index acbc168..9684481 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetServer.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetServer.h
@@ -1,9 +1,8 @@
//===- OrcRemoteTargetServer.h - Orc Remote-target Server -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RPCSerialization.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RPCSerialization.h
index 1e5f6ce..07c7471 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RPCSerialization.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RPCSerialization.h
@@ -1,9 +1,8 @@
//===- llvm/ExecutionEngine/Orc/RPCSerialization.h --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -128,123 +127,85 @@
class RPCTypeName<Expected<T>> {
public:
static const char* getName() {
- std::lock_guard<std::mutex> Lock(NameMutex);
- if (Name.empty())
+ static std::string Name = [] {
+ std::string Name;
raw_string_ostream(Name) << "Expected<"
<< RPCTypeNameSequence<T>()
<< ">";
+ return Name;
+ }();
return Name.data();
}
-
-private:
- static std::mutex NameMutex;
- static std::string Name;
};
-template <typename T>
-std::mutex RPCTypeName<Expected<T>>::NameMutex;
-
-template <typename T>
-std::string RPCTypeName<Expected<T>>::Name;
-
template <typename T1, typename T2>
class RPCTypeName<std::pair<T1, T2>> {
public:
static const char* getName() {
- std::lock_guard<std::mutex> Lock(NameMutex);
- if (Name.empty())
+ static std::string Name = [] {
+ std::string Name;
raw_string_ostream(Name) << "std::pair<" << RPCTypeNameSequence<T1, T2>()
<< ">";
+ return Name;
+ }();
return Name.data();
}
-private:
- static std::mutex NameMutex;
- static std::string Name;
};
-template <typename T1, typename T2>
-std::mutex RPCTypeName<std::pair<T1, T2>>::NameMutex;
-template <typename T1, typename T2>
-std::string RPCTypeName<std::pair<T1, T2>>::Name;
-
template <typename... ArgTs>
class RPCTypeName<std::tuple<ArgTs...>> {
public:
static const char* getName() {
- std::lock_guard<std::mutex> Lock(NameMutex);
- if (Name.empty())
+ static std::string Name = [] {
+ std::string Name;
raw_string_ostream(Name) << "std::tuple<"
<< RPCTypeNameSequence<ArgTs...>() << ">";
+ return Name;
+ }();
return Name.data();
}
-private:
- static std::mutex NameMutex;
- static std::string Name;
};
-template <typename... ArgTs>
-std::mutex RPCTypeName<std::tuple<ArgTs...>>::NameMutex;
-template <typename... ArgTs>
-std::string RPCTypeName<std::tuple<ArgTs...>>::Name;
-
template <typename T>
class RPCTypeName<std::vector<T>> {
public:
static const char*getName() {
- std::lock_guard<std::mutex> Lock(NameMutex);
- if (Name.empty())
+ static std::string Name = [] {
+ std::string Name;
raw_string_ostream(Name) << "std::vector<" << RPCTypeName<T>::getName()
<< ">";
+ return Name;
+ }();
return Name.data();
}
-
-private:
- static std::mutex NameMutex;
- static std::string Name;
};
-template <typename T>
-std::mutex RPCTypeName<std::vector<T>>::NameMutex;
-template <typename T>
-std::string RPCTypeName<std::vector<T>>::Name;
-
template <typename T> class RPCTypeName<std::set<T>> {
public:
static const char *getName() {
- std::lock_guard<std::mutex> Lock(NameMutex);
- if (Name.empty())
+ static std::string Name = [] {
+ std::string Name;
raw_string_ostream(Name)
<< "std::set<" << RPCTypeName<T>::getName() << ">";
+ return Name;
+ }();
return Name.data();
}
-
-private:
- static std::mutex NameMutex;
- static std::string Name;
};
-template <typename T> std::mutex RPCTypeName<std::set<T>>::NameMutex;
-template <typename T> std::string RPCTypeName<std::set<T>>::Name;
-
template <typename K, typename V> class RPCTypeName<std::map<K, V>> {
public:
static const char *getName() {
- std::lock_guard<std::mutex> Lock(NameMutex);
- if (Name.empty())
+ static std::string Name = [] {
+ std::string Name;
raw_string_ostream(Name)
<< "std::map<" << RPCTypeNameSequence<K, V>() << ">";
+ return Name;
+ }();
return Name.data();
}
-
-private:
- static std::mutex NameMutex;
- static std::string Name;
};
-template <typename K, typename V>
-std::mutex RPCTypeName<std::map<K, V>>::NameMutex;
-template <typename K, typename V> std::string RPCTypeName<std::map<K, V>>::Name;
-
/// The SerializationTraits<ChannelT, T> class describes how to serialize and
/// deserialize an instance of type T to/from an abstract channel of type
/// ChannelT. It also provides a representation of the type's name via the
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RPCUtils.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RPCUtils.h
index 953b73e..3b11e1b 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RPCUtils.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RPCUtils.h
@@ -1,9 +1,8 @@
-//===------- RPCUTils.h - Utilities for building RPC APIs -------*- C++ -*-===//
+//===- RPCUtils.h - Utilities for building RPC APIs -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -152,25 +151,17 @@
/// Returns the full function prototype as a string.
static const char *getPrototype() {
- std::lock_guard<std::mutex> Lock(NameMutex);
- if (Name.empty())
+ static std::string Name = [] {
+ std::string Name;
raw_string_ostream(Name)
<< RPCTypeName<RetT>::getName() << " " << DerivedFunc::getName()
<< "(" << llvm::orc::rpc::RPCTypeNameSequence<ArgTs...>() << ")";
+ return Name;
+ }();
return Name.data();
}
-
-private:
- static std::mutex NameMutex;
- static std::string Name;
};
-template <typename DerivedFunc, typename RetT, typename... ArgTs>
-std::mutex Function<DerivedFunc, RetT(ArgTs...)>::NameMutex;
-
-template <typename DerivedFunc, typename RetT, typename... ArgTs>
-std::string Function<DerivedFunc, RetT(ArgTs...)>::Name;
-
/// Allocates RPC function ids during autonegotiation.
/// Specializations of this class must provide four members:
///
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h
index 0c30520..cd9ec36 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h
@@ -1,9 +1,8 @@
//===- RTDyldObjectLinkingLayer.h - RTDyld-based jit linking ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -36,7 +35,7 @@
namespace llvm {
namespace orc {
-class RTDyldObjectLinkingLayer2 : public ObjectLayer {
+class RTDyldObjectLinkingLayer : public ObjectLayer {
public:
/// Functor for receiving object-loaded notifications.
using NotifyLoadedFunction =
@@ -47,17 +46,17 @@
using NotifyEmittedFunction = std::function<void(VModuleKey)>;
using GetMemoryManagerFunction =
- std::function<std::unique_ptr<RuntimeDyld::MemoryManager>(VModuleKey)>;
+ std::function<std::unique_ptr<RuntimeDyld::MemoryManager>()>;
/// Construct an ObjectLinkingLayer with the given NotifyLoaded,
/// and NotifyEmitted functors.
- RTDyldObjectLinkingLayer2(
+ RTDyldObjectLinkingLayer(
ExecutionSession &ES, GetMemoryManagerFunction GetMemoryManager,
NotifyLoadedFunction NotifyLoaded = NotifyLoadedFunction(),
NotifyEmittedFunction NotifyEmitted = NotifyEmittedFunction());
/// Emit the object.
- void emit(MaterializationResponsibility R, VModuleKey K,
+ void emit(MaterializationResponsibility R,
std::unique_ptr<MemoryBuffer> O) override;
/// Set the 'ProcessAllSections' flag.
@@ -66,7 +65,7 @@
/// the memory manager, rather than just the sections required for execution.
///
/// This is kludgy, and may be removed in the future.
- RTDyldObjectLinkingLayer2 &setProcessAllSections(bool ProcessAllSections) {
+ RTDyldObjectLinkingLayer &setProcessAllSections(bool ProcessAllSections) {
this->ProcessAllSections = ProcessAllSections;
return *this;
}
@@ -79,13 +78,13 @@
///
/// FIXME: We should be able to remove this if/when COFF properly tracks
/// exported symbols.
- RTDyldObjectLinkingLayer2 &
+ RTDyldObjectLinkingLayer &
setOverrideObjectFlagsWithResponsibilityFlags(bool OverrideObjectFlags) {
this->OverrideObjectFlags = OverrideObjectFlags;
return *this;
}
- /// If set, this RTDyldObjectLinkingLayer2 instance will claim responsibility
+ /// If set, this RTDyldObjectLinkingLayer instance will claim responsibility
/// for any symbols provided by a given object file that were not already in
/// the MaterializationResponsibility instance. Setting this flag allows
/// higher-level program representations (e.g. LLVM IR) to be added based on
@@ -96,7 +95,7 @@
/// deterministically). If this option is set, clashes for the additional
/// symbols may not be detected until late, and detection may depend on
/// the flow of control through JIT'd code. Use with care.
- RTDyldObjectLinkingLayer2 &
+ RTDyldObjectLinkingLayer &
setAutoClaimResponsibilityForObjectSymbols(bool AutoClaimObjectSymbols) {
this->AutoClaimObjectSymbols = AutoClaimObjectSymbols;
return *this;
@@ -118,10 +117,10 @@
bool ProcessAllSections = false;
bool OverrideObjectFlags = false;
bool AutoClaimObjectSymbols = false;
- std::map<VModuleKey, std::shared_ptr<RuntimeDyld::MemoryManager>> MemMgrs;
+ std::vector<std::unique_ptr<RuntimeDyld::MemoryManager>> MemMgrs;
};
-class RTDyldObjectLinkingLayerBase {
+class LegacyRTDyldObjectLinkingLayerBase {
public:
using ObjectPtr = std::unique_ptr<MemoryBuffer>;
@@ -173,10 +172,10 @@
/// object files to be loaded into memory, linked, and the addresses of their
/// symbols queried. All objects added to this layer can see each other's
/// symbols.
-class RTDyldObjectLinkingLayer : public RTDyldObjectLinkingLayerBase {
+class LegacyRTDyldObjectLinkingLayer : public LegacyRTDyldObjectLinkingLayerBase {
public:
- using RTDyldObjectLinkingLayerBase::ObjectPtr;
+ using LegacyRTDyldObjectLinkingLayerBase::ObjectPtr;
/// Functor for receiving object-loaded notifications.
using NotifyLoadedFtor =
@@ -197,7 +196,7 @@
template <typename MemoryManagerPtrT>
class ConcreteLinkedObject : public LinkedObject {
public:
- ConcreteLinkedObject(RTDyldObjectLinkingLayer &Parent, VModuleKey K,
+ ConcreteLinkedObject(LegacyRTDyldObjectLinkingLayer &Parent, VModuleKey K,
OwnedObject Obj, MemoryManagerPtrT MemMgr,
std::shared_ptr<SymbolResolver> Resolver,
bool ProcessAllSections)
@@ -313,7 +312,7 @@
};
VModuleKey K;
- RTDyldObjectLinkingLayer &Parent;
+ LegacyRTDyldObjectLinkingLayer &Parent;
MemoryManagerPtrT MemMgr;
OwnedObject ObjForNotify;
std::unique_ptr<PreFinalizeContents> PFC;
@@ -321,7 +320,7 @@
template <typename MemoryManagerPtrT>
std::unique_ptr<ConcreteLinkedObject<MemoryManagerPtrT>>
- createLinkedObject(RTDyldObjectLinkingLayer &Parent, VModuleKey K,
+ createLinkedObject(LegacyRTDyldObjectLinkingLayer &Parent, VModuleKey K,
OwnedObject Obj, MemoryManagerPtrT MemMgr,
std::shared_ptr<SymbolResolver> Resolver,
bool ProcessAllSections) {
@@ -341,7 +340,7 @@
/// Construct an ObjectLinkingLayer with the given NotifyLoaded,
/// and NotifyFinalized functors.
- RTDyldObjectLinkingLayer(
+ LegacyRTDyldObjectLinkingLayer(
ExecutionSession &ES, ResourcesGetter GetResources,
NotifyLoadedFtor NotifyLoaded = NotifyLoadedFtor(),
NotifyFinalizedFtor NotifyFinalized = NotifyFinalizedFtor(),
@@ -443,11 +442,14 @@
private:
ExecutionSession &ES;
- std::map<VModuleKey, std::unique_ptr<LinkedObject>> LinkedObjects;
ResourcesGetter GetResources;
NotifyLoadedFtor NotifyLoaded;
NotifyFinalizedFtor NotifyFinalized;
NotifyFreedFtor NotifyFreed;
+
+ // NB! `LinkedObjects` needs to be destroyed before `NotifyFreed` because
+ // `~ConcreteLinkedObject` calls `NotifyFreed`
+ std::map<VModuleKey, std::unique_ptr<LinkedObject>> LinkedObjects;
bool ProcessAllSections = false;
};
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RawByteChannel.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RawByteChannel.h
index db810f4..46b7c59 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RawByteChannel.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RawByteChannel.h
@@ -1,9 +1,8 @@
//===- llvm/ExecutionEngine/Orc/RawByteChannel.h ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RemoteObjectLayer.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RemoteObjectLayer.h
index 955e776..9550edc 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RemoteObjectLayer.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/RemoteObjectLayer.h
@@ -1,9 +1,8 @@
//===------ RemoteObjectLayer.h - Forwards objs to a remote -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/SymbolStringPool.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/SymbolStringPool.h
index 4c45cfd..39fa74b 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/SymbolStringPool.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/SymbolStringPool.h
@@ -1,9 +1,8 @@
//===- SymbolStringPool.h - Multi-threaded pool for JIT symbols -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -14,6 +13,7 @@
#ifndef LLVM_EXECUTIONENGINE_ORC_SYMBOLSTRINGPOOL_H
#define LLVM_EXECUTIONENGINE_ORC_SYMBOLSTRINGPOOL_H
+#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/StringMap.h"
#include <atomic>
#include <mutex>
@@ -49,10 +49,13 @@
/// Pointer to a pooled string representing a symbol name.
class SymbolStringPtr {
friend class SymbolStringPool;
+ friend struct DenseMapInfo<SymbolStringPtr>;
friend bool operator==(const SymbolStringPtr &LHS,
const SymbolStringPtr &RHS);
friend bool operator<(const SymbolStringPtr &LHS, const SymbolStringPtr &RHS);
+ static SymbolStringPool::PoolMapEntry Tombstone;
+
public:
SymbolStringPtr() = default;
SymbolStringPtr(const SymbolStringPtr &Other)
@@ -142,6 +145,29 @@
}
} // end namespace orc
+
+template <>
+struct DenseMapInfo<orc::SymbolStringPtr> {
+
+ static orc::SymbolStringPtr getEmptyKey() {
+ return orc::SymbolStringPtr();
+ }
+
+ static orc::SymbolStringPtr getTombstoneKey() {
+ return orc::SymbolStringPtr(&orc::SymbolStringPtr::Tombstone);
+ }
+
+ static unsigned getHashValue(orc::SymbolStringPtr V) {
+ uintptr_t IV = reinterpret_cast<uintptr_t>(V.S);
+ return unsigned(IV) ^ unsigned(IV >> 9);
+ }
+
+ static bool isEqual(const orc::SymbolStringPtr &LHS,
+ const orc::SymbolStringPtr &RHS) {
+ return LHS.S == RHS.S;
+ }
+};
+
} // end namespace llvm
#endif // LLVM_EXECUTIONENGINE_ORC_SYMBOLSTRINGPOOL_H
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/ThreadSafeModule.h b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/ThreadSafeModule.h
index bf946de..5787500 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/Orc/ThreadSafeModule.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/Orc/ThreadSafeModule.h
@@ -1,9 +1,8 @@
//===----------- ThreadSafeModule.h -- Layer interfaces ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/OrcMCJITReplacement.h b/linux-x64/clang/include/llvm/ExecutionEngine/OrcMCJITReplacement.h
index 4cd5648..6cca193 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/OrcMCJITReplacement.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/OrcMCJITReplacement.h
@@ -1,9 +1,8 @@
//===---- OrcMCJITReplacement.h - Orc-based MCJIT replacement ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/RTDyldMemoryManager.h b/linux-x64/clang/include/llvm/ExecutionEngine/RTDyldMemoryManager.h
index 23d651f..c7c87ec 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/RTDyldMemoryManager.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/RTDyldMemoryManager.h
@@ -1,9 +1,8 @@
//===-- RTDyldMemoryManager.cpp - Memory manager for MC-JIT -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/RuntimeDyld.h b/linux-x64/clang/include/llvm/ExecutionEngine/RuntimeDyld.h
index e419ee0..2af9203 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/RuntimeDyld.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/RuntimeDyld.h
@@ -1,9 +1,8 @@
//===- RuntimeDyld.h - Run-time dynamic linker for MC-JIT -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/RuntimeDyldChecker.h b/linux-x64/clang/include/llvm/ExecutionEngine/RuntimeDyldChecker.h
index 13fc5fd..ee925c2 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/RuntimeDyldChecker.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/RuntimeDyldChecker.h
@@ -1,9 +1,8 @@
//===---- RuntimeDyldChecker.h - RuntimeDyld tester framework -----*- C++ -*-=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/ExecutionEngine/SectionMemoryManager.h b/linux-x64/clang/include/llvm/ExecutionEngine/SectionMemoryManager.h
index 3cf131c..d731642 100644
--- a/linux-x64/clang/include/llvm/ExecutionEngine/SectionMemoryManager.h
+++ b/linux-x64/clang/include/llvm/ExecutionEngine/SectionMemoryManager.h
@@ -1,9 +1,8 @@
//===- SectionMemoryManager.h - Memory manager for MCJIT/RtDyld -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/FuzzMutate/FuzzerCLI.h b/linux-x64/clang/include/llvm/FuzzMutate/FuzzerCLI.h
index 3333e96..2a16e43 100644
--- a/linux-x64/clang/include/llvm/FuzzMutate/FuzzerCLI.h
+++ b/linux-x64/clang/include/llvm/FuzzMutate/FuzzerCLI.h
@@ -1,9 +1,8 @@
//===-- FuzzerCLI.h - Common logic for CLIs of fuzzers ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/FuzzMutate/IRMutator.h b/linux-x64/clang/include/llvm/FuzzMutate/IRMutator.h
index 9aa9d6d..40a1ce8 100644
--- a/linux-x64/clang/include/llvm/FuzzMutate/IRMutator.h
+++ b/linux-x64/clang/include/llvm/FuzzMutate/IRMutator.h
@@ -1,9 +1,8 @@
//===-- IRMutator.h - Mutation engine for fuzzing IR ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/FuzzMutate/OpDescriptor.h b/linux-x64/clang/include/llvm/FuzzMutate/OpDescriptor.h
index dd30fda..d6c98cd 100644
--- a/linux-x64/clang/include/llvm/FuzzMutate/OpDescriptor.h
+++ b/linux-x64/clang/include/llvm/FuzzMutate/OpDescriptor.h
@@ -1,9 +1,8 @@
//===-- OpDescriptor.h ------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/FuzzMutate/Operations.h b/linux-x64/clang/include/llvm/FuzzMutate/Operations.h
index 668bd95..2eb4c38 100644
--- a/linux-x64/clang/include/llvm/FuzzMutate/Operations.h
+++ b/linux-x64/clang/include/llvm/FuzzMutate/Operations.h
@@ -1,9 +1,8 @@
//===-- Operations.h - ----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/FuzzMutate/Random.h b/linux-x64/clang/include/llvm/FuzzMutate/Random.h
index 3a5f46a..615b15f 100644
--- a/linux-x64/clang/include/llvm/FuzzMutate/Random.h
+++ b/linux-x64/clang/include/llvm/FuzzMutate/Random.h
@@ -1,9 +1,8 @@
//===--- Random.h - Utilities for random sampling -------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/FuzzMutate/RandomIRBuilder.h b/linux-x64/clang/include/llvm/FuzzMutate/RandomIRBuilder.h
index 5cf3f0b..f3b6097 100644
--- a/linux-x64/clang/include/llvm/FuzzMutate/RandomIRBuilder.h
+++ b/linux-x64/clang/include/llvm/FuzzMutate/RandomIRBuilder.h
@@ -1,9 +1,8 @@
-//===-- Mutator.h - Utils for randomly mutation IR --------------*- C++ -*-===//
+//===- RandomIRBuilder.h - Utils for randomly mutation IR -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/Argument.h b/linux-x64/clang/include/llvm/IR/Argument.h
index 497dca4..2de5c71 100644
--- a/linux-x64/clang/include/llvm/IR/Argument.h
+++ b/linux-x64/clang/include/llvm/IR/Argument.h
@@ -1,9 +1,8 @@
//===-- llvm/Argument.h - Definition of the Argument class ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/AssemblyAnnotationWriter.h b/linux-x64/clang/include/llvm/IR/AssemblyAnnotationWriter.h
index 6e1f5c4..3fd3c57 100644
--- a/linux-x64/clang/include/llvm/IR/AssemblyAnnotationWriter.h
+++ b/linux-x64/clang/include/llvm/IR/AssemblyAnnotationWriter.h
@@ -1,9 +1,8 @@
//===-- AssemblyAnnotationWriter.h - Annotation .ll files -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/Attributes.h b/linux-x64/clang/include/llvm/IR/Attributes.h
index 5aaaaf3..8d7f401 100644
--- a/linux-x64/clang/include/llvm/IR/Attributes.h
+++ b/linux-x64/clang/include/llvm/IR/Attributes.h
@@ -1,9 +1,8 @@
//===- llvm/Attributes.h - Container for Attributes -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -230,29 +229,33 @@
/// Add an argument attribute. Returns a new set because attribute sets are
/// immutable.
- AttributeSet addAttribute(LLVMContext &C, Attribute::AttrKind Kind) const;
+ LLVM_NODISCARD AttributeSet addAttribute(LLVMContext &C,
+ Attribute::AttrKind Kind) const;
/// Add a target-dependent attribute. Returns a new set because attribute sets
/// are immutable.
- AttributeSet addAttribute(LLVMContext &C, StringRef Kind,
- StringRef Value = StringRef()) const;
+ LLVM_NODISCARD AttributeSet addAttribute(LLVMContext &C, StringRef Kind,
+ StringRef Value = StringRef()) const;
/// Add attributes to the attribute set. Returns a new set because attribute
/// sets are immutable.
- AttributeSet addAttributes(LLVMContext &C, AttributeSet AS) const;
+ LLVM_NODISCARD AttributeSet addAttributes(LLVMContext &C,
+ AttributeSet AS) const;
/// Remove the specified attribute from this set. Returns a new set because
/// attribute sets are immutable.
- AttributeSet removeAttribute(LLVMContext &C, Attribute::AttrKind Kind) const;
+ LLVM_NODISCARD AttributeSet removeAttribute(LLVMContext &C,
+ Attribute::AttrKind Kind) const;
/// Remove the specified attribute from this set. Returns a new set because
/// attribute sets are immutable.
- AttributeSet removeAttribute(LLVMContext &C, StringRef Kind) const;
+ LLVM_NODISCARD AttributeSet removeAttribute(LLVMContext &C,
+ StringRef Kind) const;
/// Remove the specified attributes from this set. Returns a new set because
/// attribute sets are immutable.
- AttributeSet removeAttributes(LLVMContext &C,
- const AttrBuilder &AttrsToRemove) const;
+ LLVM_NODISCARD AttributeSet
+ removeAttributes(LLVMContext &C, const AttrBuilder &AttrsToRemove) const;
/// Return the number of attributes in this set.
unsigned getNumAttributes() const;
@@ -375,133 +378,140 @@
/// Add an attribute to the attribute set at the given index.
/// Returns a new list because attribute lists are immutable.
- AttributeList addAttribute(LLVMContext &C, unsigned Index,
- Attribute::AttrKind Kind) const;
+ LLVM_NODISCARD AttributeList addAttribute(LLVMContext &C, unsigned Index,
+ Attribute::AttrKind Kind) const;
/// Add an attribute to the attribute set at the given index.
/// Returns a new list because attribute lists are immutable.
- AttributeList addAttribute(LLVMContext &C, unsigned Index, StringRef Kind,
- StringRef Value = StringRef()) const;
+ LLVM_NODISCARD AttributeList
+ addAttribute(LLVMContext &C, unsigned Index, StringRef Kind,
+ StringRef Value = StringRef()) const;
/// Add an attribute to the attribute set at the given index.
/// Returns a new list because attribute lists are immutable.
- AttributeList addAttribute(LLVMContext &C, unsigned Index, Attribute A) const;
+ LLVM_NODISCARD AttributeList addAttribute(LLVMContext &C, unsigned Index,
+ Attribute A) const;
/// Add attributes to the attribute set at the given index.
/// Returns a new list because attribute lists are immutable.
- AttributeList addAttributes(LLVMContext &C, unsigned Index,
- const AttrBuilder &B) const;
+ LLVM_NODISCARD AttributeList addAttributes(LLVMContext &C, unsigned Index,
+ const AttrBuilder &B) const;
/// Add an argument attribute to the list. Returns a new list because
/// attribute lists are immutable.
- AttributeList addParamAttribute(LLVMContext &C, unsigned ArgNo,
- Attribute::AttrKind Kind) const {
+ LLVM_NODISCARD AttributeList addParamAttribute(
+ LLVMContext &C, unsigned ArgNo, Attribute::AttrKind Kind) const {
return addAttribute(C, ArgNo + FirstArgIndex, Kind);
}
/// Add an argument attribute to the list. Returns a new list because
/// attribute lists are immutable.
- AttributeList addParamAttribute(LLVMContext &C, unsigned ArgNo,
- StringRef Kind,
- StringRef Value = StringRef()) const {
+ LLVM_NODISCARD AttributeList
+ addParamAttribute(LLVMContext &C, unsigned ArgNo, StringRef Kind,
+ StringRef Value = StringRef()) const {
return addAttribute(C, ArgNo + FirstArgIndex, Kind, Value);
}
/// Add an attribute to the attribute list at the given arg indices. Returns a
/// new list because attribute lists are immutable.
- AttributeList addParamAttribute(LLVMContext &C, ArrayRef<unsigned> ArgNos,
- Attribute A) const;
+ LLVM_NODISCARD AttributeList addParamAttribute(LLVMContext &C,
+ ArrayRef<unsigned> ArgNos,
+ Attribute A) const;
/// Add an argument attribute to the list. Returns a new list because
/// attribute lists are immutable.
- AttributeList addParamAttributes(LLVMContext &C, unsigned ArgNo,
- const AttrBuilder &B) const {
+ LLVM_NODISCARD AttributeList addParamAttributes(LLVMContext &C,
+ unsigned ArgNo,
+ const AttrBuilder &B) const {
return addAttributes(C, ArgNo + FirstArgIndex, B);
}
/// Remove the specified attribute at the specified index from this
/// attribute list. Returns a new list because attribute lists are immutable.
- AttributeList removeAttribute(LLVMContext &C, unsigned Index,
- Attribute::AttrKind Kind) const;
+ LLVM_NODISCARD AttributeList removeAttribute(LLVMContext &C, unsigned Index,
+ Attribute::AttrKind Kind) const;
/// Remove the specified attribute at the specified index from this
/// attribute list. Returns a new list because attribute lists are immutable.
- AttributeList removeAttribute(LLVMContext &C, unsigned Index,
- StringRef Kind) const;
+ LLVM_NODISCARD AttributeList removeAttribute(LLVMContext &C, unsigned Index,
+ StringRef Kind) const;
/// Remove the specified attributes at the specified index from this
/// attribute list. Returns a new list because attribute lists are immutable.
- AttributeList removeAttributes(LLVMContext &C, unsigned Index,
- const AttrBuilder &AttrsToRemove) const;
+ LLVM_NODISCARD AttributeList removeAttributes(
+ LLVMContext &C, unsigned Index, const AttrBuilder &AttrsToRemove) const;
/// Remove all attributes at the specified index from this
/// attribute list. Returns a new list because attribute lists are immutable.
- AttributeList removeAttributes(LLVMContext &C, unsigned Index) const;
+ LLVM_NODISCARD AttributeList removeAttributes(LLVMContext &C,
+ unsigned Index) const;
/// Remove the specified attribute at the specified arg index from this
/// attribute list. Returns a new list because attribute lists are immutable.
- AttributeList removeParamAttribute(LLVMContext &C, unsigned ArgNo,
- Attribute::AttrKind Kind) const {
+ LLVM_NODISCARD AttributeList removeParamAttribute(
+ LLVMContext &C, unsigned ArgNo, Attribute::AttrKind Kind) const {
return removeAttribute(C, ArgNo + FirstArgIndex, Kind);
}
/// Remove the specified attribute at the specified arg index from this
/// attribute list. Returns a new list because attribute lists are immutable.
- AttributeList removeParamAttribute(LLVMContext &C, unsigned ArgNo,
- StringRef Kind) const {
+ LLVM_NODISCARD AttributeList removeParamAttribute(LLVMContext &C,
+ unsigned ArgNo,
+ StringRef Kind) const {
return removeAttribute(C, ArgNo + FirstArgIndex, Kind);
}
/// Remove the specified attribute at the specified arg index from this
/// attribute list. Returns a new list because attribute lists are immutable.
- AttributeList removeParamAttributes(LLVMContext &C, unsigned ArgNo,
- const AttrBuilder &AttrsToRemove) const {
+ LLVM_NODISCARD AttributeList removeParamAttributes(
+ LLVMContext &C, unsigned ArgNo, const AttrBuilder &AttrsToRemove) const {
return removeAttributes(C, ArgNo + FirstArgIndex, AttrsToRemove);
}
/// Remove all attributes at the specified arg index from this
/// attribute list. Returns a new list because attribute lists are immutable.
- AttributeList removeParamAttributes(LLVMContext &C, unsigned ArgNo) const {
+ LLVM_NODISCARD AttributeList removeParamAttributes(LLVMContext &C,
+ unsigned ArgNo) const {
return removeAttributes(C, ArgNo + FirstArgIndex);
}
/// \brief Add the dereferenceable attribute to the attribute set at the given
/// index. Returns a new list because attribute lists are immutable.
- AttributeList addDereferenceableAttr(LLVMContext &C, unsigned Index,
- uint64_t Bytes) const;
+ LLVM_NODISCARD AttributeList addDereferenceableAttr(LLVMContext &C,
+ unsigned Index,
+ uint64_t Bytes) const;
/// \brief Add the dereferenceable attribute to the attribute set at the given
/// arg index. Returns a new list because attribute lists are immutable.
- AttributeList addDereferenceableParamAttr(LLVMContext &C, unsigned ArgNo,
- uint64_t Bytes) const {
+ LLVM_NODISCARD AttributeList addDereferenceableParamAttr(
+ LLVMContext &C, unsigned ArgNo, uint64_t Bytes) const {
return addDereferenceableAttr(C, ArgNo + FirstArgIndex, Bytes);
}
/// Add the dereferenceable_or_null attribute to the attribute set at
/// the given index. Returns a new list because attribute lists are immutable.
- AttributeList addDereferenceableOrNullAttr(LLVMContext &C, unsigned Index,
- uint64_t Bytes) const;
+ LLVM_NODISCARD AttributeList addDereferenceableOrNullAttr(
+ LLVMContext &C, unsigned Index, uint64_t Bytes) const;
/// Add the dereferenceable_or_null attribute to the attribute set at
/// the given arg index. Returns a new list because attribute lists are
/// immutable.
- AttributeList addDereferenceableOrNullParamAttr(LLVMContext &C,
- unsigned ArgNo,
- uint64_t Bytes) const {
+ LLVM_NODISCARD AttributeList addDereferenceableOrNullParamAttr(
+ LLVMContext &C, unsigned ArgNo, uint64_t Bytes) const {
return addDereferenceableOrNullAttr(C, ArgNo + FirstArgIndex, Bytes);
}
/// Add the allocsize attribute to the attribute set at the given index.
/// Returns a new list because attribute lists are immutable.
- AttributeList addAllocSizeAttr(LLVMContext &C, unsigned Index,
- unsigned ElemSizeArg,
- const Optional<unsigned> &NumElemsArg);
+ LLVM_NODISCARD AttributeList
+ addAllocSizeAttr(LLVMContext &C, unsigned Index, unsigned ElemSizeArg,
+ const Optional<unsigned> &NumElemsArg);
/// Add the allocsize attribute to the attribute set at the given arg index.
/// Returns a new list because attribute lists are immutable.
- AttributeList addAllocSizeParamAttr(LLVMContext &C, unsigned ArgNo,
- unsigned ElemSizeArg,
- const Optional<unsigned> &NumElemsArg) {
+ LLVM_NODISCARD AttributeList
+ addAllocSizeParamAttr(LLVMContext &C, unsigned ArgNo, unsigned ElemSizeArg,
+ const Optional<unsigned> &NumElemsArg) {
return addAllocSizeAttr(C, ArgNo + FirstArgIndex, ElemSizeArg, NumElemsArg);
}
diff --git a/linux-x64/clang/include/llvm/IR/AutoUpgrade.h b/linux-x64/clang/include/llvm/IR/AutoUpgrade.h
index 8cf574c..9900319 100644
--- a/linux-x64/clang/include/llvm/IR/AutoUpgrade.h
+++ b/linux-x64/clang/include/llvm/IR/AutoUpgrade.h
@@ -1,9 +1,8 @@
//===- AutoUpgrade.h - AutoUpgrade Helpers ----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/BasicBlock.h b/linux-x64/clang/include/llvm/IR/BasicBlock.h
index 1ee1997..fd9efb8 100644
--- a/linux-x64/clang/include/llvm/IR/BasicBlock.h
+++ b/linux-x64/clang/include/llvm/IR/BasicBlock.h
@@ -1,9 +1,8 @@
//===- llvm/BasicBlock.h - Represent a basic block in the VM ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -38,7 +37,6 @@
class LLVMContext;
class Module;
class PHINode;
-class TerminatorInst;
class ValueSymbolTable;
/// LLVM Basic Block Representation
@@ -50,12 +48,12 @@
/// represents a label to which a branch can jump.
///
/// A well formed basic block is formed of a list of non-terminating
-/// instructions followed by a single TerminatorInst instruction.
-/// TerminatorInst's may not occur in the middle of basic blocks, and must
-/// terminate the blocks. The BasicBlock class allows malformed basic blocks to
-/// occur because it may be useful in the intermediate stage of constructing or
-/// modifying a program. However, the verifier will ensure that basic blocks
-/// are "well formed".
+/// instructions followed by a single terminator instruction. Terminator
+/// instructions may not occur in the middle of basic blocks, and must terminate
+/// the blocks. The BasicBlock class allows malformed basic blocks to occur
+/// because it may be useful in the intermediate stage of constructing or
+/// modifying a program. However, the verifier will ensure that basic blocks are
+/// "well formed".
class BasicBlock final : public Value, // Basic blocks are data objects also
public ilist_node_with_parent<BasicBlock, Function> {
public:
@@ -120,10 +118,10 @@
/// Returns the terminator instruction if the block is well formed or null
/// if the block is not well formed.
- const TerminatorInst *getTerminator() const LLVM_READONLY;
- TerminatorInst *getTerminator() {
- return const_cast<TerminatorInst *>(
- static_cast<const BasicBlock *>(this)->getTerminator());
+ const Instruction *getTerminator() const LLVM_READONLY;
+ Instruction *getTerminator() {
+ return const_cast<Instruction *>(
+ static_cast<const BasicBlock *>(this)->getTerminator());
}
/// Returns the call instruction calling \@llvm.experimental.deoptimize
@@ -238,6 +236,12 @@
static_cast<const BasicBlock *>(this)->getUniquePredecessor());
}
+ /// Return true if this block has exactly N predecessors.
+ bool hasNPredecessors(unsigned N) const;
+
+ /// Return true if this block has N predecessors or more.
+ bool hasNPredecessorsOrMore(unsigned N) const;
+
/// Return the successor of this block if it has a single successor.
/// Otherwise return a null pointer.
///
@@ -358,7 +362,7 @@
/// This is actually not used to update the Predecessor list, but is actually
/// used to update the PHI nodes that reside in the block. Note that this
/// should be called while the predecessor still refers to this block.
- void removePredecessor(BasicBlock *Pred, bool DontDeleteUselessPHIs = false);
+ void removePredecessor(BasicBlock *Pred, bool KeepOneInputPHIs = false);
bool canSplitPredecessors() const;
diff --git a/linux-x64/clang/include/llvm/IR/CFG.h b/linux-x64/clang/include/llvm/IR/CFG.h
index fd384ef..55aff71 100644
--- a/linux-x64/clang/include/llvm/IR/CFG.h
+++ b/linux-x64/clang/include/llvm/IR/CFG.h
@@ -1,9 +1,8 @@
//===- CFG.h ----------------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -73,7 +72,7 @@
inline reference operator*() const {
assert(!It.atEnd() && "pred_iterator out of range!");
- return cast<TerminatorInst>(*It)->getParent();
+ return cast<Instruction>(*It)->getParent();
}
inline pointer *operator->() const { return &operator*(); }
@@ -117,6 +116,8 @@
inline bool pred_empty(const BasicBlock *BB) {
return pred_begin(BB) == pred_end(BB);
}
+/// Get the number of predecessors of \p BB. This is a linear time operation.
+/// Use \ref BasicBlock::hasNPredecessors() or hasNPredecessorsOrMore if able.
inline unsigned pred_size(const BasicBlock *BB) {
return std::distance(pred_begin(BB), pred_end(BB));
}
@@ -236,10 +237,6 @@
}
};
-template <typename T, typename U> struct isPodLike<SuccIterator<T, U>> {
- static const bool value = isPodLike<T>::value;
-};
-
using succ_iterator = SuccIterator<Instruction, BasicBlock>;
using succ_const_iterator = SuccIterator<const Instruction, const BasicBlock>;
using succ_range = iterator_range<succ_iterator>;
diff --git a/linux-x64/clang/include/llvm/IR/CFGDiff.h b/linux-x64/clang/include/llvm/IR/CFGDiff.h
index da4373f..57b62dd 100644
--- a/linux-x64/clang/include/llvm/IR/CFGDiff.h
+++ b/linux-x64/clang/include/llvm/IR/CFGDiff.h
@@ -1,9 +1,8 @@
//===- CFGDiff.h - Define a CFG snapshot. -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/CallSite.h b/linux-x64/clang/include/llvm/IR/CallSite.h
index 2162ccb..1454874 100644
--- a/linux-x64/clang/include/llvm/IR/CallSite.h
+++ b/linux-x64/clang/include/llvm/IR/CallSite.h
@@ -1,15 +1,14 @@
//===- CallSite.h - Abstract Call & Invoke instrs ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
// This file defines the CallSite class, which is a handy wrapper for code that
-// wants to treat Call and Invoke instructions in a generic way. When in non-
-// mutation context (e.g. an analysis) ImmutableCallSite should be used.
+// wants to treat Call, Invoke and CallBr instructions in a generic way. When
+// in non-mutation context (e.g. an analysis) ImmutableCallSite should be used.
// Finally, when some degree of customization is necessary between these two
// extremes, CallSiteBase<> can be supplied with fine-tuned parameters.
//
@@ -18,7 +17,7 @@
// They are efficiently copyable, assignable and constructable, with cost
// equivalent to copying a pointer (notice that they have only a single data
// member). The internal representation carries a flag which indicates which of
-// the two variants is enclosed. This allows for cheaper checks when various
+// the three variants is enclosed. This allows for cheaper checks when various
// accessors of CallSite are employed.
//
//===----------------------------------------------------------------------===//
@@ -49,45 +48,50 @@
enum ID : unsigned;
}
-template <typename FunTy = const Function,
- typename BBTy = const BasicBlock,
- typename ValTy = const Value,
- typename UserTy = const User,
- typename UseTy = const Use,
- typename InstrTy = const Instruction,
+template <typename FunTy = const Function, typename BBTy = const BasicBlock,
+ typename ValTy = const Value, typename UserTy = const User,
+ typename UseTy = const Use, typename InstrTy = const Instruction,
typename CallTy = const CallInst,
typename InvokeTy = const InvokeInst,
+ typename CallBrTy = const CallBrInst,
typename IterTy = User::const_op_iterator>
class CallSiteBase {
protected:
- PointerIntPair<InstrTy*, 1, bool> I;
+ PointerIntPair<InstrTy *, 2, int> I;
CallSiteBase() = default;
- CallSiteBase(CallTy *CI) : I(CI, true) { assert(CI); }
- CallSiteBase(InvokeTy *II) : I(II, false) { assert(II); }
+ CallSiteBase(CallTy *CI) : I(CI, 1) { assert(CI); }
+ CallSiteBase(InvokeTy *II) : I(II, 0) { assert(II); }
+ CallSiteBase(CallBrTy *CBI) : I(CBI, 2) { assert(CBI); }
explicit CallSiteBase(ValTy *II) { *this = get(II); }
private:
/// This static method is like a constructor. It will create an appropriate
- /// call site for a Call or Invoke instruction, but it can also create a null
- /// initialized CallSiteBase object for something which is NOT a call site.
+ /// call site for a Call, Invoke or CallBr instruction, but it can also create
+ /// a null initialized CallSiteBase object for something which is NOT a call
+ /// site.
static CallSiteBase get(ValTy *V) {
if (InstrTy *II = dyn_cast<InstrTy>(V)) {
if (II->getOpcode() == Instruction::Call)
return CallSiteBase(static_cast<CallTy*>(II));
- else if (II->getOpcode() == Instruction::Invoke)
+ if (II->getOpcode() == Instruction::Invoke)
return CallSiteBase(static_cast<InvokeTy*>(II));
+ if (II->getOpcode() == Instruction::CallBr)
+ return CallSiteBase(static_cast<CallBrTy *>(II));
}
return CallSiteBase();
}
public:
- /// Return true if a CallInst is enclosed. Note that !isCall() does not mean
- /// an InvokeInst is enclosed. It may also signify a NULL instruction pointer.
- bool isCall() const { return I.getInt(); }
+ /// Return true if a CallInst is enclosed.
+ bool isCall() const { return I.getInt() == 1; }
- /// Return true if a InvokeInst is enclosed.
- bool isInvoke() const { return getInstruction() && !I.getInt(); }
+ /// Return true if a InvokeInst is enclosed. !I.getInt() may also signify a
+ /// NULL instruction pointer, so check that.
+ bool isInvoke() const { return getInstruction() && I.getInt() == 0; }
+
+ /// Return true if a CallBrInst is enclosed.
+ bool isCallBr() const { return I.getInt() == 2; }
InstrTy *getInstruction() const { return I.getPointer(); }
InstrTy *operator->() const { return I.getPointer(); }
@@ -98,7 +102,7 @@
/// Return the pointer to function that is being called.
ValTy *getCalledValue() const {
- assert(getInstruction() && "Not a call or invoke instruction!");
+ assert(getInstruction() && "Not a call, invoke or callbr instruction!");
return *getCallee();
}
@@ -115,16 +119,19 @@
return false;
if (isa<FunTy>(V) || isa<Constant>(V))
return false;
- if (const CallInst *CI = dyn_cast<CallInst>(getInstruction())) {
- if (CI->isInlineAsm())
+ if (const CallBase *CB = dyn_cast<CallBase>(getInstruction()))
+ if (CB->isInlineAsm())
return false;
- }
return true;
}
- /// Set the callee to the specified value.
+ /// Set the callee to the specified value. Unlike the function of the same
+ /// name on CallBase, does not modify the type!
void setCalledFunction(Value *V) {
- assert(getInstruction() && "Not a call or invoke instruction!");
+ assert(getInstruction() && "Not a call, callbr, or invoke instruction!");
+ assert(cast<PointerType>(V->getType())->getElementType() ==
+ cast<CallBase>(getInstruction())->getFunctionType() &&
+ "New callee type does not match FunctionType on call");
*getCallee() = V;
}
@@ -189,7 +196,7 @@
}
void setArgument(unsigned ArgNo, Value* newVal) {
- assert(getInstruction() && "Not a call or invoke instruction!");
+ assert(getInstruction() && "Not a call, invoke or callbr instruction!");
assert(arg_begin() + ArgNo < arg_end() && "Argument # out of range!");
getInstruction()->setOperand(ArgNo, newVal);
}
@@ -203,7 +210,7 @@
/// Given a use for an argument, get the argument number that corresponds to
/// it.
unsigned getArgumentNo(const Use *U) const {
- assert(getInstruction() && "Not a call or invoke instruction!");
+ assert(getInstruction() && "Not a call, invoke or callbr instruction!");
assert(isArgOperand(U) && "Argument # out of range!");
return U - arg_begin();
}
@@ -227,7 +234,7 @@
/// Given a use for a data operand, get the data operand number that
/// corresponds to it.
unsigned getDataOperandNo(const Use *U) const {
- assert(getInstruction() && "Not a call or invoke instruction!");
+ assert(getInstruction() && "Not a call, invoke or callbr instruction!");
assert(isDataOperand(U) && "Data operand # out of range!");
return U - data_operands_begin();
}
@@ -237,18 +244,19 @@
using data_operand_iterator = IterTy;
/// data_operands_begin/data_operands_end - Return iterators iterating over
- /// the call / invoke argument list and bundle operands. For invokes, this is
- /// the set of instruction operands except the invoke target and the two
- /// successor blocks; and for calls this is the set of instruction operands
- /// except the call target.
+ /// the call / invoke / callbr argument list and bundle operands. For invokes,
+ /// this is the set of instruction operands except the invoke target and the
+ /// two successor blocks; for calls this is the set of instruction operands
+ /// except the call target; for callbrs the number of labels to skip must be
+ /// determined first.
IterTy data_operands_begin() const {
assert(getInstruction() && "Not a call or invoke instruction!");
- return (*this)->op_begin();
+ return cast<CallBase>(getInstruction())->data_operands_begin();
}
IterTy data_operands_end() const {
assert(getInstruction() && "Not a call or invoke instruction!");
- return (*this)->op_end() - (isCall() ? 1 : 3);
+ return cast<CallBase>(getInstruction())->data_operands_end();
}
iterator_range<IterTy> data_ops() const {
return make_range(data_operands_begin(), data_operands_end());
@@ -277,17 +285,19 @@
return isCall() && cast<CallInst>(getInstruction())->isTailCall();
}
-#define CALLSITE_DELEGATE_GETTER(METHOD) \
- InstrTy *II = getInstruction(); \
- return isCall() \
- ? cast<CallInst>(II)->METHOD \
- : cast<InvokeInst>(II)->METHOD
+#define CALLSITE_DELEGATE_GETTER(METHOD) \
+ InstrTy *II = getInstruction(); \
+ return isCall() ? cast<CallInst>(II)->METHOD \
+ : isCallBr() ? cast<CallBrInst>(II)->METHOD \
+ : cast<InvokeInst>(II)->METHOD
-#define CALLSITE_DELEGATE_SETTER(METHOD) \
- InstrTy *II = getInstruction(); \
- if (isCall()) \
- cast<CallInst>(II)->METHOD; \
- else \
+#define CALLSITE_DELEGATE_SETTER(METHOD) \
+ InstrTy *II = getInstruction(); \
+ if (isCall()) \
+ cast<CallInst>(II)->METHOD; \
+ else if (isCallBr()) \
+ cast<CallBrInst>(II)->METHOD; \
+ else \
cast<InvokeInst>(II)->METHOD
unsigned getNumArgOperands() const {
@@ -303,9 +313,7 @@
}
bool isInlineAsm() const {
- if (isCall())
- return cast<CallInst>(getInstruction())->isInlineAsm();
- return false;
+ return cast<CallBase>(getInstruction())->isInlineAsm();
}
/// Get the calling convention of the call.
@@ -389,10 +397,10 @@
/// Return true if the data operand at index \p i directly or indirectly has
/// the attribute \p A.
///
- /// Normal call or invoke arguments have per operand attributes, as specified
- /// in the attribute set attached to this instruction, while operand bundle
- /// operands may have some attributes implied by the type of its containing
- /// operand bundle.
+ /// Normal call, invoke or callbr arguments have per operand attributes, as
+ /// specified in the attribute set attached to this instruction, while operand
+ /// bundle operands may have some attributes implied by the type of its
+ /// containing operand bundle.
bool dataOperandHasImpliedAttr(unsigned i, Attribute::AttrKind Kind) const {
CALLSITE_DELEGATE_GETTER(dataOperandHasImpliedAttr(i, Kind));
}
@@ -580,13 +588,9 @@
#undef CALLSITE_DELEGATE_SETTER
void getOperandBundlesAsDefs(SmallVectorImpl<OperandBundleDef> &Defs) const {
- const Instruction *II = getInstruction();
// Since this is actually a getter that "looks like" a setter, don't use the
// above macros to avoid confusion.
- if (isCall())
- cast<CallInst>(II)->getOperandBundlesAsDefs(Defs);
- else
- cast<InvokeInst>(II)->getOperandBundlesAsDefs(Defs);
+ cast<CallBase>(getInstruction())->getOperandBundlesAsDefs(Defs);
}
/// Determine whether this data operand is not captured.
@@ -656,21 +660,19 @@
private:
IterTy getCallee() const {
- if (isCall()) // Skip Callee
- return cast<CallInst>(getInstruction())->op_end() - 1;
- else // Skip BB, BB, Callee
- return cast<InvokeInst>(getInstruction())->op_end() - 3;
+ return cast<CallBase>(getInstruction())->op_end() - 1;
}
};
class CallSite : public CallSiteBase<Function, BasicBlock, Value, User, Use,
Instruction, CallInst, InvokeInst,
- User::op_iterator> {
+ CallBrInst, User::op_iterator> {
public:
CallSite() = default;
CallSite(CallSiteBase B) : CallSiteBase(B) {}
CallSite(CallInst *CI) : CallSiteBase(CI) {}
CallSite(InvokeInst *II) : CallSiteBase(II) {}
+ CallSite(CallBrInst *CBI) : CallSiteBase(CBI) {}
explicit CallSite(Instruction *II) : CallSiteBase(II) {}
explicit CallSite(Value *V) : CallSiteBase(V) {}
@@ -686,6 +688,182 @@
User::op_iterator getCallee() const;
};
+/// AbstractCallSite
+///
+/// An abstract call site is a wrapper that allows to treat direct,
+/// indirect, and callback calls the same. If an abstract call site
+/// represents a direct or indirect call site it behaves like a stripped
+/// down version of a normal call site object. The abstract call site can
+/// also represent a callback call, thus the fact that the initially
+/// called function (=broker) may invoke a third one (=callback callee).
+/// In this case, the abstract call site hides the middle man, hence the
+/// broker function. The result is a representation of the callback call,
+/// inside the broker, but in the context of the original call to the broker.
+///
+/// There are up to three functions involved when we talk about callback call
+/// sites. The caller (1), which invokes the broker function. The broker
+/// function (2), that will invoke the callee zero or more times. And finally
+/// the callee (3), which is the target of the callback call.
+///
+/// The abstract call site will handle the mapping from parameters to arguments
+/// depending on the semantic of the broker function. However, it is important
+/// to note that the mapping is often partial. Thus, some arguments of the
+/// call/invoke instruction are mapped to parameters of the callee while others
+/// are not.
+class AbstractCallSite {
+public:
+
+ /// The encoding of a callback with regards to the underlying instruction.
+ struct CallbackInfo {
+
+ /// For direct/indirect calls the parameter encoding is empty. If it is not,
+ /// the abstract call site represents a callback. In that case, the first
+ /// element of the encoding vector represents which argument of the call
+ /// site CS is the callback callee. The remaining elements map parameters
+ /// (identified by their position) to the arguments that will be passed
+ /// through (also identified by position but in the call site instruction).
+ ///
+ /// NOTE that we use LLVM argument numbers (starting at 0) and not
+ /// clang/soruce argument numbers (starting at 1). The -1 entries represent
+ /// unknown values that are passed to the callee.
+ using ParameterEncodingTy = SmallVector<int, 0>;
+ ParameterEncodingTy ParameterEncoding;
+
+ };
+
+private:
+
+ /// The underlying call site:
+ /// caller -> callee, if this is a direct or indirect call site
+ /// caller -> broker function, if this is a callback call site
+ CallSite CS;
+
+ /// The encoding of a callback with regards to the underlying instruction.
+ CallbackInfo CI;
+
+public:
+ /// Sole constructor for abstract call sites (ACS).
+ ///
+ /// An abstract call site can only be constructed through a llvm::Use because
+ /// each operand (=use) of an instruction could potentially be a different
+ /// abstract call site. Furthermore, even if the value of the llvm::Use is the
+ /// same, and the user is as well, the abstract call sites might not be.
+ ///
+ /// If a use is not associated with an abstract call site the constructed ACS
+ /// will evaluate to false if converted to a boolean.
+ ///
+ /// If the use is the callee use of a call or invoke instruction, the
+ /// constructed abstract call site will behave as a llvm::CallSite would.
+ ///
+ /// If the use is not a callee use of a call or invoke instruction, the
+ /// callback metadata is used to determine the argument <-> parameter mapping
+ /// as well as the callee of the abstract call site.
+ AbstractCallSite(const Use *U);
+
+ /// Conversion operator to conveniently check for a valid/initialized ACS.
+ explicit operator bool() const { return (bool)CS; }
+
+ /// Return the underlying instruction.
+ Instruction *getInstruction() const { return CS.getInstruction(); }
+
+ /// Return the call site abstraction for the underlying instruction.
+ CallSite getCallSite() const { return CS; }
+
+ /// Return true if this ACS represents a direct call.
+ bool isDirectCall() const {
+ return !isCallbackCall() && !CS.isIndirectCall();
+ }
+
+ /// Return true if this ACS represents an indirect call.
+ bool isIndirectCall() const {
+ return !isCallbackCall() && CS.isIndirectCall();
+ }
+
+ /// Return true if this ACS represents a callback call.
+ bool isCallbackCall() const {
+ // For a callback call site the callee is ALWAYS stored first in the
+ // transitive values vector. Thus, a non-empty vector indicates a callback.
+ return !CI.ParameterEncoding.empty();
+ }
+
+ /// Return true if @p UI is the use that defines the callee of this ACS.
+ bool isCallee(Value::const_user_iterator UI) const {
+ return isCallee(&UI.getUse());
+ }
+
+ /// Return true if @p U is the use that defines the callee of this ACS.
+ bool isCallee(const Use *U) const {
+ if (isDirectCall())
+ return CS.isCallee(U);
+
+ assert(!CI.ParameterEncoding.empty() &&
+ "Callback without parameter encoding!");
+
+ return (int)CS.getArgumentNo(U) == CI.ParameterEncoding[0];
+ }
+
+ /// Return the number of parameters of the callee.
+ unsigned getNumArgOperands() const {
+ if (isDirectCall())
+ return CS.getNumArgOperands();
+ // Subtract 1 for the callee encoding.
+ return CI.ParameterEncoding.size() - 1;
+ }
+
+ /// Return the operand index of the underlying instruction associated with @p
+ /// Arg.
+ int getCallArgOperandNo(Argument &Arg) const {
+ return getCallArgOperandNo(Arg.getArgNo());
+ }
+
+ /// Return the operand index of the underlying instruction associated with
+ /// the function parameter number @p ArgNo or -1 if there is none.
+ int getCallArgOperandNo(unsigned ArgNo) const {
+ if (isDirectCall())
+ return ArgNo;
+ // Add 1 for the callee encoding.
+ return CI.ParameterEncoding[ArgNo + 1];
+ }
+
+ /// Return the operand of the underlying instruction associated with @p Arg.
+ Value *getCallArgOperand(Argument &Arg) const {
+ return getCallArgOperand(Arg.getArgNo());
+ }
+
+ /// Return the operand of the underlying instruction associated with the
+ /// function parameter number @p ArgNo or nullptr if there is none.
+ Value *getCallArgOperand(unsigned ArgNo) const {
+ if (isDirectCall())
+ return CS.getArgOperand(ArgNo);
+ // Add 1 for the callee encoding.
+ return CI.ParameterEncoding[ArgNo + 1] >= 0
+ ? CS.getArgOperand(CI.ParameterEncoding[ArgNo + 1])
+ : nullptr;
+ }
+
+ /// Return the operand index of the underlying instruction associated with the
+ /// callee of this ACS. Only valid for callback calls!
+ int getCallArgOperandNoForCallee() const {
+ assert(isCallbackCall());
+ assert(CI.ParameterEncoding.size() && CI.ParameterEncoding[0] > 0);
+ return CI.ParameterEncoding[0];
+ }
+
+ /// Return the pointer to function that is being called.
+ Value *getCalledValue() const {
+ if (isDirectCall())
+ return CS.getCalledValue();
+ return CS.getArgOperand(getCallArgOperandNoForCallee());
+ }
+
+ /// Return the function being called if this is a direct call, otherwise
+ /// return null (if it's an indirect call).
+ Function *getCalledFunction() const {
+ Value *V = getCalledValue();
+ return V ? dyn_cast<Function>(V->stripPointerCasts()) : nullptr;
+ }
+};
+
template <> struct DenseMapInfo<CallSite> {
using BaseInfo = DenseMapInfo<decltype(CallSite::I)>;
@@ -716,6 +894,7 @@
ImmutableCallSite() = default;
ImmutableCallSite(const CallInst *CI) : CallSiteBase(CI) {}
ImmutableCallSite(const InvokeInst *II) : CallSiteBase(II) {}
+ ImmutableCallSite(const CallBrInst *CBI) : CallSiteBase(CBI) {}
explicit ImmutableCallSite(const Instruction *II) : CallSiteBase(II) {}
explicit ImmutableCallSite(const Value *V) : CallSiteBase(V) {}
ImmutableCallSite(CallSite CS) : CallSiteBase(CS.getInstruction()) {}
diff --git a/linux-x64/clang/include/llvm/IR/CallingConv.h b/linux-x64/clang/include/llvm/IR/CallingConv.h
index 49c3be9..399c6ad 100644
--- a/linux-x64/clang/include/llvm/IR/CallingConv.h
+++ b/linux-x64/clang/include/llvm/IR/CallingConv.h
@@ -1,9 +1,8 @@
//===- llvm/CallingConv.h - LLVM Calling Conventions ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/Comdat.h b/linux-x64/clang/include/llvm/IR/Comdat.h
index 555121e..f712a16 100644
--- a/linux-x64/clang/include/llvm/IR/Comdat.h
+++ b/linux-x64/clang/include/llvm/IR/Comdat.h
@@ -1,9 +1,8 @@
//===- llvm/IR/Comdat.h - Comdat definitions --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/Constant.h b/linux-x64/clang/include/llvm/IR/Constant.h
index 5fdf0ea..e71ac27 100644
--- a/linux-x64/clang/include/llvm/IR/Constant.h
+++ b/linux-x64/clang/include/llvm/IR/Constant.h
@@ -1,9 +1,8 @@
//===-- llvm/Constant.h - Constant class definition -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -114,7 +113,8 @@
/// For aggregates (struct/array/vector) return the constant that corresponds
/// to the specified element if possible, or null if not. This can return null
- /// if the element index is a ConstantExpr, or if 'this' is a constant expr.
+ /// if the element index is a ConstantExpr, if 'this' is a constant expr or
+ /// if the constant does not fit into an uint64_t.
Constant *getAggregateElement(unsigned Elt) const;
Constant *getAggregateElement(Constant *Elt) const;
diff --git a/linux-x64/clang/include/llvm/IR/ConstantFolder.h b/linux-x64/clang/include/llvm/IR/ConstantFolder.h
index da5bba7..1971cb8 100644
--- a/linux-x64/clang/include/llvm/IR/ConstantFolder.h
+++ b/linux-x64/clang/include/llvm/IR/ConstantFolder.h
@@ -1,9 +1,8 @@
//===- ConstantFolder.h - Constant folding helper ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/ConstantRange.h b/linux-x64/clang/include/llvm/IR/ConstantRange.h
index 1adda32..86c8c30 100644
--- a/linux-x64/clang/include/llvm/IR/ConstantRange.h
+++ b/linux-x64/clang/include/llvm/IR/ConstantRange.h
@@ -1,9 +1,8 @@
//===- ConstantRange.h - Represent a range ----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/Constants.h b/linux-x64/clang/include/llvm/IR/Constants.h
index f9d5ebc..ca56e8b 100644
--- a/linux-x64/clang/include/llvm/IR/Constants.h
+++ b/linux-x64/clang/include/llvm/IR/Constants.h
@@ -1,9 +1,8 @@
//===-- llvm/Constants.h - Constant class subclass definitions --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -290,7 +289,11 @@
static Constant *get(Type* Ty, StringRef Str);
static ConstantFP *get(LLVMContext &Context, const APFloat &V);
- static Constant *getNaN(Type *Ty, bool Negative = false, unsigned type = 0);
+ static Constant *getNaN(Type *Ty, bool Negative = false, uint64_t Payload = 0);
+ static Constant *getQNaN(Type *Ty, bool Negative = false,
+ APInt *Payload = nullptr);
+ static Constant *getSNaN(Type *Ty, bool Negative = false,
+ APInt *Payload = nullptr);
static Constant *getNegativeZero(Type *Ty);
static Constant *getInfinity(Type *Ty, bool Negative = false);
@@ -1114,6 +1117,13 @@
static Constant *getSelect(Constant *C, Constant *V1, Constant *V2,
Type *OnlyIfReducedTy = nullptr);
+ /// get - Return a unary operator constant expression,
+ /// folding if possible.
+ ///
+ /// \param OnlyIfReducedTy see \a getWithOperands() docs.
+ static Constant *get(unsigned Opcode, Constant *C1, unsigned Flags = 0,
+ Type *OnlyIfReducedTy = nullptr);
+
/// get - Return a binary or shift operator constant expression,
/// folding if possible.
///
diff --git a/linux-x64/clang/include/llvm/IR/DIBuilder.h b/linux-x64/clang/include/llvm/IR/DIBuilder.h
index 16b7597..b575632 100644
--- a/linux-x64/clang/include/llvm/IR/DIBuilder.h
+++ b/linux-x64/clang/include/llvm/IR/DIBuilder.h
@@ -1,9 +1,8 @@
//===- DIBuilder.h - Debug Information Builder ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -145,7 +144,8 @@
uint64_t DWOId = 0, bool SplitDebugInlining = true,
bool DebugInfoForProfiling = false,
DICompileUnit::DebugNameTableKind NameTableKind =
- DICompileUnit::DebugNameTableKind::Default);
+ DICompileUnit::DebugNameTableKind::Default,
+ bool RangesBaseAddress = false);
/// Create a file descriptor to hold debugging information for a file.
/// \param Filename File name.
@@ -501,11 +501,11 @@
/// \param Elements Enumeration elements.
/// \param UnderlyingType Underlying type of a C++11/ObjC fixed enum.
/// \param UniqueIdentifier A unique identifier for the enum.
- /// \param IsFixed Boolean flag indicate if this is C++11/ObjC fixed enum.
+ /// \param IsScoped Boolean flag indicate if this is C++11/ObjC 'enum class'.
DICompositeType *createEnumerationType(
DIScope *Scope, StringRef Name, DIFile *File, unsigned LineNumber,
uint64_t SizeInBits, uint32_t AlignInBits, DINodeArray Elements,
- DIType *UnderlyingType, StringRef UniqueIdentifier = "", bool IsFixed = false);
+ DIType *UnderlyingType, StringRef UniqueIdentifier = "", bool IsScoped = false);
/// Create subroutine type.
/// \param ParameterTypes An array of subroutine parameter types. This
@@ -652,29 +652,28 @@
/// \param File File where this variable is defined.
/// \param LineNo Line number.
/// \param Ty Function type.
- /// \param isLocalToUnit True if this function is not externally visible.
- /// \param isDefinition True if this is a function definition.
/// \param ScopeLine Set to the beginning of the scope this starts
/// \param Flags e.g. is this function prototyped or not.
/// These flags are used to emit dwarf attributes.
- /// \param isOptimized True if optimization is ON.
+ /// \param SPFlags Additional flags specific to subprograms.
/// \param TParams Function template parameters.
/// \param ThrownTypes Exception types this function may throw.
- DISubprogram *createFunction(
- DIScope *Scope, StringRef Name, StringRef LinkageName, DIFile *File,
- unsigned LineNo, DISubroutineType *Ty, bool isLocalToUnit,
- bool isDefinition, unsigned ScopeLine,
- DINode::DIFlags Flags = DINode::FlagZero, bool isOptimized = false,
- DITemplateParameterArray TParams = nullptr,
- DISubprogram *Decl = nullptr, DITypeArray ThrownTypes = nullptr);
+ DISubprogram *
+ createFunction(DIScope *Scope, StringRef Name, StringRef LinkageName,
+ DIFile *File, unsigned LineNo, DISubroutineType *Ty,
+ unsigned ScopeLine, DINode::DIFlags Flags = DINode::FlagZero,
+ DISubprogram::DISPFlags SPFlags = DISubprogram::SPFlagZero,
+ DITemplateParameterArray TParams = nullptr,
+ DISubprogram *Decl = nullptr,
+ DITypeArray ThrownTypes = nullptr);
/// Identical to createFunction,
/// except that the resulting DbgNode is meant to be RAUWed.
DISubprogram *createTempFunctionFwdDecl(
DIScope *Scope, StringRef Name, StringRef LinkageName, DIFile *File,
- unsigned LineNo, DISubroutineType *Ty, bool isLocalToUnit,
- bool isDefinition, unsigned ScopeLine,
- DINode::DIFlags Flags = DINode::FlagZero, bool isOptimized = false,
+ unsigned LineNo, DISubroutineType *Ty, unsigned ScopeLine,
+ DINode::DIFlags Flags = DINode::FlagZero,
+ DISubprogram::DISPFlags SPFlags = DISubprogram::SPFlagZero,
DITemplateParameterArray TParams = nullptr,
DISubprogram *Decl = nullptr, DITypeArray ThrownTypes = nullptr);
@@ -686,10 +685,6 @@
/// \param File File where this variable is defined.
/// \param LineNo Line number.
/// \param Ty Function type.
- /// \param isLocalToUnit True if this function is not externally visible..
- /// \param isDefinition True if this is a function definition.
- /// \param Virtuality Attributes describing virtualness. e.g. pure
- /// virtual function.
/// \param VTableIndex Index no of this method in virtual table, or -1u if
/// unrepresentable.
/// \param ThisAdjustment
@@ -698,17 +693,18 @@
/// \param VTableHolder Type that holds vtable.
/// \param Flags e.g. is this function prototyped or not.
/// This flags are used to emit dwarf attributes.
- /// \param isOptimized True if optimization is ON.
+ /// \param SPFlags Additional flags specific to subprograms.
/// \param TParams Function template parameters.
/// \param ThrownTypes Exception types this function may throw.
- DISubprogram *createMethod(
- DIScope *Scope, StringRef Name, StringRef LinkageName, DIFile *File,
- unsigned LineNo, DISubroutineType *Ty, bool isLocalToUnit,
- bool isDefinition, unsigned Virtuality = 0, unsigned VTableIndex = 0,
- int ThisAdjustment = 0, DIType *VTableHolder = nullptr,
- DINode::DIFlags Flags = DINode::FlagZero, bool isOptimized = false,
- DITemplateParameterArray TParams = nullptr,
- DITypeArray ThrownTypes = nullptr);
+ DISubprogram *
+ createMethod(DIScope *Scope, StringRef Name, StringRef LinkageName,
+ DIFile *File, unsigned LineNo, DISubroutineType *Ty,
+ unsigned VTableIndex = 0, int ThisAdjustment = 0,
+ DIType *VTableHolder = nullptr,
+ DINode::DIFlags Flags = DINode::FlagZero,
+ DISubprogram::DISPFlags SPFlags = DISubprogram::SPFlagZero,
+ DITemplateParameterArray TParams = nullptr,
+ DITypeArray ThrownTypes = nullptr);
/// This creates new descriptor for a namespace with the specified
/// parent scope.
diff --git a/linux-x64/clang/include/llvm/IR/DataLayout.h b/linux-x64/clang/include/llvm/IR/DataLayout.h
index d796a65..274ec23 100644
--- a/linux-x64/clang/include/llvm/IR/DataLayout.h
+++ b/linux-x64/clang/include/llvm/IR/DataLayout.h
@@ -1,9 +1,8 @@
//===- llvm/DataLayout.h - Data size & alignment info -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -334,6 +333,9 @@
/// the backends/clients are updated.
unsigned getPointerSize(unsigned AS = 0) const;
+ /// Returns the maximum pointer size over all address spaces.
+ unsigned getMaxPointerSize() const;
+
// Index size used for address calculation.
unsigned getIndexSize(unsigned AS) const;
@@ -361,6 +363,11 @@
return getPointerSize(AS) * 8;
}
+ /// Returns the maximum pointer size over all address spaces.
+ unsigned getMaxPointerSizeInBits() const {
+ return getMaxPointerSize() * 8;
+ }
+
/// Size in bits of index used for address calculation in getelementptr.
unsigned getIndexSizeInBits(unsigned AS) const {
return getIndexSize(AS) * 8;
diff --git a/linux-x64/clang/include/llvm/IR/DebugInfo.h b/linux-x64/clang/include/llvm/IR/DebugInfo.h
index 01178af..171e162 100644
--- a/linux-x64/clang/include/llvm/IR/DebugInfo.h
+++ b/linux-x64/clang/include/llvm/IR/DebugInfo.h
@@ -1,9 +1,8 @@
//===- DebugInfo.h - Debug Information Helpers ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/DebugInfoFlags.def b/linux-x64/clang/include/llvm/IR/DebugInfoFlags.def
index a3c3430..f19c04d 100644
--- a/linux-x64/clang/include/llvm/IR/DebugInfoFlags.def
+++ b/linux-x64/clang/include/llvm/IR/DebugInfoFlags.def
@@ -1,9 +1,8 @@
//===- llvm/IR/DebugInfoFlags.def - Debug info flag definitions -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -11,11 +10,20 @@
//
//===----------------------------------------------------------------------===//
-// TODO: Add other DW-based macros.
-#ifndef HANDLE_DI_FLAG
-#error "Missing macro definition of HANDLE_DI_FLAG"
+#if !(defined HANDLE_DI_FLAG || defined HANDLE_DISP_FLAG)
+#error "Missing macro definition of HANDLE_DI*"
#endif
+#ifndef HANDLE_DI_FLAG
+#define HANDLE_DI_FLAG(ID, NAME)
+#endif
+
+#ifndef HANDLE_DISP_FLAG
+#define HANDLE_DISP_FLAG(ID, NAME)
+#endif
+
+// General flags kept in DINode.
+
HANDLE_DI_FLAG(0, Zero) // Use it as zero value.
// For example: void foo(DIFlags Flags = FlagZero).
HANDLE_DI_FLAG(1, Private)
@@ -45,7 +53,7 @@
HANDLE_DI_FLAG((1 << 21), MainSubprogram)
HANDLE_DI_FLAG((1 << 22), TypePassByValue)
HANDLE_DI_FLAG((1 << 23), TypePassByReference)
-HANDLE_DI_FLAG((1 << 24), FixedEnum)
+HANDLE_DI_FLAG((1 << 24), EnumClass)
HANDLE_DI_FLAG((1 << 25), Thunk)
HANDLE_DI_FLAG((1 << 26), Trivial)
HANDLE_DI_FLAG((1 << 27), BigEndian)
@@ -64,4 +72,25 @@
#undef DI_FLAG_LARGEST_NEEDED
#endif
+// Subprogram-specific flags kept in DISubprogram.
+
+// Use this as a zero/initialization value.
+// For example: void foo(DISPFlags Flags = SPFlagZero).
+HANDLE_DISP_FLAG(0, Zero)
+// Virtuality is a two-bit enum field in the LSB of the word.
+// Values should match DW_VIRTUALITY_*.
+HANDLE_DISP_FLAG(1u, Virtual)
+HANDLE_DISP_FLAG(2u, PureVirtual)
+HANDLE_DISP_FLAG((1u << 2), LocalToUnit)
+HANDLE_DISP_FLAG((1u << 3), Definition)
+HANDLE_DISP_FLAG((1u << 4), Optimized)
+
+#ifdef DISP_FLAG_LARGEST_NEEDED
+// Intended to be used with ADT/BitmaskEnum.h.
+// NOTE: Always must be equal to largest flag, check this when adding new flags.
+HANDLE_DISP_FLAG((1 << 4), Largest)
+#undef DISP_FLAG_LARGEST_NEEDED
+#endif
+
#undef HANDLE_DI_FLAG
+#undef HANDLE_DISP_FLAG
diff --git a/linux-x64/clang/include/llvm/IR/DebugInfoMetadata.h b/linux-x64/clang/include/llvm/IR/DebugInfoMetadata.h
index 2a9181e..385f6e7 100644
--- a/linux-x64/clang/include/llvm/IR/DebugInfoMetadata.h
+++ b/linux-x64/clang/include/llvm/IR/DebugInfoMetadata.h
@@ -1,9 +1,8 @@
//===- llvm/IR/DebugInfoMetadata.h - Debug info metadata --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -1192,18 +1191,19 @@
bool SplitDebugInlining;
bool DebugInfoForProfiling;
unsigned NameTableKind;
+ bool RangesBaseAddress;
DICompileUnit(LLVMContext &C, StorageType Storage, unsigned SourceLanguage,
bool IsOptimized, unsigned RuntimeVersion,
unsigned EmissionKind, uint64_t DWOId, bool SplitDebugInlining,
bool DebugInfoForProfiling, unsigned NameTableKind,
- ArrayRef<Metadata *> Ops)
+ bool RangesBaseAddress, ArrayRef<Metadata *> Ops)
: DIScope(C, DICompileUnitKind, Storage, dwarf::DW_TAG_compile_unit, Ops),
SourceLanguage(SourceLanguage), IsOptimized(IsOptimized),
RuntimeVersion(RuntimeVersion), EmissionKind(EmissionKind),
DWOId(DWOId), SplitDebugInlining(SplitDebugInlining),
DebugInfoForProfiling(DebugInfoForProfiling),
- NameTableKind(NameTableKind) {
+ NameTableKind(NameTableKind), RangesBaseAddress(RangesBaseAddress) {
assert(Storage != Uniqued);
}
~DICompileUnit() = default;
@@ -1217,15 +1217,16 @@
DIGlobalVariableExpressionArray GlobalVariables,
DIImportedEntityArray ImportedEntities, DIMacroNodeArray Macros,
uint64_t DWOId, bool SplitDebugInlining, bool DebugInfoForProfiling,
- unsigned NameTableKind, StorageType Storage,
+ unsigned NameTableKind, bool RangesBaseAddress, StorageType Storage,
bool ShouldCreate = true) {
- return getImpl(
- Context, SourceLanguage, File, getCanonicalMDString(Context, Producer),
- IsOptimized, getCanonicalMDString(Context, Flags), RuntimeVersion,
- getCanonicalMDString(Context, SplitDebugFilename), EmissionKind,
- EnumTypes.get(), RetainedTypes.get(), GlobalVariables.get(),
- ImportedEntities.get(), Macros.get(), DWOId, SplitDebugInlining,
- DebugInfoForProfiling, NameTableKind, Storage, ShouldCreate);
+ return getImpl(Context, SourceLanguage, File,
+ getCanonicalMDString(Context, Producer), IsOptimized,
+ getCanonicalMDString(Context, Flags), RuntimeVersion,
+ getCanonicalMDString(Context, SplitDebugFilename),
+ EmissionKind, EnumTypes.get(), RetainedTypes.get(),
+ GlobalVariables.get(), ImportedEntities.get(), Macros.get(),
+ DWOId, SplitDebugInlining, DebugInfoForProfiling,
+ NameTableKind, RangesBaseAddress, Storage, ShouldCreate);
}
static DICompileUnit *
getImpl(LLVMContext &Context, unsigned SourceLanguage, Metadata *File,
@@ -1235,16 +1236,16 @@
Metadata *GlobalVariables, Metadata *ImportedEntities,
Metadata *Macros, uint64_t DWOId, bool SplitDebugInlining,
bool DebugInfoForProfiling, unsigned NameTableKind,
- StorageType Storage, bool ShouldCreate = true);
+ bool RangesBaseAddress, StorageType Storage, bool ShouldCreate = true);
TempDICompileUnit cloneImpl() const {
- return getTemporary(getContext(), getSourceLanguage(), getFile(),
- getProducer(), isOptimized(), getFlags(),
- getRuntimeVersion(), getSplitDebugFilename(),
- getEmissionKind(), getEnumTypes(), getRetainedTypes(),
- getGlobalVariables(), getImportedEntities(),
- getMacros(), DWOId, getSplitDebugInlining(),
- getDebugInfoForProfiling(), getNameTableKind());
+ return getTemporary(
+ getContext(), getSourceLanguage(), getFile(), getProducer(),
+ isOptimized(), getFlags(), getRuntimeVersion(), getSplitDebugFilename(),
+ getEmissionKind(), getEnumTypes(), getRetainedTypes(),
+ getGlobalVariables(), getImportedEntities(), getMacros(), DWOId,
+ getSplitDebugInlining(), getDebugInfoForProfiling(), getNameTableKind(),
+ getRangesBaseAddress());
}
public:
@@ -1260,11 +1261,11 @@
DIGlobalVariableExpressionArray GlobalVariables,
DIImportedEntityArray ImportedEntities, DIMacroNodeArray Macros,
uint64_t DWOId, bool SplitDebugInlining, bool DebugInfoForProfiling,
- DebugNameTableKind NameTableKind),
+ DebugNameTableKind NameTableKind, bool RangesBaseAddress),
(SourceLanguage, File, Producer, IsOptimized, Flags, RuntimeVersion,
SplitDebugFilename, EmissionKind, EnumTypes, RetainedTypes,
GlobalVariables, ImportedEntities, Macros, DWOId, SplitDebugInlining,
- DebugInfoForProfiling, (unsigned)NameTableKind))
+ DebugInfoForProfiling, (unsigned)NameTableKind, RangesBaseAddress))
DEFINE_MDNODE_GET_DISTINCT_TEMPORARY(
DICompileUnit,
(unsigned SourceLanguage, Metadata *File, MDString *Producer,
@@ -1273,11 +1274,11 @@
Metadata *RetainedTypes, Metadata *GlobalVariables,
Metadata *ImportedEntities, Metadata *Macros, uint64_t DWOId,
bool SplitDebugInlining, bool DebugInfoForProfiling,
- unsigned NameTableKind),
+ unsigned NameTableKind, bool RangesBaseAddress),
(SourceLanguage, File, Producer, IsOptimized, Flags, RuntimeVersion,
SplitDebugFilename, EmissionKind, EnumTypes, RetainedTypes,
GlobalVariables, ImportedEntities, Macros, DWOId, SplitDebugInlining,
- DebugInfoForProfiling, NameTableKind))
+ DebugInfoForProfiling, NameTableKind, RangesBaseAddress))
TempDICompileUnit clone() const { return cloneImpl(); }
@@ -1294,9 +1295,14 @@
DebugNameTableKind getNameTableKind() const {
return (DebugNameTableKind)NameTableKind;
}
- StringRef getProducer() const { return getStringOperand(1); }
- StringRef getFlags() const { return getStringOperand(2); }
- StringRef getSplitDebugFilename() const { return getStringOperand(3); }
+ bool getRangesBaseAddress() const {
+ return RangesBaseAddress; }
+ StringRef getProducer() const {
+ return getStringOperand(1); }
+ StringRef getFlags() const {
+ return getStringOperand(2); }
+ StringRef getSplitDebugFilename() const {
+ return getStringOperand(3); }
DICompositeTypeArray getEnumTypes() const {
return cast_or_null<MDTuple>(getRawEnumTypes());
}
@@ -1423,6 +1429,9 @@
/// Reverse transformation as getPrefixEncodingFromUnsigned.
static unsigned getUnsignedFromPrefixEncoding(unsigned U) {
+ if (U & 1)
+ return 0;
+ U >>= 1;
return (U & 0x20) ? (((U >> 1) & 0xfe0) | (U & 0x1f)) : (U & 0x1f);
}
@@ -1441,6 +1450,14 @@
getRawInlinedAt(), isImplicitCode());
}
+ static unsigned encodeComponent(unsigned C) {
+ return (C == 0) ? 1U : (getPrefixEncodingFromUnsigned(C) << 1);
+ }
+
+ static unsigned encodingBits(unsigned C) {
+ return (C == 0) ? 1 : (C > 0x1f ? 14 : 7);
+ }
+
public:
// Disallow replacing operands.
void replaceOperandWith(unsigned I, Metadata *New) = delete;
@@ -1511,20 +1528,32 @@
/// order. If the lowest bit is 1, the current component is empty, and the
/// next component will start in the next bit. Otherwise, the current
/// component is non-empty, and its content starts in the next bit. The
- /// length of each components is either 5 bit or 12 bit: if the 7th bit
+ /// value of each components is either 5 bit or 12 bit: if the 7th bit
/// is 0, the bit 2~6 (5 bits) are used to represent the component; if the
/// 7th bit is 1, the bit 2~6 (5 bits) and 8~14 (7 bits) are combined to
- /// represent the component.
+ /// represent the component. Thus, the number of bits used for a component
+ /// is either 0 (if it and all the next components are empty); 1 - if it is
+ /// empty; 7 - if its value is up to and including 0x1f (lsb and msb are both
+ /// 0); or 14, if its value is up to and including 0x1ff. Note that the last
+ /// component is also capped at 0x1ff, even in the case when both first
+ /// components are 0, and we'd technically have 29 bits available.
+ ///
+ /// For precise control over the data being encoded in the discriminator,
+ /// use encodeDiscriminator/decodeDiscriminator.
inline unsigned getDiscriminator() const;
/// Returns a new DILocation with updated \p Discriminator.
inline const DILocation *cloneWithDiscriminator(unsigned Discriminator) const;
- /// Returns a new DILocation with updated base discriminator \p BD.
- inline const DILocation *setBaseDiscriminator(unsigned BD) const;
+ /// Returns a new DILocation with updated base discriminator \p BD. Only the
+ /// base discriminator is set in the new DILocation, the other encoded values
+ /// are elided.
+ /// If the discriminator cannot be encoded, the function returns None.
+ inline Optional<const DILocation *> cloneWithBaseDiscriminator(unsigned BD) const;
- /// Returns the duplication factor stored in the discriminator.
+ /// Returns the duplication factor stored in the discriminator, or 1 if no
+ /// duplication factor (or 0) is encoded.
inline unsigned getDuplicationFactor() const;
/// Returns the copy identifier stored in the discriminator.
@@ -1533,9 +1562,11 @@
/// Returns the base discriminator stored in the discriminator.
inline unsigned getBaseDiscriminator() const;
- /// Returns a new DILocation with duplication factor \p DF encoded in the
- /// discriminator.
- inline const DILocation *cloneWithDuplicationFactor(unsigned DF) const;
+ /// Returns a new DILocation with duplication factor \p DF * current
+ /// duplication factor encoded in the discriminator. The current duplication
+ /// factor is as defined by getDuplicationFactor().
+ /// Returns None if encoding failed.
+ inline Optional<const DILocation *> cloneByMultiplyingDuplicationFactor(unsigned DF) const;
/// When two instructions are combined into a single instruction we also
/// need to combine the original locations into a single location.
@@ -1556,19 +1587,32 @@
/// Returns the base discriminator for a given encoded discriminator \p D.
static unsigned getBaseDiscriminatorFromDiscriminator(unsigned D) {
- if ((D & 1) == 0)
- return getUnsignedFromPrefixEncoding(D >> 1);
- else
- return 0;
+ return getUnsignedFromPrefixEncoding(D);
}
- /// Returns the duplication factor for a given encoded discriminator \p D.
+ /// Raw encoding of the discriminator. APIs such as cloneWithDuplicationFactor
+ /// have certain special case behavior (e.g. treating empty duplication factor
+ /// as the value '1').
+ /// This API, in conjunction with cloneWithDiscriminator, may be used to encode
+ /// the raw values provided. \p BD: base discriminator \p DF: duplication factor
+ /// \p CI: copy index
+ /// The return is None if the values cannot be encoded in 32 bits - for
+ /// example, values for BD or DF larger than 12 bits. Otherwise, the return
+ /// is the encoded value.
+ static Optional<unsigned> encodeDiscriminator(unsigned BD, unsigned DF, unsigned CI);
+
+ /// Raw decoder for values in an encoded discriminator D.
+ static void decodeDiscriminator(unsigned D, unsigned &BD, unsigned &DF,
+ unsigned &CI);
+
+ /// Returns the duplication factor for a given encoded discriminator \p D, or
+ /// 1 if no value or 0 is encoded.
static unsigned getDuplicationFactorFromDiscriminator(unsigned D) {
D = getNextComponentInDiscriminator(D);
- if (D == 0 || (D & 1))
+ unsigned Ret = getUnsignedFromPrefixEncoding(D);
+ if (Ret == 0)
return 1;
- else
- return getUnsignedFromPrefixEncoding(D >> 1);
+ return Ret;
}
/// Returns the copy identifier for a given encoded discriminator \p D.
@@ -1607,102 +1651,118 @@
/// negative.
int ThisAdjustment;
- // Virtuality can only assume three values, so we can pack
- // in 2 bits (none/pure/pure_virtual).
- unsigned Virtuality : 2;
+public:
+ /// Debug info subprogram flags.
+ enum DISPFlags : uint32_t {
+#define HANDLE_DISP_FLAG(ID, NAME) SPFlag##NAME = ID,
+#define DISP_FLAG_LARGEST_NEEDED
+#include "llvm/IR/DebugInfoFlags.def"
+ SPFlagNonvirtual = SPFlagZero,
+ SPFlagVirtuality = SPFlagVirtual | SPFlagPureVirtual,
+ LLVM_MARK_AS_BITMASK_ENUM(SPFlagLargest)
+ };
- // These are boolean flags so one bit is enough.
- // MSVC starts a new container field every time the base
- // type changes so we can't use 'bool' to ensure these bits
- // are packed.
- unsigned IsLocalToUnit : 1;
- unsigned IsDefinition : 1;
- unsigned IsOptimized : 1;
+ static DISPFlags getFlag(StringRef Flag);
+ static StringRef getFlagString(DISPFlags Flag);
- unsigned Padding : 3;
+ /// Split up a flags bitfield for easier printing.
+ ///
+ /// Split \c Flags into \c SplitFlags, a vector of its components. Returns
+ /// any remaining (unrecognized) bits.
+ static DISPFlags splitFlags(DISPFlags Flags,
+ SmallVectorImpl<DISPFlags> &SplitFlags);
+ // Helper for converting old bitfields to new flags word.
+ static DISPFlags toSPFlags(bool IsLocalToUnit, bool IsDefinition,
+ bool IsOptimized,
+ unsigned Virtuality = SPFlagNonvirtual) {
+ // We're assuming virtuality is the low-order field.
+ static_assert(
+ int(SPFlagVirtual) == int(dwarf::DW_VIRTUALITY_virtual) &&
+ int(SPFlagPureVirtual) == int(dwarf::DW_VIRTUALITY_pure_virtual),
+ "Virtuality constant mismatch");
+ return static_cast<DISPFlags>(
+ (Virtuality & SPFlagVirtuality) |
+ (IsLocalToUnit ? SPFlagLocalToUnit : SPFlagZero) |
+ (IsDefinition ? SPFlagDefinition : SPFlagZero) |
+ (IsOptimized ? SPFlagOptimized : SPFlagZero));
+ }
+
+private:
DIFlags Flags;
+ DISPFlags SPFlags;
DISubprogram(LLVMContext &C, StorageType Storage, unsigned Line,
- unsigned ScopeLine, unsigned Virtuality, unsigned VirtualIndex,
- int ThisAdjustment, DIFlags Flags, bool IsLocalToUnit,
- bool IsDefinition, bool IsOptimized, ArrayRef<Metadata *> Ops)
+ unsigned ScopeLine, unsigned VirtualIndex, int ThisAdjustment,
+ DIFlags Flags, DISPFlags SPFlags, ArrayRef<Metadata *> Ops)
: DILocalScope(C, DISubprogramKind, Storage, dwarf::DW_TAG_subprogram,
Ops),
Line(Line), ScopeLine(ScopeLine), VirtualIndex(VirtualIndex),
- ThisAdjustment(ThisAdjustment), Virtuality(Virtuality),
- IsLocalToUnit(IsLocalToUnit), IsDefinition(IsDefinition),
- IsOptimized(IsOptimized), Flags(Flags) {
+ ThisAdjustment(ThisAdjustment), Flags(Flags), SPFlags(SPFlags) {
static_assert(dwarf::DW_VIRTUALITY_max < 4, "Virtuality out of range");
- assert(Virtuality < 4 && "Virtuality out of range");
}
~DISubprogram() = default;
static DISubprogram *
getImpl(LLVMContext &Context, DIScopeRef Scope, StringRef Name,
StringRef LinkageName, DIFile *File, unsigned Line,
- DISubroutineType *Type, bool IsLocalToUnit, bool IsDefinition,
- unsigned ScopeLine, DITypeRef ContainingType, unsigned Virtuality,
+ DISubroutineType *Type, unsigned ScopeLine, DITypeRef ContainingType,
unsigned VirtualIndex, int ThisAdjustment, DIFlags Flags,
- bool IsOptimized, DICompileUnit *Unit,
+ DISPFlags SPFlags, DICompileUnit *Unit,
DITemplateParameterArray TemplateParams, DISubprogram *Declaration,
DINodeArray RetainedNodes, DITypeArray ThrownTypes,
StorageType Storage, bool ShouldCreate = true) {
return getImpl(Context, Scope, getCanonicalMDString(Context, Name),
getCanonicalMDString(Context, LinkageName), File, Line, Type,
- IsLocalToUnit, IsDefinition, ScopeLine, ContainingType,
- Virtuality, VirtualIndex, ThisAdjustment, Flags, IsOptimized,
- Unit, TemplateParams.get(), Declaration, RetainedNodes.get(),
- ThrownTypes.get(), Storage, ShouldCreate);
+ ScopeLine, ContainingType, VirtualIndex, ThisAdjustment,
+ Flags, SPFlags, Unit, TemplateParams.get(), Declaration,
+ RetainedNodes.get(), ThrownTypes.get(), Storage,
+ ShouldCreate);
}
- static DISubprogram *
- getImpl(LLVMContext &Context, Metadata *Scope, MDString *Name,
- MDString *LinkageName, Metadata *File, unsigned Line, Metadata *Type,
- bool IsLocalToUnit, bool IsDefinition, unsigned ScopeLine,
- Metadata *ContainingType, unsigned Virtuality, unsigned VirtualIndex,
- int ThisAdjustment, DIFlags Flags, bool IsOptimized, Metadata *Unit,
- Metadata *TemplateParams, Metadata *Declaration, Metadata *RetainedNodes,
- Metadata *ThrownTypes, StorageType Storage, bool ShouldCreate = true);
+ static DISubprogram *getImpl(LLVMContext &Context, Metadata *Scope,
+ MDString *Name, MDString *LinkageName,
+ Metadata *File, unsigned Line, Metadata *Type,
+ unsigned ScopeLine, Metadata *ContainingType,
+ unsigned VirtualIndex, int ThisAdjustment,
+ DIFlags Flags, DISPFlags SPFlags, Metadata *Unit,
+ Metadata *TemplateParams, Metadata *Declaration,
+ Metadata *RetainedNodes, Metadata *ThrownTypes,
+ StorageType Storage, bool ShouldCreate = true);
TempDISubprogram cloneImpl() const {
return getTemporary(getContext(), getScope(), getName(), getLinkageName(),
- getFile(), getLine(), getType(), isLocalToUnit(),
- isDefinition(), getScopeLine(), getContainingType(),
- getVirtuality(), getVirtualIndex(), getThisAdjustment(),
- getFlags(), isOptimized(), getUnit(),
- getTemplateParams(), getDeclaration(), getRetainedNodes(),
- getThrownTypes());
+ getFile(), getLine(), getType(), getScopeLine(),
+ getContainingType(), getVirtualIndex(),
+ getThisAdjustment(), getFlags(), getSPFlags(),
+ getUnit(), getTemplateParams(), getDeclaration(),
+ getRetainedNodes(), getThrownTypes());
}
public:
- DEFINE_MDNODE_GET(DISubprogram,
- (DIScopeRef Scope, StringRef Name, StringRef LinkageName,
- DIFile *File, unsigned Line, DISubroutineType *Type,
- bool IsLocalToUnit, bool IsDefinition, unsigned ScopeLine,
- DITypeRef ContainingType, unsigned Virtuality,
- unsigned VirtualIndex, int ThisAdjustment, DIFlags Flags,
- bool IsOptimized, DICompileUnit *Unit,
- DITemplateParameterArray TemplateParams = nullptr,
- DISubprogram *Declaration = nullptr,
- DINodeArray RetainedNodes = nullptr,
- DITypeArray ThrownTypes = nullptr),
- (Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit,
- IsDefinition, ScopeLine, ContainingType, Virtuality,
- VirtualIndex, ThisAdjustment, Flags, IsOptimized, Unit,
- TemplateParams, Declaration, RetainedNodes, ThrownTypes))
+ DEFINE_MDNODE_GET(
+ DISubprogram,
+ (DIScopeRef Scope, StringRef Name, StringRef LinkageName, DIFile *File,
+ unsigned Line, DISubroutineType *Type, unsigned ScopeLine,
+ DITypeRef ContainingType, unsigned VirtualIndex, int ThisAdjustment,
+ DIFlags Flags, DISPFlags SPFlags, DICompileUnit *Unit,
+ DITemplateParameterArray TemplateParams = nullptr,
+ DISubprogram *Declaration = nullptr, DINodeArray RetainedNodes = nullptr,
+ DITypeArray ThrownTypes = nullptr),
+ (Scope, Name, LinkageName, File, Line, Type, ScopeLine, ContainingType,
+ VirtualIndex, ThisAdjustment, Flags, SPFlags, Unit, TemplateParams,
+ Declaration, RetainedNodes, ThrownTypes))
+
DEFINE_MDNODE_GET(
DISubprogram,
(Metadata * Scope, MDString *Name, MDString *LinkageName, Metadata *File,
- unsigned Line, Metadata *Type, bool IsLocalToUnit, bool IsDefinition,
- unsigned ScopeLine, Metadata *ContainingType, unsigned Virtuality,
- unsigned VirtualIndex, int ThisAdjustment, DIFlags Flags,
- bool IsOptimized, Metadata *Unit, Metadata *TemplateParams = nullptr,
- Metadata *Declaration = nullptr, Metadata *RetainedNodes = nullptr,
- Metadata *ThrownTypes = nullptr),
- (Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, IsDefinition,
- ScopeLine, ContainingType, Virtuality, VirtualIndex, ThisAdjustment,
- Flags, IsOptimized, Unit, TemplateParams, Declaration, RetainedNodes,
- ThrownTypes))
+ unsigned Line, Metadata *Type, unsigned ScopeLine,
+ Metadata *ContainingType, unsigned VirtualIndex, int ThisAdjustment,
+ DIFlags Flags, DISPFlags SPFlags, Metadata *Unit,
+ Metadata *TemplateParams = nullptr, Metadata *Declaration = nullptr,
+ Metadata *RetainedNodes = nullptr, Metadata *ThrownTypes = nullptr),
+ (Scope, Name, LinkageName, File, Line, Type, ScopeLine, ContainingType,
+ VirtualIndex, ThisAdjustment, Flags, SPFlags, Unit, TemplateParams,
+ Declaration, RetainedNodes, ThrownTypes))
TempDISubprogram clone() const { return cloneImpl(); }
@@ -1715,14 +1775,15 @@
public:
unsigned getLine() const { return Line; }
- unsigned getVirtuality() const { return Virtuality; }
+ unsigned getVirtuality() const { return getSPFlags() & SPFlagVirtuality; }
unsigned getVirtualIndex() const { return VirtualIndex; }
int getThisAdjustment() const { return ThisAdjustment; }
unsigned getScopeLine() const { return ScopeLine; }
DIFlags getFlags() const { return Flags; }
- bool isLocalToUnit() const { return IsLocalToUnit; }
- bool isDefinition() const { return IsDefinition; }
- bool isOptimized() const { return IsOptimized; }
+ DISPFlags getSPFlags() const { return SPFlags; }
+ bool isLocalToUnit() const { return getSPFlags() & SPFlagLocalToUnit; }
+ bool isDefinition() const { return getSPFlags() & SPFlagDefinition; }
+ bool isOptimized() const { return getSPFlags() & SPFlagOptimized; }
bool isArtificial() const { return getFlags() & FlagArtificial; }
bool isPrivate() const {
@@ -1975,28 +2036,26 @@
return getCopyIdentifierFromDiscriminator(getDiscriminator());
}
-const DILocation *DILocation::setBaseDiscriminator(unsigned D) const {
- if (D == 0)
+Optional<const DILocation *> DILocation::cloneWithBaseDiscriminator(unsigned D) const {
+ unsigned BD, DF, CI;
+ decodeDiscriminator(getDiscriminator(), BD, DF, CI);
+ if (D == BD)
return this;
- else
- return cloneWithDiscriminator(getPrefixEncodingFromUnsigned(D) << 1);
+ if (Optional<unsigned> Encoded = encodeDiscriminator(D, DF, CI))
+ return cloneWithDiscriminator(*Encoded);
+ return None;
}
-const DILocation *DILocation::cloneWithDuplicationFactor(unsigned DF) const {
+Optional<const DILocation *> DILocation::cloneByMultiplyingDuplicationFactor(unsigned DF) const {
DF *= getDuplicationFactor();
if (DF <= 1)
return this;
unsigned BD = getBaseDiscriminator();
- unsigned CI = getCopyIdentifier() << (DF > 0x1f ? 14 : 7);
- unsigned D = CI | (getPrefixEncodingFromUnsigned(DF) << 1);
-
- if (BD == 0)
- D = (D << 1) | 1;
- else
- D = (D << (BD > 0x1f ? 14 : 7)) | (getPrefixEncodingFromUnsigned(BD) << 1);
-
- return cloneWithDiscriminator(D);
+ unsigned CI = getCopyIdentifier();
+ if (Optional<unsigned> D = encodeDiscriminator(BD, DF, CI))
+ return cloneWithDiscriminator(*D);
+ return None;
}
class DINamespace : public DIScope {
@@ -2451,6 +2510,12 @@
/// return true with an offset of zero.
bool extractIfOffset(int64_t &Offset) const;
+ /// Checks if the last 4 elements of the expression are DW_OP_constu <DWARF
+ /// Address Space> DW_OP_swap DW_OP_xderef and extracts the <DWARF Address
+ /// Space>.
+ static const DIExpression *extractAddressClass(const DIExpression *Expr,
+ unsigned &AddrClass);
+
/// Constants for DIExpression::prepend.
enum { NoDeref = false, WithDeref = true, WithStackValue = true };
diff --git a/linux-x64/clang/include/llvm/IR/DebugLoc.h b/linux-x64/clang/include/llvm/IR/DebugLoc.h
index 4f0d7f5..780d17a 100644
--- a/linux-x64/clang/include/llvm/IR/DebugLoc.h
+++ b/linux-x64/clang/include/llvm/IR/DebugLoc.h
@@ -1,9 +1,8 @@
//===- DebugLoc.h - Debug Location Information ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/DerivedTypes.h b/linux-x64/clang/include/llvm/IR/DerivedTypes.h
index 9526d62..5bf3729 100644
--- a/linux-x64/clang/include/llvm/IR/DerivedTypes.h
+++ b/linux-x64/clang/include/llvm/IR/DerivedTypes.h
@@ -1,9 +1,8 @@
//===- llvm/DerivedTypes.h - Classes for handling data types ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -158,6 +157,38 @@
return cast<FunctionType>(this)->getNumParams();
}
+/// A handy container for a FunctionType+Callee-pointer pair, which can be
+/// passed around as a single entity. This assists in replacing the use of
+/// PointerType::getElementType() to access the function's type, since that's
+/// slated for removal as part of the [opaque pointer types] project.
+class FunctionCallee {
+public:
+ // Allow implicit conversion from types which have a getFunctionType member
+ // (e.g. Function and InlineAsm).
+ template <typename T, typename U = decltype(&T::getFunctionType)>
+ FunctionCallee(T *Fn)
+ : FnTy(Fn ? Fn->getFunctionType() : nullptr), Callee(Fn) {}
+
+ FunctionCallee(FunctionType *FnTy, Value *Callee)
+ : FnTy(FnTy), Callee(Callee) {
+ assert((FnTy == nullptr) == (Callee == nullptr));
+ }
+
+ FunctionCallee(std::nullptr_t) {}
+
+ FunctionCallee() = default;
+
+ FunctionType *getFunctionType() { return FnTy; }
+
+ Value *getCallee() { return Callee; }
+
+ explicit operator bool() { return Callee; }
+
+private:
+ FunctionType *FnTy = nullptr;
+ Value *Callee = nullptr;
+};
+
/// Common super class of ArrayType, StructType and VectorType.
class CompositeType : public Type {
protected:
diff --git a/linux-x64/clang/include/llvm/IR/DerivedUser.h b/linux-x64/clang/include/llvm/IR/DerivedUser.h
index 67c483d..a25d316 100644
--- a/linux-x64/clang/include/llvm/IR/DerivedUser.h
+++ b/linux-x64/clang/include/llvm/IR/DerivedUser.h
@@ -1,9 +1,8 @@
//===- DerivedUser.h - Base for non-IR Users --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/IR/DiagnosticHandler.h b/linux-x64/clang/include/llvm/IR/DiagnosticHandler.h
index 51873be..af1e297 100644
--- a/linux-x64/clang/include/llvm/IR/DiagnosticHandler.h
+++ b/linux-x64/clang/include/llvm/IR/DiagnosticHandler.h
@@ -1,9 +1,8 @@
//===- DiagnosticHandler.h - DiagnosticHandler class for LLVM -*- C++ ---*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// Base DiagnosticHandler class declaration. Derive from this class to provide
diff --git a/linux-x64/clang/include/llvm/IR/DiagnosticInfo.h b/linux-x64/clang/include/llvm/IR/DiagnosticInfo.h
index b8fdae2..ab4c692 100644
--- a/linux-x64/clang/include/llvm/IR/DiagnosticInfo.h
+++ b/linux-x64/clang/include/llvm/IR/DiagnosticInfo.h
@@ -1,9 +1,8 @@
//===- llvm/IR/DiagnosticInfo.h - Diagnostic Declaration --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -101,6 +100,7 @@
/// Severity gives the severity of the diagnostic.
const DiagnosticSeverity Severity;
+ virtual void anchor();
public:
DiagnosticInfo(/* DiagnosticKind */ int Kind, DiagnosticSeverity Severity)
: Kind(Kind), Severity(Severity) {}
@@ -210,6 +210,7 @@
};
class DiagnosticInfoStackSize : public DiagnosticInfoResourceLimit {
+ virtual void anchor() override;
public:
DiagnosticInfoStackSize(const Function &Fn, uint64_t StackSize,
DiagnosticSeverity Severity = DS_Warning,
@@ -340,7 +341,7 @@
};
class DiagnosticLocation {
- StringRef Filename;
+ DIFile *File = nullptr;
unsigned Line = 0;
unsigned Column = 0;
@@ -349,14 +350,18 @@
DiagnosticLocation(const DebugLoc &DL);
DiagnosticLocation(const DISubprogram *SP);
- bool isValid() const { return !Filename.empty(); }
- StringRef getFilename() const { return Filename; }
+ bool isValid() const { return File; }
+ /// Return the full path to the file.
+ std::string getAbsolutePath() const;
+ /// Return the file name relative to the compilation directory.
+ StringRef getRelativePath() const;
unsigned getLine() const { return Line; }
unsigned getColumn() const { return Column; }
};
/// Common features for diagnostics with an associated location.
class DiagnosticInfoWithLocationBase : public DiagnosticInfo {
+ virtual void anchor() override;
public:
/// \p Fn is the function where the diagnostic is being emitted. \p Loc is
/// the location information to use in the diagnostic.
@@ -375,9 +380,13 @@
const std::string getLocationStr() const;
/// Return location information for this diagnostic in three parts:
- /// the source file name, line number and column.
- void getLocation(StringRef *Filename, unsigned *Line, unsigned *Column) const;
+ /// the relative source file path, line number and column.
+ void getLocation(StringRef &RelativePath, unsigned &Line,
+ unsigned &Column) const;
+ /// Return the absolute path tot the file.
+ std::string getAbsolutePath() const;
+
const Function &getFunction() const { return Fn; }
DiagnosticLocation getLocation() const { return Loc; }
@@ -591,6 +600,7 @@
/// Common features for diagnostics dealing with optimization remarks
/// that are used by IR passes.
class DiagnosticInfoIROptimization : public DiagnosticInfoOptimizationBase {
+ virtual void anchor() override;
public:
/// \p PassName is the name of the pass emitting this diagnostic. \p
/// RemarkName is a textual identifier for the remark (single-word,
@@ -811,6 +821,7 @@
/// Diagnostic information for optimization analysis remarks related to
/// floating-point non-commutativity.
class OptimizationRemarkAnalysisFPCommute : public OptimizationRemarkAnalysis {
+ virtual void anchor();
public:
/// \p PassName is the name of the pass emitting this diagnostic. If this name
/// matches the regular expression given in -Rpass-analysis=, then the
@@ -852,6 +863,7 @@
/// Diagnostic information for optimization analysis remarks related to
/// pointer aliasing.
class OptimizationRemarkAnalysisAliasing : public OptimizationRemarkAnalysis {
+ virtual void anchor();
public:
/// \p PassName is the name of the pass emitting this diagnostic. If this name
/// matches the regular expression given in -Rpass-analysis=, then the
diff --git a/linux-x64/clang/include/llvm/IR/DiagnosticPrinter.h b/linux-x64/clang/include/llvm/IR/DiagnosticPrinter.h
index 25c47cd..102932c 100644
--- a/linux-x64/clang/include/llvm/IR/DiagnosticPrinter.h
+++ b/linux-x64/clang/include/llvm/IR/DiagnosticPrinter.h
@@ -1,9 +1,8 @@
//===- llvm/Support/DiagnosticPrinter.h - Diagnostic Printer ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/Dominators.h b/linux-x64/clang/include/llvm/IR/Dominators.h
index f7da47d..fef1c6a 100644
--- a/linux-x64/clang/include/llvm/IR/Dominators.h
+++ b/linux-x64/clang/include/llvm/IR/Dominators.h
@@ -1,9 +1,8 @@
//===- Dominators.h - Dominator Info Calculation ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/Function.h b/linux-x64/clang/include/llvm/IR/Function.h
index 1b91537..7184cb4 100644
--- a/linux-x64/clang/include/llvm/IR/Function.h
+++ b/linux-x64/clang/include/llvm/IR/Function.h
@@ -1,9 +1,8 @@
//===- llvm/Function.h - Class to represent a single function ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -158,7 +157,7 @@
/// Returns the number of non-debug IR instructions in this function.
/// This is equivalent to the sum of the sizes of each basic block contained
/// within this function.
- unsigned getInstructionCount();
+ unsigned getInstructionCount() const;
/// Returns the FunctionType for me.
FunctionType *getFunctionType() const {
diff --git a/linux-x64/clang/include/llvm/IR/GVMaterializer.h b/linux-x64/clang/include/llvm/IR/GVMaterializer.h
index 675abeb..d62da41 100644
--- a/linux-x64/clang/include/llvm/IR/GVMaterializer.h
+++ b/linux-x64/clang/include/llvm/IR/GVMaterializer.h
@@ -1,9 +1,8 @@
//===- GVMaterializer.h - Interface for GV materializers --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/GetElementPtrTypeIterator.h b/linux-x64/clang/include/llvm/IR/GetElementPtrTypeIterator.h
index 3c143ea..9b257ab 100644
--- a/linux-x64/clang/include/llvm/IR/GetElementPtrTypeIterator.h
+++ b/linux-x64/clang/include/llvm/IR/GetElementPtrTypeIterator.h
@@ -1,9 +1,8 @@
//===- GetElementPtrTypeIterator.h ------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/GlobalAlias.h b/linux-x64/clang/include/llvm/IR/GlobalAlias.h
index 450583b..3cd4057 100644
--- a/linux-x64/clang/include/llvm/IR/GlobalAlias.h
+++ b/linux-x64/clang/include/llvm/IR/GlobalAlias.h
@@ -1,9 +1,8 @@
//===-------- llvm/GlobalAlias.h - GlobalAlias class ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/GlobalIFunc.h b/linux-x64/clang/include/llvm/IR/GlobalIFunc.h
index ef51315..bc0d3c0 100644
--- a/linux-x64/clang/include/llvm/IR/GlobalIFunc.h
+++ b/linux-x64/clang/include/llvm/IR/GlobalIFunc.h
@@ -1,9 +1,8 @@
//===-------- llvm/GlobalIFunc.h - GlobalIFunc class ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/IR/GlobalIndirectSymbol.h b/linux-x64/clang/include/llvm/IR/GlobalIndirectSymbol.h
index 22c0068..8bc3f90 100644
--- a/linux-x64/clang/include/llvm/IR/GlobalIndirectSymbol.h
+++ b/linux-x64/clang/include/llvm/IR/GlobalIndirectSymbol.h
@@ -1,9 +1,8 @@
//===- llvm/GlobalIndirectSymbol.h - GlobalIndirectSymbol class -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/GlobalObject.h b/linux-x64/clang/include/llvm/IR/GlobalObject.h
index 1fd3568..b8ab614 100644
--- a/linux-x64/clang/include/llvm/IR/GlobalObject.h
+++ b/linux-x64/clang/include/llvm/IR/GlobalObject.h
@@ -1,9 +1,8 @@
//===-- llvm/GlobalObject.h - Class to represent global objects -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/GlobalValue.h b/linux-x64/clang/include/llvm/IR/GlobalValue.h
index c07d405..d78ce62 100644
--- a/linux-x64/clang/include/llvm/IR/GlobalValue.h
+++ b/linux-x64/clang/include/llvm/IR/GlobalValue.h
@@ -1,9 +1,8 @@
//===-- llvm/GlobalValue.h - Class to represent a global value --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/GlobalVariable.h b/linux-x64/clang/include/llvm/IR/GlobalVariable.h
index 03b9ec4..2e2c8c4 100644
--- a/linux-x64/clang/include/llvm/IR/GlobalVariable.h
+++ b/linux-x64/clang/include/llvm/IR/GlobalVariable.h
@@ -1,9 +1,8 @@
//===-- llvm/GlobalVariable.h - GlobalVariable class ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/IRBuilder.h b/linux-x64/clang/include/llvm/IR/IRBuilder.h
index 0af53c5..2e0619d 100644
--- a/linux-x64/clang/include/llvm/IR/IRBuilder.h
+++ b/linux-x64/clang/include/llvm/IR/IRBuilder.h
@@ -1,9 +1,8 @@
//===- llvm/IRBuilder.h - Builder for LLVM Instructions ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -705,6 +704,16 @@
return CreateBinaryIntrinsic(Intrinsic::maxnum, LHS, RHS, nullptr, Name);
}
+ /// Create call to the minimum intrinsic.
+ CallInst *CreateMinimum(Value *LHS, Value *RHS, const Twine &Name = "") {
+ return CreateBinaryIntrinsic(Intrinsic::minimum, LHS, RHS, nullptr, Name);
+ }
+
+ /// Create call to the maximum intrinsic.
+ CallInst *CreateMaximum(Value *LHS, Value *RHS, const Twine &Name = "") {
+ return CreateBinaryIntrinsic(Intrinsic::maximum, LHS, RHS, nullptr, Name);
+ }
+
private:
/// Create a call to a masked intrinsic with given Id.
CallInst *CreateMaskedIntrinsic(Intrinsic::ID Id, ArrayRef<Value *> Ops,
@@ -879,19 +888,95 @@
}
/// Create an invoke instruction.
- InvokeInst *CreateInvoke(Value *Callee, BasicBlock *NormalDest,
+ InvokeInst *CreateInvoke(FunctionType *Ty, Value *Callee,
+ BasicBlock *NormalDest, BasicBlock *UnwindDest,
+ ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> OpBundles,
+ const Twine &Name = "") {
+ return Insert(
+ InvokeInst::Create(Ty, Callee, NormalDest, UnwindDest, Args, OpBundles),
+ Name);
+ }
+ InvokeInst *CreateInvoke(FunctionType *Ty, Value *Callee,
+ BasicBlock *NormalDest, BasicBlock *UnwindDest,
+ ArrayRef<Value *> Args = None,
+ const Twine &Name = "") {
+ return Insert(InvokeInst::Create(Ty, Callee, NormalDest, UnwindDest, Args),
+ Name);
+ }
+
+ InvokeInst *CreateInvoke(FunctionCallee Callee, BasicBlock *NormalDest,
+ BasicBlock *UnwindDest, ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> OpBundles,
+ const Twine &Name = "") {
+ return CreateInvoke(Callee.getFunctionType(), Callee.getCallee(),
+ NormalDest, UnwindDest, Args, OpBundles, Name);
+ }
+
+ InvokeInst *CreateInvoke(FunctionCallee Callee, BasicBlock *NormalDest,
BasicBlock *UnwindDest,
ArrayRef<Value *> Args = None,
const Twine &Name = "") {
- return Insert(InvokeInst::Create(Callee, NormalDest, UnwindDest, Args),
- Name);
+ return CreateInvoke(Callee.getFunctionType(), Callee.getCallee(),
+ NormalDest, UnwindDest, Args, Name);
}
+
+ // Deprecated [opaque pointer types]
InvokeInst *CreateInvoke(Value *Callee, BasicBlock *NormalDest,
BasicBlock *UnwindDest, ArrayRef<Value *> Args,
ArrayRef<OperandBundleDef> OpBundles,
const Twine &Name = "") {
- return Insert(InvokeInst::Create(Callee, NormalDest, UnwindDest, Args,
- OpBundles), Name);
+ return CreateInvoke(
+ cast<FunctionType>(
+ cast<PointerType>(Callee->getType())->getElementType()),
+ Callee, NormalDest, UnwindDest, Args, OpBundles, Name);
+ }
+
+ // Deprecated [opaque pointer types]
+ InvokeInst *CreateInvoke(Value *Callee, BasicBlock *NormalDest,
+ BasicBlock *UnwindDest,
+ ArrayRef<Value *> Args = None,
+ const Twine &Name = "") {
+ return CreateInvoke(
+ cast<FunctionType>(
+ cast<PointerType>(Callee->getType())->getElementType()),
+ Callee, NormalDest, UnwindDest, Args, Name);
+ }
+
+ /// \brief Create a callbr instruction.
+ CallBrInst *CreateCallBr(FunctionType *Ty, Value *Callee,
+ BasicBlock *DefaultDest,
+ ArrayRef<BasicBlock *> IndirectDests,
+ ArrayRef<Value *> Args = None,
+ const Twine &Name = "") {
+ return Insert(CallBrInst::Create(Ty, Callee, DefaultDest, IndirectDests,
+ Args), Name);
+ }
+ CallBrInst *CreateCallBr(FunctionType *Ty, Value *Callee,
+ BasicBlock *DefaultDest,
+ ArrayRef<BasicBlock *> IndirectDests,
+ ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> OpBundles,
+ const Twine &Name = "") {
+ return Insert(
+ CallBrInst::Create(Ty, Callee, DefaultDest, IndirectDests, Args,
+ OpBundles), Name);
+ }
+
+ CallBrInst *CreateCallBr(FunctionCallee Callee, BasicBlock *DefaultDest,
+ ArrayRef<BasicBlock *> IndirectDests,
+ ArrayRef<Value *> Args = None,
+ const Twine &Name = "") {
+ return CreateCallBr(Callee.getFunctionType(), Callee.getCallee(),
+ DefaultDest, IndirectDests, Args, Name);
+ }
+ CallBrInst *CreateCallBr(FunctionCallee Callee, BasicBlock *DefaultDest,
+ ArrayRef<BasicBlock *> IndirectDests,
+ ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> OpBundles,
+ const Twine &Name = "") {
+ return CreateCallBr(Callee.getFunctionType(), Callee.getCallee(),
+ DefaultDest, IndirectDests, Args, Name);
}
ResumeInst *CreateResume(Value *Exn) {
@@ -954,7 +1039,7 @@
}
Value *foldConstant(Instruction::BinaryOps Opc, Value *L,
- Value *R, const Twine &Name = nullptr) const {
+ Value *R, const Twine &Name) const {
auto *LC = dyn_cast<Constant>(L);
auto *RC = dyn_cast<Constant>(R);
return (LC && RC) ? Insert(Folder.CreateBinOp(Opc, LC, RC), Name) : nullptr;
@@ -1302,22 +1387,35 @@
return Insert(new AllocaInst(Ty, DL.getAllocaAddrSpace(), ArraySize), Name);
}
- /// Provided to resolve 'CreateLoad(Ptr, "...")' correctly, instead of
+ /// Provided to resolve 'CreateLoad(Ty, Ptr, "...")' correctly, instead of
/// converting the string to 'bool' for the isVolatile parameter.
- LoadInst *CreateLoad(Value *Ptr, const char *Name) {
- return Insert(new LoadInst(Ptr), Name);
- }
-
- LoadInst *CreateLoad(Value *Ptr, const Twine &Name = "") {
- return Insert(new LoadInst(Ptr), Name);
+ LoadInst *CreateLoad(Type *Ty, Value *Ptr, const char *Name) {
+ return Insert(new LoadInst(Ty, Ptr), Name);
}
LoadInst *CreateLoad(Type *Ty, Value *Ptr, const Twine &Name = "") {
return Insert(new LoadInst(Ty, Ptr), Name);
}
+ LoadInst *CreateLoad(Type *Ty, Value *Ptr, bool isVolatile,
+ const Twine &Name = "") {
+ return Insert(new LoadInst(Ty, Ptr, Twine(), isVolatile), Name);
+ }
+
+ // Deprecated [opaque pointer types]
+ LoadInst *CreateLoad(Value *Ptr, const char *Name) {
+ return CreateLoad(Ptr->getType()->getPointerElementType(), Ptr, Name);
+ }
+
+ // Deprecated [opaque pointer types]
+ LoadInst *CreateLoad(Value *Ptr, const Twine &Name = "") {
+ return CreateLoad(Ptr->getType()->getPointerElementType(), Ptr, Name);
+ }
+
+ // Deprecated [opaque pointer types]
LoadInst *CreateLoad(Value *Ptr, bool isVolatile, const Twine &Name = "") {
- return Insert(new LoadInst(Ptr, nullptr, isVolatile), Name);
+ return CreateLoad(Ptr->getType()->getPointerElementType(), Ptr, isVolatile,
+ Name);
}
StoreInst *CreateStore(Value *Val, Value *Ptr, bool isVolatile = false) {
@@ -1327,22 +1425,41 @@
/// Provided to resolve 'CreateAlignedLoad(Ptr, Align, "...")'
/// correctly, instead of converting the string to 'bool' for the isVolatile
/// parameter.
- LoadInst *CreateAlignedLoad(Value *Ptr, unsigned Align, const char *Name) {
- LoadInst *LI = CreateLoad(Ptr, Name);
+ LoadInst *CreateAlignedLoad(Type *Ty, Value *Ptr, unsigned Align,
+ const char *Name) {
+ LoadInst *LI = CreateLoad(Ty, Ptr, Name);
LI->setAlignment(Align);
return LI;
}
+ LoadInst *CreateAlignedLoad(Type *Ty, Value *Ptr, unsigned Align,
+ const Twine &Name = "") {
+ LoadInst *LI = CreateLoad(Ty, Ptr, Name);
+ LI->setAlignment(Align);
+ return LI;
+ }
+ LoadInst *CreateAlignedLoad(Type *Ty, Value *Ptr, unsigned Align,
+ bool isVolatile, const Twine &Name = "") {
+ LoadInst *LI = CreateLoad(Ty, Ptr, isVolatile, Name);
+ LI->setAlignment(Align);
+ return LI;
+ }
+
+ // Deprecated [opaque pointer types]
+ LoadInst *CreateAlignedLoad(Value *Ptr, unsigned Align, const char *Name) {
+ return CreateAlignedLoad(Ptr->getType()->getPointerElementType(), Ptr,
+ Align, Name);
+ }
+ // Deprecated [opaque pointer types]
LoadInst *CreateAlignedLoad(Value *Ptr, unsigned Align,
const Twine &Name = "") {
- LoadInst *LI = CreateLoad(Ptr, Name);
- LI->setAlignment(Align);
- return LI;
+ return CreateAlignedLoad(Ptr->getType()->getPointerElementType(), Ptr,
+ Align, Name);
}
+ // Deprecated [opaque pointer types]
LoadInst *CreateAlignedLoad(Value *Ptr, unsigned Align, bool isVolatile,
const Twine &Name = "") {
- LoadInst *LI = CreateLoad(Ptr, isVolatile, Name);
- LI->setAlignment(Align);
- return LI;
+ return CreateAlignedLoad(Ptr->getType()->getPointerElementType(), Ptr,
+ Align, isVolatile, Name);
}
StoreInst *CreateAlignedStore(Value *Val, Value *Ptr, unsigned Align,
@@ -1481,50 +1598,69 @@
return Insert(GetElementPtrInst::CreateInBounds(Ty, Ptr, Idxs), Name);
}
- Value *CreateConstGEP1_64(Value *Ptr, uint64_t Idx0, const Twine &Name = "") {
+ Value *CreateConstGEP1_64(Type *Ty, Value *Ptr, uint64_t Idx0,
+ const Twine &Name = "") {
Value *Idx = ConstantInt::get(Type::getInt64Ty(Context), Idx0);
if (auto *PC = dyn_cast<Constant>(Ptr))
- return Insert(Folder.CreateGetElementPtr(nullptr, PC, Idx), Name);
+ return Insert(Folder.CreateGetElementPtr(Ty, PC, Idx), Name);
- return Insert(GetElementPtrInst::Create(nullptr, Ptr, Idx), Name);
+ return Insert(GetElementPtrInst::Create(Ty, Ptr, Idx), Name);
+ }
+
+ Value *CreateConstGEP1_64(Value *Ptr, uint64_t Idx0, const Twine &Name = "") {
+ return CreateConstGEP1_64(nullptr, Ptr, Idx0, Name);
+ }
+
+ Value *CreateConstInBoundsGEP1_64(Type *Ty, Value *Ptr, uint64_t Idx0,
+ const Twine &Name = "") {
+ Value *Idx = ConstantInt::get(Type::getInt64Ty(Context), Idx0);
+
+ if (auto *PC = dyn_cast<Constant>(Ptr))
+ return Insert(Folder.CreateInBoundsGetElementPtr(Ty, PC, Idx), Name);
+
+ return Insert(GetElementPtrInst::CreateInBounds(Ty, Ptr, Idx), Name);
}
Value *CreateConstInBoundsGEP1_64(Value *Ptr, uint64_t Idx0,
const Twine &Name = "") {
- Value *Idx = ConstantInt::get(Type::getInt64Ty(Context), Idx0);
-
- if (auto *PC = dyn_cast<Constant>(Ptr))
- return Insert(Folder.CreateInBoundsGetElementPtr(nullptr, PC, Idx), Name);
-
- return Insert(GetElementPtrInst::CreateInBounds(nullptr, Ptr, Idx), Name);
+ return CreateConstInBoundsGEP1_64(nullptr, Ptr, Idx0, Name);
}
- Value *CreateConstGEP2_64(Value *Ptr, uint64_t Idx0, uint64_t Idx1,
- const Twine &Name = "") {
+ Value *CreateConstGEP2_64(Type *Ty, Value *Ptr, uint64_t Idx0, uint64_t Idx1,
+ const Twine &Name = "") {
Value *Idxs[] = {
ConstantInt::get(Type::getInt64Ty(Context), Idx0),
ConstantInt::get(Type::getInt64Ty(Context), Idx1)
};
if (auto *PC = dyn_cast<Constant>(Ptr))
- return Insert(Folder.CreateGetElementPtr(nullptr, PC, Idxs), Name);
+ return Insert(Folder.CreateGetElementPtr(Ty, PC, Idxs), Name);
- return Insert(GetElementPtrInst::Create(nullptr, Ptr, Idxs), Name);
+ return Insert(GetElementPtrInst::Create(Ty, Ptr, Idxs), Name);
+ }
+
+ Value *CreateConstGEP2_64(Value *Ptr, uint64_t Idx0, uint64_t Idx1,
+ const Twine &Name = "") {
+ return CreateConstGEP2_64(nullptr, Ptr, Idx0, Idx1, Name);
+ }
+
+ Value *CreateConstInBoundsGEP2_64(Type *Ty, Value *Ptr, uint64_t Idx0,
+ uint64_t Idx1, const Twine &Name = "") {
+ Value *Idxs[] = {
+ ConstantInt::get(Type::getInt64Ty(Context), Idx0),
+ ConstantInt::get(Type::getInt64Ty(Context), Idx1)
+ };
+
+ if (auto *PC = dyn_cast<Constant>(Ptr))
+ return Insert(Folder.CreateInBoundsGetElementPtr(Ty, PC, Idxs), Name);
+
+ return Insert(GetElementPtrInst::CreateInBounds(Ty, Ptr, Idxs), Name);
}
Value *CreateConstInBoundsGEP2_64(Value *Ptr, uint64_t Idx0, uint64_t Idx1,
const Twine &Name = "") {
- Value *Idxs[] = {
- ConstantInt::get(Type::getInt64Ty(Context), Idx0),
- ConstantInt::get(Type::getInt64Ty(Context), Idx1)
- };
-
- if (auto *PC = dyn_cast<Constant>(Ptr))
- return Insert(Folder.CreateInBoundsGetElementPtr(nullptr, PC, Idxs),
- Name);
-
- return Insert(GetElementPtrInst::CreateInBounds(nullptr, Ptr, Idxs), Name);
+ return CreateConstInBoundsGEP2_64(nullptr, Ptr, Idx0, Idx1, Name);
}
Value *CreateStructGEP(Type *Ty, Value *Ptr, unsigned Idx,
@@ -1870,15 +2006,8 @@
return Insert(PHINode::Create(Ty, NumReservedValues), Name);
}
- CallInst *CreateCall(Value *Callee, ArrayRef<Value *> Args = None,
- const Twine &Name = "", MDNode *FPMathTag = nullptr) {
- auto *PTy = cast<PointerType>(Callee->getType());
- auto *FTy = cast<FunctionType>(PTy->getElementType());
- return CreateCall(FTy, Callee, Args, Name, FPMathTag);
- }
-
CallInst *CreateCall(FunctionType *FTy, Value *Callee,
- ArrayRef<Value *> Args, const Twine &Name = "",
+ ArrayRef<Value *> Args = None, const Twine &Name = "",
MDNode *FPMathTag = nullptr) {
CallInst *CI = CallInst::Create(FTy, Callee, Args, DefaultOperandBundles);
if (isa<FPMathOperator>(CI))
@@ -1886,18 +2015,43 @@
return Insert(CI, Name);
}
- CallInst *CreateCall(Value *Callee, ArrayRef<Value *> Args,
+ CallInst *CreateCall(FunctionType *FTy, Value *Callee, ArrayRef<Value *> Args,
ArrayRef<OperandBundleDef> OpBundles,
const Twine &Name = "", MDNode *FPMathTag = nullptr) {
- CallInst *CI = CallInst::Create(Callee, Args, OpBundles);
+ CallInst *CI = CallInst::Create(FTy, Callee, Args, OpBundles);
if (isa<FPMathOperator>(CI))
CI = cast<CallInst>(setFPAttrs(CI, FPMathTag, FMF));
return Insert(CI, Name);
}
- CallInst *CreateCall(Function *Callee, ArrayRef<Value *> Args,
+ CallInst *CreateCall(FunctionCallee Callee, ArrayRef<Value *> Args = None,
const Twine &Name = "", MDNode *FPMathTag = nullptr) {
- return CreateCall(Callee->getFunctionType(), Callee, Args, Name, FPMathTag);
+ return CreateCall(Callee.getFunctionType(), Callee.getCallee(), Args, Name,
+ FPMathTag);
+ }
+
+ CallInst *CreateCall(FunctionCallee Callee, ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> OpBundles,
+ const Twine &Name = "", MDNode *FPMathTag = nullptr) {
+ return CreateCall(Callee.getFunctionType(), Callee.getCallee(), Args,
+ OpBundles, Name, FPMathTag);
+ }
+
+ // Deprecated [opaque pointer types]
+ CallInst *CreateCall(Value *Callee, ArrayRef<Value *> Args = None,
+ const Twine &Name = "", MDNode *FPMathTag = nullptr) {
+ return CreateCall(
+ cast<FunctionType>(Callee->getType()->getPointerElementType()), Callee,
+ Args, Name, FPMathTag);
+ }
+
+ // Deprecated [opaque pointer types]
+ CallInst *CreateCall(Value *Callee, ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> OpBundles,
+ const Twine &Name = "", MDNode *FPMathTag = nullptr) {
+ return CreateCall(
+ cast<FunctionType>(Callee->getType()->getPointerElementType()), Callee,
+ Args, OpBundles, Name, FPMathTag);
}
Value *CreateSelect(Value *C, Value *True, Value *False,
@@ -2116,11 +2270,12 @@
private:
/// Helper function that creates an assume intrinsic call that
/// represents an alignment assumption on the provided Ptr, Mask, Type
- /// and Offset.
+ /// and Offset. It may be sometimes useful to do some other logic
+ /// based on this alignment check, thus it can be stored into 'TheCheck'.
CallInst *CreateAlignmentAssumptionHelper(const DataLayout &DL,
Value *PtrValue, Value *Mask,
- Type *IntPtrTy,
- Value *OffsetValue) {
+ Type *IntPtrTy, Value *OffsetValue,
+ Value **TheCheck) {
Value *PtrIntValue = CreatePtrToInt(PtrValue, IntPtrTy, "ptrint");
if (OffsetValue) {
@@ -2139,6 +2294,9 @@
Value *Zero = ConstantInt::get(IntPtrTy, 0);
Value *MaskedPtr = CreateAnd(PtrIntValue, Mask, "maskedptr");
Value *InvCond = CreateICmpEQ(MaskedPtr, Zero, "maskcond");
+ if (TheCheck)
+ *TheCheck = InvCond;
+
return CreateAssumption(InvCond);
}
@@ -2149,17 +2307,22 @@
/// An optional offset can be provided, and if it is provided, the offset
/// must be subtracted from the provided pointer to get the pointer with the
/// specified alignment.
+ ///
+ /// It may be sometimes useful to do some other logic
+ /// based on this alignment check, thus it can be stored into 'TheCheck'.
CallInst *CreateAlignmentAssumption(const DataLayout &DL, Value *PtrValue,
unsigned Alignment,
- Value *OffsetValue = nullptr) {
+ Value *OffsetValue = nullptr,
+ Value **TheCheck = nullptr) {
assert(isa<PointerType>(PtrValue->getType()) &&
"trying to create an alignment assumption on a non-pointer?");
+ assert(Alignment != 0 && "Invalid Alignment");
auto *PtrTy = cast<PointerType>(PtrValue->getType());
Type *IntPtrTy = getIntPtrTy(DL, PtrTy->getAddressSpace());
- Value *Mask = ConstantInt::get(IntPtrTy, Alignment > 0 ? Alignment - 1 : 0);
+ Value *Mask = ConstantInt::get(IntPtrTy, Alignment - 1);
return CreateAlignmentAssumptionHelper(DL, PtrValue, Mask, IntPtrTy,
- OffsetValue);
+ OffsetValue, TheCheck);
}
/// Create an assume intrinsic call that represents an alignment
@@ -2169,29 +2332,28 @@
/// must be subtracted from the provided pointer to get the pointer with the
/// specified alignment.
///
+ /// It may be sometimes useful to do some other logic
+ /// based on this alignment check, thus it can be stored into 'TheCheck'.
+ ///
/// This overload handles the condition where the Alignment is dependent
/// on an existing value rather than a static value.
CallInst *CreateAlignmentAssumption(const DataLayout &DL, Value *PtrValue,
Value *Alignment,
- Value *OffsetValue = nullptr) {
+ Value *OffsetValue = nullptr,
+ Value **TheCheck = nullptr) {
assert(isa<PointerType>(PtrValue->getType()) &&
"trying to create an alignment assumption on a non-pointer?");
auto *PtrTy = cast<PointerType>(PtrValue->getType());
Type *IntPtrTy = getIntPtrTy(DL, PtrTy->getAddressSpace());
if (Alignment->getType() != IntPtrTy)
- Alignment = CreateIntCast(Alignment, IntPtrTy, /*isSigned*/ true,
+ Alignment = CreateIntCast(Alignment, IntPtrTy, /*isSigned*/ false,
"alignmentcast");
- Value *IsPositive =
- CreateICmp(CmpInst::ICMP_SGT, Alignment,
- ConstantInt::get(Alignment->getType(), 0), "ispositive");
- Value *PositiveMask =
- CreateSub(Alignment, ConstantInt::get(IntPtrTy, 1), "positivemask");
- Value *Mask = CreateSelect(IsPositive, PositiveMask,
- ConstantInt::get(IntPtrTy, 0), "mask");
+
+ Value *Mask = CreateSub(Alignment, ConstantInt::get(IntPtrTy, 1), "mask");
return CreateAlignmentAssumptionHelper(DL, PtrValue, Mask, IntPtrTy,
- OffsetValue);
+ OffsetValue, TheCheck);
}
};
diff --git a/linux-x64/clang/include/llvm/IR/IRPrintingPasses.h b/linux-x64/clang/include/llvm/IR/IRPrintingPasses.h
index 75f8056..3be9449 100644
--- a/linux-x64/clang/include/llvm/IR/IRPrintingPasses.h
+++ b/linux-x64/clang/include/llvm/IR/IRPrintingPasses.h
@@ -1,9 +1,8 @@
//===- IRPrintingPasses.h - Passes to print out IR constructs ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/IR/InlineAsm.h b/linux-x64/clang/include/llvm/IR/InlineAsm.h
index 1519a45..2aac807 100644
--- a/linux-x64/clang/include/llvm/IR/InlineAsm.h
+++ b/linux-x64/clang/include/llvm/IR/InlineAsm.h
@@ -1,9 +1,8 @@
//===- llvm/InlineAsm.h - Class to represent inline asm strings -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/InstIterator.h b/linux-x64/clang/include/llvm/IR/InstIterator.h
index 2988fc9..054fe4e 100644
--- a/linux-x64/clang/include/llvm/IR/InstIterator.h
+++ b/linux-x64/clang/include/llvm/IR/InstIterator.h
@@ -1,9 +1,8 @@
//===- InstIterator.h - Classes for inst iteration --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/InstVisitor.h b/linux-x64/clang/include/llvm/IR/InstVisitor.h
index 55536f2..fbeb2ca 100644
--- a/linux-x64/clang/include/llvm/IR/InstVisitor.h
+++ b/linux-x64/clang/include/llvm/IR/InstVisitor.h
@@ -1,9 +1,8 @@
//===- InstVisitor.h - Instruction visitor templates ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -166,15 +165,6 @@
// Specific Instruction type classes... note that all of the casts are
// necessary because we use the instruction classes as opaque types...
//
- RetTy visitReturnInst(ReturnInst &I) { DELEGATE(TerminatorInst);}
- RetTy visitBranchInst(BranchInst &I) { DELEGATE(TerminatorInst);}
- RetTy visitSwitchInst(SwitchInst &I) { DELEGATE(TerminatorInst);}
- RetTy visitIndirectBrInst(IndirectBrInst &I) { DELEGATE(TerminatorInst);}
- RetTy visitResumeInst(ResumeInst &I) { DELEGATE(TerminatorInst);}
- RetTy visitUnreachableInst(UnreachableInst &I) { DELEGATE(TerminatorInst);}
- RetTy visitCleanupReturnInst(CleanupReturnInst &I) { DELEGATE(TerminatorInst);}
- RetTy visitCatchReturnInst(CatchReturnInst &I) { DELEGATE(TerminatorInst); }
- RetTy visitCatchSwitchInst(CatchSwitchInst &I) { DELEGATE(TerminatorInst);}
RetTy visitICmpInst(ICmpInst &I) { DELEGATE(CmpInst);}
RetTy visitFCmpInst(FCmpInst &I) { DELEGATE(CmpInst);}
RetTy visitAllocaInst(AllocaInst &I) { DELEGATE(UnaryInstruction);}
@@ -227,36 +217,76 @@
RetTy visitVACopyInst(VACopyInst &I) { DELEGATE(IntrinsicInst); }
RetTy visitIntrinsicInst(IntrinsicInst &I) { DELEGATE(CallInst); }
- // Call and Invoke are slightly different as they delegate first through
- // a generic CallSite visitor.
+ // Call, Invoke and CallBr are slightly different as they delegate first
+ // through a generic CallSite visitor.
RetTy visitCallInst(CallInst &I) {
return static_cast<SubClass*>(this)->visitCallSite(&I);
}
RetTy visitInvokeInst(InvokeInst &I) {
return static_cast<SubClass*>(this)->visitCallSite(&I);
}
+ RetTy visitCallBrInst(CallBrInst &I) {
+ return static_cast<SubClass *>(this)->visitCallSite(&I);
+ }
+
+ // While terminators don't have a distinct type modeling them, we support
+ // intercepting them with dedicated a visitor callback.
+ RetTy visitReturnInst(ReturnInst &I) {
+ return static_cast<SubClass *>(this)->visitTerminator(I);
+ }
+ RetTy visitBranchInst(BranchInst &I) {
+ return static_cast<SubClass *>(this)->visitTerminator(I);
+ }
+ RetTy visitSwitchInst(SwitchInst &I) {
+ return static_cast<SubClass *>(this)->visitTerminator(I);
+ }
+ RetTy visitIndirectBrInst(IndirectBrInst &I) {
+ return static_cast<SubClass *>(this)->visitTerminator(I);
+ }
+ RetTy visitResumeInst(ResumeInst &I) {
+ return static_cast<SubClass *>(this)->visitTerminator(I);
+ }
+ RetTy visitUnreachableInst(UnreachableInst &I) {
+ return static_cast<SubClass *>(this)->visitTerminator(I);
+ }
+ RetTy visitCleanupReturnInst(CleanupReturnInst &I) {
+ return static_cast<SubClass *>(this)->visitTerminator(I);
+ }
+ RetTy visitCatchReturnInst(CatchReturnInst &I) {
+ return static_cast<SubClass *>(this)->visitTerminator(I);
+ }
+ RetTy visitCatchSwitchInst(CatchSwitchInst &I) {
+ return static_cast<SubClass *>(this)->visitTerminator(I);
+ }
+ RetTy visitTerminator(Instruction &I) { DELEGATE(Instruction);}
// Next level propagators: If the user does not overload a specific
// instruction type, they can overload one of these to get the whole class
// of instructions...
//
RetTy visitCastInst(CastInst &I) { DELEGATE(UnaryInstruction);}
+ RetTy visitUnaryOperator(UnaryOperator &I) { DELEGATE(UnaryInstruction);}
RetTy visitBinaryOperator(BinaryOperator &I) { DELEGATE(Instruction);}
RetTy visitCmpInst(CmpInst &I) { DELEGATE(Instruction);}
- RetTy visitTerminatorInst(TerminatorInst &I) { DELEGATE(Instruction);}
RetTy visitUnaryInstruction(UnaryInstruction &I){ DELEGATE(Instruction);}
- // Provide a special visitor for a 'callsite' that visits both calls and
- // invokes. When unimplemented, properly delegates to either the terminator or
- // regular instruction visitor.
+ // The next level delegation for `CallBase` is slightly more complex in order
+ // to support visiting cases where the call is also a terminator.
+ RetTy visitCallBase(CallBase &I) {
+ if (isa<InvokeInst>(I) || isa<CallBrInst>(I))
+ return static_cast<SubClass *>(this)->visitTerminator(I);
+
+ DELEGATE(Instruction);
+ }
+
+ // Provide a legacy visitor for a 'callsite' that visits calls, invokes,
+ // and calbrs.
+ //
+ // Prefer overriding the type system based `CallBase` instead.
RetTy visitCallSite(CallSite CS) {
assert(CS);
Instruction &I = *CS.getInstruction();
- if (CS.isCall())
- DELEGATE(Instruction);
-
- assert(CS.isInvoke());
- DELEGATE(TerminatorInst);
+ DELEGATE(CallBase);
}
// If the user wants a 'default' case, they can choose to override this
diff --git a/linux-x64/clang/include/llvm/IR/InstrTypes.h b/linux-x64/clang/include/llvm/IR/InstrTypes.h
index 95cdb70..6f50668 100644
--- a/linux-x64/clang/include/llvm/IR/InstrTypes.h
+++ b/linux-x64/clang/include/llvm/IR/InstrTypes.h
@@ -1,9 +1,8 @@
//===- llvm/InstrTypes.h - Important Instruction subclasses -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -25,8 +24,10 @@
#include "llvm/ADT/Twine.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/IR/Attributes.h"
+#include "llvm/IR/CallingConv.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DerivedTypes.h"
+#include "llvm/IR/Function.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/OperandTraits.h"
@@ -45,33 +46,9 @@
namespace llvm {
-//===----------------------------------------------------------------------===//
-// TerminatorInst Class
-//===----------------------------------------------------------------------===//
-
-/// Subclasses of this class are all able to terminate a basic
-/// block. Thus, these are all the flow control type of operations.
-///
-class TerminatorInst : public Instruction {
-protected:
- TerminatorInst(Type *Ty, Instruction::TermOps iType,
- Use *Ops, unsigned NumOps,
- Instruction *InsertBefore = nullptr)
- : Instruction(Ty, iType, Ops, NumOps, InsertBefore) {}
-
- TerminatorInst(Type *Ty, Instruction::TermOps iType,
- Use *Ops, unsigned NumOps, BasicBlock *InsertAtEnd)
- : Instruction(Ty, iType, Ops, NumOps, InsertAtEnd) {}
-
-public:
- // Methods for support type inquiry through isa, cast, and dyn_cast:
- static bool classof(const Instruction *I) {
- return I->isTerminator();
- }
- static bool classof(const Value *V) {
- return isa<Instruction>(V) && classof(cast<Instruction>(V));
- }
-};
+namespace Intrinsic {
+enum ID : unsigned;
+}
//===----------------------------------------------------------------------===//
// UnaryInstruction Class
@@ -336,22 +313,6 @@
static BinaryOperator *CreateNot(Value *Op, const Twine &Name,
BasicBlock *InsertAtEnd);
- /// Check if the given Value is a NEG, FNeg, or NOT instruction.
- ///
- static bool isNeg(const Value *V);
- static bool isFNeg(const Value *V, bool IgnoreZeroSign=false);
- static bool isNot(const Value *V);
-
- /// Helper functions to extract the unary argument of a NEG, FNEG or NOT
- /// operation implemented via Sub, FSub, or Xor.
- ///
- static const Value *getNegArgument(const Value *BinOp);
- static Value *getNegArgument( Value *BinOp);
- static const Value *getFNegArgument(const Value *BinOp);
- static Value *getFNegArgument( Value *BinOp);
- static const Value *getNotArgument(const Value *BinOp);
- static Value *getNotArgument( Value *BinOp);
-
BinaryOps getOpcode() const {
return static_cast<BinaryOps>(Instruction::getOpcode());
}
@@ -721,7 +682,8 @@
protected:
CmpInst(Type *ty, Instruction::OtherOps op, Predicate pred,
Value *LHS, Value *RHS, const Twine &Name = "",
- Instruction *InsertBefore = nullptr);
+ Instruction *InsertBefore = nullptr,
+ Instruction *FlagsSource = nullptr);
CmpInst(Type *ty, Instruction::OtherOps op, Predicate pred,
Value *LHS, Value *RHS, const Twine &Name,
@@ -947,76 +909,6 @@
DEFINE_TRANSPARENT_OPERAND_ACCESSORS(CmpInst, Value)
-//===----------------------------------------------------------------------===//
-// FuncletPadInst Class
-//===----------------------------------------------------------------------===//
-class FuncletPadInst : public Instruction {
-private:
- FuncletPadInst(const FuncletPadInst &CPI);
-
- explicit FuncletPadInst(Instruction::FuncletPadOps Op, Value *ParentPad,
- ArrayRef<Value *> Args, unsigned Values,
- const Twine &NameStr, Instruction *InsertBefore);
- explicit FuncletPadInst(Instruction::FuncletPadOps Op, Value *ParentPad,
- ArrayRef<Value *> Args, unsigned Values,
- const Twine &NameStr, BasicBlock *InsertAtEnd);
-
- void init(Value *ParentPad, ArrayRef<Value *> Args, const Twine &NameStr);
-
-protected:
- // Note: Instruction needs to be a friend here to call cloneImpl.
- friend class Instruction;
- friend class CatchPadInst;
- friend class CleanupPadInst;
-
- FuncletPadInst *cloneImpl() const;
-
-public:
- /// Provide fast operand accessors
- DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value);
-
- /// getNumArgOperands - Return the number of funcletpad arguments.
- ///
- unsigned getNumArgOperands() const { return getNumOperands() - 1; }
-
- /// Convenience accessors
-
- /// Return the outer EH-pad this funclet is nested within.
- ///
- /// Note: This returns the associated CatchSwitchInst if this FuncletPadInst
- /// is a CatchPadInst.
- Value *getParentPad() const { return Op<-1>(); }
- void setParentPad(Value *ParentPad) {
- assert(ParentPad);
- Op<-1>() = ParentPad;
- }
-
- /// getArgOperand/setArgOperand - Return/set the i-th funcletpad argument.
- ///
- Value *getArgOperand(unsigned i) const { return getOperand(i); }
- void setArgOperand(unsigned i, Value *v) { setOperand(i, v); }
-
- /// arg_operands - iteration adapter for range-for loops.
- op_range arg_operands() { return op_range(op_begin(), op_end() - 1); }
-
- /// arg_operands - iteration adapter for range-for loops.
- const_op_range arg_operands() const {
- return const_op_range(op_begin(), op_end() - 1);
- }
-
- // Methods for support type inquiry through isa, cast, and dyn_cast:
- static bool classof(const Instruction *I) { return I->isFuncletPad(); }
- static bool classof(const Value *V) {
- return isa<Instruction>(V) && classof(cast<Instruction>(V));
- }
-};
-
-template <>
-struct OperandTraits<FuncletPadInst>
- : public VariadicOperandTraits<FuncletPadInst, /*MINARITY=*/1> {};
-
-DEFINE_TRANSPARENT_OPERAND_ACCESSORS(FuncletPadInst, Value)
-
/// A lightweight accessor for an operand bundle meant to be passed
/// around by value.
struct OperandBundleUse {
@@ -1101,54 +993,645 @@
using OperandBundleDef = OperandBundleDefT<Value *>;
using ConstOperandBundleDef = OperandBundleDefT<const Value *>;
-/// A mixin to add operand bundle functionality to llvm instruction
-/// classes.
+//===----------------------------------------------------------------------===//
+// CallBase Class
+//===----------------------------------------------------------------------===//
+
+/// Base class for all callable instructions (InvokeInst and CallInst)
+/// Holds everything related to calling a function.
///
-/// OperandBundleUser uses the descriptor area co-allocated with the host User
-/// to store some meta information about which operands are "normal" operands,
-/// and which ones belong to some operand bundle.
+/// All call-like instructions are required to use a common operand layout:
+/// - Zero or more arguments to the call,
+/// - Zero or more operand bundles with zero or more operand inputs each
+/// bundle,
+/// - Zero or more subclass controlled operands
+/// - The called function.
///
-/// The layout of an operand bundle user is
-///
-/// +-----------uint32_t End-------------------------------------+
-/// | |
-/// | +--------uint32_t Begin--------------------+ |
-/// | | | |
-/// ^ ^ v v
-/// |------|------|----|----|----|----|----|---------|----|---------|----|-----
-/// | BOI0 | BOI1 | .. | DU | U0 | U1 | .. | BOI0_U0 | .. | BOI1_U0 | .. | Un
-/// |------|------|----|----|----|----|----|---------|----|---------|----|-----
-/// v v ^ ^
-/// | | | |
-/// | +--------uint32_t Begin------------+ |
-/// | |
-/// +-----------uint32_t End-----------------------------+
-///
-///
-/// BOI0, BOI1 ... are descriptions of operand bundles in this User's use list.
-/// These descriptions are installed and managed by this class, and they're all
-/// instances of OperandBundleUser<T>::BundleOpInfo.
-///
-/// DU is an additional descriptor installed by User's 'operator new' to keep
-/// track of the 'BOI0 ... BOIN' co-allocation. OperandBundleUser does not
-/// access or modify DU in any way, it's an implementation detail private to
-/// User.
-///
-/// The regular Use& vector for the User starts at U0. The operand bundle uses
-/// are part of the Use& vector, just like normal uses. In the diagram above,
-/// the operand bundle uses start at BOI0_U0. Each instance of BundleOpInfo has
-/// information about a contiguous set of uses constituting an operand bundle,
-/// and the total set of operand bundle uses themselves form a contiguous set of
-/// uses (i.e. there are no gaps between uses corresponding to individual
-/// operand bundles).
-///
-/// This class does not know the location of the set of operand bundle uses
-/// within the use list -- that is decided by the User using this class via the
-/// BeginIdx argument in populateBundleOperandInfos.
-///
-/// Currently operand bundle users with hung-off operands are not supported.
-template <typename InstrTy, typename OpIteratorTy> class OperandBundleUser {
+/// This allows this base class to easily access the called function and the
+/// start of the arguments without knowing how many other operands a particular
+/// subclass requires. Note that accessing the end of the argument list isn't
+/// as cheap as most other operations on the base class.
+class CallBase : public Instruction {
+protected:
+ /// The last operand is the called operand.
+ static constexpr int CalledOperandOpEndIdx = -1;
+
+ AttributeList Attrs; ///< parameter attributes for callable
+ FunctionType *FTy;
+
+ template <class... ArgsTy>
+ CallBase(AttributeList const &A, FunctionType *FT, ArgsTy &&... Args)
+ : Instruction(std::forward<ArgsTy>(Args)...), Attrs(A), FTy(FT) {}
+
+ using Instruction::Instruction;
+
+ bool hasDescriptor() const { return Value::HasDescriptor; }
+
+ unsigned getNumSubclassExtraOperands() const {
+ switch (getOpcode()) {
+ case Instruction::Call:
+ return 0;
+ case Instruction::Invoke:
+ return 2;
+ case Instruction::CallBr:
+ return getNumSubclassExtraOperandsDynamic();
+ }
+ llvm_unreachable("Invalid opcode!");
+ }
+
+ /// Get the number of extra operands for instructions that don't have a fixed
+ /// number of extra operands.
+ unsigned getNumSubclassExtraOperandsDynamic() const;
+
public:
+ using Instruction::getContext;
+
+ static bool classof(const Instruction *I) {
+ return I->getOpcode() == Instruction::Call ||
+ I->getOpcode() == Instruction::Invoke ||
+ I->getOpcode() == Instruction::CallBr;
+ }
+ static bool classof(const Value *V) {
+ return isa<Instruction>(V) && classof(cast<Instruction>(V));
+ }
+
+ FunctionType *getFunctionType() const { return FTy; }
+
+ void mutateFunctionType(FunctionType *FTy) {
+ Value::mutateType(FTy->getReturnType());
+ this->FTy = FTy;
+ }
+
+ DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value);
+
+ /// data_operands_begin/data_operands_end - Return iterators iterating over
+ /// the call / invoke argument list and bundle operands. For invokes, this is
+ /// the set of instruction operands except the invoke target and the two
+ /// successor blocks; and for calls this is the set of instruction operands
+ /// except the call target.
+ User::op_iterator data_operands_begin() { return op_begin(); }
+ User::const_op_iterator data_operands_begin() const {
+ return const_cast<CallBase *>(this)->data_operands_begin();
+ }
+ User::op_iterator data_operands_end() {
+ // Walk from the end of the operands over the called operand and any
+ // subclass operands.
+ return op_end() - getNumSubclassExtraOperands() - 1;
+ }
+ User::const_op_iterator data_operands_end() const {
+ return const_cast<CallBase *>(this)->data_operands_end();
+ }
+ iterator_range<User::op_iterator> data_ops() {
+ return make_range(data_operands_begin(), data_operands_end());
+ }
+ iterator_range<User::const_op_iterator> data_ops() const {
+ return make_range(data_operands_begin(), data_operands_end());
+ }
+ bool data_operands_empty() const {
+ return data_operands_end() == data_operands_begin();
+ }
+ unsigned data_operands_size() const {
+ return std::distance(data_operands_begin(), data_operands_end());
+ }
+
+ bool isDataOperand(const Use *U) const {
+ assert(this == U->getUser() &&
+ "Only valid to query with a use of this instruction!");
+ return data_operands_begin() <= U && U < data_operands_end();
+ }
+ bool isDataOperand(Value::const_user_iterator UI) const {
+ return isDataOperand(&UI.getUse());
+ }
+
+ /// Given a value use iterator, return the data operand corresponding to it.
+ /// Iterator must actually correspond to a data operand.
+ unsigned getDataOperandNo(Value::const_user_iterator UI) const {
+ return getDataOperandNo(&UI.getUse());
+ }
+
+ /// Given a use for a data operand, get the data operand number that
+ /// corresponds to it.
+ unsigned getDataOperandNo(const Use *U) const {
+ assert(isDataOperand(U) && "Data operand # out of range!");
+ return U - data_operands_begin();
+ }
+
+ /// Return the iterator pointing to the beginning of the argument list.
+ User::op_iterator arg_begin() { return op_begin(); }
+ User::const_op_iterator arg_begin() const {
+ return const_cast<CallBase *>(this)->arg_begin();
+ }
+
+ /// Return the iterator pointing to the end of the argument list.
+ User::op_iterator arg_end() {
+ // From the end of the data operands, walk backwards past the bundle
+ // operands.
+ return data_operands_end() - getNumTotalBundleOperands();
+ }
+ User::const_op_iterator arg_end() const {
+ return const_cast<CallBase *>(this)->arg_end();
+ }
+
+ /// Iteration adapter for range-for loops.
+ iterator_range<User::op_iterator> args() {
+ return make_range(arg_begin(), arg_end());
+ }
+ iterator_range<User::const_op_iterator> args() const {
+ return make_range(arg_begin(), arg_end());
+ }
+ bool arg_empty() const { return arg_end() == arg_begin(); }
+ unsigned arg_size() const { return arg_end() - arg_begin(); }
+
+ // Legacy API names that duplicate the above and will be removed once users
+ // are migrated.
+ iterator_range<User::op_iterator> arg_operands() {
+ return make_range(arg_begin(), arg_end());
+ }
+ iterator_range<User::const_op_iterator> arg_operands() const {
+ return make_range(arg_begin(), arg_end());
+ }
+ unsigned getNumArgOperands() const { return arg_size(); }
+
+ Value *getArgOperand(unsigned i) const {
+ assert(i < getNumArgOperands() && "Out of bounds!");
+ return getOperand(i);
+ }
+
+ void setArgOperand(unsigned i, Value *v) {
+ assert(i < getNumArgOperands() && "Out of bounds!");
+ setOperand(i, v);
+ }
+
+ /// Wrappers for getting the \c Use of a call argument.
+ const Use &getArgOperandUse(unsigned i) const {
+ assert(i < getNumArgOperands() && "Out of bounds!");
+ return User::getOperandUse(i);
+ }
+ Use &getArgOperandUse(unsigned i) {
+ assert(i < getNumArgOperands() && "Out of bounds!");
+ return User::getOperandUse(i);
+ }
+
+ bool isArgOperand(const Use *U) const {
+ assert(this == U->getUser() &&
+ "Only valid to query with a use of this instruction!");
+ return arg_begin() <= U && U < arg_end();
+ }
+ bool isArgOperand(Value::const_user_iterator UI) const {
+ return isArgOperand(&UI.getUse());
+ }
+
+ /// Returns true if this CallSite passes the given Value* as an argument to
+ /// the called function.
+ bool hasArgument(const Value *V) const {
+ return llvm::any_of(args(), [V](const Value *Arg) { return Arg == V; });
+ }
+
+ Value *getCalledOperand() const { return Op<CalledOperandOpEndIdx>(); }
+
+ // DEPRECATED: This routine will be removed in favor of `getCalledOperand` in
+ // the near future.
+ Value *getCalledValue() const { return getCalledOperand(); }
+
+ const Use &getCalledOperandUse() const { return Op<CalledOperandOpEndIdx>(); }
+ Use &getCalledOperandUse() { return Op<CalledOperandOpEndIdx>(); }
+
+ /// Returns the function called, or null if this is an
+ /// indirect function invocation.
+ Function *getCalledFunction() const {
+ return dyn_cast_or_null<Function>(getCalledOperand());
+ }
+
+ /// Return true if the callsite is an indirect call.
+ bool isIndirectCall() const;
+
+ /// Determine whether the passed iterator points to the callee operand's Use.
+ bool isCallee(Value::const_user_iterator UI) const {
+ return isCallee(&UI.getUse());
+ }
+
+ /// Determine whether this Use is the callee operand's Use.
+ bool isCallee(const Use *U) const { return &getCalledOperandUse() == U; }
+
+ /// Helper to get the caller (the parent function).
+ Function *getCaller();
+ const Function *getCaller() const {
+ return const_cast<CallBase *>(this)->getCaller();
+ }
+
+ /// Tests if this call site must be tail call optimized. Only a CallInst can
+ /// be tail call optimized.
+ bool isMustTailCall() const;
+
+ /// Tests if this call site is marked as a tail call.
+ bool isTailCall() const;
+
+ /// Returns the intrinsic ID of the intrinsic called or
+ /// Intrinsic::not_intrinsic if the called function is not an intrinsic, or if
+ /// this is an indirect call.
+ Intrinsic::ID getIntrinsicID() const;
+
+ void setCalledOperand(Value *V) { Op<CalledOperandOpEndIdx>() = V; }
+
+ /// Sets the function called, including updating the function type.
+ void setCalledFunction(Function *Fn) {
+ setCalledFunction(Fn->getFunctionType(), Fn);
+ }
+
+ /// Sets the function called, including updating the function type.
+ void setCalledFunction(FunctionCallee Fn) {
+ setCalledFunction(Fn.getFunctionType(), Fn.getCallee());
+ }
+
+ /// Sets the function called, including updating to the specified function
+ /// type.
+ void setCalledFunction(FunctionType *FTy, Value *Fn) {
+ this->FTy = FTy;
+ assert(FTy == cast<FunctionType>(
+ cast<PointerType>(Fn->getType())->getElementType()));
+ // This function doesn't mutate the return type, only the function
+ // type. Seems broken, but I'm just gonna stick an assert in for now.
+ assert(getType() == FTy->getReturnType());
+ setCalledOperand(Fn);
+ }
+
+ CallingConv::ID getCallingConv() const {
+ return static_cast<CallingConv::ID>(getSubclassDataFromInstruction() >> 2);
+ }
+
+ void setCallingConv(CallingConv::ID CC) {
+ auto ID = static_cast<unsigned>(CC);
+ assert(!(ID & ~CallingConv::MaxID) && "Unsupported calling convention");
+ setInstructionSubclassData((getSubclassDataFromInstruction() & 3) |
+ (ID << 2));
+ }
+
+ /// Check if this call is an inline asm statement.
+ bool isInlineAsm() const { return isa<InlineAsm>(getCalledOperand()); }
+
+ /// \name Attribute API
+ ///
+ /// These methods access and modify attributes on this call (including
+ /// looking through to the attributes on the called function when necessary).
+ ///@{
+
+ /// Return the parameter attributes for this call.
+ ///
+ AttributeList getAttributes() const { return Attrs; }
+
+ /// Set the parameter attributes for this call.
+ ///
+ void setAttributes(AttributeList A) { Attrs = A; }
+
+ /// Determine whether this call has the given attribute.
+ bool hasFnAttr(Attribute::AttrKind Kind) const {
+ assert(Kind != Attribute::NoBuiltin &&
+ "Use CallBase::isNoBuiltin() to check for Attribute::NoBuiltin");
+ return hasFnAttrImpl(Kind);
+ }
+
+ /// Determine whether this call has the given attribute.
+ bool hasFnAttr(StringRef Kind) const { return hasFnAttrImpl(Kind); }
+
+ /// adds the attribute to the list of attributes.
+ void addAttribute(unsigned i, Attribute::AttrKind Kind) {
+ AttributeList PAL = getAttributes();
+ PAL = PAL.addAttribute(getContext(), i, Kind);
+ setAttributes(PAL);
+ }
+
+ /// adds the attribute to the list of attributes.
+ void addAttribute(unsigned i, Attribute Attr) {
+ AttributeList PAL = getAttributes();
+ PAL = PAL.addAttribute(getContext(), i, Attr);
+ setAttributes(PAL);
+ }
+
+ /// Adds the attribute to the indicated argument
+ void addParamAttr(unsigned ArgNo, Attribute::AttrKind Kind) {
+ assert(ArgNo < getNumArgOperands() && "Out of bounds");
+ AttributeList PAL = getAttributes();
+ PAL = PAL.addParamAttribute(getContext(), ArgNo, Kind);
+ setAttributes(PAL);
+ }
+
+ /// Adds the attribute to the indicated argument
+ void addParamAttr(unsigned ArgNo, Attribute Attr) {
+ assert(ArgNo < getNumArgOperands() && "Out of bounds");
+ AttributeList PAL = getAttributes();
+ PAL = PAL.addParamAttribute(getContext(), ArgNo, Attr);
+ setAttributes(PAL);
+ }
+
+ /// removes the attribute from the list of attributes.
+ void removeAttribute(unsigned i, Attribute::AttrKind Kind) {
+ AttributeList PAL = getAttributes();
+ PAL = PAL.removeAttribute(getContext(), i, Kind);
+ setAttributes(PAL);
+ }
+
+ /// removes the attribute from the list of attributes.
+ void removeAttribute(unsigned i, StringRef Kind) {
+ AttributeList PAL = getAttributes();
+ PAL = PAL.removeAttribute(getContext(), i, Kind);
+ setAttributes(PAL);
+ }
+
+ /// Removes the attribute from the given argument
+ void removeParamAttr(unsigned ArgNo, Attribute::AttrKind Kind) {
+ assert(ArgNo < getNumArgOperands() && "Out of bounds");
+ AttributeList PAL = getAttributes();
+ PAL = PAL.removeParamAttribute(getContext(), ArgNo, Kind);
+ setAttributes(PAL);
+ }
+
+ /// Removes the attribute from the given argument
+ void removeParamAttr(unsigned ArgNo, StringRef Kind) {
+ assert(ArgNo < getNumArgOperands() && "Out of bounds");
+ AttributeList PAL = getAttributes();
+ PAL = PAL.removeParamAttribute(getContext(), ArgNo, Kind);
+ setAttributes(PAL);
+ }
+
+ /// adds the dereferenceable attribute to the list of attributes.
+ void addDereferenceableAttr(unsigned i, uint64_t Bytes) {
+ AttributeList PAL = getAttributes();
+ PAL = PAL.addDereferenceableAttr(getContext(), i, Bytes);
+ setAttributes(PAL);
+ }
+
+ /// adds the dereferenceable_or_null attribute to the list of
+ /// attributes.
+ void addDereferenceableOrNullAttr(unsigned i, uint64_t Bytes) {
+ AttributeList PAL = getAttributes();
+ PAL = PAL.addDereferenceableOrNullAttr(getContext(), i, Bytes);
+ setAttributes(PAL);
+ }
+
+ /// Determine whether the return value has the given attribute.
+ bool hasRetAttr(Attribute::AttrKind Kind) const;
+
+ /// Determine whether the argument or parameter has the given attribute.
+ bool paramHasAttr(unsigned ArgNo, Attribute::AttrKind Kind) const;
+
+ /// Get the attribute of a given kind at a position.
+ Attribute getAttribute(unsigned i, Attribute::AttrKind Kind) const {
+ return getAttributes().getAttribute(i, Kind);
+ }
+
+ /// Get the attribute of a given kind at a position.
+ Attribute getAttribute(unsigned i, StringRef Kind) const {
+ return getAttributes().getAttribute(i, Kind);
+ }
+
+ /// Get the attribute of a given kind from a given arg
+ Attribute getParamAttr(unsigned ArgNo, Attribute::AttrKind Kind) const {
+ assert(ArgNo < getNumArgOperands() && "Out of bounds");
+ return getAttributes().getParamAttr(ArgNo, Kind);
+ }
+
+ /// Get the attribute of a given kind from a given arg
+ Attribute getParamAttr(unsigned ArgNo, StringRef Kind) const {
+ assert(ArgNo < getNumArgOperands() && "Out of bounds");
+ return getAttributes().getParamAttr(ArgNo, Kind);
+ }
+
+ /// Return true if the data operand at index \p i has the attribute \p
+ /// A.
+ ///
+ /// Data operands include call arguments and values used in operand bundles,
+ /// but does not include the callee operand. This routine dispatches to the
+ /// underlying AttributeList or the OperandBundleUser as appropriate.
+ ///
+ /// The index \p i is interpreted as
+ ///
+ /// \p i == Attribute::ReturnIndex -> the return value
+ /// \p i in [1, arg_size + 1) -> argument number (\p i - 1)
+ /// \p i in [arg_size + 1, data_operand_size + 1) -> bundle operand at index
+ /// (\p i - 1) in the operand list.
+ bool dataOperandHasImpliedAttr(unsigned i, Attribute::AttrKind Kind) const {
+ // Note that we have to add one because `i` isn't zero-indexed.
+ assert(i < (getNumArgOperands() + getNumTotalBundleOperands() + 1) &&
+ "Data operand index out of bounds!");
+
+ // The attribute A can either be directly specified, if the operand in
+ // question is a call argument; or be indirectly implied by the kind of its
+ // containing operand bundle, if the operand is a bundle operand.
+
+ if (i == AttributeList::ReturnIndex)
+ return hasRetAttr(Kind);
+
+ // FIXME: Avoid these i - 1 calculations and update the API to use
+ // zero-based indices.
+ if (i < (getNumArgOperands() + 1))
+ return paramHasAttr(i - 1, Kind);
+
+ assert(hasOperandBundles() && i >= (getBundleOperandsStartIndex() + 1) &&
+ "Must be either a call argument or an operand bundle!");
+ return bundleOperandHasAttr(i - 1, Kind);
+ }
+
+ /// Determine whether this data operand is not captured.
+ // FIXME: Once this API is no longer duplicated in `CallSite`, rename this to
+ // better indicate that this may return a conservative answer.
+ bool doesNotCapture(unsigned OpNo) const {
+ return dataOperandHasImpliedAttr(OpNo + 1, Attribute::NoCapture);
+ }
+
+ /// Determine whether this argument is passed by value.
+ bool isByValArgument(unsigned ArgNo) const {
+ return paramHasAttr(ArgNo, Attribute::ByVal);
+ }
+
+ /// Determine whether this argument is passed in an alloca.
+ bool isInAllocaArgument(unsigned ArgNo) const {
+ return paramHasAttr(ArgNo, Attribute::InAlloca);
+ }
+
+ /// Determine whether this argument is passed by value or in an alloca.
+ bool isByValOrInAllocaArgument(unsigned ArgNo) const {
+ return paramHasAttr(ArgNo, Attribute::ByVal) ||
+ paramHasAttr(ArgNo, Attribute::InAlloca);
+ }
+
+ /// Determine if there are is an inalloca argument. Only the last argument can
+ /// have the inalloca attribute.
+ bool hasInAllocaArgument() const {
+ return !arg_empty() && paramHasAttr(arg_size() - 1, Attribute::InAlloca);
+ }
+
+ // FIXME: Once this API is no longer duplicated in `CallSite`, rename this to
+ // better indicate that this may return a conservative answer.
+ bool doesNotAccessMemory(unsigned OpNo) const {
+ return dataOperandHasImpliedAttr(OpNo + 1, Attribute::ReadNone);
+ }
+
+ // FIXME: Once this API is no longer duplicated in `CallSite`, rename this to
+ // better indicate that this may return a conservative answer.
+ bool onlyReadsMemory(unsigned OpNo) const {
+ return dataOperandHasImpliedAttr(OpNo + 1, Attribute::ReadOnly) ||
+ dataOperandHasImpliedAttr(OpNo + 1, Attribute::ReadNone);
+ }
+
+ // FIXME: Once this API is no longer duplicated in `CallSite`, rename this to
+ // better indicate that this may return a conservative answer.
+ bool doesNotReadMemory(unsigned OpNo) const {
+ return dataOperandHasImpliedAttr(OpNo + 1, Attribute::WriteOnly) ||
+ dataOperandHasImpliedAttr(OpNo + 1, Attribute::ReadNone);
+ }
+
+ /// Extract the alignment of the return value.
+ unsigned getRetAlignment() const { return Attrs.getRetAlignment(); }
+
+ /// Extract the alignment for a call or parameter (0=unknown).
+ unsigned getParamAlignment(unsigned ArgNo) const {
+ return Attrs.getParamAlignment(ArgNo);
+ }
+
+ /// Extract the number of dereferenceable bytes for a call or
+ /// parameter (0=unknown).
+ uint64_t getDereferenceableBytes(unsigned i) const {
+ return Attrs.getDereferenceableBytes(i);
+ }
+
+ /// Extract the number of dereferenceable_or_null bytes for a call or
+ /// parameter (0=unknown).
+ uint64_t getDereferenceableOrNullBytes(unsigned i) const {
+ return Attrs.getDereferenceableOrNullBytes(i);
+ }
+
+ /// Return true if the return value is known to be not null.
+ /// This may be because it has the nonnull attribute, or because at least
+ /// one byte is dereferenceable and the pointer is in addrspace(0).
+ bool isReturnNonNull() const;
+
+ /// Determine if the return value is marked with NoAlias attribute.
+ bool returnDoesNotAlias() const {
+ return Attrs.hasAttribute(AttributeList::ReturnIndex, Attribute::NoAlias);
+ }
+
+ /// If one of the arguments has the 'returned' attribute, returns its
+ /// operand value. Otherwise, return nullptr.
+ Value *getReturnedArgOperand() const;
+
+ /// Return true if the call should not be treated as a call to a
+ /// builtin.
+ bool isNoBuiltin() const {
+ return hasFnAttrImpl(Attribute::NoBuiltin) &&
+ !hasFnAttrImpl(Attribute::Builtin);
+ }
+
+ /// Determine if the call requires strict floating point semantics.
+ bool isStrictFP() const { return hasFnAttr(Attribute::StrictFP); }
+
+ /// Return true if the call should not be inlined.
+ bool isNoInline() const { return hasFnAttr(Attribute::NoInline); }
+ void setIsNoInline() {
+ addAttribute(AttributeList::FunctionIndex, Attribute::NoInline);
+ }
+ /// Determine if the call does not access memory.
+ bool doesNotAccessMemory() const { return hasFnAttr(Attribute::ReadNone); }
+ void setDoesNotAccessMemory() {
+ addAttribute(AttributeList::FunctionIndex, Attribute::ReadNone);
+ }
+
+ /// Determine if the call does not access or only reads memory.
+ bool onlyReadsMemory() const {
+ return doesNotAccessMemory() || hasFnAttr(Attribute::ReadOnly);
+ }
+ void setOnlyReadsMemory() {
+ addAttribute(AttributeList::FunctionIndex, Attribute::ReadOnly);
+ }
+
+ /// Determine if the call does not access or only writes memory.
+ bool doesNotReadMemory() const {
+ return doesNotAccessMemory() || hasFnAttr(Attribute::WriteOnly);
+ }
+ void setDoesNotReadMemory() {
+ addAttribute(AttributeList::FunctionIndex, Attribute::WriteOnly);
+ }
+
+ /// Determine if the call can access memmory only using pointers based
+ /// on its arguments.
+ bool onlyAccessesArgMemory() const {
+ return hasFnAttr(Attribute::ArgMemOnly);
+ }
+ void setOnlyAccessesArgMemory() {
+ addAttribute(AttributeList::FunctionIndex, Attribute::ArgMemOnly);
+ }
+
+ /// Determine if the function may only access memory that is
+ /// inaccessible from the IR.
+ bool onlyAccessesInaccessibleMemory() const {
+ return hasFnAttr(Attribute::InaccessibleMemOnly);
+ }
+ void setOnlyAccessesInaccessibleMemory() {
+ addAttribute(AttributeList::FunctionIndex, Attribute::InaccessibleMemOnly);
+ }
+
+ /// Determine if the function may only access memory that is
+ /// either inaccessible from the IR or pointed to by its arguments.
+ bool onlyAccessesInaccessibleMemOrArgMem() const {
+ return hasFnAttr(Attribute::InaccessibleMemOrArgMemOnly);
+ }
+ void setOnlyAccessesInaccessibleMemOrArgMem() {
+ addAttribute(AttributeList::FunctionIndex,
+ Attribute::InaccessibleMemOrArgMemOnly);
+ }
+ /// Determine if the call cannot return.
+ bool doesNotReturn() const { return hasFnAttr(Attribute::NoReturn); }
+ void setDoesNotReturn() {
+ addAttribute(AttributeList::FunctionIndex, Attribute::NoReturn);
+ }
+
+ /// Determine if the call should not perform indirect branch tracking.
+ bool doesNoCfCheck() const { return hasFnAttr(Attribute::NoCfCheck); }
+
+ /// Determine if the call cannot unwind.
+ bool doesNotThrow() const { return hasFnAttr(Attribute::NoUnwind); }
+ void setDoesNotThrow() {
+ addAttribute(AttributeList::FunctionIndex, Attribute::NoUnwind);
+ }
+
+ /// Determine if the invoke cannot be duplicated.
+ bool cannotDuplicate() const { return hasFnAttr(Attribute::NoDuplicate); }
+ void setCannotDuplicate() {
+ addAttribute(AttributeList::FunctionIndex, Attribute::NoDuplicate);
+ }
+
+ /// Determine if the invoke is convergent
+ bool isConvergent() const { return hasFnAttr(Attribute::Convergent); }
+ void setConvergent() {
+ addAttribute(AttributeList::FunctionIndex, Attribute::Convergent);
+ }
+ void setNotConvergent() {
+ removeAttribute(AttributeList::FunctionIndex, Attribute::Convergent);
+ }
+
+ /// Determine if the call returns a structure through first
+ /// pointer argument.
+ bool hasStructRetAttr() const {
+ if (getNumArgOperands() == 0)
+ return false;
+
+ // Be friendly and also check the callee.
+ return paramHasAttr(0, Attribute::StructRet);
+ }
+
+ /// Determine if any call argument is an aggregate passed by value.
+ bool hasByValArgument() const {
+ return Attrs.hasAttrSomewhere(Attribute::ByVal);
+ }
+
+ ///@{
+ // End of attribute API.
+
+ /// \name Operand Bundle API
+ ///
+ /// This group of methods provides the API to access and manipulate operand
+ /// bundles on this call.
+ /// @{
+
/// Return the number of operand bundles associated with this User.
unsigned getNumOperandBundles() const {
return std::distance(bundle_op_info_begin(), bundle_op_info_end());
@@ -1175,6 +1658,16 @@
Idx < getBundleOperandsEndIndex();
}
+ /// Returns true if the use is a bundle operand.
+ bool isBundleOperand(const Use *U) const {
+ assert(this == U->getUser() &&
+ "Only valid to query with a use of this instruction!");
+ return hasOperandBundles() && isBundleOperand(U - op_begin());
+ }
+ bool isBundleOperand(Value::const_user_iterator UI) const {
+ return isBundleOperand(&UI.getUse());
+ }
+
/// Return the total number operands (not operand bundles) used by
/// every operand bundle in this OperandBundleUser.
unsigned getNumTotalBundleOperands() const {
@@ -1304,8 +1797,7 @@
/// Return true if \p Other has the same sequence of operand bundle
/// tags with the same number of operands on each one of them as this
/// OperandBundleUser.
- bool hasIdenticalOperandBundleSchema(
- const OperandBundleUser<InstrTy, OpIteratorTy> &Other) const {
+ bool hasIdenticalOperandBundleSchema(const CallBase &Other) const {
if (getNumOperandBundles() != Other.getNumOperandBundles())
return false;
@@ -1324,7 +1816,6 @@
return false;
}
-protected:
/// Is the function attribute S disallowed by some operand bundle on
/// this operand bundle user?
bool isFnAttrDisallowedByOpBundle(StringRef S) const {
@@ -1383,8 +1874,8 @@
/// OperandBundleUse.
OperandBundleUse
operandBundleFromBundleOpInfo(const BundleOpInfo &BOI) const {
- auto op_begin = static_cast<const InstrTy *>(this)->op_begin();
- ArrayRef<Use> Inputs(op_begin + BOI.Begin, op_begin + BOI.End);
+ auto begin = op_begin();
+ ArrayRef<Use> Inputs(begin + BOI.Begin, begin + BOI.End);
return OperandBundleUse(BOI.Tag, Inputs);
}
@@ -1393,37 +1884,79 @@
/// Return the start of the list of BundleOpInfo instances associated
/// with this OperandBundleUser.
+ ///
+ /// OperandBundleUser uses the descriptor area co-allocated with the host User
+ /// to store some meta information about which operands are "normal" operands,
+ /// and which ones belong to some operand bundle.
+ ///
+ /// The layout of an operand bundle user is
+ ///
+ /// +-----------uint32_t End-------------------------------------+
+ /// | |
+ /// | +--------uint32_t Begin--------------------+ |
+ /// | | | |
+ /// ^ ^ v v
+ /// |------|------|----|----|----|----|----|---------|----|---------|----|-----
+ /// | BOI0 | BOI1 | .. | DU | U0 | U1 | .. | BOI0_U0 | .. | BOI1_U0 | .. | Un
+ /// |------|------|----|----|----|----|----|---------|----|---------|----|-----
+ /// v v ^ ^
+ /// | | | |
+ /// | +--------uint32_t Begin------------+ |
+ /// | |
+ /// +-----------uint32_t End-----------------------------+
+ ///
+ ///
+ /// BOI0, BOI1 ... are descriptions of operand bundles in this User's use
+ /// list. These descriptions are installed and managed by this class, and
+ /// they're all instances of OperandBundleUser<T>::BundleOpInfo.
+ ///
+ /// DU is an additional descriptor installed by User's 'operator new' to keep
+ /// track of the 'BOI0 ... BOIN' co-allocation. OperandBundleUser does not
+ /// access or modify DU in any way, it's an implementation detail private to
+ /// User.
+ ///
+ /// The regular Use& vector for the User starts at U0. The operand bundle
+ /// uses are part of the Use& vector, just like normal uses. In the diagram
+ /// above, the operand bundle uses start at BOI0_U0. Each instance of
+ /// BundleOpInfo has information about a contiguous set of uses constituting
+ /// an operand bundle, and the total set of operand bundle uses themselves
+ /// form a contiguous set of uses (i.e. there are no gaps between uses
+ /// corresponding to individual operand bundles).
+ ///
+ /// This class does not know the location of the set of operand bundle uses
+ /// within the use list -- that is decided by the User using this class via
+ /// the BeginIdx argument in populateBundleOperandInfos.
+ ///
+ /// Currently operand bundle users with hung-off operands are not supported.
bundle_op_iterator bundle_op_info_begin() {
- if (!static_cast<InstrTy *>(this)->hasDescriptor())
+ if (!hasDescriptor())
return nullptr;
- uint8_t *BytesBegin = static_cast<InstrTy *>(this)->getDescriptor().begin();
+ uint8_t *BytesBegin = getDescriptor().begin();
return reinterpret_cast<bundle_op_iterator>(BytesBegin);
}
/// Return the start of the list of BundleOpInfo instances associated
/// with this OperandBundleUser.
const_bundle_op_iterator bundle_op_info_begin() const {
- auto *NonConstThis =
- const_cast<OperandBundleUser<InstrTy, OpIteratorTy> *>(this);
+ auto *NonConstThis = const_cast<CallBase *>(this);
return NonConstThis->bundle_op_info_begin();
}
/// Return the end of the list of BundleOpInfo instances associated
/// with this OperandBundleUser.
bundle_op_iterator bundle_op_info_end() {
- if (!static_cast<InstrTy *>(this)->hasDescriptor())
+ if (!hasDescriptor())
return nullptr;
- uint8_t *BytesEnd = static_cast<InstrTy *>(this)->getDescriptor().end();
+ uint8_t *BytesEnd = getDescriptor().end();
return reinterpret_cast<bundle_op_iterator>(BytesEnd);
}
/// Return the end of the list of BundleOpInfo instances associated
/// with this OperandBundleUser.
const_bundle_op_iterator bundle_op_info_end() const {
- auto *NonConstThis =
- const_cast<OperandBundleUser<InstrTy, OpIteratorTy> *>(this);
+ auto *NonConstThis = const_cast<CallBase *>(this);
return NonConstThis->bundle_op_info_end();
}
@@ -1443,30 +1976,8 @@
///
/// Each \p OperandBundleDef instance is tracked by a OperandBundleInfo
/// instance allocated in this User's descriptor.
- OpIteratorTy populateBundleOperandInfos(ArrayRef<OperandBundleDef> Bundles,
- const unsigned BeginIndex) {
- auto It = static_cast<InstrTy *>(this)->op_begin() + BeginIndex;
- for (auto &B : Bundles)
- It = std::copy(B.input_begin(), B.input_end(), It);
-
- auto *ContextImpl = static_cast<InstrTy *>(this)->getContext().pImpl;
- auto BI = Bundles.begin();
- unsigned CurrentIndex = BeginIndex;
-
- for (auto &BOI : bundle_op_infos()) {
- assert(BI != Bundles.end() && "Incorrect allocation?");
-
- BOI.Tag = ContextImpl->getOrInsertBundleTag(BI->getTag());
- BOI.Begin = CurrentIndex;
- BOI.End = CurrentIndex + BI->input_size();
- CurrentIndex = BOI.End;
- BI++;
- }
-
- assert(BI == Bundles.end() && "Incorrect allocation?");
-
- return It;
- }
+ op_iterator populateBundleOperandInfos(ArrayRef<OperandBundleDef> Bundles,
+ const unsigned BeginIndex);
/// Return the BundleOpInfo for the operand at index OpIdx.
///
@@ -1480,6 +1991,7 @@
llvm_unreachable("Did not find operand bundle for operand!");
}
+protected:
/// Return the total number of values used in \p Bundles.
static unsigned CountBundleInputs(ArrayRef<OperandBundleDef> Bundles) {
unsigned Total = 0;
@@ -1487,8 +1999,102 @@
Total += B.input_size();
return Total;
}
+
+ /// @}
+ // End of operand bundle API.
+
+private:
+ bool hasFnAttrOnCalledFunction(Attribute::AttrKind Kind) const;
+ bool hasFnAttrOnCalledFunction(StringRef Kind) const;
+
+ template <typename AttrKind> bool hasFnAttrImpl(AttrKind Kind) const {
+ if (Attrs.hasAttribute(AttributeList::FunctionIndex, Kind))
+ return true;
+
+ // Operand bundles override attributes on the called function, but don't
+ // override attributes directly present on the call instruction.
+ if (isFnAttrDisallowedByOpBundle(Kind))
+ return false;
+
+ return hasFnAttrOnCalledFunction(Kind);
+ }
};
+template <>
+struct OperandTraits<CallBase> : public VariadicOperandTraits<CallBase, 1> {};
+
+DEFINE_TRANSPARENT_OPERAND_ACCESSORS(CallBase, Value)
+
+//===----------------------------------------------------------------------===//
+// FuncletPadInst Class
+//===----------------------------------------------------------------------===//
+class FuncletPadInst : public Instruction {
+private:
+ FuncletPadInst(const FuncletPadInst &CPI);
+
+ explicit FuncletPadInst(Instruction::FuncletPadOps Op, Value *ParentPad,
+ ArrayRef<Value *> Args, unsigned Values,
+ const Twine &NameStr, Instruction *InsertBefore);
+ explicit FuncletPadInst(Instruction::FuncletPadOps Op, Value *ParentPad,
+ ArrayRef<Value *> Args, unsigned Values,
+ const Twine &NameStr, BasicBlock *InsertAtEnd);
+
+ void init(Value *ParentPad, ArrayRef<Value *> Args, const Twine &NameStr);
+
+protected:
+ // Note: Instruction needs to be a friend here to call cloneImpl.
+ friend class Instruction;
+ friend class CatchPadInst;
+ friend class CleanupPadInst;
+
+ FuncletPadInst *cloneImpl() const;
+
+public:
+ /// Provide fast operand accessors
+ DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value);
+
+ /// getNumArgOperands - Return the number of funcletpad arguments.
+ ///
+ unsigned getNumArgOperands() const { return getNumOperands() - 1; }
+
+ /// Convenience accessors
+
+ /// Return the outer EH-pad this funclet is nested within.
+ ///
+ /// Note: This returns the associated CatchSwitchInst if this FuncletPadInst
+ /// is a CatchPadInst.
+ Value *getParentPad() const { return Op<-1>(); }
+ void setParentPad(Value *ParentPad) {
+ assert(ParentPad);
+ Op<-1>() = ParentPad;
+ }
+
+ /// getArgOperand/setArgOperand - Return/set the i-th funcletpad argument.
+ ///
+ Value *getArgOperand(unsigned i) const { return getOperand(i); }
+ void setArgOperand(unsigned i, Value *v) { setOperand(i, v); }
+
+ /// arg_operands - iteration adapter for range-for loops.
+ op_range arg_operands() { return op_range(op_begin(), op_end() - 1); }
+
+ /// arg_operands - iteration adapter for range-for loops.
+ const_op_range arg_operands() const {
+ return const_op_range(op_begin(), op_end() - 1);
+ }
+
+ // Methods for support type inquiry through isa, cast, and dyn_cast:
+ static bool classof(const Instruction *I) { return I->isFuncletPad(); }
+ static bool classof(const Value *V) {
+ return isa<Instruction>(V) && classof(cast<Instruction>(V));
+ }
+};
+
+template <>
+struct OperandTraits<FuncletPadInst>
+ : public VariadicOperandTraits<FuncletPadInst, /*MINARITY=*/1> {};
+
+DEFINE_TRANSPARENT_OPERAND_ACCESSORS(FuncletPadInst, Value)
+
} // end namespace llvm
#endif // LLVM_IR_INSTRTYPES_H
diff --git a/linux-x64/clang/include/llvm/IR/Instruction.def b/linux-x64/clang/include/llvm/IR/Instruction.def
index 8661729..41cdf61 100644
--- a/linux-x64/clang/include/llvm/IR/Instruction.def
+++ b/linux-x64/clang/include/llvm/IR/Instruction.def
@@ -1,9 +1,8 @@
//===-- llvm/Instruction.def - File that describes Instructions -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -32,6 +31,20 @@
#define LAST_TERM_INST(num)
#endif
+#ifndef FIRST_UNARY_INST
+#define FIRST_UNARY_INST(num)
+#endif
+#ifndef HANDLE_UNARY_INST
+#ifndef HANDLE_INST
+#define HANDLE_UNARY_INST(num, opcode, instclass)
+#else
+#define HANDLE_UNARY_INST(num, opcode, Class) HANDLE_INST(num, opcode, Class)
+#endif
+#endif
+#ifndef LAST_UNARY_INST
+#define LAST_UNARY_INST(num)
+#endif
+
#ifndef FIRST_BINARY_INST
#define FIRST_BINARY_INST(num)
#endif
@@ -121,89 +134,99 @@
HANDLE_TERM_INST ( 8, CleanupRet , CleanupReturnInst)
HANDLE_TERM_INST ( 9, CatchRet , CatchReturnInst)
HANDLE_TERM_INST (10, CatchSwitch , CatchSwitchInst)
- LAST_TERM_INST (10)
+HANDLE_TERM_INST (11, CallBr , CallBrInst) // A call-site terminator
+ LAST_TERM_INST (11)
+
+// Standard unary operators...
+ FIRST_UNARY_INST(12)
+HANDLE_UNARY_INST(12, FNeg , UnaryOperator)
+ LAST_UNARY_INST(12)
// Standard binary operators...
- FIRST_BINARY_INST(11)
-HANDLE_BINARY_INST(11, Add , BinaryOperator)
-HANDLE_BINARY_INST(12, FAdd , BinaryOperator)
-HANDLE_BINARY_INST(13, Sub , BinaryOperator)
-HANDLE_BINARY_INST(14, FSub , BinaryOperator)
-HANDLE_BINARY_INST(15, Mul , BinaryOperator)
-HANDLE_BINARY_INST(16, FMul , BinaryOperator)
-HANDLE_BINARY_INST(17, UDiv , BinaryOperator)
-HANDLE_BINARY_INST(18, SDiv , BinaryOperator)
-HANDLE_BINARY_INST(19, FDiv , BinaryOperator)
-HANDLE_BINARY_INST(20, URem , BinaryOperator)
-HANDLE_BINARY_INST(21, SRem , BinaryOperator)
-HANDLE_BINARY_INST(22, FRem , BinaryOperator)
+ FIRST_BINARY_INST(13)
+HANDLE_BINARY_INST(13, Add , BinaryOperator)
+HANDLE_BINARY_INST(14, FAdd , BinaryOperator)
+HANDLE_BINARY_INST(15, Sub , BinaryOperator)
+HANDLE_BINARY_INST(16, FSub , BinaryOperator)
+HANDLE_BINARY_INST(17, Mul , BinaryOperator)
+HANDLE_BINARY_INST(18, FMul , BinaryOperator)
+HANDLE_BINARY_INST(19, UDiv , BinaryOperator)
+HANDLE_BINARY_INST(20, SDiv , BinaryOperator)
+HANDLE_BINARY_INST(21, FDiv , BinaryOperator)
+HANDLE_BINARY_INST(22, URem , BinaryOperator)
+HANDLE_BINARY_INST(23, SRem , BinaryOperator)
+HANDLE_BINARY_INST(24, FRem , BinaryOperator)
// Logical operators (integer operands)
-HANDLE_BINARY_INST(23, Shl , BinaryOperator) // Shift left (logical)
-HANDLE_BINARY_INST(24, LShr , BinaryOperator) // Shift right (logical)
-HANDLE_BINARY_INST(25, AShr , BinaryOperator) // Shift right (arithmetic)
-HANDLE_BINARY_INST(26, And , BinaryOperator)
-HANDLE_BINARY_INST(27, Or , BinaryOperator)
-HANDLE_BINARY_INST(28, Xor , BinaryOperator)
- LAST_BINARY_INST(28)
+HANDLE_BINARY_INST(25, Shl , BinaryOperator) // Shift left (logical)
+HANDLE_BINARY_INST(26, LShr , BinaryOperator) // Shift right (logical)
+HANDLE_BINARY_INST(27, AShr , BinaryOperator) // Shift right (arithmetic)
+HANDLE_BINARY_INST(28, And , BinaryOperator)
+HANDLE_BINARY_INST(29, Or , BinaryOperator)
+HANDLE_BINARY_INST(30, Xor , BinaryOperator)
+ LAST_BINARY_INST(30)
// Memory operators...
- FIRST_MEMORY_INST(29)
-HANDLE_MEMORY_INST(29, Alloca, AllocaInst) // Stack management
-HANDLE_MEMORY_INST(30, Load , LoadInst ) // Memory manipulation instrs
-HANDLE_MEMORY_INST(31, Store , StoreInst )
-HANDLE_MEMORY_INST(32, GetElementPtr, GetElementPtrInst)
-HANDLE_MEMORY_INST(33, Fence , FenceInst )
-HANDLE_MEMORY_INST(34, AtomicCmpXchg , AtomicCmpXchgInst )
-HANDLE_MEMORY_INST(35, AtomicRMW , AtomicRMWInst )
- LAST_MEMORY_INST(35)
+ FIRST_MEMORY_INST(31)
+HANDLE_MEMORY_INST(31, Alloca, AllocaInst) // Stack management
+HANDLE_MEMORY_INST(32, Load , LoadInst ) // Memory manipulation instrs
+HANDLE_MEMORY_INST(33, Store , StoreInst )
+HANDLE_MEMORY_INST(34, GetElementPtr, GetElementPtrInst)
+HANDLE_MEMORY_INST(35, Fence , FenceInst )
+HANDLE_MEMORY_INST(36, AtomicCmpXchg , AtomicCmpXchgInst )
+HANDLE_MEMORY_INST(37, AtomicRMW , AtomicRMWInst )
+ LAST_MEMORY_INST(37)
// Cast operators ...
// NOTE: The order matters here because CastInst::isEliminableCastPair
// NOTE: (see Instructions.cpp) encodes a table based on this ordering.
- FIRST_CAST_INST(36)
-HANDLE_CAST_INST(36, Trunc , TruncInst ) // Truncate integers
-HANDLE_CAST_INST(37, ZExt , ZExtInst ) // Zero extend integers
-HANDLE_CAST_INST(38, SExt , SExtInst ) // Sign extend integers
-HANDLE_CAST_INST(39, FPToUI , FPToUIInst ) // floating point -> UInt
-HANDLE_CAST_INST(40, FPToSI , FPToSIInst ) // floating point -> SInt
-HANDLE_CAST_INST(41, UIToFP , UIToFPInst ) // UInt -> floating point
-HANDLE_CAST_INST(42, SIToFP , SIToFPInst ) // SInt -> floating point
-HANDLE_CAST_INST(43, FPTrunc , FPTruncInst ) // Truncate floating point
-HANDLE_CAST_INST(44, FPExt , FPExtInst ) // Extend floating point
-HANDLE_CAST_INST(45, PtrToInt, PtrToIntInst) // Pointer -> Integer
-HANDLE_CAST_INST(46, IntToPtr, IntToPtrInst) // Integer -> Pointer
-HANDLE_CAST_INST(47, BitCast , BitCastInst ) // Type cast
-HANDLE_CAST_INST(48, AddrSpaceCast, AddrSpaceCastInst) // addrspace cast
- LAST_CAST_INST(48)
+ FIRST_CAST_INST(38)
+HANDLE_CAST_INST(38, Trunc , TruncInst ) // Truncate integers
+HANDLE_CAST_INST(39, ZExt , ZExtInst ) // Zero extend integers
+HANDLE_CAST_INST(40, SExt , SExtInst ) // Sign extend integers
+HANDLE_CAST_INST(41, FPToUI , FPToUIInst ) // floating point -> UInt
+HANDLE_CAST_INST(42, FPToSI , FPToSIInst ) // floating point -> SInt
+HANDLE_CAST_INST(43, UIToFP , UIToFPInst ) // UInt -> floating point
+HANDLE_CAST_INST(44, SIToFP , SIToFPInst ) // SInt -> floating point
+HANDLE_CAST_INST(45, FPTrunc , FPTruncInst ) // Truncate floating point
+HANDLE_CAST_INST(46, FPExt , FPExtInst ) // Extend floating point
+HANDLE_CAST_INST(47, PtrToInt, PtrToIntInst) // Pointer -> Integer
+HANDLE_CAST_INST(48, IntToPtr, IntToPtrInst) // Integer -> Pointer
+HANDLE_CAST_INST(49, BitCast , BitCastInst ) // Type cast
+HANDLE_CAST_INST(50, AddrSpaceCast, AddrSpaceCastInst) // addrspace cast
+ LAST_CAST_INST(50)
- FIRST_FUNCLETPAD_INST(49)
-HANDLE_FUNCLETPAD_INST(49, CleanupPad, CleanupPadInst)
-HANDLE_FUNCLETPAD_INST(50, CatchPad , CatchPadInst)
- LAST_FUNCLETPAD_INST(50)
+ FIRST_FUNCLETPAD_INST(51)
+HANDLE_FUNCLETPAD_INST(51, CleanupPad, CleanupPadInst)
+HANDLE_FUNCLETPAD_INST(52, CatchPad , CatchPadInst)
+ LAST_FUNCLETPAD_INST(52)
// Other operators...
- FIRST_OTHER_INST(51)
-HANDLE_OTHER_INST(51, ICmp , ICmpInst ) // Integer comparison instruction
-HANDLE_OTHER_INST(52, FCmp , FCmpInst ) // Floating point comparison instr.
-HANDLE_OTHER_INST(53, PHI , PHINode ) // PHI node instruction
-HANDLE_OTHER_INST(54, Call , CallInst ) // Call a function
-HANDLE_OTHER_INST(55, Select , SelectInst ) // select instruction
-HANDLE_USER_INST (56, UserOp1, Instruction) // May be used internally in a pass
-HANDLE_USER_INST (57, UserOp2, Instruction) // Internal to passes only
-HANDLE_OTHER_INST(58, VAArg , VAArgInst ) // vaarg instruction
-HANDLE_OTHER_INST(59, ExtractElement, ExtractElementInst)// extract from vector
-HANDLE_OTHER_INST(60, InsertElement, InsertElementInst) // insert into vector
-HANDLE_OTHER_INST(61, ShuffleVector, ShuffleVectorInst) // shuffle two vectors.
-HANDLE_OTHER_INST(62, ExtractValue, ExtractValueInst)// extract from aggregate
-HANDLE_OTHER_INST(63, InsertValue, InsertValueInst) // insert into aggregate
-HANDLE_OTHER_INST(64, LandingPad, LandingPadInst) // Landing pad instruction.
- LAST_OTHER_INST(64)
+ FIRST_OTHER_INST(53)
+HANDLE_OTHER_INST(53, ICmp , ICmpInst ) // Integer comparison instruction
+HANDLE_OTHER_INST(54, FCmp , FCmpInst ) // Floating point comparison instr.
+HANDLE_OTHER_INST(55, PHI , PHINode ) // PHI node instruction
+HANDLE_OTHER_INST(56, Call , CallInst ) // Call a function
+HANDLE_OTHER_INST(57, Select , SelectInst ) // select instruction
+HANDLE_USER_INST (58, UserOp1, Instruction) // May be used internally in a pass
+HANDLE_USER_INST (59, UserOp2, Instruction) // Internal to passes only
+HANDLE_OTHER_INST(60, VAArg , VAArgInst ) // vaarg instruction
+HANDLE_OTHER_INST(61, ExtractElement, ExtractElementInst)// extract from vector
+HANDLE_OTHER_INST(62, InsertElement, InsertElementInst) // insert into vector
+HANDLE_OTHER_INST(63, ShuffleVector, ShuffleVectorInst) // shuffle two vectors.
+HANDLE_OTHER_INST(64, ExtractValue, ExtractValueInst)// extract from aggregate
+HANDLE_OTHER_INST(65, InsertValue, InsertValueInst) // insert into aggregate
+HANDLE_OTHER_INST(66, LandingPad, LandingPadInst) // Landing pad instruction.
+ LAST_OTHER_INST(66)
#undef FIRST_TERM_INST
#undef HANDLE_TERM_INST
#undef LAST_TERM_INST
+#undef FIRST_UNARY_INST
+#undef HANDLE_UNARY_INST
+#undef LAST_UNARY_INST
+
#undef FIRST_BINARY_INST
#undef HANDLE_BINARY_INST
#undef LAST_BINARY_INST
diff --git a/linux-x64/clang/include/llvm/IR/Instruction.h b/linux-x64/clang/include/llvm/IR/Instruction.h
index 2a75801..b940d12 100644
--- a/linux-x64/clang/include/llvm/IR/Instruction.h
+++ b/linux-x64/clang/include/llvm/IR/Instruction.h
@@ -1,9 +1,8 @@
//===-- llvm/Instruction.h - Instruction class definition -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -127,6 +126,7 @@
const char *getOpcodeName() const { return getOpcodeName(getOpcode()); }
bool isTerminator() const { return isTerminator(getOpcode()); }
+ bool isUnaryOp() const { return isUnaryOp(getOpcode()); }
bool isBinaryOp() const { return isBinaryOp(getOpcode()); }
bool isIntDivRem() const { return isIntDivRem(getOpcode()); }
bool isShift() { return isShift(getOpcode()); }
@@ -135,6 +135,9 @@
bool isExceptionalTerminator() const {
return isExceptionalTerminator(getOpcode());
}
+ bool isIndirectTerminator() const {
+ return isIndirectTerminator(getOpcode());
+ }
static const char* getOpcodeName(unsigned OpCode);
@@ -142,6 +145,9 @@
return OpCode >= TermOpsBegin && OpCode < TermOpsEnd;
}
+ static inline bool isUnaryOp(unsigned Opcode) {
+ return Opcode >= UnaryOpsBegin && Opcode < UnaryOpsEnd;
+ }
static inline bool isBinaryOp(unsigned Opcode) {
return Opcode >= BinaryOpsBegin && Opcode < BinaryOpsEnd;
}
@@ -199,6 +205,17 @@
}
}
+ /// Returns true if the OpCode is a terminator with indirect targets.
+ static inline bool isIndirectTerminator(unsigned OpCode) {
+ switch (OpCode) {
+ case Instruction::IndirectBr:
+ case Instruction::CallBr:
+ return true;
+ default:
+ return false;
+ }
+ }
+
//===--------------------------------------------------------------------===//
// Metadata manipulation.
//===--------------------------------------------------------------------===//
@@ -578,6 +595,10 @@
}
}
+ /// Return true if the instruction is a llvm.lifetime.start or
+ /// llvm.lifetime.end marker.
+ bool isLifetimeStartOrEnd() const;
+
/// Return a pointer to the next non-debug instruction in the same basic
/// block as 'this', or nullptr if no such instruction exists.
const Instruction *getNextNonDebugInstruction() const;
@@ -586,6 +607,14 @@
static_cast<const Instruction *>(this)->getNextNonDebugInstruction());
}
+ /// Return a pointer to the previous non-debug instruction in the same basic
+ /// block as 'this', or nullptr if no such instruction exists.
+ const Instruction *getPrevNonDebugInstruction() const;
+ Instruction *getPrevNonDebugInstruction() {
+ return const_cast<Instruction *>(
+ static_cast<const Instruction *>(this)->getPrevNonDebugInstruction());
+ }
+
/// Create a copy of 'this' instruction that is identical in all ways except
/// the following:
/// * The instruction has no parent
@@ -654,6 +683,13 @@
#include "llvm/IR/Instruction.def"
};
+ enum UnaryOps {
+#define FIRST_UNARY_INST(N) UnaryOpsBegin = N,
+#define HANDLE_UNARY_INST(N, OPC, CLASS) OPC = N,
+#define LAST_UNARY_INST(N) UnaryOpsEnd = N+1
+#include "llvm/IR/Instruction.def"
+ };
+
enum BinaryOps {
#define FIRST_BINARY_INST(N) BinaryOpsBegin = N,
#define HANDLE_BINARY_INST(N, OPC, CLASS) OPC = N,
diff --git a/linux-x64/clang/include/llvm/IR/Instructions.h b/linux-x64/clang/include/llvm/IR/Instructions.h
index 8bdc935..a82ceda 100644
--- a/linux-x64/clang/include/llvm/IR/Instructions.h
+++ b/linux-x64/clang/include/llvm/IR/Instructions.h
@@ -1,9 +1,8 @@
//===- llvm/Instructions.h - Instruction subclass definitions ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -175,47 +174,58 @@
LoadInst *cloneImpl() const;
public:
- LoadInst(Value *Ptr, const Twine &NameStr, Instruction *InsertBefore);
- LoadInst(Value *Ptr, const Twine &NameStr, BasicBlock *InsertAtEnd);
- LoadInst(Type *Ty, Value *Ptr, const Twine &NameStr, bool isVolatile = false,
+ LoadInst(Type *Ty, Value *Ptr, const Twine &NameStr = "",
Instruction *InsertBefore = nullptr);
- LoadInst(Value *Ptr, const Twine &NameStr, bool isVolatile = false,
- Instruction *InsertBefore = nullptr)
- : LoadInst(cast<PointerType>(Ptr->getType())->getElementType(), Ptr,
- NameStr, isVolatile, InsertBefore) {}
- LoadInst(Value *Ptr, const Twine &NameStr, bool isVolatile,
+ LoadInst(Type *Ty, Value *Ptr, const Twine &NameStr, BasicBlock *InsertAtEnd);
+ LoadInst(Type *Ty, Value *Ptr, const Twine &NameStr, bool isVolatile,
+ Instruction *InsertBefore = nullptr);
+ LoadInst(Type *Ty, Value *Ptr, const Twine &NameStr, bool isVolatile,
BasicBlock *InsertAtEnd);
- LoadInst(Value *Ptr, const Twine &NameStr, bool isVolatile, unsigned Align,
- Instruction *InsertBefore = nullptr)
- : LoadInst(cast<PointerType>(Ptr->getType())->getElementType(), Ptr,
- NameStr, isVolatile, Align, InsertBefore) {}
LoadInst(Type *Ty, Value *Ptr, const Twine &NameStr, bool isVolatile,
unsigned Align, Instruction *InsertBefore = nullptr);
- LoadInst(Value *Ptr, const Twine &NameStr, bool isVolatile,
+ LoadInst(Type *Ty, Value *Ptr, const Twine &NameStr, bool isVolatile,
unsigned Align, BasicBlock *InsertAtEnd);
- LoadInst(Value *Ptr, const Twine &NameStr, bool isVolatile, unsigned Align,
- AtomicOrdering Order, SyncScope::ID SSID = SyncScope::System,
- Instruction *InsertBefore = nullptr)
- : LoadInst(cast<PointerType>(Ptr->getType())->getElementType(), Ptr,
- NameStr, isVolatile, Align, Order, SSID, InsertBefore) {}
LoadInst(Type *Ty, Value *Ptr, const Twine &NameStr, bool isVolatile,
unsigned Align, AtomicOrdering Order,
SyncScope::ID SSID = SyncScope::System,
Instruction *InsertBefore = nullptr);
- LoadInst(Value *Ptr, const Twine &NameStr, bool isVolatile,
+ LoadInst(Type *Ty, Value *Ptr, const Twine &NameStr, bool isVolatile,
unsigned Align, AtomicOrdering Order, SyncScope::ID SSID,
BasicBlock *InsertAtEnd);
- LoadInst(Value *Ptr, const char *NameStr, Instruction *InsertBefore);
- LoadInst(Value *Ptr, const char *NameStr, BasicBlock *InsertAtEnd);
- LoadInst(Type *Ty, Value *Ptr, const char *NameStr = nullptr,
- bool isVolatile = false, Instruction *InsertBefore = nullptr);
- explicit LoadInst(Value *Ptr, const char *NameStr = nullptr,
- bool isVolatile = false,
+
+ // Deprecated [opaque pointer types]
+ explicit LoadInst(Value *Ptr, const Twine &NameStr = "",
Instruction *InsertBefore = nullptr)
- : LoadInst(cast<PointerType>(Ptr->getType())->getElementType(), Ptr,
- NameStr, isVolatile, InsertBefore) {}
- LoadInst(Value *Ptr, const char *NameStr, bool isVolatile,
- BasicBlock *InsertAtEnd);
+ : LoadInst(Ptr->getType()->getPointerElementType(), Ptr, NameStr,
+ InsertBefore) {}
+ LoadInst(Value *Ptr, const Twine &NameStr, BasicBlock *InsertAtEnd)
+ : LoadInst(Ptr->getType()->getPointerElementType(), Ptr, NameStr,
+ InsertAtEnd) {}
+ LoadInst(Value *Ptr, const Twine &NameStr, bool isVolatile,
+ Instruction *InsertBefore = nullptr)
+ : LoadInst(Ptr->getType()->getPointerElementType(), Ptr, NameStr,
+ isVolatile, InsertBefore) {}
+ LoadInst(Value *Ptr, const Twine &NameStr, bool isVolatile,
+ BasicBlock *InsertAtEnd)
+ : LoadInst(Ptr->getType()->getPointerElementType(), Ptr, NameStr,
+ isVolatile, InsertAtEnd) {}
+ LoadInst(Value *Ptr, const Twine &NameStr, bool isVolatile, unsigned Align,
+ Instruction *InsertBefore = nullptr)
+ : LoadInst(Ptr->getType()->getPointerElementType(), Ptr, NameStr,
+ isVolatile, Align, InsertBefore) {}
+ LoadInst(Value *Ptr, const Twine &NameStr, bool isVolatile, unsigned Align,
+ BasicBlock *InsertAtEnd)
+ : LoadInst(Ptr->getType()->getPointerElementType(), Ptr, NameStr,
+ isVolatile, Align, InsertAtEnd) {}
+ LoadInst(Value *Ptr, const Twine &NameStr, bool isVolatile, unsigned Align,
+ AtomicOrdering Order, SyncScope::ID SSID = SyncScope::System,
+ Instruction *InsertBefore = nullptr)
+ : LoadInst(Ptr->getType()->getPointerElementType(), Ptr, NameStr,
+ isVolatile, Align, Order, SSID, InsertBefore) {}
+ LoadInst(Value *Ptr, const Twine &NameStr, bool isVolatile, unsigned Align,
+ AtomicOrdering Order, SyncScope::ID SSID, BasicBlock *InsertAtEnd)
+ : LoadInst(Ptr->getType()->getPointerElementType(), Ptr, NameStr,
+ isVolatile, Align, Order, SSID, InsertAtEnd) {}
/// Return true if this is a load from a volatile memory location.
bool isVolatile() const { return getSubclassDataFromInstruction() & 1; }
@@ -714,8 +724,14 @@
/// *p = old <unsigned v ? old : v
UMin,
+ /// *p = old + v
+ FAdd,
+
+ /// *p = old - v
+ FSub,
+
FIRST_BINOP = Xchg,
- LAST_BINOP = UMin,
+ LAST_BINOP = FSub,
BAD_BINOP
};
@@ -737,6 +753,16 @@
static StringRef getOperationName(BinOp Op);
+ static bool isFPOperation(BinOp Op) {
+ switch (Op) {
+ case AtomicRMWInst::FAdd:
+ case AtomicRMWInst::FSub:
+ return true;
+ default:
+ return false;
+ }
+ }
+
void setOperation(BinOp Operation) {
unsigned short SubclassData = getSubclassDataFromInstruction();
setInstructionSubclassData((SubclassData & 31) |
@@ -794,6 +820,10 @@
return getPointerOperand()->getType()->getPointerAddressSpace();
}
+ bool isFloatingPointOperation() const {
+ return isFPOperation(getOperation());
+ }
+
// Methods for support type inquiry through isa, cast, and dyn_cast:
static bool classof(const Instruction *I) {
return I->getOpcode() == Instruction::AtomicRMW;
@@ -1104,6 +1134,71 @@
DEFINE_TRANSPARENT_OPERAND_ACCESSORS(GetElementPtrInst, Value)
//===----------------------------------------------------------------------===//
+// UnaryOperator Class
+//===----------------------------------------------------------------------===//
+
+/// a unary instruction
+class UnaryOperator : public UnaryInstruction {
+ void AssertOK();
+
+protected:
+ UnaryOperator(UnaryOps iType, Value *S, Type *Ty,
+ const Twine &Name, Instruction *InsertBefore);
+ UnaryOperator(UnaryOps iType, Value *S, Type *Ty,
+ const Twine &Name, BasicBlock *InsertAtEnd);
+
+ // Note: Instruction needs to be a friend here to call cloneImpl.
+ friend class Instruction;
+
+ UnaryOperator *cloneImpl() const;
+
+public:
+
+ /// Construct a unary instruction, given the opcode and an operand.
+ /// Optionally (if InstBefore is specified) insert the instruction
+ /// into a BasicBlock right before the specified instruction. The specified
+ /// Instruction is allowed to be a dereferenced end iterator.
+ ///
+ static UnaryOperator *Create(UnaryOps Op, Value *S,
+ const Twine &Name = Twine(),
+ Instruction *InsertBefore = nullptr);
+
+ /// Construct a unary instruction, given the opcode and an operand.
+ /// Also automatically insert this instruction to the end of the
+ /// BasicBlock specified.
+ ///
+ static UnaryOperator *Create(UnaryOps Op, Value *S,
+ const Twine &Name,
+ BasicBlock *InsertAtEnd);
+
+ /// These methods just forward to Create, and are useful when you
+ /// statically know what type of instruction you're going to create. These
+ /// helpers just save some typing.
+#define HANDLE_UNARY_INST(N, OPC, CLASS) \
+ static UnaryInstruction *Create##OPC(Value *V, \
+ const Twine &Name = "") {\
+ return Create(Instruction::OPC, V, Name);\
+ }
+#include "llvm/IR/Instruction.def"
+#define HANDLE_UNARY_INST(N, OPC, CLASS) \
+ static UnaryInstruction *Create##OPC(Value *V, \
+ const Twine &Name, BasicBlock *BB) {\
+ return Create(Instruction::OPC, V, Name, BB);\
+ }
+#include "llvm/IR/Instruction.def"
+#define HANDLE_UNARY_INST(N, OPC, CLASS) \
+ static UnaryInstruction *Create##OPC(Value *V, \
+ const Twine &Name, Instruction *I) {\
+ return Create(Instruction::OPC, V, Name, I);\
+ }
+#include "llvm/IR/Instruction.def"
+
+ UnaryOps getOpcode() const {
+ return static_cast<UnaryOps>(Instruction::getOpcode());
+ }
+};
+
+//===----------------------------------------------------------------------===//
// ICmpInst Class
//===----------------------------------------------------------------------===//
@@ -1299,12 +1394,13 @@
/// Constructor with no-insertion semantics
FCmpInst(
- Predicate pred, ///< The predicate to use for the comparison
+ Predicate Pred, ///< The predicate to use for the comparison
Value *LHS, ///< The left-hand-side of the expression
Value *RHS, ///< The right-hand-side of the expression
- const Twine &NameStr = "" ///< Name of the instruction
- ) : CmpInst(makeCmpResultType(LHS->getType()),
- Instruction::FCmp, pred, LHS, RHS, NameStr) {
+ const Twine &NameStr = "", ///< Name of the instruction
+ Instruction *FlagsSource = nullptr
+ ) : CmpInst(makeCmpResultType(LHS->getType()), Instruction::FCmp, Pred, LHS,
+ RHS, NameStr, nullptr, FlagsSource) {
AssertOK();
}
@@ -1352,537 +1448,13 @@
}
};
-class CallInst;
-class InvokeInst;
-
-template <class T> struct CallBaseParent { using type = Instruction; };
-
-template <> struct CallBaseParent<InvokeInst> { using type = TerminatorInst; };
-
-//===----------------------------------------------------------------------===//
-/// Base class for all callable instructions (InvokeInst and CallInst)
-/// Holds everything related to calling a function, abstracting from the base
-/// type @p BaseInstTy and the concrete instruction @p InstTy
-///
-template <class InstTy>
-class CallBase : public CallBaseParent<InstTy>::type,
- public OperandBundleUser<InstTy, User::op_iterator> {
-protected:
- AttributeList Attrs; ///< parameter attributes for callable
- FunctionType *FTy;
- using BaseInstTy = typename CallBaseParent<InstTy>::type;
-
- template <class... ArgsTy>
- CallBase(AttributeList const &A, FunctionType *FT, ArgsTy &&... Args)
- : BaseInstTy(std::forward<ArgsTy>(Args)...), Attrs(A), FTy(FT) {}
- bool hasDescriptor() const { return Value::HasDescriptor; }
-
- using BaseInstTy::BaseInstTy;
-
- using OperandBundleUser<InstTy,
- User::op_iterator>::isFnAttrDisallowedByOpBundle;
- using OperandBundleUser<InstTy, User::op_iterator>::getNumTotalBundleOperands;
- using OperandBundleUser<InstTy, User::op_iterator>::bundleOperandHasAttr;
- using Instruction::getSubclassDataFromInstruction;
- using Instruction::setInstructionSubclassData;
-
-public:
- using Instruction::getContext;
- using OperandBundleUser<InstTy, User::op_iterator>::hasOperandBundles;
- using OperandBundleUser<InstTy,
- User::op_iterator>::getBundleOperandsStartIndex;
-
- static bool classof(const Instruction *I) {
- llvm_unreachable(
- "CallBase is not meant to be used as part of the classof hierarchy");
- }
-
-public:
- /// Return the parameter attributes for this call.
- ///
- AttributeList getAttributes() const { return Attrs; }
-
- /// Set the parameter attributes for this call.
- ///
- void setAttributes(AttributeList A) { Attrs = A; }
-
- FunctionType *getFunctionType() const { return FTy; }
-
- void mutateFunctionType(FunctionType *FTy) {
- Value::mutateType(FTy->getReturnType());
- this->FTy = FTy;
- }
-
- /// Return the number of call arguments.
- ///
- unsigned getNumArgOperands() const {
- return getNumOperands() - getNumTotalBundleOperands() - InstTy::ArgOffset;
- }
-
- /// getArgOperand/setArgOperand - Return/set the i-th call argument.
- ///
- Value *getArgOperand(unsigned i) const {
- assert(i < getNumArgOperands() && "Out of bounds!");
- return getOperand(i);
- }
- void setArgOperand(unsigned i, Value *v) {
- assert(i < getNumArgOperands() && "Out of bounds!");
- setOperand(i, v);
- }
-
- /// Return the iterator pointing to the beginning of the argument list.
- User::op_iterator arg_begin() { return op_begin(); }
-
- /// Return the iterator pointing to the end of the argument list.
- User::op_iterator arg_end() {
- // [ call args ], [ operand bundles ], callee
- return op_end() - getNumTotalBundleOperands() - InstTy::ArgOffset;
- }
-
- /// Iteration adapter for range-for loops.
- iterator_range<User::op_iterator> arg_operands() {
- return make_range(arg_begin(), arg_end());
- }
-
- /// Return the iterator pointing to the beginning of the argument list.
- User::const_op_iterator arg_begin() const { return op_begin(); }
-
- /// Return the iterator pointing to the end of the argument list.
- User::const_op_iterator arg_end() const {
- // [ call args ], [ operand bundles ], callee
- return op_end() - getNumTotalBundleOperands() - InstTy::ArgOffset;
- }
-
- /// Iteration adapter for range-for loops.
- iterator_range<User::const_op_iterator> arg_operands() const {
- return make_range(arg_begin(), arg_end());
- }
-
- /// Wrappers for getting the \c Use of a call argument.
- const Use &getArgOperandUse(unsigned i) const {
- assert(i < getNumArgOperands() && "Out of bounds!");
- return User::getOperandUse(i);
- }
- Use &getArgOperandUse(unsigned i) {
- assert(i < getNumArgOperands() && "Out of bounds!");
- return User::getOperandUse(i);
- }
-
- /// If one of the arguments has the 'returned' attribute, return its
- /// operand value. Otherwise, return nullptr.
- Value *getReturnedArgOperand() const {
- unsigned Index;
-
- if (Attrs.hasAttrSomewhere(Attribute::Returned, &Index) && Index)
- return getArgOperand(Index - AttributeList::FirstArgIndex);
- if (const Function *F = getCalledFunction())
- if (F->getAttributes().hasAttrSomewhere(Attribute::Returned, &Index) &&
- Index)
- return getArgOperand(Index - AttributeList::FirstArgIndex);
-
- return nullptr;
- }
-
- User::op_iterator op_begin() {
- return OperandTraits<CallBase>::op_begin(this);
- }
-
- User::const_op_iterator op_begin() const {
- return OperandTraits<CallBase>::op_begin(const_cast<CallBase *>(this));
- }
-
- User::op_iterator op_end() { return OperandTraits<CallBase>::op_end(this); }
-
- User::const_op_iterator op_end() const {
- return OperandTraits<CallBase>::op_end(const_cast<CallBase *>(this));
- }
-
- Value *getOperand(unsigned i_nocapture) const {
- assert(i_nocapture < OperandTraits<CallBase>::operands(this) &&
- "getOperand() out of range!");
- return cast_or_null<Value>(OperandTraits<CallBase>::op_begin(
- const_cast<CallBase *>(this))[i_nocapture]
- .get());
- }
-
- void setOperand(unsigned i_nocapture, Value *Val_nocapture) {
- assert(i_nocapture < OperandTraits<CallBase>::operands(this) &&
- "setOperand() out of range!");
- OperandTraits<CallBase>::op_begin(this)[i_nocapture] = Val_nocapture;
- }
-
- unsigned getNumOperands() const {
- return OperandTraits<CallBase>::operands(this);
- }
- template <int Idx_nocapture> Use &Op() {
- return User::OpFrom<Idx_nocapture>(this);
- }
- template <int Idx_nocapture> const Use &Op() const {
- return User::OpFrom<Idx_nocapture>(this);
- }
-
- /// Return the function called, or null if this is an
- /// indirect function invocation.
- ///
- Function *getCalledFunction() const {
- return dyn_cast<Function>(Op<-InstTy::ArgOffset>());
- }
-
- /// Determine whether this call has the given attribute.
- bool hasFnAttr(Attribute::AttrKind Kind) const {
- assert(Kind != Attribute::NoBuiltin &&
- "Use CallBase::isNoBuiltin() to check for Attribute::NoBuiltin");
- return hasFnAttrImpl(Kind);
- }
-
- /// Determine whether this call has the given attribute.
- bool hasFnAttr(StringRef Kind) const { return hasFnAttrImpl(Kind); }
-
- /// getCallingConv/setCallingConv - Get or set the calling convention of this
- /// function call.
- CallingConv::ID getCallingConv() const {
- return static_cast<CallingConv::ID>(getSubclassDataFromInstruction() >> 2);
- }
- void setCallingConv(CallingConv::ID CC) {
- auto ID = static_cast<unsigned>(CC);
- assert(!(ID & ~CallingConv::MaxID) && "Unsupported calling convention");
- setInstructionSubclassData((getSubclassDataFromInstruction() & 3) |
- (ID << 2));
- }
-
-
- /// adds the attribute to the list of attributes.
- void addAttribute(unsigned i, Attribute::AttrKind Kind) {
- AttributeList PAL = getAttributes();
- PAL = PAL.addAttribute(getContext(), i, Kind);
- setAttributes(PAL);
- }
-
- /// adds the attribute to the list of attributes.
- void addAttribute(unsigned i, Attribute Attr) {
- AttributeList PAL = getAttributes();
- PAL = PAL.addAttribute(getContext(), i, Attr);
- setAttributes(PAL);
- }
-
- /// Adds the attribute to the indicated argument
- void addParamAttr(unsigned ArgNo, Attribute::AttrKind Kind) {
- assert(ArgNo < getNumArgOperands() && "Out of bounds");
- AttributeList PAL = getAttributes();
- PAL = PAL.addParamAttribute(getContext(), ArgNo, Kind);
- setAttributes(PAL);
- }
-
- /// Adds the attribute to the indicated argument
- void addParamAttr(unsigned ArgNo, Attribute Attr) {
- assert(ArgNo < getNumArgOperands() && "Out of bounds");
- AttributeList PAL = getAttributes();
- PAL = PAL.addParamAttribute(getContext(), ArgNo, Attr);
- setAttributes(PAL);
- }
-
- /// removes the attribute from the list of attributes.
- void removeAttribute(unsigned i, Attribute::AttrKind Kind) {
- AttributeList PAL = getAttributes();
- PAL = PAL.removeAttribute(getContext(), i, Kind);
- setAttributes(PAL);
- }
-
- /// removes the attribute from the list of attributes.
- void removeAttribute(unsigned i, StringRef Kind) {
- AttributeList PAL = getAttributes();
- PAL = PAL.removeAttribute(getContext(), i, Kind);
- setAttributes(PAL);
- }
-
- /// Removes the attribute from the given argument
- void removeParamAttr(unsigned ArgNo, Attribute::AttrKind Kind) {
- assert(ArgNo < getNumArgOperands() && "Out of bounds");
- AttributeList PAL = getAttributes();
- PAL = PAL.removeParamAttribute(getContext(), ArgNo, Kind);
- setAttributes(PAL);
- }
-
- /// Removes the attribute from the given argument
- void removeParamAttr(unsigned ArgNo, StringRef Kind) {
- assert(ArgNo < getNumArgOperands() && "Out of bounds");
- AttributeList PAL = getAttributes();
- PAL = PAL.removeParamAttribute(getContext(), ArgNo, Kind);
- setAttributes(PAL);
- }
-
- /// adds the dereferenceable attribute to the list of attributes.
- void addDereferenceableAttr(unsigned i, uint64_t Bytes) {
- AttributeList PAL = getAttributes();
- PAL = PAL.addDereferenceableAttr(getContext(), i, Bytes);
- setAttributes(PAL);
- }
-
- /// adds the dereferenceable_or_null attribute to the list of
- /// attributes.
- void addDereferenceableOrNullAttr(unsigned i, uint64_t Bytes) {
- AttributeList PAL = getAttributes();
- PAL = PAL.addDereferenceableOrNullAttr(getContext(), i, Bytes);
- setAttributes(PAL);
- }
-
- /// Determine whether the return value has the given attribute.
- bool hasRetAttr(Attribute::AttrKind Kind) const {
- if (Attrs.hasAttribute(AttributeList::ReturnIndex, Kind))
- return true;
-
- // Look at the callee, if available.
- if (const Function *F = getCalledFunction())
- return F->getAttributes().hasAttribute(AttributeList::ReturnIndex, Kind);
- return false;
- }
-
- /// Determine whether the argument or parameter has the given attribute.
- bool paramHasAttr(unsigned ArgNo, Attribute::AttrKind Kind) const {
- assert(ArgNo < getNumArgOperands() && "Param index out of bounds!");
-
- if (Attrs.hasParamAttribute(ArgNo, Kind))
- return true;
- if (const Function *F = getCalledFunction())
- return F->getAttributes().hasParamAttribute(ArgNo, Kind);
- return false;
- }
-
- /// Get the attribute of a given kind at a position.
- Attribute getAttribute(unsigned i, Attribute::AttrKind Kind) const {
- return getAttributes().getAttribute(i, Kind);
- }
-
- /// Get the attribute of a given kind at a position.
- Attribute getAttribute(unsigned i, StringRef Kind) const {
- return getAttributes().getAttribute(i, Kind);
- }
-
- /// Get the attribute of a given kind from a given arg
- Attribute getParamAttr(unsigned ArgNo, Attribute::AttrKind Kind) const {
- assert(ArgNo < getNumArgOperands() && "Out of bounds");
- return getAttributes().getParamAttr(ArgNo, Kind);
- }
-
- /// Get the attribute of a given kind from a given arg
- Attribute getParamAttr(unsigned ArgNo, StringRef Kind) const {
- assert(ArgNo < getNumArgOperands() && "Out of bounds");
- return getAttributes().getParamAttr(ArgNo, Kind);
- }
- /// Return true if the data operand at index \p i has the attribute \p
- /// A.
- ///
- /// Data operands include call arguments and values used in operand bundles,
- /// but does not include the callee operand. This routine dispatches to the
- /// underlying AttributeList or the OperandBundleUser as appropriate.
- ///
- /// The index \p i is interpreted as
- ///
- /// \p i == Attribute::ReturnIndex -> the return value
- /// \p i in [1, arg_size + 1) -> argument number (\p i - 1)
- /// \p i in [arg_size + 1, data_operand_size + 1) -> bundle operand at index
- /// (\p i - 1) in the operand list.
- bool dataOperandHasImpliedAttr(unsigned i, Attribute::AttrKind Kind) const {
- // There are getNumOperands() - (InstTy::ArgOffset - 1) data operands.
- // The last operand is the callee.
- assert(i < (getNumOperands() - InstTy::ArgOffset + 1) &&
- "Data operand index out of bounds!");
-
- // The attribute A can either be directly specified, if the operand in
- // question is a call argument; or be indirectly implied by the kind of its
- // containing operand bundle, if the operand is a bundle operand.
-
- if (i == AttributeList::ReturnIndex)
- return hasRetAttr(Kind);
-
- // FIXME: Avoid these i - 1 calculations and update the API to use
- // zero-based indices.
- if (i < (getNumArgOperands() + 1))
- return paramHasAttr(i - 1, Kind);
-
- assert(hasOperandBundles() && i >= (getBundleOperandsStartIndex() + 1) &&
- "Must be either a call argument or an operand bundle!");
- return bundleOperandHasAttr(i - 1, Kind);
- }
-
- /// Extract the alignment of the return value.
- unsigned getRetAlignment() const { return Attrs.getRetAlignment(); }
-
- /// Extract the alignment for a call or parameter (0=unknown).
- unsigned getParamAlignment(unsigned ArgNo) const {
- return Attrs.getParamAlignment(ArgNo);
- }
-
- /// Extract the number of dereferenceable bytes for a call or
- /// parameter (0=unknown).
- uint64_t getDereferenceableBytes(unsigned i) const {
- return Attrs.getDereferenceableBytes(i);
- }
-
- /// Extract the number of dereferenceable_or_null bytes for a call or
- /// parameter (0=unknown).
- uint64_t getDereferenceableOrNullBytes(unsigned i) const {
- return Attrs.getDereferenceableOrNullBytes(i);
- }
-
- /// Determine if the return value is marked with NoAlias attribute.
- bool returnDoesNotAlias() const {
- return Attrs.hasAttribute(AttributeList::ReturnIndex, Attribute::NoAlias);
- }
-
- /// Return true if the call should not be treated as a call to a
- /// builtin.
- bool isNoBuiltin() const {
- return hasFnAttrImpl(Attribute::NoBuiltin) &&
- !hasFnAttrImpl(Attribute::Builtin);
- }
-
- /// Determine if the call requires strict floating point semantics.
- bool isStrictFP() const { return hasFnAttr(Attribute::StrictFP); }
-
- /// Return true if the call should not be inlined.
- bool isNoInline() const { return hasFnAttr(Attribute::NoInline); }
- void setIsNoInline() {
- addAttribute(AttributeList::FunctionIndex, Attribute::NoInline);
- }
- /// Determine if the call does not access memory.
- bool doesNotAccessMemory() const {
- return hasFnAttr(Attribute::ReadNone);
- }
- void setDoesNotAccessMemory() {
- addAttribute(AttributeList::FunctionIndex, Attribute::ReadNone);
- }
-
- /// Determine if the call does not access or only reads memory.
- bool onlyReadsMemory() const {
- return doesNotAccessMemory() || hasFnAttr(Attribute::ReadOnly);
- }
- void setOnlyReadsMemory() {
- addAttribute(AttributeList::FunctionIndex, Attribute::ReadOnly);
- }
-
- /// Determine if the call does not access or only writes memory.
- bool doesNotReadMemory() const {
- return doesNotAccessMemory() || hasFnAttr(Attribute::WriteOnly);
- }
- void setDoesNotReadMemory() {
- addAttribute(AttributeList::FunctionIndex, Attribute::WriteOnly);
- }
-
- /// Determine if the call can access memmory only using pointers based
- /// on its arguments.
- bool onlyAccessesArgMemory() const {
- return hasFnAttr(Attribute::ArgMemOnly);
- }
- void setOnlyAccessesArgMemory() {
- addAttribute(AttributeList::FunctionIndex, Attribute::ArgMemOnly);
- }
-
- /// Determine if the function may only access memory that is
- /// inaccessible from the IR.
- bool onlyAccessesInaccessibleMemory() const {
- return hasFnAttr(Attribute::InaccessibleMemOnly);
- }
- void setOnlyAccessesInaccessibleMemory() {
- addAttribute(AttributeList::FunctionIndex, Attribute::InaccessibleMemOnly);
- }
-
- /// Determine if the function may only access memory that is
- /// either inaccessible from the IR or pointed to by its arguments.
- bool onlyAccessesInaccessibleMemOrArgMem() const {
- return hasFnAttr(Attribute::InaccessibleMemOrArgMemOnly);
- }
- void setOnlyAccessesInaccessibleMemOrArgMem() {
- addAttribute(AttributeList::FunctionIndex, Attribute::InaccessibleMemOrArgMemOnly);
- }
- /// Determine if the call cannot return.
- bool doesNotReturn() const { return hasFnAttr(Attribute::NoReturn); }
- void setDoesNotReturn() {
- addAttribute(AttributeList::FunctionIndex, Attribute::NoReturn);
- }
-
- /// Determine if the call should not perform indirect branch tracking.
- bool doesNoCfCheck() const { return hasFnAttr(Attribute::NoCfCheck); }
-
- /// Determine if the call cannot unwind.
- bool doesNotThrow() const { return hasFnAttr(Attribute::NoUnwind); }
- void setDoesNotThrow() {
- addAttribute(AttributeList::FunctionIndex, Attribute::NoUnwind);
- }
-
- /// Determine if the invoke cannot be duplicated.
- bool cannotDuplicate() const {return hasFnAttr(Attribute::NoDuplicate); }
- void setCannotDuplicate() {
- addAttribute(AttributeList::FunctionIndex, Attribute::NoDuplicate);
- }
-
- /// Determine if the invoke is convergent
- bool isConvergent() const { return hasFnAttr(Attribute::Convergent); }
- void setConvergent() {
- addAttribute(AttributeList::FunctionIndex, Attribute::Convergent);
- }
- void setNotConvergent() {
- removeAttribute(AttributeList::FunctionIndex, Attribute::Convergent);
- }
-
- /// Determine if the call returns a structure through first
- /// pointer argument.
- bool hasStructRetAttr() const {
- if (getNumArgOperands() == 0)
- return false;
-
- // Be friendly and also check the callee.
- return paramHasAttr(0, Attribute::StructRet);
- }
-
- /// Determine if any call argument is an aggregate passed by value.
- bool hasByValArgument() const {
- return Attrs.hasAttrSomewhere(Attribute::ByVal);
- }
- /// Get a pointer to the function that is invoked by this
- /// instruction.
- const Value *getCalledValue() const { return Op<-InstTy::ArgOffset>(); }
- Value *getCalledValue() { return Op<-InstTy::ArgOffset>(); }
-
- /// Set the function called.
- void setCalledFunction(Value* Fn) {
- setCalledFunction(
- cast<FunctionType>(cast<PointerType>(Fn->getType())->getElementType()),
- Fn);
- }
- void setCalledFunction(FunctionType *FTy, Value *Fn) {
- this->FTy = FTy;
- assert(FTy == cast<FunctionType>(
- cast<PointerType>(Fn->getType())->getElementType()));
- Op<-InstTy::ArgOffset>() = Fn;
- }
-
-protected:
- template <typename AttrKind> bool hasFnAttrImpl(AttrKind Kind) const {
- if (Attrs.hasAttribute(AttributeList::FunctionIndex, Kind))
- return true;
-
- // Operand bundles override attributes on the called function, but don't
- // override attributes directly present on the call instruction.
- if (isFnAttrDisallowedByOpBundle(Kind))
- return false;
-
- if (const Function *F = getCalledFunction())
- return F->getAttributes().hasAttribute(AttributeList::FunctionIndex,
- Kind);
- return false;
- }
-};
-
//===----------------------------------------------------------------------===//
/// This class represents a function call, abstracting a target
/// machine's calling convention. This class uses low bit of the SubClassData
/// field to indicate whether or not this is a tail call. The rest of the bits
/// hold the calling convention of the call.
///
-class CallInst : public CallBase<CallInst> {
- friend class OperandBundleUser<CallInst, User::op_iterator>;
-
+class CallInst : public CallBase {
CallInst(const CallInst &CI);
/// Construct a CallInst given a range of arguments.
@@ -1891,36 +1463,32 @@
ArrayRef<OperandBundleDef> Bundles, const Twine &NameStr,
Instruction *InsertBefore);
- inline CallInst(Value *Func, ArrayRef<Value *> Args,
- ArrayRef<OperandBundleDef> Bundles, const Twine &NameStr,
- Instruction *InsertBefore)
- : CallInst(cast<FunctionType>(
- cast<PointerType>(Func->getType())->getElementType()),
- Func, Args, Bundles, NameStr, InsertBefore) {}
-
- inline CallInst(Value *Func, ArrayRef<Value *> Args, const Twine &NameStr,
- Instruction *InsertBefore)
- : CallInst(Func, Args, None, NameStr, InsertBefore) {}
+ inline CallInst(FunctionType *Ty, Value *Func, ArrayRef<Value *> Args,
+ const Twine &NameStr, Instruction *InsertBefore)
+ : CallInst(Ty, Func, Args, None, NameStr, InsertBefore) {}
/// Construct a CallInst given a range of arguments.
/// Construct a CallInst from a range of arguments
- inline CallInst(Value *Func, ArrayRef<Value *> Args,
+ inline CallInst(FunctionType *Ty, Value *Func, ArrayRef<Value *> Args,
ArrayRef<OperandBundleDef> Bundles, const Twine &NameStr,
BasicBlock *InsertAtEnd);
- explicit CallInst(Value *F, const Twine &NameStr, Instruction *InsertBefore);
+ explicit CallInst(FunctionType *Ty, Value *F, const Twine &NameStr,
+ Instruction *InsertBefore);
- CallInst(Value *F, const Twine &NameStr, BasicBlock *InsertAtEnd);
+ CallInst(FunctionType *ty, Value *F, const Twine &NameStr,
+ BasicBlock *InsertAtEnd);
- void init(Value *Func, ArrayRef<Value *> Args,
- ArrayRef<OperandBundleDef> Bundles, const Twine &NameStr) {
- init(cast<FunctionType>(
- cast<PointerType>(Func->getType())->getElementType()),
- Func, Args, Bundles, NameStr);
- }
void init(FunctionType *FTy, Value *Func, ArrayRef<Value *> Args,
ArrayRef<OperandBundleDef> Bundles, const Twine &NameStr);
- void init(Value *Func, const Twine &NameStr);
+ void init(FunctionType *FTy, Value *Func, const Twine &NameStr);
+
+ /// Compute the number of operands to allocate.
+ static int ComputeNumOperands(int NumArgs, int NumBundleInputs = 0) {
+ // We need one operand for the called function, plus the input operand
+ // counts provided.
+ return 1 + NumArgs + NumBundleInputs;
+ }
protected:
// Note: Instruction needs to be a friend here to call cloneImpl.
@@ -1929,8 +1497,110 @@
CallInst *cloneImpl() const;
public:
- static constexpr int ArgOffset = 1;
+ static CallInst *Create(FunctionType *Ty, Value *F, const Twine &NameStr = "",
+ Instruction *InsertBefore = nullptr) {
+ return new (ComputeNumOperands(0)) CallInst(Ty, F, NameStr, InsertBefore);
+ }
+ static CallInst *Create(FunctionType *Ty, Value *Func, ArrayRef<Value *> Args,
+ const Twine &NameStr,
+ Instruction *InsertBefore = nullptr) {
+ return new (ComputeNumOperands(Args.size()))
+ CallInst(Ty, Func, Args, None, NameStr, InsertBefore);
+ }
+
+ static CallInst *Create(FunctionType *Ty, Value *Func, ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> Bundles = None,
+ const Twine &NameStr = "",
+ Instruction *InsertBefore = nullptr) {
+ const int NumOperands =
+ ComputeNumOperands(Args.size(), CountBundleInputs(Bundles));
+ const unsigned DescriptorBytes = Bundles.size() * sizeof(BundleOpInfo);
+
+ return new (NumOperands, DescriptorBytes)
+ CallInst(Ty, Func, Args, Bundles, NameStr, InsertBefore);
+ }
+
+ static CallInst *Create(FunctionType *Ty, Value *F, const Twine &NameStr,
+ BasicBlock *InsertAtEnd) {
+ return new (ComputeNumOperands(0)) CallInst(Ty, F, NameStr, InsertAtEnd);
+ }
+
+ static CallInst *Create(FunctionType *Ty, Value *Func, ArrayRef<Value *> Args,
+ const Twine &NameStr, BasicBlock *InsertAtEnd) {
+ return new (ComputeNumOperands(Args.size()))
+ CallInst(Ty, Func, Args, None, NameStr, InsertAtEnd);
+ }
+
+ static CallInst *Create(FunctionType *Ty, Value *Func, ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> Bundles,
+ const Twine &NameStr, BasicBlock *InsertAtEnd) {
+ const int NumOperands =
+ ComputeNumOperands(Args.size(), CountBundleInputs(Bundles));
+ const unsigned DescriptorBytes = Bundles.size() * sizeof(BundleOpInfo);
+
+ return new (NumOperands, DescriptorBytes)
+ CallInst(Ty, Func, Args, Bundles, NameStr, InsertAtEnd);
+ }
+
+ static CallInst *Create(FunctionCallee Func, const Twine &NameStr = "",
+ Instruction *InsertBefore = nullptr) {
+ return Create(Func.getFunctionType(), Func.getCallee(), NameStr,
+ InsertBefore);
+ }
+
+ static CallInst *Create(FunctionCallee Func, ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> Bundles = None,
+ const Twine &NameStr = "",
+ Instruction *InsertBefore = nullptr) {
+ return Create(Func.getFunctionType(), Func.getCallee(), Args, Bundles,
+ NameStr, InsertBefore);
+ }
+
+ static CallInst *Create(FunctionCallee Func, ArrayRef<Value *> Args,
+ const Twine &NameStr,
+ Instruction *InsertBefore = nullptr) {
+ return Create(Func.getFunctionType(), Func.getCallee(), Args, NameStr,
+ InsertBefore);
+ }
+
+ static CallInst *Create(FunctionCallee Func, const Twine &NameStr,
+ BasicBlock *InsertAtEnd) {
+ return Create(Func.getFunctionType(), Func.getCallee(), NameStr,
+ InsertAtEnd);
+ }
+
+ static CallInst *Create(FunctionCallee Func, ArrayRef<Value *> Args,
+ const Twine &NameStr, BasicBlock *InsertAtEnd) {
+ return Create(Func.getFunctionType(), Func.getCallee(), Args, NameStr,
+ InsertAtEnd);
+ }
+
+ static CallInst *Create(FunctionCallee Func, ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> Bundles,
+ const Twine &NameStr, BasicBlock *InsertAtEnd) {
+ return Create(Func.getFunctionType(), Func.getCallee(), Args, Bundles,
+ NameStr, InsertAtEnd);
+ }
+
+ // Deprecated [opaque pointer types]
+ static CallInst *Create(Value *Func, const Twine &NameStr = "",
+ Instruction *InsertBefore = nullptr) {
+ return Create(cast<FunctionType>(
+ cast<PointerType>(Func->getType())->getElementType()),
+ Func, NameStr, InsertBefore);
+ }
+
+ // Deprecated [opaque pointer types]
+ static CallInst *Create(Value *Func, ArrayRef<Value *> Args,
+ const Twine &NameStr,
+ Instruction *InsertBefore = nullptr) {
+ return Create(cast<FunctionType>(
+ cast<PointerType>(Func->getType())->getElementType()),
+ Func, Args, NameStr, InsertBefore);
+ }
+
+ // Deprecated [opaque pointer types]
static CallInst *Create(Value *Func, ArrayRef<Value *> Args,
ArrayRef<OperandBundleDef> Bundles = None,
const Twine &NameStr = "",
@@ -1940,58 +1610,29 @@
Func, Args, Bundles, NameStr, InsertBefore);
}
- static CallInst *Create(Value *Func, ArrayRef<Value *> Args,
- const Twine &NameStr,
- Instruction *InsertBefore = nullptr) {
+ // Deprecated [opaque pointer types]
+ static CallInst *Create(Value *Func, const Twine &NameStr,
+ BasicBlock *InsertAtEnd) {
return Create(cast<FunctionType>(
cast<PointerType>(Func->getType())->getElementType()),
- Func, Args, None, NameStr, InsertBefore);
+ Func, NameStr, InsertAtEnd);
}
- static CallInst *Create(FunctionType *Ty, Value *Func, ArrayRef<Value *> Args,
- const Twine &NameStr,
- Instruction *InsertBefore = nullptr) {
- return new (unsigned(Args.size() + 1))
- CallInst(Ty, Func, Args, None, NameStr, InsertBefore);
+ // Deprecated [opaque pointer types]
+ static CallInst *Create(Value *Func, ArrayRef<Value *> Args,
+ const Twine &NameStr, BasicBlock *InsertAtEnd) {
+ return Create(cast<FunctionType>(
+ cast<PointerType>(Func->getType())->getElementType()),
+ Func, Args, NameStr, InsertAtEnd);
}
- static CallInst *Create(FunctionType *Ty, Value *Func, ArrayRef<Value *> Args,
- ArrayRef<OperandBundleDef> Bundles = None,
- const Twine &NameStr = "",
- Instruction *InsertBefore = nullptr) {
- const unsigned TotalOps =
- unsigned(Args.size()) + CountBundleInputs(Bundles) + 1;
- const unsigned DescriptorBytes = Bundles.size() * sizeof(BundleOpInfo);
-
- return new (TotalOps, DescriptorBytes)
- CallInst(Ty, Func, Args, Bundles, NameStr, InsertBefore);
- }
-
+ // Deprecated [opaque pointer types]
static CallInst *Create(Value *Func, ArrayRef<Value *> Args,
ArrayRef<OperandBundleDef> Bundles,
const Twine &NameStr, BasicBlock *InsertAtEnd) {
- const unsigned TotalOps =
- unsigned(Args.size()) + CountBundleInputs(Bundles) + 1;
- const unsigned DescriptorBytes = Bundles.size() * sizeof(BundleOpInfo);
-
- return new (TotalOps, DescriptorBytes)
- CallInst(Func, Args, Bundles, NameStr, InsertAtEnd);
- }
-
- static CallInst *Create(Value *Func, ArrayRef<Value *> Args,
- const Twine &NameStr, BasicBlock *InsertAtEnd) {
- return new (unsigned(Args.size() + 1))
- CallInst(Func, Args, None, NameStr, InsertAtEnd);
- }
-
- static CallInst *Create(Value *F, const Twine &NameStr = "",
- Instruction *InsertBefore = nullptr) {
- return new (1) CallInst(F, NameStr, InsertBefore);
- }
-
- static CallInst *Create(Value *F, const Twine &NameStr,
- BasicBlock *InsertAtEnd) {
- return new (1) CallInst(F, NameStr, InsertAtEnd);
+ return Create(cast<FunctionType>(
+ cast<PointerType>(Func->getType())->getElementType()),
+ Func, Args, Bundles, NameStr, InsertAtEnd);
}
/// Create a clone of \p CI with a different set of operand bundles and
@@ -2081,9 +1722,6 @@
addAttribute(AttributeList::FunctionIndex, Attribute::ReturnsTwice);
}
- /// Check if this call is an inline asm statement.
- bool isInlineAsm() const { return isa<InlineAsm>(Op<-1>()); }
-
// Methods for support type inquiry through isa, cast, and dyn_cast:
static bool classof(const Instruction *I) {
return I->getOpcode() == Instruction::Call;
@@ -2100,32 +1738,25 @@
}
};
-template <>
-struct OperandTraits<CallBase<CallInst>>
- : public VariadicOperandTraits<CallBase<CallInst>, 1> {};
-
-CallInst::CallInst(Value *Func, ArrayRef<Value *> Args,
+CallInst::CallInst(FunctionType *Ty, Value *Func, ArrayRef<Value *> Args,
ArrayRef<OperandBundleDef> Bundles, const Twine &NameStr,
BasicBlock *InsertAtEnd)
- : CallBase<CallInst>(
- cast<FunctionType>(
- cast<PointerType>(Func->getType())->getElementType())
- ->getReturnType(),
- Instruction::Call,
- OperandTraits<CallBase<CallInst>>::op_end(this) -
- (Args.size() + CountBundleInputs(Bundles) + 1),
- unsigned(Args.size() + CountBundleInputs(Bundles) + 1), InsertAtEnd) {
- init(Func, Args, Bundles, NameStr);
+ : CallBase(Ty->getReturnType(), Instruction::Call,
+ OperandTraits<CallBase>::op_end(this) -
+ (Args.size() + CountBundleInputs(Bundles) + 1),
+ unsigned(Args.size() + CountBundleInputs(Bundles) + 1),
+ InsertAtEnd) {
+ init(Ty, Func, Args, Bundles, NameStr);
}
CallInst::CallInst(FunctionType *Ty, Value *Func, ArrayRef<Value *> Args,
ArrayRef<OperandBundleDef> Bundles, const Twine &NameStr,
Instruction *InsertBefore)
- : CallBase<CallInst>(Ty->getReturnType(), Instruction::Call,
- OperandTraits<CallBase<CallInst>>::op_end(this) -
- (Args.size() + CountBundleInputs(Bundles) + 1),
- unsigned(Args.size() + CountBundleInputs(Bundles) + 1),
- InsertBefore) {
+ : CallBase(Ty->getReturnType(), Instruction::Call,
+ OperandTraits<CallBase>::op_end(this) -
+ (Args.size() + CountBundleInputs(Bundles) + 1),
+ unsigned(Args.size() + CountBundleInputs(Bundles) + 1),
+ InsertBefore) {
init(Ty, Func, Args, Bundles, NameStr);
}
@@ -2649,6 +2280,25 @@
return !changesLength() && isTransposeMask(getMask());
}
+ /// Return true if this shuffle mask is an extract subvector mask.
+ /// A valid extract subvector mask returns a smaller vector from a single
+ /// source operand. The base extraction index is returned as well.
+ static bool isExtractSubvectorMask(ArrayRef<int> Mask, int NumSrcElts,
+ int &Index);
+ static bool isExtractSubvectorMask(const Constant *Mask, int NumSrcElts,
+ int &Index) {
+ assert(Mask->getType()->isVectorTy() && "Shuffle needs vector constant.");
+ SmallVector<int, 16> MaskAsInts;
+ getShuffleMask(Mask, MaskAsInts);
+ return isExtractSubvectorMask(MaskAsInts, NumSrcElts, Index);
+ }
+
+ /// Return true if this shuffle mask is an extract subvector mask.
+ bool isExtractSubvectorMask(int &Index) const {
+ int NumSrcElts = Op<0>()->getType()->getVectorNumElements();
+ return isExtractSubvectorMask(getMask(), NumSrcElts, Index);
+ }
+
/// Change values in a shuffle permute mask assuming the two vector operands
/// of length InVecNumElts have swapped position.
static void commuteShuffleMask(MutableArrayRef<int> Mask,
@@ -3265,7 +2915,7 @@
/// Return a value (possibly void), from a function. Execution
/// does not continue in this function any longer.
///
-class ReturnInst : public TerminatorInst {
+class ReturnInst : public Instruction {
ReturnInst(const ReturnInst &RI);
private:
@@ -3325,8 +2975,6 @@
}
private:
- friend TerminatorInst;
-
BasicBlock *getSuccessor(unsigned idx) const {
llvm_unreachable("ReturnInst has no successors!");
}
@@ -3349,7 +2997,7 @@
//===---------------------------------------------------------------------------
/// Conditional or Unconditional Branch instruction.
///
-class BranchInst : public TerminatorInst {
+class BranchInst : public Instruction {
/// Ops list - Branches are strange. The operands are ordered:
/// [Cond, FalseDest,] TrueDest. This makes some accessors faster because
/// they don't have to check for cond/uncond branchness. These are mostly
@@ -3493,7 +3141,7 @@
//===---------------------------------------------------------------------------
/// Multiway switch
///
-class SwitchInst : public TerminatorInst {
+class SwitchInst : public Instruction {
unsigned ReservedSpace;
// Operand[0] = Value to switch on
@@ -3576,7 +3224,7 @@
/// Returns number of current case.
unsigned getCaseIndex() const { return Index; }
- /// Returns TerminatorInst's successor index for current case successor.
+ /// Returns successor index for current case successor.
unsigned getSuccessorIndex() const {
assert(((unsigned)Index == DefaultPseudoIndex ||
(unsigned)Index < SI->getNumCases()) &&
@@ -3632,7 +3280,7 @@
CaseIteratorImpl(SwitchInstT *SI, unsigned CaseNum) : Case(SI, CaseNum) {}
/// Initializes case iterator for given SwitchInst and for given
- /// TerminatorInst's successor index.
+ /// successor index.
static CaseIteratorImpl fromSuccessorIndex(SwitchInstT *SI,
unsigned SuccessorIndex) {
assert(SuccessorIndex < SI->getNumSuccessors() &&
@@ -3850,7 +3498,7 @@
//===---------------------------------------------------------------------------
/// Indirect Branch Instruction.
///
-class IndirectBrInst : public TerminatorInst {
+class IndirectBrInst : public Instruction {
unsigned ReservedSpace;
// Operand[0] = Address to jump to
@@ -3985,48 +3633,43 @@
/// Invoke instruction. The SubclassData field is used to hold the
/// calling convention of the call.
///
-class InvokeInst : public CallBase<InvokeInst> {
- friend class OperandBundleUser<InvokeInst, User::op_iterator>;
+class InvokeInst : public CallBase {
+ /// The number of operands for this call beyond the called function,
+ /// arguments, and operand bundles.
+ static constexpr int NumExtraOperands = 2;
+
+ /// The index from the end of the operand array to the normal destination.
+ static constexpr int NormalDestOpEndIdx = -3;
+
+ /// The index from the end of the operand array to the unwind destination.
+ static constexpr int UnwindDestOpEndIdx = -2;
InvokeInst(const InvokeInst &BI);
/// Construct an InvokeInst given a range of arguments.
///
/// Construct an InvokeInst from a range of arguments
- inline InvokeInst(Value *Func, BasicBlock *IfNormal, BasicBlock *IfException,
- ArrayRef<Value *> Args, ArrayRef<OperandBundleDef> Bundles,
- unsigned Values, const Twine &NameStr,
- Instruction *InsertBefore)
- : InvokeInst(cast<FunctionType>(
- cast<PointerType>(Func->getType())->getElementType()),
- Func, IfNormal, IfException, Args, Bundles, Values, NameStr,
- InsertBefore) {}
+ inline InvokeInst(FunctionType *Ty, Value *Func, BasicBlock *IfNormal,
+ BasicBlock *IfException, ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> Bundles, int NumOperands,
+ const Twine &NameStr, Instruction *InsertBefore);
inline InvokeInst(FunctionType *Ty, Value *Func, BasicBlock *IfNormal,
BasicBlock *IfException, ArrayRef<Value *> Args,
- ArrayRef<OperandBundleDef> Bundles, unsigned Values,
- const Twine &NameStr, Instruction *InsertBefore);
- /// Construct an InvokeInst given a range of arguments.
- ///
- /// Construct an InvokeInst from a range of arguments
- inline InvokeInst(Value *Func, BasicBlock *IfNormal, BasicBlock *IfException,
- ArrayRef<Value *> Args, ArrayRef<OperandBundleDef> Bundles,
- unsigned Values, const Twine &NameStr,
- BasicBlock *InsertAtEnd);
+ ArrayRef<OperandBundleDef> Bundles, int NumOperands,
+ const Twine &NameStr, BasicBlock *InsertAtEnd);
-
- void init(Value *Func, BasicBlock *IfNormal, BasicBlock *IfException,
- ArrayRef<Value *> Args, ArrayRef<OperandBundleDef> Bundles,
- const Twine &NameStr) {
- init(cast<FunctionType>(
- cast<PointerType>(Func->getType())->getElementType()),
- Func, IfNormal, IfException, Args, Bundles, NameStr);
- }
-
- void init(FunctionType *FTy, Value *Func, BasicBlock *IfNormal,
+ void init(FunctionType *Ty, Value *Func, BasicBlock *IfNormal,
BasicBlock *IfException, ArrayRef<Value *> Args,
ArrayRef<OperandBundleDef> Bundles, const Twine &NameStr);
+ /// Compute the number of operands to allocate.
+ static int ComputeNumOperands(int NumArgs, int NumBundleInputs = 0) {
+ // We need one operand for the called function, plus our extra operands and
+ // the input operand counts provided.
+ return 1 + NumExtraOperands + NumArgs + NumBundleInputs;
+ }
+
protected:
// Note: Instruction needs to be a friend here to call cloneImpl.
friend class Instruction;
@@ -4034,7 +3677,85 @@
InvokeInst *cloneImpl() const;
public:
- static constexpr int ArgOffset = 3;
+ static InvokeInst *Create(FunctionType *Ty, Value *Func, BasicBlock *IfNormal,
+ BasicBlock *IfException, ArrayRef<Value *> Args,
+ const Twine &NameStr,
+ Instruction *InsertBefore = nullptr) {
+ int NumOperands = ComputeNumOperands(Args.size());
+ return new (NumOperands)
+ InvokeInst(Ty, Func, IfNormal, IfException, Args, None, NumOperands,
+ NameStr, InsertBefore);
+ }
+
+ static InvokeInst *Create(FunctionType *Ty, Value *Func, BasicBlock *IfNormal,
+ BasicBlock *IfException, ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> Bundles = None,
+ const Twine &NameStr = "",
+ Instruction *InsertBefore = nullptr) {
+ int NumOperands =
+ ComputeNumOperands(Args.size(), CountBundleInputs(Bundles));
+ unsigned DescriptorBytes = Bundles.size() * sizeof(BundleOpInfo);
+
+ return new (NumOperands, DescriptorBytes)
+ InvokeInst(Ty, Func, IfNormal, IfException, Args, Bundles, NumOperands,
+ NameStr, InsertBefore);
+ }
+
+ static InvokeInst *Create(FunctionType *Ty, Value *Func, BasicBlock *IfNormal,
+ BasicBlock *IfException, ArrayRef<Value *> Args,
+ const Twine &NameStr, BasicBlock *InsertAtEnd) {
+ int NumOperands = ComputeNumOperands(Args.size());
+ return new (NumOperands)
+ InvokeInst(Ty, Func, IfNormal, IfException, Args, None, NumOperands,
+ NameStr, InsertAtEnd);
+ }
+
+ static InvokeInst *Create(FunctionType *Ty, Value *Func, BasicBlock *IfNormal,
+ BasicBlock *IfException, ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> Bundles,
+ const Twine &NameStr, BasicBlock *InsertAtEnd) {
+ int NumOperands =
+ ComputeNumOperands(Args.size(), CountBundleInputs(Bundles));
+ unsigned DescriptorBytes = Bundles.size() * sizeof(BundleOpInfo);
+
+ return new (NumOperands, DescriptorBytes)
+ InvokeInst(Ty, Func, IfNormal, IfException, Args, Bundles, NumOperands,
+ NameStr, InsertAtEnd);
+ }
+
+ static InvokeInst *Create(FunctionCallee Func, BasicBlock *IfNormal,
+ BasicBlock *IfException, ArrayRef<Value *> Args,
+ const Twine &NameStr,
+ Instruction *InsertBefore = nullptr) {
+ return Create(Func.getFunctionType(), Func.getCallee(), IfNormal,
+ IfException, Args, None, NameStr, InsertBefore);
+ }
+
+ static InvokeInst *Create(FunctionCallee Func, BasicBlock *IfNormal,
+ BasicBlock *IfException, ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> Bundles = None,
+ const Twine &NameStr = "",
+ Instruction *InsertBefore = nullptr) {
+ return Create(Func.getFunctionType(), Func.getCallee(), IfNormal,
+ IfException, Args, Bundles, NameStr, InsertBefore);
+ }
+
+ static InvokeInst *Create(FunctionCallee Func, BasicBlock *IfNormal,
+ BasicBlock *IfException, ArrayRef<Value *> Args,
+ const Twine &NameStr, BasicBlock *InsertAtEnd) {
+ return Create(Func.getFunctionType(), Func.getCallee(), IfNormal,
+ IfException, Args, NameStr, InsertAtEnd);
+ }
+
+ static InvokeInst *Create(FunctionCallee Func, BasicBlock *IfNormal,
+ BasicBlock *IfException, ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> Bundles,
+ const Twine &NameStr, BasicBlock *InsertAtEnd) {
+ return Create(Func.getFunctionType(), Func.getCallee(), IfNormal,
+ IfException, Args, Bundles, NameStr, InsertAtEnd);
+ }
+
+ // Deprecated [opaque pointer types]
static InvokeInst *Create(Value *Func, BasicBlock *IfNormal,
BasicBlock *IfException, ArrayRef<Value *> Args,
const Twine &NameStr,
@@ -4045,6 +3766,7 @@
InsertBefore);
}
+ // Deprecated [opaque pointer types]
static InvokeInst *Create(Value *Func, BasicBlock *IfNormal,
BasicBlock *IfException, ArrayRef<Value *> Args,
ArrayRef<OperandBundleDef> Bundles = None,
@@ -4056,47 +3778,24 @@
InsertBefore);
}
- static InvokeInst *Create(FunctionType *Ty, Value *Func, BasicBlock *IfNormal,
+ // Deprecated [opaque pointer types]
+ static InvokeInst *Create(Value *Func, BasicBlock *IfNormal,
BasicBlock *IfException, ArrayRef<Value *> Args,
- const Twine &NameStr,
- Instruction *InsertBefore = nullptr) {
- unsigned Values = unsigned(Args.size()) + 3;
- return new (Values) InvokeInst(Ty, Func, IfNormal, IfException, Args, None,
- Values, NameStr, InsertBefore);
+ const Twine &NameStr, BasicBlock *InsertAtEnd) {
+ return Create(cast<FunctionType>(
+ cast<PointerType>(Func->getType())->getElementType()),
+ Func, IfNormal, IfException, Args, NameStr, InsertAtEnd);
}
- static InvokeInst *Create(FunctionType *Ty, Value *Func, BasicBlock *IfNormal,
- BasicBlock *IfException, ArrayRef<Value *> Args,
- ArrayRef<OperandBundleDef> Bundles = None,
- const Twine &NameStr = "",
- Instruction *InsertBefore = nullptr) {
- unsigned Values = unsigned(Args.size()) + CountBundleInputs(Bundles) + 3;
- unsigned DescriptorBytes = Bundles.size() * sizeof(BundleOpInfo);
-
- return new (Values, DescriptorBytes)
- InvokeInst(Ty, Func, IfNormal, IfException, Args, Bundles, Values,
- NameStr, InsertBefore);
- }
-
- static InvokeInst *Create(Value *Func,
- BasicBlock *IfNormal, BasicBlock *IfException,
- ArrayRef<Value *> Args, const Twine &NameStr,
- BasicBlock *InsertAtEnd) {
- unsigned Values = unsigned(Args.size()) + 3;
- return new (Values) InvokeInst(Func, IfNormal, IfException, Args, None,
- Values, NameStr, InsertAtEnd);
- }
-
+ // Deprecated [opaque pointer types]
static InvokeInst *Create(Value *Func, BasicBlock *IfNormal,
BasicBlock *IfException, ArrayRef<Value *> Args,
ArrayRef<OperandBundleDef> Bundles,
const Twine &NameStr, BasicBlock *InsertAtEnd) {
- unsigned Values = unsigned(Args.size()) + CountBundleInputs(Bundles) + 3;
- unsigned DescriptorBytes = Bundles.size() * sizeof(BundleOpInfo);
-
- return new (Values, DescriptorBytes)
- InvokeInst(Func, IfNormal, IfException, Args, Bundles, Values, NameStr,
- InsertAtEnd);
+ return Create(cast<FunctionType>(
+ cast<PointerType>(Func->getType())->getElementType()),
+ Func, IfNormal, IfException, Args, Bundles, NameStr,
+ InsertAtEnd);
}
/// Create a clone of \p II with a different set of operand bundles and
@@ -4117,43 +3816,18 @@
addAttribute(AttributeList::FunctionIndex, Attribute::NoUnwind);
}
- /// Return the function called, or null if this is an
- /// indirect function invocation.
- ///
- Function *getCalledFunction() const {
- return dyn_cast<Function>(Op<-3>());
- }
-
- /// Get a pointer to the function that is invoked by this
- /// instruction
- const Value *getCalledValue() const { return Op<-3>(); }
- Value *getCalledValue() { return Op<-3>(); }
-
- /// Set the function called.
- void setCalledFunction(Value* Fn) {
- setCalledFunction(
- cast<FunctionType>(cast<PointerType>(Fn->getType())->getElementType()),
- Fn);
- }
- void setCalledFunction(FunctionType *FTy, Value *Fn) {
- this->FTy = FTy;
- assert(FTy == cast<FunctionType>(
- cast<PointerType>(Fn->getType())->getElementType()));
- Op<-3>() = Fn;
- }
-
// get*Dest - Return the destination basic blocks...
BasicBlock *getNormalDest() const {
- return cast<BasicBlock>(Op<-2>());
+ return cast<BasicBlock>(Op<NormalDestOpEndIdx>());
}
BasicBlock *getUnwindDest() const {
- return cast<BasicBlock>(Op<-1>());
+ return cast<BasicBlock>(Op<UnwindDestOpEndIdx>());
}
void setNormalDest(BasicBlock *B) {
- Op<-2>() = reinterpret_cast<Value*>(B);
+ Op<NormalDestOpEndIdx>() = reinterpret_cast<Value *>(B);
}
void setUnwindDest(BasicBlock *B) {
- Op<-1>() = reinterpret_cast<Value*>(B);
+ Op<UnwindDestOpEndIdx>() = reinterpret_cast<Value *>(B);
}
/// Get the landingpad instruction from the landing pad
@@ -4165,9 +3839,12 @@
return i == 0 ? getNormalDest() : getUnwindDest();
}
- void setSuccessor(unsigned idx, BasicBlock *NewSucc) {
- assert(idx < 2 && "Successor # out of range for invoke!");
- *(&Op<-2>() + idx) = reinterpret_cast<Value*>(NewSucc);
+ void setSuccessor(unsigned i, BasicBlock *NewSucc) {
+ assert(i < 2 && "Successor # out of range for invoke!");
+ if (i == 0)
+ setNormalDest(NewSucc);
+ else
+ setUnwindDest(NewSucc);
}
unsigned getNumSuccessors() const { return 2; }
@@ -4189,36 +3866,269 @@
}
};
-template <>
-struct OperandTraits<CallBase<InvokeInst>>
- : public VariadicOperandTraits<CallBase<InvokeInst>, 3> {};
-
InvokeInst::InvokeInst(FunctionType *Ty, Value *Func, BasicBlock *IfNormal,
BasicBlock *IfException, ArrayRef<Value *> Args,
- ArrayRef<OperandBundleDef> Bundles, unsigned Values,
+ ArrayRef<OperandBundleDef> Bundles, int NumOperands,
const Twine &NameStr, Instruction *InsertBefore)
- : CallBase<InvokeInst>(Ty->getReturnType(), Instruction::Invoke,
- OperandTraits<CallBase<InvokeInst>>::op_end(this) -
- Values,
- Values, InsertBefore) {
+ : CallBase(Ty->getReturnType(), Instruction::Invoke,
+ OperandTraits<CallBase>::op_end(this) - NumOperands, NumOperands,
+ InsertBefore) {
init(Ty, Func, IfNormal, IfException, Args, Bundles, NameStr);
}
-InvokeInst::InvokeInst(Value *Func, BasicBlock *IfNormal,
+InvokeInst::InvokeInst(FunctionType *Ty, Value *Func, BasicBlock *IfNormal,
BasicBlock *IfException, ArrayRef<Value *> Args,
- ArrayRef<OperandBundleDef> Bundles, unsigned Values,
+ ArrayRef<OperandBundleDef> Bundles, int NumOperands,
const Twine &NameStr, BasicBlock *InsertAtEnd)
- : CallBase<InvokeInst>(
+ : CallBase(Ty->getReturnType(), Instruction::Invoke,
+ OperandTraits<CallBase>::op_end(this) - NumOperands, NumOperands,
+ InsertAtEnd) {
+ init(Ty, Func, IfNormal, IfException, Args, Bundles, NameStr);
+}
+
+//===----------------------------------------------------------------------===//
+// CallBrInst Class
+//===----------------------------------------------------------------------===//
+
+/// CallBr instruction, tracking function calls that may not return control but
+/// instead transfer it to a third location. The SubclassData field is used to
+/// hold the calling convention of the call.
+///
+class CallBrInst : public CallBase {
+
+ unsigned NumIndirectDests;
+
+ CallBrInst(const CallBrInst &BI);
+
+ /// Construct a CallBrInst given a range of arguments.
+ ///
+ /// Construct a CallBrInst from a range of arguments
+ inline CallBrInst(FunctionType *Ty, Value *Func, BasicBlock *DefaultDest,
+ ArrayRef<BasicBlock *> IndirectDests,
+ ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> Bundles, int NumOperands,
+ const Twine &NameStr, Instruction *InsertBefore);
+
+ inline CallBrInst(FunctionType *Ty, Value *Func, BasicBlock *DefaultDest,
+ ArrayRef<BasicBlock *> IndirectDests,
+ ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> Bundles, int NumOperands,
+ const Twine &NameStr, BasicBlock *InsertAtEnd);
+
+ void init(FunctionType *FTy, Value *Func, BasicBlock *DefaultDest,
+ ArrayRef<BasicBlock *> IndirectDests, ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> Bundles, const Twine &NameStr);
+
+ /// Compute the number of operands to allocate.
+ static int ComputeNumOperands(int NumArgs, int NumIndirectDests,
+ int NumBundleInputs = 0) {
+ // We need one operand for the called function, plus our extra operands and
+ // the input operand counts provided.
+ return 2 + NumIndirectDests + NumArgs + NumBundleInputs;
+ }
+
+protected:
+ // Note: Instruction needs to be a friend here to call cloneImpl.
+ friend class Instruction;
+
+ CallBrInst *cloneImpl() const;
+
+public:
+ static CallBrInst *Create(FunctionType *Ty, Value *Func,
+ BasicBlock *DefaultDest,
+ ArrayRef<BasicBlock *> IndirectDests,
+ ArrayRef<Value *> Args, const Twine &NameStr,
+ Instruction *InsertBefore = nullptr) {
+ int NumOperands = ComputeNumOperands(Args.size(), IndirectDests.size());
+ return new (NumOperands)
+ CallBrInst(Ty, Func, DefaultDest, IndirectDests, Args, None,
+ NumOperands, NameStr, InsertBefore);
+ }
+
+ static CallBrInst *Create(FunctionType *Ty, Value *Func,
+ BasicBlock *DefaultDest,
+ ArrayRef<BasicBlock *> IndirectDests,
+ ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> Bundles = None,
+ const Twine &NameStr = "",
+ Instruction *InsertBefore = nullptr) {
+ int NumOperands = ComputeNumOperands(Args.size(), IndirectDests.size(),
+ CountBundleInputs(Bundles));
+ unsigned DescriptorBytes = Bundles.size() * sizeof(BundleOpInfo);
+
+ return new (NumOperands, DescriptorBytes)
+ CallBrInst(Ty, Func, DefaultDest, IndirectDests, Args, Bundles,
+ NumOperands, NameStr, InsertBefore);
+ }
+
+ static CallBrInst *Create(FunctionType *Ty, Value *Func,
+ BasicBlock *DefaultDest,
+ ArrayRef<BasicBlock *> IndirectDests,
+ ArrayRef<Value *> Args, const Twine &NameStr,
+ BasicBlock *InsertAtEnd) {
+ int NumOperands = ComputeNumOperands(Args.size(), IndirectDests.size());
+ return new (NumOperands)
+ CallBrInst(Ty, Func, DefaultDest, IndirectDests, Args, None,
+ NumOperands, NameStr, InsertAtEnd);
+ }
+
+ static CallBrInst *Create(FunctionType *Ty, Value *Func,
+ BasicBlock *DefaultDest,
+ ArrayRef<BasicBlock *> IndirectDests,
+ ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> Bundles,
+ const Twine &NameStr, BasicBlock *InsertAtEnd) {
+ int NumOperands = ComputeNumOperands(Args.size(), IndirectDests.size(),
+ CountBundleInputs(Bundles));
+ unsigned DescriptorBytes = Bundles.size() * sizeof(BundleOpInfo);
+
+ return new (NumOperands, DescriptorBytes)
+ CallBrInst(Ty, Func, DefaultDest, IndirectDests, Args, Bundles,
+ NumOperands, NameStr, InsertAtEnd);
+ }
+
+ static CallBrInst *Create(FunctionCallee Func, BasicBlock *DefaultDest,
+ ArrayRef<BasicBlock *> IndirectDests,
+ ArrayRef<Value *> Args, const Twine &NameStr,
+ Instruction *InsertBefore = nullptr) {
+ return Create(Func.getFunctionType(), Func.getCallee(), DefaultDest,
+ IndirectDests, Args, NameStr, InsertBefore);
+ }
+
+ static CallBrInst *Create(FunctionCallee Func, BasicBlock *DefaultDest,
+ ArrayRef<BasicBlock *> IndirectDests,
+ ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> Bundles = None,
+ const Twine &NameStr = "",
+ Instruction *InsertBefore = nullptr) {
+ return Create(Func.getFunctionType(), Func.getCallee(), DefaultDest,
+ IndirectDests, Args, Bundles, NameStr, InsertBefore);
+ }
+
+ static CallBrInst *Create(FunctionCallee Func, BasicBlock *DefaultDest,
+ ArrayRef<BasicBlock *> IndirectDests,
+ ArrayRef<Value *> Args, const Twine &NameStr,
+ BasicBlock *InsertAtEnd) {
+ return Create(Func.getFunctionType(), Func.getCallee(), DefaultDest,
+ IndirectDests, Args, NameStr, InsertAtEnd);
+ }
+
+ static CallBrInst *Create(FunctionCallee Func,
+ BasicBlock *DefaultDest,
+ ArrayRef<BasicBlock *> IndirectDests,
+ ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> Bundles,
+ const Twine &NameStr, BasicBlock *InsertAtEnd) {
+ return Create(Func.getFunctionType(), Func.getCallee(), DefaultDest,
+ IndirectDests, Args, Bundles, NameStr, InsertAtEnd);
+ }
+
+ /// Create a clone of \p CBI with a different set of operand bundles and
+ /// insert it before \p InsertPt.
+ ///
+ /// The returned callbr instruction is identical to \p CBI in every way
+ /// except that the operand bundles for the new instruction are set to the
+ /// operand bundles in \p Bundles.
+ static CallBrInst *Create(CallBrInst *CBI,
+ ArrayRef<OperandBundleDef> Bundles,
+ Instruction *InsertPt = nullptr);
+
+ /// Return the number of callbr indirect dest labels.
+ ///
+ unsigned getNumIndirectDests() const { return NumIndirectDests; }
+
+ /// getIndirectDestLabel - Return the i-th indirect dest label.
+ ///
+ Value *getIndirectDestLabel(unsigned i) const {
+ assert(i < getNumIndirectDests() && "Out of bounds!");
+ return getOperand(i + getNumArgOperands() + getNumTotalBundleOperands() +
+ 1);
+ }
+
+ Value *getIndirectDestLabelUse(unsigned i) const {
+ assert(i < getNumIndirectDests() && "Out of bounds!");
+ return getOperandUse(i + getNumArgOperands() + getNumTotalBundleOperands() +
+ 1);
+ }
+
+ // Return the destination basic blocks...
+ BasicBlock *getDefaultDest() const {
+ return cast<BasicBlock>(*(&Op<-1>() - getNumIndirectDests() - 1));
+ }
+ BasicBlock *getIndirectDest(unsigned i) const {
+ return cast<BasicBlock>(*(&Op<-1>() - getNumIndirectDests() + i));
+ }
+ SmallVector<BasicBlock *, 16> getIndirectDests() const {
+ SmallVector<BasicBlock *, 16> IndirectDests;
+ for (unsigned i = 0, e = getNumIndirectDests(); i < e; ++i)
+ IndirectDests.push_back(getIndirectDest(i));
+ return IndirectDests;
+ }
+ void setDefaultDest(BasicBlock *B) {
+ *(&Op<-1>() - getNumIndirectDests() - 1) = reinterpret_cast<Value *>(B);
+ }
+ void setIndirectDest(unsigned i, BasicBlock *B) {
+ *(&Op<-1>() - getNumIndirectDests() + i) = reinterpret_cast<Value *>(B);
+ }
+
+ BasicBlock *getSuccessor(unsigned i) const {
+ assert(i < getNumSuccessors() + 1 &&
+ "Successor # out of range for callbr!");
+ return i == 0 ? getDefaultDest() : getIndirectDest(i - 1);
+ }
+
+ void setSuccessor(unsigned idx, BasicBlock *NewSucc) {
+ assert(idx < getNumIndirectDests() + 1 &&
+ "Successor # out of range for callbr!");
+ *(&Op<-1>() - getNumIndirectDests() -1 + idx) =
+ reinterpret_cast<Value *>(NewSucc);
+ }
+
+ unsigned getNumSuccessors() const { return getNumIndirectDests() + 1; }
+
+ // Methods for support type inquiry through isa, cast, and dyn_cast:
+ static bool classof(const Instruction *I) {
+ return (I->getOpcode() == Instruction::CallBr);
+ }
+ static bool classof(const Value *V) {
+ return isa<Instruction>(V) && classof(cast<Instruction>(V));
+ }
+
+private:
+
+ // Shadow Instruction::setInstructionSubclassData with a private forwarding
+ // method so that subclasses cannot accidentally use it.
+ void setInstructionSubclassData(unsigned short D) {
+ Instruction::setInstructionSubclassData(D);
+ }
+};
+
+CallBrInst::CallBrInst(FunctionType *Ty, Value *Func, BasicBlock *DefaultDest,
+ ArrayRef<BasicBlock *> IndirectDests,
+ ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> Bundles, int NumOperands,
+ const Twine &NameStr, Instruction *InsertBefore)
+ : CallBase(Ty->getReturnType(), Instruction::CallBr,
+ OperandTraits<CallBase>::op_end(this) - NumOperands, NumOperands,
+ InsertBefore) {
+ init(Ty, Func, DefaultDest, IndirectDests, Args, Bundles, NameStr);
+}
+
+CallBrInst::CallBrInst(FunctionType *Ty, Value *Func, BasicBlock *DefaultDest,
+ ArrayRef<BasicBlock *> IndirectDests,
+ ArrayRef<Value *> Args,
+ ArrayRef<OperandBundleDef> Bundles, int NumOperands,
+ const Twine &NameStr, BasicBlock *InsertAtEnd)
+ : CallBase(
cast<FunctionType>(
cast<PointerType>(Func->getType())->getElementType())
->getReturnType(),
- Instruction::Invoke,
- OperandTraits<CallBase<InvokeInst>>::op_end(this) - Values, Values,
+ Instruction::CallBr,
+ OperandTraits<CallBase>::op_end(this) - NumOperands, NumOperands,
InsertAtEnd) {
- init(Func, IfNormal, IfException, Args, Bundles, NameStr);
+ init(Ty, Func, DefaultDest, IndirectDests, Args, Bundles, NameStr);
}
-
//===----------------------------------------------------------------------===//
// ResumeInst Class
//===----------------------------------------------------------------------===//
@@ -4226,7 +4136,7 @@
//===---------------------------------------------------------------------------
/// Resume the propagation of an exception.
///
-class ResumeInst : public TerminatorInst {
+class ResumeInst : public Instruction {
ResumeInst(const ResumeInst &RI);
explicit ResumeInst(Value *Exn, Instruction *InsertBefore=nullptr);
@@ -4264,8 +4174,6 @@
}
private:
- friend TerminatorInst;
-
BasicBlock *getSuccessor(unsigned idx) const {
llvm_unreachable("ResumeInst has no successors!");
}
@@ -4285,7 +4193,7 @@
//===----------------------------------------------------------------------===//
// CatchSwitchInst Class
//===----------------------------------------------------------------------===//
-class CatchSwitchInst : public TerminatorInst {
+class CatchSwitchInst : public Instruction {
/// The number of operands actually allocated. NumOperands is
/// the number actually in use.
unsigned ReservedSpace;
@@ -4551,7 +4459,7 @@
// CatchReturnInst Class
//===----------------------------------------------------------------------===//
-class CatchReturnInst : public TerminatorInst {
+class CatchReturnInst : public Instruction {
CatchReturnInst(const CatchReturnInst &RI);
CatchReturnInst(Value *CatchPad, BasicBlock *BB, Instruction *InsertBefore);
CatchReturnInst(Value *CatchPad, BasicBlock *BB, BasicBlock *InsertAtEnd);
@@ -4611,8 +4519,6 @@
}
private:
- friend TerminatorInst;
-
BasicBlock *getSuccessor(unsigned Idx) const {
assert(Idx < getNumSuccessors() && "Successor # out of range for catchret!");
return getSuccessor();
@@ -4634,7 +4540,7 @@
// CleanupReturnInst Class
//===----------------------------------------------------------------------===//
-class CleanupReturnInst : public TerminatorInst {
+class CleanupReturnInst : public Instruction {
private:
CleanupReturnInst(const CleanupReturnInst &RI);
CleanupReturnInst(Value *CleanupPad, BasicBlock *UnwindBB, unsigned Values,
@@ -4707,8 +4613,6 @@
}
private:
- friend TerminatorInst;
-
BasicBlock *getSuccessor(unsigned Idx) const {
assert(Idx == 0);
return getUnwindDest();
@@ -4741,7 +4645,7 @@
/// presence of this instruction indicates some higher level knowledge that the
/// end of the block cannot be reached.
///
-class UnreachableInst : public TerminatorInst {
+class UnreachableInst : public Instruction {
protected:
// Note: Instruction needs to be a friend here to call cloneImpl.
friend class Instruction;
@@ -4768,8 +4672,6 @@
}
private:
- friend TerminatorInst;
-
BasicBlock *getSuccessor(unsigned idx) const {
llvm_unreachable("UnreachableInst has no successors!");
}
diff --git a/linux-x64/clang/include/llvm/IR/IntrinsicEnums.inc b/linux-x64/clang/include/llvm/IR/IntrinsicEnums.inc
index adce9db..ef21b6f 100644
--- a/linux-x64/clang/include/llvm/IR/IntrinsicEnums.inc
+++ b/linux-x64/clang/include/llvm/IR/IntrinsicEnums.inc
@@ -58,6 +58,7 @@
eh_dwarf_cfa, // llvm.eh.dwarf.cfa
eh_exceptioncode, // llvm.eh.exceptioncode
eh_exceptionpointer, // llvm.eh.exceptionpointer
+ eh_recoverfp, // llvm.eh.recoverfp
eh_return_i32, // llvm.eh.return.i32
eh_return_i64, // llvm.eh.return.i64
eh_sjlj_callsite, // llvm.eh.sjlj.callsite
@@ -71,11 +72,13 @@
exp, // llvm.exp
exp2, // llvm.exp2
expect, // llvm.expect
+ experimental_constrained_ceil, // llvm.experimental.constrained.ceil
experimental_constrained_cos, // llvm.experimental.constrained.cos
experimental_constrained_exp, // llvm.experimental.constrained.exp
experimental_constrained_exp2, // llvm.experimental.constrained.exp2
experimental_constrained_fadd, // llvm.experimental.constrained.fadd
experimental_constrained_fdiv, // llvm.experimental.constrained.fdiv
+ experimental_constrained_floor, // llvm.experimental.constrained.floor
experimental_constrained_fma, // llvm.experimental.constrained.fma
experimental_constrained_fmul, // llvm.experimental.constrained.fmul
experimental_constrained_frem, // llvm.experimental.constrained.frem
@@ -83,12 +86,16 @@
experimental_constrained_log, // llvm.experimental.constrained.log
experimental_constrained_log10, // llvm.experimental.constrained.log10
experimental_constrained_log2, // llvm.experimental.constrained.log2
+ experimental_constrained_maxnum, // llvm.experimental.constrained.maxnum
+ experimental_constrained_minnum, // llvm.experimental.constrained.minnum
experimental_constrained_nearbyint, // llvm.experimental.constrained.nearbyint
experimental_constrained_pow, // llvm.experimental.constrained.pow
experimental_constrained_powi, // llvm.experimental.constrained.powi
experimental_constrained_rint, // llvm.experimental.constrained.rint
+ experimental_constrained_round, // llvm.experimental.constrained.round
experimental_constrained_sin, // llvm.experimental.constrained.sin
experimental_constrained_sqrt, // llvm.experimental.constrained.sqrt
+ experimental_constrained_trunc, // llvm.experimental.constrained.trunc
experimental_deoptimize, // llvm.experimental.deoptimize
experimental_gc_relocate, // llvm.experimental.gc.relocate
experimental_gc_result, // llvm.experimental.gc.result
@@ -110,6 +117,7 @@
experimental_vector_reduce_umax, // llvm.experimental.vector.reduce.umax
experimental_vector_reduce_umin, // llvm.experimental.vector.reduce.umin
experimental_vector_reduce_xor, // llvm.experimental.vector.reduce.xor
+ experimental_widenable_condition, // llvm.experimental.widenable.condition
fabs, // llvm.fabs
floor, // llvm.floor
flt_rounds, // llvm.flt.rounds
@@ -122,6 +130,7 @@
gcroot, // llvm.gcroot
gcwrite, // llvm.gcwrite
get_dynamic_area_offset, // llvm.get.dynamic.area.offset
+ hwasan_check_memaccess, // llvm.hwasan.check.memaccess
icall_branch_funnel, // llvm.icall.branch.funnel
init_trampoline, // llvm.init.trampoline
instrprof_increment, // llvm.instrprof.increment
@@ -129,6 +138,7 @@
instrprof_value_profile, // llvm.instrprof.value.profile
invariant_end, // llvm.invariant.end
invariant_start, // llvm.invariant.start
+ is_constant, // llvm.is.constant
launder_invariant_group, // llvm.launder.invariant.group
lifetime_end, // llvm.lifetime.end
lifetime_start, // llvm.lifetime.start
@@ -146,6 +156,7 @@
masked_load, // llvm.masked.load
masked_scatter, // llvm.masked.scatter
masked_store, // llvm.masked.store
+ maximum, // llvm.maximum
maxnum, // llvm.maxnum
memcpy, // llvm.memcpy
memcpy_element_unordered_atomic, // llvm.memcpy.element.unordered.atomic
@@ -153,8 +164,39 @@
memmove_element_unordered_atomic, // llvm.memmove.element.unordered.atomic
memset, // llvm.memset
memset_element_unordered_atomic, // llvm.memset.element.unordered.atomic
+ minimum, // llvm.minimum
minnum, // llvm.minnum
nearbyint, // llvm.nearbyint
+ objc_arc_annotation_bottomup_bbend, // llvm.objc.arc.annotation.bottomup.bbend
+ objc_arc_annotation_bottomup_bbstart, // llvm.objc.arc.annotation.bottomup.bbstart
+ objc_arc_annotation_topdown_bbend, // llvm.objc.arc.annotation.topdown.bbend
+ objc_arc_annotation_topdown_bbstart, // llvm.objc.arc.annotation.topdown.bbstart
+ objc_autorelease, // llvm.objc.autorelease
+ objc_autoreleasePoolPop, // llvm.objc.autoreleasePoolPop
+ objc_autoreleasePoolPush, // llvm.objc.autoreleasePoolPush
+ objc_autoreleaseReturnValue, // llvm.objc.autoreleaseReturnValue
+ objc_clang_arc_use, // llvm.objc.clang.arc.use
+ objc_copyWeak, // llvm.objc.copyWeak
+ objc_destroyWeak, // llvm.objc.destroyWeak
+ objc_initWeak, // llvm.objc.initWeak
+ objc_loadWeak, // llvm.objc.loadWeak
+ objc_loadWeakRetained, // llvm.objc.loadWeakRetained
+ objc_moveWeak, // llvm.objc.moveWeak
+ objc_release, // llvm.objc.release
+ objc_retain, // llvm.objc.retain
+ objc_retain_autorelease, // llvm.objc.retain.autorelease
+ objc_retainAutorelease, // llvm.objc.retainAutorelease
+ objc_retainAutoreleaseReturnValue, // llvm.objc.retainAutoreleaseReturnValue
+ objc_retainAutoreleasedReturnValue, // llvm.objc.retainAutoreleasedReturnValue
+ objc_retainBlock, // llvm.objc.retainBlock
+ objc_retainedObject, // llvm.objc.retainedObject
+ objc_storeStrong, // llvm.objc.storeStrong
+ objc_storeWeak, // llvm.objc.storeWeak
+ objc_sync_enter, // llvm.objc.sync.enter
+ objc_sync_exit, // llvm.objc.sync.exit
+ objc_unretainedObject, // llvm.objc.unretainedObject
+ objc_unretainedPointer, // llvm.objc.unretainedPointer
+ objc_unsafeClaimAutoreleasedReturnValue, // llvm.objc.unsafeClaimAutoreleasedReturnValue
objectsize, // llvm.objectsize
pcmarker, // llvm.pcmarker
pow, // llvm.pow
@@ -166,15 +208,19 @@
returnaddress, // llvm.returnaddress
rint, // llvm.rint
round, // llvm.round
+ sadd_sat, // llvm.sadd.sat
sadd_with_overflow, // llvm.sadd.with.overflow
setjmp, // llvm.setjmp
sideeffect, // llvm.sideeffect
siglongjmp, // llvm.siglongjmp
sigsetjmp, // llvm.sigsetjmp
sin, // llvm.sin
+ smul_fix, // llvm.smul.fix
smul_with_overflow, // llvm.smul.with.overflow
+ sponentry, // llvm.sponentry
sqrt, // llvm.sqrt
ssa_copy, // llvm.ssa.copy
+ ssub_sat, // llvm.ssub.sat
ssub_with_overflow, // llvm.ssub.with.overflow
stackguard, // llvm.stackguard
stackprotector, // llvm.stackprotector
@@ -186,8 +232,11 @@
trunc, // llvm.trunc
type_checked_load, // llvm.type.checked.load
type_test, // llvm.type.test
+ uadd_sat, // llvm.uadd.sat
uadd_with_overflow, // llvm.uadd.with.overflow
+ umul_fix, // llvm.umul.fix
umul_with_overflow, // llvm.umul.with.overflow
+ usub_sat, // llvm.usub.sat
usub_with_overflow, // llvm.usub.with.overflow
vacopy, // llvm.va_copy
vaend, // llvm.va_end
@@ -259,6 +308,10 @@
aarch64_neon_fminnmv, // llvm.aarch64.neon.fminnmv
aarch64_neon_fminp, // llvm.aarch64.neon.fminp
aarch64_neon_fminv, // llvm.aarch64.neon.fminv
+ aarch64_neon_fmlal, // llvm.aarch64.neon.fmlal
+ aarch64_neon_fmlal2, // llvm.aarch64.neon.fmlal2
+ aarch64_neon_fmlsl, // llvm.aarch64.neon.fmlsl
+ aarch64_neon_fmlsl2, // llvm.aarch64.neon.fmlsl2
aarch64_neon_fmulx, // llvm.aarch64.neon.fmulx
aarch64_neon_frecpe, // llvm.aarch64.neon.frecpe
aarch64_neon_frecps, // llvm.aarch64.neon.frecps
@@ -383,6 +436,7 @@
aarch64_sdiv, // llvm.aarch64.sdiv
aarch64_sisd_fabd, // llvm.aarch64.sisd.fabd
aarch64_sisd_fcvtxn, // llvm.aarch64.sisd.fcvtxn
+ aarch64_space, // llvm.aarch64.space
aarch64_stlxp, // llvm.aarch64.stlxp
aarch64_stlxr, // llvm.aarch64.stlxr
aarch64_stxp, // llvm.aarch64.stxp
@@ -392,7 +446,6 @@
amdgcn_alignbyte, // llvm.amdgcn.alignbyte
amdgcn_atomic_dec, // llvm.amdgcn.atomic.dec
amdgcn_atomic_inc, // llvm.amdgcn.atomic.inc
- amdgcn_break, // llvm.amdgcn.break
amdgcn_buffer_atomic_add, // llvm.amdgcn.buffer.atomic.add
amdgcn_buffer_atomic_and, // llvm.amdgcn.buffer.atomic.and
amdgcn_buffer_atomic_cmpswap, // llvm.amdgcn.buffer.atomic.cmpswap
@@ -428,14 +481,17 @@
amdgcn_div_fixup, // llvm.amdgcn.div.fixup
amdgcn_div_fmas, // llvm.amdgcn.div.fmas
amdgcn_div_scale, // llvm.amdgcn.div.scale
+ amdgcn_ds_append, // llvm.amdgcn.ds.append
amdgcn_ds_bpermute, // llvm.amdgcn.ds.bpermute
+ amdgcn_ds_consume, // llvm.amdgcn.ds.consume
amdgcn_ds_fadd, // llvm.amdgcn.ds.fadd
amdgcn_ds_fmax, // llvm.amdgcn.ds.fmax
amdgcn_ds_fmin, // llvm.amdgcn.ds.fmin
+ amdgcn_ds_ordered_add, // llvm.amdgcn.ds.ordered.add
+ amdgcn_ds_ordered_swap, // llvm.amdgcn.ds.ordered.swap
amdgcn_ds_permute, // llvm.amdgcn.ds.permute
amdgcn_ds_swizzle, // llvm.amdgcn.ds.swizzle
amdgcn_else, // llvm.amdgcn.else
- amdgcn_else_break, // llvm.amdgcn.else.break
amdgcn_end_cf, // llvm.amdgcn.end.cf
amdgcn_exp, // llvm.amdgcn.exp
amdgcn_exp_compr, // llvm.amdgcn.exp.compr
@@ -916,7 +972,9 @@
amdgcn_init_exec_from_input, // llvm.amdgcn.init.exec.from.input
amdgcn_interp_mov, // llvm.amdgcn.interp.mov
amdgcn_interp_p1, // llvm.amdgcn.interp.p1
+ amdgcn_interp_p1_f16, // llvm.amdgcn.interp.p1.f16
amdgcn_interp_p2, // llvm.amdgcn.interp.p2
+ amdgcn_interp_p2_f16, // llvm.amdgcn.interp.p2.f16
amdgcn_kernarg_segment_ptr, // llvm.amdgcn.kernarg.segment.ptr
amdgcn_kill, // llvm.amdgcn.kill
amdgcn_ldexp, // llvm.amdgcn.ldexp
@@ -1322,6 +1380,7 @@
hexagon_A2_or, // llvm.hexagon.A2.or
hexagon_A2_orir, // llvm.hexagon.A2.orir
hexagon_A2_orp, // llvm.hexagon.A2.orp
+ hexagon_A2_pxorf, // llvm.hexagon.A2.pxorf
hexagon_A2_roundsat, // llvm.hexagon.A2.roundsat
hexagon_A2_sat, // llvm.hexagon.A2.sat
hexagon_A2_satb, // llvm.hexagon.A2.satb
@@ -1358,10 +1417,12 @@
hexagon_A2_sxth, // llvm.hexagon.A2.sxth
hexagon_A2_sxtw, // llvm.hexagon.A2.sxtw
hexagon_A2_tfr, // llvm.hexagon.A2.tfr
+ hexagon_A2_tfrcrr, // llvm.hexagon.A2.tfrcrr
hexagon_A2_tfrih, // llvm.hexagon.A2.tfrih
hexagon_A2_tfril, // llvm.hexagon.A2.tfril
hexagon_A2_tfrp, // llvm.hexagon.A2.tfrp
hexagon_A2_tfrpi, // llvm.hexagon.A2.tfrpi
+ hexagon_A2_tfrrcr, // llvm.hexagon.A2.tfrrcr
hexagon_A2_tfrsi, // llvm.hexagon.A2.tfrsi
hexagon_A2_vabsh, // llvm.hexagon.A2.vabsh
hexagon_A2_vabshsat, // llvm.hexagon.A2.vabshsat
@@ -1430,6 +1491,7 @@
hexagon_A2_xorp, // llvm.hexagon.A2.xorp
hexagon_A2_zxtb, // llvm.hexagon.A2.zxtb
hexagon_A2_zxth, // llvm.hexagon.A2.zxth
+ hexagon_A4_addp_c, // llvm.hexagon.A4.addp.c
hexagon_A4_andn, // llvm.hexagon.A4.andn
hexagon_A4_andnp, // llvm.hexagon.A4.andnp
hexagon_A4_bitsplit, // llvm.hexagon.A4.bitsplit
@@ -1447,6 +1509,7 @@
hexagon_A4_cmphgti, // llvm.hexagon.A4.cmphgti
hexagon_A4_cmphgtu, // llvm.hexagon.A4.cmphgtu
hexagon_A4_cmphgtui, // llvm.hexagon.A4.cmphgtui
+ hexagon_A4_combineii, // llvm.hexagon.A4.combineii
hexagon_A4_combineir, // llvm.hexagon.A4.combineir
hexagon_A4_combineri, // llvm.hexagon.A4.combineri
hexagon_A4_cround_ri, // llvm.hexagon.A4.cround.ri
@@ -1462,6 +1525,9 @@
hexagon_A4_round_ri_sat, // llvm.hexagon.A4.round.ri.sat
hexagon_A4_round_rr, // llvm.hexagon.A4.round.rr
hexagon_A4_round_rr_sat, // llvm.hexagon.A4.round.rr.sat
+ hexagon_A4_subp_c, // llvm.hexagon.A4.subp.c
+ hexagon_A4_tfrcpp, // llvm.hexagon.A4.tfrcpp
+ hexagon_A4_tfrpcp, // llvm.hexagon.A4.tfrpcp
hexagon_A4_tlbmatch, // llvm.hexagon.A4.tlbmatch
hexagon_A4_vcmpbeq_any, // llvm.hexagon.A4.vcmpbeq.any
hexagon_A4_vcmpbeqi, // llvm.hexagon.A4.vcmpbeqi
@@ -1482,9 +1548,10 @@
hexagon_A4_vrminuh, // llvm.hexagon.A4.vrminuh
hexagon_A4_vrminuw, // llvm.hexagon.A4.vrminuw
hexagon_A4_vrminw, // llvm.hexagon.A4.vrminw
+ hexagon_A5_ACS, // llvm.hexagon.A5.ACS
hexagon_A5_vaddhubs, // llvm.hexagon.A5.vaddhubs
hexagon_A6_vcmpbeq_notany, // llvm.hexagon.A6.vcmpbeq.notany
- hexagon_A6_vcmpbeq_notany_128B, // llvm.hexagon.A6.vcmpbeq.notany.128B
+ hexagon_A6_vminub_RdP, // llvm.hexagon.A6.vminub.RdP
hexagon_C2_all8, // llvm.hexagon.C2.all8
hexagon_C2_and, // llvm.hexagon.C2.and
hexagon_C2_andn, // llvm.hexagon.C2.andn
@@ -1564,6 +1631,7 @@
hexagon_F2_conv_uw2sf, // llvm.hexagon.F2.conv.uw2sf
hexagon_F2_conv_w2df, // llvm.hexagon.F2.conv.w2df
hexagon_F2_conv_w2sf, // llvm.hexagon.F2.conv.w2sf
+ hexagon_F2_dfadd, // llvm.hexagon.F2.dfadd
hexagon_F2_dfclass, // llvm.hexagon.F2.dfclass
hexagon_F2_dfcmpeq, // llvm.hexagon.F2.dfcmpeq
hexagon_F2_dfcmpge, // llvm.hexagon.F2.dfcmpge
@@ -1571,6 +1639,7 @@
hexagon_F2_dfcmpuo, // llvm.hexagon.F2.dfcmpuo
hexagon_F2_dfimm_n, // llvm.hexagon.F2.dfimm.n
hexagon_F2_dfimm_p, // llvm.hexagon.F2.dfimm.p
+ hexagon_F2_dfsub, // llvm.hexagon.F2.dfsub
hexagon_F2_sfadd, // llvm.hexagon.F2.sfadd
hexagon_F2_sfclass, // llvm.hexagon.F2.sfclass
hexagon_F2_sfcmpeq, // llvm.hexagon.F2.sfcmpeq
@@ -1587,9 +1656,11 @@
hexagon_F2_sffms_lib, // llvm.hexagon.F2.sffms.lib
hexagon_F2_sfimm_n, // llvm.hexagon.F2.sfimm.n
hexagon_F2_sfimm_p, // llvm.hexagon.F2.sfimm.p
+ hexagon_F2_sfinvsqrta, // llvm.hexagon.F2.sfinvsqrta
hexagon_F2_sfmax, // llvm.hexagon.F2.sfmax
hexagon_F2_sfmin, // llvm.hexagon.F2.sfmin
hexagon_F2_sfmpy, // llvm.hexagon.F2.sfmpy
+ hexagon_F2_sfrecipa, // llvm.hexagon.F2.sfrecipa
hexagon_F2_sfsub, // llvm.hexagon.F2.sfsub
hexagon_L2_loadrb_pbr, // llvm.hexagon.L2.loadrb.pbr
hexagon_L2_loadrb_pci, // llvm.hexagon.L2.loadrb.pci
@@ -1679,6 +1750,7 @@
hexagon_M2_mmpyul_rs1, // llvm.hexagon.M2.mmpyul.rs1
hexagon_M2_mmpyul_s0, // llvm.hexagon.M2.mmpyul.s0
hexagon_M2_mmpyul_s1, // llvm.hexagon.M2.mmpyul.s1
+ hexagon_M2_mnaci, // llvm.hexagon.M2.mnaci
hexagon_M2_mpy_acc_hh_s0, // llvm.hexagon.M2.mpy.acc.hh.s0
hexagon_M2_mpy_acc_hh_s1, // llvm.hexagon.M2.mpy.acc.hh.s1
hexagon_M2_mpy_acc_hl_s0, // llvm.hexagon.M2.mpy.acc.hl.s0
@@ -1779,6 +1851,8 @@
hexagon_M2_mpyd_rnd_ll_s0, // llvm.hexagon.M2.mpyd.rnd.ll.s0
hexagon_M2_mpyd_rnd_ll_s1, // llvm.hexagon.M2.mpyd.rnd.ll.s1
hexagon_M2_mpyi, // llvm.hexagon.M2.mpyi
+ hexagon_M2_mpysin, // llvm.hexagon.M2.mpysin
+ hexagon_M2_mpysip, // llvm.hexagon.M2.mpysip
hexagon_M2_mpysmi, // llvm.hexagon.M2.mpysmi
hexagon_M2_mpysu_up, // llvm.hexagon.M2.mpysu.up
hexagon_M2_mpyu_acc_hh_s0, // llvm.hexagon.M2.mpyu.acc.hh.s0
@@ -1991,7 +2065,6 @@
hexagon_S2_asr_r_vw, // llvm.hexagon.S2.asr.r.vw
hexagon_S2_brev, // llvm.hexagon.S2.brev
hexagon_S2_brevp, // llvm.hexagon.S2.brevp
- hexagon_S2_cabacencbin, // llvm.hexagon.S2.cabacencbin
hexagon_S2_cl0, // llvm.hexagon.S2.cl0
hexagon_S2_cl0p, // llvm.hexagon.S2.cl0p
hexagon_S2_cl1, // llvm.hexagon.S2.cl1
@@ -2056,6 +2129,7 @@
hexagon_S2_lsr_r_r_or, // llvm.hexagon.S2.lsr.r.r.or
hexagon_S2_lsr_r_vh, // llvm.hexagon.S2.lsr.r.vh
hexagon_S2_lsr_r_vw, // llvm.hexagon.S2.lsr.r.vw
+ hexagon_S2_mask, // llvm.hexagon.S2.mask
hexagon_S2_packhl, // llvm.hexagon.S2.packhl
hexagon_S2_parityp, // llvm.hexagon.S2.parityp
hexagon_S2_setbit_i, // llvm.hexagon.S2.setbit.i
@@ -2173,6 +2247,37 @@
hexagon_V6_extractw_128B, // llvm.hexagon.V6.extractw.128B
hexagon_V6_hi, // llvm.hexagon.V6.hi
hexagon_V6_hi_128B, // llvm.hexagon.V6.hi.128B
+ hexagon_V6_ld0, // llvm.hexagon.V6.ld0
+ hexagon_V6_ld0_128B, // llvm.hexagon.V6.ld0.128B
+ hexagon_V6_ldcnp0, // llvm.hexagon.V6.ldcnp0
+ hexagon_V6_ldcnp0_128B, // llvm.hexagon.V6.ldcnp0.128B
+ hexagon_V6_ldcnpnt0, // llvm.hexagon.V6.ldcnpnt0
+ hexagon_V6_ldcnpnt0_128B, // llvm.hexagon.V6.ldcnpnt0.128B
+ hexagon_V6_ldcp0, // llvm.hexagon.V6.ldcp0
+ hexagon_V6_ldcp0_128B, // llvm.hexagon.V6.ldcp0.128B
+ hexagon_V6_ldcpnt0, // llvm.hexagon.V6.ldcpnt0
+ hexagon_V6_ldcpnt0_128B, // llvm.hexagon.V6.ldcpnt0.128B
+ hexagon_V6_ldnp0, // llvm.hexagon.V6.ldnp0
+ hexagon_V6_ldnp0_128B, // llvm.hexagon.V6.ldnp0.128B
+ hexagon_V6_ldnpnt0, // llvm.hexagon.V6.ldnpnt0
+ hexagon_V6_ldnpnt0_128B, // llvm.hexagon.V6.ldnpnt0.128B
+ hexagon_V6_ldnt0, // llvm.hexagon.V6.ldnt0
+ hexagon_V6_ldnt0_128B, // llvm.hexagon.V6.ldnt0.128B
+ hexagon_V6_ldntnt0, // llvm.hexagon.V6.ldntnt0
+ hexagon_V6_ldp0, // llvm.hexagon.V6.ldp0
+ hexagon_V6_ldp0_128B, // llvm.hexagon.V6.ldp0.128B
+ hexagon_V6_ldpnt0, // llvm.hexagon.V6.ldpnt0
+ hexagon_V6_ldpnt0_128B, // llvm.hexagon.V6.ldpnt0.128B
+ hexagon_V6_ldtnp0, // llvm.hexagon.V6.ldtnp0
+ hexagon_V6_ldtnp0_128B, // llvm.hexagon.V6.ldtnp0.128B
+ hexagon_V6_ldtnpnt0, // llvm.hexagon.V6.ldtnpnt0
+ hexagon_V6_ldtnpnt0_128B, // llvm.hexagon.V6.ldtnpnt0.128B
+ hexagon_V6_ldtp0, // llvm.hexagon.V6.ldtp0
+ hexagon_V6_ldtp0_128B, // llvm.hexagon.V6.ldtp0.128B
+ hexagon_V6_ldtpnt0, // llvm.hexagon.V6.ldtpnt0
+ hexagon_V6_ldtpnt0_128B, // llvm.hexagon.V6.ldtpnt0.128B
+ hexagon_V6_ldu0, // llvm.hexagon.V6.ldu0
+ hexagon_V6_ldu0_128B, // llvm.hexagon.V6.ldu0.128B
hexagon_V6_lo, // llvm.hexagon.V6.lo
hexagon_V6_lo_128B, // llvm.hexagon.V6.lo.128B
hexagon_V6_lvsplatb, // llvm.hexagon.V6.lvsplatb
@@ -2243,6 +2348,8 @@
hexagon_V6_vaddbsat_dv_128B, // llvm.hexagon.V6.vaddbsat.dv.128B
hexagon_V6_vaddcarry, // llvm.hexagon.V6.vaddcarry
hexagon_V6_vaddcarry_128B, // llvm.hexagon.V6.vaddcarry.128B
+ hexagon_V6_vaddcarrysat, // llvm.hexagon.V6.vaddcarrysat
+ hexagon_V6_vaddcarrysat_128B, // llvm.hexagon.V6.vaddcarrysat.128B
hexagon_V6_vaddclbh, // llvm.hexagon.V6.vaddclbh
hexagon_V6_vaddclbh_128B, // llvm.hexagon.V6.vaddclbh.128B
hexagon_V6_vaddclbw, // llvm.hexagon.V6.vaddclbw
@@ -2331,6 +2438,8 @@
hexagon_V6_vaslw_acc_128B, // llvm.hexagon.V6.vaslw.acc.128B
hexagon_V6_vaslwv, // llvm.hexagon.V6.vaslwv
hexagon_V6_vaslwv_128B, // llvm.hexagon.V6.vaslwv.128B
+ hexagon_V6_vasr_into, // llvm.hexagon.V6.vasr.into
+ hexagon_V6_vasr_into_128B, // llvm.hexagon.V6.vasr.into.128B
hexagon_V6_vasrh, // llvm.hexagon.V6.vasrh
hexagon_V6_vasrh_128B, // llvm.hexagon.V6.vasrh.128B
hexagon_V6_vasrh_acc, // llvm.hexagon.V6.vasrh.acc
@@ -2811,6 +2920,8 @@
hexagon_V6_vrmpyubv_acc_128B, // llvm.hexagon.V6.vrmpyubv.acc.128B
hexagon_V6_vror, // llvm.hexagon.V6.vror
hexagon_V6_vror_128B, // llvm.hexagon.V6.vror.128B
+ hexagon_V6_vrotr, // llvm.hexagon.V6.vrotr
+ hexagon_V6_vrotr_128B, // llvm.hexagon.V6.vrotr.128B
hexagon_V6_vroundhb, // llvm.hexagon.V6.vroundhb
hexagon_V6_vroundhb_128B, // llvm.hexagon.V6.vroundhb.128B
hexagon_V6_vroundhub, // llvm.hexagon.V6.vroundhub
@@ -2827,6 +2938,8 @@
hexagon_V6_vrsadubi_128B, // llvm.hexagon.V6.vrsadubi.128B
hexagon_V6_vrsadubi_acc, // llvm.hexagon.V6.vrsadubi.acc
hexagon_V6_vrsadubi_acc_128B, // llvm.hexagon.V6.vrsadubi.acc.128B
+ hexagon_V6_vsatdw, // llvm.hexagon.V6.vsatdw
+ hexagon_V6_vsatdw_128B, // llvm.hexagon.V6.vsatdw.128B
hexagon_V6_vsathub, // llvm.hexagon.V6.vsathub
hexagon_V6_vsathub_128B, // llvm.hexagon.V6.vsathub.128B
hexagon_V6_vsatuwuh, // llvm.hexagon.V6.vsatuwuh
@@ -2945,6 +3058,8 @@
hexagon_V6_vtmpyhb_128B, // llvm.hexagon.V6.vtmpyhb.128B
hexagon_V6_vtmpyhb_acc, // llvm.hexagon.V6.vtmpyhb.acc
hexagon_V6_vtmpyhb_acc_128B, // llvm.hexagon.V6.vtmpyhb.acc.128B
+ hexagon_V6_vtran2x2_map, // llvm.hexagon.V6.vtran2x2.map
+ hexagon_V6_vtran2x2_map_128B, // llvm.hexagon.V6.vtran2x2.map.128B
hexagon_V6_vunpackb, // llvm.hexagon.V6.vunpackb
hexagon_V6_vunpackb_128B, // llvm.hexagon.V6.vunpackb.128B
hexagon_V6_vunpackh, // llvm.hexagon.V6.vunpackh
@@ -2980,8 +3095,9 @@
hexagon_circ_sth, // llvm.hexagon.circ.sth
hexagon_circ_sthhi, // llvm.hexagon.circ.sthhi
hexagon_circ_stw, // llvm.hexagon.circ.stw
- hexagon_mm256i_vaddw, // llvm.hexagon.mm256i.vaddw
hexagon_prefetch, // llvm.hexagon.prefetch
+ hexagon_vmemcpy, // llvm.hexagon.vmemcpy
+ hexagon_vmemset, // llvm.hexagon.vmemset
mips_absq_s_ph, // llvm.mips.absq.s.ph
mips_absq_s_qb, // llvm.mips.absq.s.qb
mips_absq_s_w, // llvm.mips.absq.s.w
@@ -5207,13 +5323,23 @@
r600_txlc, // llvm.r600.txlc
r600_txq, // llvm.r600.txq
riscv_masked_atomicrmw_add_i32, // llvm.riscv.masked.atomicrmw.add.i32
+ riscv_masked_atomicrmw_add_i64, // llvm.riscv.masked.atomicrmw.add.i64
riscv_masked_atomicrmw_max_i32, // llvm.riscv.masked.atomicrmw.max.i32
+ riscv_masked_atomicrmw_max_i64, // llvm.riscv.masked.atomicrmw.max.i64
riscv_masked_atomicrmw_min_i32, // llvm.riscv.masked.atomicrmw.min.i32
+ riscv_masked_atomicrmw_min_i64, // llvm.riscv.masked.atomicrmw.min.i64
riscv_masked_atomicrmw_nand_i32, // llvm.riscv.masked.atomicrmw.nand.i32
+ riscv_masked_atomicrmw_nand_i64, // llvm.riscv.masked.atomicrmw.nand.i64
riscv_masked_atomicrmw_sub_i32, // llvm.riscv.masked.atomicrmw.sub.i32
+ riscv_masked_atomicrmw_sub_i64, // llvm.riscv.masked.atomicrmw.sub.i64
riscv_masked_atomicrmw_umax_i32, // llvm.riscv.masked.atomicrmw.umax.i32
+ riscv_masked_atomicrmw_umax_i64, // llvm.riscv.masked.atomicrmw.umax.i64
riscv_masked_atomicrmw_umin_i32, // llvm.riscv.masked.atomicrmw.umin.i32
+ riscv_masked_atomicrmw_umin_i64, // llvm.riscv.masked.atomicrmw.umin.i64
riscv_masked_atomicrmw_xchg_i32, // llvm.riscv.masked.atomicrmw.xchg.i32
+ riscv_masked_atomicrmw_xchg_i64, // llvm.riscv.masked.atomicrmw.xchg.i64
+ riscv_masked_cmpxchg_i32, // llvm.riscv.masked.cmpxchg.i32
+ riscv_masked_cmpxchg_i64, // llvm.riscv.masked.cmpxchg.i64
s390_efpc, // llvm.s390.efpc
s390_etnd, // llvm.s390.etnd
s390_lcbb, // llvm.s390.lcbb
@@ -5434,29 +5560,27 @@
s390_vupllb, // llvm.s390.vupllb
s390_vupllf, // llvm.s390.vupllf
s390_vupllh, // llvm.s390.vupllh
- wasm_add_saturate_signed, // llvm.wasm.add.saturate.signed
- wasm_add_saturate_unsigned, // llvm.wasm.add.saturate.unsigned
wasm_alltrue, // llvm.wasm.alltrue
wasm_anytrue, // llvm.wasm.anytrue
wasm_atomic_notify, // llvm.wasm.atomic.notify
wasm_atomic_wait_i32, // llvm.wasm.atomic.wait.i32
wasm_atomic_wait_i64, // llvm.wasm.atomic.wait.i64
wasm_bitselect, // llvm.wasm.bitselect
- wasm_catch, // llvm.wasm.catch
- wasm_current_memory, // llvm.wasm.current.memory
+ wasm_data_drop, // llvm.wasm.data.drop
+ wasm_extract_exception, // llvm.wasm.extract.exception
wasm_get_ehselector, // llvm.wasm.get.ehselector
wasm_get_exception, // llvm.wasm.get.exception
- wasm_grow_memory, // llvm.wasm.grow.memory
wasm_landingpad_index, // llvm.wasm.landingpad.index
wasm_lsda, // llvm.wasm.lsda
- wasm_mem_grow, // llvm.wasm.mem.grow
- wasm_mem_size, // llvm.wasm.mem.size
wasm_memory_grow, // llvm.wasm.memory.grow
+ wasm_memory_init, // llvm.wasm.memory.init
wasm_memory_size, // llvm.wasm.memory.size
wasm_rethrow, // llvm.wasm.rethrow
wasm_sub_saturate_signed, // llvm.wasm.sub.saturate.signed
wasm_sub_saturate_unsigned, // llvm.wasm.sub.saturate.unsigned
wasm_throw, // llvm.wasm.throw
+ wasm_trunc_saturate_signed, // llvm.wasm.trunc.saturate.signed
+ wasm_trunc_saturate_unsigned, // llvm.wasm.trunc.saturate.unsigned
x86_3dnow_pavgusb, // llvm.x86.3dnow.pavgusb
x86_3dnow_pf2id, // llvm.x86.3dnow.pf2id
x86_3dnow_pfacc, // llvm.x86.3dnow.pfacc
@@ -5481,10 +5605,8 @@
x86_3dnowa_pfpnacc, // llvm.x86.3dnowa.pfpnacc
x86_3dnowa_pi2fw, // llvm.x86.3dnowa.pi2fw
x86_3dnowa_pswapd, // llvm.x86.3dnowa.pswapd
- x86_addcarry_u32, // llvm.x86.addcarry.u32
- x86_addcarry_u64, // llvm.x86.addcarry.u64
- x86_addcarryx_u32, // llvm.x86.addcarryx.u32
- x86_addcarryx_u64, // llvm.x86.addcarryx.u64
+ x86_addcarry_32, // llvm.x86.addcarry.32
+ x86_addcarry_64, // llvm.x86.addcarry.64
x86_aesni_aesdec, // llvm.x86.aesni.aesdec
x86_aesni_aesdec_256, // llvm.x86.aesni.aesdec.256
x86_aesni_aesdec_512, // llvm.x86.aesni.aesdec.512
@@ -5584,8 +5706,6 @@
x86_avx2_packsswb, // llvm.x86.avx2.packsswb
x86_avx2_packusdw, // llvm.x86.avx2.packusdw
x86_avx2_packuswb, // llvm.x86.avx2.packuswb
- x86_avx2_padds_b, // llvm.x86.avx2.padds.b
- x86_avx2_padds_w, // llvm.x86.avx2.padds.w
x86_avx2_pblendvb, // llvm.x86.avx2.pblendvb
x86_avx2_permd, // llvm.x86.avx2.permd
x86_avx2_permps, // llvm.x86.avx2.permps
@@ -5632,8 +5752,6 @@
x86_avx2_psrlv_d_256, // llvm.x86.avx2.psrlv.d.256
x86_avx2_psrlv_q, // llvm.x86.avx2.psrlv.q
x86_avx2_psrlv_q_256, // llvm.x86.avx2.psrlv.q.256
- x86_avx2_psubs_b, // llvm.x86.avx2.psubs.b
- x86_avx2_psubs_w, // llvm.x86.avx2.psubs.w
x86_avx512_add_pd_512, // llvm.x86.avx512.add.pd.512
x86_avx512_add_ps_512, // llvm.x86.avx512.add.ps.512
x86_avx512_broadcastmb_128, // llvm.x86.avx512.broadcastmb.128
@@ -5648,6 +5766,12 @@
x86_avx512_cmp_ps_128, // llvm.x86.avx512.cmp.ps.128
x86_avx512_cmp_ps_256, // llvm.x86.avx512.cmp.ps.256
x86_avx512_cmp_ps_512, // llvm.x86.avx512.cmp.ps.512
+ x86_avx512_conflict_d_128, // llvm.x86.avx512.conflict.d.128
+ x86_avx512_conflict_d_256, // llvm.x86.avx512.conflict.d.256
+ x86_avx512_conflict_d_512, // llvm.x86.avx512.conflict.d.512
+ x86_avx512_conflict_q_128, // llvm.x86.avx512.conflict.q.128
+ x86_avx512_conflict_q_256, // llvm.x86.avx512.conflict.q.256
+ x86_avx512_conflict_q_512, // llvm.x86.avx512.conflict.q.512
x86_avx512_cvtsi2sd64, // llvm.x86.avx512.cvtsi2sd64
x86_avx512_cvtsi2ss32, // llvm.x86.avx512.cvtsi2ss32
x86_avx512_cvtsi2ss64, // llvm.x86.avx512.cvtsi2ss64
@@ -5719,31 +5843,7 @@
x86_avx512_mask_add_ss_round, // llvm.x86.avx512.mask.add.ss.round
x86_avx512_mask_cmp_sd, // llvm.x86.avx512.mask.cmp.sd
x86_avx512_mask_cmp_ss, // llvm.x86.avx512.mask.cmp.ss
- x86_avx512_mask_compress_b_128, // llvm.x86.avx512.mask.compress.b.128
- x86_avx512_mask_compress_b_256, // llvm.x86.avx512.mask.compress.b.256
- x86_avx512_mask_compress_b_512, // llvm.x86.avx512.mask.compress.b.512
- x86_avx512_mask_compress_d_128, // llvm.x86.avx512.mask.compress.d.128
- x86_avx512_mask_compress_d_256, // llvm.x86.avx512.mask.compress.d.256
- x86_avx512_mask_compress_d_512, // llvm.x86.avx512.mask.compress.d.512
- x86_avx512_mask_compress_pd_128, // llvm.x86.avx512.mask.compress.pd.128
- x86_avx512_mask_compress_pd_256, // llvm.x86.avx512.mask.compress.pd.256
- x86_avx512_mask_compress_pd_512, // llvm.x86.avx512.mask.compress.pd.512
- x86_avx512_mask_compress_ps_128, // llvm.x86.avx512.mask.compress.ps.128
- x86_avx512_mask_compress_ps_256, // llvm.x86.avx512.mask.compress.ps.256
- x86_avx512_mask_compress_ps_512, // llvm.x86.avx512.mask.compress.ps.512
- x86_avx512_mask_compress_q_128, // llvm.x86.avx512.mask.compress.q.128
- x86_avx512_mask_compress_q_256, // llvm.x86.avx512.mask.compress.q.256
- x86_avx512_mask_compress_q_512, // llvm.x86.avx512.mask.compress.q.512
- x86_avx512_mask_compress_w_128, // llvm.x86.avx512.mask.compress.w.128
- x86_avx512_mask_compress_w_256, // llvm.x86.avx512.mask.compress.w.256
- x86_avx512_mask_compress_w_512, // llvm.x86.avx512.mask.compress.w.512
- x86_avx512_mask_conflict_d_128, // llvm.x86.avx512.mask.conflict.d.128
- x86_avx512_mask_conflict_d_256, // llvm.x86.avx512.mask.conflict.d.256
- x86_avx512_mask_conflict_d_512, // llvm.x86.avx512.mask.conflict.d.512
- x86_avx512_mask_conflict_q_128, // llvm.x86.avx512.mask.conflict.q.128
- x86_avx512_mask_conflict_q_256, // llvm.x86.avx512.mask.conflict.q.256
- x86_avx512_mask_conflict_q_512, // llvm.x86.avx512.mask.conflict.q.512
- x86_avx512_mask_cvtdq2ps_512, // llvm.x86.avx512.mask.cvtdq2ps.512
+ x86_avx512_mask_compress, // llvm.x86.avx512.mask.compress
x86_avx512_mask_cvtpd2dq_128, // llvm.x86.avx512.mask.cvtpd2dq.128
x86_avx512_mask_cvtpd2dq_512, // llvm.x86.avx512.mask.cvtpd2dq.512
x86_avx512_mask_cvtpd2ps, // llvm.x86.avx512.mask.cvtpd2ps
@@ -5770,10 +5870,7 @@
x86_avx512_mask_cvtps2uqq_128, // llvm.x86.avx512.mask.cvtps2uqq.128
x86_avx512_mask_cvtps2uqq_256, // llvm.x86.avx512.mask.cvtps2uqq.256
x86_avx512_mask_cvtps2uqq_512, // llvm.x86.avx512.mask.cvtps2uqq.512
- x86_avx512_mask_cvtqq2pd_512, // llvm.x86.avx512.mask.cvtqq2pd.512
x86_avx512_mask_cvtqq2ps_128, // llvm.x86.avx512.mask.cvtqq2ps.128
- x86_avx512_mask_cvtqq2ps_256, // llvm.x86.avx512.mask.cvtqq2ps.256
- x86_avx512_mask_cvtqq2ps_512, // llvm.x86.avx512.mask.cvtqq2ps.512
x86_avx512_mask_cvtsd2ss_round, // llvm.x86.avx512.mask.cvtsd2ss.round
x86_avx512_mask_cvtss2sd_round, // llvm.x86.avx512.mask.cvtss2sd.round
x86_avx512_mask_cvttpd2dq_128, // llvm.x86.avx512.mask.cvttpd2dq.128
@@ -5797,31 +5894,10 @@
x86_avx512_mask_cvttps2uqq_128, // llvm.x86.avx512.mask.cvttps2uqq.128
x86_avx512_mask_cvttps2uqq_256, // llvm.x86.avx512.mask.cvttps2uqq.256
x86_avx512_mask_cvttps2uqq_512, // llvm.x86.avx512.mask.cvttps2uqq.512
- x86_avx512_mask_cvtudq2ps_512, // llvm.x86.avx512.mask.cvtudq2ps.512
- x86_avx512_mask_cvtuqq2pd_512, // llvm.x86.avx512.mask.cvtuqq2pd.512
x86_avx512_mask_cvtuqq2ps_128, // llvm.x86.avx512.mask.cvtuqq2ps.128
- x86_avx512_mask_cvtuqq2ps_256, // llvm.x86.avx512.mask.cvtuqq2ps.256
- x86_avx512_mask_cvtuqq2ps_512, // llvm.x86.avx512.mask.cvtuqq2ps.512
x86_avx512_mask_div_sd_round, // llvm.x86.avx512.mask.div.sd.round
x86_avx512_mask_div_ss_round, // llvm.x86.avx512.mask.div.ss.round
- x86_avx512_mask_expand_b_128, // llvm.x86.avx512.mask.expand.b.128
- x86_avx512_mask_expand_b_256, // llvm.x86.avx512.mask.expand.b.256
- x86_avx512_mask_expand_b_512, // llvm.x86.avx512.mask.expand.b.512
- x86_avx512_mask_expand_d_128, // llvm.x86.avx512.mask.expand.d.128
- x86_avx512_mask_expand_d_256, // llvm.x86.avx512.mask.expand.d.256
- x86_avx512_mask_expand_d_512, // llvm.x86.avx512.mask.expand.d.512
- x86_avx512_mask_expand_pd_128, // llvm.x86.avx512.mask.expand.pd.128
- x86_avx512_mask_expand_pd_256, // llvm.x86.avx512.mask.expand.pd.256
- x86_avx512_mask_expand_pd_512, // llvm.x86.avx512.mask.expand.pd.512
- x86_avx512_mask_expand_ps_128, // llvm.x86.avx512.mask.expand.ps.128
- x86_avx512_mask_expand_ps_256, // llvm.x86.avx512.mask.expand.ps.256
- x86_avx512_mask_expand_ps_512, // llvm.x86.avx512.mask.expand.ps.512
- x86_avx512_mask_expand_q_128, // llvm.x86.avx512.mask.expand.q.128
- x86_avx512_mask_expand_q_256, // llvm.x86.avx512.mask.expand.q.256
- x86_avx512_mask_expand_q_512, // llvm.x86.avx512.mask.expand.q.512
- x86_avx512_mask_expand_w_128, // llvm.x86.avx512.mask.expand.w.128
- x86_avx512_mask_expand_w_256, // llvm.x86.avx512.mask.expand.w.256
- x86_avx512_mask_expand_w_512, // llvm.x86.avx512.mask.expand.w.512
+ x86_avx512_mask_expand, // llvm.x86.avx512.mask.expand
x86_avx512_mask_fixupimm_pd_128, // llvm.x86.avx512.mask.fixupimm.pd.128
x86_avx512_mask_fixupimm_pd_256, // llvm.x86.avx512.mask.fixupimm.pd.256
x86_avx512_mask_fixupimm_pd_512, // llvm.x86.avx512.mask.fixupimm.pd.512
@@ -5832,6 +5908,30 @@
x86_avx512_mask_fixupimm_ss, // llvm.x86.avx512.mask.fixupimm.ss
x86_avx512_mask_fpclass_sd, // llvm.x86.avx512.mask.fpclass.sd
x86_avx512_mask_fpclass_ss, // llvm.x86.avx512.mask.fpclass.ss
+ x86_avx512_mask_gather_dpd_512, // llvm.x86.avx512.mask.gather.dpd.512
+ x86_avx512_mask_gather_dpi_512, // llvm.x86.avx512.mask.gather.dpi.512
+ x86_avx512_mask_gather_dpq_512, // llvm.x86.avx512.mask.gather.dpq.512
+ x86_avx512_mask_gather_dps_512, // llvm.x86.avx512.mask.gather.dps.512
+ x86_avx512_mask_gather_qpd_512, // llvm.x86.avx512.mask.gather.qpd.512
+ x86_avx512_mask_gather_qpi_512, // llvm.x86.avx512.mask.gather.qpi.512
+ x86_avx512_mask_gather_qpq_512, // llvm.x86.avx512.mask.gather.qpq.512
+ x86_avx512_mask_gather_qps_512, // llvm.x86.avx512.mask.gather.qps.512
+ x86_avx512_mask_gather3div2_df, // llvm.x86.avx512.mask.gather3div2.df
+ x86_avx512_mask_gather3div2_di, // llvm.x86.avx512.mask.gather3div2.di
+ x86_avx512_mask_gather3div4_df, // llvm.x86.avx512.mask.gather3div4.df
+ x86_avx512_mask_gather3div4_di, // llvm.x86.avx512.mask.gather3div4.di
+ x86_avx512_mask_gather3div4_sf, // llvm.x86.avx512.mask.gather3div4.sf
+ x86_avx512_mask_gather3div4_si, // llvm.x86.avx512.mask.gather3div4.si
+ x86_avx512_mask_gather3div8_sf, // llvm.x86.avx512.mask.gather3div8.sf
+ x86_avx512_mask_gather3div8_si, // llvm.x86.avx512.mask.gather3div8.si
+ x86_avx512_mask_gather3siv2_df, // llvm.x86.avx512.mask.gather3siv2.df
+ x86_avx512_mask_gather3siv2_di, // llvm.x86.avx512.mask.gather3siv2.di
+ x86_avx512_mask_gather3siv4_df, // llvm.x86.avx512.mask.gather3siv4.df
+ x86_avx512_mask_gather3siv4_di, // llvm.x86.avx512.mask.gather3siv4.di
+ x86_avx512_mask_gather3siv4_sf, // llvm.x86.avx512.mask.gather3siv4.sf
+ x86_avx512_mask_gather3siv4_si, // llvm.x86.avx512.mask.gather3siv4.si
+ x86_avx512_mask_gather3siv8_sf, // llvm.x86.avx512.mask.gather3siv8.sf
+ x86_avx512_mask_gather3siv8_si, // llvm.x86.avx512.mask.gather3siv8.si
x86_avx512_mask_getexp_pd_128, // llvm.x86.avx512.mask.getexp.pd.128
x86_avx512_mask_getexp_pd_256, // llvm.x86.avx512.mask.getexp.pd.256
x86_avx512_mask_getexp_pd_512, // llvm.x86.avx512.mask.getexp.pd.512
@@ -5873,8 +5973,6 @@
x86_avx512_mask_pmov_qb_mem_256, // llvm.x86.avx512.mask.pmov.qb.mem.256
x86_avx512_mask_pmov_qb_mem_512, // llvm.x86.avx512.mask.pmov.qb.mem.512
x86_avx512_mask_pmov_qd_128, // llvm.x86.avx512.mask.pmov.qd.128
- x86_avx512_mask_pmov_qd_256, // llvm.x86.avx512.mask.pmov.qd.256
- x86_avx512_mask_pmov_qd_512, // llvm.x86.avx512.mask.pmov.qd.512
x86_avx512_mask_pmov_qd_mem_128, // llvm.x86.avx512.mask.pmov.qd.mem.128
x86_avx512_mask_pmov_qd_mem_256, // llvm.x86.avx512.mask.pmov.qd.mem.256
x86_avx512_mask_pmov_qd_mem_512, // llvm.x86.avx512.mask.pmov.qd.mem.512
@@ -5885,8 +5983,6 @@
x86_avx512_mask_pmov_qw_mem_256, // llvm.x86.avx512.mask.pmov.qw.mem.256
x86_avx512_mask_pmov_qw_mem_512, // llvm.x86.avx512.mask.pmov.qw.mem.512
x86_avx512_mask_pmov_wb_128, // llvm.x86.avx512.mask.pmov.wb.128
- x86_avx512_mask_pmov_wb_256, // llvm.x86.avx512.mask.pmov.wb.256
- x86_avx512_mask_pmov_wb_512, // llvm.x86.avx512.mask.pmov.wb.512
x86_avx512_mask_pmov_wb_mem_128, // llvm.x86.avx512.mask.pmov.wb.mem.128
x86_avx512_mask_pmov_wb_mem_256, // llvm.x86.avx512.mask.pmov.wb.mem.256
x86_avx512_mask_pmov_wb_mem_512, // llvm.x86.avx512.mask.pmov.wb.mem.512
@@ -5962,9 +6058,6 @@
x86_avx512_mask_pmovus_wb_mem_128, // llvm.x86.avx512.mask.pmovus.wb.mem.128
x86_avx512_mask_pmovus_wb_mem_256, // llvm.x86.avx512.mask.pmovus.wb.mem.256
x86_avx512_mask_pmovus_wb_mem_512, // llvm.x86.avx512.mask.pmovus.wb.mem.512
- x86_avx512_mask_pmultishift_qb_128, // llvm.x86.avx512.mask.pmultishift.qb.128
- x86_avx512_mask_pmultishift_qb_256, // llvm.x86.avx512.mask.pmultishift.qb.256
- x86_avx512_mask_pmultishift_qb_512, // llvm.x86.avx512.mask.pmultishift.qb.512
x86_avx512_mask_range_pd_128, // llvm.x86.avx512.mask.range.pd.128
x86_avx512_mask_range_pd_256, // llvm.x86.avx512.mask.range.pd.256
x86_avx512_mask_range_pd_512, // llvm.x86.avx512.mask.range.pd.512
@@ -5997,6 +6090,30 @@
x86_avx512_mask_scalef_ps_512, // llvm.x86.avx512.mask.scalef.ps.512
x86_avx512_mask_scalef_sd, // llvm.x86.avx512.mask.scalef.sd
x86_avx512_mask_scalef_ss, // llvm.x86.avx512.mask.scalef.ss
+ x86_avx512_mask_scatter_dpd_512, // llvm.x86.avx512.mask.scatter.dpd.512
+ x86_avx512_mask_scatter_dpi_512, // llvm.x86.avx512.mask.scatter.dpi.512
+ x86_avx512_mask_scatter_dpq_512, // llvm.x86.avx512.mask.scatter.dpq.512
+ x86_avx512_mask_scatter_dps_512, // llvm.x86.avx512.mask.scatter.dps.512
+ x86_avx512_mask_scatter_qpd_512, // llvm.x86.avx512.mask.scatter.qpd.512
+ x86_avx512_mask_scatter_qpi_512, // llvm.x86.avx512.mask.scatter.qpi.512
+ x86_avx512_mask_scatter_qpq_512, // llvm.x86.avx512.mask.scatter.qpq.512
+ x86_avx512_mask_scatter_qps_512, // llvm.x86.avx512.mask.scatter.qps.512
+ x86_avx512_mask_scatterdiv2_df, // llvm.x86.avx512.mask.scatterdiv2.df
+ x86_avx512_mask_scatterdiv2_di, // llvm.x86.avx512.mask.scatterdiv2.di
+ x86_avx512_mask_scatterdiv4_df, // llvm.x86.avx512.mask.scatterdiv4.df
+ x86_avx512_mask_scatterdiv4_di, // llvm.x86.avx512.mask.scatterdiv4.di
+ x86_avx512_mask_scatterdiv4_sf, // llvm.x86.avx512.mask.scatterdiv4.sf
+ x86_avx512_mask_scatterdiv4_si, // llvm.x86.avx512.mask.scatterdiv4.si
+ x86_avx512_mask_scatterdiv8_sf, // llvm.x86.avx512.mask.scatterdiv8.sf
+ x86_avx512_mask_scatterdiv8_si, // llvm.x86.avx512.mask.scatterdiv8.si
+ x86_avx512_mask_scattersiv2_df, // llvm.x86.avx512.mask.scattersiv2.df
+ x86_avx512_mask_scattersiv2_di, // llvm.x86.avx512.mask.scattersiv2.di
+ x86_avx512_mask_scattersiv4_df, // llvm.x86.avx512.mask.scattersiv4.df
+ x86_avx512_mask_scattersiv4_di, // llvm.x86.avx512.mask.scattersiv4.di
+ x86_avx512_mask_scattersiv4_sf, // llvm.x86.avx512.mask.scattersiv4.sf
+ x86_avx512_mask_scattersiv4_si, // llvm.x86.avx512.mask.scattersiv4.si
+ x86_avx512_mask_scattersiv8_sf, // llvm.x86.avx512.mask.scattersiv8.sf
+ x86_avx512_mask_scattersiv8_si, // llvm.x86.avx512.mask.scattersiv8.si
x86_avx512_mask_sqrt_sd, // llvm.x86.avx512.mask.sqrt.sd
x86_avx512_mask_sqrt_ss, // llvm.x86.avx512.mask.sqrt.ss
x86_avx512_mask_sub_sd_round, // llvm.x86.avx512.mask.sub.sd.round
@@ -6007,27 +6124,6 @@
x86_avx512_mask_vcvtps2ph_128, // llvm.x86.avx512.mask.vcvtps2ph.128
x86_avx512_mask_vcvtps2ph_256, // llvm.x86.avx512.mask.vcvtps2ph.256
x86_avx512_mask_vcvtps2ph_512, // llvm.x86.avx512.mask.vcvtps2ph.512
- x86_avx512_mask_vpshldv_d_128, // llvm.x86.avx512.mask.vpshldv.d.128
- x86_avx512_mask_vpshldv_d_256, // llvm.x86.avx512.mask.vpshldv.d.256
- x86_avx512_mask_vpshldv_d_512, // llvm.x86.avx512.mask.vpshldv.d.512
- x86_avx512_mask_vpshldv_q_128, // llvm.x86.avx512.mask.vpshldv.q.128
- x86_avx512_mask_vpshldv_q_256, // llvm.x86.avx512.mask.vpshldv.q.256
- x86_avx512_mask_vpshldv_q_512, // llvm.x86.avx512.mask.vpshldv.q.512
- x86_avx512_mask_vpshldv_w_128, // llvm.x86.avx512.mask.vpshldv.w.128
- x86_avx512_mask_vpshldv_w_256, // llvm.x86.avx512.mask.vpshldv.w.256
- x86_avx512_mask_vpshldv_w_512, // llvm.x86.avx512.mask.vpshldv.w.512
- x86_avx512_mask_vpshrdv_d_128, // llvm.x86.avx512.mask.vpshrdv.d.128
- x86_avx512_mask_vpshrdv_d_256, // llvm.x86.avx512.mask.vpshrdv.d.256
- x86_avx512_mask_vpshrdv_d_512, // llvm.x86.avx512.mask.vpshrdv.d.512
- x86_avx512_mask_vpshrdv_q_128, // llvm.x86.avx512.mask.vpshrdv.q.128
- x86_avx512_mask_vpshrdv_q_256, // llvm.x86.avx512.mask.vpshrdv.q.256
- x86_avx512_mask_vpshrdv_q_512, // llvm.x86.avx512.mask.vpshrdv.q.512
- x86_avx512_mask_vpshrdv_w_128, // llvm.x86.avx512.mask.vpshrdv.w.128
- x86_avx512_mask_vpshrdv_w_256, // llvm.x86.avx512.mask.vpshrdv.w.256
- x86_avx512_mask_vpshrdv_w_512, // llvm.x86.avx512.mask.vpshrdv.w.512
- x86_avx512_mask_vpshufbitqmb_128, // llvm.x86.avx512.mask.vpshufbitqmb.128
- x86_avx512_mask_vpshufbitqmb_256, // llvm.x86.avx512.mask.vpshufbitqmb.256
- x86_avx512_mask_vpshufbitqmb_512, // llvm.x86.avx512.mask.vpshufbitqmb.512
x86_avx512_maskz_fixupimm_pd_128, // llvm.x86.avx512.maskz.fixupimm.pd.128
x86_avx512_maskz_fixupimm_pd_256, // llvm.x86.avx512.maskz.fixupimm.pd.256
x86_avx512_maskz_fixupimm_pd_512, // llvm.x86.avx512.maskz.fixupimm.pd.512
@@ -6036,24 +6132,6 @@
x86_avx512_maskz_fixupimm_ps_512, // llvm.x86.avx512.maskz.fixupimm.ps.512
x86_avx512_maskz_fixupimm_sd, // llvm.x86.avx512.maskz.fixupimm.sd
x86_avx512_maskz_fixupimm_ss, // llvm.x86.avx512.maskz.fixupimm.ss
- x86_avx512_maskz_vpshldv_d_128, // llvm.x86.avx512.maskz.vpshldv.d.128
- x86_avx512_maskz_vpshldv_d_256, // llvm.x86.avx512.maskz.vpshldv.d.256
- x86_avx512_maskz_vpshldv_d_512, // llvm.x86.avx512.maskz.vpshldv.d.512
- x86_avx512_maskz_vpshldv_q_128, // llvm.x86.avx512.maskz.vpshldv.q.128
- x86_avx512_maskz_vpshldv_q_256, // llvm.x86.avx512.maskz.vpshldv.q.256
- x86_avx512_maskz_vpshldv_q_512, // llvm.x86.avx512.maskz.vpshldv.q.512
- x86_avx512_maskz_vpshldv_w_128, // llvm.x86.avx512.maskz.vpshldv.w.128
- x86_avx512_maskz_vpshldv_w_256, // llvm.x86.avx512.maskz.vpshldv.w.256
- x86_avx512_maskz_vpshldv_w_512, // llvm.x86.avx512.maskz.vpshldv.w.512
- x86_avx512_maskz_vpshrdv_d_128, // llvm.x86.avx512.maskz.vpshrdv.d.128
- x86_avx512_maskz_vpshrdv_d_256, // llvm.x86.avx512.maskz.vpshrdv.d.256
- x86_avx512_maskz_vpshrdv_d_512, // llvm.x86.avx512.maskz.vpshrdv.d.512
- x86_avx512_maskz_vpshrdv_q_128, // llvm.x86.avx512.maskz.vpshrdv.q.128
- x86_avx512_maskz_vpshrdv_q_256, // llvm.x86.avx512.maskz.vpshrdv.q.256
- x86_avx512_maskz_vpshrdv_q_512, // llvm.x86.avx512.maskz.vpshrdv.q.512
- x86_avx512_maskz_vpshrdv_w_128, // llvm.x86.avx512.maskz.vpshrdv.w.128
- x86_avx512_maskz_vpshrdv_w_256, // llvm.x86.avx512.maskz.vpshrdv.w.256
- x86_avx512_maskz_vpshrdv_w_512, // llvm.x86.avx512.maskz.vpshrdv.w.512
x86_avx512_max_pd_512, // llvm.x86.avx512.max.pd.512
x86_avx512_max_ps_512, // llvm.x86.avx512.max.ps.512
x86_avx512_min_pd_512, // llvm.x86.avx512.min.pd.512
@@ -6064,8 +6142,6 @@
x86_avx512_packsswb_512, // llvm.x86.avx512.packsswb.512
x86_avx512_packusdw_512, // llvm.x86.avx512.packusdw.512
x86_avx512_packuswb_512, // llvm.x86.avx512.packuswb.512
- x86_avx512_padds_b_512, // llvm.x86.avx512.padds.b.512
- x86_avx512_padds_w_512, // llvm.x86.avx512.padds.w.512
x86_avx512_permvar_df_256, // llvm.x86.avx512.permvar.df.256
x86_avx512_permvar_df_512, // llvm.x86.avx512.permvar.df.512
x86_avx512_permvar_di_256, // llvm.x86.avx512.permvar.di.256
@@ -6083,30 +6159,9 @@
x86_avx512_pmul_hr_sw_512, // llvm.x86.avx512.pmul.hr.sw.512
x86_avx512_pmulh_w_512, // llvm.x86.avx512.pmulh.w.512
x86_avx512_pmulhu_w_512, // llvm.x86.avx512.pmulhu.w.512
- x86_avx512_prol_d_128, // llvm.x86.avx512.prol.d.128
- x86_avx512_prol_d_256, // llvm.x86.avx512.prol.d.256
- x86_avx512_prol_d_512, // llvm.x86.avx512.prol.d.512
- x86_avx512_prol_q_128, // llvm.x86.avx512.prol.q.128
- x86_avx512_prol_q_256, // llvm.x86.avx512.prol.q.256
- x86_avx512_prol_q_512, // llvm.x86.avx512.prol.q.512
- x86_avx512_prolv_d_128, // llvm.x86.avx512.prolv.d.128
- x86_avx512_prolv_d_256, // llvm.x86.avx512.prolv.d.256
- x86_avx512_prolv_d_512, // llvm.x86.avx512.prolv.d.512
- x86_avx512_prolv_q_128, // llvm.x86.avx512.prolv.q.128
- x86_avx512_prolv_q_256, // llvm.x86.avx512.prolv.q.256
- x86_avx512_prolv_q_512, // llvm.x86.avx512.prolv.q.512
- x86_avx512_pror_d_128, // llvm.x86.avx512.pror.d.128
- x86_avx512_pror_d_256, // llvm.x86.avx512.pror.d.256
- x86_avx512_pror_d_512, // llvm.x86.avx512.pror.d.512
- x86_avx512_pror_q_128, // llvm.x86.avx512.pror.q.128
- x86_avx512_pror_q_256, // llvm.x86.avx512.pror.q.256
- x86_avx512_pror_q_512, // llvm.x86.avx512.pror.q.512
- x86_avx512_prorv_d_128, // llvm.x86.avx512.prorv.d.128
- x86_avx512_prorv_d_256, // llvm.x86.avx512.prorv.d.256
- x86_avx512_prorv_d_512, // llvm.x86.avx512.prorv.d.512
- x86_avx512_prorv_q_128, // llvm.x86.avx512.prorv.q.128
- x86_avx512_prorv_q_256, // llvm.x86.avx512.prorv.q.256
- x86_avx512_prorv_q_512, // llvm.x86.avx512.prorv.q.512
+ x86_avx512_pmultishift_qb_128, // llvm.x86.avx512.pmultishift.qb.128
+ x86_avx512_pmultishift_qb_256, // llvm.x86.avx512.pmultishift.qb.256
+ x86_avx512_pmultishift_qb_512, // llvm.x86.avx512.pmultishift.qb.512
x86_avx512_psad_bw_512, // llvm.x86.avx512.psad.bw.512
x86_avx512_pshuf_b_512, // llvm.x86.avx512.pshuf.b.512
x86_avx512_psll_d_512, // llvm.x86.avx512.psll.d.512
@@ -6148,8 +6203,6 @@
x86_avx512_psrlv_w_128, // llvm.x86.avx512.psrlv.w.128
x86_avx512_psrlv_w_256, // llvm.x86.avx512.psrlv.w.256
x86_avx512_psrlv_w_512, // llvm.x86.avx512.psrlv.w.512
- x86_avx512_psubs_b_512, // llvm.x86.avx512.psubs.b.512
- x86_avx512_psubs_w_512, // llvm.x86.avx512.psubs.w.512
x86_avx512_pternlog_d_128, // llvm.x86.avx512.pternlog.d.128
x86_avx512_pternlog_d_256, // llvm.x86.avx512.pternlog.d.256
x86_avx512_pternlog_d_512, // llvm.x86.avx512.pternlog.d.512
@@ -6208,10 +6261,12 @@
x86_avx512_scattersiv4_si, // llvm.x86.avx512.scattersiv4.si
x86_avx512_scattersiv8_sf, // llvm.x86.avx512.scattersiv8.sf
x86_avx512_scattersiv8_si, // llvm.x86.avx512.scattersiv8.si
+ x86_avx512_sitofp_round, // llvm.x86.avx512.sitofp.round
x86_avx512_sqrt_pd_512, // llvm.x86.avx512.sqrt.pd.512
x86_avx512_sqrt_ps_512, // llvm.x86.avx512.sqrt.ps.512
x86_avx512_sub_pd_512, // llvm.x86.avx512.sub.pd.512
x86_avx512_sub_ps_512, // llvm.x86.avx512.sub.ps.512
+ x86_avx512_uitofp_round, // llvm.x86.avx512.uitofp.round
x86_avx512_vcomi_sd, // llvm.x86.avx512.vcomi.sd
x86_avx512_vcomi_ss, // llvm.x86.avx512.vcomi.ss
x86_avx512_vcvtsd2si32, // llvm.x86.avx512.vcvtsd2si32
@@ -6266,24 +6321,9 @@
x86_avx512_vpmadd52l_uq_128, // llvm.x86.avx512.vpmadd52l.uq.128
x86_avx512_vpmadd52l_uq_256, // llvm.x86.avx512.vpmadd52l.uq.256
x86_avx512_vpmadd52l_uq_512, // llvm.x86.avx512.vpmadd52l.uq.512
- x86_avx512_vpshld_d_128, // llvm.x86.avx512.vpshld.d.128
- x86_avx512_vpshld_d_256, // llvm.x86.avx512.vpshld.d.256
- x86_avx512_vpshld_d_512, // llvm.x86.avx512.vpshld.d.512
- x86_avx512_vpshld_q_128, // llvm.x86.avx512.vpshld.q.128
- x86_avx512_vpshld_q_256, // llvm.x86.avx512.vpshld.q.256
- x86_avx512_vpshld_q_512, // llvm.x86.avx512.vpshld.q.512
- x86_avx512_vpshld_w_128, // llvm.x86.avx512.vpshld.w.128
- x86_avx512_vpshld_w_256, // llvm.x86.avx512.vpshld.w.256
- x86_avx512_vpshld_w_512, // llvm.x86.avx512.vpshld.w.512
- x86_avx512_vpshrd_d_128, // llvm.x86.avx512.vpshrd.d.128
- x86_avx512_vpshrd_d_256, // llvm.x86.avx512.vpshrd.d.256
- x86_avx512_vpshrd_d_512, // llvm.x86.avx512.vpshrd.d.512
- x86_avx512_vpshrd_q_128, // llvm.x86.avx512.vpshrd.q.128
- x86_avx512_vpshrd_q_256, // llvm.x86.avx512.vpshrd.q.256
- x86_avx512_vpshrd_q_512, // llvm.x86.avx512.vpshrd.q.512
- x86_avx512_vpshrd_w_128, // llvm.x86.avx512.vpshrd.w.128
- x86_avx512_vpshrd_w_256, // llvm.x86.avx512.vpshrd.w.256
- x86_avx512_vpshrd_w_512, // llvm.x86.avx512.vpshrd.w.512
+ x86_avx512_vpshufbitqmb_128, // llvm.x86.avx512.vpshufbitqmb.128
+ x86_avx512_vpshufbitqmb_256, // llvm.x86.avx512.vpshufbitqmb.256
+ x86_avx512_vpshufbitqmb_512, // llvm.x86.avx512.vpshufbitqmb.512
x86_bmi_bextr_32, // llvm.x86.bmi.bextr.32
x86_bmi_bextr_64, // llvm.x86.bmi.bextr.64
x86_bmi_bzhi_32, // llvm.x86.bmi.bzhi.32
@@ -6417,7 +6457,6 @@
x86_seh_ehguard, // llvm.x86.seh.ehguard
x86_seh_ehregnode, // llvm.x86.seh.ehregnode
x86_seh_lsda, // llvm.x86.seh.lsda
- x86_seh_recoverfp, // llvm.x86.seh.recoverfp
x86_setssbsy, // llvm.x86.setssbsy
x86_sha1msg1, // llvm.x86.sha1msg1
x86_sha1msg2, // llvm.x86.sha1msg2
@@ -6494,8 +6533,6 @@
x86_sse2_packssdw_128, // llvm.x86.sse2.packssdw.128
x86_sse2_packsswb_128, // llvm.x86.sse2.packsswb.128
x86_sse2_packuswb_128, // llvm.x86.sse2.packuswb.128
- x86_sse2_padds_b, // llvm.x86.sse2.padds.b
- x86_sse2_padds_w, // llvm.x86.sse2.padds.w
x86_sse2_pause, // llvm.x86.sse2.pause
x86_sse2_pmadd_wd, // llvm.x86.sse2.pmadd.wd
x86_sse2_pmovmskb_128, // llvm.x86.sse2.pmovmskb.128
@@ -6518,8 +6555,6 @@
x86_sse2_psrli_d, // llvm.x86.sse2.psrli.d
x86_sse2_psrli_q, // llvm.x86.sse2.psrli.q
x86_sse2_psrli_w, // llvm.x86.sse2.psrli.w
- x86_sse2_psubs_b, // llvm.x86.sse2.psubs.b
- x86_sse2_psubs_w, // llvm.x86.sse2.psubs.w
x86_sse2_ucomieq_sd, // llvm.x86.sse2.ucomieq.sd
x86_sse2_ucomige_sd, // llvm.x86.sse2.ucomige.sd
x86_sse2_ucomigt_sd, // llvm.x86.sse2.ucomigt.sd
@@ -6600,8 +6635,8 @@
x86_ssse3_psign_d_128, // llvm.x86.ssse3.psign.d.128
x86_ssse3_psign_w, // llvm.x86.ssse3.psign.w
x86_ssse3_psign_w_128, // llvm.x86.ssse3.psign.w.128
- x86_subborrow_u32, // llvm.x86.subborrow.u32
- x86_subborrow_u64, // llvm.x86.subborrow.u64
+ x86_subborrow_32, // llvm.x86.subborrow.32
+ x86_subborrow_64, // llvm.x86.subborrow.64
x86_tbm_bextri_u32, // llvm.x86.tbm.bextri.u32
x86_tbm_bextri_u64, // llvm.x86.tbm.bextri.u64
x86_tpause, // llvm.x86.tpause
@@ -6641,14 +6676,6 @@
x86_xop_vfrcz_ps_256, // llvm.x86.xop.vfrcz.ps.256
x86_xop_vfrcz_sd, // llvm.x86.xop.vfrcz.sd
x86_xop_vfrcz_ss, // llvm.x86.xop.vfrcz.ss
- x86_xop_vpcomb, // llvm.x86.xop.vpcomb
- x86_xop_vpcomd, // llvm.x86.xop.vpcomd
- x86_xop_vpcomq, // llvm.x86.xop.vpcomq
- x86_xop_vpcomub, // llvm.x86.xop.vpcomub
- x86_xop_vpcomud, // llvm.x86.xop.vpcomud
- x86_xop_vpcomuq, // llvm.x86.xop.vpcomuq
- x86_xop_vpcomuw, // llvm.x86.xop.vpcomuw
- x86_xop_vpcomw, // llvm.x86.xop.vpcomw
x86_xop_vpermil2pd, // llvm.x86.xop.vpermil2pd
x86_xop_vpermil2pd_256, // llvm.x86.xop.vpermil2pd.256
x86_xop_vpermil2ps, // llvm.x86.xop.vpermil2ps
@@ -6681,14 +6708,6 @@
x86_xop_vpmadcsswd, // llvm.x86.xop.vpmadcsswd
x86_xop_vpmadcswd, // llvm.x86.xop.vpmadcswd
x86_xop_vpperm, // llvm.x86.xop.vpperm
- x86_xop_vprotb, // llvm.x86.xop.vprotb
- x86_xop_vprotbi, // llvm.x86.xop.vprotbi
- x86_xop_vprotd, // llvm.x86.xop.vprotd
- x86_xop_vprotdi, // llvm.x86.xop.vprotdi
- x86_xop_vprotq, // llvm.x86.xop.vprotq
- x86_xop_vprotqi, // llvm.x86.xop.vprotqi
- x86_xop_vprotw, // llvm.x86.xop.vprotw
- x86_xop_vprotwi, // llvm.x86.xop.vprotwi
x86_xop_vpshab, // llvm.x86.xop.vpshab
x86_xop_vpshad, // llvm.x86.xop.vpshad
x86_xop_vpshaq, // llvm.x86.xop.vpshaq
diff --git a/linux-x64/clang/include/llvm/IR/IntrinsicImpl.inc b/linux-x64/clang/include/llvm/IR/IntrinsicImpl.inc
index f9653dd..4ce577a 100644
--- a/linux-x64/clang/include/llvm/IR/IntrinsicImpl.inc
+++ b/linux-x64/clang/include/llvm/IR/IntrinsicImpl.inc
@@ -22,21 +22,21 @@
size_t Count;
};
static constexpr IntrinsicTargetInfo TargetInfos[] = {
- {llvm::StringLiteral(""), 0, 180},
- {llvm::StringLiteral("aarch64"), 180, 192},
- {llvm::StringLiteral("amdgcn"), 372, 631},
- {llvm::StringLiteral("arm"), 1003, 251},
- {llvm::StringLiteral("bpf"), 1254, 4},
- {llvm::StringLiteral("hexagon"), 1258, 1708},
- {llvm::StringLiteral("mips"), 2966, 667},
- {llvm::StringLiteral("nvvm"), 3633, 1117},
- {llvm::StringLiteral("ppc"), 4750, 405},
- {llvm::StringLiteral("r600"), 5155, 35},
- {llvm::StringLiteral("riscv"), 5190, 8},
- {llvm::StringLiteral("s390"), 5198, 220},
- {llvm::StringLiteral("wasm"), 5418, 23},
- {llvm::StringLiteral("x86"), 5441, 1254},
- {llvm::StringLiteral("xcore"), 6695, 53},
+ {llvm::StringLiteral(""), 0, 229},
+ {llvm::StringLiteral("aarch64"), 229, 197},
+ {llvm::StringLiteral("amdgcn"), 426, 635},
+ {llvm::StringLiteral("arm"), 1061, 251},
+ {llvm::StringLiteral("bpf"), 1312, 4},
+ {llvm::StringLiteral("hexagon"), 1316, 1766},
+ {llvm::StringLiteral("mips"), 3082, 667},
+ {llvm::StringLiteral("nvvm"), 3749, 1117},
+ {llvm::StringLiteral("ppc"), 4866, 405},
+ {llvm::StringLiteral("r600"), 5271, 35},
+ {llvm::StringLiteral("riscv"), 5306, 18},
+ {llvm::StringLiteral("s390"), 5324, 220},
+ {llvm::StringLiteral("wasm"), 5544, 21},
+ {llvm::StringLiteral("x86"), 5565, 1149},
+ {llvm::StringLiteral("xcore"), 6714, 53},
};
#endif
@@ -85,6 +85,7 @@
"llvm.eh.dwarf.cfa",
"llvm.eh.exceptioncode",
"llvm.eh.exceptionpointer",
+ "llvm.eh.recoverfp",
"llvm.eh.return.i32",
"llvm.eh.return.i64",
"llvm.eh.sjlj.callsite",
@@ -98,11 +99,13 @@
"llvm.exp",
"llvm.exp2",
"llvm.expect",
+ "llvm.experimental.constrained.ceil",
"llvm.experimental.constrained.cos",
"llvm.experimental.constrained.exp",
"llvm.experimental.constrained.exp2",
"llvm.experimental.constrained.fadd",
"llvm.experimental.constrained.fdiv",
+ "llvm.experimental.constrained.floor",
"llvm.experimental.constrained.fma",
"llvm.experimental.constrained.fmul",
"llvm.experimental.constrained.frem",
@@ -110,12 +113,16 @@
"llvm.experimental.constrained.log",
"llvm.experimental.constrained.log10",
"llvm.experimental.constrained.log2",
+ "llvm.experimental.constrained.maxnum",
+ "llvm.experimental.constrained.minnum",
"llvm.experimental.constrained.nearbyint",
"llvm.experimental.constrained.pow",
"llvm.experimental.constrained.powi",
"llvm.experimental.constrained.rint",
+ "llvm.experimental.constrained.round",
"llvm.experimental.constrained.sin",
"llvm.experimental.constrained.sqrt",
+ "llvm.experimental.constrained.trunc",
"llvm.experimental.deoptimize",
"llvm.experimental.gc.relocate",
"llvm.experimental.gc.result",
@@ -137,6 +144,7 @@
"llvm.experimental.vector.reduce.umax",
"llvm.experimental.vector.reduce.umin",
"llvm.experimental.vector.reduce.xor",
+ "llvm.experimental.widenable.condition",
"llvm.fabs",
"llvm.floor",
"llvm.flt.rounds",
@@ -149,6 +157,7 @@
"llvm.gcroot",
"llvm.gcwrite",
"llvm.get.dynamic.area.offset",
+ "llvm.hwasan.check.memaccess",
"llvm.icall.branch.funnel",
"llvm.init.trampoline",
"llvm.instrprof.increment",
@@ -156,6 +165,7 @@
"llvm.instrprof.value.profile",
"llvm.invariant.end",
"llvm.invariant.start",
+ "llvm.is.constant",
"llvm.launder.invariant.group",
"llvm.lifetime.end",
"llvm.lifetime.start",
@@ -173,6 +183,7 @@
"llvm.masked.load",
"llvm.masked.scatter",
"llvm.masked.store",
+ "llvm.maximum",
"llvm.maxnum",
"llvm.memcpy",
"llvm.memcpy.element.unordered.atomic",
@@ -180,8 +191,39 @@
"llvm.memmove.element.unordered.atomic",
"llvm.memset",
"llvm.memset.element.unordered.atomic",
+ "llvm.minimum",
"llvm.minnum",
"llvm.nearbyint",
+ "llvm.objc.arc.annotation.bottomup.bbend",
+ "llvm.objc.arc.annotation.bottomup.bbstart",
+ "llvm.objc.arc.annotation.topdown.bbend",
+ "llvm.objc.arc.annotation.topdown.bbstart",
+ "llvm.objc.autorelease",
+ "llvm.objc.autoreleasePoolPop",
+ "llvm.objc.autoreleasePoolPush",
+ "llvm.objc.autoreleaseReturnValue",
+ "llvm.objc.clang.arc.use",
+ "llvm.objc.copyWeak",
+ "llvm.objc.destroyWeak",
+ "llvm.objc.initWeak",
+ "llvm.objc.loadWeak",
+ "llvm.objc.loadWeakRetained",
+ "llvm.objc.moveWeak",
+ "llvm.objc.release",
+ "llvm.objc.retain",
+ "llvm.objc.retain.autorelease",
+ "llvm.objc.retainAutorelease",
+ "llvm.objc.retainAutoreleaseReturnValue",
+ "llvm.objc.retainAutoreleasedReturnValue",
+ "llvm.objc.retainBlock",
+ "llvm.objc.retainedObject",
+ "llvm.objc.storeStrong",
+ "llvm.objc.storeWeak",
+ "llvm.objc.sync.enter",
+ "llvm.objc.sync.exit",
+ "llvm.objc.unretainedObject",
+ "llvm.objc.unretainedPointer",
+ "llvm.objc.unsafeClaimAutoreleasedReturnValue",
"llvm.objectsize",
"llvm.pcmarker",
"llvm.pow",
@@ -193,15 +235,19 @@
"llvm.returnaddress",
"llvm.rint",
"llvm.round",
+ "llvm.sadd.sat",
"llvm.sadd.with.overflow",
"llvm.setjmp",
"llvm.sideeffect",
"llvm.siglongjmp",
"llvm.sigsetjmp",
"llvm.sin",
+ "llvm.smul.fix",
"llvm.smul.with.overflow",
+ "llvm.sponentry",
"llvm.sqrt",
"llvm.ssa.copy",
+ "llvm.ssub.sat",
"llvm.ssub.with.overflow",
"llvm.stackguard",
"llvm.stackprotector",
@@ -213,8 +259,11 @@
"llvm.trunc",
"llvm.type.checked.load",
"llvm.type.test",
+ "llvm.uadd.sat",
"llvm.uadd.with.overflow",
+ "llvm.umul.fix",
"llvm.umul.with.overflow",
+ "llvm.usub.sat",
"llvm.usub.with.overflow",
"llvm.va_copy",
"llvm.va_end",
@@ -286,6 +335,10 @@
"llvm.aarch64.neon.fminnmv",
"llvm.aarch64.neon.fminp",
"llvm.aarch64.neon.fminv",
+ "llvm.aarch64.neon.fmlal",
+ "llvm.aarch64.neon.fmlal2",
+ "llvm.aarch64.neon.fmlsl",
+ "llvm.aarch64.neon.fmlsl2",
"llvm.aarch64.neon.fmulx",
"llvm.aarch64.neon.frecpe",
"llvm.aarch64.neon.frecps",
@@ -410,6 +463,7 @@
"llvm.aarch64.sdiv",
"llvm.aarch64.sisd.fabd",
"llvm.aarch64.sisd.fcvtxn",
+ "llvm.aarch64.space",
"llvm.aarch64.stlxp",
"llvm.aarch64.stlxr",
"llvm.aarch64.stxp",
@@ -419,7 +473,6 @@
"llvm.amdgcn.alignbyte",
"llvm.amdgcn.atomic.dec",
"llvm.amdgcn.atomic.inc",
- "llvm.amdgcn.break",
"llvm.amdgcn.buffer.atomic.add",
"llvm.amdgcn.buffer.atomic.and",
"llvm.amdgcn.buffer.atomic.cmpswap",
@@ -455,14 +508,17 @@
"llvm.amdgcn.div.fixup",
"llvm.amdgcn.div.fmas",
"llvm.amdgcn.div.scale",
+ "llvm.amdgcn.ds.append",
"llvm.amdgcn.ds.bpermute",
+ "llvm.amdgcn.ds.consume",
"llvm.amdgcn.ds.fadd",
"llvm.amdgcn.ds.fmax",
"llvm.amdgcn.ds.fmin",
+ "llvm.amdgcn.ds.ordered.add",
+ "llvm.amdgcn.ds.ordered.swap",
"llvm.amdgcn.ds.permute",
"llvm.amdgcn.ds.swizzle",
"llvm.amdgcn.else",
- "llvm.amdgcn.else.break",
"llvm.amdgcn.end.cf",
"llvm.amdgcn.exp",
"llvm.amdgcn.exp.compr",
@@ -943,7 +999,9 @@
"llvm.amdgcn.init.exec.from.input",
"llvm.amdgcn.interp.mov",
"llvm.amdgcn.interp.p1",
+ "llvm.amdgcn.interp.p1.f16",
"llvm.amdgcn.interp.p2",
+ "llvm.amdgcn.interp.p2.f16",
"llvm.amdgcn.kernarg.segment.ptr",
"llvm.amdgcn.kill",
"llvm.amdgcn.ldexp",
@@ -1349,6 +1407,7 @@
"llvm.hexagon.A2.or",
"llvm.hexagon.A2.orir",
"llvm.hexagon.A2.orp",
+ "llvm.hexagon.A2.pxorf",
"llvm.hexagon.A2.roundsat",
"llvm.hexagon.A2.sat",
"llvm.hexagon.A2.satb",
@@ -1385,10 +1444,12 @@
"llvm.hexagon.A2.sxth",
"llvm.hexagon.A2.sxtw",
"llvm.hexagon.A2.tfr",
+ "llvm.hexagon.A2.tfrcrr",
"llvm.hexagon.A2.tfrih",
"llvm.hexagon.A2.tfril",
"llvm.hexagon.A2.tfrp",
"llvm.hexagon.A2.tfrpi",
+ "llvm.hexagon.A2.tfrrcr",
"llvm.hexagon.A2.tfrsi",
"llvm.hexagon.A2.vabsh",
"llvm.hexagon.A2.vabshsat",
@@ -1457,6 +1518,7 @@
"llvm.hexagon.A2.xorp",
"llvm.hexagon.A2.zxtb",
"llvm.hexagon.A2.zxth",
+ "llvm.hexagon.A4.addp.c",
"llvm.hexagon.A4.andn",
"llvm.hexagon.A4.andnp",
"llvm.hexagon.A4.bitsplit",
@@ -1474,6 +1536,7 @@
"llvm.hexagon.A4.cmphgti",
"llvm.hexagon.A4.cmphgtu",
"llvm.hexagon.A4.cmphgtui",
+ "llvm.hexagon.A4.combineii",
"llvm.hexagon.A4.combineir",
"llvm.hexagon.A4.combineri",
"llvm.hexagon.A4.cround.ri",
@@ -1489,6 +1552,9 @@
"llvm.hexagon.A4.round.ri.sat",
"llvm.hexagon.A4.round.rr",
"llvm.hexagon.A4.round.rr.sat",
+ "llvm.hexagon.A4.subp.c",
+ "llvm.hexagon.A4.tfrcpp",
+ "llvm.hexagon.A4.tfrpcp",
"llvm.hexagon.A4.tlbmatch",
"llvm.hexagon.A4.vcmpbeq.any",
"llvm.hexagon.A4.vcmpbeqi",
@@ -1509,9 +1575,10 @@
"llvm.hexagon.A4.vrminuh",
"llvm.hexagon.A4.vrminuw",
"llvm.hexagon.A4.vrminw",
+ "llvm.hexagon.A5.ACS",
"llvm.hexagon.A5.vaddhubs",
"llvm.hexagon.A6.vcmpbeq.notany",
- "llvm.hexagon.A6.vcmpbeq.notany.128B",
+ "llvm.hexagon.A6.vminub.RdP",
"llvm.hexagon.C2.all8",
"llvm.hexagon.C2.and",
"llvm.hexagon.C2.andn",
@@ -1591,6 +1658,7 @@
"llvm.hexagon.F2.conv.uw2sf",
"llvm.hexagon.F2.conv.w2df",
"llvm.hexagon.F2.conv.w2sf",
+ "llvm.hexagon.F2.dfadd",
"llvm.hexagon.F2.dfclass",
"llvm.hexagon.F2.dfcmpeq",
"llvm.hexagon.F2.dfcmpge",
@@ -1598,6 +1666,7 @@
"llvm.hexagon.F2.dfcmpuo",
"llvm.hexagon.F2.dfimm.n",
"llvm.hexagon.F2.dfimm.p",
+ "llvm.hexagon.F2.dfsub",
"llvm.hexagon.F2.sfadd",
"llvm.hexagon.F2.sfclass",
"llvm.hexagon.F2.sfcmpeq",
@@ -1614,9 +1683,11 @@
"llvm.hexagon.F2.sffms.lib",
"llvm.hexagon.F2.sfimm.n",
"llvm.hexagon.F2.sfimm.p",
+ "llvm.hexagon.F2.sfinvsqrta",
"llvm.hexagon.F2.sfmax",
"llvm.hexagon.F2.sfmin",
"llvm.hexagon.F2.sfmpy",
+ "llvm.hexagon.F2.sfrecipa",
"llvm.hexagon.F2.sfsub",
"llvm.hexagon.L2.loadrb.pbr",
"llvm.hexagon.L2.loadrb.pci",
@@ -1706,6 +1777,7 @@
"llvm.hexagon.M2.mmpyul.rs1",
"llvm.hexagon.M2.mmpyul.s0",
"llvm.hexagon.M2.mmpyul.s1",
+ "llvm.hexagon.M2.mnaci",
"llvm.hexagon.M2.mpy.acc.hh.s0",
"llvm.hexagon.M2.mpy.acc.hh.s1",
"llvm.hexagon.M2.mpy.acc.hl.s0",
@@ -1806,6 +1878,8 @@
"llvm.hexagon.M2.mpyd.rnd.ll.s0",
"llvm.hexagon.M2.mpyd.rnd.ll.s1",
"llvm.hexagon.M2.mpyi",
+ "llvm.hexagon.M2.mpysin",
+ "llvm.hexagon.M2.mpysip",
"llvm.hexagon.M2.mpysmi",
"llvm.hexagon.M2.mpysu.up",
"llvm.hexagon.M2.mpyu.acc.hh.s0",
@@ -2018,7 +2092,6 @@
"llvm.hexagon.S2.asr.r.vw",
"llvm.hexagon.S2.brev",
"llvm.hexagon.S2.brevp",
- "llvm.hexagon.S2.cabacencbin",
"llvm.hexagon.S2.cl0",
"llvm.hexagon.S2.cl0p",
"llvm.hexagon.S2.cl1",
@@ -2083,6 +2156,7 @@
"llvm.hexagon.S2.lsr.r.r.or",
"llvm.hexagon.S2.lsr.r.vh",
"llvm.hexagon.S2.lsr.r.vw",
+ "llvm.hexagon.S2.mask",
"llvm.hexagon.S2.packhl",
"llvm.hexagon.S2.parityp",
"llvm.hexagon.S2.setbit.i",
@@ -2200,6 +2274,37 @@
"llvm.hexagon.V6.extractw.128B",
"llvm.hexagon.V6.hi",
"llvm.hexagon.V6.hi.128B",
+ "llvm.hexagon.V6.ld0",
+ "llvm.hexagon.V6.ld0.128B",
+ "llvm.hexagon.V6.ldcnp0",
+ "llvm.hexagon.V6.ldcnp0.128B",
+ "llvm.hexagon.V6.ldcnpnt0",
+ "llvm.hexagon.V6.ldcnpnt0.128B",
+ "llvm.hexagon.V6.ldcp0",
+ "llvm.hexagon.V6.ldcp0.128B",
+ "llvm.hexagon.V6.ldcpnt0",
+ "llvm.hexagon.V6.ldcpnt0.128B",
+ "llvm.hexagon.V6.ldnp0",
+ "llvm.hexagon.V6.ldnp0.128B",
+ "llvm.hexagon.V6.ldnpnt0",
+ "llvm.hexagon.V6.ldnpnt0.128B",
+ "llvm.hexagon.V6.ldnt0",
+ "llvm.hexagon.V6.ldnt0.128B",
+ "llvm.hexagon.V6.ldntnt0",
+ "llvm.hexagon.V6.ldp0",
+ "llvm.hexagon.V6.ldp0.128B",
+ "llvm.hexagon.V6.ldpnt0",
+ "llvm.hexagon.V6.ldpnt0.128B",
+ "llvm.hexagon.V6.ldtnp0",
+ "llvm.hexagon.V6.ldtnp0.128B",
+ "llvm.hexagon.V6.ldtnpnt0",
+ "llvm.hexagon.V6.ldtnpnt0.128B",
+ "llvm.hexagon.V6.ldtp0",
+ "llvm.hexagon.V6.ldtp0.128B",
+ "llvm.hexagon.V6.ldtpnt0",
+ "llvm.hexagon.V6.ldtpnt0.128B",
+ "llvm.hexagon.V6.ldu0",
+ "llvm.hexagon.V6.ldu0.128B",
"llvm.hexagon.V6.lo",
"llvm.hexagon.V6.lo.128B",
"llvm.hexagon.V6.lvsplatb",
@@ -2270,6 +2375,8 @@
"llvm.hexagon.V6.vaddbsat.dv.128B",
"llvm.hexagon.V6.vaddcarry",
"llvm.hexagon.V6.vaddcarry.128B",
+ "llvm.hexagon.V6.vaddcarrysat",
+ "llvm.hexagon.V6.vaddcarrysat.128B",
"llvm.hexagon.V6.vaddclbh",
"llvm.hexagon.V6.vaddclbh.128B",
"llvm.hexagon.V6.vaddclbw",
@@ -2358,6 +2465,8 @@
"llvm.hexagon.V6.vaslw.acc.128B",
"llvm.hexagon.V6.vaslwv",
"llvm.hexagon.V6.vaslwv.128B",
+ "llvm.hexagon.V6.vasr.into",
+ "llvm.hexagon.V6.vasr.into.128B",
"llvm.hexagon.V6.vasrh",
"llvm.hexagon.V6.vasrh.128B",
"llvm.hexagon.V6.vasrh.acc",
@@ -2838,6 +2947,8 @@
"llvm.hexagon.V6.vrmpyubv.acc.128B",
"llvm.hexagon.V6.vror",
"llvm.hexagon.V6.vror.128B",
+ "llvm.hexagon.V6.vrotr",
+ "llvm.hexagon.V6.vrotr.128B",
"llvm.hexagon.V6.vroundhb",
"llvm.hexagon.V6.vroundhb.128B",
"llvm.hexagon.V6.vroundhub",
@@ -2854,6 +2965,8 @@
"llvm.hexagon.V6.vrsadubi.128B",
"llvm.hexagon.V6.vrsadubi.acc",
"llvm.hexagon.V6.vrsadubi.acc.128B",
+ "llvm.hexagon.V6.vsatdw",
+ "llvm.hexagon.V6.vsatdw.128B",
"llvm.hexagon.V6.vsathub",
"llvm.hexagon.V6.vsathub.128B",
"llvm.hexagon.V6.vsatuwuh",
@@ -2972,6 +3085,8 @@
"llvm.hexagon.V6.vtmpyhb.128B",
"llvm.hexagon.V6.vtmpyhb.acc",
"llvm.hexagon.V6.vtmpyhb.acc.128B",
+ "llvm.hexagon.V6.vtran2x2.map",
+ "llvm.hexagon.V6.vtran2x2.map.128B",
"llvm.hexagon.V6.vunpackb",
"llvm.hexagon.V6.vunpackb.128B",
"llvm.hexagon.V6.vunpackh",
@@ -3007,8 +3122,9 @@
"llvm.hexagon.circ.sth",
"llvm.hexagon.circ.sthhi",
"llvm.hexagon.circ.stw",
- "llvm.hexagon.mm256i.vaddw",
"llvm.hexagon.prefetch",
+ "llvm.hexagon.vmemcpy",
+ "llvm.hexagon.vmemset",
"llvm.mips.absq.s.ph",
"llvm.mips.absq.s.qb",
"llvm.mips.absq.s.w",
@@ -5234,13 +5350,23 @@
"llvm.r600.txlc",
"llvm.r600.txq",
"llvm.riscv.masked.atomicrmw.add.i32",
+ "llvm.riscv.masked.atomicrmw.add.i64",
"llvm.riscv.masked.atomicrmw.max.i32",
+ "llvm.riscv.masked.atomicrmw.max.i64",
"llvm.riscv.masked.atomicrmw.min.i32",
+ "llvm.riscv.masked.atomicrmw.min.i64",
"llvm.riscv.masked.atomicrmw.nand.i32",
+ "llvm.riscv.masked.atomicrmw.nand.i64",
"llvm.riscv.masked.atomicrmw.sub.i32",
+ "llvm.riscv.masked.atomicrmw.sub.i64",
"llvm.riscv.masked.atomicrmw.umax.i32",
+ "llvm.riscv.masked.atomicrmw.umax.i64",
"llvm.riscv.masked.atomicrmw.umin.i32",
+ "llvm.riscv.masked.atomicrmw.umin.i64",
"llvm.riscv.masked.atomicrmw.xchg.i32",
+ "llvm.riscv.masked.atomicrmw.xchg.i64",
+ "llvm.riscv.masked.cmpxchg.i32",
+ "llvm.riscv.masked.cmpxchg.i64",
"llvm.s390.efpc",
"llvm.s390.etnd",
"llvm.s390.lcbb",
@@ -5461,29 +5587,27 @@
"llvm.s390.vupllb",
"llvm.s390.vupllf",
"llvm.s390.vupllh",
- "llvm.wasm.add.saturate.signed",
- "llvm.wasm.add.saturate.unsigned",
"llvm.wasm.alltrue",
"llvm.wasm.anytrue",
"llvm.wasm.atomic.notify",
"llvm.wasm.atomic.wait.i32",
"llvm.wasm.atomic.wait.i64",
"llvm.wasm.bitselect",
- "llvm.wasm.catch",
- "llvm.wasm.current.memory",
+ "llvm.wasm.data.drop",
+ "llvm.wasm.extract.exception",
"llvm.wasm.get.ehselector",
"llvm.wasm.get.exception",
- "llvm.wasm.grow.memory",
"llvm.wasm.landingpad.index",
"llvm.wasm.lsda",
- "llvm.wasm.mem.grow",
- "llvm.wasm.mem.size",
"llvm.wasm.memory.grow",
+ "llvm.wasm.memory.init",
"llvm.wasm.memory.size",
"llvm.wasm.rethrow",
"llvm.wasm.sub.saturate.signed",
"llvm.wasm.sub.saturate.unsigned",
"llvm.wasm.throw",
+ "llvm.wasm.trunc.saturate.signed",
+ "llvm.wasm.trunc.saturate.unsigned",
"llvm.x86.3dnow.pavgusb",
"llvm.x86.3dnow.pf2id",
"llvm.x86.3dnow.pfacc",
@@ -5508,10 +5632,8 @@
"llvm.x86.3dnowa.pfpnacc",
"llvm.x86.3dnowa.pi2fw",
"llvm.x86.3dnowa.pswapd",
- "llvm.x86.addcarry.u32",
- "llvm.x86.addcarry.u64",
- "llvm.x86.addcarryx.u32",
- "llvm.x86.addcarryx.u64",
+ "llvm.x86.addcarry.32",
+ "llvm.x86.addcarry.64",
"llvm.x86.aesni.aesdec",
"llvm.x86.aesni.aesdec.256",
"llvm.x86.aesni.aesdec.512",
@@ -5611,8 +5733,6 @@
"llvm.x86.avx2.packsswb",
"llvm.x86.avx2.packusdw",
"llvm.x86.avx2.packuswb",
- "llvm.x86.avx2.padds.b",
- "llvm.x86.avx2.padds.w",
"llvm.x86.avx2.pblendvb",
"llvm.x86.avx2.permd",
"llvm.x86.avx2.permps",
@@ -5659,8 +5779,6 @@
"llvm.x86.avx2.psrlv.d.256",
"llvm.x86.avx2.psrlv.q",
"llvm.x86.avx2.psrlv.q.256",
- "llvm.x86.avx2.psubs.b",
- "llvm.x86.avx2.psubs.w",
"llvm.x86.avx512.add.pd.512",
"llvm.x86.avx512.add.ps.512",
"llvm.x86.avx512.broadcastmb.128",
@@ -5675,6 +5793,12 @@
"llvm.x86.avx512.cmp.ps.128",
"llvm.x86.avx512.cmp.ps.256",
"llvm.x86.avx512.cmp.ps.512",
+ "llvm.x86.avx512.conflict.d.128",
+ "llvm.x86.avx512.conflict.d.256",
+ "llvm.x86.avx512.conflict.d.512",
+ "llvm.x86.avx512.conflict.q.128",
+ "llvm.x86.avx512.conflict.q.256",
+ "llvm.x86.avx512.conflict.q.512",
"llvm.x86.avx512.cvtsi2sd64",
"llvm.x86.avx512.cvtsi2ss32",
"llvm.x86.avx512.cvtsi2ss64",
@@ -5746,31 +5870,7 @@
"llvm.x86.avx512.mask.add.ss.round",
"llvm.x86.avx512.mask.cmp.sd",
"llvm.x86.avx512.mask.cmp.ss",
- "llvm.x86.avx512.mask.compress.b.128",
- "llvm.x86.avx512.mask.compress.b.256",
- "llvm.x86.avx512.mask.compress.b.512",
- "llvm.x86.avx512.mask.compress.d.128",
- "llvm.x86.avx512.mask.compress.d.256",
- "llvm.x86.avx512.mask.compress.d.512",
- "llvm.x86.avx512.mask.compress.pd.128",
- "llvm.x86.avx512.mask.compress.pd.256",
- "llvm.x86.avx512.mask.compress.pd.512",
- "llvm.x86.avx512.mask.compress.ps.128",
- "llvm.x86.avx512.mask.compress.ps.256",
- "llvm.x86.avx512.mask.compress.ps.512",
- "llvm.x86.avx512.mask.compress.q.128",
- "llvm.x86.avx512.mask.compress.q.256",
- "llvm.x86.avx512.mask.compress.q.512",
- "llvm.x86.avx512.mask.compress.w.128",
- "llvm.x86.avx512.mask.compress.w.256",
- "llvm.x86.avx512.mask.compress.w.512",
- "llvm.x86.avx512.mask.conflict.d.128",
- "llvm.x86.avx512.mask.conflict.d.256",
- "llvm.x86.avx512.mask.conflict.d.512",
- "llvm.x86.avx512.mask.conflict.q.128",
- "llvm.x86.avx512.mask.conflict.q.256",
- "llvm.x86.avx512.mask.conflict.q.512",
- "llvm.x86.avx512.mask.cvtdq2ps.512",
+ "llvm.x86.avx512.mask.compress",
"llvm.x86.avx512.mask.cvtpd2dq.128",
"llvm.x86.avx512.mask.cvtpd2dq.512",
"llvm.x86.avx512.mask.cvtpd2ps",
@@ -5797,10 +5897,7 @@
"llvm.x86.avx512.mask.cvtps2uqq.128",
"llvm.x86.avx512.mask.cvtps2uqq.256",
"llvm.x86.avx512.mask.cvtps2uqq.512",
- "llvm.x86.avx512.mask.cvtqq2pd.512",
"llvm.x86.avx512.mask.cvtqq2ps.128",
- "llvm.x86.avx512.mask.cvtqq2ps.256",
- "llvm.x86.avx512.mask.cvtqq2ps.512",
"llvm.x86.avx512.mask.cvtsd2ss.round",
"llvm.x86.avx512.mask.cvtss2sd.round",
"llvm.x86.avx512.mask.cvttpd2dq.128",
@@ -5824,31 +5921,10 @@
"llvm.x86.avx512.mask.cvttps2uqq.128",
"llvm.x86.avx512.mask.cvttps2uqq.256",
"llvm.x86.avx512.mask.cvttps2uqq.512",
- "llvm.x86.avx512.mask.cvtudq2ps.512",
- "llvm.x86.avx512.mask.cvtuqq2pd.512",
"llvm.x86.avx512.mask.cvtuqq2ps.128",
- "llvm.x86.avx512.mask.cvtuqq2ps.256",
- "llvm.x86.avx512.mask.cvtuqq2ps.512",
"llvm.x86.avx512.mask.div.sd.round",
"llvm.x86.avx512.mask.div.ss.round",
- "llvm.x86.avx512.mask.expand.b.128",
- "llvm.x86.avx512.mask.expand.b.256",
- "llvm.x86.avx512.mask.expand.b.512",
- "llvm.x86.avx512.mask.expand.d.128",
- "llvm.x86.avx512.mask.expand.d.256",
- "llvm.x86.avx512.mask.expand.d.512",
- "llvm.x86.avx512.mask.expand.pd.128",
- "llvm.x86.avx512.mask.expand.pd.256",
- "llvm.x86.avx512.mask.expand.pd.512",
- "llvm.x86.avx512.mask.expand.ps.128",
- "llvm.x86.avx512.mask.expand.ps.256",
- "llvm.x86.avx512.mask.expand.ps.512",
- "llvm.x86.avx512.mask.expand.q.128",
- "llvm.x86.avx512.mask.expand.q.256",
- "llvm.x86.avx512.mask.expand.q.512",
- "llvm.x86.avx512.mask.expand.w.128",
- "llvm.x86.avx512.mask.expand.w.256",
- "llvm.x86.avx512.mask.expand.w.512",
+ "llvm.x86.avx512.mask.expand",
"llvm.x86.avx512.mask.fixupimm.pd.128",
"llvm.x86.avx512.mask.fixupimm.pd.256",
"llvm.x86.avx512.mask.fixupimm.pd.512",
@@ -5859,6 +5935,30 @@
"llvm.x86.avx512.mask.fixupimm.ss",
"llvm.x86.avx512.mask.fpclass.sd",
"llvm.x86.avx512.mask.fpclass.ss",
+ "llvm.x86.avx512.mask.gather.dpd.512",
+ "llvm.x86.avx512.mask.gather.dpi.512",
+ "llvm.x86.avx512.mask.gather.dpq.512",
+ "llvm.x86.avx512.mask.gather.dps.512",
+ "llvm.x86.avx512.mask.gather.qpd.512",
+ "llvm.x86.avx512.mask.gather.qpi.512",
+ "llvm.x86.avx512.mask.gather.qpq.512",
+ "llvm.x86.avx512.mask.gather.qps.512",
+ "llvm.x86.avx512.mask.gather3div2.df",
+ "llvm.x86.avx512.mask.gather3div2.di",
+ "llvm.x86.avx512.mask.gather3div4.df",
+ "llvm.x86.avx512.mask.gather3div4.di",
+ "llvm.x86.avx512.mask.gather3div4.sf",
+ "llvm.x86.avx512.mask.gather3div4.si",
+ "llvm.x86.avx512.mask.gather3div8.sf",
+ "llvm.x86.avx512.mask.gather3div8.si",
+ "llvm.x86.avx512.mask.gather3siv2.df",
+ "llvm.x86.avx512.mask.gather3siv2.di",
+ "llvm.x86.avx512.mask.gather3siv4.df",
+ "llvm.x86.avx512.mask.gather3siv4.di",
+ "llvm.x86.avx512.mask.gather3siv4.sf",
+ "llvm.x86.avx512.mask.gather3siv4.si",
+ "llvm.x86.avx512.mask.gather3siv8.sf",
+ "llvm.x86.avx512.mask.gather3siv8.si",
"llvm.x86.avx512.mask.getexp.pd.128",
"llvm.x86.avx512.mask.getexp.pd.256",
"llvm.x86.avx512.mask.getexp.pd.512",
@@ -5900,8 +6000,6 @@
"llvm.x86.avx512.mask.pmov.qb.mem.256",
"llvm.x86.avx512.mask.pmov.qb.mem.512",
"llvm.x86.avx512.mask.pmov.qd.128",
- "llvm.x86.avx512.mask.pmov.qd.256",
- "llvm.x86.avx512.mask.pmov.qd.512",
"llvm.x86.avx512.mask.pmov.qd.mem.128",
"llvm.x86.avx512.mask.pmov.qd.mem.256",
"llvm.x86.avx512.mask.pmov.qd.mem.512",
@@ -5912,8 +6010,6 @@
"llvm.x86.avx512.mask.pmov.qw.mem.256",
"llvm.x86.avx512.mask.pmov.qw.mem.512",
"llvm.x86.avx512.mask.pmov.wb.128",
- "llvm.x86.avx512.mask.pmov.wb.256",
- "llvm.x86.avx512.mask.pmov.wb.512",
"llvm.x86.avx512.mask.pmov.wb.mem.128",
"llvm.x86.avx512.mask.pmov.wb.mem.256",
"llvm.x86.avx512.mask.pmov.wb.mem.512",
@@ -5989,9 +6085,6 @@
"llvm.x86.avx512.mask.pmovus.wb.mem.128",
"llvm.x86.avx512.mask.pmovus.wb.mem.256",
"llvm.x86.avx512.mask.pmovus.wb.mem.512",
- "llvm.x86.avx512.mask.pmultishift.qb.128",
- "llvm.x86.avx512.mask.pmultishift.qb.256",
- "llvm.x86.avx512.mask.pmultishift.qb.512",
"llvm.x86.avx512.mask.range.pd.128",
"llvm.x86.avx512.mask.range.pd.256",
"llvm.x86.avx512.mask.range.pd.512",
@@ -6024,6 +6117,30 @@
"llvm.x86.avx512.mask.scalef.ps.512",
"llvm.x86.avx512.mask.scalef.sd",
"llvm.x86.avx512.mask.scalef.ss",
+ "llvm.x86.avx512.mask.scatter.dpd.512",
+ "llvm.x86.avx512.mask.scatter.dpi.512",
+ "llvm.x86.avx512.mask.scatter.dpq.512",
+ "llvm.x86.avx512.mask.scatter.dps.512",
+ "llvm.x86.avx512.mask.scatter.qpd.512",
+ "llvm.x86.avx512.mask.scatter.qpi.512",
+ "llvm.x86.avx512.mask.scatter.qpq.512",
+ "llvm.x86.avx512.mask.scatter.qps.512",
+ "llvm.x86.avx512.mask.scatterdiv2.df",
+ "llvm.x86.avx512.mask.scatterdiv2.di",
+ "llvm.x86.avx512.mask.scatterdiv4.df",
+ "llvm.x86.avx512.mask.scatterdiv4.di",
+ "llvm.x86.avx512.mask.scatterdiv4.sf",
+ "llvm.x86.avx512.mask.scatterdiv4.si",
+ "llvm.x86.avx512.mask.scatterdiv8.sf",
+ "llvm.x86.avx512.mask.scatterdiv8.si",
+ "llvm.x86.avx512.mask.scattersiv2.df",
+ "llvm.x86.avx512.mask.scattersiv2.di",
+ "llvm.x86.avx512.mask.scattersiv4.df",
+ "llvm.x86.avx512.mask.scattersiv4.di",
+ "llvm.x86.avx512.mask.scattersiv4.sf",
+ "llvm.x86.avx512.mask.scattersiv4.si",
+ "llvm.x86.avx512.mask.scattersiv8.sf",
+ "llvm.x86.avx512.mask.scattersiv8.si",
"llvm.x86.avx512.mask.sqrt.sd",
"llvm.x86.avx512.mask.sqrt.ss",
"llvm.x86.avx512.mask.sub.sd.round",
@@ -6034,27 +6151,6 @@
"llvm.x86.avx512.mask.vcvtps2ph.128",
"llvm.x86.avx512.mask.vcvtps2ph.256",
"llvm.x86.avx512.mask.vcvtps2ph.512",
- "llvm.x86.avx512.mask.vpshldv.d.128",
- "llvm.x86.avx512.mask.vpshldv.d.256",
- "llvm.x86.avx512.mask.vpshldv.d.512",
- "llvm.x86.avx512.mask.vpshldv.q.128",
- "llvm.x86.avx512.mask.vpshldv.q.256",
- "llvm.x86.avx512.mask.vpshldv.q.512",
- "llvm.x86.avx512.mask.vpshldv.w.128",
- "llvm.x86.avx512.mask.vpshldv.w.256",
- "llvm.x86.avx512.mask.vpshldv.w.512",
- "llvm.x86.avx512.mask.vpshrdv.d.128",
- "llvm.x86.avx512.mask.vpshrdv.d.256",
- "llvm.x86.avx512.mask.vpshrdv.d.512",
- "llvm.x86.avx512.mask.vpshrdv.q.128",
- "llvm.x86.avx512.mask.vpshrdv.q.256",
- "llvm.x86.avx512.mask.vpshrdv.q.512",
- "llvm.x86.avx512.mask.vpshrdv.w.128",
- "llvm.x86.avx512.mask.vpshrdv.w.256",
- "llvm.x86.avx512.mask.vpshrdv.w.512",
- "llvm.x86.avx512.mask.vpshufbitqmb.128",
- "llvm.x86.avx512.mask.vpshufbitqmb.256",
- "llvm.x86.avx512.mask.vpshufbitqmb.512",
"llvm.x86.avx512.maskz.fixupimm.pd.128",
"llvm.x86.avx512.maskz.fixupimm.pd.256",
"llvm.x86.avx512.maskz.fixupimm.pd.512",
@@ -6063,24 +6159,6 @@
"llvm.x86.avx512.maskz.fixupimm.ps.512",
"llvm.x86.avx512.maskz.fixupimm.sd",
"llvm.x86.avx512.maskz.fixupimm.ss",
- "llvm.x86.avx512.maskz.vpshldv.d.128",
- "llvm.x86.avx512.maskz.vpshldv.d.256",
- "llvm.x86.avx512.maskz.vpshldv.d.512",
- "llvm.x86.avx512.maskz.vpshldv.q.128",
- "llvm.x86.avx512.maskz.vpshldv.q.256",
- "llvm.x86.avx512.maskz.vpshldv.q.512",
- "llvm.x86.avx512.maskz.vpshldv.w.128",
- "llvm.x86.avx512.maskz.vpshldv.w.256",
- "llvm.x86.avx512.maskz.vpshldv.w.512",
- "llvm.x86.avx512.maskz.vpshrdv.d.128",
- "llvm.x86.avx512.maskz.vpshrdv.d.256",
- "llvm.x86.avx512.maskz.vpshrdv.d.512",
- "llvm.x86.avx512.maskz.vpshrdv.q.128",
- "llvm.x86.avx512.maskz.vpshrdv.q.256",
- "llvm.x86.avx512.maskz.vpshrdv.q.512",
- "llvm.x86.avx512.maskz.vpshrdv.w.128",
- "llvm.x86.avx512.maskz.vpshrdv.w.256",
- "llvm.x86.avx512.maskz.vpshrdv.w.512",
"llvm.x86.avx512.max.pd.512",
"llvm.x86.avx512.max.ps.512",
"llvm.x86.avx512.min.pd.512",
@@ -6091,8 +6169,6 @@
"llvm.x86.avx512.packsswb.512",
"llvm.x86.avx512.packusdw.512",
"llvm.x86.avx512.packuswb.512",
- "llvm.x86.avx512.padds.b.512",
- "llvm.x86.avx512.padds.w.512",
"llvm.x86.avx512.permvar.df.256",
"llvm.x86.avx512.permvar.df.512",
"llvm.x86.avx512.permvar.di.256",
@@ -6110,30 +6186,9 @@
"llvm.x86.avx512.pmul.hr.sw.512",
"llvm.x86.avx512.pmulh.w.512",
"llvm.x86.avx512.pmulhu.w.512",
- "llvm.x86.avx512.prol.d.128",
- "llvm.x86.avx512.prol.d.256",
- "llvm.x86.avx512.prol.d.512",
- "llvm.x86.avx512.prol.q.128",
- "llvm.x86.avx512.prol.q.256",
- "llvm.x86.avx512.prol.q.512",
- "llvm.x86.avx512.prolv.d.128",
- "llvm.x86.avx512.prolv.d.256",
- "llvm.x86.avx512.prolv.d.512",
- "llvm.x86.avx512.prolv.q.128",
- "llvm.x86.avx512.prolv.q.256",
- "llvm.x86.avx512.prolv.q.512",
- "llvm.x86.avx512.pror.d.128",
- "llvm.x86.avx512.pror.d.256",
- "llvm.x86.avx512.pror.d.512",
- "llvm.x86.avx512.pror.q.128",
- "llvm.x86.avx512.pror.q.256",
- "llvm.x86.avx512.pror.q.512",
- "llvm.x86.avx512.prorv.d.128",
- "llvm.x86.avx512.prorv.d.256",
- "llvm.x86.avx512.prorv.d.512",
- "llvm.x86.avx512.prorv.q.128",
- "llvm.x86.avx512.prorv.q.256",
- "llvm.x86.avx512.prorv.q.512",
+ "llvm.x86.avx512.pmultishift.qb.128",
+ "llvm.x86.avx512.pmultishift.qb.256",
+ "llvm.x86.avx512.pmultishift.qb.512",
"llvm.x86.avx512.psad.bw.512",
"llvm.x86.avx512.pshuf.b.512",
"llvm.x86.avx512.psll.d.512",
@@ -6175,8 +6230,6 @@
"llvm.x86.avx512.psrlv.w.128",
"llvm.x86.avx512.psrlv.w.256",
"llvm.x86.avx512.psrlv.w.512",
- "llvm.x86.avx512.psubs.b.512",
- "llvm.x86.avx512.psubs.w.512",
"llvm.x86.avx512.pternlog.d.128",
"llvm.x86.avx512.pternlog.d.256",
"llvm.x86.avx512.pternlog.d.512",
@@ -6235,10 +6288,12 @@
"llvm.x86.avx512.scattersiv4.si",
"llvm.x86.avx512.scattersiv8.sf",
"llvm.x86.avx512.scattersiv8.si",
+ "llvm.x86.avx512.sitofp.round",
"llvm.x86.avx512.sqrt.pd.512",
"llvm.x86.avx512.sqrt.ps.512",
"llvm.x86.avx512.sub.pd.512",
"llvm.x86.avx512.sub.ps.512",
+ "llvm.x86.avx512.uitofp.round",
"llvm.x86.avx512.vcomi.sd",
"llvm.x86.avx512.vcomi.ss",
"llvm.x86.avx512.vcvtsd2si32",
@@ -6293,24 +6348,9 @@
"llvm.x86.avx512.vpmadd52l.uq.128",
"llvm.x86.avx512.vpmadd52l.uq.256",
"llvm.x86.avx512.vpmadd52l.uq.512",
- "llvm.x86.avx512.vpshld.d.128",
- "llvm.x86.avx512.vpshld.d.256",
- "llvm.x86.avx512.vpshld.d.512",
- "llvm.x86.avx512.vpshld.q.128",
- "llvm.x86.avx512.vpshld.q.256",
- "llvm.x86.avx512.vpshld.q.512",
- "llvm.x86.avx512.vpshld.w.128",
- "llvm.x86.avx512.vpshld.w.256",
- "llvm.x86.avx512.vpshld.w.512",
- "llvm.x86.avx512.vpshrd.d.128",
- "llvm.x86.avx512.vpshrd.d.256",
- "llvm.x86.avx512.vpshrd.d.512",
- "llvm.x86.avx512.vpshrd.q.128",
- "llvm.x86.avx512.vpshrd.q.256",
- "llvm.x86.avx512.vpshrd.q.512",
- "llvm.x86.avx512.vpshrd.w.128",
- "llvm.x86.avx512.vpshrd.w.256",
- "llvm.x86.avx512.vpshrd.w.512",
+ "llvm.x86.avx512.vpshufbitqmb.128",
+ "llvm.x86.avx512.vpshufbitqmb.256",
+ "llvm.x86.avx512.vpshufbitqmb.512",
"llvm.x86.bmi.bextr.32",
"llvm.x86.bmi.bextr.64",
"llvm.x86.bmi.bzhi.32",
@@ -6444,7 +6484,6 @@
"llvm.x86.seh.ehguard",
"llvm.x86.seh.ehregnode",
"llvm.x86.seh.lsda",
- "llvm.x86.seh.recoverfp",
"llvm.x86.setssbsy",
"llvm.x86.sha1msg1",
"llvm.x86.sha1msg2",
@@ -6521,8 +6560,6 @@
"llvm.x86.sse2.packssdw.128",
"llvm.x86.sse2.packsswb.128",
"llvm.x86.sse2.packuswb.128",
- "llvm.x86.sse2.padds.b",
- "llvm.x86.sse2.padds.w",
"llvm.x86.sse2.pause",
"llvm.x86.sse2.pmadd.wd",
"llvm.x86.sse2.pmovmskb.128",
@@ -6545,8 +6582,6 @@
"llvm.x86.sse2.psrli.d",
"llvm.x86.sse2.psrli.q",
"llvm.x86.sse2.psrli.w",
- "llvm.x86.sse2.psubs.b",
- "llvm.x86.sse2.psubs.w",
"llvm.x86.sse2.ucomieq.sd",
"llvm.x86.sse2.ucomige.sd",
"llvm.x86.sse2.ucomigt.sd",
@@ -6627,8 +6662,8 @@
"llvm.x86.ssse3.psign.d.128",
"llvm.x86.ssse3.psign.w",
"llvm.x86.ssse3.psign.w.128",
- "llvm.x86.subborrow.u32",
- "llvm.x86.subborrow.u64",
+ "llvm.x86.subborrow.32",
+ "llvm.x86.subborrow.64",
"llvm.x86.tbm.bextri.u32",
"llvm.x86.tbm.bextri.u64",
"llvm.x86.tpause",
@@ -6668,14 +6703,6 @@
"llvm.x86.xop.vfrcz.ps.256",
"llvm.x86.xop.vfrcz.sd",
"llvm.x86.xop.vfrcz.ss",
- "llvm.x86.xop.vpcomb",
- "llvm.x86.xop.vpcomd",
- "llvm.x86.xop.vpcomq",
- "llvm.x86.xop.vpcomub",
- "llvm.x86.xop.vpcomud",
- "llvm.x86.xop.vpcomuq",
- "llvm.x86.xop.vpcomuw",
- "llvm.x86.xop.vpcomw",
"llvm.x86.xop.vpermil2pd",
"llvm.x86.xop.vpermil2pd.256",
"llvm.x86.xop.vpermil2ps",
@@ -6708,14 +6735,6 @@
"llvm.x86.xop.vpmadcsswd",
"llvm.x86.xop.vpmadcswd",
"llvm.x86.xop.vpperm",
- "llvm.x86.xop.vprotb",
- "llvm.x86.xop.vprotbi",
- "llvm.x86.xop.vprotd",
- "llvm.x86.xop.vprotdi",
- "llvm.x86.xop.vprotq",
- "llvm.x86.xop.vprotqi",
- "llvm.x86.xop.vprotw",
- "llvm.x86.xop.vprotwi",
"llvm.x86.xop.vpshab",
"llvm.x86.xop.vpshad",
"llvm.x86.xop.vpshaq",
@@ -6802,52 +6821,59 @@
0 | (1<<3) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1),
0 | (1<<2),
- 0 | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5),
- 0 | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4),
+ 0 | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<7),
0 | (1<<0) | (1<<2) | (1<<3) | (1<<5) | (1<<6),
0 | (1<<2),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5),
- 0 | (1<<1) | (1<<2) | (1<<3) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<3) | (1<<4) | (1<<5) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<6) | (1<<7),
- 0 | (1<<1) | (1<<2) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<5),
- 0 | (1<<0) | (1<<3) | (1<<4) | (1<<5),
- 0 | (1<<2),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0,
0,
0,
- 0 | (1<<2) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<6),
+ 0 | (1<<0) | (1<<1) | (1<<3) | (1<<4) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<3) | (1<<4) | (1<<5) | (1<<6),
+ 0 | (1<<3) | (1<<6),
+ 0 | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6),
+ 0 | (1<<3),
+ 0,
+ 0,
+ 0,
+ 0 | (1<<3) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6),
- 0 | (1<<0) | (1<<1) | (1<<3) | (1<<4) | (1<<5) | (1<<6),
- 0 | (1<<1) | (1<<3) | (1<<4) | (1<<7),
- 0 | (1<<0),
- 0 | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<4) | (1<<5),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<5) | (1<<6),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<7),
+ 0 | (1<<1) | (1<<2) | (1<<5) | (1<<6),
0,
- 0 | (1<<2) | (1<<3) | (1<<4),
+ 0 | (1<<2) | (1<<3) | (1<<4) | (1<<5),
+ 0 | (1<<1) | (1<<2),
+ 0 | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<4),
0 | (1<<6) | (1<<7),
0 | (1<<0) | (1<<3) | (1<<4) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<2) | (1<<5) | (1<<6) | (1<<7),
@@ -6909,48 +6935,360 @@
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6),
0,
- 0 | (1<<0) | (1<<2) | (1<<6),
- 0 | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<2) | (1<<4),
+ 0 | (1<<0) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6),
- 0 | (1<<2) | (1<<3) | (1<<6),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<4) | (1<<5),
+ 0 | (1<<0),
+ 0,
+ 0 | (1<<2) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5),
+ 0 | (1<<2),
+ 0 | (1<<2) | (1<<5),
+ 0,
+ 0 | (1<<5),
+ 0 | (1<<3),
+ 0,
+ 0 | (1<<1),
+ 0 | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<1) | (1<<2) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2),
0,
0,
- 0 | (1<<0) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0 | (1<<0) | (1<<2),
+ 0,
+ 0,
+ 0 | (1<<7),
+ 0 | (1<<0),
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0 | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3),
- 0 | (1<<0),
- 0 | (1<<0) | (1<<3),
- 0,
- 0 | (1<<3),
- 0 | (1<<1),
- 0 | (1<<7),
- 0,
- 0 | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<7),
- 0 | (1<<0) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0),
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0 | (1<<6),
- 0 | (1<<0),
- 0,
0,
0 | (1<<5) | (1<<6),
0,
@@ -6967,10 +7305,15 @@
0,
0,
0,
+ 0 | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3),
0,
0,
+ 0 | (1<<4),
0,
0,
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0),
0,
0,
0,
@@ -6980,207 +7323,7 @@
0,
0,
0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ 0 | (1<<0),
0,
0,
0,
@@ -7252,12 +7395,35 @@
0,
0,
0 | (1<<6) | (1<<7),
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0 | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2),
+ 0,
+ 0,
+ 0,
+ 0 | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2),
+ 0,
+ 0,
+ 0,
+ 0 | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2),
0,
0,
- 0 | (1<<1) | (1<<2),
+ 0,
+ 0 | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2),
0,
0,
0,
@@ -7272,14 +7438,102 @@
0,
0,
0,
- 0 | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0,
0,
0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0 | (1<<2),
+ 0,
+ 0 | (1<<7),
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0 | (1<<7),
0 | (1<<0),
- 0,
- 0 | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
+ 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4),
+ 0 | (1<<7),
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0 | (1<<1) | (1<<2) | (1<<6),
+ 0 | (1<<5) | (1<<7),
+ 0 | (1<<1) | (1<<2) | (1<<4) | (1<<5),
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
0,
0,
0,
@@ -7296,100 +7550,25 @@
0,
0,
0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ 0 | (1<<2),
0,
0,
0,
- 0 | (1<<2) | (1<<3),
0,
0,
0,
0,
0,
0,
- 0 | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6),
0,
0,
0,
- 0 | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6),
0,
0,
0,
- 0 | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6),
0,
0,
0,
- 0 | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6),
0,
0,
0,
@@ -7417,8 +7596,6 @@
0,
0,
0 | (1<<6),
- 0,
- 0,
0 | (1<<3),
0,
0,
@@ -7443,11 +7620,6 @@
0,
0,
0,
- 0 | (1<<3) | (1<<4),
- 0 | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6),
- 0,
- 0 | (1<<1),
0,
0,
0,
@@ -7473,173 +7645,22 @@
0,
0,
0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0 | (1<<5) | (1<<7),
0 | (1<<3) | (1<<4) | (1<<5) | (1<<6),
- 0 | (1<<2) | (1<<4) | (1<<7),
- 0 | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<7),
- 0 | (1<<0),
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0 | (1<<2) | (1<<4),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3),
+ 0 | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6),
- 0 | (1<<0) | (1<<1) | (1<<2) | (1<<4) | (1<<5),
- 0 | (1<<0) | (1<<1) | (1<<2)
+ 0 | (1<<0) | (1<<1) | (1<<3) | (1<<4) | (1<<5) | (1<<7),
+ 0 | (1<<0) | (1<<3) | (1<<4) | (1<<5)
};
return (OTable[id/8] & (1 << (id%8))) != 0;
@@ -7648,214 +7669,223 @@
// Global intrinsic function declaration type table.
#ifdef GET_INTRINSIC_GENERATOR_GLOBAL
static const unsigned IIT_Table[] = {
- 0x2e, 0x2e2e, (1U<<31) | 1427, 0x10, 0x1f1f, 0x1f1f, 0x2f2f,
- 0x2f2f, 0x2e2e0, (1U<<31) | 5468, 0x32f, 0x2f3, 0x2f2f2f, (1U<<31) | 5457, (1U<<31) | 782,
- 0x2e0, 0x2e1, 0x12e1, 0x2e, (1U<<31) | 782, (1U<<31) | 693, 0x2e, 0x2e2e1,
- 0x142e2e, 0x2e0, (1U<<31) | 784, 0x1f, 0x22e2e, (1U<<31) | 169, 0x2f2f, 0x11f1f,
- 0x1f1f, 0x11f1f, (1U<<31) | 5515, (1U<<31) | 5515, (1U<<31) | 5468, (1U<<31) | 5515, 0x0, 0x0,
- 0x42e, (1U<<31) | 5465, (1U<<31) | 5464, 0x2e40, 0x2e50, 0x40, 0x2e0, 0x2e0,
- 0x2e, 0x2e4, 0x0, 0x2e4, 0x0, 0x2f2f, 0x2f2f, 0x1f1f1f,
- (1U<<31) | 5500, (1U<<31) | 5500, (1U<<31) | 5500, (1U<<31) | 5498, (1U<<31) | 5498, (1U<<31) | 5496, (1U<<31) | 5498, (1U<<31) | 5498,
- (1U<<31) | 5498, (1U<<31) | 5500, (1U<<31) | 5500, (1U<<31) | 5500, (1U<<31) | 5500, (1U<<31) | 5498, (1U<<31) | 5507, (1U<<31) | 5500,
- (1U<<31) | 5500, (1U<<31) | 5500, (1U<<31) | 5520, (1U<<31) | 3681, (1U<<31) | 5453, (1U<<31) | 5544, (1U<<31) | 5524, (1U<<31) | 5536,
- (1U<<31) | 5528, (1U<<31) | 5553, 0xbf1f, 0xbf1f, (1U<<31) | 5489, 0xbf2f, 0xbf2f, (1U<<31) | 5489,
- 0xbf1f, 0xbf1f, 0xbf1f, 0xbf1f, 0xbf1f, 0xbf1f, 0xbf1f, 0x2f2f,
+ 0x2e, 0x2e2e, (1U<<31) | 1664, 0x10, 0x1f1f, 0x1f1f, 0x2f2f,
+ 0x2f2f, 0x2e2e0, (1U<<31) | 6031, 0x32f, 0x2f3, 0x2f2f2f, (1U<<31) | 6020, (1U<<31) | 764,
+ 0x2e0, 0x2e1, 0x12e1, 0x2e, (1U<<31) | 764, (1U<<31) | 675, 0x2e, 0x2e2e1,
+ 0x142e2e, 0x2e0, (1U<<31) | 766, 0x1f, 0x22e2e, (1U<<31) | 193, 0x2f2f, 0x11f1f,
+ 0x1f1f, 0x11f1f, (1U<<31) | 6078, (1U<<31) | 6078, (1U<<31) | 6031, (1U<<31) | 6078, 0x0, 0x0,
+ 0x42e, (1U<<31) | 6028, (1U<<31) | 6027, 0x2e2e2e, 0x2e40, 0x2e50, 0x40, 0x2e0,
+ 0x2e0, 0x2e, 0x2e4, 0x0, 0x2e4, 0x0, 0x2f2f, 0x2f2f,
+ 0x1f1f1f, (1U<<31) | 6063, (1U<<31) | 6063, (1U<<31) | 6063, (1U<<31) | 6063, (1U<<31) | 6061, (1U<<31) | 6061, (1U<<31) | 6063,
+ (1U<<31) | 6059, (1U<<31) | 6061, (1U<<31) | 6061, (1U<<31) | 6061, (1U<<31) | 6063, (1U<<31) | 6063, (1U<<31) | 6063, (1U<<31) | 6061,
+ (1U<<31) | 6061, (1U<<31) | 6063, (1U<<31) | 6061, (1U<<31) | 6070, (1U<<31) | 6063, (1U<<31) | 6063, (1U<<31) | 6063, (1U<<31) | 6063,
+ (1U<<31) | 6063, (1U<<31) | 6083, (1U<<31) | 4028, (1U<<31) | 6016, (1U<<31) | 6107, (1U<<31) | 6087, (1U<<31) | 6099, (1U<<31) | 6091,
+ (1U<<31) | 6116, 0xbf1f, 0xbf1f, (1U<<31) | 6052, 0xbf2f, 0xbf2f, (1U<<31) | 6052, 0xbf1f,
+ 0xbf1f, 0xbf1f, 0xbf1f, 0xbf1f, 0xbf1f, 0xbf1f, 0x1, 0x2f2f,
0x2f2f, 0x4, 0x2f2f2f2f, 0x2f2f2f2f, 0x42e, 0x1f1f1f1f, 0x1f1f1f1f, 0x2ee2e2e,
- 0x2e2ee0, 0x2ee2e2e0, 0x1f, (1U<<31) | 5521, 0x2e2e2e0, 0x4452e0, 0x54452e0, 0x44552e0,
- (1U<<31) | 4287, (1U<<31) | 4288, 0x4f4f, 0x4f50, 0x4f50, 0x1f2e2e, 0x2e, (1U<<31) | 5521,
- 0x42e2e2e, 0x2f2f, 0x2f2f, 0x2f2f, 0x42e0, (1U<<31) | 68, (1U<<31) | 888, (1U<<31) | 898,
- (1U<<31) | 910, (1U<<31) | 77, (1U<<31) | 88, 0x2f2f2f, (1U<<31) | 160, (1U<<31) | 4377, (1U<<31) | 160, (1U<<31) | 4377,
- 0x19f24f0, 0x49f24f0, 0x2f2f2f, 0x2f2f, 0x11cf1f, 0x40, 0x2f2f2f, 0x42f2f,
- 0x4442e0, (1U<<31) | 1437, (1U<<31) | 5471, 0x5, 0x42e, 0x2f2f, 0x2f2f, (1U<<31) | 133,
- 0x2e4, 0x0, 0x42e0, 0x42e4, 0x2f2f, (1U<<31) | 133, 0x2f2f, 0xf0f,
- (1U<<31) | 133, 0x2e, 0x2ee2e0, 0x2e0, 0x2e, 0x4f4f, 0x2e, 0x0,
- 0x2f2f, (1U<<31) | 5480, (1U<<31) | 5475, (1U<<31) | 133, (1U<<31) | 133, (1U<<31) | 133, 0x2e2e0, 0x2e0,
- 0x2e0, 0x42e2e2e0, (1U<<31) | 142, 0x42e0, 0x42e30, 0x0, 0x444, 0x444,
- 0x444, 0x444, 0x544, 0x444, 0x444, 0x544, 0x2c2c2c, 0x2c2c2c,
- 0x2c2c, 0x2c2c, 0x4a44a4a, 0x44, 0x4a44a4a, 0x4a44a4a, 0x4a4a4a4a, 0x4a4a4a,
- 0x4a4a4a4a, 0x4a4a4a4a, 0x4a4a4a, 0x4a4a4a4a, 0x40, 0x40, 0x5, 0x40,
- 0x40, (1U<<31) | 770, 0x4f5, (1U<<31) | 770, 0x4f5, 0xf0f, (1U<<31) | 965, 0x3f3f3f,
- 0x3f3f, 0x3f3f3f, 0xafaf1f, 0xafaf1f, 0xbf2f, 0xaf1f, 0xaf1f, 0xaf1f,
- 0xaf1f, 0xaf1f, 0xaf1f, 0xaf1f, 0xaf1f, 0xbf3f, 0xaf1f, 0xaf1f,
- 0x2f2f2f, 0x2f2f2f, 0x3f3f3f, 0xbf2f, 0x3f3f3f, 0xbf2f, 0x2f2f2f, 0x2f2f2f,
- 0x3f3f3f, 0xbf2f, 0x3f3f3f, 0xbf2f, 0x2f2f2f, 0x2f2f, 0x2f2f2f, 0x2f2f,
- 0x2f2f, 0x2f2f, 0x2f2f2f, (1U<<31) | 5339, (1U<<31) | 5329, (1U<<31) | 5317, (1U<<31) | 5339, (1U<<31) | 5418,
- (1U<<31) | 5339, (1U<<31) | 5329, (1U<<31) | 5401, (1U<<31) | 5329, (1U<<31) | 5317, (1U<<31) | 5380, (1U<<31) | 5317, 0x3f3f3f,
- (1U<<31) | 977, 0x552c, (1U<<31) | 965, 0x3f3f, (1U<<31) | 984, (1U<<31) | 965, 0x3f3f3f, 0xbf3f,
- 0xbf1f, 0xbf1f, 0x9f1f, 0x9f1f, 0x9f1f, (1U<<31) | 5264, 0x3f3f3f, (1U<<31) | 972,
- 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, 0xbf1f, 0x3f3f3f, 0x3f3f3f, 0xbf1f, (1U<<31) | 977,
- 0x1f1f, 0x1f1f1f, 0x1f1f1f, (1U<<31) | 977, 0x445, 0x1f1f, 0x1f1f1f, 0x1f1f1f,
- (1U<<31) | 984, (1U<<31) | 984, 0x1f1f1f, 0x1f1f1f, (1U<<31) | 984, (1U<<31) | 984, 0x1f1f1f, (1U<<31) | 173,
- (1U<<31) | 173, 0x3f3f3f, 0x1f1f1f, 0x1f1f1f, (1U<<31) | 1574, 0xcf3f3f0, (1U<<31) | 5295, (1U<<31) | 5305,
- 0xcf3f3f0, (1U<<31) | 5347, (1U<<31) | 5295, (1U<<31) | 5356, (1U<<31) | 5305, (1U<<31) | 5367, (1U<<31) | 965, 0x1f1f1f,
- 0x3f2c3f, 0x3f2c2c3f, (1U<<31) | 938, (1U<<31) | 923, 0x3f2c3f3f, (1U<<31) | 949, (1U<<31) | 936, (1U<<31) | 921,
- 0x3f3f3f, 0xbf3f, 0xbf1f, 0xbf1f, (1U<<31) | 5264, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f,
- 0x3f3f3f, 0xbf1f, 0x3f3f3f, 0x3f3f3f, 0xbf1f, (1U<<31) | 977, 0x1f1f1f, 0x1f1f1f,
- (1U<<31) | 984, 0x1f1f1f, (1U<<31) | 984, 0x1f1f1f, (1U<<31) | 173, 0x3f3f, 0x3f3f3f, 0x1f1f1f,
- 0x3f3f, 0x1f1f1f, (1U<<31) | 1574, 0x1f1f1f, 0x53f5bf3f, 0x4af1f, 0x4af1f, 0x7a3a,
- 0x49f2f, 0x49f2f, 0x3a7a, 0x43f3f3f, 0x43f3f3f, 0x1f1f1f, 0x2f2f2f, 0x87,
- 0x2e554, 0x4f54, 0x2e554, 0x4f54, 0x1f1f1f, 0x4444, 0x4444, (1U<<31) | 98,
- (1U<<31) | 98, 0x55, 0x1444a44, 0x1444a44, 0x1444a444, 0x1444a44, 0x1444a44, 0x1444a44,
- 0x1444a44, 0x1444a44, 0x1444a44, 0x1444a44, 0x1444a44, 0x11444a2f, 0x11444a2f, (1U<<31) | 38,
- (1U<<31) | 38, 0x0, 0x0, 0x0, 0x42f1, 0x2f2f, 0x7777, 0x7777,
- 0x7777, 0x7777, 0x4439, 0x4439, 0x4474, 0x7739, 0x7739, 0x7769,
- 0x5, (1U<<31) | 376, 0x2f2f2f2f, (1U<<31) | 58, (1U<<31) | 48, 0x444, (1U<<31) | 119, (1U<<31) | 119,
- (1U<<31) | 119, 0x444, 0x444, (1U<<31) | 4421, 0x555, 0x50, (1U<<31) | 0, (1U<<31) | 14,
+ 0x2e2ee0, 0x2ee2e2e0, 0x1f, 0x42e2e0, (1U<<31) | 6084, 0x2e2e2e0, 0x4452e0, 0x54452e0,
+ 0x44552e0, (1U<<31) | 4839, (1U<<31) | 4840, 0xf1, 0x4f4f, 0x4f50, 0x4f50, 0x1f2e2e,
+ 0x2e, (1U<<31) | 6084, 0x42e2e2e, 0x2f2f, 0x2f2f, 0x2f2f, 0x42e0, (1U<<31) | 90,
+ (1U<<31) | 847, (1U<<31) | 857, (1U<<31) | 869, (1U<<31) | 99, (1U<<31) | 110, 0x2f2f2f, 0x2f2f2f, (1U<<31) | 184,
+ (1U<<31) | 4929, (1U<<31) | 184, (1U<<31) | 4929, 0x19f24f0, 0x49f24f0, 0x2f2f2f, 0x2f2f2f, 0x2f2f,
+ 0x2ee2ee0, 0x2ee2ee0, 0x2ee2ee0, 0x2ee2ee0, 0x2e2e, 0x2e0, 0x2e, 0x2e2e,
+ (1U<<31) | 6084, 0x2ee2ee0, 0x2ee0, 0x2e2ee2e, 0x2ee2e, 0x2ee2e, 0x2ee2ee0, 0x2e0,
+ 0x2e2e, 0x2e2e, 0x2e2e, 0x2e2e, 0x2e2e, 0x2e2e, 0x2e2e, 0x2e2ee0,
+ 0x2e2ee2e, 0x2e4, 0x2e4, 0x2e2e, 0x2e2e, 0x2e2e, 0x111cf1f, 0x40,
+ 0x2f2f2f, 0x42f2f, 0x4442e0, (1U<<31) | 1674, (1U<<31) | 6034, 0x5, 0x42e, 0x2f2f,
+ 0x2f2f, 0x1f1f1f, (1U<<31) | 155, 0x2e4, 0x0, 0x42e0, 0x42e4, 0x2f2f,
+ 0x41f1f1f, (1U<<31) | 155, 0x2e, 0x2f2f, 0xf0f, 0x1f1f1f, (1U<<31) | 155, 0x2e,
+ 0x2ee2e0, 0x2e0, 0x2e, 0x4f4f, 0x2e, 0x0, 0x2f2f, (1U<<31) | 6043,
+ (1U<<31) | 6038, 0x1f1f1f, (1U<<31) | 155, 0x41f1f1f, (1U<<31) | 155, 0x1f1f1f, (1U<<31) | 155, 0x2e2e0,
+ 0x2e0, 0x2e0, 0x42e2e2e0, (1U<<31) | 166, 0x42e0, 0x42e30, 0x0, 0x444,
+ 0x444, 0x444, 0x444, 0x544, 0x444, 0x444, 0x544, 0x2c2c2c,
+ 0x2c2c2c, 0x2c2c, 0x2c2c, 0x4a44a4a, 0x44, 0x4a44a4a, 0x4a44a4a, 0x4a4a4a4a,
+ 0x4a4a4a, 0x4a4a4a4a, 0x4a4a4a4a, 0x4a4a4a, 0x4a4a4a4a, 0x40, 0x40, 0x5,
+ 0x40, 0x40, (1U<<31) | 752, 0x4f5, (1U<<31) | 752, 0x4f5, 0xf0f, (1U<<31) | 924,
+ 0x3f3f3f, 0x3f3f, 0x3f3f3f, 0xafaf1f, 0xafaf1f, 0xbf2f, 0xaf1f, 0xaf1f,
+ 0xaf1f, 0xaf1f, 0xaf1f, 0xaf1f, 0xaf1f, 0xaf1f, 0xbf3f, 0xaf1f,
+ 0xaf1f, 0x2f2f2f, 0x2f2f2f, 0x3f3f3f, 0xbf2f, 0x3f3f3f, 0xbf2f, 0x2f2f2f,
+ 0x2f2f2f, 0x3f3f3f, 0xbf2f, 0x3f3f3f, 0xbf2f, (1U<<31) | 5827, (1U<<31) | 5827, (1U<<31) | 5827,
+ (1U<<31) | 5827, 0x2f2f2f, 0x2f2f, 0x2f2f2f, 0x2f2f, 0x2f2f, 0x2f2f, 0x2f2f2f,
+ (1U<<31) | 5902, (1U<<31) | 5892, (1U<<31) | 5880, (1U<<31) | 5902, (1U<<31) | 5981, (1U<<31) | 5902, (1U<<31) | 5892, (1U<<31) | 5964,
+ (1U<<31) | 5892, (1U<<31) | 5880, (1U<<31) | 5943, (1U<<31) | 5880, 0x3f3f3f, (1U<<31) | 936, 0x552c, (1U<<31) | 924,
+ 0x3f3f, (1U<<31) | 1231, (1U<<31) | 924, 0x3f3f3f, 0xbf3f, 0xbf1f, 0xbf1f, 0x9f1f,
+ 0x9f1f, 0x9f1f, (1U<<31) | 5827, 0x3f3f3f, (1U<<31) | 931, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f,
+ 0xbf1f, 0x3f3f3f, 0x3f3f3f, 0xbf1f, (1U<<31) | 936, 0x1f1f, 0x1f1f1f, 0x1f1f1f,
+ (1U<<31) | 936, 0x445, 0x1f1f, 0x1f1f1f, 0x1f1f1f, (1U<<31) | 1231, (1U<<31) | 1231, 0x1f1f1f,
+ 0x1f1f1f, (1U<<31) | 1231, (1U<<31) | 1231, 0x1f1f1f, (1U<<31) | 197, (1U<<31) | 197, 0x3f3f3f, 0x1f1f1f,
+ 0x1f1f1f, (1U<<31) | 1801, 0xcf3f3f0, (1U<<31) | 5858, (1U<<31) | 5868, 0xcf3f3f0, (1U<<31) | 5910, (1U<<31) | 5858,
+ (1U<<31) | 5919, (1U<<31) | 5868, (1U<<31) | 5930, (1U<<31) | 924, 0x1f1f1f, 0x3f2c3f, 0x3f2c2c3f, (1U<<31) | 897,
+ (1U<<31) | 882, 0x3f2c3f3f, (1U<<31) | 908, (1U<<31) | 895, (1U<<31) | 880, 0x3f3f3f, 0xbf3f, 0xbf1f,
+ 0xbf1f, (1U<<31) | 5827, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, 0xbf1f, 0x3f3f3f,
+ 0x3f3f3f, 0xbf1f, (1U<<31) | 936, 0x1f1f1f, 0x1f1f1f, (1U<<31) | 1231, 0x1f1f1f, (1U<<31) | 1231,
+ 0x1f1f1f, (1U<<31) | 197, 0x3f3f, 0x3f3f3f, 0x1f1f1f, 0x3f3f, 0x1f1f1f, (1U<<31) | 1801,
+ 0x1f1f1f, 0x53f5bf3f, 0x4af1f, 0x4af1f, 0x7a3a, 0x49f2f, 0x49f2f, 0x3a7a,
+ 0x43f3f3f, 0x43f3f3f, 0x1f1f1f, 0x2f2f2f, 0x87, 0x545, 0x2e554, 0x4f54,
+ 0x2e554, 0x4f54, 0x1f1f1f, 0x4444, 0x4444, (1U<<31) | 120, (1U<<31) | 120, 0x1444a44,
+ 0x1444a44, 0x1444a444, 0x1444a44, 0x1444a44, 0x1444a44, 0x1444a44, 0x1444a44, 0x1444a44,
+ 0x1444a44, 0x1444a44, 0x11444a2f, 0x11444a2f, (1U<<31) | 50, (1U<<31) | 50, 0x0, 0x0,
+ 0x0, 0x42f1, 0x2f2f, 0x7777, 0x7777, 0x7777, 0x7777, 0x4439,
+ 0x4439, 0x4474, 0x7739, 0x7739, 0x7769, 0x5, (1U<<31) | 388, 0x2f2f2f2f,
+ (1U<<31) | 70, (1U<<31) | 60, 0x14f4, 0x444, 0x14f4, (1U<<31) | 141, (1U<<31) | 141, (1U<<31) | 141,
+ (1U<<31) | 24, (1U<<31) | 24, 0x444, 0x444, (1U<<31) | 4960, 0x50, (1U<<31) | 0, (1U<<31) | 14,
0x42f2f5, 0x777, 0x1769697, 0x2f2f2f2f, 0x2f2f2f2f, 0x777, 0x2f2f, 0xaf1f,
- 0x2f2f, 0x4, 0x41f1f5, (1U<<31) | 128, 0x515, (1U<<31) | 3216, (1U<<31) | 3240, (1U<<31) | 3240,
- (1U<<31) | 3268, (1U<<31) | 3300, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3216, (1U<<31) | 3240, (1U<<31) | 3240,
- (1U<<31) | 3268, (1U<<31) | 3300, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3214, (1U<<31) | 3238, (1U<<31) | 3238,
- (1U<<31) | 3266, (1U<<31) | 3298, (1U<<31) | 3266, (1U<<31) | 3266, (1U<<31) | 3266, (1U<<31) | 3216, (1U<<31) | 3240, (1U<<31) | 3240,
- (1U<<31) | 3268, (1U<<31) | 3300, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3216, (1U<<31) | 3240, (1U<<31) | 3240,
- (1U<<31) | 3268, (1U<<31) | 3300, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3216, (1U<<31) | 3240, (1U<<31) | 3240,
- (1U<<31) | 3268, (1U<<31) | 3300, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3216, (1U<<31) | 3240, (1U<<31) | 3240,
- (1U<<31) | 3268, (1U<<31) | 3300, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3216, (1U<<31) | 3240, (1U<<31) | 3240,
- (1U<<31) | 3268, (1U<<31) | 3300, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3216, (1U<<31) | 3240, (1U<<31) | 3240,
- (1U<<31) | 3268, (1U<<31) | 3300, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3216, (1U<<31) | 3240, (1U<<31) | 3240,
- (1U<<31) | 3268, (1U<<31) | 3300, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3216, (1U<<31) | 3240, (1U<<31) | 3240,
- (1U<<31) | 3268, (1U<<31) | 3300, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3216, (1U<<31) | 3240, (1U<<31) | 3240,
- (1U<<31) | 3268, (1U<<31) | 3300, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3216, (1U<<31) | 3240, (1U<<31) | 3240,
- (1U<<31) | 3268, (1U<<31) | 3300, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 3268, (1U<<31) | 1636, (1U<<31) | 1700, (1U<<31) | 2025,
- (1U<<31) | 2277, (1U<<31) | 2277, (1U<<31) | 2673, (1U<<31) | 2673, (1U<<31) | 2296, (1U<<31) | 2694, (1U<<31) | 2694, (1U<<31) | 2277,
- (1U<<31) | 2042, (1U<<31) | 2296, (1U<<31) | 2296, (1U<<31) | 1667, (1U<<31) | 1735, (1U<<31) | 1988, (1U<<31) | 2236, (1U<<31) | 2236,
- (1U<<31) | 2628, (1U<<31) | 2628, (1U<<31) | 2256, (1U<<31) | 2650, (1U<<31) | 2650, (1U<<31) | 2236, (1U<<31) | 2006, (1U<<31) | 2256,
- (1U<<31) | 2256, (1U<<31) | 1735, (1U<<31) | 1811, (1U<<31) | 1811, (1U<<31) | 1753, (1U<<31) | 1831, (1U<<31) | 1831, (1U<<31) | 1735,
- (1U<<31) | 1735, (1U<<31) | 1811, (1U<<31) | 1811, (1U<<31) | 1753, (1U<<31) | 1831, (1U<<31) | 1831, (1U<<31) | 1667, (1U<<31) | 1735,
- (1U<<31) | 1735, (1U<<31) | 1683, (1U<<31) | 1753, (1U<<31) | 1753, (1U<<31) | 1683, (1U<<31) | 1753, (1U<<31) | 1753, (1U<<31) | 1700,
- (1U<<31) | 1772, (1U<<31) | 1772, (1U<<31) | 1717, (1U<<31) | 1791, (1U<<31) | 1791, (1U<<31) | 1700, (1U<<31) | 1700, (1U<<31) | 1772,
- (1U<<31) | 1772, (1U<<31) | 1717, (1U<<31) | 1791, (1U<<31) | 1791, (1U<<31) | 1636, (1U<<31) | 1700, (1U<<31) | 1700, (1U<<31) | 1651,
- (1U<<31) | 1717, (1U<<31) | 1717, (1U<<31) | 1651, (1U<<31) | 1717, (1U<<31) | 1717, (1U<<31) | 1580, (1U<<31) | 1636, (1U<<31) | 1636,
- (1U<<31) | 1700, (1U<<31) | 1700, (1U<<31) | 1700, (1U<<31) | 3228, (1U<<31) | 3228, (1U<<31) | 3228, (1U<<31) | 3228, (1U<<31) | 3228,
- (1U<<31) | 3228, (1U<<31) | 3228, (1U<<31) | 3228, (1U<<31) | 3228, (1U<<31) | 3254, (1U<<31) | 3254, (1U<<31) | 3284, (1U<<31) | 3318,
- (1U<<31) | 3284, (1U<<31) | 3284, (1U<<31) | 3284, (1U<<31) | 3254, (1U<<31) | 3284, (1U<<31) | 3284, (1U<<31) | 3318, (1U<<31) | 3318,
- (1U<<31) | 3318, (1U<<31) | 1580, (1U<<31) | 1636, (1U<<31) | 1636, (1U<<31) | 1700, (1U<<31) | 1700, (1U<<31) | 1885, (1U<<31) | 2025,
- (1U<<31) | 2025, (1U<<31) | 2277, (1U<<31) | 2277, (1U<<31) | 2025, (1U<<31) | 2277, (1U<<31) | 2277, (1U<<31) | 2673, (1U<<31) | 2673,
- (1U<<31) | 2673, (1U<<31) | 2042, (1U<<31) | 2296, (1U<<31) | 2296, (1U<<31) | 2694, (1U<<31) | 2694, (1U<<31) | 2694, (1U<<31) | 2277,
- (1U<<31) | 1900, (1U<<31) | 2042, (1U<<31) | 2042, (1U<<31) | 2296, (1U<<31) | 2296, (1U<<31) | 2296, (1U<<31) | 1607, (1U<<31) | 1667,
- (1U<<31) | 1667, (1U<<31) | 1735, (1U<<31) | 1735, (1U<<31) | 1852, (1U<<31) | 1988, (1U<<31) | 1988, (1U<<31) | 2236, (1U<<31) | 2236,
- (1U<<31) | 1988, (1U<<31) | 2236, (1U<<31) | 2236, (1U<<31) | 2628, (1U<<31) | 2628, (1U<<31) | 2628, (1U<<31) | 2006, (1U<<31) | 2256,
- (1U<<31) | 2256, (1U<<31) | 2650, (1U<<31) | 2650, (1U<<31) | 2650, (1U<<31) | 2236, (1U<<31) | 1868, (1U<<31) | 2006, (1U<<31) | 2006,
- (1U<<31) | 2256, (1U<<31) | 2256, (1U<<31) | 2256, (1U<<31) | 1951, (1U<<31) | 2099, (1U<<31) | 2187, (1U<<31) | 2455, (1U<<31) | 2567,
- (1U<<31) | 2099, (1U<<31) | 2359, (1U<<31) | 2455, (1U<<31) | 2771, (1U<<31) | 2891, (1U<<31) | 2771, (1U<<31) | 2119, (1U<<31) | 2381,
- (1U<<31) | 2481, (1U<<31) | 2799, (1U<<31) | 2923, (1U<<31) | 2799, (1U<<31) | 2455, (1U<<31) | 1969, (1U<<31) | 2119, (1U<<31) | 2211,
- (1U<<31) | 2481, (1U<<31) | 2597, (1U<<31) | 2481, (1U<<31) | 1667, (1U<<31) | 1735, (1U<<31) | 1735, (1U<<31) | 1811, (1U<<31) | 1811,
- (1U<<31) | 1811, (1U<<31) | 1683, (1U<<31) | 1753, (1U<<31) | 1753, (1U<<31) | 1831, (1U<<31) | 1831, (1U<<31) | 1831, (1U<<31) | 1735,
- (1U<<31) | 1951, (1U<<31) | 2099, (1U<<31) | 2187, (1U<<31) | 2455, (1U<<31) | 2567, (1U<<31) | 2099, (1U<<31) | 2359, (1U<<31) | 2455,
- (1U<<31) | 2771, (1U<<31) | 2891, (1U<<31) | 2771, (1U<<31) | 2119, (1U<<31) | 2381, (1U<<31) | 2481, (1U<<31) | 2799, (1U<<31) | 2923,
- (1U<<31) | 2799, (1U<<31) | 2455, (1U<<31) | 1969, (1U<<31) | 2119, (1U<<31) | 2211, (1U<<31) | 2481, (1U<<31) | 2597, (1U<<31) | 2481,
- (1U<<31) | 1667, (1U<<31) | 1735, (1U<<31) | 1735, (1U<<31) | 1811, (1U<<31) | 1811, (1U<<31) | 1811, (1U<<31) | 1683, (1U<<31) | 1753,
- (1U<<31) | 1753, (1U<<31) | 1831, (1U<<31) | 1831, (1U<<31) | 1831, (1U<<31) | 1607, (1U<<31) | 1667, (1U<<31) | 1667, (1U<<31) | 1735,
- (1U<<31) | 1735, (1U<<31) | 1735, (1U<<31) | 1621, (1U<<31) | 1683, (1U<<31) | 1683, (1U<<31) | 1753, (1U<<31) | 1753, (1U<<31) | 1753,
- (1U<<31) | 1621, (1U<<31) | 1683, (1U<<31) | 1683, (1U<<31) | 1753, (1U<<31) | 1753, (1U<<31) | 1753, (1U<<31) | 1916, (1U<<31) | 2060,
- (1U<<31) | 2140, (1U<<31) | 2404, (1U<<31) | 2508, (1U<<31) | 2060, (1U<<31) | 2316, (1U<<31) | 2404, (1U<<31) | 2716, (1U<<31) | 2828,
- (1U<<31) | 2716, (1U<<31) | 2079, (1U<<31) | 2337, (1U<<31) | 2429, (1U<<31) | 2743, (1U<<31) | 2859, (1U<<31) | 2743, (1U<<31) | 2404,
- (1U<<31) | 1933, (1U<<31) | 2079, (1U<<31) | 2163, (1U<<31) | 2429, (1U<<31) | 2537, (1U<<31) | 2429, (1U<<31) | 1636, (1U<<31) | 1700,
- (1U<<31) | 1700, (1U<<31) | 1772, (1U<<31) | 1772, (1U<<31) | 1772, (1U<<31) | 1651, (1U<<31) | 1717, (1U<<31) | 1717, (1U<<31) | 1791,
- (1U<<31) | 1791, (1U<<31) | 1791, (1U<<31) | 1700, (1U<<31) | 1916, (1U<<31) | 2060, (1U<<31) | 2140, (1U<<31) | 2404, (1U<<31) | 2508,
- (1U<<31) | 2060, (1U<<31) | 2316, (1U<<31) | 2404, (1U<<31) | 2716, (1U<<31) | 2828, (1U<<31) | 2716, (1U<<31) | 2079, (1U<<31) | 2337,
- (1U<<31) | 2429, (1U<<31) | 2743, (1U<<31) | 2859, (1U<<31) | 2743, (1U<<31) | 2404, (1U<<31) | 1933, (1U<<31) | 2079, (1U<<31) | 2163,
- (1U<<31) | 2429, (1U<<31) | 2537, (1U<<31) | 2429, (1U<<31) | 1636, (1U<<31) | 1700, (1U<<31) | 1700, (1U<<31) | 1772, (1U<<31) | 1772,
- (1U<<31) | 1772, (1U<<31) | 1651, (1U<<31) | 1717, (1U<<31) | 1717, (1U<<31) | 1791, (1U<<31) | 1791, (1U<<31) | 1791, (1U<<31) | 1580,
- (1U<<31) | 1636, (1U<<31) | 1636, (1U<<31) | 1700, (1U<<31) | 1700, (1U<<31) | 1700, (1U<<31) | 1593, (1U<<31) | 1651, (1U<<31) | 1651,
- (1U<<31) | 1717, (1U<<31) | 1717, (1U<<31) | 1717, (1U<<31) | 1593, (1U<<31) | 1651, (1U<<31) | 1651, (1U<<31) | 1717, (1U<<31) | 1717,
- (1U<<31) | 1717, (1U<<31) | 3227, (1U<<31) | 3253, (1U<<31) | 3253, (1U<<31) | 3283, (1U<<31) | 3317, (1U<<31) | 3283, (1U<<31) | 3283,
- (1U<<31) | 3283, (1U<<31) | 3253, (1U<<31) | 3283, (1U<<31) | 3283, (1U<<31) | 3317, (1U<<31) | 3317, (1U<<31) | 3317, (1U<<31) | 376,
- (1U<<31) | 376, 0x50, 0x440, 0x44447, 0x44477, 0x444777, (1U<<31) | 376, 0x10,
- 0x42f2f, 0x4444, 0x2f2f, 0x51, 0x444, 0x444, 0x14441f1f, 0x5455,
- 0x4a454a, 0x4444, 0x1, 0x5455, (1U<<31) | 376, (1U<<31) | 3128, (1U<<31) | 3128, (1U<<31) | 3126,
- (1U<<31) | 3128, (1U<<31) | 3128, (1U<<31) | 3128, (1U<<31) | 3128, (1U<<31) | 3128, (1U<<31) | 3128, (1U<<31) | 3128, (1U<<31) | 3128,
- 0x4444a0f, 0x4444a0f, 0x4444a0f0, 0x4444a0f0, 0x44444a0f, (1U<<31) | 3096, 0x2f2f, 0x77,
- 0x44, 0x444, 0x2f2f, 0x2f2f, 0x77, 0x0, 0x444a1f, 0x0,
- 0x0, 0x0, 0x0, 0x40, 0x5, 0x44, 0x40, 0x5,
- 0x5, 0x440, 0x440, 0x40, 0x40, 0x4444, 0x4444, 0x4444,
- 0x441f1f, 0x1439394, 0x14444, 0x14444, 0x1f1f1f, 0x1f1f, 0x2f2f, (1U<<31) | 3108,
- (1U<<31) | 3108, (1U<<31) | 3106, (1U<<31) | 3108, (1U<<31) | 3108, (1U<<31) | 3108, (1U<<31) | 3108, (1U<<31) | 3108, (1U<<31) | 3108,
- (1U<<31) | 3108, (1U<<31) | 3108, 0x44444a0f, 0x44444a0f, (1U<<31) | 3096, (1U<<31) | 3096, (1U<<31) | 3086, (1U<<31) | 3085,
- (1U<<31) | 25, (1U<<31) | 24, 0x42f2f, 0x441f1f, 0x1439394, 0x14444, 0x14444, 0x0,
- (1U<<31) | 108, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
- 0xf0f, 0x11, 0x4444, 0xf0f, 0x4444440, 0x4444440, 0x0, 0x444,
- 0x444, 0x444, 0x444, 0x444, 0x444, 0x40, 0x40, 0x40,
- 0x4, 0x40, 0x40, 0x4f4, (1U<<31) | 754, 0x2e440, 0x2e440, 0x2e440,
- 0x2e440, 0x4f4, (1U<<31) | 754, 0x4444440, 0x4444440, 0x444440, 0x444440, 0x444444,
- 0x444444, (1U<<31) | 3119, (1U<<31) | 3119, 0x2c2c2c, 0x2c2c2c, 0x2c2c, 0x2c2c, (1U<<31) | 5264,
- 0x4a44a4a, 0x44, 0x4a44a4a, 0x4a44a4a, 0x4a4a4a4a, 0x4a4a4a, 0x4a4a4a4a, 0x4a4a4a4a,
- 0x4a4a4a, 0x4a4a4a4a, (1U<<31) | 5264, 0x3f3f3f, 0x3f3f3f, 0x3f3f, 0xbfbf3f, 0xbfbf3f,
- 0x3f3f3f3f, 0x3f3f, 0xbf3f, 0xbf3f, 0x4af1f, 0x4af1f, 0x7a3a, 0x49f2f,
- 0x49f2f, 0x3a7a, 0xbf3f, 0xbf3f, 0xbf3f, 0xbf3f, 0xbf3f, 0xbf3f,
- 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, 0x4cf3f, (1U<<31) | 5339, (1U<<31) | 5329, (1U<<31) | 5317,
- (1U<<31) | 4172, (1U<<31) | 4172, (1U<<31) | 3033, (1U<<31) | 4161, (1U<<31) | 4161, (1U<<31) | 3015, (1U<<31) | 4148, (1U<<31) | 4148,
- (1U<<31) | 2993, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, (1U<<31) | 977,
- (1U<<31) | 977, (1U<<31) | 977, 0x3f3f3f, 0xbf3f3f, 0xbf3f3f, 0x3f3f3f, 0xbf3f, 0xbf3f,
- 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, 0x3f3f, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f,
- (1U<<31) | 977, (1U<<31) | 960, (1U<<31) | 960, (1U<<31) | 960, 0x3f3f, 0x3f3f3f, (1U<<31) | 965, (1U<<31) | 965,
- (1U<<31) | 965, 0x3f3f3f, 0x3f3f3f, (1U<<31) | 965, (1U<<31) | 965, (1U<<31) | 965, 0x3f3f3f, 0x3f3f3f,
- 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, (1U<<31) | 965, 0x3f3f, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f,
- 0x3f3f, 0x3f3f, 0x2f2f, 0x3f3f, 0x3f3f, 0x3f3f, (1U<<31) | 965, 0x3f3f3f,
- 0x3f3f3f, 0x3f3f, 0x3f3f3f, (1U<<31) | 965, 0x3f3f3f3f, 0x3f3f3f, 0x3f3f3f, 0x4bf4f0,
- 0xbfbf4f0, (1U<<31) | 5273, (1U<<31) | 5283, 0x4bfbf4f0, (1U<<31) | 3503, (1U<<31) | 4052, (1U<<31) | 3513, (1U<<31) | 4063,
- (1U<<31) | 3525, 0x2b2b2b, 0x2b2b2b2b, (1U<<31) | 666, (1U<<31) | 664, 0x2b2b2b2b, (1U<<31) | 666, (1U<<31) | 664,
- (1U<<31) | 662, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
- 0x444, 0x444, 0x444, 0x444, 0x444, 0x40, 0x444, 0x444,
- 0x444, 0x444, 0x444, 0x444, 0x4444, 0x4444, 0x4444, 0x4444,
- 0x5445, 0x5445, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444,
- 0x5445, 0x5445, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
+ 0x2f2f, 0x4, 0x41f1f5, (1U<<31) | 150, 0x515, (1U<<31) | 3443, (1U<<31) | 3477, (1U<<31) | 3477,
+ (1U<<31) | 3517, (1U<<31) | 3563, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3443, (1U<<31) | 3477, (1U<<31) | 3477,
+ (1U<<31) | 3517, (1U<<31) | 3563, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3441, (1U<<31) | 3475, (1U<<31) | 3475,
+ (1U<<31) | 3515, (1U<<31) | 3561, (1U<<31) | 3515, (1U<<31) | 3515, (1U<<31) | 3515, (1U<<31) | 3443, (1U<<31) | 3477, (1U<<31) | 3477,
+ (1U<<31) | 3517, (1U<<31) | 3563, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3443, (1U<<31) | 3477, (1U<<31) | 3477,
+ (1U<<31) | 3517, (1U<<31) | 3563, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3443, (1U<<31) | 3477, (1U<<31) | 3477,
+ (1U<<31) | 3517, (1U<<31) | 3563, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3443, (1U<<31) | 3477, (1U<<31) | 3477,
+ (1U<<31) | 3517, (1U<<31) | 3563, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3443, (1U<<31) | 3477, (1U<<31) | 3477,
+ (1U<<31) | 3517, (1U<<31) | 3563, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3443, (1U<<31) | 3477, (1U<<31) | 3477,
+ (1U<<31) | 3517, (1U<<31) | 3563, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3443, (1U<<31) | 3477, (1U<<31) | 3477,
+ (1U<<31) | 3517, (1U<<31) | 3563, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3443, (1U<<31) | 3477, (1U<<31) | 3477,
+ (1U<<31) | 3517, (1U<<31) | 3563, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3443, (1U<<31) | 3477, (1U<<31) | 3477,
+ (1U<<31) | 3517, (1U<<31) | 3563, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3443, (1U<<31) | 3477, (1U<<31) | 3477,
+ (1U<<31) | 3517, (1U<<31) | 3563, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 3517, (1U<<31) | 1863, (1U<<31) | 1927, (1U<<31) | 2252,
+ (1U<<31) | 2504, (1U<<31) | 2504, (1U<<31) | 2900, (1U<<31) | 2900, (1U<<31) | 2523, (1U<<31) | 2921, (1U<<31) | 2921, (1U<<31) | 2504,
+ (1U<<31) | 2269, (1U<<31) | 2523, (1U<<31) | 2523, (1U<<31) | 1894, (1U<<31) | 1962, (1U<<31) | 2215, (1U<<31) | 2463, (1U<<31) | 2463,
+ (1U<<31) | 2855, (1U<<31) | 2855, (1U<<31) | 2483, (1U<<31) | 2877, (1U<<31) | 2877, (1U<<31) | 2463, (1U<<31) | 2233, (1U<<31) | 2483,
+ (1U<<31) | 2483, (1U<<31) | 1962, (1U<<31) | 2038, (1U<<31) | 2038, (1U<<31) | 1980, (1U<<31) | 2058, (1U<<31) | 2058, (1U<<31) | 1962,
+ (1U<<31) | 1962, (1U<<31) | 2038, (1U<<31) | 2038, (1U<<31) | 1980, (1U<<31) | 2058, (1U<<31) | 2058, (1U<<31) | 1894, (1U<<31) | 1962,
+ (1U<<31) | 1962, (1U<<31) | 1910, (1U<<31) | 1980, (1U<<31) | 1980, (1U<<31) | 1910, (1U<<31) | 1980, (1U<<31) | 1980, (1U<<31) | 1927,
+ (1U<<31) | 1999, (1U<<31) | 1999, (1U<<31) | 1944, (1U<<31) | 2018, (1U<<31) | 2018, (1U<<31) | 1927, (1U<<31) | 1927, (1U<<31) | 1999,
+ (1U<<31) | 1999, (1U<<31) | 1944, (1U<<31) | 2018, (1U<<31) | 2018, (1U<<31) | 1863, (1U<<31) | 1927, (1U<<31) | 1927, (1U<<31) | 1878,
+ (1U<<31) | 1944, (1U<<31) | 1944, (1U<<31) | 1878, (1U<<31) | 1944, (1U<<31) | 1944, (1U<<31) | 1807, (1U<<31) | 1863, (1U<<31) | 1863,
+ (1U<<31) | 1927, (1U<<31) | 1927, (1U<<31) | 1927, (1U<<31) | 3465, (1U<<31) | 3465, (1U<<31) | 3465, (1U<<31) | 3465, (1U<<31) | 3465,
+ (1U<<31) | 3465, (1U<<31) | 3465, (1U<<31) | 3465, (1U<<31) | 3454, (1U<<31) | 3490, (1U<<31) | 3490, (1U<<31) | 3532, (1U<<31) | 3580,
+ (1U<<31) | 3532, (1U<<31) | 3532, (1U<<31) | 3532, (1U<<31) | 3490, (1U<<31) | 3532, (1U<<31) | 3532, (1U<<31) | 3580, (1U<<31) | 3580,
+ (1U<<31) | 3580, (1U<<31) | 1807, (1U<<31) | 1863, (1U<<31) | 1863, (1U<<31) | 1927, (1U<<31) | 1927, (1U<<31) | 2112, (1U<<31) | 2252,
+ (1U<<31) | 2252, (1U<<31) | 2504, (1U<<31) | 2504, (1U<<31) | 2252, (1U<<31) | 2504, (1U<<31) | 2504, (1U<<31) | 2900, (1U<<31) | 2900,
+ (1U<<31) | 2900, (1U<<31) | 2269, (1U<<31) | 2523, (1U<<31) | 2523, (1U<<31) | 2921, (1U<<31) | 2921, (1U<<31) | 2921, (1U<<31) | 2504,
+ (1U<<31) | 2127, (1U<<31) | 2269, (1U<<31) | 2269, (1U<<31) | 2523, (1U<<31) | 2523, (1U<<31) | 2523, (1U<<31) | 1834, (1U<<31) | 1894,
+ (1U<<31) | 1894, (1U<<31) | 1962, (1U<<31) | 1962, (1U<<31) | 2079, (1U<<31) | 2215, (1U<<31) | 2215, (1U<<31) | 2463, (1U<<31) | 2463,
+ (1U<<31) | 2215, (1U<<31) | 2463, (1U<<31) | 2463, (1U<<31) | 2855, (1U<<31) | 2855, (1U<<31) | 2855, (1U<<31) | 2233, (1U<<31) | 2483,
+ (1U<<31) | 2483, (1U<<31) | 2877, (1U<<31) | 2877, (1U<<31) | 2877, (1U<<31) | 2463, (1U<<31) | 2095, (1U<<31) | 2233, (1U<<31) | 2233,
+ (1U<<31) | 2483, (1U<<31) | 2483, (1U<<31) | 2483, (1U<<31) | 2178, (1U<<31) | 2326, (1U<<31) | 2414, (1U<<31) | 2682, (1U<<31) | 2794,
+ (1U<<31) | 2326, (1U<<31) | 2586, (1U<<31) | 2682, (1U<<31) | 2998, (1U<<31) | 3118, (1U<<31) | 2998, (1U<<31) | 2346, (1U<<31) | 2608,
+ (1U<<31) | 2708, (1U<<31) | 3026, (1U<<31) | 3150, (1U<<31) | 3026, (1U<<31) | 2682, (1U<<31) | 2196, (1U<<31) | 2346, (1U<<31) | 2438,
+ (1U<<31) | 2708, (1U<<31) | 2824, (1U<<31) | 2708, (1U<<31) | 1894, (1U<<31) | 1962, (1U<<31) | 1962, (1U<<31) | 2038, (1U<<31) | 2038,
+ (1U<<31) | 2038, (1U<<31) | 1910, (1U<<31) | 1980, (1U<<31) | 1980, (1U<<31) | 2058, (1U<<31) | 2058, (1U<<31) | 2058, (1U<<31) | 1962,
+ (1U<<31) | 2178, (1U<<31) | 2326, (1U<<31) | 2414, (1U<<31) | 2682, (1U<<31) | 2794, (1U<<31) | 2326, (1U<<31) | 2586, (1U<<31) | 2682,
+ (1U<<31) | 2998, (1U<<31) | 3118, (1U<<31) | 2998, (1U<<31) | 2346, (1U<<31) | 2608, (1U<<31) | 2708, (1U<<31) | 3026, (1U<<31) | 3150,
+ (1U<<31) | 3026, (1U<<31) | 2682, (1U<<31) | 2196, (1U<<31) | 2346, (1U<<31) | 2438, (1U<<31) | 2708, (1U<<31) | 2824, (1U<<31) | 2708,
+ (1U<<31) | 1894, (1U<<31) | 1962, (1U<<31) | 1962, (1U<<31) | 2038, (1U<<31) | 2038, (1U<<31) | 2038, (1U<<31) | 1910, (1U<<31) | 1980,
+ (1U<<31) | 1980, (1U<<31) | 2058, (1U<<31) | 2058, (1U<<31) | 2058, (1U<<31) | 1834, (1U<<31) | 1894, (1U<<31) | 1894, (1U<<31) | 1962,
+ (1U<<31) | 1962, (1U<<31) | 1962, (1U<<31) | 1848, (1U<<31) | 1910, (1U<<31) | 1910, (1U<<31) | 1980, (1U<<31) | 1980, (1U<<31) | 1980,
+ (1U<<31) | 1848, (1U<<31) | 1910, (1U<<31) | 1910, (1U<<31) | 1980, (1U<<31) | 1980, (1U<<31) | 1980, (1U<<31) | 2143, (1U<<31) | 2287,
+ (1U<<31) | 2367, (1U<<31) | 2631, (1U<<31) | 2735, (1U<<31) | 2287, (1U<<31) | 2543, (1U<<31) | 2631, (1U<<31) | 2943, (1U<<31) | 3055,
+ (1U<<31) | 2943, (1U<<31) | 2306, (1U<<31) | 2564, (1U<<31) | 2656, (1U<<31) | 2970, (1U<<31) | 3086, (1U<<31) | 2970, (1U<<31) | 2631,
+ (1U<<31) | 2160, (1U<<31) | 2306, (1U<<31) | 2390, (1U<<31) | 2656, (1U<<31) | 2764, (1U<<31) | 2656, (1U<<31) | 1863, (1U<<31) | 1927,
+ (1U<<31) | 1927, (1U<<31) | 1999, (1U<<31) | 1999, (1U<<31) | 1999, (1U<<31) | 1878, (1U<<31) | 1944, (1U<<31) | 1944, (1U<<31) | 2018,
+ (1U<<31) | 2018, (1U<<31) | 2018, (1U<<31) | 1927, (1U<<31) | 2143, (1U<<31) | 2287, (1U<<31) | 2367, (1U<<31) | 2631, (1U<<31) | 2735,
+ (1U<<31) | 2287, (1U<<31) | 2543, (1U<<31) | 2631, (1U<<31) | 2943, (1U<<31) | 3055, (1U<<31) | 2943, (1U<<31) | 2306, (1U<<31) | 2564,
+ (1U<<31) | 2656, (1U<<31) | 2970, (1U<<31) | 3086, (1U<<31) | 2970, (1U<<31) | 2631, (1U<<31) | 2160, (1U<<31) | 2306, (1U<<31) | 2390,
+ (1U<<31) | 2656, (1U<<31) | 2764, (1U<<31) | 2656, (1U<<31) | 1863, (1U<<31) | 1927, (1U<<31) | 1927, (1U<<31) | 1999, (1U<<31) | 1999,
+ (1U<<31) | 1999, (1U<<31) | 1878, (1U<<31) | 1944, (1U<<31) | 1944, (1U<<31) | 2018, (1U<<31) | 2018, (1U<<31) | 2018, (1U<<31) | 1807,
+ (1U<<31) | 1863, (1U<<31) | 1863, (1U<<31) | 1927, (1U<<31) | 1927, (1U<<31) | 1927, (1U<<31) | 1820, (1U<<31) | 1878, (1U<<31) | 1878,
+ (1U<<31) | 1944, (1U<<31) | 1944, (1U<<31) | 1944, (1U<<31) | 1820, (1U<<31) | 1878, (1U<<31) | 1878, (1U<<31) | 1944, (1U<<31) | 1944,
+ (1U<<31) | 1944, (1U<<31) | 3464, (1U<<31) | 3502, (1U<<31) | 3502, (1U<<31) | 3546, (1U<<31) | 3596, (1U<<31) | 3546, (1U<<31) | 3546,
+ (1U<<31) | 3546, (1U<<31) | 3502, (1U<<31) | 3546, (1U<<31) | 3546, (1U<<31) | 3596, (1U<<31) | 3596, (1U<<31) | 3596, (1U<<31) | 388,
+ (1U<<31) | 388, 0x50, 0x440, 0x44447, 0x44477, 0x414477, 0x444777, 0x4144776,
+ (1U<<31) | 388, 0x10, 0x42f2f, 0x4444, 0x2f2f, 0x51, 0x444, 0x444,
+ 0x14441f1f, 0x5455, 0x4a454a, 0x4444, 0x1, 0x5455, (1U<<31) | 388, (1U<<31) | 3355,
+ (1U<<31) | 3355, (1U<<31) | 3353, (1U<<31) | 3355, (1U<<31) | 3355, (1U<<31) | 3355, (1U<<31) | 3355, (1U<<31) | 3355, (1U<<31) | 3355,
+ (1U<<31) | 3355, (1U<<31) | 3355, 0x4444a0f, 0x4444a0f, 0x4444a0f0, 0x4444a0f0, 0x44444a0f, (1U<<31) | 3323,
+ 0x2f2f, 0x77, 0x44, 0x444, 0x2f2f, 0x2f2f, 0x77, 0x0,
+ 0x444a0f, 0x0, 0x0, 0x0, 0x0, 0x40, 0x5, 0x44,
+ 0x40, 0x5, 0x5, 0x440, 0x440, 0x40, 0x40, 0x4444,
+ 0x4444, 0x4444, 0x441f1f, 0x1439394, 0x14444, 0x14444, 0x1f1f1f, 0x1f1f,
+ 0x2f2f, (1U<<31) | 3335, (1U<<31) | 3335, (1U<<31) | 3333, (1U<<31) | 3335, (1U<<31) | 3335, (1U<<31) | 3335, (1U<<31) | 3335,
+ (1U<<31) | 3335, (1U<<31) | 3335, (1U<<31) | 3335, (1U<<31) | 3335, 0x44444a0f, 0x44444a0f, (1U<<31) | 3323, (1U<<31) | 3323,
+ (1U<<31) | 3313, (1U<<31) | 3312, (1U<<31) | 37, (1U<<31) | 36, 0x42f2f, 0x441f1f, 0x1439394, 0x14444,
+ 0x14444, 0x0, (1U<<31) | 130, 0x0, 0x4, 0x4, 0x4, 0x4,
+ 0x4, 0x4, 0xf0f, 0x11, 0x4444, 0xf0f, 0x4444440, 0x4444440,
+ 0x0, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x40,
+ 0x40, 0x40, 0x4, 0x40, 0x40, 0x4f4, (1U<<31) | 736, 0x2e440,
+ 0x2e440, 0x2e440, 0x2e440, 0x4f4, (1U<<31) | 736, 0x4444440, 0x4444440, 0x444440,
+ 0x444440, 0x444444, 0x444444, (1U<<31) | 3346, (1U<<31) | 3346, 0x2c2c2c, 0x2c2c2c, 0x2c2c,
+ 0x2c2c, (1U<<31) | 5827, 0x4a44a4a, 0x44, 0x4a44a4a, 0x4a44a4a, 0x4a4a4a4a, 0x4a4a4a,
+ 0x4a4a4a4a, 0x4a4a4a4a, 0x4a4a4a, 0x4a4a4a4a, (1U<<31) | 5827, 0x3f3f3f, 0x3f3f3f, 0x3f3f,
+ 0xbfbf3f, 0xbfbf3f, 0x3f3f3f3f, 0x3f3f, 0xbf3f, 0xbf3f, 0x4af1f, 0x4af1f,
+ 0x7a3a, 0x49f2f, 0x49f2f, 0x3a7a, 0xbf3f, 0xbf3f, 0xbf3f, 0xbf3f,
+ 0xbf3f, 0xbf3f, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, 0x4cf3f, (1U<<31) | 5902,
+ (1U<<31) | 5892, (1U<<31) | 5880, (1U<<31) | 4724, (1U<<31) | 4724, (1U<<31) | 3260, (1U<<31) | 4713, (1U<<31) | 4713, (1U<<31) | 3242,
+ (1U<<31) | 4700, (1U<<31) | 4700, (1U<<31) | 3220, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f,
+ 0x3f3f3f, (1U<<31) | 936, (1U<<31) | 936, (1U<<31) | 936, 0x3f3f3f, 0xbf3f3f, 0xbf3f3f, 0x3f3f3f,
+ 0xbf3f, 0xbf3f, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, 0x3f3f, 0x3f3f3f,
+ 0x3f3f3f, 0x3f3f3f, (1U<<31) | 936, (1U<<31) | 919, (1U<<31) | 919, (1U<<31) | 919, 0x3f3f, 0x3f3f3f,
+ (1U<<31) | 924, (1U<<31) | 924, (1U<<31) | 924, 0x3f3f3f, 0x3f3f3f, (1U<<31) | 924, (1U<<31) | 924, (1U<<31) | 924,
+ 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, 0x3f3f3f, (1U<<31) | 924, 0x3f3f, 0x3f3f3f,
+ 0x3f3f3f, 0x3f3f3f, 0x3f3f, 0x3f3f, 0x2f2f, 0x3f3f, 0x3f3f, 0x3f3f,
+ (1U<<31) | 924, 0x3f3f3f, 0x3f3f3f, 0x3f3f, 0x3f3f3f, (1U<<31) | 924, 0x3f3f3f3f, 0x3f3f3f,
+ 0x3f3f3f, 0x4bf4f0, 0xbfbf4f0, (1U<<31) | 5836, (1U<<31) | 5846, 0x4bfbf4f0, (1U<<31) | 3837, (1U<<31) | 4604,
+ (1U<<31) | 3847, (1U<<31) | 4615, (1U<<31) | 3859, 0x2b2b2b, 0x2b2b2b2b, (1U<<31) | 648, (1U<<31) | 646, 0x2b2b2b2b,
+ (1U<<31) | 648, (1U<<31) | 646, (1U<<31) | 644, 0x444, 0x444, 0x444, 0x444, 0x444,
+ 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x40,
+ 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x4444, 0x4444,
+ 0x4444, 0x4444, 0x5445, 0x5445, 0x4444, 0x4444, 0x4444, 0x4444,
+ 0x4444, 0x4444, 0x5445, 0x5445, 0x444, 0x444, 0x444, 0x444,
0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
- 0x444, 0x444, 0x2e440, 0x2e440, 0x2e440, 0x2e440, 0x4f44, 0x2e444,
- 0x4f44, 0x2e444, 0x444, 0x44, 0x444, 0x444, 0x444, 0x444,
- 0x444, 0x444, 0x444, 0x444, 0x444, 0x40, 0x444, 0x444,
- 0x444, 0x444, 0x444, 0x444, 0x444, 0x4444, 0x444, 0x444,
- 0x444, 0x444, 0x444, 0x444, 0x44, 0x2f7, 0x2f7, 0x52e5,
- 0x52e5, 0x52e5, 0x555, 0x44, 0x55, 0x44, 0x444, 0x444,
- 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
- 0x444, 0x444, 0x444, 0x444, 0x555, 0x555, 0x444, 0x545,
- 0x444, 0x444, 0x555, 0x44, 0x44, 0x444, 0x444, 0x444,
- 0x444, 0x445, 0x445, 0x444, 0x555, 0x444, 0x555, 0x444,
- 0x555, 0x444, 0x555, 0x44, 0x55, 0x44, 0x44, 0x55,
- 0x444, 0x444, 0x555, 0x54, 0x54, 0x44, 0x44, 0x44,
- 0x44, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
- 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x555, 0x444,
- 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
- 0x444, 0x444, 0x44, 0x44, 0x44, 0x45, 0x44, 0x444,
- 0x444, 0x55, 0x45, 0x44, 0x55, 0x55, 0x55, 0x55,
- 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
- 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
- 0x555, 0x555, 0x555, 0x555, 0x554, 0x554, 0x554, 0x554,
- 0x554, 0x554, 0x554, 0x554, 0x55, 0x555, 0x555, 0x555,
- 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
- 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
- 0x5555, 0x555, 0x5555, 0x555, 0x555, 0x555, 0x555, 0x555,
- 0x555, 0x555, 0x555, 0x444, 0x555, 0x44, 0x44, 0x444,
- 0x555, 0x445, 0x445, 0x544, 0x444, 0x444, 0x444, 0x444,
- 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
- 0x445, 0x445, 0x444, 0x444, 0x444, 0x444, 0x555, 0x444,
- 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x454,
- 0x554, 0x454, 0x554, 0x454, 0x454, 0x454, 0x454, 0x454,
- 0x454, 0x454, 0x454, 0x4555, 0x4555, 0x4555, 0x4555, 0x4555,
- 0x4555, 0x4555, 0x4555, 0x554, 0x554, 0x554, 0x44, 0x444,
- 0x444, 0x44, 0x444, 0x444, 0x444, 0x444, 0x444, 0x554,
- 0x444, 0x444, 0x444, 0x444, 0x554, 0x444, 0x444, 0x554,
- 0x444, 0x444, 0x45, 0x4444, 0x4444, 0x4444, 0x4444, 0x44,
- 0x444, 0x444, 0x44, 0x44, 0x44, 0x444, 0x5545, 0x444,
- 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x444, 0x444, 0x444,
+ 0x444, 0x444, 0x444, 0x444, 0x2e440, 0x2e440, 0x2e440, 0x2e440,
+ 0x4f44, 0x2e444, 0x4f44, 0x2e444, 0x444, 0x44, 0x444, 0x444,
+ 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x40,
0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x4444,
- 0x4444, 0x4444, 0x4444, 0x58, 0x57, 0x85, 0x85, 0x87,
- 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, 0x75, 0x75,
- 0x78, 0x75, 0x75, 0x74, 0x74, 0x74, 0x74, 0x58,
- 0x57, 0x48, 0x47, 0x48, 0x47, 0x484, 0x884, 0x884,
- 0x884, 0x884, 0x48, 0x48, 0x777, 0x474, 0x774, 0x774,
- 0x774, 0x774, 0x777, 0x777, 0x77, 0x7777, 0x7777, 0x47777,
- 0x7777, 0x7777, 0x47, 0x47, 0x777, 0x777, 0x777, 0x777,
- (1U<<31) | 1447, (1U<<31) | 722, (1U<<31) | 702, (1U<<31) | 1455, (1U<<31) | 733, (1U<<31) | 712, (1U<<31) | 1447, (1U<<31) | 722,
- (1U<<31) | 702, (1U<<31) | 1447, (1U<<31) | 722, (1U<<31) | 702, (1U<<31) | 1447, (1U<<31) | 722, (1U<<31) | 702, (1U<<31) | 1447,
- (1U<<31) | 722, (1U<<31) | 702, 0x4e4, 0x5e5, 0x4444, 0x4444, 0x4455, 0x4455,
- 0x4455, 0x4455, 0x4455, 0x4455, 0x445, 0x445, 0x444, 0x444,
- 0x444, 0x444, 0x445, 0x445, 0x445, 0x445, 0x4455, 0x4455,
- 0x4455, 0x4455, 0x4455, 0x4455, 0x444, 0x445, 0x4455, 0x4455,
- 0x445, 0x444, 0x444, 0x444, 0x444, 0x4444, 0x4444, 0x4444,
- 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555,
- 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555,
+ 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x44, 0x2f7,
+ 0x2f7, 0x52e5, 0x52e5, 0x52e5, 0x555, 0x44, 0x55, 0x44,
+ 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
+ 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x555, 0x555,
+ 0x444, 0x545, 0x444, 0x444, 0x555, 0x44, 0x44, 0x444,
+ 0x444, 0x444, 0x444, 0x445, 0x445, 0x444, 0x555, 0x444,
+ 0x555, 0x444, 0x555, 0x444, 0x555, 0x44, 0x55, 0x44,
+ 0x44, 0x55, 0x444, 0x444, 0x555, 0x4444, 0x54, 0x54,
+ 0x44, 0x44, 0x44, 0x44, 0x444, 0x444, 0x444, 0x444,
+ 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
+ 0x444, 0x555, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
+ 0x444, 0x444, 0x444, 0x444, 0x444, 0x44, 0x44, 0x44,
+ 0x45, 0x44, 0x44, 0x444, 0x444, 0x55, 0x45, 0x44,
+ 0x44, 0x55, 0x55, 0x55, 0x55, 0x555, 0x555, 0x555,
0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
+ 0x555, 0x554, 0x554, 0x554, 0x554, 0x554, 0x554, 0x554,
+ 0x554, 0x55, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
+ 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
+ 0x555, 0x555, 0x555, 0x555, 0x555, 0x5555, 0x555, 0x5555,
+ 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
+ 0x444, 0x555, 0x44, 0x44, (1U<<31) | 4075, 0x444, 0x555, 0x445,
+ 0x445, 0x544, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
+ 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x445, 0x445,
+ 0x445, 0x444, 0x444, 0x444, 0x444, 0x555, 0x444, 0x444,
+ 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, (1U<<31) | 4075, 0x55,
+ 0x55, 0x454, 0x554, 0x454, 0x554, 0x454, 0x454, 0x454,
+ 0x454, 0x454, 0x454, 0x454, 0x454, 0x4555, 0x4555, 0x4555,
+ 0x4555, 0x4555, 0x4555, 0x4555, 0x4555, (1U<<31) | 4978, 0x554, 0x554,
+ (1U<<31) | 4972, 0x44, 0x444, 0x444, 0x44, 0x444, 0x444, 0x444,
+ 0x444, 0x444, 0x554, 0x444, 0x444, 0x444, 0x444, 0x554,
+ 0x444, 0x444, 0x554, 0x444, 0x444, 0x45, 0x4444, 0x4444,
+ 0x4444, 0x4444, 0x44, 0x444, 0x444, 0x44, 0x44, 0x44,
+ 0x444, 0x5545, 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444,
+ 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
+ 0x444, 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 0x58, 0x57,
+ 0x85, 0x85, 0x87, 0x85, 0x85, 0x84, 0x84, 0x84,
+ 0x84, 0x75, 0x75, 0x78, 0x75, 0x75, 0x74, 0x74,
+ 0x74, 0x74, 0x58, 0x57, 0x48, 0x47, 0x48, 0x47,
+ 0x888, 0x484, 0x884, 0x884, 0x884, 0x884, 0x48, 0x48,
+ 0x888, 0x777, 0x474, 0x774, 0x774, 0x774, 0x774, 0x777,
+ 0x777, 0x77, 0x7777, 0x7777, 0x47777, 0x7777, 0x7777, 0x47,
+ 0x47, (1U<<31) | 5157, 0x777, 0x777, 0x777, (1U<<31) | 5238, 0x777, (1U<<31) | 1684,
+ (1U<<31) | 704, (1U<<31) | 684, (1U<<31) | 1692, (1U<<31) | 715, (1U<<31) | 694, (1U<<31) | 1684, (1U<<31) | 704, (1U<<31) | 684,
+ (1U<<31) | 1684, (1U<<31) | 704, (1U<<31) | 684, (1U<<31) | 1684, (1U<<31) | 704, (1U<<31) | 684, (1U<<31) | 1684, (1U<<31) | 704,
+ (1U<<31) | 684, 0x4e4, 0x5e5, 0x4444, 0x4444, 0x4455, 0x4455, 0x4455,
+ 0x4455, 0x4455, 0x4455, 0x445, 0x445, 0x444, 0x444, 0x444,
+ 0x444, 0x445, 0x445, 0x445, 0x445, 0x4455, 0x4455, 0x4455,
+ 0x4455, 0x4455, 0x4455, 0x444, 0x445, 0x4455, 0x4455, 0x445,
+ 0x444, 0x444, 0x444, 0x444, 0x4444, 0x4444, 0x4444, 0x5555,
+ 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555,
+ 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x555,
+ 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
+ 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x4444,
0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444,
0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444,
0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
@@ -7868,272 +7898,277 @@
0x4455, 0x4455, 0x4455, 0x445, 0x445, 0x445, 0x445, 0x445,
0x445, 0x445, 0x445, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455,
0x4455, 0x4455, 0x4455, 0x445, 0x445, 0x445, 0x445, 0x445,
- 0x445, 0x445, 0x445, 0x444, 0x444, 0x444, 0x4444, 0x4444,
- 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x444,
- 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x4444, 0x4444,
- 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x4455,
- 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x445,
- 0x445, 0x445, 0x445, 0x445, 0x445, 0x445, 0x445, 0x4455,
- 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x444,
- 0x4444, 0x4444, 0x4444, 0x555, 0x555, 0x5555, 0x5555, 0x555,
- 0x555, 0x555, 0x555, 0x5555, 0x5555, 0x554, 0x554, 0x555,
- 0x555, 0x4455, 0x5555, 0x5555, 0x5555, 0x4455, 0x4455, 0x4455,
- 0x4455, 0x555, 0x555, 0x445, 0x444, 0x445, 0x444, 0x445,
- 0x445, 0x554, 0x554, 0x5555, 0x5555, 0x5555, 0x5555, 0x555,
- 0x555, 0x555, 0x555, 0x4555, 0x455, 0x454, 0x5555, 0x555,
- 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x454, 0x454, 0x454,
- 0x454, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444,
- 0x4444, 0x4444, 0x4444, 0x4444, 0x445, 0x4455, 0x445, 0x4455,
- 0x5555, 0x5555, 0x555, 0x555, 0x5555, 0x5555, 0x555, 0x555,
- 0x4444, 0x4444, 0x4444, 0x5555, 0x5555, 0x555, 0x4455, 0x4455,
- 0x445, 0x445, 0x5555, 0x5555, 0x555, 0x555, 0x555, 0x555,
- 0x4444, 0x455, 0x4555, 0x4555, 0x4555, 0x4555, 0x4555, 0x444,
- 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x4444, 0x455, 0x455,
- 0x455, 0x4555, 0x4555, 0x4555, 0x4555, 0x4555, 0x444, 0x4444,
- 0x4444, 0x4444, 0x4444, 0x444, 0x455, 0x455, 0x455, 0x4555,
- 0x4555, 0x4555, 0x4555, 0x455, 0x455, 0x444, 0x4444, 0x4444,
- 0x4444, 0x4444, 0x444, 0x444, 0x454, 0x455, 0x455, 0x455,
+ 0x445, 0x445, 0x445, 0x444, 0x444, 0x444, 0x444, 0x444,
+ 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444,
+ 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
+ 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444,
+ 0x444, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455,
+ 0x4455, 0x445, 0x445, 0x445, 0x445, 0x445, 0x445, 0x445,
+ 0x445, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455,
+ 0x4455, 0x444, 0x4444, 0x4444, 0x4444, 0x555, 0x555, 0x5555,
+ 0x5555, 0x555, 0x555, 0x555, 0x555, 0x5555, 0x5555, 0x554,
+ 0x554, 0x555, 0x555, 0x4455, 0x5555, 0x5555, 0x5555, 0x4455,
+ 0x4455, 0x4455, 0x4455, 0x555, 0x555, 0x445, 0x444, 0x445,
+ 0x444, 0x445, 0x445, 0x554, 0x554, 0x5555, 0x5555, 0x5555,
+ 0x5555, 0x555, 0x555, 0x555, 0x555, 0x4555, 0x455, 0x454,
+ 0x5555, 0x555, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x454,
+ 0x454, 0x454, 0x454, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444,
+ 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x445, 0x4455,
+ 0x445, 0x4455, 0x5555, 0x5555, 0x555, 0x555, 0x5555, 0x5555,
+ 0x555, 0x555, 0x4444, 0x4444, 0x4444, 0x5555, 0x5555, 0x555,
+ 0x4455, 0x4455, 0x445, 0x445, 0x5555, 0x5555, 0x555, 0x555,
+ 0x555, 0x555, 0x4444, 0x455, 0x4555, 0x4555, 0x4555, 0x4555,
+ 0x4555, 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x4444,
+ 0x455, 0x455, 0x455, 0x4555, 0x4555, 0x4555, 0x4555, 0x4555,
+ 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x455, 0x455,
+ 0x455, 0x4555, 0x4555, 0x4555, 0x4555, 0x455, 0x455, 0x444,
+ 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x444, 0x454, 0x455,
+ 0x455, 0x455, 0x4555, 0x4555, 0x4555, 0x4555, 0x4555, 0x444,
+ 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x454, 0x455, 0x455,
+ 0x44, 0x55, 0x44, 0x54, 0x44, 0x54, 0x44, 0x44,
+ 0x54, 0x444, 0x444, 0x44, 0x54, 0x44, 0x54, 0x55,
+ 0x4444, 0x544, 0x4455, 0x555, 0x44444, 0x5444, 0x44555, 0x5555,
+ 0x55, 0x555, 0x455, 0x4555, 0x4555, 0x4555, 0x4555, 0x4555,
+ 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 0x455, 0x455, 0x455,
0x4555, 0x4555, 0x4555, 0x4555, 0x4555, 0x444, 0x4444, 0x4444,
- 0x4444, 0x4444, 0x444, 0x454, 0x455, 0x455, 0x44, 0x55,
- 0x4555, 0x44, 0x54, 0x44, 0x54, 0x44, 0x44, 0x54,
- 0x444, 0x444, 0x44, 0x54, 0x44, 0x54, 0x55, 0x4444,
- 0x544, 0x4455, 0x555, 0x44444, 0x5444, 0x44555, 0x5555, 0x55,
- 0x555, 0x455, 0x4555, 0x4555, 0x4555, 0x4555, 0x4555, 0x444,
- 0x4444, 0x4444, 0x4444, 0x4444, 0x455, 0x455, 0x455, 0x4555,
- 0x4555, 0x4555, 0x4555, 0x4555, 0x444, 0x4444, 0x4444, 0x4444,
- 0x4444, 0x4444, 0x455, 0x455, 0x455, 0x4555, 0x4555, 0x4555,
- 0x4555, 0x4555, 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 0x455,
- 0x455, 0x445, 0x554, 0x444, 0x444, 0x555, 0x555, 0x555,
- 0x555, 0x442e2e, (1U<<31) | 744, 0x2e442e2e, 0x452e2e, (1U<<31) | 760, 0x2e542e2e, 0x442e2e,
- (1U<<31) | 744, 0x2e442e2e, 0x442e2e, (1U<<31) | 744, 0x2e442e2e, 0x442e2e, (1U<<31) | 744, 0x2e442e2e,
- 0x44e4, 0x44, 0x44, 0x44444, 0x44444, 0x44444, 0x44444, 0x444,
- 0x444, 0x444, 0x444, 0x4555, 0x4555, 0x455, 0x455, 0x4555,
- 0x54, 0x54, 0x54, 0x55, 0x54, 0x55, 0x54, 0x55,
- 0x54, 0x55, 0x44, 0x45, 0x4555, 0x4555, 0x45, 0x45,
- 0x54, 0x555, 0x54, 0x555, 0x45, 0x45, 0x4444, 0x4444,
- 0x4444, 0x4444, 0x4444, 0x444, 0x454, 0x54, 0x4444, 0x544,
- 0x4455, 0x555, 0x444, 0x444, 0x444, 0x4444, 0x4444, 0x4444,
- 0x4444, 0x4444, 0x444, 0x55e4, 0x4444, 0x4444, 0x4444, 0x4455,
- 0x44555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x454,
- 0x454, 0x54, 0x455, 0x455, 0x4555, 0x4555, 0x4555, 0x4555,
- 0x4555, 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x45,
- 0x555, 0x555, 0x44c4, 0x44d4, 0x4d4c, (1U<<31) | 4361, 0x4d4c, (1U<<31) | 4361,
- 0x44c, 0x44d, 0x44c, 0x44d, 0x44c, 0x44d, (1U<<31) | 178, (1U<<31) | 197,
- (1U<<31) | 178, (1U<<31) | 197, (1U<<31) | 180, (1U<<31) | 199, (1U<<31) | 178, (1U<<31) | 197, (1U<<31) | 178, (1U<<31) | 197,
- (1U<<31) | 994, (1U<<31) | 1002, (1U<<31) | 994, (1U<<31) | 1002, (1U<<31) | 178, (1U<<31) | 197, (1U<<31) | 178, (1U<<31) | 197,
- (1U<<31) | 178, (1U<<31) | 197, (1U<<31) | 4083, (1U<<31) | 4188, (1U<<31) | 4083, (1U<<31) | 4188, (1U<<31) | 4083, (1U<<31) | 4188,
- (1U<<31) | 4083, (1U<<31) | 4188, 0x4c4c, 0x4d4d, 0x4c4c, 0x4d4d, 0x4c4c4c, 0x4d4d4d,
- 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c, 0x4d4d,
- 0x4c4c, 0x4d4d, 0x4c4c, 0x4d4d, 0x4c4c, 0x4d4d, 0x4c4c4c, 0x4d4d4d,
- 0x4d4d4d, (1U<<31) | 4366, (1U<<31) | 4110, (1U<<31) | 4225, (1U<<31) | 4110, (1U<<31) | 4225, 0x4c4c4c, 0x4d4d4d,
- 0x4d4d4d, (1U<<31) | 4366, (1U<<31) | 185, (1U<<31) | 204, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d,
- 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4366, (1U<<31) | 4110, (1U<<31) | 4225, (1U<<31) | 4110, (1U<<31) | 4225,
- 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4366, 0x4c4c4d, (1U<<31) | 4255, 0x4c4c4d4d, (1U<<31) | 4253,
- 0x4c4c4d, (1U<<31) | 4255, 0x4c4c4d4d, (1U<<31) | 4253, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4366,
- 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4366, 0x4c4c4d, (1U<<31) | 4255,
- 0x4c4c4d4d, (1U<<31) | 4253, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4366, 0x4c4c4c, 0x4d4d4d,
- 0x4d4d4d, (1U<<31) | 4366, (1U<<31) | 4110, (1U<<31) | 4225, (1U<<31) | 4110, (1U<<31) | 4225, 0x4c4c4c, 0x4d4d4d,
- 0x4d4d4d, (1U<<31) | 4366, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c, 0x44d4d4d, 0x4c4c4c, 0x4d4d4d,
- (1U<<31) | 992, (1U<<31) | 1000, (1U<<31) | 990, (1U<<31) | 998, (1U<<31) | 992, (1U<<31) | 1000, (1U<<31) | 990, (1U<<31) | 998,
- (1U<<31) | 4076, (1U<<31) | 4181, (1U<<31) | 4076, (1U<<31) | 4181, (1U<<31) | 3541, (1U<<31) | 3579, (1U<<31) | 3539, (1U<<31) | 3577,
- 0x44c4c, 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x4c4c4c, 0x4d4d4d, 0x44c4c, 0x44d4d,
- 0x44c4c4c, 0x44d4d4d, 0x4c4c4c, 0x4d4d4d, 0x44c4c, 0x44d4d, 0x44c4c4c, 0x44d4d4d,
- 0x44c4c4c, 0x44d4d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c, 0x44d4d4d,
- 0x4c4c4c, 0x4d4d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c, 0x44d4d4d,
- 0x44c4c4c, 0x44d4d4d, 0x44c4c, 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c, 0x44d4d4d,
- 0x44c4c4c, 0x44d4d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c, 0x44d4d4d,
- 0x4c4c4c, 0x4d4d4d, 0x4c4c, 0x4d4d, 0x4d4d, (1U<<31) | 4368, 0x4c4c4c, 0x4d4d4d,
- 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d,
- 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d,
- 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c, 0x4d4d,
- 0x4c4c, 0x4d4d, 0x4c4c4d, (1U<<31) | 4255, 0x4c, 0x4d, 0x4d, (1U<<31) | 4350,
- 0x4c4c, 0x4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c, 0x4d4d, 0x44c4c4d, (1U<<31) | 3597,
- 0x4c4c4c, 0x4d4d4d, 0x44c4c, 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x44d4d, (1U<<31) | 3670,
- 0x44d4d4d, (1U<<31) | 3668, 0x44c4c, 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x44d4d, (1U<<31) | 3670,
- 0x44d4d4d, (1U<<31) | 3668, 0x44d4c, (1U<<31) | 3662, 0x44d4c4c, (1U<<31) | 3660, 0x44c4c, 0x44d4d,
- 0x44c4c4c, 0x44d4d4d, 0x44d4c, (1U<<31) | 3662, 0x44d4c4c, (1U<<31) | 3660, 0x44c4c, 0x44d4d,
- 0x44c4c4c, 0x44d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c4c, 0x4d4d4d4d, 0x44d4d, (1U<<31) | 3670,
- 0x44d4d4d, (1U<<31) | 3668, (1U<<31) | 4103, (1U<<31) | 4218, (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4101, (1U<<31) | 4216,
- (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4103, (1U<<31) | 4218, (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4101, (1U<<31) | 4216,
- (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4103, (1U<<31) | 4218, (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4101, (1U<<31) | 4216,
- (1U<<31) | 4101, (1U<<31) | 4216, 0x4c442e0, 0x4d442e0, (1U<<31) | 4091, (1U<<31) | 4206, 0x4d442e0, (1U<<31) | 4353,
- (1U<<31) | 4196, (1U<<31) | 4343, 0x4c442e0, 0x4d442e0, (1U<<31) | 4091, (1U<<31) | 4206, (1U<<31) | 4103, (1U<<31) | 4218,
- (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4103, (1U<<31) | 4218,
- (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4103, (1U<<31) | 4218,
- (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4103, (1U<<31) | 4218,
- (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4103, (1U<<31) | 4218,
- (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4103, (1U<<31) | 4218,
- (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4101, (1U<<31) | 4216, (1U<<31) | 4101, (1U<<31) | 4216, 0x44c4c, 0x44d4d,
- 0x44c4c4c, 0x44d4d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c, 0x44d4d, 0x44c4c, 0x44d4d,
- 0x4c4c4c, 0x4d4d4d, 0x44c4c, 0x44d4d, 0x4c4c4c, 0x4d4d4d, 0x54c4c, 0x54d4d,
- 0x44c4c4c, 0x44d4d4d, 0x44c4c4c, 0x44d4d4d, (1U<<31) | 3557, (1U<<31) | 3585, (1U<<31) | 3557, (1U<<31) | 3585,
- 0x44c4c4c, 0x44d4d4d, 0x44c4c4d, (1U<<31) | 3597, 0x44c4c4d, (1U<<31) | 3597, (1U<<31) | 3567, (1U<<31) | 3595,
- (1U<<31) | 3567, (1U<<31) | 3595, 0x44c4c4d, (1U<<31) | 3597, (1U<<31) | 4083, (1U<<31) | 4188, (1U<<31) | 4083, (1U<<31) | 4188,
- (1U<<31) | 4083, (1U<<31) | 4188, (1U<<31) | 4083, (1U<<31) | 4188, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d,
- 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d,
- 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d,
- 0x44d4d, (1U<<31) | 3670, 0x44d4d4d, (1U<<31) | 3668, 0x4d4d4d, (1U<<31) | 4366, 0x44d4d, (1U<<31) | 3670,
- 0x44d4d4d, (1U<<31) | 3668, 0x4d4d4d, (1U<<31) | 4366, 0x44d4d, (1U<<31) | 3670, 0x44d4d4d, (1U<<31) | 3668,
- 0x54c4c4c, 0x54d4d4d, 0x44d4d, (1U<<31) | 3670, 0x44d4d4d, (1U<<31) | 3668, 0x54c4c4c, 0x54d4d4d,
- 0x54c4c4c, 0x54d4d4d, 0x44c4d, (1U<<31) | 3607, 0x44c4d4d, (1U<<31) | 3605, 0x4c4c4d, (1U<<31) | 4255,
- 0x4c4c4d4d, (1U<<31) | 4253, 0x4c4c4d, (1U<<31) | 4255, 0x4c4c4d4d, (1U<<31) | 4253, 0x4c4c4c, 0x4d4d4d,
- 0x4c4c4d, (1U<<31) | 4255, 0x44c4d, (1U<<31) | 3607, 0x44c4d4d, (1U<<31) | 3605, 0x44c4d4d, (1U<<31) | 3605,
- 0x44c4c, 0x44d4d, 0x44c4c, 0x44d4d, 0x4c4c4d, (1U<<31) | 4255, 0x4c4c4d4d, (1U<<31) | 4253,
- 0x4c4c4d, (1U<<31) | 4255, 0x4c4c4d4d, (1U<<31) | 4253, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d,
- 0x4c4c4c4c, 0x4d4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c4c, 0x4d4d4d4d, 0x4c4c4c, 0x4d4d4d,
- 0x4c4c4c4c, 0x4d4d4d4d, 0x44c4c, 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x4c4c4c, 0x4d4d4d,
- 0x44c4c, 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c, 0x44d4d, 0x44c4c4c, 0x44d4d4d,
- 0x44c4c, 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4d4d, (1U<<31) | 4253,
- 0x4c4c4c, 0x4d4d4d, 0x4c4c4c4c, 0x4d4d4d4d, 0x4c4c4c4c, 0x4d4d4d4d, 0x44c4d, (1U<<31) | 3607,
- 0x44c4d4d, (1U<<31) | 3605, 0x4c4c4d, (1U<<31) | 4255, 0x4c4c4d4d, (1U<<31) | 4253, 0x44c4d, (1U<<31) | 3607,
- 0x44c4d4d, (1U<<31) | 3605, 0x44c4c, 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x4c4c4d, (1U<<31) | 4255,
- 0x4c4c4d4d, (1U<<31) | 4253, (1U<<31) | 4110, (1U<<31) | 4225, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d,
- 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c, 0x4d4d, 0x4c4c, 0x4d4d,
- 0x4c4c, 0x4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d,
- 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d,
- 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c, 0x4d4d, (1U<<31) | 192, (1U<<31) | 211,
- (1U<<31) | 192, (1U<<31) | 211, (1U<<31) | 192, (1U<<31) | 211, 0x4c4c4c, 0x4d4d4d, 0x54c4d, (1U<<31) | 4415,
- 0x54c4d4d, (1U<<31) | 4413, 0x44c4c, 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x444d4d, (1U<<31) | 3336,
- 0x444d4d4d, (1U<<31) | 3334, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c4c, 0x4d4d4d4d, 0x4c4c4c, 0x4d4d4d,
- 0x4c4c4c4c, 0x4d4d4d4d, 0x44c4c, 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x54c4d, (1U<<31) | 4415,
- 0x54c4d4d, (1U<<31) | 4413, 0x444d4d, (1U<<31) | 3336, 0x444d4d4d, (1U<<31) | 3334, 0x4c4c4c, 0x4d4d4d,
- 0x4c4c4c4c, 0x4d4d4d4d, 0x44c4c, 0x44d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d,
- 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d,
- 0x444d4d, (1U<<31) | 3336, 0x444d4d4d, (1U<<31) | 3334, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d,
- 0x4c4c4c, 0x4d4d4d, 0x4c4d, (1U<<31) | 4265, 0x4c4c440, 0x4d4d440, 0x4c4c440, 0x4d4d440,
- (1U<<31) | 4128, (1U<<31) | 4243, 0x4c4d440, (1U<<31) | 4262, 0x4c4d440, (1U<<31) | 4262, (1U<<31) | 4138, (1U<<31) | 4270,
- 0x4c4c440, 0x4d4d440, 0x4c4c440, 0x4d4d440, (1U<<31) | 4128, (1U<<31) | 4243, 0x4c4d, (1U<<31) | 4265,
- 0x4c4c4c, 0x4d4d4d, 0x4c4c, 0x4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c, 0x4d4d,
- 0x4c4c4c, 0x4d4d4d, 0x44c4c4d, (1U<<31) | 3597, 0x4c4c4d, (1U<<31) | 4255, 0x4c4c4d, (1U<<31) | 4255,
- 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4366, (1U<<31) | 4110, (1U<<31) | 4225,
- (1U<<31) | 4110, (1U<<31) | 4225, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4366, (1U<<31) | 185, (1U<<31) | 204,
- 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4366, (1U<<31) | 4110, (1U<<31) | 4225, (1U<<31) | 4110, (1U<<31) | 4225,
- 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4366, 0x4c4c4d, (1U<<31) | 4255, 0x4c4c4d, (1U<<31) | 4255,
- 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4366, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d,
- 0x4d4d4d, (1U<<31) | 4366, 0x4c4c4d, (1U<<31) | 4255, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4366,
- 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4366, (1U<<31) | 4110, (1U<<31) | 4225, (1U<<31) | 4110, (1U<<31) | 4225,
- 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4366, (1U<<31) | 4119, (1U<<31) | 4234, 0x44d4d, (1U<<31) | 3670,
- 0x44d4d4d, (1U<<31) | 3668, 0x44d4d, (1U<<31) | 3670, 0x44d4d4d, (1U<<31) | 3668, 0x44d4d, (1U<<31) | 3670,
- 0x44d4d4d, (1U<<31) | 3668, 0x4c4d, (1U<<31) | 4265, 0x4c4d, (1U<<31) | 4265, 0x4c4d4d, (1U<<31) | 4280,
- 0x4c4d4d, (1U<<31) | 4280, 0x4c4d, (1U<<31) | 4265, 0x4c4d, (1U<<31) | 4265, 0x4c4c4c, 0x4d4d4d,
- 0x4c4d, (1U<<31) | 4265, 0x4c4d, (1U<<31) | 4265, 0x2e0, 0x2e0, 0x2e0, 0x2e0,
- 0x42e0, 0x52e0, 0x442e2e2e, 0x442e2e2e, 0x442e2e2e, 0x442e2e2e, 0x442e2e2e, 0x442e2e2e,
- 0x4442e2e, 0x4452e2e, 0x4442e2e, 0x4442e2e, 0x4442e2e, 0x4b4b4b, 0x2e0, 0x3939,
- 0x2a2a, 0x44, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x393939, 0x393939,
- 0x444, 0x393939, 0x393939, 0x444, 0x444, 0x2c2c2c, 0x595959, 0x3b3b3b,
- 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b,
- 0x4a4a4a, 0x444, 0x393939, 0x2a2a2a, 0x393939, 0x2a2a2a, 0x2a2a2a, 0x2a2a2a,
+ 0x4444, 0x4444, 0x4444, 0x455, 0x455, 0x455, 0x4555, 0x4555,
+ 0x4555, 0x4555, 0x4555, 0x444, 0x4444, 0x4444, 0x4444, 0x4444,
+ 0x455, 0x455, 0x444, 0x445, 0x554, 0x444, 0x444, 0x555,
+ 0x555, 0x555, 0x555, 0x442e2e, (1U<<31) | 726, 0x2e442e2e, 0x452e2e, (1U<<31) | 742,
+ 0x2e542e2e, 0x442e2e, (1U<<31) | 726, 0x2e442e2e, 0x442e2e, (1U<<31) | 726, 0x2e442e2e, 0x442e2e,
+ (1U<<31) | 726, 0x2e442e2e, 0x44e4, 0x44, 0x44, 0x44444, 0x44444, 0x44444,
+ 0x44444, 0x444, 0x444, 0x444, 0x444, 0x4555, 0x4555, 0x455,
+ 0x455, 0x4555, 0x54, 0x54, 0x54, 0x55, 0x54, 0x55,
+ 0x54, 0x55, 0x54, 0x55, 0x44, 0x45, 0x4555, 0x4555,
+ 0x45, 0x45, 0x54, 0x555, 0x54, 0x555, 0x45, 0x45,
+ 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x454, 0x54,
+ 0x4444, 0x544, 0x4455, 0x555, 0x444, 0x444, 0x444, 0x4444,
+ 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x55e4, 0x4444, 0x4444,
+ 0x4444, 0x4455, 0x44555, 0x555, 0x555, 0x555, 0x555, 0x555,
+ 0x555, 0x454, 0x454, 0x54, 0x455, 0x455, 0x4555, 0x4555,
+ 0x4555, 0x4555, 0x4555, 0x444, 0x4444, 0x4444, 0x4444, 0x4444,
+ 0x4444, 0x45, 0x555, 0x555, 0x44c4, 0x44d4, 0x4d4c, (1U<<31) | 4913,
+ 0x44c, 0x44d, 0x444c, 0x444d, 0x444c, 0x444d, 0x444c, 0x444d,
+ 0x444c, 0x444d, 0x444c, 0x444d, 0x444c, 0x444d, 0x44c, 0x44d,
+ 0x44c, 0x444c, 0x444d, 0x444c, 0x444d, 0x444c, 0x444d, 0x444c,
+ 0x444d, 0x444c, 0x444d, 0x444c, 0x444d, 0x44c, 0x44d, 0x4d4c,
+ (1U<<31) | 4913, 0x44c, 0x44d, 0x44c, 0x44d, 0x44c, 0x44d, (1U<<31) | 202,
+ (1U<<31) | 230, (1U<<31) | 202, (1U<<31) | 230, (1U<<31) | 204, (1U<<31) | 232, (1U<<31) | 202, (1U<<31) | 230, (1U<<31) | 202,
+ (1U<<31) | 230, (1U<<31) | 1241, (1U<<31) | 1249, (1U<<31) | 1241, (1U<<31) | 1249, (1U<<31) | 202, (1U<<31) | 230, (1U<<31) | 202,
+ (1U<<31) | 230, (1U<<31) | 202, (1U<<31) | 230, (1U<<31) | 4635, (1U<<31) | 4740, (1U<<31) | 4635, (1U<<31) | 4740, (1U<<31) | 4635,
+ (1U<<31) | 4740, (1U<<31) | 4635, (1U<<31) | 4740, 0x4c4c, 0x4d4d, 0x4c4c, 0x4d4d, 0x4c4c4c,
+ 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c,
+ 0x4d4d, 0x4c4c, 0x4d4d, 0x4c4c, 0x4d4d, 0x4c4c, 0x4d4d, 0x4c4c4c,
+ 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4918, (1U<<31) | 4662, (1U<<31) | 4777, (1U<<31) | 4662, (1U<<31) | 4777, 0x4c4c4c,
+ 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4918, (1U<<31) | 209, (1U<<31) | 237, (1U<<31) | 221, (1U<<31) | 249, 0x4c4c4c,
+ 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4918, (1U<<31) | 4662,
+ (1U<<31) | 4777, (1U<<31) | 4662, (1U<<31) | 4777, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4918, 0x4c4c4d,
+ (1U<<31) | 4807, 0x4c4c4d4d, (1U<<31) | 4805, 0x4c4c4d, (1U<<31) | 4807, 0x4c4c4d4d, (1U<<31) | 4805, 0x4c4c4c,
+ 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4918, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d,
+ (1U<<31) | 4918, 0x4c4c4d, (1U<<31) | 4807, 0x4c4c4d4d, (1U<<31) | 4805, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d,
+ (1U<<31) | 4918, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4918, (1U<<31) | 4662, (1U<<31) | 4777, (1U<<31) | 4662,
+ (1U<<31) | 4777, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4918, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c,
+ 0x44d4d4d, 0x4c4c4c, 0x4d4d4d, (1U<<31) | 1239, (1U<<31) | 1247, (1U<<31) | 1237, (1U<<31) | 1245, (1U<<31) | 1239,
+ (1U<<31) | 1247, (1U<<31) | 1237, (1U<<31) | 1245, (1U<<31) | 4628, (1U<<31) | 4733, (1U<<31) | 4628, (1U<<31) | 4733, (1U<<31) | 3875,
+ (1U<<31) | 3925, (1U<<31) | 3873, (1U<<31) | 3923, 0x44c4c, 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x4c4c4c,
+ 0x4d4d4d, 0x44c4c, 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4d4d,
+ (1U<<31) | 4805, 0x44c4c, 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c,
+ 0x44d4d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c, 0x44d4d4d, 0x4c4c4c, 0x4d4d4d, 0x44c4c4c,
+ 0x44d4d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c,
+ 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c,
+ 0x44d4d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c, 0x44d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c,
+ 0x4d4d, 0x4d4d, (1U<<31) | 4920, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c,
+ 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c,
+ 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c,
+ 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c, 0x4d4d, 0x4c4c, 0x4d4d, 0x4c4c4d,
+ (1U<<31) | 4807, 0x4c, 0x4d, 0x4d, (1U<<31) | 4902, 0x4c4c, 0x4d4d, 0x4c4c4c,
+ 0x4d4d4d, 0x4c4c, 0x4d4d, 0x44c4c4d, (1U<<31) | 3944, 0x4c4c4c, 0x4d4d4d, 0x44c4c,
+ 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x44d4d, (1U<<31) | 4017, 0x44d4d4d, (1U<<31) | 4015, 0x44c4c,
+ 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x44d4d, (1U<<31) | 4017, 0x44d4d4d, (1U<<31) | 4015, 0x44d4c,
+ (1U<<31) | 4009, 0x44d4c4c, (1U<<31) | 4007, 0x44c4c, 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x44d4c,
+ (1U<<31) | 4009, 0x44d4c4c, (1U<<31) | 4007, 0x44c4c, 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x4c4c4c,
+ 0x4d4d4d, 0x4c4c4c4c, 0x4d4d4d4d, 0x44d4d, (1U<<31) | 4017, 0x44d4d4d, (1U<<31) | 4015, (1U<<31) | 4655,
+ (1U<<31) | 4770, (1U<<31) | 4653, (1U<<31) | 4768, (1U<<31) | 4653, (1U<<31) | 4768, (1U<<31) | 4653, (1U<<31) | 4768, (1U<<31) | 4655,
+ (1U<<31) | 4770, (1U<<31) | 4653, (1U<<31) | 4768, (1U<<31) | 4653, (1U<<31) | 4768, (1U<<31) | 4653, (1U<<31) | 4768, (1U<<31) | 4655,
+ (1U<<31) | 4770, (1U<<31) | 4653, (1U<<31) | 4768, (1U<<31) | 4653, (1U<<31) | 4768, (1U<<31) | 4653, (1U<<31) | 4768, 0x4c442e0,
+ 0x4d442e0, (1U<<31) | 4643, (1U<<31) | 4758, 0x4d442e0, (1U<<31) | 4905, (1U<<31) | 4748, (1U<<31) | 4895, 0x4c442e0,
+ 0x4d442e0, (1U<<31) | 4643, (1U<<31) | 4758, (1U<<31) | 4655, (1U<<31) | 4770, (1U<<31) | 4653, (1U<<31) | 4768, (1U<<31) | 4653,
+ (1U<<31) | 4768, (1U<<31) | 4653, (1U<<31) | 4768, (1U<<31) | 4655, (1U<<31) | 4770, (1U<<31) | 4653, (1U<<31) | 4768, (1U<<31) | 4653,
+ (1U<<31) | 4768, (1U<<31) | 4653, (1U<<31) | 4768, (1U<<31) | 4655, (1U<<31) | 4770, (1U<<31) | 4653, (1U<<31) | 4768, (1U<<31) | 4653,
+ (1U<<31) | 4768, (1U<<31) | 4653, (1U<<31) | 4768, (1U<<31) | 4655, (1U<<31) | 4770, (1U<<31) | 4653, (1U<<31) | 4768, (1U<<31) | 4653,
+ (1U<<31) | 4768, (1U<<31) | 4653, (1U<<31) | 4768, (1U<<31) | 4655, (1U<<31) | 4770, (1U<<31) | 4653, (1U<<31) | 4768, (1U<<31) | 4653,
+ (1U<<31) | 4768, (1U<<31) | 4653, (1U<<31) | 4768, (1U<<31) | 4655, (1U<<31) | 4770, (1U<<31) | 4653, (1U<<31) | 4768, (1U<<31) | 4653,
+ (1U<<31) | 4768, (1U<<31) | 4653, (1U<<31) | 4768, 0x44c4c, 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c,
+ 0x44d4d4d, 0x44c4c, 0x44d4d, 0x44c4c, 0x44d4d, 0x4c4c4c, 0x4d4d4d, 0x44c4c,
+ 0x44d4d, 0x4c4c4c, 0x4d4d4d, 0x54c4c, 0x54d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c4c,
+ 0x44d4d4d, (1U<<31) | 3903, (1U<<31) | 3932, (1U<<31) | 3903, (1U<<31) | 3932, 0x44c4c4c, 0x44d4d4d, 0x44c4c4d,
+ (1U<<31) | 3944, 0x44c4c4d, (1U<<31) | 3944, (1U<<31) | 3913, (1U<<31) | 3942, (1U<<31) | 3913, (1U<<31) | 3942, 0x44c4c4d,
+ (1U<<31) | 3944, (1U<<31) | 4635, (1U<<31) | 4740, (1U<<31) | 4635, (1U<<31) | 4740, (1U<<31) | 4635, (1U<<31) | 4740, (1U<<31) | 4635,
+ (1U<<31) | 4740, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c,
+ 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c,
+ 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x44d4d, (1U<<31) | 4017, 0x44d4d4d,
+ (1U<<31) | 4015, 0x4d4d4d, (1U<<31) | 4918, 0x44d4d, (1U<<31) | 4017, 0x44d4d4d, (1U<<31) | 4015, 0x4d4d4d,
+ (1U<<31) | 4918, 0x44d4d, (1U<<31) | 4017, 0x44d4d4d, (1U<<31) | 4015, 0x54c4c4c, 0x54d4d4d, 0x44d4d,
+ (1U<<31) | 4017, 0x44d4d4d, (1U<<31) | 4015, 0x54c4c4c, 0x54d4d4d, 0x54c4c4c, 0x54d4d4d, 0x44c4d,
+ (1U<<31) | 3954, 0x44c4d4d, (1U<<31) | 3952, 0x4c4c4d, (1U<<31) | 4807, 0x4c4c4d4d, (1U<<31) | 4805, 0x4c4c4d,
+ (1U<<31) | 4807, 0x4c4c4d4d, (1U<<31) | 4805, 0x4c4c4c, 0x4d4d4d, 0x4c4c4d, (1U<<31) | 4807, 0x44c4d,
+ (1U<<31) | 3954, 0x44c4d4d, (1U<<31) | 3952, 0x44c4d4d, (1U<<31) | 3952, 0x44c4c, 0x44d4d, 0x44c4c,
+ 0x44d4d, 0x4c4c4d, (1U<<31) | 4807, 0x4c4c4d4d, (1U<<31) | 4805, 0x4c4c4d, (1U<<31) | 4807, 0x4c4c4d4d,
+ (1U<<31) | 4805, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c4c, 0x4d4d4d4d, 0x4c4c4c,
+ 0x4d4d4d, 0x4c4c4c4c, 0x4d4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c4c, 0x4d4d4d4d, 0x44c4c,
+ 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x4c4c4c, 0x4d4d4d, 0x44c4c, 0x44d4d, 0x44c4c4c,
+ 0x44d4d4d, 0x44c4c, 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x44c4c, 0x44d4d, 0x44c4c4c,
+ 0x44d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4d4d, (1U<<31) | 4805, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c4c,
+ 0x4d4d4d4d, 0x4c4c4c4c, 0x4d4d4d4d, 0x44c4d, (1U<<31) | 3954, 0x44c4d4d, (1U<<31) | 3952, 0x4c4c4d,
+ (1U<<31) | 4807, 0x4c4c4d4d, (1U<<31) | 4805, 0x44c4d, (1U<<31) | 3954, 0x44c4d4d, (1U<<31) | 3952, 0x44c4c,
+ 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x4c4c4d, (1U<<31) | 4807, 0x4c4c4d4d, (1U<<31) | 4805, (1U<<31) | 4662,
+ (1U<<31) | 4777, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c,
+ 0x4d4d4d, 0x4c4c, 0x4d4d, 0x4c4c, 0x4d4d, 0x4c4c, 0x4d4d, 0x4c4c4c,
+ 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c,
+ 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c,
+ 0x4d4d4d, 0x4c4c, 0x4d4d, (1U<<31) | 216, (1U<<31) | 244, (1U<<31) | 216, (1U<<31) | 244, (1U<<31) | 216,
+ (1U<<31) | 244, 0x4c4c4c, 0x4d4d4d, 0x54c4d, (1U<<31) | 4954, 0x54c4d4d, (1U<<31) | 4952, 0x44c4c,
+ 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x444d4d, (1U<<31) | 3615, 0x444d4d4d, (1U<<31) | 3613, 0x4c4c4c,
+ 0x4d4d4d, 0x4c4c4c4c, 0x4d4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c4c, 0x4d4d4d4d, 0x44c4c,
+ 0x44d4d, 0x44c4c4c, 0x44d4d4d, 0x54c4d, (1U<<31) | 4954, 0x54c4d4d, (1U<<31) | 4952, 0x444d4d,
+ (1U<<31) | 3615, 0x444d4d4d, (1U<<31) | 3613, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c4c, 0x4d4d4d4d, 0x44c4c,
+ 0x44d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c,
+ 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x444d4d,
+ (1U<<31) | 3615, 0x444d4d4d, (1U<<31) | 3613, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c,
+ 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4d, (1U<<31) | 4817, 0x4c4c440, 0x4d4d440, 0x4c4c440,
+ 0x4d4d440, (1U<<31) | 4680, (1U<<31) | 4795, 0x4c4d440, (1U<<31) | 4814, 0x4c4d440, (1U<<31) | 4814, (1U<<31) | 4690,
+ (1U<<31) | 4822, 0x4c4c440, 0x4d4d440, 0x4c4c440, 0x4d4d440, (1U<<31) | 4680, (1U<<31) | 4795, 0x4c4d,
+ (1U<<31) | 4817, 0x4c4c4c, 0x4d4d4d, 0x4c4c, 0x4d4d, 0x4c4c4c, 0x4d4d4d, 0x4c4c,
+ 0x4d4d, 0x4c4c4c, 0x4d4d4d, 0x44c4c4d, (1U<<31) | 3944, 0x4c4c4d, (1U<<31) | 4807, 0x4c4c4d,
+ (1U<<31) | 4807, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4918, (1U<<31) | 4662,
+ (1U<<31) | 4777, (1U<<31) | 4662, (1U<<31) | 4777, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4918, (1U<<31) | 209,
+ (1U<<31) | 237, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4918, (1U<<31) | 4662, (1U<<31) | 4777, (1U<<31) | 4662,
+ (1U<<31) | 4777, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4918, 0x4c4c4d, (1U<<31) | 4807, 0x4c4c4d,
+ (1U<<31) | 4807, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4918, 0x4c4c4c, 0x4d4d4d, 0x4c4c4c,
+ 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4918, 0x4c4c4d, (1U<<31) | 4807, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d,
+ (1U<<31) | 4918, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4918, (1U<<31) | 4662, (1U<<31) | 4777, (1U<<31) | 4662,
+ (1U<<31) | 4777, 0x4c4c4c, 0x4d4d4d, 0x4d4d4d, (1U<<31) | 4918, (1U<<31) | 4671, (1U<<31) | 4786, 0x44d4d,
+ (1U<<31) | 4017, 0x44d4d4d, (1U<<31) | 4015, 0x44d4d, (1U<<31) | 4017, 0x44d4d4d, (1U<<31) | 4015, 0x44d4d,
+ (1U<<31) | 4017, 0x44d4d4d, (1U<<31) | 4015, (1U<<31) | 3902, (1U<<31) | 3931, 0x4c4d, (1U<<31) | 4817, 0x4c4d,
+ (1U<<31) | 4817, 0x4c4d4d, (1U<<31) | 4832, 0x4c4d4d, (1U<<31) | 4832, 0x4c4d, (1U<<31) | 4817, 0x4c4d,
+ (1U<<31) | 4817, 0x4c4c4c, 0x4d4d4d, 0x4c4d, (1U<<31) | 4817, 0x4c4d, (1U<<31) | 4817, 0x2e0,
+ 0x2e0, 0x2e0, 0x2e0, 0x42e0, 0x52e0, 0x442e2e2e, 0x442e2e2e, 0x442e2e2e,
+ 0x442e2e2e, 0x442e2e2e, 0x442e2e2e, 0x4442e2e, 0x4452e2e, 0x4442e2e, 0x4442e2e, 0x4442e2e,
+ 0x2e0, 0x42e2e0, 0x442e0, 0x3939, 0x2a2a, 0x44, 0x2c2c2c, 0x595959,
+ 0x3b3b3b, 0x4a4a4a, 0x393939, 0x393939, 0x444, 0x393939, 0x393939, 0x444,
+ 0x444, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b,
+ 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x444, 0x393939, 0x2a2a2a,
+ 0x393939, 0x2a2a2a, 0x2a2a2a, 0x2a2a2a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a,
+ 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x444, 0x2c2c2c, 0x42c2c, 0x4444,
+ 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a,
+ 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a,
+ 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a,
+ 0x4444, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959, 0x43b3b,
+ 0x44a4a, 0x2c2c2c2c, 0x59595959, 0x3b3b3b3b, 0x4a4a4a4a, 0x42c2c2c, 0x4595959, 0x43b3b3b,
+ 0x44a4a4a, 0x2c2c2c2c, 0x59595959, 0x3b3b3b3b, 0x4a4a4a4a, 0x42c2c2c, 0x4595959, 0x43b3b3b,
+ 0x44a4a4a, 0x44, 0x2c2c2c2c, 0x42c2c2c, 0x2c2c2c2c, 0x42c2c2c, 0x2c2c2c, 0x595959,
+ 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x2c4, 0x594,
+ 0x3b4, 0x2c4, 0x4a4, 0x4, 0x2c2c2c2c, 0x42c2c2c, 0x2c2c2c, 0x595959,
+ 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x2c4, 0x594,
+ 0x3b4, 0x2c4, 0x4a4, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x42c2c,
+ 0x45959, 0x43b3b, 0x44a4a, 0x44, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a,
0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a,
- 0x444, 0x2c2c2c, 0x42c2c, 0x4444, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a,
- 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a,
- 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a,
- 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x4444, 0x2c2c2c, 0x595959, 0x3b3b3b,
- 0x4a4a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x2c2c2c2c, 0x59595959, 0x3b3b3b3b,
- 0x4a4a4a4a, 0x42c2c2c, 0x4595959, 0x43b3b3b, 0x44a4a4a, 0x2c2c2c2c, 0x59595959, 0x3b3b3b3b,
- 0x4a4a4a4a, 0x42c2c2c, 0x4595959, 0x43b3b3b, 0x44a4a4a, 0x44, 0x2c2c2c2c, 0x42c2c2c,
- 0x2c2c2c2c, 0x42c2c2c, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959,
- 0x43b3b, 0x44a4a, 0x2c4, 0x594, 0x3b4, 0x2c4, 0x4a4, 0x4,
- 0x2c2c2c2c, 0x42c2c2c, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959,
- 0x43b3b, 0x44a4a, 0x2c4, 0x594, 0x3b4, 0x2c4, 0x4a4, 0x2c2c2c,
- 0x595959, 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x44,
- 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a,
- 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a,
- 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a,
- 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a,
- 0x39390, 0x39390, 0x39390, 0x2a2a4, 0x2a2a4, 0x2a2a4, 0x2a2a4, 0x2a2a4,
- 0x2a2a4, 0x2a2a0, 0x2a2a0, 0x2a2a0, 0x42c4, 0x4595, 0x43b4, 0x44a4,
- 0x42c4, 0x4595, 0x43b4, 0x44a4, 0x440, 0x2c2c2c, 0x595959, 0x3b3b3b,
- 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x4555, 0x4a4a59, 0x2c2c3b,
- 0x3b3b4a, 0x4a4a59, 0x2c2c3b, 0x3b3b4a, 0x393955, 0x4a4a5959, 0x2c2c3b3b, 0x3b3b4a4a,
- 0x4a4a5959, 0x2c2c3b3b, 0x3b3b4a4a, 0x393955, 0x4455, 0x393955, 0x393955, 0x2a2a55,
- 0x2a2a55, 0x393955, 0x393955, 0x393955, 0x4455, 0x393955, 0x393955, 0x2a2a55,
- 0x2a2a55, 0x4a4a5959, 0x2c2c3b3b, 0x3b3b4a4a, 0x4a4a5959, 0x2c2c3b3b, 0x3b3b4a4a, 0x393955,
- 0x454, 0x454, 0x454, 0x454, 0x454, 0x454, 0x898989, 0x7a7a7a,
- 0x898959, 0x7a7a4a, 0x898959, 0x7a7a4a, 0x8959, 0x7a4a, 0x898959, 0x7a7a4a,
+ 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a,
+ 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a,
+ 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x39390, 0x39390, 0x39390, 0x2a2a4,
+ 0x2a2a4, 0x2a2a4, 0x2a2a4, 0x2a2a4, 0x2a2a4, 0x2a2a0, 0x2a2a0, 0x2a2a0,
+ 0x42c4, 0x4595, 0x43b4, 0x44a4, 0x42c4, 0x4595, 0x43b4, 0x44a4,
+ 0x440, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b,
+ 0x4a4a4a, 0x4555, 0x4a4a59, 0x2c2c3b, 0x3b3b4a, 0x4a4a59, 0x2c2c3b, 0x3b3b4a,
+ 0x393955, 0x4a4a5959, 0x2c2c3b3b, 0x3b3b4a4a, 0x4a4a5959, 0x2c2c3b3b, 0x3b3b4a4a, 0x393955,
+ 0x4455, 0x393955, 0x393955, 0x2a2a55, 0x2a2a55, 0x393955, 0x393955, 0x393955,
+ 0x4455, 0x393955, 0x393955, 0x2a2a55, 0x2a2a55, 0x4a4a5959, 0x2c2c3b3b, 0x3b3b4a4a,
+ 0x4a4a5959, 0x2c2c3b3b, 0x3b3b4a4a, 0x393955, 0x454, 0x454, 0x454, 0x454,
+ 0x454, 0x454, 0x898989, 0x7a7a7a, 0x898959, 0x7a7a4a, 0x898959, 0x7a7a4a,
+ 0x8959, 0x7a4a, 0x898959, 0x7a7a4a, 0x898959, 0x7a7a4a, 0x898959, 0x7a7a4a,
0x898959, 0x7a7a4a, 0x898959, 0x7a7a4a, 0x898959, 0x7a7a4a, 0x898959, 0x7a7a4a,
+ 0x898959, 0x7a7a4a, 0x898959, 0x7a7a4a, 0x898989, 0x7a7a7a, 0x7a7a6b, 0x89897a,
+ 0x598989, 0x4a7a7a, 0x7a89, 0x6b7a, 0x7a89, 0x6b7a, 0x5989, 0x4a7a,
+ 0x5989, 0x4a7a, 0x4a89, 0x3b7a, 0x4a89, 0x3b7a, 0x42c, 0x559,
+ 0x43b, 0x44a, 0x8989, 0x7a7a, (1U<<31) | 5787, 0x7a7a7a7a, 0x898989, 0x7a7a7a,
+ 0x898989, 0x7a7a7a, 0x898989, 0x7a7a7a, 0x898989, 0x7a7a7a, (1U<<31) | 5787, 0x7a7a7a7a,
+ 0x898989, 0x7a7a7a, 0x8989, 0x7a7a, 0x8989, 0x7a7a, 0x8989, 0x7a7a,
0x898959, 0x7a7a4a, 0x898959, 0x7a7a4a, 0x898959, 0x7a7a4a, 0x898959, 0x7a7a4a,
- 0x898989, 0x7a7a7a, 0x7a7a6b, 0x89897a, 0x598989, 0x4a7a7a, 0x7a89, 0x6b7a,
- 0x7a89, 0x6b7a, 0x5989, 0x4a7a, 0x5989, 0x4a7a, 0x4a89, 0x3b7a,
- 0x4a89, 0x3b7a, 0x42c, 0x559, 0x43b, 0x44a, 0x8989, 0x7a7a,
- (1U<<31) | 5224, 0x7a7a7a7a, 0x898989, 0x7a7a7a, 0x898989, 0x7a7a7a, 0x898989, 0x7a7a7a,
- 0x898989, 0x7a7a7a, (1U<<31) | 5224, 0x7a7a7a7a, 0x898989, 0x7a7a7a, 0x8989, 0x7a7a,
- 0x8989, 0x7a7a, 0x8989, 0x7a7a, 0x898959, 0x7a7a4a, 0x898959, 0x7a7a4a,
+ 0x898959, 0x7a7a4a, 0x898959, 0x7a7a4a, 0x8989, 0x7a7a, 0x898989, 0x7a7a7a,
0x898959, 0x7a7a4a, 0x898959, 0x7a7a4a, 0x898959, 0x7a7a4a, 0x898959, 0x7a7a4a,
- 0x8989, 0x7a7a, 0x898989, 0x7a7a7a, 0x898959, 0x7a7a4a, 0x898959, 0x7a7a4a,
- 0x898959, 0x7a7a4a, 0x898959, 0x7a7a4a, 0x898959, 0x7a7a4a, 0x8959, 0x7a4a,
- 0x8959, 0x7a4a, 0x7a7a3b, 0x89894a, 0x8959, 0x7a4a, 0x8959, 0x7a4a,
- 0x4a4a59, 0x2c2c3b, 0x3b3b4a, 0x4a4a59, 0x2c2c3b, 0x3b3b4a, 0x4a4a59, 0x2c2c3b,
- 0x3b3b4a, 0x4a4a59, 0x2c2c3b, 0x3b3b4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a,
+ 0x898959, 0x7a7a4a, 0x8959, 0x7a4a, 0x8959, 0x7a4a, 0x7a7a3b, 0x89894a,
+ 0x8959, 0x7a4a, 0x8959, 0x7a4a, 0x4a4a59, 0x2c2c3b, 0x3b3b4a, 0x4a4a59,
+ 0x2c2c3b, 0x3b3b4a, 0x4a4a59, 0x2c2c3b, 0x3b3b4a, 0x4a4a59, 0x2c2c3b, 0x3b3b4a,
0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a,
- 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x442c2c, 0x545959, 0x443b3b, 0x444a4a,
- 0x444, 0x2c42c2c, 0x5945959, 0x3b43b3b, 0x4a44a4a, 0x42e4, 0x42e2c, 0x42e59,
- 0x42e3b, 0x42e4a, 0x42c, 0x459, 0x43b, 0x44a, 0x42e4, 0x4444,
- 0x42e4, 0x4455, 0x3b3b3b3b, 0x4a4a4a4a, 0x3b3b3b3b, 0x4a4a4a4a, 0x4455, 0x2c2c2c2c,
- 0x59595959, 0x3b3b3b3b, 0x4a4a4a4a, 0x393955, 0x393955, 0x393955, 0x393955, 0x2c2c2c,
+ 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a,
+ 0x442c2c, 0x545959, 0x443b3b, 0x444a4a, 0x444, 0x2c42c2c, 0x5945959, 0x3b43b3b,
+ 0x4a44a4a, 0x42e4, 0x42e2c, 0x42e59, 0x42e3b, 0x42e4a, 0x42c, 0x459,
+ 0x43b, 0x44a, 0x42e4, 0x4444, 0x42e4, 0x4455, 0x3b3b3b3b, 0x4a4a4a4a,
+ 0x3b3b3b3b, 0x4a4a4a4a, 0x4455, 0x2c2c2c2c, 0x59595959, 0x3b3b3b3b, 0x4a4a4a4a, 0x393955,
+ 0x393955, 0x393955, 0x393955, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c,
+ 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x42c2c,
+ 0x45959, 0x43b3b, 0x44a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x2c2c2c,
0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c,
0x595959, 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x42c2c,
0x45959, 0x43b3b, 0x44a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c,
- 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x42c2c,
- 0x45959, 0x43b3b, 0x44a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x2c2c2c,
- 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x444,
- 0x2c2c, 0x4455, 0x3b3b3b3b, 0x4a4a4a4a, 0x3b3b3b3b, 0x4a4a4a4a, 0x4455, 0x2c2c2c2c,
- 0x59595959, 0x3b3b3b3b, 0x4a4a4a4a, 0x455, 0x393939, 0x3b3b3b, 0x4a4a4a, 0x393939,
- 0x39394, 0x39394, 0x392a39, 0x392a39, 0x393939, 0x444, 0x393939, 0x444,
- 0x3b3b3b, 0x4a4a4a, 0x393955, 0x393955, 0x445, 0x445, 0x2c2c2c, 0x595959,
- 0x3b3b3b, 0x4a4a4a, 0x2c2c, 0x5959, 0x3b3b, 0x4a4a, 0x2c2c, 0x5959,
- 0x3b3b, 0x4a4a, 0x2c2c2c, 0x42c2c, 0x2c2c2c, 0x42c2c, 0x393939, 0x2c2c2c,
- 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c,
- 0x5959, 0x3b3b, 0x4a4a, 0x393939, 0x2a2a2a, 0x394, 0x394, 0x2a39,
- 0x2a39, 0x2a39, 0x2a39, 0x2a39, 0x2a39, 0x2a39, 0x2a39, 0x39392a,
- 0x44439, 0x44439, 0x4439, 0x39392a, 0x4439, 0x39392a, 0x4444, 0x2a4,
- 0x44, 0x439, 0x42a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x42c2c,
- 0x45959, 0x43b3b, 0x44a4a, 0x42c2c, 0x43b3b, 0x44a4a, 0x455, 0x43939,
- 0x42a2a, 0x43939, 0x444, 0x43939, 0x42a2a, 0x43939, 0x42a2a, 0x444,
- 0x43939, 0x42a2a, 0x42c2c2c, 0x4595959, 0x43b3b3b, 0x44a4a4a, 0x42c2c2c, 0x4595959,
- 0x43b3b3b, 0x44a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959,
- 0x43b3b, 0x44a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x42c2c, 0x45959,
- 0x43b3b, 0x44a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959,
- 0x43b3b, 0x44a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959,
- 0x43b3b, 0x44a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959,
- 0x43b3b, 0x44a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959,
- 0x43b3b, 0x44a4a, 0x42e2c0, 0x42e590, 0x42e3b0, 0x42e4a0, 0x393939, 0x393939,
- 0x444, 0x393939, 0x393939, 0x444, 0x444, 0x2c2c2c, 0x595959, 0x3b3b3b,
+ 0x595959, 0x3b3b3b, 0x4a4a4a, 0x444, 0x2c2c, 0x4455, 0x3b3b3b3b, 0x4a4a4a4a,
+ 0x3b3b3b3b, 0x4a4a4a4a, 0x4455, 0x2c2c2c2c, 0x59595959, 0x3b3b3b3b, 0x4a4a4a4a, 0x455,
+ 0x393939, 0x3b3b3b, 0x4a4a4a, 0x393939, 0x39394, 0x39394, 0x392a39, 0x392a39,
+ 0x393939, 0x444, 0x393939, 0x444, 0x3b3b3b, 0x4a4a4a, 0x393955, 0x393955,
+ 0x445, 0x445, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c, 0x5959,
+ 0x3b3b, 0x4a4a, 0x2c2c, 0x5959, 0x3b3b, 0x4a4a, 0x2c2c2c, 0x42c2c,
+ 0x2c2c2c, 0x42c2c, 0x393939, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c,
+ 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c, 0x5959, 0x3b3b, 0x4a4a, 0x393939,
+ 0x2a2a2a, 0x394, 0x394, 0x2a39, 0x2a39, 0x2a39, 0x2a39, 0x2a39,
+ 0x2a39, 0x2a39, 0x2a39, 0x39392a, 0x44439, 0x44439, 0x4439, 0x39392a,
+ 0x4439, 0x39392a, 0x4444, 0x2a4, 0x44, 0x439, 0x42a, 0x42c2c,
+ 0x45959, 0x43b3b, 0x44a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x42c2c,
+ 0x43b3b, 0x44a4a, 0x455, 0x43939, 0x42a2a, 0x43939, 0x444, 0x43939,
+ 0x42a2a, 0x43939, 0x42a2a, 0x444, 0x43939, 0x42a2a, 0x42c2c2c, 0x4595959,
+ 0x43b3b3b, 0x44a4a4a, 0x42c2c2c, 0x4595959, 0x43b3b3b, 0x44a4a4a, 0x2c2c2c, 0x595959,
+ 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x42c2c, 0x45959,
+ 0x43b3b, 0x44a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x2c2c2c, 0x595959,
+ 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x2c2c2c, 0x595959,
+ 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x2c2c2c, 0x595959,
+ 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x2c2c2c, 0x595959,
+ 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x42e2c0, 0x42e590,
+ 0x42e3b0, 0x42e4a0, 0x393939, 0x393939, 0x444, 0x393939, 0x393939, 0x444,
+ 0x444, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b,
0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b,
- 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x393939, 0x2a2a2a, 0x393939,
- 0x2a2a2a, 0x2a2a2a, 0x2a2a2a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x42c2c,
- 0x45959, 0x43b3b, 0x44a4a, 0x2c2c2c2c, 0x59595959, 0x3b3b3b3b, 0x4a4a4a4a, 0x440,
- 0x2c2c2c, 0x42c2c, 0x888, 0x777, 0x777, 0x888, 0x777, 0x777,
- 0x888, 0x777, 0x777, 0x888, 0x777, 0x777, 0x2fcf2f, 0x2fcf2f,
- 0x1fcf1f, 0x1fcf1f, 0x1fcf1f, 0x1fcf1f, 0x1f1fcf1f, 0x1f1fcf1f, 0x1fcf1f, 0x1fcf1f,
- 0x1fcf1f, 0x1fcf1f, 0x1fcf1f, 0x1fcf1f, 0x74f7, 0x84f8, 0x44f4, 0x44f4,
- 0x1fcf1f, 0x1fcf1f, 0x1fcf1f, 0x1fcf1f, 0x1fcf1f, 0x1fcf1f, 0x1fcf1f, 0x1fcf1f,
- 0x40, 0x40, 0x440, 0x40, 0x40, 0x440, 0x0, 0x44,
- 0x44, 0x44, 0x85, 0x74, 0x47, 0x58, 0x88, 0x77,
- 0x77, 0x4f0, 0x4f0, 0x77, 0x77, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x84,
- 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x777,
+ 0x4a4a4a, 0x393939, 0x2a2a2a, 0x393939, 0x2a2a2a, 0x2a2a2a, 0x2a2a2a, 0x2c2c2c,
+ 0x595959, 0x3b3b3b, 0x4a4a4a, 0x42c2c, 0x45959, 0x43b3b, 0x44a4a, 0x2c2c2c2c,
+ 0x59595959, 0x3b3b3b3b, 0x4a4a4a4a, 0x440, 0x2c2c2c, 0x42c2c, 0x888, 0x777,
0x777, 0x888, 0x777, 0x777, 0x888, 0x777, 0x777, 0x888,
- 0x777, 0x777, 0x888, 0x777, 0x777, 0x88, 0x77, 0x77,
- 0x73, 0x73, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74,
- 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75,
- 0x75, 0x75, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74,
- 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75,
- 0x75, 0x75, 0x88, 0x77, 0x77, 0x88, 0x77, 0x77,
- 0x8888, 0x7777, 0x7777, 0x8888, 0x7777, 0x7777, 0x8888, 0x7777,
- 0x7777, 0x8888, 0x7777, 0x7777, 0x888, 0x777, 0x777, 0x888,
- 0x777, 0x777, 0x4444, 0x48, 0x48, 0x48, 0x48, 0x47,
- 0x47, 0x47, 0x47, 0x2e1, 0x2e1, 0x2e1, 0x2e1, 0x51,
- 0x51, 0x51, 0x4cf2f, 0x4cf1f, 0x4cf4f, 0x4cf2f, 0x4cf1f, 0x4cf4f,
- 0x88, 0x77, 0x77, 0x58, 0x58, 0x58, 0x58, 0x57,
- 0x57, 0x57, 0x57, 0x448, (1U<<31) | 2956, (1U<<31) | 4407, 0x444, 0x545,
- 0x0, 0x0, 0x0, 0x88, 0x77, 0x33, 0x44, 0x55,
- 0xcf4f, 0x888, 0x777, 0x777, 0x888, 0x777, 0x777, 0x888,
- 0x777, 0x777, 0x888, 0x777, 0x777, 0x444, 0x444, 0x444,
- 0x555, 0x444, 0x555, 0x4444, 0xcf4f, 0xcf4f, 0xcf4f, 0xcf4f,
- 0xcf4f, 0xcf4f, 0xcf4f, 0xcf4f, 0xcf4f, 0x88, 0x88, 0x77,
- 0x77, 0x88, 0x77, 0x77, 0x88, 0x77, 0x77, 0x88,
- 0x77, 0x77, 0x4, 0x5, 0x4, 0x4, 0x4, 0x4,
+ 0x777, 0x777, 0x2fcf2f, 0x2fcf2f, 0x1fcf1f, 0x1fcf1f, 0x1fcf1f, 0x1fcf1f,
+ 0x1f1fcf1f, 0x1f1fcf1f, 0x1fcf1f, 0x1fcf1f, 0x1fcf1f, 0x1fcf1f, 0x1fcf1f, 0x1fcf1f,
+ 0x74f7, 0x84f8, 0x44f4, 0x44f4, 0x1fcf1f, 0x1fcf1f, 0x1fcf1f, 0x1fcf1f,
+ 0x1fcf1f, 0x1fcf1f, 0x1fcf1f, 0x1fcf1f, 0x40, 0x40, 0x440, 0x40,
+ 0x40, 0x440, 0x0, 0x44, 0x44, 0x44, 0x85, 0x74,
+ 0x47, 0x58, 0x88, 0x77, 0x77, 0x4f0, 0x4f0, 0x77,
+ 0x77, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
+ 0x87, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85,
+ 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, 0x85,
+ 0x85, 0x85, 0x85, 0x777, 0x777, 0x888, 0x777, 0x777,
+ 0x888, 0x777, 0x777, 0x888, 0x777, 0x777, 0x888, 0x777,
+ 0x777, 0x88, 0x77, 0x77, 0x73, 0x73, 0x74, 0x74,
+ 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x75, 0x75,
+ 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x74, 0x74,
+ 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x75, 0x75,
+ 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x88, 0x77,
+ 0x77, 0x88, 0x77, 0x77, 0x8888, 0x7777, 0x7777, 0x8888,
+ 0x7777, 0x7777, 0x8888, 0x7777, 0x7777, 0x8888, 0x7777, 0x7777,
+ 0x888, 0x777, 0x777, 0x888, 0x777, 0x777, 0x4444, 0x48,
+ 0x48, 0x48, 0x48, 0x47, 0x47, 0x47, 0x47, 0x2e1,
+ 0x2e1, 0x2e1, 0x2e1, 0x51, 0x51, 0x51, 0x4cf2f, 0x4cf1f,
+ 0x4cf4f, 0x4cf2f, 0x4cf1f, 0x4cf4f, 0x88, 0x77, 0x77, 0x58,
+ 0x58, 0x58, 0x58, 0x57, 0x57, 0x57, 0x57, 0x448,
+ (1U<<31) | 3183, (1U<<31) | 4946, 0x444, 0x545, 0x0, 0x0, 0x0, 0x88,
+ 0x77, 0x33, 0x44, 0x55, 0xcf4f, 0x888, 0x777, 0x777,
+ 0x888, 0x777, 0x777, 0x888, 0x777, 0x777, 0x888, 0x777,
+ 0x777, 0x444, 0x444, 0x444, 0x555, 0x444, 0x555, 0x4444,
+ 0xcf4f, 0xcf4f, 0xcf4f, 0xcf4f, 0xcf4f, 0xcf4f, 0xcf4f, 0xcf4f,
+ 0xcf4f, 0x88, 0x88, 0x77, 0x77, 0x88, 0x77, 0x77,
+ 0x88, 0x77, 0x77, 0x88, 0x77, 0x77, 0x4, 0x5,
0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
@@ -8141,247 +8176,245 @@
0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
- 0x4, 0x4, 0x4, 0x4, 0x4f4, 0x444, 0x455, 0x455,
- 0x88, 0x77, 0x77, 0x88, 0x77, 0x77, 0x4444, 0x4444,
- 0x88, 0x77, 0x77, 0x4477, 0x4444, 0x4477, 0x4444, 0x4477,
- 0x4444, 0x44747, 0x44444, 0x44747, 0x44444, 0x44747, 0x44444, 0x44747,
- 0x44444, 0x4477, 0x4444, 0x77, 0x77, 0x77, 0x77, 0x77,
- 0x88, 0x77, 0x77, 0x88, 0x77, 0x77, 0x88, 0x77,
- 0x77, 0x88, 0x77, 0x77, 0x4453, 0x4453, 0x4453, 0x4454,
- 0x4454, 0x4454, 0x4455, 0x4455, 0x4455, 0x4453, 0x4453, 0x4453,
- (1U<<31) | 3352, (1U<<31) | 3352, (1U<<31) | 3352, (1U<<31) | 3368, (1U<<31) | 3368, (1U<<31) | 3368, (1U<<31) | 3385, (1U<<31) | 3385,
- (1U<<31) | 3385, (1U<<31) | 3352, (1U<<31) | 3352, (1U<<31) | 3352, (1U<<31) | 3343, (1U<<31) | 3343, (1U<<31) | 3343, (1U<<31) | 3359,
- (1U<<31) | 3359, (1U<<31) | 3359, (1U<<31) | 3343, (1U<<31) | 3343, (1U<<31) | 3343, 0x453, 0x453, 0x453,
- 0x454, 0x454, 0x454, 0x455, 0x455, 0x455, 0x453, 0x453,
- 0x453, (1U<<31) | 3699, (1U<<31) | 3699, (1U<<31) | 3699, (1U<<31) | 3713, (1U<<31) | 3713, (1U<<31) | 3713, (1U<<31) | 3728,
- (1U<<31) | 3728, (1U<<31) | 3728, (1U<<31) | 3699, (1U<<31) | 3699, (1U<<31) | 3699, (1U<<31) | 3691, (1U<<31) | 3691, (1U<<31) | 3691,
- (1U<<31) | 3705, (1U<<31) | 3705, (1U<<31) | 3705, (1U<<31) | 3691, (1U<<31) | 3691, (1U<<31) | 3691, 0x44453, 0x44453,
- 0x44453, 0x44454, 0x44454, 0x44454, 0x44455, 0x44455, 0x44455, 0x44453,
- 0x44453, 0x44453, (1U<<31) | 3148, (1U<<31) | 3148, (1U<<31) | 3148, (1U<<31) | 3166, (1U<<31) | 3166, (1U<<31) | 3166,
- (1U<<31) | 3185, (1U<<31) | 3185, (1U<<31) | 3185, (1U<<31) | 3148, (1U<<31) | 3148, (1U<<31) | 3148, (1U<<31) | 3138, (1U<<31) | 3138,
- (1U<<31) | 3138, (1U<<31) | 3156, (1U<<31) | 3156, (1U<<31) | 3156, (1U<<31) | 3138, (1U<<31) | 3138, (1U<<31) | 3138, 0x4453,
- 0x4453, 0x4453, 0x4454, 0x4454, 0x4454, 0x4455, 0x4455, 0x4455,
- 0x4453, 0x4453, 0x4453, (1U<<31) | 3352, (1U<<31) | 3352, (1U<<31) | 3352, (1U<<31) | 3368, (1U<<31) | 3368,
- (1U<<31) | 3368, (1U<<31) | 3385, (1U<<31) | 3385, (1U<<31) | 3385, (1U<<31) | 3352, (1U<<31) | 3352, (1U<<31) | 3352, (1U<<31) | 3343,
- (1U<<31) | 3343, (1U<<31) | 3343, (1U<<31) | 3359, (1U<<31) | 3359, (1U<<31) | 3359, (1U<<31) | 3343, (1U<<31) | 3343, (1U<<31) | 3343,
- 0x44453, 0x44453, 0x44453, 0x44454, 0x44454, 0x44454, 0x44455, 0x44455,
- 0x44455, 0x44453, 0x44453, 0x44453, (1U<<31) | 3148, (1U<<31) | 3148, (1U<<31) | 3148, (1U<<31) | 3166,
- (1U<<31) | 3166, (1U<<31) | 3166, (1U<<31) | 3185, (1U<<31) | 3185, (1U<<31) | 3185, (1U<<31) | 3148, (1U<<31) | 3148, (1U<<31) | 3148,
- (1U<<31) | 3138, (1U<<31) | 3138, (1U<<31) | 3138, (1U<<31) | 3156, (1U<<31) | 3156, (1U<<31) | 3156, (1U<<31) | 3138, (1U<<31) | 3138,
- (1U<<31) | 3138, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x34450,
- 0x34450, 0x34450, 0x44450, 0x44450, 0x44450, 0x54450, 0x54450, 0x54450,
- 0x34450, 0x34450, 0x34450, 0x334450, 0x334450, 0x334450, 0x444450, 0x444450,
- 0x444450, 0x554450, 0x554450, 0x554450, 0x334450, 0x334450, 0x334450, 0x33334450,
- 0x33334450, 0x33334450, 0x44444450, 0x44444450, 0x44444450, 0x33334450, 0x33334450, 0x33334450,
- 0x3450, 0x3450, 0x3450, 0x4450, 0x4450, 0x4450, 0x5450, 0x5450,
- 0x5450, 0x3450, 0x3450, 0x3450, 0x33450, 0x33450, 0x33450, 0x44450,
- 0x44450, 0x44450, 0x55450, 0x55450, 0x55450, 0x33450, 0x33450, 0x33450,
- 0x3333450, 0x3333450, 0x3333450, 0x4444450, 0x4444450, 0x4444450, 0x3333450, 0x3333450,
- 0x3333450, 0x344450, 0x344450, 0x344450, 0x444450, 0x444450, 0x444450, 0x544450,
- 0x544450, 0x544450, 0x344450, 0x344450, 0x344450, 0x3344450, 0x3344450, 0x3344450,
- 0x4444450, 0x4444450, 0x4444450, 0x5544450, 0x5544450, 0x5544450, 0x3344450, 0x3344450,
- 0x3344450, (1U<<31) | 826, (1U<<31) | 826, (1U<<31) | 826, (1U<<31) | 3075, (1U<<31) | 3075, (1U<<31) | 3075, (1U<<31) | 826,
- (1U<<31) | 826, (1U<<31) | 826, 0x34450, 0x34450, 0x34450, 0x44450, 0x44450, 0x44450,
- 0x54450, 0x54450, 0x54450, 0x34450, 0x34450, 0x34450, 0x334450, 0x334450,
- 0x334450, 0x444450, 0x444450, 0x444450, 0x554450, 0x554450, 0x554450, 0x334450,
- 0x334450, 0x334450, 0x33334450, 0x33334450, 0x33334450, 0x44444450, 0x44444450, 0x44444450,
- 0x33334450, 0x33334450, 0x33334450, 0x344450, 0x344450, 0x344450, 0x444450, 0x444450,
- 0x444450, 0x544450, 0x544450, 0x544450, 0x344450, 0x344450, 0x344450, 0x3344450,
- 0x3344450, 0x3344450, 0x4444450, 0x4444450, 0x4444450, 0x5544450, 0x5544450, 0x5544450,
- 0x3344450, 0x3344450, 0x3344450, (1U<<31) | 826, (1U<<31) | 826, (1U<<31) | 826, (1U<<31) | 3075, (1U<<31) | 3075,
- (1U<<31) | 3075, (1U<<31) | 826, (1U<<31) | 826, (1U<<31) | 826, 0x34450, 0x44450, 0x34450, 0x334450,
- 0x444450, 0x334450, 0x33334450, 0x44444450, 0x33334450, 0x3450, 0x4450, 0x3450,
- 0x33450, 0x44450, 0x33450, 0x3333450, 0x4444450, 0x3333450, 0x344450, 0x444450,
- 0x344450, 0x3344450, 0x4444450, 0x3344450, (1U<<31) | 826, (1U<<31) | 3075, (1U<<31) | 826, 0x34450,
- 0x44450, 0x34450, 0x334450, 0x444450, 0x334450, 0x33334450, 0x44444450, 0x33334450,
- 0x344450, 0x444450, 0x344450, 0x3344450, 0x4444450, 0x3344450, (1U<<31) | 826, (1U<<31) | 3075,
- (1U<<31) | 826, 0x55, (1U<<31) | 4742, (1U<<31) | 4730, (1U<<31) | 4730, (1U<<31) | 4660, (1U<<31) | 4649, (1U<<31) | 4649,
- (1U<<31) | 4586, (1U<<31) | 3392, (1U<<31) | 4576, (1U<<31) | 3375, (1U<<31) | 4576, (1U<<31) | 3375, (1U<<31) | 4786, (1U<<31) | 4775,
- (1U<<31) | 4775, (1U<<31) | 4700, (1U<<31) | 4690, (1U<<31) | 4690, (1U<<31) | 4622, (1U<<31) | 3734, (1U<<31) | 4613, (1U<<31) | 3719,
- (1U<<31) | 4613, (1U<<31) | 3719, (1U<<31) | 4932, (1U<<31) | 4917, (1U<<31) | 4917, (1U<<31) | 4742, (1U<<31) | 4730, (1U<<31) | 4730,
- (1U<<31) | 4660, (1U<<31) | 3193, (1U<<31) | 4649, (1U<<31) | 3174, (1U<<31) | 4649, (1U<<31) | 3174, (1U<<31) | 4988, (1U<<31) | 4974,
- (1U<<31) | 4974, (1U<<31) | 4786, (1U<<31) | 4775, (1U<<31) | 4775, (1U<<31) | 4700, (1U<<31) | 3392, (1U<<31) | 4690, (1U<<31) | 3375,
- (1U<<31) | 4690, (1U<<31) | 3375, (1U<<31) | 5160, (1U<<31) | 5143, (1U<<31) | 5143, (1U<<31) | 4880, (1U<<31) | 4868, (1U<<31) | 4868,
- (1U<<31) | 4786, (1U<<31) | 3193, (1U<<31) | 4775, (1U<<31) | 3174, (1U<<31) | 4775, (1U<<31) | 3174, (1U<<31) | 4832, (1U<<31) | 4819,
- (1U<<31) | 4819, (1U<<31) | 4742, (1U<<31) | 4730, (1U<<31) | 4730, (1U<<31) | 4880, (1U<<31) | 4868, (1U<<31) | 4868, (1U<<31) | 4786,
- (1U<<31) | 4775, (1U<<31) | 4775, (1U<<31) | 4754, (1U<<31) | 4719, (1U<<31) | 4719, (1U<<31) | 4671, (1U<<31) | 4639, (1U<<31) | 4639,
- (1U<<31) | 4596, (1U<<31) | 3402, (1U<<31) | 4567, (1U<<31) | 3359, (1U<<31) | 4567, (1U<<31) | 3359, (1U<<31) | 4797, (1U<<31) | 4765,
- (1U<<31) | 4765, (1U<<31) | 4710, (1U<<31) | 4681, (1U<<31) | 4681, (1U<<31) | 4631, (1U<<31) | 3743, (1U<<31) | 4605, (1U<<31) | 3705,
- (1U<<31) | 4605, (1U<<31) | 3705, (1U<<31) | 4947, (1U<<31) | 4903, (1U<<31) | 4903, (1U<<31) | 4754, (1U<<31) | 4719, (1U<<31) | 4719,
- (1U<<31) | 4671, (1U<<31) | 3204, (1U<<31) | 4639, (1U<<31) | 3156, (1U<<31) | 4639, (1U<<31) | 3156, (1U<<31) | 5002, (1U<<31) | 4961,
- (1U<<31) | 4961, (1U<<31) | 4797, (1U<<31) | 4765, (1U<<31) | 4765, (1U<<31) | 4710, (1U<<31) | 3402, (1U<<31) | 4681, (1U<<31) | 3359,
- (1U<<31) | 4681, (1U<<31) | 3359, (1U<<31) | 5177, (1U<<31) | 5127, (1U<<31) | 5127, (1U<<31) | 4892, (1U<<31) | 4857, (1U<<31) | 4857,
- (1U<<31) | 4797, (1U<<31) | 3204, (1U<<31) | 4765, (1U<<31) | 3156, (1U<<31) | 4765, (1U<<31) | 3156, (1U<<31) | 4845, (1U<<31) | 4807,
- (1U<<31) | 4807, (1U<<31) | 4754, (1U<<31) | 4719, (1U<<31) | 4719, (1U<<31) | 4892, (1U<<31) | 4857, (1U<<31) | 4857, (1U<<31) | 4797,
- (1U<<31) | 4765, (1U<<31) | 4765, (1U<<31) | 4338, 0x4f5, (1U<<31) | 4700, (1U<<31) | 4690, (1U<<31) | 4690, (1U<<31) | 4700,
- (1U<<31) | 4690, (1U<<31) | 4690, (1U<<31) | 4700, (1U<<31) | 4690, (1U<<31) | 4690, (1U<<31) | 4700, (1U<<31) | 4690, (1U<<31) | 4690,
- (1U<<31) | 4710, (1U<<31) | 4681, (1U<<31) | 4681, (1U<<31) | 4710, (1U<<31) | 4681, (1U<<31) | 4681, (1U<<31) | 4710, (1U<<31) | 4681,
- (1U<<31) | 4681, (1U<<31) | 4710, (1U<<31) | 4681, (1U<<31) | 4681, 0x88, 0x77, 0x77, 0x54,
- 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x48,
- 0x48, 0x48, 0x48, 0x47, 0x47, 0x47, 0x47, 0x58,
- 0x58, 0x58, 0x58, 0x57, 0x57, 0x57, 0x57, 0x11,
- 0x141, 0x11, 0x141, 0x14, 0x144, 0x11, 0x141, (1U<<31) | 4294,
- (1U<<31) | 3613, (1U<<31) | 4294, (1U<<31) | 3613, (1U<<31) | 4294, (1U<<31) | 3613, (1U<<31) | 4294, (1U<<31) | 3613, (1U<<31) | 4314,
- (1U<<31) | 4326, (1U<<31) | 3634, (1U<<31) | 3647, (1U<<31) | 4314, (1U<<31) | 4326, (1U<<31) | 3634, (1U<<31) | 3647, (1U<<31) | 4467,
- (1U<<31) | 4467, (1U<<31) | 5027, (1U<<31) | 5027, (1U<<31) | 4517, (1U<<31) | 4517, (1U<<31) | 5077, (1U<<31) | 5077, (1U<<31) | 4467,
- (1U<<31) | 4467, (1U<<31) | 5027, (1U<<31) | 5027, (1U<<31) | 4517, (1U<<31) | 4517, (1U<<31) | 5077, (1U<<31) | 5077, (1U<<31) | 4467,
- (1U<<31) | 4467, (1U<<31) | 5027, (1U<<31) | 5027, (1U<<31) | 4517, (1U<<31) | 4517, (1U<<31) | 5077, (1U<<31) | 5077, (1U<<31) | 4467,
- (1U<<31) | 4467, (1U<<31) | 5027, (1U<<31) | 5027, (1U<<31) | 4517, (1U<<31) | 4517, (1U<<31) | 5077, (1U<<31) | 5077, (1U<<31) | 4455,
- (1U<<31) | 5015, (1U<<31) | 3845, (1U<<31) | 3858, (1U<<31) | 4455, (1U<<31) | 5015, (1U<<31) | 3845, (1U<<31) | 3858, (1U<<31) | 4294,
- (1U<<31) | 3613, (1U<<31) | 4294, (1U<<31) | 3613, (1U<<31) | 4294, (1U<<31) | 3613, (1U<<31) | 4294, (1U<<31) | 3613, (1U<<31) | 4314,
- (1U<<31) | 4326, (1U<<31) | 3634, (1U<<31) | 3647, (1U<<31) | 4314, (1U<<31) | 4326, (1U<<31) | 3634, (1U<<31) | 3647, (1U<<31) | 4467,
- (1U<<31) | 4467, (1U<<31) | 5027, (1U<<31) | 5027, (1U<<31) | 4517, (1U<<31) | 4517, (1U<<31) | 5077, (1U<<31) | 5077, (1U<<31) | 4467,
- (1U<<31) | 4467, (1U<<31) | 5027, (1U<<31) | 5027, (1U<<31) | 4517, (1U<<31) | 4517, (1U<<31) | 5077, (1U<<31) | 5077, (1U<<31) | 4467,
- (1U<<31) | 4467, (1U<<31) | 5027, (1U<<31) | 5027, (1U<<31) | 4517, (1U<<31) | 4517, (1U<<31) | 5077, (1U<<31) | 5077, (1U<<31) | 4467,
- (1U<<31) | 4467, (1U<<31) | 5027, (1U<<31) | 5027, (1U<<31) | 4517, (1U<<31) | 4517, (1U<<31) | 5077, (1U<<31) | 5077, (1U<<31) | 4455,
- (1U<<31) | 5015, (1U<<31) | 3845, (1U<<31) | 3858, (1U<<31) | 4455, (1U<<31) | 5015, (1U<<31) | 3845, (1U<<31) | 3858, (1U<<31) | 4294,
- (1U<<31) | 3613, (1U<<31) | 4294, (1U<<31) | 3613, (1U<<31) | 4294, (1U<<31) | 3613, (1U<<31) | 4294, (1U<<31) | 3613, (1U<<31) | 4314,
- (1U<<31) | 4326, (1U<<31) | 3634, (1U<<31) | 3647, (1U<<31) | 4314, (1U<<31) | 4326, (1U<<31) | 3634, (1U<<31) | 3647, (1U<<31) | 4467,
- (1U<<31) | 4467, (1U<<31) | 5027, (1U<<31) | 5027, (1U<<31) | 4517, (1U<<31) | 4517, (1U<<31) | 5077, (1U<<31) | 5077, (1U<<31) | 4467,
- (1U<<31) | 4467, (1U<<31) | 5027, (1U<<31) | 5027, (1U<<31) | 4517, (1U<<31) | 4517, (1U<<31) | 5077, (1U<<31) | 5077, (1U<<31) | 4467,
- (1U<<31) | 4467, (1U<<31) | 5027, (1U<<31) | 5027, (1U<<31) | 4517, (1U<<31) | 4517, (1U<<31) | 5077, (1U<<31) | 5077, (1U<<31) | 4467,
- (1U<<31) | 4467, (1U<<31) | 5027, (1U<<31) | 5027, (1U<<31) | 4517, (1U<<31) | 4517, (1U<<31) | 5077, (1U<<31) | 5077, (1U<<31) | 4455,
- (1U<<31) | 5015, (1U<<31) | 3845, (1U<<31) | 3858, (1U<<31) | 4455, (1U<<31) | 5015, (1U<<31) | 3845, (1U<<31) | 3858, (1U<<31) | 5574,
- 0x595959, 0x595959, 0x595959, 0x595959, 0x2c2c2c2c, 0x2c2c2c, 0x595959, 0x3b3b3b,
- 0x4a4a4a, 0x5959, 0x445959, 0x444a4a, 0x40, 0x0, 0x442e0, 0x442e0,
- 0x442e0, 0x442e0, 0x2e2c, 0x2e3b, 0x2e4a, 0x2e2c, 0x2e2c, 0x2e4a,
- 0x2e4a, 0x3b, 0x4a0, 0x2e2c0, 0x2e3b0, 0x2e4a0, 0x2e4a0, 0x2e4a0,
- 0x2c2c2c, 0x3b3b3b, 0x4a4a4a, (1U<<31) | 5560, 0x4a4a4a, (1U<<31) | 5558, (1U<<31) | 5558, 0x2c2c2c,
- 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x3b3b3b, 0x4a4a4a,
- 0x2c2c2c, 0x3b3b3b, 0x4a4a4a, 0x2c2c59, 0x44a7a, 0x44a7a, 0x2c4, 0x7a7a4a,
+ 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
+ 0x4f4, 0x444, 0x455, 0x455, 0x88, 0x77, 0x77, 0x88,
+ 0x77, 0x77, 0x4444, 0x4444, 0x88, 0x77, 0x77, 0x4477,
+ 0x4444, 0x4477, 0x4444, 0x4477, 0x4444, 0x44747, 0x44444, 0x44747,
+ 0x44444, 0x44747, 0x44444, 0x44747, 0x44444, 0x4477, 0x4444, 0x77,
+ 0x77, 0x77, 0x77, 0x77, 0x88, 0x77, 0x77, 0x88,
+ 0x77, 0x77, 0x88, 0x77, 0x77, 0x88, 0x77, 0x77,
+ 0x4453, 0x4453, 0x4453, 0x4454, 0x4454, 0x4454, 0x4455, 0x4455,
+ 0x4455, 0x4453, 0x4453, 0x4453, (1U<<31) | 3631, (1U<<31) | 3631, (1U<<31) | 3631, (1U<<31) | 3647,
+ (1U<<31) | 3647, (1U<<31) | 3647, (1U<<31) | 3664, (1U<<31) | 3664, (1U<<31) | 3664, (1U<<31) | 3631, (1U<<31) | 3631, (1U<<31) | 3631,
+ (1U<<31) | 3622, (1U<<31) | 3622, (1U<<31) | 3622, (1U<<31) | 3638, (1U<<31) | 3638, (1U<<31) | 3638, (1U<<31) | 3622, (1U<<31) | 3622,
+ (1U<<31) | 3622, 0x453, 0x453, 0x453, 0x454, 0x454, 0x454, 0x455,
+ 0x455, 0x455, 0x453, 0x453, 0x453, (1U<<31) | 4046, (1U<<31) | 4046, (1U<<31) | 4046,
+ (1U<<31) | 4060, (1U<<31) | 4060, (1U<<31) | 4060, (1U<<31) | 4082, (1U<<31) | 4082, (1U<<31) | 4082, (1U<<31) | 4046, (1U<<31) | 4046,
+ (1U<<31) | 4046, (1U<<31) | 4038, (1U<<31) | 4038, (1U<<31) | 4038, (1U<<31) | 4052, (1U<<31) | 4052, (1U<<31) | 4052, (1U<<31) | 4038,
+ (1U<<31) | 4038, (1U<<31) | 4038, 0x44453, 0x44453, 0x44453, 0x44454, 0x44454, 0x44454,
+ 0x44455, 0x44455, 0x44455, 0x44453, 0x44453, 0x44453, (1U<<31) | 3375, (1U<<31) | 3375,
+ (1U<<31) | 3375, (1U<<31) | 3393, (1U<<31) | 3393, (1U<<31) | 3393, (1U<<31) | 3412, (1U<<31) | 3412, (1U<<31) | 3412, (1U<<31) | 3375,
+ (1U<<31) | 3375, (1U<<31) | 3375, (1U<<31) | 3365, (1U<<31) | 3365, (1U<<31) | 3365, (1U<<31) | 3383, (1U<<31) | 3383, (1U<<31) | 3383,
+ (1U<<31) | 3365, (1U<<31) | 3365, (1U<<31) | 3365, 0x4453, 0x4453, 0x4453, 0x4454, 0x4454,
+ 0x4454, 0x4455, 0x4455, 0x4455, 0x4453, 0x4453, 0x4453, (1U<<31) | 3631,
+ (1U<<31) | 3631, (1U<<31) | 3631, (1U<<31) | 3647, (1U<<31) | 3647, (1U<<31) | 3647, (1U<<31) | 3664, (1U<<31) | 3664, (1U<<31) | 3664,
+ (1U<<31) | 3631, (1U<<31) | 3631, (1U<<31) | 3631, (1U<<31) | 3622, (1U<<31) | 3622, (1U<<31) | 3622, (1U<<31) | 3638, (1U<<31) | 3638,
+ (1U<<31) | 3638, (1U<<31) | 3622, (1U<<31) | 3622, (1U<<31) | 3622, 0x44453, 0x44453, 0x44453, 0x44454,
+ 0x44454, 0x44454, 0x44455, 0x44455, 0x44455, 0x44453, 0x44453, 0x44453,
+ (1U<<31) | 3375, (1U<<31) | 3375, (1U<<31) | 3375, (1U<<31) | 3393, (1U<<31) | 3393, (1U<<31) | 3393, (1U<<31) | 3412, (1U<<31) | 3412,
+ (1U<<31) | 3412, (1U<<31) | 3375, (1U<<31) | 3375, (1U<<31) | 3375, (1U<<31) | 3365, (1U<<31) | 3365, (1U<<31) | 3365, (1U<<31) | 3383,
+ (1U<<31) | 3383, (1U<<31) | 3383, (1U<<31) | 3365, (1U<<31) | 3365, (1U<<31) | 3365, 0x54, 0x54, 0x54,
+ 0x54, 0x54, 0x54, 0x34450, 0x34450, 0x34450, 0x44450, 0x44450,
+ 0x44450, 0x54450, 0x54450, 0x54450, 0x34450, 0x34450, 0x34450, 0x334450,
+ 0x334450, 0x334450, 0x444450, 0x444450, 0x444450, 0x554450, 0x554450, 0x554450,
+ 0x334450, 0x334450, 0x334450, 0x33334450, 0x33334450, 0x33334450, 0x44444450, 0x44444450,
+ 0x44444450, 0x33334450, 0x33334450, 0x33334450, 0x3450, 0x3450, 0x3450, 0x4450,
+ 0x4450, 0x4450, 0x5450, 0x5450, 0x5450, 0x3450, 0x3450, 0x3450,
+ 0x33450, 0x33450, 0x33450, 0x44450, 0x44450, 0x44450, 0x55450, 0x55450,
+ 0x55450, 0x33450, 0x33450, 0x33450, 0x3333450, 0x3333450, 0x3333450, 0x4444450,
+ 0x4444450, 0x4444450, 0x3333450, 0x3333450, 0x3333450, 0x344450, 0x344450, 0x344450,
+ 0x444450, 0x444450, 0x444450, 0x544450, 0x544450, 0x544450, 0x344450, 0x344450,
+ 0x344450, 0x3344450, 0x3344450, 0x3344450, 0x4444450, 0x4444450, 0x4444450, 0x5544450,
+ 0x5544450, 0x5544450, 0x3344450, 0x3344450, 0x3344450, (1U<<31) | 805, (1U<<31) | 805, (1U<<31) | 805,
+ (1U<<31) | 3302, (1U<<31) | 3302, (1U<<31) | 3302, (1U<<31) | 805, (1U<<31) | 805, (1U<<31) | 805, 0x34450, 0x34450,
+ 0x34450, 0x44450, 0x44450, 0x44450, 0x54450, 0x54450, 0x54450, 0x34450,
+ 0x34450, 0x34450, 0x334450, 0x334450, 0x334450, 0x444450, 0x444450, 0x444450,
+ 0x554450, 0x554450, 0x554450, 0x334450, 0x334450, 0x334450, 0x33334450, 0x33334450,
+ 0x33334450, 0x44444450, 0x44444450, 0x44444450, 0x33334450, 0x33334450, 0x33334450, 0x344450,
+ 0x344450, 0x344450, 0x444450, 0x444450, 0x444450, 0x544450, 0x544450, 0x544450,
+ 0x344450, 0x344450, 0x344450, 0x3344450, 0x3344450, 0x3344450, 0x4444450, 0x4444450,
+ 0x4444450, 0x5544450, 0x5544450, 0x5544450, 0x3344450, 0x3344450, 0x3344450, (1U<<31) | 805,
+ (1U<<31) | 805, (1U<<31) | 805, (1U<<31) | 3302, (1U<<31) | 3302, (1U<<31) | 3302, (1U<<31) | 805, (1U<<31) | 805, (1U<<31) | 805,
+ 0x34450, 0x44450, 0x34450, 0x334450, 0x444450, 0x334450, 0x33334450, 0x44444450,
+ 0x33334450, 0x3450, 0x4450, 0x3450, 0x33450, 0x44450, 0x33450, 0x3333450,
+ 0x4444450, 0x3333450, 0x344450, 0x444450, 0x344450, 0x3344450, 0x4444450, 0x3344450,
+ (1U<<31) | 805, (1U<<31) | 3302, (1U<<31) | 805, 0x34450, 0x44450, 0x34450, 0x334450, 0x444450,
+ 0x334450, 0x33334450, 0x44444450, 0x33334450, 0x344450, 0x444450, 0x344450, 0x3344450,
+ 0x4444450, 0x3344450, (1U<<31) | 805, (1U<<31) | 3302, (1U<<31) | 805, 0x55, (1U<<31) | 5305, (1U<<31) | 5293,
+ (1U<<31) | 5293, (1U<<31) | 5217, (1U<<31) | 5206, (1U<<31) | 5206, (1U<<31) | 5138, (1U<<31) | 3671, (1U<<31) | 5128, (1U<<31) | 3654,
+ (1U<<31) | 5128, (1U<<31) | 3654, (1U<<31) | 5349, (1U<<31) | 5338, (1U<<31) | 5338, (1U<<31) | 5263, (1U<<31) | 5253, (1U<<31) | 5253,
+ (1U<<31) | 5179, (1U<<31) | 4088, (1U<<31) | 5170, (1U<<31) | 4066, (1U<<31) | 5170, (1U<<31) | 4066, (1U<<31) | 5495, (1U<<31) | 5480,
+ (1U<<31) | 5480, (1U<<31) | 5305, (1U<<31) | 5293, (1U<<31) | 5293, (1U<<31) | 5217, (1U<<31) | 3420, (1U<<31) | 5206, (1U<<31) | 3401,
+ (1U<<31) | 5206, (1U<<31) | 3401, (1U<<31) | 5551, (1U<<31) | 5537, (1U<<31) | 5537, (1U<<31) | 5349, (1U<<31) | 5338, (1U<<31) | 5338,
+ (1U<<31) | 5263, (1U<<31) | 3671, (1U<<31) | 5253, (1U<<31) | 3654, (1U<<31) | 5253, (1U<<31) | 3654, (1U<<31) | 5723, (1U<<31) | 5706,
+ (1U<<31) | 5706, (1U<<31) | 5443, (1U<<31) | 5431, (1U<<31) | 5431, (1U<<31) | 5349, (1U<<31) | 3420, (1U<<31) | 5338, (1U<<31) | 3401,
+ (1U<<31) | 5338, (1U<<31) | 3401, (1U<<31) | 5395, (1U<<31) | 5382, (1U<<31) | 5382, (1U<<31) | 5305, (1U<<31) | 5293, (1U<<31) | 5293,
+ (1U<<31) | 5443, (1U<<31) | 5431, (1U<<31) | 5431, (1U<<31) | 5349, (1U<<31) | 5338, (1U<<31) | 5338, (1U<<31) | 5317, (1U<<31) | 5282,
+ (1U<<31) | 5282, (1U<<31) | 5228, (1U<<31) | 5196, (1U<<31) | 5196, (1U<<31) | 5148, (1U<<31) | 3681, (1U<<31) | 5119, (1U<<31) | 3638,
+ (1U<<31) | 5119, (1U<<31) | 3638, (1U<<31) | 5360, (1U<<31) | 5328, (1U<<31) | 5328, (1U<<31) | 5273, (1U<<31) | 5244, (1U<<31) | 5244,
+ (1U<<31) | 5188, (1U<<31) | 4097, (1U<<31) | 5162, (1U<<31) | 4052, (1U<<31) | 5162, (1U<<31) | 4052, (1U<<31) | 5510, (1U<<31) | 5466,
+ (1U<<31) | 5466, (1U<<31) | 5317, (1U<<31) | 5282, (1U<<31) | 5282, (1U<<31) | 5228, (1U<<31) | 3431, (1U<<31) | 5196, (1U<<31) | 3383,
+ (1U<<31) | 5196, (1U<<31) | 3383, (1U<<31) | 5565, (1U<<31) | 5524, (1U<<31) | 5524, (1U<<31) | 5360, (1U<<31) | 5328, (1U<<31) | 5328,
+ (1U<<31) | 5273, (1U<<31) | 3681, (1U<<31) | 5244, (1U<<31) | 3638, (1U<<31) | 5244, (1U<<31) | 3638, (1U<<31) | 5740, (1U<<31) | 5690,
+ (1U<<31) | 5690, (1U<<31) | 5455, (1U<<31) | 5420, (1U<<31) | 5420, (1U<<31) | 5360, (1U<<31) | 3431, (1U<<31) | 5328, (1U<<31) | 3383,
+ (1U<<31) | 5328, (1U<<31) | 3383, (1U<<31) | 5408, (1U<<31) | 5370, (1U<<31) | 5370, (1U<<31) | 5317, (1U<<31) | 5282, (1U<<31) | 5282,
+ (1U<<31) | 5455, (1U<<31) | 5420, (1U<<31) | 5420, (1U<<31) | 5360, (1U<<31) | 5328, (1U<<31) | 5328, (1U<<31) | 4890, 0x4f5,
+ (1U<<31) | 5263, (1U<<31) | 5253, (1U<<31) | 5253, (1U<<31) | 5263, (1U<<31) | 5253, (1U<<31) | 5253, (1U<<31) | 5263, (1U<<31) | 5253,
+ (1U<<31) | 5253, (1U<<31) | 5263, (1U<<31) | 5253, (1U<<31) | 5253, (1U<<31) | 5273, (1U<<31) | 5244, (1U<<31) | 5244, (1U<<31) | 5273,
+ (1U<<31) | 5244, (1U<<31) | 5244, (1U<<31) | 5273, (1U<<31) | 5244, (1U<<31) | 5244, (1U<<31) | 5273, (1U<<31) | 5244, (1U<<31) | 5244,
+ 0x88, 0x77, 0x77, 0x54, 0x54, 0x54, 0x54, 0x54,
+ 0x54, 0x54, 0x54, 0x48, 0x48, 0x48, 0x48, 0x47,
+ 0x47, 0x47, 0x47, 0x58, 0x58, 0x58, 0x58, 0x57,
+ 0x57, 0x57, 0x57, 0x11, 0x141, 0x11, 0x141, 0x14,
+ 0x144, 0x11, 0x141, (1U<<31) | 4846, (1U<<31) | 3960, (1U<<31) | 4846, (1U<<31) | 3960, (1U<<31) | 4846,
+ (1U<<31) | 3960, (1U<<31) | 4846, (1U<<31) | 3960, (1U<<31) | 4866, (1U<<31) | 4878, (1U<<31) | 3981, (1U<<31) | 3994, (1U<<31) | 4866,
+ (1U<<31) | 4878, (1U<<31) | 3981, (1U<<31) | 3994, (1U<<31) | 5019, (1U<<31) | 5019, (1U<<31) | 5590, (1U<<31) | 5590, (1U<<31) | 5069,
+ (1U<<31) | 5069, (1U<<31) | 5640, (1U<<31) | 5640, (1U<<31) | 5019, (1U<<31) | 5019, (1U<<31) | 5590, (1U<<31) | 5590, (1U<<31) | 5069,
+ (1U<<31) | 5069, (1U<<31) | 5640, (1U<<31) | 5640, (1U<<31) | 5019, (1U<<31) | 5019, (1U<<31) | 5590, (1U<<31) | 5590, (1U<<31) | 5069,
+ (1U<<31) | 5069, (1U<<31) | 5640, (1U<<31) | 5640, (1U<<31) | 5019, (1U<<31) | 5019, (1U<<31) | 5590, (1U<<31) | 5590, (1U<<31) | 5069,
+ (1U<<31) | 5069, (1U<<31) | 5640, (1U<<31) | 5640, (1U<<31) | 5007, (1U<<31) | 5578, (1U<<31) | 4265, (1U<<31) | 4278, (1U<<31) | 5007,
+ (1U<<31) | 5578, (1U<<31) | 4265, (1U<<31) | 4278, (1U<<31) | 4846, (1U<<31) | 3960, (1U<<31) | 4846, (1U<<31) | 3960, (1U<<31) | 4846,
+ (1U<<31) | 3960, (1U<<31) | 4846, (1U<<31) | 3960, (1U<<31) | 4866, (1U<<31) | 4878, (1U<<31) | 3981, (1U<<31) | 3994, (1U<<31) | 4866,
+ (1U<<31) | 4878, (1U<<31) | 3981, (1U<<31) | 3994, (1U<<31) | 5019, (1U<<31) | 5019, (1U<<31) | 5590, (1U<<31) | 5590, (1U<<31) | 5069,
+ (1U<<31) | 5069, (1U<<31) | 5640, (1U<<31) | 5640, (1U<<31) | 5019, (1U<<31) | 5019, (1U<<31) | 5590, (1U<<31) | 5590, (1U<<31) | 5069,
+ (1U<<31) | 5069, (1U<<31) | 5640, (1U<<31) | 5640, (1U<<31) | 5019, (1U<<31) | 5019, (1U<<31) | 5590, (1U<<31) | 5590, (1U<<31) | 5069,
+ (1U<<31) | 5069, (1U<<31) | 5640, (1U<<31) | 5640, (1U<<31) | 5019, (1U<<31) | 5019, (1U<<31) | 5590, (1U<<31) | 5590, (1U<<31) | 5069,
+ (1U<<31) | 5069, (1U<<31) | 5640, (1U<<31) | 5640, (1U<<31) | 5007, (1U<<31) | 5578, (1U<<31) | 4265, (1U<<31) | 4278, (1U<<31) | 5007,
+ (1U<<31) | 5578, (1U<<31) | 4265, (1U<<31) | 4278, (1U<<31) | 4846, (1U<<31) | 3960, (1U<<31) | 4846, (1U<<31) | 3960, (1U<<31) | 4846,
+ (1U<<31) | 3960, (1U<<31) | 4846, (1U<<31) | 3960, (1U<<31) | 4866, (1U<<31) | 4878, (1U<<31) | 3981, (1U<<31) | 3994, (1U<<31) | 4866,
+ (1U<<31) | 4878, (1U<<31) | 3981, (1U<<31) | 3994, (1U<<31) | 5019, (1U<<31) | 5019, (1U<<31) | 5590, (1U<<31) | 5590, (1U<<31) | 5069,
+ (1U<<31) | 5069, (1U<<31) | 5640, (1U<<31) | 5640, (1U<<31) | 5019, (1U<<31) | 5019, (1U<<31) | 5590, (1U<<31) | 5590, (1U<<31) | 5069,
+ (1U<<31) | 5069, (1U<<31) | 5640, (1U<<31) | 5640, (1U<<31) | 5019, (1U<<31) | 5019, (1U<<31) | 5590, (1U<<31) | 5590, (1U<<31) | 5069,
+ (1U<<31) | 5069, (1U<<31) | 5640, (1U<<31) | 5640, (1U<<31) | 5019, (1U<<31) | 5019, (1U<<31) | 5590, (1U<<31) | 5590, (1U<<31) | 5069,
+ (1U<<31) | 5069, (1U<<31) | 5640, (1U<<31) | 5640, (1U<<31) | 5007, (1U<<31) | 5578, (1U<<31) | 4265, (1U<<31) | 4278, (1U<<31) | 5007,
+ (1U<<31) | 5578, (1U<<31) | 4265, (1U<<31) | 4278, (1U<<31) | 6137, 0x595959, 0x595959, 0x595959, 0x595959,
+ 0x2c2c2c2c, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x5959, 0x445959, 0x444a4a,
+ 0x40, 0x0, 0x442e0, 0x442e0, 0x442e0, 0x442e0, 0x2e2c, 0x2e3b,
+ 0x2e4a, 0x2e2c, 0x2e2c, 0x2e4a, 0x2e4a, 0x3b, 0x4a0, 0x2e2c0,
+ 0x2e3b0, 0x2e4a0, 0x2e4a0, 0x2e4a0, 0x2c2c2c, 0x3b3b3b, 0x4a4a4a, (1U<<31) | 6123,
+ 0x4a4a4a, (1U<<31) | 6121, (1U<<31) | 6121, 0x2c2c2c, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x3b3b3b,
+ 0x4a4a4a, 0x2c2c2c, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x3b3b3b, 0x4a4a4a, 0x2c2c59,
+ 0x44a7a, 0x44a7a, 0x2c4, 0x7a7a4a, 0x7a7a44, 0x7a7a4a, 0x7a7a44, 0x2c2c2c,
+ 0x2c2c44, 0x595959, 0x595944, 0x3b3b3b, 0x3b3b44, 0x4a4a4a, 0x4a4a44, 0x7a7a4a,
0x7a7a44, 0x7a7a4a, 0x7a7a44, 0x2c2c2c, 0x2c2c44, 0x595959, 0x595944, 0x3b3b3b,
- 0x3b3b44, 0x4a4a4a, 0x4a4a44, 0x7a7a4a, 0x7a7a44, 0x7a7a4a, 0x7a7a44, 0x2c2c2c,
- 0x2c2c44, 0x595959, 0x595944, 0x3b3b3b, 0x3b3b44, 0x4a4a4a, 0x4a4a44, 0x2c2c2c,
- 0x2c2c44, 0x595959, 0x595944, 0x3b3b3b, 0x3b3b44, 0x4a4a4a, 0x4a4a44, 0x2c2c2c,
- 0x2c2c44, 0x3b3b3b, 0x3b3b44, 0x4a4a4a, 0x4a4a44, 0x2c2c2c, 0x2c2c44, 0x3b3b3b,
- 0x3b3b44, 0x4a4a4a, 0x4a4a44, 0x47a4a, 0x47a4a, 0x2c4, 0x7a7a, 0x2c2c,
- 0x7a7a, 0x7a7a7a7a, 0x7a7a7a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c,
- 0x595959, 0x3b3b3b, 0x4a4a4a, 0x3b3b3b3b, 0x3b3b3b3b, 0x7a7a7a, 0x2c2c2c, 0x595959,
- 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x3b3b3b3b, 0x4a2c2c4a,
- 0x4a3b3b4a, 0x4a3b3b4a, 0x4a2c2c4a, 0x4a3b3b4a, 0x4a3b3b4a, 0x2c2c3b, 0x3b3b4a, 0x4a4a59,
- 0x2c2c3b, 0x3b3b4a, 0x4a4a59, 0x2c2c3b, 0x3b3b4a, 0x4a4a59, 0x2c2c3b, 0x3b3b4a,
- 0x4a4a59, 0x7a7a7a7a, 0x2c4a4a4a, 0x4a4a3b, 0x59594a, 0x59594a, 0x3b3b2c, 0x3b3b2c,
- 0x4a4a3b, 0x4a4a3b, 0x59594a, 0x3b3b2c, 0x4a4a3b, 0x5959, (1U<<31) | 5562, 0x4a4a,
- 0x7a7a, 0x7a7a, 0x7a7a, 0x7a7a, 0x7a7a, 0x2c2c2c, 0x595959, 0x59595959,
- 0x595959, 0x3b3b3b, 0x4a4a4a, 0x4a4a4a4a, 0x4a4a4a, 0x7a7a, 0x4a4a4a4a, 0x4a4a4a,
- 0x2c2c2c, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x4a4a4a, 0x4a4a4a, 0x2c2c2c, 0x3b3b3b,
- 0x4a4a4a, 0x2c2c2c, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x4a4a4a, (1U<<31) | 5560, 0x4a4a4a,
- (1U<<31) | 5558, (1U<<31) | 5558, 0x2c2c2c, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x3b3b3b, 0x4a4a4a,
- 0x4a4a4a, 0x4a2c4a, 0x4a3b4a, 0x4a2c4a, 0x4a4a4a, 0x3b4a, 0x2c3b, 0x3b4a,
- 0x4a59, 0x3b4a, 0x2c3b, 0x3b4a, 0x4a59, 0x555, 0x1f0, 0x2e0,
- 0x2e0, 0x2e0, 0x2e0, 0x2e0, 0x2e0, 0x2e0, 0x2e0, 0x555,
- 0x555, (1U<<31) | 5574, 0x444, 0x444, (1U<<31) | 5573, 0x5, 0x5, 0x5,
- 0x5, 0x1, 0x0, 0x1f0, (1U<<31) | 5574, 0x8a8a, 0x8a8a8a, 0x8a8a8a,
- 0x8a8a, 0x8a8a, 0x8a8a, 0x8a8a, 0x8a8a8a, 0x8a8a8a, 0x8a8a8a, 0x8a8a8a,
- 0x8a8a, 0x8a8a, 0x8a8a, 0x8a8a, 0x8a8a, 0x8a8a, 0x8a8a, 0x8a8a,
- 0x48a8a8a, (1U<<31) | 5246, (1U<<31) | 5246, (1U<<31) | 5246, (1U<<31) | 5246, 0x8a8a8a, 0x8a8a8a, 0x8a8a,
- 0x8a8a, (1U<<31) | 5246, (1U<<31) | 5246, (1U<<31) | 5246, (1U<<31) | 5246, (1U<<31) | 5246, 0x8a8a, 0x8a8a,
- 0x8a8a, 0x8a8a, 0x8a8a, 0x8a8a, 0x8a8a, 0x8a8a, 0x8a8a, (1U<<31) | 5246,
- 0x8a8a8a, 0x8a8a8a, 0x8a8a8a, (1U<<31) | 5246, (1U<<31) | 5246, 0x8a8a8a, 0x8a8a8a, (1U<<31) | 5246,
- (1U<<31) | 5246, (1U<<31) | 5246, (1U<<31) | 5246, (1U<<31) | 5246, (1U<<31) | 5246, 0x48a, 0x2e8a, 0x2e8a,
+ 0x3b3b44, 0x4a4a4a, 0x4a4a44, 0x2c2c2c, 0x2c2c44, 0x595959, 0x595944, 0x3b3b3b,
+ 0x3b3b44, 0x4a4a4a, 0x4a4a44, 0x2c2c2c, 0x2c2c44, 0x3b3b3b, 0x3b3b44, 0x4a4a4a,
+ 0x4a4a44, 0x2c2c2c, 0x2c2c44, 0x3b3b3b, 0x3b3b44, 0x4a4a4a, 0x4a4a44, 0x47a4a,
+ 0x47a4a, 0x2c4, 0x7a7a, 0x2c2c, 0x7a7a, 0x7a7a7a7a, 0x7a7a7a, 0x2c2c2c,
+ 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x3b3b3b3b,
+ 0x3b3b3b3b, 0x7a7a7a, 0x2c2c2c, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x595959,
+ 0x3b3b3b, 0x4a4a4a, 0x3b3b3b3b, 0x4a2c2c4a, 0x4a3b3b4a, 0x4a3b3b4a, 0x4a2c2c4a, 0x4a3b3b4a,
+ 0x4a3b3b4a, 0x2c2c3b, 0x3b3b4a, 0x4a4a59, 0x2c2c3b, 0x3b3b4a, 0x4a4a59, 0x2c2c3b,
+ 0x3b3b4a, 0x4a4a59, 0x2c2c3b, 0x3b3b4a, 0x4a4a59, 0x7a7a7a7a, 0x2c4a4a4a, 0x4a4a3b,
+ 0x59594a, 0x59594a, 0x3b3b2c, 0x3b3b2c, 0x4a4a3b, 0x4a4a3b, 0x59594a, 0x3b3b2c,
+ 0x4a4a3b, 0x5959, (1U<<31) | 6125, 0x4a4a, 0x7a7a, 0x7a7a, 0x7a7a, 0x7a7a,
+ 0x7a7a, 0x2c2c2c, 0x595959, 0x59595959, 0x595959, 0x3b3b3b, 0x4a4a4a, 0x4a4a4a4a,
+ 0x4a4a4a, 0x7a7a, 0x4a4a4a4a, 0x4a4a4a, 0x2c2c2c, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c,
+ 0x4a4a4a, 0x4a4a4a, 0x2c2c2c, 0x3b3b3b, 0x4a4a4a, 0x2c2c2c, 0x3b3b3b, 0x4a4a4a,
+ 0x2c2c2c, 0x4a4a4a, (1U<<31) | 6123, 0x4a4a4a, (1U<<31) | 6121, (1U<<31) | 6121, 0x2c2c2c, 0x3b3b3b,
+ 0x4a4a4a, 0x2c2c2c, 0x3b3b3b, 0x4a4a4a, 0x4a4a4a, 0x4a2c4a, 0x4a3b4a, 0x4a2c4a,
+ 0x4a4a4a, 0x3b4a, 0x2c3b, 0x3b4a, 0x4a59, 0x3b4a, 0x2c3b, 0x3b4a,
+ 0x4a59, 0x555, 0x1f0, 0x2e0, 0x2e0, 0x2e0, 0x2e0, 0x2e0,
+ 0x2e0, 0x2e0, 0x2e0, 0x555, 0x555, (1U<<31) | 6137, 0x444, 0x444,
+ (1U<<31) | 6136, 0x5, 0x5, 0x5, 0x5, 0x1, 0x0, 0x1f0,
+ (1U<<31) | 6137, 0x8a8a, 0x8a8a8a, 0x8a8a8a, 0x8a8a, 0x8a8a, 0x8a8a, 0x8a8a,
+ 0x8a8a8a, 0x8a8a8a, 0x8a8a8a, 0x8a8a8a, 0x8a8a, 0x8a8a, 0x8a8a, 0x8a8a,
+ 0x8a8a, 0x8a8a, 0x8a8a, 0x8a8a, 0x48a8a8a, (1U<<31) | 5809, (1U<<31) | 5809, (1U<<31) | 5809,
+ (1U<<31) | 5809, 0x8a8a8a, 0x8a8a8a, 0x8a8a, 0x8a8a, (1U<<31) | 5809, (1U<<31) | 5809, (1U<<31) | 5809,
+ (1U<<31) | 5809, (1U<<31) | 5809, 0x8a8a, 0x8a8a, 0x8a8a, 0x8a8a, 0x8a8a, 0x8a8a,
+ 0x8a8a, 0x8a8a, 0x8a8a, (1U<<31) | 5809, 0x8a8a8a, 0x8a8a8a, 0x8a8a8a, (1U<<31) | 5809,
+ (1U<<31) | 5809, 0x8a8a8a, 0x8a8a8a, (1U<<31) | 5809, (1U<<31) | 5809, (1U<<31) | 5809, (1U<<31) | 5809, (1U<<31) | 5809,
+ (1U<<31) | 5809, 0x48a, 0x2e8a, 0x2e8a, 0x2e8a, 0x2e8a, 0x2e8a, 0x2e8a,
0x2e8a, 0x2e8a, 0x2e8a, 0x2e8a, 0x2e8a, 0x2e8a, 0x2e8a, 0x2e8a,
- 0x2e8a, 0x2e8a, 0x2e8a, 0x2e8a, 0x2e8a, 0x2e8a, 0x2e8a0, 0x2e8a0,
- 0x2e8a0, 0x2e8a0, 0x2e8a0, 0x2e8a0, 0x2e8a0, 0x2e8a0, 0x2e8a0, 0x2e8a0,
- (1U<<31) | 5567, (1U<<31) | 4451, 0x50, 0x50, 0x50, 0x50, (1U<<31) | 5575, (1U<<31) | 5574,
- 0x0, 0x44, 0x4444, 0x4444, 0x4444, 0x4444, 0x44, 0x4,
- 0x44, 0x4, 0x4, 0x44, 0x4, (1U<<31) | 5570, 0x44, 0x4,
- 0x5, 0x2e89, 0x2e89, 0x52e4a, 0x52e4a, 0x2e4a, 0x2e4a, 0x2e890,
- 0x2e890, 0x52e4a0, 0x52e4a0, 0x2e4a0, 0x2e4a0, 0x888, 0x888, 0x898959,
- 0x898944, 0x7a7a4a, 0x7a7a44, 0x898959, 0x898944, 0x7a7a4a, 0x7a7a44, 0x898959,
- 0x898944, 0x7a7a4a, 0x7a7a44, 0x897a, 0x894a, 0x894a, 0x3b7a, 0x7a89,
- 0x7a7a, 0x597a, 0x4a89, 0x597a, 0x4a89, 0x898989, 0x7a7a7a, 0x595989,
- 0x4a4a7a, 0x898989, 0x7a7a7a, 0x898989, 0x7a7a7a, 0x8989, 0x8989, 0x7a7a,
- 0x7a7a, 0x8989, 0x7a7a, 0x48959, 0x47a4a, 0x8959, 0x7a4a, 0x8959,
- 0x7a4a, 0x45959, 0x4594a4a, 0x4a4a4a, 0x7a7a, (1U<<31) | 3061, (1U<<31) | 3061, 0x7a7a7,
- 0x0, (1U<<31) | 568, 0x70, 0x44a4a0, 0x4, 0x4, 0x4, 0x4,
+ 0x2e8a, 0x2e8a, 0x2e8a0, 0x2e8a0, 0x2e8a0, 0x2e8a0, 0x2e8a0, 0x2e8a0,
+ 0x2e8a0, 0x2e8a0, 0x2e8a0, 0x2e8a0, (1U<<31) | 6130, (1U<<31) | 5003, 0x50, 0x50,
+ 0x50, 0x50, (1U<<31) | 6138, (1U<<31) | 6137, 0x0, 0x44, 0x4444, 0x4444,
+ 0x4444, 0x4444, 0x44, 0x4, 0x44, 0x4, 0x4, 0x44,
+ 0x4, (1U<<31) | 6133, 0x44, 0x4, 0x5, 0x2e89, 0x2e89, 0x52e4a,
+ 0x52e4a, 0x2e4a, 0x2e4a, 0x2e890, 0x2e890, 0x52e4a0, 0x52e4a0, 0x2e4a0,
+ 0x2e4a0, 0x888, 0x888, 0x898959, 0x898944, 0x7a7a4a, 0x7a7a44, 0x898959,
+ 0x898944, 0x7a7a4a, 0x7a7a44, 0x898959, 0x898944, 0x7a7a4a, 0x7a7a44, 0x897a,
+ 0x894a, 0x894a, 0x3b7a, 0x7a89, 0x7a7a, 0x597a, 0x4a89, 0x597a,
+ 0x4a89, 0x898989, 0x7a7a7a, 0x595989, 0x4a4a7a, 0x898989, 0x7a7a7a, 0x898989,
+ 0x7a7a7a, 0x8989, 0x8989, 0x7a7a, 0x7a7a, 0x8989, 0x7a7a, 0x48959,
+ 0x47a4a, 0x8959, 0x7a4a, 0x8959, 0x7a4a, 0x45959, 0x4594a4a, 0x4a4a4a,
+ 0x7a7a, (1U<<31) | 3288, (1U<<31) | 3288, 0x7a7a7, 0x0, (1U<<31) | 550, 0x70, 0x44a4a0,
0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
- 0x4, 0x4, 0x4, 0x2f2f, 0x2f2f, 0x4447a0, 0x447a0, (1U<<31) | 3061,
- (1U<<31) | 3061, (1U<<31) | 3061, (1U<<31) | 3061, (1U<<31) | 3047, (1U<<31) | 3061, (1U<<31) | 3061, (1U<<31) | 3047, 0x4444f4,
- 0x44444f4, 0x44444f4, 0x4444f4, 0x4444f4, 0x4444f4, 0x4444f4, 0x4444f4, 0x4,
- 0x4, 0x42e4, 0x5e50, 0x40, 0x40, 0x50, 0x42e4, 0x42e4,
- 0x42e0, 0x52f4, 0x4, 0x2c2c2c, 0x2c2c2c2c, 0x4a4a4a, 0x595959, 0x3b3b3b,
- 0x2c2c2c, 0x2c2c2c2c, 0x2c2c2c, 0x2c2c2c, 0x4a4a4a, 0x595959, 0x3b3b3b, 0x2c2c2c,
- 0x4a4a4a, 0x595959, 0x3b3b3b, 0x2c2c59, (1U<<31) | 677, (1U<<31) | 4043, (1U<<31) | 4442, (1U<<31) | 865,
- (1U<<31) | 677, (1U<<31) | 4043, (1U<<31) | 4442, (1U<<31) | 865, (1U<<31) | 677, (1U<<31) | 4043, (1U<<31) | 4442, (1U<<31) | 865,
- 0x4a4a4a, (1U<<31) | 1375, (1U<<31) | 3443, (1U<<31) | 3771, (1U<<31) | 1528, 0x42c2c, 0x44a4a, 0x45959,
- 0x43b3b, 0x2c2c2c, 0x4a4a4a, 0x595959, 0x3b3b3b, 0x42c2c2c, (1U<<31) | 1397, 0x44a4a4a,
- (1U<<31) | 3421, 0x43b3b3b, (1U<<31) | 1550, 0x42c2c2c, (1U<<31) | 1397, 0x44a4a4a, (1U<<31) | 3421, 0x43b3b3b,
- (1U<<31) | 1550, (1U<<31) | 5215, (1U<<31) | 5193, (1U<<31) | 5215, (1U<<31) | 5215, (1U<<31) | 5193, (1U<<31) | 5193, 0x2c2c2c,
- (1U<<31) | 677, 0x4a4a4a, (1U<<31) | 4043, 0x3b3b3b, (1U<<31) | 865, 0x2c2c2c, (1U<<31) | 677, 0x4a4a4a,
- (1U<<31) | 4043, 0x3b3b3b, (1U<<31) | 865, 0x2c2c2c, (1U<<31) | 677, 0x4a4a4a, (1U<<31) | 4043, 0x3b3b3b,
- (1U<<31) | 865, 0x2c2c2c, (1U<<31) | 677, 0x4a4a4a, (1U<<31) | 4043, 0x3b3b3b, (1U<<31) | 865, 0x448989,
- 0x447a7a, 0x4898989, 0x47a7a7a, 0x4898989, 0x47a7a7a, (1U<<31) | 3949, (1U<<31) | 3871, 0x3b2c2c3b,
- 0x594a4a59, 0x2c59592c, 0x4a3b3b4a, 0x2c2c3b, 0x4a4a59, 0x59592c, 0x3b3b4a, 0x2c2c,
- (1U<<31) | 686, 0x4a4a, (1U<<31) | 4027, 0x3b3b, (1U<<31) | 874, 0x42e2c, 0x2e42c, 0x2e42c,
- 0x3b2c2c3b, 0x594a4a59, 0x4a3b3b4a, 0x2c2c2c2c, 0x4a4a4a4a, 0x3b3b3b3b, 0x3b2c2c3b, 0x594a4a59,
- 0x4a3b3b4a, 0x2c2c2c2c, 0x4a4a4a4a, 0x3b3b3b3b, 0x3b2c2c3b, 0x594a4a59, 0x4a3b3b4a, 0x3b2c2c3b,
- 0x594a4a59, 0x4a3b3b4a, 0x2c2c3b, 0x4a4a59, 0x3b3b4a, 0x2c2c2c, 0x4a4a4a, 0x3b3b3b,
+ 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2f2f,
+ 0x2f2f, 0x4447a0, 0x447a0, (1U<<31) | 3288, (1U<<31) | 3288, (1U<<31) | 3288, (1U<<31) | 3288, (1U<<31) | 3274,
+ (1U<<31) | 3288, (1U<<31) | 3288, (1U<<31) | 3274, 0x4444f4, 0x5554f5, 0x44444f4, 0x55554f5, 0x44444f4,
+ 0x55554f5, 0x4444f4, 0x5554f5, 0x4444f4, 0x5554f5, 0x4444f4, 0x5554f5, 0x4444f4,
+ 0x5554f5, 0x4444f4, 0x5554f5, 0x44444f4, 0x55554f5, 0x4, 0x4, 0x42e4,
+ 0x5e50, 0x40, 0x40, 0x50, 0x42e4, 0x42e4, 0x42e0, 0x52f4,
+ 0x4, 0x2c2c2c, 0x2c2c2c2c, 0x4a4a4a, 0x595959, 0x3b3b3b, 0x2c2c2c, 0x2c2c2c2c,
+ 0x2c2c2c, 0x2c2c2c, 0x4a4a4a, 0x595959, 0x3b3b3b, 0x2c2c2c, 0x4a4a4a, 0x595959,
+ 0x3b3b3b, 0x2c2c59, (1U<<31) | 659, (1U<<31) | 4595, (1U<<31) | 4994, (1U<<31) | 824, (1U<<31) | 659, (1U<<31) | 4595,
+ (1U<<31) | 4994, (1U<<31) | 824, (1U<<31) | 659, (1U<<31) | 4595, (1U<<31) | 4994, (1U<<31) | 824, 0x4a4a4a, (1U<<31) | 1622,
+ (1U<<31) | 3733, (1U<<31) | 4147, (1U<<31) | 1765, 0x42c2c, 0x44a4a, 0x45959, 0x43b3b, 0x2c2c2c,
+ 0x4a4a4a, 0x595959, 0x3b3b3b, 0x42c2c2c, (1U<<31) | 1644, 0x44a4a4a, (1U<<31) | 3711, 0x43b3b3b,
+ (1U<<31) | 1787, 0x42c2c2c, (1U<<31) | 1644, 0x44a4a4a, (1U<<31) | 3711, 0x43b3b3b, (1U<<31) | 1787, (1U<<31) | 5778,
+ (1U<<31) | 5756, (1U<<31) | 5778, (1U<<31) | 5778, (1U<<31) | 5756, (1U<<31) | 5756, 0x2c2c2c, (1U<<31) | 659, 0x4a4a4a,
+ (1U<<31) | 4595, 0x3b3b3b, (1U<<31) | 824, 0x2c2c2c, (1U<<31) | 659, 0x4a4a4a, (1U<<31) | 4595, 0x3b3b3b,
+ (1U<<31) | 824, 0x2c2c2c, (1U<<31) | 659, 0x4a4a4a, (1U<<31) | 4595, 0x3b3b3b, (1U<<31) | 824, 0x2c2c2c,
+ (1U<<31) | 659, 0x4a4a4a, (1U<<31) | 4595, 0x3b3b3b, (1U<<31) | 824, 0x448989, 0x447a7a, 0x4898989,
+ 0x47a7a7a, 0x4898989, 0x47a7a7a, (1U<<31) | 4435, (1U<<31) | 4291, 0x3b2c2c3b, 0x594a4a59, 0x2c59592c,
+ 0x4a3b3b4a, 0x2c2c3b, 0x4a4a59, 0x59592c, 0x3b3b4a, 0x2c2c, (1U<<31) | 668, 0x4a4a,
+ (1U<<31) | 4579, 0x3b3b, (1U<<31) | 833, 0x42e2c, 0x2e42c, 0x2e42c, 0x3b2c2c3b, 0x594a4a59,
+ 0x4a3b3b4a, 0x2c2c2c2c, 0x4a4a4a4a, 0x3b3b3b3b, 0x3b2c2c3b, 0x594a4a59, 0x4a3b3b4a, 0x2c2c2c2c,
+ 0x4a4a4a4a, 0x3b3b3b3b, 0x3b2c2c3b, 0x594a4a59, 0x4a3b3b4a, 0x3b2c2c3b, 0x594a4a59, 0x4a3b3b4a,
0x2c2c3b, 0x4a4a59, 0x3b3b4a, 0x2c2c2c, 0x4a4a4a, 0x3b3b3b, 0x2c2c3b, 0x4a4a59,
- 0x3b3b4a, 0x2c2c3b, 0x4a4a59, 0x3b3b4a, (1U<<31) | 1407, 0x4595959, 0x2c2c2c2c, 0x4a4a3b,
- (1U<<31) | 4034, 0x59594a, (1U<<31) | 4433, 0x3b3b2c, (1U<<31) | 856, 0x4a4a3b, (1U<<31) | 4034, 0x59594a,
- (1U<<31) | 4433, 0x3b3b2c, (1U<<31) | 856, 0x2c2c2c2c, 0x2c2c2c2c, 0x2c2c2c, 0x4a4a4a, 0x595959,
- 0x3b3b3b, 0x2c2c2c, 0x2c2c2c, 0x2c2c2c, 0x42c2c2c, 0x2c2c2c, 0x2c2c2c, 0x2c2c2c,
- 0x2c2c2c, 0x2c2c2c, 0x2e42c0, (1U<<31) | 1375, (1U<<31) | 1385, (1U<<31) | 3443, (1U<<31) | 3431, (1U<<31) | 1528,
- (1U<<31) | 1538, (1U<<31) | 1375, (1U<<31) | 1385, (1U<<31) | 3443, (1U<<31) | 3431, (1U<<31) | 1528, (1U<<31) | 1538, 0x2e42c0,
- 0x2c2c4a, 0x4a4a59, 0x3b3b59, 0x3b3b4a, 0x4a4a2c, 0x59592c, 0x2c2c4, 0x2c3b,
- 0x4a59, 0x3b4a, 0x2c3b, 0x4a59, 0x2c3b, 0x4a59, 0x3b4a, 0x3b4a,
- 0x2c3b, 0x4a59, 0x3b4a, 0x3f3f3f, 0x3f3f3f, 0x3f4, 0x3f4, 0x44e4,
- 0x544e4, 0x555e4, 0x3f3f3f3f, 0x42e, 0x1f, (1U<<31) | 5465, (1U<<31) | 5460, 0x1f1f,
- 0x40, 0x2e, 0x1f41f, 0x41f, 0x1f41f, 0x41f, 0x0, 0x3f3f3f,
- 0x3f3f3f, 0x2e40, (1U<<31) | 5449, (1U<<31) | 5446, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449,
- (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5446, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449,
- (1U<<31) | 5446, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5446, (1U<<31) | 5449, (1U<<31) | 5446, (1U<<31) | 5449, (1U<<31) | 5449,
- (1U<<31) | 5446, (1U<<31) | 5446, (1U<<31) | 2962, (1U<<31) | 4426, (1U<<31) | 2962, (1U<<31) | 4426, 0x595959, 0x5a5a5a,
- 0x5b5b5b, 0x595959, 0x5a5a5a, 0x5b5b5b, 0x595959, 0x5a5a5a, 0x5b5b5b, 0x595959,
- 0x5a5a5a, 0x5b5b5b, 0x5959, 0x25959, 0x8a8a8a, 0x7b7b7b, (1U<<31) | 5246, 0x7b7b7b7b,
- 0x28a8a8a, 0x27b7b7b, 0x8a7a, 0x8a4a, 0x7b4b, 0x8a4a, 0x7b4b, 0x27b7b7b,
- 0x8a8a8a, 0x7b7b7b, 0x8a8a8a, 0x7b7b7b, 0x2e2d, 0x592e89, 0x5a2e8a, 0x4a2e7a,
- 0x4b2e7b, 0x89592e0, 0x8a5a2e0, 0x7a4a2e0, 0x7b4b2e0, 0x8a8a8a, 0x7b7b7b, 0x8a8a8a,
- 0x7b7b7b, 0x8a4, 0x7b4, 0x5a5a4, 0x5a5a4, 0x5a5a4, 0x7b7b, 0x48a8a,
- 0x47b7b, 0x7b7b, 0x598989, 0x5a8a8a, 0x4a7a7a, 0x4b7b7b, 0x89894, 0x8a8a4,
- 0x7a7a4, 0x7b7b4, 0x89894, 0x8a8a4, 0x7a7a4, 0x7b7b4, 0x89894, 0x8a8a4,
- 0x7a7a4, 0x7b7b4, 0x0, 0x0, (1U<<31) | 288, (1U<<31) | 344, (1U<<31) | 583, (1U<<31) | 628,
- (1U<<31) | 489, (1U<<31) | 546, (1U<<31) | 380, (1U<<31) | 424, (1U<<31) | 310, (1U<<31) | 322, (1U<<31) | 595, (1U<<31) | 640,
- (1U<<31) | 501, (1U<<31) | 513, (1U<<31) | 392, (1U<<31) | 436, 0x4a2e4a, 0x4b2e4b, 0x592e59, 0x5a2e5a,
- 0x4a4a2e0, 0x4b4b2e0, 0x59592e0, 0x5a5a2e0, 0x22d2d3c, 0x4b4b3c, 0x3c3c2d, 0x4b4b3c,
- 0x3c3c2d, 0x2d2d2d, 0x3c3c3c, 0x2d2d2d2d, 0x4b4b4b, 0x4b7b7b, 0x4b4b4b, 0x3c3c3c,
+ 0x3b3b4a, 0x2c2c2c, 0x4a4a4a, 0x3b3b3b, 0x2c2c3b, 0x4a4a59, 0x3b3b4a, 0x2c2c3b,
+ 0x4a4a59, 0x3b3b4a, (1U<<31) | 1654, 0x4595959, 0x2c2c2c2c, 0x4a4a3b, (1U<<31) | 4586, 0x59594a,
+ (1U<<31) | 4985, 0x3b3b2c, (1U<<31) | 815, 0x4a4a3b, (1U<<31) | 4586, 0x59594a, (1U<<31) | 4985, 0x3b3b2c,
+ (1U<<31) | 815, 0x2c2c2c2c, 0x2c2c2c2c, 0x2c2c2c, 0x4a4a4a, 0x595959, 0x3b3b3b, 0x2c2c2c,
+ 0x2c2c2c, 0x2c2c2c, 0x42c2c2c, 0x2c2c2c, 0x2c2c2c, 0x2c2c2c, 0x2c2c2c, 0x2c2c2c,
+ 0x2e42c0, (1U<<31) | 1622, (1U<<31) | 1632, (1U<<31) | 3733, (1U<<31) | 3721, (1U<<31) | 1765, (1U<<31) | 1775, (1U<<31) | 1622,
+ (1U<<31) | 1632, (1U<<31) | 3733, (1U<<31) | 3721, (1U<<31) | 1765, (1U<<31) | 1775, 0x2e42c0, 0x2c2c4a, 0x4a4a59,
+ 0x3b3b59, 0x3b3b4a, 0x4a4a2c, 0x59592c, 0x2c2c4, 0x2c3b, 0x4a59, 0x3b4a,
+ 0x2c3b, 0x4a59, 0x2c3b, 0x4a59, 0x3b4a, 0x3b4a, 0x2c3b, 0x4a59,
+ 0x3b4a, 0x3f4, 0x3f4, 0x44e4, 0x544e4, 0x555e4, 0x3f3f3f3f, 0x40,
+ 0x2e, (1U<<31) | 6028, (1U<<31) | 6023, (1U<<31) | 4942, 0x2e, 0x1f41f, 0x442e440, 0x41f,
+ 0x0, 0x3f3f3f, 0x3f3f3f, 0x2e40, 0xaf1f, 0xaf1f, (1U<<31) | 6012, (1U<<31) | 6009,
+ (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012,
+ (1U<<31) | 6009, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6009, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6009,
+ (1U<<31) | 6012, (1U<<31) | 6009, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6009, (1U<<31) | 6009, (1U<<31) | 3189, (1U<<31) | 4965,
+ 0x595959, 0x5a5a5a, 0x5b5b5b, 0x595959, 0x5a5a5a, 0x5b5b5b, 0x595959, 0x5a5a5a,
+ 0x5b5b5b, 0x595959, 0x5a5a5a, 0x5b5b5b, 0x5959, 0x25959, 0x8a8a8a, 0x7b7b7b,
+ (1U<<31) | 5809, 0x7b7b7b7b, 0x28a8a8a, 0x27b7b7b, 0x8a7a, 0x8a4a, 0x7b4b, 0x8a4a,
+ 0x7b4b, 0x27b7b7b, 0x8a8a8a, 0x7b7b7b, 0x8a8a8a, 0x7b7b7b, 0x2e2d, 0x592e89,
+ 0x5a2e8a, 0x4a2e7a, 0x4b2e7b, 0x89592e0, 0x8a5a2e0, 0x7a4a2e0, 0x7b4b2e0, 0x8a8a8a,
+ 0x7b7b7b, 0x8a8a8a, 0x7b7b7b, 0x8a4, 0x7b4, 0x5a5a4, 0x5a5a4, 0x5a5a4,
+ 0x7b7b, 0x48a8a, 0x47b7b, 0x7b7b, 0x598989, 0x5a8a8a, 0x4a7a7a, 0x4b7b7b,
+ 0x89894, 0x8a8a4, 0x7a7a4, 0x7b7b4, 0x89894, 0x8a8a4, 0x7a7a4, 0x7b7b4,
+ 0x89894, 0x8a8a4, 0x7a7a4, 0x7b7b4, 0x0, 0x0, (1U<<31) | 320, (1U<<31) | 366,
+ (1U<<31) | 565, (1U<<31) | 610, (1U<<31) | 471, (1U<<31) | 528, (1U<<31) | 392, (1U<<31) | 426, (1U<<31) | 332, (1U<<31) | 344,
+ (1U<<31) | 577, (1U<<31) | 622, (1U<<31) | 483, (1U<<31) | 495, (1U<<31) | 404, (1U<<31) | 438, 0x4a2e4a, 0x4b2e4b,
+ 0x592e59, 0x5a2e5a, 0x4a4a2e0, 0x4b4b2e0, 0x59592e0, 0x5a5a2e0, 0x22d2d3c, 0x4b4b3c,
+ 0x3c3c2d, 0x4b4b3c, 0x3c3c2d, 0x2d2d2d2d, 0x4b4b4b, 0x4b7b7b, 0x4b4b4b, 0x3c3c3c,
0x3c3c3c, 0x4b4b4b, 0x3c3c3c, 0x3c3c3c, 0x2d2d3c, 0x3c3c4b, 0x2d4, 0x3c3c3c,
0x3c3c3c, 0x3c3c3c, 0x2d2d5a, 0x2d2d2d, 0x2d2d2d, 0x4b4b4b, 0x3c3c3c, 0x4a4b4b,
0x595a5a, 0x3b3c3c, 0x44b4b, 0x45a5a, 0x43c3c, 0x4a4a4a, 0x4b4b4b, 0x595959,
0x5a5a5a, 0x4a4b4b, 0x3b3c3c, 0x44b4b, 0x43c3c, 0x4a4a4a, 0x4b4b4b, 0x4a4b4b,
0x595a5a, 0x3b3c3c, 0x44b4b, 0x45a5a, 0x43c3c, 0x4a4a4a, 0x4b4b4b, 0x595959,
- 0x5a5a5a, 0x2d2d2d, 0x3c3c3c, 0x48b8b8b, 0x47c7c7c, 0x259, 0x25a, 0x25b,
- 0x34a, 0x34b, 0x34c, 0x4898919, 0x48a8a1a, 0x448b8b1b, 0x47a7a1a, 0x47b7b1b,
- 0x447c7c1c, 0x458989, 0x447a7a, 0x457a7a, 0x4894, 0x4895, 0x4894, 0x4895,
- 0x47a4, 0x47a5, 0x47a4, 0x47a5, 0x447a7a, 0x458989, 0x457a7a, 0x42c2c3b,
- 0x42d2d3c, (1U<<31) | 1463, 0x48b8b8b, 0x47c7c7c, 0x428b8b8b, 0x437c7c7c, 0x48919, 0x48a1a,
- 0x48b1b, 0x47a1a, 0x47b1b, 0x47c1c, (1U<<31) | 1141, (1U<<31) | 1483, (1U<<31) | 1119, (1U<<31) | 1494,
- (1U<<31) | 1273, (1U<<31) | 1240, (1U<<31) | 1251, (1U<<31) | 1262, (1U<<31) | 1185, (1U<<31) | 1163, (1U<<31) | 1229, (1U<<31) | 1207,
- (1U<<31) | 1174, (1U<<31) | 1152, (1U<<31) | 1218, (1U<<31) | 1196, (1U<<31) | 1086, (1U<<31) | 1053, (1U<<31) | 1097, (1U<<31) | 1064,
- (1U<<31) | 1075, (1U<<31) | 1042, (1U<<31) | 1130, (1U<<31) | 1108, 0x442e4b20, 0x442e4c30, 0x442e5b20, 0x442e5b20,
- 0x1b1b1b, 0x1d1d1d, (1U<<31) | 147, 0x1c1c1c, 0x1b1b4, 0x1d1d4, (1U<<31) | 154, 0x1c1c4,
- 0x1b1b4, 0x1d1d4, (1U<<31) | 154, 0x1c1c4, (1U<<31) | 1341, (1U<<31) | 1296, 0x42489892, 0x4247a7a2,
- 0x32c2c2c, 0x42d2d2d, (1U<<31) | 4392, 0x24a4a4a, 0x24b4b4b, 0x34c4c4c, 0x2898989, 0x28a8a8a,
- 0x28b8b8b, 0x27a7a7a, 0x27b7b7b, 0x37c7c7c, 0x2595959, 0x25a5a5a, 0x25b5b5b, 0x23b3b3b,
- 0x33c3c3c, 0x43d3d3d, 0x24a4a4a, 0x24b4b4b, 0x34c4c4c, 0x2595959, 0x25a5a5a, 0x25b5b5b,
- 0x437c4c7c, 0x24a894a, 0x424b8b4b, 0x27a897a, 0x427b8b7b, 0x2598959, 0x25a8a5a, 0x425b8b5b,
- 0x24a894a, 0x24a8a4a, 0x424b8b4b, 0x2598959, 0x25a8a5a, 0x425b8b5b, 0x24a7a4a, 0x24b7b4b,
- 0x434c7c4c, 0x428b7b8b, 0x2597a59, 0x25a7a5a, 0x425b7b5b, 0x24a7a4a, 0x24b7b4b, 0x434c7c4c,
- 0x2597a59, 0x25a7a5a, 0x425b7b5b, 0x428b5b8b, 0x27a597a, 0x27a5a7a, 0x427b5b7b, (1U<<31) | 1307,
- (1U<<31) | 1330, 0x24a894a, 0x424b8b4b, 0x2598959, 0x25a8a5a, 0x425b8b5b, 0x24a894a, 0x24a8a4a,
- 0x424b8b4b, 0x2598959, 0x25a8a5a, 0x425b8b5b, 0x434c7c4c, 0x2597a59, 0x25a7a5a, 0x425b7b5b,
- 0x24a7a4a, 0x24b7b4b, 0x434c7c4c, 0x2597a59, 0x25a7a5a, 0x425b7b5b, 0x437c4c7c, 0x428b5b8b,
- 0x27a597a, 0x27a5a7a, 0x427b5b7b, (1U<<31) | 1341, (1U<<31) | 1296, 0x32c2c2c, 0x42d2d2d, (1U<<31) | 4392,
- 0x24a4a4a, 0x24b4b4b, 0x34c4c4c, 0x2898989, 0x28a8a8a, 0x28b8b8b, 0x27a7a7a, 0x27b7b7b,
- 0x37c7c7c, 0x2595959, 0x25a5a5a, 0x25b5b5b, 0x23b3b3b, 0x33c3c3c, 0x43d3d3d, (1U<<31) | 266,
- (1U<<31) | 277, (1U<<31) | 1030, (1U<<31) | 244, (1U<<31) | 255, (1U<<31) | 1471, (1U<<31) | 1018, (1U<<31) | 1006, 0x24892,
- 0x247a2, 0x2898989, 0x28a8a8a, 0x428b8b8b, 0x27a7a7a, 0x27b7b7b, 0x437c7c7c, (1U<<31) | 1341,
- (1U<<31) | 1296, 0x28948989, 0x28a48a8a, (1U<<31) | 1354, 0x27a47a7a, 0x27b47b7b, (1U<<31) | 1507, (1U<<31) | 1318,
- (1U<<31) | 1284, (1U<<31) | 1341, (1U<<31) | 1296, (1U<<31) | 1341, (1U<<31) | 1296, (1U<<31) | 1341, (1U<<31) | 1296, 0x22c4a2c,
- 0x22c4b2c, 0x32c4c2c, 0x24a2e0, 0x24b2e0, 0x34c2e0, 0x23b4a3b, 0x23b4b3b, 0x33c4c3c,
- 0x24a2e0, 0x24b2e0, 0x34c2e0, 0x22c592c, 0x22c5a2c, 0x22c5b2c, 0x2592e0, 0x25a2e0,
- 0x25b2e0, 0x24a594a, 0x24a5a4a, 0x24b5b4b, 0x2592e0, 0x25a2e0, 0x25b2e0, 0x23b593b,
- 0x23b5a3b, 0x23b5b3b, 0x2592e0, 0x25a2e0, 0x25b2e0, 0x22c3b2c, 0x32c3c2c, 0x42d3d2d,
+ 0x5a5a5a, 0x48b8b8b, 0x47c7c7c, 0x259, 0x25a, 0x25b, 0x34a, 0x34b,
+ 0x34c, 0x4898919, 0x48a8a1a, 0x448b8b1b, 0x47a7a1a, 0x47b7b1b, 0x447c7c1c, 0x4a4a,
+ 0x4b4b, 0x4c4c, 0x5959, 0x5a5a, 0x5b5b, 0x458989, 0x447a7a, 0x457a7a,
+ 0x4894, 0x4895, 0x4894, 0x4895, 0x47a4, 0x47a5, 0x47a4, 0x47a5,
+ 0x447a7a, 0x458989, 0x457a7a, 0x42c2c3b, 0x42d2d3c, (1U<<31) | 1700, 0x48b8b8b, 0x47c7c7c,
+ 0x428b8b8b, 0x437c7c7c, 0x48919, 0x48a1a, 0x48b1b, 0x47a1a, 0x47b1b, 0x47c1c,
+ (1U<<31) | 1388, (1U<<31) | 1720, (1U<<31) | 1366, (1U<<31) | 1731, (1U<<31) | 1520, (1U<<31) | 1487, (1U<<31) | 1498, (1U<<31) | 1509,
+ (1U<<31) | 1432, (1U<<31) | 1410, (1U<<31) | 1476, (1U<<31) | 1454, (1U<<31) | 1421, (1U<<31) | 1399, (1U<<31) | 1465, (1U<<31) | 1443,
+ (1U<<31) | 1333, (1U<<31) | 1300, (1U<<31) | 1344, (1U<<31) | 1311, (1U<<31) | 1322, (1U<<31) | 1289, (1U<<31) | 1377, (1U<<31) | 1355,
+ 0x442e4b20, 0x442e4c30, 0x442e5b20, 0x442e5b20, 0x1b1b1b, 0x1d1d1d, (1U<<31) | 171, 0x1c1c1c,
+ 0x1b1b4, 0x1d1d4, (1U<<31) | 178, 0x1c1c4, 0x1b1b4, 0x1d1d4, (1U<<31) | 178, 0x1c1c4,
+ (1U<<31) | 1588, (1U<<31) | 1543, 0x42489892, 0x4247a7a2, (1U<<31) | 80, 0x24a894a, 0x424b8b4b, 0x27a897a,
+ 0x427b8b7b, 0x2598959, 0x25a8a5a, 0x425b8b5b, 0x24a894a, 0x24a8a4a, 0x424b8b4b, 0x2598959,
+ 0x25a8a5a, 0x425b8b5b, 0x24a7a4a, 0x24b7b4b, 0x434c7c4c, 0x428b7b8b, 0x2597a59, 0x25a7a5a,
+ 0x425b7b5b, 0x24a7a4a, 0x24b7b4b, 0x434c7c4c, 0x2597a59, 0x25a7a5a, 0x425b7b5b, 0x27a597a,
+ (1U<<31) | 1554, (1U<<31) | 1577, 0x24a894a, 0x424b8b4b, 0x2598959, 0x25a8a5a, 0x425b8b5b, 0x24a894a,
+ 0x24a8a4a, 0x424b8b4b, 0x2598959, 0x25a8a5a, 0x425b8b5b, 0x434c7c4c, 0x2597a59, 0x25a7a5a,
+ 0x425b7b5b, 0x24a7a4a, 0x24b7b4b, 0x434c7c4c, 0x2597a59, 0x25a7a5a, 0x425b7b5b, 0x27a597a,
+ (1U<<31) | 1588, (1U<<31) | 1543, (1U<<31) | 80, (1U<<31) | 298, (1U<<31) | 309, (1U<<31) | 1277, (1U<<31) | 276, (1U<<31) | 287,
+ (1U<<31) | 1708, (1U<<31) | 1265, (1U<<31) | 1253, 0x24892, 0x247a2, (1U<<31) | 1147, (1U<<31) | 1207, (1U<<31) | 1123,
+ (1U<<31) | 1219, (1U<<31) | 1195, (1U<<31) | 1159, (1U<<31) | 1171, (1U<<31) | 1183, (1U<<31) | 1003, (1U<<31) | 979, (1U<<31) | 1099,
+ (1U<<31) | 1075, (1U<<31) | 991, (1U<<31) | 967, (1U<<31) | 1087, (1U<<31) | 1063, (1U<<31) | 955, (1U<<31) | 943, (1U<<31) | 1051,
+ (1U<<31) | 1027, (1U<<31) | 1039, (1U<<31) | 1015, (1U<<31) | 1135, (1U<<31) | 1111, 0x2898989, 0x28a8a8a, 0x428b8b8b,
+ 0x27a7a7a, 0x27b7b7b, 0x437c7c7c, (1U<<31) | 1588, (1U<<31) | 1543, 0x28948989, 0x28a48a8a, (1U<<31) | 1601,
+ 0x27a47a7a, 0x27b47b7b, (1U<<31) | 1744, (1U<<31) | 1565, (1U<<31) | 1531, (1U<<31) | 1588, (1U<<31) | 1543, (1U<<31) | 1588,
+ (1U<<31) | 1543, (1U<<31) | 1588, (1U<<31) | 1543, 0x22c4a2c, 0x22c4b2c, 0x32c4c2c, 0x24a2e0, 0x24b2e0,
+ 0x34c2e0, 0x23b4a3b, 0x23b4b3b, 0x33c4c3c, 0x24a2e0, 0x24b2e0, 0x34c2e0, 0x22c592c,
+ 0x22c5a2c, 0x22c5b2c, 0x2592e0, 0x25a2e0, 0x25b2e0, 0x24a594a, 0x2592e0, 0x25a2e0,
+ 0x25b2e0, 0x23b593b, 0x23b5a3b, 0x23b5b3b, 0x2592e0, 0x25a2e0, 0x25b2e0, 0x22c3b2c,
0x23b2e0, 0x33c2e0, 0x43d2e0, 0x22c4a2c, 0x22c4b2c, 0x32c4c2c, 0x24a2e0, 0x24b2e0,
0x34c2e0, 0x23b4a3b, 0x23b4b3b, 0x33c4c3c, 0x24a2e0, 0x24b2e0, 0x34c2e0, 0x22c592c,
0x22c5a2c, 0x22c5b2c, 0x2592e0, 0x25a2e0, 0x25b2e0, 0x24a594a, 0x24a5a4a, 0x24b5b4b,
@@ -8391,586 +8424,626 @@
0x24a2e0, 0x24b2e0, 0x34c2e0, 0x22c592c, 0x22c5a2c, 0x22c5b2c, 0x2592e0, 0x25a2e0,
0x25b2e0, 0x24a594a, 0x24a5a4a, 0x24b5b4b, 0x2592e0, 0x25a2e0, 0x25b2e0, 0x23b593b,
0x23b5a3b, 0x23b5b3b, 0x2592e0, 0x25a2e0, 0x25b2e0, 0x22c3b2c, 0x32c3c2c, 0x42d3d2d,
- 0x23b2e0, 0x33c2e0, 0x43d2e0, (1U<<31) | 816, (1U<<31) | 1417, (1U<<31) | 4390, (1U<<31) | 572, (1U<<31) | 617,
- (1U<<31) | 1352, (1U<<31) | 478, (1U<<31) | 535, (1U<<31) | 1505, (1U<<31) | 2981, (1U<<31) | 2969, 0x28948989, 0x28a48a8a,
- (1U<<31) | 1354, 0x27a47a7a, 0x27b47b7b, (1U<<31) | 1507, (1U<<31) | 2981, (1U<<31) | 2969, 0x28948989, 0x28a48a8a,
- (1U<<31) | 1354, 0x27a47a7a, 0x27b47b7b, (1U<<31) | 1507, (1U<<31) | 2981, (1U<<31) | 2969, (1U<<31) | 607, (1U<<31) | 652,
- (1U<<31) | 1364, (1U<<31) | 525, (1U<<31) | 558, (1U<<31) | 1517, (1U<<31) | 1341, (1U<<31) | 1296, (1U<<31) | 1341, (1U<<31) | 1296,
- (1U<<31) | 1341, (1U<<31) | 1296, 0x27a3b7a, 0x27b3b7b, 0x437c3c7c, 0x23b47a3b, 0x23b47b3b, 0x33c47c3c,
- (1U<<31) | 300, (1U<<31) | 356, (1U<<31) | 846, (1U<<31) | 404, (1U<<31) | 448, (1U<<31) | 468, (1U<<31) | 224, (1U<<31) | 836,
- (1U<<31) | 1560, (1U<<31) | 300, (1U<<31) | 356, (1U<<31) | 846, (1U<<31) | 404, (1U<<31) | 448, (1U<<31) | 468, (1U<<31) | 224,
- (1U<<31) | 836, (1U<<31) | 1560, 0x32c2c3, 0x42d2d4, (1U<<31) | 4400, (1U<<31) | 266, (1U<<31) | 277, (1U<<31) | 1030,
- (1U<<31) | 244, (1U<<31) | 255, (1U<<31) | 1471, (1U<<31) | 1018, (1U<<31) | 1006, (1U<<31) | 300, (1U<<31) | 356, (1U<<31) | 846,
- (1U<<31) | 404, (1U<<31) | 448, (1U<<31) | 468, (1U<<31) | 224, (1U<<31) | 836, (1U<<31) | 1560, (1U<<31) | 300, (1U<<31) | 356,
- (1U<<31) | 846, (1U<<31) | 404, (1U<<31) | 448, (1U<<31) | 468, (1U<<31) | 224, (1U<<31) | 836, (1U<<31) | 1560, 0x48b8b8b,
- 0x47c7c7c, 0x48b8b8b, 0x47c7c7c, 0x48b8b8b, 0x47c7c7c, 0x4c4c3d, (1U<<31) | 881, 0x4c4c3d,
- (1U<<31) | 881, (1U<<31) | 790, 0x3d3d3d, 0x5a8a8a, 0x5b8b8b, 0x5a5a5a, 0x5b5b5b, 0x3b3b3b,
- 0x3c3c3c, 0x3d3d3d, 0x2c2c2c, 0x2d2d2d, (1U<<31) | 790, 0x4c7c7c, 0x4c4c4c, (1U<<31) | 797,
- 0x3d3d4c, 0x3d3d3d, 0x3d3d3d, 0x3d3d3d, 0x44a4a, 0x44b4b, 0x44c4c, 0x45959,
- 0x45a5a, 0x45b5b, 0x4a4a4a, 0x4b4b4b, 0x4c4c4c, 0x595959, 0x5a5a5a, 0x5b5b5b,
- 0x44a4a, 0x44b4b, 0x44c4c, 0x45959, 0x45a5a, 0x45b5b, 0x4a4a4a, 0x4b4b4b,
- 0x4c4c4c, 0x595959, 0x5a5a5a, 0x5b5b5b, (1U<<31) | 804, (1U<<31) | 790, 0x4a4c4c, 0x595b5b,
- 0x3b3d3d, 0x44c4c, 0x45b5b, 0x43d3d, 0x4c4c4c, 0x5b5b5b, 0x3b3b3b, 0x3c3c3c,
- 0x3d3d3d, 0x4a4c4c, 0x595959, 0x595a5a, 0x595b5b, 0x3b3d3d, 0x44c4c, 0x45959,
- 0x45a5a, 0x45b5b, 0x43d3d, 0x4c4c4c, 0x595959, 0x5a5a5a, 0x5b5b5b, 0x3b3b3b,
- 0x3c3c3c, 0x3d3d3d, 0x4a4c4c, 0x595b5b, 0x3b3d3d, 0x44c4c, 0x45b5b, 0x43d3d,
- 0x4c4c4c, 0x5b5b5b, 0x3b3b3b, 0x3c3c3c, 0x3d3d3d, (1U<<31) | 790, 0x3d3d3d, (1U<<31) | 3443,
- (1U<<31) | 3483, (1U<<31) | 3557, (1U<<31) | 3771, (1U<<31) | 3801, (1U<<31) | 3831, 0x2898989, 0x28a8a8a, 0x28b8b8b,
- 0x27a7a7a, 0x27b7b7b, 0x37c7c7c, (1U<<31) | 607, (1U<<31) | 525, 0x428b8b8b, 0x437c7c7c, (1U<<31) | 1341,
- (1U<<31) | 1296, 0x2898989, 0x28a8a8a, 0x28b8b8b, 0x27a7a7a, 0x27b7b7b, 0x37c7c7c, (1U<<31) | 607,
- (1U<<31) | 525, 0x428b8b8b, 0x437c7c7c, (1U<<31) | 1341, (1U<<31) | 1296, (1U<<31) | 3997, (1U<<31) | 3547, (1U<<31) | 3811,
- (1U<<31) | 3929, (1U<<31) | 4007, (1U<<31) | 3493, (1U<<31) | 3821, (1U<<31) | 3919, (1U<<31) | 3967, (1U<<31) | 3761, (1U<<31) | 3987,
- (1U<<31) | 3791, (1U<<31) | 3889, (1U<<31) | 3453, (1U<<31) | 3899, (1U<<31) | 3463, 0x442e4b20, 0x442e4c30, 0x442e5b20,
- 0x442e5b20, (1U<<31) | 3957, (1U<<31) | 3751, (1U<<31) | 3977, (1U<<31) | 3781, (1U<<31) | 3879, (1U<<31) | 3411, (1U<<31) | 3909,
- (1U<<31) | 3473, 0x48b8b, 0x47c7c, 0x48b8b8b, 0x47c7c7c, 0x4489894, 0x447a7a4, 0x4894,
- 0x4895, 0x4894, 0x4895, 0x47a4, 0x47a5, 0x47a4, 0x47a5, 0x47777,
- 0x48888, (1U<<31) | 4017, (1U<<31) | 3939, (1U<<31) | 4017, (1U<<31) | 3939, 0x4a4a4a4a, 0x4b4b4b4b, 0x4c4c4c4c,
- 0x4a4a4a4a, 0x4b4b4b4b, 0x4c4c4c4c, 0x4a4a4a4a, 0x4b4b4b4b, 0x4c4c4c4c, 0x4a4a4a4a, 0x4b4b4b4b,
- 0x4c4c4c4c, 0x4a4a4a4a, 0x4b4b4b4b, 0x4c4c4c4c, 0x3b3b3b3b, 0x3c3c3c3c, 0x3d3d3d3d, (1U<<31) | 5206,
- (1U<<31) | 5237, (1U<<31) | 5255, 0x7a4a7a7a, 0x7b4b7b7b, 0x7c4c7c7c, 0x59595959, 0x5a5a5a5a, 0x5b5b5b5b,
- 0x2c2c2c2c, 0x2d2d2d2d, (1U<<31) | 788, 0x5b8b8b, 0x4c7c7c, 0x59595959, 0x5a5a5a5a, 0x5b5b5b5b,
- 0x59595959, 0x5a5a5a5a, 0x5b5b5b5b, 0x44a4a4a, 0x44b4b4b, 0x44c4c4c, 0x4595959, 0x45a5a5a,
- 0x45b5b5b, 0x43b3b3b, 0x43c3c3c, 0x43d3d3d, 0x44a4a4a, 0x44b4b4b, 0x44c4c4c, 0x4595959,
- 0x45a5a5a, 0x45b5b5b, 0x43b3b3b, 0x43c3c3c, 0x43d3d3d, 0x444, 0x555, 0x444,
+ 0x23b2e0, 0x33c2e0, 0x43d2e0, (1U<<31) | 554, (1U<<31) | 599, (1U<<31) | 1599, (1U<<31) | 460, (1U<<31) | 517,
+ (1U<<31) | 1742, (1U<<31) | 3208, (1U<<31) | 3196, 0x28948989, 0x28a48a8a, (1U<<31) | 1601, 0x27a47a7a, 0x27b47b7b,
+ (1U<<31) | 1744, (1U<<31) | 3208, (1U<<31) | 3196, 0x28948989, 0x28a48a8a, (1U<<31) | 1601, 0x27a47a7a, 0x27b47b7b,
+ (1U<<31) | 1744, (1U<<31) | 3208, (1U<<31) | 3196, (1U<<31) | 589, (1U<<31) | 634, (1U<<31) | 1611, (1U<<31) | 507, (1U<<31) | 540,
+ (1U<<31) | 1754, (1U<<31) | 1588, (1U<<31) | 1543, (1U<<31) | 4527, (1U<<31) | 3881, (1U<<31) | 4209, (1U<<31) | 4404, (1U<<31) | 4548,
+ (1U<<31) | 3816, (1U<<31) | 4230, (1U<<31) | 4383, (1U<<31) | 4464, (1U<<31) | 4126, (1U<<31) | 4506, (1U<<31) | 4178, (1U<<31) | 4320,
+ (1U<<31) | 3743, (1U<<31) | 4341, (1U<<31) | 3764, (1U<<31) | 4443, (1U<<31) | 4105, (1U<<31) | 4485, (1U<<31) | 4157, (1U<<31) | 4299,
+ (1U<<31) | 3690, (1U<<31) | 4362, (1U<<31) | 3785, (1U<<31) | 1588, (1U<<31) | 1543, (1U<<31) | 1588, (1U<<31) | 1543, 0x27a3b7a,
+ 0x27b3b7b, 0x437c3c7c, 0x23b47a3b, 0x23b47b3b, 0x33c47c3c, (1U<<31) | 298, (1U<<31) | 309, (1U<<31) | 1277,
+ (1U<<31) | 276, (1U<<31) | 287, (1U<<31) | 1708, (1U<<31) | 1265, (1U<<31) | 1253, 0x48b8b8b, 0x47c7c7c, 0x48b8b8b,
+ 0x47c7c7c, 0x48b8b8b, 0x47c7c7c, 0x4c4c3d, (1U<<31) | 840, 0x4c4c3d, (1U<<31) | 840, 0x5a8a8a,
+ 0x5b8b8b, 0x5a5a5a, 0x5b5b5b, 0x3b3b3b, 0x3c3c3c, 0x3d3d3d, 0x2c2c2c, 0x2d2d2d,
+ (1U<<31) | 779, 0x4c7c7c, 0x4c4c4c, (1U<<31) | 786, 0x3d3d4c, 0x3d3d3d, 0x3d3d3d, 0x3d3d3d,
+ 0x2c2c2c, 0x2d2d2d, (1U<<31) | 779, (1U<<31) | 793, (1U<<31) | 779, 0x4a4c4c, 0x595b5b, 0x3b3d3d,
+ 0x44c4c, 0x45b5b, 0x43d3d, 0x4c4c4c, 0x5b5b5b, 0x3b3b3b, 0x3c3c3c, 0x3d3d3d,
+ 0x4a4c4c, 0x595959, 0x595a5a, 0x595b5b, 0x3b3d3d, 0x44c4c, 0x45959, 0x45a5a,
+ 0x45b5b, 0x43d3d, 0x4c4c4c, 0x595959, 0x5a5a5a, 0x5b5b5b, 0x3b3b3b, 0x3c3c3c,
+ 0x3d3d3d, 0x4a4c4c, 0x595b5b, 0x3b3d3d, 0x44c4c, 0x45b5b, 0x43d3d, 0x4c4c4c,
+ 0x5b5b5b, 0x3b3b3b, 0x3c3c3c, 0x3d3d3d, (1U<<31) | 3733, (1U<<31) | 3806, (1U<<31) | 3903, (1U<<31) | 4147,
+ (1U<<31) | 4199, (1U<<31) | 4251, 0x2898989, 0x28a8a8a, 0x28b8b8b, 0x27a7a7a, 0x27b7b7b, 0x37c7c7c,
+ (1U<<31) | 589, (1U<<31) | 507, 0x428b8b8b, 0x437c7c7c, (1U<<31) | 1588, (1U<<31) | 1543, 0x2898989, 0x28a8a8a,
+ 0x28b8b8b, 0x27a7a7a, 0x27b7b7b, 0x37c7c7c, (1U<<31) | 589, (1U<<31) | 507, 0x428b8b8b, 0x437c7c7c,
+ (1U<<31) | 1588, (1U<<31) | 1543, (1U<<31) | 4538, (1U<<31) | 3892, (1U<<31) | 4220, (1U<<31) | 4415, (1U<<31) | 4559, (1U<<31) | 3827,
+ (1U<<31) | 4241, (1U<<31) | 4394, (1U<<31) | 4475, (1U<<31) | 4137, (1U<<31) | 4517, (1U<<31) | 4189, (1U<<31) | 4331, (1U<<31) | 3754,
+ (1U<<31) | 4352, (1U<<31) | 3775, 0x442e4b20, 0x442e4c30, 0x442e5b20, 0x442e5b20, (1U<<31) | 4454, (1U<<31) | 4116,
+ (1U<<31) | 4496, (1U<<31) | 4168, (1U<<31) | 4310, (1U<<31) | 3701, (1U<<31) | 4373, (1U<<31) | 3796, 0x49f2f, 0x48b8b,
+ 0x47c7c, 0x48b8b8b, 0x47c7c7c, 0x49f2f, 0x4489894, 0x447a7a4, 0x4894, 0x4895,
+ 0x4894, 0x4895, 0x47a4, 0x47a5, 0x47a4, 0x47a5, 0x47777, 0x48888,
+ (1U<<31) | 4569, (1U<<31) | 4425, (1U<<31) | 4569, (1U<<31) | 4425, 0x4a4a4a4a, 0x4b4b4b4b, 0x4c4c4c4c, 0x4a4a4a4a,
+ 0x4b4b4b4b, 0x4c4c4c4c, 0x4a4a4a4a, 0x4b4b4b4b, 0x4c4c4c4c, 0x4a4a4a4a, 0x4b4b4b4b, 0x4c4c4c4c,
+ 0x4a4a4a4a, 0x4b4b4b4b, 0x4c4c4c4c, 0x3b3b3b3b, 0x3c3c3c3c, 0x3d3d3d3d, (1U<<31) | 5769, (1U<<31) | 5800,
+ (1U<<31) | 5818, 0x7a4a7a7a, 0x7b4b7b7b, 0x7c4c7c7c, 0x59595959, 0x5a5a5a5a, 0x5b5b5b5b, 0x2c2c2c2c,
+ 0x2d2d2d2d, (1U<<31) | 777, 0x5b8b8b, 0x4c7c7c, 0x59595959, 0x5a5a5a5a, 0x5b5b5b5b, 0x59595959,
+ 0x5a5a5a5a, 0x5b5b5b5b, 0x2c2c1c, 0x2d2d1d, (1U<<31) | 770, 0x444, 0x555, 0x444,
0x555, 0x444, 0x555, 0x444, 0x555, 0x2e0, 0x2e0, 0x2e0,
0x2e0, 0x2e0, 0x42e0, 0x52e0, 0x4, 0x5, 0x40, 0x50,
0x2e0, 0x2e0, 0x2e0, 0x2e0, 0x40, 0x50, 0x20, 0x2e40,
- 0x2e0, 0x4442, 0x4452, 0x4440, 0x4450, 0x0, 0x0, (1U<<31) | 776,
- (1U<<31) | 5444, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449,
- (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 811, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449,
- (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 4373,
- (1U<<31) | 3676, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5431, (1U<<31) | 5449,
- (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449,
- (1U<<31) | 4386, (1U<<31) | 4386, (1U<<31) | 4386, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 4386, (1U<<31) | 4386, (1U<<31) | 5449,
- (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 4386, (1U<<31) | 4386, (1U<<31) | 4386, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449,
- (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449,
- (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, (1U<<31) | 5449, 0x442e0, 0x2e2e0, 0x4440, 0x2595959,
+ 0x2e0, 0x4442, 0x4452, 0x4440, 0x4450, 0x0, 0x0, (1U<<31) | 758,
+ (1U<<31) | 6007, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012,
+ (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 800, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012,
+ (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 4925,
+ (1U<<31) | 4023, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 5994, (1U<<31) | 6012,
+ (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012,
+ (1U<<31) | 4938, (1U<<31) | 4938, (1U<<31) | 4938, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 4938, (1U<<31) | 4938, (1U<<31) | 6012,
+ (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 4938, (1U<<31) | 4938, (1U<<31) | 4938, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012,
+ (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012,
+ (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, (1U<<31) | 6012, 0x442e0, 0x2e2e0, 0x4440, 0x2595959,
0x25a5a5a, 0x25b5b5b, 0x40, 0x50, 0x4, 0x5, 0x4, 0x5,
- 0x4, 0x4, 0x45, (1U<<31) | 1570, (1U<<31) | 3687, (1U<<31) | 3841, (1U<<31) | 1570, (1U<<31) | 3687,
- (1U<<31) | 3841, 0x44, 0x55, 0x5, (1U<<31) | 3841, 0x2e0, 0x0, 0x2e0,
- 0x2e0, 0x2e2e, 0x2e2e2e, 0x0, 0x4a4a4a, 0x4a4a4a, 0x4a4a4a, 0x24a4a4a,
- 0x4a4a4a, 0x4a4a4a, 0x4a4a4a4a, 0x2e, 0x27a7a7a, 0x27a7a7a, 0x7a7a4, 0x7a7a4,
- 0x7a7a4, 0x7a7a4, 0x7a7a4, 0x7a7a4, (1U<<31) | 5233, (1U<<31) | 5440, (1U<<31) | 5434, (1U<<31) | 5202,
- 0x7a4, 0x7a5, (1U<<31) | 5233, (1U<<31) | 5202, 0x7a4, 0x7a5, 0x2e0, 0x7a7a7a,
- 0x7a7a7a, 0x7a7a7a, 0x7a7a7a, 0x7a4, (1U<<31) | 812, 0x7a7a, 0x7a7a, 0x7a7a,
- 0x7a7a, 0x0, 0x2e0, 0x7a7a4, 0x7a7a4, 0x7a7a4, 0x7a7a4, 0x7a7a4,
- 0x7a7a4, 0x2e0, 0x2898989, 0x2898989, 0x89894, 0x89894, 0x89894, 0x89894,
- 0x89894, 0x89894, 0x894a, 0x897a, 0x7a4a, 0x894, 0x895, 0x897a7a,
- 0x894a, 0x7a4a, 0x894, 0x895, 0x0, 0x2e2c2c0, 0x898989, 0x898989,
- 0x0, 0x898989, 0x898989, 0x894, 0x4a4a3b, 0x3b3b2c, 0x3b3b2c, 0x2c2c2c,
- 0x3b3b3b, 0x0, 0x3b3b4a, 0x2c4, 0x3b3b3b, 0x3b3b3b, 0x2c2c59, 0x4a4a4a,
- 0x595959, 0x3b3b3b, 0x44a4a, 0x45959, 0x43b3b, 0x4a4a4a, 0x3b3b3b, 0x44a4a,
- 0x43b3b, 0x4a4a4a, 0x595959, 0x3b3b3b, 0x44a4a, 0x45959, 0x43b3b, 0x2c2c2c,
- 0x3b3b3b, 0x89894, 0x89894, 0x89894, 0x89894, 0x89894, 0x89894, 0x898989,
- 0x7a7a7a, 0x898989, 0x7a7a7a, 0x898989, 0x7a7a7a, 0x2e2c, 0x442e0, 0x440,
- (1U<<31) | 5224, 0x7a7a7a7a, 0x2898989, 0x27a7a7a, 0x27a7a7a, 0x22c2c3b, 0x4a4a3b, 0x2c2c2c2c,
- 0x3b3b, 0x59594, 0x59594, 0x59594, 0x48989, 0x47a7a, 0x4898989, 0x47a7a7a,
- 0x344, 0x444, 0x244, 0x555, 0x242c42c4, 0x242c42c4, 0x242c42c4, 0x242c42c4,
- 0x242c42c4, 0x242c42c4, (1U<<31) | 234, 0x22c2c4, 0x22c2c4, 0x22c2c4, 0x22c2c4, 0x22c2c4,
- 0x22c2c4, 0x22c2c2c, 0x2c5959, 0x225959, 0x595959, 0x22595959, (1U<<31) | 5446, (1U<<31) | 5446,
- (1U<<31) | 5446, (1U<<31) | 5449, 0x4a4a4a, (1U<<31) | 5449, 0x3b3b3b, (1U<<31) | 5449, 0x3b3b3b, (1U<<31) | 5449,
- 0x4a4a4a, (1U<<31) | 5449, 0x3b3b3b, (1U<<31) | 5449, 0x3b3b3b, (1U<<31) | 5449, 0x2c2c3b, (1U<<31) | 5449,
- 0x3b3b3b, (1U<<31) | 5449, 0x2c2c2c, (1U<<31) | 5449, 0x2c2c2c, (1U<<31) | 5449, 0x4a4a4a, (1U<<31) | 5449,
- 0x3b3b3b, (1U<<31) | 2962, (1U<<31) | 4426, 0x444, 0x555, 0x4442, 0x2e0, 0x4442,
- 0x3b7a, 0x3b7b, 0x47a3b, 0x47b3b, 0x22c2c2c, 0x22d2d2d, (1U<<31) | 216, 0x22c2c2c,
- 0x22d2d2d, (1U<<31) | 216, 0x2c2c2c, 0x2d2d2d, (1U<<31) | 790, 0x0, 0x0, 0x40,
- 0x50, 0x40, 0x50, 0x40, 0x2e40, 0x2e50, 0x2e40, 0x2e50,
- 0x20, 0x4, 0x0, 0x45, 0x8989, 0x8a8a, 0x7a7a, 0x7b7b,
- 0x8989, 0x7a7a, 0x22c2c2c, 0x24a4a4a, 0x2595959, 0x22c2c2c, 0x24a4a4a, 0x2595959,
- 0x23b3b3b, 0x23b3b3b, (1U<<31) | 414, (1U<<31) | 458, (1U<<31) | 334, (1U<<31) | 366, 0x2c4a, 0x2c59,
- 0x2c3b, 0x4a59, 0x2c4a, 0x2c59, 0x2c3b, 0x4a59, 0x3b4a, 0x3b59,
- 0x3b4a, 0x3b59, 0x2c3b, 0x4a59, 0x3b4a, 0x4a4a4a4a, 0x594a4a59, 0x594a4a59,
- 0x4a4a4a4a, 0x594a4a59, 0x594a4a59, 0x4a3b3b4a, 0x3b3b3b3b, 0x4a3b3b4a, 0x3b3b3b3b, 0x4a3b3b4a,
- 0x4a3b3b4a, 0x2c2c2c2c, 0x2c2c2c, 0x22c2c, 0x4a4a4a, 0x24a4a, 0x595959, 0x25959,
- 0x3b3b3b, 0x23b3b, 0x2c2c2c, 0x4a4a4a, 0x595959, 0x3b3b3b, 0x2c2c2c, 0x4a4a4a,
- 0x595959, 0x3b3b3b, 0x442e0, 0x442e0, 0x442e0, 0x442e0, 0x442e0, 0x442e0,
- 0x442e0, 0x442e0, 0x442e0, 0x442e0, 0x442e0, 0x442e0, 0x4440, 0x4,
- 0x44, 0x2e2e, 0x44f0, 0x0, 0x4f0, 0x40, 0x4444, (1U<<31) | 3119,
- 0x4f0, 0x4f0, 0x4f4, 0x4f0, 0x4, 0x4, 0x4, 0x44,
- 0x44f, 0xcf4f, 0x4f4, 0x4f4, 0x4f4, 0x2e4f0, 0x2e4f0, 0x2e4f0,
- 0x2e4f0, 0x2e4f0, 0x44f4, 0x4f4, 0x4f0, 0x4f0, 0x44f0, 0x44f0,
- 0x44f4, 0x44f0, 0x4f4, 0x44f0, 0xcf4f0, 0x44f0, 0x2e4f0, 0x440,
- 0x44f0, 0x44f0, 0xcf4f0, 0x40, 0x44f0, 0x2e4f0, 0x444, 0x0,
- 0x4f0, 0x4f4, 0x4f4, 0x2e, 0x444, 0
+ 0x4, 0x4, 0x45, (1U<<31) | 1797, (1U<<31) | 4034, (1U<<31) | 4261, (1U<<31) | 1797, (1U<<31) | 4034,
+ (1U<<31) | 4261, 0x44, 0x55, 0x5, (1U<<31) | 4261, 0x2e0, 0x0, 0x2e0,
+ 0x2e0, 0x2e2e, 0x0, 0x4a4a4a, 0x4a4a4a, 0x4a4a4a, 0x24a4a4a, 0x4a4a4a,
+ 0x4a4a4a, 0x4a4a4a4a, 0x2e, 0x27a7a7a, 0x27a7a7a, 0x7a7a4, 0x7a7a4, 0x7a7a4,
+ 0x7a7a4, 0x7a7a4, 0x7a7a4, (1U<<31) | 5796, (1U<<31) | 6003, (1U<<31) | 5997, (1U<<31) | 5765, 0x7a4,
+ 0x7a5, (1U<<31) | 5796, (1U<<31) | 5765, 0x7a4, 0x7a5, 0x2e0, 0x7a7a7a, 0x7a7a7a,
+ 0x7a7a7a, 0x7a7a7a, 0x7a4, (1U<<31) | 801, 0x7a7a, 0x7a7a, 0x7a7a, 0x7a7a,
+ 0x0, 0x2e0, 0x7a7a4, 0x7a7a4, 0x7a7a4, 0x7a7a4, 0x7a7a4, 0x7a7a4,
+ 0x2e0, 0x2898989, 0x2898989, 0x89894, 0x89894, 0x89894, 0x89894, 0x89894,
+ 0x89894, 0x894a, 0x897a, 0x7a4a, 0x894, 0x895, 0x897a7a, 0x894a,
+ 0x7a4a, 0x894, 0x895, 0x0, 0x2e2c2c0, 0x898989, 0x898989, 0x0,
+ 0x898989, 0x898989, 0x894, 0x4a4a3b, 0x3b3b2c, 0x3b3b2c, 0x0, 0x3b3b4a,
+ 0x2c4, 0x3b3b3b, 0x3b3b3b, 0x2c2c59, 0x4a4a4a, 0x595959, 0x3b3b3b, 0x44a4a,
+ 0x45959, 0x43b3b, 0x4a4a4a, 0x3b3b3b, 0x44a4a, 0x43b3b, 0x4a4a4a, 0x595959,
+ 0x3b3b3b, 0x44a4a, 0x45959, 0x43b3b, 0x89894, 0x89894, 0x89894, 0x89894,
+ 0x89894, 0x89894, 0x898989, 0x7a7a7a, 0x898989, 0x7a7a7a, 0x898989, 0x7a7a7a,
+ 0x2e2c, 0x442e0, 0x440, (1U<<31) | 5787, 0x7a7a7a7a, 0x2898989, 0x27a7a7a, 0x27a7a7a,
+ 0x22c2c3b, 0x4a4a3b, 0x2c2c2c2c, 0x3b3b, 0x59594, 0x59594, 0x59594, 0x48989,
+ 0x47a7a, 0x4898989, 0x47a7a7a, 0x344, 0x444, 0x244, 0x555, 0x242c42c4,
+ 0x242c42c4, 0x242c42c4, 0x242c42c4, 0x242c42c4, 0x242c42c4, (1U<<31) | 266, 0x22c2c4, 0x22c2c4,
+ 0x22c2c4, 0x22c2c4, 0x22c2c4, 0x22c2c4, 0x22c2c2c, 0x2c5959, 0x225959, 0x595959,
+ 0x22595959, (1U<<31) | 6009, (1U<<31) | 6009, (1U<<31) | 6009, (1U<<31) | 6012, 0x4a4a4a, (1U<<31) | 6012, 0x3b3b3b,
+ (1U<<31) | 6012, 0x3b3b3b, (1U<<31) | 6012, 0x4a4a4a, (1U<<31) | 6012, 0x3b3b3b, (1U<<31) | 6012, 0x3b3b3b,
+ (1U<<31) | 6012, 0x2c2c3b, (1U<<31) | 6012, 0x3b3b3b, (1U<<31) | 6012, 0x2c2c2c, (1U<<31) | 6012, 0x2c2c2c,
+ (1U<<31) | 6012, 0x4a4a4a, (1U<<31) | 6012, 0x3b3b3b, (1U<<31) | 3189, (1U<<31) | 4965, 0x444, 0x555,
+ 0x4442, 0x2e0, 0x4442, 0x3b7a, 0x3b7b, 0x47a3b, 0x47b3b, 0x22c2c2c,
+ 0x22d2d2d, (1U<<31) | 258, 0x22c2c2c, 0x22d2d2d, (1U<<31) | 258, 0x2c2c2c, 0x2d2d2d, (1U<<31) | 779,
+ 0x0, 0x0, 0x40, 0x50, 0x40, 0x50, 0x40, 0x2e40,
+ 0x2e50, 0x2e40, 0x2e50, 0x20, 0x4, 0x0, 0x45, 0x8989,
+ 0x8a8a, 0x7a7a, 0x7b7b, 0x8989, 0x7a7a, (1U<<31) | 416, (1U<<31) | 450, (1U<<31) | 356,
+ (1U<<31) | 378, 0x2c4a, 0x2c59, 0x2c3b, 0x4a59, 0x2c4a, 0x2c59, 0x2c3b,
+ 0x4a59, 0x3b4a, 0x3b59, 0x3b4a, 0x3b59, 0x2c3b, 0x4a59, 0x3b4a,
+ 0x4a4a4a4a, 0x594a4a59, 0x594a4a59, 0x4a4a4a4a, 0x594a4a59, 0x594a4a59, 0x4a3b3b4a, 0x3b3b3b3b,
+ 0x4a3b3b4a, 0x3b3b3b3b, 0x4a3b3b4a, 0x4a3b3b4a, 0x2c2c2c2c, 0x2c2c2c, 0x4a4a4a, 0x595959,
+ 0x3b3b3b, 0x2c2c2c, 0x4a4a4a, 0x595959, 0x3b3b3b, 0x442e0, 0x442e0, 0x442e0,
+ 0x442e0, 0x442e0, 0x442e0, 0x442e0, 0x442e0, 0x442e0, 0x442e0, 0x442e0,
+ 0x442e0, 0x4440, 0x4, 0x44, 0x2e2e, 0x44f0, 0x0, 0x4f0,
+ 0x40, 0x4444, (1U<<31) | 3346, 0x4f0, 0x4f0, 0x4f4, 0x4f0, 0x4,
+ 0x4, 0x4, 0x44, 0x44f, 0xcf4f, 0x4f4, 0x4f4, 0x4f4,
+ 0x2e4f0, 0x2e4f0, 0x2e4f0, 0x2e4f0, 0x2e4f0, 0x44f4, 0x4f4, 0x4f0,
+ 0x4f0, 0x44f0, 0x44f0, 0x44f4, 0x44f0, 0x4f4, 0x44f0, 0xcf4f0,
+ 0x44f0, 0x2e4f0, 0x440, 0x44f0, 0x44f0, 0xcf4f0, 0x40, 0x44f0,
+ 0x2e4f0, 0x444, 0x0, 0x4f0, 0x4f4, 0x4f4, 0x2e, 0x444, 0
};
static const unsigned char IIT_LongEncodingTable[] = {
/* 0 */ 0, 4, 4, 15, 0, 15, 0, 15, 0, 15, 0, 1, 1, 0,
/* 14 */ 0, 4, 4, 15, 3, 15, 3, 1, 1, 0,
- /* 24 */ 0, 15, 0, 10, 4, 4, 4, 4, 4, 4, 4, 1, 1, 0,
- /* 38 */ 0, 15, 2, 10, 4, 4, 4, 1, 1, 0,
- /* 48 */ 21, 15, 2, 1, 15, 2, 15, 2, 1, 0,
- /* 58 */ 15, 2, 15, 2, 15, 2, 15, 2, 1, 0,
- /* 68 */ 0, 15, 3, 33, 3, 31, 3, 1, 0,
- /* 77 */ 0, 15, 3, 34, 1, 0, 4, 31, 3, 1, 0,
- /* 88 */ 0, 15, 3, 15, 12, 4, 31, 3, 1, 0,
- /* 98 */ 15, 1, 15, 12, 15, 1, 4, 4, 1, 0,
- /* 108 */ 15, 1, 15, 1, 15, 1, 4, 4, 4, 1, 0,
- /* 119 */ 7, 27, 3, 7, 7, 4, 4, 1, 0,
- /* 128 */ 21, 1, 5, 1, 0,
- /* 133 */ 21, 15, 1, 1, 15, 1, 15, 1, 0,
- /* 142 */ 0, 19, 15, 1, 0,
- /* 147 */ 16, 1, 16, 1, 16, 1, 0,
- /* 154 */ 4, 16, 1, 16, 1, 0,
- /* 160 */ 0, 15, 4, 15, 12, 15, 17, 1, 0,
- /* 169 */ 2, 18, 1, 0,
- /* 173 */ 15, 1, 25, 1, 0,
- /* 178 */ 36, 1, 36, 1, 36, 1, 0,
- /* 185 */ 21, 12, 4, 36, 1, 12, 4, 12, 4, 36, 1, 0,
- /* 197 */ 37, 1, 37, 1, 37, 1, 0,
- /* 204 */ 21, 13, 4, 37, 1, 13, 4, 13, 4, 37, 1, 0,
- /* 216 */ 16, 2, 16, 2, 16, 2, 2, 0,
- /* 224 */ 11, 3, 11, 3, 11, 3, 11, 3, 2, 0,
- /* 234 */ 12, 2, 12, 2, 4, 12, 2, 4, 2, 0,
- /* 244 */ 10, 7, 10, 7, 10, 7, 10, 4, 4, 2, 0,
- /* 255 */ 11, 7, 11, 7, 11, 7, 11, 4, 4, 2, 0,
- /* 266 */ 9, 8, 9, 8, 9, 8, 9, 5, 4, 2, 0,
- /* 277 */ 10, 8, 10, 8, 10, 8, 10, 5, 4, 2, 0,
- /* 288 */ 10, 4, 10, 4, 14, 2, 10, 4, 10, 4, 2, 0,
- /* 300 */ 10, 4, 10, 4, 10, 4, 10, 4, 2, 0,
- /* 310 */ 10, 4, 10, 4, 14, 2, 9, 5, 10, 4, 2, 0,
- /* 322 */ 10, 4, 10, 4, 14, 2, 10, 5, 10, 4, 2, 0,
- /* 334 */ 10, 7, 10, 7, 10, 7, 10, 4, 2, 0,
- /* 344 */ 11, 4, 11, 4, 14, 2, 11, 4, 11, 4, 2, 0,
- /* 356 */ 11, 4, 11, 4, 11, 4, 11, 4, 2, 0,
- /* 366 */ 11, 7, 11, 7, 11, 7, 11, 4, 2, 0,
- /* 376 */ 27, 4, 2, 0,
- /* 380 */ 9, 5, 9, 5, 14, 2, 10, 4, 9, 5, 2, 0,
- /* 392 */ 9, 5, 9, 5, 14, 2, 9, 5, 9, 5, 2, 0,
- /* 404 */ 9, 5, 9, 5, 9, 5, 9, 5, 2, 0,
- /* 414 */ 9, 8, 9, 8, 9, 8, 9, 5, 2, 0,
- /* 424 */ 10, 5, 10, 5, 14, 2, 10, 4, 10, 5, 2, 0,
- /* 436 */ 10, 5, 10, 5, 14, 2, 10, 5, 10, 5, 2, 0,
- /* 448 */ 10, 5, 10, 5, 10, 5, 10, 5, 2, 0,
- /* 458 */ 10, 8, 10, 8, 10, 8, 10, 5, 2, 0,
- /* 468 */ 11, 5, 11, 5, 11, 5, 11, 5, 2, 0,
- /* 478 */ 10, 7, 10, 7, 10, 7, 4, 10, 7, 2, 0,
- /* 489 */ 10, 7, 10, 7, 14, 2, 10, 4, 10, 7, 2, 0,
- /* 501 */ 10, 7, 10, 7, 14, 2, 9, 5, 10, 7, 2, 0,
- /* 513 */ 10, 7, 10, 7, 14, 2, 10, 5, 10, 7, 2, 0,
- /* 525 */ 10, 7, 10, 7, 10, 7, 10, 7, 2, 0,
- /* 535 */ 11, 7, 11, 7, 11, 7, 4, 11, 7, 2, 0,
- /* 546 */ 11, 7, 11, 7, 14, 2, 11, 4, 11, 7, 2, 0,
- /* 558 */ 11, 7, 11, 7, 11, 7, 11, 7, 2, 0,
- /* 568 */ 27, 7, 2, 0,
- /* 572 */ 9, 8, 9, 8, 9, 8, 4, 9, 8, 2, 0,
- /* 583 */ 9, 8, 9, 8, 14, 2, 10, 4, 9, 8, 2, 0,
- /* 595 */ 9, 8, 9, 8, 14, 2, 9, 5, 9, 8, 2, 0,
- /* 607 */ 9, 8, 9, 8, 9, 8, 9, 8, 2, 0,
- /* 617 */ 10, 8, 10, 8, 10, 8, 4, 10, 8, 2, 0,
- /* 628 */ 10, 8, 10, 8, 14, 2, 10, 4, 10, 8, 2, 0,
- /* 640 */ 10, 8, 10, 8, 14, 2, 10, 5, 10, 8, 2, 0,
- /* 652 */ 10, 8, 10, 8, 10, 8, 10, 8, 2, 0,
- /* 662 */ 11, 2, 11, 2, 11, 2, 11, 2, 11, 2, 11, 2, 11, 2, 0,
- /* 677 */ 21, 12, 2, 4, 12, 2, 12, 2, 0,
- /* 686 */ 21, 12, 2, 4, 12, 2, 0,
- /* 693 */ 18, 4, 14, 2, 14, 2, 14, 2, 0,
- /* 702 */ 21, 4, 14, 2, 14, 2, 4, 14, 2, 0,
- /* 712 */ 21, 5, 14, 2, 14, 2, 4, 14, 2, 0,
- /* 722 */ 21, 4, 14, 2, 14, 2, 4, 4, 14, 2, 0,
- /* 733 */ 21, 5, 14, 2, 14, 2, 4, 4, 14, 2, 0,
- /* 744 */ 14, 2, 14, 2, 4, 4, 4, 14, 2, 0,
- /* 754 */ 21, 4, 4, 14, 2, 0,
- /* 760 */ 14, 2, 14, 2, 4, 4, 5, 14, 2, 0,
- /* 770 */ 21, 5, 5, 14, 2, 0,
- /* 776 */ 0, 17, 17, 14, 2, 0,
- /* 782 */ 14, 2, 18, 14, 2, 0,
- /* 788 */ 16, 2, 16, 2, 16, 2, 16, 2, 0,
- /* 797 */ 13, 3, 16, 2, 16, 2, 0,
- /* 804 */ 11, 5, 16, 2, 16, 2, 0,
- /* 811 */ 17, 17, 17, 2, 0,
- /* 816 */ 12, 2, 12, 2, 12, 2, 12, 2, 3, 0,
- /* 826 */ 0, 5, 4, 4, 4, 3, 3, 3, 3, 0,
- /* 836 */ 12, 3, 12, 3, 12, 3, 12, 3, 3, 0,
- /* 846 */ 12, 4, 12, 4, 12, 4, 12, 4, 3, 0,
- /* 856 */ 21, 12, 2, 4, 11, 3, 11, 3, 0,
- /* 865 */ 21, 11, 3, 4, 11, 3, 11, 3, 0,
- /* 874 */ 21, 11, 3, 4, 11, 3, 0,
- /* 881 */ 16, 2, 13, 3, 13, 3, 0,
- /* 888 */ 15, 3, 33, 3, 31, 3, 1, 15, 3, 0,
- /* 898 */ 15, 3, 34, 1, 0, 4, 31, 3, 1, 15, 3, 0,
- /* 910 */ 15, 3, 15, 12, 4, 31, 3, 1, 15, 3, 0,
- /* 921 */ 15, 3, 15, 3, 12, 2, 12, 2, 12, 2, 12, 2, 15, 3, 0,
- /* 936 */ 15, 3, 15, 3, 12, 2, 12, 2, 12, 2, 15, 3, 0,
- /* 949 */ 15, 3, 15, 3, 12, 2, 12, 2, 15, 3, 0,
- /* 960 */ 15, 3, 25, 3, 0,
- /* 965 */ 15, 3, 25, 3, 25, 3, 0,
- /* 972 */ 15, 3, 26, 3, 0,
- /* 977 */ 15, 3, 26, 3, 26, 3, 0,
- /* 984 */ 15, 1, 25, 1, 4, 0,
- /* 990 */ 12, 4, 12, 4, 36, 1, 4, 0,
- /* 998 */ 13, 4, 13, 4, 37, 1, 4, 0,
- /* 1006 */ 10, 7, 10, 7, 10, 7, 10, 4, 4, 2, 4, 0,
- /* 1018 */ 9, 8, 9, 8, 9, 8, 9, 5, 4, 2, 4, 0,
- /* 1030 */ 11, 8, 11, 8, 11, 8, 11, 5, 4, 2, 4, 0,
- /* 1042 */ 10, 4, 10, 4, 14, 2, 10, 4, 2, 4, 0,
- /* 1053 */ 9, 5, 9, 5, 14, 2, 10, 4, 2, 4, 0,
- /* 1064 */ 10, 5, 10, 5, 14, 2, 10, 4, 2, 4, 0,
- /* 1075 */ 10, 7, 10, 7, 14, 2, 10, 4, 2, 4, 0,
- /* 1086 */ 9, 8, 9, 8, 14, 2, 10, 4, 2, 4, 0,
- /* 1097 */ 10, 8, 10, 8, 14, 2, 10, 4, 2, 4, 0,
- /* 1108 */ 11, 4, 11, 4, 14, 2, 11, 4, 2, 4, 0,
- /* 1119 */ 11, 5, 11, 5, 14, 2, 11, 4, 2, 4, 0,
- /* 1130 */ 11, 7, 11, 7, 14, 2, 11, 4, 2, 4, 0,
- /* 1141 */ 11, 8, 11, 8, 14, 2, 11, 4, 2, 4, 0,
- /* 1152 */ 10, 4, 10, 4, 14, 2, 9, 5, 2, 4, 0,
- /* 1163 */ 9, 5, 9, 5, 14, 2, 9, 5, 2, 4, 0,
- /* 1174 */ 10, 7, 10, 7, 14, 2, 9, 5, 2, 4, 0,
- /* 1185 */ 9, 8, 9, 8, 14, 2, 9, 5, 2, 4, 0,
- /* 1196 */ 10, 4, 10, 4, 14, 2, 10, 5, 2, 4, 0,
- /* 1207 */ 10, 5, 10, 5, 14, 2, 10, 5, 2, 4, 0,
- /* 1218 */ 10, 7, 10, 7, 14, 2, 10, 5, 2, 4, 0,
- /* 1229 */ 10, 8, 10, 8, 14, 2, 10, 5, 2, 4, 0,
- /* 1240 */ 11, 4, 11, 4, 14, 2, 11, 5, 2, 4, 0,
- /* 1251 */ 11, 5, 11, 5, 14, 2, 11, 5, 2, 4, 0,
- /* 1262 */ 11, 7, 11, 7, 14, 2, 11, 5, 2, 4, 0,
- /* 1273 */ 11, 8, 11, 8, 14, 2, 11, 5, 2, 4, 0,
- /* 1284 */ 10, 7, 10, 7, 10, 7, 4, 10, 7, 2, 4, 0,
- /* 1296 */ 10, 7, 10, 7, 10, 7, 10, 7, 2, 4, 0,
- /* 1307 */ 10, 7, 10, 7, 9, 8, 10, 7, 2, 4, 0,
- /* 1318 */ 9, 8, 9, 8, 9, 8, 4, 9, 8, 2, 4, 0,
- /* 1330 */ 9, 8, 9, 8, 10, 7, 9, 8, 2, 4, 0,
- /* 1341 */ 9, 8, 9, 8, 9, 8, 9, 8, 2, 4, 0,
- /* 1352 */ 11, 8, 11, 8, 11, 8, 4, 11, 8, 2, 4, 0,
- /* 1364 */ 11, 8, 11, 8, 11, 8, 11, 8, 2, 4, 0,
- /* 1375 */ 12, 2, 12, 2, 12, 2, 12, 2, 4, 0,
- /* 1385 */ 21, 12, 2, 4, 12, 2, 12, 2, 12, 2, 4, 0,
- /* 1397 */ 21, 12, 2, 4, 12, 2, 12, 2, 4, 0,
- /* 1407 */ 12, 2, 9, 5, 9, 5, 12, 2, 4, 0,
- /* 1417 */ 13, 2, 13, 2, 13, 2, 13, 2, 4, 0,
- /* 1427 */ 15, 1, 15, 1, 14, 2, 14, 2, 4, 0,
- /* 1437 */ 15, 4, 15, 4, 14, 2, 14, 2, 4, 0,
- /* 1447 */ 21, 4, 14, 2, 14, 2, 4, 0,
- /* 1455 */ 21, 5, 14, 2, 14, 2, 4, 0,
- /* 1463 */ 13, 3, 16, 2, 16, 2, 4, 0,
- /* 1471 */ 12, 7, 12, 7, 12, 7, 12, 4, 4, 3, 4, 0,
- /* 1483 */ 12, 4, 12, 4, 14, 2, 12, 4, 3, 4, 0,
- /* 1494 */ 12, 7, 12, 7, 14, 2, 12, 4, 3, 4, 0,
- /* 1505 */ 12, 7, 12, 7, 12, 7, 4, 12, 7, 3, 4, 0,
- /* 1517 */ 12, 7, 12, 7, 12, 7, 12, 7, 3, 4, 0,
- /* 1528 */ 11, 3, 11, 3, 11, 3, 11, 3, 4, 0,
- /* 1538 */ 21, 11, 3, 4, 11, 3, 11, 3, 11, 3, 4, 0,
- /* 1550 */ 21, 11, 3, 4, 11, 3, 11, 3, 4, 0,
- /* 1560 */ 13, 3, 13, 3, 13, 3, 13, 3, 4, 0,
- /* 1570 */ 21, 3, 4, 0,
- /* 1574 */ 15, 3, 26, 3, 4, 0,
- /* 1580 */ 15, 2, 4, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1593 */ 15, 2, 4, 4, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1607 */ 15, 2, 4, 7, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1621 */ 15, 2, 4, 4, 7, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1636 */ 15, 2, 4, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1651 */ 15, 2, 4, 4, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1667 */ 15, 2, 4, 7, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1683 */ 15, 2, 4, 4, 7, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1700 */ 15, 2, 4, 15, 10, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1717 */ 15, 2, 4, 4, 15, 10, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1735 */ 15, 2, 4, 7, 15, 10, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1753 */ 15, 2, 4, 4, 7, 15, 10, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1772 */ 15, 2, 4, 15, 10, 15, 10, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1791 */ 15, 2, 4, 4, 15, 10, 15, 10, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1811 */ 15, 2, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1831 */ 15, 2, 4, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1852 */ 15, 2, 4, 15, 10, 7, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1868 */ 15, 2, 4, 4, 15, 10, 7, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1885 */ 15, 2, 4, 15, 10, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1900 */ 15, 2, 4, 4, 15, 10, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1916 */ 15, 2, 4, 15, 10, 15, 10, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1933 */ 15, 2, 4, 4, 15, 10, 15, 10, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1951 */ 15, 2, 4, 7, 15, 10, 15, 10, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1969 */ 15, 2, 4, 4, 7, 15, 10, 15, 10, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 1988 */ 15, 2, 4, 15, 10, 7, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2006 */ 15, 2, 4, 4, 15, 10, 7, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2025 */ 15, 2, 4, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2042 */ 15, 2, 4, 4, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2060 */ 15, 2, 4, 15, 10, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2079 */ 15, 2, 4, 4, 15, 10, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2099 */ 15, 2, 4, 7, 15, 10, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2119 */ 15, 2, 4, 4, 7, 15, 10, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2140 */ 15, 2, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2163 */ 15, 2, 4, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2187 */ 15, 2, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2211 */ 15, 2, 4, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2236 */ 15, 2, 4, 15, 10, 7, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2256 */ 15, 2, 4, 4, 15, 10, 7, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2277 */ 15, 2, 4, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2296 */ 15, 2, 4, 4, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2316 */ 15, 2, 4, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2337 */ 15, 2, 4, 4, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2359 */ 15, 2, 4, 7, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2381 */ 15, 2, 4, 4, 7, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2404 */ 15, 2, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2429 */ 15, 2, 4, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2455 */ 15, 2, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2481 */ 15, 2, 4, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2508 */ 15, 2, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2537 */ 15, 2, 4, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2567 */ 15, 2, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2597 */ 15, 2, 4, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2628 */ 15, 2, 4, 15, 10, 7, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2650 */ 15, 2, 4, 4, 15, 10, 7, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2673 */ 15, 2, 4, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2694 */ 15, 2, 4, 4, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2716 */ 15, 2, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2743 */ 15, 2, 4, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2771 */ 15, 2, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2799 */ 15, 2, 4, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2828 */ 15, 2, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2859 */ 15, 2, 4, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2891 */ 15, 2, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2923 */ 15, 2, 4, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
- /* 2956 */ 21, 4, 1, 4, 4, 0,
- /* 2962 */ 21, 2, 4, 2, 4, 4, 0,
- /* 2969 */ 10, 7, 10, 7, 10, 7, 10, 7, 2, 4, 4, 0,
- /* 2981 */ 9, 8, 9, 8, 9, 8, 9, 8, 2, 4, 4, 0,
- /* 2993 */ 23, 15, 3, 15, 3, 15, 3, 15, 3, 15, 12, 15, 3, 15, 3, 15, 3, 15, 3, 4, 4, 0,
- /* 3015 */ 22, 15, 3, 15, 3, 15, 3, 15, 12, 15, 3, 15, 3, 15, 3, 4, 4, 0,
- /* 3033 */ 21, 15, 3, 15, 3, 15, 12, 15, 3, 15, 3, 4, 4, 0,
- /* 3047 */ 10, 4, 10, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
- /* 3061 */ 10, 7, 10, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
- /* 3075 */ 0, 5, 4, 4, 4, 4, 4, 4, 4, 0,
- /* 3085 */ 0, 15, 0, 10, 4, 4, 4, 4, 4, 4, 0,
- /* 3096 */ 0, 15, 0, 10, 4, 4, 4, 4, 4, 0,
- /* 3106 */ 15, 1, 15, 1, 15, 1, 10, 4, 4, 4, 4, 4, 0,
- /* 3119 */ 21, 4, 4, 4, 4, 4, 0,
- /* 3126 */ 15, 1, 15, 1, 15, 1, 10, 4, 4, 4, 4, 0,
- /* 3138 */ 23, 3, 3, 3, 3, 5, 4, 4, 4, 0,
- /* 3148 */ 21, 3, 3, 5, 4, 4, 4, 0,
- /* 3156 */ 23, 4, 4, 4, 4, 5, 4, 4, 4, 0,
- /* 3166 */ 21, 4, 4, 5, 4, 4, 4, 0,
- /* 3174 */ 23, 4, 4, 4, 4, 5, 5, 4, 4, 4, 0,
- /* 3185 */ 21, 5, 5, 5, 4, 4, 4, 0,
- /* 3193 */ 23, 7, 7, 7, 7, 5, 5, 4, 4, 4, 0,
- /* 3204 */ 23, 7, 7, 7, 7, 5, 4, 4, 4, 0,
- /* 3214 */ 15, 1, 15, 1, 15, 1, 15, 9, 11, 4, 4, 4, 0,
- /* 3227 */ 0, 15, 2, 4, 15, 9, 11, 4, 4, 4, 0,
- /* 3238 */ 15, 1, 15, 1, 15, 1, 15, 9, 15, 9, 11, 4, 4, 4, 0,
- /* 3253 */ 0, 15, 2, 4, 15, 9, 15, 9, 11, 4, 4, 4, 0,
- /* 3266 */ 15, 1, 15, 1, 15, 1, 15, 9, 15, 9, 15, 9, 11, 4, 4, 4, 0,
- /* 3283 */ 0, 15, 2, 4, 15, 9, 15, 9, 15, 9, 11, 4, 4, 4, 0,
- /* 3298 */ 15, 1, 15, 1, 15, 1, 15, 9, 15, 9, 15, 9, 15, 9, 11, 4, 4, 4, 0,
- /* 3317 */ 0, 15, 2, 4, 15, 9, 15, 9, 15, 9, 15, 9, 11, 4, 4, 4, 0,
- /* 3334 */ 16, 4, 16, 4, 16, 4, 4, 4, 0,
- /* 3343 */ 23, 3, 3, 3, 3, 5, 4, 4, 0,
- /* 3352 */ 21, 3, 3, 5, 4, 4, 0,
- /* 3359 */ 23, 4, 4, 4, 4, 5, 4, 4, 0,
- /* 3368 */ 21, 4, 4, 5, 4, 4, 0,
- /* 3375 */ 23, 4, 4, 4, 4, 5, 5, 4, 4, 0,
- /* 3385 */ 21, 5, 5, 5, 4, 4, 0,
- /* 3392 */ 23, 7, 7, 7, 7, 5, 5, 4, 4, 0,
- /* 3402 */ 23, 7, 7, 7, 7, 5, 4, 4, 0,
- /* 3411 */ 0, 14, 2, 2, 10, 4, 10, 4, 4, 0,
- /* 3421 */ 21, 10, 4, 4, 10, 4, 10, 4, 4, 0,
- /* 3431 */ 21, 10, 4, 4, 10, 4, 10, 4, 10, 4, 4, 0,
- /* 3443 */ 10, 4, 10, 4, 10, 4, 10, 4, 4, 0,
- /* 3453 */ 0, 14, 2, 2, 9, 5, 10, 4, 4, 0,
- /* 3463 */ 0, 14, 2, 2, 10, 5, 10, 4, 4, 0,
- /* 3473 */ 0, 14, 2, 2, 11, 4, 11, 4, 4, 0,
- /* 3483 */ 11, 4, 11, 4, 11, 4, 11, 4, 4, 0,
- /* 3493 */ 0, 14, 2, 2, 11, 5, 11, 4, 4, 0,
- /* 3503 */ 0, 15, 4, 15, 11, 15, 11, 4, 4, 0,
- /* 3513 */ 0, 15, 4, 15, 11, 15, 11, 15, 11, 4, 4, 0,
- /* 3525 */ 0, 15, 4, 15, 11, 15, 11, 15, 11, 15, 11, 4, 4, 0,
- /* 3539 */ 36, 1, 36, 1, 12, 4, 4, 0,
- /* 3547 */ 0, 14, 2, 3, 12, 4, 12, 4, 4, 0,
- /* 3557 */ 12, 4, 12, 4, 12, 4, 12, 4, 4, 0,
- /* 3567 */ 13, 4, 13, 4, 12, 4, 12, 4, 4, 0,
- /* 3577 */ 37, 1, 37, 1, 13, 4, 4, 0,
- /* 3585 */ 13, 4, 13, 4, 13, 4, 13, 4, 4, 0,
- /* 3595 */ 16, 4, 16, 4, 13, 4, 13, 4, 4, 0,
- /* 3605 */ 16, 4, 16, 4, 13, 4, 4, 0,
- /* 3613 */ 40, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 15, 4, 4, 0,
- /* 3634 */ 23, 9, 6, 9, 6, 9, 6, 9, 6, 15, 4, 4, 0,
- /* 3647 */ 40, 7, 7, 7, 7, 7, 7, 7, 7, 15, 4, 4, 0,
- /* 3660 */ 13, 4, 13, 4, 16, 4, 4, 0,
- /* 3668 */ 16, 4, 16, 4, 16, 4, 4, 0,
- /* 3676 */ 17, 17, 4, 4, 0,
- /* 3681 */ 15, 0, 18, 4, 4, 0,
- /* 3687 */ 21, 4, 4, 0,
- /* 3691 */ 23, 3, 3, 3, 3, 5, 4, 0,
- /* 3699 */ 21, 3, 3, 5, 4, 0,
- /* 3705 */ 23, 4, 4, 4, 4, 5, 4, 0,
- /* 3713 */ 21, 4, 4, 5, 4, 0,
- /* 3719 */ 23, 4, 4, 4, 4, 5, 5, 4, 0,
- /* 3728 */ 21, 5, 5, 5, 4, 0,
- /* 3734 */ 23, 7, 7, 7, 7, 5, 5, 4, 0,
- /* 3743 */ 23, 7, 7, 7, 7, 5, 4, 0,
- /* 3751 */ 0, 14, 2, 2, 10, 4, 9, 5, 4, 0,
- /* 3761 */ 0, 14, 2, 2, 9, 5, 9, 5, 4, 0,
- /* 3771 */ 9, 5, 9, 5, 9, 5, 9, 5, 4, 0,
- /* 3781 */ 0, 14, 2, 2, 10, 4, 10, 5, 4, 0,
- /* 3791 */ 0, 14, 2, 2, 10, 5, 10, 5, 4, 0,
- /* 3801 */ 10, 5, 10, 5, 10, 5, 10, 5, 4, 0,
- /* 3811 */ 0, 14, 2, 2, 11, 4, 11, 5, 4, 0,
- /* 3821 */ 0, 14, 2, 2, 11, 5, 11, 5, 4, 0,
- /* 3831 */ 11, 5, 11, 5, 11, 5, 11, 5, 4, 0,
- /* 3841 */ 21, 5, 4, 0,
- /* 3845 */ 0, 15, 4, 9, 6, 9, 6, 9, 6, 9, 6, 4, 0,
- /* 3858 */ 0, 15, 4, 7, 7, 7, 7, 7, 7, 7, 7, 4, 0,
- /* 3871 */ 21, 10, 4, 4, 10, 7, 4, 0,
- /* 3879 */ 0, 14, 2, 2, 10, 4, 10, 7, 4, 0,
- /* 3889 */ 0, 14, 2, 2, 9, 5, 10, 7, 4, 0,
- /* 3899 */ 0, 14, 2, 2, 10, 5, 10, 7, 4, 0,
- /* 3909 */ 0, 14, 2, 2, 11, 4, 11, 7, 4, 0,
- /* 3919 */ 0, 14, 2, 2, 11, 5, 11, 7, 4, 0,
- /* 3929 */ 0, 14, 2, 3, 12, 4, 12, 7, 4, 0,
- /* 3939 */ 12, 7, 12, 7, 12, 7, 12, 7, 4, 0,
- /* 3949 */ 21, 9, 5, 4, 9, 8, 4, 0,
- /* 3957 */ 0, 14, 2, 2, 10, 4, 9, 8, 4, 0,
- /* 3967 */ 0, 14, 2, 2, 9, 5, 9, 8, 4, 0,
- /* 3977 */ 0, 14, 2, 2, 10, 4, 10, 8, 4, 0,
- /* 3987 */ 0, 14, 2, 2, 10, 5, 10, 8, 4, 0,
- /* 3997 */ 0, 14, 2, 2, 11, 4, 11, 8, 4, 0,
- /* 4007 */ 0, 14, 2, 2, 11, 5, 11, 8, 4, 0,
- /* 4017 */ 11, 8, 11, 8, 11, 8, 11, 8, 4, 0,
- /* 4027 */ 21, 10, 4, 4, 10, 4, 0,
- /* 4034 */ 21, 11, 3, 4, 10, 4, 10, 4, 0,
- /* 4043 */ 21, 10, 4, 4, 10, 4, 10, 4, 0,
- /* 4052 */ 0, 15, 4, 15, 11, 15, 11, 15, 11, 4, 0,
- /* 4063 */ 0, 15, 4, 15, 11, 15, 11, 15, 11, 15, 11, 4, 0,
- /* 4076 */ 12, 4, 36, 1, 12, 4, 0,
- /* 4083 */ 0, 36, 1, 14, 2, 12, 4, 0,
- /* 4091 */ 0, 14, 2, 36, 1, 4, 4, 12, 4, 0,
- /* 4101 */ 36, 1, 36, 1, 12, 4, 12, 4, 0,
- /* 4110 */ 12, 4, 36, 1, 12, 4, 12, 4, 0,
- /* 4119 */ 13, 4, 36, 1, 12, 4, 12, 4, 0,
- /* 4128 */ 0, 36, 1, 4, 4, 12, 4, 12, 4, 0,
- /* 4138 */ 0, 36, 1, 4, 4, 13, 4, 12, 4, 0,
- /* 4148 */ 23, 15, 3, 15, 3, 15, 3, 15, 3, 15, 12, 4, 0,
- /* 4161 */ 22, 15, 3, 15, 3, 15, 3, 15, 12, 4, 0,
- /* 4172 */ 21, 15, 3, 15, 3, 15, 12, 4, 0,
- /* 4181 */ 13, 4, 37, 1, 13, 4, 0,
- /* 4188 */ 0, 37, 1, 14, 2, 13, 4, 0,
- /* 4196 */ 0, 14, 2, 36, 1, 4, 4, 13, 4, 0,
- /* 4206 */ 0, 14, 2, 37, 1, 4, 4, 13, 4, 0,
- /* 4216 */ 37, 1, 37, 1, 13, 4, 13, 4, 0,
- /* 4225 */ 13, 4, 37, 1, 13, 4, 13, 4, 0,
- /* 4234 */ 16, 4, 37, 1, 13, 4, 13, 4, 0,
- /* 4243 */ 0, 37, 1, 4, 4, 13, 4, 13, 4, 0,
- /* 4253 */ 16, 4, 16, 4, 13, 4, 13, 4, 0,
- /* 4262 */ 0, 4, 4, 16, 4, 13, 4, 0,
- /* 4270 */ 0, 37, 1, 4, 4, 16, 4, 13, 4, 0,
- /* 4280 */ 16, 4, 16, 4, 13, 4, 0,
- /* 4287 */ 0, 14, 20, 5, 15, 4, 0,
- /* 4294 */ 40, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 15, 4, 0,
- /* 4314 */ 23, 9, 6, 9, 6, 9, 6, 9, 6, 15, 4, 0,
- /* 4326 */ 40, 7, 7, 7, 7, 7, 7, 7, 7, 15, 4, 0,
- /* 4338 */ 5, 19, 15, 4, 0,
- /* 4343 */ 0, 14, 2, 37, 1, 4, 4, 16, 4, 0,
- /* 4353 */ 0, 14, 2, 4, 4, 16, 4, 0,
- /* 4361 */ 13, 4, 16, 4, 0,
- /* 4366 */ 16, 4, 16, 4, 16, 4, 0,
- /* 4373 */ 4, 17, 4, 0,
- /* 4377 */ 0, 15, 4, 15, 12, 15, 17, 4, 0,
- /* 4386 */ 17, 17, 4, 0,
- /* 4390 */ 16, 2, 16, 2, 16, 2, 16, 2, 5, 0,
- /* 4400 */ 5, 16, 2, 16, 2, 5, 0,
- /* 4407 */ 21, 5, 1, 4, 5, 0,
- /* 4413 */ 16, 4, 16, 4, 13, 4, 5, 0,
- /* 4421 */ 21, 1, 5, 5, 0,
- /* 4426 */ 21, 2, 5, 2, 5, 5, 0,
- /* 4433 */ 21, 10, 4, 4, 9, 5, 9, 5, 0,
- /* 4442 */ 21, 9, 5, 4, 9, 5, 9, 5, 0,
- /* 4451 */ 41, 41, 5, 0,
- /* 4455 */ 0, 15, 4, 9, 6, 9, 6, 9, 6, 9, 6, 0,
- /* 4467 */ 23, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 0,
- /* 4517 */ 40, 7, 7, 7, 7, 7, 7, 7, 7, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 0,
- /* 4567 */ 23, 4, 4, 4, 4, 5, 4, 7, 0,
- /* 4576 */ 23, 4, 4, 4, 4, 5, 5, 4, 7, 0,
- /* 4586 */ 23, 7, 7, 7, 7, 5, 5, 4, 7, 0,
- /* 4596 */ 23, 7, 7, 7, 7, 5, 4, 7, 0,
- /* 4605 */ 23, 4, 4, 4, 4, 5, 7, 0,
- /* 4613 */ 23, 4, 4, 4, 4, 5, 5, 7, 0,
- /* 4622 */ 23, 7, 7, 7, 7, 5, 5, 7, 0,
- /* 4631 */ 23, 7, 7, 7, 7, 5, 7, 0,
- /* 4639 */ 23, 4, 4, 4, 4, 5, 4, 7, 7, 0,
- /* 4649 */ 23, 4, 4, 4, 4, 5, 5, 4, 7, 7, 0,
- /* 4660 */ 23, 7, 7, 7, 7, 5, 5, 4, 7, 7, 0,
- /* 4671 */ 23, 7, 7, 7, 7, 5, 4, 7, 7, 0,
- /* 4681 */ 23, 4, 4, 4, 4, 5, 7, 7, 0,
- /* 4690 */ 23, 4, 4, 4, 4, 5, 5, 7, 7, 0,
- /* 4700 */ 23, 7, 7, 7, 7, 5, 5, 7, 7, 0,
- /* 4710 */ 23, 7, 7, 7, 7, 5, 7, 7, 0,
- /* 4719 */ 23, 4, 4, 4, 4, 5, 4, 7, 7, 7, 0,
- /* 4730 */ 23, 4, 4, 4, 4, 5, 5, 4, 7, 7, 7, 0,
- /* 4742 */ 23, 7, 7, 7, 7, 5, 5, 4, 7, 7, 7, 0,
- /* 4754 */ 23, 7, 7, 7, 7, 5, 4, 7, 7, 7, 0,
- /* 4765 */ 23, 4, 4, 4, 4, 5, 7, 7, 7, 0,
- /* 4775 */ 23, 4, 4, 4, 4, 5, 5, 7, 7, 7, 0,
- /* 4786 */ 23, 7, 7, 7, 7, 5, 5, 7, 7, 7, 0,
- /* 4797 */ 23, 7, 7, 7, 7, 5, 7, 7, 7, 0,
- /* 4807 */ 23, 4, 4, 4, 4, 5, 4, 7, 7, 7, 7, 0,
- /* 4819 */ 23, 4, 4, 4, 4, 5, 5, 4, 7, 7, 7, 7, 0,
- /* 4832 */ 23, 7, 7, 7, 7, 5, 5, 4, 7, 7, 7, 7, 0,
- /* 4845 */ 23, 7, 7, 7, 7, 5, 4, 7, 7, 7, 7, 0,
- /* 4857 */ 23, 4, 4, 4, 4, 5, 7, 7, 7, 7, 0,
- /* 4868 */ 23, 4, 4, 4, 4, 5, 5, 7, 7, 7, 7, 0,
- /* 4880 */ 23, 7, 7, 7, 7, 5, 5, 7, 7, 7, 7, 0,
- /* 4892 */ 23, 7, 7, 7, 7, 5, 7, 7, 7, 7, 0,
- /* 4903 */ 23, 4, 4, 4, 4, 5, 4, 7, 7, 7, 7, 7, 7, 0,
- /* 4917 */ 23, 4, 4, 4, 4, 5, 5, 4, 7, 7, 7, 7, 7, 7, 0,
- /* 4932 */ 23, 7, 7, 7, 7, 5, 5, 4, 7, 7, 7, 7, 7, 7, 0,
- /* 4947 */ 23, 7, 7, 7, 7, 5, 4, 7, 7, 7, 7, 7, 7, 0,
- /* 4961 */ 23, 4, 4, 4, 4, 5, 7, 7, 7, 7, 7, 7, 0,
- /* 4974 */ 23, 4, 4, 4, 4, 5, 5, 7, 7, 7, 7, 7, 7, 0,
- /* 4988 */ 23, 7, 7, 7, 7, 5, 5, 7, 7, 7, 7, 7, 7, 0,
- /* 5002 */ 23, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 7, 0,
- /* 5015 */ 0, 15, 4, 7, 7, 7, 7, 7, 7, 7, 7, 0,
- /* 5027 */ 23, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 7, 7, 7, 7, 7, 7, 7, 7, 0,
- /* 5077 */ 40, 7, 7, 7, 7, 7, 7, 7, 7, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 7, 7, 7, 7, 7, 7, 7, 7, 0,
- /* 5127 */ 23, 4, 4, 4, 4, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0,
- /* 5143 */ 23, 4, 4, 4, 4, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0,
- /* 5160 */ 23, 7, 7, 7, 7, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0,
- /* 5177 */ 23, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0,
- /* 5193 */ 21, 10, 4, 4, 10, 7, 10, 7, 0,
- /* 5202 */ 17, 10, 7, 0,
- /* 5206 */ 9, 8, 9, 8, 9, 5, 9, 8, 0,
- /* 5215 */ 21, 9, 5, 4, 9, 8, 9, 8, 0,
- /* 5224 */ 9, 8, 9, 8, 9, 8, 9, 8, 0,
- /* 5233 */ 17, 9, 8, 0,
- /* 5237 */ 10, 8, 10, 8, 10, 5, 10, 8, 0,
- /* 5246 */ 10, 8, 10, 8, 10, 8, 10, 8, 0,
- /* 5255 */ 11, 8, 11, 8, 11, 5, 11, 8, 0,
- /* 5264 */ 15, 3, 15, 3, 15, 11, 15, 11, 0,
- /* 5273 */ 0, 15, 4, 15, 11, 15, 11, 15, 11, 0,
- /* 5283 */ 0, 15, 4, 15, 11, 15, 11, 15, 11, 15, 11, 0,
- /* 5295 */ 0, 15, 3, 15, 3, 15, 3, 15, 12, 0,
- /* 5305 */ 0, 15, 3, 15, 3, 15, 3, 15, 3, 15, 12, 0,
- /* 5317 */ 23, 15, 3, 15, 3, 15, 3, 15, 3, 15, 12, 0,
- /* 5329 */ 22, 15, 3, 15, 3, 15, 3, 15, 12, 0,
- /* 5339 */ 21, 15, 3, 15, 3, 15, 12, 0,
- /* 5347 */ 0, 15, 3, 15, 3, 5, 15, 12, 0,
- /* 5356 */ 0, 15, 3, 15, 3, 15, 3, 5, 15, 12, 0,
- /* 5367 */ 0, 15, 3, 15, 3, 15, 3, 15, 3, 5, 15, 12, 0,
- /* 5380 */ 23, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 5, 15, 12, 0,
- /* 5401 */ 22, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 5, 15, 12, 0,
- /* 5418 */ 21, 15, 3, 15, 3, 15, 3, 15, 3, 5, 15, 12, 0,
- /* 5431 */ 4, 17, 0,
- /* 5434 */ 10, 7, 10, 7, 17, 0,
- /* 5440 */ 9, 8, 17, 0,
- /* 5444 */ 0, 14, 17, 17, 0,
- /* 5449 */ 17, 17, 17, 0,
- /* 5453 */ 15, 0, 18, 0,
- /* 5457 */ 1, 18, 0,
- /* 5460 */ 14, 2, 18, 0,
- /* 5464 */ 15, 4, 18, 0,
- /* 5468 */ 0, 19, 0,
- /* 5471 */ 15, 1, 19, 0,
- /* 5475 */ 1, 14, 2, 19, 0,
- /* 5480 */ 21, 14, 2, 1, 14, 2, 4, 19, 0,
- /* 5489 */ 15, 2, 15, 10, 15, 19, 0,
- /* 5496 */ 15, 2, 15, 2, 15, 2, 15, 2, 19, 19, 0,
- /* 5507 */ 15, 2, 15, 2, 4, 19, 19, 0,
- /* 5515 */ 0, 19, 19, 19, 0,
- /* 5520 */ 15, 0, 29, 0,
- /* 5524 */ 0, 1, 29, 0,
- /* 5528 */ 0, 5, 4, 14, 2, 4, 29, 0,
- /* 5536 */ 5, 5, 4, 14, 2, 4, 29, 0,
- /* 5544 */ 18, 5, 4, 15, 4, 4, 4, 29, 0,
- /* 5553 */ 0, 5, 4, 29, 0,
- /* 5558 */ 28, 35, 28, 35, 28, 35, 28, 35, 0,
- /* 5567 */ 5, 41, 0,
- /* 5570 */ 8, 41, 0,
- /* 5573 */ 41, 41, 41, 41, 0,
+ /* 24 */ 4, 27, 2, 4, 4, 4, 4, 1, 4, 1, 1, 0,
+ /* 36 */ 0, 15, 0, 10, 4, 4, 4, 4, 4, 4, 4, 1, 1, 0,
+ /* 50 */ 0, 15, 2, 10, 4, 4, 4, 1, 1, 0,
+ /* 60 */ 21, 15, 2, 1, 15, 2, 15, 2, 1, 0,
+ /* 70 */ 15, 2, 15, 2, 15, 2, 15, 2, 1, 0,
+ /* 80 */ 15, 3, 15, 3, 15, 3, 31, 3, 1, 0,
+ /* 90 */ 0, 15, 3, 33, 3, 31, 3, 1, 0,
+ /* 99 */ 0, 15, 3, 34, 1, 0, 4, 31, 3, 1, 0,
+ /* 110 */ 0, 15, 3, 15, 12, 4, 31, 3, 1, 0,
+ /* 120 */ 15, 1, 15, 12, 15, 1, 4, 4, 1, 0,
+ /* 130 */ 15, 1, 15, 1, 15, 1, 4, 4, 4, 1, 0,
+ /* 141 */ 7, 27, 3, 7, 7, 4, 4, 1, 0,
+ /* 150 */ 21, 1, 5, 1, 0,
+ /* 155 */ 21, 15, 1, 31, 1, 1, 15, 1, 15, 1, 0,
+ /* 166 */ 0, 19, 15, 1, 0,
+ /* 171 */ 16, 1, 16, 1, 16, 1, 0,
+ /* 178 */ 4, 16, 1, 16, 1, 0,
+ /* 184 */ 0, 15, 4, 15, 12, 15, 17, 1, 0,
+ /* 193 */ 2, 18, 1, 0,
+ /* 197 */ 15, 1, 25, 1, 0,
+ /* 202 */ 36, 1, 36, 1, 36, 1, 0,
+ /* 209 */ 21, 12, 4, 36, 1, 12, 4, 12, 4, 36, 1, 0,
+ /* 221 */ 12, 4, 12, 4, 12, 4, 36, 1, 0,
+ /* 230 */ 37, 1, 37, 1, 37, 1, 0,
+ /* 237 */ 21, 13, 4, 37, 1, 13, 4, 13, 4, 37, 1, 0,
+ /* 249 */ 13, 4, 13, 4, 13, 4, 37, 1, 0,
+ /* 258 */ 16, 2, 16, 2, 16, 2, 2, 0,
+ /* 266 */ 12, 2, 12, 2, 4, 12, 2, 4, 2, 0,
+ /* 276 */ 10, 7, 10, 7, 10, 7, 10, 4, 4, 2, 0,
+ /* 287 */ 11, 7, 11, 7, 11, 7, 11, 4, 4, 2, 0,
+ /* 298 */ 9, 8, 9, 8, 9, 8, 9, 5, 4, 2, 0,
+ /* 309 */ 10, 8, 10, 8, 10, 8, 10, 5, 4, 2, 0,
+ /* 320 */ 10, 4, 10, 4, 14, 2, 10, 4, 10, 4, 2, 0,
+ /* 332 */ 10, 4, 10, 4, 14, 2, 9, 5, 10, 4, 2, 0,
+ /* 344 */ 10, 4, 10, 4, 14, 2, 10, 5, 10, 4, 2, 0,
+ /* 356 */ 10, 7, 10, 7, 10, 7, 10, 4, 2, 0,
+ /* 366 */ 11, 4, 11, 4, 14, 2, 11, 4, 11, 4, 2, 0,
+ /* 378 */ 11, 7, 11, 7, 11, 7, 11, 4, 2, 0,
+ /* 388 */ 27, 4, 2, 0,
+ /* 392 */ 9, 5, 9, 5, 14, 2, 10, 4, 9, 5, 2, 0,
+ /* 404 */ 9, 5, 9, 5, 14, 2, 9, 5, 9, 5, 2, 0,
+ /* 416 */ 9, 8, 9, 8, 9, 8, 9, 5, 2, 0,
+ /* 426 */ 10, 5, 10, 5, 14, 2, 10, 4, 10, 5, 2, 0,
+ /* 438 */ 10, 5, 10, 5, 14, 2, 10, 5, 10, 5, 2, 0,
+ /* 450 */ 10, 8, 10, 8, 10, 8, 10, 5, 2, 0,
+ /* 460 */ 10, 7, 10, 7, 10, 7, 4, 10, 7, 2, 0,
+ /* 471 */ 10, 7, 10, 7, 14, 2, 10, 4, 10, 7, 2, 0,
+ /* 483 */ 10, 7, 10, 7, 14, 2, 9, 5, 10, 7, 2, 0,
+ /* 495 */ 10, 7, 10, 7, 14, 2, 10, 5, 10, 7, 2, 0,
+ /* 507 */ 10, 7, 10, 7, 10, 7, 10, 7, 2, 0,
+ /* 517 */ 11, 7, 11, 7, 11, 7, 4, 11, 7, 2, 0,
+ /* 528 */ 11, 7, 11, 7, 14, 2, 11, 4, 11, 7, 2, 0,
+ /* 540 */ 11, 7, 11, 7, 11, 7, 11, 7, 2, 0,
+ /* 550 */ 27, 7, 2, 0,
+ /* 554 */ 9, 8, 9, 8, 9, 8, 4, 9, 8, 2, 0,
+ /* 565 */ 9, 8, 9, 8, 14, 2, 10, 4, 9, 8, 2, 0,
+ /* 577 */ 9, 8, 9, 8, 14, 2, 9, 5, 9, 8, 2, 0,
+ /* 589 */ 9, 8, 9, 8, 9, 8, 9, 8, 2, 0,
+ /* 599 */ 10, 8, 10, 8, 10, 8, 4, 10, 8, 2, 0,
+ /* 610 */ 10, 8, 10, 8, 14, 2, 10, 4, 10, 8, 2, 0,
+ /* 622 */ 10, 8, 10, 8, 14, 2, 10, 5, 10, 8, 2, 0,
+ /* 634 */ 10, 8, 10, 8, 10, 8, 10, 8, 2, 0,
+ /* 644 */ 11, 2, 11, 2, 11, 2, 11, 2, 11, 2, 11, 2, 11, 2, 0,
+ /* 659 */ 21, 12, 2, 4, 12, 2, 12, 2, 0,
+ /* 668 */ 21, 12, 2, 4, 12, 2, 0,
+ /* 675 */ 18, 4, 14, 2, 14, 2, 14, 2, 0,
+ /* 684 */ 21, 4, 14, 2, 14, 2, 4, 14, 2, 0,
+ /* 694 */ 21, 5, 14, 2, 14, 2, 4, 14, 2, 0,
+ /* 704 */ 21, 4, 14, 2, 14, 2, 4, 4, 14, 2, 0,
+ /* 715 */ 21, 5, 14, 2, 14, 2, 4, 4, 14, 2, 0,
+ /* 726 */ 14, 2, 14, 2, 4, 4, 4, 14, 2, 0,
+ /* 736 */ 21, 4, 4, 14, 2, 0,
+ /* 742 */ 14, 2, 14, 2, 4, 4, 5, 14, 2, 0,
+ /* 752 */ 21, 5, 5, 14, 2, 0,
+ /* 758 */ 0, 17, 17, 14, 2, 0,
+ /* 764 */ 14, 2, 18, 14, 2, 0,
+ /* 770 */ 16, 1, 16, 2, 16, 2, 0,
+ /* 777 */ 16, 2, 16, 2, 16, 2, 16, 2, 0,
+ /* 786 */ 13, 3, 16, 2, 16, 2, 0,
+ /* 793 */ 11, 5, 16, 2, 16, 2, 0,
+ /* 800 */ 17, 17, 17, 2, 0,
+ /* 805 */ 0, 5, 4, 4, 4, 3, 3, 3, 3, 0,
+ /* 815 */ 21, 12, 2, 4, 11, 3, 11, 3, 0,
+ /* 824 */ 21, 11, 3, 4, 11, 3, 11, 3, 0,
+ /* 833 */ 21, 11, 3, 4, 11, 3, 0,
+ /* 840 */ 16, 2, 13, 3, 13, 3, 0,
+ /* 847 */ 15, 3, 33, 3, 31, 3, 1, 15, 3, 0,
+ /* 857 */ 15, 3, 34, 1, 0, 4, 31, 3, 1, 15, 3, 0,
+ /* 869 */ 15, 3, 15, 12, 4, 31, 3, 1, 15, 3, 0,
+ /* 880 */ 15, 3, 15, 3, 12, 2, 12, 2, 12, 2, 12, 2, 15, 3, 0,
+ /* 895 */ 15, 3, 15, 3, 12, 2, 12, 2, 12, 2, 15, 3, 0,
+ /* 908 */ 15, 3, 15, 3, 12, 2, 12, 2, 15, 3, 0,
+ /* 919 */ 15, 3, 25, 3, 0,
+ /* 924 */ 15, 3, 25, 3, 25, 3, 0,
+ /* 931 */ 15, 3, 26, 3, 0,
+ /* 936 */ 15, 3, 26, 3, 26, 3, 0,
+ /* 943 */ 9, 5, 9, 5, 14, 2, 10, 4, 9, 1, 4, 0,
+ /* 955 */ 9, 8, 9, 8, 14, 2, 10, 4, 9, 1, 4, 0,
+ /* 967 */ 10, 4, 10, 4, 14, 2, 9, 5, 9, 1, 4, 0,
+ /* 979 */ 9, 5, 9, 5, 14, 2, 9, 5, 9, 1, 4, 0,
+ /* 991 */ 10, 7, 10, 7, 14, 2, 9, 5, 9, 1, 4, 0,
+ /* 1003 */ 9, 8, 9, 8, 14, 2, 9, 5, 9, 1, 4, 0,
+ /* 1015 */ 10, 4, 10, 4, 14, 2, 10, 4, 10, 1, 4, 0,
+ /* 1027 */ 10, 5, 10, 5, 14, 2, 10, 4, 10, 1, 4, 0,
+ /* 1039 */ 10, 7, 10, 7, 14, 2, 10, 4, 10, 1, 4, 0,
+ /* 1051 */ 10, 8, 10, 8, 14, 2, 10, 4, 10, 1, 4, 0,
+ /* 1063 */ 10, 4, 10, 4, 14, 2, 10, 5, 10, 1, 4, 0,
+ /* 1075 */ 10, 5, 10, 5, 14, 2, 10, 5, 10, 1, 4, 0,
+ /* 1087 */ 10, 7, 10, 7, 14, 2, 10, 5, 10, 1, 4, 0,
+ /* 1099 */ 10, 8, 10, 8, 14, 2, 10, 5, 10, 1, 4, 0,
+ /* 1111 */ 11, 4, 11, 4, 14, 2, 11, 4, 11, 1, 4, 0,
+ /* 1123 */ 11, 5, 11, 5, 14, 2, 11, 4, 11, 1, 4, 0,
+ /* 1135 */ 11, 7, 11, 7, 14, 2, 11, 4, 11, 1, 4, 0,
+ /* 1147 */ 11, 8, 11, 8, 14, 2, 11, 4, 11, 1, 4, 0,
+ /* 1159 */ 11, 4, 11, 4, 14, 2, 11, 5, 11, 1, 4, 0,
+ /* 1171 */ 11, 5, 11, 5, 14, 2, 11, 5, 11, 1, 4, 0,
+ /* 1183 */ 11, 7, 11, 7, 14, 2, 11, 5, 11, 1, 4, 0,
+ /* 1195 */ 11, 8, 11, 8, 14, 2, 11, 5, 11, 1, 4, 0,
+ /* 1207 */ 12, 4, 12, 4, 14, 2, 12, 4, 12, 1, 4, 0,
+ /* 1219 */ 12, 7, 12, 7, 14, 2, 12, 4, 12, 1, 4, 0,
+ /* 1231 */ 15, 1, 25, 1, 4, 0,
+ /* 1237 */ 12, 4, 12, 4, 36, 1, 4, 0,
+ /* 1245 */ 13, 4, 13, 4, 37, 1, 4, 0,
+ /* 1253 */ 10, 7, 10, 7, 10, 7, 10, 4, 4, 2, 4, 0,
+ /* 1265 */ 9, 8, 9, 8, 9, 8, 9, 5, 4, 2, 4, 0,
+ /* 1277 */ 11, 8, 11, 8, 11, 8, 11, 5, 4, 2, 4, 0,
+ /* 1289 */ 10, 4, 10, 4, 14, 2, 10, 4, 2, 4, 0,
+ /* 1300 */ 9, 5, 9, 5, 14, 2, 10, 4, 2, 4, 0,
+ /* 1311 */ 10, 5, 10, 5, 14, 2, 10, 4, 2, 4, 0,
+ /* 1322 */ 10, 7, 10, 7, 14, 2, 10, 4, 2, 4, 0,
+ /* 1333 */ 9, 8, 9, 8, 14, 2, 10, 4, 2, 4, 0,
+ /* 1344 */ 10, 8, 10, 8, 14, 2, 10, 4, 2, 4, 0,
+ /* 1355 */ 11, 4, 11, 4, 14, 2, 11, 4, 2, 4, 0,
+ /* 1366 */ 11, 5, 11, 5, 14, 2, 11, 4, 2, 4, 0,
+ /* 1377 */ 11, 7, 11, 7, 14, 2, 11, 4, 2, 4, 0,
+ /* 1388 */ 11, 8, 11, 8, 14, 2, 11, 4, 2, 4, 0,
+ /* 1399 */ 10, 4, 10, 4, 14, 2, 9, 5, 2, 4, 0,
+ /* 1410 */ 9, 5, 9, 5, 14, 2, 9, 5, 2, 4, 0,
+ /* 1421 */ 10, 7, 10, 7, 14, 2, 9, 5, 2, 4, 0,
+ /* 1432 */ 9, 8, 9, 8, 14, 2, 9, 5, 2, 4, 0,
+ /* 1443 */ 10, 4, 10, 4, 14, 2, 10, 5, 2, 4, 0,
+ /* 1454 */ 10, 5, 10, 5, 14, 2, 10, 5, 2, 4, 0,
+ /* 1465 */ 10, 7, 10, 7, 14, 2, 10, 5, 2, 4, 0,
+ /* 1476 */ 10, 8, 10, 8, 14, 2, 10, 5, 2, 4, 0,
+ /* 1487 */ 11, 4, 11, 4, 14, 2, 11, 5, 2, 4, 0,
+ /* 1498 */ 11, 5, 11, 5, 14, 2, 11, 5, 2, 4, 0,
+ /* 1509 */ 11, 7, 11, 7, 14, 2, 11, 5, 2, 4, 0,
+ /* 1520 */ 11, 8, 11, 8, 14, 2, 11, 5, 2, 4, 0,
+ /* 1531 */ 10, 7, 10, 7, 10, 7, 4, 10, 7, 2, 4, 0,
+ /* 1543 */ 10, 7, 10, 7, 10, 7, 10, 7, 2, 4, 0,
+ /* 1554 */ 10, 7, 10, 7, 9, 8, 10, 7, 2, 4, 0,
+ /* 1565 */ 9, 8, 9, 8, 9, 8, 4, 9, 8, 2, 4, 0,
+ /* 1577 */ 9, 8, 9, 8, 10, 7, 9, 8, 2, 4, 0,
+ /* 1588 */ 9, 8, 9, 8, 9, 8, 9, 8, 2, 4, 0,
+ /* 1599 */ 11, 8, 11, 8, 11, 8, 4, 11, 8, 2, 4, 0,
+ /* 1611 */ 11, 8, 11, 8, 11, 8, 11, 8, 2, 4, 0,
+ /* 1622 */ 12, 2, 12, 2, 12, 2, 12, 2, 4, 0,
+ /* 1632 */ 21, 12, 2, 4, 12, 2, 12, 2, 12, 2, 4, 0,
+ /* 1644 */ 21, 12, 2, 4, 12, 2, 12, 2, 4, 0,
+ /* 1654 */ 12, 2, 9, 5, 9, 5, 12, 2, 4, 0,
+ /* 1664 */ 15, 1, 15, 1, 14, 2, 14, 2, 4, 0,
+ /* 1674 */ 15, 4, 15, 4, 14, 2, 14, 2, 4, 0,
+ /* 1684 */ 21, 4, 14, 2, 14, 2, 4, 0,
+ /* 1692 */ 21, 5, 14, 2, 14, 2, 4, 0,
+ /* 1700 */ 13, 3, 16, 2, 16, 2, 4, 0,
+ /* 1708 */ 12, 7, 12, 7, 12, 7, 12, 4, 4, 3, 4, 0,
+ /* 1720 */ 12, 4, 12, 4, 14, 2, 12, 4, 3, 4, 0,
+ /* 1731 */ 12, 7, 12, 7, 14, 2, 12, 4, 3, 4, 0,
+ /* 1742 */ 12, 7, 12, 7, 12, 7, 4, 12, 7, 3, 4, 0,
+ /* 1754 */ 12, 7, 12, 7, 12, 7, 12, 7, 3, 4, 0,
+ /* 1765 */ 11, 3, 11, 3, 11, 3, 11, 3, 4, 0,
+ /* 1775 */ 21, 11, 3, 4, 11, 3, 11, 3, 11, 3, 4, 0,
+ /* 1787 */ 21, 11, 3, 4, 11, 3, 11, 3, 4, 0,
+ /* 1797 */ 21, 3, 4, 0,
+ /* 1801 */ 15, 3, 26, 3, 4, 0,
+ /* 1807 */ 15, 0, 4, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 1820 */ 15, 0, 4, 4, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 1834 */ 15, 0, 4, 7, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 1848 */ 15, 0, 4, 4, 7, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 1863 */ 15, 0, 4, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 1878 */ 15, 0, 4, 4, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 1894 */ 15, 0, 4, 7, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 1910 */ 15, 0, 4, 4, 7, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 1927 */ 15, 0, 4, 15, 10, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 1944 */ 15, 0, 4, 4, 15, 10, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 1962 */ 15, 0, 4, 7, 15, 10, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 1980 */ 15, 0, 4, 4, 7, 15, 10, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 1999 */ 15, 0, 4, 15, 10, 15, 10, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2018 */ 15, 0, 4, 4, 15, 10, 15, 10, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2038 */ 15, 0, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2058 */ 15, 0, 4, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2079 */ 15, 0, 4, 15, 10, 7, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2095 */ 15, 0, 4, 4, 15, 10, 7, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2112 */ 15, 0, 4, 15, 10, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2127 */ 15, 0, 4, 4, 15, 10, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2143 */ 15, 0, 4, 15, 10, 15, 10, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2160 */ 15, 0, 4, 4, 15, 10, 15, 10, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2178 */ 15, 0, 4, 7, 15, 10, 15, 10, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2196 */ 15, 0, 4, 4, 7, 15, 10, 15, 10, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2215 */ 15, 0, 4, 15, 10, 7, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2233 */ 15, 0, 4, 4, 15, 10, 7, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2252 */ 15, 0, 4, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2269 */ 15, 0, 4, 4, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2287 */ 15, 0, 4, 15, 10, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2306 */ 15, 0, 4, 4, 15, 10, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2326 */ 15, 0, 4, 7, 15, 10, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2346 */ 15, 0, 4, 4, 7, 15, 10, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2367 */ 15, 0, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2390 */ 15, 0, 4, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2414 */ 15, 0, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2438 */ 15, 0, 4, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2463 */ 15, 0, 4, 15, 10, 7, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2483 */ 15, 0, 4, 4, 15, 10, 7, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2504 */ 15, 0, 4, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2523 */ 15, 0, 4, 4, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2543 */ 15, 0, 4, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2564 */ 15, 0, 4, 4, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2586 */ 15, 0, 4, 7, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2608 */ 15, 0, 4, 4, 7, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2631 */ 15, 0, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2656 */ 15, 0, 4, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2682 */ 15, 0, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2708 */ 15, 0, 4, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2735 */ 15, 0, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2764 */ 15, 0, 4, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2794 */ 15, 0, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2824 */ 15, 0, 4, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2855 */ 15, 0, 4, 15, 10, 7, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2877 */ 15, 0, 4, 4, 15, 10, 7, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2900 */ 15, 0, 4, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2921 */ 15, 0, 4, 4, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2943 */ 15, 0, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2970 */ 15, 0, 4, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 2998 */ 15, 0, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 3026 */ 15, 0, 4, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 3055 */ 15, 0, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 3086 */ 15, 0, 4, 4, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 3118 */ 15, 0, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 3150 */ 15, 0, 4, 4, 7, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 10, 15, 18, 15, 18, 15, 18, 15, 18, 11, 4, 10, 4, 1, 4, 4, 0,
+ /* 3183 */ 21, 4, 1, 4, 4, 0,
+ /* 3189 */ 21, 2, 4, 2, 4, 4, 0,
+ /* 3196 */ 10, 7, 10, 7, 10, 7, 10, 7, 2, 4, 4, 0,
+ /* 3208 */ 9, 8, 9, 8, 9, 8, 9, 8, 2, 4, 4, 0,
+ /* 3220 */ 23, 15, 3, 15, 3, 15, 3, 15, 3, 15, 12, 15, 3, 15, 3, 15, 3, 15, 3, 4, 4, 0,
+ /* 3242 */ 22, 15, 3, 15, 3, 15, 3, 15, 12, 15, 3, 15, 3, 15, 3, 4, 4, 0,
+ /* 3260 */ 21, 15, 3, 15, 3, 15, 12, 15, 3, 15, 3, 4, 4, 0,
+ /* 3274 */ 10, 4, 10, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
+ /* 3288 */ 10, 7, 10, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
+ /* 3302 */ 0, 5, 4, 4, 4, 4, 4, 4, 4, 0,
+ /* 3312 */ 0, 15, 0, 10, 4, 4, 4, 4, 4, 4, 0,
+ /* 3323 */ 0, 15, 0, 10, 4, 4, 4, 4, 4, 0,
+ /* 3333 */ 15, 1, 15, 1, 15, 1, 10, 4, 4, 4, 4, 4, 0,
+ /* 3346 */ 21, 4, 4, 4, 4, 4, 0,
+ /* 3353 */ 15, 1, 15, 1, 15, 1, 10, 4, 4, 4, 4, 0,
+ /* 3365 */ 23, 3, 3, 3, 3, 5, 4, 4, 4, 0,
+ /* 3375 */ 21, 3, 3, 5, 4, 4, 4, 0,
+ /* 3383 */ 23, 4, 4, 4, 4, 5, 4, 4, 4, 0,
+ /* 3393 */ 21, 4, 4, 5, 4, 4, 4, 0,
+ /* 3401 */ 23, 4, 4, 4, 4, 5, 5, 4, 4, 4, 0,
+ /* 3412 */ 21, 5, 5, 5, 4, 4, 4, 0,
+ /* 3420 */ 23, 7, 7, 7, 7, 5, 5, 4, 4, 4, 0,
+ /* 3431 */ 23, 7, 7, 7, 7, 5, 4, 4, 4, 0,
+ /* 3441 */ 15, 1, 15, 1, 15, 1, 15, 9, 11, 4, 4, 4, 0,
+ /* 3454 */ 15, 0, 4, 15, 9, 11, 4, 4, 4, 0,
+ /* 3464 */ 0, 15, 2, 4, 15, 9, 11, 4, 4, 4, 0,
+ /* 3475 */ 15, 1, 15, 1, 15, 1, 15, 9, 15, 9, 11, 4, 4, 4, 0,
+ /* 3490 */ 15, 0, 4, 15, 9, 15, 9, 11, 4, 4, 4, 0,
+ /* 3502 */ 0, 15, 2, 4, 15, 9, 15, 9, 11, 4, 4, 4, 0,
+ /* 3515 */ 15, 1, 15, 1, 15, 1, 15, 9, 15, 9, 15, 9, 11, 4, 4, 4, 0,
+ /* 3532 */ 15, 0, 4, 15, 9, 15, 9, 15, 9, 11, 4, 4, 4, 0,
+ /* 3546 */ 0, 15, 2, 4, 15, 9, 15, 9, 15, 9, 11, 4, 4, 4, 0,
+ /* 3561 */ 15, 1, 15, 1, 15, 1, 15, 9, 15, 9, 15, 9, 15, 9, 11, 4, 4, 4, 0,
+ /* 3580 */ 15, 0, 4, 15, 9, 15, 9, 15, 9, 15, 9, 11, 4, 4, 4, 0,
+ /* 3596 */ 0, 15, 2, 4, 15, 9, 15, 9, 15, 9, 15, 9, 11, 4, 4, 4, 0,
+ /* 3613 */ 16, 4, 16, 4, 16, 4, 4, 4, 0,
+ /* 3622 */ 23, 3, 3, 3, 3, 5, 4, 4, 0,
+ /* 3631 */ 21, 3, 3, 5, 4, 4, 0,
+ /* 3638 */ 23, 4, 4, 4, 4, 5, 4, 4, 0,
+ /* 3647 */ 21, 4, 4, 5, 4, 4, 0,
+ /* 3654 */ 23, 4, 4, 4, 4, 5, 5, 4, 4, 0,
+ /* 3664 */ 21, 5, 5, 5, 4, 4, 0,
+ /* 3671 */ 23, 7, 7, 7, 7, 5, 5, 4, 4, 0,
+ /* 3681 */ 23, 7, 7, 7, 7, 5, 4, 4, 0,
+ /* 3690 */ 0, 14, 2, 10, 1, 10, 4, 10, 4, 4, 0,
+ /* 3701 */ 0, 14, 2, 2, 10, 4, 10, 4, 4, 0,
+ /* 3711 */ 21, 10, 4, 4, 10, 4, 10, 4, 4, 0,
+ /* 3721 */ 21, 10, 4, 4, 10, 4, 10, 4, 10, 4, 4, 0,
+ /* 3733 */ 10, 4, 10, 4, 10, 4, 10, 4, 4, 0,
+ /* 3743 */ 0, 14, 2, 9, 1, 9, 5, 10, 4, 4, 0,
+ /* 3754 */ 0, 14, 2, 2, 9, 5, 10, 4, 4, 0,
+ /* 3764 */ 0, 14, 2, 10, 1, 10, 5, 10, 4, 4, 0,
+ /* 3775 */ 0, 14, 2, 2, 10, 5, 10, 4, 4, 0,
+ /* 3785 */ 0, 14, 2, 11, 1, 11, 4, 11, 4, 4, 0,
+ /* 3796 */ 0, 14, 2, 2, 11, 4, 11, 4, 4, 0,
+ /* 3806 */ 11, 4, 11, 4, 11, 4, 11, 4, 4, 0,
+ /* 3816 */ 0, 14, 2, 11, 1, 11, 5, 11, 4, 4, 0,
+ /* 3827 */ 0, 14, 2, 2, 11, 5, 11, 4, 4, 0,
+ /* 3837 */ 0, 15, 4, 15, 11, 15, 11, 4, 4, 0,
+ /* 3847 */ 0, 15, 4, 15, 11, 15, 11, 15, 11, 4, 4, 0,
+ /* 3859 */ 0, 15, 4, 15, 11, 15, 11, 15, 11, 15, 11, 4, 4, 0,
+ /* 3873 */ 36, 1, 36, 1, 12, 4, 4, 0,
+ /* 3881 */ 0, 14, 2, 12, 1, 12, 4, 12, 4, 4, 0,
+ /* 3892 */ 0, 14, 2, 3, 12, 4, 12, 4, 4, 0,
+ /* 3902 */ 21, 12, 4, 12, 4, 12, 4, 12, 4, 4, 0,
+ /* 3913 */ 13, 4, 13, 4, 12, 4, 12, 4, 4, 0,
+ /* 3923 */ 37, 1, 37, 1, 13, 4, 4, 0,
+ /* 3931 */ 21, 13, 4, 13, 4, 13, 4, 13, 4, 4, 0,
+ /* 3942 */ 16, 4, 16, 4, 13, 4, 13, 4, 4, 0,
+ /* 3952 */ 16, 4, 16, 4, 13, 4, 4, 0,
+ /* 3960 */ 40, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 15, 4, 4, 0,
+ /* 3981 */ 23, 9, 6, 9, 6, 9, 6, 9, 6, 15, 4, 4, 0,
+ /* 3994 */ 40, 7, 7, 7, 7, 7, 7, 7, 7, 15, 4, 4, 0,
+ /* 4007 */ 13, 4, 13, 4, 16, 4, 4, 0,
+ /* 4015 */ 16, 4, 16, 4, 16, 4, 4, 0,
+ /* 4023 */ 17, 17, 4, 4, 0,
+ /* 4028 */ 15, 0, 18, 4, 4, 0,
+ /* 4034 */ 21, 4, 4, 0,
+ /* 4038 */ 23, 3, 3, 3, 3, 5, 4, 0,
+ /* 4046 */ 21, 3, 3, 5, 4, 0,
+ /* 4052 */ 23, 4, 4, 4, 4, 5, 4, 0,
+ /* 4060 */ 21, 4, 4, 5, 4, 0,
+ /* 4066 */ 23, 4, 4, 4, 4, 5, 5, 4, 0,
+ /* 4075 */ 21, 5, 4, 5, 5, 4, 0,
+ /* 4082 */ 21, 5, 5, 5, 4, 0,
+ /* 4088 */ 23, 7, 7, 7, 7, 5, 5, 4, 0,
+ /* 4097 */ 23, 7, 7, 7, 7, 5, 4, 0,
+ /* 4105 */ 0, 14, 2, 9, 1, 10, 4, 9, 5, 4, 0,
+ /* 4116 */ 0, 14, 2, 2, 10, 4, 9, 5, 4, 0,
+ /* 4126 */ 0, 14, 2, 9, 1, 9, 5, 9, 5, 4, 0,
+ /* 4137 */ 0, 14, 2, 2, 9, 5, 9, 5, 4, 0,
+ /* 4147 */ 9, 5, 9, 5, 9, 5, 9, 5, 4, 0,
+ /* 4157 */ 0, 14, 2, 10, 1, 10, 4, 10, 5, 4, 0,
+ /* 4168 */ 0, 14, 2, 2, 10, 4, 10, 5, 4, 0,
+ /* 4178 */ 0, 14, 2, 10, 1, 10, 5, 10, 5, 4, 0,
+ /* 4189 */ 0, 14, 2, 2, 10, 5, 10, 5, 4, 0,
+ /* 4199 */ 10, 5, 10, 5, 10, 5, 10, 5, 4, 0,
+ /* 4209 */ 0, 14, 2, 11, 1, 11, 4, 11, 5, 4, 0,
+ /* 4220 */ 0, 14, 2, 2, 11, 4, 11, 5, 4, 0,
+ /* 4230 */ 0, 14, 2, 11, 1, 11, 5, 11, 5, 4, 0,
+ /* 4241 */ 0, 14, 2, 2, 11, 5, 11, 5, 4, 0,
+ /* 4251 */ 11, 5, 11, 5, 11, 5, 11, 5, 4, 0,
+ /* 4261 */ 21, 5, 4, 0,
+ /* 4265 */ 0, 15, 4, 9, 6, 9, 6, 9, 6, 9, 6, 4, 0,
+ /* 4278 */ 0, 15, 4, 7, 7, 7, 7, 7, 7, 7, 7, 4, 0,
+ /* 4291 */ 21, 10, 4, 4, 10, 7, 4, 0,
+ /* 4299 */ 0, 14, 2, 10, 1, 10, 4, 10, 7, 4, 0,
+ /* 4310 */ 0, 14, 2, 2, 10, 4, 10, 7, 4, 0,
+ /* 4320 */ 0, 14, 2, 9, 1, 9, 5, 10, 7, 4, 0,
+ /* 4331 */ 0, 14, 2, 2, 9, 5, 10, 7, 4, 0,
+ /* 4341 */ 0, 14, 2, 10, 1, 10, 5, 10, 7, 4, 0,
+ /* 4352 */ 0, 14, 2, 2, 10, 5, 10, 7, 4, 0,
+ /* 4362 */ 0, 14, 2, 11, 1, 11, 4, 11, 7, 4, 0,
+ /* 4373 */ 0, 14, 2, 2, 11, 4, 11, 7, 4, 0,
+ /* 4383 */ 0, 14, 2, 11, 1, 11, 5, 11, 7, 4, 0,
+ /* 4394 */ 0, 14, 2, 2, 11, 5, 11, 7, 4, 0,
+ /* 4404 */ 0, 14, 2, 12, 1, 12, 4, 12, 7, 4, 0,
+ /* 4415 */ 0, 14, 2, 3, 12, 4, 12, 7, 4, 0,
+ /* 4425 */ 12, 7, 12, 7, 12, 7, 12, 7, 4, 0,
+ /* 4435 */ 21, 9, 5, 4, 9, 8, 4, 0,
+ /* 4443 */ 0, 14, 2, 9, 1, 10, 4, 9, 8, 4, 0,
+ /* 4454 */ 0, 14, 2, 2, 10, 4, 9, 8, 4, 0,
+ /* 4464 */ 0, 14, 2, 9, 1, 9, 5, 9, 8, 4, 0,
+ /* 4475 */ 0, 14, 2, 2, 9, 5, 9, 8, 4, 0,
+ /* 4485 */ 0, 14, 2, 10, 1, 10, 4, 10, 8, 4, 0,
+ /* 4496 */ 0, 14, 2, 2, 10, 4, 10, 8, 4, 0,
+ /* 4506 */ 0, 14, 2, 10, 1, 10, 5, 10, 8, 4, 0,
+ /* 4517 */ 0, 14, 2, 2, 10, 5, 10, 8, 4, 0,
+ /* 4527 */ 0, 14, 2, 11, 1, 11, 4, 11, 8, 4, 0,
+ /* 4538 */ 0, 14, 2, 2, 11, 4, 11, 8, 4, 0,
+ /* 4548 */ 0, 14, 2, 11, 1, 11, 5, 11, 8, 4, 0,
+ /* 4559 */ 0, 14, 2, 2, 11, 5, 11, 8, 4, 0,
+ /* 4569 */ 11, 8, 11, 8, 11, 8, 11, 8, 4, 0,
+ /* 4579 */ 21, 10, 4, 4, 10, 4, 0,
+ /* 4586 */ 21, 11, 3, 4, 10, 4, 10, 4, 0,
+ /* 4595 */ 21, 10, 4, 4, 10, 4, 10, 4, 0,
+ /* 4604 */ 0, 15, 4, 15, 11, 15, 11, 15, 11, 4, 0,
+ /* 4615 */ 0, 15, 4, 15, 11, 15, 11, 15, 11, 15, 11, 4, 0,
+ /* 4628 */ 12, 4, 36, 1, 12, 4, 0,
+ /* 4635 */ 0, 36, 1, 14, 2, 12, 4, 0,
+ /* 4643 */ 0, 14, 2, 36, 1, 4, 4, 12, 4, 0,
+ /* 4653 */ 36, 1, 36, 1, 12, 4, 12, 4, 0,
+ /* 4662 */ 12, 4, 36, 1, 12, 4, 12, 4, 0,
+ /* 4671 */ 13, 4, 36, 1, 12, 4, 12, 4, 0,
+ /* 4680 */ 0, 36, 1, 4, 4, 12, 4, 12, 4, 0,
+ /* 4690 */ 0, 36, 1, 4, 4, 13, 4, 12, 4, 0,
+ /* 4700 */ 23, 15, 3, 15, 3, 15, 3, 15, 3, 15, 12, 4, 0,
+ /* 4713 */ 22, 15, 3, 15, 3, 15, 3, 15, 12, 4, 0,
+ /* 4724 */ 21, 15, 3, 15, 3, 15, 12, 4, 0,
+ /* 4733 */ 13, 4, 37, 1, 13, 4, 0,
+ /* 4740 */ 0, 37, 1, 14, 2, 13, 4, 0,
+ /* 4748 */ 0, 14, 2, 36, 1, 4, 4, 13, 4, 0,
+ /* 4758 */ 0, 14, 2, 37, 1, 4, 4, 13, 4, 0,
+ /* 4768 */ 37, 1, 37, 1, 13, 4, 13, 4, 0,
+ /* 4777 */ 13, 4, 37, 1, 13, 4, 13, 4, 0,
+ /* 4786 */ 16, 4, 37, 1, 13, 4, 13, 4, 0,
+ /* 4795 */ 0, 37, 1, 4, 4, 13, 4, 13, 4, 0,
+ /* 4805 */ 16, 4, 16, 4, 13, 4, 13, 4, 0,
+ /* 4814 */ 0, 4, 4, 16, 4, 13, 4, 0,
+ /* 4822 */ 0, 37, 1, 4, 4, 16, 4, 13, 4, 0,
+ /* 4832 */ 16, 4, 16, 4, 13, 4, 0,
+ /* 4839 */ 0, 14, 20, 5, 15, 4, 0,
+ /* 4846 */ 40, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 15, 4, 0,
+ /* 4866 */ 23, 9, 6, 9, 6, 9, 6, 9, 6, 15, 4, 0,
+ /* 4878 */ 40, 7, 7, 7, 7, 7, 7, 7, 7, 15, 4, 0,
+ /* 4890 */ 5, 19, 15, 4, 0,
+ /* 4895 */ 0, 14, 2, 37, 1, 4, 4, 16, 4, 0,
+ /* 4905 */ 0, 14, 2, 4, 4, 16, 4, 0,
+ /* 4913 */ 13, 4, 16, 4, 0,
+ /* 4918 */ 16, 4, 16, 4, 16, 4, 0,
+ /* 4925 */ 4, 17, 4, 0,
+ /* 4929 */ 0, 15, 4, 15, 12, 15, 17, 4, 0,
+ /* 4938 */ 17, 17, 4, 0,
+ /* 4942 */ 0, 18, 4, 0,
+ /* 4946 */ 21, 5, 1, 4, 5, 0,
+ /* 4952 */ 16, 4, 16, 4, 13, 4, 5, 0,
+ /* 4960 */ 21, 1, 5, 5, 0,
+ /* 4965 */ 21, 2, 5, 2, 5, 5, 0,
+ /* 4972 */ 21, 5, 4, 5, 5, 0,
+ /* 4978 */ 21, 5, 4, 5, 5, 5, 0,
+ /* 4985 */ 21, 10, 4, 4, 9, 5, 9, 5, 0,
+ /* 4994 */ 21, 9, 5, 4, 9, 5, 9, 5, 0,
+ /* 5003 */ 41, 41, 5, 0,
+ /* 5007 */ 0, 15, 4, 9, 6, 9, 6, 9, 6, 9, 6, 0,
+ /* 5019 */ 23, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 0,
+ /* 5069 */ 40, 7, 7, 7, 7, 7, 7, 7, 7, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 0,
+ /* 5119 */ 23, 4, 4, 4, 4, 5, 4, 7, 0,
+ /* 5128 */ 23, 4, 4, 4, 4, 5, 5, 4, 7, 0,
+ /* 5138 */ 23, 7, 7, 7, 7, 5, 5, 4, 7, 0,
+ /* 5148 */ 23, 7, 7, 7, 7, 5, 4, 7, 0,
+ /* 5157 */ 21, 7, 4, 7, 0,
+ /* 5162 */ 23, 4, 4, 4, 4, 5, 7, 0,
+ /* 5170 */ 23, 4, 4, 4, 4, 5, 5, 7, 0,
+ /* 5179 */ 23, 7, 7, 7, 7, 5, 5, 7, 0,
+ /* 5188 */ 23, 7, 7, 7, 7, 5, 7, 0,
+ /* 5196 */ 23, 4, 4, 4, 4, 5, 4, 7, 7, 0,
+ /* 5206 */ 23, 4, 4, 4, 4, 5, 5, 4, 7, 7, 0,
+ /* 5217 */ 23, 7, 7, 7, 7, 5, 5, 4, 7, 7, 0,
+ /* 5228 */ 23, 7, 7, 7, 7, 5, 4, 7, 7, 0,
+ /* 5238 */ 21, 7, 4, 7, 7, 0,
+ /* 5244 */ 23, 4, 4, 4, 4, 5, 7, 7, 0,
+ /* 5253 */ 23, 4, 4, 4, 4, 5, 5, 7, 7, 0,
+ /* 5263 */ 23, 7, 7, 7, 7, 5, 5, 7, 7, 0,
+ /* 5273 */ 23, 7, 7, 7, 7, 5, 7, 7, 0,
+ /* 5282 */ 23, 4, 4, 4, 4, 5, 4, 7, 7, 7, 0,
+ /* 5293 */ 23, 4, 4, 4, 4, 5, 5, 4, 7, 7, 7, 0,
+ /* 5305 */ 23, 7, 7, 7, 7, 5, 5, 4, 7, 7, 7, 0,
+ /* 5317 */ 23, 7, 7, 7, 7, 5, 4, 7, 7, 7, 0,
+ /* 5328 */ 23, 4, 4, 4, 4, 5, 7, 7, 7, 0,
+ /* 5338 */ 23, 4, 4, 4, 4, 5, 5, 7, 7, 7, 0,
+ /* 5349 */ 23, 7, 7, 7, 7, 5, 5, 7, 7, 7, 0,
+ /* 5360 */ 23, 7, 7, 7, 7, 5, 7, 7, 7, 0,
+ /* 5370 */ 23, 4, 4, 4, 4, 5, 4, 7, 7, 7, 7, 0,
+ /* 5382 */ 23, 4, 4, 4, 4, 5, 5, 4, 7, 7, 7, 7, 0,
+ /* 5395 */ 23, 7, 7, 7, 7, 5, 5, 4, 7, 7, 7, 7, 0,
+ /* 5408 */ 23, 7, 7, 7, 7, 5, 4, 7, 7, 7, 7, 0,
+ /* 5420 */ 23, 4, 4, 4, 4, 5, 7, 7, 7, 7, 0,
+ /* 5431 */ 23, 4, 4, 4, 4, 5, 5, 7, 7, 7, 7, 0,
+ /* 5443 */ 23, 7, 7, 7, 7, 5, 5, 7, 7, 7, 7, 0,
+ /* 5455 */ 23, 7, 7, 7, 7, 5, 7, 7, 7, 7, 0,
+ /* 5466 */ 23, 4, 4, 4, 4, 5, 4, 7, 7, 7, 7, 7, 7, 0,
+ /* 5480 */ 23, 4, 4, 4, 4, 5, 5, 4, 7, 7, 7, 7, 7, 7, 0,
+ /* 5495 */ 23, 7, 7, 7, 7, 5, 5, 4, 7, 7, 7, 7, 7, 7, 0,
+ /* 5510 */ 23, 7, 7, 7, 7, 5, 4, 7, 7, 7, 7, 7, 7, 0,
+ /* 5524 */ 23, 4, 4, 4, 4, 5, 7, 7, 7, 7, 7, 7, 0,
+ /* 5537 */ 23, 4, 4, 4, 4, 5, 5, 7, 7, 7, 7, 7, 7, 0,
+ /* 5551 */ 23, 7, 7, 7, 7, 5, 5, 7, 7, 7, 7, 7, 7, 0,
+ /* 5565 */ 23, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 7, 0,
+ /* 5578 */ 0, 15, 4, 7, 7, 7, 7, 7, 7, 7, 7, 0,
+ /* 5590 */ 23, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 7, 7, 7, 7, 7, 7, 7, 7, 0,
+ /* 5640 */ 40, 7, 7, 7, 7, 7, 7, 7, 7, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 7, 7, 7, 7, 7, 7, 7, 7, 0,
+ /* 5690 */ 23, 4, 4, 4, 4, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0,
+ /* 5706 */ 23, 4, 4, 4, 4, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0,
+ /* 5723 */ 23, 7, 7, 7, 7, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0,
+ /* 5740 */ 23, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0,
+ /* 5756 */ 21, 10, 4, 4, 10, 7, 10, 7, 0,
+ /* 5765 */ 17, 10, 7, 0,
+ /* 5769 */ 9, 8, 9, 8, 9, 5, 9, 8, 0,
+ /* 5778 */ 21, 9, 5, 4, 9, 8, 9, 8, 0,
+ /* 5787 */ 9, 8, 9, 8, 9, 8, 9, 8, 0,
+ /* 5796 */ 17, 9, 8, 0,
+ /* 5800 */ 10, 8, 10, 8, 10, 5, 10, 8, 0,
+ /* 5809 */ 10, 8, 10, 8, 10, 8, 10, 8, 0,
+ /* 5818 */ 11, 8, 11, 8, 11, 5, 11, 8, 0,
+ /* 5827 */ 15, 3, 15, 3, 15, 11, 15, 11, 0,
+ /* 5836 */ 0, 15, 4, 15, 11, 15, 11, 15, 11, 0,
+ /* 5846 */ 0, 15, 4, 15, 11, 15, 11, 15, 11, 15, 11, 0,
+ /* 5858 */ 0, 15, 3, 15, 3, 15, 3, 15, 12, 0,
+ /* 5868 */ 0, 15, 3, 15, 3, 15, 3, 15, 3, 15, 12, 0,
+ /* 5880 */ 23, 15, 3, 15, 3, 15, 3, 15, 3, 15, 12, 0,
+ /* 5892 */ 22, 15, 3, 15, 3, 15, 3, 15, 12, 0,
+ /* 5902 */ 21, 15, 3, 15, 3, 15, 12, 0,
+ /* 5910 */ 0, 15, 3, 15, 3, 5, 15, 12, 0,
+ /* 5919 */ 0, 15, 3, 15, 3, 15, 3, 5, 15, 12, 0,
+ /* 5930 */ 0, 15, 3, 15, 3, 15, 3, 15, 3, 5, 15, 12, 0,
+ /* 5943 */ 23, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 5, 15, 12, 0,
+ /* 5964 */ 22, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 5, 15, 12, 0,
+ /* 5981 */ 21, 15, 3, 15, 3, 15, 3, 15, 3, 5, 15, 12, 0,
+ /* 5994 */ 4, 17, 0,
+ /* 5997 */ 10, 7, 10, 7, 17, 0,
+ /* 6003 */ 9, 8, 17, 0,
+ /* 6007 */ 0, 14, 17, 17, 0,
+ /* 6012 */ 17, 17, 17, 0,
+ /* 6016 */ 15, 0, 18, 0,
+ /* 6020 */ 1, 18, 0,
+ /* 6023 */ 14, 2, 18, 0,
+ /* 6027 */ 15, 4, 18, 0,
+ /* 6031 */ 0, 19, 0,
+ /* 6034 */ 15, 1, 19, 0,
+ /* 6038 */ 1, 14, 2, 19, 0,
+ /* 6043 */ 21, 14, 2, 1, 14, 2, 4, 19, 0,
+ /* 6052 */ 15, 2, 15, 10, 15, 19, 0,
+ /* 6059 */ 15, 2, 15, 2, 15, 2, 15, 2, 19, 19, 0,
+ /* 6070 */ 15, 2, 15, 2, 4, 19, 19, 0,
+ /* 6078 */ 0, 19, 19, 19, 0,
+ /* 6083 */ 15, 0, 29, 0,
+ /* 6087 */ 0, 1, 29, 0,
+ /* 6091 */ 0, 5, 4, 14, 2, 4, 29, 0,
+ /* 6099 */ 5, 5, 4, 14, 2, 4, 29, 0,
+ /* 6107 */ 18, 5, 4, 15, 4, 4, 4, 29, 0,
+ /* 6116 */ 0, 5, 4, 29, 0,
+ /* 6121 */ 28, 35, 28, 35, 28, 35, 28, 35, 0,
+ /* 6130 */ 5, 41, 0,
+ /* 6133 */ 8, 41, 0,
+ /* 6136 */ 41, 41, 41, 41, 0,
255
};
@@ -9022,6 +9095,7 @@
3, // llvm.eh.dwarf.cfa
1, // llvm.eh.exceptioncode
1, // llvm.eh.exceptionpointer
+ 1, // llvm.eh.recoverfp
3, // llvm.eh.return.i32
3, // llvm.eh.return.i64
1, // llvm.eh.sjlj.callsite
@@ -9035,11 +9109,13 @@
4, // llvm.exp
4, // llvm.exp2
1, // llvm.expect
+ 15, // llvm.experimental.constrained.ceil
15, // llvm.experimental.constrained.cos
15, // llvm.experimental.constrained.exp
15, // llvm.experimental.constrained.exp2
15, // llvm.experimental.constrained.fadd
15, // llvm.experimental.constrained.fdiv
+ 15, // llvm.experimental.constrained.floor
15, // llvm.experimental.constrained.fma
15, // llvm.experimental.constrained.fmul
15, // llvm.experimental.constrained.frem
@@ -9047,12 +9123,16 @@
15, // llvm.experimental.constrained.log
15, // llvm.experimental.constrained.log10
15, // llvm.experimental.constrained.log2
+ 15, // llvm.experimental.constrained.maxnum
+ 15, // llvm.experimental.constrained.minnum
15, // llvm.experimental.constrained.nearbyint
15, // llvm.experimental.constrained.pow
15, // llvm.experimental.constrained.powi
15, // llvm.experimental.constrained.rint
+ 15, // llvm.experimental.constrained.round
15, // llvm.experimental.constrained.sin
15, // llvm.experimental.constrained.sqrt
+ 15, // llvm.experimental.constrained.trunc
7, // llvm.experimental.deoptimize
16, // llvm.experimental.gc.relocate
16, // llvm.experimental.gc.result
@@ -9074,6 +9154,7 @@
1, // llvm.experimental.vector.reduce.umax
1, // llvm.experimental.vector.reduce.umin
1, // llvm.experimental.vector.reduce.xor
+ 15, // llvm.experimental.widenable.condition
4, // llvm.fabs
4, // llvm.floor
3, // llvm.flt.rounds
@@ -9086,6 +9167,7 @@
3, // llvm.gcroot
17, // llvm.gcwrite
3, // llvm.get.dynamic.area.offset
+ 15, // llvm.hwasan.check.memaccess
3, // llvm.icall.branch.funnel
18, // llvm.init.trampoline
3, // llvm.instrprof.increment
@@ -9093,6 +9175,7 @@
3, // llvm.instrprof.value.profile
19, // llvm.invariant.end
20, // llvm.invariant.start
+ 1, // llvm.is.constant
21, // llvm.launder.invariant.group
20, // llvm.lifetime.end
20, // llvm.lifetime.start
@@ -9110,6 +9193,7 @@
2, // llvm.masked.load
3, // llvm.masked.scatter
22, // llvm.masked.store
+ 4, // llvm.maximum
4, // llvm.maxnum
23, // llvm.memcpy
23, // llvm.memcpy.element.unordered.atomic
@@ -9117,8 +9201,39 @@
23, // llvm.memmove.element.unordered.atomic
25, // llvm.memset
25, // llvm.memset.element.unordered.atomic
+ 4, // llvm.minimum
4, // llvm.minnum
4, // llvm.nearbyint
+ 3, // llvm.objc.arc.annotation.bottomup.bbend
+ 3, // llvm.objc.arc.annotation.bottomup.bbstart
+ 3, // llvm.objc.arc.annotation.topdown.bbend
+ 3, // llvm.objc.arc.annotation.topdown.bbstart
+ 3, // llvm.objc.autorelease
+ 3, // llvm.objc.autoreleasePoolPop
+ 3, // llvm.objc.autoreleasePoolPush
+ 3, // llvm.objc.autoreleaseReturnValue
+ 3, // llvm.objc.clang.arc.use
+ 3, // llvm.objc.copyWeak
+ 3, // llvm.objc.destroyWeak
+ 3, // llvm.objc.initWeak
+ 3, // llvm.objc.loadWeak
+ 3, // llvm.objc.loadWeakRetained
+ 3, // llvm.objc.moveWeak
+ 3, // llvm.objc.release
+ 3, // llvm.objc.retain
+ 3, // llvm.objc.retain.autorelease
+ 3, // llvm.objc.retainAutorelease
+ 3, // llvm.objc.retainAutoreleaseReturnValue
+ 3, // llvm.objc.retainAutoreleasedReturnValue
+ 3, // llvm.objc.retainBlock
+ 3, // llvm.objc.retainedObject
+ 3, // llvm.objc.storeStrong
+ 3, // llvm.objc.storeWeak
+ 3, // llvm.objc.sync.enter
+ 3, // llvm.objc.sync.exit
+ 3, // llvm.objc.unretainedObject
+ 3, // llvm.objc.unretainedPointer
+ 3, // llvm.objc.unsafeClaimAutoreleasedReturnValue
4, // llvm.objectsize
3, // llvm.pcmarker
4, // llvm.pow
@@ -9130,15 +9245,19 @@
1, // llvm.returnaddress
4, // llvm.rint
4, // llvm.round
+ 4, // llvm.sadd.sat
4, // llvm.sadd.with.overflow
3, // llvm.setjmp
15, // llvm.sideeffect
14, // llvm.siglongjmp
3, // llvm.sigsetjmp
4, // llvm.sin
+ 4, // llvm.smul.fix
4, // llvm.smul.with.overflow
+ 1, // llvm.sponentry
4, // llvm.sqrt
27, // llvm.ssa.copy
+ 4, // llvm.ssub.sat
4, // llvm.ssub.with.overflow
3, // llvm.stackguard
3, // llvm.stackprotector
@@ -9146,20 +9265,23 @@
3, // llvm.stacksave
4, // llvm.strip.invariant.group
1, // llvm.thread.pointer
- 14, // llvm.trap
+ 28, // llvm.trap
4, // llvm.trunc
1, // llvm.type.checked.load
1, // llvm.type.test
+ 4, // llvm.uadd.sat
4, // llvm.uadd.with.overflow
+ 4, // llvm.umul.fix
4, // llvm.umul.with.overflow
+ 4, // llvm.usub.sat
4, // llvm.usub.with.overflow
3, // llvm.va_copy
3, // llvm.va_end
3, // llvm.va_start
3, // llvm.var.annotation
3, // llvm.write_register
- 28, // llvm.xray.customevent
- 29, // llvm.xray.typedevent
+ 29, // llvm.xray.customevent
+ 30, // llvm.xray.typedevent
3, // llvm.aarch64.clrex
1, // llvm.aarch64.crc32b
1, // llvm.aarch64.crc32cb
@@ -9223,6 +9345,10 @@
1, // llvm.aarch64.neon.fminnmv
1, // llvm.aarch64.neon.fminp
1, // llvm.aarch64.neon.fminv
+ 1, // llvm.aarch64.neon.fmlal
+ 1, // llvm.aarch64.neon.fmlal2
+ 1, // llvm.aarch64.neon.fmlsl
+ 1, // llvm.aarch64.neon.fmlsl2
1, // llvm.aarch64.neon.fmulx
1, // llvm.aarch64.neon.frecpe
1, // llvm.aarch64.neon.frecps
@@ -9289,14 +9415,14 @@
1, // llvm.aarch64.neon.sshl
1, // llvm.aarch64.neon.sshll
19, // llvm.aarch64.neon.st1x2
- 30, // llvm.aarch64.neon.st1x3
- 31, // llvm.aarch64.neon.st1x4
+ 31, // llvm.aarch64.neon.st1x3
+ 32, // llvm.aarch64.neon.st1x4
19, // llvm.aarch64.neon.st2
- 30, // llvm.aarch64.neon.st2lane
- 30, // llvm.aarch64.neon.st3
- 31, // llvm.aarch64.neon.st3lane
- 31, // llvm.aarch64.neon.st4
- 32, // llvm.aarch64.neon.st4lane
+ 31, // llvm.aarch64.neon.st2lane
+ 31, // llvm.aarch64.neon.st3
+ 32, // llvm.aarch64.neon.st3lane
+ 32, // llvm.aarch64.neon.st4
+ 33, // llvm.aarch64.neon.st4lane
1, // llvm.aarch64.neon.subhn
1, // llvm.aarch64.neon.suqadd
1, // llvm.aarch64.neon.tbl1
@@ -9347,6 +9473,7 @@
1, // llvm.aarch64.sdiv
1, // llvm.aarch64.sisd.fabd
1, // llvm.aarch64.sisd.fcvtxn
+ 3, // llvm.aarch64.space
3, // llvm.aarch64.stlxp
3, // llvm.aarch64.stlxr
3, // llvm.aarch64.stxp
@@ -9356,7 +9483,6 @@
4, // llvm.amdgcn.alignbyte
18, // llvm.amdgcn.atomic.dec
18, // llvm.amdgcn.atomic.inc
- 33, // llvm.amdgcn.break
3, // llvm.amdgcn.buffer.atomic.add
3, // llvm.amdgcn.buffer.atomic.and
3, // llvm.amdgcn.buffer.atomic.cmpswap
@@ -9392,18 +9518,21 @@
4, // llvm.amdgcn.div.fixup
4, // llvm.amdgcn.div.fmas
4, // llvm.amdgcn.div.scale
- 33, // llvm.amdgcn.ds.bpermute
+ 35, // llvm.amdgcn.ds.append
+ 36, // llvm.amdgcn.ds.bpermute
+ 35, // llvm.amdgcn.ds.consume
18, // llvm.amdgcn.ds.fadd
18, // llvm.amdgcn.ds.fmax
18, // llvm.amdgcn.ds.fmin
- 33, // llvm.amdgcn.ds.permute
- 33, // llvm.amdgcn.ds.swizzle
- 35, // llvm.amdgcn.else
- 33, // llvm.amdgcn.else.break
- 35, // llvm.amdgcn.end.cf
+ 37, // llvm.amdgcn.ds.ordered.add
+ 37, // llvm.amdgcn.ds.ordered.swap
+ 36, // llvm.amdgcn.ds.permute
+ 36, // llvm.amdgcn.ds.swizzle
+ 38, // llvm.amdgcn.else
+ 38, // llvm.amdgcn.end.cf
3, // llvm.amdgcn.exp
3, // llvm.amdgcn.exp.compr
- 33, // llvm.amdgcn.fcmp
+ 36, // llvm.amdgcn.fcmp
4, // llvm.amdgcn.fdiv.fast
4, // llvm.amdgcn.fdot2
4, // llvm.amdgcn.fmad.ftz
@@ -9413,9 +9542,9 @@
4, // llvm.amdgcn.frexp.exp
4, // llvm.amdgcn.frexp.mant
4, // llvm.amdgcn.groupstaticsize
- 33, // llvm.amdgcn.icmp
- 35, // llvm.amdgcn.if
- 33, // llvm.amdgcn.if.break
+ 36, // llvm.amdgcn.icmp
+ 38, // llvm.amdgcn.if
+ 36, // llvm.amdgcn.if.break
3, // llvm.amdgcn.image.atomic.add.1d
3, // llvm.amdgcn.image.atomic.add.1darray
3, // llvm.amdgcn.image.atomic.add.2d
@@ -9876,20 +10005,22 @@
34, // llvm.amdgcn.image.store.mip.cube
4, // llvm.amdgcn.implicit.buffer.ptr
4, // llvm.amdgcn.implicitarg.ptr
- 35, // llvm.amdgcn.init.exec
- 35, // llvm.amdgcn.init.exec.from.input
+ 38, // llvm.amdgcn.init.exec
+ 38, // llvm.amdgcn.init.exec.from.input
4, // llvm.amdgcn.interp.mov
4, // llvm.amdgcn.interp.p1
+ 4, // llvm.amdgcn.interp.p1.f16
4, // llvm.amdgcn.interp.p2
+ 4, // llvm.amdgcn.interp.p2.f16
4, // llvm.amdgcn.kernarg.segment.ptr
3, // llvm.amdgcn.kill
4, // llvm.amdgcn.ldexp
4, // llvm.amdgcn.lerp
4, // llvm.amdgcn.log.clamp
- 35, // llvm.amdgcn.loop
+ 38, // llvm.amdgcn.loop
1, // llvm.amdgcn.mbcnt.hi
1, // llvm.amdgcn.mbcnt.lo
- 33, // llvm.amdgcn.mov.dpp
+ 36, // llvm.amdgcn.mov.dpp
4, // llvm.amdgcn.mqsad.pk.u16.u8
4, // llvm.amdgcn.mqsad.u32.u8
4, // llvm.amdgcn.msad.u8
@@ -9915,12 +10046,12 @@
34, // llvm.amdgcn.raw.tbuffer.store
4, // llvm.amdgcn.rcp
4, // llvm.amdgcn.rcp.legacy
- 33, // llvm.amdgcn.readfirstlane
- 33, // llvm.amdgcn.readlane
+ 36, // llvm.amdgcn.readfirstlane
+ 36, // llvm.amdgcn.readlane
4, // llvm.amdgcn.rsq
4, // llvm.amdgcn.rsq.clamp
4, // llvm.amdgcn.rsq.legacy
- 35, // llvm.amdgcn.s.barrier
+ 38, // llvm.amdgcn.s.barrier
1, // llvm.amdgcn.s.buffer.load
3, // llvm.amdgcn.s.dcache.inv
3, // llvm.amdgcn.s.dcache.inv.vol
@@ -9928,7 +10059,7 @@
3, // llvm.amdgcn.s.dcache.wb.vol
3, // llvm.amdgcn.s.decperflevel
4, // llvm.amdgcn.s.getpc
- 36, // llvm.amdgcn.s.getreg
+ 39, // llvm.amdgcn.s.getreg
3, // llvm.amdgcn.s.incperflevel
16, // llvm.amdgcn.s.memrealtime
16, // llvm.amdgcn.s.memtime
@@ -9943,7 +10074,7 @@
4, // llvm.amdgcn.sdot2
4, // llvm.amdgcn.sdot4
4, // llvm.amdgcn.sdot8
- 33, // llvm.amdgcn.set.inactive
+ 36, // llvm.amdgcn.set.inactive
4, // llvm.amdgcn.sffbh
4, // llvm.amdgcn.sin
3, // llvm.amdgcn.struct.buffer.atomic.add
@@ -9970,9 +10101,9 @@
4, // llvm.amdgcn.udot2
4, // llvm.amdgcn.udot4
4, // llvm.amdgcn.udot8
- 35, // llvm.amdgcn.unreachable
- 33, // llvm.amdgcn.update.dpp
- 35, // llvm.amdgcn.wave.barrier
+ 38, // llvm.amdgcn.unreachable
+ 36, // llvm.amdgcn.update.dpp
+ 38, // llvm.amdgcn.wave.barrier
4, // llvm.amdgcn.workgroup.id.x
4, // llvm.amdgcn.workgroup.id.y
4, // llvm.amdgcn.workgroup.id.z
@@ -9980,8 +10111,8 @@
4, // llvm.amdgcn.workitem.id.y
4, // llvm.amdgcn.workitem.id.z
4, // llvm.amdgcn.wqm
- 33, // llvm.amdgcn.wqm.vote
- 33, // llvm.amdgcn.writelane
+ 36, // llvm.amdgcn.wqm.vote
+ 36, // llvm.amdgcn.writelane
4, // llvm.amdgcn.wwm
3, // llvm.arm.cdp
3, // llvm.arm.cdp2
@@ -10286,6 +10417,7 @@
1, // llvm.hexagon.A2.or
1, // llvm.hexagon.A2.orir
1, // llvm.hexagon.A2.orp
+ 1, // llvm.hexagon.A2.pxorf
1, // llvm.hexagon.A2.roundsat
1, // llvm.hexagon.A2.sat
1, // llvm.hexagon.A2.satb
@@ -10322,10 +10454,12 @@
1, // llvm.hexagon.A2.sxth
1, // llvm.hexagon.A2.sxtw
1, // llvm.hexagon.A2.tfr
+ 1, // llvm.hexagon.A2.tfrcrr
1, // llvm.hexagon.A2.tfrih
1, // llvm.hexagon.A2.tfril
1, // llvm.hexagon.A2.tfrp
1, // llvm.hexagon.A2.tfrpi
+ 1, // llvm.hexagon.A2.tfrrcr
1, // llvm.hexagon.A2.tfrsi
1, // llvm.hexagon.A2.vabsh
1, // llvm.hexagon.A2.vabshsat
@@ -10394,6 +10528,7 @@
1, // llvm.hexagon.A2.xorp
1, // llvm.hexagon.A2.zxtb
1, // llvm.hexagon.A2.zxth
+ 1, // llvm.hexagon.A4.addp.c
1, // llvm.hexagon.A4.andn
1, // llvm.hexagon.A4.andnp
1, // llvm.hexagon.A4.bitsplit
@@ -10411,6 +10546,7 @@
1, // llvm.hexagon.A4.cmphgti
1, // llvm.hexagon.A4.cmphgtu
1, // llvm.hexagon.A4.cmphgtui
+ 1, // llvm.hexagon.A4.combineii
1, // llvm.hexagon.A4.combineir
1, // llvm.hexagon.A4.combineri
1, // llvm.hexagon.A4.cround.ri
@@ -10426,6 +10562,9 @@
1, // llvm.hexagon.A4.round.ri.sat
1, // llvm.hexagon.A4.round.rr
1, // llvm.hexagon.A4.round.rr.sat
+ 1, // llvm.hexagon.A4.subp.c
+ 1, // llvm.hexagon.A4.tfrcpp
+ 1, // llvm.hexagon.A4.tfrpcp
1, // llvm.hexagon.A4.tlbmatch
1, // llvm.hexagon.A4.vcmpbeq.any
1, // llvm.hexagon.A4.vcmpbeqi
@@ -10446,9 +10585,10 @@
1, // llvm.hexagon.A4.vrminuh
1, // llvm.hexagon.A4.vrminuw
1, // llvm.hexagon.A4.vrminw
+ 1, // llvm.hexagon.A5.ACS
1, // llvm.hexagon.A5.vaddhubs
1, // llvm.hexagon.A6.vcmpbeq.notany
- 1, // llvm.hexagon.A6.vcmpbeq.notany.128B
+ 1, // llvm.hexagon.A6.vminub.RdP
1, // llvm.hexagon.C2.all8
1, // llvm.hexagon.C2.and
1, // llvm.hexagon.C2.andn
@@ -10524,54 +10664,58 @@
1, // llvm.hexagon.F2.conv.sf2w.chop
1, // llvm.hexagon.F2.conv.ud2df
1, // llvm.hexagon.F2.conv.ud2sf
- 37, // llvm.hexagon.F2.conv.uw2df
- 37, // llvm.hexagon.F2.conv.uw2sf
- 37, // llvm.hexagon.F2.conv.w2df
- 37, // llvm.hexagon.F2.conv.w2sf
- 37, // llvm.hexagon.F2.dfclass
- 37, // llvm.hexagon.F2.dfcmpeq
- 37, // llvm.hexagon.F2.dfcmpge
- 37, // llvm.hexagon.F2.dfcmpgt
- 37, // llvm.hexagon.F2.dfcmpuo
- 37, // llvm.hexagon.F2.dfimm.n
- 37, // llvm.hexagon.F2.dfimm.p
- 37, // llvm.hexagon.F2.sfadd
- 37, // llvm.hexagon.F2.sfclass
- 37, // llvm.hexagon.F2.sfcmpeq
- 37, // llvm.hexagon.F2.sfcmpge
- 37, // llvm.hexagon.F2.sfcmpgt
- 37, // llvm.hexagon.F2.sfcmpuo
- 37, // llvm.hexagon.F2.sffixupd
- 37, // llvm.hexagon.F2.sffixupn
- 1, // llvm.hexagon.F2.sffixupr
- 37, // llvm.hexagon.F2.sffma
- 37, // llvm.hexagon.F2.sffma.lib
- 37, // llvm.hexagon.F2.sffma.sc
- 37, // llvm.hexagon.F2.sffms
- 37, // llvm.hexagon.F2.sffms.lib
- 37, // llvm.hexagon.F2.sfimm.n
- 37, // llvm.hexagon.F2.sfimm.p
- 37, // llvm.hexagon.F2.sfmax
- 37, // llvm.hexagon.F2.sfmin
- 37, // llvm.hexagon.F2.sfmpy
- 37, // llvm.hexagon.F2.sfsub
+ 1, // llvm.hexagon.F2.conv.uw2df
+ 1, // llvm.hexagon.F2.conv.uw2sf
+ 1, // llvm.hexagon.F2.conv.w2df
+ 1, // llvm.hexagon.F2.conv.w2sf
+ 40, // llvm.hexagon.F2.dfadd
+ 40, // llvm.hexagon.F2.dfclass
+ 40, // llvm.hexagon.F2.dfcmpeq
+ 40, // llvm.hexagon.F2.dfcmpge
+ 40, // llvm.hexagon.F2.dfcmpgt
+ 40, // llvm.hexagon.F2.dfcmpuo
+ 1, // llvm.hexagon.F2.dfimm.n
+ 1, // llvm.hexagon.F2.dfimm.p
+ 40, // llvm.hexagon.F2.dfsub
+ 40, // llvm.hexagon.F2.sfadd
+ 40, // llvm.hexagon.F2.sfclass
+ 40, // llvm.hexagon.F2.sfcmpeq
+ 40, // llvm.hexagon.F2.sfcmpge
+ 40, // llvm.hexagon.F2.sfcmpgt
+ 40, // llvm.hexagon.F2.sfcmpuo
+ 40, // llvm.hexagon.F2.sffixupd
+ 40, // llvm.hexagon.F2.sffixupn
+ 40, // llvm.hexagon.F2.sffixupr
+ 40, // llvm.hexagon.F2.sffma
+ 40, // llvm.hexagon.F2.sffma.lib
+ 40, // llvm.hexagon.F2.sffma.sc
+ 40, // llvm.hexagon.F2.sffms
+ 40, // llvm.hexagon.F2.sffms.lib
+ 1, // llvm.hexagon.F2.sfimm.n
+ 1, // llvm.hexagon.F2.sfimm.p
+ 40, // llvm.hexagon.F2.sfinvsqrta
+ 40, // llvm.hexagon.F2.sfmax
+ 40, // llvm.hexagon.F2.sfmin
+ 40, // llvm.hexagon.F2.sfmpy
+ 40, // llvm.hexagon.F2.sfrecipa
+ 40, // llvm.hexagon.F2.sfsub
16, // llvm.hexagon.L2.loadrb.pbr
- 30, // llvm.hexagon.L2.loadrb.pci
+ 31, // llvm.hexagon.L2.loadrb.pci
19, // llvm.hexagon.L2.loadrb.pcr
16, // llvm.hexagon.L2.loadrd.pbr
- 30, // llvm.hexagon.L2.loadrd.pci
+ 31, // llvm.hexagon.L2.loadrd.pci
19, // llvm.hexagon.L2.loadrd.pcr
16, // llvm.hexagon.L2.loadrh.pbr
- 30, // llvm.hexagon.L2.loadrh.pci
+ 31, // llvm.hexagon.L2.loadrh.pci
19, // llvm.hexagon.L2.loadrh.pcr
16, // llvm.hexagon.L2.loadri.pbr
- 30, // llvm.hexagon.L2.loadri.pci
+ 31, // llvm.hexagon.L2.loadri.pci
19, // llvm.hexagon.L2.loadri.pcr
16, // llvm.hexagon.L2.loadrub.pbr
- 30, // llvm.hexagon.L2.loadrub.pci
+ 31, // llvm.hexagon.L2.loadrub.pci
19, // llvm.hexagon.L2.loadrub.pcr
16, // llvm.hexagon.L2.loadruh.pbr
- 30, // llvm.hexagon.L2.loadruh.pci
+ 31, // llvm.hexagon.L2.loadruh.pci
19, // llvm.hexagon.L2.loadruh.pcr
18, // llvm.hexagon.L2.loadw.locked
18, // llvm.hexagon.L4.loadd.locked
@@ -10643,6 +10787,7 @@
1, // llvm.hexagon.M2.mmpyul.rs1
1, // llvm.hexagon.M2.mmpyul.s0
1, // llvm.hexagon.M2.mmpyul.s1
+ 1, // llvm.hexagon.M2.mnaci
1, // llvm.hexagon.M2.mpy.acc.hh.s0
1, // llvm.hexagon.M2.mpy.acc.hh.s1
1, // llvm.hexagon.M2.mpy.acc.hl.s0
@@ -10743,6 +10888,8 @@
1, // llvm.hexagon.M2.mpyd.rnd.ll.s0
1, // llvm.hexagon.M2.mpyd.rnd.ll.s1
1, // llvm.hexagon.M2.mpyi
+ 1, // llvm.hexagon.M2.mpysin
+ 1, // llvm.hexagon.M2.mpysip
1, // llvm.hexagon.M2.mpysmi
1, // llvm.hexagon.M2.mpysu.up
1, // llvm.hexagon.M2.mpyu.acc.hh.s0
@@ -10955,7 +11102,6 @@
1, // llvm.hexagon.S2.asr.r.vw
1, // llvm.hexagon.S2.brev
1, // llvm.hexagon.S2.brevp
- 1, // llvm.hexagon.S2.cabacencbin
1, // llvm.hexagon.S2.cl0
1, // llvm.hexagon.S2.cl0p
1, // llvm.hexagon.S2.cl1
@@ -11020,6 +11166,7 @@
1, // llvm.hexagon.S2.lsr.r.r.or
1, // llvm.hexagon.S2.lsr.r.vh
1, // llvm.hexagon.S2.lsr.r.vw
+ 1, // llvm.hexagon.S2.mask
1, // llvm.hexagon.S2.packhl
1, // llvm.hexagon.S2.parityp
1, // llvm.hexagon.S2.setbit.i
@@ -11029,20 +11176,20 @@
1, // llvm.hexagon.S2.shuffob
1, // llvm.hexagon.S2.shuffoh
34, // llvm.hexagon.S2.storerb.pbr
- 31, // llvm.hexagon.S2.storerb.pci
- 30, // llvm.hexagon.S2.storerb.pcr
+ 32, // llvm.hexagon.S2.storerb.pci
+ 31, // llvm.hexagon.S2.storerb.pcr
34, // llvm.hexagon.S2.storerd.pbr
- 31, // llvm.hexagon.S2.storerd.pci
- 30, // llvm.hexagon.S2.storerd.pcr
+ 32, // llvm.hexagon.S2.storerd.pci
+ 31, // llvm.hexagon.S2.storerd.pcr
34, // llvm.hexagon.S2.storerf.pbr
- 31, // llvm.hexagon.S2.storerf.pci
- 30, // llvm.hexagon.S2.storerf.pcr
+ 32, // llvm.hexagon.S2.storerf.pci
+ 31, // llvm.hexagon.S2.storerf.pcr
34, // llvm.hexagon.S2.storerh.pbr
- 31, // llvm.hexagon.S2.storerh.pci
- 30, // llvm.hexagon.S2.storerh.pcr
+ 32, // llvm.hexagon.S2.storerh.pci
+ 31, // llvm.hexagon.S2.storerh.pcr
34, // llvm.hexagon.S2.storeri.pbr
- 31, // llvm.hexagon.S2.storeri.pci
- 30, // llvm.hexagon.S2.storeri.pcr
+ 32, // llvm.hexagon.S2.storeri.pci
+ 31, // llvm.hexagon.S2.storeri.pcr
18, // llvm.hexagon.S2.storew.locked
1, // llvm.hexagon.S2.svsathb
1, // llvm.hexagon.S2.svsathub
@@ -11137,6 +11284,37 @@
1, // llvm.hexagon.V6.extractw.128B
1, // llvm.hexagon.V6.hi
1, // llvm.hexagon.V6.hi.128B
+ 1, // llvm.hexagon.V6.ld0
+ 1, // llvm.hexagon.V6.ld0.128B
+ 1, // llvm.hexagon.V6.ldcnp0
+ 1, // llvm.hexagon.V6.ldcnp0.128B
+ 1, // llvm.hexagon.V6.ldcnpnt0
+ 1, // llvm.hexagon.V6.ldcnpnt0.128B
+ 1, // llvm.hexagon.V6.ldcp0
+ 1, // llvm.hexagon.V6.ldcp0.128B
+ 1, // llvm.hexagon.V6.ldcpnt0
+ 1, // llvm.hexagon.V6.ldcpnt0.128B
+ 1, // llvm.hexagon.V6.ldnp0
+ 1, // llvm.hexagon.V6.ldnp0.128B
+ 1, // llvm.hexagon.V6.ldnpnt0
+ 1, // llvm.hexagon.V6.ldnpnt0.128B
+ 1, // llvm.hexagon.V6.ldnt0
+ 1, // llvm.hexagon.V6.ldnt0.128B
+ 1, // llvm.hexagon.V6.ldntnt0
+ 1, // llvm.hexagon.V6.ldp0
+ 1, // llvm.hexagon.V6.ldp0.128B
+ 1, // llvm.hexagon.V6.ldpnt0
+ 1, // llvm.hexagon.V6.ldpnt0.128B
+ 1, // llvm.hexagon.V6.ldtnp0
+ 1, // llvm.hexagon.V6.ldtnp0.128B
+ 1, // llvm.hexagon.V6.ldtnpnt0
+ 1, // llvm.hexagon.V6.ldtnpnt0.128B
+ 1, // llvm.hexagon.V6.ldtp0
+ 1, // llvm.hexagon.V6.ldtp0.128B
+ 1, // llvm.hexagon.V6.ldtpnt0
+ 1, // llvm.hexagon.V6.ldtpnt0.128B
+ 1, // llvm.hexagon.V6.ldu0
+ 1, // llvm.hexagon.V6.ldu0.128B
1, // llvm.hexagon.V6.lo
1, // llvm.hexagon.V6.lo.128B
1, // llvm.hexagon.V6.lvsplatb
@@ -11207,6 +11385,8 @@
1, // llvm.hexagon.V6.vaddbsat.dv.128B
1, // llvm.hexagon.V6.vaddcarry
1, // llvm.hexagon.V6.vaddcarry.128B
+ 1, // llvm.hexagon.V6.vaddcarrysat
+ 1, // llvm.hexagon.V6.vaddcarrysat.128B
1, // llvm.hexagon.V6.vaddclbh
1, // llvm.hexagon.V6.vaddclbh.128B
1, // llvm.hexagon.V6.vaddclbw
@@ -11295,6 +11475,8 @@
1, // llvm.hexagon.V6.vaslw.acc.128B
1, // llvm.hexagon.V6.vaslwv
1, // llvm.hexagon.V6.vaslwv.128B
+ 1, // llvm.hexagon.V6.vasr.into
+ 1, // llvm.hexagon.V6.vasr.into.128B
1, // llvm.hexagon.V6.vasrh
1, // llvm.hexagon.V6.vasrh.128B
1, // llvm.hexagon.V6.vasrh.acc
@@ -11775,6 +11957,8 @@
1, // llvm.hexagon.V6.vrmpyubv.acc.128B
1, // llvm.hexagon.V6.vror
1, // llvm.hexagon.V6.vror.128B
+ 1, // llvm.hexagon.V6.vrotr
+ 1, // llvm.hexagon.V6.vrotr.128B
1, // llvm.hexagon.V6.vroundhb
1, // llvm.hexagon.V6.vroundhb.128B
1, // llvm.hexagon.V6.vroundhub
@@ -11791,6 +11975,8 @@
1, // llvm.hexagon.V6.vrsadubi.128B
1, // llvm.hexagon.V6.vrsadubi.acc
1, // llvm.hexagon.V6.vrsadubi.acc.128B
+ 1, // llvm.hexagon.V6.vsatdw
+ 1, // llvm.hexagon.V6.vsatdw.128B
1, // llvm.hexagon.V6.vsathub
1, // llvm.hexagon.V6.vsathub.128B
1, // llvm.hexagon.V6.vsatuwuh
@@ -11909,6 +12095,8 @@
1, // llvm.hexagon.V6.vtmpyhb.128B
1, // llvm.hexagon.V6.vtmpyhb.acc
1, // llvm.hexagon.V6.vtmpyhb.acc.128B
+ 1, // llvm.hexagon.V6.vtran2x2.map
+ 1, // llvm.hexagon.V6.vtran2x2.map.128B
1, // llvm.hexagon.V6.vunpackb
1, // llvm.hexagon.V6.vunpackb.128B
1, // llvm.hexagon.V6.vunpackh
@@ -11930,7 +12118,7 @@
3, // llvm.hexagon.Y2.dccleana
3, // llvm.hexagon.Y2.dccleaninva
3, // llvm.hexagon.Y2.dcinva
- 38, // llvm.hexagon.Y2.dczeroa
+ 41, // llvm.hexagon.Y2.dczeroa
3, // llvm.hexagon.Y4.l2fetch
3, // llvm.hexagon.Y5.l2fetch
22, // llvm.hexagon.circ.ldb
@@ -11944,8 +12132,9 @@
34, // llvm.hexagon.circ.sth
34, // llvm.hexagon.circ.sthhi
34, // llvm.hexagon.circ.stw
- 22, // llvm.hexagon.mm256i.vaddw
3, // llvm.hexagon.prefetch
+ 23, // llvm.hexagon.vmemcpy
+ 25, // llvm.hexagon.vmemset
3, // llvm.mips.absq.s.ph
3, // llvm.mips.absq.s.qb
3, // llvm.mips.absq.s.w
@@ -12651,16 +12840,16 @@
18, // llvm.nvvm.atomic.or.gen.i.sys
18, // llvm.nvvm.atomic.xor.gen.i.cta
18, // llvm.nvvm.atomic.xor.gen.i.sys
- 35, // llvm.nvvm.bar.sync
- 35, // llvm.nvvm.bar.warp.sync
- 35, // llvm.nvvm.barrier
- 35, // llvm.nvvm.barrier.n
- 35, // llvm.nvvm.barrier.sync
- 35, // llvm.nvvm.barrier.sync.cnt
- 35, // llvm.nvvm.barrier0
- 35, // llvm.nvvm.barrier0.and
- 35, // llvm.nvvm.barrier0.or
- 35, // llvm.nvvm.barrier0.popc
+ 38, // llvm.nvvm.bar.sync
+ 38, // llvm.nvvm.bar.warp.sync
+ 38, // llvm.nvvm.barrier
+ 38, // llvm.nvvm.barrier.n
+ 38, // llvm.nvvm.barrier.sync
+ 38, // llvm.nvvm.barrier.sync.cnt
+ 38, // llvm.nvvm.barrier0
+ 38, // llvm.nvvm.barrier0.and
+ 38, // llvm.nvvm.barrier0.or
+ 38, // llvm.nvvm.barrier0.popc
1, // llvm.nvvm.bitcast.d2ll
1, // llvm.nvvm.bitcast.f2i
1, // llvm.nvvm.bitcast.i2f
@@ -12789,12 +12978,12 @@
1, // llvm.nvvm.istypep.sampler
1, // llvm.nvvm.istypep.surface
1, // llvm.nvvm.istypep.texture
- 39, // llvm.nvvm.ldg.global.f
- 39, // llvm.nvvm.ldg.global.i
- 39, // llvm.nvvm.ldg.global.p
- 39, // llvm.nvvm.ldu.global.f
- 39, // llvm.nvvm.ldu.global.i
- 39, // llvm.nvvm.ldu.global.p
+ 42, // llvm.nvvm.ldg.global.f
+ 42, // llvm.nvvm.ldg.global.i
+ 42, // llvm.nvvm.ldg.global.p
+ 42, // llvm.nvvm.ldu.global.f
+ 42, // llvm.nvvm.ldu.global.i
+ 42, // llvm.nvvm.ldu.global.p
1, // llvm.nvvm.lg2.approx.d
1, // llvm.nvvm.lg2.approx.f
1, // llvm.nvvm.lg2.approx.ftz.f
@@ -12807,10 +12996,10 @@
1, // llvm.nvvm.ll2f.rp
1, // llvm.nvvm.ll2f.rz
1, // llvm.nvvm.lohi.i2d
- 40, // llvm.nvvm.match.all.sync.i32p
- 40, // llvm.nvvm.match.all.sync.i64p
- 40, // llvm.nvvm.match.any.sync.i32
- 40, // llvm.nvvm.match.any.sync.i64
+ 43, // llvm.nvvm.match.all.sync.i32p
+ 43, // llvm.nvvm.match.all.sync.i64p
+ 43, // llvm.nvvm.match.any.sync.i32
+ 43, // llvm.nvvm.match.any.sync.i64
3, // llvm.nvvm.membar.cta
3, // llvm.nvvm.membar.gl
3, // llvm.nvvm.membar.sys
@@ -12861,8 +13050,8 @@
1, // llvm.nvvm.rcp.rz.d
1, // llvm.nvvm.rcp.rz.f
1, // llvm.nvvm.rcp.rz.ftz.f
- 1, // llvm.nvvm.read.ptx.sreg.clock
- 1, // llvm.nvvm.read.ptx.sreg.clock64
+ 15, // llvm.nvvm.read.ptx.sreg.clock
+ 15, // llvm.nvvm.read.ptx.sreg.clock64
1, // llvm.nvvm.read.ptx.sreg.ctaid.w
1, // llvm.nvvm.read.ptx.sreg.ctaid.x
1, // llvm.nvvm.read.ptx.sreg.ctaid.y
@@ -12916,10 +13105,10 @@
1, // llvm.nvvm.read.ptx.sreg.ntid.y
1, // llvm.nvvm.read.ptx.sreg.ntid.z
1, // llvm.nvvm.read.ptx.sreg.nwarpid
- 1, // llvm.nvvm.read.ptx.sreg.pm0
- 1, // llvm.nvvm.read.ptx.sreg.pm1
- 1, // llvm.nvvm.read.ptx.sreg.pm2
- 1, // llvm.nvvm.read.ptx.sreg.pm3
+ 15, // llvm.nvvm.read.ptx.sreg.pm0
+ 15, // llvm.nvvm.read.ptx.sreg.pm1
+ 15, // llvm.nvvm.read.ptx.sreg.pm2
+ 15, // llvm.nvvm.read.ptx.sreg.pm3
1, // llvm.nvvm.read.ptx.sreg.smid
1, // llvm.nvvm.read.ptx.sreg.tid.w
1, // llvm.nvvm.read.ptx.sreg.tid.x
@@ -12942,22 +13131,22 @@
1, // llvm.nvvm.saturate.d
1, // llvm.nvvm.saturate.f
1, // llvm.nvvm.saturate.ftz.f
- 40, // llvm.nvvm.shfl.bfly.f32
- 40, // llvm.nvvm.shfl.bfly.i32
- 40, // llvm.nvvm.shfl.down.f32
- 40, // llvm.nvvm.shfl.down.i32
- 40, // llvm.nvvm.shfl.idx.f32
- 40, // llvm.nvvm.shfl.idx.i32
- 40, // llvm.nvvm.shfl.sync.bfly.f32
- 40, // llvm.nvvm.shfl.sync.bfly.i32
- 40, // llvm.nvvm.shfl.sync.down.f32
- 40, // llvm.nvvm.shfl.sync.down.i32
- 40, // llvm.nvvm.shfl.sync.idx.f32
- 40, // llvm.nvvm.shfl.sync.idx.i32
- 40, // llvm.nvvm.shfl.sync.up.f32
- 40, // llvm.nvvm.shfl.sync.up.i32
- 40, // llvm.nvvm.shfl.up.f32
- 40, // llvm.nvvm.shfl.up.i32
+ 43, // llvm.nvvm.shfl.bfly.f32
+ 43, // llvm.nvvm.shfl.bfly.i32
+ 43, // llvm.nvvm.shfl.down.f32
+ 43, // llvm.nvvm.shfl.down.i32
+ 43, // llvm.nvvm.shfl.idx.f32
+ 43, // llvm.nvvm.shfl.idx.i32
+ 43, // llvm.nvvm.shfl.sync.bfly.f32
+ 43, // llvm.nvvm.shfl.sync.bfly.i32
+ 43, // llvm.nvvm.shfl.sync.down.f32
+ 43, // llvm.nvvm.shfl.sync.down.i32
+ 43, // llvm.nvvm.shfl.sync.idx.f32
+ 43, // llvm.nvvm.shfl.sync.idx.i32
+ 43, // llvm.nvvm.shfl.sync.up.f32
+ 43, // llvm.nvvm.shfl.sync.up.i32
+ 43, // llvm.nvvm.shfl.up.f32
+ 43, // llvm.nvvm.shfl.up.i32
1, // llvm.nvvm.sin.approx.f
1, // llvm.nvvm.sin.approx.ftz.f
1, // llvm.nvvm.sqrt.approx.f
@@ -13554,14 +13743,14 @@
1, // llvm.nvvm.ull2f.rn
1, // llvm.nvvm.ull2f.rp
1, // llvm.nvvm.ull2f.rz
- 40, // llvm.nvvm.vote.all
- 40, // llvm.nvvm.vote.all.sync
- 40, // llvm.nvvm.vote.any
- 40, // llvm.nvvm.vote.any.sync
- 40, // llvm.nvvm.vote.ballot
- 40, // llvm.nvvm.vote.ballot.sync
- 40, // llvm.nvvm.vote.uni
- 40, // llvm.nvvm.vote.uni.sync
+ 43, // llvm.nvvm.vote.all
+ 43, // llvm.nvvm.vote.all.sync
+ 43, // llvm.nvvm.vote.any
+ 43, // llvm.nvvm.vote.any.sync
+ 43, // llvm.nvvm.vote.ballot
+ 43, // llvm.nvvm.vote.ballot.sync
+ 43, // llvm.nvvm.vote.uni
+ 43, // llvm.nvvm.vote.uni.sync
13, // llvm.nvvm.wmma.m16n16k16.load.a.col.f16
13, // llvm.nvvm.wmma.m16n16k16.load.a.col.stride.f16
13, // llvm.nvvm.wmma.m16n16k16.load.a.row.f16
@@ -13610,14 +13799,14 @@
1, // llvm.nvvm.wmma.m16n16k16.mma.row.row.f32.f16.satfinite
1, // llvm.nvvm.wmma.m16n16k16.mma.row.row.f32.f32
1, // llvm.nvvm.wmma.m16n16k16.mma.row.row.f32.f32.satfinite
- 41, // llvm.nvvm.wmma.m16n16k16.store.d.col.f16
- 41, // llvm.nvvm.wmma.m16n16k16.store.d.col.f32
- 41, // llvm.nvvm.wmma.m16n16k16.store.d.col.stride.f16
- 41, // llvm.nvvm.wmma.m16n16k16.store.d.col.stride.f32
- 41, // llvm.nvvm.wmma.m16n16k16.store.d.row.f16
- 41, // llvm.nvvm.wmma.m16n16k16.store.d.row.f32
- 41, // llvm.nvvm.wmma.m16n16k16.store.d.row.stride.f16
- 41, // llvm.nvvm.wmma.m16n16k16.store.d.row.stride.f32
+ 44, // llvm.nvvm.wmma.m16n16k16.store.d.col.f16
+ 44, // llvm.nvvm.wmma.m16n16k16.store.d.col.f32
+ 44, // llvm.nvvm.wmma.m16n16k16.store.d.col.stride.f16
+ 44, // llvm.nvvm.wmma.m16n16k16.store.d.col.stride.f32
+ 44, // llvm.nvvm.wmma.m16n16k16.store.d.row.f16
+ 44, // llvm.nvvm.wmma.m16n16k16.store.d.row.f32
+ 44, // llvm.nvvm.wmma.m16n16k16.store.d.row.stride.f16
+ 44, // llvm.nvvm.wmma.m16n16k16.store.d.row.stride.f32
13, // llvm.nvvm.wmma.m32n8k16.load.a.col.f16
13, // llvm.nvvm.wmma.m32n8k16.load.a.col.stride.f16
13, // llvm.nvvm.wmma.m32n8k16.load.a.row.f16
@@ -13666,14 +13855,14 @@
1, // llvm.nvvm.wmma.m32n8k16.mma.row.row.f32.f16.satfinite
1, // llvm.nvvm.wmma.m32n8k16.mma.row.row.f32.f32
1, // llvm.nvvm.wmma.m32n8k16.mma.row.row.f32.f32.satfinite
- 41, // llvm.nvvm.wmma.m32n8k16.store.d.col.f16
- 41, // llvm.nvvm.wmma.m32n8k16.store.d.col.f32
- 41, // llvm.nvvm.wmma.m32n8k16.store.d.col.stride.f16
- 41, // llvm.nvvm.wmma.m32n8k16.store.d.col.stride.f32
- 41, // llvm.nvvm.wmma.m32n8k16.store.d.row.f16
- 41, // llvm.nvvm.wmma.m32n8k16.store.d.row.f32
- 41, // llvm.nvvm.wmma.m32n8k16.store.d.row.stride.f16
- 41, // llvm.nvvm.wmma.m32n8k16.store.d.row.stride.f32
+ 44, // llvm.nvvm.wmma.m32n8k16.store.d.col.f16
+ 44, // llvm.nvvm.wmma.m32n8k16.store.d.col.f32
+ 44, // llvm.nvvm.wmma.m32n8k16.store.d.col.stride.f16
+ 44, // llvm.nvvm.wmma.m32n8k16.store.d.col.stride.f32
+ 44, // llvm.nvvm.wmma.m32n8k16.store.d.row.f16
+ 44, // llvm.nvvm.wmma.m32n8k16.store.d.row.f32
+ 44, // llvm.nvvm.wmma.m32n8k16.store.d.row.stride.f16
+ 44, // llvm.nvvm.wmma.m32n8k16.store.d.row.stride.f32
13, // llvm.nvvm.wmma.m8n32k16.load.a.col.f16
13, // llvm.nvvm.wmma.m8n32k16.load.a.col.stride.f16
13, // llvm.nvvm.wmma.m8n32k16.load.a.row.f16
@@ -13722,14 +13911,14 @@
1, // llvm.nvvm.wmma.m8n32k16.mma.row.row.f32.f16.satfinite
1, // llvm.nvvm.wmma.m8n32k16.mma.row.row.f32.f32
1, // llvm.nvvm.wmma.m8n32k16.mma.row.row.f32.f32.satfinite
- 41, // llvm.nvvm.wmma.m8n32k16.store.d.col.f16
- 41, // llvm.nvvm.wmma.m8n32k16.store.d.col.f32
- 41, // llvm.nvvm.wmma.m8n32k16.store.d.col.stride.f16
- 41, // llvm.nvvm.wmma.m8n32k16.store.d.col.stride.f32
- 41, // llvm.nvvm.wmma.m8n32k16.store.d.row.f16
- 41, // llvm.nvvm.wmma.m8n32k16.store.d.row.f32
- 41, // llvm.nvvm.wmma.m8n32k16.store.d.row.stride.f16
- 41, // llvm.nvvm.wmma.m8n32k16.store.d.row.stride.f32
+ 44, // llvm.nvvm.wmma.m8n32k16.store.d.col.f16
+ 44, // llvm.nvvm.wmma.m8n32k16.store.d.col.f32
+ 44, // llvm.nvvm.wmma.m8n32k16.store.d.col.stride.f16
+ 44, // llvm.nvvm.wmma.m8n32k16.store.d.col.stride.f32
+ 44, // llvm.nvvm.wmma.m8n32k16.store.d.row.f16
+ 44, // llvm.nvvm.wmma.m8n32k16.store.d.row.f32
+ 44, // llvm.nvvm.wmma.m8n32k16.store.d.row.stride.f16
+ 44, // llvm.nvvm.wmma.m8n32k16.store.d.row.stride.f32
1, // llvm.ppc.addf128.round.to.odd
1, // llvm.ppc.altivec.crypto.vcipher
1, // llvm.ppc.altivec.crypto.vcipherlast
@@ -13758,11 +13947,11 @@
2, // llvm.ppc.altivec.lvxl
16, // llvm.ppc.altivec.mfvscr
3, // llvm.ppc.altivec.mtvscr
- 42, // llvm.ppc.altivec.stvebx
- 42, // llvm.ppc.altivec.stvehx
- 42, // llvm.ppc.altivec.stvewx
- 42, // llvm.ppc.altivec.stvx
- 42, // llvm.ppc.altivec.stvxl
+ 45, // llvm.ppc.altivec.stvebx
+ 45, // llvm.ppc.altivec.stvehx
+ 45, // llvm.ppc.altivec.stvewx
+ 45, // llvm.ppc.altivec.stvx
+ 45, // llvm.ppc.altivec.stvxl
1, // llvm.ppc.altivec.vabsdub
1, // llvm.ppc.altivec.vabsduh
1, // llvm.ppc.altivec.vabsduw
@@ -13964,7 +14153,7 @@
3, // llvm.ppc.get.texasru
3, // llvm.ppc.get.tfhar
3, // llvm.ppc.get.tfiar
- 43, // llvm.ppc.is.decremented.ctr.nonzero
+ 46, // llvm.ppc.is.decremented.ctr.nonzero
3, // llvm.ppc.lwsync
3, // llvm.ppc.mtctr
1, // llvm.ppc.mulf128.round.to.odd
@@ -14041,16 +14230,16 @@
1, // llvm.ppc.qpx.qvlpcls
1, // llvm.ppc.qpx.qvlpcrd
1, // llvm.ppc.qpx.qvlpcrs
- 42, // llvm.ppc.qpx.qvstfcd
- 42, // llvm.ppc.qpx.qvstfcda
- 42, // llvm.ppc.qpx.qvstfcs
- 42, // llvm.ppc.qpx.qvstfcsa
- 42, // llvm.ppc.qpx.qvstfd
- 42, // llvm.ppc.qpx.qvstfda
- 42, // llvm.ppc.qpx.qvstfiw
- 42, // llvm.ppc.qpx.qvstfiwa
- 42, // llvm.ppc.qpx.qvstfs
- 42, // llvm.ppc.qpx.qvstfsa
+ 45, // llvm.ppc.qpx.qvstfcd
+ 45, // llvm.ppc.qpx.qvstfcda
+ 45, // llvm.ppc.qpx.qvstfcs
+ 45, // llvm.ppc.qpx.qvstfcsa
+ 45, // llvm.ppc.qpx.qvstfd
+ 45, // llvm.ppc.qpx.qvstfda
+ 45, // llvm.ppc.qpx.qvstfiw
+ 45, // llvm.ppc.qpx.qvstfiwa
+ 45, // llvm.ppc.qpx.qvstfs
+ 45, // llvm.ppc.qpx.qvstfsa
1, // llvm.ppc.scalar.extract.expq
1, // llvm.ppc.scalar.insert.exp.qp
3, // llvm.ppc.set.texasr
@@ -14082,12 +14271,12 @@
2, // llvm.ppc.vsx.lxvll
2, // llvm.ppc.vsx.lxvw4x
2, // llvm.ppc.vsx.lxvw4x.be
- 42, // llvm.ppc.vsx.stxvd2x
- 42, // llvm.ppc.vsx.stxvd2x.be
- 42, // llvm.ppc.vsx.stxvl
- 42, // llvm.ppc.vsx.stxvll
- 42, // llvm.ppc.vsx.stxvw4x
- 42, // llvm.ppc.vsx.stxvw4x.be
+ 45, // llvm.ppc.vsx.stxvd2x
+ 45, // llvm.ppc.vsx.stxvd2x.be
+ 45, // llvm.ppc.vsx.stxvl
+ 45, // llvm.ppc.vsx.stxvll
+ 45, // llvm.ppc.vsx.stxvw4x
+ 45, // llvm.ppc.vsx.stxvw4x.be
1, // llvm.ppc.vsx.xsmaxdp
1, // llvm.ppc.vsx.xsmindp
1, // llvm.ppc.vsx.xvcmpeqdp
@@ -14139,7 +14328,7 @@
1, // llvm.r600.ddx
1, // llvm.r600.ddy
4, // llvm.r600.dot4
- 35, // llvm.r600.group.barrier
+ 38, // llvm.r600.group.barrier
4, // llvm.r600.implicitarg.ptr
3, // llvm.r600.kill
3, // llvm.r600.rat.store.typed
@@ -14171,23 +14360,33 @@
1, // llvm.r600.txlc
1, // llvm.r600.txq
18, // llvm.riscv.masked.atomicrmw.add.i32
+ 18, // llvm.riscv.masked.atomicrmw.add.i64
18, // llvm.riscv.masked.atomicrmw.max.i32
+ 18, // llvm.riscv.masked.atomicrmw.max.i64
18, // llvm.riscv.masked.atomicrmw.min.i32
+ 18, // llvm.riscv.masked.atomicrmw.min.i64
18, // llvm.riscv.masked.atomicrmw.nand.i32
+ 18, // llvm.riscv.masked.atomicrmw.nand.i64
18, // llvm.riscv.masked.atomicrmw.sub.i32
+ 18, // llvm.riscv.masked.atomicrmw.sub.i64
18, // llvm.riscv.masked.atomicrmw.umax.i32
+ 18, // llvm.riscv.masked.atomicrmw.umax.i64
18, // llvm.riscv.masked.atomicrmw.umin.i32
+ 18, // llvm.riscv.masked.atomicrmw.umin.i64
18, // llvm.riscv.masked.atomicrmw.xchg.i32
+ 18, // llvm.riscv.masked.atomicrmw.xchg.i64
+ 18, // llvm.riscv.masked.cmpxchg.i32
+ 18, // llvm.riscv.masked.cmpxchg.i64
3, // llvm.s390.efpc
1, // llvm.s390.etnd
1, // llvm.s390.lcbb
- 42, // llvm.s390.ntstg
+ 45, // llvm.s390.ntstg
3, // llvm.s390.ppa.txassist
3, // llvm.s390.sfpc
- 44, // llvm.s390.tabort
- 45, // llvm.s390.tbegin
- 45, // llvm.s390.tbegin.nofloat
- 45, // llvm.s390.tbeginc
+ 47, // llvm.s390.tabort
+ 48, // llvm.s390.tbegin
+ 48, // llvm.s390.tbegin.nofloat
+ 48, // llvm.s390.tbeginc
1, // llvm.s390.tdc
3, // llvm.s390.tend
1, // llvm.s390.vaccb
@@ -14365,7 +14564,7 @@
1, // llvm.s390.vsrab
1, // llvm.s390.vsrl
1, // llvm.s390.vsrlb
- 42, // llvm.s390.vstl
+ 45, // llvm.s390.vstl
1, // llvm.s390.vstrcb
1, // llvm.s390.vstrcbs
1, // llvm.s390.vstrcf
@@ -14378,7 +14577,7 @@
1, // llvm.s390.vstrczfs
1, // llvm.s390.vstrczh
1, // llvm.s390.vstrczhs
- 42, // llvm.s390.vstrl
+ 45, // llvm.s390.vstrl
1, // llvm.s390.vsumb
1, // llvm.s390.vsumgf
1, // llvm.s390.vsumgh
@@ -14398,29 +14597,27 @@
1, // llvm.s390.vupllb
1, // llvm.s390.vupllf
1, // llvm.s390.vupllh
- 4, // llvm.wasm.add.saturate.signed
- 4, // llvm.wasm.add.saturate.unsigned
4, // llvm.wasm.alltrue
4, // llvm.wasm.anytrue
- 46, // llvm.wasm.atomic.notify
- 47, // llvm.wasm.atomic.wait.i32
- 47, // llvm.wasm.atomic.wait.i64
+ 49, // llvm.wasm.atomic.notify
+ 50, // llvm.wasm.atomic.wait.i32
+ 50, // llvm.wasm.atomic.wait.i64
4, // llvm.wasm.bitselect
- 48, // llvm.wasm.catch
- 16, // llvm.wasm.current.memory
- 48, // llvm.wasm.get.ehselector
- 48, // llvm.wasm.get.exception
- 3, // llvm.wasm.grow.memory
+ 51, // llvm.wasm.data.drop
+ 52, // llvm.wasm.extract.exception
+ 52, // llvm.wasm.get.ehselector
+ 52, // llvm.wasm.get.exception
1, // llvm.wasm.landingpad.index
1, // llvm.wasm.lsda
- 3, // llvm.wasm.mem.grow
- 16, // llvm.wasm.mem.size
3, // llvm.wasm.memory.grow
+ 53, // llvm.wasm.memory.init
16, // llvm.wasm.memory.size
- 49, // llvm.wasm.rethrow
+ 54, // llvm.wasm.rethrow
4, // llvm.wasm.sub.saturate.signed
4, // llvm.wasm.sub.saturate.unsigned
- 49, // llvm.wasm.throw
+ 54, // llvm.wasm.throw
+ 4, // llvm.wasm.trunc.saturate.signed
+ 4, // llvm.wasm.trunc.saturate.unsigned
1, // llvm.x86.3dnow.pavgusb
1, // llvm.x86.3dnow.pf2id
1, // llvm.x86.3dnow.pfacc
@@ -14445,10 +14642,8 @@
1, // llvm.x86.3dnowa.pfpnacc
1, // llvm.x86.3dnowa.pi2fw
1, // llvm.x86.3dnowa.pswapd
- 1, // llvm.x86.addcarry.u32
- 1, // llvm.x86.addcarry.u64
- 1, // llvm.x86.addcarryx.u32
- 1, // llvm.x86.addcarryx.u64
+ 1, // llvm.x86.addcarry.32
+ 1, // llvm.x86.addcarry.64
1, // llvm.x86.aesni.aesdec
1, // llvm.x86.aesni.aesdec.256
1, // llvm.x86.aesni.aesdec.512
@@ -14548,8 +14743,6 @@
1, // llvm.x86.avx2.packsswb
1, // llvm.x86.avx2.packusdw
1, // llvm.x86.avx2.packuswb
- 1, // llvm.x86.avx2.padds.b
- 1, // llvm.x86.avx2.padds.w
1, // llvm.x86.avx2.pblendvb
1, // llvm.x86.avx2.permd
1, // llvm.x86.avx2.permps
@@ -14596,8 +14789,6 @@
1, // llvm.x86.avx2.psrlv.d.256
1, // llvm.x86.avx2.psrlv.q
1, // llvm.x86.avx2.psrlv.q.256
- 1, // llvm.x86.avx2.psubs.b
- 1, // llvm.x86.avx2.psubs.w
1, // llvm.x86.avx512.add.pd.512
1, // llvm.x86.avx512.add.ps.512
1, // llvm.x86.avx512.broadcastmb.128
@@ -14612,6 +14803,12 @@
1, // llvm.x86.avx512.cmp.ps.128
1, // llvm.x86.avx512.cmp.ps.256
1, // llvm.x86.avx512.cmp.ps.512
+ 1, // llvm.x86.avx512.conflict.d.128
+ 1, // llvm.x86.avx512.conflict.d.256
+ 1, // llvm.x86.avx512.conflict.d.512
+ 1, // llvm.x86.avx512.conflict.q.128
+ 1, // llvm.x86.avx512.conflict.q.256
+ 1, // llvm.x86.avx512.conflict.q.512
1, // llvm.x86.avx512.cvtsi2sd64
1, // llvm.x86.avx512.cvtsi2ss32
1, // llvm.x86.avx512.cvtsi2ss64
@@ -14683,31 +14880,7 @@
1, // llvm.x86.avx512.mask.add.ss.round
1, // llvm.x86.avx512.mask.cmp.sd
1, // llvm.x86.avx512.mask.cmp.ss
- 1, // llvm.x86.avx512.mask.compress.b.128
- 1, // llvm.x86.avx512.mask.compress.b.256
- 1, // llvm.x86.avx512.mask.compress.b.512
- 1, // llvm.x86.avx512.mask.compress.d.128
- 1, // llvm.x86.avx512.mask.compress.d.256
- 1, // llvm.x86.avx512.mask.compress.d.512
- 1, // llvm.x86.avx512.mask.compress.pd.128
- 1, // llvm.x86.avx512.mask.compress.pd.256
- 1, // llvm.x86.avx512.mask.compress.pd.512
- 1, // llvm.x86.avx512.mask.compress.ps.128
- 1, // llvm.x86.avx512.mask.compress.ps.256
- 1, // llvm.x86.avx512.mask.compress.ps.512
- 1, // llvm.x86.avx512.mask.compress.q.128
- 1, // llvm.x86.avx512.mask.compress.q.256
- 1, // llvm.x86.avx512.mask.compress.q.512
- 1, // llvm.x86.avx512.mask.compress.w.128
- 1, // llvm.x86.avx512.mask.compress.w.256
- 1, // llvm.x86.avx512.mask.compress.w.512
- 1, // llvm.x86.avx512.mask.conflict.d.128
- 1, // llvm.x86.avx512.mask.conflict.d.256
- 1, // llvm.x86.avx512.mask.conflict.d.512
- 1, // llvm.x86.avx512.mask.conflict.q.128
- 1, // llvm.x86.avx512.mask.conflict.q.256
- 1, // llvm.x86.avx512.mask.conflict.q.512
- 1, // llvm.x86.avx512.mask.cvtdq2ps.512
+ 1, // llvm.x86.avx512.mask.compress
1, // llvm.x86.avx512.mask.cvtpd2dq.128
1, // llvm.x86.avx512.mask.cvtpd2dq.512
1, // llvm.x86.avx512.mask.cvtpd2ps
@@ -14734,10 +14907,7 @@
1, // llvm.x86.avx512.mask.cvtps2uqq.128
1, // llvm.x86.avx512.mask.cvtps2uqq.256
1, // llvm.x86.avx512.mask.cvtps2uqq.512
- 1, // llvm.x86.avx512.mask.cvtqq2pd.512
1, // llvm.x86.avx512.mask.cvtqq2ps.128
- 1, // llvm.x86.avx512.mask.cvtqq2ps.256
- 1, // llvm.x86.avx512.mask.cvtqq2ps.512
1, // llvm.x86.avx512.mask.cvtsd2ss.round
1, // llvm.x86.avx512.mask.cvtss2sd.round
1, // llvm.x86.avx512.mask.cvttpd2dq.128
@@ -14761,31 +14931,10 @@
1, // llvm.x86.avx512.mask.cvttps2uqq.128
1, // llvm.x86.avx512.mask.cvttps2uqq.256
1, // llvm.x86.avx512.mask.cvttps2uqq.512
- 1, // llvm.x86.avx512.mask.cvtudq2ps.512
- 1, // llvm.x86.avx512.mask.cvtuqq2pd.512
1, // llvm.x86.avx512.mask.cvtuqq2ps.128
- 1, // llvm.x86.avx512.mask.cvtuqq2ps.256
- 1, // llvm.x86.avx512.mask.cvtuqq2ps.512
1, // llvm.x86.avx512.mask.div.sd.round
1, // llvm.x86.avx512.mask.div.ss.round
- 1, // llvm.x86.avx512.mask.expand.b.128
- 1, // llvm.x86.avx512.mask.expand.b.256
- 1, // llvm.x86.avx512.mask.expand.b.512
- 1, // llvm.x86.avx512.mask.expand.d.128
- 1, // llvm.x86.avx512.mask.expand.d.256
- 1, // llvm.x86.avx512.mask.expand.d.512
- 1, // llvm.x86.avx512.mask.expand.pd.128
- 1, // llvm.x86.avx512.mask.expand.pd.256
- 1, // llvm.x86.avx512.mask.expand.pd.512
- 1, // llvm.x86.avx512.mask.expand.ps.128
- 1, // llvm.x86.avx512.mask.expand.ps.256
- 1, // llvm.x86.avx512.mask.expand.ps.512
- 1, // llvm.x86.avx512.mask.expand.q.128
- 1, // llvm.x86.avx512.mask.expand.q.256
- 1, // llvm.x86.avx512.mask.expand.q.512
- 1, // llvm.x86.avx512.mask.expand.w.128
- 1, // llvm.x86.avx512.mask.expand.w.256
- 1, // llvm.x86.avx512.mask.expand.w.512
+ 1, // llvm.x86.avx512.mask.expand
1, // llvm.x86.avx512.mask.fixupimm.pd.128
1, // llvm.x86.avx512.mask.fixupimm.pd.256
1, // llvm.x86.avx512.mask.fixupimm.pd.512
@@ -14796,6 +14945,30 @@
1, // llvm.x86.avx512.mask.fixupimm.ss
1, // llvm.x86.avx512.mask.fpclass.sd
1, // llvm.x86.avx512.mask.fpclass.ss
+ 2, // llvm.x86.avx512.mask.gather.dpd.512
+ 2, // llvm.x86.avx512.mask.gather.dpi.512
+ 2, // llvm.x86.avx512.mask.gather.dpq.512
+ 2, // llvm.x86.avx512.mask.gather.dps.512
+ 2, // llvm.x86.avx512.mask.gather.qpd.512
+ 2, // llvm.x86.avx512.mask.gather.qpi.512
+ 2, // llvm.x86.avx512.mask.gather.qpq.512
+ 2, // llvm.x86.avx512.mask.gather.qps.512
+ 2, // llvm.x86.avx512.mask.gather3div2.df
+ 2, // llvm.x86.avx512.mask.gather3div2.di
+ 2, // llvm.x86.avx512.mask.gather3div4.df
+ 2, // llvm.x86.avx512.mask.gather3div4.di
+ 2, // llvm.x86.avx512.mask.gather3div4.sf
+ 2, // llvm.x86.avx512.mask.gather3div4.si
+ 2, // llvm.x86.avx512.mask.gather3div8.sf
+ 2, // llvm.x86.avx512.mask.gather3div8.si
+ 2, // llvm.x86.avx512.mask.gather3siv2.df
+ 2, // llvm.x86.avx512.mask.gather3siv2.di
+ 2, // llvm.x86.avx512.mask.gather3siv4.df
+ 2, // llvm.x86.avx512.mask.gather3siv4.di
+ 2, // llvm.x86.avx512.mask.gather3siv4.sf
+ 2, // llvm.x86.avx512.mask.gather3siv4.si
+ 2, // llvm.x86.avx512.mask.gather3siv8.sf
+ 2, // llvm.x86.avx512.mask.gather3siv8.si
1, // llvm.x86.avx512.mask.getexp.pd.128
1, // llvm.x86.avx512.mask.getexp.pd.256
1, // llvm.x86.avx512.mask.getexp.pd.512
@@ -14837,8 +15010,6 @@
22, // llvm.x86.avx512.mask.pmov.qb.mem.256
22, // llvm.x86.avx512.mask.pmov.qb.mem.512
1, // llvm.x86.avx512.mask.pmov.qd.128
- 1, // llvm.x86.avx512.mask.pmov.qd.256
- 1, // llvm.x86.avx512.mask.pmov.qd.512
22, // llvm.x86.avx512.mask.pmov.qd.mem.128
22, // llvm.x86.avx512.mask.pmov.qd.mem.256
22, // llvm.x86.avx512.mask.pmov.qd.mem.512
@@ -14849,8 +15020,6 @@
22, // llvm.x86.avx512.mask.pmov.qw.mem.256
22, // llvm.x86.avx512.mask.pmov.qw.mem.512
1, // llvm.x86.avx512.mask.pmov.wb.128
- 1, // llvm.x86.avx512.mask.pmov.wb.256
- 1, // llvm.x86.avx512.mask.pmov.wb.512
22, // llvm.x86.avx512.mask.pmov.wb.mem.128
22, // llvm.x86.avx512.mask.pmov.wb.mem.256
22, // llvm.x86.avx512.mask.pmov.wb.mem.512
@@ -14926,9 +15095,6 @@
22, // llvm.x86.avx512.mask.pmovus.wb.mem.128
22, // llvm.x86.avx512.mask.pmovus.wb.mem.256
22, // llvm.x86.avx512.mask.pmovus.wb.mem.512
- 1, // llvm.x86.avx512.mask.pmultishift.qb.128
- 1, // llvm.x86.avx512.mask.pmultishift.qb.256
- 1, // llvm.x86.avx512.mask.pmultishift.qb.512
1, // llvm.x86.avx512.mask.range.pd.128
1, // llvm.x86.avx512.mask.range.pd.256
1, // llvm.x86.avx512.mask.range.pd.512
@@ -14961,6 +15127,30 @@
1, // llvm.x86.avx512.mask.scalef.ps.512
1, // llvm.x86.avx512.mask.scalef.sd
1, // llvm.x86.avx512.mask.scalef.ss
+ 22, // llvm.x86.avx512.mask.scatter.dpd.512
+ 22, // llvm.x86.avx512.mask.scatter.dpi.512
+ 22, // llvm.x86.avx512.mask.scatter.dpq.512
+ 22, // llvm.x86.avx512.mask.scatter.dps.512
+ 22, // llvm.x86.avx512.mask.scatter.qpd.512
+ 22, // llvm.x86.avx512.mask.scatter.qpi.512
+ 22, // llvm.x86.avx512.mask.scatter.qpq.512
+ 22, // llvm.x86.avx512.mask.scatter.qps.512
+ 22, // llvm.x86.avx512.mask.scatterdiv2.df
+ 22, // llvm.x86.avx512.mask.scatterdiv2.di
+ 22, // llvm.x86.avx512.mask.scatterdiv4.df
+ 22, // llvm.x86.avx512.mask.scatterdiv4.di
+ 22, // llvm.x86.avx512.mask.scatterdiv4.sf
+ 22, // llvm.x86.avx512.mask.scatterdiv4.si
+ 22, // llvm.x86.avx512.mask.scatterdiv8.sf
+ 22, // llvm.x86.avx512.mask.scatterdiv8.si
+ 22, // llvm.x86.avx512.mask.scattersiv2.df
+ 22, // llvm.x86.avx512.mask.scattersiv2.di
+ 22, // llvm.x86.avx512.mask.scattersiv4.df
+ 22, // llvm.x86.avx512.mask.scattersiv4.di
+ 22, // llvm.x86.avx512.mask.scattersiv4.sf
+ 22, // llvm.x86.avx512.mask.scattersiv4.si
+ 22, // llvm.x86.avx512.mask.scattersiv8.sf
+ 22, // llvm.x86.avx512.mask.scattersiv8.si
1, // llvm.x86.avx512.mask.sqrt.sd
1, // llvm.x86.avx512.mask.sqrt.ss
1, // llvm.x86.avx512.mask.sub.sd.round
@@ -14971,27 +15161,6 @@
1, // llvm.x86.avx512.mask.vcvtps2ph.128
1, // llvm.x86.avx512.mask.vcvtps2ph.256
1, // llvm.x86.avx512.mask.vcvtps2ph.512
- 1, // llvm.x86.avx512.mask.vpshldv.d.128
- 1, // llvm.x86.avx512.mask.vpshldv.d.256
- 1, // llvm.x86.avx512.mask.vpshldv.d.512
- 1, // llvm.x86.avx512.mask.vpshldv.q.128
- 1, // llvm.x86.avx512.mask.vpshldv.q.256
- 1, // llvm.x86.avx512.mask.vpshldv.q.512
- 1, // llvm.x86.avx512.mask.vpshldv.w.128
- 1, // llvm.x86.avx512.mask.vpshldv.w.256
- 1, // llvm.x86.avx512.mask.vpshldv.w.512
- 1, // llvm.x86.avx512.mask.vpshrdv.d.128
- 1, // llvm.x86.avx512.mask.vpshrdv.d.256
- 1, // llvm.x86.avx512.mask.vpshrdv.d.512
- 1, // llvm.x86.avx512.mask.vpshrdv.q.128
- 1, // llvm.x86.avx512.mask.vpshrdv.q.256
- 1, // llvm.x86.avx512.mask.vpshrdv.q.512
- 1, // llvm.x86.avx512.mask.vpshrdv.w.128
- 1, // llvm.x86.avx512.mask.vpshrdv.w.256
- 1, // llvm.x86.avx512.mask.vpshrdv.w.512
- 1, // llvm.x86.avx512.mask.vpshufbitqmb.128
- 1, // llvm.x86.avx512.mask.vpshufbitqmb.256
- 1, // llvm.x86.avx512.mask.vpshufbitqmb.512
1, // llvm.x86.avx512.maskz.fixupimm.pd.128
1, // llvm.x86.avx512.maskz.fixupimm.pd.256
1, // llvm.x86.avx512.maskz.fixupimm.pd.512
@@ -15000,24 +15169,6 @@
1, // llvm.x86.avx512.maskz.fixupimm.ps.512
1, // llvm.x86.avx512.maskz.fixupimm.sd
1, // llvm.x86.avx512.maskz.fixupimm.ss
- 1, // llvm.x86.avx512.maskz.vpshldv.d.128
- 1, // llvm.x86.avx512.maskz.vpshldv.d.256
- 1, // llvm.x86.avx512.maskz.vpshldv.d.512
- 1, // llvm.x86.avx512.maskz.vpshldv.q.128
- 1, // llvm.x86.avx512.maskz.vpshldv.q.256
- 1, // llvm.x86.avx512.maskz.vpshldv.q.512
- 1, // llvm.x86.avx512.maskz.vpshldv.w.128
- 1, // llvm.x86.avx512.maskz.vpshldv.w.256
- 1, // llvm.x86.avx512.maskz.vpshldv.w.512
- 1, // llvm.x86.avx512.maskz.vpshrdv.d.128
- 1, // llvm.x86.avx512.maskz.vpshrdv.d.256
- 1, // llvm.x86.avx512.maskz.vpshrdv.d.512
- 1, // llvm.x86.avx512.maskz.vpshrdv.q.128
- 1, // llvm.x86.avx512.maskz.vpshrdv.q.256
- 1, // llvm.x86.avx512.maskz.vpshrdv.q.512
- 1, // llvm.x86.avx512.maskz.vpshrdv.w.128
- 1, // llvm.x86.avx512.maskz.vpshrdv.w.256
- 1, // llvm.x86.avx512.maskz.vpshrdv.w.512
1, // llvm.x86.avx512.max.pd.512
1, // llvm.x86.avx512.max.ps.512
1, // llvm.x86.avx512.min.pd.512
@@ -15028,8 +15179,6 @@
1, // llvm.x86.avx512.packsswb.512
1, // llvm.x86.avx512.packusdw.512
1, // llvm.x86.avx512.packuswb.512
- 1, // llvm.x86.avx512.padds.b.512
- 1, // llvm.x86.avx512.padds.w.512
1, // llvm.x86.avx512.permvar.df.256
1, // llvm.x86.avx512.permvar.df.512
1, // llvm.x86.avx512.permvar.di.256
@@ -15047,30 +15196,9 @@
1, // llvm.x86.avx512.pmul.hr.sw.512
1, // llvm.x86.avx512.pmulh.w.512
1, // llvm.x86.avx512.pmulhu.w.512
- 1, // llvm.x86.avx512.prol.d.128
- 1, // llvm.x86.avx512.prol.d.256
- 1, // llvm.x86.avx512.prol.d.512
- 1, // llvm.x86.avx512.prol.q.128
- 1, // llvm.x86.avx512.prol.q.256
- 1, // llvm.x86.avx512.prol.q.512
- 1, // llvm.x86.avx512.prolv.d.128
- 1, // llvm.x86.avx512.prolv.d.256
- 1, // llvm.x86.avx512.prolv.d.512
- 1, // llvm.x86.avx512.prolv.q.128
- 1, // llvm.x86.avx512.prolv.q.256
- 1, // llvm.x86.avx512.prolv.q.512
- 1, // llvm.x86.avx512.pror.d.128
- 1, // llvm.x86.avx512.pror.d.256
- 1, // llvm.x86.avx512.pror.d.512
- 1, // llvm.x86.avx512.pror.q.128
- 1, // llvm.x86.avx512.pror.q.256
- 1, // llvm.x86.avx512.pror.q.512
- 1, // llvm.x86.avx512.prorv.d.128
- 1, // llvm.x86.avx512.prorv.d.256
- 1, // llvm.x86.avx512.prorv.d.512
- 1, // llvm.x86.avx512.prorv.q.128
- 1, // llvm.x86.avx512.prorv.q.256
- 1, // llvm.x86.avx512.prorv.q.512
+ 1, // llvm.x86.avx512.pmultishift.qb.128
+ 1, // llvm.x86.avx512.pmultishift.qb.256
+ 1, // llvm.x86.avx512.pmultishift.qb.512
1, // llvm.x86.avx512.psad.bw.512
1, // llvm.x86.avx512.pshuf.b.512
1, // llvm.x86.avx512.psll.d.512
@@ -15112,8 +15240,6 @@
1, // llvm.x86.avx512.psrlv.w.128
1, // llvm.x86.avx512.psrlv.w.256
1, // llvm.x86.avx512.psrlv.w.512
- 1, // llvm.x86.avx512.psubs.b.512
- 1, // llvm.x86.avx512.psubs.w.512
1, // llvm.x86.avx512.pternlog.d.128
1, // llvm.x86.avx512.pternlog.d.256
1, // llvm.x86.avx512.pternlog.d.512
@@ -15172,10 +15298,12 @@
22, // llvm.x86.avx512.scattersiv4.si
22, // llvm.x86.avx512.scattersiv8.sf
22, // llvm.x86.avx512.scattersiv8.si
+ 1, // llvm.x86.avx512.sitofp.round
1, // llvm.x86.avx512.sqrt.pd.512
1, // llvm.x86.avx512.sqrt.ps.512
1, // llvm.x86.avx512.sub.pd.512
1, // llvm.x86.avx512.sub.ps.512
+ 1, // llvm.x86.avx512.uitofp.round
1, // llvm.x86.avx512.vcomi.sd
1, // llvm.x86.avx512.vcomi.ss
1, // llvm.x86.avx512.vcvtsd2si32
@@ -15230,24 +15358,9 @@
1, // llvm.x86.avx512.vpmadd52l.uq.128
1, // llvm.x86.avx512.vpmadd52l.uq.256
1, // llvm.x86.avx512.vpmadd52l.uq.512
- 1, // llvm.x86.avx512.vpshld.d.128
- 1, // llvm.x86.avx512.vpshld.d.256
- 1, // llvm.x86.avx512.vpshld.d.512
- 1, // llvm.x86.avx512.vpshld.q.128
- 1, // llvm.x86.avx512.vpshld.q.256
- 1, // llvm.x86.avx512.vpshld.q.512
- 1, // llvm.x86.avx512.vpshld.w.128
- 1, // llvm.x86.avx512.vpshld.w.256
- 1, // llvm.x86.avx512.vpshld.w.512
- 1, // llvm.x86.avx512.vpshrd.d.128
- 1, // llvm.x86.avx512.vpshrd.d.256
- 1, // llvm.x86.avx512.vpshrd.d.512
- 1, // llvm.x86.avx512.vpshrd.q.128
- 1, // llvm.x86.avx512.vpshrd.q.256
- 1, // llvm.x86.avx512.vpshrd.q.512
- 1, // llvm.x86.avx512.vpshrd.w.128
- 1, // llvm.x86.avx512.vpshrd.w.256
- 1, // llvm.x86.avx512.vpshrd.w.512
+ 1, // llvm.x86.avx512.vpshufbitqmb.128
+ 1, // llvm.x86.avx512.vpshufbitqmb.256
+ 1, // llvm.x86.avx512.vpshufbitqmb.512
1, // llvm.x86.bmi.bextr.32
1, // llvm.x86.bmi.bextr.64
1, // llvm.x86.bmi.bzhi.32
@@ -15381,7 +15494,6 @@
3, // llvm.x86.seh.ehguard
3, // llvm.x86.seh.ehregnode
1, // llvm.x86.seh.lsda
- 1, // llvm.x86.seh.recoverfp
3, // llvm.x86.setssbsy
1, // llvm.x86.sha1msg1
1, // llvm.x86.sha1msg2
@@ -15458,8 +15570,6 @@
1, // llvm.x86.sse2.packssdw.128
1, // llvm.x86.sse2.packsswb.128
1, // llvm.x86.sse2.packuswb.128
- 1, // llvm.x86.sse2.padds.b
- 1, // llvm.x86.sse2.padds.w
3, // llvm.x86.sse2.pause
1, // llvm.x86.sse2.pmadd.wd
1, // llvm.x86.sse2.pmovmskb.128
@@ -15482,8 +15592,6 @@
1, // llvm.x86.sse2.psrli.d
1, // llvm.x86.sse2.psrli.q
1, // llvm.x86.sse2.psrli.w
- 1, // llvm.x86.sse2.psubs.b
- 1, // llvm.x86.sse2.psubs.w
1, // llvm.x86.sse2.ucomieq.sd
1, // llvm.x86.sse2.ucomige.sd
1, // llvm.x86.sse2.ucomigt.sd
@@ -15564,8 +15672,8 @@
1, // llvm.x86.ssse3.psign.d.128
1, // llvm.x86.ssse3.psign.w
1, // llvm.x86.ssse3.psign.w.128
- 1, // llvm.x86.subborrow.u32
- 1, // llvm.x86.subborrow.u64
+ 1, // llvm.x86.subborrow.32
+ 1, // llvm.x86.subborrow.64
1, // llvm.x86.tbm.bextri.u32
1, // llvm.x86.tbm.bextri.u64
3, // llvm.x86.tpause
@@ -15605,14 +15713,6 @@
1, // llvm.x86.xop.vfrcz.ps.256
1, // llvm.x86.xop.vfrcz.sd
1, // llvm.x86.xop.vfrcz.ss
- 1, // llvm.x86.xop.vpcomb
- 1, // llvm.x86.xop.vpcomd
- 1, // llvm.x86.xop.vpcomq
- 1, // llvm.x86.xop.vpcomub
- 1, // llvm.x86.xop.vpcomud
- 1, // llvm.x86.xop.vpcomuq
- 1, // llvm.x86.xop.vpcomuw
- 1, // llvm.x86.xop.vpcomw
1, // llvm.x86.xop.vpermil2pd
1, // llvm.x86.xop.vpermil2pd.256
1, // llvm.x86.xop.vpermil2ps
@@ -15645,14 +15745,6 @@
1, // llvm.x86.xop.vpmadcsswd
1, // llvm.x86.xop.vpmadcswd
1, // llvm.x86.xop.vpperm
- 1, // llvm.x86.xop.vprotb
- 1, // llvm.x86.xop.vprotbi
- 1, // llvm.x86.xop.vprotd
- 1, // llvm.x86.xop.vprotdi
- 1, // llvm.x86.xop.vprotq
- 1, // llvm.x86.xop.vprotqi
- 1, // llvm.x86.xop.vprotw
- 1, // llvm.x86.xop.vprotwi
1, // llvm.x86.xop.vpshab
1, // llvm.x86.xop.vpshad
1, // llvm.x86.xop.vpshaq
@@ -15677,55 +15769,55 @@
3, // llvm.x86.xtest
1, // llvm.xcore.bitrev
3, // llvm.xcore.checkevent
- 50, // llvm.xcore.chkct
+ 37, // llvm.xcore.chkct
3, // llvm.xcore.clre
- 50, // llvm.xcore.clrpt
+ 37, // llvm.xcore.clrpt
3, // llvm.xcore.clrsr
1, // llvm.xcore.crc32
1, // llvm.xcore.crc8
- 50, // llvm.xcore.edu
- 50, // llvm.xcore.eeu
- 50, // llvm.xcore.endin
- 50, // llvm.xcore.freer
+ 37, // llvm.xcore.edu
+ 37, // llvm.xcore.eeu
+ 37, // llvm.xcore.endin
+ 37, // llvm.xcore.freer
3, // llvm.xcore.geted
3, // llvm.xcore.getet
1, // llvm.xcore.getid
3, // llvm.xcore.getps
3, // llvm.xcore.getr
- 50, // llvm.xcore.getst
- 50, // llvm.xcore.getts
- 50, // llvm.xcore.in
- 50, // llvm.xcore.inct
- 50, // llvm.xcore.initcp
- 50, // llvm.xcore.initdp
- 50, // llvm.xcore.initlr
- 50, // llvm.xcore.initpc
- 50, // llvm.xcore.initsp
- 50, // llvm.xcore.inshr
- 50, // llvm.xcore.int
- 50, // llvm.xcore.mjoin
- 50, // llvm.xcore.msync
- 50, // llvm.xcore.out
- 50, // llvm.xcore.outct
- 50, // llvm.xcore.outshr
- 50, // llvm.xcore.outt
- 50, // llvm.xcore.peek
- 50, // llvm.xcore.setc
- 51, // llvm.xcore.setclk
- 50, // llvm.xcore.setd
- 50, // llvm.xcore.setev
+ 37, // llvm.xcore.getst
+ 37, // llvm.xcore.getts
+ 37, // llvm.xcore.in
+ 37, // llvm.xcore.inct
+ 37, // llvm.xcore.initcp
+ 37, // llvm.xcore.initdp
+ 37, // llvm.xcore.initlr
+ 37, // llvm.xcore.initpc
+ 37, // llvm.xcore.initsp
+ 37, // llvm.xcore.inshr
+ 37, // llvm.xcore.int
+ 37, // llvm.xcore.mjoin
+ 37, // llvm.xcore.msync
+ 37, // llvm.xcore.out
+ 37, // llvm.xcore.outct
+ 37, // llvm.xcore.outshr
+ 37, // llvm.xcore.outt
+ 37, // llvm.xcore.peek
+ 37, // llvm.xcore.setc
+ 55, // llvm.xcore.setclk
+ 37, // llvm.xcore.setd
+ 37, // llvm.xcore.setev
3, // llvm.xcore.setps
- 50, // llvm.xcore.setpsc
- 50, // llvm.xcore.setpt
- 51, // llvm.xcore.setrdy
+ 37, // llvm.xcore.setpsc
+ 37, // llvm.xcore.setpt
+ 55, // llvm.xcore.setrdy
3, // llvm.xcore.setsr
- 50, // llvm.xcore.settw
- 50, // llvm.xcore.setv
+ 37, // llvm.xcore.settw
+ 37, // llvm.xcore.setv
1, // llvm.xcore.sext
3, // llvm.xcore.ssync
- 50, // llvm.xcore.syncr
- 50, // llvm.xcore.testct
- 50, // llvm.xcore.testwct
+ 37, // llvm.xcore.syncr
+ 37, // llvm.xcore.testct
+ 37, // llvm.xcore.testwct
16, // llvm.xcore.waitevent
1, // llvm.xcore.zext
};
@@ -15741,7 +15833,7 @@
NumAttrs = 1;
break;
}
- case 50: {
+ case 37: {
const Attribute::AttrKind AttrParam1[]= {Attribute::NoCapture};
AS[0] = AttributeList::get(C, 1, AttrParam1);
const Attribute::AttrKind Atts[] = {Attribute::NoUnwind};
@@ -15749,7 +15841,7 @@
NumAttrs = 2;
break;
}
- case 51: {
+ case 55: {
const Attribute::AttrKind AttrParam1[]= {Attribute::NoCapture};
AS[0] = AttributeList::get(C, 1, AttrParam1);
const Attribute::AttrKind AttrParam2[]= {Attribute::NoCapture};
@@ -15851,7 +15943,7 @@
NumAttrs = 2;
break;
}
- case 30: {
+ case 31: {
const Attribute::AttrKind AttrParam4[]= {Attribute::NoCapture};
AS[0] = AttributeList::get(C, 4, AttrParam4);
const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::ArgMemOnly};
@@ -15859,7 +15951,7 @@
NumAttrs = 2;
break;
}
- case 31: {
+ case 32: {
const Attribute::AttrKind AttrParam5[]= {Attribute::NoCapture};
AS[0] = AttributeList::get(C, 5, AttrParam5);
const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::ArgMemOnly};
@@ -15867,7 +15959,7 @@
NumAttrs = 2;
break;
}
- case 32: {
+ case 33: {
const Attribute::AttrKind AttrParam6[]= {Attribute::NoCapture};
AS[0] = AttributeList::get(C, 6, AttrParam6);
const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::ArgMemOnly};
@@ -15887,7 +15979,7 @@
NumAttrs = 1;
break;
}
- case 28: {
+ case 29: {
const Attribute::AttrKind AttrParam1[]= {Attribute::NoCapture,Attribute::ReadOnly};
AS[0] = AttributeList::get(C, 1, AttrParam1);
const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::WriteOnly};
@@ -15895,7 +15987,7 @@
NumAttrs = 2;
break;
}
- case 29: {
+ case 30: {
const Attribute::AttrKind AttrParam2[]= {Attribute::NoCapture,Attribute::ReadOnly};
AS[0] = AttributeList::get(C, 2, AttrParam2);
const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::WriteOnly};
@@ -15903,13 +15995,13 @@
NumAttrs = 2;
break;
}
- case 42: {
+ case 45: {
const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::WriteOnly,Attribute::ArgMemOnly};
AS[0] = AttributeList::get(C, AttributeList::FunctionIndex, Atts);
NumAttrs = 1;
break;
}
- case 41: {
+ case 44: {
const Attribute::AttrKind AttrParam1[]= {Attribute::NoCapture,Attribute::WriteOnly};
AS[0] = AttributeList::get(C, 1, AttrParam1);
const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::WriteOnly,Attribute::ArgMemOnly};
@@ -15929,7 +16021,7 @@
NumAttrs = 1;
break;
}
- case 39: {
+ case 42: {
const Attribute::AttrKind AttrParam1[]= {Attribute::NoCapture};
AS[0] = AttributeList::get(C, 1, AttrParam1);
const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::ReadOnly,Attribute::ArgMemOnly};
@@ -15995,13 +16087,13 @@
NumAttrs = 3;
break;
}
- case 48: {
+ case 52: {
const Attribute::AttrKind Atts[] = {Attribute::NoUnwind};
AS[0] = AttributeList::get(C, AttributeList::FunctionIndex, Atts);
NumAttrs = 1;
break;
}
- case 47: {
+ case 50: {
const Attribute::AttrKind AttrParam1[]= {Attribute::NoCapture,Attribute::ReadOnly};
AS[0] = AttributeList::get(C, 1, AttrParam1);
const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::InaccessibleMemOrArgMemOnly};
@@ -16009,7 +16101,7 @@
NumAttrs = 2;
break;
}
- case 46: {
+ case 49: {
const Attribute::AttrKind AttrParam1[]= {Attribute::NoCapture};
AS[0] = AttributeList::get(C, 1, AttrParam1);
const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::InaccessibleMemOnly};
@@ -16017,7 +16109,15 @@
NumAttrs = 2;
break;
}
- case 38: {
+ case 53: {
+ const Attribute::AttrKind AttrParam3[]= {Attribute::WriteOnly};
+ AS[0] = AttributeList::get(C, 3, AttrParam3);
+ const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::WriteOnly,Attribute::InaccessibleMemOrArgMemOnly};
+ AS[1] = AttributeList::get(C, AttributeList::FunctionIndex, Atts);
+ NumAttrs = 2;
+ break;
+ }
+ case 41: {
const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::WriteOnly,Attribute::ArgMemOnly};
AS[0] = AttributeList::get(C, AttributeList::FunctionIndex, Atts);
NumAttrs = 1;
@@ -16029,7 +16129,7 @@
NumAttrs = 1;
break;
}
- case 36: {
+ case 39: {
const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::Speculatable,Attribute::ReadOnly};
AS[0] = AttributeList::get(C, AttributeList::FunctionIndex, Atts);
NumAttrs = 1;
@@ -16041,19 +16141,27 @@
NumAttrs = 1;
break;
}
- case 35: {
+ case 38: {
const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::Convergent};
AS[0] = AttributeList::get(C, AttributeList::FunctionIndex, Atts);
NumAttrs = 1;
break;
}
- case 40: {
+ case 35: {
+ const Attribute::AttrKind AttrParam1[]= {Attribute::NoCapture};
+ AS[0] = AttributeList::get(C, 1, AttrParam1);
+ const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::Convergent,Attribute::ArgMemOnly};
+ AS[1] = AttributeList::get(C, AttributeList::FunctionIndex, Atts);
+ NumAttrs = 2;
+ break;
+ }
+ case 43: {
const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::Convergent,Attribute::InaccessibleMemOnly};
AS[0] = AttributeList::get(C, AttributeList::FunctionIndex, Atts);
NumAttrs = 1;
break;
}
- case 33: {
+ case 36: {
const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::Convergent,Attribute::ReadNone};
AS[0] = AttributeList::get(C, AttributeList::FunctionIndex, Atts);
NumAttrs = 1;
@@ -16065,7 +16173,13 @@
NumAttrs = 1;
break;
}
- case 43: {
+ case 28: {
+ const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::NoReturn,Attribute::Cold};
+ AS[0] = AttributeList::get(C, AttributeList::FunctionIndex, Atts);
+ NumAttrs = 1;
+ break;
+ }
+ case 46: {
const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::NoDuplicate};
AS[0] = AttributeList::get(C, AttributeList::FunctionIndex, Atts);
NumAttrs = 1;
@@ -16077,28 +16191,34 @@
NumAttrs = 1;
break;
}
- case 45: {
+ case 48: {
const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::NoDuplicate,Attribute::WriteOnly};
AS[0] = AttributeList::get(C, AttributeList::FunctionIndex, Atts);
NumAttrs = 1;
break;
}
+ case 51: {
+ const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::NoDuplicate};
+ AS[0] = AttributeList::get(C, AttributeList::FunctionIndex, Atts);
+ NumAttrs = 1;
+ break;
+ }
case 7: {
return AttributeList();
}
- case 37: {
+ case 40: {
const Attribute::AttrKind Atts[] = {Attribute::ReadNone};
AS[0] = AttributeList::get(C, AttributeList::FunctionIndex, Atts);
NumAttrs = 1;
break;
}
- case 49: {
+ case 54: {
const Attribute::AttrKind Atts[] = {Attribute::NoReturn};
AS[0] = AttributeList::get(C, AttributeList::FunctionIndex, Atts);
NumAttrs = 1;
break;
}
- case 44: {
+ case 47: {
const Attribute::AttrKind Atts[] = {Attribute::NoReturn,Attribute::WriteOnly};
AS[0] = AttributeList::get(C, AttributeList::FunctionIndex, Atts);
NumAttrs = 1;
@@ -16182,830 +16302,858 @@
'p', '_', 'm', 'o', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
'_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'i', 'n', 't', 'e', 'r', 'p', '_',
'p', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm',
- 'd', 'g', 'c', 'n', '_', 'i', 'n', 't', 'e', 'r', 'p', '_', 'p', '2', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c',
- 'n', '_', 'k', 'e', 'r', 'n', 'a', 'r', 'g', '_', 's', 'e', 'g', 'm', 'e',
- 'n', 't', '_', 'p', 't', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'l', 'e', 'r', 'p', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n',
- '_', 'm', 'b', 'c', 'n', 't', '_', 'h', 'i', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'm', 'b', 'c',
- 'n', 't', '_', 'l', 'o', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'm', 'q', 's', 'a', 'd', '_', 'p',
- 'k', '_', 'u', '1', '6', '_', 'u', '8', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'm', 'q', 's', 'a',
- 'd', '_', 'u', '3', '2', '_', 'u', '8', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'm', 's', 'a', 'd',
- '_', 'u', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
- 'm', 'd', 'g', 'c', 'n', '_', 'q', 's', 'a', 'd', '_', 'p', 'k', '_', 'u',
- '1', '6', '_', 'u', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'q', 'u', 'e', 'u', 'e', '_', 'p',
- 't', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm',
- 'd', 'g', 'c', 'n', '_', 'r', 'c', 'p', '_', 'l', 'e', 'g', 'a', 'c', 'y',
+ 'd', 'g', 'c', 'n', '_', 'i', 'n', 't', 'e', 'r', 'p', '_', 'p', '1', '_',
+ 'f', '1', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'm', 'd', 'g', 'c', 'n', '_', 'i', 'n', 't', 'e', 'r', 'p', '_', 'p', '2',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g',
- 'c', 'n', '_', 'r', 'e', 'a', 'd', 'f', 'i', 'r', 's', 't', 'l', 'a', 'n',
- 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd',
- 'g', 'c', 'n', '_', 'r', 'e', 'a', 'd', 'l', 'a', 'n', 'e', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_',
- 'r', 's', 'q', '_', 'l', 'e', 'g', 'a', 'c', 'y', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', '_',
- 'b', 'a', 'r', 'r', 'i', 'e', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', '_', 'd', 'c', 'a',
- 'c', 'h', 'e', '_', 'i', 'n', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', '_', 'd', 'c', 'a',
- 'c', 'h', 'e', '_', 'i', 'n', 'v', '_', 'v', 'o', 'l', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's',
- '_', 'd', 'c', 'a', 'c', 'h', 'e', '_', 'w', 'b', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', '_',
- 'd', 'c', 'a', 'c', 'h', 'e', '_', 'w', 'b', '_', 'v', 'o', 'l', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n',
- '_', 's', '_', 'd', 'e', 'c', 'p', 'e', 'r', 'f', 'l', 'e', 'v', 'e', 'l',
+ 'c', 'n', '_', 'i', 'n', 't', 'e', 'r', 'p', '_', 'p', '2', '_', 'f', '1',
+ '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd',
+ 'g', 'c', 'n', '_', 'k', 'e', 'r', 'n', 'a', 'r', 'g', '_', 's', 'e', 'g',
+ 'm', 'e', 'n', 't', '_', 'p', 't', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'l', 'e', 'r', 'p',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g',
- 'c', 'n', '_', 's', '_', 'g', 'e', 't', 'p', 'c', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', '_',
- 'g', 'e', 't', 'r', 'e', 'g', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', '_', 'i', 'n', 'c', 'p',
- 'e', 'r', 'f', 'l', 'e', 'v', 'e', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', '_', 'm', 'e',
- 'm', 'r', 'e', 'a', 'l', 't', 'i', 'm', 'e', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', '_', 'm',
- 'e', 'm', 't', 'i', 'm', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', '_', 's', 'e', 'n', 'd',
- 'm', 's', 'g', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
- 'm', 'd', 'g', 'c', 'n', '_', 's', '_', 's', 'e', 'n', 'd', 'm', 's', 'g',
- 'h', 'a', 'l', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', '_', 's', 'l', 'e', 'e', 'p', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c',
- 'n', '_', 's', '_', 'w', 'a', 'i', 't', 'c', 'n', 't', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's',
- 'a', 'd', '_', 'h', 'i', '_', 'u', '8', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', 'a', 'd', '_',
- 'u', '1', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
- 'm', 'd', 'g', 'c', 'n', '_', 's', 'a', 'd', '_', 'u', '8', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_',
- 's', 'd', 'o', 't', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', 'd', 'o', 't', '4', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n',
- '_', 's', 'd', 'o', 't', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'u', 'd', 'o', 't', '2', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c',
- 'n', '_', 'u', 'd', 'o', 't', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'u', 'd', 'o', 't', '8',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g',
- 'c', 'n', '_', 'w', 'a', 'v', 'e', '_', 'b', 'a', 'r', 'r', 'i', 'e', 'r',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g',
- 'c', 'n', '_', 'w', 'o', 'r', 'k', 'g', 'r', 'o', 'u', 'p', '_', 'i', 'd',
- '_', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm',
- 'd', 'g', 'c', 'n', '_', 'w', 'o', 'r', 'k', 'g', 'r', 'o', 'u', 'p', '_',
- 'i', 'd', '_', 'y', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'm', 'd', 'g', 'c', 'n', '_', 'w', 'o', 'r', 'k', 'g', 'r', 'o', 'u',
- 'p', '_', 'i', 'd', '_', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'w', 'r', 'i', 't', 'e', 'l',
+ 'c', 'n', '_', 'm', 'b', 'c', 'n', 't', '_', 'h', 'i', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'm',
+ 'b', 'c', 'n', 't', '_', 'l', 'o', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'm', 'q', 's', 'a', 'd',
+ '_', 'p', 'k', '_', 'u', '1', '6', '_', 'u', '8', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'm', 'q',
+ 's', 'a', 'd', '_', 'u', '3', '2', '_', 'u', '8', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'm', 's',
+ 'a', 'd', '_', 'u', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'q', 's', 'a', 'd', '_', 'p', 'k',
+ '_', 'u', '1', '6', '_', 'u', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'q', 'u', 'e', 'u', 'e',
+ '_', 'p', 't', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'a', 'm', 'd', 'g', 'c', 'n', '_', 'r', 'c', 'p', '_', 'l', 'e', 'g', 'a',
+ 'c', 'y', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm',
+ 'd', 'g', 'c', 'n', '_', 'r', 'e', 'a', 'd', 'f', 'i', 'r', 's', 't', 'l',
'a', 'n', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
- 'r', 'm', '_', 'c', 'd', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'r', 'm', '_', 'c', 'd', 'p', '2', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'g', 'e', 't', '_', 'f',
- 'p', 's', 'c', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'r', 'm', '_', 'l', 'd', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'r', 'm', '_', 'l', 'd', 'c', '2', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'l', 'd', 'c', '2',
- 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm',
- '_', 'l', 'd', 'c', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'r', 'm', '_', 'm', 'c', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'm', 'c', 'r', '2', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'm', 'r', 'c',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_',
- 'm', 'r', 'c', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'r', 'm', '_', 'q', 'a', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'q', 'a', 'd', 'd', '1', '6', '\000',
+ 'm', 'd', 'g', 'c', 'n', '_', 'r', 'e', 'a', 'd', 'l', 'a', 'n', 'e', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c',
+ 'n', '_', 'r', 's', 'q', '_', 'l', 'e', 'g', 'a', 'c', 'y', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_',
+ 's', '_', 'b', 'a', 'r', 'r', 'i', 'e', 'r', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', '_', 'd',
+ 'c', 'a', 'c', 'h', 'e', '_', 'i', 'n', 'v', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', '_', 'd',
+ 'c', 'a', 'c', 'h', 'e', '_', 'i', 'n', 'v', '_', 'v', 'o', 'l', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n',
+ '_', 's', '_', 'd', 'c', 'a', 'c', 'h', 'e', '_', 'w', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_',
+ 's', '_', 'd', 'c', 'a', 'c', 'h', 'e', '_', 'w', 'b', '_', 'v', 'o', 'l',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g',
+ 'c', 'n', '_', 's', '_', 'd', 'e', 'c', 'p', 'e', 'r', 'f', 'l', 'e', 'v',
+ 'e', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm',
+ 'd', 'g', 'c', 'n', '_', 's', '_', 'g', 'e', 't', 'p', 'c', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_',
+ 's', '_', 'g', 'e', 't', 'r', 'e', 'g', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', '_', 'i', 'n',
+ 'c', 'p', 'e', 'r', 'f', 'l', 'e', 'v', 'e', 'l', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', '_',
+ 'm', 'e', 'm', 'r', 'e', 'a', 'l', 't', 'i', 'm', 'e', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's',
+ '_', 'm', 'e', 'm', 't', 'i', 'm', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', '_', 's', 'e',
+ 'n', 'd', 'm', 's', 'g', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', '_', 's', 'e', 'n', 'd', 'm',
+ 's', 'g', 'h', 'a', 'l', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', '_', 's', 'l', 'e', 'e',
+ 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd',
+ 'g', 'c', 'n', '_', 's', '_', 'w', 'a', 'i', 't', 'c', 'n', 't', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n',
+ '_', 's', 'a', 'd', '_', 'h', 'i', '_', 'u', '8', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', 'a',
+ 'd', '_', 'u', '1', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', 'a', 'd', '_', 'u', '8', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c',
+ 'n', '_', 's', 'd', 'o', 't', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 's', 'd', 'o', 't', '4',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g',
+ 'c', 'n', '_', 's', 'd', 'o', 't', '8', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'u', 'd', 'o', 't',
+ '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm', 'd',
+ 'g', 'c', 'n', '_', 'u', 'd', 'o', 't', '4', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'u', 'd', 'o',
+ 't', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm',
+ 'd', 'g', 'c', 'n', '_', 'w', 'a', 'v', 'e', '_', 'b', 'a', 'r', 'r', 'i',
+ 'e', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'm',
+ 'd', 'g', 'c', 'n', '_', 'w', 'o', 'r', 'k', 'g', 'r', 'o', 'u', 'p', '_',
+ 'i', 'd', '_', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'a', 'm', 'd', 'g', 'c', 'n', '_', 'w', 'o', 'r', 'k', 'g', 'r', 'o', 'u',
+ 'p', '_', 'i', 'd', '_', 'y', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'w', 'o', 'r', 'k', 'g', 'r',
+ 'o', 'u', 'p', '_', 'i', 'd', '_', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'm', 'd', 'g', 'c', 'n', '_', 'w', 'r', 'i', 't',
+ 'e', 'l', 'a', 'n', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'r', 'm', '_', 'c', 'd', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'c', 'd', 'p', '2', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'g', 'e', 't',
+ '_', 'f', 'p', 's', 'c', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'a', 'r', 'm', '_', 'l', 'd', 'c', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'l', 'd', 'c', '2', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'l', 'd',
+ 'c', '2', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'r', 'm', '_', 'l', 'd', 'c', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'r', 'm', '_', 'm', 'c', 'r', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'm', 'c', 'r', '2', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'm',
+ 'r', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r',
+ 'm', '_', 'm', 'r', 'c', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'a', 'r', 'm', '_', 'q', 'a', 'd', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'q', 'a', 'd', 'd', '1',
+ '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm',
+ '_', 'q', 'a', 'd', 'd', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'a', 'r', 'm', '_', 'q', 'a', 's', 'x', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'q', 's', 'a', 'x', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'q',
- 'a', 'd', 'd', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'r', 'm', '_', 'q', 'a', 's', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'q', 's', 'a', 'x', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'q', 's', 'u',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm',
- '_', 'q', 's', 'u', 'b', '1', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'r', 'm', '_', 'q', 's', 'u', 'b', '8', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'a', 'd',
+ 's', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'r', 'm', '_', 'q', 's', 'u', 'b', '1', '6', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'q', 's', 'u', 'b', '8', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's',
+ 'a', 'd', 'd', '1', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'r', 'm', '_', 's', 'a', 'd', 'd', '8', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'a', 's', 'x', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's',
+ 'e', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r',
+ 'm', '_', 's', 'e', 't', '_', 'f', 'p', 's', 'c', 'r', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'h', 'a', 'd',
'd', '1', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
- 'r', 'm', '_', 's', 'a', 'd', 'd', '8', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'a', 's', 'x', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'e', 'l',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_',
- 's', 'e', 't', '_', 'f', 'p', 's', 'c', 'r', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'h', 'a', 'd', 'd', '1',
- '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm',
- '_', 's', 'h', 'a', 'd', 'd', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'h', 'a', 's', 'x', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'h', 's',
- 'a', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r',
- 'm', '_', 's', 'h', 's', 'u', 'b', '1', '6', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'h', 's', 'u', 'b', '8',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_',
- 's', 'm', 'l', 'a', 'b', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'l', 'a', 'b', 't', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'l',
- 'a', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r',
- 'm', '_', 's', 'm', 'l', 'a', 'd', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'l', 'a', 'l', 'd', '\000',
+ 'r', 'm', '_', 's', 'h', 'a', 'd', 'd', '8', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'h', 'a', 's', 'x', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's',
- 'm', 'l', 'a', 'l', 'd', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'l', 'a', 't', 'b', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'l',
- 'a', 't', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
- 'r', 'm', '_', 's', 'm', 'l', 'a', 'w', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'l', 'a', 'w', 't',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_',
- 's', 'm', 'l', 's', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'r', 'm', '_', 's', 'm', 'l', 's', 'd', 'x', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'l', 's',
- 'l', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r',
- 'm', '_', 's', 'm', 'l', 's', 'l', 'd', 'x', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'u', 'a', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's',
- 'm', 'u', 'a', 'd', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'r', 'm', '_', 's', 'm', 'u', 'l', 'b', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'u', 'l',
- 'b', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r',
- 'm', '_', 's', 'm', 'u', 'l', 't', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'u', 'l', 't', 't', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's',
- 'm', 'u', 'l', 'w', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'r', 'm', '_', 's', 'm', 'u', 'l', 'w', 't', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'u', 's',
- 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm',
- '_', 's', 'm', 'u', 's', 'd', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 's', 'a', 't', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 's', 'a', 't',
- '1', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r',
- 'm', '_', 's', 's', 'a', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'r', 'm', '_', 's', 's', 'u', 'b', '1', '6', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 's', 'u',
+ 'h', 's', 'a', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'a', 'r', 'm', '_', 's', 'h', 's', 'u', 'b', '1', '6', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'h', 's', 'u',
'b', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r',
- 'm', '_', 's', 't', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'r', 'm', '_', 's', 't', 'c', '2', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 't', 'c', '2', 'l', '\000',
+ 'm', '_', 's', 'm', 'l', 'a', 'b', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'l', 'a', 'b', 't', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's',
- 't', 'c', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
- 'r', 'm', '_', 's', 'x', 't', 'a', 'b', '1', '6', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'x', 't', 'b', '1',
- '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm',
- '_', 'u', 'a', 'd', 'd', '1', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 'a', 'd', 'd', '8', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 'a', 's',
- 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm',
- '_', 'u', 'h', 'a', 'd', 'd', '1', '6', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 'h', 'a', 'd', 'd', '8', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u',
- 'h', 'a', 's', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'r', 'm', '_', 'u', 'h', 's', 'a', 'x', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 'h', 's', 'u', 'b', '1',
- '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm',
- '_', 'u', 'h', 's', 'u', 'b', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 'q', 'a', 'd', 'd', '1', '6', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u',
- 'q', 'a', 'd', 'd', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'r', 'm', '_', 'u', 'q', 'a', 's', 'x', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 'q', 's', 'a', 'x',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_',
- 'u', 'q', 's', 'u', 'b', '1', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 'q', 's', 'u', 'b', '8', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 's',
- 'a', 'd', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
- 'r', 'm', '_', 'u', 's', 'a', 'd', 'a', '8', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 's', 'a', 't', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 's',
+ 'm', 'l', 'a', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'a', 'r', 'm', '_', 's', 'm', 'l', 'a', 'd', 'x', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'l', 'a', 'l',
+ 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm',
+ '_', 's', 'm', 'l', 'a', 'l', 'd', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'l', 'a', 't', 'b', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's',
+ 'm', 'l', 'a', 't', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'r', 'm', '_', 's', 'm', 'l', 'a', 'w', 'b', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'l', 'a',
+ 'w', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r',
+ 'm', '_', 's', 'm', 'l', 's', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'l', 's', 'd', 'x', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm',
+ 'l', 's', 'l', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'a', 'r', 'm', '_', 's', 'm', 'l', 's', 'l', 'd', 'x', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'u', 'a',
+ 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm',
+ '_', 's', 'm', 'u', 'a', 'd', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'u', 'l', 'b', 'b', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm',
+ 'u', 'l', 'b', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'a', 'r', 'm', '_', 's', 'm', 'u', 'l', 't', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'u', 'l', 't',
+ 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm',
+ '_', 's', 'm', 'u', 'l', 'w', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm', 'u', 'l', 'w', 't', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'm',
+ 'u', 's', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'r', 'm', '_', 's', 'm', 'u', 's', 'd', 'x', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 's', 'a', 't', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 's',
'a', 't', '1', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'r', 'm', '_', 'u', 's', 'a', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 's', 'u', 'b', '1', '6', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u',
+ 'a', 'r', 'm', '_', 's', 's', 'a', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 's', 'u', 'b', '1', '6', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's',
's', 'u', 'b', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'r', 'm', '_', 'u', 'x', 't', 'a', 'b', '1', '6', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 'x', 't', 'b',
- '1', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'b', 'p',
- 'f', '_', 'l', 'o', 'a', 'd', '_', 'b', 'y', 't', 'e', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'b', 'p', 'f', '_', 'l', 'o', 'a', 'd',
- '_', 'h', 'a', 'l', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'b', 'p', 'f', '_', 'l', 'o', 'a', 'd', '_', 'w', 'o', 'r', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'b', 'p', 'f', '_', 'p',
- 's', 'e', 'u', 'd', 'o', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'b', 's',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'b', 's', 'p', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'A', '2', '_', 'a', 'b', 's', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
- '_', 'a', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'd', 'd', 'h',
- '_', 'h', '1', '6', '_', 'h', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'a', 'r', 'm', '_', 's', 't', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 't', 'c', '2', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 't', 'c', '2',
+ 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm',
+ '_', 's', 't', 'c', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'r', 'm', '_', 's', 'x', 't', 'a', 'b', '1', '6', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 's', 'x', 't',
+ 'b', '1', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'r', 'm', '_', 'u', 'a', 'd', 'd', '1', '6', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 'a', 'd', 'd', '8', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u',
+ 'a', 's', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'r', 'm', '_', 'u', 'h', 'a', 'd', 'd', '1', '6', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 'h', 'a', 'd', 'd',
+ '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm',
+ '_', 'u', 'h', 'a', 's', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'a', 'r', 'm', '_', 'u', 'h', 's', 'a', 'x', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 'h', 's', 'u',
+ 'b', '1', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'r', 'm', '_', 'u', 'h', 's', 'u', 'b', '8', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 'q', 'a', 'd', 'd', '1',
+ '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm',
+ '_', 'u', 'q', 'a', 'd', 'd', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 'q', 'a', 's', 'x', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 'q', 's',
+ 'a', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r',
+ 'm', '_', 'u', 'q', 's', 'u', 'b', '1', '6', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 'q', 's', 'u', 'b', '8',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_',
+ 'u', 's', 'a', 'd', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'r', 'm', '_', 'u', 's', 'a', 'd', 'a', '8', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 's', 'a', 't',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_',
+ 'u', 's', 'a', 't', '1', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'a', 'r', 'm', '_', 'u', 's', 'a', 'x', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 's', 'u', 'b', '1',
+ '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm',
+ '_', 'u', 's', 'u', 'b', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'a', 'r', 'm', '_', 'u', 'x', 't', 'a', 'b', '1', '6', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'r', 'm', '_', 'u', 'x',
+ 't', 'b', '1', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'b', 'p', 'f', '_', 'l', 'o', 'a', 'd', '_', 'b', 'y', 't', 'e', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'b', 'p', 'f', '_', 'l', 'o',
+ 'a', 'd', '_', 'h', 'a', 'l', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'b', 'p', 'f', '_', 'l', 'o', 'a', 'd', '_', 'w', 'o', 'r',
+ 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'b', 'p', 'f',
+ '_', 'p', 's', 'e', 'u', 'd', 'o', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a',
- 'd', 'd', 'h', '_', 'h', '1', '6', '_', 'h', 'l', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
- '2', '_', 'a', 'd', 'd', 'h', '_', 'h', '1', '6', '_', 'l', 'h', '\000', '_',
+ 'b', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'b', 's', 'p', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'A', '2', '_', 'a', 'd', 'd', 'h', '_', 'h', '1', '6', '_', 'l',
- 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'd', 'd', 'h', '_', 'h', '1',
- '6', '_', 's', 'a', 't', '_', 'h', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_',
- 'a', 'd', 'd', 'h', '_', 'h', '1', '6', '_', 's', 'a', 't', '_', 'h', 'l',
+ 'N', '_', 'A', '2', '_', 'a', 'b', 's', 's', 'a', 't', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'A', '2', '_', 'a', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'd',
+ 'd', 'h', '_', 'h', '1', '6', '_', 'h', 'h', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
+ '_', 'a', 'd', 'd', 'h', '_', 'h', '1', '6', '_', 'h', 'l', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'A', '2', '_', 'a', 'd', 'd', 'h', '_', 'h', '1', '6', '_', 'l', 'h',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'd', 'd', 'h', '_', 'h', '1', '6',
- '_', 's', 'a', 't', '_', 'l', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ '_', 'l', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'd', 'd', 'h', '_',
+ 'h', '1', '6', '_', 's', 'a', 't', '_', 'h', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '2', '_', 'a', 'd', 'd', 'h', '_', 'h', '1', '6', '_', 's', 'a', 't', '_',
+ 'h', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'd', 'd', 'h', '_', 'h',
+ '1', '6', '_', 's', 'a', 't', '_', 'l', 'h', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
+ '_', 'a', 'd', 'd', 'h', '_', 'h', '1', '6', '_', 's', 'a', 't', '_', 'l',
+ 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'd', 'd', 'h', '_', 'l', '1',
+ '6', '_', 'h', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'd', 'd', 'h',
+ '_', 'l', '1', '6', '_', 'l', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a',
- 'd', 'd', 'h', '_', 'h', '1', '6', '_', 's', 'a', 't', '_', 'l', 'l', '\000',
+ 'd', 'd', 'h', '_', 'l', '1', '6', '_', 's', 'a', 't', '_', 'h', 'l', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
'O', 'N', '_', 'A', '2', '_', 'a', 'd', 'd', 'h', '_', 'l', '1', '6', '_',
- 'h', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'd', 'd', 'h', '_', 'l',
- '1', '6', '_', 'l', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'd', 'd',
- 'h', '_', 'l', '1', '6', '_', 's', 'a', 't', '_', 'h', 'l', '\000', '_', '_',
+ 's', 'a', 't', '_', 'l', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'd',
+ 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'd', 'd', 'p', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'A', '2', '_', 'a', 'd', 'd', 'p', 's', 'a', 't', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'A', '2', '_', 'a', 'd', 'd', 'h', '_', 'l', '1', '6', '_', 's', 'a',
- 't', '_', 'l', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'd', 'd', 'i',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'd', 'd', 'p', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'A', '2', '_', 'a', 'd', 'd', 'p', 's', 'a', 't', '\000', '_', '_', 'b', 'u',
+ '_', 'A', '2', '_', 'a', 'd', 'd', 's', 'a', 't', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
- '2', '_', 'a', 'd', 'd', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_',
- 'a', 'd', 'd', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'n', 'd',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'n', 'd', 'i', 'r', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'A', '2', '_', 'a', 'n', 'd', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_',
- 'a', 's', 'l', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 's', 'r', 'h',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'A', '2', '_', 'c', 'o', 'm', 'b', 'i', 'n', 'e', '_',
- 'h', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ '2', '_', 'a', 'd', 'd', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a',
+ 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 'n', 'd', 'i', 'r', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'A', '2', '_', 'a', 'n', 'd', 'p', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '2', '_', 'a', 's', 'l', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'a', 's',
+ 'r', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'c', 'o', 'm', 'b', 'i', 'n',
- 'e', '_', 'h', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'e', '_', 'h', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'c', 'o', 'm', 'b',
- 'i', 'n', 'e', '_', 'l', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'i', 'n', 'e', '_', 'h', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'c', 'o',
- 'm', 'b', 'i', 'n', 'e', '_', 'l', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 'm', 'b', 'i', 'n', 'e', '_', 'l', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_',
- 'c', 'o', 'm', 'b', 'i', 'n', 'e', 'i', 'i', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
- '_', 'c', 'o', 'm', 'b', 'i', 'n', 'e', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
- '_', 'm', 'a', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'm', 'a', 'x', 'p',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'A', '2', '_', 'm', 'a', 'x', 'u', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'A', '2', '_', 'm', 'a', 'x', 'u', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_',
- 'm', 'i', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'm', 'i', 'n', 'p', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'A', '2', '_', 'm', 'i', 'n', 'u', '\000', '_', '_', 'b', 'u',
+ 'c', 'o', 'm', 'b', 'i', 'n', 'e', '_', 'l', 'l', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
- '2', '_', 'm', 'i', 'n', 'u', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'n',
- 'e', 'g', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'n', 'e', 'g', 'p', '\000', '_',
+ '2', '_', 'c', 'o', 'm', 'b', 'i', 'n', 'e', 'i', 'i', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'A', '2', '_', 'c', 'o', 'm', 'b', 'i', 'n', 'e', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'A', '2', '_', 'm', 'a', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'm', 'a',
+ 'x', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'm', 'a', 'x', 'u', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'A', '2', '_', 'n', 'e', 'g', 's', 'a', 't', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'A', '2', '_', 'n', 'o', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'n', 'o',
- 't', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'o', 'r', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'A', '2', '_', 'o', 'r', 'i', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'o',
- 'r', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'r', 'o', 'u', 'n', 'd', 's',
- 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'a', 't', '\000', '_', '_',
+ 'N', '_', 'A', '2', '_', 'm', 'a', 'x', 'u', 'p', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '2', '_', 'm', 'i', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'm', 'i', 'n',
+ 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'm', 'i', 'n', 'u', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'A', '2', '_', 's', 'a', 't', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_',
- 's', 'a', 't', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'a', 't', 'u',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'a', 't', 'u', 'h', '\000', '_',
+ '_', 'A', '2', '_', 'm', 'i', 'n', 'u', 'p', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
+ '_', 'n', 'e', 'g', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'n', 'e', 'g', 'p',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'A', '2', '_', 'n', 'e', 'g', 's', 'a', 't', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'A', '2', '_', 's', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 'N', '_', 'A', '2', '_', 'n', 'o', 't', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_',
- 's', 'u', 'b', 'h', '_', 'h', '1', '6', '_', 'h', 'h', '\000', '_', '_', 'b',
+ 'n', 'o', 't', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'o', 'r', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'A', '2', '_', 'o', 'r', 'i', 'r', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
+ '_', 'o', 'r', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'p', 'x', 'o', 'r',
+ 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'r', 'o', 'u', 'n', 'd', 's', 'a',
+ 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'a', 't', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'A', '2', '_', 's', 'u', 'b', 'h', '_', 'h', '1', '6', '_', 'h', 'l', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'A', '2', '_', 's', 'u', 'b', 'h', '_', 'h', '1', '6', '_',
- 'l', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'u', 'b', 'h', '_', 'h',
- '1', '6', '_', 'l', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'u', 'b',
- 'h', '_', 'h', '1', '6', '_', 's', 'a', 't', '_', 'h', 'h', '\000', '_', '_',
+ 'A', '2', '_', 's', 'a', 't', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's',
+ 'a', 't', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'a', 't', 'u', 'b',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'a', 't', 'u', 'h', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'A', '2', '_', 's', 'u', 'b', 'h', '_', 'h', '1', '6', '_', 's', 'a',
- 't', '_', 'h', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ '_', 'A', '2', '_', 's', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's',
+ 'u', 'b', 'h', '_', 'h', '1', '6', '_', 'h', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '2', '_', 's', 'u', 'b', 'h', '_', 'h', '1', '6', '_', 'h', 'l', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'A', '2', '_', 's', 'u', 'b', 'h', '_', 'h', '1', '6', '_', 'l',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'u', 'b', 'h', '_', 'h', '1',
+ '6', '_', 'l', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'u', 'b', 'h',
- '_', 'h', '1', '6', '_', 's', 'a', 't', '_', 'l', 'h', '\000', '_', '_', 'b',
+ '_', 'h', '1', '6', '_', 's', 'a', 't', '_', 'h', 'h', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
'A', '2', '_', 's', 'u', 'b', 'h', '_', 'h', '1', '6', '_', 's', 'a', 't',
- '_', 'l', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ '_', 'h', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'u', 'b', 'h', '_',
- 'l', '1', '6', '_', 'h', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'u',
- 'b', 'h', '_', 'l', '1', '6', '_', 'l', 'l', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
- '_', 's', 'u', 'b', 'h', '_', 'l', '1', '6', '_', 's', 'a', 't', '_', 'h',
- 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'u', 'b', 'h', '_', 'l', '1',
- '6', '_', 's', 'a', 't', '_', 'l', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 'h', '1', '6', '_', 's', 'a', 't', '_', 'l', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '2', '_', 's', 'u', 'b', 'h', '_', 'h', '1', '6', '_', 's', 'a', 't', '_',
+ 'l', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'u', 'b', 'h', '_', 'l',
+ '1', '6', '_', 'h', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'u', 'b',
+ 'h', '_', 'l', '1', '6', '_', 'l', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_',
- 's', 'u', 'b', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'u', 'b', 'r',
- 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'u', 'b', 's', 'a', 't', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'A', '2', '_', 's', 'v', 'a', 'd', 'd', 'h', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'A', '2', '_', 's', 'v', 'a', 'd', 'd', 'h', 's', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'A', '2', '_', 's', 'v', 'a', 'd', 'd', 'u', 'h', 's', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'A', '2', '_', 's', 'v', 'a', 'v', 'g', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
- '_', 's', 'v', 'a', 'v', 'g', 'h', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_',
- 's', 'v', 'n', 'a', 'v', 'g', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 's', 'u', 'b', 'h', '_', 'l', '1', '6', '_', 's', 'a', 't', '_', 'h', 'l',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'u', 'b', 'h', '_', 'l', '1', '6',
+ '_', 's', 'a', 't', '_', 'l', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's',
- 'v', 's', 'u', 'b', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'v', 's',
- 'u', 'b', 'h', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'u', 'b', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'u', 'b', 'r', 'i',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'u', 'b', 's', 'a', 't', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'A', '2', '_', 's', 'v', 'a', 'd', 'd', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'A', '2', '_', 's', 'v', 'a', 'd', 'd', 'h', 's', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '2', '_', 's', 'v', 'a', 'd', 'd', 'u', 'h', 's', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '2', '_', 's', 'v', 'a', 'v', 'g', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_',
+ 's', 'v', 'a', 'v', 'g', 'h', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's',
+ 'v', 'n', 'a', 'v', 'g', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'v',
+ 's', 'u', 'b', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'v', 's', 'u',
- 'b', 'u', 'h', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'w', 'i', 'z',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'x', 't', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'A', '2', '_', 's', 'x', 't', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's',
- 'x', 't', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 't', 'f', 'r', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'A', '2', '_', 't', 'f', 'r', 'i', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
- '2', '_', 't', 'f', 'r', 'i', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 't',
- 'f', 'r', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 't', 'f', 'r', 'p', 'i',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'A', '2', '_', 't', 'f', 'r', 's', 'i', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'A', '2', '_', 'v', 'a', 'b', 's', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
- '_', 'v', 'a', 'b', 's', 'h', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
- '_', 'v', 'a', 'b', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a',
- 'b', 's', 'w', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a',
- 'd', 'd', 'b', '_', 'm', 'a', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v',
- 'a', 'd', 'd', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'd', 'd',
- 'h', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'd', 'd', 'u', 'b',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'd', 'd', 'u', 'b', 's', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'd', 'd', 'u', 'h', 's', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'A', '2', '_', 'v', 'a', 'd', 'd', 'w', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
- '2', '_', 'v', 'a', 'd', 'd', 'w', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_',
- 'v', 'a', 'v', 'g', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'v',
- 'g', 'h', 'c', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'v', 'g',
- 'h', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'v', 'g', 'u', 'b',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'v', 'g', 'u', 'b', 'r', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'v', 'g', 'u', 'h', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'A', '2', '_', 'v', 'a', 'v', 'g', 'u', 'h', 'r', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'A', '2', '_', 'v', 'a', 'v', 'g', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
- '_', 'v', 'a', 'v', 'g', 'u', 'w', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_',
- 'v', 'a', 'v', 'g', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'v',
- 'g', 'w', 'c', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'v', 'g',
- 'w', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'c', 'm', 'p', 'b', 'e',
- 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'c', 'm', 'p', 'b', 'g', 't',
- 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'c', 'm', 'p', 'h', 'e', 'q',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'c', 'm', 'p', 'h', 'g', 't', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'A', '2', '_', 'v', 'c', 'm', 'p', 'h', 'g', 't', 'u', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'A', '2', '_', 'v', 'c', 'm', 'p', 'w', 'e', 'q', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'A', '2', '_', 'v', 'c', 'm', 'p', 'w', 'g', 't', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'A', '2', '_', 'v', 'c', 'm', 'p', 'w', 'g', 't', 'u', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'A', '2', '_', 'v', 'c', 'o', 'n', 'j', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
- '_', 'v', 'm', 'a', 'x', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'm',
- 'a', 'x', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'm', 'a', 'x', 'u',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'm', 'a', 'x', 'u', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'A', '2', '_', 'v', 'm', 'a', 'x', 'u', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'A', '2', '_', 'v', 'm', 'a', 'x', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
- '_', 'v', 'm', 'i', 'n', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'm',
- 'i', 'n', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'm', 'i', 'n', 'u',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'm', 'i', 'n', 'u', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'A', '2', '_', 'v', 'm', 'i', 'n', 'u', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'A', '2', '_', 'v', 'm', 'i', 'n', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
- '_', 'v', 'n', 'a', 'v', 'g', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v',
- 'n', 'a', 'v', 'g', 'h', 'c', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v',
- 'n', 'a', 'v', 'g', 'h', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'n',
- 'a', 'v', 'g', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'n', 'a', 'v',
- 'g', 'w', 'c', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'n', 'a', 'v',
- 'g', 'w', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'r', 'a', 'd', 'd',
- 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'r', 'a', 'd', 'd', 'u',
- 'b', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'r', 's',
- 'a', 'd', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'r', 's', 'a',
- 'd', 'u', 'b', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v',
- 's', 'u', 'b', 'b', '_', 'm', 'a', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_',
- 'v', 's', 'u', 'b', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 's', 'u',
'b', 'h', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 's', 'u', 'b', 'u',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 's', 'u', 'b', 'u', 'b', 's',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 's', 'u', 'b', 'u', 'h', 's', '\000',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'v', 's', 'u', 'b',
+ 'u', 'h', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'w', 'i', 'z', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'A', '2', '_', 'v', 's', 'u', 'b', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'A', '2', '_', 'v', 's', 'u', 'b', 'w', 's', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
- '_', 'x', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'x', 'o', 'r', 'p',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'A', '2', '_', 'z', 'x', 't', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'A', '2', '_', 'z', 'x', 't', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'a',
- 'n', 'd', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'a', 'n', 'd', 'n', 'p',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'A', '4', '_', 'b', 'i', 't', 's', 'p', 'l', 'i', 't',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'A', '4', '_', 'b', 'i', 't', 's', 'p', 'l', 'i', 't',
- 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'b', 'o', 'u', 'n', 'd', 's', 'c',
- 'h', 'e', 'c', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'c', 'm', 'p', 'b',
- 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'c', 'm', 'p', 'b', 'e', 'q',
- 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'c', 'm', 'p', 'b', 'g', 't', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'A', '4', '_', 'c', 'm', 'p', 'b', 'g', 't', 'i', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'A', '4', '_', 'c', 'm', 'p', 'b', 'g', 't', 'u', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'A', '4', '_', 'c', 'm', 'p', 'b', 'g', 't', 'u', 'i', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'A', '4', '_', 'c', 'm', 'p', 'h', 'e', 'q', '\000', '_', '_', 'b', 'u',
+ 'O', 'N', '_', 'A', '2', '_', 's', 'x', 't', 'b', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
- '4', '_', 'c', 'm', 'p', 'h', 'e', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4',
- '_', 'c', 'm', 'p', 'h', 'g', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'c',
- 'm', 'p', 'h', 'g', 't', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'c', 'm',
- 'p', 'h', 'g', 't', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'c', 'm', 'p',
- 'h', 'g', 't', 'u', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'c', 'o', 'm',
- 'b', 'i', 'n', 'e', 'i', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'c', 'o',
- 'm', 'b', 'i', 'n', 'e', 'r', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'c',
- 'r', 'o', 'u', 'n', 'd', '_', 'r', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_',
- 'c', 'r', 'o', 'u', 'n', 'd', '_', 'r', 'r', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4',
- '_', 'm', 'o', 'd', 'w', 'r', 'a', 'p', 'u', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4',
- '_', 'o', 'r', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'o', 'r', 'n', 'p',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'A', '4', '_', 'r', 'c', 'm', 'p', 'e', 'q', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'A', '4', '_', 'r', 'c', 'm', 'p', 'e', 'q', 'i', '\000', '_', '_',
+ '2', '_', 's', 'x', 't', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 's', 'x',
+ 't', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 't', 'f', 'r', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'A', '4', '_', 'r', 'c', 'm', 'p', 'n', 'e', 'q', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'A', '4', '_', 'r', 'c', 'm', 'p', 'n', 'e', 'q', 'i', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'A', '4', '_', 'r', 'o', 'u', 'n', 'd', '_', 'r', 'i', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'A', '4', '_', 'r', 'o', 'u', 'n', 'd', '_', 'r', 'i', '_', 's', 'a', 't',
+ '_', 'A', '2', '_', 't', 'f', 'r', 'c', 'r', 'r', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '2', '_', 't', 'f', 'r', 'i', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 't',
+ 'f', 'r', 'i', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 't', 'f', 'r', 'p',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'A', '4', '_', 'r', 'o', 'u', 'n', 'd', '_', 'r', 'r',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'A', '4', '_', 'r', 'o', 'u', 'n', 'd', '_', 'r', 'r',
- '_', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 't', 'l', 'b', 'm',
- 'a', 't', 'c', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'v', 'c', 'm', 'p',
- 'b', 'e', 'q', '_', 'a', 'n', 'y', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'v',
- 'c', 'm', 'p', 'b', 'e', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'v',
- 'c', 'm', 'p', 'b', 'g', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'v', 'c',
- 'm', 'p', 'b', 'g', 't', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'v', 'c',
- 'm', 'p', 'b', 'g', 't', 'u', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'v',
- 'c', 'm', 'p', 'h', 'e', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'v',
- 'c', 'm', 'p', 'h', 'g', 't', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'v',
- 'c', 'm', 'p', 'h', 'g', 't', 'u', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_',
- 'v', 'c', 'm', 'p', 'w', 'e', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_',
- 'v', 'c', 'm', 'p', 'w', 'g', 't', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_',
- 'v', 'c', 'm', 'p', 'w', 'g', 't', 'u', 'i', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4',
- '_', 'v', 'r', 'm', 'a', 'x', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'v',
- 'r', 'm', 'a', 'x', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'v', 'r',
- 'm', 'a', 'x', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'v', 'r', 'm',
- 'a', 'x', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'v', 'r', 'm', 'i', 'n',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'v', 'r', 'm', 'i', 'n', 'u', 'h',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'A', '4', '_', 'v', 'r', 'm', 'i', 'n', 'u', 'w', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'A', '4', '_', 'v', 'r', 'm', 'i', 'n', 'w', '\000', '_', '_',
+ 'G', 'O', 'N', '_', 'A', '2', '_', 't', 'f', 'r', 'p', 'i', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'A', '5', '_', 'v', 'a', 'd', 'd', 'h', 'u', 'b', 's', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'A', '6', '_', 'v', 'c', 'm', 'p', 'b', 'e', 'q', '_', 'n', 'o', 't',
- 'a', 'n', 'y', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '6', '_', 'v', 'c', 'm', 'p', 'b',
- 'e', 'q', '_', 'n', 'o', 't', 'a', 'n', 'y', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'C', '2', '_', 'a', 'l', 'l', '8', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C',
- '2', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'a', 'n', 'd',
- 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'a', 'n', 'y', '8', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'C', '2', '_', 'b', 'i', 't', 's', 'c', 'l', 'r', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'C', '2', '_', 'b', 'i', 't', 's', 'c', 'l', 'r', 'i', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'C', '2', '_', 'b', 'i', 't', 's', 's', 'e', 't', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C',
- '2', '_', 'c', 'm', 'p', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'c',
- 'm', 'p', 'e', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'c', 'm', 'p',
- 'e', 'q', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'c', 'm', 'p', 'g', 'e',
- 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'c', 'm', 'p', 'g', 'e', 'u', 'i',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'C', '2', '_', 'c', 'm', 'p', 'g', 't', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'C', '2', '_', 'c', 'm', 'p', 'g', 't', 'i', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C',
- '2', '_', 'c', 'm', 'p', 'g', 't', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_',
- 'c', 'm', 'p', 'g', 't', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'c', 'm',
- 'p', 'g', 't', 'u', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'c', 'm', 'p',
- 'g', 't', 'u', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'c', 'm', 'p', 'l',
+ '_', 'A', '2', '_', 't', 'f', 'r', 'r', 'c', 'r', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '2', '_', 't', 'f', 'r', 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v',
+ 'a', 'b', 's', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'b', 's',
+ 'h', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'b', 's',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'b', 's', 'w', 's', 'a',
't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'c', 'm', 'p', 'l', 't', 'u', '\000',
+ 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'd', 'd', 'b', '_', 'm',
+ 'a', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'd', 'd', 'h', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'C', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C',
- '2', '_', 'm', 'u', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'm', 'u', 'x',
- 'i', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'm', 'u', 'x', 'i', 'r', '\000',
+ 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'd', 'd', 'h', 's', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'A', '2', '_', 'v', 'a', 'd', 'd', 'u', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '2', '_', 'v', 'a', 'd', 'd', 'u', 'b', 's', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
+ '_', 'v', 'a', 'd', 'd', 'u', 'h', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_',
+ 'v', 'a', 'd', 'd', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'd',
+ 'd', 'w', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'v', 'g', 'h',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'v', 'g', 'h', 'c', 'r', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'C', '2', '_', 'm', 'u', 'x', 'r', 'i', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'C', '2', '_', 'n', 'o', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'o', 'r',
+ 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'v', 'g', 'h', 'r', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'A', '2', '_', 'v', 'a', 'v', 'g', 'u', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '2', '_', 'v', 'a', 'v', 'g', 'u', 'b', 'r', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
+ '_', 'v', 'a', 'v', 'g', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v',
+ 'a', 'v', 'g', 'u', 'h', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a',
+ 'v', 'g', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'v', 'g',
+ 'u', 'w', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'v', 'g', 'w',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'C', '2', '_', 'o', 'r', 'n', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C',
- '2', '_', 'p', 'x', 'f', 'e', 'r', '_', 'm', 'a', 'p', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'C', '2', '_', 't', 'f', 'r', 'p', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_',
- 't', 'f', 'r', 'r', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'v', 'i', 't',
- 'p', 'a', 'c', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'v', 'm', 'u', 'x',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'C', '2', '_', 'x', 'o', 'r', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C',
- '4', '_', 'a', 'n', 'd', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '4',
- '_', 'a', 'n', 'd', '_', 'a', 'n', 'd', 'n', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '4',
- '_', 'a', 'n', 'd', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '4', '_', 'a',
- 'n', 'd', '_', 'o', 'r', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '4', '_', 'c', 'm',
- 'p', 'l', 't', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '4', '_', 'c', 'm', 'p', 'l',
- 't', 'e', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '4', '_', 'c', 'm', 'p', 'l', 't',
- 'e', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'C', '4', '_', 'c', 'm', 'p', 'l', 't', 'e',
- 'u', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'C', '4', '_', 'c', 'm', 'p', 'n', 'e', 'q',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'C', '4', '_', 'c', 'm', 'p', 'n', 'e', 'q', 'i', '\000',
+ 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'v', 'g', 'w', 'c', 'r', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'C', '4', '_', 'f', 'a', 's', 't', 'c', 'o', 'r', 'n', 'e',
- 'r', '9', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'C', '4', '_', 'f', 'a', 's', 't', 'c', 'o',
- 'r', 'n', 'e', 'r', '9', '_', 'n', 'o', 't', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '4',
- '_', 'n', 'b', 'i', 't', 's', 'c', 'l', 'r', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '4',
- '_', 'n', 'b', 'i', 't', 's', 'c', 'l', 'r', 'i', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C',
- '4', '_', 'n', 'b', 'i', 't', 's', 's', 'e', 't', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C',
- '4', '_', 'o', 'r', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '4', '_',
- 'o', 'r', '_', 'a', 'n', 'd', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '4', '_', 'o',
- 'r', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '4', '_', 'o', 'r', '_', 'o',
- 'r', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 'd',
- '2', 'd', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v', '_',
- 'd', '2', 's', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v',
- '_', 'd', 'f', '2', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o', 'n',
- 'v', '_', 'd', 'f', '2', 'd', '_', 'c', 'h', 'o', 'p', '\000', '_', '_', 'b',
+ 'O', 'N', '_', 'A', '2', '_', 'v', 'a', 'v', 'g', 'w', 'r', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'A', '2', '_', 'v', 'c', 'm', 'p', 'b', 'e', 'q', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 'd', 'f', '2', 's', 'f', '\000', '_',
+ 'A', '2', '_', 'v', 'c', 'm', 'p', 'b', 'g', 't', 'u', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'A', '2', '_', 'v', 'c', 'm', 'p', 'h', 'e', 'q', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '2', '_', 'v', 'c', 'm', 'p', 'h', 'g', 't', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
+ '_', 'v', 'c', 'm', 'p', 'h', 'g', 't', 'u', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
+ '_', 'v', 'c', 'm', 'p', 'w', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_',
+ 'v', 'c', 'm', 'p', 'w', 'g', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v',
+ 'c', 'm', 'p', 'w', 'g', 't', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v',
+ 'c', 'o', 'n', 'j', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'm', 'a', 'x',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'm', 'a', 'x', 'h', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 'd', 'f', '2', 'u', 'd',
+ 'N', '_', 'A', '2', '_', 'v', 'm', 'a', 'x', 'u', 'b', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'A', '2', '_', 'v', 'm', 'a', 'x', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
+ '_', 'v', 'm', 'a', 'x', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v',
+ 'm', 'a', 'x', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'm', 'i', 'n',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'm', 'i', 'n', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'A', '2', '_', 'v', 'm', 'i', 'n', 'u', 'b', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'A', '2', '_', 'v', 'm', 'i', 'n', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
+ '_', 'v', 'm', 'i', 'n', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v',
+ 'm', 'i', 'n', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'n', 'a', 'v',
+ 'g', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'n', 'a', 'v', 'g', 'h',
+ 'c', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'n', 'a', 'v', 'g', 'h',
+ 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'n', 'a', 'v', 'g', 'w', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'A', '2', '_', 'v', 'n', 'a', 'v', 'g', 'w', 'c', 'r', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'A', '2', '_', 'v', 'n', 'a', 'v', 'g', 'w', 'r', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'A', '2', '_', 'v', 'r', 'a', 'd', 'd', 'u', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'A', '2', '_', 'v', 'r', 'a', 'd', 'd', 'u', 'b', '_', 'a', 'c', 'c',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 'r', 's', 'a', 'd', 'u', 'b', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'A', '2', '_', 'v', 'r', 's', 'a', 'd', 'u', 'b', '_', 'a',
+ 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 's', 'u', 'b', 'b', '_',
+ 'm', 'a', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 's', 'u', 'b', 'h',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 's', 'u', 'b', 'h', 's', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'A', '2', '_', 'v', 's', 'u', 'b', 'u', 'b', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'A', '2', '_', 'v', 's', 'u', 'b', 'u', 'b', 's', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '2', '_', 'v', 's', 'u', 'b', 'u', 'h', 's', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2',
+ '_', 'v', 's', 'u', 'b', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'v', 's',
+ 'u', 'b', 'w', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'x', 'o', 'r', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'A', '2', '_', 'x', 'o', 'r', 'p', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '2', '_', 'z', 'x', 't', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '2', '_', 'z', 'x',
+ 't', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'a', 'd', 'd', 'p', '_', 'c',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'A', '4', '_', 'a', 'n', 'd', 'n', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'A', '4', '_', 'a', 'n', 'd', 'n', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_',
+ 'b', 'i', 't', 's', 'p', 'l', 'i', 't', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_',
+ 'b', 'i', 't', 's', 'p', 'l', 'i', 't', 'i', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4',
+ '_', 'b', 'o', 'u', 'n', 'd', 's', 'c', 'h', 'e', 'c', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'A', '4', '_', 'c', 'm', 'p', 'b', 'e', 'q', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '4', '_', 'c', 'm', 'p', 'b', 'e', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4',
+ '_', 'c', 'm', 'p', 'b', 'g', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'c',
+ 'm', 'p', 'b', 'g', 't', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'c', 'm',
+ 'p', 'b', 'g', 't', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'c', 'm', 'p',
+ 'b', 'g', 't', 'u', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'c', 'm', 'p',
+ 'h', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'c', 'm', 'p', 'h', 'e',
+ 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'c', 'm', 'p', 'h', 'g', 't',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'A', '4', '_', 'c', 'm', 'p', 'h', 'g', 't', 'i', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'A', '4', '_', 'c', 'm', 'p', 'h', 'g', 't', 'u', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'A', '4', '_', 'c', 'm', 'p', 'h', 'g', 't', 'u', 'i', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'A', '4', '_', 'c', 'o', 'm', 'b', 'i', 'n', 'e', 'i', 'i', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'A', '4', '_', 'c', 'o', 'm', 'b', 'i', 'n', 'e', 'i', 'r',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'A', '4', '_', 'c', 'o', 'm', 'b', 'i', 'n', 'e', 'r',
+ 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'c', 'r', 'o', 'u', 'n', 'd', '_',
+ 'r', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'c', 'r', 'o', 'u', 'n', 'd',
+ '_', 'r', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'm', 'o', 'd', 'w', 'r',
+ 'a', 'p', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'o', 'r', 'n', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'A', '4', '_', 'o', 'r', 'n', 'p', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4',
+ '_', 'r', 'c', 'm', 'p', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'r',
+ 'c', 'm', 'p', 'e', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'r', 'c',
+ 'm', 'p', 'n', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'r', 'c', 'm',
+ 'p', 'n', 'e', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'r', 'o', 'u',
+ 'n', 'd', '_', 'r', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'r', 'o', 'u',
+ 'n', 'd', '_', 'r', 'i', '_', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4',
+ '_', 'r', 'o', 'u', 'n', 'd', '_', 'r', 'r', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4',
+ '_', 'r', 'o', 'u', 'n', 'd', '_', 'r', 'r', '_', 's', 'a', 't', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'A', '4', '_', 's', 'u', 'b', 'p', '_', 'c', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'A', '4', '_', 't', 'f', 'r', 'c', 'p', 'p', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4',
+ '_', 't', 'f', 'r', 'p', 'c', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 't',
+ 'l', 'b', 'm', 'a', 't', 'c', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'v',
+ 'c', 'm', 'p', 'b', 'e', 'q', '_', 'a', 'n', 'y', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '4', '_', 'v', 'c', 'm', 'p', 'b', 'e', 'q', 'i', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '4', '_', 'v', 'c', 'm', 'p', 'b', 'g', 't', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4',
+ '_', 'v', 'c', 'm', 'p', 'b', 'g', 't', 'i', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4',
+ '_', 'v', 'c', 'm', 'p', 'b', 'g', 't', 'u', 'i', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '4', '_', 'v', 'c', 'm', 'p', 'h', 'e', 'q', 'i', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '4', '_', 'v', 'c', 'm', 'p', 'h', 'g', 't', 'i', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '4', '_', 'v', 'c', 'm', 'p', 'h', 'g', 't', 'u', 'i', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'A', '4', '_', 'v', 'c', 'm', 'p', 'w', 'e', 'q', 'i', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'A', '4', '_', 'v', 'c', 'm', 'p', 'w', 'g', 't', 'i', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'A', '4', '_', 'v', 'c', 'm', 'p', 'w', 'g', 't', 'u', 'i', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'A', '4', '_', 'v', 'r', 'm', 'a', 'x', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '4', '_', 'v', 'r', 'm', 'a', 'x', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4',
+ '_', 'v', 'r', 'm', 'a', 'x', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_',
+ 'v', 'r', 'm', 'a', 'x', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'v', 'r',
+ 'm', 'i', 'n', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'v', 'r', 'm', 'i',
+ 'n', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'v', 'r', 'm', 'i', 'n',
+ 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'A', '4', '_', 'v', 'r', 'm', 'i', 'n', 'w',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'A', '5', '_', 'A', 'C', 'S', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '5', '_', 'v', 'a', 'd', 'd', 'h', 'u', 'b', 's', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'A',
+ '6', '_', 'v', 'c', 'm', 'p', 'b', 'e', 'q', '_', 'n', 'o', 't', 'a', 'n',
+ 'y', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'A', '6', '_', 'v', 'm', 'i', 'n', 'u', 'b', '_',
+ 'R', 'd', 'P', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'a', 'l', 'l', '8', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'C', '2', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2',
+ '_', 'a', 'n', 'd', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'a', 'n', 'y',
+ '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'b', 'i', 't', 's', 'c', 'l', 'r',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'C', '2', '_', 'b', 'i', 't', 's', 'c', 'l', 'r', 'i',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'C', '2', '_', 'b', 'i', 't', 's', 's', 'e', 't', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'C', '2', '_', 'c', 'm', 'p', 'e', 'q', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'C', '2', '_', 'c', 'm', 'p', 'e', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2',
+ '_', 'c', 'm', 'p', 'e', 'q', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'c',
+ 'm', 'p', 'g', 'e', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'c', 'm', 'p',
+ 'g', 'e', 'u', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'c', 'm', 'p', 'g',
+ 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'c', 'm', 'p', 'g', 't', 'i', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'C', '2', '_', 'c', 'm', 'p', 'g', 't', 'p', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'C', '2', '_', 'c', 'm', 'p', 'g', 't', 'u', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C',
+ '2', '_', 'c', 'm', 'p', 'g', 't', 'u', 'i', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2',
+ '_', 'c', 'm', 'p', 'g', 't', 'u', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_',
+ 'c', 'm', 'p', 'l', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'c', 'm', 'p',
+ 'l', 't', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'm', 'a', 's', 'k', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'C', '2', '_', 'm', 'u', 'x', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2',
+ '_', 'm', 'u', 'x', 'i', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'm', 'u',
+ 'x', 'i', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'm', 'u', 'x', 'r', 'i',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'C', '2', '_', 'n', 'o', 't', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C',
+ '2', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'o', 'r', 'n', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'C', '2', '_', 'p', 'x', 'f', 'e', 'r', '_', 'm', 'a', 'p',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'C', '2', '_', 't', 'f', 'r', 'p', 'r', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'C', '2', '_', 't', 'f', 'r', 'r', 'p', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2',
+ '_', 'v', 'i', 't', 'p', 'a', 'c', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_',
+ 'v', 'm', 'u', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '2', '_', 'x', 'o', 'r', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'C', '4', '_', 'a', 'n', 'd', '_', 'a', 'n', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'C', '4', '_', 'a', 'n', 'd', '_', 'a', 'n', 'd', 'n', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'C', '4', '_', 'a', 'n', 'd', '_', 'o', 'r', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'C', '4', '_', 'a', 'n', 'd', '_', 'o', 'r', 'n', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C',
+ '4', '_', 'c', 'm', 'p', 'l', 't', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '4', '_',
+ 'c', 'm', 'p', 'l', 't', 'e', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '4', '_', 'c',
+ 'm', 'p', 'l', 't', 'e', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '4', '_', 'c', 'm',
+ 'p', 'l', 't', 'e', 'u', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '4', '_', 'c', 'm',
+ 'p', 'n', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '4', '_', 'c', 'm', 'p', 'n',
+ 'e', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '4', '_', 'f', 'a', 's', 't', 'c',
+ 'o', 'r', 'n', 'e', 'r', '9', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '4', '_', 'f', 'a',
+ 's', 't', 'c', 'o', 'r', 'n', 'e', 'r', '9', '_', 'n', 'o', 't', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'C', '4', '_', 'n', 'b', 'i', 't', 's', 'c', 'l', 'r', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'C', '4', '_', 'n', 'b', 'i', 't', 's', 'c', 'l', 'r', 'i', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'C', '4', '_', 'n', 'b', 'i', 't', 's', 's', 'e', 't', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'C', '4', '_', 'o', 'r', '_', 'a', 'n', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'C', '4', '_', 'o', 'r', '_', 'a', 'n', 'd', 'n', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'C', '4', '_', 'o', 'r', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'C', '4', '_',
+ 'o', 'r', '_', 'o', 'r', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o',
+ 'n', 'v', '_', 'd', '2', 'd', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c',
+ 'o', 'n', 'v', '_', 'd', '2', 's', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_',
+ 'c', 'o', 'n', 'v', '_', 'd', 'f', '2', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2',
+ '_', 'c', 'o', 'n', 'v', '_', 'd', 'f', '2', 'd', '_', 'c', 'h', 'o', 'p',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 'd', 'f', '2',
- 'u', 'd', '_', 'c', 'h', 'o', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c',
- 'o', 'n', 'v', '_', 'd', 'f', '2', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2',
- '_', 'c', 'o', 'n', 'v', '_', 'd', 'f', '2', 'u', 'w', '_', 'c', 'h', 'o',
- 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 'd', 'f',
- '2', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 's', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 'd',
- 'f', '2', 'w', '_', 'c', 'h', 'o', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_',
- 'c', 'o', 'n', 'v', '_', 's', 'f', '2', 'd', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2',
- '_', 'c', 'o', 'n', 'v', '_', 's', 'f', '2', 'd', '_', 'c', 'h', 'o', 'p',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 's', 'f', '2',
- 'd', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 's',
'f', '2', 'u', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v',
- '_', 's', 'f', '2', 'u', 'd', '_', 'c', 'h', 'o', 'p', '\000', '_', '_', 'b',
+ '_', 'd', 'f', '2', 'u', 'd', '_', 'c', 'h', 'o', 'p', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 's', 'f', '2', 'u', 'w', '\000', '_',
+ 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 'd', 'f', '2', 'u', 'w', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 's', 'f', '2', 'u', 'w',
+ 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 'd', 'f', '2', 'u', 'w',
'_', 'c', 'h', 'o', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
'_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o', 'n',
- 'v', '_', 's', 'f', '2', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'v', '_', 'd', 'f', '2', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o',
- 'n', 'v', '_', 's', 'f', '2', 'w', '_', 'c', 'h', 'o', 'p', '\000', '_', '_',
+ 'n', 'v', '_', 'd', 'f', '2', 'w', '_', 'c', 'h', 'o', 'p', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 'u', 'd', '2', 'd', 'f', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 'u', 'd', '2', 's',
- 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 'u', 'w',
+ '_', 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 's', 'f', '2', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 's', 'f', '2', 'd', '_',
+ 'c', 'h', 'o', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v',
+ '_', 's', 'f', '2', 'd', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o',
+ 'n', 'v', '_', 's', 'f', '2', 'u', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_',
+ 'c', 'o', 'n', 'v', '_', 's', 'f', '2', 'u', 'd', '_', 'c', 'h', 'o', 'p',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 's', 'f', '2',
+ 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 's',
+ 'f', '2', 'u', 'w', '_', 'c', 'h', 'o', 'p', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2',
+ '_', 'c', 'o', 'n', 'v', '_', 's', 'f', '2', 'w', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F',
+ '2', '_', 'c', 'o', 'n', 'v', '_', 's', 'f', '2', 'w', '_', 'c', 'h', 'o',
+ 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v', '_', 'u', 'd',
'2', 'd', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o', 'n', 'v', '_',
- 'u', 'w', '2', 's', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ 'u', 'd', '2', 's', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
'_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o', 'n',
- 'v', '_', 'w', '2', 'd', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c', 'o',
- 'n', 'v', '_', 'w', '2', 's', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'd',
- 'f', 'c', 'l', 'a', 's', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'd', 'f',
- 'c', 'm', 'p', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'd', 'f', 'c',
- 'm', 'p', 'g', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'd', 'f', 'c', 'm',
- 'p', 'g', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'd', 'f', 'c', 'm', 'p',
- 'u', 'o', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'd', 'f', 'i', 'm', 'm', '_',
- 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'd', 'f', 'i', 'm', 'm', '_', 'p',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'F', '2', '_', 's', 'f', 'a', 'd', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'F', '2', '_', 's', 'f', 'c', 'l', 'a', 's', 's', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'F', '2', '_', 's', 'f', 'c', 'm', 'p', 'e', 'q', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F',
- '2', '_', 's', 'f', 'c', 'm', 'p', 'g', 'e', '\000', '_', '_', 'b', 'u', 'i',
+ 'v', '_', 'u', 'w', '2', 'd', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'c',
+ 'o', 'n', 'v', '_', 'u', 'w', '2', 's', 'f', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2',
- '_', 's', 'f', 'c', 'm', 'p', 'g', 't', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ '_', 'c', 'o', 'n', 'v', '_', 'w', '2', 'd', 'f', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F',
+ '2', '_', 'c', 'o', 'n', 'v', '_', 'w', '2', 's', 'f', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'F', '2', '_', 'd', 'f', 'a', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_',
- 's', 'f', 'c', 'm', 'p', 'u', 'o', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's',
- 'f', 'f', 'i', 'x', 'u', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's',
- 'f', 'f', 'i', 'x', 'u', 'p', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's',
- 'f', 'f', 'i', 'x', 'u', 'p', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's',
- 'f', 'f', 'm', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's', 'f', 'f', 'm',
- 'a', '_', 'l', 'i', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's', 'f', 'f',
- 'm', 'a', '_', 's', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's', 'f', 'f',
- 'm', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's', 'f', 'f', 'm', 's', '_',
- 'l', 'i', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's', 'f', 'i', 'm', 'm',
+ 'd', 'f', 'c', 'l', 'a', 's', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'd',
+ 'f', 'c', 'm', 'p', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'd', 'f',
+ 'c', 'm', 'p', 'g', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'd', 'f', 'c',
+ 'm', 'p', 'g', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'd', 'f', 'c', 'm',
+ 'p', 'u', 'o', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'd', 'f', 'i', 'm', 'm',
'_', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's', 'f', 'i', 'm', 'm', '_',
+ 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'd', 'f', 'i', 'm', 'm', '_',
'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 'd', 'f', 's', 'u', 'b', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'F', '2', '_', 's', 'f', 'a', 'd', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F',
+ '2', '_', 's', 'f', 'c', 'l', 'a', 's', 's', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2',
+ '_', 's', 'f', 'c', 'm', 'p', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_',
+ 's', 'f', 'c', 'm', 'p', 'g', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's',
+ 'f', 'c', 'm', 'p', 'g', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's', 'f',
+ 'c', 'm', 'p', 'u', 'o', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's', 'f', 'f',
+ 'i', 'x', 'u', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's', 'f', 'f',
+ 'i', 'x', 'u', 'p', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's', 'f', 'f',
+ 'i', 'x', 'u', 'p', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's', 'f', 'f',
+ 'm', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's', 'f', 'f', 'm', 'a', '_',
+ 'l', 'i', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's', 'f', 'f', 'm', 'a',
+ '_', 's', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's', 'f', 'f', 'm', 's',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'F', '2', '_', 's', 'f', 'f', 'm', 's', '_', 'l', 'i',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's', 'f', 'i', 'm', 'm', '_', 'n',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'F', '2', '_', 's', 'f', 'i', 'm', 'm', '_', 'p', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'F', '2', '_', 's', 'f', 'i', 'n', 'v', 's', 'q', 'r', 't',
+ 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's', 'f', 'm', 'a', 'x', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
'N', '_', 'F', '2', '_', 's', 'f', 'm', 'i', 'n', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F',
'2', '_', 's', 'f', 'm', 'p', 'y', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's',
+ 'f', 'r', 'e', 'c', 'i', 'p', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'F', '2', '_', 's',
'f', 's', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'L', '2', '_', 'l', 'o', 'a', 'd',
'w', '_', 'l', 'o', 'c', 'k', 'e', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
@@ -17154,6935 +17302,6703 @@
'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'm',
'p', 'y', 'u', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm',
- 'p', 'y', '_', 'a', 'c', 'c', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'a', 'c', 'c', '_', 'h', 'h', '_',
- 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'a', 'c',
- 'c', '_', 'h', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm',
- 'p', 'y', '_', 'a', 'c', 'c', '_', 'h', 'l', '_', 's', '1', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'a', 'c', 'c', '_', 'l', 'h', '_',
- 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'a', 'c',
- 'c', '_', 'l', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm',
- 'p', 'y', '_', 'a', 'c', 'c', '_', 'l', 'l', '_', 's', '0', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'a', 'c', 'c', '_', 'l', 'l', '_',
- 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'a', 'c',
- 'c', '_', 's', 'a', 't', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'M', '2', '_', 'm', 'p', 'y', '_', 'a', 'c', 'c', '_', 's', 'a', 't', '_',
- 'h', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y',
- '_', 'a', 'c', 'c', '_', 's', 'a', 't', '_', 'h', 'l', '_', 's', '0', '\000',
+ 'n', 'a', 'c', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_',
+ 'a', 'c', 'c', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
+ '_', 'm', 'p', 'y', '_', 'a', 'c', 'c', '_', 'h', 'h', '_', 's', '1', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'a', 'c', 'c', '_', 'h',
+ 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_',
+ 'a', 'c', 'c', '_', 'h', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
+ '_', 'm', 'p', 'y', '_', 'a', 'c', 'c', '_', 'l', 'h', '_', 's', '0', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'a', 'c', 'c', '_', 'l',
+ 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_',
+ 'a', 'c', 'c', '_', 'l', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
+ '_', 'm', 'p', 'y', '_', 'a', 'c', 'c', '_', 'l', 'l', '_', 's', '1', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'a', 'c', 'c', '_', 's',
- 'a', 't', '_', 'h', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 'a', 't', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
- 'm', 'p', 'y', '_', 'a', 'c', 'c', '_', 's', 'a', 't', '_', 'l', 'h', '_',
- 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'm', 'p', 'y', '_', 'a', 'c', 'c', '_', 's', 'a', 't', '_', 'h', 'h', '_',
+ 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'a', 'c',
- 'c', '_', 's', 'a', 't', '_', 'l', 'h', '_', 's', '1', '\000', '_', '_', 'b',
+ 'c', '_', 's', 'a', 't', '_', 'h', 'l', '_', 's', '0', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
'M', '2', '_', 'm', 'p', 'y', '_', 'a', 'c', 'c', '_', 's', 'a', 't', '_',
- 'l', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y',
- '_', 'a', 'c', 'c', '_', 's', 'a', 't', '_', 'l', 'l', '_', 's', '1', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'h', 'h', '_', 's', '0',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'h', 'h', '_', 's',
- '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'h', 'l', '_',
- 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'h', 'l',
- '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'l',
- 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_',
- 'l', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y',
- '_', 'l', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
- 'y', '_', 'l', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm',
- 'p', 'y', '_', 'n', 'a', 'c', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'n', 'a', 'c', '_', 'h', 'h', '_',
- 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'n', 'a',
- 'c', '_', 'h', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm',
- 'p', 'y', '_', 'n', 'a', 'c', '_', 'h', 'l', '_', 's', '1', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'n', 'a', 'c', '_', 'l', 'h', '_',
- 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'n', 'a',
- 'c', '_', 'l', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm',
- 'p', 'y', '_', 'n', 'a', 'c', '_', 'l', 'l', '_', 's', '0', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'n', 'a', 'c', '_', 'l', 'l', '_',
- 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'n', 'a',
- 'c', '_', 's', 'a', 't', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'M', '2', '_', 'm', 'p', 'y', '_', 'n', 'a', 'c', '_', 's', 'a', 't', '_',
- 'h', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y',
- '_', 'n', 'a', 'c', '_', 's', 'a', 't', '_', 'h', 'l', '_', 's', '0', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'n', 'a', 'c', '_', 's',
- 'a', 't', '_', 'h', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
- 'm', 'p', 'y', '_', 'n', 'a', 'c', '_', 's', 'a', 't', '_', 'l', 'h', '_',
- 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'n', 'a',
- 'c', '_', 's', 'a', 't', '_', 'l', 'h', '_', 's', '1', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'M', '2', '_', 'm', 'p', 'y', '_', 'n', 'a', 'c', '_', 's', 'a', 't', '_',
- 'l', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y',
- '_', 'n', 'a', 'c', '_', 's', 'a', 't', '_', 'l', 'l', '_', 's', '1', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'r', 'n', 'd', '_', 'h',
- 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_',
- 'r', 'n', 'd', '_', 'h', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
- '_', 'm', 'p', 'y', '_', 'r', 'n', 'd', '_', 'h', 'l', '_', 's', '0', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'r', 'n', 'd', '_', 'h',
- 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_',
- 'r', 'n', 'd', '_', 'l', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
- '_', 'm', 'p', 'y', '_', 'r', 'n', 'd', '_', 'l', 'h', '_', 's', '1', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'r', 'n', 'd', '_', 'l',
- 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_',
- 'r', 'n', 'd', '_', 'l', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
- '_', 'm', 'p', 'y', '_', 's', 'a', 't', '_', 'h', 'h', '_', 's', '0', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 's', 'a', 't', '_', 'h',
- 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_',
- 's', 'a', 't', '_', 'h', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
- '_', 'm', 'p', 'y', '_', 's', 'a', 't', '_', 'h', 'l', '_', 's', '1', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 's', 'a', 't', '_', 'l',
- 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_',
- 's', 'a', 't', '_', 'l', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
- '_', 'm', 'p', 'y', '_', 's', 'a', 't', '_', 'l', 'l', '_', 's', '0', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 's', 'a', 't', '_', 'l',
- 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_',
- 's', 'a', 't', '_', 'r', 'n', 'd', '_', 'h', 'h', '_', 's', '0', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 's', 'a', 't', '_', 'r', 'n',
- 'd', '_', 'h', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm',
- 'p', 'y', '_', 's', 'a', 't', '_', 'r', 'n', 'd', '_', 'h', 'l', '_', 's',
- '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 's', 'a', 't',
- '_', 'r', 'n', 'd', '_', 'h', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
- '2', '_', 'm', 'p', 'y', '_', 's', 'a', 't', '_', 'r', 'n', 'd', '_', 'l',
- 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_',
- 's', 'a', 't', '_', 'r', 'n', 'd', '_', 'l', 'h', '_', 's', '1', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 's', 'a', 't', '_', 'r', 'n',
- 'd', '_', 'l', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm',
- 'p', 'y', '_', 's', 'a', 't', '_', 'r', 'n', 'd', '_', 'l', 'l', '_', 's',
- '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'u', 'p', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'u', 'p', '_', 's', '1',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'u', 'p', '_', 's',
- '1', '_', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y',
- 'd', '_', 'a', 'c', 'c', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'a', 'c', 'c', '_', 'h', 'h', '_',
- 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'a',
- 'c', 'c', '_', 'h', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
- 'm', 'p', 'y', 'd', '_', 'a', 'c', 'c', '_', 'h', 'l', '_', 's', '1', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'a', 'c', 'c', '_',
- 'l', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y',
- 'd', '_', 'a', 'c', 'c', '_', 'l', 'h', '_', 's', '1', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'a', 'c', 'c', '_', 'l', 'l', '_',
- 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'a',
- 'c', 'c', '_', 'l', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
- 'm', 'p', 'y', 'd', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
- '2', '_', 'm', 'p', 'y', 'd', '_', 'h', 'h', '_', 's', '1', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'h', 'l', '_', 's', '0', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'h', 'l', '_', 's',
- '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'l', 'h',
- '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_',
- 'l', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y',
- 'd', '_', 'l', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm',
- 'p', 'y', 'd', '_', 'l', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
- '_', 'm', 'p', 'y', 'd', '_', 'n', 'a', 'c', '_', 'h', 'h', '_', 's', '0',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'n', 'a', 'c',
- '_', 'h', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
- 'y', 'd', '_', 'n', 'a', 'c', '_', 'h', 'l', '_', 's', '0', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'n', 'a', 'c', '_', 'h', 'l',
- '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_',
- 'n', 'a', 'c', '_', 'l', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
- '_', 'm', 'p', 'y', 'd', '_', 'n', 'a', 'c', '_', 'l', 'h', '_', 's', '1',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'n', 'a', 'c',
- '_', 'l', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
- 'y', 'd', '_', 'n', 'a', 'c', '_', 'l', 'l', '_', 's', '1', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'r', 'n', 'd', '_', 'h', 'h',
- '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_',
- 'r', 'n', 'd', '_', 'h', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
- '_', 'm', 'p', 'y', 'd', '_', 'r', 'n', 'd', '_', 'h', 'l', '_', 's', '0',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'r', 'n', 'd',
- '_', 'h', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
- 'y', 'd', '_', 'r', 'n', 'd', '_', 'l', 'h', '_', 's', '0', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'r', 'n', 'd', '_', 'l', 'h',
- '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_',
- 'r', 'n', 'd', '_', 'l', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
- '_', 'm', 'p', 'y', 'd', '_', 'r', 'n', 'd', '_', 'l', 'l', '_', 's', '1',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'i', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'M', '2', '_', 'm', 'p', 'y', 's', 'm', 'i', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
- '_', 'm', 'p', 'y', 's', 'u', '_', 'u', 'p', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
- '_', 'm', 'p', 'y', 'u', '_', 'a', 'c', 'c', '_', 'h', 'h', '_', 's', '0',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'a', 'c', 'c',
- '_', 'h', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
- 'y', 'u', '_', 'a', 'c', 'c', '_', 'h', 'l', '_', 's', '0', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'a', 'c', 'c', '_', 'h', 'l',
- '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_',
- 'a', 'c', 'c', '_', 'l', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
- '_', 'm', 'p', 'y', 'u', '_', 'a', 'c', 'c', '_', 'l', 'h', '_', 's', '1',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'a', 'c', 'c',
- '_', 'l', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
- 'y', 'u', '_', 'a', 'c', 'c', '_', 'l', 'l', '_', 's', '1', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'h', 'h', '_', 's', '0', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'h', 'h', '_', 's',
- '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'h', 'l',
- '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_',
'h', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
'_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y',
- 'u', '_', 'l', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm',
- 'p', 'y', 'u', '_', 'l', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
- '_', 'm', 'p', 'y', 'u', '_', 'l', 'l', '_', 's', '0', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'l', 'l', '_', 's', '1', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'n', 'a', 'c', '_', 'h',
- 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u',
- '_', 'n', 'a', 'c', '_', 'h', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
- '2', '_', 'm', 'p', 'y', 'u', '_', 'n', 'a', 'c', '_', 'h', 'l', '_', 's',
- '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'n', 'a',
- 'c', '_', 'h', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm',
- 'p', 'y', 'u', '_', 'n', 'a', 'c', '_', 'l', 'h', '_', 's', '0', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'n', 'a', 'c', '_', 'l',
- 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u',
- '_', 'n', 'a', 'c', '_', 'l', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
- '2', '_', 'm', 'p', 'y', 'u', '_', 'n', 'a', 'c', '_', 'l', 'l', '_', 's',
- '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'u', 'p',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'a', 'c',
- 'c', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm',
- 'p', 'y', 'u', 'd', '_', 'a', 'c', 'c', '_', 'h', 'h', '_', 's', '1', '\000',
+ '_', 'a', 'c', 'c', '_', 's', 'a', 't', '_', 'l', 'h', '_', 's', '0', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'a', 'c', 'c',
- '_', 'h', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
- 'y', 'u', 'd', '_', 'a', 'c', 'c', '_', 'h', 'l', '_', 's', '1', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'a', 'c', 'c', '_',
- 'l', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y',
- 'u', 'd', '_', 'a', 'c', 'c', '_', 'l', 'h', '_', 's', '1', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'a', 'c', 'c', '_', 'l',
- 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u',
- 'd', '_', 'a', 'c', 'c', '_', 'l', 'l', '_', 's', '1', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'h', 'h', '_', 's', '0', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'h', 'h', '_',
- 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_',
- 'h', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y',
- 'u', 'd', '_', 'h', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'a', 'c', 'c', '_', 's',
+ 'a', 't', '_', 'l', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
- 'm', 'p', 'y', 'u', 'd', '_', 'l', 'h', '_', 's', '0', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'l', 'h', '_', 's', '1', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'l', 'l', '_',
+ 'm', 'p', 'y', '_', 'a', 'c', 'c', '_', 's', 'a', 't', '_', 'l', 'l', '_',
's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_',
- 'l', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y',
- 'u', 'd', '_', 'n', 'a', 'c', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'n', 'a', 'c', '_', 'h',
- 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u',
- 'd', '_', 'n', 'a', 'c', '_', 'h', 'l', '_', 's', '0', '\000', '_', '_', 'b',
+ 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'a', 'c',
+ 'c', '_', 's', 'a', 't', '_', 'l', 'l', '_', 's', '1', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'n', 'a', 'c', '_', 'h', 'l',
- '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd',
- '_', 'n', 'a', 'c', '_', 'l', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
- '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'n', 'a', 'c', '_', 'l', 'h', '_',
+ 'M', '2', '_', 'm', 'p', 'y', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'h', 'h', '_', 's', '1', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'h', 'l', '_', 's', '0', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'h', 'l', '_', 's', '1',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'l', 'h', '_', 's',
+ '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'l', 'h', '_',
's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_',
+ 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'l', 'l',
+ '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'l',
+ 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_',
+ 'n', 'a', 'c', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
+ '_', 'm', 'p', 'y', '_', 'n', 'a', 'c', '_', 'h', 'h', '_', 's', '1', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'n', 'a', 'c', '_', 'h',
+ 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_',
+ 'n', 'a', 'c', '_', 'h', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
+ '_', 'm', 'p', 'y', '_', 'n', 'a', 'c', '_', 'l', 'h', '_', 's', '0', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'n', 'a', 'c', '_', 'l',
+ 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_',
'n', 'a', 'c', '_', 'l', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
- '_', 'm', 'p', 'y', 'u', 'd', '_', 'n', 'a', 'c', '_', 'l', 'l', '_', 's',
+ '_', 'm', 'p', 'y', '_', 'n', 'a', 'c', '_', 'l', 'l', '_', 's', '1', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'n', 'a', 'c', '_', 's',
+ 'a', 't', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
+ 'm', 'p', 'y', '_', 'n', 'a', 'c', '_', 's', 'a', 't', '_', 'h', 'h', '_',
+ 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'n', 'a',
+ 'c', '_', 's', 'a', 't', '_', 'h', 'l', '_', 's', '0', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'M', '2', '_', 'm', 'p', 'y', '_', 'n', 'a', 'c', '_', 's', 'a', 't', '_',
+ 'h', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y',
+ '_', 'n', 'a', 'c', '_', 's', 'a', 't', '_', 'l', 'h', '_', 's', '0', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'n', 'a', 'c', '_', 's',
+ 'a', 't', '_', 'l', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
+ 'm', 'p', 'y', '_', 'n', 'a', 'c', '_', 's', 'a', 't', '_', 'l', 'l', '_',
+ 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'n', 'a',
+ 'c', '_', 's', 'a', 't', '_', 'l', 'l', '_', 's', '1', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'M', '2', '_', 'm', 'p', 'y', '_', 'r', 'n', 'd', '_', 'h', 'h', '_', 's',
+ '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'r', 'n', 'd',
+ '_', 'h', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
+ 'y', '_', 'r', 'n', 'd', '_', 'h', 'l', '_', 's', '0', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'M', '2', '_', 'm', 'p', 'y', '_', 'r', 'n', 'd', '_', 'h', 'l', '_', 's',
'1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'i', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'M', '2', '_', 'n', 'a', 'c', 'c', 'i', '\000', '_', '_', 'b', 'u',
+ 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'r', 'n', 'd',
+ '_', 'l', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
+ 'y', '_', 'r', 'n', 'd', '_', 'l', 'h', '_', 's', '1', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'M', '2', '_', 'm', 'p', 'y', '_', 'r', 'n', 'd', '_', 'l', 'l', '_', 's',
+ '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'r', 'n', 'd',
+ '_', 'l', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
+ 'y', '_', 's', 'a', 't', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'M', '2', '_', 'm', 'p', 'y', '_', 's', 'a', 't', '_', 'h', 'h', '_', 's',
+ '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 's', 'a', 't',
+ '_', 'h', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
+ 'y', '_', 's', 'a', 't', '_', 'h', 'l', '_', 's', '1', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'M', '2', '_', 'm', 'p', 'y', '_', 's', 'a', 't', '_', 'l', 'h', '_', 's',
+ '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 's', 'a', 't',
+ '_', 'l', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
+ 'y', '_', 's', 'a', 't', '_', 'l', 'l', '_', 's', '0', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'M', '2', '_', 'm', 'p', 'y', '_', 's', 'a', 't', '_', 'l', 'l', '_', 's',
+ '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 's', 'a', 't',
+ '_', 'r', 'n', 'd', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
- '2', '_', 'n', 'a', 'c', 'c', 'i', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
- 's', 'u', 'b', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'a',
- 'b', 's', 'd', 'i', 'f', 'f', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v',
- 'a', 'b', 's', 'd', 'i', 'f', 'f', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
- 'v', 'c', 'm', 'a', 'c', '_', 's', '0', '_', 's', 'a', 't', '_', 'i', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '2', '_', 'v', 'c', 'm', 'a', 'c', '_', 's', '0', '_',
- 's', 'a', 't', '_', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'c', 'm',
- 'p', 'y', '_', 's', '0', '_', 's', 'a', 't', '_', 'i', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'M', '2', '_', 'v', 'c', 'm', 'p', 'y', '_', 's', '0', '_', 's', 'a', 't',
- '_', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'c', 'm', 'p', 'y', '_',
- 's', '1', '_', 's', 'a', 't', '_', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
- 'v', 'c', 'm', 'p', 'y', '_', 's', '1', '_', 's', 'a', 't', '_', 'r', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '2', '_', 'v', 'd', 'm', 'a', 'c', 's', '_', 's', '0',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'd', 'm', 'a', 'c', 's', '_', 's',
- '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'd', 'm', 'p', 'y', 'r', 's',
- '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'd', 'm', 'p', 'y',
- 'r', 's', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'd', 'm',
- 'p', 'y', 's', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'd',
- 'm', 'p', 'y', 's', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v',
- 'm', 'a', 'c', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'm', 'a', 'c',
- '2', 'e', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'm', 'a', 'c', '2',
- 'e', 's', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'm', 'a',
- 'c', '2', 'e', 's', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v',
- 'm', 'a', 'c', '2', 's', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
- 'v', 'm', 'a', 'c', '2', 's', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
- '_', 'v', 'm', 'a', 'c', '2', 's', 'u', '_', 's', '0', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'M', '2', '_', 'v', 'm', 'a', 'c', '2', 's', 'u', '_', 's', '1', '\000', '_',
+ '2', '_', 'm', 'p', 'y', '_', 's', 'a', 't', '_', 'r', 'n', 'd', '_', 'h',
+ 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_',
+ 's', 'a', 't', '_', 'r', 'n', 'd', '_', 'h', 'l', '_', 's', '0', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'M', '2', '_', 'v', 'm', 'p', 'y', '2', 'e', 's', '_', 's', '0',
+ 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 's', 'a', 't', '_', 'r', 'n',
+ 'd', '_', 'h', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm',
+ 'p', 'y', '_', 's', 'a', 't', '_', 'r', 'n', 'd', '_', 'l', 'h', '_', 's',
+ '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 's', 'a', 't',
+ '_', 'r', 'n', 'd', '_', 'l', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
+ '2', '_', 'm', 'p', 'y', '_', 's', 'a', 't', '_', 'r', 'n', 'd', '_', 'l',
+ 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_',
+ 's', 'a', 't', '_', 'r', 'n', 'd', '_', 'l', 'l', '_', 's', '1', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'u', 'p', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'M', '2', '_', 'm', 'p', 'y', '_', 'u', 'p', '_', 's', '1', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'M', '2', '_', 'm', 'p', 'y', '_', 'u', 'p', '_', 's', '1', '_', 's',
+ 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'a',
+ 'c', 'c', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
+ 'm', 'p', 'y', 'd', '_', 'a', 'c', 'c', '_', 'h', 'h', '_', 's', '1', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'a', 'c', 'c', '_',
+ 'h', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y',
+ 'd', '_', 'a', 'c', 'c', '_', 'h', 'l', '_', 's', '1', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'a', 'c', 'c', '_', 'l', 'h', '_',
+ 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'a',
+ 'c', 'c', '_', 'l', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
+ 'm', 'p', 'y', 'd', '_', 'a', 'c', 'c', '_', 'l', 'l', '_', 's', '0', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'a', 'c', 'c', '_',
+ 'l', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y',
+ 'd', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm',
+ 'p', 'y', 'd', '_', 'h', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
+ '_', 'm', 'p', 'y', 'd', '_', 'h', 'l', '_', 's', '0', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'h', 'l', '_', 's', '1', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'l', 'h', '_', 's', '0',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'm', 'p', 'y', '2', 'e', 's', '_',
+ 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'l', 'h', '_',
+ 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'l',
+ 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd',
+ '_', 'l', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
+ 'y', 'd', '_', 'n', 'a', 'c', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'n', 'a', 'c', '_', 'h', 'h',
+ '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_',
+ 'n', 'a', 'c', '_', 'h', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
+ '_', 'm', 'p', 'y', 'd', '_', 'n', 'a', 'c', '_', 'h', 'l', '_', 's', '1',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'n', 'a', 'c',
+ '_', 'l', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
+ 'y', 'd', '_', 'n', 'a', 'c', '_', 'l', 'h', '_', 's', '1', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'n', 'a', 'c', '_', 'l', 'l',
+ '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_',
+ 'n', 'a', 'c', '_', 'l', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
+ '_', 'm', 'p', 'y', 'd', '_', 'r', 'n', 'd', '_', 'h', 'h', '_', 's', '0',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'r', 'n', 'd',
+ '_', 'h', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
+ 'y', 'd', '_', 'r', 'n', 'd', '_', 'h', 'l', '_', 's', '0', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'r', 'n', 'd', '_', 'h', 'l',
+ '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_',
+ 'r', 'n', 'd', '_', 'l', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
+ '_', 'm', 'p', 'y', 'd', '_', 'r', 'n', 'd', '_', 'l', 'h', '_', 's', '1',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'd', '_', 'r', 'n', 'd',
+ '_', 'l', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
+ 'y', 'd', '_', 'r', 'n', 'd', '_', 'l', 'l', '_', 's', '1', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'M', '2', '_', 'm', 'p', 'y', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
+ 'm', 'p', 'y', 's', 'i', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
+ 'y', 's', 'i', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 's',
+ 'm', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 's', 'u', '_',
+ 'u', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'a',
+ 'c', 'c', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
+ 'm', 'p', 'y', 'u', '_', 'a', 'c', 'c', '_', 'h', 'h', '_', 's', '1', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'a', 'c', 'c', '_',
+ 'h', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y',
+ 'u', '_', 'a', 'c', 'c', '_', 'h', 'l', '_', 's', '1', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'a', 'c', 'c', '_', 'l', 'h', '_',
+ 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'a',
+ 'c', 'c', '_', 'l', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
+ 'm', 'p', 'y', 'u', '_', 'a', 'c', 'c', '_', 'l', 'l', '_', 's', '0', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'a', 'c', 'c', '_',
+ 'l', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y',
+ 'u', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm',
+ 'p', 'y', 'u', '_', 'h', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
+ '_', 'm', 'p', 'y', 'u', '_', 'h', 'l', '_', 's', '0', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'h', 'l', '_', 's', '1', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'l', 'h', '_', 's', '0',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'l', 'h', '_',
+ 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'l',
+ 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u',
+ '_', 'l', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
+ 'y', 'u', '_', 'n', 'a', 'c', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'n', 'a', 'c', '_', 'h', 'h',
+ '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_',
+ 'n', 'a', 'c', '_', 'h', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
+ '_', 'm', 'p', 'y', 'u', '_', 'n', 'a', 'c', '_', 'h', 'l', '_', 's', '1',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'n', 'a', 'c',
+ '_', 'l', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
+ 'y', 'u', '_', 'n', 'a', 'c', '_', 'l', 'h', '_', 's', '1', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_', 'n', 'a', 'c', '_', 'l', 'l',
+ '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', '_',
+ 'n', 'a', 'c', '_', 'l', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
+ '_', 'm', 'p', 'y', 'u', '_', 'u', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
+ 'm', 'p', 'y', 'u', 'd', '_', 'a', 'c', 'c', '_', 'h', 'h', '_', 's', '0',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'a', 'c',
+ 'c', '_', 'h', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm',
+ 'p', 'y', 'u', 'd', '_', 'a', 'c', 'c', '_', 'h', 'l', '_', 's', '0', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'a', 'c', 'c',
+ '_', 'h', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p',
+ 'y', 'u', 'd', '_', 'a', 'c', 'c', '_', 'l', 'h', '_', 's', '0', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'a', 'c', 'c', '_',
+ 'l', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y',
+ 'u', 'd', '_', 'a', 'c', 'c', '_', 'l', 'l', '_', 's', '0', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'a', 'c', 'c', '_', 'l',
+ 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u',
+ 'd', '_', 'h', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm',
+ 'p', 'y', 'u', 'd', '_', 'h', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
+ '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'h', 'l', '_', 's', '0', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'h', 'l', '_', 's',
+ '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'l',
+ 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u',
+ 'd', '_', 'l', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm',
+ 'p', 'y', 'u', 'd', '_', 'l', 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
+ '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'l', 'l', '_', 's', '1', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'n', 'a', 'c', '_',
+ 'h', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y',
+ 'u', 'd', '_', 'n', 'a', 'c', '_', 'h', 'h', '_', 's', '1', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'n', 'a', 'c', '_', 'h',
+ 'l', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u',
+ 'd', '_', 'n', 'a', 'c', '_', 'h', 'l', '_', 's', '1', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'n', 'a', 'c', '_', 'l', 'h',
+ '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd',
+ '_', 'n', 'a', 'c', '_', 'l', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
+ '2', '_', 'm', 'p', 'y', 'u', 'd', '_', 'n', 'a', 'c', '_', 'l', 'l', '_',
+ 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'm', 'p', 'y', 'u', 'd', '_',
+ 'n', 'a', 'c', '_', 'l', 'l', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
+ '_', 'm', 'p', 'y', 'u', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'n', 'a',
+ 'c', 'c', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'n', 'a', 'c', 'c', 'i',
+ 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 's', 'u', 'b', 'a', 'c', 'c', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'M', '2', '_', 'v', 'a', 'b', 's', 'd', 'i', 'f', 'f', 'h',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'a', 'b', 's', 'd', 'i', 'f', 'f',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'c', 'm', 'a', 'c', '_', 's',
+ '0', '_', 's', 'a', 't', '_', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v',
+ 'c', 'm', 'a', 'c', '_', 's', '0', '_', 's', 'a', 't', '_', 'r', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'M', '2', '_', 'v', 'c', 'm', 'p', 'y', '_', 's', '0', '_', 's',
+ 'a', 't', '_', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'c', 'm', 'p',
+ 'y', '_', 's', '0', '_', 's', 'a', 't', '_', 'r', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
+ '2', '_', 'v', 'c', 'm', 'p', 'y', '_', 's', '1', '_', 's', 'a', 't', '_',
+ 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'c', 'm', 'p', 'y', '_', 's',
+ '1', '_', 's', 'a', 't', '_', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v',
+ 'd', 'm', 'a', 'c', 's', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
+ 'v', 'd', 'm', 'a', 'c', 's', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
+ '_', 'v', 'd', 'm', 'p', 'y', 'r', 's', '_', 's', '0', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'M', '2', '_', 'v', 'd', 'm', 'p', 'y', 'r', 's', '_', 's', '1', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'M', '2', '_', 'v', 'd', 'm', 'p', 'y', 's', '_', 's', '0', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'M', '2', '_', 'v', 'd', 'm', 'p', 'y', 's', '_', 's', '1',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'm', 'a', 'c', '2', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'M', '2', '_', 'v', 'm', 'a', 'c', '2', 'e', 's', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'M', '2', '_', 'v', 'm', 'a', 'c', '2', 'e', 's', '_', 's', '0', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'M', '2', '_', 'v', 'm', 'a', 'c', '2', 'e', 's', '_', 's', '1',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'm', 'a', 'c', '2', 's', '_', 's',
+ '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'm', 'a', 'c', '2', 's', '_',
+ 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'm', 'a', 'c', '2', 's',
+ 'u', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'm', 'a', 'c',
+ '2', 's', 'u', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'm',
+ 'p', 'y', '2', 'e', 's', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
+ 'v', 'm', 'p', 'y', '2', 'e', 's', '_', 's', '1', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
+ '2', '_', 'v', 'm', 'p', 'y', '2', 's', '_', 's', '0', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'M', '2', '_', 'v', 'm', 'p', 'y', '2', 's', '_', 's', '0', 'p', 'a', 'c',
+ 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'm', 'p', 'y', '2', 's', '_',
's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'm', 'p', 'y', '2', 's',
- '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'm', 'p', 'y', '2',
- 's', '_', 's', '0', 'p', 'a', 'c', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
- 'v', 'm', 'p', 'y', '2', 's', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
- '_', 'v', 'm', 'p', 'y', '2', 's', '_', 's', '1', 'p', 'a', 'c', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '2', '_', 'v', 'm', 'p', 'y', '2', 's', 'u', '_', 's',
- '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'm', 'p', 'y', '2', 's', 'u',
- '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'r', 'a', 'd', 'd',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'r', 'a', 'd', 'd', 'u', 'h',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'r', 'c', 'm', 'a', 'c', 'i', '_',
- 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'r', 'c', 'm', 'a', 'c',
- 'i', '_', 's', '0', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'r', 'c',
- 'm', 'a', 'c', 'r', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ '_', 's', '1', 'p', 'a', 'c', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v',
- 'r', 'c', 'm', 'a', 'c', 'r', '_', 's', '0', 'c', '\000', '_', '_', 'b', 'u',
+ 'm', 'p', 'y', '2', 's', 'u', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
+ '_', 'v', 'm', 'p', 'y', '2', 's', 'u', '_', 's', '1', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'M', '2', '_', 'v', 'r', 'a', 'd', 'd', 'h', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2',
+ '_', 'v', 'r', 'a', 'd', 'd', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
+ 'v', 'r', 'c', 'm', 'a', 'c', 'i', '_', 's', '0', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
- '2', '_', 'v', 'r', 'c', 'm', 'p', 'y', 'i', '_', 's', '0', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '2', '_', 'v', 'r', 'c', 'm', 'p', 'y', 'i', '_', 's', '0', 'c',
+ '2', '_', 'v', 'r', 'c', 'm', 'a', 'c', 'i', '_', 's', '0', 'c', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'M', '2', '_', 'v', 'r', 'c', 'm', 'a', 'c', 'r', '_', 's', '0',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'r', 'c', 'm', 'p', 'y', 'r', '_',
- 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'r', 'c', 'm', 'p', 'y',
- 'r', '_', 's', '0', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'r', 'c', 'm', 'a', 'c', 'r', '_',
+ 's', '0', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'r', 'c', 'm', 'p',
+ 'y', 'i', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
'_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'r', 'c',
- 'm', 'p', 'y', 's', '_', 'a', 'c', 'c', '_', 's', '1', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'M', '2', '_', 'v', 'r', 'c', 'm', 'p', 'y', 's', '_', 's', '1', '\000', '_',
+ 'm', 'p', 'y', 'i', '_', 's', '0', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_',
+ 'v', 'r', 'c', 'm', 'p', 'y', 'r', '_', 's', '0', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
+ '2', '_', 'v', 'r', 'c', 'm', 'p', 'y', 'r', '_', 's', '0', 'c', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'M', '2', '_', 'v', 'r', 'c', 'm', 'p', 'y', 's', '_', 's', '1',
- 'r', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'r', 'm', 'a', 'c', '_',
- 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'r', 'm', 'p', 'y', '_',
- 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'x', 'o', 'r', '_', 'x', 'a',
- 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'a', 'n', 'd', '_', 'a', 'n',
- 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'a', 'n', 'd', '_', 'a', 'n', 'd',
- 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'a', 'n', 'd', '_', 'o', 'r', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '4', '_', 'a', 'n', 'd', '_', 'x', 'o', 'r', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'M', '4', '_', 'c', 'm', 'p', 'y', 'i', '_', 'w', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'M', '4', '_', 'c', 'm', 'p', 'y', 'i', '_', 'w', 'h', 'c', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '4', '_', 'c', 'm', 'p', 'y', 'r', '_', 'w', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '4', '_', 'c', 'm', 'p', 'y', 'r', '_', 'w', 'h', 'c',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'M', '4', '_', 'm', 'a', 'c', '_', 'u', 'p', '_', 's',
- '1', '_', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'm', 'p', 'y',
- 'r', 'i', '_', 'a', 'd', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'm',
- 'p', 'y', 'r', 'i', '_', 'a', 'd', 'd', 'r', '\000', '_', '_', 'b', 'u', 'i',
+ 'N', '_', 'M', '2', '_', 'v', 'r', 'c', 'm', 'p', 'y', 's', '_', 'a', 'c',
+ 'c', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'r', 'c', 'm',
+ 'p', 'y', 's', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '2', '_', 'v', 'r',
+ 'c', 'm', 'p', 'y', 's', '_', 's', '1', 'r', 'p', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
+ '2', '_', 'v', 'r', 'm', 'a', 'c', '_', 's', '0', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
+ '2', '_', 'v', 'r', 'm', 'p', 'y', '_', 's', '0', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
+ '2', '_', 'x', 'o', 'r', '_', 'x', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
+ '4', '_', 'a', 'n', 'd', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4',
- '_', 'm', 'p', 'y', 'r', 'i', '_', 'a', 'd', 'd', 'r', '_', 'u', '2', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '4', '_', 'm', 'p', 'y', 'r', 'r', '_', 'a', 'd', 'd',
- 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'm', 'p', 'y', 'r', 'r', '_', 'a',
- 'd', 'd', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'n', 'a', 'c', '_', 'u',
- 'p', '_', 's', '1', '_', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ '_', 'a', 'n', 'd', '_', 'a', 'n', 'd', 'n', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4',
+ '_', 'a', 'n', 'd', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'a',
+ 'n', 'd', '_', 'x', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'c', 'm',
+ 'p', 'y', 'i', '_', 'w', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'c', 'm',
+ 'p', 'y', 'i', '_', 'w', 'h', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'c',
+ 'm', 'p', 'y', 'r', '_', 'w', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'c',
+ 'm', 'p', 'y', 'r', '_', 'w', 'h', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_',
- 'o', 'r', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'o', 'r',
- '_', 'a', 'n', 'd', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'o', 'r', '_',
- 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'o', 'r', '_', 'x', 'o', 'r',
+ 'm', 'a', 'c', '_', 'u', 'p', '_', 's', '1', '_', 's', 'a', 't', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'M', '4', '_', 'm', 'p', 'y', 'r', 'i', '_', 'a', 'd', 'd', 'i',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'M', '4', '_', 'p', 'm', 'p', 'y', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '4', '_', 'p', 'm', 'p', 'y', 'w', '_', 'a', 'c', 'c', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'M', '4', '_', 'v', 'p', 'm', 'p', 'y', 'h', '\000', '_', '_', 'b',
+ 'G', 'O', 'N', '_', 'M', '4', '_', 'm', 'p', 'y', 'r', 'i', '_', 'a', 'd',
+ 'd', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'm', 'p', 'y', 'r', 'i', '_',
+ 'a', 'd', 'd', 'r', '_', 'u', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'm',
+ 'p', 'y', 'r', 'r', '_', 'a', 'd', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4',
+ '_', 'm', 'p', 'y', 'r', 'r', '_', 'a', 'd', 'd', 'r', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'M', '4', '_', 'v', 'p', 'm', 'p', 'y', 'h', '_', 'a', 'c', 'c', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'M', '4', '_', 'v', 'r', 'm', 'p', 'y', 'e', 'h', '_', 'a', 'c',
- 'c', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'v', 'r', 'm', 'p',
- 'y', 'e', 'h', '_', 'a', 'c', 'c', '_', 's', '1', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
- '4', '_', 'v', 'r', 'm', 'p', 'y', 'e', 'h', '_', 's', '0', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '4', '_', 'v', 'r', 'm', 'p', 'y', 'e', 'h', '_', 's', '1', '\000',
+ 'M', '4', '_', 'n', 'a', 'c', '_', 'u', 'p', '_', 's', '1', '_', 's', 'a',
+ 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'o', 'r', '_', 'a', 'n', 'd', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '4', '_', 'v', 'r', 'm', 'p', 'y', 'o', 'h', '_', 'a',
- 'c', 'c', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ 'O', 'N', '_', 'M', '4', '_', 'o', 'r', '_', 'a', 'n', 'd', 'n', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'M', '4', '_', 'o', 'r', '_', 'o', 'r', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
+ '4', '_', 'o', 'r', '_', 'x', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_',
+ 'p', 'm', 'p', 'y', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'p', 'm', 'p',
+ 'y', 'w', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'v', 'p',
+ 'm', 'p', 'y', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'v', 'p', 'm', 'p',
+ 'y', 'h', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'v', 'r',
+ 'm', 'p', 'y', 'e', 'h', '_', 'a', 'c', 'c', '_', 's', '0', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'M', '4', '_', 'v', 'r', 'm', 'p', 'y', 'e', 'h', '_', 'a', 'c', 'c',
+ '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'v', 'r', 'm', 'p', 'y',
+ 'e', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
'_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'v', 'r', 'm',
- 'p', 'y', 'o', 'h', '_', 'a', 'c', 'c', '_', 's', '1', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'M', '4', '_', 'v', 'r', 'm', 'p', 'y', 'o', 'h', '_', 's', '0', '\000', '_',
+ 'p', 'y', 'e', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'v',
+ 'r', 'm', 'p', 'y', 'o', 'h', '_', 'a', 'c', 'c', '_', 's', '0', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'M', '4', '_', 'v', 'r', 'm', 'p', 'y', 'o', 'h', '_', 's', '1',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'M', '4', '_', 'x', 'o', 'r', '_', 'a', 'n', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '4', '_', 'x', 'o', 'r', '_', 'a', 'n', 'd', 'n', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'M', '4', '_', 'x', 'o', 'r', '_', 'o', 'r', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '4', '_', 'x', 'o', 'r', '_', 'x', 'a', 'c', 'c', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '5', '_', 'v', 'd', 'm', 'a', 'c', 'b', 's', 'u', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '5', '_', 'v', 'd', 'm', 'p', 'y', 'b', 's', 'u', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'M', '5', '_', 'v', 'm', 'a', 'c', 'b', 's', 'u', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'M', '5', '_', 'v', 'm', 'a', 'c', 'b', 'u', 'u', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M',
- '5', '_', 'v', 'm', 'p', 'y', 'b', 's', 'u', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '5',
- '_', 'v', 'm', 'p', 'y', 'b', 'u', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '5', '_',
- 'v', 'r', 'm', 'a', 'c', 'b', 's', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '5', '_',
- 'v', 'r', 'm', 'a', 'c', 'b', 'u', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '5', '_',
- 'v', 'r', 'm', 'p', 'y', 'b', 's', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '5', '_',
- 'v', 'r', 'm', 'p', 'y', 'b', 'u', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '6', '_',
- 'v', 'a', 'b', 's', 'd', 'i', 'f', 'f', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '6',
- '_', 'v', 'a', 'b', 's', 'd', 'i', 'f', 'f', 'u', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '2', '_', 'a', 'd', 'd', 'a', 's', 'l', '_', 'r', 'r', 'r', 'i', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'i', '_', 'p', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'i', '_', 'p', '_', 'a', 'c',
- 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'i', '_', 'p',
- '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_',
- 'i', '_', 'p', '_', 'n', 'a', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'N', '_', 'M', '4', '_', 'v', 'r', 'm', 'p', 'y', 'o', 'h', '_', 'a', 'c',
+ 'c', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'v', 'r', 'm', 'p',
+ 'y', 'o', 'h', '_', 's', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'v', 'r',
+ 'm', 'p', 'y', 'o', 'h', '_', 's', '1', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_',
+ 'x', 'o', 'r', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'x',
+ 'o', 'r', '_', 'a', 'n', 'd', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'x',
+ 'o', 'r', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '4', '_', 'x', 'o', 'r',
+ '_', 'x', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '5', '_', 'v', 'd', 'm',
+ 'a', 'c', 'b', 's', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '5', '_', 'v', 'd', 'm',
+ 'p', 'y', 'b', 's', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '5', '_', 'v', 'm', 'a',
+ 'c', 'b', 's', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '5', '_', 'v', 'm', 'a', 'c',
+ 'b', 'u', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'M', '5', '_', 'v', 'm', 'p', 'y', 'b',
+ 's', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'M', '5', '_', 'v', 'm', 'p', 'y', 'b', 'u',
+ 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'M', '5', '_', 'v', 'r', 'm', 'a', 'c', 'b', 's',
+ 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'M', '5', '_', 'v', 'r', 'm', 'a', 'c', 'b', 'u',
+ 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'M', '5', '_', 'v', 'r', 'm', 'p', 'y', 'b', 's',
+ 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'M', '5', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'u',
+ 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'M', '6', '_', 'v', 'a', 'b', 's', 'd', 'i', 'f',
+ 'f', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'M', '6', '_', 'v', 'a', 'b', 's', 'd', 'i',
+ 'f', 'f', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 'd', 'd', 'a',
+ 's', 'l', '_', 'r', 'r', 'r', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a',
- 's', 'l', '_', 'i', '_', 'p', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
- '_', 'a', 's', 'l', '_', 'i', '_', 'p', '_', 'x', 'a', 'c', 'c', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'i', '_', 'r', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'S', '2', '_', 'a', 's', 'l', '_', 'i', '_', 'r', '_', 'a', 'c', 'c',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'i', '_', 'r', '_',
- 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'i',
- '_', 'r', '_', 'n', 'a', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 's', 'l', '_', 'i', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's',
- 'l', '_', 'i', '_', 'r', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_',
- 'a', 's', 'l', '_', 'i', '_', 'r', '_', 's', 'a', 't', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '2', '_', 'a', 's', 'l', '_', 'i', '_', 'r', '_', 'x', 'a', 'c', 'c',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'i', '_', 'v', 'h',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'i', '_', 'v', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'r', '_', 'p', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'r', '_', 'p', '_', 'a',
- 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'r', '_',
- 'p', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l',
- '_', 'r', '_', 'p', '_', 'n', 'a', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_',
- 'a', 's', 'l', '_', 'r', '_', 'p', '_', 'o', 'r', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S',
- '2', '_', 'a', 's', 'l', '_', 'r', '_', 'p', '_', 'x', 'o', 'r', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'r', '_', 'r', '\000', '_', '_',
+ 'l', '_', 'i', '_', 'p', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
+ '_', 'a', 's', 'l', '_', 'i', '_', 'p', '_', 'a', 'n', 'd', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'S', '2', '_', 'a', 's', 'l', '_', 'r', '_', 'r', '_', 'a', 'c', 'c',
+ '_', 'S', '2', '_', 'a', 's', 'l', '_', 'i', '_', 'p', '_', 'n', 'a', 'c',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'r', '_', 'r', '_',
- 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'r',
- '_', 'r', '_', 'n', 'a', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's',
- 'l', '_', 'r', '_', 'r', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_',
- 'a', 's', 'l', '_', 'r', '_', 'r', '_', 's', 'a', 't', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '2', '_', 'a', 's', 'l', '_', 'r', '_', 'v', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '2', '_', 'a', 's', 'l', '_', 'r', '_', 'v', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '2', '_', 'a', 's', 'r', '_', 'i', '_', 'p', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S',
- '2', '_', 'a', 's', 'r', '_', 'i', '_', 'p', '_', 'a', 'c', 'c', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'i', '_', 'p', '_', 'a', 'n',
- 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'i', '_', 'p',
- '_', 'n', 'a', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_',
- 'i', '_', 'p', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's',
- 'r', '_', 'i', '_', 'p', '_', 'r', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
- '_', 'a', 's', 'r', '_', 'i', '_', 'p', '_', 'r', 'n', 'd', '_', 'g', 'o',
- 'o', 'd', 's', 'y', 'n', 't', 'a', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_',
- 'a', 's', 'r', '_', 'i', '_', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a',
- 's', 'r', '_', 'i', '_', 'r', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S',
- '2', '_', 'a', 's', 'r', '_', 'i', '_', 'r', '_', 'a', 'n', 'd', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'i', '_', 'r', '_', 'n', 'a',
- 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'i', '_', 'r',
- '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'i',
- '_', 'r', '_', 'r', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's',
- 'r', '_', 'i', '_', 'r', '_', 'r', 'n', 'd', '_', 'g', 'o', 'o', 'd', 's',
- 'y', 'n', 't', 'a', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r',
- '_', 'i', '_', 's', 'v', 'w', '_', 't', 'r', 'u', 'n', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '2', '_', 'a', 's', 'r', '_', 'i', '_', 'v', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '2', '_', 'a', 's', 'r', '_', 'i', '_', 'v', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '2', '_', 'a', 's', 'r', '_', 'r', '_', 'p', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S',
- '2', '_', 'a', 's', 'r', '_', 'r', '_', 'p', '_', 'a', 'c', 'c', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'r', '_', 'p', '_', 'a', 'n',
- 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'r', '_', 'p',
- '_', 'n', 'a', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_',
- 'r', '_', 'p', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's',
- 'r', '_', 'r', '_', 'p', '_', 'x', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
- '_', 'a', 's', 'r', '_', 'r', '_', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_',
- 'a', 's', 'r', '_', 'r', '_', 'r', '_', 'a', 'c', 'c', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '2', '_', 'a', 's', 'r', '_', 'r', '_', 'r', '_', 'a', 'n', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'r', '_', 'r', '_', 'n',
- 'a', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'r', '_',
- 'r', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_',
- 'r', '_', 'r', '_', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a',
- 's', 'r', '_', 'r', '_', 's', 'v', 'w', '_', 't', 'r', 'u', 'n', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'r', '_', 'v', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'r', '_', 'v', 'w', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'S', '2', '_', 'b', 'r', 'e', 'v', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
- '_', 'b', 'r', 'e', 'v', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'c', 'a',
- 'b', 'a', 'c', 'e', 'n', 'c', 'b', 'i', 'n', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
- '_', 'c', 'l', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'c', 'l', '0', 'p',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '2', '_', 'c', 'l', '1', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S',
- '2', '_', 'c', 'l', '1', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'c', 'l',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'c', 'l', 'b', 'n', 'o', 'r', 'm',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '2', '_', 'c', 'l', 'b', 'p', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '2', '_', 'c', 'l', 'r', 'b', 'i', 't', '_', 'i', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '2', '_', 'c', 'l', 'r', 'b', 'i', 't', '_', 'r', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '2', '_', 'c', 't', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'c', 't',
- '0', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'c', 't', '1', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'S', '2', '_', 'c', 't', '1', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_',
- 'd', 'e', 'i', 'n', 't', 'e', 'r', 'l', 'e', 'a', 'v', 'e', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'S', '2', '_', 'e', 'x', 't', 'r', 'a', 'c', 't', 'u', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'S', '2', '_', 'e', 'x', 't', 'r', 'a', 'c', 't', 'u', '_', 'r', 'p',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '2', '_', 'e', 'x', 't', 'r', 'a', 'c', 't', 'u',
- 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'e', 'x', 't', 'r', 'a', 'c', 't',
- 'u', 'p', '_', 'r', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'i', 'n', 's',
- 'e', 'r', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'i', 'n', 's', 'e', 'r',
- 't', '_', 'r', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'i', 'n', 's', 'e',
- 'r', 't', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'i', 'n', 's', 'e', 'r',
- 't', 'p', '_', 'r', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'i', 'n', 't',
- 'e', 'r', 'l', 'e', 'a', 'v', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l',
- 'f', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'l', '_', 'r',
- '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'l', '_', 'r', '_',
- 'p', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'l',
- '_', 'r', '_', 'p', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_',
- 'l', 's', 'l', '_', 'r', '_', 'p', '_', 'n', 'a', 'c', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '2', '_', 'l', 's', 'l', '_', 'r', '_', 'p', '_', 'o', 'r', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'S', '2', '_', 'l', 's', 'l', '_', 'r', '_', 'p', '_', 'x', 'o',
- 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'l', '_', 'r', '_', 'r',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'l', '_', 'r', '_', 'r', '_',
- 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'l', '_', 'r',
- '_', 'r', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's',
- 'l', '_', 'r', '_', 'r', '_', 'n', 'a', 'c', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
- '_', 'l', 's', 'l', '_', 'r', '_', 'r', '_', 'o', 'r', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '2', '_', 'l', 's', 'l', '_', 'r', '_', 'v', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '2', '_', 'l', 's', 'l', '_', 'r', '_', 'v', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '2', '_', 'l', 's', 'r', '_', 'i', '_', 'p', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S',
- '2', '_', 'l', 's', 'r', '_', 'i', '_', 'p', '_', 'a', 'c', 'c', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'i', '_', 'p', '_', 'a', 'n',
- 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'i', '_', 'p',
- '_', 'n', 'a', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_',
- 'i', '_', 'p', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's',
- 'r', '_', 'i', '_', 'p', '_', 'x', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S',
- '2', '_', 'l', 's', 'r', '_', 'i', '_', 'r', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
- '_', 'l', 's', 'r', '_', 'i', '_', 'r', '_', 'a', 'c', 'c', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'S', '2', '_', 'l', 's', 'r', '_', 'i', '_', 'r', '_', 'a', 'n', 'd',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'i', '_', 'r', '_',
- 'n', 'a', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'i',
- '_', 'r', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r',
- '_', 'i', '_', 'r', '_', 'x', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
- '_', 'l', 's', 'r', '_', 'i', '_', 'v', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
- '_', 'l', 's', 'r', '_', 'i', '_', 'v', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
- '_', 'l', 's', 'r', '_', 'r', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_',
- 'l', 's', 'r', '_', 'r', '_', 'p', '_', 'a', 'c', 'c', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '2', '_', 'l', 's', 'r', '_', 'r', '_', 'p', '_', 'a', 'n', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'r', '_', 'p', '_', 'n',
- 'a', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'r', '_',
- 'p', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_',
- 'r', '_', 'p', '_', 'x', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l',
- 's', 'r', '_', 'r', '_', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's',
- 'r', '_', 'r', '_', 'r', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
- '_', 'l', 's', 'r', '_', 'r', '_', 'r', '_', 'a', 'n', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'S', '2', '_', 'l', 's', 'r', '_', 'r', '_', 'r', '_', 'n', 'a', 'c',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'r', '_', 'r', '_',
+ 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'i', '_', 'p', '_',
'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'r', '_',
- 'v', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'r', '_',
- 'v', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'p', 'a', 'c', 'k', 'h', 'l',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '2', '_', 'p', 'a', 'r', 'i', 't', 'y', 'p', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'S', '2', '_', 's', 'e', 't', 'b', 'i', 't', '_', 'i', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'S', '2', '_', 's', 'e', 't', 'b', 'i', 't', '_', 'r', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'S', '2', '_', 's', 'h', 'u', 'f', 'f', 'e', 'b', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'S', '2', '_', 's', 'h', 'u', 'f', 'f', 'e', 'h', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'S', '2', '_', 's', 'h', 'u', 'f', 'f', 'o', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '2', '_', 's', 'h', 'u', 'f', 'f', 'o', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'b', 'r', 'e', 'v', '_', 's', 't', 'b', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'b', 'r', 'e', 'v', '_',
- 's', 't', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'b',
- 'r', 'e', 'v', '_', 's', 't', 'h', 'h', 'i', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'b', 'r', 'e', 'v', '_', 's', 't', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'b', 'r', 'e', 'v', '_', 's',
- 't', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 's', 't', 'o', 'r', 'e', 'w',
- '_', 'l', 'o', 'c', 'k', 'e', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 's',
- 'v', 's', 'a', 't', 'h', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 's', 'v',
- 's', 'a', 't', 'h', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 't', 'a',
- 'b', 'l', 'e', 'i', 'd', 'x', 'b', '_', 'g', 'o', 'o', 'd', 's', 'y', 'n',
- 't', 'a', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 't', 'a', 'b', 'l', 'e',
- 'i', 'd', 'x', 'd', '_', 'g', 'o', 'o', 'd', 's', 'y', 'n', 't', 'a', 'x',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '2', '_', 't', 'a', 'b', 'l', 'e', 'i', 'd', 'x',
- 'h', '_', 'g', 'o', 'o', 'd', 's', 'y', 'n', 't', 'a', 'x', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'S', '2', '_', 't', 'a', 'b', 'l', 'e', 'i', 'd', 'x', 'w', '_', 'g',
- 'o', 'o', 'd', 's', 'y', 'n', 't', 'a', 'x', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
- '_', 't', 'o', 'g', 'g', 'l', 'e', 'b', 'i', 't', '_', 'i', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'S', '2', '_', 't', 'o', 'g', 'g', 'l', 'e', 'b', 'i', 't', '_', 'r',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '2', '_', 't', 's', 't', 'b', 'i', 't', '_', 'i',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '2', '_', 't', 's', 't', 'b', 'i', 't', '_', 'r',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 'a', 'l', 'i', 'g', 'n', 'i', 'b',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 'a', 'l', 'i', 'g', 'n', 'r', 'b',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 'c', 'n', 'e', 'g', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'S', '2', '_', 'v', 'c', 'r', 'o', 't', 'a', 't', 'e', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'S', '2', '_', 'v', 'r', 'c', 'n', 'e', 'g', 'h', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'S', '2', '_', 'v', 'r', 'n', 'd', 'p', 'a', 'c', 'k', 'w', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'S', '2', '_', 'v', 'r', 'n', 'd', 'p', 'a', 'c', 'k', 'w',
- 'h', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's', 'a', 't', 'h', 'b',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's', 'a', 't', 'h', 'b', '_', 'n',
- 'o', 'p', 'a', 'c', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's', 'a',
- 't', 'h', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's', 'a', 't',
- 'h', 'u', 'b', '_', 'n', 'o', 'p', 'a', 'c', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S',
- '2', '_', 'v', 's', 'a', 't', 'w', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'i', '_',
+ 'p', '_', 'x', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's',
+ 'l', '_', 'i', '_', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l',
+ '_', 'i', '_', 'r', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_',
- 'v', 's', 'a', 't', 'w', 'h', '_', 'n', 'o', 'p', 'a', 'c', 'k', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'S', '2', '_', 'v', 's', 'a', 't', 'w', 'u', 'h', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'S', '2', '_', 'v', 's', 'a', 't', 'w', 'u', 'h', '_', 'n', 'o', 'p',
- 'a', 'c', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's', 'p', 'l', 'a',
- 't', 'r', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's', 'p', 'l', 'a',
- 't', 'r', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's', 'p', 'l', 'i',
- 'c', 'e', 'i', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's', 'p', 'l',
- 'i', 'c', 'e', 'r', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's', 'x',
- 't', 'b', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's', 'x', 't', 'h',
- 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 't', 'r', 'u', 'n', 'e', 'h',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 't', 'r', 'u', 'n', 'e', 'w',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 't', 'r', 'u', 'n', 'o', 'h',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 't', 'r', 'u', 'n', 'o', 'w',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 'z', 'x', 't', 'b', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'S', '2', '_', 'v', 'z', 'x', 't', 'h', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'S', '4', '_', 'a', 'd', 'd', 'a', 'd', 'd', 'i', '\000', '_', '_', 'b',
+ 'a', 's', 'l', '_', 'i', '_', 'r', '_', 'a', 'n', 'd', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '4', '_', 'a', 'd', 'd', 'i', '_', 'a', 's', 'l', '_', 'r', 'i', '\000',
+ 'S', '2', '_', 'a', 's', 'l', '_', 'i', '_', 'r', '_', 'n', 'a', 'c', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'S', '4', '_', 'a', 'd', 'd', 'i', '_', 'l', 's', 'r', '_',
- 'r', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_', 'a', 'n', 'd', 'i', '_', 'a',
- 's', 'l', '_', 'r', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_', 'a', 'n', 'd',
- 'i', '_', 'l', 's', 'r', '_', 'r', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_',
- 'c', 'l', 'b', 'a', 'd', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_', 'c',
- 'l', 'b', 'p', 'a', 'd', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_', 'c',
- 'l', 'b', 'p', 'n', 'o', 'r', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_', 'e',
- 'x', 't', 'r', 'a', 'c', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_', 'e', 'x',
- 't', 'r', 'a', 'c', 't', '_', 'r', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_',
- 'e', 'x', 't', 'r', 'a', 'c', 't', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_',
- 'e', 'x', 't', 'r', 'a', 'c', 't', 'p', '_', 'r', 'p', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '4', '_', 'l', 's', 'l', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_', 'n',
- 't', 's', 't', 'b', 'i', 't', '_', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_',
- 'n', 't', 's', 't', 'b', 'i', 't', '_', 'r', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4',
- '_', 'o', 'r', '_', 'a', 'n', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_',
- 'o', 'r', '_', 'a', 'n', 'd', 'i', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_',
- 'o', 'r', '_', 'o', 'r', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_', 'o', 'r',
- 'i', '_', 'a', 's', 'l', '_', 'r', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_',
- 'o', 'r', 'i', '_', 'l', 's', 'r', '_', 'r', 'i', '\000', '_', '_', 'b', 'u',
+ 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'i', '_', 'r', '_', 'o',
+ 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'i', '_', 'r',
+ '_', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_',
+ 'i', '_', 'r', '_', 'x', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_',
+ 'a', 's', 'l', '_', 'i', '_', 'v', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_',
+ 'a', 's', 'l', '_', 'i', '_', 'v', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_',
+ 'a', 's', 'l', '_', 'r', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a',
+ 's', 'l', '_', 'r', '_', 'p', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S',
- '4', '_', 'p', 'a', 'r', 'i', 't', 'y', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_',
- 's', 't', 'o', 'r', 'e', 'd', '_', 'l', 'o', 'c', 'k', 'e', 'd', '\000', '_',
+ '2', '_', 'a', 's', 'l', '_', 'r', '_', 'p', '_', 'a', 'n', 'd', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'S', '4', '_', 's', 'u', 'b', 'a', 'd', 'd', 'i', '\000', '_', '_',
+ 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'r', '_', 'p', '_', 'n', 'a',
+ 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'r', '_', 'p',
+ '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'r',
+ '_', 'p', '_', 'x', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's',
+ 'l', '_', 'r', '_', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l',
+ '_', 'r', '_', 'r', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_',
+ 'a', 's', 'l', '_', 'r', '_', 'r', '_', 'a', 'n', 'd', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'S', '2', '_', 'a', 's', 'l', '_', 'r', '_', 'r', '_', 'n', 'a', 'c', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'r', '_', 'r', '_', 'o',
+ 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_', 'r', '_', 'r',
+ '_', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_',
+ 'r', '_', 'v', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'l', '_',
+ 'r', '_', 'v', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_',
+ 'i', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'i',
+ '_', 'p', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's',
+ 'r', '_', 'i', '_', 'p', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
+ '_', 'a', 's', 'r', '_', 'i', '_', 'p', '_', 'n', 'a', 'c', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'S', '4', '_', 's', 'u', 'b', 'i', '_', 'a', 's', 'l', '_', 'r', 'i',
+ '_', 'S', '2', '_', 'a', 's', 'r', '_', 'i', '_', 'p', '_', 'o', 'r', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'i', '_', 'p', '_', 'r',
+ 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'i', '_',
+ 'p', '_', 'r', 'n', 'd', '_', 'g', 'o', 'o', 'd', 's', 'y', 'n', 't', 'a',
+ 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'i', '_', 'r',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'S', '4', '_', 's', 'u', 'b', 'i', '_', 'l', 's', 'r',
- '_', 'r', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_', 'v', 'r', 'c', 'r', 'o',
- 't', 'a', 't', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_', 'v', 'r', 'c', 'r',
- 'o', 't', 'a', 't', 'e', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4',
- '_', 'v', 'x', 'a', 'd', 'd', 's', 'u', 'b', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S',
- '4', '_', 'v', 'x', 'a', 'd', 'd', 's', 'u', 'b', 'h', 'r', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'S', '4', '_', 'v', 'x', 'a', 'd', 'd', 's', 'u', 'b', 'w', '\000', '_',
+ 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'i', '_', 'r', '_',
+ 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'i',
+ '_', 'r', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's',
+ 'r', '_', 'i', '_', 'r', '_', 'n', 'a', 'c', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
+ '_', 'a', 's', 'r', '_', 'i', '_', 'r', '_', 'o', 'r', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'S', '2', '_', 'a', 's', 'r', '_', 'i', '_', 'r', '_', 'r', 'n', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'i', '_', 'r', '_', 'r',
+ 'n', 'd', '_', 'g', 'o', 'o', 'd', 's', 'y', 'n', 't', 'a', 'x', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'S', '4', '_', 'v', 'x', 's', 'u', 'b', 'a', 'd', 'd', 'h', '\000',
+ 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'i', '_', 's', 'v', 'w', '_',
+ 't', 'r', 'u', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_',
+ 'i', '_', 'v', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_',
+ 'i', '_', 'v', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_',
+ 'r', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'r',
+ '_', 'p', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's',
+ 'r', '_', 'r', '_', 'p', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
+ '_', 'a', 's', 'r', '_', 'r', '_', 'p', '_', 'n', 'a', 'c', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'S', '2', '_', 'a', 's', 'r', '_', 'r', '_', 'p', '_', 'o', 'r', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'r', '_', 'p', '_', 'x',
+ 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'r', '_',
+ 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'r', '_', 'r',
+ '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_',
+ 'r', '_', 'r', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a',
+ 's', 'r', '_', 'r', '_', 'r', '_', 'n', 'a', 'c', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S',
+ '2', '_', 'a', 's', 'r', '_', 'r', '_', 'r', '_', 'o', 'r', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'S', '2', '_', 'a', 's', 'r', '_', 'r', '_', 'r', '_', 's', 'a', 't',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's', 'r', '_', 'r', '_', 's', 'v',
+ 'w', '_', 't', 'r', 'u', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's',
+ 'r', '_', 'r', '_', 'v', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'a', 's',
+ 'r', '_', 'r', '_', 'v', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'b', 'r',
+ 'e', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'b', 'r', 'e', 'v', 'p', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'S', '2', '_', 'c', 'l', '0', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
+ '_', 'c', 'l', '0', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'c', 'l', '1',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'S', '2', '_', 'c', 'l', '1', 'p', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'S', '2', '_', 'c', 'l', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'c', 'l',
+ 'b', 'n', 'o', 'r', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'c', 'l', 'b',
+ 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'c', 'l', 'r', 'b', 'i', 't', '_',
+ 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'c', 'l', 'r', 'b', 'i', 't', '_',
+ 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'c', 't', '0', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'S', '2', '_', 'c', 't', '0', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'c',
+ 't', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'c', 't', '1', 'p', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'S', '2', '_', 'd', 'e', 'i', 'n', 't', 'e', 'r', 'l', 'e', 'a',
+ 'v', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'e', 'x', 't', 'r', 'a', 'c',
+ 't', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'e', 'x', 't', 'r', 'a', 'c',
+ 't', 'u', '_', 'r', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'e', 'x', 't',
+ 'r', 'a', 'c', 't', 'u', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'e', 'x',
+ 't', 'r', 'a', 'c', 't', 'u', 'p', '_', 'r', 'p', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S',
+ '2', '_', 'i', 'n', 's', 'e', 'r', 't', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_',
+ 'i', 'n', 's', 'e', 'r', 't', '_', 'r', 'p', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
+ '_', 'i', 'n', 's', 'e', 'r', 't', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_',
+ 'i', 'n', 's', 'e', 'r', 't', 'p', '_', 'r', 'p', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S',
+ '2', '_', 'i', 'n', 't', 'e', 'r', 'l', 'e', 'a', 'v', 'e', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'S', '2', '_', 'l', 'f', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_',
+ 'l', 's', 'l', '_', 'r', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l',
+ 's', 'l', '_', 'r', '_', 'p', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S',
+ '2', '_', 'l', 's', 'l', '_', 'r', '_', 'p', '_', 'a', 'n', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'S', '2', '_', 'l', 's', 'l', '_', 'r', '_', 'p', '_', 'n', 'a',
+ 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'l', '_', 'r', '_', 'p',
+ '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'l', '_', 'r',
+ '_', 'p', '_', 'x', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's',
+ 'l', '_', 'r', '_', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'l',
+ '_', 'r', '_', 'r', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_',
+ 'l', 's', 'l', '_', 'r', '_', 'r', '_', 'a', 'n', 'd', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'S', '2', '_', 'l', 's', 'l', '_', 'r', '_', 'r', '_', 'n', 'a', 'c', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'l', '_', 'r', '_', 'r', '_', 'o',
+ 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'l', '_', 'r', '_', 'v',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'l', '_', 'r', '_', 'v',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'i', '_', 'p',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'i', '_', 'p', '_',
+ 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'i',
+ '_', 'p', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's',
+ 'r', '_', 'i', '_', 'p', '_', 'n', 'a', 'c', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
+ '_', 'l', 's', 'r', '_', 'i', '_', 'p', '_', 'o', 'r', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'S', '2', '_', 'l', 's', 'r', '_', 'i', '_', 'p', '_', 'x', 'a', 'c', 'c',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'i', '_', 'r', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'i', '_', 'r', '_', 'a',
+ 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'i', '_',
+ 'r', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r',
+ '_', 'i', '_', 'r', '_', 'n', 'a', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_',
+ 'l', 's', 'r', '_', 'i', '_', 'r', '_', 'o', 'r', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S',
+ '2', '_', 'l', 's', 'r', '_', 'i', '_', 'r', '_', 'x', 'a', 'c', 'c', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'i', '_', 'v', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'i', '_', 'v', 'w', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'r', '_', 'p', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'r', '_', 'p', '_', 'a', 'c',
+ 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'r', '_', 'p',
+ '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_',
+ 'r', '_', 'p', '_', 'n', 'a', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l',
+ 's', 'r', '_', 'r', '_', 'p', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
+ '_', 'l', 's', 'r', '_', 'r', '_', 'p', '_', 'x', 'o', 'r', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'S', '2', '_', 'l', 's', 'r', '_', 'r', '_', 'r', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'S', '2', '_', 'l', 's', 'r', '_', 'r', '_', 'r', '_', 'a', 'c', 'c', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'r', '_', 'r', '_', 'a',
+ 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r', '_', 'r', '_',
+ 'r', '_', 'n', 'a', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l', 's', 'r',
+ '_', 'r', '_', 'r', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l',
+ 's', 'r', '_', 'r', '_', 'v', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'l',
+ 's', 'r', '_', 'r', '_', 'v', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'm',
+ 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'p', 'a', 'c', 'k', 'h',
+ 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'p', 'a', 'r', 'i', 't', 'y', 'p',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'S', '2', '_', 's', 'e', 't', 'b', 'i', 't', '_', 'i',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'S', '2', '_', 's', 'e', 't', 'b', 'i', 't', '_', 'r',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'S', '2', '_', 's', 'h', 'u', 'f', 'f', 'e', 'b', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'S', '2', '_', 's', 'h', 'u', 'f', 'f', 'e', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'S', '2', '_', 's', 'h', 'u', 'f', 'f', 'o', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'S', '2', '_', 's', 'h', 'u', 'f', 'f', 'o', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'b', 'r', 'e', 'v', '_', 's', 't', 'b',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'b', 'r', 'e', 'v',
+ '_', 's', 't', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'b', 'r', 'e', 'v', '_', 's', 't', 'h', 'h', 'i', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'b', 'r', 'e', 'v', '_', 's', 't', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'b', 'r', 'e', 'v', '_',
+ 's', 't', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 's', 't', 'o', 'r', 'e',
+ 'w', '_', 'l', 'o', 'c', 'k', 'e', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_',
+ 's', 'v', 's', 'a', 't', 'h', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 's',
+ 'v', 's', 'a', 't', 'h', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 't',
+ 'a', 'b', 'l', 'e', 'i', 'd', 'x', 'b', '_', 'g', 'o', 'o', 'd', 's', 'y',
+ 'n', 't', 'a', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 't', 'a', 'b', 'l',
+ 'e', 'i', 'd', 'x', 'd', '_', 'g', 'o', 'o', 'd', 's', 'y', 'n', 't', 'a',
+ 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 't', 'a', 'b', 'l', 'e', 'i', 'd',
+ 'x', 'h', '_', 'g', 'o', 'o', 'd', 's', 'y', 'n', 't', 'a', 'x', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'S', '2', '_', 't', 'a', 'b', 'l', 'e', 'i', 'd', 'x', 'w', '_',
+ 'g', 'o', 'o', 'd', 's', 'y', 'n', 't', 'a', 'x', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S',
+ '2', '_', 't', 'o', 'g', 'g', 'l', 'e', 'b', 'i', 't', '_', 'i', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'S', '2', '_', 't', 'o', 'g', 'g', 'l', 'e', 'b', 'i', 't', '_',
+ 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 't', 's', 't', 'b', 'i', 't', '_',
+ 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 't', 's', 't', 'b', 'i', 't', '_',
+ 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 'a', 'l', 'i', 'g', 'n', 'i',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 'a', 'l', 'i', 'g', 'n', 'r',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 'c', 'n', 'e', 'g', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'S', '2', '_', 'v', 'c', 'r', 'o', 't', 'a', 't', 'e', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'S', '2', '_', 'v', 'r', 'c', 'n', 'e', 'g', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'S', '2', '_', 'v', 'r', 'n', 'd', 'p', 'a', 'c', 'k', 'w', 'h',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 'r', 'n', 'd', 'p', 'a', 'c', 'k',
+ 'w', 'h', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's', 'a', 't', 'h',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's', 'a', 't', 'h', 'b', '_',
+ 'n', 'o', 'p', 'a', 'c', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's',
+ 'a', 't', 'h', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's', 'a',
+ 't', 'h', 'u', 'b', '_', 'n', 'o', 'p', 'a', 'c', 'k', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'S', '2', '_', 'v', 's', 'a', 't', 'w', 'h', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2',
+ '_', 'v', 's', 'a', 't', 'w', 'h', '_', 'n', 'o', 'p', 'a', 'c', 'k', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'S', '2', '_', 'v', 's', 'a', 't', 'w', 'u', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'S', '2', '_', 'v', 's', 'a', 't', 'w', 'u', 'h', '_', 'n', 'o',
+ 'p', 'a', 'c', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's', 'p', 'l',
+ 'a', 't', 'r', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's', 'p', 'l',
+ 'a', 't', 'r', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's', 'p', 'l',
+ 'i', 'c', 'e', 'i', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's', 'p',
+ 'l', 'i', 'c', 'e', 'r', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's',
+ 'x', 't', 'b', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 's', 'x', 't',
+ 'h', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 't', 'r', 'u', 'n', 'e',
+ 'h', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 't', 'r', 'u', 'n', 'e',
+ 'w', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 't', 'r', 'u', 'n', 'o',
+ 'h', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 't', 'r', 'u', 'n', 'o',
+ 'w', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 'z', 'x', 't', 'b', 'h',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'S', '2', '_', 'v', 'z', 'x', 't', 'h', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'S', '4', '_', 'a', 'd', 'd', 'a', 'd', 'd', 'i', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'S', '4', '_', 'a', 'd', 'd', 'i', '_', 'a', 's', 'l', '_', 'r', 'i',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'S', '4', '_', 'a', 'd', 'd', 'i', '_', 'l', 's', 'r',
+ '_', 'r', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_', 'a', 'n', 'd', 'i', '_',
+ 'a', 's', 'l', '_', 'r', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_', 'a', 'n',
+ 'd', 'i', '_', 'l', 's', 'r', '_', 'r', 'i', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4',
+ '_', 'c', 'l', 'b', 'a', 'd', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_',
+ 'c', 'l', 'b', 'p', 'a', 'd', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_',
+ 'c', 'l', 'b', 'p', 'n', 'o', 'r', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_',
+ 'e', 'x', 't', 'r', 'a', 'c', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_', 'e',
+ 'x', 't', 'r', 'a', 'c', 't', '_', 'r', 'p', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4',
+ '_', 'e', 'x', 't', 'r', 'a', 'c', 't', 'p', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4',
+ '_', 'e', 'x', 't', 'r', 'a', 'c', 't', 'p', '_', 'r', 'p', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'S', '4', '_', 'l', 's', 'l', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_',
+ 'n', 't', 's', 't', 'b', 'i', 't', '_', 'i', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4',
+ '_', 'n', 't', 's', 't', 'b', 'i', 't', '_', 'r', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S',
+ '4', '_', 'o', 'r', '_', 'a', 'n', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4',
+ '_', 'o', 'r', '_', 'a', 'n', 'd', 'i', 'x', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4',
+ '_', 'o', 'r', '_', 'o', 'r', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_', 'o',
+ 'r', 'i', '_', 'a', 's', 'l', '_', 'r', 'i', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4',
+ '_', 'o', 'r', 'i', '_', 'l', 's', 'r', '_', 'r', 'i', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'S', '4', '_', 'p', 'a', 'r', 'i', 't', 'y', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4',
+ '_', 's', 't', 'o', 'r', 'e', 'd', '_', 'l', 'o', 'c', 'k', 'e', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'S', '4', '_', 's', 'u', 'b', 'a', 'd', 'd', 'i', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'S', '4', '_', 's', 'u', 'b', 'i', '_', 'a', 's', 'l', '_', 'r',
+ 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'S', '4', '_', 's', 'u', 'b', 'i', '_', 'l', 's',
+ 'r', '_', 'r', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_', 'v', 'r', 'c', 'r',
+ 'o', 't', 'a', 't', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_', 'v', 'r', 'c',
+ 'r', 'o', 't', 'a', 't', 'e', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S',
+ '4', '_', 'v', 'x', 'a', 'd', 'd', 's', 'u', 'b', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'S', '4', '_', 'v', 'x', 'a', 'd', 'd', 's', 'u', 'b', 'h', 'r', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'S', '4', '_', 'v', 'x', 'a', 'd', 'd', 's', 'u', 'b', 'w', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
'O', 'N', '_', 'S', '4', '_', 'v', 'x', 's', 'u', 'b', 'a', 'd', 'd', 'h',
- 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'S', '4', '_', 'v', 'x', 's', 'u', 'b', 'a', 'd',
- 'd', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'S', '5', '_', 'a', 's', 'r', 'h', 'u', 'b',
- '_', 'r', 'n', 'd', '_', 's', 'a', 't', '_', 'g', 'o', 'o', 'd', 's', 'y',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'S', '4', '_', 'v', 'x', 's', 'u', 'b', 'a', 'd', 'd',
+ 'h', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'S', '4', '_', 'v', 'x', 's', 'u', 'b', 'a',
+ 'd', 'd', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '5', '_', 'a', 's', 'r', 'h', 'u',
+ 'b', '_', 'r', 'n', 'd', '_', 's', 'a', 't', '_', 'g', 'o', 'o', 'd', 's',
+ 'y', 'n', 't', 'a', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '5', '_', 'a', 's', 'r',
+ 'h', 'u', 'b', '_', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '5', '_', 'p',
+ 'o', 'p', 'c', 'o', 'u', 'n', 't', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '5', '_',
+ 'v', 'a', 's', 'r', 'h', 'r', 'n', 'd', '_', 'g', 'o', 'o', 'd', 's', 'y',
'n', 't', 'a', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '5', '_', 'a', 's', 'r', 'h',
- 'u', 'b', '_', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '5', '_', 'p', 'o',
- 'p', 'c', 'o', 'u', 'n', 't', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '5', '_', 'v',
- 'a', 's', 'r', 'h', 'r', 'n', 'd', '_', 'g', 'o', 'o', 'd', 's', 'y', 'n',
- 't', 'a', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '6', '_', 'r', 'o', 'l', '_', 'i',
- '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'S', '6', '_', 'r', 'o', 'l', '_', 'i', '_',
- 'p', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '6', '_', 'r', 'o', 'l',
- '_', 'i', '_', 'p', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '6', '_',
- 'r', 'o', 'l', '_', 'i', '_', 'p', '_', 'n', 'a', 'c', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'S', '6', '_', 'r', 'o', 'l', '_', 'i', '_', 'p', '_', 'o', 'r', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'S', '6', '_', 'r', 'o', 'l', '_', 'i', '_', 'p', '_', 'x', 'a',
- 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'S', '6', '_', 'r', 'o', 'l', '_', 'i', '_',
- 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'S', '6', '_', 'r', 'o', 'l', '_', 'i', '_', 'r',
- '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '6', '_', 'r', 'o', 'l', '_',
- 'i', '_', 'r', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '6', '_', 'r',
- 'o', 'l', '_', 'i', '_', 'r', '_', 'n', 'a', 'c', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S',
- '6', '_', 'r', 'o', 'l', '_', 'i', '_', 'r', '_', 'o', 'r', '\000', '_', '_',
+ 'i', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '6', '_', 'r', 'o', 'l', '_', 'i',
+ '_', 'p', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '6', '_', 'r', 'o',
+ 'l', '_', 'i', '_', 'p', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '6',
+ '_', 'r', 'o', 'l', '_', 'i', '_', 'p', '_', 'n', 'a', 'c', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'S', '6', '_', 'r', 'o', 'l', '_', 'i', '_', 'r', '_', 'x', 'a', 'c',
- 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'S', '6', '_', 'v', 's', 'p', 'l', 'a', 't', 'r',
- 'b', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'S', '6', '_', 'v', 't', 'r', 'u', 'n', 'e',
- 'h', 'b', '_', 'p', 'p', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '6', '_', 'v', 't',
- 'r', 'u', 'n', 'o', 'h', 'b', '_', 'p', 'p', 'p', '\000', '_', '_', 'b', 'u',
+ '_', 'S', '6', '_', 'r', 'o', 'l', '_', 'i', '_', 'p', '_', 'o', 'r', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'S', '6', '_', 'r', 'o', 'l', '_', 'i', '_', 'p', '_', 'x',
+ 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '6', '_', 'r', 'o', 'l', '_', 'i',
+ '_', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'S', '6', '_', 'r', 'o', 'l', '_', 'i', '_',
+ 'r', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '6', '_', 'r', 'o', 'l',
+ '_', 'i', '_', 'r', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '6', '_',
+ 'r', 'o', 'l', '_', 'i', '_', 'r', '_', 'n', 'a', 'c', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'S', '6', '_', 'r', 'o', 'l', '_', 'i', '_', 'r', '_', 'o', 'r', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'S', '6', '_', 'r', 'o', 'l', '_', 'i', '_', 'r', '_', 'x', 'a',
+ 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'S', '6', '_', 'v', 's', 'p', 'l', 'a', 't',
+ 'r', 'b', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '6', '_', 'v', 't', 'r', 'u', 'n',
+ 'e', 'h', 'b', '_', 'p', 'p', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'S', '6', '_', 'v',
+ 't', 'r', 'u', 'n', 'o', 'h', 'b', '_', 'p', 'p', 'p', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'e', 'x', 't', 'r', 'a', 'c', 't', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'e', 'x', 't', 'r', 'a', 'c', 't', 'w', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'h', 'i', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'e', 'x', 't', 'r', 'a', 'c', 't', 'w', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'e', 'x', 't', 'r', 'a', 'c', 't', 'w', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'h', 'i', '\000', '_', '_', 'b', 'u', 'i',
+ '6', '_', 'h', 'i', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'h', 'i', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ '_', 'l', 'd', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'l', 'd', '0', '_',
+ '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'l', 'd', 'c', 'n',
+ 'p', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'l', 'd', 'c', 'n', 'p', '0',
+ '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'l', 'd', 'c',
+ 'n', 'p', 'n', 't', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'l', 'd', 'c',
+ 'n', 'p', 'n', 't', '0', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'l', 'd', 'c', 'p', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'l',
+ 'd', 'c', 'p', '0', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'l', 'd', 'c', 'p', 'n', 't', '0', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'l', 'o', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'l', 'o', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'l', 'v', 's', 'p', 'l', 'a', 't',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'l', 'v', 's', 'p', 'l', 'a', 't',
- 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'l', 'v',
- 's', 'p', 'l', 'a', 't', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'l', 'v',
- 's', 'p', 'l', 'a', 't', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'l', 'd', 'c', 'p', 'n', 't', '0', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'l', 'd', 'n', 'p', '0', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'l', 'd', 'n', 'p', '0', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'l', 'v', 's', 'p', 'l', 'a', 't', 'w', '\000', '_', '_', 'b',
+ 'V', '6', '_', 'l', 'd', 'n', 'p', 'n', 't', '0', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'l', 'd', 'n', 'p', 'n', 't', '0', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'l', 'd', 'n', 't', '0', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'l', 'v', 's', 'p', 'l', 'a', 't', 'w', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'p', 'r', 'e', 'd', '_', 'a', 'n',
- 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'p', 'r', 'e', 'd', '_', 'a', 'n',
- 'd', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'p', 'r',
- 'e', 'd', '_', 'a', 'n', 'd', '_', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 'V', '6', '_', 'l', 'd', 'n', 't', '0', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'l', 'd', 'n', 't', 'n', 't', '0', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'l', 'd', 'p', '0', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'p', 'r', 'e', 'd', '_', 'a', 'n', 'd', '_', 'n', '_', '1', '2', '8', 'B',
+ 'l', 'd', 'p', '0', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'l', 'd', 'p', 'n', 't', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'l',
+ 'd', 'p', 'n', 't', '0', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'l', 'd', 't', 'n', 'p', '0', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'l', 'd', 't', 'n', 'p', '0', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'l', 'd', 't', 'n', 'p', 'n', 't', '0', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'l', 'd', 't', 'n', 'p', 'n', 't', '0', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'l', 'd', 't', 'p', '0', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'l', 'd', 't', 'p', '0', '_', '1', '2', '8', 'B',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'p', 'r', 'e', 'd', '_', 'n', 'o', 't',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'l', 'd', 't', 'p', 'n', 't', '0', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'l', 'd', 't', 'p', 'n', 't', '0', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'l', 'd', 'u', '0', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'l', 'd', 'u', '0', '_', '1', '2', '8', 'B',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'p', 'r', 'e', 'd', '_', 'n', 'o', 't',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'l', 'o', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'l', 'o', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'l', 'v', 's', 'p', 'l', 'a', 't', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'l', 'v', 's', 'p', 'l', 'a', 't', 'b', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'l', 'v', 's', 'p', 'l', 'a', 't', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'l', 'v', 's', 'p', 'l', 'a', 't', 'h', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'l', 'v', 's', 'p', 'l',
+ 'a', 't', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'l', 'v', 's', 'p', 'l',
+ 'a', 't', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'p', 'r', 'e', 'd', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'p', 'r', 'e', 'd', '_', 'a', 'n', 'd', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'p', 'r', 'e', 'd', '_', 'a', 'n', 'd', '_', 'n',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'p', 'r', 'e', 'd', '_', 'a', 'n', 'd',
+ '_', 'n', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'p',
+ 'r', 'e', 'd', '_', 'n', 'o', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'p',
+ 'r', 'e', 'd', '_', 'n', 'o', 't', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'p', 'r', 'e', 'd', '_', 'o', 'r', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'p', 'r', 'e', 'd', '_', 'o', 'r', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'p', 'r', 'e', 'd', '_', 'o', 'r', '_',
+ 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'p', 'r', 'e', 'd', '_', 'o', 'r',
+ '_', 'n', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'p',
+ 'r', 'e', 'd', '_', 's', 'c', 'a', 'l', 'a', 'r', '2', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'p', 'r', 'e', 'd', '_', 's', 'c', 'a', 'l', 'a', 'r', '2',
'_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
'_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'p', 'r', 'e',
- 'd', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'p', 'r', 'e', 'd',
- '_', 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'p', 'r', 'e', 'd', '_', 'o', 'r', '_', 'n', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'p', 'r', 'e', 'd', '_', 'o', 'r', '_', 'n', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'p', 'r', 'e', 'd', '_', 's', 'c', 'a',
- 'l', 'a', 'r', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'p', 'r', 'e', 'd',
- '_', 's', 'c', 'a', 'l', 'a', 'r', '2', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'p', 'r', 'e', 'd', '_', 's', 'c', 'a', 'l', 'a',
- 'r', '2', 'v', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'p', 'r', 'e', 'd',
- '_', 's', 'c', 'a', 'l', 'a', 'r', '2', 'v', '2', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'p', 'r', 'e', 'd', '_', 'x', 'o', 'r',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'p', 'r', 'e', 'd', '_', 'x', 'o', 'r',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 's', 'h', 'u',
- 'f', 'f', 'e', 'q', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 's', 'h', 'u',
- 'f', 'f', 'e', 'q', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 's', 'h', 'u', 'f', 'f', 'e', 'q', 'w', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 's', 'h', 'u', 'f', 'f', 'e', 'q', 'w', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'S', '3', '2', 'b', '_', 'n', 'q',
- 'p', 'r', 'e', 'd', '_', 'a', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'S', '3', '2', 'b', '_', 'n', 'q', 'p', 'r', 'e', 'd', '_', 'a', 'i', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'S', '3', '2',
- 'b', '_', 'n', 't', '_', 'n', 'q', 'p', 'r', 'e', 'd', '_', 'a', 'i', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'S', '3', '2', 'b', '_', 'n', 't', '_',
- 'n', 'q', 'p', 'r', 'e', 'd', '_', 'a', 'i', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'S', '3', '2', 'b', '_', 'n', 't', '_',
- 'q', 'p', 'r', 'e', 'd', '_', 'a', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'S', '3', '2', 'b', '_', 'n', 't', '_', 'q', 'p', 'r', 'e', 'd', '_',
- 'a', 'i', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'S', '3', '2', 'b', '_', 'q', 'p', 'r', 'e', 'd', '_', 'a', 'i', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'S', '3', '2', 'b', '_', 'q', 'p', 'r', 'e',
- 'd', '_', 'a', 'i', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'a', 'b', 's', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a',
- 'b', 's', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'a', 'b', 's', 'b', '_', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'a', 'b', 's', 'b', '_', 's', 'a', 't', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'd', 'i', 'f', 'f',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'd', 'i', 'f',
- 'f', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'a', 'b', 's', 'd', 'i', 'f', 'f', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'a', 'b', 's', 'd', 'i', 'f', 'f', 'u', 'b', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'd', 'i', 'f',
- 'f', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'd',
- 'i', 'f', 'f', 'u', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'a', 'b', 's', 'd', 'i', 'f', 'f', 'w', '\000', '_', '_', 'b',
+ 'd', '_', 's', 'c', 'a', 'l', 'a', 'r', '2', 'v', '2', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'a', 'b', 's', 'd', 'i', 'f', 'f', 'w', '_', '1', '2',
+ 'V', '6', '_', 'p', 'r', 'e', 'd', '_', 's', 'c', 'a', 'l', 'a', 'r', '2',
+ 'v', '2', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'p',
+ 'r', 'e', 'd', '_', 'x', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'p',
+ 'r', 'e', 'd', '_', 'x', 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 's', 'h', 'u', 'f', 'f', 'e', 'q', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 's', 'h', 'u', 'f', 'f', 'e', 'q', 'h', '_', '1', '2',
'8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'h', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'h', '_', 's',
- 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'h', '_',
- 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'a', 'b', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'b',
- 's', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'a', 'b', 's', 'w', '_', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'a', 'b', 's', 'w', '_', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'a', 'd', 'd', 'b', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'b', '_', 'd', 'v', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'b', '_', 'd', 'v', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'b',
- 'n', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'b', 'n',
- 'q', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a',
- 'd', 'd', 'b', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd',
- 'b', 'q', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'a', 'd', 'd', 'b', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'a', 'd', 'd', 'b', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'b', 's', 'a', 't', '_', 'd', 'v',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'b', 's', 'a', 't',
- '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'v', '6', '_',
- 'v', 'a', 'd', 'd', 'c', 'a', 'r', 'r', 'y', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'v', '6',
- '_', 'v', 'a', 'd', 'd', 'c', 'a', 'r', 'r', 'y', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'c', 'l', 'b', 'h',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'c', 'l', 'b', 'h',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd',
- 'd', 'c', 'l', 'b', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd',
- 'd', 'c', 'l', 'b', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'a', 'd', 'd', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'a', 'd', 'd', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'a', 'd', 'd', 'h', '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'a', 'd', 'd', 'h', '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'h', 'n', 'q', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'h', 'n', 'q', '_', '1', '2',
- '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'h', 'q',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'h', 'q', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'h',
- 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'h',
- 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'a', 'd', 'd', 'h', 's', 'a', 't', '_', 'd', 'v', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'a', 'd', 'd', 'h', 's', 'a', 't', '_', 'd', 'v', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd',
- 'h', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'h', 'w',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd',
- 'd', 'h', 'w', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'a', 'd', 'd', 'h', 'w', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'b', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'b', 'h', '_', '1', '2',
- '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'b',
- 'h', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd',
- 'd', 'u', 'b', 'h', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'b', 's', 'a', 't', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'b', 's', 'a', 't',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd',
- 'd', 'u', 'b', 's', 'a', 't', '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'a', 'd', 'd', 'u', 'b', 's', 'a', 't', '_', 'd', 'v', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u',
- 'b', 'u', 'b', 'b', '_', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'a', 'd', 'd', 'u', 'b', 'u', 'b', 'b', '_', 's', 'a', 't', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u',
- 'h', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd',
- 'u', 'h', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'a', 'd', 'd', 'u', 'h', 's', 'a', 't', '_', 'd', 'v', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'h', 's', 'a', 't',
- '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'a', 'd', 'd', 'u', 'h', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'a', 'd', 'd', 'u', 'h', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'h', 'w', '_', 'a', 'c', 'c', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'h', 'w', '_', 'a',
- 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'a', 'd', 'd', 'u', 'w', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'a', 'd', 'd', 'u', 'w', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'w', 's', 'a', 't',
- '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u',
- 'w', 's', 'a', 't', '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'a', 'd', 'd', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'a', 'd', 'd', 'w', '_', 'd', 'v', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'a', 'd', 'd', 'w', '_', 'd', 'v', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'w', 'n', 'q',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'w', 'n', 'q', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd',
- 'w', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'w', 'q',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd',
- 'd', 'w', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd',
- 'd', 'w', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'a', 'd', 'd', 'w', 's', 'a', 't', '_', 'd', 'v', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'w', 's', 'a', 't', '_', 'd',
- 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a',
- 'l', 'i', 'g', 'n', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'l',
- 'i', 'g', 'n', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'a', 'l', 'i', 'g', 'n', 'b', 'i', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'a', 'l', 'i', 'g', 'n', 'b', 'i', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'a', 'n', 'd', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'a', 'n', 'd', 'n', 'q', 'r', 't', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'a', 'n', 'd', 'n', 'q', 'r', 't', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'n', 'd', 'n', 'q', 'r',
- 't', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'n',
- 'd', 'n', 'q', 'r', 't', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'n', 'd', 'q', 'r', 't', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'a', 'n', 'd', 'q', 'r', 't', '_', '1', '2',
- '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'n', 'd', 'q', 'r',
- 't', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'n',
- 'd', 'q', 'r', 't', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'a', 'n', 'd', 'v', 'n', 'q', 'v', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'a', 'n', 'd', 'v', 'n', 'q', 'v', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'n', 'd', 'v',
- 'q', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'n', 'd', 'v', 'q',
- 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a',
- 'n', 'd', 'v', 'r', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'n',
- 'd', 'v', 'r', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'a', 'n', 'd', 'v', 'r', 't', '_', 'a', 'c', 'c', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'a', 'n', 'd', 'v', 'r', 't', '_', 'a', 'c', 'c',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's',
- 'l', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'l', 'h', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'l',
- 'h', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's',
- 'l', 'h', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'a', 's', 'l', 'h', 'v', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'a', 's', 'l', 'h', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'a', 's', 'l', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'a', 's', 'l', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'a', 's', 'l', 'w', '_', 'a', 'c', 'c', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'a', 's', 'l', 'w', '_', 'a', 'c', 'c', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'l', 'w',
- 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'l', 'w', 'v', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'h', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'h',
- '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r',
- 'h', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'a', 's', 'r', 'h', 'b', 'r', 'n', 'd', 's', 'a', 't', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'h', 'b', 'r', 'n', 'd',
- 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'a', 's', 'r', 'h', 'b', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'a', 's', 'r', 'h', 'b', 's', 'a', 't', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'h', 'u', 'b', 'r',
- 'n', 'd', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's',
- 'r', 'h', 'u', 'b', 'r', 'n', 'd', 's', 'a', 't', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'h', 'u', 'b', 's',
- 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'h', 'u',
- 'b', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'a', 's', 'r', 'h', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'a', 's', 'r', 'h', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'a', 's', 'r', 'u', 'h', 'u', 'b', 'r', 'n', 'd', 's', 'a',
- 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'u', 'h', 'u',
- 'b', 'r', 'n', 'd', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'u', 'h', 'u', 'b', 's', 'a', 't',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'u', 'h', 'u', 'b',
- 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'a', 's', 'r', 'u', 'w', 'u', 'h', 'r', 'n', 'd', 's', 'a', 't', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'u', 'w', 'u', 'h', 'r',
- 'n', 'd', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'a', 's', 'r', 'u', 'w', 'u', 'h', 's', 'a', 't', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'u', 'w', 'u', 'h', 's', 'a',
- 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a',
- 's', 'r', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'w',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's',
- 'r', 'w', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a',
- 's', 'r', 'w', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'w', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'a', 's', 'r', 'w', 'h', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'w', 'h', 'r', 'n', 'd', 's',
- 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'w', 'h',
- 'r', 'n', 'd', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'a', 's', 'r', 'w', 'h', 's', 'a', 't', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'w', 'h', 's', 'a', 't', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'w',
- 'u', 'h', 'r', 'n', 'd', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'a', 's', 'r', 'w', 'u', 'h', 'r', 'n', 'd', 's', 'a', 't', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'w',
- 'u', 'h', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's',
- 'r', 'w', 'u', 'h', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'w', 'v', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'a', 's', 'r', 'w', 'v', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'a', 's', 's', 'i', 'g', 'n', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'a', 's', 's', 'i', 'g', 'n', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 's', 'i', 'g', 'n',
- 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 's', 'i', 'g', 'n',
- 'p', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a',
- 'v', 'g', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'b',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v',
- 'g', 'b', 'r', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v',
- 'g', 'b', 'r', 'n', 'd', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'a', 'v', 'g', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'a', 'v', 'g', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'a', 'v', 'g', 'h', 'r', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'a', 'v', 'g', 'h', 'r', 'n', 'd', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'u', 'b', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'u', 'b', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'u', 'b', 'r', 'n',
- 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'u', 'b', 'r',
- 'n', 'd', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'a', 'v', 'g', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v',
- 'g', 'u', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'a', 'v', 'g', 'u', 'h', 'r', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'a', 'v', 'g', 'u', 'h', 'r', 'n', 'd', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'u', 'w', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'u', 'w', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'u', 'w', 'r',
- 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'u', 'w',
- 'r', 'n', 'd', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'a', 'v', 'g', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v',
- 'g', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'a', 'v', 'g', 'w', 'r', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'a', 'v', 'g', 'w', 'r', 'n', 'd', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'c', 'l', '0', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'c', 'l', '0', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'c', 'l', '0', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'c', 'l', '0', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'c', 'o', 'm', 'b', 'i', 'n', 'e', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'c', 'o', 'm', 'b', 'i', 'n', 'e', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', '0', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'd', '0', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'd', 'd', '0', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd',
- 'd', '0', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'd', 'e', 'a', 'l', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'e',
- 'a', 'l', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'd', 'e', 'a', 'l', 'b', '4', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'd', 'e', 'a', 'l', 'b', '4', 'w', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'd', 'e', 'a', 'l', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'd', 'e', 'a', 'l', 'h', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'e', 'a', 'l', 'v', 'd', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'e', 'a', 'l', 'v', 'd', 'd', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'e', 'l',
- 't', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'e', 'l', 't', 'a',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm',
- 'p', 'y', 'b', 'u', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm',
- 'p', 'y', 'b', 'u', 's', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'd', 'm', 'p', 'y', 'b', 'u', 's', '_', 'a', 'c', 'c', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'b', 'u', 's', '_',
- 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'd', 'm', 'p', 'y', 'b', 'u', 's', '_', 'd', 'v', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'b', 'u', 's', '_', 'd', 'v', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p',
- 'y', 'b', 'u', 's', '_', 'd', 'v', '_', 'a', 'c', 'c', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'b', 'u', 's', '_', 'd', 'v', '_',
- 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'd', 'm', 'p', 'y', 'h', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'd', 'm', 'p', 'y', 'h', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 'b', '_', 'a', 'c', 'c', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 'b', '_', 'a',
- 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'd', 'm', 'p', 'y', 'h', 'b', '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'd', 'm', 'p', 'y', 'h', 'b', '_', 'd', 'v', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 'b',
- '_', 'd', 'v', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'd', 'm', 'p', 'y', 'h', 'b', '_', 'd', 'v', '_', 'a', 'c', 'c', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y',
- 'h', 'i', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm',
- 'p', 'y', 'h', 'i', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 'i', 's', 'a', 't', '_',
- 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y',
- 'h', 'i', 's', 'a', 't', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 's', 'a', 't',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 's', 'a',
- 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd',
- 'm', 'p', 'y', 'h', 's', 'a', 't', '_', 'a', 'c', 'c', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 's', 'a', 't', '_', 'a', 'c',
- 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd',
- 'm', 'p', 'y', 'h', 's', 'u', 'i', 's', 'a', 't', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 's', 'u', 'i', 's', 'a', 't', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p',
- 'y', 'h', 's', 'u', 'i', 's', 'a', 't', '_', 'a', 'c', 'c', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 's', 'u', 'i', 's', 'a',
- 't', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 's', 'u', 's', 'a', 't', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 's', 'u', 's', 'a',
- 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd',
- 'm', 'p', 'y', 'h', 's', 'u', 's', 'a', 't', '_', 'a', 'c', 'c', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 's', 'u', 's', 'a',
- 't', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 'v', 's', 'a', 't', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 'v', 's', 'a', 't', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p',
- 'y', 'h', 'v', 's', 'a', 't', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 'v', 's', 'a', 't', '_', 'a', 'c',
- 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd',
- 's', 'a', 'd', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 's',
- 'a', 'd', 'u', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'd', 's', 'a', 'd', 'u', 'h', '_', 'a', 'c', 'c', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'd', 's', 'a', 'd', 'u', 'h', '_', 'a', 'c', 'c',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q', 'b', '_', '1', '2',
- '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q', 'b', '_', 'a',
- 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q', 'b', '_', 'a',
- 'n', 'd', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'e', 'q', 'b', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e',
- 'q', 'b', '_', 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'e', 'q', 'b', '_', 'x', 'o', 'r', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'e', 'q', 'b', '_', 'x', 'o', 'r', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'e', 'q', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'e', 'q', 'h', '_', 'a', 'n', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'e', 'q', 'h', '_', 'a', 'n', 'd', '_', '1', '2',
- '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q', 'h', '_', 'o',
- 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q', 'h', '_', 'o', 'r',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q',
- 'h', '_', 'x', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q',
- 'h', '_', 'x', 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'e', 'q', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 's', 'h', 'u', 'f', 'f', 'e',
+ 'q', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 's', 'h', 'u', 'f', 'f', 'e',
'q', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'e', 'q', 'w', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'e', 'q', 'w', '_', 'a', 'n', 'd', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'e', 'q', 'w', '_', 'o', 'r', '\000', '_', '_', 'b',
+ 'S', '3', '2', 'b', '_', 'n', 'q', 'p', 'r', 'e', 'd', '_', 'a', 'i', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'S', '3', '2', 'b', '_', 'n', 'q', 'p',
+ 'r', 'e', 'd', '_', 'a', 'i', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'e', 'q', 'w', '_', 'o', 'r', '_', '1', '2', '8', 'B',
+ 'V', '6', '_', 'v', 'S', '3', '2', 'b', '_', 'n', 't', '_', 'n', 'q', 'p',
+ 'r', 'e', 'd', '_', 'a', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'S',
+ '3', '2', 'b', '_', 'n', 't', '_', 'n', 'q', 'p', 'r', 'e', 'd', '_', 'a',
+ 'i', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'S',
+ '3', '2', 'b', '_', 'n', 't', '_', 'q', 'p', 'r', 'e', 'd', '_', 'a', 'i',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q', 'w', '_', 'x', 'o', 'r',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'S', '3', '2', 'b', '_', 'n', 't',
+ '_', 'q', 'p', 'r', 'e', 'd', '_', 'a', 'i', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'S', '3', '2', 'b', '_', 'q', 'p', 'r',
+ 'e', 'd', '_', 'a', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'S', '3',
+ '2', 'b', '_', 'q', 'p', 'r', 'e', 'd', '_', 'a', 'i', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'b', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'b', '_', '1', '2', '8', 'B',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q', 'w', '_', 'x', 'o', 'r',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 'a',
- 't', 'h', 'e', 'r', 'm', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g',
- 'a', 't', 'h', 'e', 'r', 'm', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'g', 'a', 't', 'h', 'e', 'r', 'm', 'h', 'q', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 'a', 't', 'h', 'e', 'r', 'm', 'h',
- 'q', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g',
- 'a', 't', 'h', 'e', 'r', 'm', 'h', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'g', 'a', 't', 'h', 'e', 'r', 'm', 'h', 'w', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 'a', 't', 'h', 'e', 'r', 'm',
- 'h', 'w', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 'a', 't', 'h',
- 'e', 'r', 'm', 'h', 'w', 'q', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'g', 'a', 't', 'h', 'e', 'r', 'm', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'g', 'a', 't', 'h', 'e', 'r', 'm', 'w', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 'a', 't', 'h',
- 'e', 'r', 'm', 'w', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 'a',
- 't', 'h', 'e', 'r', 'm', 'w', 'q', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'g', 't', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'g', 't', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'g', 't', 'b', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'g', 't', 'b', '_', 'a', 'n', 'd', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'b', '_', 'o', 'r', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'b', '_', 'o', 'r', '_', '1', '2',
- '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'b', '_', 'x',
- 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'b', '_', 'x',
- 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'b', '_', 's', 'a',
+ 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'b', '_', 's',
+ 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'g', 't', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'h', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'h',
- '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'h',
- '_', 'a', 'n', 'd', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'g', 't', 'h', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 'a', 'b', 's', 'd', 'i', 'f', 'f', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'g', 't', 'h', '_', 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'g', 't', 'h', '_', 'x', 'o', 'r', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'g', 't', 'h', '_', 'x', 'o', 'r', '_', '1', '2',
- '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u', 'b', '\000',
+ 'v', 'a', 'b', 's', 'd', 'i', 'f', 'f', 'h', '_', '1', '2', '8', 'B', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u', 'b', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u', 'b', '_', 'a',
- 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u', 'b', '_',
- 'a', 'n', 'd', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'd', 'i', 'f', 'f', 'u',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'd', 'i', 'f',
+ 'f', 'u', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'g', 't', 'u', 'b', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'g', 't', 'u', 'b', '_', 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u', 'b', '_', 'x', 'o', 'r', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u', 'b', '_', 'x', 'o', 'r',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't',
- 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u', 'h', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u',
- 'h', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't',
- 'u', 'h', '_', 'a', 'n', 'd', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'g', 't', 'u', 'h', '_', 'o', 'r', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'g', 't', 'u', 'h', '_', 'o', 'r', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u', 'h', '_', 'x',
- 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u', 'h', '_',
- 'x', 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'g', 't', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't',
- 'u', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'g', 't', 'u', 'w', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'g', 't', 'u', 'w', '_', 'a', 'n', 'd', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u', 'w', '_', 'o', 'r', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u', 'w', '_', 'o', 'r', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u',
- 'w', '_', 'x', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't',
- 'u', 'w', '_', 'x', 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'g', 't', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'g', 't', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'g', 't', 'w', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'g', 't', 'w', '_', 'a', 'n', 'd', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'w', '_', 'o', 'r', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'g', 't', 'w', '_', 'o', 'r', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'w', '_', 'x', 'o',
- 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'w', '_', 'x', 'o',
- 'r', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'i',
- 'n', 's', 'e', 'r', 't', 'w', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'i', 'n', 's', 'e', 'r', 't', 'w', 'r', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'l', 'a', 'l', 'i', 'g', 'n', 'b', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'l', 'a', 'l', 'i', 'g', 'n', 'b', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'a', 'l', 'i',
- 'g', 'n', 'b', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'a', 'l',
- 'i', 'g', 'n', 'b', 'i', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'v', 'a', 'b', 's', 'd', 'i', 'f', 'f', 'u', 'h', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'l', 's', 'r', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'l', 's', 'r', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ '6', '_', 'v', 'a', 'b', 's', 'd', 'i', 'f', 'f', 'u', 'h', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'd', 'i',
+ 'f', 'f', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'd',
+ 'i', 'f', 'f', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'l', 's', 'r', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l',
+ '_', 'v', 'a', 'b', 's', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a',
+ 'b', 's', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'a', 'b', 's', 'h', '_', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'a', 'b', 's', 'h', '_', 's', 'a', 't', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'w', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'w', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'w', '_', 's', 'a', 't',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'b', 's', 'w', '_', 's', 'a',
+ 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a',
+ 'd', 'd', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'b',
+ '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd',
+ 'd', 'b', '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd',
+ 'd', 'b', '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'a', 'd', 'd', 'b', 'n', 'q', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'a', 'd', 'd', 'b', 'n', 'q', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'b', 'q', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'a', 'd', 'd', 'b', 'q', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'b', 's', 'a', 't', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'b', 's', 'a', 't', '_',
+ '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd',
+ 'b', 's', 'a', 't', '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'a', 'd', 'd', 'b', 's', 'a', 't', '_', 'd', 'v', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'c', 'a', 'r', 'r',
+ 'y', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd',
+ 'c', 'a', 'r', 'r', 'y', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'c', 'l', 'b', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'c', 'l', 'b', 'h', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'c',
+ 'l', 'b', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'c',
+ 'l', 'b', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'a', 'd', 'd', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd',
+ 'd', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'a', 'd', 'd', 'h', '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'a', 'd', 'd', 'h', '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'h', 'n', 'q', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'a', 'd', 'd', 'h', 'n', 'q', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'h', 'q', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'h', 'q', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'h', 's', 'a',
+ 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'h', 's', 'a',
+ 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a',
+ 'd', 'd', 'h', 's', 'a', 't', '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'a', 'd', 'd', 'h', 's', 'a', 't', '_', 'd', 'v', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'h', 'w',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'h', 'w', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'h',
+ 'w', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd',
+ 'd', 'h', 'w', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'b', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'b', 'h', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'b', 'h', '_',
+ 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u',
+ 'b', 'h', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'b', 's', 'a', 't', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'b', 's', 'a', 't', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u',
+ 'b', 's', 'a', 't', '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'a', 'd', 'd', 'u', 'b', 's', 'a', 't', '_', 'd', 'v', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'b', 'u',
+ 'b', 'b', '_', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a',
+ 'd', 'd', 'u', 'b', 'u', 'b', 'b', '_', 's', 'a', 't', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'h', 's',
+ 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'h',
+ 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'a', 'd', 'd', 'u', 'h', 's', 'a', 't', '_', 'd', 'v', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'h', 's', 'a', 't', '_', 'd',
+ 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a',
+ 'd', 'd', 'u', 'h', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd',
+ 'd', 'u', 'h', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'a', 'd', 'd', 'u', 'h', 'w', '_', 'a', 'c', 'c', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'h', 'w', '_', 'a', 'c', 'c',
+ '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd',
+ 'd', 'u', 'w', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a',
+ 'd', 'd', 'u', 'w', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'w', 's', 'a', 't', '_', 'd',
+ 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'u', 'w', 's',
+ 'a', 't', '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'a', 'd', 'd', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'a', 'd', 'd', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'a', 'd', 'd', 'w', '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'a', 'd', 'd', 'w', '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'w', 'n', 'q', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'w', 'n', 'q', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'w', 'q',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'w', 'q', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'w',
+ 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'd', 'd', 'w',
+ 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'a', 'd', 'd', 'w', 's', 'a', 't', '_', 'd', 'v', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'a', 'd', 'd', 'w', 's', 'a', 't', '_', 'd', 'v', '_',
+ '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'l', 'i',
+ 'g', 'n', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'l', 'i', 'g',
+ 'n', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'a', 'l', 'i', 'g', 'n', 'b', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'a', 'l', 'i', 'g', 'n', 'b', 'i', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'a', 'n', 'd', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'a', 'n', 'd', 'n', 'q', 'r', 't', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'a', 'n', 'd', 'n', 'q', 'r', 't', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'n', 'd', 'n', 'q', 'r', 't', '_',
+ 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'n', 'd', 'n',
+ 'q', 'r', 't', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'a', 'n', 'd', 'q', 'r', 't', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'a', 'n', 'd', 'q', 'r', 't', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'n', 'd', 'q', 'r', 't', '_',
+ 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'n', 'd', 'q',
+ 'r', 't', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'a', 'n', 'd', 'v', 'n', 'q', 'v', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'a', 'n', 'd', 'v', 'n', 'q', 'v', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'n', 'd', 'v', 'q', 'v',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'n', 'd', 'v', 'q', 'v', '_',
+ '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'n', 'd',
+ 'v', 'r', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'n', 'd', 'v',
+ 'r', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'a', 'n', 'd', 'v', 'r', 't', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'a', 'n', 'd', 'v', 'r', 't', '_', 'a', 'c', 'c', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'l', 'h',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'l', 'h', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'l', 'h', '_',
+ 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'l', 'h',
+ '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'a', 's', 'l', 'h', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'a', 's', 'l', 'h', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'a', 's', 'l', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'a', 's', 'l', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'a', 's', 'l', 'w', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'a', 's', 'l', 'w', '_', 'a', 'c', 'c', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'l', 'w', 'v', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'l', 'w', 'v', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', '_', 'i',
+ 'n', 't', 'o', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', '_',
+ 'i', 'n', 't', 'o', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'a', 's', 'r', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a',
's', 'r', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'l', 's', 'r', 'h', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l',
- 's', 'r', 'h', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'v', 'a', 's', 'r', 'h', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'l', 's', 'r', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l',
- 's', 'r', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'l', 's', 'r', 'w', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l',
- 's', 'r', 'w', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'l', 'u', 't', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l',
- 'u', 't', '4', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'l', 'u', 't', 'v', 'v', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'l', 'u', 't', 'v', 'v', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'v', 'b', '_', 'n', 'm', '\000', '_',
+ '_', 'v', 'a', 's', 'r', 'h', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'h', 'b', 'r', 'n',
+ 'd', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r',
+ 'h', 'b', 'r', 'n', 'd', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'v', 'b', '_', 'n', 'm',
+ 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'h', 'b', 's', 'a', 't', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'h', 'b', 's', 'a', 't',
'_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'u',
- 't', 'v', 'v', 'b', '_', 'o', 'r', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's',
+ 'r', 'h', 'u', 'b', 'r', 'n', 'd', 's', 'a', 't', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'a', 's', 'r', 'h', 'u', 'b', 'r', 'n', 'd', 's', 'a', 't',
+ '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's',
+ 'r', 'h', 'u', 'b', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'a', 's', 'r', 'h', 'u', 'b', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'h', 'v', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'h', 'v', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'u', 'h', 'u', 'b',
+ 'r', 'n', 'd', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a',
+ 's', 'r', 'u', 'h', 'u', 'b', 'r', 'n', 'd', 's', 'a', 't', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'u', 'h',
+ 'u', 'b', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's',
+ 'r', 'u', 'h', 'u', 'b', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'u', 'w', 'u', 'h', 'r', 'n',
+ 'd', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r',
+ 'u', 'w', 'u', 'h', 'r', 'n', 'd', 's', 'a', 't', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'u', 'w', 'u', 'h',
+ 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'u',
+ 'w', 'u', 'h', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'a', 's', 'r', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'a', 's', 'r', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'a', 's', 'r', 'w', '_', 'a', 'c', 'c', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'a', 's', 'r', 'w', '_', 'a', 'c', 'c', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'w', 'h',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'w', 'h', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'w',
+ 'h', 'r', 'n', 'd', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'a', 's', 'r', 'w', 'h', 'r', 'n', 'd', 's', 'a', 't', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'w', 'h', 's',
+ 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'w', 'h',
+ 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'a', 's', 'r', 'w', 'u', 'h', 'r', 'n', 'd', 's', 'a', 't', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'w', 'u', 'h', 'r', 'n', 'd',
+ 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'a', 's', 'r', 'w', 'u', 'h', 's', 'a', 't', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'a', 's', 'r', 'w', 'u', 'h', 's', 'a', 't', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'w', 'v',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 'r', 'w', 'v', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 's', 'i',
+ 'g', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 's', 's', 'i', 'g',
+ 'n', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a',
+ 's', 's', 'i', 'g', 'n', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a',
+ 's', 's', 'i', 'g', 'n', 'p', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'a', 'v', 'g', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'a', 'v', 'g', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'a', 'v', 'g', 'b', 'r', 'n', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'a', 'v', 'g', 'b', 'r', 'n', 'd', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'h', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'h', 'r', 'n', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'h', 'r', 'n', 'd', '_',
+ '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v', 'g',
+ 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'u', 'b',
+ '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v',
+ 'g', 'u', 'b', 'r', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a',
+ 'v', 'g', 'u', 'b', 'r', 'n', 'd', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'u', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'a', 'v', 'g', 'u', 'h', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'u', 'h', 'r', 'n', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'u', 'h', 'r', 'n', 'd',
+ '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v',
+ 'g', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'u',
+ 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'a',
+ 'v', 'g', 'u', 'w', 'r', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'a', 'v', 'g', 'u', 'w', 'r', 'n', 'd', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'w', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'a', 'v', 'g', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'w', 'r', 'n', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'a', 'v', 'g', 'w', 'r', 'n', 'd', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'c', 'l', '0', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'c', 'l', '0', 'h', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'c', 'l', '0', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'c', 'l', '0', 'w', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'c', 'o', 'm', 'b', 'i', 'n', 'e',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'c', 'o', 'm', 'b', 'i', 'n', 'e',
+ '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', '0',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', '0', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'd', '0', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'd', 'd', '0', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'd', 'e', 'a', 'l', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'd', 'e', 'a', 'l', 'b', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'd', 'e', 'a', 'l', 'b', '4', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'd', 'e', 'a', 'l', 'b', '4', 'w', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'e', 'a', 'l',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'e', 'a', 'l', 'h', '_',
+ '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'e', 'a',
+ 'l', 'v', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'e', 'a',
+ 'l', 'v', 'd', 'd', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'd', 'e', 'l', 't', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'd', 'e', 'l', 't', 'a', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'd', 'm', 'p', 'y', 'b', 'u', 's', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'd', 'm', 'p', 'y', 'b', 'u', 's', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'b', 'u', 's',
+ '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p',
+ 'y', 'b', 'u', 's', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'b', 'u', 's', '_', 'd',
+ 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'b', 'u',
+ 's', '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'd', 'm', 'p', 'y', 'b', 'u', 's', '_', 'd', 'v', '_', 'a', 'c',
+ 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'b', 'u',
+ 's', '_', 'd', 'v', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 'b', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 'b',
+ '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p',
+ 'y', 'h', 'b', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 'b', '_', 'd', 'v', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 'b', '_', 'd',
+ 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd',
+ 'm', 'p', 'y', 'h', 'b', '_', 'd', 'v', '_', 'a', 'c', 'c', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 'b', '_', 'd', 'v', '_',
+ 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'd', 'm', 'p', 'y', 'h', 'i', 's', 'a', 't', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 'i', 's', 'a', 't', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h',
+ 'i', 's', 'a', 't', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'd', 'm', 'p', 'y', 'h', 'i', 's', 'a', 't', '_', 'a', 'c', 'c', '_',
+ '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p',
+ 'y', 'h', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm',
+ 'p', 'y', 'h', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 's', 'a', 't', '_', 'a', 'c',
+ 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 's',
+ 'a', 't', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 's', 'u', 'i', 's', 'a', 't',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 's', 'u',
+ 'i', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'd', 'm', 'p', 'y', 'h', 's', 'u', 'i', 's', 'a', 't', '_', 'a',
+ 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h',
+ 's', 'u', 'i', 's', 'a', 't', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 's', 'u',
+ 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y',
+ 'h', 's', 'u', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 's', 'u', 's', 'a', 't', '_',
+ 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y',
+ 'h', 's', 'u', 's', 'a', 't', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 'v', 's',
+ 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h',
+ 'v', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'd', 'm', 'p', 'y', 'h', 'v', 's', 'a', 't', '_', 'a', 'c', 'c',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 'm', 'p', 'y', 'h', 'v', 's',
+ 'a', 't', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'd', 's', 'a', 'd', 'u', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'd', 's', 'a', 'd', 'u', 'h', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 's', 'a', 'd', 'u', 'h', '_', 'a',
+ 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'd', 's', 'a', 'd', 'u',
+ 'h', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'e', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e',
+ 'q', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'e', 'q', 'b', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'e', 'q', 'b', '_', 'a', 'n', 'd', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'e', 'q', 'b', '_', 'o', 'r', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'e', 'q', 'b', '_', 'o', 'r', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q', 'b', '_', 'x', 'o', 'r',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q', 'b', '_', 'x', 'o', 'r',
+ '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q', 'h', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q', 'h', '_', 'a',
+ 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q', 'h', '_', 'a',
+ 'n', 'd', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'e', 'q', 'h', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e',
+ 'q', 'h', '_', 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'e', 'q', 'h', '_', 'x', 'o', 'r', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'e', 'q', 'h', '_', 'x', 'o', 'r', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'e', 'q', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'e', 'q', 'w', '_', 'a', 'n', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'e', 'q', 'w', '_', 'a', 'n', 'd', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q', 'w', '_', 'o',
+ 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q', 'w', '_', 'o', 'r',
+ '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q',
+ 'w', '_', 'x', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'e', 'q',
+ 'w', '_', 'x', 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'g', 'a', 't', 'h', 'e', 'r', 'm', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'g', 'a', 't', 'h', 'e', 'r', 'm', 'h', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 'a', 't', 'h', 'e',
+ 'r', 'm', 'h', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 'a', 't',
+ 'h', 'e', 'r', 'm', 'h', 'q', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'g', 'a', 't', 'h', 'e', 'r', 'm', 'h', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'g', 'a', 't', 'h', 'e', 'r', 'm', 'h', 'w',
+ '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 'a',
+ 't', 'h', 'e', 'r', 'm', 'h', 'w', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'g', 'a', 't', 'h', 'e', 'r', 'm', 'h', 'w', 'q', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 'a', 't', 'h', 'e', 'r',
+ 'm', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 'a', 't', 'h', 'e',
+ 'r', 'm', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'g', 'a', 't', 'h', 'e', 'r', 'm', 'w', 'q', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'g', 'a', 't', 'h', 'e', 'r', 'm', 'w', 'q', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'b', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'b', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'b', '_', 'a', 'n', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'b', '_', 'a', 'n', 'd', '_',
+ '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'b',
+ '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'b', '_',
+ 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'g', 't', 'b', '_', 'x', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'g', 't', 'b', '_', 'x', 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'g', 't', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'g', 't', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'g', 't', 'h', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'g', 't', 'h', '_', 'a', 'n', 'd', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'h', '_', 'o', 'r', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'h', '_', 'o', 'r', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'h', '_', 'x',
+ 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'h', '_', 'x',
+ 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'g', 't', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u',
+ 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g',
+ 't', 'u', 'b', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'g', 't', 'u', 'b', '_', 'a', 'n', 'd', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u', 'b', '_', 'o', 'r', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u', 'b', '_', 'o', 'r', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u', 'b',
+ '_', 'x', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u',
+ 'b', '_', 'x', 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'g', 't', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'g', 't', 'u', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'g', 't', 'u', 'h', '_', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'g', 't', 'u', 'h', '_', 'a', 'n', 'd', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u', 'h', '_', 'o',
+ 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u', 'h', '_', 'o',
+ 'r', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g',
+ 't', 'u', 'h', '_', 'x', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'g', 't', 'u', 'h', '_', 'x', 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u', 'w', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'g', 't', 'u', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'g', 't', 'u', 'w', '_', 'a', 'n', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u', 'w', '_', 'a', 'n', 'd', '_',
+ '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u',
+ 'w', '_', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'u',
+ 'w', '_', 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'g', 't', 'u', 'w', '_', 'x', 'o', 'r', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'g', 't', 'u', 'w', '_', 'x', 'o', 'r', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'w', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'g', 't', 'w', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'w', '_', 'a', 'n', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'w', '_', 'a', 'n', 'd', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'w', '_',
+ 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g', 't', 'w', '_', 'o',
+ 'r', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g',
+ 't', 'w', '_', 'x', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'g',
+ 't', 'w', '_', 'x', 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'i', 'n', 's', 'e', 'r', 't', 'w', 'r', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'i', 'n', 's', 'e', 'r', 't', 'w', 'r', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'a', 'l', 'i',
+ 'g', 'n', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'a', 'l', 'i',
+ 'g', 'n', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'l', 'a', 'l', 'i', 'g', 'n', 'b', 'i', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'l', 'a', 'l', 'i', 'g', 'n', 'b', 'i', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 's', 'r', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'l', 's', 'r', 'b', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 's', 'r', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'l', 's', 'r', 'h', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'l', 's', 'r', 'h', 'v', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'l', 's', 'r', 'h', 'v', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 's', 'r', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'l', 's', 'r', 'w', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'l', 's', 'r', 'w', 'v', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'l', 's', 'r', 'w', 'v', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'u', 't', '4', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'l', 'u', 't', '4', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'v', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'v', 'b', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'v', 'b',
+ '_', 'n', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'u', 't', 'v',
+ 'v', 'b', '_', 'n', 'm', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
'6', '_', 'v', 'l', 'u', 't', 'v', 'v', 'b', '_', 'o', 'r', 'a', 'c', 'c',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'v', 'b', '_',
+ 'o', 'r', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'l', 'u', 't', 'v', 'v', 'b', '_', 'o', 'r', 'a', 'c', 'c',
+ 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'v', 'b',
+ '_', 'o', 'r', 'a', 'c', 'c', 'i', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'v', 'b', 'i', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'v', 'b', 'i', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'w',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'w', 'h',
'_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
'_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'u',
- 't', 'v', 'v', 'b', '_', 'o', 'r', 'a', 'c', 'c', 'i', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'v', 'b', '_', 'o', 'r', 'a', 'c',
- 'c', 'i', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 't', 'v', 'w', 'h', '_', 'n', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'l', 'u', 't', 'v', 'v', 'b', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'l', 'u', 't', 'v', 'v', 'b', 'i', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'w', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'w', 'h', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'w', 'h', '_',
- 'n', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'w',
- 'h', '_', 'n', 'm', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'l', 'u', 't', 'v', 'w', 'h', '_', 'o', 'r', 'a', 'c', 'c', '\000',
+ 'l', 'u', 't', 'v', 'w', 'h', '_', 'n', 'm', '_', '1', '2', '8', 'B', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'w', 'h', '_', 'o',
- 'r', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'l', 'u', 't', 'v', 'w', 'h', '_', 'o', 'r', 'a', 'c', 'c', 'i',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'w', 'h', '_',
- 'o', 'r', 'a', 'c', 'c', 'i', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'w', 'h', 'i', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'w', 'h', 'i', '_', '1', '2', '8',
+ 'r', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'u', 't',
+ 'v', 'w', 'h', '_', 'o', 'r', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'w', 'h', '_', 'o',
+ 'r', 'a', 'c', 'c', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'u',
+ 't', 'v', 'w', 'h', '_', 'o', 'r', 'a', 'c', 'c', 'i', '_', '1', '2', '8',
'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'a', 's', 'k', 'e', 'd',
- 's', 't', 'o', 'r', 'e', 'n', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'm', 'a', 's', 'k', 'e', 'd', 's', 't', 'o', 'r', 'e', 'n', 'q', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'a', 's', 'k',
- 'e', 'd', 's', 't', 'o', 'r', 'e', 'n', 't', 'n', 'q', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'm', 'a', 's', 'k', 'e', 'd', 's', 't', 'o', 'r', 'e',
- 'n', 't', 'n', 'q', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'm', 'a', 's', 'k', 'e', 'd', 's', 't', 'o', 'r', 'e', 'n', 't',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'w', 'h',
+ 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'l', 'u', 't', 'v', 'w', 'h',
+ 'i', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm',
+ 'a', 's', 'k', 'e', 'd', 's', 't', 'o', 'r', 'e', 'n', 'q', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'm', 'a', 's', 'k', 'e', 'd', 's', 't', 'o', 'r',
+ 'e', 'n', 'q', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'm', 'a', 's', 'k', 'e', 'd', 's', 't', 'o', 'r', 'e', 'n', 't', 'n',
'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'a', 's', 'k', 'e', 'd',
- 's', 't', 'o', 'r', 'e', 'n', 't', 'q', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'm', 'a', 's', 'k', 'e', 'd', 's', 't', 'o',
- 'r', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'a', 's', 'k',
- 'e', 'd', 's', 't', 'o', 'r', 'e', 'q', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'm', 'a', 'x', 'b', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'm', 'a', 'x', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'm', 'a', 'x', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'm', 'a', 'x', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'm', 'a', 'x', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'm', 'a', 'x', 'u', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'm', 'a', 'x', 'u', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'm', 'a', 'x', 'u', 'h', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'm', 'a', 'x', 'w', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'm', 'a', 'x', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'm', 'i', 'n', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'm', 'i', 'n', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'm', 'i', 'n', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'm', 'i', 'n', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'm', 'i', 'n', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'm', 'i', 'n', 'u', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'm', 'i', 'n', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'm', 'i', 'n', 'u', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'm', 'i', 'n', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'm', 'i', 'n', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'm', 'p', 'a', 'b', 'u', 's', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'm', 'p', 'a', 'b', 'u', 's', '_', '1', '2', '8', 'B', '\000',
+ 's', 't', 'o', 'r', 'e', 'n', 't', 'n', 'q', '_', '1', '2', '8', 'B', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a', 'b', 'u', 's', '_', 'a',
- 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a', 'b', 'u',
- 's', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'm', 'p', 'a', 'b', 'u', 's', 'v', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'm', 'p', 'a', 'b', 'u', 's', 'v', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a', 'b', 'u', 'u', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a', 'b', 'u', 'u', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a', 'b',
- 'u', 'u', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'a', 's', 'k', 'e', 'd', 's', 't',
+ 'o', 'r', 'e', 'n', 't', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm',
- 'p', 'a', 'b', 'u', 'u', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000',
+ 'a', 's', 'k', 'e', 'd', 's', 't', 'o', 'r', 'e', 'n', 't', 'q', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'a', 's', 'k',
+ 'e', 'd', 's', 't', 'o', 'r', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'm', 'a', 's', 'k', 'e', 'd', 's', 't', 'o', 'r', 'e', 'q', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'a', 'x', 'b',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'a', 'x', 'b', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'a', 'x', 'h', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a', 'b', 'u', 'u', 'v', '\000',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'a', 'x', 'h', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'a', 'x', 'u', 'b', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a', 'b', 'u', 'u', 'v', '_',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'a', 'x', 'u', 'b', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'a', 'x', 'u', 'h',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'a', 'x', 'u', 'h', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'a', 'x', 'w',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'a', 'x', 'w', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'i', 'n', 'b', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'i', 'n', 'b', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'i', 'n', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'm', 'i', 'n', 'h', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'i', 'n', 'u', 'b', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'm', 'i', 'n', 'u', 'b', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'i', 'n', 'u', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'i', 'n', 'u', 'h', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'i', 'n', 'w', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'i', 'n', 'w', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a', 'b', 'u', 's',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a', 'b', 'u', 's', '_',
'1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a',
- 'h', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a', 'h', 'b',
+ 'b', 'u', 's', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'm', 'p', 'a', 'b', 'u', 's', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a', 'b', 'u', 's', 'v',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a', 'b', 'u', 's', 'v',
'_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
'_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p',
- 'a', 'h', 'b', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'a', 'b', 'u', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a',
+ 'b', 'u', 'u', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'm', 'p', 'a', 'b', 'u', 'u', '_', 'a', 'c', 'c', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'm', 'p', 'a', 'b', 'u', 'u', '_', 'a', 'c', 'c', '_',
+ '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a',
+ 'b', 'u', 'u', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a',
+ 'b', 'u', 'u', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'm', 'p', 'a', 'h', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'm', 'p', 'a', 'h', 'b', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000',
+ 'm', 'p', 'a', 'h', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'm', 'p', 'a', 'h', 'b', '_', 'a', 'c', 'c', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'm', 'p', 'a', 'h', 'b', '_', 'a', 'c', 'c', '_',
+ '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a',
+ 'h', 'h', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p',
+ 'a', 'h', 'h', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'm', 'p', 'a', 'u', 'h', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'm', 'p', 'a', 'u', 'h', 'b', '_', '1', '2', '8', 'B', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a', 'h', 'h', 's', 'a', 't',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a', 'h', 'h', 's', 'a',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a', 'u', 'h', 'b', '_', 'a',
+ 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a', 'u', 'h',
+ 'b', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'm', 'p', 'a', 'u', 'h', 'u', 'h', 's', 'a', 't', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'a', 'u', 'h', 'u', 'h', 's', 'a',
't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm',
- 'p', 'a', 'u', 'h', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p',
- 'a', 'u', 'h', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'p', 's', 'u', 'h', 'u', 'h', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'm', 'p', 'a', 'u', 'h', 'b', '_', 'a', 'c', 'c', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'm', 'p', 'a', 'u', 'h', 'b', '_', 'a', 'c', 'c',
+ '_', 'v', 'm', 'p', 's', 'u', 'h', 'u', 'h', 's', 'a', 't', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'b', 'u',
+ 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'b', 'u', 's',
'_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
'_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p',
- 'a', 'u', 'h', 'u', 'h', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 'y', 'b', 'u', 's', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'm', 'p', 'a', 'u', 'h', 'u', 'h', 's', 'a', 't', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 's', 'u', 'h', 'u',
- 'h', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 's',
- 'u', 'h', 'u', 'h', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'b', 'u', 's', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'm', 'p', 'y', 'b', 'u', 's', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'b', 'u', 's', '_',
- 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'b',
- 'u', 's', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'm', 'p', 'y', 'b', 'u', 's', 'v', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'm', 'p', 'y', 'b', 'u', 's', 'v', '_', '1', '2', '8',
+ 'v', 'm', 'p', 'y', 'b', 'u', 's', '_', 'a', 'c', 'c', '_', '1', '2', '8',
'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'b', 'u', 's',
- 'v', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p',
- 'y', 'b', 'u', 's', 'v', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'b', 'v', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'b', 'v', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'b', 'v', '_', 'a',
- 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'b', 'u', 's',
+ 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm',
+ 'p', 'y', 'b', 'u', 's', 'v', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'm', 'p', 'y', 'b', 'u', 's', 'v', '_', 'a', 'c', 'c', '_',
+ '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y',
+ 'b', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'b', 'v',
- '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'm', 'p', 'y', 'e', 'w', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'm', 'p', 'y', 'e', 'w', 'u', 'h', '_', '1', '2', '8', 'B', '\000',
+ '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p',
+ 'y', 'b', 'v', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'm', 'p', 'y', 'b', 'v', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'e', 'w', 'u', 'h', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'e', 'w', 'u', 'h', '_',
- '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'e', 'w',
- 'u', 'h', '_', '6', '4', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'm', 'p', 'y', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'm', 'p', 'y', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'm', 'p', 'y', 'h', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'm', 'p', 'y', 'h', '_', 'a', 'c', 'c', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'h', 's', 'a',
- 't', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p',
- 'y', 'h', 's', 'a', 't', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'h', 's', 'r', 's', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'h', 's', 'r', 's', '_',
'1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y',
- 'h', 's', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'h',
- 's', 's', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'e', 'w', 'u', 'h', '_', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'm', 'p', 'y', 'h', 'u', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm',
- 'p', 'y', 'h', 'u', 's', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'm', 'p', 'y', 'h', 'u', 's', '_', 'a', 'c', 'c', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'h', 'u', 's', '_', 'a', 'c',
+ 'm', 'p', 'y', 'e', 'w', 'u', 'h', '_', '6', '4', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'h', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'h', '_', 'a', 'c', 'c',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'h', '_', 'a', 'c',
'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm',
- 'p', 'y', 'h', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y',
- 'h', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'm', 'p', 'y', 'h', 'v', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'm', 'p', 'y', 'h', 'v', '_', 'a', 'c', 'c', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'h', 'v', 's',
- 'r', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'h', 'v',
- 's', 'r', 's', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'm', 'p', 'y', 'i', 'e', 'o', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'm', 'p', 'y', 'i', 'e', 'o', 'h', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'e', 'w', 'h', '_', 'a',
- 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'e',
- 'w', 'h', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'e', 'w', 'u', 'h', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'e', 'w', 'u', 'h', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i',
- 'e', 'w', 'u', 'h', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'm', 'p', 'y', 'i', 'e', 'w', 'u', 'h', '_', 'a', 'c', 'c', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'h', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y',
- 'i', 'h', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm',
- 'p', 'y', 'i', 'h', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'h', 'b', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'h', 'b', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'h', 'b',
- '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y',
- 'i', 'h', 'b', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'o', 'w', 'h', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'o', 'w', 'h', '_', '1', '2',
- '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'w',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'w', 'b',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p',
- 'y', 'i', 'w', 'b', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'm', 'p', 'y', 'i', 'w', 'b', '_', 'a', 'c', 'c', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'w', 'h',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'w', 'h', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y',
- 'i', 'w', 'h', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'm', 'p', 'y', 'i', 'w', 'h', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'w', 'u', 'b',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'w', 'u', 'b',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p',
- 'y', 'i', 'w', 'u', 'b', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'm', 'p', 'y', 'i', 'w', 'u', 'b', '_', 'a', 'c', 'c', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'o',
- 'w', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'o', 'w',
- 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm',
- 'p', 'y', 'o', 'w', 'h', '_', '6', '4', '_', 'a', 'c', 'c', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'o', 'w', 'h', '_', '6', '4', '_',
- 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'm', 'p', 'y', 'o', 'w', 'h', '_', 'r', 'n', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'm', 'p', 'y', 'o', 'w', 'h', '_', 'r', 'n', 'd', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y',
- 'o', 'w', 'h', '_', 'r', 'n', 'd', '_', 's', 'a', 'c', 'c', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'o', 'w', 'h', '_', 'r', 'n', 'd',
- '_', 's', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'p', 'y', 'h', 's', 'a', 't', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'm', 'p', 'y', 'o', 'w', 'h', '_', 's', 'a', 'c', 'c', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'o', 'w', 'h', '_', 's',
- 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ '6', '_', 'v', 'm', 'p', 'y', 'h', 's', 'a', 't', '_', 'a', 'c', 'c', '_',
+ '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y',
+ 'h', 's', 'r', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y',
+ 'h', 's', 'r', 's', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'm', 'p', 'y', 'h', 's', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'm', 'p', 'y', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm',
- 'p', 'y', 'u', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'm', 'p', 'y', 'u', 'b', '_', 'a', 'c', 'c', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'b', '_', 'a', 'c', 'c', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'u',
- 'b', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'b',
- 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm',
- 'p', 'y', 'u', 'b', 'v', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'm', 'p', 'y', 'u', 'b', 'v', '_', 'a', 'c', 'c', '_', '1', '2',
- '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'h',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'h', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'u',
- 'h', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p',
- 'y', 'u', 'h', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'v', 'm', 'p', 'y', 'h', 's', 's', '_', '1', '2', '8', 'B', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'h', 'e', '\000', '_', '_', 'b',
+ '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'h', 'u', 's', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'h', 'e', '_', '1', '2', '8', 'B',
+ 'V', '6', '_', 'v', 'm', 'p', 'y', 'h', 'u', 's', '_', '1', '2', '8', 'B',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'h', 'e', '_',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'h', 'u', 's', '_',
'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'u',
- 'h', 'e', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'h',
+ 'u', 's', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'h', 'v', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'm', 'p', 'y', 'u', 'h', 'v', '_', '1', '2', '8', 'B', '\000',
+ 'V', '6', '_', 'v', 'm', 'p', 'y', 'h', 'v', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'm', 'p', 'y', 'h', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'h', 'v', '_', 'a', 'c', 'c', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'h', 'v', '_', 'a',
- 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'h',
- 'v', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'm', 'u', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'h', 'v', '_', 'a', 'c',
+ 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm',
- 'u', 'x', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'p', 'y', 'h', 'v', 's', 'r', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'n', 'a', 'v', 'g', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'n', 'a',
- 'v', 'g', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 'm', 'p', 'y', 'h', 'v', 's', 'r', 's', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'e', 'o', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'e', 'o', 'h', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i',
+ 'e', 'w', 'h', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'm', 'p', 'y', 'i', 'e', 'w', 'h', '_', 'a', 'c', 'c', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'e', 'w',
+ 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'e',
+ 'w', 'u', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'n', 'a', 'v', 'g', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'n',
- 'a', 'v', 'g', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'v', 'm', 'p', 'y', 'i', 'e', 'w', 'u', 'h', '_', 'a', 'c', 'c', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'e', 'w', 'u', 'h', '_',
+ 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'm', 'p', 'y', 'i', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm',
+ 'p', 'y', 'i', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'n', 'a', 'v', 'g', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'n', 'a', 'v', 'g', 'u', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'n', 'a', 'v', 'g', 'w', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'n', 'a', 'v', 'g', 'w', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'n', 'o', 'r', 'm', 'a', 'm', 't', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'n', 'o', 'r', 'm', 'a', 'm', 't', 'h',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'n', 'o',
- 'r', 'm', 'a', 'm', 't', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'n',
- 'o', 'r', 'm', 'a', 'm', 't', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'n', 'o', 't', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'n', 'o', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ '_', 'v', 'm', 'p', 'y', 'i', 'h', '_', 'a', 'c', 'c', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'h', '_', 'a', 'c', 'c', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i',
+ 'h', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'h',
+ 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm',
+ 'p', 'y', 'i', 'h', 'b', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'o', 'r', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p', 'a', 'c',
- 'k', 'e', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p', 'a', 'c', 'k',
- 'e', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ '_', 'v', 'm', 'p', 'y', 'i', 'h', 'b', '_', 'a', 'c', 'c', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'o',
+ 'w', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'o',
+ 'w', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'p', 'a', 'c', 'k', 'e', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p',
- 'a', 'c', 'k', 'e', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'm', 'p', 'y', 'i', 'w', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm',
+ 'p', 'y', 'i', 'w', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'p', 'a', 'c', 'k', 'h', 'b', '_', 's', 'a', 't', '\000', '_',
+ '6', '_', 'v', 'm', 'p', 'y', 'i', 'w', 'b', '_', 'a', 'c', 'c', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'p', 'a', 'c', 'k', 'h', 'b', '_', 's', 'a',
- 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p',
- 'a', 'c', 'k', 'h', 'u', 'b', '_', 's', 'a', 't', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'p', 'a', 'c', 'k', 'h', 'u', 'b', '_', 's', 'a', 't', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p', 'a', 'c',
- 'k', 'o', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p', 'a', 'c', 'k',
- 'o', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'p', 'a', 'c', 'k', 'o', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p',
- 'a', 'c', 'k', 'o', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'p', 'a', 'c', 'k', 'w', 'h', '_', 's', 'a', 't', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'p', 'a', 'c', 'k', 'w', 'h', '_', 's', 'a',
- 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p',
- 'a', 'c', 'k', 'w', 'u', 'h', '_', 's', 'a', 't', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 'p', 'a', 'c', 'k', 'w', 'u', 'h', '_', 's', 'a', 't', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p', 'o', 'p',
- 'c', 'o', 'u', 'n', 't', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p',
- 'o', 'p', 'c', 'o', 'u', 'n', 't', 'h', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'p', 'r', 'e', 'f', 'i', 'x', 'q', 'b', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'p', 'r', 'e', 'f', 'i', 'x', 'q', 'b',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p', 'r',
- 'e', 'f', 'i', 'x', 'q', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p',
- 'r', 'e', 'f', 'i', 'x', 'q', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'w', 'b', '_', 'a', 'c',
+ 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm',
+ 'p', 'y', 'i', 'w', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p',
+ 'y', 'i', 'w', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'm', 'p', 'y', 'i', 'w', 'h', '_', 'a', 'c', 'c', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'p', 'r', 'e', 'f', 'i', 'x', 'q', 'w', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'p', 'r', 'e', 'f', 'i', 'x', 'q', 'w', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'd', 'e',
- 'l', 't', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'd', 'e', 'l',
- 't', 'a', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'r', 'm', 'p', 'y', 'b', 'u', 'b', '_', 'r', 't', 't', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'u', 'b', '_', 'r', 't', 't',
+ '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'w', 'h', '_', 'a', 'c', 'c',
'_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm',
- 'p', 'y', 'b', 'u', 'b', '_', 'r', 't', 't', '_', 'a', 'c', 'c', '\000', '_',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p',
+ 'y', 'i', 'w', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p',
+ 'y', 'i', 'w', 'u', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'm', 'p', 'y', 'i', 'w', 'u', 'b', '_', 'a', 'c', 'c', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'i', 'w', 'u', 'b', '_',
+ 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'm', 'p', 'y', 'o', 'w', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'm', 'p', 'y', 'o', 'w', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'm', 'p', 'y', 'o', 'w', 'h', '_', '6', '4', '_', 'a',
+ 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'o', 'w',
+ 'h', '_', '6', '4', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'u', 'b', '_', 'r',
- 't', 't', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'o', 'w', 'h', '_', 'r', 'n',
+ 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'o', 'w', 'h',
+ '_', 'r', 'n', 'd', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'm', 'p', 'y', 'o', 'w', 'h', '_', 'r', 'n', 'd', '_', 's', 'a',
+ 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'o', 'w',
+ 'h', '_', 'r', 'n', 'd', '_', 's', 'a', 'c', 'c', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'o', 'w', 'h', '_',
+ 's', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y',
+ 'o', 'w', 'h', '_', 's', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'b', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'u', 's', '\000', '_', '_', 'b',
+ 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'b', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'b', '_', 'a', 'c',
+ 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'b', '_',
+ 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'm', 'p', 'y', 'u', 'b', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'm', 'p', 'y', 'u', 'b', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'u', 's', '_', '1', '2', '8',
+ 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'b', 'v', '_', 'a', 'c', 'c', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'b', 'v', '_', 'a',
+ 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'm', 'p', 'y', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p',
+ 'y', 'u', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'm', 'p', 'y', 'u', 'h', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'm', 'p', 'y', 'u', 'h', '_', 'a', 'c', 'c', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'h',
+ 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'h', 'e',
+ '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p',
+ 'y', 'u', 'h', 'e', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'm', 'p', 'y', 'u', 'h', 'e', '_', 'a', 'c', 'c', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'h', 'v',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y', 'u', 'h', 'v', '_',
+ '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'p', 'y',
+ 'u', 'h', 'v', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'm', 'p', 'y', 'u', 'h', 'v', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'm', 'u', 'x', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'm', 'u', 'x', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'n', 'a', 'v', 'g', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'n', 'a', 'v', 'g', 'b', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'n', 'a', 'v', 'g', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'n', 'a', 'v', 'g', 'h', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'n', 'a', 'v', 'g', 'u', 'b', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'n', 'a', 'v', 'g', 'u', 'b', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'n', 'a', 'v', 'g', 'w',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'n', 'a', 'v', 'g', 'w', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'n', 'o', 'r', 'm',
+ 'a', 'm', 't', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'n', 'o', 'r',
+ 'm', 'a', 'm', 't', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'n', 'o', 'r', 'm', 'a', 'm', 't', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'n', 'o', 'r', 'm', 'a', 'm', 't', 'w', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'n', 'o', 't', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 'n', 'o', 't', '_', '1', '2', '8', 'B', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'p', 'a', 'c', 'k', 'e', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'p', 'a', 'c', 'k', 'e', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'p', 'a', 'c', 'k', 'e', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'p', 'a', 'c', 'k', 'e', 'h', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p', 'a', 'c', 'k', 'h', 'b', '_',
+ 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p', 'a', 'c', 'k',
+ 'h', 'b', '_', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'p', 'a', 'c', 'k', 'h', 'u', 'b', '_', 's', 'a', 't',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p', 'a', 'c', 'k', 'h', 'u', 'b',
+ '_', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'p', 'a', 'c', 'k', 'o', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'p', 'a', 'c', 'k', 'o', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'p', 'a', 'c', 'k', 'o', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'p', 'a', 'c', 'k', 'o', 'h', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p', 'a', 'c', 'k', 'w', 'h', '_',
+ 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p', 'a', 'c', 'k',
+ 'w', 'h', '_', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'p', 'a', 'c', 'k', 'w', 'u', 'h', '_', 's', 'a', 't',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p', 'a', 'c', 'k', 'w', 'u', 'h',
+ '_', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'p', 'o', 'p', 'c', 'o', 'u', 'n', 't', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'p', 'o', 'p', 'c', 'o', 'u', 'n', 't', 'h', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p', 'r', 'e', 'f',
+ 'i', 'x', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p', 'r', 'e',
+ 'f', 'i', 'x', 'q', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'p', 'r', 'e', 'f', 'i', 'x', 'q', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'p', 'r', 'e', 'f', 'i', 'x', 'q', 'h', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p', 'r', 'e', 'f', 'i',
+ 'x', 'q', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'p', 'r', 'e', 'f',
+ 'i', 'x', 'q', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'r', 'd', 'e', 'l', 't', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'r', 'd', 'e', 'l', 't', 'a', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'u', 'b', '_', 'r', 't',
+ 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'u',
+ 'b', '_', 'r', 't', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'u', 'b', '_', 'r', 't', 't', '_',
+ 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y',
+ 'b', 'u', 'b', '_', 'r', 't', 't', '_', 'a', 'c', 'c', '_', '1', '2', '8',
'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'u',
- 's', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm',
- 'p', 'y', 'b', 'u', 's', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'u', 's', 'i',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'u', 's',
- 'i', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'u',
+ 's', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r',
- 'm', 'p', 'y', 'b', 'u', 's', 'i', '_', 'a', 'c', 'c', '\000', '_', '_', 'b',
+ 'm', 'p', 'y', 'b', 'u', 's', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'u', 's', '_', 'a', 'c', 'c', '_',
+ '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p',
+ 'y', 'b', 'u', 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm',
+ 'p', 'y', 'b', 'u', 's', 'i', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'u', 's', 'i', '_', 'a', 'c',
- 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'u',
+ 's', 'i', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'u', 's', 'v', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'u', 's', 'v', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y',
+ 'b', 'u', 's', 'v', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'r', 'm', 'p', 'y', 'b', 'u', 's', 'v', '_', 'a', 'c', 'c', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y',
+ 'b', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'b',
+ 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r',
- 'm', 'p', 'y', 'b', 'u', 's', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'r', 'm', 'p', 'y', 'b', 'u', 's', 'v', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'u', 's', 'v', '_',
- 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y',
- 'b', 'u', 's', 'v', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'v', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'v', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'b', 'v',
- '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p',
- 'y', 'b', 'v', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'u', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'u', 'b', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'u', 'b', '_',
- 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y',
- 'u', 'b', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'u', 'b', '_', 'r', 't', 't', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'u', 'b', '_', 'r',
- 't', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'r', 'm', 'p', 'y', 'u', 'b', '_', 'r', 't', 't', '_', 'a', 'c', 'c', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'u', 'b', '_', 'r',
- 't', 't', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'u', 'b', 'i', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'u', 'b', 'i', '_', '1', '2', '8',
+ 'm', 'p', 'y', 'b', 'v', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'r', 'm', 'p', 'y', 'b', 'v', '_', 'a', 'c', 'c', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'u',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'u', 'b',
+ '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm',
+ 'p', 'y', 'u', 'b', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'r', 'm', 'p', 'y', 'u', 'b', '_', 'a', 'c', 'c', '_', '1', '2', '8',
'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'u', 'b',
- 'i', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm',
- 'p', 'y', 'u', 'b', 'i', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'u', 'b', 'v', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'u', 'b', 'v', '_',
+ '_', 'r', 't', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p',
+ 'y', 'u', 'b', '_', 'r', 't', 't', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'u', 'b', '_', 'r', 't', 't',
+ '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p',
+ 'y', 'u', 'b', '_', 'r', 't', 't', '_', 'a', 'c', 'c', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'u', 'b',
+ 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'u', 'b',
+ 'i', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r',
+ 'm', 'p', 'y', 'u', 'b', 'i', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'r', 'm', 'p', 'y', 'u', 'b', 'i', '_', 'a', 'c', 'c', '_',
'1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p',
- 'y', 'u', 'b', 'v', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 'r', 'm', 'p', 'y', 'u', 'b', 'v', '_', 'a', 'c', 'c', '_', '1', '2',
- '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'o', 'r', '\000', '_',
+ 'y', 'u', 'b', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p',
+ 'y', 'u', 'b', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'r', 'm', 'p', 'y', 'u', 'b', 'v', '_', 'a', 'c', 'c', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'r', 'o', 'r', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'o', 'u', 'n', 'd', 'h', 'b', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'o', 'u', 'n', 'd', 'h', 'b', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'o', 'u',
- 'n', 'd', 'h', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'o',
- 'u', 'n', 'd', 'h', 'u', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'r', 'o', 'u', 'n', 'd', 'u', 'h', 'u', 'b', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'r', 'o', 'u', 'n', 'd', 'u', 'h', 'u', 'b',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'o',
- 'u', 'n', 'd', 'u', 'w', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'N', '_', 'V', '6', '_', 'v', 'r', 'm', 'p', 'y', 'u', 'b', 'v', '_', 'a',
+ 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'r', 'o', 'u', 'n', 'd', 'u', 'w', 'u', 'h', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'o', 'u', 'n', 'd', 'w', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'o', 'u', 'n', 'd', 'w', 'h', '_',
+ 'r', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'o', 'r', '_',
'1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'o', 'u',
- 'n', 'd', 'w', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'o',
- 'u', 'n', 'd', 'w', 'u', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'r', 's', 'a', 'd', 'u', 'b', 'i', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'r', 's', 'a', 'd', 'u', 'b', 'i', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 's', 'a', 'd', 'u', 'b',
- 'i', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 's',
- 'a', 'd', 'u', 'b', 'i', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'a', 't', 'h', 'u', 'b', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 's', 'a', 't', 'h', 'u', 'b', '_', '1', '2',
- '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'a', 't', 'u', 'w',
- 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'a', 't', 'u', 'w',
- 'u', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 's', 'a', 't', 'w', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'a',
- 't', 'w', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 's', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'b', '_', '1',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'o', 't',
+ 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'o', 't', 'r', '_', '1',
'2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'c', 'a', 't',
- 't', 'e', 'r', 'm', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'c',
- 'a', 't', 't', 'e', 'r', 'm', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 's', 'c', 'a', 't', 't', 'e', 'r', 'm', 'h', '_',
- 'a', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'c', 'a', 't',
- 't', 'e', 'r', 'm', 'h', '_', 'a', 'd', 'd', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'c', 'a', 't', 't', 'e', 'r', 'm',
- 'h', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'c', 'a', 't', 't',
- 'e', 'r', 'm', 'h', 'q', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 's', 'c', 'a', 't', 't', 'e', 'r', 'm', 'h', 'w', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 's', 'c', 'a', 't', 't', 'e', 'r', 'm', 'h',
- 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's',
- 'c', 'a', 't', 't', 'e', 'r', 'm', 'h', 'w', '_', 'a', 'd', 'd', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 's', 'c', 'a', 't', 't', 'e', 'r', 'm', 'h',
- 'w', '_', 'a', 'd', 'd', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 's', 'c', 'a', 't', 't', 'e', 'r', 'm', 'h', 'w', 'q', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'c', 'a', 't', 't', 'e', 'r', 'm',
- 'h', 'w', 'q', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'o', 'u', 'n',
+ 'd', 'h', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'o', 'u', 'n',
+ 'd', 'h', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 's', 'c', 'a', 't', 't', 'e', 'r', 'm', 'w', '\000', '_', '_', 'b', 'u',
+ 'v', 'r', 'o', 'u', 'n', 'd', 'h', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'r', 'o', 'u', 'n', 'd', 'h', 'u', 'b', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'o', 'u', 'n', 'd', 'u', 'h',
+ 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'o', 'u', 'n', 'd',
+ 'u', 'h', 'u', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'r', 'o', 'u', 'n', 'd', 'u', 'w', 'u', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 'r', 'o', 'u', 'n', 'd', 'u', 'w', 'u', 'h', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'o', 'u', 'n',
+ 'd', 'w', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 'o', 'u', 'n',
+ 'd', 'w', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'r', 'o', 'u', 'n', 'd', 'w', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'r', 'o', 'u', 'n', 'd', 'w', 'u', 'h', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 's', 'a', 'd', 'u', 'b', 'i',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 's', 'a', 'd', 'u', 'b', 'i',
+ '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'r', 's',
+ 'a', 'd', 'u', 'b', 'i', '_', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'r', 's', 'a', 'd', 'u', 'b', 'i', '_', 'a', 'c', 'c', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'a', 't', 'd',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'a', 't', 'd', 'w', '_',
+ '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'a', 't',
+ 'h', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'a', 't', 'h',
+ 'u', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 's', 'a', 't', 'u', 'w', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 's', 'a', 't', 'u', 'w', 'u', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 's', 'a', 't', 'w', 'h', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 's', 'c', 'a', 't', 't', 'e', 'r', 'm', 'w', '_', '1', '2',
+ '6', '_', 'v', 's', 'a', 't', 'w', 'h', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 's', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 's', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 's', 'c', 'a', 't', 't', 'e', 'r', 'm', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 's', 'c', 'a', 't', 't', 'e', 'r', 'm', 'h', '_', '1', '2',
'8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'c', 'a', 't', 't',
- 'e', 'r', 'm', 'w', '_', 'a', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 'e', 'r', 'm', 'h', '_', 'a', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 's', 'c', 'a', 't', 't', 'e', 'r', 'm', 'w', '_', 'a', 'd', 'd', '_',
+ 'v', 's', 'c', 'a', 't', 't', 'e', 'r', 'm', 'h', '_', 'a', 'd', 'd', '_',
'1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'c', 'a',
- 't', 't', 'e', 'r', 'm', 'w', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 't', 't', 'e', 'r', 'm', 'h', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 's', 'c', 'a', 't', 't', 'e', 'r', 'm', 'w', 'q', '_', '1', '2', '8', 'B',
+ 's', 'c', 'a', 't', 't', 'e', 'r', 'm', 'h', 'q', '_', '1', '2', '8', 'B',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 's', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 's', 'h', 'u', 'f', 'e', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 's', 'h', 'u', 'f', 'e', 'h', '_', '1', '2', '8', 'B', '\000', '_',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'c', 'a', 't', 't', 'e', 'r',
+ 'm', 'h', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'c', 'a', 't',
+ 't', 'e', 'r', 'm', 'h', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 's', 'c', 'a', 't', 't', 'e', 'r', 'm', 'h', 'w', '_',
+ 'a', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'c', 'a', 't',
+ 't', 'e', 'r', 'm', 'h', 'w', '_', 'a', 'd', 'd', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'c', 'a', 't', 't', 'e', 'r',
+ 'm', 'h', 'w', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'c', 'a',
+ 't', 't', 'e', 'r', 'm', 'h', 'w', 'q', '_', '1', '2', '8', 'B', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'f', 'b', '\000', '_', '_',
+ 'N', '_', 'V', '6', '_', 'v', 's', 'c', 'a', 't', 't', 'e', 'r', 'm', 'w',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'c', 'a', 't', 't', 'e', 'r',
+ 'm', 'w', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 's', 'c', 'a', 't', 't', 'e', 'r', 'm', 'w', '_', 'a', 'd', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 's', 'c', 'a', 't', 't', 'e', 'r', 'm', 'w',
+ '_', 'a', 'd', 'd', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 's', 'c', 'a', 't', 't', 'e', 'r', 'm', 'w', 'q', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'f', 'b', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'f', 'e',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'f', 'e',
+ '_', 'V', '6', '_', 'v', 's', 'c', 'a', 't', 't', 'e', 'r', 'm', 'w', 'q',
+ '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'e', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'e', 'h', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h', 'u', 'f',
+ 'f', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'f',
'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's',
- 'h', 'u', 'f', 'f', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h',
- 'u', 'f', 'f', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 's', 'h', 'u', 'f', 'f', 'o', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 's', 'h', 'u', 'f', 'f', 'o', 'b', '_', '1', '2', '8', 'B', '\000',
+ 'h', 'u', 'f', 'f', 'e', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's',
+ 'h', 'u', 'f', 'f', 'e', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'f', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 's', 'h', 'u', 'f', 'f', 'h', '_', '1', '2', '8', 'B', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'f', 'v', 'd', 'd',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'f', 'v', 'd',
- 'd', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's',
- 'h', 'u', 'f', 'o', 'e', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's',
- 'h', 'u', 'f', 'o', 'e', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'o', 'e', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'o', 'e', 'h', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'o', 'h',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'o', 'h', '_',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'f', 'o', 'b', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'f', 'o', 'b', '_',
'1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'b', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'b',
- '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'b',
- '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 's', 'u', 'b', 'b', 'n', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 's', 'u', 'b', 'b', 'n', 'q', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h', 'u',
+ 'f', 'f', 'v', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h',
+ 'u', 'f', 'f', 'v', 'd', 'd', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 's', 'u', 'b', 'b', 'q', '\000', '_', '_', 'b', 'u', 'i',
+ 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'o', 'e', 'b', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'o', 'e', 'b', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'o', 'e',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h', 'u', 'f', 'o', 'e',
+ 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's',
+ 'h', 'u', 'f', 'o', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'h',
+ 'u', 'f', 'o', 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 's', 'u', 'b', 'b', 'q', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ '_', 'v', 's', 'u', 'b', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's',
+ 'u', 'b', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 's', 'u', 'b', 'b', '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 's', 'u', 'b', 'b', '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'b', 'n', 'q', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'b', 's', 'a', 't', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'b', 's', 'a', 't', '_', '1', '2',
+ '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'b', 'n', 'q', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'b', 'q', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'b', 'q', '_', '1', '2',
'8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'b', 's',
- 'a', 't', '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u',
- 'b', 'b', 's', 'a', 't', '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'v', '6', '_', 'v', 's', 'u', 'b', 'c', 'a', 'r', 'r', 'y', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'v', '6', '_', 'v', 's', 'u', 'b', 'c', 'a', 'r', 'r', 'y',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u',
- 'b', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'h', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b',
- 'h', '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b',
- 'h', '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 's', 'u', 'b', 'h', 'n', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 's', 'u', 'b', 'h', 'n', 'q', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'h', 'q', '\000', '_', '_', 'b', 'u',
+ 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'b', 's',
+ 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 's', 'u', 'b', 'b', 's', 'a', 't', '_', 'd', 'v', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 's', 'u', 'b', 'h', 'q', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'h', 's', 'a', 't', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'h', 's', 'a', 't', '_', '1',
+ '6', '_', 'v', 's', 'u', 'b', 'b', 's', 'a', 't', '_', 'd', 'v', '_', '1',
'2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'h',
- 's', 'a', 't', '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'h', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'h', '_',
+ 'd', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'h', '_',
+ 'd', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 's', 'u', 'b', 'h', 'n', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's',
- 'u', 'b', 'h', 's', 'a', 't', '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'h', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'h', 'w', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'b', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'b', 'h', '_', '1',
- '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u',
- 'b', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b',
- 'u', 'b', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'u', 'b', 'h', 'n', 'q', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 's', 'u', 'b', 'u', 'b', 's', 'a', 't', '_', 'd', 'v', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'b', 's', 'a', 't',
- '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ '6', '_', 'v', 's', 'u', 'b', 'h', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 's', 'u', 'b', 'u', 'b', 'u', 'b', 'b', '_', 's', 'a', 't', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'b', 'u', 'b', 'b', '_',
- 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 's', 'u', 'b', 'u', 'h', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 's', 'u', 'b', 'u', 'h', 's', 'a', 't', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'h', 's', 'a',
+ 'v', 's', 'u', 'b', 'h', 'q', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 's', 'u', 'b', 'h', 's', 'a', 't', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 's', 'u', 'b', 'h', 's', 'a', 't', '_', '1', '2', '8',
+ 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'h', 's', 'a',
't', '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b',
- 'u', 'h', 's', 'a', 't', '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'h', 'w', '\000', '_', '_',
+ 'h', 's', 'a', 't', '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'h', 'w', '_', '1', '2', '8',
+ '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'h', 'w', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 's', 'u', 'b', 'h', 'w', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'b', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'b', 'h', '_', '1', '2', '8',
'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'w', 's',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'b', 's',
'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'w',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'b',
's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
- 'v', 's', 'u', 'b', 'u', 'w', 's', 'a', 't', '_', 'd', 'v', '\000', '_', '_',
+ 'v', 's', 'u', 'b', 'u', 'b', 's', 'a', 't', '_', 'd', 'v', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'w', 's', 'a', 't', '_', 'd',
+ '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'b', 's', 'a', 't', '_', 'd',
'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's',
- 'u', 'b', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'w',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u',
- 'b', 'w', '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u',
- 'b', 'w', '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
- '6', '_', 'v', 's', 'u', 'b', 'w', 'n', 'q', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 's', 'u', 'b', 'w', 'n', 'q', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'w', 'q', '\000', '_', '_', 'b',
+ 'u', 'b', 'u', 'b', 'u', 'b', 'b', '_', 's', 'a', 't', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 's', 'u', 'b', 'w', 'q', '_', '1', '2', '8', 'B', '\000',
+ 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'b', 'u', 'b', 'b', '_', 's', 'a',
+ 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's',
+ 'u', 'b', 'u', 'h', 's', 'a', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 's', 'u', 'b', 'u', 'h', 's', 'a', 't', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'h', 's', 'a', 't', '_',
+ 'd', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'h',
+ 's', 'a', 't', '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'h', 'w', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 's', 'u', 'b', 'u', 'h', 'w', '_', '1', '2', '8', 'B', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'w', 's', 'a', 't', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'w', 's', 'a', 't', '_',
+ 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'w', 's', 'a', 't',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'u', 'w', 's', 'a',
+ 't', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's',
+ 'u', 'b', 'u', 'w', 's', 'a', 't', '_', 'd', 'v', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 's', 'u', 'b', 'u', 'w', 's', 'a', 't', '_', 'd', 'v', '_',
'1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b',
- 'w', 's', 'a', 't', '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'w', '_', '1',
+ '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'w',
+ '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'w',
+ '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 's', 'u', 'b', 'w', 'n', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 's', 'u', 'b', 'w', 's', 'a', 't', '_', 'd', 'v', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'w', 'a', 'p', '\000', '_', '_',
+ 's', 'u', 'b', 'w', 'n', 'q', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
+ 'V', '6', '_', 'v', 's', 'u', 'b', 'w', 'q', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 's', 'u', 'b', 'w', 'q', '_', '1', '2', '8', 'B', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 's', 'w', 'a', 'p', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 't', 'm', 'p', 'y', 'b', '\000', '_', '_',
+ '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'w', 's', 'a', 't', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 't', 'm', 'p', 'y', 'b', '_', '1', '2', '8', 'B',
+ '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'w', 's', 'a', 't', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u', 'b', 'w', 's',
+ 'a', 't', '_', 'd', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 's', 'u',
+ 'b', 'w', 's', 'a', 't', '_', 'd', 'v', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 's', 'w', 'a', 'p', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 's', 'w', 'a', 'p', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 't', 'm', 'p', 'y', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 't', 'm', 'p', 'y', 'b', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 't', 'm', 'p', 'y', 'b', '_', 'a', 'c', 'c',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
'G', 'O', 'N', '_', 'V', '6', '_', 'v', 't', 'm', 'p', 'y', 'b', '_', 'a',
- 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
- 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 't', 'm', 'p', 'y', 'b',
+ 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 't', 'm', 'p', 'y', 'b', 'u', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 't', 'm', 'p', 'y', 'b', 'u', 's', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 't', 'm', 'p', 'y', 'b', 'u', 's', '_', 'a', 'c',
+ 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 't', 'm', 'p', 'y', 'b', 'u',
+ 's', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 't', 'm', 'p', 'y', 'h', 'b', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 't', 'm', 'p', 'y', 'h', 'b', '_', '1', '2', '8', 'B', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 't', 'm', 'p', 'y', 'h', 'b', '_', 'a', 'c',
+ 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 't', 'm', 'p', 'y', 'h', 'b',
'_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 't', 'm', 'p', 'y', 'b', 'u', 's', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
- '_', 'v', 't', 'm', 'p', 'y', 'b', 'u', 's', '_', '1', '2', '8', 'B', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 't', 'm', 'p', 'y', 'b', 'u', 's', '_',
- 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 't', 'm', 'p', 'y',
- 'b', 'u', 's', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 't', 'm', 'p', 'y', 'h', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 't', 'm', 'p', 'y', 'h', 'b', '_', '1', '2', '8', 'B',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 't', 'm', 'p', 'y', 'h', 'b', '_',
- 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
- 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 't', 'm', 'p', 'y',
- 'h', 'b', '_', 'a', 'c', 'c', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'u', 'n', 'p', 'a', 'c', 'k', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'u', 'n', 'p', 'a', 'c', 'k', 'b', '_', '1', '2', '8',
- 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'u', 'n', 'p', 'a', 'c', 'k',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'u', 'n', 'p', 'a', 'c', 'k',
- 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'u',
- 'n', 'p', 'a', 'c', 'k', 'o', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ '_', 'v', 't', 'r', 'a', 'n', '2', 'x', '2', '_', 'm', 'a', 'p', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
+ 'N', '_', 'V', '6', '_', 'v', 't', 'r', 'a', 'n', '2', 'x', '2', '_', 'm',
+ 'a', 'p', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
- 'u', 'n', 'p', 'a', 'c', 'k', 'o', 'b', '_', '1', '2', '8', 'B', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'u', 'n', 'p', 'a', 'c', 'k', 'o', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G',
- 'O', 'N', '_', 'V', '6', '_', 'v', 'u', 'n', 'p', 'a', 'c', 'k', 'o', 'h',
- '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'u', 'n',
- 'p', 'a', 'c', 'k', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'u',
- 'n', 'p', 'a', 'c', 'k', 'u', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'u', 'n', 'p', 'a', 'c', 'k', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'u', 'n', 'p', 'a', 'c', 'k', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
- '_', 'V', '6', '_', 'v', 'u', 'n', 'p', 'a', 'c', 'k', 'u', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O',
- 'N', '_', 'V', '6', '_', 'v', 'u', 'n', 'p', 'a', 'c', 'k', 'u', 'h', '_',
- '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'x', 'o', 'r',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
- 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'x', 'o', 'r', '_', '1', '2', '8',
+ '_', 'V', '6', '_', 'v', 'u', 'n', 'p', 'a', 'c', 'k', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'u', 'n', 'p', 'a', 'c', 'k', 'h', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'u', 'n', 'p', 'a', 'c',
+ 'k', 'o', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'u', 'n', 'p', 'a',
+ 'c', 'k', 'o', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'u', 'n', 'p', 'a', 'c', 'k', 'o', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V',
+ '6', '_', 'v', 'u', 'n', 'p', 'a', 'c', 'k', 'o', 'h', '_', '1', '2', '8',
'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'z', 'b', '\000', '_', '_', 'b',
+ 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'u', 'n', 'p', 'a', 'c', 'k',
+ 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'u', 'n', 'p', 'a', 'c',
+ 'k', 'u', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_',
+ 'v', 'u', 'n', 'p', 'a', 'c', 'k', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6',
+ '_', 'v', 'u', 'n', 'p', 'a', 'c', 'k', 'u', 'h', '_', '1', '2', '8', 'B',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A',
+ 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'x', 'o', 'r', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'z', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_',
- 'V', '6', '_', 'v', 'z', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'z',
- 'h', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'Y', '2', '_', 'd', 'c',
- 'c', 'l', 'e', 'a', 'n', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'Y', '2', '_', 'd', 'c',
- 'c', 'l', 'e', 'a', 'n', 'i', 'n', 'v', 'a', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'Y', '2',
- '_', 'd', 'c', 'i', 'n', 'v', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'Y', '2', '_', 'd',
- 'c', 'z', 'e', 'r', 'o', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'Y', '4', '_', 'l', '2',
- 'f', 'e', 't', 'c', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'Y', '5', '_', 'l', '2', 'f',
- 'e', 't', 'c', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'c', 'i', 'r', 'c', '_', 'l', 'd', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'c', 'i', 'r', 'c', '_', 'l', 'd', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'c', 'i', 'r', 'c', '_', 'l', 'd',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'c', 'i', 'r',
- 'c', '_', 'l', 'd', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'c', 'i', 'r', 'c', '_', 'l', 'd', 'u', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'c', 'i', 'r', 'c', '_', 'l', 'd', 'w',
+ 'V', '6', '_', 'v', 'x', 'o', 'r', '_', '1', '2', '8', 'B', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ '_', 'V', '6', '_', 'v', 'z', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'z', 'b', '_', '1', '2', '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v',
+ 'z', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'V', '6', '_', 'v', 'z', 'h', '_', '1', '2',
+ '8', 'B', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'Y', '2', '_', 'd', 'c', 'c', 'l', 'e', 'a',
+ 'n', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'Y', '2', '_', 'd', 'c', 'c', 'l', 'e', 'a',
+ 'n', 'i', 'n', 'v', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'H', 'E', 'X', 'A', 'G', 'O', 'N', '_', 'Y', '2', '_', 'd', 'c', 'i',
+ 'n', 'v', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'Y', '2', '_', 'd', 'c', 'z', 'e', 'r',
+ 'o', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E',
+ 'X', 'A', 'G', 'O', 'N', '_', 'Y', '4', '_', 'l', '2', 'f', 'e', 't', 'c',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
+ 'A', 'G', 'O', 'N', '_', 'Y', '5', '_', 'l', '2', 'f', 'e', 't', 'c', 'h',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'c', 'i', 'r', 'c',
- '_', 's', 't', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'c', 'i', 'r', 'c', '_', 's', 't', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'c', 'i', 'r', 'c', '_', 's', 't', 'h', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'c', 'i', 'r', 'c', '_', 's', 't',
- 'h', 'h', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'c',
- 'i', 'r', 'c', '_', 's', 't', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', '_', 'm', 'm', '2', '5', '6', 'i', '_', 'v', 'a', 'd', 'd',
- 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H', 'E', 'X',
- 'A', 'G', 'O', 'N', '_', 'p', 'r', 'e', 'f', 'e', 't', 'c', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a',
- 'b', 's', 'q', '_', 's', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'b', 's', 'q', '_', 's',
- '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 'i', 'p', 's', '_', 'a', 'b', 's', 'q', '_', 's', '_', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd',
- '_', 'a', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'a', 'd', 'd', '_', 'a', '_', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd', '_',
- 'a', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'a', 'd', 'd', '_', 'a', '_', 'w', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'd', 'd', 'q',
- '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 'i', 'p', 's', '_', 'a', 'd', 'd', 'q', '_', 's', '_', 'p', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a',
- 'd', 'd', 'q', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'd', 'd', 'q', 'h', '_', 'p',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
- 's', '_', 'a', 'd', 'd', 'q', 'h', '_', 'r', '_', 'p', 'h', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'd',
- 'd', 'q', 'h', '_', 'r', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'd', 'd', 'q', 'h', '_', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'a', 'd', 'd', 's', '_', 'a', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 's', '_', 'a', '_',
- 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'a', 'd', 'd', 's', '_', 'a', '_', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 's', '_', 'a',
- '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'a', 'd', 'd', 's', '_', 's', '_', 'b', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 's', '_',
- 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'a', 'd', 'd', 's', '_', 's', '_', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 's',
- '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'a', 'd', 'd', 's', '_', 'u', '_', 'b', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd',
- 's', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 's', '_', 'u', '_', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd',
- 'd', 's', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'd', 'd', 's', 'c', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'd',
- 'd', 'u', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 'i', 'p', 's', '_', 'a', 'd', 'd', 'u', '_', 'q', 'b', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a',
- 'd', 'd', 'u', '_', 's', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'd', 'd', 'u', '_', 's',
- '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 'i', 'p', 's', '_', 'a', 'd', 'd', 'u', 'h', '_', 'q', 'b', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'd',
- 'd', 'u', 'h', '_', 'r', '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 'v', '_', 'b', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a',
- 'd', 'd', 'v', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 'v', '_', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 'v',
- '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'a', 'd', 'd', 'v', 'i', '_', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 'v', 'i', '_',
- 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'a', 'd', 'd', 'v', 'i', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 'v', 'i', '_', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's',
- '_', 'a', 'd', 'd', 'w', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'a', 'n', 'd', '_', 'v', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'n', 'd', 'i',
- '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i',
- 'p', 's', '_', 'a', 'p', 'p', 'e', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 's', 'u', 'b', '_', 's',
- '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'a', 's', 'u', 'b', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 's', 'u', 'b', '_',
- 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'a', 's', 'u', 'b', '_', 's', '_', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 's', 'u', 'b',
- '_', 'u', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'a', 's', 'u', 'b', '_', 'u', '_', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 's', 'u',
- 'b', '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'a', 's', 'u', 'b', '_', 'u', '_', 'w', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'v',
- 'e', '_', 's', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'a', 'v', 'e', '_', 's', '_', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'v', 'e',
- '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'a', 'v', 'e', '_', 's', '_', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'v', 'e', '_',
- 'u', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'a', 'v', 'e', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'v', 'e', '_', 'u',
- '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'a', 'v', 'e', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'v', 'e', 'r', '_', 's',
- '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'a', 'v', 'e', 'r', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'v', 'e', 'r', '_',
- 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'a', 'v', 'e', 'r', '_', 's', '_', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'v', 'e', 'r',
- '_', 'u', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'a', 'v', 'e', 'r', '_', 'u', '_', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'v', 'e',
- 'r', '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'a', 'v', 'e', 'r', '_', 'u', '_', 'w', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'b',
- 'a', 'l', 'i', 'g', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'b', 'c', 'l', 'r', '_', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'c', 'l', 'r',
- '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'b', 'c', 'l', 'r', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'c', 'l', 'r', '_', 'w', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b',
- 'c', 'l', 'r', 'i', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'b', 'c', 'l', 'r', 'i', '_', 'd', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'c',
- 'l', 'r', 'i', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'b', 'c', 'l', 'r', 'i', '_', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'i', 'n',
- 's', 'l', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'b', 'i', 'n', 's', 'l', '_', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'i', 'n', 's',
- 'l', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'b', 'i', 'n', 's', 'l', '_', 'w', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'i', 'n', 's', 'l',
- 'i', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'b', 'i', 'n', 's', 'l', 'i', '_', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'i', 'n', 's',
- 'l', 'i', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'b', 'i', 'n', 's', 'l', 'i', '_', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'i', 'n',
- 's', 'r', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'b', 'i', 'n', 's', 'r', '_', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'i', 'n', 's',
- 'r', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'b', 'i', 'n', 's', 'r', '_', 'w', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'i', 'n', 's', 'r',
- 'i', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'b', 'i', 'n', 's', 'r', 'i', '_', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'i', 'n', 's',
- 'r', 'i', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'b', 'i', 'n', 's', 'r', 'i', '_', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'b', 'i',
- 't', 'r', 'e', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'b', 'm', 'n', 'z', '_', 'v', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'm', 'n', 'z', 'i',
- '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'b', 'm', 'z', '_', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'm', 'z', 'i', '_', 'b', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'n',
- 'e', 'g', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'b', 'n', 'e', 'g', '_', 'd', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'n', 'e', 'g', '_',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'b', 'n', 'e', 'g', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'n', 'e', 'g', 'i', '_', 'b', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b',
- 'n', 'e', 'g', 'i', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'b', 'n', 'e', 'g', 'i', '_', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'n',
- 'e', 'g', 'i', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'b', 'n', 'z', '_', 'b', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'n', 'z', '_', 'd',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'b', 'n', 'z', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'b', 'n', 'z', '_', 'v', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'n', 'z', '_', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's',
- '_', 'b', 'p', 'o', 's', 'g', 'e', '3', '2', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 's', 'e', 'l', '_', 'v',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'b', 's', 'e', 'l', 'i', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 's', 'e', 't', '_', 'b', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 's',
- 'e', 't', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'b', 's', 'e', 't', '_', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 's', 'e', 't', '_',
- 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'b', 's', 'e', 't', 'i', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 's', 'e', 't', 'i', '_', 'd',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'b', 's', 'e', 't', 'i', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 's', 'e', 't', 'i', '_', 'w', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b',
- 'z', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'b', 'z', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'z', '_', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'z', '_', 'v',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'b', 'z', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'c', 'e', 'q', '_', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'e', 'q', '_', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c',
- 'e', 'q', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'c', 'e', 'q', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'e', 'q', 'i', '_', 'b',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'c', 'e', 'q', 'i', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'c', 'e', 'q', 'i', '_', 'h', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'e', 'q',
- 'i', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'c', 'f', 'c', 'm', 's', 'a', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 'e', '_', 's', '_',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'c', 'l', 'e', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 'e', '_', 's', '_', 'h',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'c', 'l', 'e', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 'e', '_', 'u', '_', 'b', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c',
- 'l', 'e', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 'e', '_', 'u', '_', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l',
- 'e', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'c', 'l', 'e', 'i', '_', 's', '_', 'b', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l',
- 'e', 'i', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 'e', 'i', '_', 's', '_', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c',
- 'l', 'e', 'i', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 'e', 'i', '_', 'u', '_', 'b',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'c', 'l', 'e', 'i', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 'e', 'i', '_', 'u', '_',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'c', 'l', 'e', 'i', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 't', '_', 's', '_',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'c', 'l', 't', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 't', '_', 's', '_', 'h',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'c', 'l', 't', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 't', '_', 'u', '_', 'b', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c',
- 'l', 't', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 't', '_', 'u', '_', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l',
- 't', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'c', 'l', 't', 'i', '_', 's', '_', 'b', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l',
- 't', 'i', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 't', 'i', '_', 's', '_', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c',
- 'l', 't', 'i', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 't', 'i', '_', 'u', '_', 'b',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'c', 'l', 't', 'i', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 't', 'i', '_', 'u', '_',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'c', 'l', 't', 'i', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'c', 'm', 'p', '_', 'e',
- 'q', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 'i', 'p', 's', '_', 'c', 'm', 'p', '_', 'l', 'e', '_', 'p', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_',
- 'c', 'm', 'p', '_', 'l', 't', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'c', 'm', 'p', 'g', 'd',
- 'u', '_', 'e', 'q', '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'c', 'm', 'p', 'g', 'd', 'u', '_',
- 'l', 'e', '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 'i', 'p', 's', '_', 'c', 'm', 'p', 'g', 'd', 'u', '_', 'l', 't',
- '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 'i', 'p', 's', '_', 'c', 'm', 'p', 'g', 'u', '_', 'e', 'q', '_', 'q', 'b',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's',
- '_', 'c', 'm', 'p', 'g', 'u', '_', 'l', 'e', '_', 'q', 'b', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'c', 'm',
- 'p', 'g', 'u', '_', 'l', 't', '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'c', 'm', 'p', 'u', '_',
- 'e', 'q', '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 'i', 'p', 's', '_', 'c', 'm', 'p', 'u', '_', 'l', 'e', '_', 'q',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
- 's', '_', 'c', 'm', 'p', 'u', '_', 'l', 't', '_', 'q', 'b', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'o', 'p',
- 'y', '_', 's', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'c', 'o', 'p', 'y', '_', 's', '_', 'd', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'o',
- 'p', 'y', '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'c', 'o', 'p', 'y', '_', 's', '_', 'w', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c',
- 'o', 'p', 'y', '_', 'u', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'o', 'p', 'y', '_', 'u', '_', 'd',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'c', 'o', 'p', 'y', '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'o', 'p', 'y', '_', 'u', '_',
- 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'c', 't', 'c', 'm', 's', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'i', 'v', '_', 's', '_', 'b', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd',
- 'i', 'v', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'd', 'i', 'v', '_', 's', '_', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'i',
- 'v', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'd', 'i', 'v', '_', 'u', '_', 'b', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'i', 'v',
- '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'd', 'i', 'v', '_', 'u', '_', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'i', 'v', '_',
- 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 'i', 'p', 's', '_', 'd', 'l', 's', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'o', 't', 'p', '_', 's', '_',
- 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'd', 'o', 't', 'p', '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'o', 't', 'p', '_', 's',
- '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'd', 'o', 't', 'p', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'o', 't', 'p', '_',
- 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'd', 'o', 't', 'p', '_', 'u', '_', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'd', 'p', 'a',
- '_', 'w', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'd', 'p', 'a', 'd', 'd', '_', 's', '_', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd',
- 'p', 'a', 'd', 'd', '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'p', 'a', 'd', 'd', '_', 's',
- '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'd', 'p', 'a', 'd', 'd', '_', 'u', '_', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'p', 'a', 'd',
- 'd', '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'd', 'p', 'a', 'd', 'd', '_', 'u', '_', 'w', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_',
- 'd', 'p', 'a', 'q', '_', 's', '_', 'w', '_', 'p', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'd', 'p', 'a',
- 'q', '_', 's', 'a', '_', 'l', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'd', 'p', 'a', 'q', 'x', '_',
- 's', '_', 'w', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 'i', 'p', 's', '_', 'd', 'p', 'a', 'q', 'x', '_', 's', 'a',
- '_', 'w', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 'i', 'p', 's', '_', 'd', 'p', 'a', 'u', '_', 'h', '_', 'q', 'b',
- 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
- 's', '_', 'd', 'p', 'a', 'u', '_', 'h', '_', 'q', 'b', 'r', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'd', 'p',
- 'a', 'x', '_', 'w', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'd', 'p', 's', '_', 'w', '_', 'p',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
- 's', '_', 'd', 'p', 's', 'q', '_', 's', '_', 'w', '_', 'p', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'd',
- 'p', 's', 'q', '_', 's', 'a', '_', 'l', '_', 'w', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'd', 'p', 's', 'q',
- 'x', '_', 's', '_', 'w', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'd', 'p', 's', 'q', 'x', '_',
- 's', 'a', '_', 'w', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'd', 'p', 's', 'u', '_', 'h', '_',
- 'q', 'b', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 'i', 'p', 's', '_', 'd', 'p', 's', 'u', '_', 'h', '_', 'q', 'b', 'r', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd',
- 'p', 's', 'u', 'b', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'p', 's', 'u', 'b', '_', 's',
- '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'd', 'p', 's', 'u', 'b', '_', 's', '_', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'p', 's', 'u',
- 'b', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'd', 'p', 's', 'u', 'b', '_', 'u', '_', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd',
- 'p', 's', 'u', 'b', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'd', 'p', 's', 'x', '_', 'w',
- '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 'i', 'p', 's', '_', 'e', 'x', 't', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'e', 'x', 't', 'p', 'd', 'p',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's',
- '_', 'e', 'x', 't', 'r', '_', 'r', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'e', 'x', 't', 'r', '_',
- 'r', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 'i', 'p', 's', '_', 'e', 'x', 't', 'r', '_', 's', '_', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'e',
- 'x', 't', 'r', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'f', 'a', 'd', 'd', '_', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'a', 'd', 'd',
- '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'f', 'c', 'a', 'f', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'a', 'f', '_', 'w', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f',
- 'c', 'e', 'q', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'f', 'c', 'e', 'q', '_', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'l', 'a',
- 's', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'f', 'c', 'l', 'a', 's', 's', '_', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'l',
- 'e', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'f', 'c', 'l', 'e', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'l', 't', '_', 'd',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'f', 'c', 'l', 't', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'n', 'e', '_', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'n',
- 'e', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'f', 'c', 'o', 'r', '_', 'd', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'o', 'r', '_', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'f', 'c', 'u', 'e', 'q', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'u', 'e', 'q', '_', 'w', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f',
- 'c', 'u', 'l', 'e', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'u', 'l', 'e', '_', 'w', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c',
- 'u', 'l', 't', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'f', 'c', 'u', 'l', 't', '_', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'u',
- 'n', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'f', 'c', 'u', 'n', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'u', 'n', 'e', '_',
- 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'f', 'c', 'u', 'n', 'e', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'd', 'i', 'v', '_', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f',
- 'd', 'i', 'v', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'f', 'e', 'x', 'd', 'o', '_', 'h', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'e', 'x',
- 'd', 'o', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'f', 'e', 'x', 'p', '2', '_', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'e', 'x', 'p',
- '2', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'f', 'e', 'x', 'u', 'p', 'l', '_', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'e', 'x', 'u',
- 'p', 'l', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'f', 'e', 'x', 'u', 'p', 'r', '_', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'e', 'x',
- 'u', 'p', 'r', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'f', 'f', 'i', 'n', 't', '_', 's', '_', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f',
- 'f', 'i', 'n', 't', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'f', 'i', 'n', 't', '_', 'u',
- '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'f', 'f', 'i', 'n', 't', '_', 'u', '_', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'f', 'q', 'l',
- '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'f', 'f', 'q', 'l', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'f', 'q', 'r', '_', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f',
- 'f', 'q', 'r', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'f', 'i', 'l', 'l', '_', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'i', 'l', 'l',
- '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'f', 'i', 'l', 'l', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'i', 'l', 'l', '_', 'w', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f',
- 'l', 'o', 'g', '2', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'f', 'l', 'o', 'g', '2', '_', 'w', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'm',
- 'a', 'd', 'd', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'f', 'm', 'a', 'd', 'd', '_', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'm', 'a',
- 'x', '_', 'a', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'f', 'm', 'a', 'x', '_', 'a', '_', 'w', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'm',
- 'a', 'x', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'f', 'm', 'a', 'x', '_', 'w', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'm', 'i', 'n', '_',
- 'a', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'f', 'm', 'i', 'n', '_', 'a', '_', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'm', 'i', 'n',
- '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'f', 'm', 'i', 'n', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'm', 's', 'u', 'b', '_', 'd',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'f', 'm', 's', 'u', 'b', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'm', 'u', 'l', '_', 'd', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'm',
- 'u', 'l', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'f', 'r', 'c', 'p', '_', 'd', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'r', 'c', 'p', '_',
- 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'f', 'r', 'i', 'n', 't', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'r', 'i', 'n', 't', '_', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'f', 'r', 's', 'q', 'r', 't', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'r', 's', 'q', 'r', 't', '_',
- 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'f', 's', 'a', 'f', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'a', 'f', '_', 'w', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's',
- 'e', 'q', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'f', 's', 'e', 'q', '_', 'w', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'l', 'e', '_',
- 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'f', 's', 'l', 'e', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'l', 't', '_', 'd', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's',
- 'l', 't', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'f', 's', 'n', 'e', '_', 'd', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'n', 'e', '_',
- 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'f', 's', 'o', 'r', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'o', 'r', '_', 'w', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's',
- 'q', 'r', 't', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'f', 's', 'q', 'r', 't', '_', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'u',
- 'b', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'f', 's', 'u', 'b', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'u', 'e', 'q', '_',
- 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'f', 's', 'u', 'e', 'q', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'u', 'l', 'e', '_', 'd',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'f', 's', 'u', 'l', 'e', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'u', 'l', 't', '_', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f',
- 's', 'u', 'l', 't', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'u', 'n', '_', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'u',
- 'n', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'f', 's', 'u', 'n', 'e', '_', 'd', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'u', 'n', 'e',
- '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'f', 't', 'i', 'n', 't', '_', 's', '_', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 't', 'i', 'n',
- 't', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'f', 't', 'i', 'n', 't', '_', 'u', '_', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f',
- 't', 'i', 'n', 't', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 't', 'q', '_', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 't',
- 'q', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'f', 't', 'r', 'u', 'n', 'c', '_', 's', '_', 'd', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 't',
- 'r', 'u', 'n', 'c', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 't', 'r', 'u', 'n', 'c', '_',
- 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'f', 't', 'r', 'u', 'n', 'c', '_', 'u', '_', 'w', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'h', 'a',
- 'd', 'd', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'h', 'a', 'd', 'd', '_', 's', '_', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'h',
- 'a', 'd', 'd', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'h', 'a', 'd', 'd', '_', 'u', '_', 'd',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'h', 'a', 'd', 'd', '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'h', 'a', 'd', 'd', '_', 'u', '_',
- 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'h', 's', 'u', 'b', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'h', 's', 'u', 'b', '_', 's',
- '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'h', 's', 'u', 'b', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'h', 's', 'u', 'b', '_',
- 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'h', 's', 'u', 'b', '_', 'u', '_', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'h', 's', 'u', 'b',
- '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'i', 'l', 'v', 'e', 'v', '_', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'l', 'v', 'e',
- 'v', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'i', 'l', 'v', 'e', 'v', '_', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'l', 'v', 'e', 'v',
- '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'i', 'l', 'v', 'l', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'l', 'v', 'l', '_', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i',
- 'l', 'v', 'l', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'i', 'l', 'v', 'l', '_', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'l', 'v', 'o',
- 'd', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'i', 'l', 'v', 'o', 'd', '_', 'd', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'l', 'v', 'o', 'd',
- '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'i', 'l', 'v', 'o', 'd', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'l', 'v', 'r', '_', 'b',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'i', 'l', 'v', 'r', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'i', 'l', 'v', 'r', '_', 'h', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'l', 'v',
- 'r', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'i', 'n', 's', 'e', 'r', 't', '_', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'n', 's', 'e',
- 'r', 't', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'i', 'n', 's', 'e', 'r', 't', '_', 'h', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'n', 's',
- 'e', 'r', 't', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 'i', 'p', 's', '_', 'i', 'n', 's', 'v', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'n', 's', 'v', 'e',
- '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'i', 'n', 's', 'v', 'e', '_', 'd', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'n', 's', 'v', 'e', '_',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'i', 'n', 's', 'v', 'e', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'l', 'b', 'u', 'x', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'l', 'd',
- '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'l', 'd', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'l', 'd', '_', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'l', 'd', '_', 'w', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'l',
- 'd', 'i', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'l', 'd', 'i', '_', 'd', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'l', 'd', 'i', '_', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'l',
- 'd', 'i', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 'i', 'p', 's', '_', 'l', 'h', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'l', 's', 'a', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'l', 'w',
- 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
- 's', '_', 'm', 'a', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'd', 'd', '_', 'q', '_', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm',
- 'a', 'd', 'd', '_', 'q', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'd', 'd', 'r', '_', 'q', '_',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'm', 'a', 'd', 'd', 'r', '_', 'q', '_', 'w', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'a', 'd', 'd',
- 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'm', 'a', 'd', 'd', 'v', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'd', 'd', 'v', '_', 'd',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'm', 'a', 'd', 'd', 'v', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'd', 'd', 'v', '_', 'w', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_',
- 'm', 'a', 'q', '_', 's', '_', 'w', '_', 'p', 'h', 'l', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'a', 'q',
- '_', 's', '_', 'w', '_', 'p', 'h', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'a', 'q', '_', 's', 'a',
- '_', 'w', '_', 'p', 'h', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'a', 'q', '_', 's', 'a', '_', 'w',
- '_', 'p', 'h', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'm', 'a', 'x', '_', 'a', '_', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'x', '_',
- 'a', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'm', 'a', 'x', '_', 'a', '_', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'x', '_', 'a',
- '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'm', 'a', 'x', '_', 's', '_', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'x', '_', 's', '_',
- 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'm', 'a', 'x', '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'x', '_', 's', '_', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'm', 'a', 'x', '_', 'u', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'x', '_', 'u', '_', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm',
- 'a', 'x', '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'x', '_', 'u', '_', 'w', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a',
- 'x', 'i', '_', 's', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'x', 'i', '_', 's', '_', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm',
- 'a', 'x', 'i', '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'x', 'i', '_', 's', '_', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'm', 'a', 'x', 'i', '_', 'u', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'x', 'i', '_', 'u', '_',
- 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'm', 'a', 'x', 'i', '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'x', 'i', '_', 'u',
- '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'm', 'i', 'n', '_', 'a', '_', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'i', 'n', '_', 'a', '_',
- 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'm', 'i', 'n', '_', 'a', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'i', 'n', '_', 'a', '_', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'm', 'i', 'n', '_', 's', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'i', 'n', '_', 's', '_', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm',
- 'i', 'n', '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'm', 'i', 'n', '_', 's', '_', 'w', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'i',
- 'n', '_', 'u', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'm', 'i', 'n', '_', 'u', '_', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'i', 'n',
- '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'm', 'i', 'n', '_', 'u', '_', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'i', 'n', 'i',
- '_', 's', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'm', 'i', 'n', 'i', '_', 's', '_', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'i', 'n',
- 'i', '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'm', 'i', 'n', 'i', '_', 's', '_', 'w', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'i',
- 'n', 'i', '_', 'u', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'm', 'i', 'n', 'i', '_', 'u', '_', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm',
- 'i', 'n', 'i', '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'i', 'n', 'i', '_', 'u', '_', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'm', 'o', 'd', '_', 's', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'o', 'd', '_', 's', '_', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm',
- 'o', 'd', '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'm', 'o', 'd', '_', 's', '_', 'w', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'o',
- 'd', '_', 'u', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'm', 'o', 'd', '_', 'u', '_', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'o', 'd',
- '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'm', 'o', 'd', '_', 'u', '_', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'o', 'd',
- 's', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'm', 'o', 'v', 'e', '_', 'v', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 's', 'u', 'b', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm',
- 's', 'u', 'b', '_', 'q', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 's', 'u', 'b', '_', 'q', '_', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'm', 's', 'u', 'b', 'r', '_', 'q', '_', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 's', 'u', 'b', 'r', '_',
- 'q', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 'i', 'p', 's', '_', 'm', 's', 'u', 'b', 'u', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 's', 'u', 'b', 'v', '_',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'm', 's', 'u', 'b', 'v', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 's', 'u', 'b', 'v', '_', 'h',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'm', 's', 'u', 'b', 'v', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 't', 'h', 'l', 'i', 'p', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_',
- 'm', 'u', 'l', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 'm', 'u', 'l', '_', 'q', '_', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'u',
- 'l', '_', 'q', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 'i', 'p', 's', '_', 'm', 'u', 'l', '_', 's', '_', 'p', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_',
- 'm', 'u', 'l', 'e', 'q', '_', 's', '_', 'w', '_', 'p', 'h', 'l', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm',
- 'u', 'l', 'e', 'q', '_', 's', '_', 'w', '_', 'p', 'h', 'r', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'u',
- 'l', 'e', 'u', '_', 's', '_', 'p', 'h', '_', 'q', 'b', 'l', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'u',
- 'l', 'e', 'u', '_', 's', '_', 'p', 'h', '_', 'q', 'b', 'r', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'u',
- 'l', 'q', '_', 'r', 's', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'u', 'l', 'q', '_', 'r',
- 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 'i', 'p', 's', '_', 'm', 'u', 'l', 'q', '_', 's', '_', 'p', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm',
- 'u', 'l', 'q', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'u', 'l', 'r', '_', 'q', '_', 'h',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'm', 'u', 'l', 'r', '_', 'q', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'u', 'l', 's', 'a', '_',
- 'w', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 'i', 'p', 's', '_', 'm', 'u', 'l', 's', 'a', 'q', '_', 's', '_', 'w',
- '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 'i', 'p', 's', '_', 'm', 'u', 'l', 't', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'u', 'l', 't', 'u', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm',
- 'u', 'l', 'v', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'm', 'u', 'l', 'v', '_', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'u', 'l', 'v',
- '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'm', 'u', 'l', 'v', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'n', 'l', 'o', 'c', '_', 'b', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'n',
- 'l', 'o', 'c', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'n', 'l', 'o', 'c', '_', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'n', 'l', 'o', 'c',
- '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'n', 'l', 'z', 'c', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'n', 'l', 'z', 'c', '_', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'n',
- 'l', 'z', 'c', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 'n', 'l', 'z', 'c', '_', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'n', 'o', 'r', '_',
- 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'n', 'o', 'r', 'i', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'o', 'r', '_', 'v', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'o', 'r', 'i', '_',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
- 's', '_', 'p', 'a', 'c', 'k', 'r', 'l', '_', 'p', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'p', 'c', 'k', 'e',
- 'v', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 'p', 'c', 'k', 'e', 'v', '_', 'd', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'p', 'c', 'k', 'e', 'v',
- '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 'p', 'c', 'k', 'e', 'v', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'p', 'c', 'k', 'o', 'd', '_',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'p', 'c', 'k', 'o', 'd', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'p', 'c', 'k', 'o', 'd', '_', 'h',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'p', 'c', 'k', 'o', 'd', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'p', 'c', 'n', 't', '_', 'b', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'p', 'c',
- 'n', 't', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 'p', 'c', 'n', 't', '_', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'p', 'c', 'n', 't', '_',
- 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
- 's', '_', 'p', 'i', 'c', 'k', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'i', 'c', 'k', '_',
- 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i',
- 'p', 's', '_', 'p', 'r', 'e', 'c', 'e', 'q', '_', 'w', '_', 'p', 'h', 'l',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's',
- '_', 'p', 'r', 'e', 'c', 'e', 'q', '_', 'w', '_', 'p', 'h', 'r', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p',
- 'r', 'e', 'c', 'e', 'q', 'u', '_', 'p', 'h', '_', 'q', 'b', 'l', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p',
- 'r', 'e', 'c', 'e', 'q', 'u', '_', 'p', 'h', '_', 'q', 'b', 'l', 'a', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_',
- 'p', 'r', 'e', 'c', 'e', 'q', 'u', '_', 'p', 'h', '_', 'q', 'b', 'r', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_',
- 'p', 'r', 'e', 'c', 'e', 'q', 'u', '_', 'p', 'h', '_', 'q', 'b', 'r', 'a',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's',
- '_', 'p', 'r', 'e', 'c', 'e', 'u', '_', 'p', 'h', '_', 'q', 'b', 'l', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_',
- 'p', 'r', 'e', 'c', 'e', 'u', '_', 'p', 'h', '_', 'q', 'b', 'l', 'a', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_',
- 'p', 'r', 'e', 'c', 'e', 'u', '_', 'p', 'h', '_', 'q', 'b', 'r', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p',
- 'r', 'e', 'c', 'e', 'u', '_', 'p', 'h', '_', 'q', 'b', 'r', 'a', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p',
- 'r', 'e', 'c', 'r', '_', 'q', 'b', '_', 'p', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'r', 'e', 'c',
- 'r', '_', 's', 'r', 'a', '_', 'p', 'h', '_', 'w', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'r', 'e', 'c',
- 'r', '_', 's', 'r', 'a', '_', 'r', '_', 'p', 'h', '_', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'r',
- 'e', 'c', 'r', 'q', '_', 'p', 'h', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'r', 'e', 'c', 'r',
- 'q', '_', 'q', 'b', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'r', 'e', 'c', 'r', 'q', '_',
- 'r', 's', '_', 'p', 'h', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'r', 'e', 'c', 'r', 'q', 'u',
- '_', 's', '_', 'q', 'b', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'r', 'e', 'p', 'e', 'n',
- 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
- 's', '_', 'r', 'a', 'd', 'd', 'u', '_', 'w', '_', 'q', 'b', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'r', 'd',
- 'd', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 'i', 'p', 's', '_', 'r', 'e', 'p', 'l', '_', 'p', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'r', 'e', 'p',
- 'l', '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 's', 'a', 't', '_', 's', '_', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'a', 't', '_',
- 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 's', 'a', 't', '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'a', 't', '_', 's',
- '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 's', 'a', 't', '_', 'u', '_', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'a', 't', '_', 'u', '_',
- 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 's', 'a', 't', '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'a', 't', '_', 'u', '_', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 's', 'h', 'f', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 's', 'h', 'f', '_', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'h', 'f', '_', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's',
- '_', 's', 'h', 'i', 'l', 'o', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'h', 'l', 'l', '_', 'p', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_',
- 's', 'h', 'l', 'l', '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'h', 'l', 'l', '_', 's', '_',
+ '_', 'l', 'd', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'c', 'i', 'r', 'c', '_', 'l', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'c', 'i', 'r', 'c', '_', 'l', 'd', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'c', 'i', 'r', 'c', '_', 'l', 'd',
+ 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'c', 'i',
+ 'r', 'c', '_', 'l', 'd', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'c', 'i', 'r', 'c', '_', 'l', 'd', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'c', 'i', 'r', 'c', '_', 's', 't', 'b',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'c', 'i', 'r', 'c',
+ '_', 's', 't', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'c', 'i', 'r', 'c', '_', 's', 't', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'c', 'i', 'r', 'c', '_', 's', 't', 'h', 'h', 'i', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'c', 'i', 'r', 'c', '_',
+ 's', 't', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'H',
+ 'E', 'X', 'A', 'G', 'O', 'N', '_', 'p', 'r', 'e', 'f', 'e', 't', 'c', 'h',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'h', 'e', 'x', 'a',
+ 'g', 'o', 'n', '_', 'v', 'm', 'e', 'm', 'c', 'p', 'y', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'h', 'e', 'x', 'a', 'g', 'o', 'n', '_',
+ 'v', 'm', 'e', 'm', 's', 'e', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'b', 's', 'q', '_', 's', '_',
'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i',
- 'p', 's', '_', 's', 'h', 'l', 'l', '_', 's', '_', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'h', 'r',
- 'a', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 'i', 'p', 's', '_', 's', 'h', 'r', 'a', '_', 'q', 'b', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'h',
- 'r', 'a', '_', 'r', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'h', 'r', 'a', '_', 'r', '_',
- 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i',
- 'p', 's', '_', 's', 'h', 'r', 'a', '_', 'r', '_', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'h', 'r',
- 'l', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 'i', 'p', 's', '_', 's', 'h', 'r', 'l', '_', 'q', 'b', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'l', 'd',
+ 'p', 's', '_', 'a', 'b', 's', 'q', '_', 's', '_', 'q', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'b',
+ 's', 'q', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd', '_', 'a', '_', 'b', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd',
+ 'd', '_', 'a', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'a', 'd', 'd', '_', 'a', '_', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd',
+ '_', 'a', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 'i', 'p', 's', '_', 'a', 'd', 'd', 'q', '_', 'p', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'd',
+ 'd', 'q', '_', 's', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'd', 'd', 'q', '_', 's', '_',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
+ 's', '_', 'a', 'd', 'd', 'q', 'h', '_', 'p', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'd', 'd', 'q',
+ 'h', '_', 'r', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'd', 'd', 'q', 'h', '_', 'r', '_',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
+ 's', '_', 'a', 'd', 'd', 'q', 'h', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 's', '_', 'a',
'_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 's', 'l', 'd', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'l', 'd', '_', 'h', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'l', 'd',
- '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 's', 'l', 'd', 'i', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'l', 'd', 'i', '_', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's',
- 'l', 'd', 'i', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 's', 'l', 'd', 'i', '_', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'l', 'l', '_',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 's', 'l', 'l', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 's', 'l', 'l', '_', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'l', 'l', '_',
- 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 's', 'l', 'l', 'i', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'l', 'l', 'i', '_', 'd', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'l',
- 'l', 'i', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 's', 'l', 'l', 'i', '_', 'w', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'p', 'l', 'a', 't',
- '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 's', 'p', 'l', 'a', 't', '_', 'd', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'p', 'l', 'a', 't', '_',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 's', 'p', 'l', 'a', 't', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'p', 'l', 'a', 't', 'i', '_',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 's', 'p', 'l', 'a', 't', 'i', '_', 'd', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'p', 'l', 'a', 't', 'i',
- '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 's', 'p', 'l', 'a', 't', 'i', '_', 'w', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'a', '_', 'b',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 's', 'r', 'a', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 's', 'a', '_', 's', 'r', 'a', '_', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'a', '_', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 's', 'r', 'a', 'i', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'a', 'i', '_', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'a',
- 'i', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 's', 'r', 'a', 'i', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'a', 'r', '_', 'b',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 's', 'r', 'a', 'r', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'a', 'r', '_', 'h', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'a',
- 'r', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 's', 'r', 'a', 'r', 'i', '_', 'b', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'a', 'r', 'i',
- '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 's', 'r', 'a', 'r', 'i', '_', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'a', 'r', 'i', '_',
- 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 's', 'r', 'l', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'l', '_', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'l', '_',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 's', 'r', 'l', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'l', 'i', '_', 'b', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'l',
- 'i', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 's', 'r', 'l', 'i', '_', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'l', 'i', '_', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 's', 'r', 'l', 'r', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'l', 'r', '_', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'l',
- 'r', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 's', 'r', 'l', 'r', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'l', 'r', 'i', '_',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 's', 'r', 'l', 'r', 'i', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'l', 'r', 'i', '_', 'h',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 's', 'r', 'l', 'r', 'i', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 's', 't', '_', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 't', '_', 'd',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 's', 't', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 's', 't', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'u', 'b', 'q', '_', 'p',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
- 's', '_', 's', 'u', 'b', 'q', '_', 's', '_', 'p', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'u', 'b',
- 'q', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 'i', 'p', 's', '_', 's', 'u', 'b', 'q', 'h', '_', 'p', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_',
- 's', 'u', 'b', 'q', 'h', '_', 'r', '_', 'p', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'u', 'b', 'q',
- 'h', '_', 'r', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'm', 'i', 'p', 's', '_', 's', 'u', 'b', 'q', 'h', '_', 'w', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u',
- 'b', 's', '_', 's', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 's', '_', 's', '_', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's',
- 'u', 'b', 's', '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 's', '_', 's', '_', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 's', 'u', 'b', 's', '_', 'u', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 's', '_', 'u', '_',
- 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 's', 'u', 'b', 's', '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 's', '_', 'u',
- '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 's', 'u', 'b', 's', 'u', 's', '_', 'u', '_', 'b', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b',
- 's', 'u', 's', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 's', 'u', 's', '_', 'u',
- '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 's', 'u', 'b', 's', 'u', 's', '_', 'u', '_', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b',
- 's', 'u', 'u', '_', 's', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 's', 'u', 'u', '_', 's',
- '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
- 'a', '_', 's', 'u', 'b', 's', 'u', 'u', '_', 's', '_', 'h', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b',
- 's', 'u', 'u', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'u', 'b', 'u', '_', 'p', 'h',
+ 'a', '_', 'a', 'd', 'd', 's', '_', 'a', '_', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 's', '_',
+ 'a', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'a', 'd', 'd', 's', '_', 'a', '_', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 's',
+ '_', 's', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'a', 'd', 'd', 's', '_', 's', '_', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd',
+ 's', '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 's', '_', 's', '_', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd',
+ 'd', 's', '_', 'u', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 's', '_', 'u', '_', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a',
+ 'd', 'd', 's', '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 's', '_', 'u', '_', 'w',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's',
- '_', 's', 'u', 'b', 'u', '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'u', 'b', 'u', '_', 's',
- '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 'i', 'p', 's', '_', 's', 'u', 'b', 'u', '_', 's', '_', 'q', 'b', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's',
- 'u', 'b', 'u', 'h', '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'u', 'b', 'u', 'h', '_', 'r',
- '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 's', 'u', 'b', 'v', '_', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 'v', '_', 'd',
+ '_', 'a', 'd', 'd', 's', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'd', 'd', 'u', '_', 'p', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_',
+ 'a', 'd', 'd', 'u', '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'd', 'd', 'u', '_', 's', '_',
+ 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i',
+ 'p', 's', '_', 'a', 'd', 'd', 'u', '_', 's', '_', 'q', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'd',
+ 'd', 'u', 'h', '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'd', 'd', 'u', 'h', '_', 'r', '_',
+ 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'a', 'd', 'd', 'v', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 'v', '_', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a',
+ 'd', 'd', 'v', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 'v', '_', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 'v',
+ 'i', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'a', 'd', 'd', 'v', 'i', '_', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'd', 'd', 'v', 'i',
+ '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'a', 'd', 'd', 'v', 'i', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'd', 'd', 'w', 'c',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 's', 'u', 'b', 'v', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 'v', '_', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b',
- 'v', 'i', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 's', 'a', '_', 's', 'u', 'b', 'v', 'i', '_', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 'v',
- 'i', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
- 's', 'a', '_', 's', 'u', 'b', 'v', 'i', '_', 'w', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'v', 's', 'h', 'f', '_',
+ 'a', 'n', 'd', '_', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'a', 'n', 'd', 'i', '_', 'b', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'a', 'p', 'p',
+ 'e', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'a', 's', 'u', 'b', '_', 's', '_', 'b', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 's', 'u', 'b',
+ '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'a', 's', 'u', 'b', '_', 's', '_', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 's', 'u',
+ 'b', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'a', 's', 'u', 'b', '_', 'u', '_', 'b', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 's',
+ 'u', 'b', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'a', 's', 'u', 'b', '_', 'u', '_', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a',
+ 's', 'u', 'b', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'v', 'e', '_', 's', '_', 'b', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a',
+ 'v', 'e', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'a', 'v', 'e', '_', 's', '_', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'v',
+ 'e', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'a', 'v', 'e', '_', 'u', '_', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'v', 'e',
+ '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'a', 'v', 'e', '_', 'u', '_', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'v', 'e', '_',
+ 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'a', 'v', 'e', 'r', '_', 's', '_', 'b', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'v', 'e', 'r',
+ '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'a', 'v', 'e', 'r', '_', 's', '_', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'v', 'e',
+ 'r', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'a', 'v', 'e', 'r', '_', 'u', '_', 'b', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a', 'v',
+ 'e', 'r', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'a', 'v', 'e', 'r', '_', 'u', '_', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'a',
+ 'v', 'e', 'r', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'b', 'a', 'l', 'i', 'g', 'n', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b',
+ 'c', 'l', 'r', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'b', 'c', 'l', 'r', '_', 'd', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'c', 'l', 'r',
+ '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'b', 'c', 'l', 'r', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'c', 'l', 'r', 'i', '_', 'b',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'b', 'c', 'l', 'r', 'i', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'c', 'l', 'r', 'i', '_', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b',
+ 'c', 'l', 'r', 'i', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'b', 'i', 'n', 's', 'l', '_', 'b', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'i',
+ 'n', 's', 'l', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'b', 'i', 'n', 's', 'l', '_', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'i', 'n',
+ 's', 'l', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'b', 'i', 'n', 's', 'l', 'i', '_', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'i', 'n',
+ 's', 'l', 'i', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'b', 'i', 'n', 's', 'l', 'i', '_', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'i',
+ 'n', 's', 'l', 'i', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'b', 'i', 'n', 's', 'r', '_', 'b', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'i',
+ 'n', 's', 'r', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'b', 'i', 'n', 's', 'r', '_', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'i', 'n',
+ 's', 'r', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'b', 'i', 'n', 's', 'r', 'i', '_', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'i', 'n',
+ 's', 'r', 'i', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'b', 'i', 'n', 's', 'r', 'i', '_', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'i',
+ 'n', 's', 'r', 'i', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 'i', 'p', 's', '_', 'b', 'i', 't', 'r', 'e', 'v', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'm',
+ 'n', 'z', '_', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'b', 'm', 'n', 'z', 'i', '_', 'b', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'm', 'z', '_',
+ 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'b', 'm', 'z', 'i', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'n', 'e', 'g', '_', 'b', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'n',
+ 'e', 'g', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'b', 'n', 'e', 'g', '_', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'n', 'e', 'g', '_',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'b', 'n', 'e', 'g', 'i', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'n', 'e', 'g', 'i', '_', 'd',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'b', 'n', 'e', 'g', 'i', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'n', 'e', 'g', 'i', '_', 'w', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b',
+ 'n', 'z', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'b', 'n', 'z', '_', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'n', 'z', '_', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b',
+ 'n', 'z', '_', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'b', 'n', 'z', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'b', 'p', 'o', 's', 'g',
+ 'e', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'b', 's', 'e', 'l', '_', 'v', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 's', 'e', 'l', 'i', '_',
'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
- '_', 'v', 's', 'h', 'f', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'm', 's', 'a', '_', 'v', 's', 'h', 'f', '_', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'v', 's',
- 'h', 'f', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'm', 'i', 'p', 's', '_', 'w', 'r', 'd', 's', 'p', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'x', 'o', 'r', '_', 'v',
+ '_', 'b', 's', 'e', 't', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 's', 'e', 't', '_', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 's',
+ 'e', 't', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'b', 's', 'e', 't', '_', 'w', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 's', 'e', 't', 'i',
+ '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'b', 's', 'e', 't', 'i', '_', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 's', 'e', 't', 'i', '_',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'b', 's', 'e', 't', 'i', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'z', '_', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'z', '_',
+ 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'b', 'z', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'b', 'z', '_', 'v', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'b', 'z', '_', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'e',
+ 'q', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'c', 'e', 'q', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'e', 'q', '_', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'e',
+ 'q', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'c', 'e', 'q', 'i', '_', 'b', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'e', 'q', 'i', '_', 'd',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
- 'x', 'o', 'r', 'i', '_', 'b', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'a',
- 'd', 'd', '_', 'r', 'm', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 'a', 'd', 'd', '_', 'r', 'm', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 'a', 'd', 'd', '_', 'r', 'm', '_', 'f', 't', 'z', '_', 'f', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'a', 'd', 'd', '_', 'r', 'n', '_', 'd', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'a', 'd', 'd', '_', 'r', 'n', '_', 'f',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'a', 'd', 'd', '_', 'r', 'n', '_',
- 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'a', 'd',
- 'd', '_', 'r', 'p', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'a',
- 'd', 'd', '_', 'r', 'p', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 'a', 'd', 'd', '_', 'r', 'p', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 'a', 'd', 'd', '_', 'r', 'z', '_', 'd', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'a', 'd', 'd', '_', 'r', 'z', '_', 'f', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'a', 'd', 'd', '_', 'r', 'z', '_', 'f',
- 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'b', 'a', 'r',
+ 'c', 'e', 'q', 'i', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'c', 'e', 'q', 'i', '_', 'w', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'f', 'c',
+ 'm', 's', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'c', 'l', 'e', '_', 's', '_', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 'e', '_', 's',
+ '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'c', 'l', 'e', '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 'e', '_', 's', '_',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'c', 'l', 'e', '_', 'u', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 'e', '_', 'u', '_', 'd',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'c', 'l', 'e', '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 'e', '_', 'u', '_', 'w', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c',
+ 'l', 'e', 'i', '_', 's', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 'e', 'i', '_', 's', '_', 'd',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'c', 'l', 'e', 'i', '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 'e', 'i', '_', 's', '_',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'c', 'l', 'e', 'i', '_', 'u', '_', 'b', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 'e', 'i', '_', 'u',
+ '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'c', 'l', 'e', 'i', '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 'e', 'i', '_',
+ 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'c', 'l', 't', '_', 's', '_', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 't', '_', 's',
+ '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'c', 'l', 't', '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 't', '_', 's', '_',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'c', 'l', 't', '_', 'u', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 't', '_', 'u', '_', 'd',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'c', 'l', 't', '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 't', '_', 'u', '_', 'w', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c',
+ 'l', 't', 'i', '_', 's', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 't', 'i', '_', 's', '_', 'd',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'c', 'l', 't', 'i', '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 't', 'i', '_', 's', '_',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'c', 'l', 't', 'i', '_', 'u', '_', 'b', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 't', 'i', '_', 'u',
+ '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'c', 'l', 't', 'i', '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'l', 't', 'i', '_',
+ 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 'i', 'p', 's', '_', 'c', 'm', 'p', '_', 'e', 'q', '_', 'p', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'c',
+ 'm', 'p', '_', 'l', 'e', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'c', 'm', 'p', '_', 'l', 't',
+ '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 'i', 'p', 's', '_', 'c', 'm', 'p', 'g', 'd', 'u', '_', 'e', 'q', '_', 'q',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
+ 's', '_', 'c', 'm', 'p', 'g', 'd', 'u', '_', 'l', 'e', '_', 'q', 'b', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_',
+ 'c', 'm', 'p', 'g', 'd', 'u', '_', 'l', 't', '_', 'q', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'c', 'm',
+ 'p', 'g', 'u', '_', 'e', 'q', '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'c', 'm', 'p', 'g', 'u',
+ '_', 'l', 'e', '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 'i', 'p', 's', '_', 'c', 'm', 'p', 'g', 'u', '_', 'l', 't',
+ '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 'i', 'p', 's', '_', 'c', 'm', 'p', 'u', '_', 'e', 'q', '_', 'q', 'b', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_',
+ 'c', 'm', 'p', 'u', '_', 'l', 'e', '_', 'q', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'c', 'm', 'p', 'u',
+ '_', 'l', 't', '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'c', 'o', 'p', 'y', '_', 's', '_', 'b', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c',
+ 'o', 'p', 'y', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'o', 'p', 'y', '_', 's', '_', 'h',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'c', 'o', 'p', 'y', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'o', 'p', 'y', '_', 'u', '_',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'c', 'o', 'p', 'y', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 'o', 'p', 'y', '_', 'u',
+ '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'c', 'o', 'p', 'y', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'c', 't', 'c', 'm', 's',
+ 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'd', 'i', 'v', '_', 's', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'i', 'v', '_', 's', '_', 'd',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'd', 'i', 'v', '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'i', 'v', '_', 's', '_', 'w', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd',
+ 'i', 'v', '_', 'u', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'd', 'i', 'v', '_', 'u', '_', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'i',
+ 'v', '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'd', 'i', 'v', '_', 'u', '_', 'w', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'd', 'l',
+ 's', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'd', 'o', 't', 'p', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'o', 't', 'p', '_',
+ 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'd', 'o', 't', 'p', '_', 's', '_', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'o', 't', 'p',
+ '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'd', 'o', 't', 'p', '_', 'u', '_', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'o', 't',
+ 'p', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 'i', 'p', 's', '_', 'd', 'p', 'a', '_', 'w', '_', 'p', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd',
+ 'p', 'a', 'd', 'd', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'p', 'a', 'd', 'd', '_', 's',
+ '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'd', 'p', 'a', 'd', 'd', '_', 's', '_', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'p', 'a', 'd',
+ 'd', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'd', 'p', 'a', 'd', 'd', '_', 'u', '_', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd',
+ 'p', 'a', 'd', 'd', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'd', 'p', 'a', 'q', '_', 's',
+ '_', 'w', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 'i', 'p', 's', '_', 'd', 'p', 'a', 'q', '_', 's', 'a', '_', 'l',
+ '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i',
+ 'p', 's', '_', 'd', 'p', 'a', 'q', 'x', '_', 's', '_', 'w', '_', 'p', 'h',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's',
+ '_', 'd', 'p', 'a', 'q', 'x', '_', 's', 'a', '_', 'w', '_', 'p', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_',
+ 'd', 'p', 'a', 'u', '_', 'h', '_', 'q', 'b', 'l', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'd', 'p', 'a', 'u',
+ '_', 'h', '_', 'q', 'b', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 'i', 'p', 's', '_', 'd', 'p', 'a', 'x', '_', 'w', '_', 'p',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
+ 's', '_', 'd', 'p', 's', '_', 'w', '_', 'p', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'd', 'p', 's', 'q',
+ '_', 's', '_', 'w', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'd', 'p', 's', 'q', '_', 's', 'a',
+ '_', 'l', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 'i', 'p', 's', '_', 'd', 'p', 's', 'q', 'x', '_', 's', '_', 'w', '_',
+ 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i',
+ 'p', 's', '_', 'd', 'p', 's', 'q', 'x', '_', 's', 'a', '_', 'w', '_', 'p',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
+ 's', '_', 'd', 'p', 's', 'u', '_', 'h', '_', 'q', 'b', 'l', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'd', 'p',
+ 's', 'u', '_', 'h', '_', 'q', 'b', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'p', 's', 'u', 'b', '_', 's',
+ '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'd', 'p', 's', 'u', 'b', '_', 's', '_', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'p', 's', 'u',
+ 'b', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'd', 'p', 's', 'u', 'b', '_', 'u', '_', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd',
+ 'p', 's', 'u', 'b', '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'd', 'p', 's', 'u', 'b', '_', 'u',
+ '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i',
+ 'p', 's', '_', 'd', 'p', 's', 'x', '_', 'w', '_', 'p', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'e', 'x',
+ 't', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i',
+ 'p', 's', '_', 'e', 'x', 't', 'p', 'd', 'p', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'e', 'x', 't', 'r', '_',
+ 'r', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 'i', 'p', 's', '_', 'e', 'x', 't', 'r', '_', 'r', 's', '_', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'e',
+ 'x', 't', 'r', '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'e', 'x', 't', 'r', '_', 'w', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f',
+ 'a', 'd', 'd', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'f', 'a', 'd', 'd', '_', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'a', 'f',
+ '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'f', 'c', 'a', 'f', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'e', 'q', '_', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f',
+ 'c', 'e', 'q', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'f', 'c', 'l', 'a', 's', 's', '_', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c',
+ 'l', 'a', 's', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'l', 'e', '_', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'l',
+ 'e', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'f', 'c', 'l', 't', '_', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'l', 't', '_', 'w',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'f', 'c', 'n', 'e', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'n', 'e', '_', 'w', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'o',
+ 'r', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'f', 'c', 'o', 'r', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'u', 'e', 'q', '_',
+ 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'f', 'c', 'u', 'e', 'q', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'u', 'l', 'e', '_', 'd',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'f', 'c', 'u', 'l', 'e', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'u', 'l', 't', '_', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f',
+ 'c', 'u', 'l', 't', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'u', 'n', '_', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'u',
+ 'n', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'f', 'c', 'u', 'n', 'e', '_', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'c', 'u', 'n', 'e',
+ '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'f', 'd', 'i', 'v', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'd', 'i', 'v', '_', 'w', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f',
+ 'e', 'x', 'd', 'o', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'f', 'e', 'x', 'd', 'o', '_', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'e',
+ 'x', 'p', '2', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'f', 'e', 'x', 'p', '2', '_', 'w', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'e', 'x',
+ 'u', 'p', 'l', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'f', 'e', 'x', 'u', 'p', 'l', '_', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'e',
+ 'x', 'u', 'p', 'r', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'f', 'e', 'x', 'u', 'p', 'r', '_', 'w', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f',
+ 'f', 'i', 'n', 't', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'f', 'i', 'n', 't', '_', 's',
+ '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'f', 'f', 'i', 'n', 't', '_', 'u', '_', 'd', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'f', 'i', 'n',
+ 't', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'f', 'f', 'q', 'l', '_', 'd', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'f', 'q', 'l',
+ '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'f', 'f', 'q', 'r', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'f', 'q', 'r', '_', 'w', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f',
+ 'i', 'l', 'l', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'f', 'i', 'l', 'l', '_', 'd', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'i', 'l', 'l',
+ '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'f', 'i', 'l', 'l', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'l', 'o', 'g', '2', '_', 'd',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'f', 'l', 'o', 'g', '2', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'm', 'a', 'd', 'd', '_', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f',
+ 'm', 'a', 'd', 'd', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'f', 'm', 'a', 'x', '_', 'a', '_', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f',
+ 'm', 'a', 'x', '_', 'a', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'm', 'a', 'x', '_', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'm',
+ 'a', 'x', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'f', 'm', 'i', 'n', '_', 'a', '_', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'm', 'i',
+ 'n', '_', 'a', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'f', 'm', 'i', 'n', '_', 'd', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'm', 'i', 'n',
+ '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'f', 'm', 's', 'u', 'b', '_', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'm', 's', 'u', 'b', '_',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'f', 'm', 'u', 'l', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'm', 'u', 'l', '_', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'r',
+ 'c', 'p', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'f', 'r', 'c', 'p', '_', 'w', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'r', 'i', 'n', 't',
+ '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'f', 'r', 'i', 'n', 't', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 'r', 's', 'q', 'r', 't',
+ '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'f', 'r', 's', 'q', 'r', 't', '_', 'w', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'a', 'f', '_',
+ 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'f', 's', 'a', 'f', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'e', 'q', '_', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's',
+ 'e', 'q', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'f', 's', 'l', 'e', '_', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'l', 'e', '_',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'f', 's', 'l', 't', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'l', 't', '_', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's',
+ 'n', 'e', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'f', 's', 'n', 'e', '_', 'w', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'o', 'r', '_',
+ 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'f', 's', 'o', 'r', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'q', 'r', 't', '_', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f',
+ 's', 'q', 'r', 't', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'u', 'b', '_', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'u',
+ 'b', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'f', 's', 'u', 'e', 'q', '_', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'u', 'e', 'q',
+ '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'f', 's', 'u', 'l', 'e', '_', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'u', 'l', 'e', '_',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'f', 's', 'u', 'l', 't', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'u', 'l', 't', '_', 'w',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'f', 's', 'u', 'n', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'u', 'n', '_', 'w', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 's', 'u',
+ 'n', 'e', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'f', 's', 'u', 'n', 'e', '_', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 't', 'i', 'n',
+ 't', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'f', 't', 'i', 'n', 't', '_', 's', '_', 'w', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f',
+ 't', 'i', 'n', 't', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 't', 'i', 'n', 't', '_', 'u',
+ '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'f', 't', 'q', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 't', 'q', '_', 'w', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 't', 'r',
+ 'u', 'n', 'c', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 't', 'r', 'u', 'n', 'c', '_', 's',
+ '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'f', 't', 'r', 'u', 'n', 'c', '_', 'u', '_', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'f', 't', 'r',
+ 'u', 'n', 'c', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'h', 'a', 'd', 'd', '_', 's', '_', 'd',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'h', 'a', 'd', 'd', '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'h', 'a', 'd', 'd', '_', 's', '_',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'h', 'a', 'd', 'd', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'h', 'a', 'd', 'd', '_', 'u',
+ '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'h', 'a', 'd', 'd', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'h', 's', 'u', 'b', '_',
+ 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'h', 's', 'u', 'b', '_', 's', '_', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'h', 's', 'u', 'b',
+ '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'h', 's', 'u', 'b', '_', 'u', '_', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'h', 's', 'u',
+ 'b', '_', 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'h', 's', 'u', 'b', '_', 'u', '_', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'l',
+ 'v', 'e', 'v', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'i', 'l', 'v', 'e', 'v', '_', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'l', 'v',
+ 'e', 'v', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'i', 'l', 'v', 'e', 'v', '_', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'l', 'v', 'l',
+ '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'i', 'l', 'v', 'l', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'l', 'v', 'l', '_', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i',
+ 'l', 'v', 'l', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'i', 'l', 'v', 'o', 'd', '_', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'l', 'v',
+ 'o', 'd', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'i', 'l', 'v', 'o', 'd', '_', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'l', 'v', 'o',
+ 'd', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'i', 'l', 'v', 'r', '_', 'b', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'l', 'v', 'r', '_', 'd',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'i', 'l', 'v', 'r', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'i', 'l', 'v', 'r', '_', 'w', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'n', 's',
+ 'e', 'r', 't', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'i', 'n', 's', 'e', 'r', 't', '_', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'n',
+ 's', 'e', 'r', 't', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'i', 'n', 's', 'e', 'r', 't', '_', 'w', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_',
+ 'i', 'n', 's', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'i', 'n', 's', 'v', 'e', '_', 'b', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'n', 's', 'v',
+ 'e', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'i', 'n', 's', 'v', 'e', '_', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'i', 'n', 's', 'v', 'e',
+ '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i',
+ 'p', 's', '_', 'l', 'b', 'u', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'l', 'd', '_', 'b', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'l', 'd', '_', 'd',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'l', 'd', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'l', 'd', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'l', 'd', 'i', '_', 'b', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'l', 'd',
+ 'i', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'l', 'd', 'i', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'l', 'd', 'i', '_', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'l',
+ 'h', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i',
+ 'p', 's', '_', 'l', 's', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 'i', 'p', 's', '_', 'l', 'w', 'x', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'a', 'd', 'd',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'm', 'a', 'd', 'd', '_', 'q', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'd', 'd', '_', 'q', '_',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'm', 'a', 'd', 'd', 'r', '_', 'q', '_', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'd', 'd', 'r',
+ '_', 'q', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 'i', 'p', 's', '_', 'm', 'a', 'd', 'd', 'u', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'd', 'd', 'v',
+ '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'm', 'a', 'd', 'd', 'v', '_', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'd', 'd', 'v', '_',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'm', 'a', 'd', 'd', 'v', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'a', 'q', '_', 's', '_',
+ 'w', '_', 'p', 'h', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 'i', 'p', 's', '_', 'm', 'a', 'q', '_', 's', '_', 'w', '_', 'p',
+ 'h', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i',
+ 'p', 's', '_', 'm', 'a', 'q', '_', 's', 'a', '_', 'w', '_', 'p', 'h', 'l',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's',
+ '_', 'm', 'a', 'q', '_', 's', 'a', '_', 'w', '_', 'p', 'h', 'r', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a',
+ 'x', '_', 'a', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'm', 'a', 'x', '_', 'a', '_', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'x',
+ '_', 'a', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'm', 'a', 'x', '_', 'a', '_', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'x', '_',
+ 's', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'm', 'a', 'x', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'x', '_', 's',
+ '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'm', 'a', 'x', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'x', '_', 'u', '_',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'm', 'a', 'x', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'x', '_', 'u', '_', 'h',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'm', 'a', 'x', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'x', 'i', '_', 's', '_', 'b',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'm', 'a', 'x', 'i', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'x', 'i', '_', 's', '_',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'm', 'a', 'x', 'i', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'x', 'i', '_', 'u',
+ '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'm', 'a', 'x', 'i', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'a', 'x', 'i', '_',
+ 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'm', 'a', 'x', 'i', '_', 'u', '_', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'i', 'n', '_',
+ 'a', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'm', 'i', 'n', '_', 'a', '_', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'i', 'n', '_', 'a',
+ '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'm', 'i', 'n', '_', 'a', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'i', 'n', '_', 's', '_',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'm', 'i', 'n', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'i', 'n', '_', 's', '_', 'h',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'm', 'i', 'n', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'i', 'n', '_', 'u', '_', 'b', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm',
+ 'i', 'n', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'm', 'i', 'n', '_', 'u', '_', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'i',
+ 'n', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'm', 'i', 'n', 'i', '_', 's', '_', 'b', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'i',
+ 'n', 'i', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'm', 'i', 'n', 'i', '_', 's', '_', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm',
+ 'i', 'n', 'i', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'i', 'n', 'i', '_', 'u', '_', 'b',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'm', 'i', 'n', 'i', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'i', 'n', 'i', '_', 'u', '_',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'm', 'i', 'n', 'i', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'o', 'd', '_', 's', '_',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'm', 'o', 'd', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'o', 'd', '_', 's', '_', 'h',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'm', 'o', 'd', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'o', 'd', '_', 'u', '_', 'b', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm',
+ 'o', 'd', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 'm', 'o', 'd', '_', 'u', '_', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'o',
+ 'd', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 'i', 'p', 's', '_', 'm', 'o', 'd', 's', 'u', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'o', 'v',
+ 'e', '_', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 'i', 'p', 's', '_', 'm', 's', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 's', 'u', 'b', '_', 'q', '_',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'm', 's', 'u', 'b', '_', 'q', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 's', 'u', 'b', 'r', '_',
+ 'q', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'm', 's', 'u', 'b', 'r', '_', 'q', '_', 'w', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 's',
+ 'u', 'b', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'm', 's', 'u', 'b', 'v', '_', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 's', 'u', 'b', 'v',
+ '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'm', 's', 'u', 'b', 'v', '_', 'h', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 's', 'u', 'b', 'v', '_',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
+ 's', '_', 'm', 't', 'h', 'l', 'i', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'u', 'l', '_', 'p', 'h',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 'm', 'u', 'l', '_', 'q', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'u', 'l', '_', 'q', '_', 'w', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_',
+ 'm', 'u', 'l', '_', 's', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'u', 'l', 'e', 'q', '_',
+ 's', '_', 'w', '_', 'p', 'h', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'u', 'l', 'e', 'q', '_', 's',
+ '_', 'w', '_', 'p', 'h', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'u', 'l', 'e', 'u', '_', 's', '_',
+ 'p', 'h', '_', 'q', 'b', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'u', 'l', 'e', 'u', '_', 's', '_',
+ 'p', 'h', '_', 'q', 'b', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'u', 'l', 'q', '_', 'r', 's', '_',
+ 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i',
+ 'p', 's', '_', 'm', 'u', 'l', 'q', '_', 'r', 's', '_', 'w', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'u',
+ 'l', 'q', '_', 's', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'u', 'l', 'q', '_', 's', '_',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'm', 'u', 'l', 'r', '_', 'q', '_', 'h', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'u', 'l', 'r', '_', 'q',
+ '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i',
+ 'p', 's', '_', 'm', 'u', 'l', 's', 'a', '_', 'w', '_', 'p', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm',
+ 'u', 'l', 's', 'a', 'q', '_', 's', '_', 'w', '_', 'p', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'm', 'u',
+ 'l', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i',
+ 'p', 's', '_', 'm', 'u', 'l', 't', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'u', 'l', 'v', '_', 'b', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm',
+ 'u', 'l', 'v', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'm', 'u', 'l', 'v', '_', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'm', 'u', 'l', 'v',
+ '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'n', 'l', 'o', 'c', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'n', 'l', 'o', 'c', '_', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'n',
+ 'l', 'o', 'c', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'n', 'l', 'o', 'c', '_', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'n', 'l', 'z', 'c',
+ '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'n', 'l', 'z', 'c', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'n', 'l', 'z', 'c', '_', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'n',
+ 'l', 'z', 'c', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'n', 'o', 'r', '_', 'v', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'n', 'o', 'r', 'i', '_',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'o', 'r', '_', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'o', 'r', 'i', '_', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'a', 'c', 'k',
+ 'r', 'l', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 'p', 'c', 'k', 'e', 'v', '_', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'p', 'c', 'k',
+ 'e', 'v', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'p', 'c', 'k', 'e', 'v', '_', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'p', 'c', 'k', 'e',
+ 'v', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 'p', 'c', 'k', 'o', 'd', '_', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'p', 'c', 'k', 'o', 'd',
+ '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 'p', 'c', 'k', 'o', 'd', '_', 'h', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'p', 'c', 'k', 'o', 'd', '_',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'p', 'c', 'n', 't', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'p', 'c', 'n', 't', '_', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'p', 'c',
+ 'n', 't', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'p', 'c', 'n', 't', '_', 'w', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'i', 'c', 'k',
+ '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 'i', 'p', 's', '_', 'p', 'i', 'c', 'k', '_', 'q', 'b', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'r', 'e',
+ 'c', 'e', 'q', '_', 'w', '_', 'p', 'h', 'l', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'r', 'e', 'c', 'e',
+ 'q', '_', 'w', '_', 'p', 'h', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'r', 'e', 'c', 'e', 'q', 'u',
+ '_', 'p', 'h', '_', 'q', 'b', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'r', 'e', 'c', 'e', 'q', 'u',
+ '_', 'p', 'h', '_', 'q', 'b', 'l', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'r', 'e', 'c', 'e', 'q',
+ 'u', '_', 'p', 'h', '_', 'q', 'b', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'r', 'e', 'c', 'e', 'q',
+ 'u', '_', 'p', 'h', '_', 'q', 'b', 'r', 'a', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'r', 'e', 'c', 'e',
+ 'u', '_', 'p', 'h', '_', 'q', 'b', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'r', 'e', 'c', 'e', 'u',
+ '_', 'p', 'h', '_', 'q', 'b', 'l', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'r', 'e', 'c', 'e', 'u',
+ '_', 'p', 'h', '_', 'q', 'b', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'r', 'e', 'c', 'e', 'u', '_',
+ 'p', 'h', '_', 'q', 'b', 'r', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'r', 'e', 'c', 'r', '_', 'q',
+ 'b', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 'i', 'p', 's', '_', 'p', 'r', 'e', 'c', 'r', '_', 's', 'r', 'a', '_',
+ 'p', 'h', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 'i', 'p', 's', '_', 'p', 'r', 'e', 'c', 'r', '_', 's', 'r', 'a', '_',
+ 'r', '_', 'p', 'h', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 'i', 'p', 's', '_', 'p', 'r', 'e', 'c', 'r', 'q', '_', 'p',
+ 'h', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 'i', 'p', 's', '_', 'p', 'r', 'e', 'c', 'r', 'q', '_', 'q', 'b', '_', 'p',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
+ 's', '_', 'p', 'r', 'e', 'c', 'r', 'q', '_', 'r', 's', '_', 'p', 'h', '_',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
+ 's', '_', 'p', 'r', 'e', 'c', 'r', 'q', 'u', '_', 's', '_', 'q', 'b', '_',
+ 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i',
+ 'p', 's', '_', 'p', 'r', 'e', 'p', 'e', 'n', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'r', 'a', 'd', 'd',
+ 'u', '_', 'w', '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 'i', 'p', 's', '_', 'r', 'd', 'd', 's', 'p', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'r', 'e',
+ 'p', 'l', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 'i', 'p', 's', '_', 'r', 'e', 'p', 'l', '_', 'q', 'b', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'a',
+ 't', '_', 's', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 's', 'a', 't', '_', 's', '_', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'a', 't',
+ '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 's', 'a', 't', '_', 's', '_', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'a', 't', '_',
+ 'u', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 's', 'a', 't', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'a', 't', '_', 'u',
+ '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 's', 'a', 't', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'h', 'f', '_', 'b', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's',
+ 'h', 'f', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 's', 'h', 'f', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'h', 'i', 'l', 'o',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's',
+ '_', 's', 'h', 'l', 'l', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'h', 'l', 'l', '_', 'q',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
+ 's', '_', 's', 'h', 'l', 'l', '_', 's', '_', 'p', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'h', 'l',
+ 'l', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 'i', 'p', 's', '_', 's', 'h', 'r', 'a', '_', 'p', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's',
+ 'h', 'r', 'a', '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'h', 'r', 'a', '_', 'r', '_', 'p',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
+ 's', '_', 's', 'h', 'r', 'a', '_', 'r', '_', 'q', 'b', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'h', 'r',
+ 'a', '_', 'r', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 'i', 'p', 's', '_', 's', 'h', 'r', 'l', '_', 'p', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's',
+ 'h', 'r', 'l', '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 's', 'l', 'd', '_', 'b', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'l', 'd', '_',
+ 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 's', 'l', 'd', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 's', 'l', 'd', '_', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'l', 'd', 'i',
+ '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 's', 'l', 'd', 'i', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'l', 'd', 'i', '_', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's',
+ 'l', 'd', 'i', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 's', 'l', 'l', '_', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'l', 'l', '_', 'd',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 's', 'l', 'l', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 's', 'l', 'l', '_', 'w', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'l', 'l', 'i', '_',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 's', 'l', 'l', 'i', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'l', 'l', 'i', '_', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'l',
+ 'l', 'i', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 's', 'p', 'l', 'a', 't', '_', 'b', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'p', 'l', 'a',
+ 't', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 's', 'p', 'l', 'a', 't', '_', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'p', 'l', 'a', 't',
+ '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 's', 'p', 'l', 'a', 't', 'i', '_', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'p', 'l', 'a', 't',
+ 'i', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 's', 'p', 'l', 'a', 't', 'i', '_', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'p', 'l', 'a',
+ 't', 'i', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 's', 'r', 'a', '_', 'b', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'a', '_', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's',
+ 'r', 'a', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 's', 'r', 'a', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'a', 'i', '_', 'b',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 's', 'r', 'a', 'i', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'a', 'i', '_', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'a',
+ 'i', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 's', 'r', 'a', 'r', '_', 'b', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'a', 'r', '_', 'd',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 's', 'r', 'a', 'r', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'a', 'r', '_', 'w', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'a',
+ 'r', 'i', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 's', 'r', 'a', 'r', 'i', '_', 'd', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'a', 'r',
+ 'i', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 's', 'r', 'a', 'r', 'i', '_', 'w', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'l', '_', 'b',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 's', 'r', 'l', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 's', 'r', 'l', '_', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'l', '_', 'w',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 's', 'r', 'l', 'i', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'l', 'i', '_', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'l',
+ 'i', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 's', 'r', 'l', 'i', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'l', 'r', '_', 'b',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 's', 'r', 'l', 'r', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'l', 'r', '_', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'l',
+ 'r', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 's', 'r', 'l', 'r', 'i', '_', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'l', 'r', 'i',
+ '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 's', 'r', 'l', 'r', 'i', '_', 'h', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'r', 'l', 'r', 'i', '_',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 's', 't', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 's', 't', '_', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 't', '_', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 't',
+ '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i',
+ 'p', 's', '_', 's', 'u', 'b', 'q', '_', 'p', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'u', 'b', 'q',
+ '_', 's', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 'i', 'p', 's', '_', 's', 'u', 'b', 'q', '_', 's', '_', 'w', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_',
+ 's', 'u', 'b', 'q', 'h', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'u', 'b', 'q', 'h', '_',
+ 'r', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 'i', 'p', 's', '_', 's', 'u', 'b', 'q', 'h', '_', 'r', '_', 'w', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_',
+ 's', 'u', 'b', 'q', 'h', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 's', '_', 's', '_', 'b',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 's', 'u', 'b', 's', '_', 's', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 's', '_', 's', '_',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 's', 'u', 'b', 's', '_', 's', '_', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 's', '_', 'u',
+ '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's',
+ 'a', '_', 's', 'u', 'b', 's', '_', 'u', '_', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 's', '_',
+ 'u', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 's', 'u', 'b', 's', '_', 'u', '_', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 's',
+ 'u', 's', '_', 'u', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 's', 'u', 's', '_', 'u', '_',
+ 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 's', 'u', 'b', 's', 'u', 's', '_', 'u', '_', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 's',
+ 'u', 's', '_', 'u', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 's', 'u', 'u', '_', 's', '_',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 's', 'u', 'b', 's', 'u', 'u', '_', 's', '_', 'd', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 's',
+ 'u', 'u', '_', 's', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 's', 'u', 'u', '_', 's', '_',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
+ 's', '_', 's', 'u', 'b', 'u', '_', 'p', 'h', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'u', 'b', 'u', '_',
+ 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i',
+ 'p', 's', '_', 's', 'u', 'b', 'u', '_', 's', '_', 'p', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'u',
+ 'b', 'u', '_', 's', '_', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 's', 'u', 'b', 'u', 'h', '_', 'q',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p',
+ 's', '_', 's', 'u', 'b', 'u', 'h', '_', 'r', '_', 'q', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b',
+ 'v', '_', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm',
+ 's', 'a', '_', 's', 'u', 'b', 'v', '_', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 'v', '_', 'h',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_',
+ 's', 'u', 'b', 'v', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b', 'v', 'i', '_', 'b', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u',
+ 'b', 'v', 'i', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'm', 's', 'a', '_', 's', 'u', 'b', 'v', 'i', '_', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 's', 'u', 'b',
+ 'v', 'i', '_', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'v', 's', 'h', 'f', '_', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'v', 's', 'h', 'f', '_',
+ 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 's', 'a',
+ '_', 'v', 's', 'h', 'f', '_', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'm', 's', 'a', '_', 'v', 's', 'h', 'f', '_', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'i', 'p', 's', '_', 'w',
+ 'r', 'd', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'm', 's', 'a', '_', 'x', 'o', 'r', '_', 'v', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'm', 's', 'a', '_', 'x', 'o', 'r', 'i', '_', 'b',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'a', 'd', 'd', '_', 'r', 'm', '_',
+ 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'a', 'd', 'd', '_', 'r', 'm',
+ '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'a', 'd', 'd', '_', 'r',
+ 'm', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'a', 'd', 'd', '_', 'r', 'n', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'a', 'd', 'd', '_', 'r', 'n', '_', 'f', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'a', 'd', 'd', '_', 'r', 'n', '_', 'f', 't', 'z', '_', 'f', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 'a', 'd', 'd', '_', 'r', 'p', '_', 'd',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'a', 'd', 'd', '_', 'r', 'p', '_',
+ 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'a', 'd', 'd', '_', 'r', 'p',
+ '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'a',
+ 'd', 'd', '_', 'r', 'z', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'a', 'd', 'd', '_', 'r', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'a', 'd', 'd', '_', 'r', 'z', '_', 'f', 't', 'z', '_', 'f', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 'b', 'a', 'r', '_', 's', 'y', 'n', 'c', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 'b', 'a', 'r', '_', 'w', 'a', 'r', 'p',
'_', 's', 'y', 'n', 'c', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'b', 'a',
- 'r', '_', 'w', 'a', 'r', 'p', '_', 's', 'y', 'n', 'c', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'b', 'a', 'r', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 'b', 'a', 'r', '_', 'n', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'b', 'a',
- 'r', 'r', 'i', 'e', 'r', '_', 's', 'y', 'n', 'c', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'b', 'a', 'r', 'r', 'i', 'e', 'r', '_', 's', 'y', 'n', 'c',
- '_', 'c', 'n', 't', '\000', '_', '_', 's', 'y', 'n', 'c', 't', 'h', 'r', 'e',
- 'a', 'd', 's', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'b', 'a', 'r', '0',
- '_', 'a', 'n', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'b', 'a', 'r',
- '0', '_', 'o', 'r', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'b', 'a', 'r',
- '0', '_', 'p', 'o', 'p', 'c', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'b',
- 'i', 't', 'c', 'a', 's', 't', '_', 'd', '2', 'l', 'l', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'b', 'i', 't', 'c', 'a', 's', 't', '_', 'f', '2', 'i',
+ 'r', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'b', 'a', 'r', '_', 'n', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 'b', 'a', 'r', 'r', 'i', 'e', 'r', '_',
+ 's', 'y', 'n', 'c', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'b', 'a', 'r',
+ 'r', 'i', 'e', 'r', '_', 's', 'y', 'n', 'c', '_', 'c', 'n', 't', '\000', '_',
+ '_', 's', 'y', 'n', 'c', 't', 'h', 'r', 'e', 'a', 'd', 's', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 'b', 'a', 'r', '0', '_', 'a', 'n', 'd', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 'b', 'a', 'r', '0', '_', 'o', 'r', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 'b', 'a', 'r', '0', '_', 'p', 'o', 'p', 'c',
'\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'b', 'i', 't', 'c', 'a', 's', 't',
- '_', 'i', '2', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'b', 'i', 't',
- 'c', 'a', 's', 't', '_', 'l', 'l', '2', 'd', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'c', 'e', 'i', 'l', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 'c', 'e', 'i', 'l', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 'c', 'e', 'i', 'l', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'c', 'o', 's', '_', 'a', 'p', 'p', 'r', 'o', 'x', '_', 'f',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'c', 'o', 's', '_', 'a', 'p', 'p',
- 'r', 'o', 'x', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'd', '2', 'f', '_', 'r', 'm', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 'd', '2', 'f', '_', 'r', 'm', '_', 'f', 't', 'z', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'd', '2', 'f', '_', 'r', 'n', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'd', '2', 'f', '_', 'r', 'n', '_', 'f', 't', 'z', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'd', '2', 'f', '_', 'r', 'p', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 'd', '2', 'f', '_', 'r', 'p', '_', 'f', 't', 'z',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2', 'f', '_', 'r', 'z', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2', 'f', '_', 'r', 'z', '_', 'f',
- 't', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2', 'i', '_', 'h',
- 'i', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2', 'i', '_', 'l', 'o',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2', 'i', '_', 'r', 'm', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2', 'i', '_', 'r', 'n', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'd', '2', 'i', '_', 'r', 'p', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 'd', '2', 'i', '_', 'r', 'z', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'd', '2', 'l', 'l', '_', 'r', 'm', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'd', '2', 'l', 'l', '_', 'r', 'n', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'd', '2', 'l', 'l', '_', 'r', 'p', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'd', '2', 'l', 'l', '_', 'r', 'z', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'd', '2', 'u', 'i', '_', 'r', 'm', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'd', '2', 'u', 'i', '_', 'r', 'n', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'd', '2', 'u', 'i', '_', 'r', 'p', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'd', '2', 'u', 'i', '_', 'r', 'z', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'd', '2', 'u', 'l', 'l', '_', 'r', 'm', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 'd', '2', 'u', 'l', 'l', '_', 'r', 'n', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'd', '2', 'u', 'l', 'l', '_', 'r', 'p', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2', 'u', 'l', 'l', '_', 'r', 'z',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', 'i', 'v', '_', 'a', 'p', 'p',
- 'r', 'o', 'x', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', 'i',
- 'v', '_', 'a', 'p', 'p', 'r', 'o', 'x', '_', 'f', 't', 'z', '_', 'f', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'd', 'i', 'v', '_', 'r', 'm', '_', 'd',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', 'i', 'v', '_', 'r', 'm', '_',
- 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', 'i', 'v', '_', 'r', 'm',
- '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd',
- 'i', 'v', '_', 'r', 'n', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 'd', 'i', 'v', '_', 'r', 'n', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 'd', 'i', 'v', '_', 'r', 'n', '_', 'f', 't', 'z', '_', 'f', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'd', 'i', 'v', '_', 'r', 'p', '_', 'd', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'd', 'i', 'v', '_', 'r', 'p', '_', 'f',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', 'i', 'v', '_', 'r', 'p', '_',
- 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', 'i',
- 'v', '_', 'r', 'z', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd',
- 'i', 'v', '_', 'r', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 'd', 'i', 'v', '_', 'r', 'z', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 'e', 'x', '2', '_', 'a', 'p', 'p', 'r', 'o', 'x',
- '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'e', 'x', '2', '_', 'a',
- 'p', 'p', 'r', 'o', 'x', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 'e', 'x', '2', '_', 'a', 'p', 'p', 'r', 'o', 'x', '_', 'f', 't', 'z', '_',
- 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'h', '_', 'r', 'n',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'h', '_', 'r', 'n', '_',
- 'f', 't', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'i', '_',
- 'r', 'm', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'i', '_', 'r',
- 'm', '_', 'f', 't', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2',
- 'i', '_', 'r', 'n', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'i',
+ '_', 'd', '2', 'l', 'l', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'b', 'i',
+ 't', 'c', 'a', 's', 't', '_', 'f', '2', 'i', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'b', 'i', 't', 'c', 'a', 's', 't', '_', 'i', '2', 'f', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 'b', 'i', 't', 'c', 'a', 's', 't', '_', 'l',
+ 'l', '2', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'c', 'e', 'i', 'l',
+ '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'c', 'e', 'i', 'l', '_',
+ 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'c', 'e', 'i', 'l', '_', 'f',
+ 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'c', 'o', 's',
+ '_', 'a', 'p', 'p', 'r', 'o', 'x', '_', 'f', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'c', 'o', 's', '_', 'a', 'p', 'p', 'r', 'o', 'x', '_', 'f', 't',
+ 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2', 'f', '_',
+ 'r', 'm', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2', 'f', '_', 'r',
+ 'm', '_', 'f', 't', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2',
+ 'f', '_', 'r', 'n', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2', 'f',
'_', 'r', 'n', '_', 'f', 't', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 'f', '2', 'i', '_', 'r', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f',
- '2', 'i', '_', 'r', 'p', '_', 'f', 't', 'z', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'f', '2', 'i', '_', 'r', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 'f', '2', 'i', '_', 'r', 'z', '_', 'f', 't', 'z', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'f', '2', 'l', 'l', '_', 'r', 'm', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'f', '2', 'l', 'l', '_', 'r', 'm', '_', 'f', 't', 'z',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'l', 'l', '_', 'r', 'n',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'l', 'l', '_', 'r', 'n',
- '_', 'f', 't', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'l',
- 'l', '_', 'r', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'l',
- 'l', '_', 'r', 'p', '_', 'f', 't', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 'f', '2', 'l', 'l', '_', 'r', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 'f', '2', 'l', 'l', '_', 'r', 'z', '_', 'f', 't', 'z', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 'f', '2', 'u', 'i', '_', 'r', 'm', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 'f', '2', 'u', 'i', '_', 'r', 'm', '_', 'f', 't',
- 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'u', 'i', '_', 'r',
- 'n', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'u', 'i', '_', 'r',
- 'n', '_', 'f', 't', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2',
- 'u', 'i', '_', 'r', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2',
- 'u', 'i', '_', 'r', 'p', '_', 'f', 't', 'z', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'f', '2', 'u', 'i', '_', 'r', 'z', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'f', '2', 'u', 'i', '_', 'r', 'z', '_', 'f', 't', 'z', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'u', 'l', 'l', '_', 'r', 'm', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'u', 'l', 'l', '_', 'r', 'm',
- '_', 'f', 't', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'u',
- 'l', 'l', '_', 'r', 'n', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2',
- 'u', 'l', 'l', '_', 'r', 'n', '_', 'f', 't', 'z', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'f', '2', 'u', 'l', 'l', '_', 'r', 'p', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'f', '2', 'u', 'l', 'l', '_', 'r', 'p', '_', 'f', 't',
- 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'u', 'l', 'l', '_',
- 'r', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'u', 'l', 'l',
- '_', 'r', 'z', '_', 'f', 't', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 'f', 'a', 'b', 's', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f',
- 'a', 'b', 's', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'a',
- 'b', 's', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 'f', 'l', 'o', 'o', 'r', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 'f', 'l', 'o', 'o', 'r', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 'f', 'l', 'o', 'o', 'r', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 'f', 'm', 'a', '_', 'r', 'm', '_', 'd', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'f', 'm', 'a', '_', 'r', 'm', '_', 'f', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'm', 'a', '_', 'r', 'm', '_', 'f',
- 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'm', 'a',
- '_', 'r', 'n', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'm',
- 'a', '_', 'r', 'n', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f',
- 'm', 'a', '_', 'r', 'n', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'f', 'm', 'a', '_', 'r', 'p', '_', 'd', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 'f', 'm', 'a', '_', 'r', 'p', '_', 'f', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'f', 'm', 'a', '_', 'r', 'p', '_', 'f', 't',
- 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'm', 'a', '_',
- 'r', 'z', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'm', 'a',
- '_', 'r', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'm',
- 'a', '_', 'r', 'z', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'f', 'm', 'a', 'x', '_', 'd', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'f', 'm', 'a', 'x', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 'f', 'm', 'a', 'x', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'f', 'm', 'i', 'n', '_', 'd', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'f', 'm', 'i', 'n', '_', 'f', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'f', 'm', 'i', 'n', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 'f', 'n', 's', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 'i', '2', 'd', '_', 'r', 'm', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 'i', '2', 'd', '_', 'r', 'n', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'i',
- '2', 'd', '_', 'r', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'i', '2',
- 'd', '_', 'r', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'i', '2', 'f',
- '_', 'r', 'm', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'i', '2', 'f', '_',
- 'r', 'n', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'i', '2', 'f', '_', 'r',
- 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'i', '2', 'f', '_', 'r', 'z',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'i', 's', 's', 'p', 'a', 'c', 'e',
- 'p', '_', 'c', 'o', 'n', 's', 't', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 'i', 's', 's', 'p', 'a', 'c', 'e', 'p', '_', 'g', 'l', 'o', 'b', 'a', 'l',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'i', 's', 's', 'p', 'a', 'c', 'e',
- 'p', '_', 'l', 'o', 'c', 'a', 'l', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 'i', 's', 's', 'p', 'a', 'c', 'e', 'p', '_', 's', 'h', 'a', 'r', 'e', 'd',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'i', 's', 't', 'y', 'p', 'e', 'p',
- '_', 's', 'a', 'm', 'p', 'l', 'e', 'r', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 'i', 's', 't', 'y', 'p', 'e', 'p', '_', 's', 'u', 'r', 'f', 'a', 'c',
- 'e', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'i', 's', 't', 'y', 'p', 'e',
- 'p', '_', 't', 'e', 'x', 't', 'u', 'r', 'e', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'l', 'g', '2', '_', 'a', 'p', 'p', 'r', 'o', 'x', '_', 'd', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'l', 'g', '2', '_', 'a', 'p', 'p', 'r',
- 'o', 'x', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'l', 'g', '2',
- '_', 'a', 'p', 'p', 'r', 'o', 'x', '_', 'f', 't', 'z', '_', 'f', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'l', 'l', '2', 'd', '_', 'r', 'm', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'l', 'l', '2', 'd', '_', 'r', 'n', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'l', 'l', '2', 'd', '_', 'r', 'p', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'l', 'l', '2', 'd', '_', 'r', 'z', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'l', 'l', '2', 'f', '_', 'r', 'm', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'l', 'l', '2', 'f', '_', 'r', 'n', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'l', 'l', '2', 'f', '_', 'r', 'p', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'l', 'l', '2', 'f', '_', 'r', 'z', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'l', 'o', 'h', 'i', '_', 'i', '2', 'd', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'm', 'a', 't', 'c', 'h', '_', 'a', 'n',
- 'y', '_', 's', 'y', 'n', 'c', '_', 'i', '3', '2', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'm', 'a', 't', 'c', 'h', '_', 'a', 'n', 'y', '_', 's', 'y',
- 'n', 'c', '_', 'i', '6', '4', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'm',
- 'e', 'm', 'b', 'a', 'r', '_', 'c', 't', 'a', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'm', 'e', 'm', 'b', 'a', 'r', '_', 'g', 'l', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'm', 'e', 'm', 'b', 'a', 'r', '_', 's', 'y', 's', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'm', 'u', 'l', '_', 'r', 'm', '_', 'd',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'm', 'u', 'l', '_', 'r', 'm', '_',
- 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'm', 'u', 'l', '_', 'r', 'm',
- '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'm',
- 'u', 'l', '_', 'r', 'n', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 'm', 'u', 'l', '_', 'r', 'n', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 'm', 'u', 'l', '_', 'r', 'n', '_', 'f', 't', 'z', '_', 'f', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'm', 'u', 'l', '_', 'r', 'p', '_', 'd', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'm', 'u', 'l', '_', 'r', 'p', '_', 'f',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'm', 'u', 'l', '_', 'r', 'p', '_',
- 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'm', 'u',
- 'l', '_', 'r', 'z', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'm',
- 'u', 'l', '_', 'r', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 'm', 'u', 'l', '_', 'r', 'z', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 'm', 'u', 'l', '2', '4', '_', 'i', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 'm', 'u', 'l', '2', '4', '_', 'u', 'i', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'm', 'u', 'l', 'h', 'i', '_', 'i', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'm', 'u', 'l', 'h', 'i', '_', 'l', 'l', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'm', 'u', 'l', 'h', 'i', '_', 'u', 'i',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'm', 'u', 'l', 'h', 'i', '_', 'u',
- 'l', 'l', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'p', 'r', 'm', 't', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'c', 'p', '_', 'a', 'p', 'p', 'r',
- 'o', 'x', '_', 'f', 't', 'z', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 'r', 'c', 'p', '_', 'r', 'm', '_', 'd', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'r', 'c', 'p', '_', 'r', 'm', '_', 'f', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'r', 'c', 'p', '_', 'r', 'm', '_', 'f', 't', 'z', '_', 'f',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'c', 'p', '_', 'r', 'n', '_',
- 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'c', 'p', '_', 'r', 'n',
- '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'c', 'p', '_', 'r',
+ 'd', '2', 'f', '_', 'r', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd',
+ '2', 'f', '_', 'r', 'p', '_', 'f', 't', 'z', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'd', '2', 'f', '_', 'r', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'd', '2', 'f', '_', 'r', 'z', '_', 'f', 't', 'z', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 'd', '2', 'i', '_', 'h', 'i', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 'd', '2', 'i', '_', 'l', 'o', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'd', '2', 'i', '_', 'r', 'm', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'd', '2', 'i', '_', 'r', 'n', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'd', '2', 'i', '_', 'r', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd',
+ '2', 'i', '_', 'r', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2',
+ 'l', 'l', '_', 'r', 'm', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2',
+ 'l', 'l', '_', 'r', 'n', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2',
+ 'l', 'l', '_', 'r', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2',
+ 'l', 'l', '_', 'r', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2',
+ 'u', 'i', '_', 'r', 'm', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2',
+ 'u', 'i', '_', 'r', 'n', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2',
+ 'u', 'i', '_', 'r', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2',
+ 'u', 'i', '_', 'r', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', '2',
+ 'u', 'l', 'l', '_', 'r', 'm', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd',
+ '2', 'u', 'l', 'l', '_', 'r', 'n', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'd', '2', 'u', 'l', 'l', '_', 'r', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'd', '2', 'u', 'l', 'l', '_', 'r', 'z', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'd', 'i', 'v', '_', 'a', 'p', 'p', 'r', 'o', 'x', '_', 'f', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 'd', 'i', 'v', '_', 'a', 'p', 'p', 'r',
+ 'o', 'x', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'd', 'i', 'v', '_', 'r', 'm', '_', 'd', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'd', 'i', 'v', '_', 'r', 'm', '_', 'f', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 'd', 'i', 'v', '_', 'r', 'm', '_', 'f', 't', 'z', '_', 'f',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', 'i', 'v', '_', 'r', 'n', '_',
+ 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', 'i', 'v', '_', 'r', 'n',
+ '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', 'i', 'v', '_', 'r',
'n', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 'r', 'c', 'p', '_', 'r', 'p', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 'r', 'c', 'p', '_', 'r', 'p', '_', 'f', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'r', 'c', 'p', '_', 'r', 'p', '_', 'f', 't', 'z', '_', 'f', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'c', 'p', '_', 'r', 'z', '_', 'd',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'c', 'p', '_', 'r', 'z', '_',
- 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'c', 'p', '_', 'r', 'z',
- '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r',
- 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'c', 'l',
- 'o', 'c', 'k', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd',
- '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'c', 'l', 'o', 'c', 'k',
- '6', '4', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_',
- 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'c', 't', 'a', 'i', 'd', '_',
- 'w', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p',
- 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'c', 't', 'a', 'i', 'd', '_', 'x',
+ 'd', 'i', 'v', '_', 'r', 'p', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'd', 'i', 'v', '_', 'r', 'p', '_', 'f', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'd', 'i', 'v', '_', 'r', 'p', '_', 'f', 't', 'z', '_', 'f', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 'd', 'i', 'v', '_', 'r', 'z', '_', 'd',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', 'i', 'v', '_', 'r', 'z', '_',
+ 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'd', 'i', 'v', '_', 'r', 'z',
+ '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'e',
+ 'x', '2', '_', 'a', 'p', 'p', 'r', 'o', 'x', '_', 'd', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 'e', 'x', '2', '_', 'a', 'p', 'p', 'r', 'o', 'x', '_',
+ 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'e', 'x', '2', '_', 'a', 'p',
+ 'p', 'r', 'o', 'x', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 'f', '2', 'h', '_', 'r', 'n', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'f', '2', 'h', '_', 'r', 'n', '_', 'f', 't', 'z', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 'f', '2', 'i', '_', 'r', 'm', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 'f', '2', 'i', '_', 'r', 'm', '_', 'f', 't', 'z', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'i', '_', 'r', 'n', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'i', '_', 'r', 'n', '_', 'f', 't',
+ 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'i', '_', 'r', 'p',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'i', '_', 'r', 'p', '_',
+ 'f', 't', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'i', '_',
+ 'r', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'i', '_', 'r',
+ 'z', '_', 'f', 't', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2',
+ 'l', 'l', '_', 'r', 'm', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2',
+ 'l', 'l', '_', 'r', 'm', '_', 'f', 't', 'z', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'f', '2', 'l', 'l', '_', 'r', 'n', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'f', '2', 'l', 'l', '_', 'r', 'n', '_', 'f', 't', 'z', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'l', 'l', '_', 'r', 'p', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'l', 'l', '_', 'r', 'p', '_', 'f',
+ 't', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'l', 'l', '_',
+ 'r', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'l', 'l', '_',
+ 'r', 'z', '_', 'f', 't', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f',
+ '2', 'u', 'i', '_', 'r', 'm', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f',
+ '2', 'u', 'i', '_', 'r', 'm', '_', 'f', 't', 'z', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 'f', '2', 'u', 'i', '_', 'r', 'n', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 'f', '2', 'u', 'i', '_', 'r', 'n', '_', 'f', 't', 'z', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'u', 'i', '_', 'r', 'p', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'u', 'i', '_', 'r', 'p', '_',
+ 'f', 't', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'u', 'i',
+ '_', 'r', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'u', 'i',
+ '_', 'r', 'z', '_', 'f', 't', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'f', '2', 'u', 'l', 'l', '_', 'r', 'm', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'f', '2', 'u', 'l', 'l', '_', 'r', 'm', '_', 'f', 't', 'z', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'u', 'l', 'l', '_', 'r', 'n', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'u', 'l', 'l', '_', 'r', 'n',
+ '_', 'f', 't', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2', 'u',
+ 'l', 'l', '_', 'r', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', '2',
+ 'u', 'l', 'l', '_', 'r', 'p', '_', 'f', 't', 'z', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 'f', '2', 'u', 'l', 'l', '_', 'r', 'z', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 'f', '2', 'u', 'l', 'l', '_', 'r', 'z', '_', 'f', 't',
+ 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'a', 'b', 's', '_', 'd',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'a', 'b', 's', '_', 'f', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'a', 'b', 's', '_', 'f', 't', 'z',
+ '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'l', 'o', 'o', 'r',
+ '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'l', 'o', 'o', 'r',
+ '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'l', 'o', 'o', 'r',
+ '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f',
+ 'm', 'a', '_', 'r', 'm', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'f', 'm', 'a', '_', 'r', 'm', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'f', 'm', 'a', '_', 'r', 'm', '_', 'f', 't', 'z', '_', 'f', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 'f', 'm', 'a', '_', 'r', 'n', '_', 'd', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'm', 'a', '_', 'r', 'n', '_', 'f',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'm', 'a', '_', 'r', 'n', '_',
+ 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'm',
+ 'a', '_', 'r', 'p', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f',
+ 'm', 'a', '_', 'r', 'p', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'f', 'm', 'a', '_', 'r', 'p', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 'f', 'm', 'a', '_', 'r', 'z', '_', 'd', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 'f', 'm', 'a', '_', 'r', 'z', '_', 'f', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'm', 'a', '_', 'r', 'z', '_', 'f',
+ 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'm', 'a',
+ 'x', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'm', 'a', 'x',
+ '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'm', 'a', 'x', '_',
+ 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'm',
+ 'i', 'n', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'm', 'i',
+ 'n', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f', 'm', 'i', 'n',
+ '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'f',
+ 'n', 's', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'i', '2', 'd', '_', 'r',
+ 'm', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'i', '2', 'd', '_', 'r', 'n',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'i', '2', 'd', '_', 'r', 'p', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 'i', '2', 'd', '_', 'r', 'z', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 'i', '2', 'f', '_', 'r', 'm', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 'i', '2', 'f', '_', 'r', 'n', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 'i', '2', 'f', '_', 'r', 'p', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 'i', '2', 'f', '_', 'r', 'z', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'i', 's', 's', 'p', 'a', 'c', 'e', 'p', '_', 'c', 'o', 'n', 's',
+ 't', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'i', 's', 's', 'p', 'a', 'c',
+ 'e', 'p', '_', 'g', 'l', 'o', 'b', 'a', 'l', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'i', 's', 's', 'p', 'a', 'c', 'e', 'p', '_', 'l', 'o', 'c', 'a',
+ 'l', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'i', 's', 's', 'p', 'a', 'c',
+ 'e', 'p', '_', 's', 'h', 'a', 'r', 'e', 'd', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'i', 's', 't', 'y', 'p', 'e', 'p', '_', 's', 'a', 'm', 'p', 'l',
+ 'e', 'r', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'i', 's', 't', 'y', 'p',
+ 'e', 'p', '_', 's', 'u', 'r', 'f', 'a', 'c', 'e', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 'i', 's', 't', 'y', 'p', 'e', 'p', '_', 't', 'e', 'x', 't',
+ 'u', 'r', 'e', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'l', 'g', '2', '_',
+ 'a', 'p', 'p', 'r', 'o', 'x', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'l', 'g', '2', '_', 'a', 'p', 'p', 'r', 'o', 'x', '_', 'f', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 'l', 'g', '2', '_', 'a', 'p', 'p', 'r', 'o',
+ 'x', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'l', 'l', '2', 'd', '_', 'r', 'm', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'l', 'l', '2', 'd', '_', 'r', 'n', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'l', 'l', '2', 'd', '_', 'r', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'l', 'l', '2', 'd', '_', 'r', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'l', 'l', '2', 'f', '_', 'r', 'm', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'l', 'l', '2', 'f', '_', 'r', 'n', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'l', 'l', '2', 'f', '_', 'r', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'l', 'l', '2', 'f', '_', 'r', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'l', 'o', 'h', 'i', '_', 'i', '2', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'm', 'a', 't', 'c', 'h', '_', 'a', 'n', 'y', '_', 's', 'y', 'n', 'c',
+ '_', 'i', '3', '2', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'm', 'a', 't',
+ 'c', 'h', '_', 'a', 'n', 'y', '_', 's', 'y', 'n', 'c', '_', 'i', '6', '4',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'm', 'e', 'm', 'b', 'a', 'r', '_',
+ 'c', 't', 'a', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'm', 'e', 'm', 'b',
+ 'a', 'r', '_', 'g', 'l', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'm', 'e',
+ 'm', 'b', 'a', 'r', '_', 's', 'y', 's', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'm', 'u', 'l', '_', 'r', 'm', '_', 'd', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'm', 'u', 'l', '_', 'r', 'm', '_', 'f', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 'm', 'u', 'l', '_', 'r', 'm', '_', 'f', 't', 'z', '_', 'f',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'm', 'u', 'l', '_', 'r', 'n', '_',
+ 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'm', 'u', 'l', '_', 'r', 'n',
+ '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'm', 'u', 'l', '_', 'r',
+ 'n', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'm', 'u', 'l', '_', 'r', 'p', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'm', 'u', 'l', '_', 'r', 'p', '_', 'f', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'm', 'u', 'l', '_', 'r', 'p', '_', 'f', 't', 'z', '_', 'f', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 'm', 'u', 'l', '_', 'r', 'z', '_', 'd',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'm', 'u', 'l', '_', 'r', 'z', '_',
+ 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'm', 'u', 'l', '_', 'r', 'z',
+ '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'm',
+ 'u', 'l', '2', '4', '_', 'i', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'm',
+ 'u', 'l', '2', '4', '_', 'u', 'i', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'm', 'u', 'l', 'h', 'i', '_', 'i', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'm', 'u', 'l', 'h', 'i', '_', 'l', 'l', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'm', 'u', 'l', 'h', 'i', '_', 'u', 'i', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'm', 'u', 'l', 'h', 'i', '_', 'u', 'l', 'l', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 'p', 'r', 'm', 't', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'r', 'c', 'p', '_', 'a', 'p', 'p', 'r', 'o', 'x', '_', 'f', 't', 'z',
+ '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'c', 'p', '_', 'r',
+ 'm', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'c', 'p', '_',
+ 'r', 'm', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'c', 'p',
+ '_', 'r', 'm', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'r', 'c', 'p', '_', 'r', 'n', '_', 'd', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 'r', 'c', 'p', '_', 'r', 'n', '_', 'f', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 'r', 'c', 'p', '_', 'r', 'n', '_', 'f', 't', 'z', '_',
+ 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'c', 'p', '_', 'r', 'p',
+ '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'c', 'p', '_', 'r',
+ 'p', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'c', 'p', '_',
+ 'r', 'p', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'r', 'c', 'p', '_', 'r', 'z', '_', 'd', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'r', 'c', 'p', '_', 'r', 'z', '_', 'f', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 'r', 'c', 'p', '_', 'r', 'z', '_', 'f', 't', 'z', '_', 'f',
'\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't',
- 'x', '_', 's', 'r', 'e', 'g', '_', 'c', 't', 'a', 'i', 'd', '_', 'y', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x',
- '_', 's', 'r', 'e', 'g', '_', 'c', 't', 'a', 'i', 'd', '_', 'z', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_',
- 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '0', '\000', '_', '_',
+ 'x', '_', 's', 'r', 'e', 'g', '_', 'c', 'l', 'o', 'c', 'k', '\000', '_', '_',
'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's',
- 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '1', '\000', '_', '_', 'n',
+ 'r', 'e', 'g', '_', 'c', 'l', 'o', 'c', 'k', '6', '4', '\000', '_', '_', 'n',
'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r',
- 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '1', '0', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r',
- 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '1', '1', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r',
- 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '1', '2', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r',
- 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '1', '3', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r',
- 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '1', '4', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r',
- 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '1', '5', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r',
- 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '1', '6', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r',
- 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '1', '7', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r',
- 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '1', '8', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r',
- 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '1', '9', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r',
- 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '2', '\000', '_', '_', 'n', 'v',
+ 'e', 'g', '_', 'c', 't', 'a', 'i', 'd', '_', 'w', '\000', '_', '_', 'n', 'v',
'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e',
- 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '2', '0', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e',
- 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '2', '1', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e',
- 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '2', '2', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e',
- 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '2', '3', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e',
- 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '2', '4', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e',
- 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '2', '5', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e',
- 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '2', '6', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e',
- 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '2', '7', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e',
- 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '2', '8', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e',
- 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '2', '9', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e',
- 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '3', '\000', '_', '_', 'n', 'v', 'v',
+ 'g', '_', 'c', 't', 'a', 'i', 'd', '_', 'x', '\000', '_', '_', 'n', 'v', 'v',
'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g',
- '_', 'e', 'n', 'v', 'r', 'e', 'g', '3', '0', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g',
- '_', 'e', 'n', 'v', 'r', 'e', 'g', '3', '1', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g',
- '_', 'e', 'n', 'v', 'r', 'e', 'g', '4', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'c', 't', 'a', 'i', 'd', '_', 'y', '\000', '_', '_', 'n', 'v', 'v', 'm',
'_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_',
- 'e', 'n', 'v', 'r', 'e', 'g', '5', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'c', 't', 'a', 'i', 'd', '_', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e',
- 'n', 'v', 'r', 'e', 'g', '6', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r',
+ 'n', 'v', 'r', 'e', 'g', '0', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r',
'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n',
- 'v', 'r', 'e', 'g', '7', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e',
+ 'v', 'r', 'e', 'g', '1', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e',
'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v',
- 'r', 'e', 'g', '8', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a',
+ 'r', 'e', 'g', '1', '0', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e',
+ 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v',
+ 'r', 'e', 'g', '1', '1', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e',
+ 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v',
+ 'r', 'e', 'g', '1', '2', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e',
+ 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v',
+ 'r', 'e', 'g', '1', '3', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e',
+ 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v',
+ 'r', 'e', 'g', '1', '4', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e',
+ 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v',
+ 'r', 'e', 'g', '1', '5', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e',
+ 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v',
+ 'r', 'e', 'g', '1', '6', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e',
+ 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v',
+ 'r', 'e', 'g', '1', '7', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e',
+ 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v',
+ 'r', 'e', 'g', '1', '8', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e',
+ 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v',
+ 'r', 'e', 'g', '1', '9', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e',
+ 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v',
+ 'r', 'e', 'g', '2', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a',
'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r',
- 'e', 'g', '9', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd',
- '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'g', 'r', 'i', 'd', 'i',
- 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p',
- 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'l', 'a', 'n', 'e', 'i', 'd', '\000',
+ 'e', 'g', '2', '0', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a',
+ 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r',
+ 'e', 'g', '2', '1', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a',
+ 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r',
+ 'e', 'g', '2', '2', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a',
+ 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r',
+ 'e', 'g', '2', '3', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a',
+ 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r',
+ 'e', 'g', '2', '4', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a',
+ 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r',
+ 'e', 'g', '2', '5', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a',
+ 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r',
+ 'e', 'g', '2', '6', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a',
+ 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r',
+ 'e', 'g', '2', '7', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a',
+ 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r',
+ 'e', 'g', '2', '8', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a',
+ 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r',
+ 'e', 'g', '2', '9', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a',
+ 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r',
+ 'e', 'g', '3', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd',
+ '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e',
+ 'g', '3', '0', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd',
+ '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e',
+ 'g', '3', '1', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd',
+ '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e',
+ 'g', '4', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_',
+ 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g',
+ '5', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p',
+ 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '6',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't',
+ 'x', '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '7', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x',
+ '_', 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '8', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_',
+ 's', 'r', 'e', 'g', '_', 'e', 'n', 'v', 'r', 'e', 'g', '9', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's',
+ 'r', 'e', 'g', '_', 'g', 'r', 'i', 'd', 'i', 'd', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e',
+ 'g', '_', 'l', 'a', 'n', 'e', 'i', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_',
+ 'l', 'a', 'n', 'e', 'm', 'a', 's', 'k', '_', 'e', 'q', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r',
+ 'e', 'g', '_', 'l', 'a', 'n', 'e', 'm', 'a', 's', 'k', '_', 'g', 'e', '\000',
'_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x',
'_', 's', 'r', 'e', 'g', '_', 'l', 'a', 'n', 'e', 'm', 'a', 's', 'k', '_',
- 'e', 'q', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_',
+ 'g', 't', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_',
'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'l', 'a', 'n', 'e', 'm', 'a',
- 's', 'k', '_', 'g', 'e', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e',
+ 's', 'k', '_', 'l', 'e', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e',
'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'l', 'a', 'n',
- 'e', 'm', 'a', 's', 'k', '_', 'g', 't', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ 'e', 'm', 'a', 's', 'k', '_', 'l', 't', '\000', '_', '_', 'n', 'v', 'v', 'm',
'_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_',
- 'l', 'a', 'n', 'e', 'm', 'a', 's', 'k', '_', 'l', 'e', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r',
- 'e', 'g', '_', 'l', 'a', 'n', 'e', 'm', 'a', 's', 'k', '_', 'l', 't', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x',
- '_', 's', 'r', 'e', 'g', '_', 'n', 'c', 't', 'a', 'i', 'd', '_', 'w', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x',
- '_', 's', 'r', 'e', 'g', '_', 'n', 'c', 't', 'a', 'i', 'd', '_', 'x', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x',
- '_', 's', 'r', 'e', 'g', '_', 'n', 'c', 't', 'a', 'i', 'd', '_', 'y', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x',
- '_', 's', 'r', 'e', 'g', '_', 'n', 'c', 't', 'a', 'i', 'd', '_', 'z', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x',
- '_', 's', 'r', 'e', 'g', '_', 'n', 's', 'm', 'i', 'd', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r',
- 'e', 'g', '_', 'n', 't', 'i', 'd', '_', 'w', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g',
- '_', 'n', 't', 'i', 'd', '_', 'x', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'n',
- 't', 'i', 'd', '_', 'y', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e',
+ 'n', 'c', 't', 'a', 'i', 'd', '_', 'w', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_',
+ 'n', 'c', 't', 'a', 'i', 'd', '_', 'x', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_',
+ 'n', 'c', 't', 'a', 'i', 'd', '_', 'y', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_',
+ 'n', 'c', 't', 'a', 'i', 'd', '_', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_',
+ 'n', 's', 'm', 'i', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e',
'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'n', 't', 'i',
- 'd', '_', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd',
- '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'n', 'w', 'a', 'r', 'p',
- 'i', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_',
- 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'p', 'm', '0', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's',
- 'r', 'e', 'g', '_', 'p', 'm', '1', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'p',
- 'm', '2', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_',
- 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'p', 'm', '3', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's',
- 'r', 'e', 'g', '_', 's', 'm', 'i', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_',
- 't', 'i', 'd', '_', 'w', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e',
- 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 't', 'i', 'd',
- '_', 'x', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_',
- 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 't', 'i', 'd', '_', 'y', '\000',
+ 'd', '_', 'w', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd',
+ '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'n', 't', 'i', 'd', '_',
+ 'x', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p',
+ 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'n', 't', 'i', 'd', '_', 'y', '\000',
'_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x',
- '_', 's', 'r', 'e', 'g', '_', 't', 'i', 'd', '_', 'z', '\000', '_', '_', 'n',
+ '_', 's', 'r', 'e', 'g', '_', 'n', 't', 'i', 'd', '_', 'z', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's',
+ 'r', 'e', 'g', '_', 'n', 'w', 'a', 'r', 'p', 'i', 'd', '\000', '_', '_', 'n',
'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r',
- 'e', 'g', '_', 'w', 'a', 'r', 'p', 'i', 'd', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g',
- '_', 'w', 'a', 'r', 'p', 's', 'i', 'z', 'e', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'r', 'o', 't', 'a', 't', 'e', '_', 'b', '3', '2', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 'r', 'o', 't', 'a', 't', 'e', '_', 'b', '6', '4',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'o', 't', 'a', 't', 'e', '_',
- 'r', 'i', 'g', 'h', 't', '_', 'b', '6', '4', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'r', 'o', 'u', 'n', 'd', '_', 'd', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'r', 'o', 'u', 'n', 'd', '_', 'f', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'r', 'o', 'u', 'n', 'd', '_', 'f', 't', 'z', '_', 'f', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'r', 's', 'q', 'r', 't', '_', 'a', 'p', 'p',
- 'r', 'o', 'x', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 's',
- 'q', 'r', 't', '_', 'a', 'p', 'p', 'r', 'o', 'x', '_', 'f', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 'r', 's', 'q', 'r', 't', '_', 'a', 'p', 'p', 'r',
- 'o', 'x', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 's', 'a', 'd', '_', 'i', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
- 'a', 'd', '_', 'u', 'i', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'a',
- 't', 'u', 'r', 'a', 't', 'e', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 's', 'a', 't', 'u', 'r', 'a', 't', 'e', '_', 'f', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'a', 't', 'u', 'r', 'a', 't', 'e', '_', 'f', 't',
- 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'h', 'f', 'l',
- '_', 'b', 'f', 'l', 'y', '_', 'f', '3', '2', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 's', 'h', 'f', 'l', '_', 'b', 'f', 'l', 'y', '_', 'i', '3', '2',
+ 'e', 'g', '_', 'p', 'm', '0', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r',
+ 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'p', 'm',
+ '1', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p',
+ 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'p', 'm', '2', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r',
+ 'e', 'g', '_', 'p', 'm', '3', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r',
+ 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 's', 'm',
+ 'i', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_',
+ 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 't', 'i', 'd', '_', 'w', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x',
+ '_', 's', 'r', 'e', 'g', '_', 't', 'i', 'd', '_', 'x', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r',
+ 'e', 'g', '_', 't', 'i', 'd', '_', 'y', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'r', 'e', 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_',
+ 't', 'i', 'd', '_', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e',
+ 'a', 'd', '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'w', 'a', 'r',
+ 'p', 'i', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'e', 'a', 'd',
+ '_', 'p', 't', 'x', '_', 's', 'r', 'e', 'g', '_', 'w', 'a', 'r', 'p', 's',
+ 'i', 'z', 'e', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'o', 't', 'a',
+ 't', 'e', '_', 'b', '3', '2', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r',
+ 'o', 't', 'a', 't', 'e', '_', 'b', '6', '4', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'r', 'o', 't', 'a', 't', 'e', '_', 'r', 'i', 'g', 'h', 't', '_',
+ 'b', '6', '4', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'o', 'u', 'n',
+ 'd', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'o', 'u', 'n',
+ 'd', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 'o', 'u', 'n',
+ 'd', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'r', 's', 'q', 'r', 't', '_', 'a', 'p', 'p', 'r', 'o', 'x', '_', 'd', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 'r', 's', 'q', 'r', 't', '_', 'a', 'p',
+ 'p', 'r', 'o', 'x', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'r',
+ 's', 'q', 'r', 't', '_', 'a', 'p', 'p', 'r', 'o', 'x', '_', 'f', 't', 'z',
+ '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'a', 'd', '_', 'i',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'a', 'd', '_', 'u', 'i', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'a', 't', 'u', 'r', 'a', 't', 'e',
+ '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'a', 't', 'u', 'r',
+ 'a', 't', 'e', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'a',
+ 't', 'u', 'r', 'a', 't', 'e', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'h', 'f', 'l', '_', 'b', 'f', 'l', 'y', '_',
+ 'f', '3', '2', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'h', 'f', 'l',
+ '_', 'b', 'f', 'l', 'y', '_', 'i', '3', '2', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 's', 'h', 'f', 'l', '_', 'd', 'o', 'w', 'n', '_', 'f', '3', '2',
'\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'h', 'f', 'l', '_', 'd', 'o',
- 'w', 'n', '_', 'f', '3', '2', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
- 'h', 'f', 'l', '_', 'd', 'o', 'w', 'n', '_', 'i', '3', '2', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 's', 'h', 'f', 'l', '_', 'i', 'd', 'x', '_', 'f',
- '3', '2', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'h', 'f', 'l', '_',
- 'i', 'd', 'x', '_', 'i', '3', '2', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'h', 'f', 'l', '_', 's', 'y', 'n', 'c', '_', 'b', 'f', 'l', 'y', '_',
- 'f', '3', '2', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'h', 'f', 'l',
- '_', 's', 'y', 'n', 'c', '_', 'b', 'f', 'l', 'y', '_', 'i', '3', '2', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'h', 'f', 'l', '_', 's', 'y', 'n',
- 'c', '_', 'd', 'o', 'w', 'n', '_', 'f', '3', '2', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 's', 'h', 'f', 'l', '_', 's', 'y', 'n', 'c', '_', 'd', 'o',
'w', 'n', '_', 'i', '3', '2', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
- 'h', 'f', 'l', '_', 's', 'y', 'n', 'c', '_', 'i', 'd', 'x', '_', 'f', '3',
+ 'h', 'f', 'l', '_', 'i', 'd', 'x', '_', 'f', '3', '2', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 's', 'h', 'f', 'l', '_', 'i', 'd', 'x', '_', 'i', '3',
'2', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'h', 'f', 'l', '_', 's',
- 'y', 'n', 'c', '_', 'i', 'd', 'x', '_', 'i', '3', '2', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'h', 'f', 'l', '_', 's', 'y', 'n', 'c', '_', 'u',
- 'p', '_', 'f', '3', '2', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'h',
- 'f', 'l', '_', 's', 'y', 'n', 'c', '_', 'u', 'p', '_', 'i', '3', '2', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'h', 'f', 'l', '_', 'u', 'p', '_',
- 'f', '3', '2', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'h', 'f', 'l',
- '_', 'u', 'p', '_', 'i', '3', '2', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'i', 'n', '_', 'a', 'p', 'p', 'r', 'o', 'x', '_', 'f', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 's', 'i', 'n', '_', 'a', 'p', 'p', 'r', 'o', 'x',
- '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
- 'q', 'r', 't', '_', 'a', 'p', 'p', 'r', 'o', 'x', '_', 'f', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 's', 'q', 'r', 't', '_', 'a', 'p', 'p', 'r', 'o',
- 'x', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'q', 'r', 't', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
- 'q', 'r', 't', '_', 'r', 'm', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 's', 'q', 'r', 't', '_', 'r', 'm', '_', 'f', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 's', 'q', 'r', 't', '_', 'r', 'm', '_', 'f', 't', 'z', '_',
- 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'q', 'r', 't', '_', 'r',
- 'n', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'q', 'r', 't',
- '_', 'r', 'n', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'q',
- 'r', 't', '_', 'r', 'n', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'q', 'r', 't', '_', 'r', 'p', '_', 'd', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 's', 'q', 'r', 't', '_', 'r', 'p', '_', 'f',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'q', 'r', 't', '_', 'r', 'p',
- '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
- 'q', 'r', 't', '_', 'r', 'z', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 's', 'q', 'r', 't', '_', 'r', 'z', '_', 'f', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 's', 'q', 'r', 't', '_', 'r', 'z', '_', 'f', 't', 'z', '_',
- 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 'q', '_', 'a', 'r',
- 'r', 'a', 'y', '_', 's', 'i', 'z', 'e', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 's', 'u', 'q', '_', 'c', 'h', 'a', 'n', 'n', 'e', 'l', '_', 'd', 'a',
- 't', 'a', '_', 't', 'y', 'p', 'e', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'u', 'q', '_', 'c', 'h', 'a', 'n', 'n', 'e', 'l', '_', 'o', 'r', 'd',
- 'e', 'r', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 'q', '_', 'd',
- 'e', 'p', 't', 'h', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 'q',
- '_', 'h', 'e', 'i', 'g', 'h', 't', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'u', 'q', '_', 'w', 'i', 'd', 't', 'h', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r',
- 'a', 'y', '_', 'i', '1', '6', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_',
- 'a', 'r', 'r', 'a', 'y', '_', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1',
- 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '1', '6', '_', 'z', 'e', 'r',
- 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
- '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '3', '2', '_', 'c',
- 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
- 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '3',
- '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
+ 'y', 'n', 'c', '_', 'b', 'f', 'l', 'y', '_', 'f', '3', '2', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'h', 'f', 'l', '_', 's', 'y', 'n', 'c', '_',
+ 'b', 'f', 'l', 'y', '_', 'i', '3', '2', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 's', 'h', 'f', 'l', '_', 's', 'y', 'n', 'c', '_', 'd', 'o', 'w', 'n',
+ '_', 'f', '3', '2', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'h', 'f',
+ 'l', '_', 's', 'y', 'n', 'c', '_', 'd', 'o', 'w', 'n', '_', 'i', '3', '2',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'h', 'f', 'l', '_', 's', 'y',
+ 'n', 'c', '_', 'i', 'd', 'x', '_', 'f', '3', '2', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 's', 'h', 'f', 'l', '_', 's', 'y', 'n', 'c', '_', 'i', 'd',
+ 'x', '_', 'i', '3', '2', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'h',
+ 'f', 'l', '_', 's', 'y', 'n', 'c', '_', 'u', 'p', '_', 'f', '3', '2', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'h', 'f', 'l', '_', 's', 'y', 'n',
+ 'c', '_', 'u', 'p', '_', 'i', '3', '2', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 's', 'h', 'f', 'l', '_', 'u', 'p', '_', 'f', '3', '2', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'h', 'f', 'l', '_', 'u', 'p', '_', 'i', '3',
+ '2', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'i', 'n', '_', 'a', 'p',
+ 'p', 'r', 'o', 'x', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
+ 'i', 'n', '_', 'a', 'p', 'p', 'r', 'o', 'x', '_', 'f', 't', 'z', '_', 'f',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'q', 'r', 't', '_', 'a', 'p',
+ 'p', 'r', 'o', 'x', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
+ 'q', 'r', 't', '_', 'a', 'p', 'p', 'r', 'o', 'x', '_', 'f', 't', 'z', '_',
+ 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'q', 'r', 't', '_', 'f',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'q', 'r', 't', '_', 'r', 'm',
+ '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'q', 'r', 't', '_',
+ 'r', 'm', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'q', 'r',
+ 't', '_', 'r', 'm', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 's', 'q', 'r', 't', '_', 'r', 'n', '_', 'd', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'q', 'r', 't', '_', 'r', 'n', '_', 'f', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'q', 'r', 't', '_', 'r', 'n', '_',
+ 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'q',
+ 'r', 't', '_', 'r', 'p', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 's', 'q', 'r', 't', '_', 'r', 'p', '_', 'f', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 's', 'q', 'r', 't', '_', 'r', 'p', '_', 'f', 't', 'z', '_', 'f',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'q', 'r', 't', '_', 'r', 'z',
+ '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'q', 'r', 't', '_',
+ 'r', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'q', 'r',
+ 't', '_', 'r', 'z', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 's', 'u', 'q', '_', 'a', 'r', 'r', 'a', 'y', '_', 's', 'i',
+ 'z', 'e', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 'q', '_', 'c',
+ 'h', 'a', 'n', 'n', 'e', 'l', '_', 'd', 'a', 't', 'a', '_', 't', 'y', 'p',
+ 'e', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 'q', '_', 'c', 'h',
+ 'a', 'n', 'n', 'e', 'l', '_', 'o', 'r', 'd', 'e', 'r', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 's', 'u', 'q', '_', 'd', 'e', 'p', 't', 'h', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 'q', '_', 'h', 'e', 'i', 'g', 'h',
+ 't', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 'q', '_', 'w', 'i',
+ 'd', 't', 'h', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
+ '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '1', '6',
+ '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_',
- 'i', '3', '2', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm',
'_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a',
- 'y', '_', 'i', '6', '4', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a',
- 'r', 'r', 'a', 'y', '_', 'i', '6', '4', '_', 't', 'r', 'a', 'p', '\000', '_',
+ 'y', '_', 'i', '1', '6', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r',
+ 'r', 'a', 'y', '_', 'i', '3', '2', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_',
'_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd',
- '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '6', '4', '_', 'z', 'e', 'r', 'o',
+ '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '3', '2', '_', 't', 'r', 'a', 'p',
'\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_',
- '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '8', '_', 'c', 'l', 'a',
- 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
- 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '8', '_', 't',
- 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
- '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '8', '_',
- 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
- 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2',
- 'i', '1', '6', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r',
- 'a', 'y', '_', 'v', '2', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd',
- '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '1', '6', '_', 'z', 'e',
+ '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '3', '2', '_', 'z', 'e',
'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
- 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '3',
- '2', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y',
- '_', 'v', '2', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a',
- 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '3', '2', '_', 'z', 'e', 'r', 'o',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_',
- '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '6', '4', '_',
+ 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '6', '4', '_',
'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
- 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v',
- '2', 'i', '6', '4', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v',
+ 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i',
+ '6', '4', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y',
+ '_', 'i', '6', '4', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v',
'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r',
- 'a', 'y', '_', 'v', '2', 'i', '6', '4', '_', 'z', 'e', 'r', 'o', '\000', '_',
+ 'a', 'y', '_', 'i', '8', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a',
+ 'r', 'r', 'a', 'y', '_', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_',
+ 'a', 'r', 'r', 'a', 'y', '_', 'i', '8', '_', 'z', 'e', 'r', 'o', '\000', '_',
'_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd',
- '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '8', '_', 'c', 'l', 'a',
- 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
- 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '8',
+ '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '1', '6', '_', 'c', 'l',
+ 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
+ '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i',
+ '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y',
+ '_', 'v', '2', 'i', '1', '6', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a',
+ 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '3', '2', '_', 'c', 'l', 'a', 'm',
+ 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
+ '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '3', '2',
'_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v',
- '2', 'i', '8', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a',
- 'y', '_', 'v', '4', 'i', '1', '6', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd',
- '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '1', '6', '_', 't', 'r',
- 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
- 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '1',
- '6', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
- 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_',
- 'v', '4', 'i', '3', '2', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n',
+ '2', 'i', '3', '2', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r',
+ 'a', 'y', '_', 'v', '2', 'i', '6', '4', '_', 'c', 'l', 'a', 'm', 'p', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1',
+ 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '6', '4', '_', 't',
+ 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
+ '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i',
+ '6', '4', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y',
+ '_', 'v', '2', 'i', '8', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n',
'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a',
- 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '3', '2', '_', 't', 'r', 'a', 'p',
+ 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '8', '_', 't', 'r', 'a', 'p', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1',
+ 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '8', '_', 'z', 'e',
+ 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
+ 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '1',
+ '6', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y',
+ '_', 'v', '4', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a',
+ 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '1', '6', '_', 'z', 'e', 'r', 'o',
'\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_',
'1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '3', '2', '_',
- 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
- 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4',
- 'i', '8', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a',
- 'y', '_', 'v', '4', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a',
- 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '8', '_', 'z', 'e', 'r', 'o', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1',
- 'd', '_', 'i', '1', '6', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'i',
- '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'i', '1', '6', '_', 'z',
- 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
- '_', 'b', '_', '1', 'd', '_', 'i', '3', '2', '_', 'c', 'l', 'a', 'm', 'p',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_',
- '1', 'd', '_', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'i',
- '3', '2', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'i', '6', '4', '_', 'c',
- 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
- 't', '_', 'b', '_', '1', 'd', '_', 'i', '6', '4', '_', 't', 'r', 'a', 'p',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_',
- '1', 'd', '_', 'i', '6', '4', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'i',
- '8', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'i', '8', '_', 't', 'r',
- 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
- 'b', '_', '1', 'd', '_', 'i', '8', '_', 'z', 'e', 'r', 'o', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_',
- 'v', '2', 'i', '1', '6', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'v',
- '2', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'v', '2', 'i',
- '1', '6', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'v', '2', 'i', '3', '2',
- '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
- 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'v', '2', 'i', '3', '2', '_',
- 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
- 't', '_', 'b', '_', '1', 'd', '_', 'v', '2', 'i', '3', '2', '_', 'z', 'e',
- 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
- 'b', '_', '1', 'd', '_', 'v', '2', 'i', '6', '4', '_', 'c', 'l', 'a', 'm',
- 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
- '_', '1', 'd', '_', 'v', '2', 'i', '6', '4', '_', 't', 'r', 'a', 'p', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1',
- 'd', '_', 'v', '2', 'i', '6', '4', '_', 'z', 'e', 'r', 'o', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_',
- 'v', '2', 'i', '8', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'v', '2',
- 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'v', '2', 'i', '8', '_',
- 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
- 't', '_', 'b', '_', '1', 'd', '_', 'v', '4', 'i', '1', '6', '_', 'c', 'l',
- 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
- '_', 'b', '_', '1', 'd', '_', 'v', '4', 'i', '1', '6', '_', 't', 'r', 'a',
- 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
- '_', '1', 'd', '_', 'v', '4', 'i', '1', '6', '_', 'z', 'e', 'r', 'o', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1',
- 'd', '_', 'v', '4', 'i', '3', '2', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd',
- '_', 'v', '4', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'v',
- '4', 'i', '3', '2', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'v', '4', 'i',
- '8', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'v', '4', 'i', '8', '_',
- 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
- 't', '_', 'b', '_', '1', 'd', '_', 'v', '4', 'i', '8', '_', 'z', 'e', 'r',
- 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
- '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '1', '6', '_', 'c',
- 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
- 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '1',
- '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
- 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_',
- 'i', '1', '6', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a',
- 'y', '_', 'i', '3', '2', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a',
- 'r', 'r', 'a', 'y', '_', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd',
- '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '3', '2', '_', 'z', 'e', 'r', 'o',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_',
- '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '6', '4', '_', 'c', 'l',
- 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
- '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '6', '4',
- '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
- 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i',
- '6', '4', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y',
- '_', 'i', '8', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r',
- 'a', 'y', '_', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r',
- 'r', 'a', 'y', '_', 'i', '8', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a',
- 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '1', '6', '_', 'c', 'l', 'a', 'm',
- 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
- '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '1', '6',
- '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
- 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v',
- '2', 'i', '1', '6', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r',
- 'a', 'y', '_', 'v', '2', 'i', '3', '2', '_', 'c', 'l', 'a', 'm', 'p', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2',
- 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '3', '2', '_', 't',
- 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
- '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i',
- '3', '2', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y',
- '_', 'v', '2', 'i', '6', '4', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_',
- 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '6', '4', '_', 't', 'r', 'a',
- 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
- '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '6', '4',
- '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
- 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v',
- '2', 'i', '8', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r',
- 'a', 'y', '_', 'v', '2', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_',
- 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '8', '_', 'z', 'e', 'r', 'o',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_',
- '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '1', '6', '_',
'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
- 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v',
- '4', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r',
- 'a', 'y', '_', 'v', '4', 'i', '1', '6', '_', 'z', 'e', 'r', 'o', '\000', '_',
+ 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v',
+ '4', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r',
+ 'a', 'y', '_', 'v', '4', 'i', '3', '2', '_', 'z', 'e', 'r', 'o', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd',
+ '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '8', '_', 'c', 'l', 'a',
+ 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
+ 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '8',
+ '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
+ 's', 't', '_', 'b', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v',
+ '4', 'i', '8', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'i', '1', '6', '_',
+ 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
+ 's', 't', '_', 'b', '_', '1', 'd', '_', 'i', '1', '6', '_', 't', 'r', 'a',
+ 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
+ '_', '1', 'd', '_', 'i', '1', '6', '_', 'z', 'e', 'r', 'o', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_',
+ 'i', '3', '2', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'i', '3', '2',
+ '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
+ 's', 't', '_', 'b', '_', '1', 'd', '_', 'i', '3', '2', '_', 'z', 'e', 'r',
+ 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
+ '_', '1', 'd', '_', 'i', '6', '4', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd',
+ '_', 'i', '6', '4', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'i', '6', '4',
+ '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
+ 's', 't', '_', 'b', '_', '1', 'd', '_', 'i', '8', '_', 'c', 'l', 'a', 'm',
+ 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
+ '_', '1', 'd', '_', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'i',
+ '8', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
+ 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'v', '2', 'i', '1', '6', '_',
+ 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
+ 's', 't', '_', 'b', '_', '1', 'd', '_', 'v', '2', 'i', '1', '6', '_', 't',
+ 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
+ '_', 'b', '_', '1', 'd', '_', 'v', '2', 'i', '1', '6', '_', 'z', 'e', 'r',
+ 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
+ '_', '1', 'd', '_', 'v', '2', 'i', '3', '2', '_', 'c', 'l', 'a', 'm', 'p',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_',
+ '1', 'd', '_', 'v', '2', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd',
+ '_', 'v', '2', 'i', '3', '2', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'v',
+ '2', 'i', '6', '4', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'v', '2',
+ 'i', '6', '4', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'v', '2', 'i', '6',
+ '4', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
+ 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'v', '2', 'i', '8', '_', 'c',
+ 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
+ 't', '_', 'b', '_', '1', 'd', '_', 'v', '2', 'i', '8', '_', 't', 'r', 'a',
+ 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
+ '_', '1', 'd', '_', 'v', '2', 'i', '8', '_', 'z', 'e', 'r', 'o', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd',
+ '_', 'v', '4', 'i', '1', '6', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_',
+ 'v', '4', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'v', '4',
+ 'i', '1', '6', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'v', '4', 'i', '3',
+ '2', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 's', 'u', 's', 't', '_', 'b', '_', '1', 'd', '_', 'v', '4', 'i', '3', '2',
+ '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
+ 's', 't', '_', 'b', '_', '1', 'd', '_', 'v', '4', 'i', '3', '2', '_', 'z',
+ 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
+ '_', 'b', '_', '1', 'd', '_', 'v', '4', 'i', '8', '_', 'c', 'l', 'a', 'm',
+ 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
+ '_', '1', 'd', '_', 'v', '4', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '1', 'd',
+ '_', 'v', '4', 'i', '8', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r',
+ 'r', 'a', 'y', '_', 'i', '1', '6', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_',
'_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd',
- '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '3', '2', '_', 'c', 'l',
- 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
- '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4', 'i',
+ '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '1', '6', '_', 't', 'r', 'a', 'p',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_',
+ '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '1', '6', '_', 'z', 'e',
+ 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
+ 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '3', '2', '_',
+ 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
+ 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i',
'3', '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y',
- '_', 'v', '4', 'i', '3', '2', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a',
- 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '8', '_', 'c', 'l', 'a', 'm', 'p',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_',
- '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '8', '_', 't',
+ '_', 'i', '3', '2', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r',
+ 'a', 'y', '_', 'i', '6', '4', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_',
+ 'a', 'r', 'r', 'a', 'y', '_', 'i', '6', '4', '_', 't', 'r', 'a', 'p', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2',
+ 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '6', '4', '_', 'z', 'e', 'r',
+ 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
+ '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '8', '_', 'c', 'l',
+ 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
+ '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '8', '_',
+ 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
+ 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '8',
+ '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
+ 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v',
+ '2', 'i', '1', '6', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r',
+ 'r', 'a', 'y', '_', 'v', '2', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2',
+ 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '1', '6', '_', 'z',
+ 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
+ '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i',
+ '3', '2', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a',
+ 'y', '_', 'v', '2', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_',
+ 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '3', '2', '_', 'z', 'e', 'r',
+ 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
+ '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '6', '4',
+ '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
+ 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_',
+ 'v', '2', 'i', '6', '4', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r',
+ 'r', 'a', 'y', '_', 'v', '2', 'i', '6', '4', '_', 'z', 'e', 'r', 'o', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2',
+ 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '8', '_', 'c', 'l',
+ 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
+ '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i',
+ '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
+ 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_',
+ 'v', '2', 'i', '8', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r',
+ 'a', 'y', '_', 'v', '4', 'i', '1', '6', '_', 'c', 'l', 'a', 'm', 'p', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2',
+ 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '1', '6', '_', 't',
'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
'_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4', 'i',
- '8', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
- 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'i', '1', '6', '_', 'c', 'l',
- 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
- '_', 'b', '_', '2', 'd', '_', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2',
- 'd', '_', 'i', '1', '6', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'i', '3',
- '2', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'i', '3', '2', '_', 't',
- 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
- '_', 'b', '_', '2', 'd', '_', 'i', '3', '2', '_', 'z', 'e', 'r', 'o', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2',
- 'd', '_', 'i', '6', '4', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'i',
- '6', '4', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'i', '6', '4', '_', 'z',
- 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
- '_', 'b', '_', '2', 'd', '_', 'i', '8', '_', 'c', 'l', 'a', 'm', 'p', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2',
- 'd', '_', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'i', '8', '_',
- 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
- 't', '_', 'b', '_', '2', 'd', '_', 'v', '2', 'i', '1', '6', '_', 'c', 'l',
- 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
- '_', 'b', '_', '2', 'd', '_', 'v', '2', 'i', '1', '6', '_', 't', 'r', 'a',
+ '1', '6', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y',
+ '_', 'v', '4', 'i', '3', '2', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_',
+ 'a', 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '3', '2', '_', 't', 'r', 'a',
'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
- '_', '2', 'd', '_', 'v', '2', 'i', '1', '6', '_', 'z', 'e', 'r', 'o', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2',
- 'd', '_', 'v', '2', 'i', '3', '2', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd',
- '_', 'v', '2', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'v',
- '2', 'i', '3', '2', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'v', '2', 'i',
- '6', '4', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'v', '2', 'i', '6',
- '4', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
- 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'v', '2', 'i', '6', '4', '_',
- 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
- 't', '_', 'b', '_', '2', 'd', '_', 'v', '2', 'i', '8', '_', 'c', 'l', 'a',
- 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
- 'b', '_', '2', 'd', '_', 'v', '2', 'i', '8', '_', 't', 'r', 'a', 'p', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2',
- 'd', '_', 'v', '2', 'i', '8', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'v',
- '4', 'i', '1', '6', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'v', '4',
- 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'v', '4', 'i', '1',
- '6', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
- 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'v', '4', 'i', '3', '2', '_',
- 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
- 's', 't', '_', 'b', '_', '2', 'd', '_', 'v', '4', 'i', '3', '2', '_', 't',
- 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
- '_', 'b', '_', '2', 'd', '_', 'v', '4', 'i', '3', '2', '_', 'z', 'e', 'r',
- 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
- '_', '2', 'd', '_', 'v', '4', 'i', '8', '_', 'c', 'l', 'a', 'm', 'p', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2',
- 'd', '_', 'v', '4', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'v',
- '4', 'i', '8', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'i', '1', '6', '_',
- 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
- 's', 't', '_', 'b', '_', '3', 'd', '_', 'i', '1', '6', '_', 't', 'r', 'a',
- 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
- '_', '3', 'd', '_', 'i', '1', '6', '_', 'z', 'e', 'r', 'o', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_',
- 'i', '3', '2', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'i', '3', '2',
- '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
- 's', 't', '_', 'b', '_', '3', 'd', '_', 'i', '3', '2', '_', 'z', 'e', 'r',
- 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
- '_', '3', 'd', '_', 'i', '6', '4', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd',
- '_', 'i', '6', '4', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'i', '6', '4',
+ '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '3', '2',
'_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
- 's', 't', '_', 'b', '_', '3', 'd', '_', 'i', '8', '_', 'c', 'l', 'a', 'm',
- 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
- '_', '3', 'd', '_', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'i',
- '8', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
- 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'v', '2', 'i', '1', '6', '_',
- 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
- 's', 't', '_', 'b', '_', '3', 'd', '_', 'v', '2', 'i', '1', '6', '_', 't',
- 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
- '_', 'b', '_', '3', 'd', '_', 'v', '2', 'i', '1', '6', '_', 'z', 'e', 'r',
- 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
- '_', '3', 'd', '_', 'v', '2', 'i', '3', '2', '_', 'c', 'l', 'a', 'm', 'p',
+ 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v',
+ '4', 'i', '8', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'a', 'r', 'r',
+ 'a', 'y', '_', 'v', '4', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_',
+ 'a', 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '8', '_', 'z', 'e', 'r', 'o',
'\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_',
- '3', 'd', '_', 'v', '2', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd',
- '_', 'v', '2', 'i', '3', '2', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'v',
- '2', 'i', '6', '4', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'v', '2',
- 'i', '6', '4', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'v', '2', 'i', '6',
- '4', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
- 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'v', '2', 'i', '8', '_', 'c',
- 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
- 't', '_', 'b', '_', '3', 'd', '_', 'v', '2', 'i', '8', '_', 't', 'r', 'a',
+ '2', 'd', '_', 'i', '1', '6', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_',
+ 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'i', '1', '6', '_',
+ 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
+ 't', '_', 'b', '_', '2', 'd', '_', 'i', '3', '2', '_', 'c', 'l', 'a', 'm',
'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
- '_', '3', 'd', '_', 'v', '2', 'i', '8', '_', 'z', 'e', 'r', 'o', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd',
- '_', 'v', '4', 'i', '1', '6', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_',
- 'v', '4', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'v', '4',
+ '_', '2', 'd', '_', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_',
+ 'i', '3', '2', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'i', '6', '4', '_',
+ 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
+ 's', 't', '_', 'b', '_', '2', 'd', '_', 'i', '6', '4', '_', 't', 'r', 'a',
+ 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
+ '_', '2', 'd', '_', 'i', '6', '4', '_', 'z', 'e', 'r', 'o', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_',
+ 'i', '8', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'i', '8', '_', 't',
+ 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
+ '_', 'b', '_', '2', 'd', '_', 'i', '8', '_', 'z', 'e', 'r', 'o', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd',
+ '_', 'v', '2', 'i', '1', '6', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_',
+ 'v', '2', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'v', '2',
'i', '1', '6', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'v', '4', 'i', '3',
+ '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'v', '2', 'i', '3',
'2', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'v', '4', 'i', '3', '2',
+ 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'v', '2', 'i', '3', '2',
'_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
- 's', 't', '_', 'b', '_', '3', 'd', '_', 'v', '4', 'i', '3', '2', '_', 'z',
+ 's', 't', '_', 'b', '_', '2', 'd', '_', 'v', '2', 'i', '3', '2', '_', 'z',
'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
- '_', 'b', '_', '3', 'd', '_', 'v', '4', 'i', '8', '_', 'c', 'l', 'a', 'm',
- 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
- '_', '3', 'd', '_', 'v', '4', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_',
+ '_', 'b', '_', '2', 'd', '_', 'v', '2', 'i', '6', '4', '_', 'c', 'l', 'a',
+ 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
+ 'b', '_', '2', 'd', '_', 'v', '2', 'i', '6', '4', '_', 't', 'r', 'a', 'p',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_',
+ '2', 'd', '_', 'v', '2', 'i', '6', '4', '_', 'z', 'e', 'r', 'o', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd',
+ '_', 'v', '2', 'i', '8', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'v',
+ '2', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'v', '2', 'i', '8',
+ '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
+ 's', 't', '_', 'b', '_', '2', 'd', '_', 'v', '4', 'i', '1', '6', '_', 'c',
+ 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
+ 't', '_', 'b', '_', '2', 'd', '_', 'v', '4', 'i', '1', '6', '_', 't', 'r',
+ 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
+ 'b', '_', '2', 'd', '_', 'v', '4', 'i', '1', '6', '_', 'z', 'e', 'r', 'o',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_',
+ '2', 'd', '_', 'v', '4', 'i', '3', '2', '_', 'c', 'l', 'a', 'm', 'p', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2',
+ 'd', '_', 'v', '4', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_',
+ 'v', '4', 'i', '3', '2', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'v', '4',
+ 'i', '8', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 's', 'u', 's', 't', '_', 'b', '_', '2', 'd', '_', 'v', '4', 'i', '8',
+ '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
+ 's', 't', '_', 'b', '_', '2', 'd', '_', 'v', '4', 'i', '8', '_', 'z', 'e',
+ 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
+ 'b', '_', '3', 'd', '_', 'i', '1', '6', '_', 'c', 'l', 'a', 'm', 'p', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3',
+ 'd', '_', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'i', '1',
+ '6', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
+ 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'i', '3', '2', '_', 'c', 'l',
+ 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
+ '_', 'b', '_', '3', 'd', '_', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3',
+ 'd', '_', 'i', '3', '2', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'i', '6',
+ '4', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'i', '6', '4', '_', 't',
+ 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
+ '_', 'b', '_', '3', 'd', '_', 'i', '6', '4', '_', 'z', 'e', 'r', 'o', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3',
+ 'd', '_', 'i', '8', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'i', '8',
+ '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
+ 's', 't', '_', 'b', '_', '3', 'd', '_', 'i', '8', '_', 'z', 'e', 'r', 'o',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_',
+ '3', 'd', '_', 'v', '2', 'i', '1', '6', '_', 'c', 'l', 'a', 'm', 'p', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3',
+ 'd', '_', 'v', '2', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_',
+ 'v', '2', 'i', '1', '6', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'v', '2',
+ 'i', '3', '2', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'v', '2', 'i',
+ '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'v', '2', 'i', '3', '2',
+ '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
+ 's', 't', '_', 'b', '_', '3', 'd', '_', 'v', '2', 'i', '6', '4', '_', 'c',
+ 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
+ 't', '_', 'b', '_', '3', 'd', '_', 'v', '2', 'i', '6', '4', '_', 't', 'r',
+ 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
+ 'b', '_', '3', 'd', '_', 'v', '2', 'i', '6', '4', '_', 'z', 'e', 'r', 'o',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_',
+ '3', 'd', '_', 'v', '2', 'i', '8', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_',
'_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd',
- '_', 'v', '4', 'i', '8', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '1', 'd', '_', 'a', 'r',
- 'r', 'a', 'y', '_', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '1', 'd', '_',
- 'a', 'r', 'r', 'a', 'y', '_', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '1',
- 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '8', '_', 't', 'r', 'a', 'p',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_',
- '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '1', '6', '_',
+ '_', 'v', '2', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'v', '2',
+ 'i', '8', '_', 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'v', '4', 'i', '1', '6',
+ '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
+ 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'v', '4', 'i', '1', '6', '_',
't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
- 't', '_', 'p', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2',
+ 't', '_', 'b', '_', '3', 'd', '_', 'v', '4', 'i', '1', '6', '_', 'z', 'e',
+ 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
+ 'b', '_', '3', 'd', '_', 'v', '4', 'i', '3', '2', '_', 'c', 'l', 'a', 'm',
+ 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b',
+ '_', '3', 'd', '_', 'v', '4', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3',
+ 'd', '_', 'v', '4', 'i', '3', '2', '_', 'z', 'e', 'r', 'o', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_',
+ 'v', '4', 'i', '8', '_', 'c', 'l', 'a', 'm', 'p', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'v', '4',
+ 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 's', 'u', 's', 't', '_', 'b', '_', '3', 'd', '_', 'v', '4', 'i', '8', '_',
+ 'z', 'e', 'r', 'o', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
+ 't', '_', 'p', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '1',
+ '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
+ 'u', 's', 't', '_', 'p', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_',
'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm',
'_', 's', 'u', 's', 't', '_', 'p', '_', '1', 'd', '_', 'a', 'r', 'r', 'a',
- 'y', '_', 'v', '2', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '1', 'd', '_', 'a',
- 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '1', '6', '_', 't', 'r', 'a', 'p',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_',
- '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '3', '2', '_',
- 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
- 't', '_', 'p', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4',
- 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'u', 's', 't', '_', 'p', '_', '1', 'd', '_', 'i', '1', '6', '_', 't',
- 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
- '_', 'p', '_', '1', 'd', '_', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '1',
- 'd', '_', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '1', 'd', '_', 'v', '2', 'i',
- '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'u', 's', 't', '_', 'p', '_', '1', 'd', '_', 'v', '2', 'i', '3', '2',
- '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
- 's', 't', '_', 'p', '_', '1', 'd', '_', 'v', '2', 'i', '8', '_', 't', 'r',
- 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
- 'p', '_', '1', 'd', '_', 'v', '4', 'i', '1', '6', '_', 't', 'r', 'a', 'p',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_',
- '1', 'd', '_', 'v', '4', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_',
+ 'y', '_', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '1', 'd', '_', 'a', 'r', 'r',
+ 'a', 'y', '_', 'v', '2', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_',
'_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '1', 'd',
- '_', 'v', '4', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '2', 'd', '_', 'a', 'r',
- 'r', 'a', 'y', '_', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '2', 'd', '_',
- 'a', 'r', 'r', 'a', 'y', '_', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '2',
- 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '8', '_', 't', 'r', 'a', 'p',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_',
- '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '1', '6', '_',
+ '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '3', '2', '_', 't', 'r',
+ 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
+ 'p', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '8',
+ '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
+ 's', 't', '_', 'p', '_', '1', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v',
+ '4', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '1', 'd', '_', 'a', 'r', 'r',
+ 'a', 'y', '_', 'v', '4', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '1', 'd',
+ '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '8', '_', 't', 'r', 'a',
+ 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p',
+ '_', '1', 'd', '_', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '1', 'd', '_',
+ 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 's', 'u', 's', 't', '_', 'p', '_', '1', 'd', '_', 'i', '8', '_', 't',
+ 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
+ '_', 'p', '_', '1', 'd', '_', 'v', '2', 'i', '1', '6', '_', 't', 'r', 'a',
+ 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p',
+ '_', '1', 'd', '_', 'v', '2', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '1',
+ 'd', '_', 'v', '2', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '1', 'd', '_', 'v',
+ '4', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '1', 'd', '_', 'v', '4', 'i',
+ '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 's', 'u', 's', 't', '_', 'p', '_', '1', 'd', '_', 'v', '4', 'i', '8', '_',
't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
- 't', '_', 'p', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2',
+ 't', '_', 'p', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'i', '1',
+ '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
+ 'u', 's', 't', '_', 'p', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_',
'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm',
'_', 's', 'u', 's', 't', '_', 'p', '_', '2', 'd', '_', 'a', 'r', 'r', 'a',
- 'y', '_', 'v', '2', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '2', 'd', '_', 'a',
- 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '1', '6', '_', 't', 'r', 'a', 'p',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_',
- '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '3', '2', '_',
- 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
- 't', '_', 'p', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4',
- 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'u', 's', 't', '_', 'p', '_', '2', 'd', '_', 'i', '1', '6', '_', 't',
- 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
- '_', 'p', '_', '2', 'd', '_', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '2',
- 'd', '_', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '2', 'd', '_', 'v', '2', 'i',
- '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 's', 'u', 's', 't', '_', 'p', '_', '2', 'd', '_', 'v', '2', 'i', '3', '2',
- '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
- 's', 't', '_', 'p', '_', '2', 'd', '_', 'v', '2', 'i', '8', '_', 't', 'r',
- 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
- 'p', '_', '2', 'd', '_', 'v', '4', 'i', '1', '6', '_', 't', 'r', 'a', 'p',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_',
- '2', 'd', '_', 'v', '4', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_',
+ 'y', '_', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '2', 'd', '_', 'a', 'r', 'r',
+ 'a', 'y', '_', 'v', '2', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_',
'_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '2', 'd',
- '_', 'v', '4', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '3', 'd', '_', 'i', '1',
- '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
- 'u', 's', 't', '_', 'p', '_', '3', 'd', '_', 'i', '3', '2', '_', 't', 'r',
+ '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '3', '2', '_', 't', 'r',
'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
- 'p', '_', '3', 'd', '_', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '3', 'd', '_',
- 'v', '2', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '3', 'd', '_', 'v', '2',
- 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm',
- '_', 's', 'u', 's', 't', '_', 'p', '_', '3', 'd', '_', 'v', '2', 'i', '8',
+ 'p', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '2', 'i', '8',
'_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u',
- 's', 't', '_', 'p', '_', '3', 'd', '_', 'v', '4', 'i', '1', '6', '_', 't',
- 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
- '_', 'p', '_', '3', 'd', '_', 'v', '4', 'i', '3', '2', '_', 't', 'r', 'a',
+ 's', 't', '_', 'p', '_', '2', 'd', '_', 'a', 'r', 'r', 'a', 'y', '_', 'v',
+ '4', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '2', 'd', '_', 'a', 'r', 'r',
+ 'a', 'y', '_', 'v', '4', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_',
+ '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '2', 'd',
+ '_', 'a', 'r', 'r', 'a', 'y', '_', 'v', '4', 'i', '8', '_', 't', 'r', 'a',
'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p',
- '_', '3', 'd', '_', 'v', '4', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 's', 'w', 'a', 'p', '_', 'l', 'o', '_', 'h',
- 'i', '_', 'b', '6', '4', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 't', 'r',
- 'u', 'n', 'c', '_', 'd', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 't', 'r',
- 'u', 'n', 'c', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 't', 'r',
- 'u', 'n', 'c', '_', 'f', 't', 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 't', 'x', 'q', '_', 'a', 'r', 'r', 'a', 'y', '_', 's', 'i', 'z',
- 'e', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 't', 'x', 'q', '_', 'c', 'h',
- 'a', 'n', 'n', 'e', 'l', '_', 'd', 'a', 't', 'a', '_', 't', 'y', 'p', 'e',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 't', 'x', 'q', '_', 'c', 'h', 'a',
- 'n', 'n', 'e', 'l', '_', 'o', 'r', 'd', 'e', 'r', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 't', 'x', 'q', '_', 'd', 'e', 'p', 't', 'h', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 't', 'x', 'q', '_', 'h', 'e', 'i', 'g', 'h', 't',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 't', 'x', 'q', '_', 'n', 'u', 'm',
- '_', 'm', 'i', 'p', 'm', 'a', 'p', '_', 'l', 'e', 'v', 'e', 'l', 's', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 't', 'x', 'q', '_', 'n', 'u', 'm', '_',
- 's', 'a', 'm', 'p', 'l', 'e', 's', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
- 't', 'x', 'q', '_', 'w', 'i', 'd', 't', 'h', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'u', 'i', '2', 'd', '_', 'r', 'm', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'u', 'i', '2', 'd', '_', 'r', 'n', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'u', 'i', '2', 'd', '_', 'r', 'p', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'u', 'i', '2', 'd', '_', 'r', 'z', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'u', 'i', '2', 'f', '_', 'r', 'm', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'u', 'i', '2', 'f', '_', 'r', 'n', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'u', 'i', '2', 'f', '_', 'r', 'p', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'u', 'i', '2', 'f', '_', 'r', 'z', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'u', 'l', 'l', '2', 'd', '_', 'r', 'm', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'u', 'l', 'l', '2', 'd', '_', 'r', 'n', '\000', '_', '_', 'n',
- 'v', 'v', 'm', '_', 'u', 'l', 'l', '2', 'd', '_', 'r', 'p', '\000', '_', '_',
- 'n', 'v', 'v', 'm', '_', 'u', 'l', 'l', '2', 'd', '_', 'r', 'z', '\000', '_',
- '_', 'n', 'v', 'v', 'm', '_', 'u', 'l', 'l', '2', 'f', '_', 'r', 'm', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'u', 'l', 'l', '2', 'f', '_', 'r', 'n',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'u', 'l', 'l', '2', 'f', '_', 'r',
- 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'u', 'l', 'l', '2', 'f', '_',
- 'r', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'v', 'o', 't', 'e', '_',
- 'a', 'l', 'l', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'v', 'o', 't', 'e',
- '_', 'a', 'l', 'l', '_', 's', 'y', 'n', 'c', '\000', '_', '_', 'n', 'v', 'v',
- 'm', '_', 'v', 'o', 't', 'e', '_', 'a', 'n', 'y', '\000', '_', '_', 'n', 'v',
- 'v', 'm', '_', 'v', 'o', 't', 'e', '_', 'a', 'n', 'y', '_', 's', 'y', 'n',
- 'c', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'v', 'o', 't', 'e', '_', 'b',
- 'a', 'l', 'l', 'o', 't', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'v', 'o',
- 't', 'e', '_', 'b', 'a', 'l', 'l', 'o', 't', '_', 's', 'y', 'n', 'c', '\000',
- '_', '_', 'n', 'v', 'v', 'm', '_', 'v', 'o', 't', 'e', '_', 'u', 'n', 'i',
- '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'v', 'o', 't', 'e', '_', 'u', 'n',
- 'i', '_', 's', 'y', 'n', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'd', 'd', 'f', '1', '2', '8', '_', 'r', 'o', 'u', 'n', 'd',
- '_', 't', 'o', '_', 'o', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'c', 'r', 'y', 'p',
- 't', 'o', '_', 'v', 'c', 'i', 'p', 'h', 'e', 'r', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'c',
- 'r', 'y', 'p', 't', 'o', '_', 'v', 'c', 'i', 'p', 'h', 'e', 'r', 'l', 'a',
- 's', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
- 't', 'i', 'v', 'e', 'c', '_', 'c', 'r', 'y', 'p', 't', 'o', '_', 'v', 'n',
- 'c', 'i', 'p', 'h', 'e', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'c', 'r', 'y', 'p', 't',
- 'o', '_', 'v', 'n', 'c', 'i', 'p', 'h', 'e', 'r', 'l', 'a', 's', 't', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
- 'e', 'c', '_', 'c', 'r', 'y', 'p', 't', 'o', '_', 'v', 'p', 'e', 'r', 'm',
- 'x', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
- 'l', 't', 'i', 'v', 'e', 'c', '_', 'c', 'r', 'y', 'p', 't', 'o', '_', 'v',
- 'p', 'm', 's', 'u', 'm', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'c', 'r', 'y', 'p', 't',
- 'o', '_', 'v', 'p', 'm', 's', 'u', 'm', 'd', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'c', 'r',
- 'y', 'p', 't', 'o', '_', 'v', 'p', 'm', 's', 'u', 'm', 'h', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c',
- '_', 'c', 'r', 'y', 'p', 't', 'o', '_', 'v', 'p', 'm', 's', 'u', 'm', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
- 'v', 'e', 'c', '_', 'c', 'r', 'y', 'p', 't', 'o', '_', 'v', 's', 'b', 'o',
- 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
- 'i', 'v', 'e', 'c', '_', 'c', 'r', 'y', 'p', 't', 'o', '_', 'v', 's', 'h',
- 'a', 's', 'i', 'g', 'm', 'a', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'c', 'r', 'y', 'p',
- 't', 'o', '_', 'v', 's', 'h', 'a', 's', 'i', 'g', 'm', 'a', 'w', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
- 'c', '_', 'd', 's', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'd', 's', 's', 'a', 'l', 'l',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
- 'v', 'e', 'c', '_', 'd', 's', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'd', 's', 't', 's',
- 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
- 'i', 'v', 'e', 'c', '_', 'd', 's', 't', 's', 't', 't', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
- 'd', 's', 't', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'm', 'f', 'v', 's', 'c', 'r', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
- 'e', 'c', '_', 'm', 't', 'v', 's', 'c', 'r', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a',
- 'b', 's', 'd', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a', 'b', 's', 'd', 'u',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
- 'i', 'v', 'e', 'c', '_', 'v', 'a', 'b', 's', 'd', 'u', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c',
- '_', 'v', 'a', 'd', 'd', 'c', 'u', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a', 'd',
- 'd', 'c', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a', 'd', 'd', 'e', 'c', 'u',
- 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
- 'i', 'v', 'e', 'c', '_', 'v', 'a', 'd', 'd', 'e', 'u', 'q', 'm', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
- 'c', '_', 'v', 'a', 'd', 'd', 's', 'b', 's', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a',
- 'd', 'd', 's', 'h', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a', 'd', 'd', 's', 'w',
- 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
- 'i', 'v', 'e', 'c', '_', 'v', 'a', 'd', 'd', 'u', 'b', 's', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c',
- '_', 'v', 'a', 'd', 'd', 'u', 'h', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a', 'd',
- 'd', 'u', 'w', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a', 'v', 'g', 's', 'b', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
- 'e', 'c', '_', 'v', 'a', 'v', 'g', 's', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a',
- 'v', 'g', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a', 'v', 'g', 'u', 'b', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
- 'e', 'c', '_', 'v', 'a', 'v', 'g', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a',
- 'v', 'g', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'b', 'p', 'e', 'r', 'm', 'q',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
- 'v', 'e', 'c', '_', 'v', 'c', 'f', 's', 'x', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c',
- 'f', 'u', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
- 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'l', 'z', 'l', 's', 'b', 'b',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
- 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'b', 'f', 'p', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
- 'v', 'c', 'm', 'p', 'b', 'f', 'p', '_', 'p', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c',
- 'm', 'p', 'e', 'q', 'f', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'e',
- 'q', 'f', 'p', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'e', 'q',
- 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
- 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'e', 'q', 'u', 'b', '_',
- 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
- 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'e', 'q', 'u', 'd', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
- 'c', '_', 'v', 'c', 'm', 'p', 'e', 'q', 'u', 'd', '_', 'p', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c',
- '_', 'v', 'c', 'm', 'p', 'e', 'q', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c',
- 'm', 'p', 'e', 'q', 'u', 'h', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm',
- 'p', 'e', 'q', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'e', 'q',
- 'u', 'w', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g', 'e', 'f',
- 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
- 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g', 'e', 'f', 'p', '_', 'p',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
- 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g', 't', 'f', 'p', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c',
- '_', 'v', 'c', 'm', 'p', 'g', 't', 'f', 'p', '_', 'p', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
- 'v', 'c', 'm', 'p', 'g', 't', 's', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm',
- 'p', 'g', 't', 's', 'b', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p',
- 'g', 't', 's', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g', 't', 's',
- 'd', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
- 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g', 't', 's', 'h',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
- 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g', 't', 's', 'h', '_', 'p', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
- 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g', 't', 's', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
- 'v', 'c', 'm', 'p', 'g', 't', 's', 'w', '_', 'p', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v',
- 'c', 'm', 'p', 'g', 't', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p',
- 'g', 't', 'u', 'b', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g',
- 't', 'u', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
- 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g', 't', 'u', 'd',
- '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
- 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g', 't', 'u', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
- 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g', 't', 'u', 'h', '_', 'p', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
- 'c', '_', 'v', 'c', 'm', 'p', 'g', 't', 'u', 'w', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v',
- 'c', 'm', 'p', 'g', 't', 'u', 'w', '_', 'p', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c',
- 'm', 'p', 'n', 'e', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'n', 'e',
- 'b', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
- 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'n', 'e', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
- 'e', 'c', '_', 'v', 'c', 'm', 'p', 'n', 'e', 'h', '_', 'p', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c',
- '_', 'v', 'c', 'm', 'p', 'n', 'e', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm',
- 'p', 'n', 'e', 'w', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'n',
- 'e', 'z', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
- 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'n', 'e', 'z', 'b',
- '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
- 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'n', 'e', 'z', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
- 'e', 'c', '_', 'v', 'c', 'm', 'p', 'n', 'e', 'z', 'h', '_', 'p', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
- 'c', '_', 'v', 'c', 'm', 'p', 'n', 'e', 'z', 'w', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v',
- 'c', 'm', 'p', 'n', 'e', 'z', 'w', '_', 'p', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c',
- 't', 's', 'x', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 't', 'u', 'x', 's', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
- 'e', 'c', '_', 'v', 'c', 't', 'z', 'l', 's', 'b', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
- 'v', 'e', 'x', 'p', 't', 'e', 'f', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'g', 'b',
- 'b', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
- 't', 'i', 'v', 'e', 'c', '_', 'v', 'l', 'o', 'g', 'e', 'f', 'p', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
- 'c', '_', 'v', 'm', 'a', 'd', 'd', 'f', 'p', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm',
- 'a', 'x', 'f', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'a', 'x', 's', 'b', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
- 'e', 'c', '_', 'v', 'm', 'a', 'x', 's', 'd', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm',
- 'a', 'x', 's', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'a', 'x', 's', 'w', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
- 'e', 'c', '_', 'v', 'm', 'a', 'x', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm',
- 'a', 'x', 'u', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'a', 'x', 'u', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
- 'e', 'c', '_', 'v', 'm', 'a', 'x', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm',
- 'h', 'a', 'd', 'd', 's', 'h', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'h', 'r',
- 'a', 'd', 'd', 's', 'h', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'i', 'n', 'f',
- 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
- 'i', 'v', 'e', 'c', '_', 'v', 'm', 'i', 'n', 's', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
- 'v', 'm', 'i', 'n', 's', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'i', 'n', 's',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
- 'i', 'v', 'e', 'c', '_', 'v', 'm', 'i', 'n', 's', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
- 'v', 'm', 'i', 'n', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'i', 'n', 'u',
+ '_', '2', 'd', '_', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '2', 'd', '_',
+ 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 's', 'u', 's', 't', '_', 'p', '_', '2', 'd', '_', 'i', '8', '_', 't',
+ 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't',
+ '_', 'p', '_', '2', 'd', '_', 'v', '2', 'i', '1', '6', '_', 't', 'r', 'a',
+ 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p',
+ '_', '2', 'd', '_', 'v', '2', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '2',
+ 'd', '_', 'v', '2', 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '2', 'd', '_', 'v',
+ '4', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '2', 'd', '_', 'v', '4', 'i',
+ '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 's', 'u', 's', 't', '_', 'p', '_', '2', 'd', '_', 'v', '4', 'i', '8', '_',
+ 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
+ 't', '_', 'p', '_', '3', 'd', '_', 'i', '1', '6', '_', 't', 'r', 'a', 'p',
+ '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_',
+ '3', 'd', '_', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '3', 'd', '_', 'i',
+ '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's',
+ 'u', 's', 't', '_', 'p', '_', '3', 'd', '_', 'v', '2', 'i', '1', '6', '_',
+ 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's',
+ 't', '_', 'p', '_', '3', 'd', '_', 'v', '2', 'i', '3', '2', '_', 't', 'r',
+ 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_',
+ 'p', '_', '3', 'd', '_', 'v', '2', 'i', '8', '_', 't', 'r', 'a', 'p', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '3',
+ 'd', '_', 'v', '4', 'i', '1', '6', '_', 't', 'r', 'a', 'p', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '3', 'd', '_',
+ 'v', '4', 'i', '3', '2', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 's', 'u', 's', 't', '_', 'p', '_', '3', 'd', '_', 'v', '4',
+ 'i', '8', '_', 't', 'r', 'a', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 's', 'w', 'a', 'p', '_', 'l', 'o', '_', 'h', 'i', '_', 'b', '6', '4', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 't', 'r', 'u', 'n', 'c', '_', 'd', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 't', 'r', 'u', 'n', 'c', '_', 'f', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 't', 'r', 'u', 'n', 'c', '_', 'f', 't',
+ 'z', '_', 'f', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 't', 'x', 'q', '_',
+ 'a', 'r', 'r', 'a', 'y', '_', 's', 'i', 'z', 'e', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 't', 'x', 'q', '_', 'c', 'h', 'a', 'n', 'n', 'e', 'l', '_',
+ 'd', 'a', 't', 'a', '_', 't', 'y', 'p', 'e', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 't', 'x', 'q', '_', 'c', 'h', 'a', 'n', 'n', 'e', 'l', '_', 'o',
+ 'r', 'd', 'e', 'r', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 't', 'x', 'q',
+ '_', 'd', 'e', 'p', 't', 'h', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 't',
+ 'x', 'q', '_', 'h', 'e', 'i', 'g', 'h', 't', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 't', 'x', 'q', '_', 'n', 'u', 'm', '_', 'm', 'i', 'p', 'm', 'a',
+ 'p', '_', 'l', 'e', 'v', 'e', 'l', 's', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 't', 'x', 'q', '_', 'n', 'u', 'm', '_', 's', 'a', 'm', 'p', 'l', 'e',
+ 's', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 't', 'x', 'q', '_', 'w', 'i',
+ 'd', 't', 'h', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'u', 'i', '2', 'd',
+ '_', 'r', 'm', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'u', 'i', '2', 'd',
+ '_', 'r', 'n', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'u', 'i', '2', 'd',
+ '_', 'r', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'u', 'i', '2', 'd',
+ '_', 'r', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'u', 'i', '2', 'f',
+ '_', 'r', 'm', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'u', 'i', '2', 'f',
+ '_', 'r', 'n', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'u', 'i', '2', 'f',
+ '_', 'r', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'u', 'i', '2', 'f',
+ '_', 'r', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'u', 'l', 'l', '2',
+ 'd', '_', 'r', 'm', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'u', 'l', 'l',
+ '2', 'd', '_', 'r', 'n', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'u', 'l',
+ 'l', '2', 'd', '_', 'r', 'p', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'u',
+ 'l', 'l', '2', 'd', '_', 'r', 'z', '\000', '_', '_', 'n', 'v', 'v', 'm', '_',
+ 'u', 'l', 'l', '2', 'f', '_', 'r', 'm', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'u', 'l', 'l', '2', 'f', '_', 'r', 'n', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'u', 'l', 'l', '2', 'f', '_', 'r', 'p', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 'u', 'l', 'l', '2', 'f', '_', 'r', 'z', '\000', '_', '_', 'n',
+ 'v', 'v', 'm', '_', 'v', 'o', 't', 'e', '_', 'a', 'l', 'l', '\000', '_', '_',
+ 'n', 'v', 'v', 'm', '_', 'v', 'o', 't', 'e', '_', 'a', 'l', 'l', '_', 's',
+ 'y', 'n', 'c', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'v', 'o', 't', 'e',
+ '_', 'a', 'n', 'y', '\000', '_', '_', 'n', 'v', 'v', 'm', '_', 'v', 'o', 't',
+ 'e', '_', 'a', 'n', 'y', '_', 's', 'y', 'n', 'c', '\000', '_', '_', 'n', 'v',
+ 'v', 'm', '_', 'v', 'o', 't', 'e', '_', 'b', 'a', 'l', 'l', 'o', 't', '\000',
+ '_', '_', 'n', 'v', 'v', 'm', '_', 'v', 'o', 't', 'e', '_', 'b', 'a', 'l',
+ 'l', 'o', 't', '_', 's', 'y', 'n', 'c', '\000', '_', '_', 'n', 'v', 'v', 'm',
+ '_', 'v', 'o', 't', 'e', '_', 'u', 'n', 'i', '\000', '_', '_', 'n', 'v', 'v',
+ 'm', '_', 'v', 'o', 't', 'e', '_', 'u', 'n', 'i', '_', 's', 'y', 'n', 'c',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'd', 'd', 'f',
+ '1', '2', '8', '_', 'r', 'o', 'u', 'n', 'd', '_', 't', 'o', '_', 'o', 'd',
'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
- 'i', 'v', 'e', 'c', '_', 'v', 'm', 'i', 'n', 'u', 'h', '\000', '_', '_', 'b',
+ 'i', 'v', 'e', 'c', '_', 'c', 'r', 'y', 'p', 't', 'o', '_', 'v', 'c', 'i',
+ 'p', 'h', 'e', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'c', 'r', 'y', 'p', 't', 'o', '_',
+ 'v', 'c', 'i', 'p', 'h', 'e', 'r', 'l', 'a', 's', 't', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
- 'v', 'm', 'i', 'n', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'l', 'a', 'd',
- 'd', 'u', 'h', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 's', 'u', 'm', 'm', 'b',
- 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
- 'i', 'v', 'e', 'c', '_', 'v', 'm', 's', 'u', 'm', 's', 'h', 'm', '\000', '_',
+ 'c', 'r', 'y', 'p', 't', 'o', '_', 'v', 'n', 'c', 'i', 'p', 'h', 'e', 'r',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
+ 'v', 'e', 'c', '_', 'c', 'r', 'y', 'p', 't', 'o', '_', 'v', 'n', 'c', 'i',
+ 'p', 'h', 'e', 'r', 'l', 'a', 's', 't', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'c', 'r', 'y',
+ 'p', 't', 'o', '_', 'v', 'p', 'e', 'r', 'm', 'x', 'o', 'r', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c',
+ '_', 'c', 'r', 'y', 'p', 't', 'o', '_', 'v', 'p', 'm', 's', 'u', 'm', 'b',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
+ 'v', 'e', 'c', '_', 'c', 'r', 'y', 'p', 't', 'o', '_', 'v', 'p', 'm', 's',
+ 'u', 'm', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'l', 't', 'i', 'v', 'e', 'c', '_', 'c', 'r', 'y', 'p', 't', 'o', '_', 'v',
+ 'p', 'm', 's', 'u', 'm', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'c', 'r', 'y', 'p', 't',
+ 'o', '_', 'v', 'p', 'm', 's', 'u', 'm', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'c', 'r',
+ 'y', 'p', 't', 'o', '_', 'v', 's', 'b', 'o', 'x', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'c',
+ 'r', 'y', 'p', 't', 'o', '_', 'v', 's', 'h', 'a', 's', 'i', 'g', 'm', 'a',
+ 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
+ 'i', 'v', 'e', 'c', '_', 'c', 'r', 'y', 'p', 't', 'o', '_', 'v', 's', 'h',
+ 'a', 's', 'i', 'g', 'm', 'a', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'd', 's', 's', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
+ 'e', 'c', '_', 'd', 's', 's', 'a', 'l', 'l', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'd', 's',
+ 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
+ 'i', 'v', 'e', 'c', '_', 'd', 's', 't', 's', 't', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'd',
+ 's', 't', 's', 't', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'd', 's', 't', 't', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
- 'c', '_', 'v', 'm', 's', 'u', 'm', 's', 'h', 's', '\000', '_', '_', 'b', 'u',
+ 'c', '_', 'm', 'f', 'v', 's', 'c', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'm', 't', 'v',
+ 's', 'c', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a', 'b', 's', 'd', 'u', 'b', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
+ 'e', 'c', '_', 'v', 'a', 'b', 's', 'd', 'u', 'h', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v',
- 'm', 's', 'u', 'm', 'u', 'b', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'a', 'b', 's', 'd', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a', 'd', 'd', 'c',
+ 'u', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
+ 't', 'i', 'v', 'e', 'c', '_', 'v', 'a', 'd', 'd', 'c', 'u', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
+ 'c', '_', 'v', 'a', 'd', 'd', 'e', 'c', 'u', 'q', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v',
+ 'a', 'd', 'd', 'e', 'u', 'q', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a', 'd', 'd',
+ 's', 'b', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a', 'd', 'd', 's', 'h', 's', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
+ 'e', 'c', '_', 'v', 'a', 'd', 'd', 's', 'w', 's', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v',
+ 'a', 'd', 'd', 'u', 'b', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a', 'd', 'd', 'u',
+ 'h', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
+ 't', 'i', 'v', 'e', 'c', '_', 'v', 'a', 'd', 'd', 'u', 'w', 's', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
+ 'c', '_', 'v', 'a', 'v', 'g', 's', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a', 'v',
+ 'g', 's', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a', 'v', 'g', 's', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
+ 'c', '_', 'v', 'a', 'v', 'g', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a', 'v',
+ 'g', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'a', 'v', 'g', 'u', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
+ 'c', '_', 'v', 'b', 'p', 'e', 'r', 'm', 'q', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c',
+ 'f', 's', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'f', 'u', 'x', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c',
+ '_', 'v', 'c', 'l', 'z', 'l', 's', 'b', 'b', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c',
+ 'm', 'p', 'b', 'f', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'b', 'f',
+ 'p', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'e', 'q', 'f', 'p',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
+ 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'e', 'q', 'f', 'p', '_', 'p', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
+ 'e', 'c', '_', 'v', 'c', 'm', 'p', 'e', 'q', 'u', 'b', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
+ 'v', 'c', 'm', 'p', 'e', 'q', 'u', 'b', '_', 'p', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v',
+ 'c', 'm', 'p', 'e', 'q', 'u', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p',
+ 'e', 'q', 'u', 'd', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'e',
+ 'q', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'e', 'q', 'u', 'h',
+ '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
+ 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'e', 'q', 'u', 'w', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
+ 'e', 'c', '_', 'v', 'c', 'm', 'p', 'e', 'q', 'u', 'w', '_', 'p', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
+ 'c', '_', 'v', 'c', 'm', 'p', 'g', 'e', 'f', 'p', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v',
+ 'c', 'm', 'p', 'g', 'e', 'f', 'p', '_', 'p', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c',
+ 'm', 'p', 'g', 't', 'f', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g',
+ 't', 'f', 'p', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g', 't',
+ 's', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
+ 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g', 't', 's', 'b', '_',
+ 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
+ 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g', 't', 's', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
+ 'c', '_', 'v', 'c', 'm', 'p', 'g', 't', 's', 'd', '_', 'p', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c',
+ '_', 'v', 'c', 'm', 'p', 'g', 't', 's', 'h', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c',
+ 'm', 'p', 'g', 't', 's', 'h', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm',
+ 'p', 'g', 't', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g', 't',
+ 's', 'w', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g', 't', 'u',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
+ 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g', 't', 'u', 'b', '_', 'p',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
+ 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g', 't', 'u', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c',
+ '_', 'v', 'c', 'm', 'p', 'g', 't', 'u', 'd', '_', 'p', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
+ 'v', 'c', 'm', 'p', 'g', 't', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm',
+ 'p', 'g', 't', 'u', 'h', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p',
+ 'g', 't', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'g', 't', 'u',
+ 'w', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'n', 'e', 'b', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
+ 'e', 'c', '_', 'v', 'c', 'm', 'p', 'n', 'e', 'b', '_', 'p', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c',
+ '_', 'v', 'c', 'm', 'p', 'n', 'e', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm',
+ 'p', 'n', 'e', 'h', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'n',
+ 'e', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
+ 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'n', 'e', 'w', '_', 'p',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
+ 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'n', 'e', 'z', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c',
+ '_', 'v', 'c', 'm', 'p', 'n', 'e', 'z', 'b', '_', 'p', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
+ 'v', 'c', 'm', 'p', 'n', 'e', 'z', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm',
+ 'p', 'n', 'e', 'z', 'h', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p',
+ 'n', 'e', 'z', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 'm', 'p', 'n', 'e', 'z',
+ 'w', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 't', 's', 'x', 's', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
+ 'c', '_', 'v', 'c', 't', 'u', 'x', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'c', 't',
+ 'z', 'l', 's', 'b', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'e', 'x', 'p', 't', 'e',
+ 'f', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
+ 't', 'i', 'v', 'e', 'c', '_', 'v', 'g', 'b', 'b', 'd', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
+ 'v', 'l', 'o', 'g', 'e', 'f', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'a', 'd',
+ 'd', 'f', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'a', 'x', 'f', 'p', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
+ 'c', '_', 'v', 'm', 'a', 'x', 's', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'a',
+ 'x', 's', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'a', 'x', 's', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
+ 'c', '_', 'v', 'm', 'a', 'x', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'a',
+ 'x', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'a', 'x', 'u', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
+ 'c', '_', 'v', 'm', 'a', 'x', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'a',
+ 'x', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'h', 'a', 'd', 'd', 's', 'h',
+ 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
+ 'i', 'v', 'e', 'c', '_', 'v', 'm', 'h', 'r', 'a', 'd', 'd', 's', 'h', 's',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
+ 'v', 'e', 'c', '_', 'v', 'm', 'i', 'n', 'f', 'p', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v',
+ 'm', 'i', 'n', 's', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'i', 'n', 's', 'd',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
+ 'v', 'e', 'c', '_', 'v', 'm', 'i', 'n', 's', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v',
+ 'm', 'i', 'n', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'i', 'n', 'u', 'b',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
+ 'v', 'e', 'c', '_', 'v', 'm', 'i', 'n', 'u', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v',
+ 'm', 'i', 'n', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'i', 'n', 'u', 'w',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
+ 'v', 'e', 'c', '_', 'v', 'm', 'l', 'a', 'd', 'd', 'u', 'h', 'm', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
+ 'c', '_', 'v', 'm', 's', 'u', 'm', 'm', 'b', 'm', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v',
+ 'm', 's', 'u', 'm', 's', 'h', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 's', 'u',
- 'm', 'u', 'h', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 's', 'u', 'm', 'u', 'h',
- 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
- 'i', 'v', 'e', 'c', '_', 'v', 'm', 'u', 'l', 'e', 's', 'b', '\000', '_', '_',
+ 'm', 's', 'h', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 's', 'u', 'm', 'u', 'b',
+ 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
+ 'i', 'v', 'e', 'c', '_', 'v', 'm', 's', 'u', 'm', 'u', 'h', 'm', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
+ 'c', '_', 'v', 'm', 's', 'u', 'm', 'u', 'h', 's', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v',
+ 'm', 'u', 'l', 'e', 's', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'u', 'l', 'e',
+ 's', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
+ 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'u', 'l', 'e', 's', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
+ 'c', '_', 'v', 'm', 'u', 'l', 'e', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm',
+ 'u', 'l', 'e', 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'u', 'l', 'e', 'u',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
+ 'i', 'v', 'e', 'c', '_', 'v', 'm', 'u', 'l', 'o', 's', 'b', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c',
- '_', 'v', 'm', 'u', 'l', 'e', 's', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ '_', 'v', 'm', 'u', 'l', 'o', 's', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'u',
- 'l', 'e', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'u', 'l', 'e', 'u', 'b',
+ 'l', 'o', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'u', 'l', 'o', 'u', 'b',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
- 'v', 'e', 'c', '_', 'v', 'm', 'u', 'l', 'e', 'u', 'h', '\000', '_', '_', 'b',
+ 'v', 'e', 'c', '_', 'v', 'm', 'u', 'l', 'o', 'u', 'h', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
- 'v', 'm', 'u', 'l', 'e', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'u', 'l',
- 'o', 's', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
- 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'u', 'l', 'o', 's', 'h', '\000',
+ 'v', 'm', 'u', 'l', 'o', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'n', 'm', 's',
+ 'u', 'b', 'f', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'p', 'e', 'r', 'm', '_', '4',
+ 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
+ 't', 'i', 'v', 'e', 'c', '_', 'v', 'p', 'k', 'p', 'x', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
+ 'v', 'p', 'k', 's', 'd', 's', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'p', 'k', 's',
+ 'd', 'u', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'p', 'k', 's', 'h', 's', 's', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
- 'e', 'c', '_', 'v', 'm', 'u', 'l', 'o', 's', 'w', '\000', '_', '_', 'b', 'u',
+ 'e', 'c', '_', 'v', 'p', 'k', 's', 'h', 'u', 's', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v',
- 'm', 'u', 'l', 'o', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'u', 'l', 'o',
- 'u', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
- 't', 'i', 'v', 'e', 'c', '_', 'v', 'm', 'u', 'l', 'o', 'u', 'w', '\000', '_',
+ 'p', 'k', 's', 'w', 's', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'p', 'k', 's', 'w',
+ 'u', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
+ 't', 'i', 'v', 'e', 'c', '_', 'v', 'p', 'k', 'u', 'd', 'u', 's', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
- 'c', '_', 'v', 'n', 'm', 's', 'u', 'b', 'f', 'p', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v',
- 'p', 'e', 'r', 'm', '_', '4', 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'p', 'k',
- 'p', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
- 't', 'i', 'v', 'e', 'c', '_', 'v', 'p', 'k', 's', 'd', 's', 's', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
- 'c', '_', 'v', 'p', 'k', 's', 'd', 'u', 's', '\000', '_', '_', 'b', 'u', 'i',
+ 'c', '_', 'v', 'p', 'k', 'u', 'h', 'u', 's', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'p',
- 'k', 's', 'h', 's', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'p', 'k', 's', 'h', 'u',
- 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
- 'i', 'v', 'e', 'c', '_', 'v', 'p', 'k', 's', 'w', 's', 's', '\000', '_', '_',
+ 'k', 'u', 'w', 'u', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'p', 'r', 't', 'y', 'b',
+ 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
+ 'i', 'v', 'e', 'c', '_', 'v', 'p', 'r', 't', 'y', 'b', 'q', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c',
- '_', 'v', 'p', 'k', 's', 'w', 'u', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'p', 'k',
- 'u', 'd', 'u', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'p', 'k', 'u', 'h', 'u', 's',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
- 'v', 'e', 'c', '_', 'v', 'p', 'k', 'u', 'w', 'u', 's', '\000', '_', '_', 'b',
+ '_', 'v', 'p', 'r', 't', 'y', 'b', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'r', 'e',
+ 'f', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
+ 't', 'i', 'v', 'e', 'c', '_', 'v', 'r', 'f', 'i', 'm', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
- 'v', 'p', 'r', 't', 'y', 'b', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'p', 'r', 't',
- 'y', 'b', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
- 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'p', 'r', 't', 'y', 'b', 'w', '\000',
+ 'v', 'r', 'f', 'i', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'r', 'f', 'i', 'p', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
- 'e', 'c', '_', 'v', 'r', 'e', 'f', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'r', 'f',
- 'i', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
- 't', 'i', 'v', 'e', 'c', '_', 'v', 'r', 'f', 'i', 'n', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
- 'v', 'r', 'f', 'i', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'r', 'f', 'i', 'z', '\000',
+ 'e', 'c', '_', 'v', 'r', 'f', 'i', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'r', 'l',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
+ 'i', 'v', 'e', 'c', '_', 'v', 'r', 'l', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'r',
+ 'l', 'd', 'm', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'r', 'l', 'd', 'n', 'm', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
- 'e', 'c', '_', 'v', 'r', 'l', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'r', 'l', 'd',
+ 'e', 'c', '_', 'v', 'r', 'l', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'r', 'l', 'w',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
- 'v', 'e', 'c', '_', 'v', 'r', 'l', 'd', 'm', 'i', '\000', '_', '_', 'b', 'u',
+ 'v', 'e', 'c', '_', 'v', 'r', 'l', 'w', 'm', 'i', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v',
- 'r', 'l', 'd', 'n', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'r', 'l', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
- 'c', '_', 'v', 'r', 'l', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'r', 'l', 'w', 'm',
- 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
- 'i', 'v', 'e', 'c', '_', 'v', 'r', 'l', 'w', 'n', 'm', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
- 'v', 'r', 's', 'q', 'r', 't', 'e', 'f', 'p', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's',
- 'e', 'l', '_', '4', 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'l', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
- 'c', '_', 'v', 's', 'l', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'l', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
- 'e', 'c', '_', 'v', 's', 'l', 'o', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'l', 'v',
+ 'r', 'l', 'w', 'n', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'r', 's', 'q', 'r', 't',
+ 'e', 'f', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'e', 'l', '_', '4', 's', 'i',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
- 'v', 'e', 'c', '_', 'v', 's', 'l', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 'v', 'e', 'c', '_', 'v', 's', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'l', 'b',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
+ 'v', 'e', 'c', '_', 'v', 's', 'l', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'l',
+ 'o', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
+ 'i', 'v', 'e', 'c', '_', 'v', 's', 'l', 'v', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's',
+ 'l', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
+ 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'r', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's',
+ 'r', 'a', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'r', 'a', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c',
+ '_', 'v', 's', 'r', 'a', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'r', 'b', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
+ 'e', 'c', '_', 'v', 's', 'r', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'r', 'o',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
+ 'v', 'e', 'c', '_', 'v', 's', 'r', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'r',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
- 'v', 'e', 'c', '_', 'v', 's', 'r', 'a', 'b', '\000', '_', '_', 'b', 'u', 'i',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
+ 'i', 'v', 'e', 'c', '_', 'v', 's', 'u', 'b', 'c', 'u', 'q', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c',
+ '_', 'v', 's', 'u', 'b', 'c', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'u',
+ 'b', 'e', 'c', 'u', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'u', 'b', 'e', 'u',
+ 'q', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
+ 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'u', 'b', 's', 'b', 's', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
+ 'c', '_', 'v', 's', 'u', 'b', 's', 'h', 's', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's',
- 'r', 'a', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
- 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'r', 'a', 'w', '\000', '_', '_',
+ 'u', 'b', 's', 'w', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'u', 'b', 'u', 'b',
+ 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
+ 'i', 'v', 'e', 'c', '_', 'v', 's', 'u', 'b', 'u', 'h', 's', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c',
- '_', 'v', 's', 'r', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'r', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
- 'c', '_', 'v', 's', 'r', 'o', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'r', 'v', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
- 'e', 'c', '_', 'v', 's', 'r', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'u', 'b',
- 'c', 'u', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
- 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'u', 'b', 'c', 'u', 'w', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
- 'e', 'c', '_', 'v', 's', 'u', 'b', 'e', 'c', 'u', 'q', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
- 'v', 's', 'u', 'b', 'e', 'u', 'q', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ '_', 'v', 's', 'u', 'b', 'u', 'w', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'u',
- 'b', 's', 'b', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'u', 'b', 's', 'h', 's',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
- 'v', 'e', 'c', '_', 'v', 's', 'u', 'b', 's', 'w', 's', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
- 'v', 's', 'u', 'b', 'u', 'b', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'u', 'b',
- 'u', 'h', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
- 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'u', 'b', 'u', 'w', 's', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
- 'e', 'c', '_', 'v', 's', 'u', 'm', '2', 's', 'w', 's', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
- 'v', 's', 'u', 'm', '4', 's', 'b', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'u',
- 'm', '4', 's', 'h', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'u', 'm', '4', 'u',
+ 'm', '2', 's', 'w', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'u', 'm', '4', 's',
'b', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
- 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'u', 'm', 's', 'w', 's', '\000', '_',
+ 't', 'i', 'v', 'e', 'c', '_', 'v', 's', 'u', 'm', '4', 's', 'h', 's', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
+ 'e', 'c', '_', 'v', 's', 'u', 'm', '4', 'u', 'b', 's', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_',
+ 'v', 's', 'u', 'm', 's', 'w', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'u', 'p', 'k',
+ 'h', 'p', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a',
+ 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'u', 'p', 'k', 'h', 's', 'b', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v',
+ 'e', 'c', '_', 'v', 'u', 'p', 'k', 'h', 's', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v',
+ 'u', 'p', 'k', 'h', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'u', 'p', 'k', 'l',
+ 'p', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l',
+ 't', 'i', 'v', 'e', 'c', '_', 'v', 'u', 'p', 'k', 'l', 's', 'b', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e',
- 'c', '_', 'v', 'u', 'p', 'k', 'h', 'p', 'x', '\000', '_', '_', 'b', 'u', 'i',
+ 'c', '_', 'v', 'u', 'p', 'k', 'l', 's', 'h', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'u',
- 'p', 'k', 'h', 's', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'u', 'p', 'k', 'h', 's',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't',
- 'i', 'v', 'e', 'c', '_', 'v', 'u', 'p', 'k', 'h', 's', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c',
- '_', 'v', 'u', 'p', 'k', 'l', 'p', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'u', 'p',
- 'k', 'l', 's', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'a', 'l', 't', 'i', 'v', 'e', 'c', '_', 'v', 'u', 'p', 'k', 'l', 's', 'h',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'a', 'l', 't', 'i',
- 'v', 'e', 'c', '_', 'v', 'u', 'p', 'k', 'l', 's', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'b', 'p', 'e', 'r', 'm', 'd', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'd', 'i', 'v', 'd', 'e', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'd', 'i', 'v', 'd', 'e',
- 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'd', 'i', 'v',
- 'f', '1', '2', '8', '_', 'r', 'o', 'u', 'n', 'd', '_', 't', 'o', '_', 'o',
- 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'd', 'i',
- 'v', 'w', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'd',
- 'i', 'v', 'w', 'e', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'f', 'm', 'a', 'f', '1', '2', '8', '_', 'r', 'o', 'u', 'n', 'd', '_',
- 't', 'o', '_', 'o', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'g', 'e', 't', '_', 't', 'e', 'x', 'a', 's', 'r', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'g', 'e', 't', '_', 't', 'e', 'x',
- 'a', 's', 'r', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'g', 'e', 't', '_', 't', 'f', 'h', 'a', 'r', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'g', 'e', 't', '_', 't', 'f', 'i', 'a', 'r', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'm', 'u', 'l', 'f', '1',
+ 'p', 'k', 'l', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'b', 'p', 'e', 'r', 'm', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'd', 'i', 'v', 'd', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'd', 'i', 'v', 'd', 'e', 'u', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'd', 'i', 'v', 'f', '1', '2', '8', '_', 'r',
+ 'o', 'u', 'n', 'd', '_', 't', 'o', '_', 'o', 'd', 'd', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'd', 'i', 'v', 'w', 'e', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'd', 'i', 'v', 'w', 'e', 'u', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'f', 'm', 'a', 'f', '1',
'2', '8', '_', 'r', 'o', 'u', 'n', 'd', '_', 't', 'o', '_', 'o', 'd', 'd',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'g', 'e', 't', '_',
+ 't', 'e', 'x', 'a', 's', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'g', 'e', 't', '_', 't', 'e', 'x', 'a', 's', 'r', 'u', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'g', 'e', 't', '_', 't', 'f',
+ 'h', 'a', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'g',
+ 'e', 't', '_', 't', 'f', 'i', 'a', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'm', 'u', 'l', 'f', '1', '2', '8', '_', 'r', 'o', 'u',
+ 'n', 'd', '_', 't', 'o', '_', 'o', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'a', 'b', 's',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_',
- 'q', 'v', 'f', 'a', 'b', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'a', 'd', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f',
- 'a', 'd', 'd', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'q', 'p', 'x', '_', 'q', 'v', 'f', 'c', 'f', 'i', 'd', '\000', '_', '_', 'b',
+ 'q', 'v', 'f', 'a', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'a', 'd', 'd', 's', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v',
+ 'f', 'c', 'f', 'i', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'c', 'f', 'i', 'd', 's', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v',
+ 'f', 'c', 'f', 'i', 'd', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'c', 'f', 'i', 'd', 'u', 's',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_',
+ 'q', 'v', 'f', 'c', 'm', 'p', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'c', 'm', 'p', 'g',
+ 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x',
+ '_', 'q', 'v', 'f', 'c', 'm', 'p', 'l', 't', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'c', 'p', 's',
+ 'g', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p',
+ 'x', '_', 'q', 'v', 'f', 'c', 't', 'i', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'c', 't', 'i',
+ 'd', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p',
+ 'x', '_', 'q', 'v', 'f', 'c', 't', 'i', 'd', 'u', 'z', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'c',
- 'f', 'i', 'd', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'q', 'p', 'x', '_', 'q', 'v', 'f', 'c', 'f', 'i', 'd', 'u', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f',
- 'c', 'f', 'i', 'd', 'u', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'c', 'm', 'p', 'e', 'q', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q',
- 'v', 'f', 'c', 'm', 'p', 'g', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'c', 'm', 'p', 'l', 't',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_',
- 'q', 'v', 'f', 'c', 'p', 's', 'g', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'c', 't', 'i', 'd',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_',
- 'q', 'v', 'f', 'c', 't', 'i', 'd', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'c', 't', 'i', 'd',
- 'u', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p',
- 'x', '_', 'q', 'v', 'f', 'c', 't', 'i', 'd', 'z', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'c', 't',
- 'i', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p',
- 'x', '_', 'q', 'v', 'f', 'c', 't', 'i', 'w', 'u', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'c', 't',
- 'i', 'w', 'u', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'q', 'p', 'x', '_', 'q', 'v', 'f', 'c', 't', 'i', 'w', 'z', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f',
- 'l', 'o', 'g', 'i', 'c', 'a', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'm', 'a', 'd', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q',
- 'v', 'f', 'm', 'a', 'd', 'd', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'm', 's', 'u', 'b', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q',
- 'v', 'f', 'm', 's', 'u', 'b', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'm', 'u', 'l', '\000', '_',
+ 't', 'i', 'd', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'q', 'p', 'x', '_', 'q', 'v', 'f', 'c', 't', 'i', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'c',
+ 't', 'i', 'w', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'q', 'p', 'x', '_', 'q', 'v', 'f', 'c', 't', 'i', 'w', 'u', 'z', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v',
- 'f', 'm', 'u', 'l', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'n', 'a', 'b', 's', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f',
- 'n', 'e', 'g', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q',
- 'p', 'x', '_', 'q', 'v', 'f', 'n', 'm', 'a', 'd', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'n',
- 'm', 'a', 'd', 'd', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'n', 'm', 's', 'u', 'b', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v',
- 'f', 'n', 'm', 's', 'u', 'b', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'p', 'e', 'r', 'm', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q',
- 'v', 'f', 'r', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'q', 'p', 'x', '_', 'q', 'v', 'f', 'r', 'e', 's', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'r', 'i',
- 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x',
- '_', 'q', 'v', 'f', 'r', 'i', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'r', 'i', 'p', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v',
- 'f', 'r', 'i', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'q', 'p', 'x', '_', 'q', 'v', 'f', 'r', 's', 'p', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'r', 's',
- 'q', 'r', 't', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'q', 'p', 'x', '_', 'q', 'v', 'f', 'r', 's', 'q', 'r', 't', 'e', 's', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q',
- 'v', 'f', 's', 'e', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 's', 'u', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 's',
- 'u', 'b', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q',
- 'p', 'x', '_', 'q', 'v', 'f', 't', 's', 't', 'n', 'a', 'n', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f',
- 'x', 'm', 'a', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'x', 'm', 'a', 'd', 'd', 's', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q',
- 'v', 'f', 'x', 'm', 'u', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'x', 'm', 'u', 'l', 's', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q',
- 'v', 'f', 'x', 'x', 'c', 'p', 'n', 'm', 'a', 'd', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'x',
- 'x', 'c', 'p', 'n', 'm', 'a', 'd', 'd', 's', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'x', 'x', 'm',
- 'a', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q',
- 'p', 'x', '_', 'q', 'v', 'f', 'x', 'x', 'm', 'a', 'd', 'd', 's', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v',
- 'f', 'x', 'x', 'n', 'p', 'm', 'a', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'x', 'x', 'n',
- 'p', 'm', 'a', 'd', 'd', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'g', 'p', 'c', 'i', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'l',
- 'f', 'c', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q',
- 'p', 'x', '_', 'q', 'v', 'l', 'f', 'c', 'd', 'a', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'l', 'f', 'c',
+ 'f', 'c', 't', 'i', 'w', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'l', 'o', 'g', 'i', 'c', 'a',
+ 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x',
+ '_', 'q', 'v', 'f', 'm', 'a', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'm', 'a', 'd', 'd',
's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x',
- '_', 'q', 'v', 'l', 'f', 'c', 's', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'l', 'f', 'd', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v',
- 'l', 'f', 'd', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'q', 'p', 'x', '_', 'q', 'v', 'l', 'f', 'i', 'w', 'a', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'l', 'f',
- 'i', 'w', 'a', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'q', 'p', 'x', '_', 'q', 'v', 'l', 'f', 'i', 'w', 'z', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'l', 'f',
- 'i', 'w', 'z', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'q', 'p', 'x', '_', 'q', 'v', 'l', 'f', 's', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'l', 'f', 's', 'a',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_',
- 'q', 'v', 'l', 'p', 'c', 'l', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'l', 'p', 'c', 'l', 's', '\000',
+ '_', 'q', 'v', 'f', 'm', 's', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'm', 's', 'u', 'b',
+ 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x',
+ '_', 'q', 'v', 'f', 'm', 'u', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'm', 'u', 'l', 's', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q',
- 'v', 'l', 'p', 'c', 'r', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'l', 'p', 'c', 'r', 's', '\000', '_',
+ 'v', 'f', 'n', 'a', 'b', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'n', 'e', 'g', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f',
+ 'n', 'm', 'a', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'n', 'm', 'a', 'd', 'd', 's', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q',
+ 'v', 'f', 'n', 'm', 's', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'n', 'm', 's', 'u', 'b',
+ 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x',
+ '_', 'q', 'v', 'f', 'p', 'e', 'r', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'r', 'e', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v',
- 's', 't', 'f', 'c', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'q', 'p', 'x', '_', 'q', 'v', 's', 't', 'f', 'c', 'd', 'a', '\000', '_',
+ 'f', 'r', 'e', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'q', 'p', 'x', '_', 'q', 'v', 'f', 'r', 'i', 'm', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'r', 'i',
+ 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x',
+ '_', 'q', 'v', 'f', 'r', 'i', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'r', 'i', 'z', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v',
- 's', 't', 'f', 'c', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'q', 'p', 'x', '_', 'q', 'v', 's', 't', 'f', 'c', 's', 'a', '\000', '_',
+ 'f', 'r', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'q', 'p', 'x', '_', 'q', 'v', 'f', 'r', 's', 'q', 'r', 't', 'e', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v',
- 's', 't', 'f', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'q', 'p', 'x', '_', 'q', 'v', 's', 't', 'f', 'd', 'a', '\000', '_', '_', 'b',
+ 'f', 'r', 's', 'q', 'r', 't', 'e', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 's', 'e', 'l', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q',
+ 'v', 'f', 's', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 's', 'u', 'b', 's', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f',
+ 't', 's', 't', 'n', 'a', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'x', 'm', 'a', 'd', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q',
+ 'v', 'f', 'x', 'm', 'a', 'd', 'd', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'x', 'm', 'u', 'l',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_',
+ 'q', 'v', 'f', 'x', 'm', 'u', 'l', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'x', 'x', 'c', 'p',
+ 'n', 'm', 'a', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'x', 'x', 'c', 'p', 'n', 'm', 'a',
+ 'd', 'd', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q',
+ 'p', 'x', '_', 'q', 'v', 'f', 'x', 'x', 'm', 'a', 'd', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f',
+ 'x', 'x', 'm', 'a', 'd', 'd', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'f', 'x', 'x', 'n', 'p', 'm',
+ 'a', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q',
+ 'p', 'x', '_', 'q', 'v', 'f', 'x', 'x', 'n', 'p', 'm', 'a', 'd', 'd', 's',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_',
+ 'q', 'v', 'g', 'p', 'c', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'l', 'f', 'c', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'l',
+ 'f', 'c', 'd', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'q', 'p', 'x', '_', 'q', 'v', 'l', 'f', 'c', 's', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'l', 'f', 'c',
+ 's', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p',
+ 'x', '_', 'q', 'v', 'l', 'f', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'l', 'f', 'd', 'a', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v',
+ 'l', 'f', 'i', 'w', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'q', 'p', 'x', '_', 'q', 'v', 'l', 'f', 'i', 'w', 'a', 'a', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v',
+ 'l', 'f', 'i', 'w', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'q', 'p', 'x', '_', 'q', 'v', 'l', 'f', 'i', 'w', 'z', 'a', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v',
+ 'l', 'f', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q',
+ 'p', 'x', '_', 'q', 'v', 'l', 'f', 's', 'a', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'l', 'p', 'c', 'l',
+ 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x',
+ '_', 'q', 'v', 'l', 'p', 'c', 'l', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 'l', 'p', 'c', 'r', 'd',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_',
+ 'q', 'v', 'l', 'p', 'c', 'r', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 's', 't', 'f', 'c', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q',
+ 'v', 's', 't', 'f', 'c', 'd', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 's', 't', 'f', 'c', 's', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q',
+ 'v', 's', 't', 'f', 'c', 's', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 's', 't', 'f', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v',
+ 's', 't', 'f', 'd', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'q', 'p', 'x', '_', 'q', 'v', 's', 't', 'f', 'i', 'w', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 's',
+ 't', 'f', 'i', 'w', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'q', 'p', 'x', '_', 'q', 'v', 's', 't', 'f', 's', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 's', 't',
- 'f', 'i', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q',
- 'p', 'x', '_', 'q', 'v', 's', 't', 'f', 'i', 'w', 'a', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p', 'x', '_', 'q', 'v', 's', 't',
- 'f', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'q', 'p',
- 'x', '_', 'q', 'v', 's', 't', 'f', 's', 'a', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 's', 'c', 'a', 'l', 'a', 'r',
- '_', 'e', 'x', 't', 'r', 'a', 'c', 't', '_', 'e', 'x', 'p', 'q', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 's', 'c',
- 'a', 'l', 'a', 'r', '_', 'i', 'n', 's', 'e', 'r', 't', '_', 'e', 'x', 'p',
- '_', 'q', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
- 'e', 't', '_', 't', 'e', 'x', 'a', 's', 'r', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 's', 'e', 't', '_', 't', 'e', 'x', 'a', 's', 'r',
- 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', 'e', 't',
- '_', 't', 'f', 'h', 'a', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 's', 'e', 't', '_', 't', 'f', 'i', 'a', 'r', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 's', 'q', 'r', 't', 'f', '1', '2', '8',
- '_', 'r', 'o', 'u', 'n', 'd', '_', 't', 'o', '_', 'o', 'd', 'd', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', 'u', 'b', 'f', '1', '2',
- '8', '_', 'r', 'o', 'u', 'n', 'd', '_', 't', 'o', '_', 'o', 'd', 'd', '\000',
+ 'f', 's', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v',
+ 's', 'x', '_', 's', 'c', 'a', 'l', 'a', 'r', '_', 'e', 'x', 't', 'r', 'a',
+ 'c', 't', '_', 'e', 'x', 'p', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'v', 's', 'x', '_', 's', 'c', 'a', 'l', 'a', 'r', '_', 'i',
+ 'n', 's', 'e', 'r', 't', '_', 'e', 'x', 'p', '_', 'q', 'p', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', 'e', 't', '_', 't', 'e', 'x',
+ 'a', 's', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
+ 'e', 't', '_', 't', 'e', 'x', 'a', 's', 'r', 'u', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 's', 'e', 't', '_', 't', 'f', 'h', 'a', 'r',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', 'e', 't', '_',
+ 't', 'f', 'i', 'a', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 's', 'q', 'r', 't', 'f', '1', '2', '8', '_', 'r', 'o', 'u', 'n', 'd',
+ '_', 't', 'o', '_', 'o', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', 'u', 'b', 'f', '1', '2', '8', '_', 'r', 'o', 'u', 'n',
+ 'd', '_', 't', 'o', '_', 'o', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 't', 'a', 'b', 'o', 'r', 't', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 't', 'a', 'b', 'o', 'r', 't', 'd', 'c', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 't', 'a', 'b', 'o', 'r',
- 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 't', 'a', 'b',
- 'o', 'r', 't', 'd', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 't', 'a', 'b', 'o', 'r', 't', 'd', 'c', 'i', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 't', 'a', 'b', 'o', 'r', 't', 'w', 'c', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 't', 'a', 'b', 'o', 'r',
- 't', 'w', 'c', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 't', 'b', 'e', 'g', 'i', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 't', 'c', 'h', 'e', 'c', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 't', 'e', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 't', 'e', 'n', 'd', 'a', 'l', 'l', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 't', 'r', 'e', 'c', 'h', 'k', 'p', 't',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 't', 'r', 'e', 'c',
- 'l', 'a', 'i', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 't', 'r', 'e', 's', 'u', 'm', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 't', 'r', 'u', 'n', 'c', 'f', '1', '2', '8', '_', 'r', 'o',
- 'u', 'n', 'd', '_', 't', 'o', '_', 'o', 'd', 'd', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 't', 's', 'r', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 't', 's', 'u', 's', 'p', 'e', 'n', 'd', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 't', 't', 'e', 's', 't', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x',
- 's', 'm', 'a', 'x', 'd', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'v', 's', 'x', '_', 'x', 's', 'm', 'i', 'n', 'd', 'p', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v',
- 'c', 'm', 'p', 'e', 'q', 'd', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 't', 'd', 'c', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 't', 'a', 'b', 'o', 'r', 't', 'w', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 't', 'a', 'b', 'o', 'r', 't', 'w', 'c', 'i', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 't', 'b', 'e', 'g', 'i', 'n',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 't', 'c', 'h', 'e',
+ 'c', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 't', 'e',
+ 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 't', 'e',
+ 'n', 'd', 'a', 'l', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 't', 'r', 'e', 'c', 'h', 'k', 'p', 't', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 't', 'r', 'e', 'c', 'l', 'a', 'i', 'm', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 't', 'r', 'e', 's', 'u', 'm',
+ 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 't', 'r', 'u',
+ 'n', 'c', 'f', '1', '2', '8', '_', 'r', 'o', 'u', 'n', 'd', '_', 't', 'o',
+ '_', 'o', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 't', 's', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 't',
+ 's', 'u', 's', 'p', 'e', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 't', 't', 'e', 's', 't', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 's', 'm', 'a', 'x', 'd', 'p',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_',
+ 'x', 's', 'm', 'i', 'n', 'd', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'c', 'm', 'p', 'e', 'q', 'd',
- 'p', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v',
- 's', 'x', '_', 'x', 'v', 'c', 'm', 'p', 'e', 'q', 's', 'p', '\000', '_', '_',
+ 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x',
+ '_', 'x', 'v', 'c', 'm', 'p', 'e', 'q', 'd', 'p', '_', 'p', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'c',
- 'm', 'p', 'e', 'q', 's', 'p', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'c', 'm', 'p', 'g', 'e',
- 'd', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's',
- 'x', '_', 'x', 'v', 'c', 'm', 'p', 'g', 'e', 'd', 'p', '_', 'p', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v',
- 'c', 'm', 'p', 'g', 'e', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'm', 'p', 'e', 'q', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'c', 'm', 'p', 'e', 'q', 's', 'p',
+ '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's',
+ 'x', '_', 'x', 'v', 'c', 'm', 'p', 'g', 'e', 'd', 'p', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'c', 'm',
+ 'p', 'g', 'e', 'd', 'p', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'c', 'm', 'p', 'g', 'e', 's',
- 'p', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v',
- 's', 'x', '_', 'x', 'v', 'c', 'm', 'p', 'g', 't', 'd', 'p', '\000', '_', '_',
+ 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x',
+ '_', 'x', 'v', 'c', 'm', 'p', 'g', 'e', 's', 'p', '_', 'p', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'c',
- 'm', 'p', 'g', 't', 'd', 'p', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'c', 'm', 'p', 'g', 't',
- 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's',
- 'x', '_', 'x', 'v', 'c', 'm', 'p', 'g', 't', 's', 'p', '_', 'p', '\000', '_',
+ 'm', 'p', 'g', 't', 'd', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'c', 'm', 'p', 'g', 't', 'd', 'p',
+ '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's',
+ 'x', '_', 'x', 'v', 'c', 'm', 'p', 'g', 't', 's', 'p', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'c', 'm',
+ 'p', 'g', 't', 's', 'p', '_', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'c', 'v', 'd', 'p', 's', 'p',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_',
+ 'x', 'v', 'c', 'v', 'd', 'p', 's', 'x', 'w', 's', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'c', 'v', 'd',
+ 'p', 'u', 'x', 'w', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'v', 's', 'x', '_', 'x', 'v', 'c', 'v', 'h', 'p', 's', 'p', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v',
- 'c', 'v', 'd', 'p', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'c', 'v', 'd', 'p', 's', 'x', 'w',
- 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x',
- '_', 'x', 'v', 'c', 'v', 'd', 'p', 'u', 'x', 'w', 's', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'c', 'v',
- 'h', 'p', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'v', 's', 'x', '_', 'x', 'v', 'c', 'v', 's', 'p', 'd', 'p', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'c',
- 'v', 's', 'p', 'h', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'v', 's', 'x', '_', 'x', 'v', 'c', 'v', 's', 'x', 'd', 's', 'p', '\000',
+ 'c', 'v', 's', 'p', 'd', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'c', 'v', 's', 'p', 'h', 'p', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x',
- 'v', 'c', 'v', 's', 'x', 'w', 'd', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'c', 'v', 'u', 'x', 'd',
- 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's',
- 'x', '_', 'x', 'v', 'c', 'v', 'u', 'x', 'w', 'd', 'p', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'd', 'i',
- 'v', 'd', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v',
- 's', 'x', '_', 'x', 'v', 'd', 'i', 'v', 's', 'p', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'i', 'e', 'x',
- 'p', 'd', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v',
- 's', 'x', '_', 'x', 'v', 'i', 'e', 'x', 'p', 's', 'p', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'm', 'a',
- 'x', 'd', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v',
- 's', 'x', '_', 'x', 'v', 'm', 'a', 'x', 's', 'p', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'm', 'i', 'n',
+ 'v', 'c', 'v', 's', 'x', 'd', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'c', 'v', 's', 'x', 'w',
'd', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's',
- 'x', '_', 'x', 'v', 'm', 'i', 'n', 's', 'p', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'r', 'e', 'd', 'p',
+ 'x', '_', 'x', 'v', 'c', 'v', 'u', 'x', 'd', 's', 'p', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'c', 'v',
+ 'u', 'x', 'w', 'd', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'v', 's', 'x', '_', 'x', 'v', 'd', 'i', 'v', 'd', 'p', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'd',
+ 'i', 'v', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'v', 's', 'x', '_', 'x', 'v', 'i', 'e', 'x', 'p', 'd', 'p', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'i',
+ 'e', 'x', 'p', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'v', 's', 'x', '_', 'x', 'v', 'm', 'a', 'x', 'd', 'p', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'm',
+ 'a', 'x', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'v', 's', 'x', '_', 'x', 'v', 'm', 'i', 'n', 'd', 'p', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'm', 'i',
+ 'n', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v',
+ 's', 'x', '_', 'x', 'v', 'r', 'e', 'd', 'p', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'r', 'e', 's', 'p',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_',
- 'x', 'v', 'r', 'e', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'r', 's', 'q', 'r', 't', 'e', 'd',
- 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x',
- '_', 'x', 'v', 'r', 's', 'q', 'r', 't', 'e', 's', 'p', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 't', 's',
- 't', 'd', 'c', 'd', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'v', 's', 'x', '_', 'x', 'v', 't', 's', 't', 'd', 'c', 's', 'p', '\000',
+ 'x', 'v', 'r', 's', 'q', 'r', 't', 'e', 'd', 'p', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'r', 's', 'q',
+ 'r', 't', 'e', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'v', 's', 'x', '_', 'x', 'v', 't', 's', 't', 'd', 'c', 'd', 'p', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x',
- 'v', 'x', 'e', 'x', 'p', 'd', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'x', 'e', 'x', 'p', 's', 'p',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_',
- 'x', 'v', 'x', 's', 'i', 'g', 'd', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'x', 's', 'i', 'g', 's',
+ 'v', 't', 's', 't', 'd', 'c', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'x', 'e', 'x', 'p', 'd',
'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x',
- '_', 'x', 'x', 'e', 'x', 't', 'r', 'a', 'c', 't', 'u', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'x', 'i',
- 'n', 's', 'e', 'r', 't', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'v', 's', 'x', '_', 'x', 'x', 'l', 'e', 'q', 'v', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'r', '6', '0', '0', '_', 'g', 'r',
- 'o', 'u', 'p', '_', 'b', 'a', 'r', 'r', 'i', 'e', 'r', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'r', '6', '0', '0', '_', 'i', 'm', 'p',
- 'l', 'i', 'c', 'i', 't', 'a', 'r', 'g', '_', 'p', 't', 'r', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'r', '6', '0', '0', '_', 'r', 'a',
- 't', '_', 's', 't', 'o', 'r', 'e', '_', 't', 'y', 'p', 'e', 'd', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'r', '6', '0', '0', '_', 'r',
- 'e', 'a', 'd', '_', 'g', 'l', 'o', 'b', 'a', 'l', '_', 's', 'i', 'z', 'e',
- '_', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'r', '6',
- '0', '0', '_', 'r', 'e', 'a', 'd', '_', 'g', 'l', 'o', 'b', 'a', 'l', '_',
- 's', 'i', 'z', 'e', '_', 'y', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'r', '6', '0', '0', '_', 'r', 'e', 'a', 'd', '_', 'g', 'l', 'o',
- 'b', 'a', 'l', '_', 's', 'i', 'z', 'e', '_', 'z', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'r', '6', '0', '0', '_', 'r', 'e', 'a', 'd',
- '_', 'n', 'g', 'r', 'o', 'u', 'p', 's', '_', 'x', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'r', '6', '0', '0', '_', 'r', 'e', 'a', 'd',
- '_', 'n', 'g', 'r', 'o', 'u', 'p', 's', '_', 'y', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'r', '6', '0', '0', '_', 'r', 'e', 'a', 'd',
- '_', 'n', 'g', 'r', 'o', 'u', 'p', 's', '_', 'z', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'r', '6', '0', '0', '_', 'r', 'e', 'a', 'd',
- '_', 't', 'g', 'i', 'd', '_', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'r', '6', '0', '0', '_', 'r', 'e', 'a', 'd', '_', 't', 'g',
- 'i', 'd', '_', 'y', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ '_', 'x', 'v', 'x', 'e', 'x', 'p', 's', 'p', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'v', 'x', 's', 'i', 'g',
+ 'd', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's',
+ 'x', '_', 'x', 'v', 'x', 's', 'i', 'g', 's', 'p', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_', 'x', 'x', 'e', 'x', 't',
+ 'r', 'a', 'c', 't', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'v', 's', 'x', '_', 'x', 'x', 'i', 'n', 's', 'e', 'r', 't', 'w',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'v', 's', 'x', '_',
+ 'x', 'x', 'l', 'e', 'q', 'v', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'r', '6', '0', '0', '_', 'g', 'r', 'o', 'u', 'p', '_', 'b', 'a',
+ 'r', 'r', 'i', 'e', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'r', '6', '0', '0', '_', 'i', 'm', 'p', 'l', 'i', 'c', 'i', 't', 'a',
+ 'r', 'g', '_', 'p', 't', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'r', '6', '0', '0', '_', 'r', 'a', 't', '_', 's', 't', 'o', 'r',
+ 'e', '_', 't', 'y', 'p', 'e', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'r', '6', '0', '0', '_', 'r', 'e', 'a', 'd', '_', 'g', 'l',
+ 'o', 'b', 'a', 'l', '_', 's', 'i', 'z', 'e', '_', 'x', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'r', '6', '0', '0', '_', 'r', 'e', 'a',
+ 'd', '_', 'g', 'l', 'o', 'b', 'a', 'l', '_', 's', 'i', 'z', 'e', '_', 'y',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'r', '6', '0', '0',
+ '_', 'r', 'e', 'a', 'd', '_', 'g', 'l', 'o', 'b', 'a', 'l', '_', 's', 'i',
+ 'z', 'e', '_', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'r', '6', '0', '0', '_', 'r', 'e', 'a', 'd', '_', 'n', 'g', 'r', 'o', 'u',
+ 'p', 's', '_', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'r', '6', '0', '0', '_', 'r', 'e', 'a', 'd', '_', 'n', 'g', 'r', 'o', 'u',
+ 'p', 's', '_', 'y', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'r', '6', '0', '0', '_', 'r', 'e', 'a', 'd', '_', 'n', 'g', 'r', 'o', 'u',
+ 'p', 's', '_', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
'r', '6', '0', '0', '_', 'r', 'e', 'a', 'd', '_', 't', 'g', 'i', 'd', '_',
- 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
- '0', '_', 'e', 'f', 'p', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 't', 'x', '_', 'n', 'e', 's', 't', 'i', 'n', 'g', '_', 'd', 'e',
- 'p', 't', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
- '3', '9', '0', '_', 'l', 'c', 'b', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 't', 'x', '_', 'a', 's', 's', 'i', 's', 't', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 's',
- 'f', 'p', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
- '3', '9', '0', '_', 'v', 'a', 'c', 'c', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'a', 'c', 'c', 'c',
- 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
- '0', '_', 'v', 'a', 'c', 'c', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'a', 'c', 'c', 'g', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
- 'a', 'c', 'c', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 's', '3', '9', '0', '_', 'v', 'a', 'c', 'c', 'q', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'a', 'c', 'q',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0',
- '_', 'v', 'a', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 's', '3', '9', '0', '_', 'v', 'a', 'v', 'g', 'b', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'a', 'v', 'g',
- 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
- '0', '_', 'v', 'a', 'v', 'g', 'g', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'a', 'v', 'g', 'h', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
- 'a', 'v', 'g', 'l', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 's', '3', '9', '0', '_', 'v', 'a', 'v', 'g', 'l', 'f', '\000', '_', '_',
+ 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'r', '6', '0',
+ '0', '_', 'r', 'e', 'a', 'd', '_', 't', 'g', 'i', 'd', '_', 'y', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'r', '6', '0', '0', '_', 'r',
+ 'e', 'a', 'd', '_', 't', 'g', 'i', 'd', '_', 'z', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'e', 'f', 'p', 'c',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 't', 'x', '_', 'n',
+ 'e', 's', 't', 'i', 'n', 'g', '_', 'd', 'e', 'p', 't', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'l', 'c',
+ 'b', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 't', 'x',
+ '_', 'a', 's', 's', 'i', 's', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 's', 'f', 'p', 'c', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'a',
- 'v', 'g', 'l', 'g', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 's', '3', '9', '0', '_', 'v', 'a', 'v', 'g', 'l', 'h', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'b', 'p',
- 'e', 'r', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
- '3', '9', '0', '_', 'v', 'c', 'k', 's', 'm', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'e', 'r', 'i', 'm',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
- '0', '_', 'v', 'e', 'r', 'i', 'm', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'e', 'r', 'i', 'm', 'g',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0',
- '_', 'v', 'e', 'r', 'i', 'm', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'e', 'r', 'l', 'l', 'b', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_',
- 'v', 'e', 'r', 'l', 'l', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 's', '3', '9', '0', '_', 'v', 'e', 'r', 'l', 'l', 'g', '\000', '_',
+ 'c', 'c', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
+ '3', '9', '0', '_', 'v', 'a', 'c', 'c', 'c', 'q', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'a', 'c', 'c',
+ 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
+ '0', '_', 'v', 'a', 'c', 'c', 'g', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'a', 'c', 'c', 'h', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
- 'e', 'r', 'l', 'l', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 's', '3', '9', '0', '_', 'v', 'e', 'r', 'l', 'l', 'v', 'b', '\000', '_',
+ 'a', 'c', 'c', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 's', '3', '9', '0', '_', 'v', 'a', 'c', 'q', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'a', 'q', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
- 'e', 'r', 'l', 'l', 'v', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 's', '3', '9', '0', '_', 'v', 'e', 'r', 'l', 'l', 'v', 'g', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_',
- 'v', 'e', 'r', 'l', 'l', 'v', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'f', 'a', 'e', 'b', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
- 'f', 'a', 'e', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 's', '3', '9', '0', '_', 'v', 'f', 'a', 'e', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'f', 'a', 'e',
- 'z', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3',
- '9', '0', '_', 'v', 'f', 'a', 'e', 'z', 'f', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'f', 'a', 'e', 'z',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
- '0', '_', 'v', 'f', 'e', 'e', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'f', 'e', 'e', 'f', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
- 'f', 'e', 'e', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 's', '3', '9', '0', '_', 'v', 'f', 'e', 'e', 'z', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'f', 'e',
- 'e', 'z', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
- '3', '9', '0', '_', 'v', 'f', 'e', 'e', 'z', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'f', 'e', 'n',
- 'e', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3',
- '9', '0', '_', 'v', 'f', 'e', 'n', 'e', 'f', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'f', 'e', 'n', 'e',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
- '0', '_', 'v', 'f', 'e', 'n', 'e', 'z', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'f', 'e', 'n', 'e',
- 'z', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3',
- '9', '0', '_', 'v', 'f', 'e', 'n', 'e', 'z', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'g', 'f', 'm',
- 'a', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3',
- '9', '0', '_', 'v', 'g', 'f', 'm', 'a', 'f', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'g', 'f', 'm', 'a',
+ 'a', 'v', 'g', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 's', '3', '9', '0', '_', 'v', 'a', 'v', 'g', 'f', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'a', 'v', 'g',
'g', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
- '0', '_', 'v', 'g', 'f', 'm', 'a', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'g', 'f', 'm', 'b', '\000',
+ '0', '_', 'v', 'a', 'v', 'g', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'a', 'v', 'g', 'l', 'b', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_',
- 'v', 'g', 'f', 'm', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 's', '3', '9', '0', '_', 'v', 'g', 'f', 'm', 'g', '\000', '_', '_', 'b',
+ 'v', 'a', 'v', 'g', 'l', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 's', '3', '9', '0', '_', 'v', 'a', 'v', 'g', 'l', 'g', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
+ 'a', 'v', 'g', 'l', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 's', '3', '9', '0', '_', 'v', 'b', 'p', 'e', 'r', 'm', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'c',
+ 'k', 's', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
+ '3', '9', '0', '_', 'v', 'e', 'r', 'i', 'm', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'e', 'r', 'i',
+ 'm', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3',
+ '9', '0', '_', 'v', 'e', 'r', 'i', 'm', 'g', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'e', 'r', 'i', 'm',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
+ '0', '_', 'v', 'e', 'r', 'l', 'l', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'e', 'r', 'l', 'l', 'f',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0',
+ '_', 'v', 'e', 'r', 'l', 'l', 'g', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'e', 'r', 'l', 'l', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_',
+ 'v', 'e', 'r', 'l', 'l', 'v', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'e', 'r', 'l', 'l', 'v', 'f',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0',
+ '_', 'v', 'e', 'r', 'l', 'l', 'v', 'g', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'e', 'r', 'l', 'l', 'v',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
+ '0', '_', 'v', 'f', 'a', 'e', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'f', 'a', 'e', 'f', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
+ 'f', 'a', 'e', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 's', '3', '9', '0', '_', 'v', 'f', 'a', 'e', 'z', 'b', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'f', 'a',
+ 'e', 'z', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
+ '3', '9', '0', '_', 'v', 'f', 'a', 'e', 'z', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'f', 'e', 'e',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
+ '0', '_', 'v', 'f', 'e', 'e', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'f', 'e', 'e', 'h', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
+ 'f', 'e', 'e', 'z', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 's', '3', '9', '0', '_', 'v', 'f', 'e', 'e', 'z', 'f', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'f',
+ 'e', 'e', 'z', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 's', '3', '9', '0', '_', 'v', 'f', 'e', 'n', 'e', 'b', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'f', 'e',
+ 'n', 'e', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
+ '3', '9', '0', '_', 'v', 'f', 'e', 'n', 'e', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'f', 'e', 'n',
+ 'e', 'z', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
+ '3', '9', '0', '_', 'v', 'f', 'e', 'n', 'e', 'z', 'f', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'f', 'e',
+ 'n', 'e', 'z', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 's', '3', '9', '0', '_', 'v', 'g', 'f', 'm', 'a', 'b', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'g', 'f',
- 'm', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3',
- '9', '0', '_', 'v', 'i', 's', 't', 'r', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'i', 's', 't', 'r',
- 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
- '0', '_', 'v', 'i', 's', 't', 'r', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'l', 'b', 'b', '\000', '_',
+ 'm', 'a', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
+ '3', '9', '0', '_', 'v', 'g', 'f', 'm', 'a', 'g', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'g', 'f', 'm',
+ 'a', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3',
+ '9', '0', '_', 'v', 'g', 'f', 'm', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'g', 'f', 'm', 'f', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_',
+ 'v', 'g', 'f', 'm', 'g', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 's', '3', '9', '0', '_', 'v', 'g', 'f', 'm', 'h', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'i', 's',
+ 't', 'r', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
+ '3', '9', '0', '_', 'v', 'i', 's', 't', 'r', 'f', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'i', 's', 't',
+ 'r', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3',
+ '9', '0', '_', 'v', 'l', 'b', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'l', 'l', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'l', 'r',
+ 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
+ '0', '_', 'v', 'm', 'a', 'e', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'a', 'e', 'f', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
- 'l', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3',
- '9', '0', '_', 'v', 'l', 'r', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'a', 'e', 'b', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
- 'm', 'a', 'e', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 's', '3', '9', '0', '_', 'v', 'm', 'a', 'e', 'h', '\000', '_', '_', 'b', 'u',
+ 'm', 'a', 'e', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 's', '3', '9', '0', '_', 'v', 'm', 'a', 'h', 'b', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'a', 'h',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
- '0', '_', 'v', 'm', 'a', 'h', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'a', 'h', 'h', '\000', '_',
+ 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
+ '0', '_', 'v', 'm', 'a', 'h', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'a', 'l', 'e', 'b', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_',
+ 'v', 'm', 'a', 'l', 'e', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'a', 'l', 'e', 'h', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
- 'm', 'a', 'l', 'e', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 's', '3', '9', '0', '_', 'v', 'm', 'a', 'l', 'e', 'f', '\000', '_', '_',
+ 'm', 'a', 'l', 'h', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 's', '3', '9', '0', '_', 'v', 'm', 'a', 'l', 'h', 'f', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm',
- 'a', 'l', 'e', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 's', '3', '9', '0', '_', 'v', 'm', 'a', 'l', 'h', 'b', '\000', '_', '_', 'b',
+ 'a', 'l', 'h', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 's', '3', '9', '0', '_', 'v', 'm', 'a', 'l', 'o', 'b', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'a',
- 'l', 'h', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
- '3', '9', '0', '_', 'v', 'm', 'a', 'l', 'h', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'a', 'l',
- 'o', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3',
- '9', '0', '_', 'v', 'm', 'a', 'l', 'o', 'f', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'a', 'l', 'o',
- 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
- '0', '_', 'v', 'm', 'a', 'o', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'a', 'o', 'f', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
- 'm', 'a', 'o', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 's', '3', '9', '0', '_', 'v', 'm', 'e', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'e', 'f', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_',
- 'v', 'm', 'e', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 's', '3', '9', '0', '_', 'v', 'm', 'h', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'h', 'f', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_',
- 'v', 'm', 'h', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 's', '3', '9', '0', '_', 'v', 'm', 'l', 'e', 'b', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'l', 'e',
- 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
- '0', '_', 'v', 'm', 'l', 'e', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'l', 'h', 'b', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
- 'm', 'l', 'h', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 's', '3', '9', '0', '_', 'v', 'm', 'l', 'h', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'l', 'o',
+ 'l', 'o', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
+ '3', '9', '0', '_', 'v', 'm', 'a', 'l', 'o', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'a', 'o',
'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
- '0', '_', 'v', 'm', 'l', 'o', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'l', 'o', 'h', '\000', '_',
+ '0', '_', 'v', 'm', 'a', 'o', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'a', 'o', 'h', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
- 'm', 'o', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
- '3', '9', '0', '_', 'v', 'm', 'o', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'o', 'h', '\000', '_',
+ 'm', 'e', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
+ '3', '9', '0', '_', 'v', 'm', 'e', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'e', 'h', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
- 'm', 's', 'l', 'g', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 's', '3', '9', '0', '_', 'v', 'p', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'p', 'e', 'r', 'm',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0',
- '_', 'v', 'p', 'k', 'l', 's', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'p', 'k', 'l', 's', 'g', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_',
- 'v', 'p', 'k', 'l', 's', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 's', '3', '9', '0', '_', 'v', 'p', 'k', 's', 'f', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'p',
- 'k', 's', 'g', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
- '3', '9', '0', '_', 'v', 'p', 'k', 's', 'h', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 'b', 'c', 'b',
- 'i', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3',
- '9', '0', '_', 'v', 's', 'b', 'i', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 'c', 'b', 'i', 'b',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0',
- '_', 'v', 's', 'c', 'b', 'i', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 'c', 'b', 'i', 'g', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_',
- 'v', 's', 'c', 'b', 'i', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 'c', 'b', 'i', 'q', '\000', '_',
+ 'm', 'h', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
+ '3', '9', '0', '_', 'v', 'm', 'h', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'h', 'h', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
- 's', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3',
- '9', '0', '_', 'v', 's', 'l', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 'l', 'd', 'b', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
- 's', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3',
- '9', '0', '_', 'v', 's', 'r', 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 'r', 'a', 'b', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
- 's', 'r', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
- '3', '9', '0', '_', 'v', 's', 'r', 'l', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 't', 'l', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_',
- 'v', 's', 't', 'r', 'c', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 't', 'r', 'c', 'f', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
- 's', 't', 'r', 'c', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 's', '3', '9', '0', '_', 'v', 's', 't', 'r', 'c', 'z', 'b', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
- 's', 't', 'r', 'c', 'z', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 't', 'r', 'c', 'z', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_',
- 'v', 's', 't', 'r', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 's', '3', '9', '0', '_', 'v', 's', 'u', 'm', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 'u',
- 'm', 'g', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
- '3', '9', '0', '_', 'v', 's', 'u', 'm', 'g', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 'u', 'm',
+ 'm', 'l', 'e', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 's', '3', '9', '0', '_', 'v', 'm', 'l', 'e', 'f', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'l', 'e',
'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
- '0', '_', 'v', 's', 'u', 'm', 'q', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 'u', 'm', 'q', 'g',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0',
- '_', 'v', 't', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 's', '3', '9', '0', '_', 'v', 'u', 'p', 'h', 'b', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'u', 'p', 'h',
- 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
- '0', '_', 'v', 'u', 'p', 'h', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'u', 'p', 'l', 'b', '\000', '_',
+ '0', '_', 'v', 'm', 'l', 'h', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'l', 'h', 'f', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
- 'u', 'p', 'l', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 's', '3', '9', '0', '_', 'v', 'u', 'p', 'l', 'h', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'u', 'p',
- 'l', 'h', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
- '3', '9', '0', '_', 'v', 'u', 'p', 'l', 'h', 'h', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'u', 'p', 'l',
- 'h', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3',
- '9', '0', '_', 'v', 'u', 'p', 'l', 'l', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'u', 'p', 'l', 'l',
+ 'm', 'l', 'h', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 's', '3', '9', '0', '_', 'v', 'm', 'l', 'o', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'l', 'o',
'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
- '0', '_', 'v', 'u', 'p', 'l', 'l', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'v', 'g', 'u', 's',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 'f', '2', 'i', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'f', 'a', 'c', 'c', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 'f', 'a', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'f', 'c', 'm', 'p', 'e', 'q', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'f',
- 'c', 'm', 'p', 'g', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 'f', 'c', 'm', 'p', 'g', 't', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 'f', 'm', 'a', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'f', 'm', 'i', 'n', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'f', 'm', 'u',
- 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 'f', 'r', 'c', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'f', 'r', 'c', 'p', 'i', 't',
- '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 'f', 'r', 'c', 'p', 'i', 't', '2', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'f', 'r', 's',
- 'q', 'i', 't', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'f', 'r', 's', 'q', 'r', 't', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'f',
- 's', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 'f', 's', 'u', 'b', 'r', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'i', '2', 'f',
+ '0', '_', 'v', 'm', 'l', 'o', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 'o', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm',
+ 'o', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3',
+ '9', '0', '_', 'v', 'm', 'o', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'm', 's', 'l', 'g', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
+ 'p', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
+ '3', '9', '0', '_', 'v', 'p', 'e', 'r', 'm', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'p', 'k', 'l', 's',
+ 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
+ '0', '_', 'v', 'p', 'k', 'l', 's', 'g', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'p', 'k', 'l', 's', 'h',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0',
+ '_', 'v', 'p', 'k', 's', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 's', '3', '9', '0', '_', 'v', 'p', 'k', 's', 'g', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'p',
+ 'k', 's', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
+ '3', '9', '0', '_', 'v', 's', 'b', 'c', 'b', 'i', 'q', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 'b',
+ 'i', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3',
+ '9', '0', '_', 'v', 's', 'c', 'b', 'i', 'b', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 'c', 'b', 'i',
+ 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
+ '0', '_', 'v', 's', 'c', 'b', 'i', 'g', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 'c', 'b', 'i', 'h',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0',
+ '_', 'v', 's', 'c', 'b', 'i', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 'l', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 'l',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
+ '0', '_', 'v', 's', 'l', 'd', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 'q', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 'r',
+ 'a', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
+ '0', '_', 'v', 's', 'r', 'a', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 'r', 'l', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's',
+ 'r', 'l', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
+ '3', '9', '0', '_', 'v', 's', 't', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 't', 'r', 'c', 'b',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0',
+ '_', 'v', 's', 't', 'r', 'c', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 't', 'r', 'c', 'h', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_',
+ 'v', 's', 't', 'r', 'c', 'z', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 't', 'r', 'c', 'z', 'f',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0',
+ '_', 'v', 's', 't', 'r', 'c', 'z', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 't', 'r', 'l', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_',
+ 'v', 's', 'u', 'm', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 's', '3', '9', '0', '_', 'v', 's', 'u', 'm', 'g', 'f', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's',
+ 'u', 'm', 'g', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 's', '3', '9', '0', '_', 'v', 's', 'u', 'm', 'h', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 's', 'u', 'm',
+ 'q', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3',
+ '9', '0', '_', 'v', 's', 'u', 'm', 'q', 'g', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 't', 'm', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
+ 'u', 'p', 'h', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 's', '3', '9', '0', '_', 'v', 'u', 'p', 'h', 'f', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'u', 'p', 'h',
+ 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9',
+ '0', '_', 'v', 'u', 'p', 'l', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'u', 'p', 'l', 'f', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v',
+ 'u', 'p', 'l', 'h', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 's', '3', '9', '0', '_', 'v', 'u', 'p', 'l', 'h', 'f', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'u',
+ 'p', 'l', 'h', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 's', '3', '9', '0', '_', 'v', 'u', 'p', 'l', 'h', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'u', 'p',
+ 'l', 'l', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's',
+ '3', '9', '0', '_', 'v', 'u', 'p', 'l', 'l', 'f', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 's', '3', '9', '0', '_', 'v', 'u', 'p', 'l',
+ 'l', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'p', 'a', 'v', 'g', 'u', 's', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'f', '2', 'i',
'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 'm', 'u', 'l', 'h', 'r', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'f', '2', 'i', 'w',
+ '2', '_', 'p', 'f', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'f', 'a', 'd', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 'f', 'c', 'm', 'p', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'f', 'c', 'm', 'p', 'g', 'e', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 'f', 'c', 'm', 'p', 'g', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'f', 'm', 'a', 'x', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 'f', 'm', 'i', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 'f', 'm', 'u', 'l', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'f', 'r', 'c',
+ 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 'f', 'r', 'c', 'p', 'i', 't', '1', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'f', 'r', 'c',
+ 'p', 'i', 't', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 'f', 'r', 's', 'q', 'i', 't', '1', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 'f', 'r', 's', 'q', 'r', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'f', 's', 'u', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'f',
+ 's', 'u', 'b', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 'i', '2', 'f', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'u', 'l',
+ 'h', 'r', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'f', '2', 'i', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'f', 'n', 'a', 'c',
+ 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 'f', 'p', 'n', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'i', '2', 'f', 'w',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 'f', 'n', 'a', 'c', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'f', 'p', 'n', 'a', 'c', 'c',
+ '_', 'a', 'e', 's', 'd', 'e', 'c', '1', '2', '8', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'a', 'e', 's', 'd',
+ 'e', 'c', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'a', 'e', 's', 'd', 'e', 'c', '5', '1', '2',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 'i', '2', 'f', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'a', 'e', 's', 'd', 'e', 'c', '1', '2',
- '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'a', 'e', 's', 'd', 'e', 'c', '2', '5', '6', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'a', 'e', 's',
- 'd', 'e', 'c', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'a', 'e', 's', 'd', 'e', 'c', 'l', 'a',
- 's', 't', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'a', 'e', 's', 'd', 'e', 'c', 'l', 'a', 's',
- 't', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'a', 'e', 's', 'd', 'e', 'c', 'l', 'a', 's', 't',
- '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'a', 'e', 's', 'e', 'n', 'c', '1', '2', '8', '\000', '_',
+ '_', 'a', 'e', 's', 'd', 'e', 'c', 'l', 'a', 's', 't', '1', '2', '8', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'a', 'e', 's', 'd', 'e', 'c', 'l', 'a', 's', 't', '2', '5', '6', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'a',
- 'e', 's', 'e', 'n', 'c', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'a', 'e', 's', 'e', 'n', 'c',
- '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'a', 'e', 's', 'e', 'n', 'c', 'l', 'a', 's', 't', '1',
- '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'a', 'e', 's', 'e', 'n', 'c', 'l', 'a', 's', 't', '2', '5',
- '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'a', 'e', 's', 'e', 'n', 'c', 'l', 'a', 's', 't', '5', '1', '2',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'a', 'e', 's', 'i', 'm', 'c', '1', '2', '8', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'a', 'e', 's', 'k',
- 'e', 'y', 'g', 'e', 'n', 'a', 's', 's', 'i', 's', 't', '1', '2', '8', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'a', 'd', 'd', 's', 'u', 'b', 'p', 'd', '2', '5', '6', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'a', 'd', 'd',
- 's', 'u', 'b', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'l', 'e', 'n', 'd', 'v',
+ 'e', 's', 'd', 'e', 'c', 'l', 'a', 's', 't', '5', '1', '2', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'a', 'e',
+ 's', 'e', 'n', 'c', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'a', 'e', 's', 'e', 'n', 'c', '2',
+ '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'a', 'e', 's', 'e', 'n', 'c', '5', '1', '2', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'a', 'e',
+ 's', 'e', 'n', 'c', 'l', 'a', 's', 't', '1', '2', '8', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'a', 'e', 's',
+ 'e', 'n', 'c', 'l', 'a', 's', 't', '2', '5', '6', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'a', 'e', 's', 'e',
+ 'n', 'c', 'l', 'a', 's', 't', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'a', 'e', 's', 'i', 'm',
+ 'c', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'a', 'e', 's', 'k', 'e', 'y', 'g', 'e', 'n', 'a',
+ 's', 's', 'i', 's', 't', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'a', 'd', 'd', 's', 'u', 'b',
'p', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'b', 'l', 'e', 'n', 'd', 'v', 'p', 's', '2',
+ '_', 'i', 'a', '3', '2', '_', 'a', 'd', 'd', 's', 'u', 'b', 'p', 's', '2',
'5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'c', 'v', 't', 'p', 'd', '2', 'p', 's', '2', '5', '6', '\000',
+ '3', '2', '_', 'b', 'l', 'e', 'n', 'd', 'v', 'p', 'd', '2', '5', '6', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'c', 'v', 't', 'p', 'd', '2', 'd', 'q', '2', '5', '6', '\000', '_', '_', 'b',
+ 'b', 'l', 'e', 'n', 'd', 'v', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't',
- 'p', 's', '2', 'd', 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p', 'd',
- '2', 'd', 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p', 's', '2', 'd',
- 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'd', 'p', 'p', 's', '2', '5', '6', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'h', 'a',
- 'd', 'd', 'p', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'h', 'a', 'd', 'd', 'p', 's', '2',
- '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'h', 's', 'u', 'b', 'p', 'd', '2', '5', '6', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'h', 's',
- 'u', 'b', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'l', 'd', 'd', 'q', 'u', '2', '5',
- '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'm', 'a', 's', 'k', 'l', 'o', 'a', 'd', 'p', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a',
- 's', 'k', 'l', 'o', 'a', 'd', 'p', 'd', '2', '5', '6', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 's',
- 'k', 'l', 'o', 'a', 'd', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 's', 'k', 'l', 'o', 'a',
- 'd', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 's', 'k', 's', 't', 'o', 'r',
- 'e', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'm', 'a', 's', 'k', 's', 't', 'o', 'r', 'e', 'p', 'd',
- '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'm', 'a', 's', 'k', 's', 't', 'o', 'r', 'e', 'p', 's',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'm', 'a', 's', 'k', 's', 't', 'o', 'r', 'e', 'p', 's', '2', '5', '6',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'm', 'a', 'x', 'p', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 'x', 'p', 's',
- '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'm', 'i', 'n', 'p', 'd', '2', '5', '6', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'i',
- 'n', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'o', 'v', 'm', 's', 'k', 'p', 'd',
- '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'm', 'o', 'v', 'm', 's', 'k', 'p', 's', '2', '5', '6',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 't', 'e', 's', 't', 'c', '2', '5', '6', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 't', 'e', 's',
- 't', 'n', 'z', 'c', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 't', 'e', 's', 't', 'z', '2',
- '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'r', 'c', 'p', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'o', 'u',
- 'n', 'd', 'p', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'o', 'u', 'n', 'd', 'p', 's',
- '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'r', 's', 'q', 'r', 't', 'p', 's', '2', '5', '6', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 'p', 'e', 'r', 'm', 'i', 'l', 'v', 'a', 'r', 'p', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p',
- 'e', 'r', 'm', 'i', 'l', 'v', 'a', 'r', 'p', 'd', '2', '5', '6', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
- 'p', 'e', 'r', 'm', 'i', 'l', 'v', 'a', 'r', 'p', 's', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e',
- 'r', 'm', 'i', 'l', 'v', 'a', 'r', 'p', 's', '2', '5', '6', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 't',
- 'e', 's', 't', 'c', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'v', 't', 'e', 's', 't', 'c', 'p', 'd',
- '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'v', 't', 'e', 's', 't', 'c', 'p', 's', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 't',
- 'e', 's', 't', 'c', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 't', 'e', 's', 't',
- 'n', 'z', 'c', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'v', 't', 'e', 's', 't', 'n', 'z', 'c', 'p',
- 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'v', 't', 'e', 's', 't', 'n', 'z', 'c', 'p', 's',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'v', 't', 'e', 's', 't', 'n', 'z', 'c', 'p', 's', '2', '5', '6', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 't', 'e', 's', 't', 'z', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 't', 'e', 's', 't', 'z',
- 'p', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'v', 't', 'e', 's', 't', 'z', 'p', 's', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 't', 'e', 's', 't', 'z', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'z', 'e',
- 'r', 'o', 'a', 'l', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'v', 'z', 'e', 'r', 'o', 'u', 'p', 'p', 'e',
- 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'd', '_', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't',
- 'h', 'e', 'r', 'd', '_', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e',
- 'r', 'd', '_', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'd', '_', 'p',
- 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'd', '_', 'p', 's',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'g', 'a', 't', 'h', 'e', 'r', 'd', '_', 'p', 's', '2', '5', '6', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'g', 'a', 't', 'h', 'e', 'r', 'd', '_', 'q', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e',
- 'r', 'd', '_', 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'q',
- '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'q', '_', 'd', '2', '5', '6',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'g', 'a', 't', 'h', 'e', 'r', 'q', '_', 'p', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't',
- 'h', 'e', 'r', 'q', '_', 'p', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h',
- 'e', 'r', 'q', '_', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'q', '_',
- 'p', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'q', '_', 'q',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'g', 'a', 't', 'h', 'e', 'r', 'q', '_', 'q', '2', '5', '6', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm',
- 'a', 's', 'k', 'l', 'o', 'a', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 's', 'k', 'l', 'o',
- 'a', 'd', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 's', 'k', 'l', 'o', 'a', 'd',
- 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'm', 'a', 's', 'k', 'l', 'o', 'a', 'd', 'q', '2', '5', '6', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'm', 'a', 's', 'k', 's', 't', 'o', 'r', 'e', 'd', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 's', 'k',
- 's', 't', 'o', 'r', 'e', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 's', 'k', 's',
- 't', 'o', 'r', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'm', 'a', 's', 'k', 's', 't', 'o', 'r', 'e',
- 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'm', 'p', 's', 'a', 'd', 'b', 'w', '2', '5', '6',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 'a', 'c', 'k', 's', 's', 'd', 'w', '2', '5', '6', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a',
- 'c', 'k', 's', 's', 'w', 'b', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'c', 'k', 'u',
- 's', 'd', 'w', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'c', 'k', 'u', 's', 'w', 'b',
- '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 'a', 'd', 'd', 's', 'b', '2', '5', '6', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 'a', 'd', 'd', 's', 'w', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'b', 'l', 'e', 'n', 'd',
- 'v', 'b', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 'e', 'r', 'm', 'v', 'a', 'r', 's', 'i',
- '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 'e', 'r', 'm', 'v', 'a', 'r', 's', 'f', '2', '5',
- '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 'h', 'a', 'd', 'd', 'd', '2', '5', '6', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h', 'a',
- 'd', 'd', 's', 'w', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h', 'a', 'd', 'd', 'w', '2',
- '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 'h', 's', 'u', 'b', 'd', '2', '5', '6', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h',
- 's', 'u', 'b', 's', 'w', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h', 's', 'u', 'b', 'w',
- '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 'm', 'a', 'd', 'd', 'u', 'b', 's', 'w', '2', '5',
- '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 'm', 'a', 'd', 'd', 'w', 'd', '2', '5', '6', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm',
- 'o', 'v', 'm', 's', 'k', 'b', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'u', 'l', 'h',
- 'r', 's', 'w', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'u', 'l', 'h', 'w', '2', '5',
- '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 'm', 'u', 'l', 'h', 'u', 'w', '2', '5', '6', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's',
- 'a', 'd', 'b', 'w', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'h', 'u', 'f', 'b', '2',
- '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 's', 'i', 'g', 'n', 'b', '2', '5', '6', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's',
- 'i', 'g', 'n', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'i', 'g', 'n', 'w', '2',
- '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 's', 'l', 'l', 'd', '2', '5', '6', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l',
- 'l', 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'w', '2', '5', '6', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 's', 'l', 'l', 'd', 'i', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'q',
- 'i', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'w', 'i', '2', '5', '6', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 's', 'l', 'l', 'v', '4', 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'v', '8',
- 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 's', 'l', 'l', 'v', '2', 'd', 'i', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l',
- 'l', 'v', '4', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'd', '2', '5', '6', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 's', 'r', 'a', 'w', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'd', 'i',
- '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'w', 'i', '2', '5', '6', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 's', 'r', 'a', 'v', '4', 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'v', '8', 's',
- 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 's', 'r', 'l', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l',
- 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'w', '2', '5', '6', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 's', 'r', 'l', 'd', 'i', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'q', 'i',
- '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'w', 'i', '2', '5', '6', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 's', 'r', 'l', 'v', '4', 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'v', '8', 's',
- 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 's', 'r', 'l', 'v', '2', 'd', 'i', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l',
- 'v', '4', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 's', 'u', 'b', 's', 'b', '2', '5', '6', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 's', 'u', 'b', 's', 'w', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'a', 'd', 'd', 'p', 'd',
- '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'a', 'd', 'd', 'p', 's', '5', '1', '2', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'r',
- 'o', 'a', 'd', 'c', 'a', 's', 't', 'm', 'b', '1', '2', '8', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'r',
- 'o', 'a', 'd', 'c', 'a', 's', 't', 'm', 'b', '2', '5', '6', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'r',
- 'o', 'a', 'd', 'c', 'a', 's', 't', 'm', 'b', '5', '1', '2', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'r',
- 'o', 'a', 'd', 'c', 'a', 's', 't', 'm', 'w', '1', '2', '8', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'r',
- 'o', 'a', 'd', 'c', 'a', 's', 't', 'm', 'w', '2', '5', '6', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'r',
- 'o', 'a', 'd', 'c', 'a', 's', 't', 'm', 'w', '5', '1', '2', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v',
- 't', 's', 'i', '2', 's', 'd', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 's', 'i', '2',
- 's', 's', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'c', 'v', 't', 's', 'i', '2', 's', 's', '6', '4',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'v', 'c', 'v', 't', 't', 's', 'd', '2', 's', 'i', '3', '2', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
- 'c', 'v', 't', 't', 's', 'd', '2', 's', 'i', '6', '4', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v',
- 't', 't', 's', 'd', '2', 'u', 's', 'i', '3', '2', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't',
- 't', 's', 'd', '2', 'u', 's', 'i', '6', '4', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 't',
- 's', 's', '2', 's', 'i', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 't', 's', 's',
- '2', 's', 'i', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 't', 's', 's', '2', 'u',
- 's', 'i', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 't', 's', 's', '2', 'u', 's',
- 'i', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'c', 'v', 't', 'u', 's', 'i', '2', 's', 's', '3', '2',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'c', 'v', 't', 'u', 's', 'i', '2', 's', 'd', '6', '4', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v',
- 't', 'u', 's', 'i', '2', 's', 's', '6', '4', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'd', 'b', 'p', 's', 'a',
- 'd', 'b', 'w', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'd', 'b', 'p', 's', 'a', 'd', 'b', 'w',
- '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'd', 'b', 'p', 's', 'a', 'd', 'b', 'w', '5', '1', '2',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'd', 'i', 'v', 'p', 'd', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'd', 'i', 'v', 'p', 's',
- '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'e', 'x', 'p', '2', 'p', 'd', '_', 'm', 'a', 's', 'k',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'e', 'x', 'p', '2', 'p', 's', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a',
- 't', 'h', 'e', 'r', 's', 'i', 'v', '8', 'd', 'f', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h',
- 'e', 'r', 's', 'i', 'v', '1', '6', 's', 'i', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e',
- 'r', 's', 'i', 'v', '8', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 's',
- 'i', 'v', '1', '6', 's', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'd', 'i',
- 'v', '8', 'd', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'd', 'i', 'v', '1',
- '6', 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'd', 'i', 'v', '8', 'd',
- 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'd', 'i', 'v', '1', '6', 's', 'f',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'g', 'a', 't', 'h', 'e', 'r', '3', 'd', 'i', 'v', '2', 'd', 'f', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'g', 'a', 't', 'h', 'e', 'r', '3', 'd', 'i', 'v', '2', 'd', 'i', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g',
- 'a', 't', 'h', 'e', 'r', '3', 'd', 'i', 'v', '4', 'd', 'f', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a',
- 't', 'h', 'e', 'r', '3', 'd', 'i', 'v', '4', 'd', 'i', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't',
- 'h', 'e', 'r', '3', 'd', 'i', 'v', '4', 's', 'f', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h',
- 'e', 'r', '3', 'd', 'i', 'v', '4', 's', 'i', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e',
- 'r', '3', 'd', 'i', 'v', '8', 's', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r',
- '3', 'd', 'i', 'v', '8', 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', '3',
- 's', 'i', 'v', '2', 'd', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', '3', 's',
- 'i', 'v', '2', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', '3', 's', 'i',
- 'v', '4', 'd', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', '3', 's', 'i', 'v',
- '4', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', '3', 's', 'i', 'v', '4',
- 's', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', '3', 's', 'i', 'v', '4', 's',
- 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'g', 'a', 't', 'h', 'e', 'r', '3', 's', 'i', 'v', '8', 's', 'f',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'g', 'a', 't', 'h', 'e', 'r', '3', 's', 'i', 'v', '8', 's', 'i', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'g', 'a', 't', 'h', 'e', 'r', 'p', 'f', 'd', 'p', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't',
- 'h', 'e', 'r', 'p', 'f', 'd', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r',
- 'p', 'f', 'q', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'p', 'f', 'q',
- 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'a', 'd', 'd', 's', 'd', '_', 'r', 'o', 'u', 'n', 'd', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'a', 'd', 'd', 's', 's', '_', 'r', 'o', 'u', 'n',
- 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'm', 'p', 's', 'd', '_', 'm', 'a',
- 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'c', 'm', 'p', 's', 's', '_', 'm', 'a', 's', 'k', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c',
- 'o', 'm', 'p', 'r', 'e', 's', 's', 'q', 'i', '1', '2', '8', '_', 'm', 'a',
- 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'c', 'o', 'm', 'p', 'r', 'e', 's', 's', 'q', 'i', '2', '5',
- '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'p', 'r', 'e', 's', 's',
- 'q', 'i', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'p',
- 'r', 'e', 's', 's', 's', 'i', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'c', 'o', 'm', 'p', 'r', 'e', 's', 's', 's', 'i', '2', '5', '6', '_', 'm',
- 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'c', 'o', 'm', 'p', 'r', 'e', 's', 's', 's', 'i', '5',
- '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'p', 'r', 'e', 's',
- 's', 'd', 'f', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm',
- 'p', 'r', 'e', 's', 's', 'd', 'f', '2', '5', '6', '_', 'm', 'a', 's', 'k',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'c', 'o', 'm', 'p', 'r', 'e', 's', 's', 'd', 'f', '5', '1', '2', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'p', 'r', 'e', 's', 's', 's', 'f',
- '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'p', 'r', 'e',
- 's', 's', 's', 'f', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'o',
- 'm', 'p', 'r', 'e', 's', 's', 's', 'f', '5', '1', '2', '_', 'm', 'a', 's',
- 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'c', 'o', 'm', 'p', 'r', 'e', 's', 's', 'd', 'i', '1', '2', '8',
- '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'p', 'r', 'e', 's', 's', 'd',
- 'i', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'p', 'r',
- 'e', 's', 's', 'd', 'i', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c',
- 'o', 'm', 'p', 'r', 'e', 's', 's', 'h', 'i', '1', '2', '8', '_', 'm', 'a',
- 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'c', 'o', 'm', 'p', 'r', 'e', 's', 's', 'h', 'i', '2', '5',
- '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'p', 'r', 'e', 's', 's',
- 'h', 'i', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'c', 'o',
- 'n', 'f', 'l', 'i', 'c', 't', 's', 'i', '_', '1', '2', '8', '_', 'm', 'a',
- 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'v', 'p', 'c', 'o', 'n', 'f', 'l', 'i', 'c', 't', 's', 'i',
- '_', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'c', 'o', 'n',
- 'f', 'l', 'i', 'c', 't', 's', 'i', '_', '5', '1', '2', '_', 'm', 'a', 's',
- 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'v', 'p', 'c', 'o', 'n', 'f', 'l', 'i', 'c', 't', 'd', 'i', '_',
- '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'c', 'o', 'n', 'f',
- 'l', 'i', 'c', 't', 'd', 'i', '_', '2', '5', '6', '_', 'm', 'a', 's', 'k',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'v', 'p', 'c', 'o', 'n', 'f', 'l', 'i', 'c', 't', 'd', 'i', '_', '5',
- '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'd', 'q', '2', 'p',
- 's', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 'd',
- '2', 'd', 'q', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't',
- 'p', 'd', '2', 'd', 'q', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c',
- 'v', 't', 'p', 'd', '2', 'p', 's', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v',
- 't', 'p', 'd', '2', 'p', 's', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'c', 'v', 't', 'p', 'd', '2', 'q', 'q', '1', '2', '8', '_', 'm', 'a', 's',
- 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'c', 'v', 't', 'p', 'd', '2', 'q', 'q', '2', '5', '6', '_', 'm',
- 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'c', 'v', 't', 'p', 'd', '2', 'q', 'q', '5', '1', '2',
- '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 'd', '2', 'u', 'd', 'q',
- '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 'p', 'd', '2', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 'd', '2',
+ 'd', 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 's', '2', 'd', 'q', '2',
+ '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'c', 'v', 't', 't', 'p', 'd', '2', 'd', 'q', '2', '5', '6',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'c', 'v', 't', 't', 'p', 's', '2', 'd', 'q', '2', '5', '6', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'd',
+ 'p', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'h', 'a', 'd', 'd', 'p', 'd', '2', '5',
+ '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'h', 'a', 'd', 'd', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'h', 's', 'u',
+ 'b', 'p', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'h', 's', 'u', 'b', 'p', 's', '2', '5',
+ '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'l', 'd', 'd', 'q', 'u', '2', '5', '6', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 's', 'k',
+ 'l', 'o', 'a', 'd', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 's', 'k', 'l', 'o', 'a', 'd',
+ 'p', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'm', 'a', 's', 'k', 'l', 'o', 'a', 'd', 'p',
+ 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'm', 'a', 's', 'k', 'l', 'o', 'a', 'd', 'p', 's', '2', '5', '6',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'm', 'a', 's', 'k', 's', 't', 'o', 'r', 'e', 'p', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a',
+ 's', 'k', 's', 't', 'o', 'r', 'e', 'p', 'd', '2', '5', '6', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a',
+ 's', 'k', 's', 't', 'o', 'r', 'e', 'p', 's', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 's', 'k', 's',
+ 't', 'o', 'r', 'e', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 'x', 'p', 'd',
+ '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'm', 'a', 'x', 'p', 's', '2', '5', '6', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'i',
+ 'n', 'p', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'i', 'n', 'p', 's', '2', '5', '6',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'm', 'o', 'v', 'm', 's', 'k', 'p', 'd', '2', '5', '6', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'o',
+ 'v', 'm', 's', 'k', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 't', 'e', 's', 't',
+ 'c', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 't', 'e', 's', 't', 'n', 'z', 'c', '2', '5',
+ '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 't', 'e', 's', 't', 'z', '2', '5', '6', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'c', 'p',
+ 'p', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'r', 'o', 'u', 'n', 'd', 'p', 'd', '2', '5',
+ '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'r', 'o', 'u', 'n', 'd', 'p', 's', '2', '5', '6', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 's',
+ 'q', 'r', 't', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i',
+ 'l', 'v', 'a', 'r', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', 'l', 'v',
+ 'a', 'r', 'p', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', 'l',
+ 'v', 'a', 'r', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', 'l', 'v', 'a',
+ 'r', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'v', 't', 'e', 's', 't', 'c', 'p', 'd',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'v', 't', 'e', 's', 't', 'c', 'p', 'd', '2', '5', '6', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 't',
+ 'e', 's', 't', 'c', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'v', 't', 'e', 's', 't', 'c', 'p', 's',
+ '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'v', 't', 'e', 's', 't', 'n', 'z', 'c', 'p', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'v', 't', 'e', 's', 't', 'n', 'z', 'c', 'p', 'd', '2', '5', '6', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
+ 't', 'e', 's', 't', 'n', 'z', 'c', 'p', 's', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 't', 'e', 's', 't',
+ 'n', 'z', 'c', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 't', 'e', 's', 't', 'z',
+ 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'v', 't', 'e', 's', 't', 'z', 'p', 'd', '2', '5', '6', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'v', 't', 'e', 's', 't', 'z', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 't', 'e', 's', 't', 'z',
+ 'p', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'v', 'z', 'e', 'r', 'o', 'a', 'l', 'l', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'v', 'z', 'e', 'r', 'o', 'u', 'p', 'p', 'e', 'r', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h',
+ 'e', 'r', 'd', '_', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'd', '_', 'd',
+ '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'd', '_', 'p', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'g', 'a', 't', 'h', 'e', 'r', 'd', '_', 'p', 'd', '2', '5', '6', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g',
+ 'a', 't', 'h', 'e', 'r', 'd', '_', 'p', 's', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e',
+ 'r', 'd', '_', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r',
+ 'd', '_', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'd', '_', 'q', '2', '5',
+ '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'q', '_', 'd', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't',
+ 'h', 'e', 'r', 'q', '_', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e',
+ 'r', 'q', '_', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'q', '_', 'p',
+ 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'q', '_', 'p', 's',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'g', 'a', 't', 'h', 'e', 'r', 'q', '_', 'p', 's', '2', '5', '6', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'g', 'a', 't', 'h', 'e', 'r', 'q', '_', 'q', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e',
+ 'r', 'q', '_', 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 's', 'k', 'l', 'o', 'a',
+ 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'm', 'a', 's', 'k', 'l', 'o', 'a', 'd', 'd', '2', '5', '6',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'm', 'a', 's', 'k', 'l', 'o', 'a', 'd', 'q', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 's', 'k',
+ 'l', 'o', 'a', 'd', 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 's', 'k', 's', 't',
+ 'o', 'r', 'e', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'm', 'a', 's', 'k', 's', 't', 'o', 'r', 'e', 'd',
+ '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'm', 'a', 's', 'k', 's', 't', 'o', 'r', 'e', 'q', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'm', 'a', 's', 'k', 's', 't', 'o', 'r', 'e', 'q', '2', '5', '6', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm',
+ 'p', 's', 'a', 'd', 'b', 'w', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'c', 'k', 's',
+ 's', 'd', 'w', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'c', 'k', 's', 's', 'w', 'b',
+ '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'a', 'c', 'k', 'u', 's', 'd', 'w', '2', '5', '6',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 'a', 'c', 'k', 'u', 's', 'w', 'b', '2', '5', '6', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'b',
+ 'l', 'e', 'n', 'd', 'v', 'b', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'e', 'r', 'm', 'v',
+ 'a', 'r', 's', 'i', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'e', 'r', 'm', 'v', 'a', 'r',
+ 's', 'f', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 'h', 'a', 'd', 'd', 'd', '2', '5', '6',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 'h', 'a', 'd', 'd', 's', 'w', '2', '5', '6', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h', 'a',
+ 'd', 'd', 'w', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h', 's', 'u', 'b', 'd', '2', '5',
+ '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 'h', 's', 'u', 'b', 's', 'w', '2', '5', '6', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h',
+ 's', 'u', 'b', 'w', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'a', 'd', 'd', 'u', 'b',
+ 's', 'w', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'a', 'd', 'd', 'w', 'd', '2', '5',
+ '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 'm', 'o', 'v', 'm', 's', 'k', 'b', '2', '5', '6', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 'm', 'u', 'l', 'h', 'r', 's', 'w', '2', '5', '6', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'u', 'l',
+ 'h', 'w', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'u', 'l', 'h', 'u', 'w', '2', '5',
+ '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 's', 'a', 'd', 'b', 'w', '2', '5', '6', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'h',
+ 'u', 'f', 'b', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'i', 'g', 'n', 'b', '2', '5',
+ '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 's', 'i', 'g', 'n', 'd', '2', '5', '6', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'i',
+ 'g', 'n', 'w', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'd', '2', '5', '6',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 's', 'l', 'l', 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'w',
+ '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'd', 'i', '2', '5', '6', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 's', 'l', 'l', 'q', 'i', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'w', 'i',
+ '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'v', '4', 's', 'i', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's',
+ 'l', 'l', 'v', '8', 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'v', '2', 'd', 'i',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 's', 'l', 'l', 'v', '4', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'd',
+ '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'w', '2', '5', '6', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's',
+ 'r', 'a', 'd', 'i', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'w', 'i', '2',
+ '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'p', 's', 'r', 'a', 'v', '4', 's', 'i', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r',
+ 'a', 'v', '8', 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'd', '2', '5', '6', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 's', 'r', 'l', 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'w', '2',
+ '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'p', 's', 'r', 'l', 'd', 'i', '2', '5', '6', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's',
+ 'r', 'l', 'q', 'i', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'w', 'i', '2',
+ '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'p', 's', 'r', 'l', 'v', '4', 's', 'i', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r',
+ 'l', 'v', '8', 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'v', '2', 'd', 'i', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 's', 'r', 'l', 'v', '4', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'a', 'd', 'd', 'p', 'd', '5',
+ '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'a', 'd', 'd', 'p', 's', '5', '1', '2', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'r', 'o',
+ 'a', 'd', 'c', 'a', 's', 't', 'm', 'b', '1', '2', '8', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'r', 'o',
+ 'a', 'd', 'c', 'a', 's', 't', 'm', 'b', '2', '5', '6', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'r', 'o',
+ 'a', 'd', 'c', 'a', 's', 't', 'm', 'b', '5', '1', '2', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'r', 'o',
+ 'a', 'd', 'c', 'a', 's', 't', 'm', 'w', '1', '2', '8', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'r', 'o',
+ 'a', 'd', 'c', 'a', 's', 't', 'm', 'w', '2', '5', '6', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'r', 'o',
+ 'a', 'd', 'c', 'a', 's', 't', 'm', 'w', '5', '1', '2', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'c',
+ 'o', 'n', 'f', 'l', 'i', 'c', 't', 's', 'i', '_', '1', '2', '8', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
+ 'p', 'c', 'o', 'n', 'f', 'l', 'i', 'c', 't', 's', 'i', '_', '2', '5', '6',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'v', 'p', 'c', 'o', 'n', 'f', 'l', 'i', 'c', 't', 's', 'i', '_', '5',
+ '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'v', 'p', 'c', 'o', 'n', 'f', 'l', 'i', 'c', 't', 'd', 'i',
+ '_', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'v', 'p', 'c', 'o', 'n', 'f', 'l', 'i', 'c', 't',
+ 'd', 'i', '_', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'c', 'o', 'n', 'f', 'l', 'i',
+ 'c', 't', 'd', 'i', '_', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 's', 'i', '2',
+ 's', 'd', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'c', 'v', 't', 's', 'i', '2', 's', 's', '3', '2',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'c', 'v', 't', 's', 'i', '2', 's', 's', '6', '4', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v',
+ 't', 't', 's', 'd', '2', 's', 'i', '3', '2', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 't',
+ 's', 'd', '2', 's', 'i', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 't', 's', 'd',
+ '2', 'u', 's', 'i', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 't', 's', 'd', '2',
+ 'u', 's', 'i', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 't', 's', 's', '2', 's',
+ 'i', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'v', 'c', 'v', 't', 't', 's', 's', '2', 's', 'i', '6',
+ '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'v', 'c', 'v', 't', 't', 's', 's', '2', 'u', 's', 'i', '3', '2',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'v', 'c', 'v', 't', 't', 's', 's', '2', 'u', 's', 'i', '6', '4', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'c', 'v', 't', 'u', 's', 'i', '2', 's', 's', '3', '2', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't',
+ 'u', 's', 'i', '2', 's', 'd', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'u', 's', 'i',
+ '2', 's', 's', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'd', 'b', 'p', 's', 'a', 'd', 'b', 'w', '1',
+ '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'd', 'b', 'p', 's', 'a', 'd', 'b', 'w', '2', '5', '6', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'd', 'b', 'p', 's', 'a', 'd', 'b', 'w', '5', '1', '2', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'd', 'i', 'v',
+ 'p', 'd', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'd', 'i', 'v', 'p', 's', '5', '1', '2', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'e', 'x', 'p', '2', 'p', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'e', 'x', 'p',
+ '2', 'p', 's', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r',
+ 'p', 'f', 'd', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'p', 'f', 'd',
+ 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'g', 'a', 't', 'h', 'e', 'r', 'p', 'f', 'q', 'p', 'd', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'g', 'a', 't', 'h', 'e', 'r', 'p', 'f', 'q', 'p', 's', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'a', 'd', 'd',
+ 's', 'd', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'a',
+ 'd', 'd', 's', 's', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'c', 'm', 'p', 's', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'm', 'p',
+ 's', 's', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 'd', '2', 'd',
+ 'q', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 'd',
+ '2', 'd', 'q', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't',
+ 'p', 'd', '2', 'p', 's', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p',
+ 'd', '2', 'p', 's', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v',
+ 't', 'p', 'd', '2', 'q', 'q', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'c', 'v', 't', 'p', 'd', '2', 'q', 'q', '2', '5', '6', '_', 'm', 'a', 's',
+ 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'c', 'v', 't', 'p', 'd', '2', 'q', 'q', '5', '1', '2', '_', 'm',
+ 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'c', 'v', 't', 'p', 'd', '2', 'u', 'd', 'q', '1', '2',
+ '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 'd', '2', 'u', 'd',
+ 'q', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 'd',
+ '2', 'u', 'd', 'q', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v',
+ 't', 'p', 'd', '2', 'u', 'q', 'q', '1', '2', '8', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'c', 'v', 't', 'p', 'd', '2', 'u', 'q', 'q', '2', '5', '6', '_', 'm',
+ 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'c', 'v', 't', 'p', 'd', '2', 'u', 'q', 'q', '5', '1',
+ '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 's', '2', 'd', 'q',
+ '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 's', '2',
+ 'd', 'q', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p',
+ 's', '2', 'd', 'q', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v',
+ 't', 'p', 's', '2', 'p', 'd', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'c', 'v', 't', 'p', 's', '2', 'q', 'q', '1', '2', '8', '_', 'm', 'a', 's',
+ 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'c', 'v', 't', 'p', 's', '2', 'q', 'q', '2', '5', '6', '_', 'm',
+ 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'c', 'v', 't', 'p', 's', '2', 'q', 'q', '5', '1', '2',
+ '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 's', '2', 'u', 'd', 'q',
+ '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 's', '2',
'u', 'd', 'q', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't',
- 'p', 'd', '2', 'u', 'd', 'q', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000',
+ 'p', 's', '2', 'u', 'd', 'q', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'c', 'v', 't', 'p', 'd', '2', 'u', 'q', 'q', '1', '2', '8', '_', 'm', 'a',
+ 'c', 'v', 't', 'p', 's', '2', 'u', 'q', 'q', '1', '2', '8', '_', 'm', 'a',
's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'c', 'v', 't', 'p', 'd', '2', 'u', 'q', 'q', '2', '5', '6',
+ '3', '2', '_', 'c', 'v', 't', 'p', 's', '2', 'u', 'q', 'q', '2', '5', '6',
'_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 'd', '2', 'u', 'q', 'q',
+ '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 's', '2', 'u', 'q', 'q',
'5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 's', '2',
- 'd', 'q', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p',
- 's', '2', 'd', 'q', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v',
- 't', 'p', 's', '2', 'd', 'q', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'c', 'v', 't', 'p', 's', '2', 'p', 'd', '5', '1', '2', '_', 'm', 'a', 's',
- 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'c', 'v', 't', 'p', 's', '2', 'q', 'q', '1', '2', '8', '_', 'm',
- 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'c', 'v', 't', 'p', 's', '2', 'q', 'q', '2', '5', '6',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'q', 'q', '2',
+ 'p', 's', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 's',
+ 'd', '2', 's', 's', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'c', 'v', 't', 's', 's', '2', 's', 'd', '_', 'r', 'o', 'u', 'n', 'd',
'_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 's', '2', 'q', 'q', '5',
- '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 's', '2', 'u',
- 'd', 'q', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p',
- 's', '2', 'u', 'd', 'q', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c',
- 'v', 't', 'p', 's', '2', 'u', 'd', 'q', '5', '1', '2', '_', 'm', 'a', 's',
- 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'c', 'v', 't', 'p', 's', '2', 'u', 'q', 'q', '1', '2', '8', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 's', '2', 'u', 'q', 'q', '2',
- '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 's', '2', 'u',
- 'q', 'q', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'q',
- 'q', '2', 'p', 'd', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v',
- 't', 'q', 'q', '2', 'p', 's', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000',
+ '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p', 'd', '2', 'd', 'q',
+ '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p', 'd',
+ '2', 'd', 'q', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't',
+ 't', 'p', 'd', '2', 'q', 'q', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'c', 'v', 't', 'q', 'q', '2', 'p', 's', '2', '5', '6', '_', 'm', 'a', 's',
- 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'c', 'v', 't', 'q', 'q', '2', 'p', 's', '5', '1', '2', '_', 'm',
- 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'c', 'v', 't', 's', 'd', '2', 's', 's', '_', 'r', 'o',
- 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 's', 's', '2',
- 's', 'd', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_',
+ 'c', 'v', 't', 't', 'p', 'd', '2', 'q', 'q', '2', '5', '6', '_', 'm', 'a',
+ 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'c', 'v', 't', 't', 'p', 'd', '2', 'q', 'q', '5', '1', '2',
+ '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p', 'd', '2', 'u', 'd',
+ 'q', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p',
+ 'd', '2', 'u', 'd', 'q', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c',
- 'v', 't', 't', 'p', 'd', '2', 'd', 'q', '1', '2', '8', '_', 'm', 'a', 's',
- 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'c', 'v', 't', 't', 'p', 'd', '2', 'd', 'q', '5', '1', '2', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p', 'd', '2', 'q', 'q', '1',
- '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p', 'd', '2',
+ 'v', 't', 't', 'p', 'd', '2', 'u', 'd', 'q', '5', '1', '2', '_', 'm', 'a',
+ 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'c', 'v', 't', 't', 'p', 'd', '2', 'u', 'q', 'q', '1', '2',
+ '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p', 'd', '2', 'u',
'q', 'q', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't',
- 'p', 'd', '2', 'q', 'q', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c',
- 'v', 't', 't', 'p', 'd', '2', 'u', 'd', 'q', '1', '2', '8', '_', 'm', 'a',
- 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'c', 'v', 't', 't', 'p', 'd', '2', 'u', 'd', 'q', '2', '5',
- '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p', 'd', '2', 'u',
- 'd', 'q', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't',
- 'p', 'd', '2', 'u', 'q', 'q', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000',
+ 'p', 'd', '2', 'u', 'q', 'q', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'c', 'v', 't', 't', 'p', 'd', '2', 'u', 'q', 'q', '2', '5', '6', '_', 'm',
- 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p', 'd', '2', 'u', 'q', 'q', '5',
- '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p', 's', '2',
- 'd', 'q', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't',
- 'p', 's', '2', 'q', 'q', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c',
- 'v', 't', 't', 'p', 's', '2', 'q', 'q', '2', '5', '6', '_', 'm', 'a', 's',
- 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'c', 'v', 't', 't', 'p', 's', '2', 'q', 'q', '5', '1', '2', '_',
+ 'c', 'v', 't', 't', 'p', 's', '2', 'd', 'q', '5', '1', '2', '_', 'm', 'a',
+ 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'c', 'v', 't', 't', 'p', 's', '2', 'q', 'q', '1', '2', '8',
+ '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p', 's', '2', 'q', 'q',
+ '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p', 's',
+ '2', 'q', 'q', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't',
+ 't', 'p', 's', '2', 'u', 'd', 'q', '1', '2', '8', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'c', 'v', 't', 't', 'p', 's', '2', 'u', 'd', 'q', '2', '5', '6', '_',
'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p', 's', '2', 'u', 'd', 'q',
- '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p', 's',
- '2', 'u', 'd', 'q', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ '2', 'u', 'q', 'q', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v',
- 't', 't', 'p', 's', '2', 'u', 'd', 'q', '5', '1', '2', '_', 'm', 'a', 's',
+ 't', 't', 'p', 's', '2', 'u', 'q', 'q', '2', '5', '6', '_', 'm', 'a', 's',
'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'c', 'v', 't', 't', 'p', 's', '2', 'u', 'q', 'q', '1', '2', '8',
+ '2', '_', 'c', 'v', 't', 't', 'p', 's', '2', 'u', 'q', 'q', '5', '1', '2',
'_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p', 's', '2', 'u', 'q',
- 'q', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p',
- 's', '2', 'u', 'q', 'q', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c',
- 'v', 't', 'u', 'd', 'q', '2', 'p', 's', '5', '1', '2', '_', 'm', 'a', 's',
- 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'c', 'v', 't', 'u', 'q', 'q', '2', 'p', 'd', '5', '1', '2', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'u', 'q', 'q', '2', 'p', 's', '1',
- '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'u', 'q', 'q', '2',
- 'p', 's', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'u',
- 'q', 'q', '2', 'p', 's', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'd',
- 'i', 'v', 's', 'd', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'd', 'i', 'v', 's', 's', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a',
- 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'e', 'x', 'p', 'a', 'n', 'd', 'q', 'i', '1', '2', '8', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'e', 'x', 'p', 'a', 'n', 'd', 'q', 'i', '2', '5',
- '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'e', 'x', 'p', 'a', 'n', 'd', 'q', 'i',
- '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'e', 'x', 'p', 'a', 'n', 'd',
- 's', 'i', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'e', 'x', 'p', 'a',
- 'n', 'd', 's', 'i', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'e', 'x',
- 'p', 'a', 'n', 'd', 's', 'i', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'e', 'x', 'p', 'a', 'n', 'd', 'd', 'f', '1', '2', '8', '_', 'm', 'a', 's',
- 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'e', 'x', 'p', 'a', 'n', 'd', 'd', 'f', '2', '5', '6', '_', 'm',
- 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'e', 'x', 'p', 'a', 'n', 'd', 'd', 'f', '5', '1', '2',
- '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'e', 'x', 'p', 'a', 'n', 'd', 's', 'f', '1',
- '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'e', 'x', 'p', 'a', 'n', 'd', 's',
- 'f', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'e', 'x', 'p', 'a', 'n',
- 'd', 's', 'f', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'e', 'x', 'p',
- 'a', 'n', 'd', 'd', 'i', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'e',
- 'x', 'p', 'a', 'n', 'd', 'd', 'i', '2', '5', '6', '_', 'm', 'a', 's', 'k',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'e', 'x', 'p', 'a', 'n', 'd', 'd', 'i', '5', '1', '2', '_', 'm', 'a',
- 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'e', 'x', 'p', 'a', 'n', 'd', 'h', 'i', '1', '2', '8', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'e', 'x', 'p', 'a', 'n', 'd', 'h', 'i', '2', '5',
- '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'e', 'x', 'p', 'a', 'n', 'd', 'h', 'i',
- '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'f', 'i', 'x', 'u', 'p', 'i',
- 'm', 'm', 'p', 'd', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'u', 'q', 'q', '2', 'p', 's',
+ '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'd', 'i', 'v', 's', 'd', '_',
+ 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'd', 'i', 'v', 's',
+ 's', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'f', 'i',
- 'x', 'u', 'p', 'i', 'm', 'm', 'p', 'd', '2', '5', '6', '_', 'm', 'a', 's',
+ 'x', 'u', 'p', 'i', 'm', 'm', 'p', 'd', '1', '2', '8', '_', 'm', 'a', 's',
'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm', 'm', 'p', 'd', '5', '1', '2',
+ '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm', 'm', 'p', 'd', '2', '5', '6',
'_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
'_', 'i', 'a', '3', '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm', 'm', 'p',
- 's', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
+ 'd', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'f', 'i', 'x', 'u', 'p',
- 'i', 'm', 'm', 'p', 's', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_',
+ 'i', 'm', 'm', 'p', 's', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'f',
- 'i', 'x', 'u', 'p', 'i', 'm', 'm', 'p', 's', '5', '1', '2', '_', 'm', 'a',
+ 'i', 'x', 'u', 'p', 'i', 'm', 'm', 'p', 's', '2', '5', '6', '_', 'm', 'a',
's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm', 'm', 's', 'd', '_', 'm',
- 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm', 'm', 's', 's', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'f', 'p', 'c', 'l', 'a', 's', 's', 's', 'd', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'f', 'p', 'c', 'l', 'a', 's', 's', 's', 's', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'g', 'e', 't', 'e', 'x', 'p', 'p', 'd', '1', '2',
- '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'e', 't', 'e', 'x', 'p', 'p', 'd',
- '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ '3', '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm', 'm', 'p', 's', '5', '1',
+ '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm', 'm',
+ 's', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm',
+ 'm', 's', 's', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'f', 'p', 'c', 'l', 'a', 's',
+ 's', 's', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'f', 'p', 'c', 'l', 'a', 's',
+ 's', 's', 's', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'e', 't', 'e', 'x', 'p',
- 'p', 'd', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
+ 'p', 'd', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'e', 't', 'e',
- 'x', 'p', 'p', 's', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'x', 'p', 'p', 'd', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'e',
- 't', 'e', 'x', 'p', 'p', 's', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000',
+ 't', 'e', 'x', 'p', 'p', 'd', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'g', 'e', 't', 'e', 'x', 'p', 'p', 's', '5', '1', '2', '_', 'm', 'a', 's',
+ 'g', 'e', 't', 'e', 'x', 'p', 'p', 's', '1', '2', '8', '_', 'm', 'a', 's',
'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'g', 'e', 't', 'e', 'x', 'p', 's', 'd', '1', '2', '8', '_', 'r',
- 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'e', 't', 'e', 'x',
- 'p', 's', 's', '1', '2', '8', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a',
- 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'g', 'e', 't', 'm', 'a', 'n', 't', 'p', 'd', '1', '2', '8',
+ '2', '_', 'g', 'e', 't', 'e', 'x', 'p', 'p', 's', '2', '5', '6', '_', 'm',
+ 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'g', 'e', 't', 'e', 'x', 'p', 'p', 's', '5', '1', '2',
'_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'g', 'e', 't', 'm', 'a', 'n', 't', 'p', 'd',
- '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'e', 't', 'm', 'a', 'n',
- 't', 'p', 'd', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'e', 't',
- 'm', 'a', 'n', 't', 'p', 's', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'g', 'e', 't', 'm', 'a', 'n', 't', 'p', 's', '2', '5', '6', '_', 'm', 'a',
- 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'g', 'e', 't', 'm', 'a', 'n', 't', 'p', 's', '5', '1', '2',
- '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'g', 'e', 't', 'm', 'a', 'n', 't', 's', 'd',
- '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'e', 't',
- 'm', 'a', 'n', 't', 's', 's', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a',
- 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'm', 'a', 'x', 's', 'd', '_', 'r', 'o', 'u', 'n', 'd', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'm', 'a', 'x', 's', 's', '_', 'r', 'o', 'u', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'g', 'e', 't', 'e', 'x', 'p', 's', 'd', '1',
+ '2', '8', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g',
+ 'e', 't', 'e', 'x', 'p', 's', 's', '1', '2', '8', '_', 'r', 'o', 'u', 'n',
'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'i', 'n', 's', 'd', '_', 'r', 'o',
- 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'i', 'n', 's', 's', '_',
- 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'u', 'l', 's',
- 'd', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'u',
- 'l', 's', 's', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 'm', 'o', 'v', 'd', 'b', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 'm', 'o', 'v', 'd', 'b', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 'm', 'o', 'v', 'd', 'b', '1', '2', '8', 'm', 'e', 'm', '_', 'm', 'a',
- 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 'm', 'o', 'v', 'd', 'b', '2', '5', '6', 'm', 'e', 'm',
- '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'd', 'b', '5', '1', '2',
- 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'd', 'w',
- '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'd', 'w',
- '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'd', 'w',
- '1', '2', '8', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o',
- 'v', 'd', 'w', '2', '5', '6', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 'm', 'o', 'v', 'd', 'w', '5', '1', '2', 'm', 'e', 'm', '_', 'm', 'a',
- 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 'm', 'o', 'v', 'q', 'b', '1', '2', '8', '_', 'm', 'a',
- 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 'm', 'o', 'v', 'q', 'b', '2', '5', '6', '_', 'm', 'a',
- 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 'm', 'o', 'v', 'q', 'b', '5', '1', '2', '_', 'm', 'a',
- 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 'm', 'o', 'v', 'q', 'b', '1', '2', '8', 'm', 'e', 'm',
- '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'q', 'b', '2', '5', '6',
- 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'q', 'b',
- '5', '1', '2', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o',
- 'v', 'q', 'd', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o',
- 'v', 'q', 'd', '1', '2', '8', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 'm', 'o', 'v', 'q', 'd', '2', '5', '6', 'm', 'e', 'm', '_', 'm', 'a',
- 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 'm', 'o', 'v', 'q', 'd', '5', '1', '2', 'm', 'e', 'm',
- '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'q', 'w', '1', '2', '8',
- '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'q', 'w', '2', '5', '6',
- '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'q', 'w', '1', '2', '8',
- 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'q', 'w',
- '2', '5', '6', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o',
- 'v', 'q', 'w', '5', '1', '2', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 'm', 'o', 'v', 'w', 'b', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 'm', 'o', 'v', 'w', 'b', '1', '2', '8', 'm', 'e', 'm', '_', 'm', 'a',
- 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 'm', 'o', 'v', 'w', 'b', '2', '5', '6', 'm', 'e', 'm',
- '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'w', 'b', '5', '1', '2',
- 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'd',
- 'b', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's',
- 'd', 'b', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v',
- 's', 'd', 'b', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o',
- 'v', 's', 'd', 'b', '1', '2', '8', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 'm', 'o', 'v', 's', 'd', 'b', '2', '5', '6', 'm', 'e', 'm', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'd', 'b', '5', '1', '2',
- 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'd',
- 'w', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's',
- 'd', 'w', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v',
- 's', 'd', 'w', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o',
- 'v', 's', 'd', 'w', '1', '2', '8', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 'm', 'o', 'v', 's', 'd', 'w', '2', '5', '6', 'm', 'e', 'm', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'd', 'w', '5', '1', '2',
- 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'q',
- 'b', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's',
- 'q', 'b', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v',
- 's', 'q', 'b', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o',
- 'v', 's', 'q', 'b', '1', '2', '8', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 'm', 'o', 'v', 's', 'q', 'b', '2', '5', '6', 'm', 'e', 'm', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'q', 'b', '5', '1', '2',
- 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'q',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'e', 't', 'm', 'a', 'n', 't', 'p',
'd', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's',
- 'q', 'd', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v',
- 's', 'q', 'd', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o',
- 'v', 's', 'q', 'd', '1', '2', '8', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'e', 't', 'm', 'a',
+ 'n', 't', 'p', 'd', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'e',
+ 't', 'm', 'a', 'n', 't', 'p', 'd', '5', '1', '2', '_', 'm', 'a', 's', 'k',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 'm', 'o', 'v', 's', 'q', 'd', '2', '5', '6', 'm', 'e', 'm', '_',
+ '_', 'g', 'e', 't', 'm', 'a', 'n', 't', 'p', 's', '1', '2', '8', '_', 'm',
+ 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'g', 'e', 't', 'm', 'a', 'n', 't', 'p', 's', '2', '5',
+ '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'e', 't', 'm', 'a', 'n', 't', 'p',
+ 's', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'g', 'e', 't', 'm', 'a',
+ 'n', 't', 's', 'd', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'g', 'e', 't', 'm', 'a', 'n', 't', 's', 's', '_', 'r', 'o', 'u', 'n',
+ 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 'x', 's', 'd', '_', 'r', 'o',
+ 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 'x', 's', 's', '_',
+ 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'i', 'n', 's',
+ 'd', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'i',
+ 'n', 's', 's', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'm', 'u', 'l', 's', 'd', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's',
+ 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'm', 'u', 'l', 's', 's', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm',
+ 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'd', 'b', '1', '2', '8', '_', 'm',
+ 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'd', 'b', '2', '5', '6', '_', 'm',
+ 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'd', 'b', '1', '2', '8', 'm', 'e',
+ 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'd', 'b', '2', '5',
+ '6', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'd',
+ 'b', '5', '1', '2', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm',
+ 'o', 'v', 'd', 'w', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm',
+ 'o', 'v', 'd', 'w', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm',
+ 'o', 'v', 'd', 'w', '1', '2', '8', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 'm', 'o', 'v', 'd', 'w', '2', '5', '6', 'm', 'e', 'm', '_', 'm',
+ 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'd', 'w', '5', '1', '2', 'm', 'e',
+ 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'q', 'b', '1', '2',
+ '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'q', 'b', '2', '5',
+ '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'q', 'b', '5', '1',
+ '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'q', 'b', '1', '2',
+ '8', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'q',
+ 'b', '2', '5', '6', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm',
+ 'o', 'v', 'q', 'b', '5', '1', '2', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 'm', 'o', 'v', 'q', 'd', '1', '2', '8', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 'm', 'o', 'v', 'q', 'd', '1', '2', '8', 'm', 'e', 'm', '_', 'm',
+ 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'q', 'd', '2', '5', '6', 'm', 'e',
+ 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'q', 'd', '5', '1',
+ '2', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'q',
+ 'w', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'q',
+ 'w', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'q',
+ 'w', '1', '2', '8', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm',
+ 'o', 'v', 'q', 'w', '2', '5', '6', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 'm', 'o', 'v', 'q', 'w', '5', '1', '2', 'm', 'e', 'm', '_', 'm',
+ 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'w', 'b', '1', '2', '8', '_', 'm',
+ 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'w', 'b', '1', '2', '8', 'm', 'e',
+ 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'w', 'b', '2', '5',
+ '6', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'w',
+ 'b', '5', '1', '2', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm',
+ 'o', 'v', 's', 'd', 'b', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 'm', 'o', 'v', 's', 'd', 'b', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 'm', 'o', 'v', 's', 'd', 'b', '5', '1', '2', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 'm', 'o', 'v', 's', 'd', 'b', '1', '2', '8', 'm', 'e', 'm', '_',
'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'q', 'd', '5', '1', '2',
+ 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'd', 'b', '2', '5', '6',
+ 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'd',
+ 'b', '5', '1', '2', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm',
+ 'o', 'v', 's', 'd', 'w', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 'm', 'o', 'v', 's', 'd', 'w', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 'm', 'o', 'v', 's', 'd', 'w', '5', '1', '2', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 'm', 'o', 'v', 's', 'd', 'w', '1', '2', '8', 'm', 'e', 'm', '_',
+ 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'd', 'w', '2', '5', '6',
+ 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'd',
+ 'w', '5', '1', '2', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm',
+ 'o', 'v', 's', 'q', 'b', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 'm', 'o', 'v', 's', 'q', 'b', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 'm', 'o', 'v', 's', 'q', 'b', '5', '1', '2', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 'm', 'o', 'v', 's', 'q', 'b', '1', '2', '8', 'm', 'e', 'm', '_',
+ 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'q', 'b', '2', '5', '6',
'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'q',
- 'w', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's',
- 'q', 'w', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v',
- 's', 'q', 'w', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o',
- 'v', 's', 'q', 'w', '1', '2', '8', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k',
+ 'b', '5', '1', '2', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm',
+ 'o', 'v', 's', 'q', 'd', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 'm', 'o', 'v', 's', 'q', 'd', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 'm', 'o', 'v', 's', 'q', 'd', '5', '1', '2', '_', 'm', 'a', 's', 'k',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 'm', 'o', 'v', 's', 'q', 'w', '2', '5', '6', 'm', 'e', 'm', '_',
+ '_', 'p', 'm', 'o', 'v', 's', 'q', 'd', '1', '2', '8', 'm', 'e', 'm', '_',
'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'q', 'w', '5', '1', '2',
+ 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'q', 'd', '2', '5', '6',
+ 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'q',
+ 'd', '5', '1', '2', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm',
+ 'o', 'v', 's', 'q', 'w', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 'm', 'o', 'v', 's', 'q', 'w', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 'm', 'o', 'v', 's', 'q', 'w', '5', '1', '2', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 'm', 'o', 'v', 's', 'q', 'w', '1', '2', '8', 'm', 'e', 'm', '_',
+ 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'q', 'w', '2', '5', '6',
+ 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'q',
+ 'w', '5', '1', '2', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm',
+ 'o', 'v', 's', 'w', 'b', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 'm', 'o', 'v', 's', 'w', 'b', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 'm', 'o', 'v', 's', 'w', 'b', '5', '1', '2', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 'm', 'o', 'v', 's', 'w', 'b', '1', '2', '8', 'm', 'e', 'm', '_',
+ 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'w', 'b', '2', '5', '6',
'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'w',
- 'b', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's',
- 'w', 'b', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v',
- 's', 'w', 'b', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o',
- 'v', 's', 'w', 'b', '1', '2', '8', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 'm', 'o', 'v', 's', 'w', 'b', '2', '5', '6', 'm', 'e', 'm', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 's', 'w', 'b', '5', '1', '2',
+ 'b', '5', '1', '2', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm',
+ 'o', 'v', 'u', 's', 'd', 'b', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 'm', 'o', 'v', 'u', 's', 'd', 'b', '2', '5', '6', '_', 'm', 'a', 's',
+ 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'd', 'b', '5', '1', '2', '_', 'm',
+ 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'd', 'b', '1', '2', '8',
'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's',
- 'd', 'b', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v',
- 'u', 's', 'd', 'b', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm',
- 'o', 'v', 'u', 's', 'd', 'b', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 'm', 'o', 'v', 'u', 's', 'd', 'b', '1', '2', '8', 'm', 'e', 'm', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'd', 'b', '2', '5',
- '6', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u',
- 's', 'd', 'b', '5', '1', '2', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 'm', 'o', 'v', 'u', 's', 'd', 'w', '1', '2', '8', '_', 'm', 'a', 's',
- 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'd', 'w', '2', '5', '6', '_', 'm',
- 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'd', 'w', '5', '1', '2',
- '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'd', 'w', '1',
- '2', '8', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v',
- 'u', 's', 'd', 'w', '2', '5', '6', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 'm', 'o', 'v', 'u', 's', 'd', 'w', '5', '1', '2', 'm', 'e', 'm',
- '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'q', 'b', '1',
- '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'q',
- 'b', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u',
- 's', 'q', 'b', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o',
- 'v', 'u', 's', 'q', 'b', '1', '2', '8', 'm', 'e', 'm', '_', 'm', 'a', 's',
- 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'q', 'b', '2', '5', '6', 'm', 'e',
- 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'q', 'b',
- '5', '1', '2', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o',
- 'v', 'u', 's', 'q', 'd', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_',
+ 'd', 'b', '2', '5', '6', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 'm', 'o', 'v', 'u', 's', 'q', 'd', '2', '5', '6', '_', 'm', 'a', 's', 'k',
+ 'm', 'o', 'v', 'u', 's', 'd', 'b', '5', '1', '2', 'm', 'e', 'm', '_', 'm',
+ 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'd', 'w', '1', '2', '8',
+ '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'd', 'w', '2',
+ '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'd',
+ 'w', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u',
+ 's', 'd', 'w', '1', '2', '8', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 'm', 'o', 'v', 'u', 's', 'd', 'w', '2', '5', '6', 'm', 'e', 'm', '_',
+ 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'd', 'w', '5', '1',
+ '2', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u',
+ 's', 'q', 'b', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o',
+ 'v', 'u', 's', 'q', 'b', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 'm', 'o', 'v', 'u', 's', 'q', 'b', '5', '1', '2', '_', 'm', 'a', 's', 'k',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 'm', 'o', 'v', 'u', 's', 'q', 'd', '5', '1', '2', '_', 'm', 'a',
+ '_', 'p', 'm', 'o', 'v', 'u', 's', 'q', 'b', '1', '2', '8', 'm', 'e', 'm',
+ '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'q', 'b', '2',
+ '5', '6', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v',
+ 'u', 's', 'q', 'b', '5', '1', '2', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 'm', 'o', 'v', 'u', 's', 'q', 'd', '1', '2', '8', '_', 'm', 'a',
's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'q', 'd', '1', '2', '8', 'm',
+ '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'q', 'd', '2', '5', '6', '_',
+ 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'q', 'd', '5', '1',
+ '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'q', 'd',
+ '1', '2', '8', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o',
+ 'v', 'u', 's', 'q', 'd', '2', '5', '6', 'm', 'e', 'm', '_', 'm', 'a', 's',
+ 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'q', 'd', '5', '1', '2', 'm', 'e',
+ 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'q', 'w',
+ '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's',
+ 'q', 'w', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v',
+ 'u', 's', 'q', 'w', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm',
+ 'o', 'v', 'u', 's', 'q', 'w', '1', '2', '8', 'm', 'e', 'm', '_', 'm', 'a',
+ 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'q', 'w', '2', '5', '6', 'm',
'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'q',
- 'd', '2', '5', '6', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'w', '5', '1', '2', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm',
- 'o', 'v', 'u', 's', 'q', 'd', '5', '1', '2', 'm', 'e', 'm', '_', 'm', 'a',
- 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'q', 'w', '1', '2', '8', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'q', 'w', '2', '5',
- '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'q', 'w',
- '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's',
- 'q', 'w', '1', '2', '8', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 'm', 'o', 'v', 'u', 's', 'q', 'w', '2', '5', '6', 'm', 'e', 'm', '_', 'm',
+ 'o', 'v', 'u', 's', 'w', 'b', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 'm', 'o', 'v', 'u', 's', 'w', 'b', '2', '5', '6', '_', 'm', 'a', 's',
+ 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'w', 'b', '5', '1', '2', '_', 'm',
'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'q', 'w', '5', '1', '2',
+ 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'w', 'b', '1', '2', '8',
'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's',
- 'w', 'b', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v',
- 'u', 's', 'w', 'b', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm',
- 'o', 'v', 'u', 's', 'w', 'b', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 'm', 'o', 'v', 'u', 's', 'w', 'b', '1', '2', '8', 'm', 'e', 'm', '_',
+ 'w', 'b', '2', '5', '6', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 'm', 'o', 'v', 'u', 's', 'w', 'b', '5', '1', '2', 'm', 'e', 'm', '_', 'm',
+ 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'r', 'a', 'n', 'g', 'e', 'p', 'd', '1', '2', '8', '_',
'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u', 's', 'w', 'b', '2', '5',
- '6', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v', 'u',
- 's', 'w', 'b', '5', '1', '2', 'm', 'e', 'm', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 'p', 'm', 'u', 'l', 't', 'i', 's', 'h', 'i', 'f', 't', 'q', 'b', '1',
+ 'i', 'a', '3', '2', '_', 'r', 'a', 'n', 'g', 'e', 'p', 'd', '2', '5', '6',
+ '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'r', 'a', 'n', 'g', 'e', 'p', 'd', '5', '1',
+ '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'a', 'n', 'g', 'e', 'p', 's', '1',
'2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'm', 'u', 'l', 't', 'i',
- 's', 'h', 'i', 'f', 't', 'q', 'b', '2', '5', '6', '_', 'm', 'a', 's', 'k',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'v', 'p', 'm', 'u', 'l', 't', 'i', 's', 'h', 'i', 'f', 't', 'q', 'b',
- '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'a', 'n', 'g', 'e', 'p',
- 'd', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'a', 'n', 'g', 'e',
- 'p', 'd', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'a', 'n', 'g',
- 'e', 'p', 'd', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'a', 'n',
- 'g', 'e', 'p', 's', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'a',
- 'n', 'g', 'e', 'p', 's', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r',
- 'a', 'n', 'g', 'e', 'p', 's', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'r', 'a', 'n', 'g', 'e', 's', 'd', '1', '2', '8', '_', 'r', 'o', 'u', 'n',
- 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'a', 'n', 'g', 'e', 's', 's', '1',
- '2', '8', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r',
- 'e', 'd', 'u', 'c', 'e', 'p', 'd', '1', '2', '8', '_', 'm', 'a', 's', 'k',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'r', 'e', 'd', 'u', 'c', 'e', 'p', 'd', '2', '5', '6', '_', 'm', 'a',
- 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'r', 'e', 'd', 'u', 'c', 'e', 'p', 'd', '5', '1', '2', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'r', 'e', 'd', 'u', 'c', 'e', 'p', 's', '1', '2',
- '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'e', 'd', 'u', 'c', 'e', 'p', 's',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'a', 'n', 'g', 'e', 'p', 's',
'2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'a', 'n', 'g', 'e', 'p',
+ 's', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'a', 'n', 'g', 'e',
+ 's', 'd', '1', '2', '8', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's',
+ 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'r', 'a', 'n', 'g', 'e', 's', 's', '1', '2', '8', '_', 'r', 'o',
+ 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'e', 'd', 'u', 'c', 'e',
- 'p', 's', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
+ 'p', 'd', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'e', 'd', 'u',
- 'c', 'e', 's', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'e', 'd', 'u', 'c',
- 'e', 's', 's', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'n', 'd', 's', 'c', 'a',
- 'l', 'e', 'p', 'd', '_', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r',
- 'n', 'd', 's', 'c', 'a', 'l', 'e', 'p', 'd', '_', '2', '5', '6', '_', 'm',
+ 'c', 'e', 'p', 'd', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'e',
+ 'd', 'u', 'c', 'e', 'p', 'd', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'r', 'e', 'd', 'u', 'c', 'e', 'p', 's', '1', '2', '8', '_', 'm', 'a', 's',
+ 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'r', 'e', 'd', 'u', 'c', 'e', 'p', 's', '2', '5', '6', '_', 'm',
+ 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'r', 'e', 'd', 'u', 'c', 'e', 'p', 's', '5', '1', '2',
+ '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'r', 'e', 'd', 'u', 'c', 'e', 's', 'd', '_',
+ 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'r', 'e', 'd', 'u', 'c', 'e', 's', 's', '_', 'm',
'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
'a', '3', '2', '_', 'r', 'n', 'd', 's', 'c', 'a', 'l', 'e', 'p', 'd', '_',
+ '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'n', 'd', 's', 'c', 'a',
+ 'l', 'e', 'p', 'd', '_', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r',
+ 'n', 'd', 's', 'c', 'a', 'l', 'e', 'p', 'd', '_', 'm', 'a', 's', 'k', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'r', 'n', 'd', 's', 'c', 'a', 'l', 'e', 'p', 's', '_', '1', '2', '8', '_',
'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
'i', 'a', '3', '2', '_', 'r', 'n', 'd', 's', 'c', 'a', 'l', 'e', 'p', 's',
- '_', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
+ '_', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'n', 'd', 's', 'c',
- 'a', 'l', 'e', 'p', 's', '_', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'r', 'n', 'd', 's', 'c', 'a', 'l', 'e', 'p', 's', '_', 'm', 'a', 's', 'k',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'r', 'n', 'd', 's', 'c', 'a', 'l', 'e', 's', 'd', '_', 'r', 'o', 'u',
- 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'n', 'd', 's', 'c', 'a', 'l',
- 'e', 's', 's', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 's', 'c', 'a', 'l', 'e', 'f', 'p', 'd', '1', '2', '8', '_', 'm', 'a', 's',
- 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 's', 'c', 'a', 'l', 'e', 'f', 'p', 'd', '2', '5', '6', '_', 'm',
- 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 's', 'c', 'a', 'l', 'e', 'f', 'p', 'd', '5', '1', '2',
- '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 's', 'c', 'a', 'l', 'e', 'f', 'p', 's', '1',
- '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'c', 'a', 'l', 'e', 'f', 'p',
- 's', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'c', 'a', 'l', 'e',
- 'f', 'p', 's', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'c', 'a',
- 'l', 'e', 'f', 's', 'd', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's',
- 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 's', 'c', 'a', 'l', 'e', 'f', 's', 's', '_', 'r', 'o', 'u', 'n',
- 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 's', 'u', 'b', 's', 'd', '_', 'r', 'o',
- 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'u', 'b', 's', 's', '_',
- 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't',
- 'p', 'h', '2', 'p', 's', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't',
- 'p', 'h', '2', 'p', 's', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
- 'c', 'v', 't', 'p', 'h', '2', 'p', 's', '5', '1', '2', '_', 'm', 'a', 's',
- 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'v', 'c', 'v', 't', 'p', 's', '2', 'p', 'h', '_', 'm', 'a', 's',
- 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'v', 'c', 'v', 't', 'p', 's', '2', 'p', 'h', '2', '5', '6', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 'p', 's', '2', 'p', 'h', '5',
- '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'l', 'd', 'v',
- 'd', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'l',
- 'd', 'v', 'd', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's',
- 'h', 'l', 'd', 'v', 'd', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
- 'p', 's', 'h', 'l', 'd', 'v', 'q', '1', '2', '8', '_', 'm', 'a', 's', 'k',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'v', 'p', 's', 'h', 'l', 'd', 'v', 'q', '2', '5', '6', '_', 'm', 'a',
+ 'a', 'l', 'e', 'p', 's', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'n', 'd', 's',
+ 'c', 'a', 'l', 'e', 's', 'd', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a',
's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'v', 'p', 's', 'h', 'l', 'd', 'v', 'q', '5', '1', '2', '_',
+ '3', '2', '_', 'r', 'n', 'd', 's', 'c', 'a', 'l', 'e', 's', 's', '_', 'r',
+ 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'c', 'a', 'l', 'e',
+ 'f', 'p', 'd', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'c', 'a',
+ 'l', 'e', 'f', 'p', 'd', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's',
+ 'c', 'a', 'l', 'e', 'f', 'p', 'd', '5', '1', '2', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 's', 'c', 'a', 'l', 'e', 'f', 'p', 's', '1', '2', '8', '_', 'm', 'a',
+ 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 's', 'c', 'a', 'l', 'e', 'f', 'p', 's', '2', '5', '6', '_',
'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'l', 'd', 'v', 'w', '1', '2',
- '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'l', 'd', 'v', 'w',
- '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'l', 'd',
- 'v', 'w', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h',
- 'r', 'd', 'v', 'd', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p',
- 's', 'h', 'r', 'd', 'v', 'd', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 'p', 's', 'h', 'r', 'd', 'v', 'd', '5', '1', '2', '_', 'm', 'a', 's',
- 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'v', 'p', 's', 'h', 'r', 'd', 'v', 'q', '1', '2', '8', '_', 'm',
- 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'r', 'd', 'v', 'q', '2', '5', '6',
- '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'r', 'd', 'v', 'q', '5',
- '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'r', 'd', 'v',
- 'w', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'r',
- 'd', 'v', 'w', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's',
- 'h', 'r', 'd', 'v', 'w', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
- 'p', 's', 'h', 'u', 'f', 'b', 'i', 't', 'q', 'm', 'b', '1', '2', '8', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'u', 'f', 'b', 'i', 't', 'q',
- 'm', 'b', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h',
- 'u', 'f', 'b', 'i', 't', 'q', 'm', 'b', '5', '1', '2', '_', 'm', 'a', 's',
- 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm', 'm', 'p', 'd', '1', '2', '8',
- '_', 'm', 'a', 's', 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm', 'm',
- 'p', 'd', '2', '5', '6', '_', 'm', 'a', 's', 'k', 'z', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'f', 'i', 'x',
- 'u', 'p', 'i', 'm', 'm', 'p', 'd', '5', '1', '2', '_', 'm', 'a', 's', 'k',
- 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm', 'm', 'p', 's', '1', '2', '8',
- '_', 'm', 'a', 's', 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm', 'm',
- 'p', 's', '2', '5', '6', '_', 'm', 'a', 's', 'k', 'z', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'f', 'i', 'x',
- 'u', 'p', 'i', 'm', 'm', 'p', 's', '5', '1', '2', '_', 'm', 'a', 's', 'k',
- 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm', 'm', 's', 'd', '_', 'm', 'a',
- 's', 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm', 'm', 's', 's', '_',
- 'm', 'a', 's', 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'l', 'd', 'v', 'd', '1',
- '2', '8', '_', 'm', 'a', 's', 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'l', 'd',
- 'v', 'd', '2', '5', '6', '_', 'm', 'a', 's', 'k', 'z', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's',
- 'h', 'l', 'd', 'v', 'd', '5', '1', '2', '_', 'm', 'a', 's', 'k', 'z', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 'p', 's', 'h', 'l', 'd', 'v', 'q', '1', '2', '8', '_', 'm', 'a', 's',
- 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'v', 'p', 's', 'h', 'l', 'd', 'v', 'q', '2', '5', '6', '_',
- 'm', 'a', 's', 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'l', 'd', 'v', 'q', '5',
- '1', '2', '_', 'm', 'a', 's', 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'l', 'd',
- 'v', 'w', '1', '2', '8', '_', 'm', 'a', 's', 'k', 'z', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's',
- 'h', 'l', 'd', 'v', 'w', '2', '5', '6', '_', 'm', 'a', 's', 'k', 'z', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 'p', 's', 'h', 'l', 'd', 'v', 'w', '5', '1', '2', '_', 'm', 'a', 's',
- 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'v', 'p', 's', 'h', 'r', 'd', 'v', 'd', '1', '2', '8', '_',
- 'm', 'a', 's', 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'r', 'd', 'v', 'd', '2',
- '5', '6', '_', 'm', 'a', 's', 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'r', 'd',
- 'v', 'd', '5', '1', '2', '_', 'm', 'a', 's', 'k', 'z', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's',
- 'h', 'r', 'd', 'v', 'q', '1', '2', '8', '_', 'm', 'a', 's', 'k', 'z', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 'p', 's', 'h', 'r', 'd', 'v', 'q', '2', '5', '6', '_', 'm', 'a', 's',
- 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'v', 'p', 's', 'h', 'r', 'd', 'v', 'q', '5', '1', '2', '_',
- 'm', 'a', 's', 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'r', 'd', 'v', 'w', '1',
- '2', '8', '_', 'm', 'a', 's', 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'r', 'd',
- 'v', 'w', '2', '5', '6', '_', 'm', 'a', 's', 'k', 'z', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's',
- 'h', 'r', 'd', 'v', 'w', '5', '1', '2', '_', 'm', 'a', 's', 'k', 'z', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'm', 'a', 'x', 'p', 'd', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 'x', 'p', 's', '5',
- '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'm', 'i', 'n', 'p', 'd', '5', '1', '2', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'i', 'n',
- 'p', 's', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'm', 'u', 'l', 'p', 'd', '5', '1', '2', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'm', 'u', 'l', 'p', 's', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'c', 'k', 's', 's',
- 'd', 'w', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'c', 'k', 's', 's', 'w', 'b', '5',
- '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 'a', 'c', 'k', 'u', 's', 'd', 'w', '5', '1', '2', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 'a', 'c', 'k', 'u', 's', 'w', 'b', '5', '1', '2', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'd',
- 'd', 's', 'b', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'd', 'd', 's', 'w', '5', '1',
- '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 'e', 'r', 'm', 'v', 'a', 'r', 'd', 'f', '2', '5', '6', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 'e', 'r', 'm', 'v', 'a', 'r', 'd', 'f', '5', '1', '2', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'e',
- 'r', 'm', 'v', 'a', 'r', 'd', 'i', '2', '5', '6', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'e', 'r', 'm',
- 'v', 'a', 'r', 'd', 'i', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'e', 'r', 'm', 'v', 'a',
- 'r', 'h', 'i', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'e', 'r', 'm', 'v', 'a', 'r', 'h',
- 'i', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'e', 'r', 'm', 'v', 'a', 'r', 'h', 'i', '5',
- '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 'e', 'r', 'm', 'v', 'a', 'r', 'q', 'i', '1', '2', '8',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 'e', 'r', 'm', 'v', 'a', 'r', 'q', 'i', '2', '5', '6', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 'e', 'r', 'm', 'v', 'a', 'r', 'q', 'i', '5', '1', '2', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'e', 'r',
- 'm', 'v', 'a', 'r', 's', 'f', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'e', 'r', 'm', 'v',
- 'a', 'r', 's', 'i', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'a', 'd', 'd', 'u', 'b',
- 's', 'w', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'a', 'd', 'd', 'w', 'd', '5', '1',
- '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 'm', 'u', 'l', 'h', 'r', 's', 'w', '5', '1', '2', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 'm', 'u', 'l', 'h', 'w', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'u', 'l', 'h', 'u',
- 'w', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'r', 'o', 'l', 'd', '1', '2', '8', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 'r', 'o', 'l', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'r', 'o', 'l', 'd', '5', '1',
- '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 'r', 'o', 'l', 'q', '1', '2', '8', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'r', 'o', 'l',
- 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'r', 'o', 'l', 'q', '5', '1', '2', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 'r', 'o', 'l', 'v', 'd', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'r', 'o', 'l', 'v', 'd',
- '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 'r', 'o', 'l', 'v', 'd', '5', '1', '2', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 'r', 'o', 'l', 'v', 'q', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'r', 'o', 'l', 'v', 'q',
- '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 'r', 'o', 'l', 'v', 'q', '5', '1', '2', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 'r', 'o', 'r', 'd', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'r', 'o', 'r', 'd', '2', '5',
- '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 'r', 'o', 'r', 'd', '5', '1', '2', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'r', 'o', 'r',
- 'q', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'r', 'o', 'r', 'q', '2', '5', '6', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 'r', 'o', 'r', 'q', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'r', 'o', 'r', 'v', 'd', '1',
- '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 'r', 'o', 'r', 'v', 'd', '2', '5', '6', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'r',
- 'o', 'r', 'v', 'd', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'r', 'o', 'r', 'v', 'q', '1',
- '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 'r', 'o', 'r', 'v', 'q', '2', '5', '6', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'r',
- 'o', 'r', 'v', 'q', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'a', 'd', 'b', 'w', '5',
- '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 's', 'h', 'u', 'f', 'b', '5', '1', '2', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's',
- 'l', 'l', 'd', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'q', '5', '1', '2',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 's', 'l', 'l', 'w', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'd',
- 'i', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'q', 'i', '5', '1', '2', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 's', 'l', 'l', 'w', 'i', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'v',
- '1', '6', 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'v', '8', 'd', 'i', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 's', 'l', 'l', 'v', '8', 'h', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'v', '1', '6',
- 'h', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 's', 'l', 'l', 'v', '3', '2', 'h', 'i', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's',
- 'r', 'a', 'd', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'q', '1', '2', '8',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 's', 'r', 'a', 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'q',
- '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'w', '5', '1', '2', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's',
- 'r', 'a', 'd', 'i', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'q', 'i', '1',
- '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 's', 'r', 'a', 'q', 'i', '2', '5', '6', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's',
- 'r', 'a', 'q', 'i', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'w', 'i', '5',
- '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 's', 'r', 'a', 'v', '1', '6', 's', 'i', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's',
- 'r', 'a', 'v', 'q', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'v', 'q', '2',
- '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 's', 'r', 'a', 'v', '8', 'd', 'i', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r',
- 'a', 'v', '8', 'h', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'v', '1', '6', 'h', 'i',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 's', 'r', 'a', 'v', '3', '2', 'h', 'i', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l',
- 'd', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'q', '5', '1', '2', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 's', 'r', 'l', 'w', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'd', 'i', '5',
- '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 's', 'r', 'l', 'q', 'i', '5', '1', '2', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's',
- 'r', 'l', 'w', 'i', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'v', '1', '6',
- 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 's', 'r', 'l', 'v', '8', 'd', 'i', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r',
- 'l', 'v', '8', 'h', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'v', '1', '6', 'h', 'i',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 's', 'r', 'l', 'v', '3', '2', 'h', 'i', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'u', 'b',
- 's', 'b', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 's', 'u', 'b', 's', 'w', '5', '1', '2',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 't', 'e', 'r', 'n', 'l', 'o', 'g', 'd', '1', '2', '8', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 't', 'e', 'r', 'n', 'l', 'o', 'g', 'd', '2', '5', '6', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 't', 'e',
- 'r', 'n', 'l', 'o', 'g', 'd', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 't', 'e', 'r', 'n',
- 'l', 'o', 'g', 'q', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 't', 'e', 'r', 'n', 'l', 'o',
- 'g', 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 't', 'e', 'r', 'n', 'l', 'o', 'g', 'q',
- '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'r', 'c', 'p', '1', '4', 'p', 'd', '1', '2', '8', '_',
- 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'r', 'c', 'p', '1', '4', 'p', 'd', '2', '5', '6',
- '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'r', 'c', 'p', '1', '4', 'p', 'd', '5', '1',
+ 'i', 'a', '3', '2', '_', 's', 'c', 'a', 'l', 'e', 'f', 'p', 's', '5', '1',
'2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'c', 'p', '1', '4', 'p', 's', '1',
+ 'n', '_', 'i', 'a', '3', '2', '_', 's', 'c', 'a', 'l', 'e', 'f', 's', 'd',
+ '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'c', 'a',
+ 'l', 'e', 'f', 's', 's', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's',
+ 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 's', 'u', 'b', 's', 'd', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm',
+ 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 's', 'u', 'b', 's', 's', '_', 'r', 'o', 'u', 'n', 'd',
+ '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 'p', 'h', '2', 'p', 's',
+ '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 'p', 'h', '2', 'p', 's',
+ '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 'p', 'h',
+ '2', 'p', 's', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v',
+ 't', 'p', 's', '2', 'p', 'h', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v',
+ 't', 'p', 's', '2', 'p', 'h', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'v', 'c', 'v', 't', 'p', 's', '2', 'p', 'h', '5', '1', '2', '_', 'm', 'a',
+ 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm', 'm', 'p', 'd', '1', '2',
+ '8', '_', 'm', 'a', 's', 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm',
+ 'm', 'p', 'd', '2', '5', '6', '_', 'm', 'a', 's', 'k', 'z', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'f', 'i',
+ 'x', 'u', 'p', 'i', 'm', 'm', 'p', 'd', '5', '1', '2', '_', 'm', 'a', 's',
+ 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm', 'm', 'p', 's', '1', '2',
+ '8', '_', 'm', 'a', 's', 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm',
+ 'm', 'p', 's', '2', '5', '6', '_', 'm', 'a', 's', 'k', 'z', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'f', 'i',
+ 'x', 'u', 'p', 'i', 'm', 'm', 'p', 's', '5', '1', '2', '_', 'm', 'a', 's',
+ 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm', 'm', 's', 'd', '_', 'm',
+ 'a', 's', 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'f', 'i', 'x', 'u', 'p', 'i', 'm', 'm', 's', 's',
+ '_', 'm', 'a', 's', 'k', 'z', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 'x', 'p', 'd', '5', '1', '2',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'm', 'a', 'x', 'p', 's', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'i', 'n', 'p', 'd',
+ '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'm', 'i', 'n', 'p', 's', '5', '1', '2', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'u',
+ 'l', 'p', 'd', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'u', 'l', 'p', 's', '5', '1', '2',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 'a', 'c', 'k', 's', 's', 'd', 'w', '5', '1', '2', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a',
+ 'c', 'k', 's', 's', 'w', 'b', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'c', 'k', 'u',
+ 's', 'd', 'w', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'c', 'k', 'u', 's', 'w', 'b',
+ '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'e', 'r', 'm', 'v', 'a', 'r', 'd', 'f', '2', '5',
+ '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 'e', 'r', 'm', 'v', 'a', 'r', 'd', 'f', '5', '1', '2', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 'e', 'r', 'm', 'v', 'a', 'r', 'd', 'i', '2', '5', '6', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'e',
+ 'r', 'm', 'v', 'a', 'r', 'd', 'i', '5', '1', '2', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'e', 'r', 'm',
+ 'v', 'a', 'r', 'h', 'i', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'e', 'r', 'm', 'v', 'a',
+ 'r', 'h', 'i', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'e', 'r', 'm', 'v', 'a', 'r', 'h',
+ 'i', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 'e', 'r', 'm', 'v', 'a', 'r', 'q', 'i', '1',
+ '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'p', 'e', 'r', 'm', 'v', 'a', 'r', 'q', 'i', '2', '5', '6',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 'e', 'r', 'm', 'v', 'a', 'r', 'q', 'i', '5', '1', '2', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 'e', 'r', 'm', 'v', 'a', 'r', 's', 'f', '5', '1', '2', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'e', 'r',
+ 'm', 'v', 'a', 'r', 's', 'i', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'a', 'd', 'd',
+ 'u', 'b', 's', 'w', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'a', 'd', 'd', 'w', 'd',
+ '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'm', 'u', 'l', 'h', 'r', 's', 'w', '5', '1', '2',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 'm', 'u', 'l', 'h', 'w', '5', '1', '2', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'u', 'l',
+ 'h', 'u', 'w', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'm', 'u', 'l', 't', 'i', 's',
+ 'h', 'i', 'f', 't', 'q', 'b', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'm', 'u', 'l',
+ 't', 'i', 's', 'h', 'i', 'f', 't', 'q', 'b', '2', '5', '6', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p',
+ 'm', 'u', 'l', 't', 'i', 's', 'h', 'i', 'f', 't', 'q', 'b', '5', '1', '2',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 's', 'a', 'd', 'b', 'w', '5', '1', '2', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'h', 'u',
+ 'f', 'b', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'd', '5', '1', '2', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 's', 'l', 'l', 'q', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'w', '5',
+ '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'p', 's', 'l', 'l', 'd', 'i', '5', '1', '2', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's',
+ 'l', 'l', 'q', 'i', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'w', 'i', '5',
+ '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'p', 's', 'l', 'l', 'v', '1', '6', 's', 'i', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's',
+ 'l', 'l', 'v', '8', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'v', '8', 'h', 'i',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 's', 'l', 'l', 'v', '1', '6', 'h', 'i', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l',
+ 'v', '3', '2', 'h', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'd', '5', '1', '2', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 's', 'r', 'a', 'q', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'q', '2',
+ '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'p', 's', 'r', 'a', 'q', '5', '1', '2', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r',
+ 'a', 'w', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'd', 'i', '5', '1', '2',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 's', 'r', 'a', 'q', 'i', '1', '2', '8', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a',
+ 'q', 'i', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'q', 'i', '5', '1', '2',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 's', 'r', 'a', 'w', 'i', '5', '1', '2', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a',
+ 'v', '1', '6', 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'v', 'q', '1', '2', '8',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 's', 'r', 'a', 'v', 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a',
+ 'v', '8', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'v', '8', 'h', 'i', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 's', 'r', 'a', 'v', '1', '6', 'h', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'v', '3',
+ '2', 'h', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'd', '5', '1', '2', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's',
+ 'r', 'l', 'q', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'w', '5', '1', '2',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 's', 'r', 'l', 'd', 'i', '5', '1', '2', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l',
+ 'q', 'i', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'w', 'i', '5', '1', '2',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 's', 'r', 'l', 'v', '1', '6', 's', 'i', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l',
+ 'v', '8', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'v', '8', 'h', 'i', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 's', 'r', 'l', 'v', '1', '6', 'h', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'v', '3',
+ '2', 'h', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 't', 'e', 'r', 'n', 'l', 'o', 'g', 'd', '1', '2',
+ '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 't', 'e', 'r', 'n', 'l', 'o', 'g', 'd', '2', '5', '6', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 't', 'e', 'r', 'n', 'l', 'o', 'g', 'd', '5', '1', '2', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 't',
+ 'e', 'r', 'n', 'l', 'o', 'g', 'q', '1', '2', '8', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 't', 'e', 'r',
+ 'n', 'l', 'o', 'g', 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 't', 'e', 'r', 'n', 'l',
+ 'o', 'g', 'q', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'c', 'p', '1', '4', 'p', 'd', '1',
'2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'c', 'p', '1', '4', 'p', 's',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'c', 'p', '1', '4', 'p', 'd',
'2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'c', 'p', '1', '4', 'p',
- 's', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
+ 'd', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'c', 'p', '1', '4',
- 's', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'c', 'p', '1', '4', 's', 's',
- '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'r', 'c', 'p', '2', '8', 'p', 'd', '_', 'm',
- 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'r', 'c', 'p', '2', '8', 'p', 's', '_', 'm', 'a', 's',
- 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'r', 'c', 'p', '2', '8', 's', 'd', '_', 'r', 'o', 'u', 'n', 'd',
- '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'r', 'c', 'p', '2', '8', 's', 's', '_', 'r',
- 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 's', 'q', 'r', 't',
- '1', '4', 'p', 'd', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 's',
- 'q', 'r', 't', '1', '4', 'p', 'd', '2', '5', '6', '_', 'm', 'a', 's', 'k',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'r', 's', 'q', 'r', 't', '1', '4', 'p', 'd', '5', '1', '2', '_', 'm',
- 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'r', 's', 'q', 'r', 't', '1', '4', 'p', 's', '1', '2',
- '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'r', 's', 'q', 'r', 't', '1', '4', 'p',
- 's', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 's', 'q', 'r', 't',
+ 'p', 's', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'c', 'p', '1',
+ '4', 'p', 's', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'c', 'p',
'1', '4', 'p', 's', '5', '1', '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'c',
+ 'p', '1', '4', 's', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'c', 'p', '1',
+ '4', 's', 's', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'c', 'p', '2', '8', 'p',
+ 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'c', 'p', '2', '8', 'p', 's', '_',
+ 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'r', 'c', 'p', '2', '8', 's', 'd', '_', 'r', 'o',
+ 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'c', 'p', '2', '8', 's',
+ 's', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 's',
- 'q', 'r', 't', '1', '4', 's', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 's',
- 'q', 'r', 't', '1', '4', 's', 's', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 's',
- 'q', 'r', 't', '2', '8', 'p', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 's',
- 'q', 'r', 't', '2', '8', 'p', 's', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 's',
- 'q', 'r', 't', '2', '8', 's', 'd', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm',
- 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'r', 's', 'q', 'r', 't', '2', '8', 's', 's', '_', 'r',
- 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'c', 'a', 't', 't',
- 'e', 'r', 's', 'i', 'v', '8', 'd', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'c', 'a', 't', 't', 'e',
- 'r', 's', 'i', 'v', '1', '6', 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'c', 'a', 't', 't', 'e',
- 'r', 's', 'i', 'v', '8', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'c', 'a', 't', 't', 'e', 'r',
- 's', 'i', 'v', '1', '6', 's', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'c', 'a', 't', 't', 'e', 'r',
- 'd', 'i', 'v', '8', 'd', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 's', 'c', 'a', 't', 't', 'e', 'r', 'd',
- 'i', 'v', '1', '6', 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 's', 'c', 'a', 't', 't', 'e', 'r', 'd',
- 'i', 'v', '8', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 's', 'c', 'a', 't', 't', 'e', 'r', 'd', 'i',
- 'v', '1', '6', 's', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 's', 'c', 'a', 't', 't', 'e', 'r', 'd', 'i',
- 'v', '2', 'd', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 's', 'c', 'a', 't', 't', 'e', 'r', 'd', 'i', 'v',
- '2', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 's', 'c', 'a', 't', 't', 'e', 'r', 'd', 'i', 'v', '4',
- 'd', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 's', 'c', 'a', 't', 't', 'e', 'r', 'd', 'i', 'v', '4', 'd',
- 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 's', 'c', 'a', 't', 't', 'e', 'r', 'd', 'i', 'v', '4', 's', 'f',
+ 'q', 'r', 't', '1', '4', 'p', 'd', '1', '2', '8', '_', 'm', 'a', 's', 'k',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 's', 'c', 'a', 't', 't', 'e', 'r', 'd', 'i', 'v', '4', 's', 'i', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 's', 'c', 'a', 't', 't', 'e', 'r', 'd', 'i', 'v', '8', 's', 'f', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's',
- 'c', 'a', 't', 't', 'e', 'r', 'd', 'i', 'v', '8', 's', 'i', '\000', '_', '_',
+ '_', 'r', 's', 'q', 'r', 't', '1', '4', 'p', 'd', '2', '5', '6', '_', 'm',
+ 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'r', 's', 'q', 'r', 't', '1', '4', 'p', 'd', '5', '1',
+ '2', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'r', 's', 'q', 'r', 't', '1', '4', 'p',
+ 's', '1', '2', '8', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 's', 'q', 'r', 't',
+ '1', '4', 'p', 's', '2', '5', '6', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 's',
+ 'q', 'r', 't', '1', '4', 'p', 's', '5', '1', '2', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'r', 's', 'q', 'r', 't', '1', '4', 's', 'd', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'r', 's', 'q', 'r', 't', '1', '4', 's', 's', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'r', 's', 'q', 'r', 't', '2', '8', 'p', 'd', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'r', 's', 'q', 'r', 't', '2', '8', 'p', 's', '_', 'm', 'a', 's', 'k',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'r', 's', 'q', 'r', 't', '2', '8', 's', 'd', '_', 'r', 'o', 'u', 'n',
+ 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'r', 's', 'q', 'r', 't', '2', '8', 's',
+ 's', '_', 'r', 'o', 'u', 'n', 'd', '_', 'm', 'a', 's', 'k', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'c',
'a', 't', 't', 'e', 'r', 'p', 'f', 'd', 'p', 'd', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'c', 'a', 't',
@@ -24091,454 +24007,404 @@
'r', 'p', 'f', 'q', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
'n', '_', 'i', 'a', '3', '2', '_', 's', 'c', 'a', 't', 't', 'e', 'r', 'p',
'f', 'q', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 's', 'c', 'a', 't', 't', 'e', 'r', 's', 'i', 'v',
- '2', 'd', 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 's', 'c', 'a', 't', 't', 'e', 'r', 's', 'i', 'v', '2',
- 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 's', 'c', 'a', 't', 't', 'e', 'r', 's', 'i', 'v', '4', 'd',
- 'f', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 's', 'c', 'a', 't', 't', 'e', 'r', 's', 'i', 'v', '4', 'd', 'i',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 's', 'c', 'a', 't', 't', 'e', 'r', 's', 'i', 'v', '4', 's', 'f', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 's', 'c', 'a', 't', 't', 'e', 'r', 's', 'i', 'v', '4', 's', 'i', '\000', '_',
+ 'i', 'a', '3', '2', '_', 's', 'u', 'b', 'p', 'd', '5', '1', '2', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's',
- 'c', 'a', 't', 't', 'e', 'r', 's', 'i', 'v', '8', 's', 'f', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'c',
- 'a', 't', 't', 'e', 'r', 's', 'i', 'v', '8', 's', 'i', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'u', 'b',
- 'p', 'd', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 's', 'u', 'b', 'p', 's', '5', '1', '2', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 'c', 'o', 'm', 'i', 's', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'o', 'm', 'i', 's', 's',
+ 'u', 'b', 'p', 's', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'o', 'm', 'i', 's', 'd',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'v', 'c', 'v', 't', 's', 'd', '2', 's', 'i', '3', '2', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c',
- 'v', 't', 's', 'd', '2', 's', 'i', '6', '4', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 's',
- 'd', '2', 'u', 's', 'i', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 's', 'd', '2',
- 'u', 's', 'i', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 's', 's', '2', 's', 'i',
- '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'v', 'c', 'v', 't', 's', 's', '2', 's', 'i', '6', '4', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 'c', 'v', 't', 's', 's', '2', 'u', 's', 'i', '3', '2', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c',
- 'v', 't', 's', 's', '2', 'u', 's', 'i', '6', '4', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'd', 'p',
- 'b', 'u', 's', 'd', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ '_', 'v', 'c', 'o', 'm', 'i', 's', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 's', 'd',
+ '2', 's', 'i', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 's', 'd', '2', 's', 'i',
+ '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'v', 'c', 'v', 't', 's', 'd', '2', 'u', 's', 'i', '3', '2',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'v', 'c', 'v', 't', 's', 'd', '2', 'u', 's', 'i', '6', '4', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
+ 'c', 'v', 't', 's', 's', '2', 's', 'i', '3', '2', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't',
+ 's', 's', '2', 's', 'i', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 's', 's', '2',
+ 'u', 's', 'i', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 's', 's', '2', 'u', 's',
+ 'i', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'v', 'p', 'd', 'p', 'b', 'u', 's', 'd', '1', '2', '8',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'v', 'p', 'd', 'p', 'b', 'u', 's', 'd', '2', '5', '6', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p',
+ 'd', 'p', 'b', 'u', 's', 'd', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'd', 'p', 'b',
+ 'u', 's', 'd', 's', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'd', 'p', 'b', 'u', 's',
- 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'v', 'p', 'd', 'p', 'b', 'u', 's', 'd', '5', '1',
- '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'v', 'p', 'd', 'p', 'b', 'u', 's', 'd', 's', '1', '2', '8', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 'p', 'd', 'p', 'b', 'u', 's', 'd', 's', '2', '5', '6', '\000', '_', '_',
+ 'd', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'd', 'p', 'b', 'u', 's', 'd', 's',
+ '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'v', 'p', 'd', 'p', 'w', 's', 's', 'd', '1', '2', '8',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'v', 'p', 'd', 'p', 'w', 's', 's', 'd', '2', '5', '6', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p',
- 'd', 'p', 'b', 'u', 's', 'd', 's', '5', '1', '2', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'd', 'p',
- 'w', 's', 's', 'd', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'd', 'p', 'w', 's', 's', 'd', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'd', 'p', 'w',
+ 's', 's', 'd', 's', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'd', 'p', 'w', 's', 's',
- 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'v', 'p', 'd', 'p', 'w', 's', 's', 'd', '5', '1',
- '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'v', 'p', 'd', 'p', 'w', 's', 's', 'd', 's', '1', '2', '8', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 'p', 'd', 'p', 'w', 's', 's', 'd', 's', '2', '5', '6', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p',
- 'd', 'p', 'w', 's', 's', 'd', 's', '5', '1', '2', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r',
- 'm', 'i', '2', 'v', 'a', 'r', 'd', '1', '2', '8', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r',
- 'm', 'i', '2', 'v', 'a', 'r', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r',
- 'm', 'i', '2', 'v', 'a', 'r', 'd', '5', '1', '2', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r',
- 'm', 'i', '2', 'v', 'a', 'r', 'h', 'i', '1', '2', '8', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e',
- 'r', 'm', 'i', '2', 'v', 'a', 'r', 'h', 'i', '2', '5', '6', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p',
- 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r', 'h', 'i', '5', '1', '2', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
- 'p', 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r', 'p', 'd', '1', '2', '8', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 'p', 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r', 'p', 'd', '2', '5', '6',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'v', 'p', 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r', 'p', 'd', '5', '1',
- '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r', 'p', 's', '1',
- '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r', 'p', 's',
- '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r', 'p',
- 's', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r',
- 'q', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r',
- 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r',
- 'q', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r',
- 'q', 'i', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', '2', 'v', 'a',
- 'r', 'q', 'i', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', '2', 'v',
- 'a', 'r', 'q', 'i', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', 'l',
- 'v', 'a', 'r', 'p', 'd', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i',
- 'l', 'v', 'a', 'r', 'p', 's', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'd',
- 'd', '5', '2', 'h', 'u', 'q', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'd',
- 'd', '5', '2', 'h', 'u', 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'd',
- 'd', '5', '2', 'h', 'u', 'q', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'd',
- 'd', '5', '2', 'l', 'u', 'q', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'd',
- 'd', '5', '2', 'l', 'u', 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'd',
- 'd', '5', '2', 'l', 'u', 'q', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'l',
- 'd', 'd', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'l', 'd', 'd', '2', '5',
- '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'v', 'p', 's', 'h', 'l', 'd', 'd', '5', '1', '2', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p',
- 's', 'h', 'l', 'd', 'q', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'l', 'd',
- 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'l', 'd', 'q', '5', '1', '2',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'v', 'p', 's', 'h', 'l', 'd', 'w', '1', '2', '8', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's',
- 'h', 'l', 'd', 'w', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'l', 'd', 'w',
+ 'd', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'd', 'p', 'w', 's', 's', 'd', 's',
'5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'r', 'd', 'd', '1', '2', '8', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 'p', 's', 'h', 'r', 'd', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h',
- 'r', 'd', 'd', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'r', 'd', 'q', '1',
- '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'v', 'p', 's', 'h', 'r', 'd', 'q', '2', '5', '6', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
- 'p', 's', 'h', 'r', 'd', 'q', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'r',
- 'd', 'w', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'r', 'd', 'w', '2', '5',
- '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'v', 'p', 's', 'h', 'r', 'd', 'w', '5', '1', '2', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'e',
- 'x', 't', 'r', '_', 'u', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'e', 'x', 't', 'r', '_', 'u',
- '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'b', 'z', 'h', 'i', '_', 's', 'i', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'z', 'h', 'i',
- '_', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 'd', 'e', 'p', '_', 's', 'i', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'd', 'e',
- 'p', '_', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'e', 'x', 't', '_', 's', 'i', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'e',
- 'x', 't', '_', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'c', 'l', 'd', 'e', 'm', 'o', 't', 'e', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'c', 'l', 'f', 'l', 'u', 's', 'h', 'o', 'p', 't', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'l', 'r', 's',
- 's', 'b', 's', 'y', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'c', 'l', 'w', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'l', 'z', 'e', 'r',
- 'o', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'd', 'i', 'r', 'e', 'c', 't', 's', 't', 'o', 'r', 'e', '_', 'u',
- '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'd', 'i', 'r', 'e', 'c', 't', 's', 't', 'o', 'r', 'e', '_',
- 'u', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'r', 'e', 'a', 'd', 'e', 'f', 'l', 'a', 'g', 's', '_',
- 'u', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'r', 'e', 'a', 'd', 'e', 'f', 'l', 'a', 'g', 's', '_',
- 'u', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'w', 'r', 'i', 't', 'e', 'e', 'f', 'l', 'a', 'g', 's',
- '_', 'u', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'w', 'r', 'i', 't', 'e', 'e', 'f', 'l', 'a', 'g',
- 's', '_', 'u', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'f', 'x', 'r', 's', 't', 'o', 'r', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'f',
- 'x', 'r', 's', 't', 'o', 'r', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'f', 'x', 's', 'a', 'v', 'e',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'f', 'x', 's', 'a', 'v', 'e', '6', '4', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'i', 'n', 'c', 's', 's',
- 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'i', 'n', 'c', 's', 's', 'p', 'q', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'i', 'n', 'v', 'p',
- 'c', 'i', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'l', 'l', 'w', 'p', 'c', 'b', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'l', 'w', 'p', 'i',
- 'n', 's', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'l', 'w', 'p', 'i', 'n', 's', '6', '4', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'l',
- 'w', 'p', 'v', 'a', 'l', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'l', 'w', 'p', 'v', 'a', 'l', '6',
- '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'e', 'm', 'm', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'f', 'e', 'm', 'm', 's', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a',
- 's', 'k', 'm', 'o', 'v', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'o', 'v', 'n', 't', 'q', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 'a', 'c', 'k', 's', 's', 'd', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'c', 'k', 's', 's', 'w',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 'a', 'c', 'k', 'u', 's', 'w', 'b', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'd', 'd',
- 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 'a', 'd', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'd', 'd', 'q', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 'a', 'd', 'd', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'a', 'd', 'd', 's', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'd',
- 'd', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 'a', 'd', 'd', 'u', 's', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'd',
- 'd', 'u', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'a', 'l', 'i', 'g', 'n', 'r', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a',
- 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 'a', 'n', 'd', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'v', 'g', 'b', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 'a', 'v', 'g', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'm', 'p', 'e', 'q', 'b', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 'c', 'm', 'p', 'e', 'q', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'm', 'p', 'e', 'q', 'w', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 'c', 'm', 'p', 'g', 't', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'm', 'p', 'g', 't', 'd',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 'c', 'm', 'p', 'g', 't', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'e', 'c', '_', 'e', 'x',
- 't', '_', 'v', '4', 'h', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'e', 'c', '_', 's', 'e', 't', '_',
- 'v', '4', 'h', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'm', 'a', 'd', 'd', 'w', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm',
- 'a', 'x', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'm', 'a', 'x', 'u', 'b', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'i',
- 'n', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 'm', 'i', 'n', 'u', 'b', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'o', 'v',
- 'm', 's', 'k', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'm', 'u', 'l', 'h', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'u',
- 'l', 'h', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'm', 'u', 'l', 'l', 'w', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'u',
- 'l', 'u', 'd', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'a', 'd', 'b', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 's', 'l', 'l', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'q', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's',
- 'l', 'l', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'd', 'i', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l',
- 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 's', 'l', 'l', 'w', 'i', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'd',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 's', 'r', 'a', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'd', 'i', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 's', 'r', 'a', 'w', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r',
- 'l', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 's', 'r', 'l', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'd', 'i',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 's', 'r', 'l', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'w', 'i', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 's', 'u', 'b', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 's', 'u', 'b', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'u',
- 'b', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 's', 'u', 'b', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'u', 'b', 's', 'b',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 's', 'u', 'b', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'u', 'b', 'u', 's', 'b',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 's', 'u', 'b', 'u', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'u', 'n', 'p', 'c', 'k',
- 'h', 'b', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 'u', 'n', 'p', 'c', 'k', 'h', 'd', 'q', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 'u', 'n', 'p', 'c', 'k', 'h', 'w', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'u', 'n', 'p', 'c', 'k',
- 'l', 'b', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 'u', 'n', 'p', 'c', 'k', 'l', 'd', 'q', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 'u', 'n', 'p', 'c', 'k', 'l', 'w', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'x', 'o', 'r', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm',
- 'o', 'n', 'i', 't', 'o', 'r', 'x', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'o', 'v', 'd', 'i', 'r', '6',
- '4', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'm', 'w', 'a', 'i', 't', 'x', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'l', 'm', 'u',
- 'l', 'q', 'd', 'q', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'l', 'm', 'u', 'l', 'q',
- 'd', 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'l', 'm', 'u', 'l', 'q', 'd', 'q',
- '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 't', 'w', 'r', 'i', 't', 'e', '3', '2', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 't', 'w', 'r', 'i', 't', 'e', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'd', 'f', 's', 'b', 'a',
- 's', 'e', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'r', 'd', 'f', 's', 'b', 'a', 's', 'e', '6', '4',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'r', 'd', 'g', 's', 'b', 'a', 's', 'e', '3', '2', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'd', 'g',
- 's', 'b', 'a', 's', 'e', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'd', 'p', 'i', 'd', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r',
- 'd', 'p', 'k', 'r', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'r', 'd', 'p', 'm', 'c', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'd', 's',
- 's', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'r', 'd', 's', 's', 'p', 'q', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'd', 't', 's',
- 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'r', 's', 't', 'o', 'r', 's', 's', 'p', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'a', 'v', 'e',
- 'p', 'r', 'e', 'v', 's', 's', 'p', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'e', 't', 's', 's', 'b', 's',
- 'y', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 's', 'h', 'a', '1', 'm', 's', 'g', '1', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'h', 'a', '1',
- 'm', 's', 'g', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 's', 'h', 'a', '1', 'n', 'e', 'x', 't', 'e', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 's', 'h', 'a', '1', 'r', 'n', 'd', 's', '4', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'h', 'a', '2', '5',
- '6', 'm', 's', 'g', '1', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 's', 'h', 'a', '2', '5', '6', 'm', 's', 'g',
- '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 's', 'h', 'a', '2', '5', '6', 'r', 'n', 'd', 's', '2', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's',
- 'l', 'w', 'p', 'c', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'c', 'm', 'p', 's', 's', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm',
- 'i', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'c', 'o', 'm', 'i', 'g', 'e', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'i',
- 'g', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'c', 'o', 'm', 'i', 'l', 'e', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'i', 'l',
- 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'c', 'o', 'm', 'i', 'n', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 'd',
- '2', 'p', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'c', 'v', 't', 'p', 'i', '2', 'p', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v',
- 't', 'p', 'i', '2', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 's', '2', 'p', 'i',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'c', 'v', 't', 's', 's', '2', 's', 'i', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 's', 's',
- '2', 's', 'i', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p', 'd', '2', 'p', 'i',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'c', 'v', 't', 't', 'p', 's', '2', 'p', 'i', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't',
- 's', 's', '2', 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 's', 's', '2', 's', 'i',
- '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'm', 'a', 'x', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 'x', 's', 's', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'm', 'i', 'n', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'm', 'i', 'n', 's', 's', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'o', 'v',
- 'm', 's', 'k', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 's', 'h', 'u', 'f', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'c',
- 'p', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'r', 'c', 'p', 's', 's', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 's', 'q', 'r', 't',
- 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'r', 's', 'q', 'r', 't', 's', 's', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'f', 'e', 'n',
- 'c', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'u', 'c', 'o', 'm', 'i', 'e', 'q', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'u', 'c', 'o', 'm',
- 'i', 'g', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'u', 'c', 'o', 'm', 'i', 'g', 't', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'u', 'c', 'o',
- 'm', 'i', 'l', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'u', 'c', 'o', 'm', 'i', 'l', 't', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'u', 'c',
- 'o', 'm', 'i', 'n', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'l', 'f', 'l', 'u', 's', 'h', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'c', 'm', 'p', 's', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'i', 's', 'd', 'e', 'q', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'c', 'o', 'm', 'i', 's', 'd', 'g', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'i', 's', 'd',
- 'g', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'c', 'o', 'm', 'i', 's', 'd', 'l', 'e', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm',
- 'i', 's', 'd', 'l', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'i', 's', 'd', 'n', 'e', 'q',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'c', 'v', 't', 'p', 'd', '2', 'd', 'q', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 'd',
- '2', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'c', 'v', 't', 'p', 's', '2', 'd', 'q', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v',
- 't', 's', 'd', '2', 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 's', 'd', '2', 's', 'i',
- '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'c', 'v', 't', 's', 'd', '2', 's', 's', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't',
- 't', 'p', 'd', '2', 'd', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p', 's', '2', 'd',
- 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'c', 'v', 't', 't', 's', 'd', '2', 's', 'i', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't',
- 't', 's', 'd', '2', 's', 'i', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'l', 'f', 'e', 'n', 'c', 'e',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'm', 'a', 's', 'k', 'm', 'o', 'v', 'd', 'q', 'u', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 'x',
- 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'm', 'a', 'x', 's', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'f', 'e', 'n', 'c', 'e',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'm', 'i', 'n', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'i', 'n', 's', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'o',
- 'v', 'm', 's', 'k', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'c', 'k', 's', 's', 'd', 'w',
+ 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r', 'd',
'1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 'a', 'c', 'k', 's', 's', 'w', 'b', '1', '2', '8',
+ 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r', 'd',
+ '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r', 'd',
+ '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r', 'h',
+ 'i', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r',
+ 'h', 'i', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', '2', 'v', 'a',
+ 'r', 'h', 'i', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', '2', 'v',
+ 'a', 'r', 'p', 'd', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', '2',
+ 'v', 'a', 'r', 'p', 'd', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i',
+ '2', 'v', 'a', 'r', 'p', 'd', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm',
+ 'i', '2', 'v', 'a', 'r', 'p', 's', '1', '2', '8', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r',
+ 'm', 'i', '2', 'v', 'a', 'r', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e',
+ 'r', 'm', 'i', '2', 'v', 'a', 'r', 'p', 's', '5', '1', '2', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p',
+ 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r', 'q', '1', '2', '8', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p',
+ 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r', 'q', '2', '5', '6', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p',
+ 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r', 'q', '5', '1', '2', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p',
+ 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r', 'q', 'i', '1', '2', '8', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
+ 'p', 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r', 'q', 'i', '2', '5', '6', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'v', 'p', 'e', 'r', 'm', 'i', '2', 'v', 'a', 'r', 'q', 'i', '5', '1', '2',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 'a', 'c', 'k', 'u', 's', 'w', 'b', '1', '2', '8', '\000', '_', '_',
+ '_', 'v', 'p', 'e', 'r', 'm', 'i', 'l', 'v', 'a', 'r', 'p', 'd', '5', '1',
+ '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', 'l', 'v', 'a', 'r', 'p', 's', '5',
+ '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'v', 'p', 'm', 'a', 'd', 'd', '5', '2', 'h', 'u', 'q', '1',
+ '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'v', 'p', 'm', 'a', 'd', 'd', '5', '2', 'h', 'u', 'q', '2',
+ '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'v', 'p', 'm', 'a', 'd', 'd', '5', '2', 'h', 'u', 'q', '5',
+ '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'v', 'p', 'm', 'a', 'd', 'd', '5', '2', 'l', 'u', 'q', '1',
+ '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'v', 'p', 'm', 'a', 'd', 'd', '5', '2', 'l', 'u', 'q', '2',
+ '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'v', 'p', 'm', 'a', 'd', 'd', '5', '2', 'l', 'u', 'q', '5',
+ '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'b', 'e', 'x', 't', 'r', '_', 'u', '3', '2', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'e',
+ 'x', 't', 'r', '_', 'u', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'z', 'h', 'i', '_', 's', 'i',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'b', 'z', 'h', 'i', '_', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'd', 'e', 'p', '_', 's',
+ 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 'd', 'e', 'p', '_', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'e', 'x', 't', '_',
+ 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'p', 'e', 'x', 't', '_', 'd', 'i', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'l', 'd', 'e',
+ 'm', 'o', 't', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'c', 'l', 'f', 'l', 'u', 's', 'h', 'o', 'p', 't',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'c', 'l', 'r', 's', 's', 'b', 's', 'y', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'l', 'w', 'b', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'c', 'l', 'z', 'e', 'r', 'o', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'd', 'i', 'r', 'e', 'c', 't', 's', 't',
+ 'o', 'r', 'e', '_', 'u', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'd', 'i', 'r', 'e', 'c', 't', 's',
+ 't', 'o', 'r', 'e', '_', 'u', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'e', 'a', 'd', 'e', 'f',
+ 'l', 'a', 'g', 's', '_', 'u', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'e', 'a', 'd', 'e', 'f',
+ 'l', 'a', 'g', 's', '_', 'u', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'w', 'r', 'i', 't', 'e', 'e',
+ 'f', 'l', 'a', 'g', 's', '_', 'u', '3', '2', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'w', 'r', 'i', 't', 'e',
+ 'e', 'f', 'l', 'a', 'g', 's', '_', 'u', '6', '4', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'f', 'x', 'r', 's',
+ 't', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'f', 'x', 'r', 's', 't', 'o', 'r', '6', '4', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'f',
+ 'x', 's', 'a', 'v', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'f', 'x', 's', 'a', 'v', 'e', '6', '4', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'i', 'n', 'c', 's', 's', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'i', 'n', 'c', 's', 's', 'p', 'q',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'i', 'n', 'v', 'p', 'c', 'i', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'l', 'l', 'w', 'p', 'c', 'b',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'l', 'w', 'p', 'i', 'n', 's', '3', '2', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'l', 'w', 'p', 'i', 'n',
+ 's', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'l', 'w', 'p', 'v', 'a', 'l', '3', '2', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'l', 'w',
+ 'p', 'v', 'a', 'l', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'e', 'm', 'm', 's', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'f', 'e', 'm',
+ 'm', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'm', 'a', 's', 'k', 'm', 'o', 'v', 'q', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'o', 'v',
+ 'n', 't', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'a', 'c', 'k', 's', 's', 'd', 'w', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a',
- 'd', 'd', 's', 'b', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'd', 'd', 's', 'w', '1',
+ 'c', 'k', 's', 's', 'w', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'c', 'k', 'u', 's', 'w', 'b',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 'a', 'd', 'd', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'd', 'd', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a',
+ 'd', 'd', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'a', 'd', 'd', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'd', 'd', 's',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 'a', 'd', 'd', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'd', 'd', 'u', 's',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 'a', 'd', 'd', 'u', 's', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'l', 'i', 'g',
+ 'n', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'p', 'a', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'n', 'd', 'n', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 'a', 'v', 'g', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 'a', 'v', 'g', 'w', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'm', 'p',
+ 'e', 'q', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'c', 'm', 'p', 'e', 'q', 'd', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'm',
+ 'p', 'e', 'q', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 'c', 'm', 'p', 'g', 't', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c',
+ 'm', 'p', 'g', 't', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'm', 'p', 'g', 't', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
+ 'e', 'c', '_', 'e', 'x', 't', '_', 'v', '4', 'h', 'i', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'e', 'c',
+ '_', 's', 'e', 't', '_', 'v', '4', 'h', 'i', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'a', 'd', 'd',
+ 'w', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'p', 'm', 'a', 'x', 's', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'a', 'x', 'u',
+ 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 'm', 'i', 'n', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'i', 'n', 'u', 'b',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 'm', 'o', 'v', 'm', 's', 'k', 'b', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'u', 'l', 'h',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 'm', 'u', 'l', 'h', 'u', 'w', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'u', 'l', 'l',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 'm', 'u', 'l', 'u', 'd', 'q', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'o', 'r', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 's', 'a', 'd', 'b', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'd', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l',
+ 'l', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'p', 's', 'l', 'l', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'd', 'i',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'p', 's', 'l', 'l', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'l', 'l', 'w', 'i', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 's', 'r', 'a', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r',
+ 'a', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 's', 'r', 'a', 'w', 'i', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l',
+ 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 's', 'r', 'l', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 's', 'r', 'l', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'q', 'i', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's',
+ 'r', 'l', 'w', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 's', 'u', 'b', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'u', 'b',
+ 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 's', 'u', 'b', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'u', 'b', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 's', 'u', 'b', 's', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 's', 'u', 'b', 's', 'w', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's',
+ 'u', 'b', 'u', 's', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 's', 'u', 'b', 'u', 's', 'w', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 'u', 'n', 'p', 'c', 'k', 'h', 'b', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'u', 'n', 'p', 'c', 'k',
+ 'h', 'd', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'u', 'n', 'p', 'c', 'k', 'h', 'w', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 'u', 'n', 'p', 'c', 'k', 'l', 'b', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'u', 'n', 'p', 'c', 'k',
+ 'l', 'd', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'u', 'n', 'p', 'c', 'k', 'l', 'w', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 'x', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'm', 'o', 'n', 'i', 't', 'o', 'r', 'x', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'o',
+ 'v', 'd', 'i', 'r', '6', '4', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'w', 'a', 'i', 't', 'x', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 'c', 'l', 'm', 'u', 'l', 'q', 'd', 'q', '1', '2', '8', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c',
+ 'l', 'm', 'u', 'l', 'q', 'd', 'q', '2', '5', '6', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'l', 'm',
+ 'u', 'l', 'q', 'd', 'q', '5', '1', '2', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 't', 'w', 'r', 'i', 't',
+ 'e', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 't', 'w', 'r', 'i', 't', 'e', '6', '4', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r',
+ 'd', 'f', 's', 'b', 'a', 's', 'e', '3', '2', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'd', 'f', 's', 'b',
+ 'a', 's', 'e', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'r', 'd', 'g', 's', 'b', 'a', 's', 'e', '3',
+ '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'r', 'd', 'g', 's', 'b', 'a', 's', 'e', '6', '4', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'd',
+ 'p', 'i', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'r', 'd', 'p', 'k', 'r', 'u', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'd', 'p', 'm',
+ 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'r', 'd', 's', 's', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'd', 's', 's', 'p', 'q',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'r', 'd', 't', 's', 'c', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'r', 's', 't', 'o', 'r', 's', 's', 'p',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 's', 'a', 'v', 'e', 'p', 'r', 'e', 'v', 's', 's', 'p', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'e',
+ 't', 's', 's', 'b', 's', 'y', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 's', 'h', 'a', '1', 'm', 's', 'g', '1',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 's', 'h', 'a', '1', 'm', 's', 'g', '2', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'h', 'a', '1', 'n',
+ 'e', 'x', 't', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 's', 'h', 'a', '1', 'r', 'n', 'd', 's', '4', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 's', 'h', 'a', '2', '5', '6', 'm', 's', 'g', '1', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 's', 'h', 'a', '2',
+ '5', '6', 'm', 's', 'g', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 's', 'h', 'a', '2', '5', '6', 'r', 'n',
+ 'd', 's', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 's', 'l', 'w', 'p', 'c', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'm', 'p', 's',
+ 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'c', 'o', 'm', 'i', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'i', 'g', 'e',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'c', 'o', 'm', 'i', 'g', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'i', 'l', 'e', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'c', 'o', 'm', 'i', 'l', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'i', 'n', 'e', 'q', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'c', 'v', 't', 'p', 'd', '2', 'p', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 'i', '2',
+ 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'c', 'v', 't', 'p', 'i', '2', 'p', 's', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't',
+ 'p', 's', '2', 'p', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 's', 's', '2', 's', 'i', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'c', 'v', 't', 's', 's', '2', 's', 'i', '6', '4', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't',
+ 'p', 'd', '2', 'p', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 'p', 's', '2', 'p', 'i',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'c', 'v', 't', 't', 's', 's', '2', 's', 'i', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't',
+ 's', 's', '2', 's', 'i', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 'x', 'p', 's', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm',
+ 'a', 'x', 's', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'm', 'i', 'n', 'p', 's', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'i', 'n', 's',
+ 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'm', 'o', 'v', 'm', 's', 'k', 'p', 's', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'h', 'u',
+ 'f', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'r', 'c', 'p', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'c', 'p', 's', 's', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'r', 's', 'q', 'r', 't', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 's', 'q', 'r', 't', 's', 's',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 's', 'f', 'e', 'n', 'c', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'u', 'c', 'o', 'm', 'i', 'e', 'q',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'u', 'c', 'o', 'm', 'i', 'g', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'u', 'c', 'o', 'm', 'i', 'g',
+ 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'u', 'c', 'o', 'm', 'i', 'l', 'e', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'u', 'c', 'o', 'm', 'i',
+ 'l', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'u', 'c', 'o', 'm', 'i', 'n', 'e', 'q', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'l', 'f',
+ 'l', 'u', 's', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'c', 'm', 'p', 's', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'i',
+ 's', 'd', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'i', 's', 'd', 'g', 'e', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c',
+ 'o', 'm', 'i', 's', 'd', 'g', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'i', 's', 'd', 'l',
+ 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'c', 'o', 'm', 'i', 's', 'd', 'l', 't', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'o', 'm', 'i',
+ 's', 'd', 'n', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 'd', '2', 'd', 'q', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'c', 'v', 't', 'p', 'd', '2', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 'p', 's', '2',
+ 'd', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'c', 'v', 't', 's', 'd', '2', 's', 'i', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't',
+ 's', 'd', '2', 's', 'i', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 's', 'd', '2', 's',
+ 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'c', 'v', 't', 't', 'p', 'd', '2', 'd', 'q', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't',
+ 't', 'p', 's', '2', 'd', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'v', 't', 't', 's', 'd', '2', 's',
+ 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'c', 'v', 't', 't', 's', 'd', '2', 's', 'i', '6', '4', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'l',
+ 'f', 'e', 'n', 'c', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'm', 'a', 's', 'k', 'm', 'o', 'v', 'd', 'q',
+ 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'm', 'a', 'x', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'a', 'x', 's', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm',
+ 'f', 'e', 'n', 'c', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'm', 'i', 'n', 'p', 'd', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'i', 'n',
+ 's', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'm', 'o', 'v', 'm', 's', 'k', 'p', 'd', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'c',
+ 'k', 's', 's', 'd', 'w', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'c', 'k', 's', 's',
+ 'w', 'b', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'c', 'k', 'u', 's', 'w', 'b', '1',
'2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
'3', '2', '_', 'p', 'a', 'u', 's', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'a', 'd', 'd', 'w',
@@ -24576,303 +24442,275 @@
'p', 's', 'r', 'l', 'q', 'i', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'r', 'l', 'w',
'i', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 's', 'u', 'b', 's', 'b', '1', '2', '8', '\000',
+ 'i', 'a', '3', '2', '_', 'u', 'c', 'o', 'm', 'i', 's', 'd', 'e', 'q', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 's', 'u', 'b', 's', 'w', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i',
+ 'u', 'c', 'o', 'm', 'i', 's', 'd', 'g', 'e', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'u', 'c', 'o', 'm', 'i',
- 's', 'd', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'u', 'c', 'o', 'm', 'i', 's', 'd', 'g', 'e', '\000',
+ 's', 'd', 'g', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'u', 'c', 'o', 'm', 'i', 's', 'd', 'l', 'e', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'u', 'c', 'o', 'm', 'i', 's', 'd', 'g', 't', '\000', '_', '_', 'b', 'u', 'i',
+ 'u', 'c', 'o', 'm', 'i', 's', 'd', 'l', 't', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'u', 'c', 'o', 'm', 'i',
- 's', 'd', 'l', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'u', 'c', 'o', 'm', 'i', 's', 'd', 'l', 't', '\000',
+ 's', 'd', 'n', 'e', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'a', 'd', 'd', 's', 'u', 'b', 'p', 'd', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'u', 'c', 'o', 'm', 'i', 's', 'd', 'n', 'e', 'q', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'a', 'd', 'd', 's',
- 'u', 'b', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'a', 'd', 'd', 's', 'u', 'b', 'p', 's', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'h',
- 'a', 'd', 'd', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'h', 'a', 'd', 'd', 'p', 's', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'h', 's',
- 'u', 'b', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'h', 's', 'u', 'b', 'p', 's', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'l', 'd', 'd',
- 'q', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'm', 'o', 'n', 'i', 't', 'o', 'r', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'w', 'a', 'i',
- 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'b', 'l', 'e', 'n', 'd', 'v', 'p', 'd', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'l', 'e', 'n',
- 'd', 'v', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'd', 'p', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'd', 'p', 'p', 's', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'i', 'n', 's', 'e', 'r', 't', 'p', 's', '1', '2', '8', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'p', 's',
- 'a', 'd', 'b', 'w', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'c', 'k', 'u', 's', 'd',
- 'w', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'b', 'l', 'e', 'n', 'd', 'v', 'b', '1', '2',
- '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 'h', 'm', 'i', 'n', 'p', 'o', 's', 'u', 'w', '1', '2', '8',
+ 'a', 'd', 'd', 's', 'u', 'b', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'h', 'a', 'd', 'd', 'p', 'd',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 't', 'e', 's', 't', 'c', '1', '2', '8', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 't', 'e', 's',
- 't', 'n', 'z', 'c', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 't', 'e', 's', 't', 'z', '1',
- '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'r', 'o', 'u', 'n', 'd', 'p', 'd', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'o', 'u', 'n',
- 'd', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'r', 'o', 'u', 'n', 'd', 's', 'd', '\000', '_', '_', 'b',
- 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'o', 'u',
- 'n', 'd', 's', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'c', 'r', 'c', '3', '2', 'h', 'i', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'r',
- 'c', '3', '2', 's', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'c', 'r', 'c', '3', '2', 'q', 'i', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c',
- 'r', 'c', '3', '2', 'd', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'm', 'p', 'e', 's', 't', 'r',
- 'i', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'c', 'm', 'p', 'e', 's', 't', 'r', 'i', 'a',
- '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 'c', 'm', 'p', 'e', 's', 't', 'r', 'i', 'c', '1',
- '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 'c', 'm', 'p', 'e', 's', 't', 'r', 'i', 'o', '1', '2',
- '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 'c', 'm', 'p', 'e', 's', 't', 'r', 'i', 's', '1', '2', '8',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 'c', 'm', 'p', 'e', 's', 't', 'r', 'i', 'z', '1', '2', '8', '\000',
+ '_', 'h', 'a', 'd', 'd', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'h', 's', 'u', 'b', 'p', 'd', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 'c', 'm', 'p', 'e', 's', 't', 'r', 'm', '1', '2', '8', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c',
- 'm', 'p', 'i', 's', 't', 'r', 'i', '1', '2', '8', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'm', 'p',
- 'i', 's', 't', 'r', 'i', 'a', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'm', 'p', 'i',
- 's', 't', 'r', 'i', 'c', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'm', 'p', 'i', 's',
- 't', 'r', 'i', 'o', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'm', 'p', 'i', 's', 't',
- 'r', 'i', 's', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'm', 'p', 'i', 's', 't', 'r',
- 'i', 'z', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'm', 'p', 'i', 's', 't', 'r', 'm',
- '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'e', 'x', 't', 'r', 'q', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'e', 'x', 't', 'r', 'q',
- 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'i', 'n', 's', 'e', 'r', 't', 'q', '\000', '_', '_', 'b', 'u', 'i',
+ 'h', 's', 'u', 'b', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'l', 'd', 'd', 'q', 'u', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'o',
+ 'n', 'i', 't', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'm', 'w', 'a', 'i', 't', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'l', 'e',
+ 'n', 'd', 'v', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'b', 'l', 'e', 'n', 'd', 'v', 'p', 's', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'd', 'p', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'd', 'p', 'p', 's', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'i', 'n', 's', 'e', 'r',
- 't', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'p', 'a', 'b', 's', 'b', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'b', 's', 'd',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 'a', 'b', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h', 'a', 'd', 'd', 'd', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 'h', 'a', 'd', 'd', 'd', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h', 'a', 'd', 'd', 's',
- 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 'h', 'a', 'd', 'd', 's', 'w', '1', '2', '8', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h',
- 'a', 'd', 'd', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 'h', 'a', 'd', 'd', 'w', '1', '2', '8', '\000',
+ 't', 'p', 's', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'm', 'p', 's', 'a', 'd', 'b', 'w', '1',
+ '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'p', 'a', 'c', 'k', 'u', 's', 'd', 'w', '1', '2', '8', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'p', 'h', 's', 'u', 'b', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h', 's', 'u', 'b', 'd', '1', '2',
+ 'p', 'b', 'l', 'e', 'n', 'd', 'v', 'b', '1', '2', '8', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h', 'm',
+ 'i', 'n', 'p', 'o', 's', 'u', 'w', '1', '2', '8', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 't', 'e', 's',
+ 't', 'c', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 't', 'e', 's', 't', 'n', 'z', 'c', '1',
+ '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'p', 't', 'e', 's', 't', 'z', '1', '2', '8', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'o',
+ 'u', 'n', 'd', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'r', 'o', 'u', 'n', 'd', 'p', 's', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'r',
+ 'o', 'u', 'n', 'd', 's', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
+ 'n', '_', 'i', 'a', '3', '2', '_', 'r', 'o', 'u', 'n', 'd', 's', 's', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'c', 'r', 'c', '3', '2', 'h', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'r', 'c', '3', '2', 's', 'i',
+ '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
+ '_', 'c', 'r', 'c', '3', '2', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'c', 'r', 'c', '3', '2', 'd',
+ 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 'c', 'm', 'p', 'e', 's', 't', 'r', 'i', '1', '2', '8', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 'c', 'm', 'p', 'e', 's', 't', 'r', 'i', 'a', '1', '2', '8', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
+ 'c', 'm', 'p', 'e', 's', 't', 'r', 'i', 'c', '1', '2', '8', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c',
+ 'm', 'p', 'e', 's', 't', 'r', 'i', 'o', '1', '2', '8', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'm',
+ 'p', 'e', 's', 't', 'r', 'i', 's', '1', '2', '8', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'm', 'p',
+ 'e', 's', 't', 'r', 'i', 'z', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'm', 'p', 'e',
+ 's', 't', 'r', 'm', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'm', 'p', 'i', 's', 't',
+ 'r', 'i', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 'c', 'm', 'p', 'i', 's', 't', 'r', 'i',
+ 'a', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 'c', 'm', 'p', 'i', 's', 't', 'r', 'i', 'c',
+ '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'c', 'm', 'p', 'i', 's', 't', 'r', 'i', 'o', '1',
+ '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'p', 'c', 'm', 'p', 'i', 's', 't', 'r', 'i', 's', '1', '2',
'8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'p', 'h', 's', 'u', 'b', 's', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h', 's', 'u', 'b',
- 's', 'w', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
- '_', 'i', 'a', '3', '2', '_', 'p', 'h', 's', 'u', 'b', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h',
- 's', 'u', 'b', 'w', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'a', 'd', 'd', 'u', 'b',
- 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 'm', 'a', 'd', 'd', 'u', 'b', 's', 'w', '1', '2', '8',
+ '2', '_', 'p', 'c', 'm', 'p', 'i', 's', 't', 'r', 'i', 'z', '1', '2', '8',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 'm', 'u', 'l', 'h', 'r', 's', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'u', 'l', 'h',
- 'r', 's', 'w', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'h', 'u', 'f', 'b', '\000', '_',
+ '_', 'p', 'c', 'm', 'p', 'i', 's', 't', 'r', 'm', '1', '2', '8', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'e',
+ 'x', 't', 'r', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'e', 'x', 't', 'r', 'q', 'i', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'i', 'n', 's',
+ 'e', 'r', 't', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'i', 'n', 's', 'e', 'r', 't', 'q', 'i', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p',
- 's', 'h', 'u', 'f', 'b', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'i', 'g', 'n', 'b',
+ 'a', 'b', 's', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 'a', 'b', 's', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'a', 'b', 's',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 'h', 'a', 'd', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h', 'a', 'd', 'd', 'd',
+ '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 'h', 'a', 'd', 'd', 's', 'w', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h', 'a',
+ 'd', 'd', 's', 'w', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h', 'a', 'd', 'd', 'w', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'p', 'h', 'a', 'd', 'd', 'w', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h', 's', 'u', 'b',
+ 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 'h', 's', 'u', 'b', 'd', '1', '2', '8', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h', 's',
+ 'u', 'b', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 'h', 's', 'u', 'b', 's', 'w', '1', '2', '8',
'\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'p', 's', 'i', 'g', 'n', 'b', '1', '2', '8', '\000', '_', '_', 'b', 'u',
+ '_', 'p', 'h', 's', 'u', 'b', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'h', 's', 'u', 'b', 'w', '1',
+ '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'p', 'm', 'a', 'd', 'd', 'u', 'b', 's', 'w', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm',
+ 'a', 'd', 'd', 'u', 'b', 's', 'w', '1', '2', '8', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 'm', 'u', 'l',
+ 'h', 'r', 's', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'p', 'm', 'u', 'l', 'h', 'r', 's', 'w', '1', '2',
+ '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'p', 's', 'h', 'u', 'f', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'h', 'u', 'f', 'b',
+ '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'p', 's', 'i', 'g', 'n', 'b', '\000', '_', '_', 'b', 'u',
'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'i', 'g',
- 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'p', 's', 'i', 'g', 'n', 'd', '1', '2', '8', '\000', '_', '_',
+ 'n', 'b', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'p', 's', 'i', 'g', 'n', 'd', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's',
- 'i', 'g', 'n', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'p', 's', 'i', 'g', 'n', 'w', '1', '2', '8', '\000',
+ 'i', 'g', 'n', 'd', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'p', 's', 'i', 'g', 'n', 'w', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'b', 'e', 'x', 't', 'r', 'i', '_', 'u', '3', '2', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'e', 'x', 't',
- 'r', 'i', '_', 'u', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 't', 'p', 'a', 'u', 's', 'e', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'u',
- 'm', 'o', 'n', 'i', 't', 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'u', 'm', 'w', 'a', 'i', 't', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 'c', 'v', 't', 'p', 'h', '2', 'p', 's', '\000', '_', '_', 'b', 'u', 'i',
+ 'p', 's', 'i', 'g', 'n', 'w', '1', '2', '8', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'b', 'e', 'x', 't', 'r',
+ 'i', '_', 'u', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'b', 'e', 'x', 't', 'r', 'i', '_', 'u', '6',
+ '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 't', 'p', 'a', 'u', 's', 'e', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'u', 'm', 'o', 'n', 'i', 't',
+ 'o', 'r', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'u', 'm', 'w', 'a', 'i', 't', '\000', '_', '_', 'b', 'u', 'i',
'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 'p',
- 'h', '2', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 'p', 's', '2',
- 'p', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'v', 'c', 'v', 't', 'p', 's', '2', 'p', 'h', '2', '5', '6',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'v', 'g', 'f', '2', 'p', '8', 'a', 'f', 'f', 'i', 'n', 'e', 'i', 'n',
- 'v', 'q', 'b', '_', 'v', '1', '6', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'g', 'f', '2', 'p',
- '8', 'a', 'f', 'f', 'i', 'n', 'e', 'i', 'n', 'v', 'q', 'b', '_', 'v', '3',
- '2', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'v', 'g', 'f', '2', 'p', '8', 'a', 'f', 'f', 'i', 'n',
- 'e', 'i', 'n', 'v', 'q', 'b', '_', 'v', '6', '4', 'q', 'i', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'g',
- 'f', '2', 'p', '8', 'a', 'f', 'f', 'i', 'n', 'e', 'q', 'b', '_', 'v', '1',
- '6', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'v', 'g', 'f', '2', 'p', '8', 'a', 'f', 'f', 'i', 'n',
- 'e', 'q', 'b', '_', 'v', '3', '2', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'g', 'f', '2', 'p',
- '8', 'a', 'f', 'f', 'i', 'n', 'e', 'q', 'b', '_', 'v', '6', '4', 'q', 'i',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'v', 'g', 'f', '2', 'p', '8', 'm', 'u', 'l', 'b', '_', 'v', '1', '6',
- 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'v', 'g', 'f', '2', 'p', '8', 'm', 'u', 'l', 'b', '_', 'v',
+ 'h', '2', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'v', 'c', 'v', 't', 'p', 'h', '2', 'p', 's', '2',
+ '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'v', 'c', 'v', 't', 'p', 's', '2', 'p', 'h', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'c',
+ 'v', 't', 'p', 's', '2', 'p', 'h', '2', '5', '6', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'g', 'f', '2',
+ 'p', '8', 'a', 'f', 'f', 'i', 'n', 'e', 'i', 'n', 'v', 'q', 'b', '_', 'v',
+ '1', '6', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'v', 'g', 'f', '2', 'p', '8', 'a', 'f', 'f', 'i',
+ 'n', 'e', 'i', 'n', 'v', 'q', 'b', '_', 'v', '3', '2', 'q', 'i', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
+ 'g', 'f', '2', 'p', '8', 'a', 'f', 'f', 'i', 'n', 'e', 'i', 'n', 'v', 'q',
+ 'b', '_', 'v', '6', '4', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'g', 'f', '2', 'p', '8', 'a',
+ 'f', 'f', 'i', 'n', 'e', 'q', 'b', '_', 'v', '1', '6', 'q', 'i', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
+ 'g', 'f', '2', 'p', '8', 'a', 'f', 'f', 'i', 'n', 'e', 'q', 'b', '_', 'v',
'3', '2', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'v', 'g', 'f', '2', 'p', '8', 'm', 'u', 'l', 'b',
- '_', 'v', '6', '4', 'q', 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'w', 'b', 'i', 'n', 'v', 'd', '\000', '_',
+ 'i', 'a', '3', '2', '_', 'v', 'g', 'f', '2', 'p', '8', 'a', 'f', 'f', 'i',
+ 'n', 'e', 'q', 'b', '_', 'v', '6', '4', 'q', 'i', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'g', 'f', '2',
+ 'p', '8', 'm', 'u', 'l', 'b', '_', 'v', '1', '6', 'q', 'i', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'g',
+ 'f', '2', 'p', '8', 'm', 'u', 'l', 'b', '_', 'v', '3', '2', 'q', 'i', '\000',
+ '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
+ 'v', 'g', 'f', '2', 'p', '8', 'm', 'u', 'l', 'b', '_', 'v', '6', '4', 'q',
+ 'i', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'w', 'b', 'i', 'n', 'v', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'w', 'b', 'n', 'o', 'i', 'n',
+ 'v', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'w', 'r', 'f', 's', 'b', 'a', 's', 'e', '3', '2', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'w',
- 'b', 'n', 'o', 'i', 'n', 'v', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'w', 'r', 'f', 's', 'b', 'a', 's',
- 'e', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'w', 'r', 'f', 's', 'b', 'a', 's', 'e', '6', '4', '\000',
+ 'r', 'f', 's', 'b', 'a', 's', 'e', '6', '4', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'w', 'r', 'g', 's', 'b',
+ 'a', 's', 'e', '3', '2', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'w', 'r', 'g', 's', 'b', 'a', 's', 'e', '6',
+ '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'w', 'r', 'p', 'k', 'r', 'u', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'w', 'r', 's', 's', 'd', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'w', 'r', 'g', 's', 'b', 'a', 's', 'e', '3', '2', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'w', 'r', 'g', 's',
- 'b', 'a', 's', 'e', '6', '4', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'w', 'r', 'p', 'k', 'r', 'u', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'w',
- 'r', 's', 's', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'w', 'r', 's', 's', 'q', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'w', 'r', 'u', 's',
- 's', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'w', 'r', 'u', 's', 's', 'q', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'x', 'a', 'b', 'o', 'r',
- 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'x', 'b', 'e', 'g', 'i', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'x', 'e', 'n', 'd', '\000', '_',
+ 'w', 'r', 's', 's', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'w', 'r', 'u', 's', 's', 'd', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'w', 'r',
+ 'u', 's', 's', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'x', 'a', 'b', 'o', 'r', 't', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'x', 'b', 'e',
+ 'g', 'i', 'n', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'x', 'e', 'n', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'f', 'r', 'c', 'z', 'p',
+ 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'v', 'f', 'r', 'c', 'z', 'p', 'd', '2', '5', '6', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'f',
+ 'r', 'c', 'z', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'v', 'f', 'r', 'c', 'z', 'p', 's', '2', '5',
+ '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'v', 'f', 'r', 'c', 'z', 's', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'f', 'r', 'c', 'z',
+ 's', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', 'l', '2', 'p', 'd', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
- 'f', 'r', 'c', 'z', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'f', 'r', 'c', 'z', 'p', 'd', '2',
- '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'v', 'f', 'r', 'c', 'z', 'p', 's', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'f', 'r', 'c',
- 'z', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'f', 'r', 'c', 'z', 's', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 'f', 'r', 'c', 'z', 's', 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'c', 'o', 'm', 'b', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 'p', 'c', 'o', 'm', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'c', 'o', 'm', 'q', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
- 'p', 'c', 'o', 'm', 'u', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'c', 'o', 'm', 'u', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 'p', 'c', 'o', 'm', 'u', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'c', 'o', 'm', 'u', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'v', 'p', 'c', 'o', 'm', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', 'l',
- '2', 'p', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', 'l', '2', 'p', 'd', '2',
- '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i', 'l', '2', 'p', 's', '\000', '_',
- '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
- 'p', 'e', 'r', 'm', 'i', 'l', '2', 'p', 's', '2', '5', '6', '\000', '_', '_',
+ 'p', 'e', 'r', 'm', 'i', 'l', '2', 'p', 'd', '2', '5', '6', '\000', '_', '_',
'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p',
- 'h', 'a', 'd', 'd', 'b', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'h', 'a', 'd', 'd', 'b', 'q',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'v', 'p', 'h', 'a', 'd', 'd', 'b', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'h', 'a', 'd',
- 'd', 'd', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'v', 'p', 'h', 'a', 'd', 'd', 'u', 'b', 'd', '\000', '_',
+ 'e', 'r', 'm', 'i', 'l', '2', 'p', 's', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'e', 'r', 'm', 'i',
+ 'l', '2', 'p', 's', '2', '5', '6', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'h', 'a', 'd', 'd', 'b',
+ 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'v', 'p', 'h', 'a', 'd', 'd', 'b', 'q', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'h', 'a',
+ 'd', 'd', 'b', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'v', 'p', 'h', 'a', 'd', 'd', 'd', 'q', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
- 'p', 'h', 'a', 'd', 'd', 'u', 'b', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 'p', 'h', 'a', 'd', 'd', 'u', 'b', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'h', 'a', 'd', 'd',
- 'u', 'b', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'v', 'p', 'h', 'a', 'd', 'd', 'u', 'd', 'q', '\000', '_',
+ 'u', 'b', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'v', 'p', 'h', 'a', 'd', 'd', 'u', 'b', 'w', '\000', '_',
'_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
- 'p', 'h', 'a', 'd', 'd', 'u', 'w', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
+ 'p', 'h', 'a', 'd', 'd', 'u', 'd', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l',
't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'h', 'a', 'd', 'd',
- 'u', 'w', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'v', 'p', 'h', 'a', 'd', 'd', 'w', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p',
- 'h', 'a', 'd', 'd', 'w', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'h', 's', 'u', 'b', 'b', 'w',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'v', 'p', 'h', 's', 'u', 'b', 'd', 'q', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'h', 's', 'u',
- 'b', 'w', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'c', 's', 'd', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p',
- 'm', 'a', 'c', 's', 'd', 'q', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'c', 's', 'd',
- 'q', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'v', 'p', 'm', 'a', 'c', 's', 's', 'd', 'd', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p',
- 'm', 'a', 'c', 's', 's', 'd', 'q', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'c', 's',
- 's', 'd', 'q', 'l', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
- 'i', 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'c', 's', 's', 'w', 'd', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 'p', 'm', 'a', 'c', 's', 's', 'w', 'w', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'c',
- 's', 'w', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'c', 's', 'w', 'w', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p',
- 'm', 'a', 'd', 'c', 's', 's', 'w', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'd', 'c',
- 's', 'w', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
- 'a', '3', '2', '_', 'v', 'p', 'p', 'e', 'r', 'm', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'r', 'o',
- 't', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'v', 'p', 'r', 'o', 't', 'b', 'i', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'r', 'o',
- 't', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'v', 'p', 'r', 'o', 't', 'd', 'i', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'r', 'o',
- 't', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'v', 'p', 'r', 'o', 't', 'q', 'i', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'r', 'o',
- 't', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'v', 'p', 'r', 'o', 't', 'w', 'i', '\000', '_', '_', 'b', 'u',
- 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h',
- 'a', 'b', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
- '3', '2', '_', 'v', 'p', 's', 'h', 'a', 'd', '\000', '_', '_', 'b', 'u', 'i',
- 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'a',
+ 'u', 'w', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'v', 'p', 'h', 'a', 'd', 'd', 'u', 'w', 'q', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
+ 'p', 'h', 'a', 'd', 'd', 'w', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'h', 'a', 'd', 'd', 'w',
'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
- '2', '_', 'v', 'p', 's', 'h', 'a', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l',
- 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'l', 'b',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2',
- '_', 'v', 'p', 's', 'h', 'l', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
- 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'l', 'q', '\000',
+ '2', '_', 'v', 'p', 'h', 's', 'u', 'b', 'b', 'w', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'h', 's',
+ 'u', 'b', 'd', 'q', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'v', 'p', 'h', 's', 'u', 'b', 'w', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
+ 'p', 'm', 'a', 'c', 's', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'c', 's', 'd',
+ 'q', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'v', 'p', 'm', 'a', 'c', 's', 'd', 'q', 'l', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p',
+ 'm', 'a', 'c', 's', 's', 'd', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'c', 's', 's',
+ 'd', 'q', 'h', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'c', 's', 's', 'd', 'q', 'l', '\000',
'_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_',
- 'v', 'p', 's', 'h', 'l', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i',
- 'n', '_', 'i', 'a', '3', '2', '_', 'x', 't', 'e', 's', 't', '\000', '_', '_',
- 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'b', 'i', 't', 'r', 'e', 'v', '\000',
- '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'g', 'e', 't', 'i', 'd',
- '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'g', 'e', 't', 'p',
- 's', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 's', 'e', 't',
- 'p', 's', '\000',
+ 'v', 'p', 'm', 'a', 'c', 's', 's', 'w', 'd', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'c',
+ 's', 's', 'w', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'c', 's', 'w', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
+ 'p', 'm', 'a', 'c', 's', 'w', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'd', 'c', 's',
+ 's', 'w', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'v', 'p', 'm', 'a', 'd', 'c', 's', 'w', 'd', '\000', '_',
+ '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v',
+ 'p', 'p', 'e', 'r', 'm', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n',
+ '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'a', 'b', '\000', '_', '_',
+ 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p',
+ 's', 'h', 'a', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_',
+ 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'a', 'q', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's',
+ 'h', 'a', 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i',
+ 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'l', 'b', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h',
+ 'l', 'd', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a',
+ '3', '2', '_', 'v', 'p', 's', 'h', 'l', 'q', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'i', 'a', '3', '2', '_', 'v', 'p', 's', 'h', 'l',
+ 'w', '\000', '_', '_', 'b', 'u', 'i', 'l', 't', 'i', 'n', '_', 'i', 'a', '3',
+ '2', '_', 'x', 't', 'e', 's', 't', '\000', '_', '_', 'b', 'u', 'i', 'l', 't',
+ 'i', 'n', '_', 'b', 'i', 't', 'r', 'e', 'v', '\000', '_', '_', 'b', 'u', 'i',
+ 'l', 't', 'i', 'n', '_', 'g', 'e', 't', 'i', 'd', '\000', '_', '_', 'b', 'u',
+ 'i', 'l', 't', 'i', 'n', '_', 'g', 'e', 't', 'p', 's', '\000', '_', '_', 'b',
+ 'u', 'i', 'l', 't', 'i', 'n', '_', 's', 'e', 't', 'p', 's', '\000',
};
struct BuiltinEntry {
@@ -24946,49 +24784,51 @@
{Intrinsic::amdgcn_implicitarg_ptr, 875}, // __builtin_amdgcn_implicitarg_ptr
{Intrinsic::amdgcn_interp_mov, 908}, // __builtin_amdgcn_interp_mov
{Intrinsic::amdgcn_interp_p1, 936}, // __builtin_amdgcn_interp_p1
- {Intrinsic::amdgcn_interp_p2, 963}, // __builtin_amdgcn_interp_p2
- {Intrinsic::amdgcn_kernarg_segment_ptr, 990}, // __builtin_amdgcn_kernarg_segment_ptr
- {Intrinsic::amdgcn_lerp, 1027}, // __builtin_amdgcn_lerp
- {Intrinsic::amdgcn_mbcnt_hi, 1049}, // __builtin_amdgcn_mbcnt_hi
- {Intrinsic::amdgcn_mbcnt_lo, 1075}, // __builtin_amdgcn_mbcnt_lo
- {Intrinsic::amdgcn_mqsad_pk_u16_u8, 1101}, // __builtin_amdgcn_mqsad_pk_u16_u8
- {Intrinsic::amdgcn_mqsad_u32_u8, 1134}, // __builtin_amdgcn_mqsad_u32_u8
- {Intrinsic::amdgcn_msad_u8, 1164}, // __builtin_amdgcn_msad_u8
- {Intrinsic::amdgcn_qsad_pk_u16_u8, 1189}, // __builtin_amdgcn_qsad_pk_u16_u8
- {Intrinsic::amdgcn_queue_ptr, 1221}, // __builtin_amdgcn_queue_ptr
- {Intrinsic::amdgcn_rcp_legacy, 1248}, // __builtin_amdgcn_rcp_legacy
- {Intrinsic::amdgcn_readfirstlane, 1276}, // __builtin_amdgcn_readfirstlane
- {Intrinsic::amdgcn_readlane, 1307}, // __builtin_amdgcn_readlane
- {Intrinsic::amdgcn_rsq_legacy, 1333}, // __builtin_amdgcn_rsq_legacy
- {Intrinsic::amdgcn_s_barrier, 1361}, // __builtin_amdgcn_s_barrier
- {Intrinsic::amdgcn_s_dcache_inv, 1388}, // __builtin_amdgcn_s_dcache_inv
- {Intrinsic::amdgcn_s_dcache_inv_vol, 1418}, // __builtin_amdgcn_s_dcache_inv_vol
- {Intrinsic::amdgcn_s_dcache_wb, 1452}, // __builtin_amdgcn_s_dcache_wb
- {Intrinsic::amdgcn_s_dcache_wb_vol, 1481}, // __builtin_amdgcn_s_dcache_wb_vol
- {Intrinsic::amdgcn_s_decperflevel, 1514}, // __builtin_amdgcn_s_decperflevel
- {Intrinsic::amdgcn_s_getpc, 1546}, // __builtin_amdgcn_s_getpc
- {Intrinsic::amdgcn_s_getreg, 1571}, // __builtin_amdgcn_s_getreg
- {Intrinsic::amdgcn_s_incperflevel, 1597}, // __builtin_amdgcn_s_incperflevel
- {Intrinsic::amdgcn_s_memrealtime, 1629}, // __builtin_amdgcn_s_memrealtime
- {Intrinsic::amdgcn_s_memtime, 1660}, // __builtin_amdgcn_s_memtime
- {Intrinsic::amdgcn_s_sendmsg, 1687}, // __builtin_amdgcn_s_sendmsg
- {Intrinsic::amdgcn_s_sendmsghalt, 1714}, // __builtin_amdgcn_s_sendmsghalt
- {Intrinsic::amdgcn_s_sleep, 1745}, // __builtin_amdgcn_s_sleep
- {Intrinsic::amdgcn_s_waitcnt, 1770}, // __builtin_amdgcn_s_waitcnt
- {Intrinsic::amdgcn_sad_hi_u8, 1797}, // __builtin_amdgcn_sad_hi_u8
- {Intrinsic::amdgcn_sad_u16, 1824}, // __builtin_amdgcn_sad_u16
- {Intrinsic::amdgcn_sad_u8, 1849}, // __builtin_amdgcn_sad_u8
- {Intrinsic::amdgcn_sdot2, 1873}, // __builtin_amdgcn_sdot2
- {Intrinsic::amdgcn_sdot4, 1896}, // __builtin_amdgcn_sdot4
- {Intrinsic::amdgcn_sdot8, 1919}, // __builtin_amdgcn_sdot8
- {Intrinsic::amdgcn_udot2, 1942}, // __builtin_amdgcn_udot2
- {Intrinsic::amdgcn_udot4, 1965}, // __builtin_amdgcn_udot4
- {Intrinsic::amdgcn_udot8, 1988}, // __builtin_amdgcn_udot8
- {Intrinsic::amdgcn_wave_barrier, 2011}, // __builtin_amdgcn_wave_barrier
- {Intrinsic::amdgcn_workgroup_id_x, 2041}, // __builtin_amdgcn_workgroup_id_x
- {Intrinsic::amdgcn_workgroup_id_y, 2073}, // __builtin_amdgcn_workgroup_id_y
- {Intrinsic::amdgcn_workgroup_id_z, 2105}, // __builtin_amdgcn_workgroup_id_z
- {Intrinsic::amdgcn_writelane, 2137}, // __builtin_amdgcn_writelane
+ {Intrinsic::amdgcn_interp_p1_f16, 963}, // __builtin_amdgcn_interp_p1_f16
+ {Intrinsic::amdgcn_interp_p2, 994}, // __builtin_amdgcn_interp_p2
+ {Intrinsic::amdgcn_interp_p2_f16, 1021}, // __builtin_amdgcn_interp_p2_f16
+ {Intrinsic::amdgcn_kernarg_segment_ptr, 1052}, // __builtin_amdgcn_kernarg_segment_ptr
+ {Intrinsic::amdgcn_lerp, 1089}, // __builtin_amdgcn_lerp
+ {Intrinsic::amdgcn_mbcnt_hi, 1111}, // __builtin_amdgcn_mbcnt_hi
+ {Intrinsic::amdgcn_mbcnt_lo, 1137}, // __builtin_amdgcn_mbcnt_lo
+ {Intrinsic::amdgcn_mqsad_pk_u16_u8, 1163}, // __builtin_amdgcn_mqsad_pk_u16_u8
+ {Intrinsic::amdgcn_mqsad_u32_u8, 1196}, // __builtin_amdgcn_mqsad_u32_u8
+ {Intrinsic::amdgcn_msad_u8, 1226}, // __builtin_amdgcn_msad_u8
+ {Intrinsic::amdgcn_qsad_pk_u16_u8, 1251}, // __builtin_amdgcn_qsad_pk_u16_u8
+ {Intrinsic::amdgcn_queue_ptr, 1283}, // __builtin_amdgcn_queue_ptr
+ {Intrinsic::amdgcn_rcp_legacy, 1310}, // __builtin_amdgcn_rcp_legacy
+ {Intrinsic::amdgcn_readfirstlane, 1338}, // __builtin_amdgcn_readfirstlane
+ {Intrinsic::amdgcn_readlane, 1369}, // __builtin_amdgcn_readlane
+ {Intrinsic::amdgcn_rsq_legacy, 1395}, // __builtin_amdgcn_rsq_legacy
+ {Intrinsic::amdgcn_s_barrier, 1423}, // __builtin_amdgcn_s_barrier
+ {Intrinsic::amdgcn_s_dcache_inv, 1450}, // __builtin_amdgcn_s_dcache_inv
+ {Intrinsic::amdgcn_s_dcache_inv_vol, 1480}, // __builtin_amdgcn_s_dcache_inv_vol
+ {Intrinsic::amdgcn_s_dcache_wb, 1514}, // __builtin_amdgcn_s_dcache_wb
+ {Intrinsic::amdgcn_s_dcache_wb_vol, 1543}, // __builtin_amdgcn_s_dcache_wb_vol
+ {Intrinsic::amdgcn_s_decperflevel, 1576}, // __builtin_amdgcn_s_decperflevel
+ {Intrinsic::amdgcn_s_getpc, 1608}, // __builtin_amdgcn_s_getpc
+ {Intrinsic::amdgcn_s_getreg, 1633}, // __builtin_amdgcn_s_getreg
+ {Intrinsic::amdgcn_s_incperflevel, 1659}, // __builtin_amdgcn_s_incperflevel
+ {Intrinsic::amdgcn_s_memrealtime, 1691}, // __builtin_amdgcn_s_memrealtime
+ {Intrinsic::amdgcn_s_memtime, 1722}, // __builtin_amdgcn_s_memtime
+ {Intrinsic::amdgcn_s_sendmsg, 1749}, // __builtin_amdgcn_s_sendmsg
+ {Intrinsic::amdgcn_s_sendmsghalt, 1776}, // __builtin_amdgcn_s_sendmsghalt
+ {Intrinsic::amdgcn_s_sleep, 1807}, // __builtin_amdgcn_s_sleep
+ {Intrinsic::amdgcn_s_waitcnt, 1832}, // __builtin_amdgcn_s_waitcnt
+ {Intrinsic::amdgcn_sad_hi_u8, 1859}, // __builtin_amdgcn_sad_hi_u8
+ {Intrinsic::amdgcn_sad_u16, 1886}, // __builtin_amdgcn_sad_u16
+ {Intrinsic::amdgcn_sad_u8, 1911}, // __builtin_amdgcn_sad_u8
+ {Intrinsic::amdgcn_sdot2, 1935}, // __builtin_amdgcn_sdot2
+ {Intrinsic::amdgcn_sdot4, 1958}, // __builtin_amdgcn_sdot4
+ {Intrinsic::amdgcn_sdot8, 1981}, // __builtin_amdgcn_sdot8
+ {Intrinsic::amdgcn_udot2, 2004}, // __builtin_amdgcn_udot2
+ {Intrinsic::amdgcn_udot4, 2027}, // __builtin_amdgcn_udot4
+ {Intrinsic::amdgcn_udot8, 2050}, // __builtin_amdgcn_udot8
+ {Intrinsic::amdgcn_wave_barrier, 2073}, // __builtin_amdgcn_wave_barrier
+ {Intrinsic::amdgcn_workgroup_id_x, 2103}, // __builtin_amdgcn_workgroup_id_x
+ {Intrinsic::amdgcn_workgroup_id_y, 2135}, // __builtin_amdgcn_workgroup_id_y
+ {Intrinsic::amdgcn_workgroup_id_z, 2167}, // __builtin_amdgcn_workgroup_id_z
+ {Intrinsic::amdgcn_writelane, 2199}, // __builtin_amdgcn_writelane
};
auto I = std::lower_bound(std::begin(amdgcnNames),
std::end(amdgcnNames),
@@ -24999,98 +24839,98 @@
}
if (TargetPrefix == "arm") {
static const BuiltinEntry armNames[] = {
- {Intrinsic::arm_cdp, 2164}, // __builtin_arm_cdp
- {Intrinsic::arm_cdp2, 2182}, // __builtin_arm_cdp2
+ {Intrinsic::arm_cdp, 2226}, // __builtin_arm_cdp
+ {Intrinsic::arm_cdp2, 2244}, // __builtin_arm_cdp2
{Intrinsic::arm_dmb, 224}, // __builtin_arm_dmb
{Intrinsic::arm_dsb, 242}, // __builtin_arm_dsb
- {Intrinsic::arm_get_fpscr, 2201}, // __builtin_arm_get_fpscr
+ {Intrinsic::arm_get_fpscr, 2263}, // __builtin_arm_get_fpscr
{Intrinsic::arm_isb, 260}, // __builtin_arm_isb
- {Intrinsic::arm_ldc, 2225}, // __builtin_arm_ldc
- {Intrinsic::arm_ldc2, 2243}, // __builtin_arm_ldc2
- {Intrinsic::arm_ldc2l, 2262}, // __builtin_arm_ldc2l
- {Intrinsic::arm_ldcl, 2282}, // __builtin_arm_ldcl
- {Intrinsic::arm_mcr, 2301}, // __builtin_arm_mcr
- {Intrinsic::arm_mcr2, 2319}, // __builtin_arm_mcr2
- {Intrinsic::arm_mrc, 2338}, // __builtin_arm_mrc
- {Intrinsic::arm_mrc2, 2356}, // __builtin_arm_mrc2
- {Intrinsic::arm_qadd, 2375}, // __builtin_arm_qadd
- {Intrinsic::arm_qadd16, 2394}, // __builtin_arm_qadd16
- {Intrinsic::arm_qadd8, 2415}, // __builtin_arm_qadd8
- {Intrinsic::arm_qasx, 2435}, // __builtin_arm_qasx
- {Intrinsic::arm_qsax, 2454}, // __builtin_arm_qsax
- {Intrinsic::arm_qsub, 2473}, // __builtin_arm_qsub
- {Intrinsic::arm_qsub16, 2492}, // __builtin_arm_qsub16
- {Intrinsic::arm_qsub8, 2513}, // __builtin_arm_qsub8
- {Intrinsic::arm_sadd16, 2533}, // __builtin_arm_sadd16
- {Intrinsic::arm_sadd8, 2554}, // __builtin_arm_sadd8
- {Intrinsic::arm_sasx, 2574}, // __builtin_arm_sasx
- {Intrinsic::arm_sel, 2593}, // __builtin_arm_sel
- {Intrinsic::arm_set_fpscr, 2611}, // __builtin_arm_set_fpscr
- {Intrinsic::arm_shadd16, 2635}, // __builtin_arm_shadd16
- {Intrinsic::arm_shadd8, 2657}, // __builtin_arm_shadd8
- {Intrinsic::arm_shasx, 2678}, // __builtin_arm_shasx
- {Intrinsic::arm_shsax, 2698}, // __builtin_arm_shsax
- {Intrinsic::arm_shsub16, 2718}, // __builtin_arm_shsub16
- {Intrinsic::arm_shsub8, 2740}, // __builtin_arm_shsub8
- {Intrinsic::arm_smlabb, 2761}, // __builtin_arm_smlabb
- {Intrinsic::arm_smlabt, 2782}, // __builtin_arm_smlabt
- {Intrinsic::arm_smlad, 2803}, // __builtin_arm_smlad
- {Intrinsic::arm_smladx, 2823}, // __builtin_arm_smladx
- {Intrinsic::arm_smlald, 2844}, // __builtin_arm_smlald
- {Intrinsic::arm_smlaldx, 2865}, // __builtin_arm_smlaldx
- {Intrinsic::arm_smlatb, 2887}, // __builtin_arm_smlatb
- {Intrinsic::arm_smlatt, 2908}, // __builtin_arm_smlatt
- {Intrinsic::arm_smlawb, 2929}, // __builtin_arm_smlawb
- {Intrinsic::arm_smlawt, 2950}, // __builtin_arm_smlawt
- {Intrinsic::arm_smlsd, 2971}, // __builtin_arm_smlsd
- {Intrinsic::arm_smlsdx, 2991}, // __builtin_arm_smlsdx
- {Intrinsic::arm_smlsld, 3012}, // __builtin_arm_smlsld
- {Intrinsic::arm_smlsldx, 3033}, // __builtin_arm_smlsldx
- {Intrinsic::arm_smuad, 3055}, // __builtin_arm_smuad
- {Intrinsic::arm_smuadx, 3075}, // __builtin_arm_smuadx
- {Intrinsic::arm_smulbb, 3096}, // __builtin_arm_smulbb
- {Intrinsic::arm_smulbt, 3117}, // __builtin_arm_smulbt
- {Intrinsic::arm_smultb, 3138}, // __builtin_arm_smultb
- {Intrinsic::arm_smultt, 3159}, // __builtin_arm_smultt
- {Intrinsic::arm_smulwb, 3180}, // __builtin_arm_smulwb
- {Intrinsic::arm_smulwt, 3201}, // __builtin_arm_smulwt
- {Intrinsic::arm_smusd, 3222}, // __builtin_arm_smusd
- {Intrinsic::arm_smusdx, 3242}, // __builtin_arm_smusdx
- {Intrinsic::arm_ssat, 3263}, // __builtin_arm_ssat
- {Intrinsic::arm_ssat16, 3282}, // __builtin_arm_ssat16
- {Intrinsic::arm_ssax, 3303}, // __builtin_arm_ssax
- {Intrinsic::arm_ssub16, 3322}, // __builtin_arm_ssub16
- {Intrinsic::arm_ssub8, 3343}, // __builtin_arm_ssub8
- {Intrinsic::arm_stc, 3363}, // __builtin_arm_stc
- {Intrinsic::arm_stc2, 3381}, // __builtin_arm_stc2
- {Intrinsic::arm_stc2l, 3400}, // __builtin_arm_stc2l
- {Intrinsic::arm_stcl, 3420}, // __builtin_arm_stcl
- {Intrinsic::arm_sxtab16, 3439}, // __builtin_arm_sxtab16
- {Intrinsic::arm_sxtb16, 3461}, // __builtin_arm_sxtb16
- {Intrinsic::arm_uadd16, 3482}, // __builtin_arm_uadd16
- {Intrinsic::arm_uadd8, 3503}, // __builtin_arm_uadd8
- {Intrinsic::arm_uasx, 3523}, // __builtin_arm_uasx
- {Intrinsic::arm_uhadd16, 3542}, // __builtin_arm_uhadd16
- {Intrinsic::arm_uhadd8, 3564}, // __builtin_arm_uhadd8
- {Intrinsic::arm_uhasx, 3585}, // __builtin_arm_uhasx
- {Intrinsic::arm_uhsax, 3605}, // __builtin_arm_uhsax
- {Intrinsic::arm_uhsub16, 3625}, // __builtin_arm_uhsub16
- {Intrinsic::arm_uhsub8, 3647}, // __builtin_arm_uhsub8
- {Intrinsic::arm_uqadd16, 3668}, // __builtin_arm_uqadd16
- {Intrinsic::arm_uqadd8, 3690}, // __builtin_arm_uqadd8
- {Intrinsic::arm_uqasx, 3711}, // __builtin_arm_uqasx
- {Intrinsic::arm_uqsax, 3731}, // __builtin_arm_uqsax
- {Intrinsic::arm_uqsub16, 3751}, // __builtin_arm_uqsub16
- {Intrinsic::arm_uqsub8, 3773}, // __builtin_arm_uqsub8
- {Intrinsic::arm_usad8, 3794}, // __builtin_arm_usad8
- {Intrinsic::arm_usada8, 3814}, // __builtin_arm_usada8
- {Intrinsic::arm_usat, 3835}, // __builtin_arm_usat
- {Intrinsic::arm_usat16, 3854}, // __builtin_arm_usat16
- {Intrinsic::arm_usax, 3875}, // __builtin_arm_usax
- {Intrinsic::arm_usub16, 3894}, // __builtin_arm_usub16
- {Intrinsic::arm_usub8, 3915}, // __builtin_arm_usub8
- {Intrinsic::arm_uxtab16, 3935}, // __builtin_arm_uxtab16
- {Intrinsic::arm_uxtb16, 3957}, // __builtin_arm_uxtb16
+ {Intrinsic::arm_ldc, 2287}, // __builtin_arm_ldc
+ {Intrinsic::arm_ldc2, 2305}, // __builtin_arm_ldc2
+ {Intrinsic::arm_ldc2l, 2324}, // __builtin_arm_ldc2l
+ {Intrinsic::arm_ldcl, 2344}, // __builtin_arm_ldcl
+ {Intrinsic::arm_mcr, 2363}, // __builtin_arm_mcr
+ {Intrinsic::arm_mcr2, 2381}, // __builtin_arm_mcr2
+ {Intrinsic::arm_mrc, 2400}, // __builtin_arm_mrc
+ {Intrinsic::arm_mrc2, 2418}, // __builtin_arm_mrc2
+ {Intrinsic::arm_qadd, 2437}, // __builtin_arm_qadd
+ {Intrinsic::arm_qadd16, 2456}, // __builtin_arm_qadd16
+ {Intrinsic::arm_qadd8, 2477}, // __builtin_arm_qadd8
+ {Intrinsic::arm_qasx, 2497}, // __builtin_arm_qasx
+ {Intrinsic::arm_qsax, 2516}, // __builtin_arm_qsax
+ {Intrinsic::arm_qsub, 2535}, // __builtin_arm_qsub
+ {Intrinsic::arm_qsub16, 2554}, // __builtin_arm_qsub16
+ {Intrinsic::arm_qsub8, 2575}, // __builtin_arm_qsub8
+ {Intrinsic::arm_sadd16, 2595}, // __builtin_arm_sadd16
+ {Intrinsic::arm_sadd8, 2616}, // __builtin_arm_sadd8
+ {Intrinsic::arm_sasx, 2636}, // __builtin_arm_sasx
+ {Intrinsic::arm_sel, 2655}, // __builtin_arm_sel
+ {Intrinsic::arm_set_fpscr, 2673}, // __builtin_arm_set_fpscr
+ {Intrinsic::arm_shadd16, 2697}, // __builtin_arm_shadd16
+ {Intrinsic::arm_shadd8, 2719}, // __builtin_arm_shadd8
+ {Intrinsic::arm_shasx, 2740}, // __builtin_arm_shasx
+ {Intrinsic::arm_shsax, 2760}, // __builtin_arm_shsax
+ {Intrinsic::arm_shsub16, 2780}, // __builtin_arm_shsub16
+ {Intrinsic::arm_shsub8, 2802}, // __builtin_arm_shsub8
+ {Intrinsic::arm_smlabb, 2823}, // __builtin_arm_smlabb
+ {Intrinsic::arm_smlabt, 2844}, // __builtin_arm_smlabt
+ {Intrinsic::arm_smlad, 2865}, // __builtin_arm_smlad
+ {Intrinsic::arm_smladx, 2885}, // __builtin_arm_smladx
+ {Intrinsic::arm_smlald, 2906}, // __builtin_arm_smlald
+ {Intrinsic::arm_smlaldx, 2927}, // __builtin_arm_smlaldx
+ {Intrinsic::arm_smlatb, 2949}, // __builtin_arm_smlatb
+ {Intrinsic::arm_smlatt, 2970}, // __builtin_arm_smlatt
+ {Intrinsic::arm_smlawb, 2991}, // __builtin_arm_smlawb
+ {Intrinsic::arm_smlawt, 3012}, // __builtin_arm_smlawt
+ {Intrinsic::arm_smlsd, 3033}, // __builtin_arm_smlsd
+ {Intrinsic::arm_smlsdx, 3053}, // __builtin_arm_smlsdx
+ {Intrinsic::arm_smlsld, 3074}, // __builtin_arm_smlsld
+ {Intrinsic::arm_smlsldx, 3095}, // __builtin_arm_smlsldx
+ {Intrinsic::arm_smuad, 3117}, // __builtin_arm_smuad
+ {Intrinsic::arm_smuadx, 3137}, // __builtin_arm_smuadx
+ {Intrinsic::arm_smulbb, 3158}, // __builtin_arm_smulbb
+ {Intrinsic::arm_smulbt, 3179}, // __builtin_arm_smulbt
+ {Intrinsic::arm_smultb, 3200}, // __builtin_arm_smultb
+ {Intrinsic::arm_smultt, 3221}, // __builtin_arm_smultt
+ {Intrinsic::arm_smulwb, 3242}, // __builtin_arm_smulwb
+ {Intrinsic::arm_smulwt, 3263}, // __builtin_arm_smulwt
+ {Intrinsic::arm_smusd, 3284}, // __builtin_arm_smusd
+ {Intrinsic::arm_smusdx, 3304}, // __builtin_arm_smusdx
+ {Intrinsic::arm_ssat, 3325}, // __builtin_arm_ssat
+ {Intrinsic::arm_ssat16, 3344}, // __builtin_arm_ssat16
+ {Intrinsic::arm_ssax, 3365}, // __builtin_arm_ssax
+ {Intrinsic::arm_ssub16, 3384}, // __builtin_arm_ssub16
+ {Intrinsic::arm_ssub8, 3405}, // __builtin_arm_ssub8
+ {Intrinsic::arm_stc, 3425}, // __builtin_arm_stc
+ {Intrinsic::arm_stc2, 3443}, // __builtin_arm_stc2
+ {Intrinsic::arm_stc2l, 3462}, // __builtin_arm_stc2l
+ {Intrinsic::arm_stcl, 3482}, // __builtin_arm_stcl
+ {Intrinsic::arm_sxtab16, 3501}, // __builtin_arm_sxtab16
+ {Intrinsic::arm_sxtb16, 3523}, // __builtin_arm_sxtb16
+ {Intrinsic::arm_uadd16, 3544}, // __builtin_arm_uadd16
+ {Intrinsic::arm_uadd8, 3565}, // __builtin_arm_uadd8
+ {Intrinsic::arm_uasx, 3585}, // __builtin_arm_uasx
+ {Intrinsic::arm_uhadd16, 3604}, // __builtin_arm_uhadd16
+ {Intrinsic::arm_uhadd8, 3626}, // __builtin_arm_uhadd8
+ {Intrinsic::arm_uhasx, 3647}, // __builtin_arm_uhasx
+ {Intrinsic::arm_uhsax, 3667}, // __builtin_arm_uhsax
+ {Intrinsic::arm_uhsub16, 3687}, // __builtin_arm_uhsub16
+ {Intrinsic::arm_uhsub8, 3709}, // __builtin_arm_uhsub8
+ {Intrinsic::arm_uqadd16, 3730}, // __builtin_arm_uqadd16
+ {Intrinsic::arm_uqadd8, 3752}, // __builtin_arm_uqadd8
+ {Intrinsic::arm_uqasx, 3773}, // __builtin_arm_uqasx
+ {Intrinsic::arm_uqsax, 3793}, // __builtin_arm_uqsax
+ {Intrinsic::arm_uqsub16, 3813}, // __builtin_arm_uqsub16
+ {Intrinsic::arm_uqsub8, 3835}, // __builtin_arm_uqsub8
+ {Intrinsic::arm_usad8, 3856}, // __builtin_arm_usad8
+ {Intrinsic::arm_usada8, 3876}, // __builtin_arm_usada8
+ {Intrinsic::arm_usat, 3897}, // __builtin_arm_usat
+ {Intrinsic::arm_usat16, 3916}, // __builtin_arm_usat16
+ {Intrinsic::arm_usax, 3937}, // __builtin_arm_usax
+ {Intrinsic::arm_usub16, 3956}, // __builtin_arm_usub16
+ {Intrinsic::arm_usub8, 3977}, // __builtin_arm_usub8
+ {Intrinsic::arm_uxtab16, 3997}, // __builtin_arm_uxtab16
+ {Intrinsic::arm_uxtb16, 4019}, // __builtin_arm_uxtb16
};
auto I = std::lower_bound(std::begin(armNames),
std::end(armNames),
@@ -25101,10 +24941,10 @@
}
if (TargetPrefix == "bpf") {
static const BuiltinEntry bpfNames[] = {
- {Intrinsic::bpf_load_byte, 3978}, // __builtin_bpf_load_byte
- {Intrinsic::bpf_load_half, 4002}, // __builtin_bpf_load_half
- {Intrinsic::bpf_load_word, 4026}, // __builtin_bpf_load_word
- {Intrinsic::bpf_pseudo, 4050}, // __builtin_bpf_pseudo
+ {Intrinsic::bpf_load_byte, 4040}, // __builtin_bpf_load_byte
+ {Intrinsic::bpf_load_half, 4064}, // __builtin_bpf_load_half
+ {Intrinsic::bpf_load_word, 4088}, // __builtin_bpf_load_word
+ {Intrinsic::bpf_pseudo, 4112}, // __builtin_bpf_pseudo
};
auto I = std::lower_bound(std::begin(bpfNames),
std::end(bpfNames),
@@ -25115,1686 +24955,1740 @@
}
if (TargetPrefix == "hexagon") {
static const BuiltinEntry hexagonNames[] = {
- {Intrinsic::hexagon_A2_abs, 4071}, // __builtin_HEXAGON_A2_abs
- {Intrinsic::hexagon_A2_absp, 4096}, // __builtin_HEXAGON_A2_absp
- {Intrinsic::hexagon_A2_abssat, 4122}, // __builtin_HEXAGON_A2_abssat
- {Intrinsic::hexagon_A2_add, 4150}, // __builtin_HEXAGON_A2_add
- {Intrinsic::hexagon_A2_addh_h16_hh, 4175}, // __builtin_HEXAGON_A2_addh_h16_hh
- {Intrinsic::hexagon_A2_addh_h16_hl, 4208}, // __builtin_HEXAGON_A2_addh_h16_hl
- {Intrinsic::hexagon_A2_addh_h16_lh, 4241}, // __builtin_HEXAGON_A2_addh_h16_lh
- {Intrinsic::hexagon_A2_addh_h16_ll, 4274}, // __builtin_HEXAGON_A2_addh_h16_ll
- {Intrinsic::hexagon_A2_addh_h16_sat_hh, 4307}, // __builtin_HEXAGON_A2_addh_h16_sat_hh
- {Intrinsic::hexagon_A2_addh_h16_sat_hl, 4344}, // __builtin_HEXAGON_A2_addh_h16_sat_hl
- {Intrinsic::hexagon_A2_addh_h16_sat_lh, 4381}, // __builtin_HEXAGON_A2_addh_h16_sat_lh
- {Intrinsic::hexagon_A2_addh_h16_sat_ll, 4418}, // __builtin_HEXAGON_A2_addh_h16_sat_ll
- {Intrinsic::hexagon_A2_addh_l16_hl, 4455}, // __builtin_HEXAGON_A2_addh_l16_hl
- {Intrinsic::hexagon_A2_addh_l16_ll, 4488}, // __builtin_HEXAGON_A2_addh_l16_ll
- {Intrinsic::hexagon_A2_addh_l16_sat_hl, 4521}, // __builtin_HEXAGON_A2_addh_l16_sat_hl
- {Intrinsic::hexagon_A2_addh_l16_sat_ll, 4558}, // __builtin_HEXAGON_A2_addh_l16_sat_ll
- {Intrinsic::hexagon_A2_addi, 4595}, // __builtin_HEXAGON_A2_addi
- {Intrinsic::hexagon_A2_addp, 4621}, // __builtin_HEXAGON_A2_addp
- {Intrinsic::hexagon_A2_addpsat, 4647}, // __builtin_HEXAGON_A2_addpsat
- {Intrinsic::hexagon_A2_addsat, 4676}, // __builtin_HEXAGON_A2_addsat
- {Intrinsic::hexagon_A2_addsp, 4704}, // __builtin_HEXAGON_A2_addsp
- {Intrinsic::hexagon_A2_and, 4731}, // __builtin_HEXAGON_A2_and
- {Intrinsic::hexagon_A2_andir, 4756}, // __builtin_HEXAGON_A2_andir
- {Intrinsic::hexagon_A2_andp, 4783}, // __builtin_HEXAGON_A2_andp
- {Intrinsic::hexagon_A2_aslh, 4809}, // __builtin_HEXAGON_A2_aslh
- {Intrinsic::hexagon_A2_asrh, 4835}, // __builtin_HEXAGON_A2_asrh
- {Intrinsic::hexagon_A2_combine_hh, 4861}, // __builtin_HEXAGON_A2_combine_hh
- {Intrinsic::hexagon_A2_combine_hl, 4893}, // __builtin_HEXAGON_A2_combine_hl
- {Intrinsic::hexagon_A2_combine_lh, 4925}, // __builtin_HEXAGON_A2_combine_lh
- {Intrinsic::hexagon_A2_combine_ll, 4957}, // __builtin_HEXAGON_A2_combine_ll
- {Intrinsic::hexagon_A2_combineii, 4989}, // __builtin_HEXAGON_A2_combineii
- {Intrinsic::hexagon_A2_combinew, 5020}, // __builtin_HEXAGON_A2_combinew
- {Intrinsic::hexagon_A2_max, 5050}, // __builtin_HEXAGON_A2_max
- {Intrinsic::hexagon_A2_maxp, 5075}, // __builtin_HEXAGON_A2_maxp
- {Intrinsic::hexagon_A2_maxu, 5101}, // __builtin_HEXAGON_A2_maxu
- {Intrinsic::hexagon_A2_maxup, 5127}, // __builtin_HEXAGON_A2_maxup
- {Intrinsic::hexagon_A2_min, 5154}, // __builtin_HEXAGON_A2_min
- {Intrinsic::hexagon_A2_minp, 5179}, // __builtin_HEXAGON_A2_minp
- {Intrinsic::hexagon_A2_minu, 5205}, // __builtin_HEXAGON_A2_minu
- {Intrinsic::hexagon_A2_minup, 5231}, // __builtin_HEXAGON_A2_minup
- {Intrinsic::hexagon_A2_neg, 5258}, // __builtin_HEXAGON_A2_neg
- {Intrinsic::hexagon_A2_negp, 5283}, // __builtin_HEXAGON_A2_negp
- {Intrinsic::hexagon_A2_negsat, 5309}, // __builtin_HEXAGON_A2_negsat
- {Intrinsic::hexagon_A2_not, 5337}, // __builtin_HEXAGON_A2_not
- {Intrinsic::hexagon_A2_notp, 5362}, // __builtin_HEXAGON_A2_notp
- {Intrinsic::hexagon_A2_or, 5388}, // __builtin_HEXAGON_A2_or
- {Intrinsic::hexagon_A2_orir, 5412}, // __builtin_HEXAGON_A2_orir
- {Intrinsic::hexagon_A2_orp, 5438}, // __builtin_HEXAGON_A2_orp
- {Intrinsic::hexagon_A2_roundsat, 5463}, // __builtin_HEXAGON_A2_roundsat
- {Intrinsic::hexagon_A2_sat, 5493}, // __builtin_HEXAGON_A2_sat
- {Intrinsic::hexagon_A2_satb, 5518}, // __builtin_HEXAGON_A2_satb
- {Intrinsic::hexagon_A2_sath, 5544}, // __builtin_HEXAGON_A2_sath
- {Intrinsic::hexagon_A2_satub, 5570}, // __builtin_HEXAGON_A2_satub
- {Intrinsic::hexagon_A2_satuh, 5597}, // __builtin_HEXAGON_A2_satuh
- {Intrinsic::hexagon_A2_sub, 5624}, // __builtin_HEXAGON_A2_sub
- {Intrinsic::hexagon_A2_subh_h16_hh, 5649}, // __builtin_HEXAGON_A2_subh_h16_hh
- {Intrinsic::hexagon_A2_subh_h16_hl, 5682}, // __builtin_HEXAGON_A2_subh_h16_hl
- {Intrinsic::hexagon_A2_subh_h16_lh, 5715}, // __builtin_HEXAGON_A2_subh_h16_lh
- {Intrinsic::hexagon_A2_subh_h16_ll, 5748}, // __builtin_HEXAGON_A2_subh_h16_ll
- {Intrinsic::hexagon_A2_subh_h16_sat_hh, 5781}, // __builtin_HEXAGON_A2_subh_h16_sat_hh
- {Intrinsic::hexagon_A2_subh_h16_sat_hl, 5818}, // __builtin_HEXAGON_A2_subh_h16_sat_hl
- {Intrinsic::hexagon_A2_subh_h16_sat_lh, 5855}, // __builtin_HEXAGON_A2_subh_h16_sat_lh
- {Intrinsic::hexagon_A2_subh_h16_sat_ll, 5892}, // __builtin_HEXAGON_A2_subh_h16_sat_ll
- {Intrinsic::hexagon_A2_subh_l16_hl, 5929}, // __builtin_HEXAGON_A2_subh_l16_hl
- {Intrinsic::hexagon_A2_subh_l16_ll, 5962}, // __builtin_HEXAGON_A2_subh_l16_ll
- {Intrinsic::hexagon_A2_subh_l16_sat_hl, 5995}, // __builtin_HEXAGON_A2_subh_l16_sat_hl
- {Intrinsic::hexagon_A2_subh_l16_sat_ll, 6032}, // __builtin_HEXAGON_A2_subh_l16_sat_ll
- {Intrinsic::hexagon_A2_subp, 6069}, // __builtin_HEXAGON_A2_subp
- {Intrinsic::hexagon_A2_subri, 6095}, // __builtin_HEXAGON_A2_subri
- {Intrinsic::hexagon_A2_subsat, 6122}, // __builtin_HEXAGON_A2_subsat
- {Intrinsic::hexagon_A2_svaddh, 6150}, // __builtin_HEXAGON_A2_svaddh
- {Intrinsic::hexagon_A2_svaddhs, 6178}, // __builtin_HEXAGON_A2_svaddhs
- {Intrinsic::hexagon_A2_svadduhs, 6207}, // __builtin_HEXAGON_A2_svadduhs
- {Intrinsic::hexagon_A2_svavgh, 6237}, // __builtin_HEXAGON_A2_svavgh
- {Intrinsic::hexagon_A2_svavghs, 6265}, // __builtin_HEXAGON_A2_svavghs
- {Intrinsic::hexagon_A2_svnavgh, 6294}, // __builtin_HEXAGON_A2_svnavgh
- {Intrinsic::hexagon_A2_svsubh, 6323}, // __builtin_HEXAGON_A2_svsubh
- {Intrinsic::hexagon_A2_svsubhs, 6351}, // __builtin_HEXAGON_A2_svsubhs
- {Intrinsic::hexagon_A2_svsubuhs, 6380}, // __builtin_HEXAGON_A2_svsubuhs
- {Intrinsic::hexagon_A2_swiz, 6410}, // __builtin_HEXAGON_A2_swiz
- {Intrinsic::hexagon_A2_sxtb, 6436}, // __builtin_HEXAGON_A2_sxtb
- {Intrinsic::hexagon_A2_sxth, 6462}, // __builtin_HEXAGON_A2_sxth
- {Intrinsic::hexagon_A2_sxtw, 6488}, // __builtin_HEXAGON_A2_sxtw
- {Intrinsic::hexagon_A2_tfr, 6514}, // __builtin_HEXAGON_A2_tfr
- {Intrinsic::hexagon_A2_tfrih, 6539}, // __builtin_HEXAGON_A2_tfrih
- {Intrinsic::hexagon_A2_tfril, 6566}, // __builtin_HEXAGON_A2_tfril
- {Intrinsic::hexagon_A2_tfrp, 6593}, // __builtin_HEXAGON_A2_tfrp
- {Intrinsic::hexagon_A2_tfrpi, 6619}, // __builtin_HEXAGON_A2_tfrpi
- {Intrinsic::hexagon_A2_tfrsi, 6646}, // __builtin_HEXAGON_A2_tfrsi
- {Intrinsic::hexagon_A2_vabsh, 6673}, // __builtin_HEXAGON_A2_vabsh
- {Intrinsic::hexagon_A2_vabshsat, 6700}, // __builtin_HEXAGON_A2_vabshsat
- {Intrinsic::hexagon_A2_vabsw, 6730}, // __builtin_HEXAGON_A2_vabsw
- {Intrinsic::hexagon_A2_vabswsat, 6757}, // __builtin_HEXAGON_A2_vabswsat
- {Intrinsic::hexagon_A2_vaddb_map, 6787}, // __builtin_HEXAGON_A2_vaddb_map
- {Intrinsic::hexagon_A2_vaddh, 6818}, // __builtin_HEXAGON_A2_vaddh
- {Intrinsic::hexagon_A2_vaddhs, 6845}, // __builtin_HEXAGON_A2_vaddhs
- {Intrinsic::hexagon_A2_vaddub, 6873}, // __builtin_HEXAGON_A2_vaddub
- {Intrinsic::hexagon_A2_vaddubs, 6901}, // __builtin_HEXAGON_A2_vaddubs
- {Intrinsic::hexagon_A2_vadduhs, 6930}, // __builtin_HEXAGON_A2_vadduhs
- {Intrinsic::hexagon_A2_vaddw, 6959}, // __builtin_HEXAGON_A2_vaddw
- {Intrinsic::hexagon_A2_vaddws, 6986}, // __builtin_HEXAGON_A2_vaddws
- {Intrinsic::hexagon_A2_vavgh, 7014}, // __builtin_HEXAGON_A2_vavgh
- {Intrinsic::hexagon_A2_vavghcr, 7041}, // __builtin_HEXAGON_A2_vavghcr
- {Intrinsic::hexagon_A2_vavghr, 7070}, // __builtin_HEXAGON_A2_vavghr
- {Intrinsic::hexagon_A2_vavgub, 7098}, // __builtin_HEXAGON_A2_vavgub
- {Intrinsic::hexagon_A2_vavgubr, 7126}, // __builtin_HEXAGON_A2_vavgubr
- {Intrinsic::hexagon_A2_vavguh, 7155}, // __builtin_HEXAGON_A2_vavguh
- {Intrinsic::hexagon_A2_vavguhr, 7183}, // __builtin_HEXAGON_A2_vavguhr
- {Intrinsic::hexagon_A2_vavguw, 7212}, // __builtin_HEXAGON_A2_vavguw
- {Intrinsic::hexagon_A2_vavguwr, 7240}, // __builtin_HEXAGON_A2_vavguwr
- {Intrinsic::hexagon_A2_vavgw, 7269}, // __builtin_HEXAGON_A2_vavgw
- {Intrinsic::hexagon_A2_vavgwcr, 7296}, // __builtin_HEXAGON_A2_vavgwcr
- {Intrinsic::hexagon_A2_vavgwr, 7325}, // __builtin_HEXAGON_A2_vavgwr
- {Intrinsic::hexagon_A2_vcmpbeq, 7353}, // __builtin_HEXAGON_A2_vcmpbeq
- {Intrinsic::hexagon_A2_vcmpbgtu, 7382}, // __builtin_HEXAGON_A2_vcmpbgtu
- {Intrinsic::hexagon_A2_vcmpheq, 7412}, // __builtin_HEXAGON_A2_vcmpheq
- {Intrinsic::hexagon_A2_vcmphgt, 7441}, // __builtin_HEXAGON_A2_vcmphgt
- {Intrinsic::hexagon_A2_vcmphgtu, 7470}, // __builtin_HEXAGON_A2_vcmphgtu
- {Intrinsic::hexagon_A2_vcmpweq, 7500}, // __builtin_HEXAGON_A2_vcmpweq
- {Intrinsic::hexagon_A2_vcmpwgt, 7529}, // __builtin_HEXAGON_A2_vcmpwgt
- {Intrinsic::hexagon_A2_vcmpwgtu, 7558}, // __builtin_HEXAGON_A2_vcmpwgtu
- {Intrinsic::hexagon_A2_vconj, 7588}, // __builtin_HEXAGON_A2_vconj
- {Intrinsic::hexagon_A2_vmaxb, 7615}, // __builtin_HEXAGON_A2_vmaxb
- {Intrinsic::hexagon_A2_vmaxh, 7642}, // __builtin_HEXAGON_A2_vmaxh
- {Intrinsic::hexagon_A2_vmaxub, 7669}, // __builtin_HEXAGON_A2_vmaxub
- {Intrinsic::hexagon_A2_vmaxuh, 7697}, // __builtin_HEXAGON_A2_vmaxuh
- {Intrinsic::hexagon_A2_vmaxuw, 7725}, // __builtin_HEXAGON_A2_vmaxuw
- {Intrinsic::hexagon_A2_vmaxw, 7753}, // __builtin_HEXAGON_A2_vmaxw
- {Intrinsic::hexagon_A2_vminb, 7780}, // __builtin_HEXAGON_A2_vminb
- {Intrinsic::hexagon_A2_vminh, 7807}, // __builtin_HEXAGON_A2_vminh
- {Intrinsic::hexagon_A2_vminub, 7834}, // __builtin_HEXAGON_A2_vminub
- {Intrinsic::hexagon_A2_vminuh, 7862}, // __builtin_HEXAGON_A2_vminuh
- {Intrinsic::hexagon_A2_vminuw, 7890}, // __builtin_HEXAGON_A2_vminuw
- {Intrinsic::hexagon_A2_vminw, 7918}, // __builtin_HEXAGON_A2_vminw
- {Intrinsic::hexagon_A2_vnavgh, 7945}, // __builtin_HEXAGON_A2_vnavgh
- {Intrinsic::hexagon_A2_vnavghcr, 7973}, // __builtin_HEXAGON_A2_vnavghcr
- {Intrinsic::hexagon_A2_vnavghr, 8003}, // __builtin_HEXAGON_A2_vnavghr
- {Intrinsic::hexagon_A2_vnavgw, 8032}, // __builtin_HEXAGON_A2_vnavgw
- {Intrinsic::hexagon_A2_vnavgwcr, 8060}, // __builtin_HEXAGON_A2_vnavgwcr
- {Intrinsic::hexagon_A2_vnavgwr, 8090}, // __builtin_HEXAGON_A2_vnavgwr
- {Intrinsic::hexagon_A2_vraddub, 8119}, // __builtin_HEXAGON_A2_vraddub
- {Intrinsic::hexagon_A2_vraddub_acc, 8148}, // __builtin_HEXAGON_A2_vraddub_acc
- {Intrinsic::hexagon_A2_vrsadub, 8181}, // __builtin_HEXAGON_A2_vrsadub
- {Intrinsic::hexagon_A2_vrsadub_acc, 8210}, // __builtin_HEXAGON_A2_vrsadub_acc
- {Intrinsic::hexagon_A2_vsubb_map, 8243}, // __builtin_HEXAGON_A2_vsubb_map
- {Intrinsic::hexagon_A2_vsubh, 8274}, // __builtin_HEXAGON_A2_vsubh
- {Intrinsic::hexagon_A2_vsubhs, 8301}, // __builtin_HEXAGON_A2_vsubhs
- {Intrinsic::hexagon_A2_vsubub, 8329}, // __builtin_HEXAGON_A2_vsubub
- {Intrinsic::hexagon_A2_vsububs, 8357}, // __builtin_HEXAGON_A2_vsububs
- {Intrinsic::hexagon_A2_vsubuhs, 8386}, // __builtin_HEXAGON_A2_vsubuhs
- {Intrinsic::hexagon_A2_vsubw, 8415}, // __builtin_HEXAGON_A2_vsubw
- {Intrinsic::hexagon_A2_vsubws, 8442}, // __builtin_HEXAGON_A2_vsubws
- {Intrinsic::hexagon_A2_xor, 8470}, // __builtin_HEXAGON_A2_xor
- {Intrinsic::hexagon_A2_xorp, 8495}, // __builtin_HEXAGON_A2_xorp
- {Intrinsic::hexagon_A2_zxtb, 8521}, // __builtin_HEXAGON_A2_zxtb
- {Intrinsic::hexagon_A2_zxth, 8547}, // __builtin_HEXAGON_A2_zxth
- {Intrinsic::hexagon_A4_andn, 8573}, // __builtin_HEXAGON_A4_andn
- {Intrinsic::hexagon_A4_andnp, 8599}, // __builtin_HEXAGON_A4_andnp
- {Intrinsic::hexagon_A4_bitsplit, 8626}, // __builtin_HEXAGON_A4_bitsplit
- {Intrinsic::hexagon_A4_bitspliti, 8656}, // __builtin_HEXAGON_A4_bitspliti
- {Intrinsic::hexagon_A4_boundscheck, 8687}, // __builtin_HEXAGON_A4_boundscheck
- {Intrinsic::hexagon_A4_cmpbeq, 8720}, // __builtin_HEXAGON_A4_cmpbeq
- {Intrinsic::hexagon_A4_cmpbeqi, 8748}, // __builtin_HEXAGON_A4_cmpbeqi
- {Intrinsic::hexagon_A4_cmpbgt, 8777}, // __builtin_HEXAGON_A4_cmpbgt
- {Intrinsic::hexagon_A4_cmpbgti, 8805}, // __builtin_HEXAGON_A4_cmpbgti
- {Intrinsic::hexagon_A4_cmpbgtu, 8834}, // __builtin_HEXAGON_A4_cmpbgtu
- {Intrinsic::hexagon_A4_cmpbgtui, 8863}, // __builtin_HEXAGON_A4_cmpbgtui
- {Intrinsic::hexagon_A4_cmpheq, 8893}, // __builtin_HEXAGON_A4_cmpheq
- {Intrinsic::hexagon_A4_cmpheqi, 8921}, // __builtin_HEXAGON_A4_cmpheqi
- {Intrinsic::hexagon_A4_cmphgt, 8950}, // __builtin_HEXAGON_A4_cmphgt
- {Intrinsic::hexagon_A4_cmphgti, 8978}, // __builtin_HEXAGON_A4_cmphgti
- {Intrinsic::hexagon_A4_cmphgtu, 9007}, // __builtin_HEXAGON_A4_cmphgtu
- {Intrinsic::hexagon_A4_cmphgtui, 9036}, // __builtin_HEXAGON_A4_cmphgtui
- {Intrinsic::hexagon_A4_combineir, 9066}, // __builtin_HEXAGON_A4_combineir
- {Intrinsic::hexagon_A4_combineri, 9097}, // __builtin_HEXAGON_A4_combineri
- {Intrinsic::hexagon_A4_cround_ri, 9128}, // __builtin_HEXAGON_A4_cround_ri
- {Intrinsic::hexagon_A4_cround_rr, 9159}, // __builtin_HEXAGON_A4_cround_rr
- {Intrinsic::hexagon_A4_modwrapu, 9190}, // __builtin_HEXAGON_A4_modwrapu
- {Intrinsic::hexagon_A4_orn, 9220}, // __builtin_HEXAGON_A4_orn
- {Intrinsic::hexagon_A4_ornp, 9245}, // __builtin_HEXAGON_A4_ornp
- {Intrinsic::hexagon_A4_rcmpeq, 9271}, // __builtin_HEXAGON_A4_rcmpeq
- {Intrinsic::hexagon_A4_rcmpeqi, 9299}, // __builtin_HEXAGON_A4_rcmpeqi
- {Intrinsic::hexagon_A4_rcmpneq, 9328}, // __builtin_HEXAGON_A4_rcmpneq
- {Intrinsic::hexagon_A4_rcmpneqi, 9357}, // __builtin_HEXAGON_A4_rcmpneqi
- {Intrinsic::hexagon_A4_round_ri, 9387}, // __builtin_HEXAGON_A4_round_ri
- {Intrinsic::hexagon_A4_round_ri_sat, 9417}, // __builtin_HEXAGON_A4_round_ri_sat
- {Intrinsic::hexagon_A4_round_rr, 9451}, // __builtin_HEXAGON_A4_round_rr
- {Intrinsic::hexagon_A4_round_rr_sat, 9481}, // __builtin_HEXAGON_A4_round_rr_sat
- {Intrinsic::hexagon_A4_tlbmatch, 9515}, // __builtin_HEXAGON_A4_tlbmatch
- {Intrinsic::hexagon_A4_vcmpbeq_any, 9545}, // __builtin_HEXAGON_A4_vcmpbeq_any
- {Intrinsic::hexagon_A4_vcmpbeqi, 9578}, // __builtin_HEXAGON_A4_vcmpbeqi
- {Intrinsic::hexagon_A4_vcmpbgt, 9608}, // __builtin_HEXAGON_A4_vcmpbgt
- {Intrinsic::hexagon_A4_vcmpbgti, 9637}, // __builtin_HEXAGON_A4_vcmpbgti
- {Intrinsic::hexagon_A4_vcmpbgtui, 9667}, // __builtin_HEXAGON_A4_vcmpbgtui
- {Intrinsic::hexagon_A4_vcmpheqi, 9698}, // __builtin_HEXAGON_A4_vcmpheqi
- {Intrinsic::hexagon_A4_vcmphgti, 9728}, // __builtin_HEXAGON_A4_vcmphgti
- {Intrinsic::hexagon_A4_vcmphgtui, 9758}, // __builtin_HEXAGON_A4_vcmphgtui
- {Intrinsic::hexagon_A4_vcmpweqi, 9789}, // __builtin_HEXAGON_A4_vcmpweqi
- {Intrinsic::hexagon_A4_vcmpwgti, 9819}, // __builtin_HEXAGON_A4_vcmpwgti
- {Intrinsic::hexagon_A4_vcmpwgtui, 9849}, // __builtin_HEXAGON_A4_vcmpwgtui
- {Intrinsic::hexagon_A4_vrmaxh, 9880}, // __builtin_HEXAGON_A4_vrmaxh
- {Intrinsic::hexagon_A4_vrmaxuh, 9908}, // __builtin_HEXAGON_A4_vrmaxuh
- {Intrinsic::hexagon_A4_vrmaxuw, 9937}, // __builtin_HEXAGON_A4_vrmaxuw
- {Intrinsic::hexagon_A4_vrmaxw, 9966}, // __builtin_HEXAGON_A4_vrmaxw
- {Intrinsic::hexagon_A4_vrminh, 9994}, // __builtin_HEXAGON_A4_vrminh
- {Intrinsic::hexagon_A4_vrminuh, 10022}, // __builtin_HEXAGON_A4_vrminuh
- {Intrinsic::hexagon_A4_vrminuw, 10051}, // __builtin_HEXAGON_A4_vrminuw
- {Intrinsic::hexagon_A4_vrminw, 10080}, // __builtin_HEXAGON_A4_vrminw
- {Intrinsic::hexagon_A5_vaddhubs, 10108}, // __builtin_HEXAGON_A5_vaddhubs
- {Intrinsic::hexagon_A6_vcmpbeq_notany, 10138}, // __builtin_HEXAGON_A6_vcmpbeq_notany
- {Intrinsic::hexagon_A6_vcmpbeq_notany_128B, 10174}, // __builtin_HEXAGON_A6_vcmpbeq_notany_128B
- {Intrinsic::hexagon_C2_all8, 10215}, // __builtin_HEXAGON_C2_all8
- {Intrinsic::hexagon_C2_and, 10241}, // __builtin_HEXAGON_C2_and
- {Intrinsic::hexagon_C2_andn, 10266}, // __builtin_HEXAGON_C2_andn
- {Intrinsic::hexagon_C2_any8, 10292}, // __builtin_HEXAGON_C2_any8
- {Intrinsic::hexagon_C2_bitsclr, 10318}, // __builtin_HEXAGON_C2_bitsclr
- {Intrinsic::hexagon_C2_bitsclri, 10347}, // __builtin_HEXAGON_C2_bitsclri
- {Intrinsic::hexagon_C2_bitsset, 10377}, // __builtin_HEXAGON_C2_bitsset
- {Intrinsic::hexagon_C2_cmpeq, 10406}, // __builtin_HEXAGON_C2_cmpeq
- {Intrinsic::hexagon_C2_cmpeqi, 10433}, // __builtin_HEXAGON_C2_cmpeqi
- {Intrinsic::hexagon_C2_cmpeqp, 10461}, // __builtin_HEXAGON_C2_cmpeqp
- {Intrinsic::hexagon_C2_cmpgei, 10489}, // __builtin_HEXAGON_C2_cmpgei
- {Intrinsic::hexagon_C2_cmpgeui, 10517}, // __builtin_HEXAGON_C2_cmpgeui
- {Intrinsic::hexagon_C2_cmpgt, 10546}, // __builtin_HEXAGON_C2_cmpgt
- {Intrinsic::hexagon_C2_cmpgti, 10573}, // __builtin_HEXAGON_C2_cmpgti
- {Intrinsic::hexagon_C2_cmpgtp, 10601}, // __builtin_HEXAGON_C2_cmpgtp
- {Intrinsic::hexagon_C2_cmpgtu, 10629}, // __builtin_HEXAGON_C2_cmpgtu
- {Intrinsic::hexagon_C2_cmpgtui, 10657}, // __builtin_HEXAGON_C2_cmpgtui
- {Intrinsic::hexagon_C2_cmpgtup, 10686}, // __builtin_HEXAGON_C2_cmpgtup
- {Intrinsic::hexagon_C2_cmplt, 10715}, // __builtin_HEXAGON_C2_cmplt
- {Intrinsic::hexagon_C2_cmpltu, 10742}, // __builtin_HEXAGON_C2_cmpltu
- {Intrinsic::hexagon_C2_mask, 10770}, // __builtin_HEXAGON_C2_mask
- {Intrinsic::hexagon_C2_mux, 10796}, // __builtin_HEXAGON_C2_mux
- {Intrinsic::hexagon_C2_muxii, 10821}, // __builtin_HEXAGON_C2_muxii
- {Intrinsic::hexagon_C2_muxir, 10848}, // __builtin_HEXAGON_C2_muxir
- {Intrinsic::hexagon_C2_muxri, 10875}, // __builtin_HEXAGON_C2_muxri
- {Intrinsic::hexagon_C2_not, 10902}, // __builtin_HEXAGON_C2_not
- {Intrinsic::hexagon_C2_or, 10927}, // __builtin_HEXAGON_C2_or
- {Intrinsic::hexagon_C2_orn, 10951}, // __builtin_HEXAGON_C2_orn
- {Intrinsic::hexagon_C2_pxfer_map, 10976}, // __builtin_HEXAGON_C2_pxfer_map
- {Intrinsic::hexagon_C2_tfrpr, 11007}, // __builtin_HEXAGON_C2_tfrpr
- {Intrinsic::hexagon_C2_tfrrp, 11034}, // __builtin_HEXAGON_C2_tfrrp
- {Intrinsic::hexagon_C2_vitpack, 11061}, // __builtin_HEXAGON_C2_vitpack
- {Intrinsic::hexagon_C2_vmux, 11090}, // __builtin_HEXAGON_C2_vmux
- {Intrinsic::hexagon_C2_xor, 11116}, // __builtin_HEXAGON_C2_xor
- {Intrinsic::hexagon_C4_and_and, 11141}, // __builtin_HEXAGON_C4_and_and
- {Intrinsic::hexagon_C4_and_andn, 11170}, // __builtin_HEXAGON_C4_and_andn
- {Intrinsic::hexagon_C4_and_or, 11200}, // __builtin_HEXAGON_C4_and_or
- {Intrinsic::hexagon_C4_and_orn, 11228}, // __builtin_HEXAGON_C4_and_orn
- {Intrinsic::hexagon_C4_cmplte, 11257}, // __builtin_HEXAGON_C4_cmplte
- {Intrinsic::hexagon_C4_cmpltei, 11285}, // __builtin_HEXAGON_C4_cmpltei
- {Intrinsic::hexagon_C4_cmplteu, 11314}, // __builtin_HEXAGON_C4_cmplteu
- {Intrinsic::hexagon_C4_cmplteui, 11343}, // __builtin_HEXAGON_C4_cmplteui
- {Intrinsic::hexagon_C4_cmpneq, 11373}, // __builtin_HEXAGON_C4_cmpneq
- {Intrinsic::hexagon_C4_cmpneqi, 11401}, // __builtin_HEXAGON_C4_cmpneqi
- {Intrinsic::hexagon_C4_fastcorner9, 11430}, // __builtin_HEXAGON_C4_fastcorner9
- {Intrinsic::hexagon_C4_fastcorner9_not, 11463}, // __builtin_HEXAGON_C4_fastcorner9_not
- {Intrinsic::hexagon_C4_nbitsclr, 11500}, // __builtin_HEXAGON_C4_nbitsclr
- {Intrinsic::hexagon_C4_nbitsclri, 11530}, // __builtin_HEXAGON_C4_nbitsclri
- {Intrinsic::hexagon_C4_nbitsset, 11561}, // __builtin_HEXAGON_C4_nbitsset
- {Intrinsic::hexagon_C4_or_and, 11591}, // __builtin_HEXAGON_C4_or_and
- {Intrinsic::hexagon_C4_or_andn, 11619}, // __builtin_HEXAGON_C4_or_andn
- {Intrinsic::hexagon_C4_or_or, 11648}, // __builtin_HEXAGON_C4_or_or
- {Intrinsic::hexagon_C4_or_orn, 11675}, // __builtin_HEXAGON_C4_or_orn
- {Intrinsic::hexagon_F2_conv_d2df, 11703}, // __builtin_HEXAGON_F2_conv_d2df
- {Intrinsic::hexagon_F2_conv_d2sf, 11734}, // __builtin_HEXAGON_F2_conv_d2sf
- {Intrinsic::hexagon_F2_conv_df2d, 11765}, // __builtin_HEXAGON_F2_conv_df2d
- {Intrinsic::hexagon_F2_conv_df2d_chop, 11796}, // __builtin_HEXAGON_F2_conv_df2d_chop
- {Intrinsic::hexagon_F2_conv_df2sf, 11832}, // __builtin_HEXAGON_F2_conv_df2sf
- {Intrinsic::hexagon_F2_conv_df2ud, 11864}, // __builtin_HEXAGON_F2_conv_df2ud
- {Intrinsic::hexagon_F2_conv_df2ud_chop, 11896}, // __builtin_HEXAGON_F2_conv_df2ud_chop
- {Intrinsic::hexagon_F2_conv_df2uw, 11933}, // __builtin_HEXAGON_F2_conv_df2uw
- {Intrinsic::hexagon_F2_conv_df2uw_chop, 11965}, // __builtin_HEXAGON_F2_conv_df2uw_chop
- {Intrinsic::hexagon_F2_conv_df2w, 12002}, // __builtin_HEXAGON_F2_conv_df2w
- {Intrinsic::hexagon_F2_conv_df2w_chop, 12033}, // __builtin_HEXAGON_F2_conv_df2w_chop
- {Intrinsic::hexagon_F2_conv_sf2d, 12069}, // __builtin_HEXAGON_F2_conv_sf2d
- {Intrinsic::hexagon_F2_conv_sf2d_chop, 12100}, // __builtin_HEXAGON_F2_conv_sf2d_chop
- {Intrinsic::hexagon_F2_conv_sf2df, 12136}, // __builtin_HEXAGON_F2_conv_sf2df
- {Intrinsic::hexagon_F2_conv_sf2ud, 12168}, // __builtin_HEXAGON_F2_conv_sf2ud
- {Intrinsic::hexagon_F2_conv_sf2ud_chop, 12200}, // __builtin_HEXAGON_F2_conv_sf2ud_chop
- {Intrinsic::hexagon_F2_conv_sf2uw, 12237}, // __builtin_HEXAGON_F2_conv_sf2uw
- {Intrinsic::hexagon_F2_conv_sf2uw_chop, 12269}, // __builtin_HEXAGON_F2_conv_sf2uw_chop
- {Intrinsic::hexagon_F2_conv_sf2w, 12306}, // __builtin_HEXAGON_F2_conv_sf2w
- {Intrinsic::hexagon_F2_conv_sf2w_chop, 12337}, // __builtin_HEXAGON_F2_conv_sf2w_chop
- {Intrinsic::hexagon_F2_conv_ud2df, 12373}, // __builtin_HEXAGON_F2_conv_ud2df
- {Intrinsic::hexagon_F2_conv_ud2sf, 12405}, // __builtin_HEXAGON_F2_conv_ud2sf
- {Intrinsic::hexagon_F2_conv_uw2df, 12437}, // __builtin_HEXAGON_F2_conv_uw2df
- {Intrinsic::hexagon_F2_conv_uw2sf, 12469}, // __builtin_HEXAGON_F2_conv_uw2sf
- {Intrinsic::hexagon_F2_conv_w2df, 12501}, // __builtin_HEXAGON_F2_conv_w2df
- {Intrinsic::hexagon_F2_conv_w2sf, 12532}, // __builtin_HEXAGON_F2_conv_w2sf
- {Intrinsic::hexagon_F2_dfclass, 12563}, // __builtin_HEXAGON_F2_dfclass
- {Intrinsic::hexagon_F2_dfcmpeq, 12592}, // __builtin_HEXAGON_F2_dfcmpeq
- {Intrinsic::hexagon_F2_dfcmpge, 12621}, // __builtin_HEXAGON_F2_dfcmpge
- {Intrinsic::hexagon_F2_dfcmpgt, 12650}, // __builtin_HEXAGON_F2_dfcmpgt
- {Intrinsic::hexagon_F2_dfcmpuo, 12679}, // __builtin_HEXAGON_F2_dfcmpuo
- {Intrinsic::hexagon_F2_dfimm_n, 12708}, // __builtin_HEXAGON_F2_dfimm_n
- {Intrinsic::hexagon_F2_dfimm_p, 12737}, // __builtin_HEXAGON_F2_dfimm_p
- {Intrinsic::hexagon_F2_sfadd, 12766}, // __builtin_HEXAGON_F2_sfadd
- {Intrinsic::hexagon_F2_sfclass, 12793}, // __builtin_HEXAGON_F2_sfclass
- {Intrinsic::hexagon_F2_sfcmpeq, 12822}, // __builtin_HEXAGON_F2_sfcmpeq
- {Intrinsic::hexagon_F2_sfcmpge, 12851}, // __builtin_HEXAGON_F2_sfcmpge
- {Intrinsic::hexagon_F2_sfcmpgt, 12880}, // __builtin_HEXAGON_F2_sfcmpgt
- {Intrinsic::hexagon_F2_sfcmpuo, 12909}, // __builtin_HEXAGON_F2_sfcmpuo
- {Intrinsic::hexagon_F2_sffixupd, 12938}, // __builtin_HEXAGON_F2_sffixupd
- {Intrinsic::hexagon_F2_sffixupn, 12968}, // __builtin_HEXAGON_F2_sffixupn
- {Intrinsic::hexagon_F2_sffixupr, 12998}, // __builtin_HEXAGON_F2_sffixupr
- {Intrinsic::hexagon_F2_sffma, 13028}, // __builtin_HEXAGON_F2_sffma
- {Intrinsic::hexagon_F2_sffma_lib, 13055}, // __builtin_HEXAGON_F2_sffma_lib
- {Intrinsic::hexagon_F2_sffma_sc, 13086}, // __builtin_HEXAGON_F2_sffma_sc
- {Intrinsic::hexagon_F2_sffms, 13116}, // __builtin_HEXAGON_F2_sffms
- {Intrinsic::hexagon_F2_sffms_lib, 13143}, // __builtin_HEXAGON_F2_sffms_lib
- {Intrinsic::hexagon_F2_sfimm_n, 13174}, // __builtin_HEXAGON_F2_sfimm_n
- {Intrinsic::hexagon_F2_sfimm_p, 13203}, // __builtin_HEXAGON_F2_sfimm_p
- {Intrinsic::hexagon_F2_sfmax, 13232}, // __builtin_HEXAGON_F2_sfmax
- {Intrinsic::hexagon_F2_sfmin, 13259}, // __builtin_HEXAGON_F2_sfmin
- {Intrinsic::hexagon_F2_sfmpy, 13286}, // __builtin_HEXAGON_F2_sfmpy
- {Intrinsic::hexagon_F2_sfsub, 13313}, // __builtin_HEXAGON_F2_sfsub
- {Intrinsic::hexagon_L2_loadw_locked, 13340}, // __builtin_HEXAGON_L2_loadw_locked
- {Intrinsic::hexagon_L4_loadd_locked, 13374}, // __builtin_HEXAGON_L4_loadd_locked
- {Intrinsic::hexagon_M2_acci, 13408}, // __builtin_HEXAGON_M2_acci
- {Intrinsic::hexagon_M2_accii, 13434}, // __builtin_HEXAGON_M2_accii
- {Intrinsic::hexagon_M2_cmaci_s0, 13461}, // __builtin_HEXAGON_M2_cmaci_s0
- {Intrinsic::hexagon_M2_cmacr_s0, 13491}, // __builtin_HEXAGON_M2_cmacr_s0
- {Intrinsic::hexagon_M2_cmacs_s0, 13521}, // __builtin_HEXAGON_M2_cmacs_s0
- {Intrinsic::hexagon_M2_cmacs_s1, 13551}, // __builtin_HEXAGON_M2_cmacs_s1
- {Intrinsic::hexagon_M2_cmacsc_s0, 13581}, // __builtin_HEXAGON_M2_cmacsc_s0
- {Intrinsic::hexagon_M2_cmacsc_s1, 13612}, // __builtin_HEXAGON_M2_cmacsc_s1
- {Intrinsic::hexagon_M2_cmpyi_s0, 13643}, // __builtin_HEXAGON_M2_cmpyi_s0
- {Intrinsic::hexagon_M2_cmpyr_s0, 13673}, // __builtin_HEXAGON_M2_cmpyr_s0
- {Intrinsic::hexagon_M2_cmpyrs_s0, 13703}, // __builtin_HEXAGON_M2_cmpyrs_s0
- {Intrinsic::hexagon_M2_cmpyrs_s1, 13734}, // __builtin_HEXAGON_M2_cmpyrs_s1
- {Intrinsic::hexagon_M2_cmpyrsc_s0, 13765}, // __builtin_HEXAGON_M2_cmpyrsc_s0
- {Intrinsic::hexagon_M2_cmpyrsc_s1, 13797}, // __builtin_HEXAGON_M2_cmpyrsc_s1
- {Intrinsic::hexagon_M2_cmpys_s0, 13829}, // __builtin_HEXAGON_M2_cmpys_s0
- {Intrinsic::hexagon_M2_cmpys_s1, 13859}, // __builtin_HEXAGON_M2_cmpys_s1
- {Intrinsic::hexagon_M2_cmpysc_s0, 13889}, // __builtin_HEXAGON_M2_cmpysc_s0
- {Intrinsic::hexagon_M2_cmpysc_s1, 13920}, // __builtin_HEXAGON_M2_cmpysc_s1
- {Intrinsic::hexagon_M2_cnacs_s0, 13951}, // __builtin_HEXAGON_M2_cnacs_s0
- {Intrinsic::hexagon_M2_cnacs_s1, 13981}, // __builtin_HEXAGON_M2_cnacs_s1
- {Intrinsic::hexagon_M2_cnacsc_s0, 14011}, // __builtin_HEXAGON_M2_cnacsc_s0
- {Intrinsic::hexagon_M2_cnacsc_s1, 14042}, // __builtin_HEXAGON_M2_cnacsc_s1
- {Intrinsic::hexagon_M2_dpmpyss_acc_s0, 14073}, // __builtin_HEXAGON_M2_dpmpyss_acc_s0
- {Intrinsic::hexagon_M2_dpmpyss_nac_s0, 14109}, // __builtin_HEXAGON_M2_dpmpyss_nac_s0
- {Intrinsic::hexagon_M2_dpmpyss_rnd_s0, 14145}, // __builtin_HEXAGON_M2_dpmpyss_rnd_s0
- {Intrinsic::hexagon_M2_dpmpyss_s0, 14181}, // __builtin_HEXAGON_M2_dpmpyss_s0
- {Intrinsic::hexagon_M2_dpmpyuu_acc_s0, 14213}, // __builtin_HEXAGON_M2_dpmpyuu_acc_s0
- {Intrinsic::hexagon_M2_dpmpyuu_nac_s0, 14249}, // __builtin_HEXAGON_M2_dpmpyuu_nac_s0
- {Intrinsic::hexagon_M2_dpmpyuu_s0, 14285}, // __builtin_HEXAGON_M2_dpmpyuu_s0
- {Intrinsic::hexagon_M2_hmmpyh_rs1, 14317}, // __builtin_HEXAGON_M2_hmmpyh_rs1
- {Intrinsic::hexagon_M2_hmmpyh_s1, 14349}, // __builtin_HEXAGON_M2_hmmpyh_s1
- {Intrinsic::hexagon_M2_hmmpyl_rs1, 14380}, // __builtin_HEXAGON_M2_hmmpyl_rs1
- {Intrinsic::hexagon_M2_hmmpyl_s1, 14412}, // __builtin_HEXAGON_M2_hmmpyl_s1
- {Intrinsic::hexagon_M2_maci, 14443}, // __builtin_HEXAGON_M2_maci
- {Intrinsic::hexagon_M2_macsin, 14469}, // __builtin_HEXAGON_M2_macsin
- {Intrinsic::hexagon_M2_macsip, 14497}, // __builtin_HEXAGON_M2_macsip
- {Intrinsic::hexagon_M2_mmachs_rs0, 14525}, // __builtin_HEXAGON_M2_mmachs_rs0
- {Intrinsic::hexagon_M2_mmachs_rs1, 14557}, // __builtin_HEXAGON_M2_mmachs_rs1
- {Intrinsic::hexagon_M2_mmachs_s0, 14589}, // __builtin_HEXAGON_M2_mmachs_s0
- {Intrinsic::hexagon_M2_mmachs_s1, 14620}, // __builtin_HEXAGON_M2_mmachs_s1
- {Intrinsic::hexagon_M2_mmacls_rs0, 14651}, // __builtin_HEXAGON_M2_mmacls_rs0
- {Intrinsic::hexagon_M2_mmacls_rs1, 14683}, // __builtin_HEXAGON_M2_mmacls_rs1
- {Intrinsic::hexagon_M2_mmacls_s0, 14715}, // __builtin_HEXAGON_M2_mmacls_s0
- {Intrinsic::hexagon_M2_mmacls_s1, 14746}, // __builtin_HEXAGON_M2_mmacls_s1
- {Intrinsic::hexagon_M2_mmacuhs_rs0, 14777}, // __builtin_HEXAGON_M2_mmacuhs_rs0
- {Intrinsic::hexagon_M2_mmacuhs_rs1, 14810}, // __builtin_HEXAGON_M2_mmacuhs_rs1
- {Intrinsic::hexagon_M2_mmacuhs_s0, 14843}, // __builtin_HEXAGON_M2_mmacuhs_s0
- {Intrinsic::hexagon_M2_mmacuhs_s1, 14875}, // __builtin_HEXAGON_M2_mmacuhs_s1
- {Intrinsic::hexagon_M2_mmaculs_rs0, 14907}, // __builtin_HEXAGON_M2_mmaculs_rs0
- {Intrinsic::hexagon_M2_mmaculs_rs1, 14940}, // __builtin_HEXAGON_M2_mmaculs_rs1
- {Intrinsic::hexagon_M2_mmaculs_s0, 14973}, // __builtin_HEXAGON_M2_mmaculs_s0
- {Intrinsic::hexagon_M2_mmaculs_s1, 15005}, // __builtin_HEXAGON_M2_mmaculs_s1
- {Intrinsic::hexagon_M2_mmpyh_rs0, 15037}, // __builtin_HEXAGON_M2_mmpyh_rs0
- {Intrinsic::hexagon_M2_mmpyh_rs1, 15068}, // __builtin_HEXAGON_M2_mmpyh_rs1
- {Intrinsic::hexagon_M2_mmpyh_s0, 15099}, // __builtin_HEXAGON_M2_mmpyh_s0
- {Intrinsic::hexagon_M2_mmpyh_s1, 15129}, // __builtin_HEXAGON_M2_mmpyh_s1
- {Intrinsic::hexagon_M2_mmpyl_rs0, 15159}, // __builtin_HEXAGON_M2_mmpyl_rs0
- {Intrinsic::hexagon_M2_mmpyl_rs1, 15190}, // __builtin_HEXAGON_M2_mmpyl_rs1
- {Intrinsic::hexagon_M2_mmpyl_s0, 15221}, // __builtin_HEXAGON_M2_mmpyl_s0
- {Intrinsic::hexagon_M2_mmpyl_s1, 15251}, // __builtin_HEXAGON_M2_mmpyl_s1
- {Intrinsic::hexagon_M2_mmpyuh_rs0, 15281}, // __builtin_HEXAGON_M2_mmpyuh_rs0
- {Intrinsic::hexagon_M2_mmpyuh_rs1, 15313}, // __builtin_HEXAGON_M2_mmpyuh_rs1
- {Intrinsic::hexagon_M2_mmpyuh_s0, 15345}, // __builtin_HEXAGON_M2_mmpyuh_s0
- {Intrinsic::hexagon_M2_mmpyuh_s1, 15376}, // __builtin_HEXAGON_M2_mmpyuh_s1
- {Intrinsic::hexagon_M2_mmpyul_rs0, 15407}, // __builtin_HEXAGON_M2_mmpyul_rs0
- {Intrinsic::hexagon_M2_mmpyul_rs1, 15439}, // __builtin_HEXAGON_M2_mmpyul_rs1
- {Intrinsic::hexagon_M2_mmpyul_s0, 15471}, // __builtin_HEXAGON_M2_mmpyul_s0
- {Intrinsic::hexagon_M2_mmpyul_s1, 15502}, // __builtin_HEXAGON_M2_mmpyul_s1
- {Intrinsic::hexagon_M2_mpy_acc_hh_s0, 15533}, // __builtin_HEXAGON_M2_mpy_acc_hh_s0
- {Intrinsic::hexagon_M2_mpy_acc_hh_s1, 15568}, // __builtin_HEXAGON_M2_mpy_acc_hh_s1
- {Intrinsic::hexagon_M2_mpy_acc_hl_s0, 15603}, // __builtin_HEXAGON_M2_mpy_acc_hl_s0
- {Intrinsic::hexagon_M2_mpy_acc_hl_s1, 15638}, // __builtin_HEXAGON_M2_mpy_acc_hl_s1
- {Intrinsic::hexagon_M2_mpy_acc_lh_s0, 15673}, // __builtin_HEXAGON_M2_mpy_acc_lh_s0
- {Intrinsic::hexagon_M2_mpy_acc_lh_s1, 15708}, // __builtin_HEXAGON_M2_mpy_acc_lh_s1
- {Intrinsic::hexagon_M2_mpy_acc_ll_s0, 15743}, // __builtin_HEXAGON_M2_mpy_acc_ll_s0
- {Intrinsic::hexagon_M2_mpy_acc_ll_s1, 15778}, // __builtin_HEXAGON_M2_mpy_acc_ll_s1
- {Intrinsic::hexagon_M2_mpy_acc_sat_hh_s0, 15813}, // __builtin_HEXAGON_M2_mpy_acc_sat_hh_s0
- {Intrinsic::hexagon_M2_mpy_acc_sat_hh_s1, 15852}, // __builtin_HEXAGON_M2_mpy_acc_sat_hh_s1
- {Intrinsic::hexagon_M2_mpy_acc_sat_hl_s0, 15891}, // __builtin_HEXAGON_M2_mpy_acc_sat_hl_s0
- {Intrinsic::hexagon_M2_mpy_acc_sat_hl_s1, 15930}, // __builtin_HEXAGON_M2_mpy_acc_sat_hl_s1
- {Intrinsic::hexagon_M2_mpy_acc_sat_lh_s0, 15969}, // __builtin_HEXAGON_M2_mpy_acc_sat_lh_s0
- {Intrinsic::hexagon_M2_mpy_acc_sat_lh_s1, 16008}, // __builtin_HEXAGON_M2_mpy_acc_sat_lh_s1
- {Intrinsic::hexagon_M2_mpy_acc_sat_ll_s0, 16047}, // __builtin_HEXAGON_M2_mpy_acc_sat_ll_s0
- {Intrinsic::hexagon_M2_mpy_acc_sat_ll_s1, 16086}, // __builtin_HEXAGON_M2_mpy_acc_sat_ll_s1
- {Intrinsic::hexagon_M2_mpy_hh_s0, 16125}, // __builtin_HEXAGON_M2_mpy_hh_s0
- {Intrinsic::hexagon_M2_mpy_hh_s1, 16156}, // __builtin_HEXAGON_M2_mpy_hh_s1
- {Intrinsic::hexagon_M2_mpy_hl_s0, 16187}, // __builtin_HEXAGON_M2_mpy_hl_s0
- {Intrinsic::hexagon_M2_mpy_hl_s1, 16218}, // __builtin_HEXAGON_M2_mpy_hl_s1
- {Intrinsic::hexagon_M2_mpy_lh_s0, 16249}, // __builtin_HEXAGON_M2_mpy_lh_s0
- {Intrinsic::hexagon_M2_mpy_lh_s1, 16280}, // __builtin_HEXAGON_M2_mpy_lh_s1
- {Intrinsic::hexagon_M2_mpy_ll_s0, 16311}, // __builtin_HEXAGON_M2_mpy_ll_s0
- {Intrinsic::hexagon_M2_mpy_ll_s1, 16342}, // __builtin_HEXAGON_M2_mpy_ll_s1
- {Intrinsic::hexagon_M2_mpy_nac_hh_s0, 16373}, // __builtin_HEXAGON_M2_mpy_nac_hh_s0
- {Intrinsic::hexagon_M2_mpy_nac_hh_s1, 16408}, // __builtin_HEXAGON_M2_mpy_nac_hh_s1
- {Intrinsic::hexagon_M2_mpy_nac_hl_s0, 16443}, // __builtin_HEXAGON_M2_mpy_nac_hl_s0
- {Intrinsic::hexagon_M2_mpy_nac_hl_s1, 16478}, // __builtin_HEXAGON_M2_mpy_nac_hl_s1
- {Intrinsic::hexagon_M2_mpy_nac_lh_s0, 16513}, // __builtin_HEXAGON_M2_mpy_nac_lh_s0
- {Intrinsic::hexagon_M2_mpy_nac_lh_s1, 16548}, // __builtin_HEXAGON_M2_mpy_nac_lh_s1
- {Intrinsic::hexagon_M2_mpy_nac_ll_s0, 16583}, // __builtin_HEXAGON_M2_mpy_nac_ll_s0
- {Intrinsic::hexagon_M2_mpy_nac_ll_s1, 16618}, // __builtin_HEXAGON_M2_mpy_nac_ll_s1
- {Intrinsic::hexagon_M2_mpy_nac_sat_hh_s0, 16653}, // __builtin_HEXAGON_M2_mpy_nac_sat_hh_s0
- {Intrinsic::hexagon_M2_mpy_nac_sat_hh_s1, 16692}, // __builtin_HEXAGON_M2_mpy_nac_sat_hh_s1
- {Intrinsic::hexagon_M2_mpy_nac_sat_hl_s0, 16731}, // __builtin_HEXAGON_M2_mpy_nac_sat_hl_s0
- {Intrinsic::hexagon_M2_mpy_nac_sat_hl_s1, 16770}, // __builtin_HEXAGON_M2_mpy_nac_sat_hl_s1
- {Intrinsic::hexagon_M2_mpy_nac_sat_lh_s0, 16809}, // __builtin_HEXAGON_M2_mpy_nac_sat_lh_s0
- {Intrinsic::hexagon_M2_mpy_nac_sat_lh_s1, 16848}, // __builtin_HEXAGON_M2_mpy_nac_sat_lh_s1
- {Intrinsic::hexagon_M2_mpy_nac_sat_ll_s0, 16887}, // __builtin_HEXAGON_M2_mpy_nac_sat_ll_s0
- {Intrinsic::hexagon_M2_mpy_nac_sat_ll_s1, 16926}, // __builtin_HEXAGON_M2_mpy_nac_sat_ll_s1
- {Intrinsic::hexagon_M2_mpy_rnd_hh_s0, 16965}, // __builtin_HEXAGON_M2_mpy_rnd_hh_s0
- {Intrinsic::hexagon_M2_mpy_rnd_hh_s1, 17000}, // __builtin_HEXAGON_M2_mpy_rnd_hh_s1
- {Intrinsic::hexagon_M2_mpy_rnd_hl_s0, 17035}, // __builtin_HEXAGON_M2_mpy_rnd_hl_s0
- {Intrinsic::hexagon_M2_mpy_rnd_hl_s1, 17070}, // __builtin_HEXAGON_M2_mpy_rnd_hl_s1
- {Intrinsic::hexagon_M2_mpy_rnd_lh_s0, 17105}, // __builtin_HEXAGON_M2_mpy_rnd_lh_s0
- {Intrinsic::hexagon_M2_mpy_rnd_lh_s1, 17140}, // __builtin_HEXAGON_M2_mpy_rnd_lh_s1
- {Intrinsic::hexagon_M2_mpy_rnd_ll_s0, 17175}, // __builtin_HEXAGON_M2_mpy_rnd_ll_s0
- {Intrinsic::hexagon_M2_mpy_rnd_ll_s1, 17210}, // __builtin_HEXAGON_M2_mpy_rnd_ll_s1
- {Intrinsic::hexagon_M2_mpy_sat_hh_s0, 17245}, // __builtin_HEXAGON_M2_mpy_sat_hh_s0
- {Intrinsic::hexagon_M2_mpy_sat_hh_s1, 17280}, // __builtin_HEXAGON_M2_mpy_sat_hh_s1
- {Intrinsic::hexagon_M2_mpy_sat_hl_s0, 17315}, // __builtin_HEXAGON_M2_mpy_sat_hl_s0
- {Intrinsic::hexagon_M2_mpy_sat_hl_s1, 17350}, // __builtin_HEXAGON_M2_mpy_sat_hl_s1
- {Intrinsic::hexagon_M2_mpy_sat_lh_s0, 17385}, // __builtin_HEXAGON_M2_mpy_sat_lh_s0
- {Intrinsic::hexagon_M2_mpy_sat_lh_s1, 17420}, // __builtin_HEXAGON_M2_mpy_sat_lh_s1
- {Intrinsic::hexagon_M2_mpy_sat_ll_s0, 17455}, // __builtin_HEXAGON_M2_mpy_sat_ll_s0
- {Intrinsic::hexagon_M2_mpy_sat_ll_s1, 17490}, // __builtin_HEXAGON_M2_mpy_sat_ll_s1
- {Intrinsic::hexagon_M2_mpy_sat_rnd_hh_s0, 17525}, // __builtin_HEXAGON_M2_mpy_sat_rnd_hh_s0
- {Intrinsic::hexagon_M2_mpy_sat_rnd_hh_s1, 17564}, // __builtin_HEXAGON_M2_mpy_sat_rnd_hh_s1
- {Intrinsic::hexagon_M2_mpy_sat_rnd_hl_s0, 17603}, // __builtin_HEXAGON_M2_mpy_sat_rnd_hl_s0
- {Intrinsic::hexagon_M2_mpy_sat_rnd_hl_s1, 17642}, // __builtin_HEXAGON_M2_mpy_sat_rnd_hl_s1
- {Intrinsic::hexagon_M2_mpy_sat_rnd_lh_s0, 17681}, // __builtin_HEXAGON_M2_mpy_sat_rnd_lh_s0
- {Intrinsic::hexagon_M2_mpy_sat_rnd_lh_s1, 17720}, // __builtin_HEXAGON_M2_mpy_sat_rnd_lh_s1
- {Intrinsic::hexagon_M2_mpy_sat_rnd_ll_s0, 17759}, // __builtin_HEXAGON_M2_mpy_sat_rnd_ll_s0
- {Intrinsic::hexagon_M2_mpy_sat_rnd_ll_s1, 17798}, // __builtin_HEXAGON_M2_mpy_sat_rnd_ll_s1
- {Intrinsic::hexagon_M2_mpy_up, 17837}, // __builtin_HEXAGON_M2_mpy_up
- {Intrinsic::hexagon_M2_mpy_up_s1, 17865}, // __builtin_HEXAGON_M2_mpy_up_s1
- {Intrinsic::hexagon_M2_mpy_up_s1_sat, 17896}, // __builtin_HEXAGON_M2_mpy_up_s1_sat
- {Intrinsic::hexagon_M2_mpyd_acc_hh_s0, 17931}, // __builtin_HEXAGON_M2_mpyd_acc_hh_s0
- {Intrinsic::hexagon_M2_mpyd_acc_hh_s1, 17967}, // __builtin_HEXAGON_M2_mpyd_acc_hh_s1
- {Intrinsic::hexagon_M2_mpyd_acc_hl_s0, 18003}, // __builtin_HEXAGON_M2_mpyd_acc_hl_s0
- {Intrinsic::hexagon_M2_mpyd_acc_hl_s1, 18039}, // __builtin_HEXAGON_M2_mpyd_acc_hl_s1
- {Intrinsic::hexagon_M2_mpyd_acc_lh_s0, 18075}, // __builtin_HEXAGON_M2_mpyd_acc_lh_s0
- {Intrinsic::hexagon_M2_mpyd_acc_lh_s1, 18111}, // __builtin_HEXAGON_M2_mpyd_acc_lh_s1
- {Intrinsic::hexagon_M2_mpyd_acc_ll_s0, 18147}, // __builtin_HEXAGON_M2_mpyd_acc_ll_s0
- {Intrinsic::hexagon_M2_mpyd_acc_ll_s1, 18183}, // __builtin_HEXAGON_M2_mpyd_acc_ll_s1
- {Intrinsic::hexagon_M2_mpyd_hh_s0, 18219}, // __builtin_HEXAGON_M2_mpyd_hh_s0
- {Intrinsic::hexagon_M2_mpyd_hh_s1, 18251}, // __builtin_HEXAGON_M2_mpyd_hh_s1
- {Intrinsic::hexagon_M2_mpyd_hl_s0, 18283}, // __builtin_HEXAGON_M2_mpyd_hl_s0
- {Intrinsic::hexagon_M2_mpyd_hl_s1, 18315}, // __builtin_HEXAGON_M2_mpyd_hl_s1
- {Intrinsic::hexagon_M2_mpyd_lh_s0, 18347}, // __builtin_HEXAGON_M2_mpyd_lh_s0
- {Intrinsic::hexagon_M2_mpyd_lh_s1, 18379}, // __builtin_HEXAGON_M2_mpyd_lh_s1
- {Intrinsic::hexagon_M2_mpyd_ll_s0, 18411}, // __builtin_HEXAGON_M2_mpyd_ll_s0
- {Intrinsic::hexagon_M2_mpyd_ll_s1, 18443}, // __builtin_HEXAGON_M2_mpyd_ll_s1
- {Intrinsic::hexagon_M2_mpyd_nac_hh_s0, 18475}, // __builtin_HEXAGON_M2_mpyd_nac_hh_s0
- {Intrinsic::hexagon_M2_mpyd_nac_hh_s1, 18511}, // __builtin_HEXAGON_M2_mpyd_nac_hh_s1
- {Intrinsic::hexagon_M2_mpyd_nac_hl_s0, 18547}, // __builtin_HEXAGON_M2_mpyd_nac_hl_s0
- {Intrinsic::hexagon_M2_mpyd_nac_hl_s1, 18583}, // __builtin_HEXAGON_M2_mpyd_nac_hl_s1
- {Intrinsic::hexagon_M2_mpyd_nac_lh_s0, 18619}, // __builtin_HEXAGON_M2_mpyd_nac_lh_s0
- {Intrinsic::hexagon_M2_mpyd_nac_lh_s1, 18655}, // __builtin_HEXAGON_M2_mpyd_nac_lh_s1
- {Intrinsic::hexagon_M2_mpyd_nac_ll_s0, 18691}, // __builtin_HEXAGON_M2_mpyd_nac_ll_s0
- {Intrinsic::hexagon_M2_mpyd_nac_ll_s1, 18727}, // __builtin_HEXAGON_M2_mpyd_nac_ll_s1
- {Intrinsic::hexagon_M2_mpyd_rnd_hh_s0, 18763}, // __builtin_HEXAGON_M2_mpyd_rnd_hh_s0
- {Intrinsic::hexagon_M2_mpyd_rnd_hh_s1, 18799}, // __builtin_HEXAGON_M2_mpyd_rnd_hh_s1
- {Intrinsic::hexagon_M2_mpyd_rnd_hl_s0, 18835}, // __builtin_HEXAGON_M2_mpyd_rnd_hl_s0
- {Intrinsic::hexagon_M2_mpyd_rnd_hl_s1, 18871}, // __builtin_HEXAGON_M2_mpyd_rnd_hl_s1
- {Intrinsic::hexagon_M2_mpyd_rnd_lh_s0, 18907}, // __builtin_HEXAGON_M2_mpyd_rnd_lh_s0
- {Intrinsic::hexagon_M2_mpyd_rnd_lh_s1, 18943}, // __builtin_HEXAGON_M2_mpyd_rnd_lh_s1
- {Intrinsic::hexagon_M2_mpyd_rnd_ll_s0, 18979}, // __builtin_HEXAGON_M2_mpyd_rnd_ll_s0
- {Intrinsic::hexagon_M2_mpyd_rnd_ll_s1, 19015}, // __builtin_HEXAGON_M2_mpyd_rnd_ll_s1
- {Intrinsic::hexagon_M2_mpyi, 19051}, // __builtin_HEXAGON_M2_mpyi
- {Intrinsic::hexagon_M2_mpysmi, 19077}, // __builtin_HEXAGON_M2_mpysmi
- {Intrinsic::hexagon_M2_mpysu_up, 19105}, // __builtin_HEXAGON_M2_mpysu_up
- {Intrinsic::hexagon_M2_mpyu_acc_hh_s0, 19135}, // __builtin_HEXAGON_M2_mpyu_acc_hh_s0
- {Intrinsic::hexagon_M2_mpyu_acc_hh_s1, 19171}, // __builtin_HEXAGON_M2_mpyu_acc_hh_s1
- {Intrinsic::hexagon_M2_mpyu_acc_hl_s0, 19207}, // __builtin_HEXAGON_M2_mpyu_acc_hl_s0
- {Intrinsic::hexagon_M2_mpyu_acc_hl_s1, 19243}, // __builtin_HEXAGON_M2_mpyu_acc_hl_s1
- {Intrinsic::hexagon_M2_mpyu_acc_lh_s0, 19279}, // __builtin_HEXAGON_M2_mpyu_acc_lh_s0
- {Intrinsic::hexagon_M2_mpyu_acc_lh_s1, 19315}, // __builtin_HEXAGON_M2_mpyu_acc_lh_s1
- {Intrinsic::hexagon_M2_mpyu_acc_ll_s0, 19351}, // __builtin_HEXAGON_M2_mpyu_acc_ll_s0
- {Intrinsic::hexagon_M2_mpyu_acc_ll_s1, 19387}, // __builtin_HEXAGON_M2_mpyu_acc_ll_s1
- {Intrinsic::hexagon_M2_mpyu_hh_s0, 19423}, // __builtin_HEXAGON_M2_mpyu_hh_s0
- {Intrinsic::hexagon_M2_mpyu_hh_s1, 19455}, // __builtin_HEXAGON_M2_mpyu_hh_s1
- {Intrinsic::hexagon_M2_mpyu_hl_s0, 19487}, // __builtin_HEXAGON_M2_mpyu_hl_s0
- {Intrinsic::hexagon_M2_mpyu_hl_s1, 19519}, // __builtin_HEXAGON_M2_mpyu_hl_s1
- {Intrinsic::hexagon_M2_mpyu_lh_s0, 19551}, // __builtin_HEXAGON_M2_mpyu_lh_s0
- {Intrinsic::hexagon_M2_mpyu_lh_s1, 19583}, // __builtin_HEXAGON_M2_mpyu_lh_s1
- {Intrinsic::hexagon_M2_mpyu_ll_s0, 19615}, // __builtin_HEXAGON_M2_mpyu_ll_s0
- {Intrinsic::hexagon_M2_mpyu_ll_s1, 19647}, // __builtin_HEXAGON_M2_mpyu_ll_s1
- {Intrinsic::hexagon_M2_mpyu_nac_hh_s0, 19679}, // __builtin_HEXAGON_M2_mpyu_nac_hh_s0
- {Intrinsic::hexagon_M2_mpyu_nac_hh_s1, 19715}, // __builtin_HEXAGON_M2_mpyu_nac_hh_s1
- {Intrinsic::hexagon_M2_mpyu_nac_hl_s0, 19751}, // __builtin_HEXAGON_M2_mpyu_nac_hl_s0
- {Intrinsic::hexagon_M2_mpyu_nac_hl_s1, 19787}, // __builtin_HEXAGON_M2_mpyu_nac_hl_s1
- {Intrinsic::hexagon_M2_mpyu_nac_lh_s0, 19823}, // __builtin_HEXAGON_M2_mpyu_nac_lh_s0
- {Intrinsic::hexagon_M2_mpyu_nac_lh_s1, 19859}, // __builtin_HEXAGON_M2_mpyu_nac_lh_s1
- {Intrinsic::hexagon_M2_mpyu_nac_ll_s0, 19895}, // __builtin_HEXAGON_M2_mpyu_nac_ll_s0
- {Intrinsic::hexagon_M2_mpyu_nac_ll_s1, 19931}, // __builtin_HEXAGON_M2_mpyu_nac_ll_s1
- {Intrinsic::hexagon_M2_mpyu_up, 19967}, // __builtin_HEXAGON_M2_mpyu_up
- {Intrinsic::hexagon_M2_mpyud_acc_hh_s0, 19996}, // __builtin_HEXAGON_M2_mpyud_acc_hh_s0
- {Intrinsic::hexagon_M2_mpyud_acc_hh_s1, 20033}, // __builtin_HEXAGON_M2_mpyud_acc_hh_s1
- {Intrinsic::hexagon_M2_mpyud_acc_hl_s0, 20070}, // __builtin_HEXAGON_M2_mpyud_acc_hl_s0
- {Intrinsic::hexagon_M2_mpyud_acc_hl_s1, 20107}, // __builtin_HEXAGON_M2_mpyud_acc_hl_s1
- {Intrinsic::hexagon_M2_mpyud_acc_lh_s0, 20144}, // __builtin_HEXAGON_M2_mpyud_acc_lh_s0
- {Intrinsic::hexagon_M2_mpyud_acc_lh_s1, 20181}, // __builtin_HEXAGON_M2_mpyud_acc_lh_s1
- {Intrinsic::hexagon_M2_mpyud_acc_ll_s0, 20218}, // __builtin_HEXAGON_M2_mpyud_acc_ll_s0
- {Intrinsic::hexagon_M2_mpyud_acc_ll_s1, 20255}, // __builtin_HEXAGON_M2_mpyud_acc_ll_s1
- {Intrinsic::hexagon_M2_mpyud_hh_s0, 20292}, // __builtin_HEXAGON_M2_mpyud_hh_s0
- {Intrinsic::hexagon_M2_mpyud_hh_s1, 20325}, // __builtin_HEXAGON_M2_mpyud_hh_s1
- {Intrinsic::hexagon_M2_mpyud_hl_s0, 20358}, // __builtin_HEXAGON_M2_mpyud_hl_s0
- {Intrinsic::hexagon_M2_mpyud_hl_s1, 20391}, // __builtin_HEXAGON_M2_mpyud_hl_s1
- {Intrinsic::hexagon_M2_mpyud_lh_s0, 20424}, // __builtin_HEXAGON_M2_mpyud_lh_s0
- {Intrinsic::hexagon_M2_mpyud_lh_s1, 20457}, // __builtin_HEXAGON_M2_mpyud_lh_s1
- {Intrinsic::hexagon_M2_mpyud_ll_s0, 20490}, // __builtin_HEXAGON_M2_mpyud_ll_s0
- {Intrinsic::hexagon_M2_mpyud_ll_s1, 20523}, // __builtin_HEXAGON_M2_mpyud_ll_s1
- {Intrinsic::hexagon_M2_mpyud_nac_hh_s0, 20556}, // __builtin_HEXAGON_M2_mpyud_nac_hh_s0
- {Intrinsic::hexagon_M2_mpyud_nac_hh_s1, 20593}, // __builtin_HEXAGON_M2_mpyud_nac_hh_s1
- {Intrinsic::hexagon_M2_mpyud_nac_hl_s0, 20630}, // __builtin_HEXAGON_M2_mpyud_nac_hl_s0
- {Intrinsic::hexagon_M2_mpyud_nac_hl_s1, 20667}, // __builtin_HEXAGON_M2_mpyud_nac_hl_s1
- {Intrinsic::hexagon_M2_mpyud_nac_lh_s0, 20704}, // __builtin_HEXAGON_M2_mpyud_nac_lh_s0
- {Intrinsic::hexagon_M2_mpyud_nac_lh_s1, 20741}, // __builtin_HEXAGON_M2_mpyud_nac_lh_s1
- {Intrinsic::hexagon_M2_mpyud_nac_ll_s0, 20778}, // __builtin_HEXAGON_M2_mpyud_nac_ll_s0
- {Intrinsic::hexagon_M2_mpyud_nac_ll_s1, 20815}, // __builtin_HEXAGON_M2_mpyud_nac_ll_s1
- {Intrinsic::hexagon_M2_mpyui, 20852}, // __builtin_HEXAGON_M2_mpyui
- {Intrinsic::hexagon_M2_nacci, 20879}, // __builtin_HEXAGON_M2_nacci
- {Intrinsic::hexagon_M2_naccii, 20906}, // __builtin_HEXAGON_M2_naccii
- {Intrinsic::hexagon_M2_subacc, 20934}, // __builtin_HEXAGON_M2_subacc
- {Intrinsic::hexagon_M2_vabsdiffh, 20962}, // __builtin_HEXAGON_M2_vabsdiffh
- {Intrinsic::hexagon_M2_vabsdiffw, 20993}, // __builtin_HEXAGON_M2_vabsdiffw
- {Intrinsic::hexagon_M2_vcmac_s0_sat_i, 21024}, // __builtin_HEXAGON_M2_vcmac_s0_sat_i
- {Intrinsic::hexagon_M2_vcmac_s0_sat_r, 21060}, // __builtin_HEXAGON_M2_vcmac_s0_sat_r
- {Intrinsic::hexagon_M2_vcmpy_s0_sat_i, 21096}, // __builtin_HEXAGON_M2_vcmpy_s0_sat_i
- {Intrinsic::hexagon_M2_vcmpy_s0_sat_r, 21132}, // __builtin_HEXAGON_M2_vcmpy_s0_sat_r
- {Intrinsic::hexagon_M2_vcmpy_s1_sat_i, 21168}, // __builtin_HEXAGON_M2_vcmpy_s1_sat_i
- {Intrinsic::hexagon_M2_vcmpy_s1_sat_r, 21204}, // __builtin_HEXAGON_M2_vcmpy_s1_sat_r
- {Intrinsic::hexagon_M2_vdmacs_s0, 21240}, // __builtin_HEXAGON_M2_vdmacs_s0
- {Intrinsic::hexagon_M2_vdmacs_s1, 21271}, // __builtin_HEXAGON_M2_vdmacs_s1
- {Intrinsic::hexagon_M2_vdmpyrs_s0, 21302}, // __builtin_HEXAGON_M2_vdmpyrs_s0
- {Intrinsic::hexagon_M2_vdmpyrs_s1, 21334}, // __builtin_HEXAGON_M2_vdmpyrs_s1
- {Intrinsic::hexagon_M2_vdmpys_s0, 21366}, // __builtin_HEXAGON_M2_vdmpys_s0
- {Intrinsic::hexagon_M2_vdmpys_s1, 21397}, // __builtin_HEXAGON_M2_vdmpys_s1
- {Intrinsic::hexagon_M2_vmac2, 21428}, // __builtin_HEXAGON_M2_vmac2
- {Intrinsic::hexagon_M2_vmac2es, 21455}, // __builtin_HEXAGON_M2_vmac2es
- {Intrinsic::hexagon_M2_vmac2es_s0, 21484}, // __builtin_HEXAGON_M2_vmac2es_s0
- {Intrinsic::hexagon_M2_vmac2es_s1, 21516}, // __builtin_HEXAGON_M2_vmac2es_s1
- {Intrinsic::hexagon_M2_vmac2s_s0, 21548}, // __builtin_HEXAGON_M2_vmac2s_s0
- {Intrinsic::hexagon_M2_vmac2s_s1, 21579}, // __builtin_HEXAGON_M2_vmac2s_s1
- {Intrinsic::hexagon_M2_vmac2su_s0, 21610}, // __builtin_HEXAGON_M2_vmac2su_s0
- {Intrinsic::hexagon_M2_vmac2su_s1, 21642}, // __builtin_HEXAGON_M2_vmac2su_s1
- {Intrinsic::hexagon_M2_vmpy2es_s0, 21674}, // __builtin_HEXAGON_M2_vmpy2es_s0
- {Intrinsic::hexagon_M2_vmpy2es_s1, 21706}, // __builtin_HEXAGON_M2_vmpy2es_s1
- {Intrinsic::hexagon_M2_vmpy2s_s0, 21738}, // __builtin_HEXAGON_M2_vmpy2s_s0
- {Intrinsic::hexagon_M2_vmpy2s_s0pack, 21769}, // __builtin_HEXAGON_M2_vmpy2s_s0pack
- {Intrinsic::hexagon_M2_vmpy2s_s1, 21804}, // __builtin_HEXAGON_M2_vmpy2s_s1
- {Intrinsic::hexagon_M2_vmpy2s_s1pack, 21835}, // __builtin_HEXAGON_M2_vmpy2s_s1pack
- {Intrinsic::hexagon_M2_vmpy2su_s0, 21870}, // __builtin_HEXAGON_M2_vmpy2su_s0
- {Intrinsic::hexagon_M2_vmpy2su_s1, 21902}, // __builtin_HEXAGON_M2_vmpy2su_s1
- {Intrinsic::hexagon_M2_vraddh, 21934}, // __builtin_HEXAGON_M2_vraddh
- {Intrinsic::hexagon_M2_vradduh, 21962}, // __builtin_HEXAGON_M2_vradduh
- {Intrinsic::hexagon_M2_vrcmaci_s0, 21991}, // __builtin_HEXAGON_M2_vrcmaci_s0
- {Intrinsic::hexagon_M2_vrcmaci_s0c, 22023}, // __builtin_HEXAGON_M2_vrcmaci_s0c
- {Intrinsic::hexagon_M2_vrcmacr_s0, 22056}, // __builtin_HEXAGON_M2_vrcmacr_s0
- {Intrinsic::hexagon_M2_vrcmacr_s0c, 22088}, // __builtin_HEXAGON_M2_vrcmacr_s0c
- {Intrinsic::hexagon_M2_vrcmpyi_s0, 22121}, // __builtin_HEXAGON_M2_vrcmpyi_s0
- {Intrinsic::hexagon_M2_vrcmpyi_s0c, 22153}, // __builtin_HEXAGON_M2_vrcmpyi_s0c
- {Intrinsic::hexagon_M2_vrcmpyr_s0, 22186}, // __builtin_HEXAGON_M2_vrcmpyr_s0
- {Intrinsic::hexagon_M2_vrcmpyr_s0c, 22218}, // __builtin_HEXAGON_M2_vrcmpyr_s0c
- {Intrinsic::hexagon_M2_vrcmpys_acc_s1, 22251}, // __builtin_HEXAGON_M2_vrcmpys_acc_s1
- {Intrinsic::hexagon_M2_vrcmpys_s1, 22287}, // __builtin_HEXAGON_M2_vrcmpys_s1
- {Intrinsic::hexagon_M2_vrcmpys_s1rp, 22319}, // __builtin_HEXAGON_M2_vrcmpys_s1rp
- {Intrinsic::hexagon_M2_vrmac_s0, 22353}, // __builtin_HEXAGON_M2_vrmac_s0
- {Intrinsic::hexagon_M2_vrmpy_s0, 22383}, // __builtin_HEXAGON_M2_vrmpy_s0
- {Intrinsic::hexagon_M2_xor_xacc, 22413}, // __builtin_HEXAGON_M2_xor_xacc
- {Intrinsic::hexagon_M4_and_and, 22443}, // __builtin_HEXAGON_M4_and_and
- {Intrinsic::hexagon_M4_and_andn, 22472}, // __builtin_HEXAGON_M4_and_andn
- {Intrinsic::hexagon_M4_and_or, 22502}, // __builtin_HEXAGON_M4_and_or
- {Intrinsic::hexagon_M4_and_xor, 22530}, // __builtin_HEXAGON_M4_and_xor
- {Intrinsic::hexagon_M4_cmpyi_wh, 22559}, // __builtin_HEXAGON_M4_cmpyi_wh
- {Intrinsic::hexagon_M4_cmpyi_whc, 22589}, // __builtin_HEXAGON_M4_cmpyi_whc
- {Intrinsic::hexagon_M4_cmpyr_wh, 22620}, // __builtin_HEXAGON_M4_cmpyr_wh
- {Intrinsic::hexagon_M4_cmpyr_whc, 22650}, // __builtin_HEXAGON_M4_cmpyr_whc
- {Intrinsic::hexagon_M4_mac_up_s1_sat, 22681}, // __builtin_HEXAGON_M4_mac_up_s1_sat
- {Intrinsic::hexagon_M4_mpyri_addi, 22716}, // __builtin_HEXAGON_M4_mpyri_addi
- {Intrinsic::hexagon_M4_mpyri_addr, 22748}, // __builtin_HEXAGON_M4_mpyri_addr
- {Intrinsic::hexagon_M4_mpyri_addr_u2, 22780}, // __builtin_HEXAGON_M4_mpyri_addr_u2
- {Intrinsic::hexagon_M4_mpyrr_addi, 22815}, // __builtin_HEXAGON_M4_mpyrr_addi
- {Intrinsic::hexagon_M4_mpyrr_addr, 22847}, // __builtin_HEXAGON_M4_mpyrr_addr
- {Intrinsic::hexagon_M4_nac_up_s1_sat, 22879}, // __builtin_HEXAGON_M4_nac_up_s1_sat
- {Intrinsic::hexagon_M4_or_and, 22914}, // __builtin_HEXAGON_M4_or_and
- {Intrinsic::hexagon_M4_or_andn, 22942}, // __builtin_HEXAGON_M4_or_andn
- {Intrinsic::hexagon_M4_or_or, 22971}, // __builtin_HEXAGON_M4_or_or
- {Intrinsic::hexagon_M4_or_xor, 22998}, // __builtin_HEXAGON_M4_or_xor
- {Intrinsic::hexagon_M4_pmpyw, 23026}, // __builtin_HEXAGON_M4_pmpyw
- {Intrinsic::hexagon_M4_pmpyw_acc, 23053}, // __builtin_HEXAGON_M4_pmpyw_acc
- {Intrinsic::hexagon_M4_vpmpyh, 23084}, // __builtin_HEXAGON_M4_vpmpyh
- {Intrinsic::hexagon_M4_vpmpyh_acc, 23112}, // __builtin_HEXAGON_M4_vpmpyh_acc
- {Intrinsic::hexagon_M4_vrmpyeh_acc_s0, 23144}, // __builtin_HEXAGON_M4_vrmpyeh_acc_s0
- {Intrinsic::hexagon_M4_vrmpyeh_acc_s1, 23180}, // __builtin_HEXAGON_M4_vrmpyeh_acc_s1
- {Intrinsic::hexagon_M4_vrmpyeh_s0, 23216}, // __builtin_HEXAGON_M4_vrmpyeh_s0
- {Intrinsic::hexagon_M4_vrmpyeh_s1, 23248}, // __builtin_HEXAGON_M4_vrmpyeh_s1
- {Intrinsic::hexagon_M4_vrmpyoh_acc_s0, 23280}, // __builtin_HEXAGON_M4_vrmpyoh_acc_s0
- {Intrinsic::hexagon_M4_vrmpyoh_acc_s1, 23316}, // __builtin_HEXAGON_M4_vrmpyoh_acc_s1
- {Intrinsic::hexagon_M4_vrmpyoh_s0, 23352}, // __builtin_HEXAGON_M4_vrmpyoh_s0
- {Intrinsic::hexagon_M4_vrmpyoh_s1, 23384}, // __builtin_HEXAGON_M4_vrmpyoh_s1
- {Intrinsic::hexagon_M4_xor_and, 23416}, // __builtin_HEXAGON_M4_xor_and
- {Intrinsic::hexagon_M4_xor_andn, 23445}, // __builtin_HEXAGON_M4_xor_andn
- {Intrinsic::hexagon_M4_xor_or, 23475}, // __builtin_HEXAGON_M4_xor_or
- {Intrinsic::hexagon_M4_xor_xacc, 23503}, // __builtin_HEXAGON_M4_xor_xacc
- {Intrinsic::hexagon_M5_vdmacbsu, 23533}, // __builtin_HEXAGON_M5_vdmacbsu
- {Intrinsic::hexagon_M5_vdmpybsu, 23563}, // __builtin_HEXAGON_M5_vdmpybsu
- {Intrinsic::hexagon_M5_vmacbsu, 23593}, // __builtin_HEXAGON_M5_vmacbsu
- {Intrinsic::hexagon_M5_vmacbuu, 23622}, // __builtin_HEXAGON_M5_vmacbuu
- {Intrinsic::hexagon_M5_vmpybsu, 23651}, // __builtin_HEXAGON_M5_vmpybsu
- {Intrinsic::hexagon_M5_vmpybuu, 23680}, // __builtin_HEXAGON_M5_vmpybuu
- {Intrinsic::hexagon_M5_vrmacbsu, 23709}, // __builtin_HEXAGON_M5_vrmacbsu
- {Intrinsic::hexagon_M5_vrmacbuu, 23739}, // __builtin_HEXAGON_M5_vrmacbuu
- {Intrinsic::hexagon_M5_vrmpybsu, 23769}, // __builtin_HEXAGON_M5_vrmpybsu
- {Intrinsic::hexagon_M5_vrmpybuu, 23799}, // __builtin_HEXAGON_M5_vrmpybuu
- {Intrinsic::hexagon_M6_vabsdiffb, 23829}, // __builtin_HEXAGON_M6_vabsdiffb
- {Intrinsic::hexagon_M6_vabsdiffub, 23860}, // __builtin_HEXAGON_M6_vabsdiffub
- {Intrinsic::hexagon_S2_addasl_rrri, 23892}, // __builtin_HEXAGON_S2_addasl_rrri
- {Intrinsic::hexagon_S2_asl_i_p, 23925}, // __builtin_HEXAGON_S2_asl_i_p
- {Intrinsic::hexagon_S2_asl_i_p_acc, 23954}, // __builtin_HEXAGON_S2_asl_i_p_acc
- {Intrinsic::hexagon_S2_asl_i_p_and, 23987}, // __builtin_HEXAGON_S2_asl_i_p_and
- {Intrinsic::hexagon_S2_asl_i_p_nac, 24020}, // __builtin_HEXAGON_S2_asl_i_p_nac
- {Intrinsic::hexagon_S2_asl_i_p_or, 24053}, // __builtin_HEXAGON_S2_asl_i_p_or
- {Intrinsic::hexagon_S2_asl_i_p_xacc, 24085}, // __builtin_HEXAGON_S2_asl_i_p_xacc
- {Intrinsic::hexagon_S2_asl_i_r, 24119}, // __builtin_HEXAGON_S2_asl_i_r
- {Intrinsic::hexagon_S2_asl_i_r_acc, 24148}, // __builtin_HEXAGON_S2_asl_i_r_acc
- {Intrinsic::hexagon_S2_asl_i_r_and, 24181}, // __builtin_HEXAGON_S2_asl_i_r_and
- {Intrinsic::hexagon_S2_asl_i_r_nac, 24214}, // __builtin_HEXAGON_S2_asl_i_r_nac
- {Intrinsic::hexagon_S2_asl_i_r_or, 24247}, // __builtin_HEXAGON_S2_asl_i_r_or
- {Intrinsic::hexagon_S2_asl_i_r_sat, 24279}, // __builtin_HEXAGON_S2_asl_i_r_sat
- {Intrinsic::hexagon_S2_asl_i_r_xacc, 24312}, // __builtin_HEXAGON_S2_asl_i_r_xacc
- {Intrinsic::hexagon_S2_asl_i_vh, 24346}, // __builtin_HEXAGON_S2_asl_i_vh
- {Intrinsic::hexagon_S2_asl_i_vw, 24376}, // __builtin_HEXAGON_S2_asl_i_vw
- {Intrinsic::hexagon_S2_asl_r_p, 24406}, // __builtin_HEXAGON_S2_asl_r_p
- {Intrinsic::hexagon_S2_asl_r_p_acc, 24435}, // __builtin_HEXAGON_S2_asl_r_p_acc
- {Intrinsic::hexagon_S2_asl_r_p_and, 24468}, // __builtin_HEXAGON_S2_asl_r_p_and
- {Intrinsic::hexagon_S2_asl_r_p_nac, 24501}, // __builtin_HEXAGON_S2_asl_r_p_nac
- {Intrinsic::hexagon_S2_asl_r_p_or, 24534}, // __builtin_HEXAGON_S2_asl_r_p_or
- {Intrinsic::hexagon_S2_asl_r_p_xor, 24566}, // __builtin_HEXAGON_S2_asl_r_p_xor
- {Intrinsic::hexagon_S2_asl_r_r, 24599}, // __builtin_HEXAGON_S2_asl_r_r
- {Intrinsic::hexagon_S2_asl_r_r_acc, 24628}, // __builtin_HEXAGON_S2_asl_r_r_acc
- {Intrinsic::hexagon_S2_asl_r_r_and, 24661}, // __builtin_HEXAGON_S2_asl_r_r_and
- {Intrinsic::hexagon_S2_asl_r_r_nac, 24694}, // __builtin_HEXAGON_S2_asl_r_r_nac
- {Intrinsic::hexagon_S2_asl_r_r_or, 24727}, // __builtin_HEXAGON_S2_asl_r_r_or
- {Intrinsic::hexagon_S2_asl_r_r_sat, 24759}, // __builtin_HEXAGON_S2_asl_r_r_sat
- {Intrinsic::hexagon_S2_asl_r_vh, 24792}, // __builtin_HEXAGON_S2_asl_r_vh
- {Intrinsic::hexagon_S2_asl_r_vw, 24822}, // __builtin_HEXAGON_S2_asl_r_vw
- {Intrinsic::hexagon_S2_asr_i_p, 24852}, // __builtin_HEXAGON_S2_asr_i_p
- {Intrinsic::hexagon_S2_asr_i_p_acc, 24881}, // __builtin_HEXAGON_S2_asr_i_p_acc
- {Intrinsic::hexagon_S2_asr_i_p_and, 24914}, // __builtin_HEXAGON_S2_asr_i_p_and
- {Intrinsic::hexagon_S2_asr_i_p_nac, 24947}, // __builtin_HEXAGON_S2_asr_i_p_nac
- {Intrinsic::hexagon_S2_asr_i_p_or, 24980}, // __builtin_HEXAGON_S2_asr_i_p_or
- {Intrinsic::hexagon_S2_asr_i_p_rnd, 25012}, // __builtin_HEXAGON_S2_asr_i_p_rnd
- {Intrinsic::hexagon_S2_asr_i_p_rnd_goodsyntax, 25045}, // __builtin_HEXAGON_S2_asr_i_p_rnd_goodsyntax
- {Intrinsic::hexagon_S2_asr_i_r, 25089}, // __builtin_HEXAGON_S2_asr_i_r
- {Intrinsic::hexagon_S2_asr_i_r_acc, 25118}, // __builtin_HEXAGON_S2_asr_i_r_acc
- {Intrinsic::hexagon_S2_asr_i_r_and, 25151}, // __builtin_HEXAGON_S2_asr_i_r_and
- {Intrinsic::hexagon_S2_asr_i_r_nac, 25184}, // __builtin_HEXAGON_S2_asr_i_r_nac
- {Intrinsic::hexagon_S2_asr_i_r_or, 25217}, // __builtin_HEXAGON_S2_asr_i_r_or
- {Intrinsic::hexagon_S2_asr_i_r_rnd, 25249}, // __builtin_HEXAGON_S2_asr_i_r_rnd
- {Intrinsic::hexagon_S2_asr_i_r_rnd_goodsyntax, 25282}, // __builtin_HEXAGON_S2_asr_i_r_rnd_goodsyntax
- {Intrinsic::hexagon_S2_asr_i_svw_trun, 25326}, // __builtin_HEXAGON_S2_asr_i_svw_trun
- {Intrinsic::hexagon_S2_asr_i_vh, 25362}, // __builtin_HEXAGON_S2_asr_i_vh
- {Intrinsic::hexagon_S2_asr_i_vw, 25392}, // __builtin_HEXAGON_S2_asr_i_vw
- {Intrinsic::hexagon_S2_asr_r_p, 25422}, // __builtin_HEXAGON_S2_asr_r_p
- {Intrinsic::hexagon_S2_asr_r_p_acc, 25451}, // __builtin_HEXAGON_S2_asr_r_p_acc
- {Intrinsic::hexagon_S2_asr_r_p_and, 25484}, // __builtin_HEXAGON_S2_asr_r_p_and
- {Intrinsic::hexagon_S2_asr_r_p_nac, 25517}, // __builtin_HEXAGON_S2_asr_r_p_nac
- {Intrinsic::hexagon_S2_asr_r_p_or, 25550}, // __builtin_HEXAGON_S2_asr_r_p_or
- {Intrinsic::hexagon_S2_asr_r_p_xor, 25582}, // __builtin_HEXAGON_S2_asr_r_p_xor
- {Intrinsic::hexagon_S2_asr_r_r, 25615}, // __builtin_HEXAGON_S2_asr_r_r
- {Intrinsic::hexagon_S2_asr_r_r_acc, 25644}, // __builtin_HEXAGON_S2_asr_r_r_acc
- {Intrinsic::hexagon_S2_asr_r_r_and, 25677}, // __builtin_HEXAGON_S2_asr_r_r_and
- {Intrinsic::hexagon_S2_asr_r_r_nac, 25710}, // __builtin_HEXAGON_S2_asr_r_r_nac
- {Intrinsic::hexagon_S2_asr_r_r_or, 25743}, // __builtin_HEXAGON_S2_asr_r_r_or
- {Intrinsic::hexagon_S2_asr_r_r_sat, 25775}, // __builtin_HEXAGON_S2_asr_r_r_sat
- {Intrinsic::hexagon_S2_asr_r_svw_trun, 25808}, // __builtin_HEXAGON_S2_asr_r_svw_trun
- {Intrinsic::hexagon_S2_asr_r_vh, 25844}, // __builtin_HEXAGON_S2_asr_r_vh
- {Intrinsic::hexagon_S2_asr_r_vw, 25874}, // __builtin_HEXAGON_S2_asr_r_vw
- {Intrinsic::hexagon_S2_brev, 25904}, // __builtin_HEXAGON_S2_brev
- {Intrinsic::hexagon_S2_brevp, 25930}, // __builtin_HEXAGON_S2_brevp
- {Intrinsic::hexagon_S2_cabacencbin, 25957}, // __builtin_HEXAGON_S2_cabacencbin
- {Intrinsic::hexagon_S2_cl0, 25990}, // __builtin_HEXAGON_S2_cl0
- {Intrinsic::hexagon_S2_cl0p, 26015}, // __builtin_HEXAGON_S2_cl0p
- {Intrinsic::hexagon_S2_cl1, 26041}, // __builtin_HEXAGON_S2_cl1
- {Intrinsic::hexagon_S2_cl1p, 26066}, // __builtin_HEXAGON_S2_cl1p
- {Intrinsic::hexagon_S2_clb, 26092}, // __builtin_HEXAGON_S2_clb
- {Intrinsic::hexagon_S2_clbnorm, 26117}, // __builtin_HEXAGON_S2_clbnorm
- {Intrinsic::hexagon_S2_clbp, 26146}, // __builtin_HEXAGON_S2_clbp
- {Intrinsic::hexagon_S2_clrbit_i, 26172}, // __builtin_HEXAGON_S2_clrbit_i
- {Intrinsic::hexagon_S2_clrbit_r, 26202}, // __builtin_HEXAGON_S2_clrbit_r
- {Intrinsic::hexagon_S2_ct0, 26232}, // __builtin_HEXAGON_S2_ct0
- {Intrinsic::hexagon_S2_ct0p, 26257}, // __builtin_HEXAGON_S2_ct0p
- {Intrinsic::hexagon_S2_ct1, 26283}, // __builtin_HEXAGON_S2_ct1
- {Intrinsic::hexagon_S2_ct1p, 26308}, // __builtin_HEXAGON_S2_ct1p
- {Intrinsic::hexagon_S2_deinterleave, 26334}, // __builtin_HEXAGON_S2_deinterleave
- {Intrinsic::hexagon_S2_extractu, 26368}, // __builtin_HEXAGON_S2_extractu
- {Intrinsic::hexagon_S2_extractu_rp, 26398}, // __builtin_HEXAGON_S2_extractu_rp
- {Intrinsic::hexagon_S2_extractup, 26431}, // __builtin_HEXAGON_S2_extractup
- {Intrinsic::hexagon_S2_extractup_rp, 26462}, // __builtin_HEXAGON_S2_extractup_rp
- {Intrinsic::hexagon_S2_insert, 26496}, // __builtin_HEXAGON_S2_insert
- {Intrinsic::hexagon_S2_insert_rp, 26524}, // __builtin_HEXAGON_S2_insert_rp
- {Intrinsic::hexagon_S2_insertp, 26555}, // __builtin_HEXAGON_S2_insertp
- {Intrinsic::hexagon_S2_insertp_rp, 26584}, // __builtin_HEXAGON_S2_insertp_rp
- {Intrinsic::hexagon_S2_interleave, 26616}, // __builtin_HEXAGON_S2_interleave
- {Intrinsic::hexagon_S2_lfsp, 26648}, // __builtin_HEXAGON_S2_lfsp
- {Intrinsic::hexagon_S2_lsl_r_p, 26674}, // __builtin_HEXAGON_S2_lsl_r_p
- {Intrinsic::hexagon_S2_lsl_r_p_acc, 26703}, // __builtin_HEXAGON_S2_lsl_r_p_acc
- {Intrinsic::hexagon_S2_lsl_r_p_and, 26736}, // __builtin_HEXAGON_S2_lsl_r_p_and
- {Intrinsic::hexagon_S2_lsl_r_p_nac, 26769}, // __builtin_HEXAGON_S2_lsl_r_p_nac
- {Intrinsic::hexagon_S2_lsl_r_p_or, 26802}, // __builtin_HEXAGON_S2_lsl_r_p_or
- {Intrinsic::hexagon_S2_lsl_r_p_xor, 26834}, // __builtin_HEXAGON_S2_lsl_r_p_xor
- {Intrinsic::hexagon_S2_lsl_r_r, 26867}, // __builtin_HEXAGON_S2_lsl_r_r
- {Intrinsic::hexagon_S2_lsl_r_r_acc, 26896}, // __builtin_HEXAGON_S2_lsl_r_r_acc
- {Intrinsic::hexagon_S2_lsl_r_r_and, 26929}, // __builtin_HEXAGON_S2_lsl_r_r_and
- {Intrinsic::hexagon_S2_lsl_r_r_nac, 26962}, // __builtin_HEXAGON_S2_lsl_r_r_nac
- {Intrinsic::hexagon_S2_lsl_r_r_or, 26995}, // __builtin_HEXAGON_S2_lsl_r_r_or
- {Intrinsic::hexagon_S2_lsl_r_vh, 27027}, // __builtin_HEXAGON_S2_lsl_r_vh
- {Intrinsic::hexagon_S2_lsl_r_vw, 27057}, // __builtin_HEXAGON_S2_lsl_r_vw
- {Intrinsic::hexagon_S2_lsr_i_p, 27087}, // __builtin_HEXAGON_S2_lsr_i_p
- {Intrinsic::hexagon_S2_lsr_i_p_acc, 27116}, // __builtin_HEXAGON_S2_lsr_i_p_acc
- {Intrinsic::hexagon_S2_lsr_i_p_and, 27149}, // __builtin_HEXAGON_S2_lsr_i_p_and
- {Intrinsic::hexagon_S2_lsr_i_p_nac, 27182}, // __builtin_HEXAGON_S2_lsr_i_p_nac
- {Intrinsic::hexagon_S2_lsr_i_p_or, 27215}, // __builtin_HEXAGON_S2_lsr_i_p_or
- {Intrinsic::hexagon_S2_lsr_i_p_xacc, 27247}, // __builtin_HEXAGON_S2_lsr_i_p_xacc
- {Intrinsic::hexagon_S2_lsr_i_r, 27281}, // __builtin_HEXAGON_S2_lsr_i_r
- {Intrinsic::hexagon_S2_lsr_i_r_acc, 27310}, // __builtin_HEXAGON_S2_lsr_i_r_acc
- {Intrinsic::hexagon_S2_lsr_i_r_and, 27343}, // __builtin_HEXAGON_S2_lsr_i_r_and
- {Intrinsic::hexagon_S2_lsr_i_r_nac, 27376}, // __builtin_HEXAGON_S2_lsr_i_r_nac
- {Intrinsic::hexagon_S2_lsr_i_r_or, 27409}, // __builtin_HEXAGON_S2_lsr_i_r_or
- {Intrinsic::hexagon_S2_lsr_i_r_xacc, 27441}, // __builtin_HEXAGON_S2_lsr_i_r_xacc
- {Intrinsic::hexagon_S2_lsr_i_vh, 27475}, // __builtin_HEXAGON_S2_lsr_i_vh
- {Intrinsic::hexagon_S2_lsr_i_vw, 27505}, // __builtin_HEXAGON_S2_lsr_i_vw
- {Intrinsic::hexagon_S2_lsr_r_p, 27535}, // __builtin_HEXAGON_S2_lsr_r_p
- {Intrinsic::hexagon_S2_lsr_r_p_acc, 27564}, // __builtin_HEXAGON_S2_lsr_r_p_acc
- {Intrinsic::hexagon_S2_lsr_r_p_and, 27597}, // __builtin_HEXAGON_S2_lsr_r_p_and
- {Intrinsic::hexagon_S2_lsr_r_p_nac, 27630}, // __builtin_HEXAGON_S2_lsr_r_p_nac
- {Intrinsic::hexagon_S2_lsr_r_p_or, 27663}, // __builtin_HEXAGON_S2_lsr_r_p_or
- {Intrinsic::hexagon_S2_lsr_r_p_xor, 27695}, // __builtin_HEXAGON_S2_lsr_r_p_xor
- {Intrinsic::hexagon_S2_lsr_r_r, 27728}, // __builtin_HEXAGON_S2_lsr_r_r
- {Intrinsic::hexagon_S2_lsr_r_r_acc, 27757}, // __builtin_HEXAGON_S2_lsr_r_r_acc
- {Intrinsic::hexagon_S2_lsr_r_r_and, 27790}, // __builtin_HEXAGON_S2_lsr_r_r_and
- {Intrinsic::hexagon_S2_lsr_r_r_nac, 27823}, // __builtin_HEXAGON_S2_lsr_r_r_nac
- {Intrinsic::hexagon_S2_lsr_r_r_or, 27856}, // __builtin_HEXAGON_S2_lsr_r_r_or
- {Intrinsic::hexagon_S2_lsr_r_vh, 27888}, // __builtin_HEXAGON_S2_lsr_r_vh
- {Intrinsic::hexagon_S2_lsr_r_vw, 27918}, // __builtin_HEXAGON_S2_lsr_r_vw
- {Intrinsic::hexagon_S2_packhl, 27948}, // __builtin_HEXAGON_S2_packhl
- {Intrinsic::hexagon_S2_parityp, 27976}, // __builtin_HEXAGON_S2_parityp
- {Intrinsic::hexagon_S2_setbit_i, 28005}, // __builtin_HEXAGON_S2_setbit_i
- {Intrinsic::hexagon_S2_setbit_r, 28035}, // __builtin_HEXAGON_S2_setbit_r
- {Intrinsic::hexagon_S2_shuffeb, 28065}, // __builtin_HEXAGON_S2_shuffeb
- {Intrinsic::hexagon_S2_shuffeh, 28094}, // __builtin_HEXAGON_S2_shuffeh
- {Intrinsic::hexagon_S2_shuffob, 28123}, // __builtin_HEXAGON_S2_shuffob
- {Intrinsic::hexagon_S2_shuffoh, 28152}, // __builtin_HEXAGON_S2_shuffoh
- {Intrinsic::hexagon_S2_storew_locked, 28278}, // __builtin_HEXAGON_S2_storew_locked
- {Intrinsic::hexagon_S2_svsathb, 28313}, // __builtin_HEXAGON_S2_svsathb
- {Intrinsic::hexagon_S2_svsathub, 28342}, // __builtin_HEXAGON_S2_svsathub
- {Intrinsic::hexagon_S2_tableidxb_goodsyntax, 28372}, // __builtin_HEXAGON_S2_tableidxb_goodsyntax
- {Intrinsic::hexagon_S2_tableidxd_goodsyntax, 28414}, // __builtin_HEXAGON_S2_tableidxd_goodsyntax
- {Intrinsic::hexagon_S2_tableidxh_goodsyntax, 28456}, // __builtin_HEXAGON_S2_tableidxh_goodsyntax
- {Intrinsic::hexagon_S2_tableidxw_goodsyntax, 28498}, // __builtin_HEXAGON_S2_tableidxw_goodsyntax
- {Intrinsic::hexagon_S2_togglebit_i, 28540}, // __builtin_HEXAGON_S2_togglebit_i
- {Intrinsic::hexagon_S2_togglebit_r, 28573}, // __builtin_HEXAGON_S2_togglebit_r
- {Intrinsic::hexagon_S2_tstbit_i, 28606}, // __builtin_HEXAGON_S2_tstbit_i
- {Intrinsic::hexagon_S2_tstbit_r, 28636}, // __builtin_HEXAGON_S2_tstbit_r
- {Intrinsic::hexagon_S2_valignib, 28666}, // __builtin_HEXAGON_S2_valignib
- {Intrinsic::hexagon_S2_valignrb, 28696}, // __builtin_HEXAGON_S2_valignrb
- {Intrinsic::hexagon_S2_vcnegh, 28726}, // __builtin_HEXAGON_S2_vcnegh
- {Intrinsic::hexagon_S2_vcrotate, 28754}, // __builtin_HEXAGON_S2_vcrotate
- {Intrinsic::hexagon_S2_vrcnegh, 28784}, // __builtin_HEXAGON_S2_vrcnegh
- {Intrinsic::hexagon_S2_vrndpackwh, 28813}, // __builtin_HEXAGON_S2_vrndpackwh
- {Intrinsic::hexagon_S2_vrndpackwhs, 28845}, // __builtin_HEXAGON_S2_vrndpackwhs
- {Intrinsic::hexagon_S2_vsathb, 28878}, // __builtin_HEXAGON_S2_vsathb
- {Intrinsic::hexagon_S2_vsathb_nopack, 28906}, // __builtin_HEXAGON_S2_vsathb_nopack
- {Intrinsic::hexagon_S2_vsathub, 28941}, // __builtin_HEXAGON_S2_vsathub
- {Intrinsic::hexagon_S2_vsathub_nopack, 28970}, // __builtin_HEXAGON_S2_vsathub_nopack
- {Intrinsic::hexagon_S2_vsatwh, 29006}, // __builtin_HEXAGON_S2_vsatwh
- {Intrinsic::hexagon_S2_vsatwh_nopack, 29034}, // __builtin_HEXAGON_S2_vsatwh_nopack
- {Intrinsic::hexagon_S2_vsatwuh, 29069}, // __builtin_HEXAGON_S2_vsatwuh
- {Intrinsic::hexagon_S2_vsatwuh_nopack, 29098}, // __builtin_HEXAGON_S2_vsatwuh_nopack
- {Intrinsic::hexagon_S2_vsplatrb, 29134}, // __builtin_HEXAGON_S2_vsplatrb
- {Intrinsic::hexagon_S2_vsplatrh, 29164}, // __builtin_HEXAGON_S2_vsplatrh
- {Intrinsic::hexagon_S2_vspliceib, 29194}, // __builtin_HEXAGON_S2_vspliceib
- {Intrinsic::hexagon_S2_vsplicerb, 29225}, // __builtin_HEXAGON_S2_vsplicerb
- {Intrinsic::hexagon_S2_vsxtbh, 29256}, // __builtin_HEXAGON_S2_vsxtbh
- {Intrinsic::hexagon_S2_vsxthw, 29284}, // __builtin_HEXAGON_S2_vsxthw
- {Intrinsic::hexagon_S2_vtrunehb, 29312}, // __builtin_HEXAGON_S2_vtrunehb
- {Intrinsic::hexagon_S2_vtrunewh, 29342}, // __builtin_HEXAGON_S2_vtrunewh
- {Intrinsic::hexagon_S2_vtrunohb, 29372}, // __builtin_HEXAGON_S2_vtrunohb
- {Intrinsic::hexagon_S2_vtrunowh, 29402}, // __builtin_HEXAGON_S2_vtrunowh
- {Intrinsic::hexagon_S2_vzxtbh, 29432}, // __builtin_HEXAGON_S2_vzxtbh
- {Intrinsic::hexagon_S2_vzxthw, 29460}, // __builtin_HEXAGON_S2_vzxthw
- {Intrinsic::hexagon_S4_addaddi, 29488}, // __builtin_HEXAGON_S4_addaddi
- {Intrinsic::hexagon_S4_addi_asl_ri, 29517}, // __builtin_HEXAGON_S4_addi_asl_ri
- {Intrinsic::hexagon_S4_addi_lsr_ri, 29550}, // __builtin_HEXAGON_S4_addi_lsr_ri
- {Intrinsic::hexagon_S4_andi_asl_ri, 29583}, // __builtin_HEXAGON_S4_andi_asl_ri
- {Intrinsic::hexagon_S4_andi_lsr_ri, 29616}, // __builtin_HEXAGON_S4_andi_lsr_ri
- {Intrinsic::hexagon_S4_clbaddi, 29649}, // __builtin_HEXAGON_S4_clbaddi
- {Intrinsic::hexagon_S4_clbpaddi, 29678}, // __builtin_HEXAGON_S4_clbpaddi
- {Intrinsic::hexagon_S4_clbpnorm, 29708}, // __builtin_HEXAGON_S4_clbpnorm
- {Intrinsic::hexagon_S4_extract, 29738}, // __builtin_HEXAGON_S4_extract
- {Intrinsic::hexagon_S4_extract_rp, 29767}, // __builtin_HEXAGON_S4_extract_rp
- {Intrinsic::hexagon_S4_extractp, 29799}, // __builtin_HEXAGON_S4_extractp
- {Intrinsic::hexagon_S4_extractp_rp, 29829}, // __builtin_HEXAGON_S4_extractp_rp
- {Intrinsic::hexagon_S4_lsli, 29862}, // __builtin_HEXAGON_S4_lsli
- {Intrinsic::hexagon_S4_ntstbit_i, 29888}, // __builtin_HEXAGON_S4_ntstbit_i
- {Intrinsic::hexagon_S4_ntstbit_r, 29919}, // __builtin_HEXAGON_S4_ntstbit_r
- {Intrinsic::hexagon_S4_or_andi, 29950}, // __builtin_HEXAGON_S4_or_andi
- {Intrinsic::hexagon_S4_or_andix, 29979}, // __builtin_HEXAGON_S4_or_andix
- {Intrinsic::hexagon_S4_or_ori, 30009}, // __builtin_HEXAGON_S4_or_ori
- {Intrinsic::hexagon_S4_ori_asl_ri, 30037}, // __builtin_HEXAGON_S4_ori_asl_ri
- {Intrinsic::hexagon_S4_ori_lsr_ri, 30069}, // __builtin_HEXAGON_S4_ori_lsr_ri
- {Intrinsic::hexagon_S4_parity, 30101}, // __builtin_HEXAGON_S4_parity
- {Intrinsic::hexagon_S4_stored_locked, 30129}, // __builtin_HEXAGON_S4_stored_locked
- {Intrinsic::hexagon_S4_subaddi, 30164}, // __builtin_HEXAGON_S4_subaddi
- {Intrinsic::hexagon_S4_subi_asl_ri, 30193}, // __builtin_HEXAGON_S4_subi_asl_ri
- {Intrinsic::hexagon_S4_subi_lsr_ri, 30226}, // __builtin_HEXAGON_S4_subi_lsr_ri
- {Intrinsic::hexagon_S4_vrcrotate, 30259}, // __builtin_HEXAGON_S4_vrcrotate
- {Intrinsic::hexagon_S4_vrcrotate_acc, 30290}, // __builtin_HEXAGON_S4_vrcrotate_acc
- {Intrinsic::hexagon_S4_vxaddsubh, 30325}, // __builtin_HEXAGON_S4_vxaddsubh
- {Intrinsic::hexagon_S4_vxaddsubhr, 30356}, // __builtin_HEXAGON_S4_vxaddsubhr
- {Intrinsic::hexagon_S4_vxaddsubw, 30388}, // __builtin_HEXAGON_S4_vxaddsubw
- {Intrinsic::hexagon_S4_vxsubaddh, 30419}, // __builtin_HEXAGON_S4_vxsubaddh
- {Intrinsic::hexagon_S4_vxsubaddhr, 30450}, // __builtin_HEXAGON_S4_vxsubaddhr
- {Intrinsic::hexagon_S4_vxsubaddw, 30482}, // __builtin_HEXAGON_S4_vxsubaddw
- {Intrinsic::hexagon_S5_asrhub_rnd_sat_goodsyntax, 30513}, // __builtin_HEXAGON_S5_asrhub_rnd_sat_goodsyntax
- {Intrinsic::hexagon_S5_asrhub_sat, 30560}, // __builtin_HEXAGON_S5_asrhub_sat
- {Intrinsic::hexagon_S5_popcountp, 30592}, // __builtin_HEXAGON_S5_popcountp
- {Intrinsic::hexagon_S5_vasrhrnd_goodsyntax, 30623}, // __builtin_HEXAGON_S5_vasrhrnd_goodsyntax
- {Intrinsic::hexagon_S6_rol_i_p, 30664}, // __builtin_HEXAGON_S6_rol_i_p
- {Intrinsic::hexagon_S6_rol_i_p_acc, 30693}, // __builtin_HEXAGON_S6_rol_i_p_acc
- {Intrinsic::hexagon_S6_rol_i_p_and, 30726}, // __builtin_HEXAGON_S6_rol_i_p_and
- {Intrinsic::hexagon_S6_rol_i_p_nac, 30759}, // __builtin_HEXAGON_S6_rol_i_p_nac
- {Intrinsic::hexagon_S6_rol_i_p_or, 30792}, // __builtin_HEXAGON_S6_rol_i_p_or
- {Intrinsic::hexagon_S6_rol_i_p_xacc, 30824}, // __builtin_HEXAGON_S6_rol_i_p_xacc
- {Intrinsic::hexagon_S6_rol_i_r, 30858}, // __builtin_HEXAGON_S6_rol_i_r
- {Intrinsic::hexagon_S6_rol_i_r_acc, 30887}, // __builtin_HEXAGON_S6_rol_i_r_acc
- {Intrinsic::hexagon_S6_rol_i_r_and, 30920}, // __builtin_HEXAGON_S6_rol_i_r_and
- {Intrinsic::hexagon_S6_rol_i_r_nac, 30953}, // __builtin_HEXAGON_S6_rol_i_r_nac
- {Intrinsic::hexagon_S6_rol_i_r_or, 30986}, // __builtin_HEXAGON_S6_rol_i_r_or
- {Intrinsic::hexagon_S6_rol_i_r_xacc, 31018}, // __builtin_HEXAGON_S6_rol_i_r_xacc
- {Intrinsic::hexagon_S6_vsplatrbp, 31052}, // __builtin_HEXAGON_S6_vsplatrbp
- {Intrinsic::hexagon_S6_vtrunehb_ppp, 31083}, // __builtin_HEXAGON_S6_vtrunehb_ppp
- {Intrinsic::hexagon_S6_vtrunohb_ppp, 31117}, // __builtin_HEXAGON_S6_vtrunohb_ppp
- {Intrinsic::hexagon_V6_extractw, 31151}, // __builtin_HEXAGON_V6_extractw
- {Intrinsic::hexagon_V6_extractw_128B, 31181}, // __builtin_HEXAGON_V6_extractw_128B
- {Intrinsic::hexagon_V6_hi, 31216}, // __builtin_HEXAGON_V6_hi
- {Intrinsic::hexagon_V6_hi_128B, 31240}, // __builtin_HEXAGON_V6_hi_128B
- {Intrinsic::hexagon_V6_lo, 31269}, // __builtin_HEXAGON_V6_lo
- {Intrinsic::hexagon_V6_lo_128B, 31293}, // __builtin_HEXAGON_V6_lo_128B
- {Intrinsic::hexagon_V6_lvsplatb, 31322}, // __builtin_HEXAGON_V6_lvsplatb
- {Intrinsic::hexagon_V6_lvsplatb_128B, 31352}, // __builtin_HEXAGON_V6_lvsplatb_128B
- {Intrinsic::hexagon_V6_lvsplath, 31387}, // __builtin_HEXAGON_V6_lvsplath
- {Intrinsic::hexagon_V6_lvsplath_128B, 31417}, // __builtin_HEXAGON_V6_lvsplath_128B
- {Intrinsic::hexagon_V6_lvsplatw, 31452}, // __builtin_HEXAGON_V6_lvsplatw
- {Intrinsic::hexagon_V6_lvsplatw_128B, 31482}, // __builtin_HEXAGON_V6_lvsplatw_128B
- {Intrinsic::hexagon_V6_pred_and, 31517}, // __builtin_HEXAGON_V6_pred_and
- {Intrinsic::hexagon_V6_pred_and_128B, 31547}, // __builtin_HEXAGON_V6_pred_and_128B
- {Intrinsic::hexagon_V6_pred_and_n, 31582}, // __builtin_HEXAGON_V6_pred_and_n
- {Intrinsic::hexagon_V6_pred_and_n_128B, 31614}, // __builtin_HEXAGON_V6_pred_and_n_128B
- {Intrinsic::hexagon_V6_pred_not, 31651}, // __builtin_HEXAGON_V6_pred_not
- {Intrinsic::hexagon_V6_pred_not_128B, 31681}, // __builtin_HEXAGON_V6_pred_not_128B
- {Intrinsic::hexagon_V6_pred_or, 31716}, // __builtin_HEXAGON_V6_pred_or
- {Intrinsic::hexagon_V6_pred_or_128B, 31745}, // __builtin_HEXAGON_V6_pred_or_128B
- {Intrinsic::hexagon_V6_pred_or_n, 31779}, // __builtin_HEXAGON_V6_pred_or_n
- {Intrinsic::hexagon_V6_pred_or_n_128B, 31810}, // __builtin_HEXAGON_V6_pred_or_n_128B
- {Intrinsic::hexagon_V6_pred_scalar2, 31846}, // __builtin_HEXAGON_V6_pred_scalar2
- {Intrinsic::hexagon_V6_pred_scalar2_128B, 31880}, // __builtin_HEXAGON_V6_pred_scalar2_128B
- {Intrinsic::hexagon_V6_pred_scalar2v2, 31919}, // __builtin_HEXAGON_V6_pred_scalar2v2
- {Intrinsic::hexagon_V6_pred_scalar2v2_128B, 31955}, // __builtin_HEXAGON_V6_pred_scalar2v2_128B
- {Intrinsic::hexagon_V6_pred_xor, 31996}, // __builtin_HEXAGON_V6_pred_xor
- {Intrinsic::hexagon_V6_pred_xor_128B, 32026}, // __builtin_HEXAGON_V6_pred_xor_128B
- {Intrinsic::hexagon_V6_shuffeqh, 32061}, // __builtin_HEXAGON_V6_shuffeqh
- {Intrinsic::hexagon_V6_shuffeqh_128B, 32091}, // __builtin_HEXAGON_V6_shuffeqh_128B
- {Intrinsic::hexagon_V6_shuffeqw, 32126}, // __builtin_HEXAGON_V6_shuffeqw
- {Intrinsic::hexagon_V6_shuffeqw_128B, 32156}, // __builtin_HEXAGON_V6_shuffeqw_128B
- {Intrinsic::hexagon_V6_vS32b_nqpred_ai, 32191}, // __builtin_HEXAGON_V6_vS32b_nqpred_ai
- {Intrinsic::hexagon_V6_vS32b_nqpred_ai_128B, 32228}, // __builtin_HEXAGON_V6_vS32b_nqpred_ai_128B
- {Intrinsic::hexagon_V6_vS32b_nt_nqpred_ai, 32270}, // __builtin_HEXAGON_V6_vS32b_nt_nqpred_ai
- {Intrinsic::hexagon_V6_vS32b_nt_nqpred_ai_128B, 32310}, // __builtin_HEXAGON_V6_vS32b_nt_nqpred_ai_128B
- {Intrinsic::hexagon_V6_vS32b_nt_qpred_ai, 32355}, // __builtin_HEXAGON_V6_vS32b_nt_qpred_ai
- {Intrinsic::hexagon_V6_vS32b_nt_qpred_ai_128B, 32394}, // __builtin_HEXAGON_V6_vS32b_nt_qpred_ai_128B
- {Intrinsic::hexagon_V6_vS32b_qpred_ai, 32438}, // __builtin_HEXAGON_V6_vS32b_qpred_ai
- {Intrinsic::hexagon_V6_vS32b_qpred_ai_128B, 32474}, // __builtin_HEXAGON_V6_vS32b_qpred_ai_128B
- {Intrinsic::hexagon_V6_vabsb, 32515}, // __builtin_HEXAGON_V6_vabsb
- {Intrinsic::hexagon_V6_vabsb_128B, 32542}, // __builtin_HEXAGON_V6_vabsb_128B
- {Intrinsic::hexagon_V6_vabsb_sat, 32574}, // __builtin_HEXAGON_V6_vabsb_sat
- {Intrinsic::hexagon_V6_vabsb_sat_128B, 32605}, // __builtin_HEXAGON_V6_vabsb_sat_128B
- {Intrinsic::hexagon_V6_vabsdiffh, 32641}, // __builtin_HEXAGON_V6_vabsdiffh
- {Intrinsic::hexagon_V6_vabsdiffh_128B, 32672}, // __builtin_HEXAGON_V6_vabsdiffh_128B
- {Intrinsic::hexagon_V6_vabsdiffub, 32708}, // __builtin_HEXAGON_V6_vabsdiffub
- {Intrinsic::hexagon_V6_vabsdiffub_128B, 32740}, // __builtin_HEXAGON_V6_vabsdiffub_128B
- {Intrinsic::hexagon_V6_vabsdiffuh, 32777}, // __builtin_HEXAGON_V6_vabsdiffuh
- {Intrinsic::hexagon_V6_vabsdiffuh_128B, 32809}, // __builtin_HEXAGON_V6_vabsdiffuh_128B
- {Intrinsic::hexagon_V6_vabsdiffw, 32846}, // __builtin_HEXAGON_V6_vabsdiffw
- {Intrinsic::hexagon_V6_vabsdiffw_128B, 32877}, // __builtin_HEXAGON_V6_vabsdiffw_128B
- {Intrinsic::hexagon_V6_vabsh, 32913}, // __builtin_HEXAGON_V6_vabsh
- {Intrinsic::hexagon_V6_vabsh_128B, 32940}, // __builtin_HEXAGON_V6_vabsh_128B
- {Intrinsic::hexagon_V6_vabsh_sat, 32972}, // __builtin_HEXAGON_V6_vabsh_sat
- {Intrinsic::hexagon_V6_vabsh_sat_128B, 33003}, // __builtin_HEXAGON_V6_vabsh_sat_128B
- {Intrinsic::hexagon_V6_vabsw, 33039}, // __builtin_HEXAGON_V6_vabsw
- {Intrinsic::hexagon_V6_vabsw_128B, 33066}, // __builtin_HEXAGON_V6_vabsw_128B
- {Intrinsic::hexagon_V6_vabsw_sat, 33098}, // __builtin_HEXAGON_V6_vabsw_sat
- {Intrinsic::hexagon_V6_vabsw_sat_128B, 33129}, // __builtin_HEXAGON_V6_vabsw_sat_128B
- {Intrinsic::hexagon_V6_vaddb, 33165}, // __builtin_HEXAGON_V6_vaddb
- {Intrinsic::hexagon_V6_vaddb_128B, 33192}, // __builtin_HEXAGON_V6_vaddb_128B
- {Intrinsic::hexagon_V6_vaddb_dv, 33224}, // __builtin_HEXAGON_V6_vaddb_dv
- {Intrinsic::hexagon_V6_vaddb_dv_128B, 33254}, // __builtin_HEXAGON_V6_vaddb_dv_128B
- {Intrinsic::hexagon_V6_vaddbnq, 33289}, // __builtin_HEXAGON_V6_vaddbnq
- {Intrinsic::hexagon_V6_vaddbnq_128B, 33318}, // __builtin_HEXAGON_V6_vaddbnq_128B
- {Intrinsic::hexagon_V6_vaddbq, 33352}, // __builtin_HEXAGON_V6_vaddbq
- {Intrinsic::hexagon_V6_vaddbq_128B, 33380}, // __builtin_HEXAGON_V6_vaddbq_128B
- {Intrinsic::hexagon_V6_vaddbsat, 33413}, // __builtin_HEXAGON_V6_vaddbsat
- {Intrinsic::hexagon_V6_vaddbsat_128B, 33443}, // __builtin_HEXAGON_V6_vaddbsat_128B
- {Intrinsic::hexagon_V6_vaddbsat_dv, 33478}, // __builtin_HEXAGON_V6_vaddbsat_dv
- {Intrinsic::hexagon_V6_vaddbsat_dv_128B, 33511}, // __builtin_HEXAGON_V6_vaddbsat_dv_128B
- {Intrinsic::hexagon_V6_vaddclbh, 33616}, // __builtin_HEXAGON_V6_vaddclbh
- {Intrinsic::hexagon_V6_vaddclbh_128B, 33646}, // __builtin_HEXAGON_V6_vaddclbh_128B
- {Intrinsic::hexagon_V6_vaddclbw, 33681}, // __builtin_HEXAGON_V6_vaddclbw
- {Intrinsic::hexagon_V6_vaddclbw_128B, 33711}, // __builtin_HEXAGON_V6_vaddclbw_128B
- {Intrinsic::hexagon_V6_vaddh, 33746}, // __builtin_HEXAGON_V6_vaddh
- {Intrinsic::hexagon_V6_vaddh_128B, 33773}, // __builtin_HEXAGON_V6_vaddh_128B
- {Intrinsic::hexagon_V6_vaddh_dv, 33805}, // __builtin_HEXAGON_V6_vaddh_dv
- {Intrinsic::hexagon_V6_vaddh_dv_128B, 33835}, // __builtin_HEXAGON_V6_vaddh_dv_128B
- {Intrinsic::hexagon_V6_vaddhnq, 33870}, // __builtin_HEXAGON_V6_vaddhnq
- {Intrinsic::hexagon_V6_vaddhnq_128B, 33899}, // __builtin_HEXAGON_V6_vaddhnq_128B
- {Intrinsic::hexagon_V6_vaddhq, 33933}, // __builtin_HEXAGON_V6_vaddhq
- {Intrinsic::hexagon_V6_vaddhq_128B, 33961}, // __builtin_HEXAGON_V6_vaddhq_128B
- {Intrinsic::hexagon_V6_vaddhsat, 33994}, // __builtin_HEXAGON_V6_vaddhsat
- {Intrinsic::hexagon_V6_vaddhsat_128B, 34024}, // __builtin_HEXAGON_V6_vaddhsat_128B
- {Intrinsic::hexagon_V6_vaddhsat_dv, 34059}, // __builtin_HEXAGON_V6_vaddhsat_dv
- {Intrinsic::hexagon_V6_vaddhsat_dv_128B, 34092}, // __builtin_HEXAGON_V6_vaddhsat_dv_128B
- {Intrinsic::hexagon_V6_vaddhw, 34130}, // __builtin_HEXAGON_V6_vaddhw
- {Intrinsic::hexagon_V6_vaddhw_128B, 34158}, // __builtin_HEXAGON_V6_vaddhw_128B
- {Intrinsic::hexagon_V6_vaddhw_acc, 34191}, // __builtin_HEXAGON_V6_vaddhw_acc
- {Intrinsic::hexagon_V6_vaddhw_acc_128B, 34223}, // __builtin_HEXAGON_V6_vaddhw_acc_128B
- {Intrinsic::hexagon_V6_vaddubh, 34260}, // __builtin_HEXAGON_V6_vaddubh
- {Intrinsic::hexagon_V6_vaddubh_128B, 34289}, // __builtin_HEXAGON_V6_vaddubh_128B
- {Intrinsic::hexagon_V6_vaddubh_acc, 34323}, // __builtin_HEXAGON_V6_vaddubh_acc
- {Intrinsic::hexagon_V6_vaddubh_acc_128B, 34356}, // __builtin_HEXAGON_V6_vaddubh_acc_128B
- {Intrinsic::hexagon_V6_vaddubsat, 34394}, // __builtin_HEXAGON_V6_vaddubsat
- {Intrinsic::hexagon_V6_vaddubsat_128B, 34425}, // __builtin_HEXAGON_V6_vaddubsat_128B
- {Intrinsic::hexagon_V6_vaddubsat_dv, 34461}, // __builtin_HEXAGON_V6_vaddubsat_dv
- {Intrinsic::hexagon_V6_vaddubsat_dv_128B, 34495}, // __builtin_HEXAGON_V6_vaddubsat_dv_128B
- {Intrinsic::hexagon_V6_vaddububb_sat, 34534}, // __builtin_HEXAGON_V6_vaddububb_sat
- {Intrinsic::hexagon_V6_vaddububb_sat_128B, 34569}, // __builtin_HEXAGON_V6_vaddububb_sat_128B
- {Intrinsic::hexagon_V6_vadduhsat, 34609}, // __builtin_HEXAGON_V6_vadduhsat
- {Intrinsic::hexagon_V6_vadduhsat_128B, 34640}, // __builtin_HEXAGON_V6_vadduhsat_128B
- {Intrinsic::hexagon_V6_vadduhsat_dv, 34676}, // __builtin_HEXAGON_V6_vadduhsat_dv
- {Intrinsic::hexagon_V6_vadduhsat_dv_128B, 34710}, // __builtin_HEXAGON_V6_vadduhsat_dv_128B
- {Intrinsic::hexagon_V6_vadduhw, 34749}, // __builtin_HEXAGON_V6_vadduhw
- {Intrinsic::hexagon_V6_vadduhw_128B, 34778}, // __builtin_HEXAGON_V6_vadduhw_128B
- {Intrinsic::hexagon_V6_vadduhw_acc, 34812}, // __builtin_HEXAGON_V6_vadduhw_acc
- {Intrinsic::hexagon_V6_vadduhw_acc_128B, 34845}, // __builtin_HEXAGON_V6_vadduhw_acc_128B
- {Intrinsic::hexagon_V6_vadduwsat, 34883}, // __builtin_HEXAGON_V6_vadduwsat
- {Intrinsic::hexagon_V6_vadduwsat_128B, 34914}, // __builtin_HEXAGON_V6_vadduwsat_128B
- {Intrinsic::hexagon_V6_vadduwsat_dv, 34950}, // __builtin_HEXAGON_V6_vadduwsat_dv
- {Intrinsic::hexagon_V6_vadduwsat_dv_128B, 34984}, // __builtin_HEXAGON_V6_vadduwsat_dv_128B
- {Intrinsic::hexagon_V6_vaddw, 35023}, // __builtin_HEXAGON_V6_vaddw
- {Intrinsic::hexagon_V6_vaddw_128B, 35050}, // __builtin_HEXAGON_V6_vaddw_128B
- {Intrinsic::hexagon_V6_vaddw_dv, 35082}, // __builtin_HEXAGON_V6_vaddw_dv
- {Intrinsic::hexagon_V6_vaddw_dv_128B, 35112}, // __builtin_HEXAGON_V6_vaddw_dv_128B
- {Intrinsic::hexagon_V6_vaddwnq, 35147}, // __builtin_HEXAGON_V6_vaddwnq
- {Intrinsic::hexagon_V6_vaddwnq_128B, 35176}, // __builtin_HEXAGON_V6_vaddwnq_128B
- {Intrinsic::hexagon_V6_vaddwq, 35210}, // __builtin_HEXAGON_V6_vaddwq
- {Intrinsic::hexagon_V6_vaddwq_128B, 35238}, // __builtin_HEXAGON_V6_vaddwq_128B
- {Intrinsic::hexagon_V6_vaddwsat, 35271}, // __builtin_HEXAGON_V6_vaddwsat
- {Intrinsic::hexagon_V6_vaddwsat_128B, 35301}, // __builtin_HEXAGON_V6_vaddwsat_128B
- {Intrinsic::hexagon_V6_vaddwsat_dv, 35336}, // __builtin_HEXAGON_V6_vaddwsat_dv
- {Intrinsic::hexagon_V6_vaddwsat_dv_128B, 35369}, // __builtin_HEXAGON_V6_vaddwsat_dv_128B
- {Intrinsic::hexagon_V6_valignb, 35407}, // __builtin_HEXAGON_V6_valignb
- {Intrinsic::hexagon_V6_valignb_128B, 35436}, // __builtin_HEXAGON_V6_valignb_128B
- {Intrinsic::hexagon_V6_valignbi, 35470}, // __builtin_HEXAGON_V6_valignbi
- {Intrinsic::hexagon_V6_valignbi_128B, 35500}, // __builtin_HEXAGON_V6_valignbi_128B
- {Intrinsic::hexagon_V6_vand, 35535}, // __builtin_HEXAGON_V6_vand
- {Intrinsic::hexagon_V6_vand_128B, 35561}, // __builtin_HEXAGON_V6_vand_128B
- {Intrinsic::hexagon_V6_vandnqrt, 35592}, // __builtin_HEXAGON_V6_vandnqrt
- {Intrinsic::hexagon_V6_vandnqrt_128B, 35622}, // __builtin_HEXAGON_V6_vandnqrt_128B
- {Intrinsic::hexagon_V6_vandnqrt_acc, 35657}, // __builtin_HEXAGON_V6_vandnqrt_acc
- {Intrinsic::hexagon_V6_vandnqrt_acc_128B, 35691}, // __builtin_HEXAGON_V6_vandnqrt_acc_128B
- {Intrinsic::hexagon_V6_vandqrt, 35730}, // __builtin_HEXAGON_V6_vandqrt
- {Intrinsic::hexagon_V6_vandqrt_128B, 35759}, // __builtin_HEXAGON_V6_vandqrt_128B
- {Intrinsic::hexagon_V6_vandqrt_acc, 35793}, // __builtin_HEXAGON_V6_vandqrt_acc
- {Intrinsic::hexagon_V6_vandqrt_acc_128B, 35826}, // __builtin_HEXAGON_V6_vandqrt_acc_128B
- {Intrinsic::hexagon_V6_vandvnqv, 35864}, // __builtin_HEXAGON_V6_vandvnqv
- {Intrinsic::hexagon_V6_vandvnqv_128B, 35894}, // __builtin_HEXAGON_V6_vandvnqv_128B
- {Intrinsic::hexagon_V6_vandvqv, 35929}, // __builtin_HEXAGON_V6_vandvqv
- {Intrinsic::hexagon_V6_vandvqv_128B, 35958}, // __builtin_HEXAGON_V6_vandvqv_128B
- {Intrinsic::hexagon_V6_vandvrt, 35992}, // __builtin_HEXAGON_V6_vandvrt
- {Intrinsic::hexagon_V6_vandvrt_128B, 36021}, // __builtin_HEXAGON_V6_vandvrt_128B
- {Intrinsic::hexagon_V6_vandvrt_acc, 36055}, // __builtin_HEXAGON_V6_vandvrt_acc
- {Intrinsic::hexagon_V6_vandvrt_acc_128B, 36088}, // __builtin_HEXAGON_V6_vandvrt_acc_128B
- {Intrinsic::hexagon_V6_vaslh, 36126}, // __builtin_HEXAGON_V6_vaslh
- {Intrinsic::hexagon_V6_vaslh_128B, 36153}, // __builtin_HEXAGON_V6_vaslh_128B
- {Intrinsic::hexagon_V6_vaslh_acc, 36185}, // __builtin_HEXAGON_V6_vaslh_acc
- {Intrinsic::hexagon_V6_vaslh_acc_128B, 36216}, // __builtin_HEXAGON_V6_vaslh_acc_128B
- {Intrinsic::hexagon_V6_vaslhv, 36252}, // __builtin_HEXAGON_V6_vaslhv
- {Intrinsic::hexagon_V6_vaslhv_128B, 36280}, // __builtin_HEXAGON_V6_vaslhv_128B
- {Intrinsic::hexagon_V6_vaslw, 36313}, // __builtin_HEXAGON_V6_vaslw
- {Intrinsic::hexagon_V6_vaslw_128B, 36340}, // __builtin_HEXAGON_V6_vaslw_128B
- {Intrinsic::hexagon_V6_vaslw_acc, 36372}, // __builtin_HEXAGON_V6_vaslw_acc
- {Intrinsic::hexagon_V6_vaslw_acc_128B, 36403}, // __builtin_HEXAGON_V6_vaslw_acc_128B
- {Intrinsic::hexagon_V6_vaslwv, 36439}, // __builtin_HEXAGON_V6_vaslwv
- {Intrinsic::hexagon_V6_vaslwv_128B, 36467}, // __builtin_HEXAGON_V6_vaslwv_128B
- {Intrinsic::hexagon_V6_vasrh, 36500}, // __builtin_HEXAGON_V6_vasrh
- {Intrinsic::hexagon_V6_vasrh_128B, 36527}, // __builtin_HEXAGON_V6_vasrh_128B
- {Intrinsic::hexagon_V6_vasrh_acc, 36559}, // __builtin_HEXAGON_V6_vasrh_acc
- {Intrinsic::hexagon_V6_vasrh_acc_128B, 36590}, // __builtin_HEXAGON_V6_vasrh_acc_128B
- {Intrinsic::hexagon_V6_vasrhbrndsat, 36626}, // __builtin_HEXAGON_V6_vasrhbrndsat
- {Intrinsic::hexagon_V6_vasrhbrndsat_128B, 36660}, // __builtin_HEXAGON_V6_vasrhbrndsat_128B
- {Intrinsic::hexagon_V6_vasrhbsat, 36699}, // __builtin_HEXAGON_V6_vasrhbsat
- {Intrinsic::hexagon_V6_vasrhbsat_128B, 36730}, // __builtin_HEXAGON_V6_vasrhbsat_128B
- {Intrinsic::hexagon_V6_vasrhubrndsat, 36766}, // __builtin_HEXAGON_V6_vasrhubrndsat
- {Intrinsic::hexagon_V6_vasrhubrndsat_128B, 36801}, // __builtin_HEXAGON_V6_vasrhubrndsat_128B
- {Intrinsic::hexagon_V6_vasrhubsat, 36841}, // __builtin_HEXAGON_V6_vasrhubsat
- {Intrinsic::hexagon_V6_vasrhubsat_128B, 36873}, // __builtin_HEXAGON_V6_vasrhubsat_128B
- {Intrinsic::hexagon_V6_vasrhv, 36910}, // __builtin_HEXAGON_V6_vasrhv
- {Intrinsic::hexagon_V6_vasrhv_128B, 36938}, // __builtin_HEXAGON_V6_vasrhv_128B
- {Intrinsic::hexagon_V6_vasruhubrndsat, 36971}, // __builtin_HEXAGON_V6_vasruhubrndsat
- {Intrinsic::hexagon_V6_vasruhubrndsat_128B, 37007}, // __builtin_HEXAGON_V6_vasruhubrndsat_128B
- {Intrinsic::hexagon_V6_vasruhubsat, 37048}, // __builtin_HEXAGON_V6_vasruhubsat
- {Intrinsic::hexagon_V6_vasruhubsat_128B, 37081}, // __builtin_HEXAGON_V6_vasruhubsat_128B
- {Intrinsic::hexagon_V6_vasruwuhrndsat, 37119}, // __builtin_HEXAGON_V6_vasruwuhrndsat
- {Intrinsic::hexagon_V6_vasruwuhrndsat_128B, 37155}, // __builtin_HEXAGON_V6_vasruwuhrndsat_128B
- {Intrinsic::hexagon_V6_vasruwuhsat, 37196}, // __builtin_HEXAGON_V6_vasruwuhsat
- {Intrinsic::hexagon_V6_vasruwuhsat_128B, 37229}, // __builtin_HEXAGON_V6_vasruwuhsat_128B
- {Intrinsic::hexagon_V6_vasrw, 37267}, // __builtin_HEXAGON_V6_vasrw
- {Intrinsic::hexagon_V6_vasrw_128B, 37294}, // __builtin_HEXAGON_V6_vasrw_128B
- {Intrinsic::hexagon_V6_vasrw_acc, 37326}, // __builtin_HEXAGON_V6_vasrw_acc
- {Intrinsic::hexagon_V6_vasrw_acc_128B, 37357}, // __builtin_HEXAGON_V6_vasrw_acc_128B
- {Intrinsic::hexagon_V6_vasrwh, 37393}, // __builtin_HEXAGON_V6_vasrwh
- {Intrinsic::hexagon_V6_vasrwh_128B, 37421}, // __builtin_HEXAGON_V6_vasrwh_128B
- {Intrinsic::hexagon_V6_vasrwhrndsat, 37454}, // __builtin_HEXAGON_V6_vasrwhrndsat
- {Intrinsic::hexagon_V6_vasrwhrndsat_128B, 37488}, // __builtin_HEXAGON_V6_vasrwhrndsat_128B
- {Intrinsic::hexagon_V6_vasrwhsat, 37527}, // __builtin_HEXAGON_V6_vasrwhsat
- {Intrinsic::hexagon_V6_vasrwhsat_128B, 37558}, // __builtin_HEXAGON_V6_vasrwhsat_128B
- {Intrinsic::hexagon_V6_vasrwuhrndsat, 37594}, // __builtin_HEXAGON_V6_vasrwuhrndsat
- {Intrinsic::hexagon_V6_vasrwuhrndsat_128B, 37629}, // __builtin_HEXAGON_V6_vasrwuhrndsat_128B
- {Intrinsic::hexagon_V6_vasrwuhsat, 37669}, // __builtin_HEXAGON_V6_vasrwuhsat
- {Intrinsic::hexagon_V6_vasrwuhsat_128B, 37701}, // __builtin_HEXAGON_V6_vasrwuhsat_128B
- {Intrinsic::hexagon_V6_vasrwv, 37738}, // __builtin_HEXAGON_V6_vasrwv
- {Intrinsic::hexagon_V6_vasrwv_128B, 37766}, // __builtin_HEXAGON_V6_vasrwv_128B
- {Intrinsic::hexagon_V6_vassign, 37799}, // __builtin_HEXAGON_V6_vassign
- {Intrinsic::hexagon_V6_vassign_128B, 37828}, // __builtin_HEXAGON_V6_vassign_128B
- {Intrinsic::hexagon_V6_vassignp, 37862}, // __builtin_HEXAGON_V6_vassignp
- {Intrinsic::hexagon_V6_vassignp_128B, 37892}, // __builtin_HEXAGON_V6_vassignp_128B
- {Intrinsic::hexagon_V6_vavgb, 37927}, // __builtin_HEXAGON_V6_vavgb
- {Intrinsic::hexagon_V6_vavgb_128B, 37954}, // __builtin_HEXAGON_V6_vavgb_128B
- {Intrinsic::hexagon_V6_vavgbrnd, 37986}, // __builtin_HEXAGON_V6_vavgbrnd
- {Intrinsic::hexagon_V6_vavgbrnd_128B, 38016}, // __builtin_HEXAGON_V6_vavgbrnd_128B
- {Intrinsic::hexagon_V6_vavgh, 38051}, // __builtin_HEXAGON_V6_vavgh
- {Intrinsic::hexagon_V6_vavgh_128B, 38078}, // __builtin_HEXAGON_V6_vavgh_128B
- {Intrinsic::hexagon_V6_vavghrnd, 38110}, // __builtin_HEXAGON_V6_vavghrnd
- {Intrinsic::hexagon_V6_vavghrnd_128B, 38140}, // __builtin_HEXAGON_V6_vavghrnd_128B
- {Intrinsic::hexagon_V6_vavgub, 38175}, // __builtin_HEXAGON_V6_vavgub
- {Intrinsic::hexagon_V6_vavgub_128B, 38203}, // __builtin_HEXAGON_V6_vavgub_128B
- {Intrinsic::hexagon_V6_vavgubrnd, 38236}, // __builtin_HEXAGON_V6_vavgubrnd
- {Intrinsic::hexagon_V6_vavgubrnd_128B, 38267}, // __builtin_HEXAGON_V6_vavgubrnd_128B
- {Intrinsic::hexagon_V6_vavguh, 38303}, // __builtin_HEXAGON_V6_vavguh
- {Intrinsic::hexagon_V6_vavguh_128B, 38331}, // __builtin_HEXAGON_V6_vavguh_128B
- {Intrinsic::hexagon_V6_vavguhrnd, 38364}, // __builtin_HEXAGON_V6_vavguhrnd
- {Intrinsic::hexagon_V6_vavguhrnd_128B, 38395}, // __builtin_HEXAGON_V6_vavguhrnd_128B
- {Intrinsic::hexagon_V6_vavguw, 38431}, // __builtin_HEXAGON_V6_vavguw
- {Intrinsic::hexagon_V6_vavguw_128B, 38459}, // __builtin_HEXAGON_V6_vavguw_128B
- {Intrinsic::hexagon_V6_vavguwrnd, 38492}, // __builtin_HEXAGON_V6_vavguwrnd
- {Intrinsic::hexagon_V6_vavguwrnd_128B, 38523}, // __builtin_HEXAGON_V6_vavguwrnd_128B
- {Intrinsic::hexagon_V6_vavgw, 38559}, // __builtin_HEXAGON_V6_vavgw
- {Intrinsic::hexagon_V6_vavgw_128B, 38586}, // __builtin_HEXAGON_V6_vavgw_128B
- {Intrinsic::hexagon_V6_vavgwrnd, 38618}, // __builtin_HEXAGON_V6_vavgwrnd
- {Intrinsic::hexagon_V6_vavgwrnd_128B, 38648}, // __builtin_HEXAGON_V6_vavgwrnd_128B
- {Intrinsic::hexagon_V6_vcl0h, 38683}, // __builtin_HEXAGON_V6_vcl0h
- {Intrinsic::hexagon_V6_vcl0h_128B, 38710}, // __builtin_HEXAGON_V6_vcl0h_128B
- {Intrinsic::hexagon_V6_vcl0w, 38742}, // __builtin_HEXAGON_V6_vcl0w
- {Intrinsic::hexagon_V6_vcl0w_128B, 38769}, // __builtin_HEXAGON_V6_vcl0w_128B
- {Intrinsic::hexagon_V6_vcombine, 38801}, // __builtin_HEXAGON_V6_vcombine
- {Intrinsic::hexagon_V6_vcombine_128B, 38831}, // __builtin_HEXAGON_V6_vcombine_128B
- {Intrinsic::hexagon_V6_vd0, 38866}, // __builtin_HEXAGON_V6_vd0
- {Intrinsic::hexagon_V6_vd0_128B, 38891}, // __builtin_HEXAGON_V6_vd0_128B
- {Intrinsic::hexagon_V6_vdd0, 38921}, // __builtin_HEXAGON_V6_vdd0
- {Intrinsic::hexagon_V6_vdd0_128B, 38947}, // __builtin_HEXAGON_V6_vdd0_128B
- {Intrinsic::hexagon_V6_vdealb, 38978}, // __builtin_HEXAGON_V6_vdealb
- {Intrinsic::hexagon_V6_vdealb4w, 39039}, // __builtin_HEXAGON_V6_vdealb4w
- {Intrinsic::hexagon_V6_vdealb4w_128B, 39069}, // __builtin_HEXAGON_V6_vdealb4w_128B
- {Intrinsic::hexagon_V6_vdealb_128B, 39006}, // __builtin_HEXAGON_V6_vdealb_128B
- {Intrinsic::hexagon_V6_vdealh, 39104}, // __builtin_HEXAGON_V6_vdealh
- {Intrinsic::hexagon_V6_vdealh_128B, 39132}, // __builtin_HEXAGON_V6_vdealh_128B
- {Intrinsic::hexagon_V6_vdealvdd, 39165}, // __builtin_HEXAGON_V6_vdealvdd
- {Intrinsic::hexagon_V6_vdealvdd_128B, 39195}, // __builtin_HEXAGON_V6_vdealvdd_128B
- {Intrinsic::hexagon_V6_vdelta, 39230}, // __builtin_HEXAGON_V6_vdelta
- {Intrinsic::hexagon_V6_vdelta_128B, 39258}, // __builtin_HEXAGON_V6_vdelta_128B
- {Intrinsic::hexagon_V6_vdmpybus, 39291}, // __builtin_HEXAGON_V6_vdmpybus
- {Intrinsic::hexagon_V6_vdmpybus_128B, 39321}, // __builtin_HEXAGON_V6_vdmpybus_128B
- {Intrinsic::hexagon_V6_vdmpybus_acc, 39356}, // __builtin_HEXAGON_V6_vdmpybus_acc
- {Intrinsic::hexagon_V6_vdmpybus_acc_128B, 39390}, // __builtin_HEXAGON_V6_vdmpybus_acc_128B
- {Intrinsic::hexagon_V6_vdmpybus_dv, 39429}, // __builtin_HEXAGON_V6_vdmpybus_dv
- {Intrinsic::hexagon_V6_vdmpybus_dv_128B, 39462}, // __builtin_HEXAGON_V6_vdmpybus_dv_128B
- {Intrinsic::hexagon_V6_vdmpybus_dv_acc, 39500}, // __builtin_HEXAGON_V6_vdmpybus_dv_acc
- {Intrinsic::hexagon_V6_vdmpybus_dv_acc_128B, 39537}, // __builtin_HEXAGON_V6_vdmpybus_dv_acc_128B
- {Intrinsic::hexagon_V6_vdmpyhb, 39579}, // __builtin_HEXAGON_V6_vdmpyhb
- {Intrinsic::hexagon_V6_vdmpyhb_128B, 39608}, // __builtin_HEXAGON_V6_vdmpyhb_128B
- {Intrinsic::hexagon_V6_vdmpyhb_acc, 39642}, // __builtin_HEXAGON_V6_vdmpyhb_acc
- {Intrinsic::hexagon_V6_vdmpyhb_acc_128B, 39675}, // __builtin_HEXAGON_V6_vdmpyhb_acc_128B
- {Intrinsic::hexagon_V6_vdmpyhb_dv, 39713}, // __builtin_HEXAGON_V6_vdmpyhb_dv
- {Intrinsic::hexagon_V6_vdmpyhb_dv_128B, 39745}, // __builtin_HEXAGON_V6_vdmpyhb_dv_128B
- {Intrinsic::hexagon_V6_vdmpyhb_dv_acc, 39782}, // __builtin_HEXAGON_V6_vdmpyhb_dv_acc
- {Intrinsic::hexagon_V6_vdmpyhb_dv_acc_128B, 39818}, // __builtin_HEXAGON_V6_vdmpyhb_dv_acc_128B
- {Intrinsic::hexagon_V6_vdmpyhisat, 39859}, // __builtin_HEXAGON_V6_vdmpyhisat
- {Intrinsic::hexagon_V6_vdmpyhisat_128B, 39891}, // __builtin_HEXAGON_V6_vdmpyhisat_128B
- {Intrinsic::hexagon_V6_vdmpyhisat_acc, 39928}, // __builtin_HEXAGON_V6_vdmpyhisat_acc
- {Intrinsic::hexagon_V6_vdmpyhisat_acc_128B, 39964}, // __builtin_HEXAGON_V6_vdmpyhisat_acc_128B
- {Intrinsic::hexagon_V6_vdmpyhsat, 40005}, // __builtin_HEXAGON_V6_vdmpyhsat
- {Intrinsic::hexagon_V6_vdmpyhsat_128B, 40036}, // __builtin_HEXAGON_V6_vdmpyhsat_128B
- {Intrinsic::hexagon_V6_vdmpyhsat_acc, 40072}, // __builtin_HEXAGON_V6_vdmpyhsat_acc
- {Intrinsic::hexagon_V6_vdmpyhsat_acc_128B, 40107}, // __builtin_HEXAGON_V6_vdmpyhsat_acc_128B
- {Intrinsic::hexagon_V6_vdmpyhsuisat, 40147}, // __builtin_HEXAGON_V6_vdmpyhsuisat
- {Intrinsic::hexagon_V6_vdmpyhsuisat_128B, 40181}, // __builtin_HEXAGON_V6_vdmpyhsuisat_128B
- {Intrinsic::hexagon_V6_vdmpyhsuisat_acc, 40220}, // __builtin_HEXAGON_V6_vdmpyhsuisat_acc
- {Intrinsic::hexagon_V6_vdmpyhsuisat_acc_128B, 40258}, // __builtin_HEXAGON_V6_vdmpyhsuisat_acc_128B
- {Intrinsic::hexagon_V6_vdmpyhsusat, 40301}, // __builtin_HEXAGON_V6_vdmpyhsusat
- {Intrinsic::hexagon_V6_vdmpyhsusat_128B, 40334}, // __builtin_HEXAGON_V6_vdmpyhsusat_128B
- {Intrinsic::hexagon_V6_vdmpyhsusat_acc, 40372}, // __builtin_HEXAGON_V6_vdmpyhsusat_acc
- {Intrinsic::hexagon_V6_vdmpyhsusat_acc_128B, 40409}, // __builtin_HEXAGON_V6_vdmpyhsusat_acc_128B
- {Intrinsic::hexagon_V6_vdmpyhvsat, 40451}, // __builtin_HEXAGON_V6_vdmpyhvsat
- {Intrinsic::hexagon_V6_vdmpyhvsat_128B, 40483}, // __builtin_HEXAGON_V6_vdmpyhvsat_128B
- {Intrinsic::hexagon_V6_vdmpyhvsat_acc, 40520}, // __builtin_HEXAGON_V6_vdmpyhvsat_acc
- {Intrinsic::hexagon_V6_vdmpyhvsat_acc_128B, 40556}, // __builtin_HEXAGON_V6_vdmpyhvsat_acc_128B
- {Intrinsic::hexagon_V6_vdsaduh, 40597}, // __builtin_HEXAGON_V6_vdsaduh
- {Intrinsic::hexagon_V6_vdsaduh_128B, 40626}, // __builtin_HEXAGON_V6_vdsaduh_128B
- {Intrinsic::hexagon_V6_vdsaduh_acc, 40660}, // __builtin_HEXAGON_V6_vdsaduh_acc
- {Intrinsic::hexagon_V6_vdsaduh_acc_128B, 40693}, // __builtin_HEXAGON_V6_vdsaduh_acc_128B
- {Intrinsic::hexagon_V6_veqb, 40731}, // __builtin_HEXAGON_V6_veqb
- {Intrinsic::hexagon_V6_veqb_128B, 40757}, // __builtin_HEXAGON_V6_veqb_128B
- {Intrinsic::hexagon_V6_veqb_and, 40788}, // __builtin_HEXAGON_V6_veqb_and
- {Intrinsic::hexagon_V6_veqb_and_128B, 40818}, // __builtin_HEXAGON_V6_veqb_and_128B
- {Intrinsic::hexagon_V6_veqb_or, 40853}, // __builtin_HEXAGON_V6_veqb_or
- {Intrinsic::hexagon_V6_veqb_or_128B, 40882}, // __builtin_HEXAGON_V6_veqb_or_128B
- {Intrinsic::hexagon_V6_veqb_xor, 40916}, // __builtin_HEXAGON_V6_veqb_xor
- {Intrinsic::hexagon_V6_veqb_xor_128B, 40946}, // __builtin_HEXAGON_V6_veqb_xor_128B
- {Intrinsic::hexagon_V6_veqh, 40981}, // __builtin_HEXAGON_V6_veqh
- {Intrinsic::hexagon_V6_veqh_128B, 41007}, // __builtin_HEXAGON_V6_veqh_128B
- {Intrinsic::hexagon_V6_veqh_and, 41038}, // __builtin_HEXAGON_V6_veqh_and
- {Intrinsic::hexagon_V6_veqh_and_128B, 41068}, // __builtin_HEXAGON_V6_veqh_and_128B
- {Intrinsic::hexagon_V6_veqh_or, 41103}, // __builtin_HEXAGON_V6_veqh_or
- {Intrinsic::hexagon_V6_veqh_or_128B, 41132}, // __builtin_HEXAGON_V6_veqh_or_128B
- {Intrinsic::hexagon_V6_veqh_xor, 41166}, // __builtin_HEXAGON_V6_veqh_xor
- {Intrinsic::hexagon_V6_veqh_xor_128B, 41196}, // __builtin_HEXAGON_V6_veqh_xor_128B
- {Intrinsic::hexagon_V6_veqw, 41231}, // __builtin_HEXAGON_V6_veqw
- {Intrinsic::hexagon_V6_veqw_128B, 41257}, // __builtin_HEXAGON_V6_veqw_128B
- {Intrinsic::hexagon_V6_veqw_and, 41288}, // __builtin_HEXAGON_V6_veqw_and
- {Intrinsic::hexagon_V6_veqw_and_128B, 41318}, // __builtin_HEXAGON_V6_veqw_and_128B
- {Intrinsic::hexagon_V6_veqw_or, 41353}, // __builtin_HEXAGON_V6_veqw_or
- {Intrinsic::hexagon_V6_veqw_or_128B, 41382}, // __builtin_HEXAGON_V6_veqw_or_128B
- {Intrinsic::hexagon_V6_veqw_xor, 41416}, // __builtin_HEXAGON_V6_veqw_xor
- {Intrinsic::hexagon_V6_veqw_xor_128B, 41446}, // __builtin_HEXAGON_V6_veqw_xor_128B
- {Intrinsic::hexagon_V6_vgathermh, 41481}, // __builtin_HEXAGON_V6_vgathermh
- {Intrinsic::hexagon_V6_vgathermh_128B, 41512}, // __builtin_HEXAGON_V6_vgathermh_128B
- {Intrinsic::hexagon_V6_vgathermhq, 41548}, // __builtin_HEXAGON_V6_vgathermhq
- {Intrinsic::hexagon_V6_vgathermhq_128B, 41580}, // __builtin_HEXAGON_V6_vgathermhq_128B
- {Intrinsic::hexagon_V6_vgathermhw, 41617}, // __builtin_HEXAGON_V6_vgathermhw
- {Intrinsic::hexagon_V6_vgathermhw_128B, 41649}, // __builtin_HEXAGON_V6_vgathermhw_128B
- {Intrinsic::hexagon_V6_vgathermhwq, 41686}, // __builtin_HEXAGON_V6_vgathermhwq
- {Intrinsic::hexagon_V6_vgathermhwq_128B, 41719}, // __builtin_HEXAGON_V6_vgathermhwq_128B
- {Intrinsic::hexagon_V6_vgathermw, 41757}, // __builtin_HEXAGON_V6_vgathermw
- {Intrinsic::hexagon_V6_vgathermw_128B, 41788}, // __builtin_HEXAGON_V6_vgathermw_128B
- {Intrinsic::hexagon_V6_vgathermwq, 41824}, // __builtin_HEXAGON_V6_vgathermwq
- {Intrinsic::hexagon_V6_vgathermwq_128B, 41856}, // __builtin_HEXAGON_V6_vgathermwq_128B
- {Intrinsic::hexagon_V6_vgtb, 41893}, // __builtin_HEXAGON_V6_vgtb
- {Intrinsic::hexagon_V6_vgtb_128B, 41919}, // __builtin_HEXAGON_V6_vgtb_128B
- {Intrinsic::hexagon_V6_vgtb_and, 41950}, // __builtin_HEXAGON_V6_vgtb_and
- {Intrinsic::hexagon_V6_vgtb_and_128B, 41980}, // __builtin_HEXAGON_V6_vgtb_and_128B
- {Intrinsic::hexagon_V6_vgtb_or, 42015}, // __builtin_HEXAGON_V6_vgtb_or
- {Intrinsic::hexagon_V6_vgtb_or_128B, 42044}, // __builtin_HEXAGON_V6_vgtb_or_128B
- {Intrinsic::hexagon_V6_vgtb_xor, 42078}, // __builtin_HEXAGON_V6_vgtb_xor
- {Intrinsic::hexagon_V6_vgtb_xor_128B, 42108}, // __builtin_HEXAGON_V6_vgtb_xor_128B
- {Intrinsic::hexagon_V6_vgth, 42143}, // __builtin_HEXAGON_V6_vgth
- {Intrinsic::hexagon_V6_vgth_128B, 42169}, // __builtin_HEXAGON_V6_vgth_128B
- {Intrinsic::hexagon_V6_vgth_and, 42200}, // __builtin_HEXAGON_V6_vgth_and
- {Intrinsic::hexagon_V6_vgth_and_128B, 42230}, // __builtin_HEXAGON_V6_vgth_and_128B
- {Intrinsic::hexagon_V6_vgth_or, 42265}, // __builtin_HEXAGON_V6_vgth_or
- {Intrinsic::hexagon_V6_vgth_or_128B, 42294}, // __builtin_HEXAGON_V6_vgth_or_128B
- {Intrinsic::hexagon_V6_vgth_xor, 42328}, // __builtin_HEXAGON_V6_vgth_xor
- {Intrinsic::hexagon_V6_vgth_xor_128B, 42358}, // __builtin_HEXAGON_V6_vgth_xor_128B
- {Intrinsic::hexagon_V6_vgtub, 42393}, // __builtin_HEXAGON_V6_vgtub
- {Intrinsic::hexagon_V6_vgtub_128B, 42420}, // __builtin_HEXAGON_V6_vgtub_128B
- {Intrinsic::hexagon_V6_vgtub_and, 42452}, // __builtin_HEXAGON_V6_vgtub_and
- {Intrinsic::hexagon_V6_vgtub_and_128B, 42483}, // __builtin_HEXAGON_V6_vgtub_and_128B
- {Intrinsic::hexagon_V6_vgtub_or, 42519}, // __builtin_HEXAGON_V6_vgtub_or
- {Intrinsic::hexagon_V6_vgtub_or_128B, 42549}, // __builtin_HEXAGON_V6_vgtub_or_128B
- {Intrinsic::hexagon_V6_vgtub_xor, 42584}, // __builtin_HEXAGON_V6_vgtub_xor
- {Intrinsic::hexagon_V6_vgtub_xor_128B, 42615}, // __builtin_HEXAGON_V6_vgtub_xor_128B
- {Intrinsic::hexagon_V6_vgtuh, 42651}, // __builtin_HEXAGON_V6_vgtuh
- {Intrinsic::hexagon_V6_vgtuh_128B, 42678}, // __builtin_HEXAGON_V6_vgtuh_128B
- {Intrinsic::hexagon_V6_vgtuh_and, 42710}, // __builtin_HEXAGON_V6_vgtuh_and
- {Intrinsic::hexagon_V6_vgtuh_and_128B, 42741}, // __builtin_HEXAGON_V6_vgtuh_and_128B
- {Intrinsic::hexagon_V6_vgtuh_or, 42777}, // __builtin_HEXAGON_V6_vgtuh_or
- {Intrinsic::hexagon_V6_vgtuh_or_128B, 42807}, // __builtin_HEXAGON_V6_vgtuh_or_128B
- {Intrinsic::hexagon_V6_vgtuh_xor, 42842}, // __builtin_HEXAGON_V6_vgtuh_xor
- {Intrinsic::hexagon_V6_vgtuh_xor_128B, 42873}, // __builtin_HEXAGON_V6_vgtuh_xor_128B
- {Intrinsic::hexagon_V6_vgtuw, 42909}, // __builtin_HEXAGON_V6_vgtuw
- {Intrinsic::hexagon_V6_vgtuw_128B, 42936}, // __builtin_HEXAGON_V6_vgtuw_128B
- {Intrinsic::hexagon_V6_vgtuw_and, 42968}, // __builtin_HEXAGON_V6_vgtuw_and
- {Intrinsic::hexagon_V6_vgtuw_and_128B, 42999}, // __builtin_HEXAGON_V6_vgtuw_and_128B
- {Intrinsic::hexagon_V6_vgtuw_or, 43035}, // __builtin_HEXAGON_V6_vgtuw_or
- {Intrinsic::hexagon_V6_vgtuw_or_128B, 43065}, // __builtin_HEXAGON_V6_vgtuw_or_128B
- {Intrinsic::hexagon_V6_vgtuw_xor, 43100}, // __builtin_HEXAGON_V6_vgtuw_xor
- {Intrinsic::hexagon_V6_vgtuw_xor_128B, 43131}, // __builtin_HEXAGON_V6_vgtuw_xor_128B
- {Intrinsic::hexagon_V6_vgtw, 43167}, // __builtin_HEXAGON_V6_vgtw
- {Intrinsic::hexagon_V6_vgtw_128B, 43193}, // __builtin_HEXAGON_V6_vgtw_128B
- {Intrinsic::hexagon_V6_vgtw_and, 43224}, // __builtin_HEXAGON_V6_vgtw_and
- {Intrinsic::hexagon_V6_vgtw_and_128B, 43254}, // __builtin_HEXAGON_V6_vgtw_and_128B
- {Intrinsic::hexagon_V6_vgtw_or, 43289}, // __builtin_HEXAGON_V6_vgtw_or
- {Intrinsic::hexagon_V6_vgtw_or_128B, 43318}, // __builtin_HEXAGON_V6_vgtw_or_128B
- {Intrinsic::hexagon_V6_vgtw_xor, 43352}, // __builtin_HEXAGON_V6_vgtw_xor
- {Intrinsic::hexagon_V6_vgtw_xor_128B, 43382}, // __builtin_HEXAGON_V6_vgtw_xor_128B
- {Intrinsic::hexagon_V6_vinsertwr, 43417}, // __builtin_HEXAGON_V6_vinsertwr
- {Intrinsic::hexagon_V6_vinsertwr_128B, 43448}, // __builtin_HEXAGON_V6_vinsertwr_128B
- {Intrinsic::hexagon_V6_vlalignb, 43484}, // __builtin_HEXAGON_V6_vlalignb
- {Intrinsic::hexagon_V6_vlalignb_128B, 43514}, // __builtin_HEXAGON_V6_vlalignb_128B
- {Intrinsic::hexagon_V6_vlalignbi, 43549}, // __builtin_HEXAGON_V6_vlalignbi
- {Intrinsic::hexagon_V6_vlalignbi_128B, 43580}, // __builtin_HEXAGON_V6_vlalignbi_128B
- {Intrinsic::hexagon_V6_vlsrb, 43616}, // __builtin_HEXAGON_V6_vlsrb
- {Intrinsic::hexagon_V6_vlsrb_128B, 43643}, // __builtin_HEXAGON_V6_vlsrb_128B
- {Intrinsic::hexagon_V6_vlsrh, 43675}, // __builtin_HEXAGON_V6_vlsrh
- {Intrinsic::hexagon_V6_vlsrh_128B, 43702}, // __builtin_HEXAGON_V6_vlsrh_128B
- {Intrinsic::hexagon_V6_vlsrhv, 43734}, // __builtin_HEXAGON_V6_vlsrhv
- {Intrinsic::hexagon_V6_vlsrhv_128B, 43762}, // __builtin_HEXAGON_V6_vlsrhv_128B
- {Intrinsic::hexagon_V6_vlsrw, 43795}, // __builtin_HEXAGON_V6_vlsrw
- {Intrinsic::hexagon_V6_vlsrw_128B, 43822}, // __builtin_HEXAGON_V6_vlsrw_128B
- {Intrinsic::hexagon_V6_vlsrwv, 43854}, // __builtin_HEXAGON_V6_vlsrwv
- {Intrinsic::hexagon_V6_vlsrwv_128B, 43882}, // __builtin_HEXAGON_V6_vlsrwv_128B
- {Intrinsic::hexagon_V6_vlut4, 43915}, // __builtin_HEXAGON_V6_vlut4
- {Intrinsic::hexagon_V6_vlut4_128B, 43942}, // __builtin_HEXAGON_V6_vlut4_128B
- {Intrinsic::hexagon_V6_vlutvvb, 43974}, // __builtin_HEXAGON_V6_vlutvvb
- {Intrinsic::hexagon_V6_vlutvvb_128B, 44003}, // __builtin_HEXAGON_V6_vlutvvb_128B
- {Intrinsic::hexagon_V6_vlutvvb_nm, 44037}, // __builtin_HEXAGON_V6_vlutvvb_nm
- {Intrinsic::hexagon_V6_vlutvvb_nm_128B, 44069}, // __builtin_HEXAGON_V6_vlutvvb_nm_128B
- {Intrinsic::hexagon_V6_vlutvvb_oracc, 44106}, // __builtin_HEXAGON_V6_vlutvvb_oracc
- {Intrinsic::hexagon_V6_vlutvvb_oracc_128B, 44141}, // __builtin_HEXAGON_V6_vlutvvb_oracc_128B
- {Intrinsic::hexagon_V6_vlutvvb_oracci, 44181}, // __builtin_HEXAGON_V6_vlutvvb_oracci
- {Intrinsic::hexagon_V6_vlutvvb_oracci_128B, 44217}, // __builtin_HEXAGON_V6_vlutvvb_oracci_128B
- {Intrinsic::hexagon_V6_vlutvvbi, 44258}, // __builtin_HEXAGON_V6_vlutvvbi
- {Intrinsic::hexagon_V6_vlutvvbi_128B, 44288}, // __builtin_HEXAGON_V6_vlutvvbi_128B
- {Intrinsic::hexagon_V6_vlutvwh, 44323}, // __builtin_HEXAGON_V6_vlutvwh
- {Intrinsic::hexagon_V6_vlutvwh_128B, 44352}, // __builtin_HEXAGON_V6_vlutvwh_128B
- {Intrinsic::hexagon_V6_vlutvwh_nm, 44386}, // __builtin_HEXAGON_V6_vlutvwh_nm
- {Intrinsic::hexagon_V6_vlutvwh_nm_128B, 44418}, // __builtin_HEXAGON_V6_vlutvwh_nm_128B
- {Intrinsic::hexagon_V6_vlutvwh_oracc, 44455}, // __builtin_HEXAGON_V6_vlutvwh_oracc
- {Intrinsic::hexagon_V6_vlutvwh_oracc_128B, 44490}, // __builtin_HEXAGON_V6_vlutvwh_oracc_128B
- {Intrinsic::hexagon_V6_vlutvwh_oracci, 44530}, // __builtin_HEXAGON_V6_vlutvwh_oracci
- {Intrinsic::hexagon_V6_vlutvwh_oracci_128B, 44566}, // __builtin_HEXAGON_V6_vlutvwh_oracci_128B
- {Intrinsic::hexagon_V6_vlutvwhi, 44607}, // __builtin_HEXAGON_V6_vlutvwhi
- {Intrinsic::hexagon_V6_vlutvwhi_128B, 44637}, // __builtin_HEXAGON_V6_vlutvwhi_128B
- {Intrinsic::hexagon_V6_vmaskedstorenq, 44672}, // __builtin_HEXAGON_V6_vmaskedstorenq
- {Intrinsic::hexagon_V6_vmaskedstorenq_128B, 44708}, // __builtin_HEXAGON_V6_vmaskedstorenq_128B
- {Intrinsic::hexagon_V6_vmaskedstorentnq, 44749}, // __builtin_HEXAGON_V6_vmaskedstorentnq
- {Intrinsic::hexagon_V6_vmaskedstorentnq_128B, 44787}, // __builtin_HEXAGON_V6_vmaskedstorentnq_128B
- {Intrinsic::hexagon_V6_vmaskedstorentq, 44830}, // __builtin_HEXAGON_V6_vmaskedstorentq
- {Intrinsic::hexagon_V6_vmaskedstorentq_128B, 44867}, // __builtin_HEXAGON_V6_vmaskedstorentq_128B
- {Intrinsic::hexagon_V6_vmaskedstoreq, 44909}, // __builtin_HEXAGON_V6_vmaskedstoreq
- {Intrinsic::hexagon_V6_vmaskedstoreq_128B, 44944}, // __builtin_HEXAGON_V6_vmaskedstoreq_128B
- {Intrinsic::hexagon_V6_vmaxb, 44984}, // __builtin_HEXAGON_V6_vmaxb
- {Intrinsic::hexagon_V6_vmaxb_128B, 45011}, // __builtin_HEXAGON_V6_vmaxb_128B
- {Intrinsic::hexagon_V6_vmaxh, 45043}, // __builtin_HEXAGON_V6_vmaxh
- {Intrinsic::hexagon_V6_vmaxh_128B, 45070}, // __builtin_HEXAGON_V6_vmaxh_128B
- {Intrinsic::hexagon_V6_vmaxub, 45102}, // __builtin_HEXAGON_V6_vmaxub
- {Intrinsic::hexagon_V6_vmaxub_128B, 45130}, // __builtin_HEXAGON_V6_vmaxub_128B
- {Intrinsic::hexagon_V6_vmaxuh, 45163}, // __builtin_HEXAGON_V6_vmaxuh
- {Intrinsic::hexagon_V6_vmaxuh_128B, 45191}, // __builtin_HEXAGON_V6_vmaxuh_128B
- {Intrinsic::hexagon_V6_vmaxw, 45224}, // __builtin_HEXAGON_V6_vmaxw
- {Intrinsic::hexagon_V6_vmaxw_128B, 45251}, // __builtin_HEXAGON_V6_vmaxw_128B
- {Intrinsic::hexagon_V6_vminb, 45283}, // __builtin_HEXAGON_V6_vminb
- {Intrinsic::hexagon_V6_vminb_128B, 45310}, // __builtin_HEXAGON_V6_vminb_128B
- {Intrinsic::hexagon_V6_vminh, 45342}, // __builtin_HEXAGON_V6_vminh
- {Intrinsic::hexagon_V6_vminh_128B, 45369}, // __builtin_HEXAGON_V6_vminh_128B
- {Intrinsic::hexagon_V6_vminub, 45401}, // __builtin_HEXAGON_V6_vminub
- {Intrinsic::hexagon_V6_vminub_128B, 45429}, // __builtin_HEXAGON_V6_vminub_128B
- {Intrinsic::hexagon_V6_vminuh, 45462}, // __builtin_HEXAGON_V6_vminuh
- {Intrinsic::hexagon_V6_vminuh_128B, 45490}, // __builtin_HEXAGON_V6_vminuh_128B
- {Intrinsic::hexagon_V6_vminw, 45523}, // __builtin_HEXAGON_V6_vminw
- {Intrinsic::hexagon_V6_vminw_128B, 45550}, // __builtin_HEXAGON_V6_vminw_128B
- {Intrinsic::hexagon_V6_vmpabus, 45582}, // __builtin_HEXAGON_V6_vmpabus
- {Intrinsic::hexagon_V6_vmpabus_128B, 45611}, // __builtin_HEXAGON_V6_vmpabus_128B
- {Intrinsic::hexagon_V6_vmpabus_acc, 45645}, // __builtin_HEXAGON_V6_vmpabus_acc
- {Intrinsic::hexagon_V6_vmpabus_acc_128B, 45678}, // __builtin_HEXAGON_V6_vmpabus_acc_128B
- {Intrinsic::hexagon_V6_vmpabusv, 45716}, // __builtin_HEXAGON_V6_vmpabusv
- {Intrinsic::hexagon_V6_vmpabusv_128B, 45746}, // __builtin_HEXAGON_V6_vmpabusv_128B
- {Intrinsic::hexagon_V6_vmpabuu, 45781}, // __builtin_HEXAGON_V6_vmpabuu
- {Intrinsic::hexagon_V6_vmpabuu_128B, 45810}, // __builtin_HEXAGON_V6_vmpabuu_128B
- {Intrinsic::hexagon_V6_vmpabuu_acc, 45844}, // __builtin_HEXAGON_V6_vmpabuu_acc
- {Intrinsic::hexagon_V6_vmpabuu_acc_128B, 45877}, // __builtin_HEXAGON_V6_vmpabuu_acc_128B
- {Intrinsic::hexagon_V6_vmpabuuv, 45915}, // __builtin_HEXAGON_V6_vmpabuuv
- {Intrinsic::hexagon_V6_vmpabuuv_128B, 45945}, // __builtin_HEXAGON_V6_vmpabuuv_128B
- {Intrinsic::hexagon_V6_vmpahb, 45980}, // __builtin_HEXAGON_V6_vmpahb
- {Intrinsic::hexagon_V6_vmpahb_128B, 46008}, // __builtin_HEXAGON_V6_vmpahb_128B
- {Intrinsic::hexagon_V6_vmpahb_acc, 46041}, // __builtin_HEXAGON_V6_vmpahb_acc
- {Intrinsic::hexagon_V6_vmpahb_acc_128B, 46073}, // __builtin_HEXAGON_V6_vmpahb_acc_128B
- {Intrinsic::hexagon_V6_vmpahhsat, 46110}, // __builtin_HEXAGON_V6_vmpahhsat
- {Intrinsic::hexagon_V6_vmpahhsat_128B, 46141}, // __builtin_HEXAGON_V6_vmpahhsat_128B
- {Intrinsic::hexagon_V6_vmpauhb, 46177}, // __builtin_HEXAGON_V6_vmpauhb
- {Intrinsic::hexagon_V6_vmpauhb_128B, 46206}, // __builtin_HEXAGON_V6_vmpauhb_128B
- {Intrinsic::hexagon_V6_vmpauhb_acc, 46240}, // __builtin_HEXAGON_V6_vmpauhb_acc
- {Intrinsic::hexagon_V6_vmpauhb_acc_128B, 46273}, // __builtin_HEXAGON_V6_vmpauhb_acc_128B
- {Intrinsic::hexagon_V6_vmpauhuhsat, 46311}, // __builtin_HEXAGON_V6_vmpauhuhsat
- {Intrinsic::hexagon_V6_vmpauhuhsat_128B, 46344}, // __builtin_HEXAGON_V6_vmpauhuhsat_128B
- {Intrinsic::hexagon_V6_vmpsuhuhsat, 46382}, // __builtin_HEXAGON_V6_vmpsuhuhsat
- {Intrinsic::hexagon_V6_vmpsuhuhsat_128B, 46415}, // __builtin_HEXAGON_V6_vmpsuhuhsat_128B
- {Intrinsic::hexagon_V6_vmpybus, 46453}, // __builtin_HEXAGON_V6_vmpybus
- {Intrinsic::hexagon_V6_vmpybus_128B, 46482}, // __builtin_HEXAGON_V6_vmpybus_128B
- {Intrinsic::hexagon_V6_vmpybus_acc, 46516}, // __builtin_HEXAGON_V6_vmpybus_acc
- {Intrinsic::hexagon_V6_vmpybus_acc_128B, 46549}, // __builtin_HEXAGON_V6_vmpybus_acc_128B
- {Intrinsic::hexagon_V6_vmpybusv, 46587}, // __builtin_HEXAGON_V6_vmpybusv
- {Intrinsic::hexagon_V6_vmpybusv_128B, 46617}, // __builtin_HEXAGON_V6_vmpybusv_128B
- {Intrinsic::hexagon_V6_vmpybusv_acc, 46652}, // __builtin_HEXAGON_V6_vmpybusv_acc
- {Intrinsic::hexagon_V6_vmpybusv_acc_128B, 46686}, // __builtin_HEXAGON_V6_vmpybusv_acc_128B
- {Intrinsic::hexagon_V6_vmpybv, 46725}, // __builtin_HEXAGON_V6_vmpybv
- {Intrinsic::hexagon_V6_vmpybv_128B, 46753}, // __builtin_HEXAGON_V6_vmpybv_128B
- {Intrinsic::hexagon_V6_vmpybv_acc, 46786}, // __builtin_HEXAGON_V6_vmpybv_acc
- {Intrinsic::hexagon_V6_vmpybv_acc_128B, 46818}, // __builtin_HEXAGON_V6_vmpybv_acc_128B
- {Intrinsic::hexagon_V6_vmpyewuh, 46855}, // __builtin_HEXAGON_V6_vmpyewuh
- {Intrinsic::hexagon_V6_vmpyewuh_128B, 46885}, // __builtin_HEXAGON_V6_vmpyewuh_128B
- {Intrinsic::hexagon_V6_vmpyewuh_64, 46920}, // __builtin_HEXAGON_V6_vmpyewuh_64
- {Intrinsic::hexagon_V6_vmpyewuh_64_128B, 46953}, // __builtin_HEXAGON_V6_vmpyewuh_64_128B
- {Intrinsic::hexagon_V6_vmpyh, 46991}, // __builtin_HEXAGON_V6_vmpyh
- {Intrinsic::hexagon_V6_vmpyh_128B, 47018}, // __builtin_HEXAGON_V6_vmpyh_128B
- {Intrinsic::hexagon_V6_vmpyh_acc, 47050}, // __builtin_HEXAGON_V6_vmpyh_acc
- {Intrinsic::hexagon_V6_vmpyh_acc_128B, 47081}, // __builtin_HEXAGON_V6_vmpyh_acc_128B
- {Intrinsic::hexagon_V6_vmpyhsat_acc, 47117}, // __builtin_HEXAGON_V6_vmpyhsat_acc
- {Intrinsic::hexagon_V6_vmpyhsat_acc_128B, 47151}, // __builtin_HEXAGON_V6_vmpyhsat_acc_128B
- {Intrinsic::hexagon_V6_vmpyhsrs, 47190}, // __builtin_HEXAGON_V6_vmpyhsrs
- {Intrinsic::hexagon_V6_vmpyhsrs_128B, 47220}, // __builtin_HEXAGON_V6_vmpyhsrs_128B
- {Intrinsic::hexagon_V6_vmpyhss, 47255}, // __builtin_HEXAGON_V6_vmpyhss
- {Intrinsic::hexagon_V6_vmpyhss_128B, 47284}, // __builtin_HEXAGON_V6_vmpyhss_128B
- {Intrinsic::hexagon_V6_vmpyhus, 47318}, // __builtin_HEXAGON_V6_vmpyhus
- {Intrinsic::hexagon_V6_vmpyhus_128B, 47347}, // __builtin_HEXAGON_V6_vmpyhus_128B
- {Intrinsic::hexagon_V6_vmpyhus_acc, 47381}, // __builtin_HEXAGON_V6_vmpyhus_acc
- {Intrinsic::hexagon_V6_vmpyhus_acc_128B, 47414}, // __builtin_HEXAGON_V6_vmpyhus_acc_128B
- {Intrinsic::hexagon_V6_vmpyhv, 47452}, // __builtin_HEXAGON_V6_vmpyhv
- {Intrinsic::hexagon_V6_vmpyhv_128B, 47480}, // __builtin_HEXAGON_V6_vmpyhv_128B
- {Intrinsic::hexagon_V6_vmpyhv_acc, 47513}, // __builtin_HEXAGON_V6_vmpyhv_acc
- {Intrinsic::hexagon_V6_vmpyhv_acc_128B, 47545}, // __builtin_HEXAGON_V6_vmpyhv_acc_128B
- {Intrinsic::hexagon_V6_vmpyhvsrs, 47582}, // __builtin_HEXAGON_V6_vmpyhvsrs
- {Intrinsic::hexagon_V6_vmpyhvsrs_128B, 47613}, // __builtin_HEXAGON_V6_vmpyhvsrs_128B
- {Intrinsic::hexagon_V6_vmpyieoh, 47649}, // __builtin_HEXAGON_V6_vmpyieoh
- {Intrinsic::hexagon_V6_vmpyieoh_128B, 47679}, // __builtin_HEXAGON_V6_vmpyieoh_128B
- {Intrinsic::hexagon_V6_vmpyiewh_acc, 47714}, // __builtin_HEXAGON_V6_vmpyiewh_acc
- {Intrinsic::hexagon_V6_vmpyiewh_acc_128B, 47748}, // __builtin_HEXAGON_V6_vmpyiewh_acc_128B
- {Intrinsic::hexagon_V6_vmpyiewuh, 47787}, // __builtin_HEXAGON_V6_vmpyiewuh
- {Intrinsic::hexagon_V6_vmpyiewuh_128B, 47818}, // __builtin_HEXAGON_V6_vmpyiewuh_128B
- {Intrinsic::hexagon_V6_vmpyiewuh_acc, 47854}, // __builtin_HEXAGON_V6_vmpyiewuh_acc
- {Intrinsic::hexagon_V6_vmpyiewuh_acc_128B, 47889}, // __builtin_HEXAGON_V6_vmpyiewuh_acc_128B
- {Intrinsic::hexagon_V6_vmpyih, 47929}, // __builtin_HEXAGON_V6_vmpyih
- {Intrinsic::hexagon_V6_vmpyih_128B, 47957}, // __builtin_HEXAGON_V6_vmpyih_128B
- {Intrinsic::hexagon_V6_vmpyih_acc, 47990}, // __builtin_HEXAGON_V6_vmpyih_acc
- {Intrinsic::hexagon_V6_vmpyih_acc_128B, 48022}, // __builtin_HEXAGON_V6_vmpyih_acc_128B
- {Intrinsic::hexagon_V6_vmpyihb, 48059}, // __builtin_HEXAGON_V6_vmpyihb
- {Intrinsic::hexagon_V6_vmpyihb_128B, 48088}, // __builtin_HEXAGON_V6_vmpyihb_128B
- {Intrinsic::hexagon_V6_vmpyihb_acc, 48122}, // __builtin_HEXAGON_V6_vmpyihb_acc
- {Intrinsic::hexagon_V6_vmpyihb_acc_128B, 48155}, // __builtin_HEXAGON_V6_vmpyihb_acc_128B
- {Intrinsic::hexagon_V6_vmpyiowh, 48193}, // __builtin_HEXAGON_V6_vmpyiowh
- {Intrinsic::hexagon_V6_vmpyiowh_128B, 48223}, // __builtin_HEXAGON_V6_vmpyiowh_128B
- {Intrinsic::hexagon_V6_vmpyiwb, 48258}, // __builtin_HEXAGON_V6_vmpyiwb
- {Intrinsic::hexagon_V6_vmpyiwb_128B, 48287}, // __builtin_HEXAGON_V6_vmpyiwb_128B
- {Intrinsic::hexagon_V6_vmpyiwb_acc, 48321}, // __builtin_HEXAGON_V6_vmpyiwb_acc
- {Intrinsic::hexagon_V6_vmpyiwb_acc_128B, 48354}, // __builtin_HEXAGON_V6_vmpyiwb_acc_128B
- {Intrinsic::hexagon_V6_vmpyiwh, 48392}, // __builtin_HEXAGON_V6_vmpyiwh
- {Intrinsic::hexagon_V6_vmpyiwh_128B, 48421}, // __builtin_HEXAGON_V6_vmpyiwh_128B
- {Intrinsic::hexagon_V6_vmpyiwh_acc, 48455}, // __builtin_HEXAGON_V6_vmpyiwh_acc
- {Intrinsic::hexagon_V6_vmpyiwh_acc_128B, 48488}, // __builtin_HEXAGON_V6_vmpyiwh_acc_128B
- {Intrinsic::hexagon_V6_vmpyiwub, 48526}, // __builtin_HEXAGON_V6_vmpyiwub
- {Intrinsic::hexagon_V6_vmpyiwub_128B, 48556}, // __builtin_HEXAGON_V6_vmpyiwub_128B
- {Intrinsic::hexagon_V6_vmpyiwub_acc, 48591}, // __builtin_HEXAGON_V6_vmpyiwub_acc
- {Intrinsic::hexagon_V6_vmpyiwub_acc_128B, 48625}, // __builtin_HEXAGON_V6_vmpyiwub_acc_128B
- {Intrinsic::hexagon_V6_vmpyowh, 48664}, // __builtin_HEXAGON_V6_vmpyowh
- {Intrinsic::hexagon_V6_vmpyowh_128B, 48693}, // __builtin_HEXAGON_V6_vmpyowh_128B
- {Intrinsic::hexagon_V6_vmpyowh_64_acc, 48727}, // __builtin_HEXAGON_V6_vmpyowh_64_acc
- {Intrinsic::hexagon_V6_vmpyowh_64_acc_128B, 48763}, // __builtin_HEXAGON_V6_vmpyowh_64_acc_128B
- {Intrinsic::hexagon_V6_vmpyowh_rnd, 48804}, // __builtin_HEXAGON_V6_vmpyowh_rnd
- {Intrinsic::hexagon_V6_vmpyowh_rnd_128B, 48837}, // __builtin_HEXAGON_V6_vmpyowh_rnd_128B
- {Intrinsic::hexagon_V6_vmpyowh_rnd_sacc, 48875}, // __builtin_HEXAGON_V6_vmpyowh_rnd_sacc
- {Intrinsic::hexagon_V6_vmpyowh_rnd_sacc_128B, 48913}, // __builtin_HEXAGON_V6_vmpyowh_rnd_sacc_128B
- {Intrinsic::hexagon_V6_vmpyowh_sacc, 48956}, // __builtin_HEXAGON_V6_vmpyowh_sacc
- {Intrinsic::hexagon_V6_vmpyowh_sacc_128B, 48990}, // __builtin_HEXAGON_V6_vmpyowh_sacc_128B
- {Intrinsic::hexagon_V6_vmpyub, 49029}, // __builtin_HEXAGON_V6_vmpyub
- {Intrinsic::hexagon_V6_vmpyub_128B, 49057}, // __builtin_HEXAGON_V6_vmpyub_128B
- {Intrinsic::hexagon_V6_vmpyub_acc, 49090}, // __builtin_HEXAGON_V6_vmpyub_acc
- {Intrinsic::hexagon_V6_vmpyub_acc_128B, 49122}, // __builtin_HEXAGON_V6_vmpyub_acc_128B
- {Intrinsic::hexagon_V6_vmpyubv, 49159}, // __builtin_HEXAGON_V6_vmpyubv
- {Intrinsic::hexagon_V6_vmpyubv_128B, 49188}, // __builtin_HEXAGON_V6_vmpyubv_128B
- {Intrinsic::hexagon_V6_vmpyubv_acc, 49222}, // __builtin_HEXAGON_V6_vmpyubv_acc
- {Intrinsic::hexagon_V6_vmpyubv_acc_128B, 49255}, // __builtin_HEXAGON_V6_vmpyubv_acc_128B
- {Intrinsic::hexagon_V6_vmpyuh, 49293}, // __builtin_HEXAGON_V6_vmpyuh
- {Intrinsic::hexagon_V6_vmpyuh_128B, 49321}, // __builtin_HEXAGON_V6_vmpyuh_128B
- {Intrinsic::hexagon_V6_vmpyuh_acc, 49354}, // __builtin_HEXAGON_V6_vmpyuh_acc
- {Intrinsic::hexagon_V6_vmpyuh_acc_128B, 49386}, // __builtin_HEXAGON_V6_vmpyuh_acc_128B
- {Intrinsic::hexagon_V6_vmpyuhe, 49423}, // __builtin_HEXAGON_V6_vmpyuhe
- {Intrinsic::hexagon_V6_vmpyuhe_128B, 49452}, // __builtin_HEXAGON_V6_vmpyuhe_128B
- {Intrinsic::hexagon_V6_vmpyuhe_acc, 49486}, // __builtin_HEXAGON_V6_vmpyuhe_acc
- {Intrinsic::hexagon_V6_vmpyuhe_acc_128B, 49519}, // __builtin_HEXAGON_V6_vmpyuhe_acc_128B
- {Intrinsic::hexagon_V6_vmpyuhv, 49557}, // __builtin_HEXAGON_V6_vmpyuhv
- {Intrinsic::hexagon_V6_vmpyuhv_128B, 49586}, // __builtin_HEXAGON_V6_vmpyuhv_128B
- {Intrinsic::hexagon_V6_vmpyuhv_acc, 49620}, // __builtin_HEXAGON_V6_vmpyuhv_acc
- {Intrinsic::hexagon_V6_vmpyuhv_acc_128B, 49653}, // __builtin_HEXAGON_V6_vmpyuhv_acc_128B
- {Intrinsic::hexagon_V6_vmux, 49691}, // __builtin_HEXAGON_V6_vmux
- {Intrinsic::hexagon_V6_vmux_128B, 49717}, // __builtin_HEXAGON_V6_vmux_128B
- {Intrinsic::hexagon_V6_vnavgb, 49748}, // __builtin_HEXAGON_V6_vnavgb
- {Intrinsic::hexagon_V6_vnavgb_128B, 49776}, // __builtin_HEXAGON_V6_vnavgb_128B
- {Intrinsic::hexagon_V6_vnavgh, 49809}, // __builtin_HEXAGON_V6_vnavgh
- {Intrinsic::hexagon_V6_vnavgh_128B, 49837}, // __builtin_HEXAGON_V6_vnavgh_128B
- {Intrinsic::hexagon_V6_vnavgub, 49870}, // __builtin_HEXAGON_V6_vnavgub
- {Intrinsic::hexagon_V6_vnavgub_128B, 49899}, // __builtin_HEXAGON_V6_vnavgub_128B
- {Intrinsic::hexagon_V6_vnavgw, 49933}, // __builtin_HEXAGON_V6_vnavgw
- {Intrinsic::hexagon_V6_vnavgw_128B, 49961}, // __builtin_HEXAGON_V6_vnavgw_128B
- {Intrinsic::hexagon_V6_vnormamth, 49994}, // __builtin_HEXAGON_V6_vnormamth
- {Intrinsic::hexagon_V6_vnormamth_128B, 50025}, // __builtin_HEXAGON_V6_vnormamth_128B
- {Intrinsic::hexagon_V6_vnormamtw, 50061}, // __builtin_HEXAGON_V6_vnormamtw
- {Intrinsic::hexagon_V6_vnormamtw_128B, 50092}, // __builtin_HEXAGON_V6_vnormamtw_128B
- {Intrinsic::hexagon_V6_vnot, 50128}, // __builtin_HEXAGON_V6_vnot
- {Intrinsic::hexagon_V6_vnot_128B, 50154}, // __builtin_HEXAGON_V6_vnot_128B
- {Intrinsic::hexagon_V6_vor, 50185}, // __builtin_HEXAGON_V6_vor
- {Intrinsic::hexagon_V6_vor_128B, 50210}, // __builtin_HEXAGON_V6_vor_128B
- {Intrinsic::hexagon_V6_vpackeb, 50240}, // __builtin_HEXAGON_V6_vpackeb
- {Intrinsic::hexagon_V6_vpackeb_128B, 50269}, // __builtin_HEXAGON_V6_vpackeb_128B
- {Intrinsic::hexagon_V6_vpackeh, 50303}, // __builtin_HEXAGON_V6_vpackeh
- {Intrinsic::hexagon_V6_vpackeh_128B, 50332}, // __builtin_HEXAGON_V6_vpackeh_128B
- {Intrinsic::hexagon_V6_vpackhb_sat, 50366}, // __builtin_HEXAGON_V6_vpackhb_sat
- {Intrinsic::hexagon_V6_vpackhb_sat_128B, 50399}, // __builtin_HEXAGON_V6_vpackhb_sat_128B
- {Intrinsic::hexagon_V6_vpackhub_sat, 50437}, // __builtin_HEXAGON_V6_vpackhub_sat
- {Intrinsic::hexagon_V6_vpackhub_sat_128B, 50471}, // __builtin_HEXAGON_V6_vpackhub_sat_128B
- {Intrinsic::hexagon_V6_vpackob, 50510}, // __builtin_HEXAGON_V6_vpackob
- {Intrinsic::hexagon_V6_vpackob_128B, 50539}, // __builtin_HEXAGON_V6_vpackob_128B
- {Intrinsic::hexagon_V6_vpackoh, 50573}, // __builtin_HEXAGON_V6_vpackoh
- {Intrinsic::hexagon_V6_vpackoh_128B, 50602}, // __builtin_HEXAGON_V6_vpackoh_128B
- {Intrinsic::hexagon_V6_vpackwh_sat, 50636}, // __builtin_HEXAGON_V6_vpackwh_sat
- {Intrinsic::hexagon_V6_vpackwh_sat_128B, 50669}, // __builtin_HEXAGON_V6_vpackwh_sat_128B
- {Intrinsic::hexagon_V6_vpackwuh_sat, 50707}, // __builtin_HEXAGON_V6_vpackwuh_sat
- {Intrinsic::hexagon_V6_vpackwuh_sat_128B, 50741}, // __builtin_HEXAGON_V6_vpackwuh_sat_128B
- {Intrinsic::hexagon_V6_vpopcounth, 50780}, // __builtin_HEXAGON_V6_vpopcounth
- {Intrinsic::hexagon_V6_vpopcounth_128B, 50812}, // __builtin_HEXAGON_V6_vpopcounth_128B
- {Intrinsic::hexagon_V6_vprefixqb, 50849}, // __builtin_HEXAGON_V6_vprefixqb
- {Intrinsic::hexagon_V6_vprefixqb_128B, 50880}, // __builtin_HEXAGON_V6_vprefixqb_128B
- {Intrinsic::hexagon_V6_vprefixqh, 50916}, // __builtin_HEXAGON_V6_vprefixqh
- {Intrinsic::hexagon_V6_vprefixqh_128B, 50947}, // __builtin_HEXAGON_V6_vprefixqh_128B
- {Intrinsic::hexagon_V6_vprefixqw, 50983}, // __builtin_HEXAGON_V6_vprefixqw
- {Intrinsic::hexagon_V6_vprefixqw_128B, 51014}, // __builtin_HEXAGON_V6_vprefixqw_128B
- {Intrinsic::hexagon_V6_vrdelta, 51050}, // __builtin_HEXAGON_V6_vrdelta
- {Intrinsic::hexagon_V6_vrdelta_128B, 51079}, // __builtin_HEXAGON_V6_vrdelta_128B
- {Intrinsic::hexagon_V6_vrmpybub_rtt, 51113}, // __builtin_HEXAGON_V6_vrmpybub_rtt
- {Intrinsic::hexagon_V6_vrmpybub_rtt_128B, 51147}, // __builtin_HEXAGON_V6_vrmpybub_rtt_128B
- {Intrinsic::hexagon_V6_vrmpybub_rtt_acc, 51186}, // __builtin_HEXAGON_V6_vrmpybub_rtt_acc
- {Intrinsic::hexagon_V6_vrmpybub_rtt_acc_128B, 51224}, // __builtin_HEXAGON_V6_vrmpybub_rtt_acc_128B
- {Intrinsic::hexagon_V6_vrmpybus, 51267}, // __builtin_HEXAGON_V6_vrmpybus
- {Intrinsic::hexagon_V6_vrmpybus_128B, 51297}, // __builtin_HEXAGON_V6_vrmpybus_128B
- {Intrinsic::hexagon_V6_vrmpybus_acc, 51332}, // __builtin_HEXAGON_V6_vrmpybus_acc
- {Intrinsic::hexagon_V6_vrmpybus_acc_128B, 51366}, // __builtin_HEXAGON_V6_vrmpybus_acc_128B
- {Intrinsic::hexagon_V6_vrmpybusi, 51405}, // __builtin_HEXAGON_V6_vrmpybusi
- {Intrinsic::hexagon_V6_vrmpybusi_128B, 51436}, // __builtin_HEXAGON_V6_vrmpybusi_128B
- {Intrinsic::hexagon_V6_vrmpybusi_acc, 51472}, // __builtin_HEXAGON_V6_vrmpybusi_acc
- {Intrinsic::hexagon_V6_vrmpybusi_acc_128B, 51507}, // __builtin_HEXAGON_V6_vrmpybusi_acc_128B
- {Intrinsic::hexagon_V6_vrmpybusv, 51547}, // __builtin_HEXAGON_V6_vrmpybusv
- {Intrinsic::hexagon_V6_vrmpybusv_128B, 51578}, // __builtin_HEXAGON_V6_vrmpybusv_128B
- {Intrinsic::hexagon_V6_vrmpybusv_acc, 51614}, // __builtin_HEXAGON_V6_vrmpybusv_acc
- {Intrinsic::hexagon_V6_vrmpybusv_acc_128B, 51649}, // __builtin_HEXAGON_V6_vrmpybusv_acc_128B
- {Intrinsic::hexagon_V6_vrmpybv, 51689}, // __builtin_HEXAGON_V6_vrmpybv
- {Intrinsic::hexagon_V6_vrmpybv_128B, 51718}, // __builtin_HEXAGON_V6_vrmpybv_128B
- {Intrinsic::hexagon_V6_vrmpybv_acc, 51752}, // __builtin_HEXAGON_V6_vrmpybv_acc
- {Intrinsic::hexagon_V6_vrmpybv_acc_128B, 51785}, // __builtin_HEXAGON_V6_vrmpybv_acc_128B
- {Intrinsic::hexagon_V6_vrmpyub, 51823}, // __builtin_HEXAGON_V6_vrmpyub
- {Intrinsic::hexagon_V6_vrmpyub_128B, 51852}, // __builtin_HEXAGON_V6_vrmpyub_128B
- {Intrinsic::hexagon_V6_vrmpyub_acc, 51886}, // __builtin_HEXAGON_V6_vrmpyub_acc
- {Intrinsic::hexagon_V6_vrmpyub_acc_128B, 51919}, // __builtin_HEXAGON_V6_vrmpyub_acc_128B
- {Intrinsic::hexagon_V6_vrmpyub_rtt, 51957}, // __builtin_HEXAGON_V6_vrmpyub_rtt
- {Intrinsic::hexagon_V6_vrmpyub_rtt_128B, 51990}, // __builtin_HEXAGON_V6_vrmpyub_rtt_128B
- {Intrinsic::hexagon_V6_vrmpyub_rtt_acc, 52028}, // __builtin_HEXAGON_V6_vrmpyub_rtt_acc
- {Intrinsic::hexagon_V6_vrmpyub_rtt_acc_128B, 52065}, // __builtin_HEXAGON_V6_vrmpyub_rtt_acc_128B
- {Intrinsic::hexagon_V6_vrmpyubi, 52107}, // __builtin_HEXAGON_V6_vrmpyubi
- {Intrinsic::hexagon_V6_vrmpyubi_128B, 52137}, // __builtin_HEXAGON_V6_vrmpyubi_128B
- {Intrinsic::hexagon_V6_vrmpyubi_acc, 52172}, // __builtin_HEXAGON_V6_vrmpyubi_acc
- {Intrinsic::hexagon_V6_vrmpyubi_acc_128B, 52206}, // __builtin_HEXAGON_V6_vrmpyubi_acc_128B
- {Intrinsic::hexagon_V6_vrmpyubv, 52245}, // __builtin_HEXAGON_V6_vrmpyubv
- {Intrinsic::hexagon_V6_vrmpyubv_128B, 52275}, // __builtin_HEXAGON_V6_vrmpyubv_128B
- {Intrinsic::hexagon_V6_vrmpyubv_acc, 52310}, // __builtin_HEXAGON_V6_vrmpyubv_acc
- {Intrinsic::hexagon_V6_vrmpyubv_acc_128B, 52344}, // __builtin_HEXAGON_V6_vrmpyubv_acc_128B
- {Intrinsic::hexagon_V6_vror, 52383}, // __builtin_HEXAGON_V6_vror
- {Intrinsic::hexagon_V6_vror_128B, 52409}, // __builtin_HEXAGON_V6_vror_128B
- {Intrinsic::hexagon_V6_vroundhb, 52440}, // __builtin_HEXAGON_V6_vroundhb
- {Intrinsic::hexagon_V6_vroundhb_128B, 52470}, // __builtin_HEXAGON_V6_vroundhb_128B
- {Intrinsic::hexagon_V6_vroundhub, 52505}, // __builtin_HEXAGON_V6_vroundhub
- {Intrinsic::hexagon_V6_vroundhub_128B, 52536}, // __builtin_HEXAGON_V6_vroundhub_128B
- {Intrinsic::hexagon_V6_vrounduhub, 52572}, // __builtin_HEXAGON_V6_vrounduhub
- {Intrinsic::hexagon_V6_vrounduhub_128B, 52604}, // __builtin_HEXAGON_V6_vrounduhub_128B
- {Intrinsic::hexagon_V6_vrounduwuh, 52641}, // __builtin_HEXAGON_V6_vrounduwuh
- {Intrinsic::hexagon_V6_vrounduwuh_128B, 52673}, // __builtin_HEXAGON_V6_vrounduwuh_128B
- {Intrinsic::hexagon_V6_vroundwh, 52710}, // __builtin_HEXAGON_V6_vroundwh
- {Intrinsic::hexagon_V6_vroundwh_128B, 52740}, // __builtin_HEXAGON_V6_vroundwh_128B
- {Intrinsic::hexagon_V6_vroundwuh, 52775}, // __builtin_HEXAGON_V6_vroundwuh
- {Intrinsic::hexagon_V6_vroundwuh_128B, 52806}, // __builtin_HEXAGON_V6_vroundwuh_128B
- {Intrinsic::hexagon_V6_vrsadubi, 52842}, // __builtin_HEXAGON_V6_vrsadubi
- {Intrinsic::hexagon_V6_vrsadubi_128B, 52872}, // __builtin_HEXAGON_V6_vrsadubi_128B
- {Intrinsic::hexagon_V6_vrsadubi_acc, 52907}, // __builtin_HEXAGON_V6_vrsadubi_acc
- {Intrinsic::hexagon_V6_vrsadubi_acc_128B, 52941}, // __builtin_HEXAGON_V6_vrsadubi_acc_128B
- {Intrinsic::hexagon_V6_vsathub, 52980}, // __builtin_HEXAGON_V6_vsathub
- {Intrinsic::hexagon_V6_vsathub_128B, 53009}, // __builtin_HEXAGON_V6_vsathub_128B
- {Intrinsic::hexagon_V6_vsatuwuh, 53043}, // __builtin_HEXAGON_V6_vsatuwuh
- {Intrinsic::hexagon_V6_vsatuwuh_128B, 53073}, // __builtin_HEXAGON_V6_vsatuwuh_128B
- {Intrinsic::hexagon_V6_vsatwh, 53108}, // __builtin_HEXAGON_V6_vsatwh
- {Intrinsic::hexagon_V6_vsatwh_128B, 53136}, // __builtin_HEXAGON_V6_vsatwh_128B
- {Intrinsic::hexagon_V6_vsb, 53169}, // __builtin_HEXAGON_V6_vsb
- {Intrinsic::hexagon_V6_vsb_128B, 53194}, // __builtin_HEXAGON_V6_vsb_128B
- {Intrinsic::hexagon_V6_vscattermh, 53224}, // __builtin_HEXAGON_V6_vscattermh
- {Intrinsic::hexagon_V6_vscattermh_128B, 53256}, // __builtin_HEXAGON_V6_vscattermh_128B
- {Intrinsic::hexagon_V6_vscattermh_add, 53293}, // __builtin_HEXAGON_V6_vscattermh_add
- {Intrinsic::hexagon_V6_vscattermh_add_128B, 53329}, // __builtin_HEXAGON_V6_vscattermh_add_128B
- {Intrinsic::hexagon_V6_vscattermhq, 53370}, // __builtin_HEXAGON_V6_vscattermhq
- {Intrinsic::hexagon_V6_vscattermhq_128B, 53403}, // __builtin_HEXAGON_V6_vscattermhq_128B
- {Intrinsic::hexagon_V6_vscattermhw, 53441}, // __builtin_HEXAGON_V6_vscattermhw
- {Intrinsic::hexagon_V6_vscattermhw_128B, 53474}, // __builtin_HEXAGON_V6_vscattermhw_128B
- {Intrinsic::hexagon_V6_vscattermhw_add, 53512}, // __builtin_HEXAGON_V6_vscattermhw_add
- {Intrinsic::hexagon_V6_vscattermhw_add_128B, 53549}, // __builtin_HEXAGON_V6_vscattermhw_add_128B
- {Intrinsic::hexagon_V6_vscattermhwq, 53591}, // __builtin_HEXAGON_V6_vscattermhwq
- {Intrinsic::hexagon_V6_vscattermhwq_128B, 53625}, // __builtin_HEXAGON_V6_vscattermhwq_128B
- {Intrinsic::hexagon_V6_vscattermw, 53664}, // __builtin_HEXAGON_V6_vscattermw
- {Intrinsic::hexagon_V6_vscattermw_128B, 53696}, // __builtin_HEXAGON_V6_vscattermw_128B
- {Intrinsic::hexagon_V6_vscattermw_add, 53733}, // __builtin_HEXAGON_V6_vscattermw_add
- {Intrinsic::hexagon_V6_vscattermw_add_128B, 53769}, // __builtin_HEXAGON_V6_vscattermw_add_128B
- {Intrinsic::hexagon_V6_vscattermwq, 53810}, // __builtin_HEXAGON_V6_vscattermwq
- {Intrinsic::hexagon_V6_vscattermwq_128B, 53843}, // __builtin_HEXAGON_V6_vscattermwq_128B
- {Intrinsic::hexagon_V6_vsh, 53881}, // __builtin_HEXAGON_V6_vsh
- {Intrinsic::hexagon_V6_vsh_128B, 53906}, // __builtin_HEXAGON_V6_vsh_128B
- {Intrinsic::hexagon_V6_vshufeh, 53936}, // __builtin_HEXAGON_V6_vshufeh
- {Intrinsic::hexagon_V6_vshufeh_128B, 53965}, // __builtin_HEXAGON_V6_vshufeh_128B
- {Intrinsic::hexagon_V6_vshuffb, 53999}, // __builtin_HEXAGON_V6_vshuffb
- {Intrinsic::hexagon_V6_vshuffb_128B, 54028}, // __builtin_HEXAGON_V6_vshuffb_128B
- {Intrinsic::hexagon_V6_vshuffeb, 54062}, // __builtin_HEXAGON_V6_vshuffeb
- {Intrinsic::hexagon_V6_vshuffeb_128B, 54092}, // __builtin_HEXAGON_V6_vshuffeb_128B
- {Intrinsic::hexagon_V6_vshuffh, 54127}, // __builtin_HEXAGON_V6_vshuffh
- {Intrinsic::hexagon_V6_vshuffh_128B, 54156}, // __builtin_HEXAGON_V6_vshuffh_128B
- {Intrinsic::hexagon_V6_vshuffob, 54190}, // __builtin_HEXAGON_V6_vshuffob
- {Intrinsic::hexagon_V6_vshuffob_128B, 54220}, // __builtin_HEXAGON_V6_vshuffob_128B
- {Intrinsic::hexagon_V6_vshuffvdd, 54255}, // __builtin_HEXAGON_V6_vshuffvdd
- {Intrinsic::hexagon_V6_vshuffvdd_128B, 54286}, // __builtin_HEXAGON_V6_vshuffvdd_128B
- {Intrinsic::hexagon_V6_vshufoeb, 54322}, // __builtin_HEXAGON_V6_vshufoeb
- {Intrinsic::hexagon_V6_vshufoeb_128B, 54352}, // __builtin_HEXAGON_V6_vshufoeb_128B
- {Intrinsic::hexagon_V6_vshufoeh, 54387}, // __builtin_HEXAGON_V6_vshufoeh
- {Intrinsic::hexagon_V6_vshufoeh_128B, 54417}, // __builtin_HEXAGON_V6_vshufoeh_128B
- {Intrinsic::hexagon_V6_vshufoh, 54452}, // __builtin_HEXAGON_V6_vshufoh
- {Intrinsic::hexagon_V6_vshufoh_128B, 54481}, // __builtin_HEXAGON_V6_vshufoh_128B
- {Intrinsic::hexagon_V6_vsubb, 54515}, // __builtin_HEXAGON_V6_vsubb
- {Intrinsic::hexagon_V6_vsubb_128B, 54542}, // __builtin_HEXAGON_V6_vsubb_128B
- {Intrinsic::hexagon_V6_vsubb_dv, 54574}, // __builtin_HEXAGON_V6_vsubb_dv
- {Intrinsic::hexagon_V6_vsubb_dv_128B, 54604}, // __builtin_HEXAGON_V6_vsubb_dv_128B
- {Intrinsic::hexagon_V6_vsubbnq, 54639}, // __builtin_HEXAGON_V6_vsubbnq
- {Intrinsic::hexagon_V6_vsubbnq_128B, 54668}, // __builtin_HEXAGON_V6_vsubbnq_128B
- {Intrinsic::hexagon_V6_vsubbq, 54702}, // __builtin_HEXAGON_V6_vsubbq
- {Intrinsic::hexagon_V6_vsubbq_128B, 54730}, // __builtin_HEXAGON_V6_vsubbq_128B
- {Intrinsic::hexagon_V6_vsubbsat, 54763}, // __builtin_HEXAGON_V6_vsubbsat
- {Intrinsic::hexagon_V6_vsubbsat_128B, 54793}, // __builtin_HEXAGON_V6_vsubbsat_128B
- {Intrinsic::hexagon_V6_vsubbsat_dv, 54828}, // __builtin_HEXAGON_V6_vsubbsat_dv
- {Intrinsic::hexagon_V6_vsubbsat_dv_128B, 54861}, // __builtin_HEXAGON_V6_vsubbsat_dv_128B
- {Intrinsic::hexagon_V6_vsubh, 54966}, // __builtin_HEXAGON_V6_vsubh
- {Intrinsic::hexagon_V6_vsubh_128B, 54993}, // __builtin_HEXAGON_V6_vsubh_128B
- {Intrinsic::hexagon_V6_vsubh_dv, 55025}, // __builtin_HEXAGON_V6_vsubh_dv
- {Intrinsic::hexagon_V6_vsubh_dv_128B, 55055}, // __builtin_HEXAGON_V6_vsubh_dv_128B
- {Intrinsic::hexagon_V6_vsubhnq, 55090}, // __builtin_HEXAGON_V6_vsubhnq
- {Intrinsic::hexagon_V6_vsubhnq_128B, 55119}, // __builtin_HEXAGON_V6_vsubhnq_128B
- {Intrinsic::hexagon_V6_vsubhq, 55153}, // __builtin_HEXAGON_V6_vsubhq
- {Intrinsic::hexagon_V6_vsubhq_128B, 55181}, // __builtin_HEXAGON_V6_vsubhq_128B
- {Intrinsic::hexagon_V6_vsubhsat, 55214}, // __builtin_HEXAGON_V6_vsubhsat
- {Intrinsic::hexagon_V6_vsubhsat_128B, 55244}, // __builtin_HEXAGON_V6_vsubhsat_128B
- {Intrinsic::hexagon_V6_vsubhsat_dv, 55279}, // __builtin_HEXAGON_V6_vsubhsat_dv
- {Intrinsic::hexagon_V6_vsubhsat_dv_128B, 55312}, // __builtin_HEXAGON_V6_vsubhsat_dv_128B
- {Intrinsic::hexagon_V6_vsubhw, 55350}, // __builtin_HEXAGON_V6_vsubhw
- {Intrinsic::hexagon_V6_vsubhw_128B, 55378}, // __builtin_HEXAGON_V6_vsubhw_128B
- {Intrinsic::hexagon_V6_vsububh, 55411}, // __builtin_HEXAGON_V6_vsububh
- {Intrinsic::hexagon_V6_vsububh_128B, 55440}, // __builtin_HEXAGON_V6_vsububh_128B
- {Intrinsic::hexagon_V6_vsububsat, 55474}, // __builtin_HEXAGON_V6_vsububsat
- {Intrinsic::hexagon_V6_vsububsat_128B, 55505}, // __builtin_HEXAGON_V6_vsububsat_128B
- {Intrinsic::hexagon_V6_vsububsat_dv, 55541}, // __builtin_HEXAGON_V6_vsububsat_dv
- {Intrinsic::hexagon_V6_vsububsat_dv_128B, 55575}, // __builtin_HEXAGON_V6_vsububsat_dv_128B
- {Intrinsic::hexagon_V6_vsubububb_sat, 55614}, // __builtin_HEXAGON_V6_vsubububb_sat
- {Intrinsic::hexagon_V6_vsubububb_sat_128B, 55649}, // __builtin_HEXAGON_V6_vsubububb_sat_128B
- {Intrinsic::hexagon_V6_vsubuhsat, 55689}, // __builtin_HEXAGON_V6_vsubuhsat
- {Intrinsic::hexagon_V6_vsubuhsat_128B, 55720}, // __builtin_HEXAGON_V6_vsubuhsat_128B
- {Intrinsic::hexagon_V6_vsubuhsat_dv, 55756}, // __builtin_HEXAGON_V6_vsubuhsat_dv
- {Intrinsic::hexagon_V6_vsubuhsat_dv_128B, 55790}, // __builtin_HEXAGON_V6_vsubuhsat_dv_128B
- {Intrinsic::hexagon_V6_vsubuhw, 55829}, // __builtin_HEXAGON_V6_vsubuhw
- {Intrinsic::hexagon_V6_vsubuhw_128B, 55858}, // __builtin_HEXAGON_V6_vsubuhw_128B
- {Intrinsic::hexagon_V6_vsubuwsat, 55892}, // __builtin_HEXAGON_V6_vsubuwsat
- {Intrinsic::hexagon_V6_vsubuwsat_128B, 55923}, // __builtin_HEXAGON_V6_vsubuwsat_128B
- {Intrinsic::hexagon_V6_vsubuwsat_dv, 55959}, // __builtin_HEXAGON_V6_vsubuwsat_dv
- {Intrinsic::hexagon_V6_vsubuwsat_dv_128B, 55993}, // __builtin_HEXAGON_V6_vsubuwsat_dv_128B
- {Intrinsic::hexagon_V6_vsubw, 56032}, // __builtin_HEXAGON_V6_vsubw
- {Intrinsic::hexagon_V6_vsubw_128B, 56059}, // __builtin_HEXAGON_V6_vsubw_128B
- {Intrinsic::hexagon_V6_vsubw_dv, 56091}, // __builtin_HEXAGON_V6_vsubw_dv
- {Intrinsic::hexagon_V6_vsubw_dv_128B, 56121}, // __builtin_HEXAGON_V6_vsubw_dv_128B
- {Intrinsic::hexagon_V6_vsubwnq, 56156}, // __builtin_HEXAGON_V6_vsubwnq
- {Intrinsic::hexagon_V6_vsubwnq_128B, 56185}, // __builtin_HEXAGON_V6_vsubwnq_128B
- {Intrinsic::hexagon_V6_vsubwq, 56219}, // __builtin_HEXAGON_V6_vsubwq
- {Intrinsic::hexagon_V6_vsubwq_128B, 56247}, // __builtin_HEXAGON_V6_vsubwq_128B
- {Intrinsic::hexagon_V6_vsubwsat, 56280}, // __builtin_HEXAGON_V6_vsubwsat
- {Intrinsic::hexagon_V6_vsubwsat_128B, 56310}, // __builtin_HEXAGON_V6_vsubwsat_128B
- {Intrinsic::hexagon_V6_vsubwsat_dv, 56345}, // __builtin_HEXAGON_V6_vsubwsat_dv
- {Intrinsic::hexagon_V6_vsubwsat_dv_128B, 56378}, // __builtin_HEXAGON_V6_vsubwsat_dv_128B
- {Intrinsic::hexagon_V6_vswap, 56416}, // __builtin_HEXAGON_V6_vswap
- {Intrinsic::hexagon_V6_vswap_128B, 56443}, // __builtin_HEXAGON_V6_vswap_128B
- {Intrinsic::hexagon_V6_vtmpyb, 56475}, // __builtin_HEXAGON_V6_vtmpyb
- {Intrinsic::hexagon_V6_vtmpyb_128B, 56503}, // __builtin_HEXAGON_V6_vtmpyb_128B
- {Intrinsic::hexagon_V6_vtmpyb_acc, 56536}, // __builtin_HEXAGON_V6_vtmpyb_acc
- {Intrinsic::hexagon_V6_vtmpyb_acc_128B, 56568}, // __builtin_HEXAGON_V6_vtmpyb_acc_128B
- {Intrinsic::hexagon_V6_vtmpybus, 56605}, // __builtin_HEXAGON_V6_vtmpybus
- {Intrinsic::hexagon_V6_vtmpybus_128B, 56635}, // __builtin_HEXAGON_V6_vtmpybus_128B
- {Intrinsic::hexagon_V6_vtmpybus_acc, 56670}, // __builtin_HEXAGON_V6_vtmpybus_acc
- {Intrinsic::hexagon_V6_vtmpybus_acc_128B, 56704}, // __builtin_HEXAGON_V6_vtmpybus_acc_128B
- {Intrinsic::hexagon_V6_vtmpyhb, 56743}, // __builtin_HEXAGON_V6_vtmpyhb
- {Intrinsic::hexagon_V6_vtmpyhb_128B, 56772}, // __builtin_HEXAGON_V6_vtmpyhb_128B
- {Intrinsic::hexagon_V6_vtmpyhb_acc, 56806}, // __builtin_HEXAGON_V6_vtmpyhb_acc
- {Intrinsic::hexagon_V6_vtmpyhb_acc_128B, 56839}, // __builtin_HEXAGON_V6_vtmpyhb_acc_128B
- {Intrinsic::hexagon_V6_vunpackb, 56877}, // __builtin_HEXAGON_V6_vunpackb
- {Intrinsic::hexagon_V6_vunpackb_128B, 56907}, // __builtin_HEXAGON_V6_vunpackb_128B
- {Intrinsic::hexagon_V6_vunpackh, 56942}, // __builtin_HEXAGON_V6_vunpackh
- {Intrinsic::hexagon_V6_vunpackh_128B, 56972}, // __builtin_HEXAGON_V6_vunpackh_128B
- {Intrinsic::hexagon_V6_vunpackob, 57007}, // __builtin_HEXAGON_V6_vunpackob
- {Intrinsic::hexagon_V6_vunpackob_128B, 57038}, // __builtin_HEXAGON_V6_vunpackob_128B
- {Intrinsic::hexagon_V6_vunpackoh, 57074}, // __builtin_HEXAGON_V6_vunpackoh
- {Intrinsic::hexagon_V6_vunpackoh_128B, 57105}, // __builtin_HEXAGON_V6_vunpackoh_128B
- {Intrinsic::hexagon_V6_vunpackub, 57141}, // __builtin_HEXAGON_V6_vunpackub
- {Intrinsic::hexagon_V6_vunpackub_128B, 57172}, // __builtin_HEXAGON_V6_vunpackub_128B
- {Intrinsic::hexagon_V6_vunpackuh, 57208}, // __builtin_HEXAGON_V6_vunpackuh
- {Intrinsic::hexagon_V6_vunpackuh_128B, 57239}, // __builtin_HEXAGON_V6_vunpackuh_128B
- {Intrinsic::hexagon_V6_vxor, 57275}, // __builtin_HEXAGON_V6_vxor
- {Intrinsic::hexagon_V6_vxor_128B, 57301}, // __builtin_HEXAGON_V6_vxor_128B
- {Intrinsic::hexagon_V6_vzb, 57332}, // __builtin_HEXAGON_V6_vzb
- {Intrinsic::hexagon_V6_vzb_128B, 57357}, // __builtin_HEXAGON_V6_vzb_128B
- {Intrinsic::hexagon_V6_vzh, 57387}, // __builtin_HEXAGON_V6_vzh
- {Intrinsic::hexagon_V6_vzh_128B, 57412}, // __builtin_HEXAGON_V6_vzh_128B
- {Intrinsic::hexagon_Y2_dccleana, 57442}, // __builtin_HEXAGON_Y2_dccleana
- {Intrinsic::hexagon_Y2_dccleaninva, 57472}, // __builtin_HEXAGON_Y2_dccleaninva
- {Intrinsic::hexagon_Y2_dcinva, 57505}, // __builtin_HEXAGON_Y2_dcinva
- {Intrinsic::hexagon_Y2_dczeroa, 57533}, // __builtin_HEXAGON_Y2_dczeroa
- {Intrinsic::hexagon_Y4_l2fetch, 57562}, // __builtin_HEXAGON_Y4_l2fetch
- {Intrinsic::hexagon_Y5_l2fetch, 57591}, // __builtin_HEXAGON_Y5_l2fetch
- {Intrinsic::hexagon_prefetch, 57857}, // __builtin_HEXAGON_prefetch
- {Intrinsic::hexagon_V6_vaddcarry, 33549}, // __builtin_HEXAGON_v6_vaddcarry
- {Intrinsic::hexagon_V6_vaddcarry_128B, 33580}, // __builtin_HEXAGON_v6_vaddcarry_128B
- {Intrinsic::hexagon_V6_vsubcarry, 54899}, // __builtin_HEXAGON_v6_vsubcarry
- {Intrinsic::hexagon_V6_vsubcarry_128B, 54930}, // __builtin_HEXAGON_v6_vsubcarry_128B
- {Intrinsic::hexagon_mm256i_vaddw, 57833}, // __builtin__mm256i_vaddw
- {Intrinsic::hexagon_S2_storerb_pbr, 28181}, // __builtin_brev_stb
- {Intrinsic::hexagon_S2_storerd_pbr, 28200}, // __builtin_brev_std
- {Intrinsic::hexagon_S2_storerh_pbr, 28240}, // __builtin_brev_sth
- {Intrinsic::hexagon_S2_storerf_pbr, 28219}, // __builtin_brev_sthhi
- {Intrinsic::hexagon_S2_storeri_pbr, 28259}, // __builtin_brev_stw
- {Intrinsic::hexagon_circ_ldb, 57620}, // __builtin_circ_ldb
- {Intrinsic::hexagon_circ_ldd, 57639}, // __builtin_circ_ldd
- {Intrinsic::hexagon_circ_ldh, 57658}, // __builtin_circ_ldh
- {Intrinsic::hexagon_circ_ldub, 57677}, // __builtin_circ_ldub
- {Intrinsic::hexagon_circ_lduh, 57697}, // __builtin_circ_lduh
- {Intrinsic::hexagon_circ_ldw, 57717}, // __builtin_circ_ldw
- {Intrinsic::hexagon_circ_stb, 57736}, // __builtin_circ_stb
- {Intrinsic::hexagon_circ_std, 57755}, // __builtin_circ_std
- {Intrinsic::hexagon_circ_sth, 57774}, // __builtin_circ_sth
- {Intrinsic::hexagon_circ_sthhi, 57793}, // __builtin_circ_sthhi
- {Intrinsic::hexagon_circ_stw, 57814}, // __builtin_circ_stw
+ {Intrinsic::hexagon_A2_abs, 4133}, // __builtin_HEXAGON_A2_abs
+ {Intrinsic::hexagon_A2_absp, 4158}, // __builtin_HEXAGON_A2_absp
+ {Intrinsic::hexagon_A2_abssat, 4184}, // __builtin_HEXAGON_A2_abssat
+ {Intrinsic::hexagon_A2_add, 4212}, // __builtin_HEXAGON_A2_add
+ {Intrinsic::hexagon_A2_addh_h16_hh, 4237}, // __builtin_HEXAGON_A2_addh_h16_hh
+ {Intrinsic::hexagon_A2_addh_h16_hl, 4270}, // __builtin_HEXAGON_A2_addh_h16_hl
+ {Intrinsic::hexagon_A2_addh_h16_lh, 4303}, // __builtin_HEXAGON_A2_addh_h16_lh
+ {Intrinsic::hexagon_A2_addh_h16_ll, 4336}, // __builtin_HEXAGON_A2_addh_h16_ll
+ {Intrinsic::hexagon_A2_addh_h16_sat_hh, 4369}, // __builtin_HEXAGON_A2_addh_h16_sat_hh
+ {Intrinsic::hexagon_A2_addh_h16_sat_hl, 4406}, // __builtin_HEXAGON_A2_addh_h16_sat_hl
+ {Intrinsic::hexagon_A2_addh_h16_sat_lh, 4443}, // __builtin_HEXAGON_A2_addh_h16_sat_lh
+ {Intrinsic::hexagon_A2_addh_h16_sat_ll, 4480}, // __builtin_HEXAGON_A2_addh_h16_sat_ll
+ {Intrinsic::hexagon_A2_addh_l16_hl, 4517}, // __builtin_HEXAGON_A2_addh_l16_hl
+ {Intrinsic::hexagon_A2_addh_l16_ll, 4550}, // __builtin_HEXAGON_A2_addh_l16_ll
+ {Intrinsic::hexagon_A2_addh_l16_sat_hl, 4583}, // __builtin_HEXAGON_A2_addh_l16_sat_hl
+ {Intrinsic::hexagon_A2_addh_l16_sat_ll, 4620}, // __builtin_HEXAGON_A2_addh_l16_sat_ll
+ {Intrinsic::hexagon_A2_addi, 4657}, // __builtin_HEXAGON_A2_addi
+ {Intrinsic::hexagon_A2_addp, 4683}, // __builtin_HEXAGON_A2_addp
+ {Intrinsic::hexagon_A2_addpsat, 4709}, // __builtin_HEXAGON_A2_addpsat
+ {Intrinsic::hexagon_A2_addsat, 4738}, // __builtin_HEXAGON_A2_addsat
+ {Intrinsic::hexagon_A2_addsp, 4766}, // __builtin_HEXAGON_A2_addsp
+ {Intrinsic::hexagon_A2_and, 4793}, // __builtin_HEXAGON_A2_and
+ {Intrinsic::hexagon_A2_andir, 4818}, // __builtin_HEXAGON_A2_andir
+ {Intrinsic::hexagon_A2_andp, 4845}, // __builtin_HEXAGON_A2_andp
+ {Intrinsic::hexagon_A2_aslh, 4871}, // __builtin_HEXAGON_A2_aslh
+ {Intrinsic::hexagon_A2_asrh, 4897}, // __builtin_HEXAGON_A2_asrh
+ {Intrinsic::hexagon_A2_combine_hh, 4923}, // __builtin_HEXAGON_A2_combine_hh
+ {Intrinsic::hexagon_A2_combine_hl, 4955}, // __builtin_HEXAGON_A2_combine_hl
+ {Intrinsic::hexagon_A2_combine_lh, 4987}, // __builtin_HEXAGON_A2_combine_lh
+ {Intrinsic::hexagon_A2_combine_ll, 5019}, // __builtin_HEXAGON_A2_combine_ll
+ {Intrinsic::hexagon_A2_combineii, 5051}, // __builtin_HEXAGON_A2_combineii
+ {Intrinsic::hexagon_A2_combinew, 5082}, // __builtin_HEXAGON_A2_combinew
+ {Intrinsic::hexagon_A2_max, 5112}, // __builtin_HEXAGON_A2_max
+ {Intrinsic::hexagon_A2_maxp, 5137}, // __builtin_HEXAGON_A2_maxp
+ {Intrinsic::hexagon_A2_maxu, 5163}, // __builtin_HEXAGON_A2_maxu
+ {Intrinsic::hexagon_A2_maxup, 5189}, // __builtin_HEXAGON_A2_maxup
+ {Intrinsic::hexagon_A2_min, 5216}, // __builtin_HEXAGON_A2_min
+ {Intrinsic::hexagon_A2_minp, 5241}, // __builtin_HEXAGON_A2_minp
+ {Intrinsic::hexagon_A2_minu, 5267}, // __builtin_HEXAGON_A2_minu
+ {Intrinsic::hexagon_A2_minup, 5293}, // __builtin_HEXAGON_A2_minup
+ {Intrinsic::hexagon_A2_neg, 5320}, // __builtin_HEXAGON_A2_neg
+ {Intrinsic::hexagon_A2_negp, 5345}, // __builtin_HEXAGON_A2_negp
+ {Intrinsic::hexagon_A2_negsat, 5371}, // __builtin_HEXAGON_A2_negsat
+ {Intrinsic::hexagon_A2_not, 5399}, // __builtin_HEXAGON_A2_not
+ {Intrinsic::hexagon_A2_notp, 5424}, // __builtin_HEXAGON_A2_notp
+ {Intrinsic::hexagon_A2_or, 5450}, // __builtin_HEXAGON_A2_or
+ {Intrinsic::hexagon_A2_orir, 5474}, // __builtin_HEXAGON_A2_orir
+ {Intrinsic::hexagon_A2_orp, 5500}, // __builtin_HEXAGON_A2_orp
+ {Intrinsic::hexagon_A2_pxorf, 5525}, // __builtin_HEXAGON_A2_pxorf
+ {Intrinsic::hexagon_A2_roundsat, 5552}, // __builtin_HEXAGON_A2_roundsat
+ {Intrinsic::hexagon_A2_sat, 5582}, // __builtin_HEXAGON_A2_sat
+ {Intrinsic::hexagon_A2_satb, 5607}, // __builtin_HEXAGON_A2_satb
+ {Intrinsic::hexagon_A2_sath, 5633}, // __builtin_HEXAGON_A2_sath
+ {Intrinsic::hexagon_A2_satub, 5659}, // __builtin_HEXAGON_A2_satub
+ {Intrinsic::hexagon_A2_satuh, 5686}, // __builtin_HEXAGON_A2_satuh
+ {Intrinsic::hexagon_A2_sub, 5713}, // __builtin_HEXAGON_A2_sub
+ {Intrinsic::hexagon_A2_subh_h16_hh, 5738}, // __builtin_HEXAGON_A2_subh_h16_hh
+ {Intrinsic::hexagon_A2_subh_h16_hl, 5771}, // __builtin_HEXAGON_A2_subh_h16_hl
+ {Intrinsic::hexagon_A2_subh_h16_lh, 5804}, // __builtin_HEXAGON_A2_subh_h16_lh
+ {Intrinsic::hexagon_A2_subh_h16_ll, 5837}, // __builtin_HEXAGON_A2_subh_h16_ll
+ {Intrinsic::hexagon_A2_subh_h16_sat_hh, 5870}, // __builtin_HEXAGON_A2_subh_h16_sat_hh
+ {Intrinsic::hexagon_A2_subh_h16_sat_hl, 5907}, // __builtin_HEXAGON_A2_subh_h16_sat_hl
+ {Intrinsic::hexagon_A2_subh_h16_sat_lh, 5944}, // __builtin_HEXAGON_A2_subh_h16_sat_lh
+ {Intrinsic::hexagon_A2_subh_h16_sat_ll, 5981}, // __builtin_HEXAGON_A2_subh_h16_sat_ll
+ {Intrinsic::hexagon_A2_subh_l16_hl, 6018}, // __builtin_HEXAGON_A2_subh_l16_hl
+ {Intrinsic::hexagon_A2_subh_l16_ll, 6051}, // __builtin_HEXAGON_A2_subh_l16_ll
+ {Intrinsic::hexagon_A2_subh_l16_sat_hl, 6084}, // __builtin_HEXAGON_A2_subh_l16_sat_hl
+ {Intrinsic::hexagon_A2_subh_l16_sat_ll, 6121}, // __builtin_HEXAGON_A2_subh_l16_sat_ll
+ {Intrinsic::hexagon_A2_subp, 6158}, // __builtin_HEXAGON_A2_subp
+ {Intrinsic::hexagon_A2_subri, 6184}, // __builtin_HEXAGON_A2_subri
+ {Intrinsic::hexagon_A2_subsat, 6211}, // __builtin_HEXAGON_A2_subsat
+ {Intrinsic::hexagon_A2_svaddh, 6239}, // __builtin_HEXAGON_A2_svaddh
+ {Intrinsic::hexagon_A2_svaddhs, 6267}, // __builtin_HEXAGON_A2_svaddhs
+ {Intrinsic::hexagon_A2_svadduhs, 6296}, // __builtin_HEXAGON_A2_svadduhs
+ {Intrinsic::hexagon_A2_svavgh, 6326}, // __builtin_HEXAGON_A2_svavgh
+ {Intrinsic::hexagon_A2_svavghs, 6354}, // __builtin_HEXAGON_A2_svavghs
+ {Intrinsic::hexagon_A2_svnavgh, 6383}, // __builtin_HEXAGON_A2_svnavgh
+ {Intrinsic::hexagon_A2_svsubh, 6412}, // __builtin_HEXAGON_A2_svsubh
+ {Intrinsic::hexagon_A2_svsubhs, 6440}, // __builtin_HEXAGON_A2_svsubhs
+ {Intrinsic::hexagon_A2_svsubuhs, 6469}, // __builtin_HEXAGON_A2_svsubuhs
+ {Intrinsic::hexagon_A2_swiz, 6499}, // __builtin_HEXAGON_A2_swiz
+ {Intrinsic::hexagon_A2_sxtb, 6525}, // __builtin_HEXAGON_A2_sxtb
+ {Intrinsic::hexagon_A2_sxth, 6551}, // __builtin_HEXAGON_A2_sxth
+ {Intrinsic::hexagon_A2_sxtw, 6577}, // __builtin_HEXAGON_A2_sxtw
+ {Intrinsic::hexagon_A2_tfr, 6603}, // __builtin_HEXAGON_A2_tfr
+ {Intrinsic::hexagon_A2_tfrcrr, 6628}, // __builtin_HEXAGON_A2_tfrcrr
+ {Intrinsic::hexagon_A2_tfrih, 6656}, // __builtin_HEXAGON_A2_tfrih
+ {Intrinsic::hexagon_A2_tfril, 6683}, // __builtin_HEXAGON_A2_tfril
+ {Intrinsic::hexagon_A2_tfrp, 6710}, // __builtin_HEXAGON_A2_tfrp
+ {Intrinsic::hexagon_A2_tfrpi, 6736}, // __builtin_HEXAGON_A2_tfrpi
+ {Intrinsic::hexagon_A2_tfrrcr, 6763}, // __builtin_HEXAGON_A2_tfrrcr
+ {Intrinsic::hexagon_A2_tfrsi, 6791}, // __builtin_HEXAGON_A2_tfrsi
+ {Intrinsic::hexagon_A2_vabsh, 6818}, // __builtin_HEXAGON_A2_vabsh
+ {Intrinsic::hexagon_A2_vabshsat, 6845}, // __builtin_HEXAGON_A2_vabshsat
+ {Intrinsic::hexagon_A2_vabsw, 6875}, // __builtin_HEXAGON_A2_vabsw
+ {Intrinsic::hexagon_A2_vabswsat, 6902}, // __builtin_HEXAGON_A2_vabswsat
+ {Intrinsic::hexagon_A2_vaddb_map, 6932}, // __builtin_HEXAGON_A2_vaddb_map
+ {Intrinsic::hexagon_A2_vaddh, 6963}, // __builtin_HEXAGON_A2_vaddh
+ {Intrinsic::hexagon_A2_vaddhs, 6990}, // __builtin_HEXAGON_A2_vaddhs
+ {Intrinsic::hexagon_A2_vaddub, 7018}, // __builtin_HEXAGON_A2_vaddub
+ {Intrinsic::hexagon_A2_vaddubs, 7046}, // __builtin_HEXAGON_A2_vaddubs
+ {Intrinsic::hexagon_A2_vadduhs, 7075}, // __builtin_HEXAGON_A2_vadduhs
+ {Intrinsic::hexagon_A2_vaddw, 7104}, // __builtin_HEXAGON_A2_vaddw
+ {Intrinsic::hexagon_A2_vaddws, 7131}, // __builtin_HEXAGON_A2_vaddws
+ {Intrinsic::hexagon_A2_vavgh, 7159}, // __builtin_HEXAGON_A2_vavgh
+ {Intrinsic::hexagon_A2_vavghcr, 7186}, // __builtin_HEXAGON_A2_vavghcr
+ {Intrinsic::hexagon_A2_vavghr, 7215}, // __builtin_HEXAGON_A2_vavghr
+ {Intrinsic::hexagon_A2_vavgub, 7243}, // __builtin_HEXAGON_A2_vavgub
+ {Intrinsic::hexagon_A2_vavgubr, 7271}, // __builtin_HEXAGON_A2_vavgubr
+ {Intrinsic::hexagon_A2_vavguh, 7300}, // __builtin_HEXAGON_A2_vavguh
+ {Intrinsic::hexagon_A2_vavguhr, 7328}, // __builtin_HEXAGON_A2_vavguhr
+ {Intrinsic::hexagon_A2_vavguw, 7357}, // __builtin_HEXAGON_A2_vavguw
+ {Intrinsic::hexagon_A2_vavguwr, 7385}, // __builtin_HEXAGON_A2_vavguwr
+ {Intrinsic::hexagon_A2_vavgw, 7414}, // __builtin_HEXAGON_A2_vavgw
+ {Intrinsic::hexagon_A2_vavgwcr, 7441}, // __builtin_HEXAGON_A2_vavgwcr
+ {Intrinsic::hexagon_A2_vavgwr, 7470}, // __builtin_HEXAGON_A2_vavgwr
+ {Intrinsic::hexagon_A2_vcmpbeq, 7498}, // __builtin_HEXAGON_A2_vcmpbeq
+ {Intrinsic::hexagon_A2_vcmpbgtu, 7527}, // __builtin_HEXAGON_A2_vcmpbgtu
+ {Intrinsic::hexagon_A2_vcmpheq, 7557}, // __builtin_HEXAGON_A2_vcmpheq
+ {Intrinsic::hexagon_A2_vcmphgt, 7586}, // __builtin_HEXAGON_A2_vcmphgt
+ {Intrinsic::hexagon_A2_vcmphgtu, 7615}, // __builtin_HEXAGON_A2_vcmphgtu
+ {Intrinsic::hexagon_A2_vcmpweq, 7645}, // __builtin_HEXAGON_A2_vcmpweq
+ {Intrinsic::hexagon_A2_vcmpwgt, 7674}, // __builtin_HEXAGON_A2_vcmpwgt
+ {Intrinsic::hexagon_A2_vcmpwgtu, 7703}, // __builtin_HEXAGON_A2_vcmpwgtu
+ {Intrinsic::hexagon_A2_vconj, 7733}, // __builtin_HEXAGON_A2_vconj
+ {Intrinsic::hexagon_A2_vmaxb, 7760}, // __builtin_HEXAGON_A2_vmaxb
+ {Intrinsic::hexagon_A2_vmaxh, 7787}, // __builtin_HEXAGON_A2_vmaxh
+ {Intrinsic::hexagon_A2_vmaxub, 7814}, // __builtin_HEXAGON_A2_vmaxub
+ {Intrinsic::hexagon_A2_vmaxuh, 7842}, // __builtin_HEXAGON_A2_vmaxuh
+ {Intrinsic::hexagon_A2_vmaxuw, 7870}, // __builtin_HEXAGON_A2_vmaxuw
+ {Intrinsic::hexagon_A2_vmaxw, 7898}, // __builtin_HEXAGON_A2_vmaxw
+ {Intrinsic::hexagon_A2_vminb, 7925}, // __builtin_HEXAGON_A2_vminb
+ {Intrinsic::hexagon_A2_vminh, 7952}, // __builtin_HEXAGON_A2_vminh
+ {Intrinsic::hexagon_A2_vminub, 7979}, // __builtin_HEXAGON_A2_vminub
+ {Intrinsic::hexagon_A2_vminuh, 8007}, // __builtin_HEXAGON_A2_vminuh
+ {Intrinsic::hexagon_A2_vminuw, 8035}, // __builtin_HEXAGON_A2_vminuw
+ {Intrinsic::hexagon_A2_vminw, 8063}, // __builtin_HEXAGON_A2_vminw
+ {Intrinsic::hexagon_A2_vnavgh, 8090}, // __builtin_HEXAGON_A2_vnavgh
+ {Intrinsic::hexagon_A2_vnavghcr, 8118}, // __builtin_HEXAGON_A2_vnavghcr
+ {Intrinsic::hexagon_A2_vnavghr, 8148}, // __builtin_HEXAGON_A2_vnavghr
+ {Intrinsic::hexagon_A2_vnavgw, 8177}, // __builtin_HEXAGON_A2_vnavgw
+ {Intrinsic::hexagon_A2_vnavgwcr, 8205}, // __builtin_HEXAGON_A2_vnavgwcr
+ {Intrinsic::hexagon_A2_vnavgwr, 8235}, // __builtin_HEXAGON_A2_vnavgwr
+ {Intrinsic::hexagon_A2_vraddub, 8264}, // __builtin_HEXAGON_A2_vraddub
+ {Intrinsic::hexagon_A2_vraddub_acc, 8293}, // __builtin_HEXAGON_A2_vraddub_acc
+ {Intrinsic::hexagon_A2_vrsadub, 8326}, // __builtin_HEXAGON_A2_vrsadub
+ {Intrinsic::hexagon_A2_vrsadub_acc, 8355}, // __builtin_HEXAGON_A2_vrsadub_acc
+ {Intrinsic::hexagon_A2_vsubb_map, 8388}, // __builtin_HEXAGON_A2_vsubb_map
+ {Intrinsic::hexagon_A2_vsubh, 8419}, // __builtin_HEXAGON_A2_vsubh
+ {Intrinsic::hexagon_A2_vsubhs, 8446}, // __builtin_HEXAGON_A2_vsubhs
+ {Intrinsic::hexagon_A2_vsubub, 8474}, // __builtin_HEXAGON_A2_vsubub
+ {Intrinsic::hexagon_A2_vsububs, 8502}, // __builtin_HEXAGON_A2_vsububs
+ {Intrinsic::hexagon_A2_vsubuhs, 8531}, // __builtin_HEXAGON_A2_vsubuhs
+ {Intrinsic::hexagon_A2_vsubw, 8560}, // __builtin_HEXAGON_A2_vsubw
+ {Intrinsic::hexagon_A2_vsubws, 8587}, // __builtin_HEXAGON_A2_vsubws
+ {Intrinsic::hexagon_A2_xor, 8615}, // __builtin_HEXAGON_A2_xor
+ {Intrinsic::hexagon_A2_xorp, 8640}, // __builtin_HEXAGON_A2_xorp
+ {Intrinsic::hexagon_A2_zxtb, 8666}, // __builtin_HEXAGON_A2_zxtb
+ {Intrinsic::hexagon_A2_zxth, 8692}, // __builtin_HEXAGON_A2_zxth
+ {Intrinsic::hexagon_A4_addp_c, 8718}, // __builtin_HEXAGON_A4_addp_c
+ {Intrinsic::hexagon_A4_andn, 8746}, // __builtin_HEXAGON_A4_andn
+ {Intrinsic::hexagon_A4_andnp, 8772}, // __builtin_HEXAGON_A4_andnp
+ {Intrinsic::hexagon_A4_bitsplit, 8799}, // __builtin_HEXAGON_A4_bitsplit
+ {Intrinsic::hexagon_A4_bitspliti, 8829}, // __builtin_HEXAGON_A4_bitspliti
+ {Intrinsic::hexagon_A4_boundscheck, 8860}, // __builtin_HEXAGON_A4_boundscheck
+ {Intrinsic::hexagon_A4_cmpbeq, 8893}, // __builtin_HEXAGON_A4_cmpbeq
+ {Intrinsic::hexagon_A4_cmpbeqi, 8921}, // __builtin_HEXAGON_A4_cmpbeqi
+ {Intrinsic::hexagon_A4_cmpbgt, 8950}, // __builtin_HEXAGON_A4_cmpbgt
+ {Intrinsic::hexagon_A4_cmpbgti, 8978}, // __builtin_HEXAGON_A4_cmpbgti
+ {Intrinsic::hexagon_A4_cmpbgtu, 9007}, // __builtin_HEXAGON_A4_cmpbgtu
+ {Intrinsic::hexagon_A4_cmpbgtui, 9036}, // __builtin_HEXAGON_A4_cmpbgtui
+ {Intrinsic::hexagon_A4_cmpheq, 9066}, // __builtin_HEXAGON_A4_cmpheq
+ {Intrinsic::hexagon_A4_cmpheqi, 9094}, // __builtin_HEXAGON_A4_cmpheqi
+ {Intrinsic::hexagon_A4_cmphgt, 9123}, // __builtin_HEXAGON_A4_cmphgt
+ {Intrinsic::hexagon_A4_cmphgti, 9151}, // __builtin_HEXAGON_A4_cmphgti
+ {Intrinsic::hexagon_A4_cmphgtu, 9180}, // __builtin_HEXAGON_A4_cmphgtu
+ {Intrinsic::hexagon_A4_cmphgtui, 9209}, // __builtin_HEXAGON_A4_cmphgtui
+ {Intrinsic::hexagon_A4_combineii, 9239}, // __builtin_HEXAGON_A4_combineii
+ {Intrinsic::hexagon_A4_combineir, 9270}, // __builtin_HEXAGON_A4_combineir
+ {Intrinsic::hexagon_A4_combineri, 9301}, // __builtin_HEXAGON_A4_combineri
+ {Intrinsic::hexagon_A4_cround_ri, 9332}, // __builtin_HEXAGON_A4_cround_ri
+ {Intrinsic::hexagon_A4_cround_rr, 9363}, // __builtin_HEXAGON_A4_cround_rr
+ {Intrinsic::hexagon_A4_modwrapu, 9394}, // __builtin_HEXAGON_A4_modwrapu
+ {Intrinsic::hexagon_A4_orn, 9424}, // __builtin_HEXAGON_A4_orn
+ {Intrinsic::hexagon_A4_ornp, 9449}, // __builtin_HEXAGON_A4_ornp
+ {Intrinsic::hexagon_A4_rcmpeq, 9475}, // __builtin_HEXAGON_A4_rcmpeq
+ {Intrinsic::hexagon_A4_rcmpeqi, 9503}, // __builtin_HEXAGON_A4_rcmpeqi
+ {Intrinsic::hexagon_A4_rcmpneq, 9532}, // __builtin_HEXAGON_A4_rcmpneq
+ {Intrinsic::hexagon_A4_rcmpneqi, 9561}, // __builtin_HEXAGON_A4_rcmpneqi
+ {Intrinsic::hexagon_A4_round_ri, 9591}, // __builtin_HEXAGON_A4_round_ri
+ {Intrinsic::hexagon_A4_round_ri_sat, 9621}, // __builtin_HEXAGON_A4_round_ri_sat
+ {Intrinsic::hexagon_A4_round_rr, 9655}, // __builtin_HEXAGON_A4_round_rr
+ {Intrinsic::hexagon_A4_round_rr_sat, 9685}, // __builtin_HEXAGON_A4_round_rr_sat
+ {Intrinsic::hexagon_A4_subp_c, 9719}, // __builtin_HEXAGON_A4_subp_c
+ {Intrinsic::hexagon_A4_tfrcpp, 9747}, // __builtin_HEXAGON_A4_tfrcpp
+ {Intrinsic::hexagon_A4_tfrpcp, 9775}, // __builtin_HEXAGON_A4_tfrpcp
+ {Intrinsic::hexagon_A4_tlbmatch, 9803}, // __builtin_HEXAGON_A4_tlbmatch
+ {Intrinsic::hexagon_A4_vcmpbeq_any, 9833}, // __builtin_HEXAGON_A4_vcmpbeq_any
+ {Intrinsic::hexagon_A4_vcmpbeqi, 9866}, // __builtin_HEXAGON_A4_vcmpbeqi
+ {Intrinsic::hexagon_A4_vcmpbgt, 9896}, // __builtin_HEXAGON_A4_vcmpbgt
+ {Intrinsic::hexagon_A4_vcmpbgti, 9925}, // __builtin_HEXAGON_A4_vcmpbgti
+ {Intrinsic::hexagon_A4_vcmpbgtui, 9955}, // __builtin_HEXAGON_A4_vcmpbgtui
+ {Intrinsic::hexagon_A4_vcmpheqi, 9986}, // __builtin_HEXAGON_A4_vcmpheqi
+ {Intrinsic::hexagon_A4_vcmphgti, 10016}, // __builtin_HEXAGON_A4_vcmphgti
+ {Intrinsic::hexagon_A4_vcmphgtui, 10046}, // __builtin_HEXAGON_A4_vcmphgtui
+ {Intrinsic::hexagon_A4_vcmpweqi, 10077}, // __builtin_HEXAGON_A4_vcmpweqi
+ {Intrinsic::hexagon_A4_vcmpwgti, 10107}, // __builtin_HEXAGON_A4_vcmpwgti
+ {Intrinsic::hexagon_A4_vcmpwgtui, 10137}, // __builtin_HEXAGON_A4_vcmpwgtui
+ {Intrinsic::hexagon_A4_vrmaxh, 10168}, // __builtin_HEXAGON_A4_vrmaxh
+ {Intrinsic::hexagon_A4_vrmaxuh, 10196}, // __builtin_HEXAGON_A4_vrmaxuh
+ {Intrinsic::hexagon_A4_vrmaxuw, 10225}, // __builtin_HEXAGON_A4_vrmaxuw
+ {Intrinsic::hexagon_A4_vrmaxw, 10254}, // __builtin_HEXAGON_A4_vrmaxw
+ {Intrinsic::hexagon_A4_vrminh, 10282}, // __builtin_HEXAGON_A4_vrminh
+ {Intrinsic::hexagon_A4_vrminuh, 10310}, // __builtin_HEXAGON_A4_vrminuh
+ {Intrinsic::hexagon_A4_vrminuw, 10339}, // __builtin_HEXAGON_A4_vrminuw
+ {Intrinsic::hexagon_A4_vrminw, 10368}, // __builtin_HEXAGON_A4_vrminw
+ {Intrinsic::hexagon_A5_ACS, 10396}, // __builtin_HEXAGON_A5_ACS
+ {Intrinsic::hexagon_A5_vaddhubs, 10421}, // __builtin_HEXAGON_A5_vaddhubs
+ {Intrinsic::hexagon_A6_vcmpbeq_notany, 10451}, // __builtin_HEXAGON_A6_vcmpbeq_notany
+ {Intrinsic::hexagon_A6_vminub_RdP, 10487}, // __builtin_HEXAGON_A6_vminub_RdP
+ {Intrinsic::hexagon_C2_all8, 10519}, // __builtin_HEXAGON_C2_all8
+ {Intrinsic::hexagon_C2_and, 10545}, // __builtin_HEXAGON_C2_and
+ {Intrinsic::hexagon_C2_andn, 10570}, // __builtin_HEXAGON_C2_andn
+ {Intrinsic::hexagon_C2_any8, 10596}, // __builtin_HEXAGON_C2_any8
+ {Intrinsic::hexagon_C2_bitsclr, 10622}, // __builtin_HEXAGON_C2_bitsclr
+ {Intrinsic::hexagon_C2_bitsclri, 10651}, // __builtin_HEXAGON_C2_bitsclri
+ {Intrinsic::hexagon_C2_bitsset, 10681}, // __builtin_HEXAGON_C2_bitsset
+ {Intrinsic::hexagon_C2_cmpeq, 10710}, // __builtin_HEXAGON_C2_cmpeq
+ {Intrinsic::hexagon_C2_cmpeqi, 10737}, // __builtin_HEXAGON_C2_cmpeqi
+ {Intrinsic::hexagon_C2_cmpeqp, 10765}, // __builtin_HEXAGON_C2_cmpeqp
+ {Intrinsic::hexagon_C2_cmpgei, 10793}, // __builtin_HEXAGON_C2_cmpgei
+ {Intrinsic::hexagon_C2_cmpgeui, 10821}, // __builtin_HEXAGON_C2_cmpgeui
+ {Intrinsic::hexagon_C2_cmpgt, 10850}, // __builtin_HEXAGON_C2_cmpgt
+ {Intrinsic::hexagon_C2_cmpgti, 10877}, // __builtin_HEXAGON_C2_cmpgti
+ {Intrinsic::hexagon_C2_cmpgtp, 10905}, // __builtin_HEXAGON_C2_cmpgtp
+ {Intrinsic::hexagon_C2_cmpgtu, 10933}, // __builtin_HEXAGON_C2_cmpgtu
+ {Intrinsic::hexagon_C2_cmpgtui, 10961}, // __builtin_HEXAGON_C2_cmpgtui
+ {Intrinsic::hexagon_C2_cmpgtup, 10990}, // __builtin_HEXAGON_C2_cmpgtup
+ {Intrinsic::hexagon_C2_cmplt, 11019}, // __builtin_HEXAGON_C2_cmplt
+ {Intrinsic::hexagon_C2_cmpltu, 11046}, // __builtin_HEXAGON_C2_cmpltu
+ {Intrinsic::hexagon_C2_mask, 11074}, // __builtin_HEXAGON_C2_mask
+ {Intrinsic::hexagon_C2_mux, 11100}, // __builtin_HEXAGON_C2_mux
+ {Intrinsic::hexagon_C2_muxii, 11125}, // __builtin_HEXAGON_C2_muxii
+ {Intrinsic::hexagon_C2_muxir, 11152}, // __builtin_HEXAGON_C2_muxir
+ {Intrinsic::hexagon_C2_muxri, 11179}, // __builtin_HEXAGON_C2_muxri
+ {Intrinsic::hexagon_C2_not, 11206}, // __builtin_HEXAGON_C2_not
+ {Intrinsic::hexagon_C2_or, 11231}, // __builtin_HEXAGON_C2_or
+ {Intrinsic::hexagon_C2_orn, 11255}, // __builtin_HEXAGON_C2_orn
+ {Intrinsic::hexagon_C2_pxfer_map, 11280}, // __builtin_HEXAGON_C2_pxfer_map
+ {Intrinsic::hexagon_C2_tfrpr, 11311}, // __builtin_HEXAGON_C2_tfrpr
+ {Intrinsic::hexagon_C2_tfrrp, 11338}, // __builtin_HEXAGON_C2_tfrrp
+ {Intrinsic::hexagon_C2_vitpack, 11365}, // __builtin_HEXAGON_C2_vitpack
+ {Intrinsic::hexagon_C2_vmux, 11394}, // __builtin_HEXAGON_C2_vmux
+ {Intrinsic::hexagon_C2_xor, 11420}, // __builtin_HEXAGON_C2_xor
+ {Intrinsic::hexagon_C4_and_and, 11445}, // __builtin_HEXAGON_C4_and_and
+ {Intrinsic::hexagon_C4_and_andn, 11474}, // __builtin_HEXAGON_C4_and_andn
+ {Intrinsic::hexagon_C4_and_or, 11504}, // __builtin_HEXAGON_C4_and_or
+ {Intrinsic::hexagon_C4_and_orn, 11532}, // __builtin_HEXAGON_C4_and_orn
+ {Intrinsic::hexagon_C4_cmplte, 11561}, // __builtin_HEXAGON_C4_cmplte
+ {Intrinsic::hexagon_C4_cmpltei, 11589}, // __builtin_HEXAGON_C4_cmpltei
+ {Intrinsic::hexagon_C4_cmplteu, 11618}, // __builtin_HEXAGON_C4_cmplteu
+ {Intrinsic::hexagon_C4_cmplteui, 11647}, // __builtin_HEXAGON_C4_cmplteui
+ {Intrinsic::hexagon_C4_cmpneq, 11677}, // __builtin_HEXAGON_C4_cmpneq
+ {Intrinsic::hexagon_C4_cmpneqi, 11705}, // __builtin_HEXAGON_C4_cmpneqi
+ {Intrinsic::hexagon_C4_fastcorner9, 11734}, // __builtin_HEXAGON_C4_fastcorner9
+ {Intrinsic::hexagon_C4_fastcorner9_not, 11767}, // __builtin_HEXAGON_C4_fastcorner9_not
+ {Intrinsic::hexagon_C4_nbitsclr, 11804}, // __builtin_HEXAGON_C4_nbitsclr
+ {Intrinsic::hexagon_C4_nbitsclri, 11834}, // __builtin_HEXAGON_C4_nbitsclri
+ {Intrinsic::hexagon_C4_nbitsset, 11865}, // __builtin_HEXAGON_C4_nbitsset
+ {Intrinsic::hexagon_C4_or_and, 11895}, // __builtin_HEXAGON_C4_or_and
+ {Intrinsic::hexagon_C4_or_andn, 11923}, // __builtin_HEXAGON_C4_or_andn
+ {Intrinsic::hexagon_C4_or_or, 11952}, // __builtin_HEXAGON_C4_or_or
+ {Intrinsic::hexagon_C4_or_orn, 11979}, // __builtin_HEXAGON_C4_or_orn
+ {Intrinsic::hexagon_F2_conv_d2df, 12007}, // __builtin_HEXAGON_F2_conv_d2df
+ {Intrinsic::hexagon_F2_conv_d2sf, 12038}, // __builtin_HEXAGON_F2_conv_d2sf
+ {Intrinsic::hexagon_F2_conv_df2d, 12069}, // __builtin_HEXAGON_F2_conv_df2d
+ {Intrinsic::hexagon_F2_conv_df2d_chop, 12100}, // __builtin_HEXAGON_F2_conv_df2d_chop
+ {Intrinsic::hexagon_F2_conv_df2sf, 12136}, // __builtin_HEXAGON_F2_conv_df2sf
+ {Intrinsic::hexagon_F2_conv_df2ud, 12168}, // __builtin_HEXAGON_F2_conv_df2ud
+ {Intrinsic::hexagon_F2_conv_df2ud_chop, 12200}, // __builtin_HEXAGON_F2_conv_df2ud_chop
+ {Intrinsic::hexagon_F2_conv_df2uw, 12237}, // __builtin_HEXAGON_F2_conv_df2uw
+ {Intrinsic::hexagon_F2_conv_df2uw_chop, 12269}, // __builtin_HEXAGON_F2_conv_df2uw_chop
+ {Intrinsic::hexagon_F2_conv_df2w, 12306}, // __builtin_HEXAGON_F2_conv_df2w
+ {Intrinsic::hexagon_F2_conv_df2w_chop, 12337}, // __builtin_HEXAGON_F2_conv_df2w_chop
+ {Intrinsic::hexagon_F2_conv_sf2d, 12373}, // __builtin_HEXAGON_F2_conv_sf2d
+ {Intrinsic::hexagon_F2_conv_sf2d_chop, 12404}, // __builtin_HEXAGON_F2_conv_sf2d_chop
+ {Intrinsic::hexagon_F2_conv_sf2df, 12440}, // __builtin_HEXAGON_F2_conv_sf2df
+ {Intrinsic::hexagon_F2_conv_sf2ud, 12472}, // __builtin_HEXAGON_F2_conv_sf2ud
+ {Intrinsic::hexagon_F2_conv_sf2ud_chop, 12504}, // __builtin_HEXAGON_F2_conv_sf2ud_chop
+ {Intrinsic::hexagon_F2_conv_sf2uw, 12541}, // __builtin_HEXAGON_F2_conv_sf2uw
+ {Intrinsic::hexagon_F2_conv_sf2uw_chop, 12573}, // __builtin_HEXAGON_F2_conv_sf2uw_chop
+ {Intrinsic::hexagon_F2_conv_sf2w, 12610}, // __builtin_HEXAGON_F2_conv_sf2w
+ {Intrinsic::hexagon_F2_conv_sf2w_chop, 12641}, // __builtin_HEXAGON_F2_conv_sf2w_chop
+ {Intrinsic::hexagon_F2_conv_ud2df, 12677}, // __builtin_HEXAGON_F2_conv_ud2df
+ {Intrinsic::hexagon_F2_conv_ud2sf, 12709}, // __builtin_HEXAGON_F2_conv_ud2sf
+ {Intrinsic::hexagon_F2_conv_uw2df, 12741}, // __builtin_HEXAGON_F2_conv_uw2df
+ {Intrinsic::hexagon_F2_conv_uw2sf, 12773}, // __builtin_HEXAGON_F2_conv_uw2sf
+ {Intrinsic::hexagon_F2_conv_w2df, 12805}, // __builtin_HEXAGON_F2_conv_w2df
+ {Intrinsic::hexagon_F2_conv_w2sf, 12836}, // __builtin_HEXAGON_F2_conv_w2sf
+ {Intrinsic::hexagon_F2_dfadd, 12867}, // __builtin_HEXAGON_F2_dfadd
+ {Intrinsic::hexagon_F2_dfclass, 12894}, // __builtin_HEXAGON_F2_dfclass
+ {Intrinsic::hexagon_F2_dfcmpeq, 12923}, // __builtin_HEXAGON_F2_dfcmpeq
+ {Intrinsic::hexagon_F2_dfcmpge, 12952}, // __builtin_HEXAGON_F2_dfcmpge
+ {Intrinsic::hexagon_F2_dfcmpgt, 12981}, // __builtin_HEXAGON_F2_dfcmpgt
+ {Intrinsic::hexagon_F2_dfcmpuo, 13010}, // __builtin_HEXAGON_F2_dfcmpuo
+ {Intrinsic::hexagon_F2_dfimm_n, 13039}, // __builtin_HEXAGON_F2_dfimm_n
+ {Intrinsic::hexagon_F2_dfimm_p, 13068}, // __builtin_HEXAGON_F2_dfimm_p
+ {Intrinsic::hexagon_F2_dfsub, 13097}, // __builtin_HEXAGON_F2_dfsub
+ {Intrinsic::hexagon_F2_sfadd, 13124}, // __builtin_HEXAGON_F2_sfadd
+ {Intrinsic::hexagon_F2_sfclass, 13151}, // __builtin_HEXAGON_F2_sfclass
+ {Intrinsic::hexagon_F2_sfcmpeq, 13180}, // __builtin_HEXAGON_F2_sfcmpeq
+ {Intrinsic::hexagon_F2_sfcmpge, 13209}, // __builtin_HEXAGON_F2_sfcmpge
+ {Intrinsic::hexagon_F2_sfcmpgt, 13238}, // __builtin_HEXAGON_F2_sfcmpgt
+ {Intrinsic::hexagon_F2_sfcmpuo, 13267}, // __builtin_HEXAGON_F2_sfcmpuo
+ {Intrinsic::hexagon_F2_sffixupd, 13296}, // __builtin_HEXAGON_F2_sffixupd
+ {Intrinsic::hexagon_F2_sffixupn, 13326}, // __builtin_HEXAGON_F2_sffixupn
+ {Intrinsic::hexagon_F2_sffixupr, 13356}, // __builtin_HEXAGON_F2_sffixupr
+ {Intrinsic::hexagon_F2_sffma, 13386}, // __builtin_HEXAGON_F2_sffma
+ {Intrinsic::hexagon_F2_sffma_lib, 13413}, // __builtin_HEXAGON_F2_sffma_lib
+ {Intrinsic::hexagon_F2_sffma_sc, 13444}, // __builtin_HEXAGON_F2_sffma_sc
+ {Intrinsic::hexagon_F2_sffms, 13474}, // __builtin_HEXAGON_F2_sffms
+ {Intrinsic::hexagon_F2_sffms_lib, 13501}, // __builtin_HEXAGON_F2_sffms_lib
+ {Intrinsic::hexagon_F2_sfimm_n, 13532}, // __builtin_HEXAGON_F2_sfimm_n
+ {Intrinsic::hexagon_F2_sfimm_p, 13561}, // __builtin_HEXAGON_F2_sfimm_p
+ {Intrinsic::hexagon_F2_sfinvsqrta, 13590}, // __builtin_HEXAGON_F2_sfinvsqrta
+ {Intrinsic::hexagon_F2_sfmax, 13622}, // __builtin_HEXAGON_F2_sfmax
+ {Intrinsic::hexagon_F2_sfmin, 13649}, // __builtin_HEXAGON_F2_sfmin
+ {Intrinsic::hexagon_F2_sfmpy, 13676}, // __builtin_HEXAGON_F2_sfmpy
+ {Intrinsic::hexagon_F2_sfrecipa, 13703}, // __builtin_HEXAGON_F2_sfrecipa
+ {Intrinsic::hexagon_F2_sfsub, 13733}, // __builtin_HEXAGON_F2_sfsub
+ {Intrinsic::hexagon_L2_loadw_locked, 13760}, // __builtin_HEXAGON_L2_loadw_locked
+ {Intrinsic::hexagon_L4_loadd_locked, 13794}, // __builtin_HEXAGON_L4_loadd_locked
+ {Intrinsic::hexagon_M2_acci, 13828}, // __builtin_HEXAGON_M2_acci
+ {Intrinsic::hexagon_M2_accii, 13854}, // __builtin_HEXAGON_M2_accii
+ {Intrinsic::hexagon_M2_cmaci_s0, 13881}, // __builtin_HEXAGON_M2_cmaci_s0
+ {Intrinsic::hexagon_M2_cmacr_s0, 13911}, // __builtin_HEXAGON_M2_cmacr_s0
+ {Intrinsic::hexagon_M2_cmacs_s0, 13941}, // __builtin_HEXAGON_M2_cmacs_s0
+ {Intrinsic::hexagon_M2_cmacs_s1, 13971}, // __builtin_HEXAGON_M2_cmacs_s1
+ {Intrinsic::hexagon_M2_cmacsc_s0, 14001}, // __builtin_HEXAGON_M2_cmacsc_s0
+ {Intrinsic::hexagon_M2_cmacsc_s1, 14032}, // __builtin_HEXAGON_M2_cmacsc_s1
+ {Intrinsic::hexagon_M2_cmpyi_s0, 14063}, // __builtin_HEXAGON_M2_cmpyi_s0
+ {Intrinsic::hexagon_M2_cmpyr_s0, 14093}, // __builtin_HEXAGON_M2_cmpyr_s0
+ {Intrinsic::hexagon_M2_cmpyrs_s0, 14123}, // __builtin_HEXAGON_M2_cmpyrs_s0
+ {Intrinsic::hexagon_M2_cmpyrs_s1, 14154}, // __builtin_HEXAGON_M2_cmpyrs_s1
+ {Intrinsic::hexagon_M2_cmpyrsc_s0, 14185}, // __builtin_HEXAGON_M2_cmpyrsc_s0
+ {Intrinsic::hexagon_M2_cmpyrsc_s1, 14217}, // __builtin_HEXAGON_M2_cmpyrsc_s1
+ {Intrinsic::hexagon_M2_cmpys_s0, 14249}, // __builtin_HEXAGON_M2_cmpys_s0
+ {Intrinsic::hexagon_M2_cmpys_s1, 14279}, // __builtin_HEXAGON_M2_cmpys_s1
+ {Intrinsic::hexagon_M2_cmpysc_s0, 14309}, // __builtin_HEXAGON_M2_cmpysc_s0
+ {Intrinsic::hexagon_M2_cmpysc_s1, 14340}, // __builtin_HEXAGON_M2_cmpysc_s1
+ {Intrinsic::hexagon_M2_cnacs_s0, 14371}, // __builtin_HEXAGON_M2_cnacs_s0
+ {Intrinsic::hexagon_M2_cnacs_s1, 14401}, // __builtin_HEXAGON_M2_cnacs_s1
+ {Intrinsic::hexagon_M2_cnacsc_s0, 14431}, // __builtin_HEXAGON_M2_cnacsc_s0
+ {Intrinsic::hexagon_M2_cnacsc_s1, 14462}, // __builtin_HEXAGON_M2_cnacsc_s1
+ {Intrinsic::hexagon_M2_dpmpyss_acc_s0, 14493}, // __builtin_HEXAGON_M2_dpmpyss_acc_s0
+ {Intrinsic::hexagon_M2_dpmpyss_nac_s0, 14529}, // __builtin_HEXAGON_M2_dpmpyss_nac_s0
+ {Intrinsic::hexagon_M2_dpmpyss_rnd_s0, 14565}, // __builtin_HEXAGON_M2_dpmpyss_rnd_s0
+ {Intrinsic::hexagon_M2_dpmpyss_s0, 14601}, // __builtin_HEXAGON_M2_dpmpyss_s0
+ {Intrinsic::hexagon_M2_dpmpyuu_acc_s0, 14633}, // __builtin_HEXAGON_M2_dpmpyuu_acc_s0
+ {Intrinsic::hexagon_M2_dpmpyuu_nac_s0, 14669}, // __builtin_HEXAGON_M2_dpmpyuu_nac_s0
+ {Intrinsic::hexagon_M2_dpmpyuu_s0, 14705}, // __builtin_HEXAGON_M2_dpmpyuu_s0
+ {Intrinsic::hexagon_M2_hmmpyh_rs1, 14737}, // __builtin_HEXAGON_M2_hmmpyh_rs1
+ {Intrinsic::hexagon_M2_hmmpyh_s1, 14769}, // __builtin_HEXAGON_M2_hmmpyh_s1
+ {Intrinsic::hexagon_M2_hmmpyl_rs1, 14800}, // __builtin_HEXAGON_M2_hmmpyl_rs1
+ {Intrinsic::hexagon_M2_hmmpyl_s1, 14832}, // __builtin_HEXAGON_M2_hmmpyl_s1
+ {Intrinsic::hexagon_M2_maci, 14863}, // __builtin_HEXAGON_M2_maci
+ {Intrinsic::hexagon_M2_macsin, 14889}, // __builtin_HEXAGON_M2_macsin
+ {Intrinsic::hexagon_M2_macsip, 14917}, // __builtin_HEXAGON_M2_macsip
+ {Intrinsic::hexagon_M2_mmachs_rs0, 14945}, // __builtin_HEXAGON_M2_mmachs_rs0
+ {Intrinsic::hexagon_M2_mmachs_rs1, 14977}, // __builtin_HEXAGON_M2_mmachs_rs1
+ {Intrinsic::hexagon_M2_mmachs_s0, 15009}, // __builtin_HEXAGON_M2_mmachs_s0
+ {Intrinsic::hexagon_M2_mmachs_s1, 15040}, // __builtin_HEXAGON_M2_mmachs_s1
+ {Intrinsic::hexagon_M2_mmacls_rs0, 15071}, // __builtin_HEXAGON_M2_mmacls_rs0
+ {Intrinsic::hexagon_M2_mmacls_rs1, 15103}, // __builtin_HEXAGON_M2_mmacls_rs1
+ {Intrinsic::hexagon_M2_mmacls_s0, 15135}, // __builtin_HEXAGON_M2_mmacls_s0
+ {Intrinsic::hexagon_M2_mmacls_s1, 15166}, // __builtin_HEXAGON_M2_mmacls_s1
+ {Intrinsic::hexagon_M2_mmacuhs_rs0, 15197}, // __builtin_HEXAGON_M2_mmacuhs_rs0
+ {Intrinsic::hexagon_M2_mmacuhs_rs1, 15230}, // __builtin_HEXAGON_M2_mmacuhs_rs1
+ {Intrinsic::hexagon_M2_mmacuhs_s0, 15263}, // __builtin_HEXAGON_M2_mmacuhs_s0
+ {Intrinsic::hexagon_M2_mmacuhs_s1, 15295}, // __builtin_HEXAGON_M2_mmacuhs_s1
+ {Intrinsic::hexagon_M2_mmaculs_rs0, 15327}, // __builtin_HEXAGON_M2_mmaculs_rs0
+ {Intrinsic::hexagon_M2_mmaculs_rs1, 15360}, // __builtin_HEXAGON_M2_mmaculs_rs1
+ {Intrinsic::hexagon_M2_mmaculs_s0, 15393}, // __builtin_HEXAGON_M2_mmaculs_s0
+ {Intrinsic::hexagon_M2_mmaculs_s1, 15425}, // __builtin_HEXAGON_M2_mmaculs_s1
+ {Intrinsic::hexagon_M2_mmpyh_rs0, 15457}, // __builtin_HEXAGON_M2_mmpyh_rs0
+ {Intrinsic::hexagon_M2_mmpyh_rs1, 15488}, // __builtin_HEXAGON_M2_mmpyh_rs1
+ {Intrinsic::hexagon_M2_mmpyh_s0, 15519}, // __builtin_HEXAGON_M2_mmpyh_s0
+ {Intrinsic::hexagon_M2_mmpyh_s1, 15549}, // __builtin_HEXAGON_M2_mmpyh_s1
+ {Intrinsic::hexagon_M2_mmpyl_rs0, 15579}, // __builtin_HEXAGON_M2_mmpyl_rs0
+ {Intrinsic::hexagon_M2_mmpyl_rs1, 15610}, // __builtin_HEXAGON_M2_mmpyl_rs1
+ {Intrinsic::hexagon_M2_mmpyl_s0, 15641}, // __builtin_HEXAGON_M2_mmpyl_s0
+ {Intrinsic::hexagon_M2_mmpyl_s1, 15671}, // __builtin_HEXAGON_M2_mmpyl_s1
+ {Intrinsic::hexagon_M2_mmpyuh_rs0, 15701}, // __builtin_HEXAGON_M2_mmpyuh_rs0
+ {Intrinsic::hexagon_M2_mmpyuh_rs1, 15733}, // __builtin_HEXAGON_M2_mmpyuh_rs1
+ {Intrinsic::hexagon_M2_mmpyuh_s0, 15765}, // __builtin_HEXAGON_M2_mmpyuh_s0
+ {Intrinsic::hexagon_M2_mmpyuh_s1, 15796}, // __builtin_HEXAGON_M2_mmpyuh_s1
+ {Intrinsic::hexagon_M2_mmpyul_rs0, 15827}, // __builtin_HEXAGON_M2_mmpyul_rs0
+ {Intrinsic::hexagon_M2_mmpyul_rs1, 15859}, // __builtin_HEXAGON_M2_mmpyul_rs1
+ {Intrinsic::hexagon_M2_mmpyul_s0, 15891}, // __builtin_HEXAGON_M2_mmpyul_s0
+ {Intrinsic::hexagon_M2_mmpyul_s1, 15922}, // __builtin_HEXAGON_M2_mmpyul_s1
+ {Intrinsic::hexagon_M2_mnaci, 15953}, // __builtin_HEXAGON_M2_mnaci
+ {Intrinsic::hexagon_M2_mpy_acc_hh_s0, 15980}, // __builtin_HEXAGON_M2_mpy_acc_hh_s0
+ {Intrinsic::hexagon_M2_mpy_acc_hh_s1, 16015}, // __builtin_HEXAGON_M2_mpy_acc_hh_s1
+ {Intrinsic::hexagon_M2_mpy_acc_hl_s0, 16050}, // __builtin_HEXAGON_M2_mpy_acc_hl_s0
+ {Intrinsic::hexagon_M2_mpy_acc_hl_s1, 16085}, // __builtin_HEXAGON_M2_mpy_acc_hl_s1
+ {Intrinsic::hexagon_M2_mpy_acc_lh_s0, 16120}, // __builtin_HEXAGON_M2_mpy_acc_lh_s0
+ {Intrinsic::hexagon_M2_mpy_acc_lh_s1, 16155}, // __builtin_HEXAGON_M2_mpy_acc_lh_s1
+ {Intrinsic::hexagon_M2_mpy_acc_ll_s0, 16190}, // __builtin_HEXAGON_M2_mpy_acc_ll_s0
+ {Intrinsic::hexagon_M2_mpy_acc_ll_s1, 16225}, // __builtin_HEXAGON_M2_mpy_acc_ll_s1
+ {Intrinsic::hexagon_M2_mpy_acc_sat_hh_s0, 16260}, // __builtin_HEXAGON_M2_mpy_acc_sat_hh_s0
+ {Intrinsic::hexagon_M2_mpy_acc_sat_hh_s1, 16299}, // __builtin_HEXAGON_M2_mpy_acc_sat_hh_s1
+ {Intrinsic::hexagon_M2_mpy_acc_sat_hl_s0, 16338}, // __builtin_HEXAGON_M2_mpy_acc_sat_hl_s0
+ {Intrinsic::hexagon_M2_mpy_acc_sat_hl_s1, 16377}, // __builtin_HEXAGON_M2_mpy_acc_sat_hl_s1
+ {Intrinsic::hexagon_M2_mpy_acc_sat_lh_s0, 16416}, // __builtin_HEXAGON_M2_mpy_acc_sat_lh_s0
+ {Intrinsic::hexagon_M2_mpy_acc_sat_lh_s1, 16455}, // __builtin_HEXAGON_M2_mpy_acc_sat_lh_s1
+ {Intrinsic::hexagon_M2_mpy_acc_sat_ll_s0, 16494}, // __builtin_HEXAGON_M2_mpy_acc_sat_ll_s0
+ {Intrinsic::hexagon_M2_mpy_acc_sat_ll_s1, 16533}, // __builtin_HEXAGON_M2_mpy_acc_sat_ll_s1
+ {Intrinsic::hexagon_M2_mpy_hh_s0, 16572}, // __builtin_HEXAGON_M2_mpy_hh_s0
+ {Intrinsic::hexagon_M2_mpy_hh_s1, 16603}, // __builtin_HEXAGON_M2_mpy_hh_s1
+ {Intrinsic::hexagon_M2_mpy_hl_s0, 16634}, // __builtin_HEXAGON_M2_mpy_hl_s0
+ {Intrinsic::hexagon_M2_mpy_hl_s1, 16665}, // __builtin_HEXAGON_M2_mpy_hl_s1
+ {Intrinsic::hexagon_M2_mpy_lh_s0, 16696}, // __builtin_HEXAGON_M2_mpy_lh_s0
+ {Intrinsic::hexagon_M2_mpy_lh_s1, 16727}, // __builtin_HEXAGON_M2_mpy_lh_s1
+ {Intrinsic::hexagon_M2_mpy_ll_s0, 16758}, // __builtin_HEXAGON_M2_mpy_ll_s0
+ {Intrinsic::hexagon_M2_mpy_ll_s1, 16789}, // __builtin_HEXAGON_M2_mpy_ll_s1
+ {Intrinsic::hexagon_M2_mpy_nac_hh_s0, 16820}, // __builtin_HEXAGON_M2_mpy_nac_hh_s0
+ {Intrinsic::hexagon_M2_mpy_nac_hh_s1, 16855}, // __builtin_HEXAGON_M2_mpy_nac_hh_s1
+ {Intrinsic::hexagon_M2_mpy_nac_hl_s0, 16890}, // __builtin_HEXAGON_M2_mpy_nac_hl_s0
+ {Intrinsic::hexagon_M2_mpy_nac_hl_s1, 16925}, // __builtin_HEXAGON_M2_mpy_nac_hl_s1
+ {Intrinsic::hexagon_M2_mpy_nac_lh_s0, 16960}, // __builtin_HEXAGON_M2_mpy_nac_lh_s0
+ {Intrinsic::hexagon_M2_mpy_nac_lh_s1, 16995}, // __builtin_HEXAGON_M2_mpy_nac_lh_s1
+ {Intrinsic::hexagon_M2_mpy_nac_ll_s0, 17030}, // __builtin_HEXAGON_M2_mpy_nac_ll_s0
+ {Intrinsic::hexagon_M2_mpy_nac_ll_s1, 17065}, // __builtin_HEXAGON_M2_mpy_nac_ll_s1
+ {Intrinsic::hexagon_M2_mpy_nac_sat_hh_s0, 17100}, // __builtin_HEXAGON_M2_mpy_nac_sat_hh_s0
+ {Intrinsic::hexagon_M2_mpy_nac_sat_hh_s1, 17139}, // __builtin_HEXAGON_M2_mpy_nac_sat_hh_s1
+ {Intrinsic::hexagon_M2_mpy_nac_sat_hl_s0, 17178}, // __builtin_HEXAGON_M2_mpy_nac_sat_hl_s0
+ {Intrinsic::hexagon_M2_mpy_nac_sat_hl_s1, 17217}, // __builtin_HEXAGON_M2_mpy_nac_sat_hl_s1
+ {Intrinsic::hexagon_M2_mpy_nac_sat_lh_s0, 17256}, // __builtin_HEXAGON_M2_mpy_nac_sat_lh_s0
+ {Intrinsic::hexagon_M2_mpy_nac_sat_lh_s1, 17295}, // __builtin_HEXAGON_M2_mpy_nac_sat_lh_s1
+ {Intrinsic::hexagon_M2_mpy_nac_sat_ll_s0, 17334}, // __builtin_HEXAGON_M2_mpy_nac_sat_ll_s0
+ {Intrinsic::hexagon_M2_mpy_nac_sat_ll_s1, 17373}, // __builtin_HEXAGON_M2_mpy_nac_sat_ll_s1
+ {Intrinsic::hexagon_M2_mpy_rnd_hh_s0, 17412}, // __builtin_HEXAGON_M2_mpy_rnd_hh_s0
+ {Intrinsic::hexagon_M2_mpy_rnd_hh_s1, 17447}, // __builtin_HEXAGON_M2_mpy_rnd_hh_s1
+ {Intrinsic::hexagon_M2_mpy_rnd_hl_s0, 17482}, // __builtin_HEXAGON_M2_mpy_rnd_hl_s0
+ {Intrinsic::hexagon_M2_mpy_rnd_hl_s1, 17517}, // __builtin_HEXAGON_M2_mpy_rnd_hl_s1
+ {Intrinsic::hexagon_M2_mpy_rnd_lh_s0, 17552}, // __builtin_HEXAGON_M2_mpy_rnd_lh_s0
+ {Intrinsic::hexagon_M2_mpy_rnd_lh_s1, 17587}, // __builtin_HEXAGON_M2_mpy_rnd_lh_s1
+ {Intrinsic::hexagon_M2_mpy_rnd_ll_s0, 17622}, // __builtin_HEXAGON_M2_mpy_rnd_ll_s0
+ {Intrinsic::hexagon_M2_mpy_rnd_ll_s1, 17657}, // __builtin_HEXAGON_M2_mpy_rnd_ll_s1
+ {Intrinsic::hexagon_M2_mpy_sat_hh_s0, 17692}, // __builtin_HEXAGON_M2_mpy_sat_hh_s0
+ {Intrinsic::hexagon_M2_mpy_sat_hh_s1, 17727}, // __builtin_HEXAGON_M2_mpy_sat_hh_s1
+ {Intrinsic::hexagon_M2_mpy_sat_hl_s0, 17762}, // __builtin_HEXAGON_M2_mpy_sat_hl_s0
+ {Intrinsic::hexagon_M2_mpy_sat_hl_s1, 17797}, // __builtin_HEXAGON_M2_mpy_sat_hl_s1
+ {Intrinsic::hexagon_M2_mpy_sat_lh_s0, 17832}, // __builtin_HEXAGON_M2_mpy_sat_lh_s0
+ {Intrinsic::hexagon_M2_mpy_sat_lh_s1, 17867}, // __builtin_HEXAGON_M2_mpy_sat_lh_s1
+ {Intrinsic::hexagon_M2_mpy_sat_ll_s0, 17902}, // __builtin_HEXAGON_M2_mpy_sat_ll_s0
+ {Intrinsic::hexagon_M2_mpy_sat_ll_s1, 17937}, // __builtin_HEXAGON_M2_mpy_sat_ll_s1
+ {Intrinsic::hexagon_M2_mpy_sat_rnd_hh_s0, 17972}, // __builtin_HEXAGON_M2_mpy_sat_rnd_hh_s0
+ {Intrinsic::hexagon_M2_mpy_sat_rnd_hh_s1, 18011}, // __builtin_HEXAGON_M2_mpy_sat_rnd_hh_s1
+ {Intrinsic::hexagon_M2_mpy_sat_rnd_hl_s0, 18050}, // __builtin_HEXAGON_M2_mpy_sat_rnd_hl_s0
+ {Intrinsic::hexagon_M2_mpy_sat_rnd_hl_s1, 18089}, // __builtin_HEXAGON_M2_mpy_sat_rnd_hl_s1
+ {Intrinsic::hexagon_M2_mpy_sat_rnd_lh_s0, 18128}, // __builtin_HEXAGON_M2_mpy_sat_rnd_lh_s0
+ {Intrinsic::hexagon_M2_mpy_sat_rnd_lh_s1, 18167}, // __builtin_HEXAGON_M2_mpy_sat_rnd_lh_s1
+ {Intrinsic::hexagon_M2_mpy_sat_rnd_ll_s0, 18206}, // __builtin_HEXAGON_M2_mpy_sat_rnd_ll_s0
+ {Intrinsic::hexagon_M2_mpy_sat_rnd_ll_s1, 18245}, // __builtin_HEXAGON_M2_mpy_sat_rnd_ll_s1
+ {Intrinsic::hexagon_M2_mpy_up, 18284}, // __builtin_HEXAGON_M2_mpy_up
+ {Intrinsic::hexagon_M2_mpy_up_s1, 18312}, // __builtin_HEXAGON_M2_mpy_up_s1
+ {Intrinsic::hexagon_M2_mpy_up_s1_sat, 18343}, // __builtin_HEXAGON_M2_mpy_up_s1_sat
+ {Intrinsic::hexagon_M2_mpyd_acc_hh_s0, 18378}, // __builtin_HEXAGON_M2_mpyd_acc_hh_s0
+ {Intrinsic::hexagon_M2_mpyd_acc_hh_s1, 18414}, // __builtin_HEXAGON_M2_mpyd_acc_hh_s1
+ {Intrinsic::hexagon_M2_mpyd_acc_hl_s0, 18450}, // __builtin_HEXAGON_M2_mpyd_acc_hl_s0
+ {Intrinsic::hexagon_M2_mpyd_acc_hl_s1, 18486}, // __builtin_HEXAGON_M2_mpyd_acc_hl_s1
+ {Intrinsic::hexagon_M2_mpyd_acc_lh_s0, 18522}, // __builtin_HEXAGON_M2_mpyd_acc_lh_s0
+ {Intrinsic::hexagon_M2_mpyd_acc_lh_s1, 18558}, // __builtin_HEXAGON_M2_mpyd_acc_lh_s1
+ {Intrinsic::hexagon_M2_mpyd_acc_ll_s0, 18594}, // __builtin_HEXAGON_M2_mpyd_acc_ll_s0
+ {Intrinsic::hexagon_M2_mpyd_acc_ll_s1, 18630}, // __builtin_HEXAGON_M2_mpyd_acc_ll_s1
+ {Intrinsic::hexagon_M2_mpyd_hh_s0, 18666}, // __builtin_HEXAGON_M2_mpyd_hh_s0
+ {Intrinsic::hexagon_M2_mpyd_hh_s1, 18698}, // __builtin_HEXAGON_M2_mpyd_hh_s1
+ {Intrinsic::hexagon_M2_mpyd_hl_s0, 18730}, // __builtin_HEXAGON_M2_mpyd_hl_s0
+ {Intrinsic::hexagon_M2_mpyd_hl_s1, 18762}, // __builtin_HEXAGON_M2_mpyd_hl_s1
+ {Intrinsic::hexagon_M2_mpyd_lh_s0, 18794}, // __builtin_HEXAGON_M2_mpyd_lh_s0
+ {Intrinsic::hexagon_M2_mpyd_lh_s1, 18826}, // __builtin_HEXAGON_M2_mpyd_lh_s1
+ {Intrinsic::hexagon_M2_mpyd_ll_s0, 18858}, // __builtin_HEXAGON_M2_mpyd_ll_s0
+ {Intrinsic::hexagon_M2_mpyd_ll_s1, 18890}, // __builtin_HEXAGON_M2_mpyd_ll_s1
+ {Intrinsic::hexagon_M2_mpyd_nac_hh_s0, 18922}, // __builtin_HEXAGON_M2_mpyd_nac_hh_s0
+ {Intrinsic::hexagon_M2_mpyd_nac_hh_s1, 18958}, // __builtin_HEXAGON_M2_mpyd_nac_hh_s1
+ {Intrinsic::hexagon_M2_mpyd_nac_hl_s0, 18994}, // __builtin_HEXAGON_M2_mpyd_nac_hl_s0
+ {Intrinsic::hexagon_M2_mpyd_nac_hl_s1, 19030}, // __builtin_HEXAGON_M2_mpyd_nac_hl_s1
+ {Intrinsic::hexagon_M2_mpyd_nac_lh_s0, 19066}, // __builtin_HEXAGON_M2_mpyd_nac_lh_s0
+ {Intrinsic::hexagon_M2_mpyd_nac_lh_s1, 19102}, // __builtin_HEXAGON_M2_mpyd_nac_lh_s1
+ {Intrinsic::hexagon_M2_mpyd_nac_ll_s0, 19138}, // __builtin_HEXAGON_M2_mpyd_nac_ll_s0
+ {Intrinsic::hexagon_M2_mpyd_nac_ll_s1, 19174}, // __builtin_HEXAGON_M2_mpyd_nac_ll_s1
+ {Intrinsic::hexagon_M2_mpyd_rnd_hh_s0, 19210}, // __builtin_HEXAGON_M2_mpyd_rnd_hh_s0
+ {Intrinsic::hexagon_M2_mpyd_rnd_hh_s1, 19246}, // __builtin_HEXAGON_M2_mpyd_rnd_hh_s1
+ {Intrinsic::hexagon_M2_mpyd_rnd_hl_s0, 19282}, // __builtin_HEXAGON_M2_mpyd_rnd_hl_s0
+ {Intrinsic::hexagon_M2_mpyd_rnd_hl_s1, 19318}, // __builtin_HEXAGON_M2_mpyd_rnd_hl_s1
+ {Intrinsic::hexagon_M2_mpyd_rnd_lh_s0, 19354}, // __builtin_HEXAGON_M2_mpyd_rnd_lh_s0
+ {Intrinsic::hexagon_M2_mpyd_rnd_lh_s1, 19390}, // __builtin_HEXAGON_M2_mpyd_rnd_lh_s1
+ {Intrinsic::hexagon_M2_mpyd_rnd_ll_s0, 19426}, // __builtin_HEXAGON_M2_mpyd_rnd_ll_s0
+ {Intrinsic::hexagon_M2_mpyd_rnd_ll_s1, 19462}, // __builtin_HEXAGON_M2_mpyd_rnd_ll_s1
+ {Intrinsic::hexagon_M2_mpyi, 19498}, // __builtin_HEXAGON_M2_mpyi
+ {Intrinsic::hexagon_M2_mpysin, 19524}, // __builtin_HEXAGON_M2_mpysin
+ {Intrinsic::hexagon_M2_mpysip, 19552}, // __builtin_HEXAGON_M2_mpysip
+ {Intrinsic::hexagon_M2_mpysmi, 19580}, // __builtin_HEXAGON_M2_mpysmi
+ {Intrinsic::hexagon_M2_mpysu_up, 19608}, // __builtin_HEXAGON_M2_mpysu_up
+ {Intrinsic::hexagon_M2_mpyu_acc_hh_s0, 19638}, // __builtin_HEXAGON_M2_mpyu_acc_hh_s0
+ {Intrinsic::hexagon_M2_mpyu_acc_hh_s1, 19674}, // __builtin_HEXAGON_M2_mpyu_acc_hh_s1
+ {Intrinsic::hexagon_M2_mpyu_acc_hl_s0, 19710}, // __builtin_HEXAGON_M2_mpyu_acc_hl_s0
+ {Intrinsic::hexagon_M2_mpyu_acc_hl_s1, 19746}, // __builtin_HEXAGON_M2_mpyu_acc_hl_s1
+ {Intrinsic::hexagon_M2_mpyu_acc_lh_s0, 19782}, // __builtin_HEXAGON_M2_mpyu_acc_lh_s0
+ {Intrinsic::hexagon_M2_mpyu_acc_lh_s1, 19818}, // __builtin_HEXAGON_M2_mpyu_acc_lh_s1
+ {Intrinsic::hexagon_M2_mpyu_acc_ll_s0, 19854}, // __builtin_HEXAGON_M2_mpyu_acc_ll_s0
+ {Intrinsic::hexagon_M2_mpyu_acc_ll_s1, 19890}, // __builtin_HEXAGON_M2_mpyu_acc_ll_s1
+ {Intrinsic::hexagon_M2_mpyu_hh_s0, 19926}, // __builtin_HEXAGON_M2_mpyu_hh_s0
+ {Intrinsic::hexagon_M2_mpyu_hh_s1, 19958}, // __builtin_HEXAGON_M2_mpyu_hh_s1
+ {Intrinsic::hexagon_M2_mpyu_hl_s0, 19990}, // __builtin_HEXAGON_M2_mpyu_hl_s0
+ {Intrinsic::hexagon_M2_mpyu_hl_s1, 20022}, // __builtin_HEXAGON_M2_mpyu_hl_s1
+ {Intrinsic::hexagon_M2_mpyu_lh_s0, 20054}, // __builtin_HEXAGON_M2_mpyu_lh_s0
+ {Intrinsic::hexagon_M2_mpyu_lh_s1, 20086}, // __builtin_HEXAGON_M2_mpyu_lh_s1
+ {Intrinsic::hexagon_M2_mpyu_ll_s0, 20118}, // __builtin_HEXAGON_M2_mpyu_ll_s0
+ {Intrinsic::hexagon_M2_mpyu_ll_s1, 20150}, // __builtin_HEXAGON_M2_mpyu_ll_s1
+ {Intrinsic::hexagon_M2_mpyu_nac_hh_s0, 20182}, // __builtin_HEXAGON_M2_mpyu_nac_hh_s0
+ {Intrinsic::hexagon_M2_mpyu_nac_hh_s1, 20218}, // __builtin_HEXAGON_M2_mpyu_nac_hh_s1
+ {Intrinsic::hexagon_M2_mpyu_nac_hl_s0, 20254}, // __builtin_HEXAGON_M2_mpyu_nac_hl_s0
+ {Intrinsic::hexagon_M2_mpyu_nac_hl_s1, 20290}, // __builtin_HEXAGON_M2_mpyu_nac_hl_s1
+ {Intrinsic::hexagon_M2_mpyu_nac_lh_s0, 20326}, // __builtin_HEXAGON_M2_mpyu_nac_lh_s0
+ {Intrinsic::hexagon_M2_mpyu_nac_lh_s1, 20362}, // __builtin_HEXAGON_M2_mpyu_nac_lh_s1
+ {Intrinsic::hexagon_M2_mpyu_nac_ll_s0, 20398}, // __builtin_HEXAGON_M2_mpyu_nac_ll_s0
+ {Intrinsic::hexagon_M2_mpyu_nac_ll_s1, 20434}, // __builtin_HEXAGON_M2_mpyu_nac_ll_s1
+ {Intrinsic::hexagon_M2_mpyu_up, 20470}, // __builtin_HEXAGON_M2_mpyu_up
+ {Intrinsic::hexagon_M2_mpyud_acc_hh_s0, 20499}, // __builtin_HEXAGON_M2_mpyud_acc_hh_s0
+ {Intrinsic::hexagon_M2_mpyud_acc_hh_s1, 20536}, // __builtin_HEXAGON_M2_mpyud_acc_hh_s1
+ {Intrinsic::hexagon_M2_mpyud_acc_hl_s0, 20573}, // __builtin_HEXAGON_M2_mpyud_acc_hl_s0
+ {Intrinsic::hexagon_M2_mpyud_acc_hl_s1, 20610}, // __builtin_HEXAGON_M2_mpyud_acc_hl_s1
+ {Intrinsic::hexagon_M2_mpyud_acc_lh_s0, 20647}, // __builtin_HEXAGON_M2_mpyud_acc_lh_s0
+ {Intrinsic::hexagon_M2_mpyud_acc_lh_s1, 20684}, // __builtin_HEXAGON_M2_mpyud_acc_lh_s1
+ {Intrinsic::hexagon_M2_mpyud_acc_ll_s0, 20721}, // __builtin_HEXAGON_M2_mpyud_acc_ll_s0
+ {Intrinsic::hexagon_M2_mpyud_acc_ll_s1, 20758}, // __builtin_HEXAGON_M2_mpyud_acc_ll_s1
+ {Intrinsic::hexagon_M2_mpyud_hh_s0, 20795}, // __builtin_HEXAGON_M2_mpyud_hh_s0
+ {Intrinsic::hexagon_M2_mpyud_hh_s1, 20828}, // __builtin_HEXAGON_M2_mpyud_hh_s1
+ {Intrinsic::hexagon_M2_mpyud_hl_s0, 20861}, // __builtin_HEXAGON_M2_mpyud_hl_s0
+ {Intrinsic::hexagon_M2_mpyud_hl_s1, 20894}, // __builtin_HEXAGON_M2_mpyud_hl_s1
+ {Intrinsic::hexagon_M2_mpyud_lh_s0, 20927}, // __builtin_HEXAGON_M2_mpyud_lh_s0
+ {Intrinsic::hexagon_M2_mpyud_lh_s1, 20960}, // __builtin_HEXAGON_M2_mpyud_lh_s1
+ {Intrinsic::hexagon_M2_mpyud_ll_s0, 20993}, // __builtin_HEXAGON_M2_mpyud_ll_s0
+ {Intrinsic::hexagon_M2_mpyud_ll_s1, 21026}, // __builtin_HEXAGON_M2_mpyud_ll_s1
+ {Intrinsic::hexagon_M2_mpyud_nac_hh_s0, 21059}, // __builtin_HEXAGON_M2_mpyud_nac_hh_s0
+ {Intrinsic::hexagon_M2_mpyud_nac_hh_s1, 21096}, // __builtin_HEXAGON_M2_mpyud_nac_hh_s1
+ {Intrinsic::hexagon_M2_mpyud_nac_hl_s0, 21133}, // __builtin_HEXAGON_M2_mpyud_nac_hl_s0
+ {Intrinsic::hexagon_M2_mpyud_nac_hl_s1, 21170}, // __builtin_HEXAGON_M2_mpyud_nac_hl_s1
+ {Intrinsic::hexagon_M2_mpyud_nac_lh_s0, 21207}, // __builtin_HEXAGON_M2_mpyud_nac_lh_s0
+ {Intrinsic::hexagon_M2_mpyud_nac_lh_s1, 21244}, // __builtin_HEXAGON_M2_mpyud_nac_lh_s1
+ {Intrinsic::hexagon_M2_mpyud_nac_ll_s0, 21281}, // __builtin_HEXAGON_M2_mpyud_nac_ll_s0
+ {Intrinsic::hexagon_M2_mpyud_nac_ll_s1, 21318}, // __builtin_HEXAGON_M2_mpyud_nac_ll_s1
+ {Intrinsic::hexagon_M2_mpyui, 21355}, // __builtin_HEXAGON_M2_mpyui
+ {Intrinsic::hexagon_M2_nacci, 21382}, // __builtin_HEXAGON_M2_nacci
+ {Intrinsic::hexagon_M2_naccii, 21409}, // __builtin_HEXAGON_M2_naccii
+ {Intrinsic::hexagon_M2_subacc, 21437}, // __builtin_HEXAGON_M2_subacc
+ {Intrinsic::hexagon_M2_vabsdiffh, 21465}, // __builtin_HEXAGON_M2_vabsdiffh
+ {Intrinsic::hexagon_M2_vabsdiffw, 21496}, // __builtin_HEXAGON_M2_vabsdiffw
+ {Intrinsic::hexagon_M2_vcmac_s0_sat_i, 21527}, // __builtin_HEXAGON_M2_vcmac_s0_sat_i
+ {Intrinsic::hexagon_M2_vcmac_s0_sat_r, 21563}, // __builtin_HEXAGON_M2_vcmac_s0_sat_r
+ {Intrinsic::hexagon_M2_vcmpy_s0_sat_i, 21599}, // __builtin_HEXAGON_M2_vcmpy_s0_sat_i
+ {Intrinsic::hexagon_M2_vcmpy_s0_sat_r, 21635}, // __builtin_HEXAGON_M2_vcmpy_s0_sat_r
+ {Intrinsic::hexagon_M2_vcmpy_s1_sat_i, 21671}, // __builtin_HEXAGON_M2_vcmpy_s1_sat_i
+ {Intrinsic::hexagon_M2_vcmpy_s1_sat_r, 21707}, // __builtin_HEXAGON_M2_vcmpy_s1_sat_r
+ {Intrinsic::hexagon_M2_vdmacs_s0, 21743}, // __builtin_HEXAGON_M2_vdmacs_s0
+ {Intrinsic::hexagon_M2_vdmacs_s1, 21774}, // __builtin_HEXAGON_M2_vdmacs_s1
+ {Intrinsic::hexagon_M2_vdmpyrs_s0, 21805}, // __builtin_HEXAGON_M2_vdmpyrs_s0
+ {Intrinsic::hexagon_M2_vdmpyrs_s1, 21837}, // __builtin_HEXAGON_M2_vdmpyrs_s1
+ {Intrinsic::hexagon_M2_vdmpys_s0, 21869}, // __builtin_HEXAGON_M2_vdmpys_s0
+ {Intrinsic::hexagon_M2_vdmpys_s1, 21900}, // __builtin_HEXAGON_M2_vdmpys_s1
+ {Intrinsic::hexagon_M2_vmac2, 21931}, // __builtin_HEXAGON_M2_vmac2
+ {Intrinsic::hexagon_M2_vmac2es, 21958}, // __builtin_HEXAGON_M2_vmac2es
+ {Intrinsic::hexagon_M2_vmac2es_s0, 21987}, // __builtin_HEXAGON_M2_vmac2es_s0
+ {Intrinsic::hexagon_M2_vmac2es_s1, 22019}, // __builtin_HEXAGON_M2_vmac2es_s1
+ {Intrinsic::hexagon_M2_vmac2s_s0, 22051}, // __builtin_HEXAGON_M2_vmac2s_s0
+ {Intrinsic::hexagon_M2_vmac2s_s1, 22082}, // __builtin_HEXAGON_M2_vmac2s_s1
+ {Intrinsic::hexagon_M2_vmac2su_s0, 22113}, // __builtin_HEXAGON_M2_vmac2su_s0
+ {Intrinsic::hexagon_M2_vmac2su_s1, 22145}, // __builtin_HEXAGON_M2_vmac2su_s1
+ {Intrinsic::hexagon_M2_vmpy2es_s0, 22177}, // __builtin_HEXAGON_M2_vmpy2es_s0
+ {Intrinsic::hexagon_M2_vmpy2es_s1, 22209}, // __builtin_HEXAGON_M2_vmpy2es_s1
+ {Intrinsic::hexagon_M2_vmpy2s_s0, 22241}, // __builtin_HEXAGON_M2_vmpy2s_s0
+ {Intrinsic::hexagon_M2_vmpy2s_s0pack, 22272}, // __builtin_HEXAGON_M2_vmpy2s_s0pack
+ {Intrinsic::hexagon_M2_vmpy2s_s1, 22307}, // __builtin_HEXAGON_M2_vmpy2s_s1
+ {Intrinsic::hexagon_M2_vmpy2s_s1pack, 22338}, // __builtin_HEXAGON_M2_vmpy2s_s1pack
+ {Intrinsic::hexagon_M2_vmpy2su_s0, 22373}, // __builtin_HEXAGON_M2_vmpy2su_s0
+ {Intrinsic::hexagon_M2_vmpy2su_s1, 22405}, // __builtin_HEXAGON_M2_vmpy2su_s1
+ {Intrinsic::hexagon_M2_vraddh, 22437}, // __builtin_HEXAGON_M2_vraddh
+ {Intrinsic::hexagon_M2_vradduh, 22465}, // __builtin_HEXAGON_M2_vradduh
+ {Intrinsic::hexagon_M2_vrcmaci_s0, 22494}, // __builtin_HEXAGON_M2_vrcmaci_s0
+ {Intrinsic::hexagon_M2_vrcmaci_s0c, 22526}, // __builtin_HEXAGON_M2_vrcmaci_s0c
+ {Intrinsic::hexagon_M2_vrcmacr_s0, 22559}, // __builtin_HEXAGON_M2_vrcmacr_s0
+ {Intrinsic::hexagon_M2_vrcmacr_s0c, 22591}, // __builtin_HEXAGON_M2_vrcmacr_s0c
+ {Intrinsic::hexagon_M2_vrcmpyi_s0, 22624}, // __builtin_HEXAGON_M2_vrcmpyi_s0
+ {Intrinsic::hexagon_M2_vrcmpyi_s0c, 22656}, // __builtin_HEXAGON_M2_vrcmpyi_s0c
+ {Intrinsic::hexagon_M2_vrcmpyr_s0, 22689}, // __builtin_HEXAGON_M2_vrcmpyr_s0
+ {Intrinsic::hexagon_M2_vrcmpyr_s0c, 22721}, // __builtin_HEXAGON_M2_vrcmpyr_s0c
+ {Intrinsic::hexagon_M2_vrcmpys_acc_s1, 22754}, // __builtin_HEXAGON_M2_vrcmpys_acc_s1
+ {Intrinsic::hexagon_M2_vrcmpys_s1, 22790}, // __builtin_HEXAGON_M2_vrcmpys_s1
+ {Intrinsic::hexagon_M2_vrcmpys_s1rp, 22822}, // __builtin_HEXAGON_M2_vrcmpys_s1rp
+ {Intrinsic::hexagon_M2_vrmac_s0, 22856}, // __builtin_HEXAGON_M2_vrmac_s0
+ {Intrinsic::hexagon_M2_vrmpy_s0, 22886}, // __builtin_HEXAGON_M2_vrmpy_s0
+ {Intrinsic::hexagon_M2_xor_xacc, 22916}, // __builtin_HEXAGON_M2_xor_xacc
+ {Intrinsic::hexagon_M4_and_and, 22946}, // __builtin_HEXAGON_M4_and_and
+ {Intrinsic::hexagon_M4_and_andn, 22975}, // __builtin_HEXAGON_M4_and_andn
+ {Intrinsic::hexagon_M4_and_or, 23005}, // __builtin_HEXAGON_M4_and_or
+ {Intrinsic::hexagon_M4_and_xor, 23033}, // __builtin_HEXAGON_M4_and_xor
+ {Intrinsic::hexagon_M4_cmpyi_wh, 23062}, // __builtin_HEXAGON_M4_cmpyi_wh
+ {Intrinsic::hexagon_M4_cmpyi_whc, 23092}, // __builtin_HEXAGON_M4_cmpyi_whc
+ {Intrinsic::hexagon_M4_cmpyr_wh, 23123}, // __builtin_HEXAGON_M4_cmpyr_wh
+ {Intrinsic::hexagon_M4_cmpyr_whc, 23153}, // __builtin_HEXAGON_M4_cmpyr_whc
+ {Intrinsic::hexagon_M4_mac_up_s1_sat, 23184}, // __builtin_HEXAGON_M4_mac_up_s1_sat
+ {Intrinsic::hexagon_M4_mpyri_addi, 23219}, // __builtin_HEXAGON_M4_mpyri_addi
+ {Intrinsic::hexagon_M4_mpyri_addr, 23251}, // __builtin_HEXAGON_M4_mpyri_addr
+ {Intrinsic::hexagon_M4_mpyri_addr_u2, 23283}, // __builtin_HEXAGON_M4_mpyri_addr_u2
+ {Intrinsic::hexagon_M4_mpyrr_addi, 23318}, // __builtin_HEXAGON_M4_mpyrr_addi
+ {Intrinsic::hexagon_M4_mpyrr_addr, 23350}, // __builtin_HEXAGON_M4_mpyrr_addr
+ {Intrinsic::hexagon_M4_nac_up_s1_sat, 23382}, // __builtin_HEXAGON_M4_nac_up_s1_sat
+ {Intrinsic::hexagon_M4_or_and, 23417}, // __builtin_HEXAGON_M4_or_and
+ {Intrinsic::hexagon_M4_or_andn, 23445}, // __builtin_HEXAGON_M4_or_andn
+ {Intrinsic::hexagon_M4_or_or, 23474}, // __builtin_HEXAGON_M4_or_or
+ {Intrinsic::hexagon_M4_or_xor, 23501}, // __builtin_HEXAGON_M4_or_xor
+ {Intrinsic::hexagon_M4_pmpyw, 23529}, // __builtin_HEXAGON_M4_pmpyw
+ {Intrinsic::hexagon_M4_pmpyw_acc, 23556}, // __builtin_HEXAGON_M4_pmpyw_acc
+ {Intrinsic::hexagon_M4_vpmpyh, 23587}, // __builtin_HEXAGON_M4_vpmpyh
+ {Intrinsic::hexagon_M4_vpmpyh_acc, 23615}, // __builtin_HEXAGON_M4_vpmpyh_acc
+ {Intrinsic::hexagon_M4_vrmpyeh_acc_s0, 23647}, // __builtin_HEXAGON_M4_vrmpyeh_acc_s0
+ {Intrinsic::hexagon_M4_vrmpyeh_acc_s1, 23683}, // __builtin_HEXAGON_M4_vrmpyeh_acc_s1
+ {Intrinsic::hexagon_M4_vrmpyeh_s0, 23719}, // __builtin_HEXAGON_M4_vrmpyeh_s0
+ {Intrinsic::hexagon_M4_vrmpyeh_s1, 23751}, // __builtin_HEXAGON_M4_vrmpyeh_s1
+ {Intrinsic::hexagon_M4_vrmpyoh_acc_s0, 23783}, // __builtin_HEXAGON_M4_vrmpyoh_acc_s0
+ {Intrinsic::hexagon_M4_vrmpyoh_acc_s1, 23819}, // __builtin_HEXAGON_M4_vrmpyoh_acc_s1
+ {Intrinsic::hexagon_M4_vrmpyoh_s0, 23855}, // __builtin_HEXAGON_M4_vrmpyoh_s0
+ {Intrinsic::hexagon_M4_vrmpyoh_s1, 23887}, // __builtin_HEXAGON_M4_vrmpyoh_s1
+ {Intrinsic::hexagon_M4_xor_and, 23919}, // __builtin_HEXAGON_M4_xor_and
+ {Intrinsic::hexagon_M4_xor_andn, 23948}, // __builtin_HEXAGON_M4_xor_andn
+ {Intrinsic::hexagon_M4_xor_or, 23978}, // __builtin_HEXAGON_M4_xor_or
+ {Intrinsic::hexagon_M4_xor_xacc, 24006}, // __builtin_HEXAGON_M4_xor_xacc
+ {Intrinsic::hexagon_M5_vdmacbsu, 24036}, // __builtin_HEXAGON_M5_vdmacbsu
+ {Intrinsic::hexagon_M5_vdmpybsu, 24066}, // __builtin_HEXAGON_M5_vdmpybsu
+ {Intrinsic::hexagon_M5_vmacbsu, 24096}, // __builtin_HEXAGON_M5_vmacbsu
+ {Intrinsic::hexagon_M5_vmacbuu, 24125}, // __builtin_HEXAGON_M5_vmacbuu
+ {Intrinsic::hexagon_M5_vmpybsu, 24154}, // __builtin_HEXAGON_M5_vmpybsu
+ {Intrinsic::hexagon_M5_vmpybuu, 24183}, // __builtin_HEXAGON_M5_vmpybuu
+ {Intrinsic::hexagon_M5_vrmacbsu, 24212}, // __builtin_HEXAGON_M5_vrmacbsu
+ {Intrinsic::hexagon_M5_vrmacbuu, 24242}, // __builtin_HEXAGON_M5_vrmacbuu
+ {Intrinsic::hexagon_M5_vrmpybsu, 24272}, // __builtin_HEXAGON_M5_vrmpybsu
+ {Intrinsic::hexagon_M5_vrmpybuu, 24302}, // __builtin_HEXAGON_M5_vrmpybuu
+ {Intrinsic::hexagon_M6_vabsdiffb, 24332}, // __builtin_HEXAGON_M6_vabsdiffb
+ {Intrinsic::hexagon_M6_vabsdiffub, 24363}, // __builtin_HEXAGON_M6_vabsdiffub
+ {Intrinsic::hexagon_S2_addasl_rrri, 24395}, // __builtin_HEXAGON_S2_addasl_rrri
+ {Intrinsic::hexagon_S2_asl_i_p, 24428}, // __builtin_HEXAGON_S2_asl_i_p
+ {Intrinsic::hexagon_S2_asl_i_p_acc, 24457}, // __builtin_HEXAGON_S2_asl_i_p_acc
+ {Intrinsic::hexagon_S2_asl_i_p_and, 24490}, // __builtin_HEXAGON_S2_asl_i_p_and
+ {Intrinsic::hexagon_S2_asl_i_p_nac, 24523}, // __builtin_HEXAGON_S2_asl_i_p_nac
+ {Intrinsic::hexagon_S2_asl_i_p_or, 24556}, // __builtin_HEXAGON_S2_asl_i_p_or
+ {Intrinsic::hexagon_S2_asl_i_p_xacc, 24588}, // __builtin_HEXAGON_S2_asl_i_p_xacc
+ {Intrinsic::hexagon_S2_asl_i_r, 24622}, // __builtin_HEXAGON_S2_asl_i_r
+ {Intrinsic::hexagon_S2_asl_i_r_acc, 24651}, // __builtin_HEXAGON_S2_asl_i_r_acc
+ {Intrinsic::hexagon_S2_asl_i_r_and, 24684}, // __builtin_HEXAGON_S2_asl_i_r_and
+ {Intrinsic::hexagon_S2_asl_i_r_nac, 24717}, // __builtin_HEXAGON_S2_asl_i_r_nac
+ {Intrinsic::hexagon_S2_asl_i_r_or, 24750}, // __builtin_HEXAGON_S2_asl_i_r_or
+ {Intrinsic::hexagon_S2_asl_i_r_sat, 24782}, // __builtin_HEXAGON_S2_asl_i_r_sat
+ {Intrinsic::hexagon_S2_asl_i_r_xacc, 24815}, // __builtin_HEXAGON_S2_asl_i_r_xacc
+ {Intrinsic::hexagon_S2_asl_i_vh, 24849}, // __builtin_HEXAGON_S2_asl_i_vh
+ {Intrinsic::hexagon_S2_asl_i_vw, 24879}, // __builtin_HEXAGON_S2_asl_i_vw
+ {Intrinsic::hexagon_S2_asl_r_p, 24909}, // __builtin_HEXAGON_S2_asl_r_p
+ {Intrinsic::hexagon_S2_asl_r_p_acc, 24938}, // __builtin_HEXAGON_S2_asl_r_p_acc
+ {Intrinsic::hexagon_S2_asl_r_p_and, 24971}, // __builtin_HEXAGON_S2_asl_r_p_and
+ {Intrinsic::hexagon_S2_asl_r_p_nac, 25004}, // __builtin_HEXAGON_S2_asl_r_p_nac
+ {Intrinsic::hexagon_S2_asl_r_p_or, 25037}, // __builtin_HEXAGON_S2_asl_r_p_or
+ {Intrinsic::hexagon_S2_asl_r_p_xor, 25069}, // __builtin_HEXAGON_S2_asl_r_p_xor
+ {Intrinsic::hexagon_S2_asl_r_r, 25102}, // __builtin_HEXAGON_S2_asl_r_r
+ {Intrinsic::hexagon_S2_asl_r_r_acc, 25131}, // __builtin_HEXAGON_S2_asl_r_r_acc
+ {Intrinsic::hexagon_S2_asl_r_r_and, 25164}, // __builtin_HEXAGON_S2_asl_r_r_and
+ {Intrinsic::hexagon_S2_asl_r_r_nac, 25197}, // __builtin_HEXAGON_S2_asl_r_r_nac
+ {Intrinsic::hexagon_S2_asl_r_r_or, 25230}, // __builtin_HEXAGON_S2_asl_r_r_or
+ {Intrinsic::hexagon_S2_asl_r_r_sat, 25262}, // __builtin_HEXAGON_S2_asl_r_r_sat
+ {Intrinsic::hexagon_S2_asl_r_vh, 25295}, // __builtin_HEXAGON_S2_asl_r_vh
+ {Intrinsic::hexagon_S2_asl_r_vw, 25325}, // __builtin_HEXAGON_S2_asl_r_vw
+ {Intrinsic::hexagon_S2_asr_i_p, 25355}, // __builtin_HEXAGON_S2_asr_i_p
+ {Intrinsic::hexagon_S2_asr_i_p_acc, 25384}, // __builtin_HEXAGON_S2_asr_i_p_acc
+ {Intrinsic::hexagon_S2_asr_i_p_and, 25417}, // __builtin_HEXAGON_S2_asr_i_p_and
+ {Intrinsic::hexagon_S2_asr_i_p_nac, 25450}, // __builtin_HEXAGON_S2_asr_i_p_nac
+ {Intrinsic::hexagon_S2_asr_i_p_or, 25483}, // __builtin_HEXAGON_S2_asr_i_p_or
+ {Intrinsic::hexagon_S2_asr_i_p_rnd, 25515}, // __builtin_HEXAGON_S2_asr_i_p_rnd
+ {Intrinsic::hexagon_S2_asr_i_p_rnd_goodsyntax, 25548}, // __builtin_HEXAGON_S2_asr_i_p_rnd_goodsyntax
+ {Intrinsic::hexagon_S2_asr_i_r, 25592}, // __builtin_HEXAGON_S2_asr_i_r
+ {Intrinsic::hexagon_S2_asr_i_r_acc, 25621}, // __builtin_HEXAGON_S2_asr_i_r_acc
+ {Intrinsic::hexagon_S2_asr_i_r_and, 25654}, // __builtin_HEXAGON_S2_asr_i_r_and
+ {Intrinsic::hexagon_S2_asr_i_r_nac, 25687}, // __builtin_HEXAGON_S2_asr_i_r_nac
+ {Intrinsic::hexagon_S2_asr_i_r_or, 25720}, // __builtin_HEXAGON_S2_asr_i_r_or
+ {Intrinsic::hexagon_S2_asr_i_r_rnd, 25752}, // __builtin_HEXAGON_S2_asr_i_r_rnd
+ {Intrinsic::hexagon_S2_asr_i_r_rnd_goodsyntax, 25785}, // __builtin_HEXAGON_S2_asr_i_r_rnd_goodsyntax
+ {Intrinsic::hexagon_S2_asr_i_svw_trun, 25829}, // __builtin_HEXAGON_S2_asr_i_svw_trun
+ {Intrinsic::hexagon_S2_asr_i_vh, 25865}, // __builtin_HEXAGON_S2_asr_i_vh
+ {Intrinsic::hexagon_S2_asr_i_vw, 25895}, // __builtin_HEXAGON_S2_asr_i_vw
+ {Intrinsic::hexagon_S2_asr_r_p, 25925}, // __builtin_HEXAGON_S2_asr_r_p
+ {Intrinsic::hexagon_S2_asr_r_p_acc, 25954}, // __builtin_HEXAGON_S2_asr_r_p_acc
+ {Intrinsic::hexagon_S2_asr_r_p_and, 25987}, // __builtin_HEXAGON_S2_asr_r_p_and
+ {Intrinsic::hexagon_S2_asr_r_p_nac, 26020}, // __builtin_HEXAGON_S2_asr_r_p_nac
+ {Intrinsic::hexagon_S2_asr_r_p_or, 26053}, // __builtin_HEXAGON_S2_asr_r_p_or
+ {Intrinsic::hexagon_S2_asr_r_p_xor, 26085}, // __builtin_HEXAGON_S2_asr_r_p_xor
+ {Intrinsic::hexagon_S2_asr_r_r, 26118}, // __builtin_HEXAGON_S2_asr_r_r
+ {Intrinsic::hexagon_S2_asr_r_r_acc, 26147}, // __builtin_HEXAGON_S2_asr_r_r_acc
+ {Intrinsic::hexagon_S2_asr_r_r_and, 26180}, // __builtin_HEXAGON_S2_asr_r_r_and
+ {Intrinsic::hexagon_S2_asr_r_r_nac, 26213}, // __builtin_HEXAGON_S2_asr_r_r_nac
+ {Intrinsic::hexagon_S2_asr_r_r_or, 26246}, // __builtin_HEXAGON_S2_asr_r_r_or
+ {Intrinsic::hexagon_S2_asr_r_r_sat, 26278}, // __builtin_HEXAGON_S2_asr_r_r_sat
+ {Intrinsic::hexagon_S2_asr_r_svw_trun, 26311}, // __builtin_HEXAGON_S2_asr_r_svw_trun
+ {Intrinsic::hexagon_S2_asr_r_vh, 26347}, // __builtin_HEXAGON_S2_asr_r_vh
+ {Intrinsic::hexagon_S2_asr_r_vw, 26377}, // __builtin_HEXAGON_S2_asr_r_vw
+ {Intrinsic::hexagon_S2_brev, 26407}, // __builtin_HEXAGON_S2_brev
+ {Intrinsic::hexagon_S2_brevp, 26433}, // __builtin_HEXAGON_S2_brevp
+ {Intrinsic::hexagon_S2_cl0, 26460}, // __builtin_HEXAGON_S2_cl0
+ {Intrinsic::hexagon_S2_cl0p, 26485}, // __builtin_HEXAGON_S2_cl0p
+ {Intrinsic::hexagon_S2_cl1, 26511}, // __builtin_HEXAGON_S2_cl1
+ {Intrinsic::hexagon_S2_cl1p, 26536}, // __builtin_HEXAGON_S2_cl1p
+ {Intrinsic::hexagon_S2_clb, 26562}, // __builtin_HEXAGON_S2_clb
+ {Intrinsic::hexagon_S2_clbnorm, 26587}, // __builtin_HEXAGON_S2_clbnorm
+ {Intrinsic::hexagon_S2_clbp, 26616}, // __builtin_HEXAGON_S2_clbp
+ {Intrinsic::hexagon_S2_clrbit_i, 26642}, // __builtin_HEXAGON_S2_clrbit_i
+ {Intrinsic::hexagon_S2_clrbit_r, 26672}, // __builtin_HEXAGON_S2_clrbit_r
+ {Intrinsic::hexagon_S2_ct0, 26702}, // __builtin_HEXAGON_S2_ct0
+ {Intrinsic::hexagon_S2_ct0p, 26727}, // __builtin_HEXAGON_S2_ct0p
+ {Intrinsic::hexagon_S2_ct1, 26753}, // __builtin_HEXAGON_S2_ct1
+ {Intrinsic::hexagon_S2_ct1p, 26778}, // __builtin_HEXAGON_S2_ct1p
+ {Intrinsic::hexagon_S2_deinterleave, 26804}, // __builtin_HEXAGON_S2_deinterleave
+ {Intrinsic::hexagon_S2_extractu, 26838}, // __builtin_HEXAGON_S2_extractu
+ {Intrinsic::hexagon_S2_extractu_rp, 26868}, // __builtin_HEXAGON_S2_extractu_rp
+ {Intrinsic::hexagon_S2_extractup, 26901}, // __builtin_HEXAGON_S2_extractup
+ {Intrinsic::hexagon_S2_extractup_rp, 26932}, // __builtin_HEXAGON_S2_extractup_rp
+ {Intrinsic::hexagon_S2_insert, 26966}, // __builtin_HEXAGON_S2_insert
+ {Intrinsic::hexagon_S2_insert_rp, 26994}, // __builtin_HEXAGON_S2_insert_rp
+ {Intrinsic::hexagon_S2_insertp, 27025}, // __builtin_HEXAGON_S2_insertp
+ {Intrinsic::hexagon_S2_insertp_rp, 27054}, // __builtin_HEXAGON_S2_insertp_rp
+ {Intrinsic::hexagon_S2_interleave, 27086}, // __builtin_HEXAGON_S2_interleave
+ {Intrinsic::hexagon_S2_lfsp, 27118}, // __builtin_HEXAGON_S2_lfsp
+ {Intrinsic::hexagon_S2_lsl_r_p, 27144}, // __builtin_HEXAGON_S2_lsl_r_p
+ {Intrinsic::hexagon_S2_lsl_r_p_acc, 27173}, // __builtin_HEXAGON_S2_lsl_r_p_acc
+ {Intrinsic::hexagon_S2_lsl_r_p_and, 27206}, // __builtin_HEXAGON_S2_lsl_r_p_and
+ {Intrinsic::hexagon_S2_lsl_r_p_nac, 27239}, // __builtin_HEXAGON_S2_lsl_r_p_nac
+ {Intrinsic::hexagon_S2_lsl_r_p_or, 27272}, // __builtin_HEXAGON_S2_lsl_r_p_or
+ {Intrinsic::hexagon_S2_lsl_r_p_xor, 27304}, // __builtin_HEXAGON_S2_lsl_r_p_xor
+ {Intrinsic::hexagon_S2_lsl_r_r, 27337}, // __builtin_HEXAGON_S2_lsl_r_r
+ {Intrinsic::hexagon_S2_lsl_r_r_acc, 27366}, // __builtin_HEXAGON_S2_lsl_r_r_acc
+ {Intrinsic::hexagon_S2_lsl_r_r_and, 27399}, // __builtin_HEXAGON_S2_lsl_r_r_and
+ {Intrinsic::hexagon_S2_lsl_r_r_nac, 27432}, // __builtin_HEXAGON_S2_lsl_r_r_nac
+ {Intrinsic::hexagon_S2_lsl_r_r_or, 27465}, // __builtin_HEXAGON_S2_lsl_r_r_or
+ {Intrinsic::hexagon_S2_lsl_r_vh, 27497}, // __builtin_HEXAGON_S2_lsl_r_vh
+ {Intrinsic::hexagon_S2_lsl_r_vw, 27527}, // __builtin_HEXAGON_S2_lsl_r_vw
+ {Intrinsic::hexagon_S2_lsr_i_p, 27557}, // __builtin_HEXAGON_S2_lsr_i_p
+ {Intrinsic::hexagon_S2_lsr_i_p_acc, 27586}, // __builtin_HEXAGON_S2_lsr_i_p_acc
+ {Intrinsic::hexagon_S2_lsr_i_p_and, 27619}, // __builtin_HEXAGON_S2_lsr_i_p_and
+ {Intrinsic::hexagon_S2_lsr_i_p_nac, 27652}, // __builtin_HEXAGON_S2_lsr_i_p_nac
+ {Intrinsic::hexagon_S2_lsr_i_p_or, 27685}, // __builtin_HEXAGON_S2_lsr_i_p_or
+ {Intrinsic::hexagon_S2_lsr_i_p_xacc, 27717}, // __builtin_HEXAGON_S2_lsr_i_p_xacc
+ {Intrinsic::hexagon_S2_lsr_i_r, 27751}, // __builtin_HEXAGON_S2_lsr_i_r
+ {Intrinsic::hexagon_S2_lsr_i_r_acc, 27780}, // __builtin_HEXAGON_S2_lsr_i_r_acc
+ {Intrinsic::hexagon_S2_lsr_i_r_and, 27813}, // __builtin_HEXAGON_S2_lsr_i_r_and
+ {Intrinsic::hexagon_S2_lsr_i_r_nac, 27846}, // __builtin_HEXAGON_S2_lsr_i_r_nac
+ {Intrinsic::hexagon_S2_lsr_i_r_or, 27879}, // __builtin_HEXAGON_S2_lsr_i_r_or
+ {Intrinsic::hexagon_S2_lsr_i_r_xacc, 27911}, // __builtin_HEXAGON_S2_lsr_i_r_xacc
+ {Intrinsic::hexagon_S2_lsr_i_vh, 27945}, // __builtin_HEXAGON_S2_lsr_i_vh
+ {Intrinsic::hexagon_S2_lsr_i_vw, 27975}, // __builtin_HEXAGON_S2_lsr_i_vw
+ {Intrinsic::hexagon_S2_lsr_r_p, 28005}, // __builtin_HEXAGON_S2_lsr_r_p
+ {Intrinsic::hexagon_S2_lsr_r_p_acc, 28034}, // __builtin_HEXAGON_S2_lsr_r_p_acc
+ {Intrinsic::hexagon_S2_lsr_r_p_and, 28067}, // __builtin_HEXAGON_S2_lsr_r_p_and
+ {Intrinsic::hexagon_S2_lsr_r_p_nac, 28100}, // __builtin_HEXAGON_S2_lsr_r_p_nac
+ {Intrinsic::hexagon_S2_lsr_r_p_or, 28133}, // __builtin_HEXAGON_S2_lsr_r_p_or
+ {Intrinsic::hexagon_S2_lsr_r_p_xor, 28165}, // __builtin_HEXAGON_S2_lsr_r_p_xor
+ {Intrinsic::hexagon_S2_lsr_r_r, 28198}, // __builtin_HEXAGON_S2_lsr_r_r
+ {Intrinsic::hexagon_S2_lsr_r_r_acc, 28227}, // __builtin_HEXAGON_S2_lsr_r_r_acc
+ {Intrinsic::hexagon_S2_lsr_r_r_and, 28260}, // __builtin_HEXAGON_S2_lsr_r_r_and
+ {Intrinsic::hexagon_S2_lsr_r_r_nac, 28293}, // __builtin_HEXAGON_S2_lsr_r_r_nac
+ {Intrinsic::hexagon_S2_lsr_r_r_or, 28326}, // __builtin_HEXAGON_S2_lsr_r_r_or
+ {Intrinsic::hexagon_S2_lsr_r_vh, 28358}, // __builtin_HEXAGON_S2_lsr_r_vh
+ {Intrinsic::hexagon_S2_lsr_r_vw, 28388}, // __builtin_HEXAGON_S2_lsr_r_vw
+ {Intrinsic::hexagon_S2_mask, 28418}, // __builtin_HEXAGON_S2_mask
+ {Intrinsic::hexagon_S2_packhl, 28444}, // __builtin_HEXAGON_S2_packhl
+ {Intrinsic::hexagon_S2_parityp, 28472}, // __builtin_HEXAGON_S2_parityp
+ {Intrinsic::hexagon_S2_setbit_i, 28501}, // __builtin_HEXAGON_S2_setbit_i
+ {Intrinsic::hexagon_S2_setbit_r, 28531}, // __builtin_HEXAGON_S2_setbit_r
+ {Intrinsic::hexagon_S2_shuffeb, 28561}, // __builtin_HEXAGON_S2_shuffeb
+ {Intrinsic::hexagon_S2_shuffeh, 28590}, // __builtin_HEXAGON_S2_shuffeh
+ {Intrinsic::hexagon_S2_shuffob, 28619}, // __builtin_HEXAGON_S2_shuffob
+ {Intrinsic::hexagon_S2_shuffoh, 28648}, // __builtin_HEXAGON_S2_shuffoh
+ {Intrinsic::hexagon_S2_storew_locked, 28774}, // __builtin_HEXAGON_S2_storew_locked
+ {Intrinsic::hexagon_S2_svsathb, 28809}, // __builtin_HEXAGON_S2_svsathb
+ {Intrinsic::hexagon_S2_svsathub, 28838}, // __builtin_HEXAGON_S2_svsathub
+ {Intrinsic::hexagon_S2_tableidxb_goodsyntax, 28868}, // __builtin_HEXAGON_S2_tableidxb_goodsyntax
+ {Intrinsic::hexagon_S2_tableidxd_goodsyntax, 28910}, // __builtin_HEXAGON_S2_tableidxd_goodsyntax
+ {Intrinsic::hexagon_S2_tableidxh_goodsyntax, 28952}, // __builtin_HEXAGON_S2_tableidxh_goodsyntax
+ {Intrinsic::hexagon_S2_tableidxw_goodsyntax, 28994}, // __builtin_HEXAGON_S2_tableidxw_goodsyntax
+ {Intrinsic::hexagon_S2_togglebit_i, 29036}, // __builtin_HEXAGON_S2_togglebit_i
+ {Intrinsic::hexagon_S2_togglebit_r, 29069}, // __builtin_HEXAGON_S2_togglebit_r
+ {Intrinsic::hexagon_S2_tstbit_i, 29102}, // __builtin_HEXAGON_S2_tstbit_i
+ {Intrinsic::hexagon_S2_tstbit_r, 29132}, // __builtin_HEXAGON_S2_tstbit_r
+ {Intrinsic::hexagon_S2_valignib, 29162}, // __builtin_HEXAGON_S2_valignib
+ {Intrinsic::hexagon_S2_valignrb, 29192}, // __builtin_HEXAGON_S2_valignrb
+ {Intrinsic::hexagon_S2_vcnegh, 29222}, // __builtin_HEXAGON_S2_vcnegh
+ {Intrinsic::hexagon_S2_vcrotate, 29250}, // __builtin_HEXAGON_S2_vcrotate
+ {Intrinsic::hexagon_S2_vrcnegh, 29280}, // __builtin_HEXAGON_S2_vrcnegh
+ {Intrinsic::hexagon_S2_vrndpackwh, 29309}, // __builtin_HEXAGON_S2_vrndpackwh
+ {Intrinsic::hexagon_S2_vrndpackwhs, 29341}, // __builtin_HEXAGON_S2_vrndpackwhs
+ {Intrinsic::hexagon_S2_vsathb, 29374}, // __builtin_HEXAGON_S2_vsathb
+ {Intrinsic::hexagon_S2_vsathb_nopack, 29402}, // __builtin_HEXAGON_S2_vsathb_nopack
+ {Intrinsic::hexagon_S2_vsathub, 29437}, // __builtin_HEXAGON_S2_vsathub
+ {Intrinsic::hexagon_S2_vsathub_nopack, 29466}, // __builtin_HEXAGON_S2_vsathub_nopack
+ {Intrinsic::hexagon_S2_vsatwh, 29502}, // __builtin_HEXAGON_S2_vsatwh
+ {Intrinsic::hexagon_S2_vsatwh_nopack, 29530}, // __builtin_HEXAGON_S2_vsatwh_nopack
+ {Intrinsic::hexagon_S2_vsatwuh, 29565}, // __builtin_HEXAGON_S2_vsatwuh
+ {Intrinsic::hexagon_S2_vsatwuh_nopack, 29594}, // __builtin_HEXAGON_S2_vsatwuh_nopack
+ {Intrinsic::hexagon_S2_vsplatrb, 29630}, // __builtin_HEXAGON_S2_vsplatrb
+ {Intrinsic::hexagon_S2_vsplatrh, 29660}, // __builtin_HEXAGON_S2_vsplatrh
+ {Intrinsic::hexagon_S2_vspliceib, 29690}, // __builtin_HEXAGON_S2_vspliceib
+ {Intrinsic::hexagon_S2_vsplicerb, 29721}, // __builtin_HEXAGON_S2_vsplicerb
+ {Intrinsic::hexagon_S2_vsxtbh, 29752}, // __builtin_HEXAGON_S2_vsxtbh
+ {Intrinsic::hexagon_S2_vsxthw, 29780}, // __builtin_HEXAGON_S2_vsxthw
+ {Intrinsic::hexagon_S2_vtrunehb, 29808}, // __builtin_HEXAGON_S2_vtrunehb
+ {Intrinsic::hexagon_S2_vtrunewh, 29838}, // __builtin_HEXAGON_S2_vtrunewh
+ {Intrinsic::hexagon_S2_vtrunohb, 29868}, // __builtin_HEXAGON_S2_vtrunohb
+ {Intrinsic::hexagon_S2_vtrunowh, 29898}, // __builtin_HEXAGON_S2_vtrunowh
+ {Intrinsic::hexagon_S2_vzxtbh, 29928}, // __builtin_HEXAGON_S2_vzxtbh
+ {Intrinsic::hexagon_S2_vzxthw, 29956}, // __builtin_HEXAGON_S2_vzxthw
+ {Intrinsic::hexagon_S4_addaddi, 29984}, // __builtin_HEXAGON_S4_addaddi
+ {Intrinsic::hexagon_S4_addi_asl_ri, 30013}, // __builtin_HEXAGON_S4_addi_asl_ri
+ {Intrinsic::hexagon_S4_addi_lsr_ri, 30046}, // __builtin_HEXAGON_S4_addi_lsr_ri
+ {Intrinsic::hexagon_S4_andi_asl_ri, 30079}, // __builtin_HEXAGON_S4_andi_asl_ri
+ {Intrinsic::hexagon_S4_andi_lsr_ri, 30112}, // __builtin_HEXAGON_S4_andi_lsr_ri
+ {Intrinsic::hexagon_S4_clbaddi, 30145}, // __builtin_HEXAGON_S4_clbaddi
+ {Intrinsic::hexagon_S4_clbpaddi, 30174}, // __builtin_HEXAGON_S4_clbpaddi
+ {Intrinsic::hexagon_S4_clbpnorm, 30204}, // __builtin_HEXAGON_S4_clbpnorm
+ {Intrinsic::hexagon_S4_extract, 30234}, // __builtin_HEXAGON_S4_extract
+ {Intrinsic::hexagon_S4_extract_rp, 30263}, // __builtin_HEXAGON_S4_extract_rp
+ {Intrinsic::hexagon_S4_extractp, 30295}, // __builtin_HEXAGON_S4_extractp
+ {Intrinsic::hexagon_S4_extractp_rp, 30325}, // __builtin_HEXAGON_S4_extractp_rp
+ {Intrinsic::hexagon_S4_lsli, 30358}, // __builtin_HEXAGON_S4_lsli
+ {Intrinsic::hexagon_S4_ntstbit_i, 30384}, // __builtin_HEXAGON_S4_ntstbit_i
+ {Intrinsic::hexagon_S4_ntstbit_r, 30415}, // __builtin_HEXAGON_S4_ntstbit_r
+ {Intrinsic::hexagon_S4_or_andi, 30446}, // __builtin_HEXAGON_S4_or_andi
+ {Intrinsic::hexagon_S4_or_andix, 30475}, // __builtin_HEXAGON_S4_or_andix
+ {Intrinsic::hexagon_S4_or_ori, 30505}, // __builtin_HEXAGON_S4_or_ori
+ {Intrinsic::hexagon_S4_ori_asl_ri, 30533}, // __builtin_HEXAGON_S4_ori_asl_ri
+ {Intrinsic::hexagon_S4_ori_lsr_ri, 30565}, // __builtin_HEXAGON_S4_ori_lsr_ri
+ {Intrinsic::hexagon_S4_parity, 30597}, // __builtin_HEXAGON_S4_parity
+ {Intrinsic::hexagon_S4_stored_locked, 30625}, // __builtin_HEXAGON_S4_stored_locked
+ {Intrinsic::hexagon_S4_subaddi, 30660}, // __builtin_HEXAGON_S4_subaddi
+ {Intrinsic::hexagon_S4_subi_asl_ri, 30689}, // __builtin_HEXAGON_S4_subi_asl_ri
+ {Intrinsic::hexagon_S4_subi_lsr_ri, 30722}, // __builtin_HEXAGON_S4_subi_lsr_ri
+ {Intrinsic::hexagon_S4_vrcrotate, 30755}, // __builtin_HEXAGON_S4_vrcrotate
+ {Intrinsic::hexagon_S4_vrcrotate_acc, 30786}, // __builtin_HEXAGON_S4_vrcrotate_acc
+ {Intrinsic::hexagon_S4_vxaddsubh, 30821}, // __builtin_HEXAGON_S4_vxaddsubh
+ {Intrinsic::hexagon_S4_vxaddsubhr, 30852}, // __builtin_HEXAGON_S4_vxaddsubhr
+ {Intrinsic::hexagon_S4_vxaddsubw, 30884}, // __builtin_HEXAGON_S4_vxaddsubw
+ {Intrinsic::hexagon_S4_vxsubaddh, 30915}, // __builtin_HEXAGON_S4_vxsubaddh
+ {Intrinsic::hexagon_S4_vxsubaddhr, 30946}, // __builtin_HEXAGON_S4_vxsubaddhr
+ {Intrinsic::hexagon_S4_vxsubaddw, 30978}, // __builtin_HEXAGON_S4_vxsubaddw
+ {Intrinsic::hexagon_S5_asrhub_rnd_sat_goodsyntax, 31009}, // __builtin_HEXAGON_S5_asrhub_rnd_sat_goodsyntax
+ {Intrinsic::hexagon_S5_asrhub_sat, 31056}, // __builtin_HEXAGON_S5_asrhub_sat
+ {Intrinsic::hexagon_S5_popcountp, 31088}, // __builtin_HEXAGON_S5_popcountp
+ {Intrinsic::hexagon_S5_vasrhrnd_goodsyntax, 31119}, // __builtin_HEXAGON_S5_vasrhrnd_goodsyntax
+ {Intrinsic::hexagon_S6_rol_i_p, 31160}, // __builtin_HEXAGON_S6_rol_i_p
+ {Intrinsic::hexagon_S6_rol_i_p_acc, 31189}, // __builtin_HEXAGON_S6_rol_i_p_acc
+ {Intrinsic::hexagon_S6_rol_i_p_and, 31222}, // __builtin_HEXAGON_S6_rol_i_p_and
+ {Intrinsic::hexagon_S6_rol_i_p_nac, 31255}, // __builtin_HEXAGON_S6_rol_i_p_nac
+ {Intrinsic::hexagon_S6_rol_i_p_or, 31288}, // __builtin_HEXAGON_S6_rol_i_p_or
+ {Intrinsic::hexagon_S6_rol_i_p_xacc, 31320}, // __builtin_HEXAGON_S6_rol_i_p_xacc
+ {Intrinsic::hexagon_S6_rol_i_r, 31354}, // __builtin_HEXAGON_S6_rol_i_r
+ {Intrinsic::hexagon_S6_rol_i_r_acc, 31383}, // __builtin_HEXAGON_S6_rol_i_r_acc
+ {Intrinsic::hexagon_S6_rol_i_r_and, 31416}, // __builtin_HEXAGON_S6_rol_i_r_and
+ {Intrinsic::hexagon_S6_rol_i_r_nac, 31449}, // __builtin_HEXAGON_S6_rol_i_r_nac
+ {Intrinsic::hexagon_S6_rol_i_r_or, 31482}, // __builtin_HEXAGON_S6_rol_i_r_or
+ {Intrinsic::hexagon_S6_rol_i_r_xacc, 31514}, // __builtin_HEXAGON_S6_rol_i_r_xacc
+ {Intrinsic::hexagon_S6_vsplatrbp, 31548}, // __builtin_HEXAGON_S6_vsplatrbp
+ {Intrinsic::hexagon_S6_vtrunehb_ppp, 31579}, // __builtin_HEXAGON_S6_vtrunehb_ppp
+ {Intrinsic::hexagon_S6_vtrunohb_ppp, 31613}, // __builtin_HEXAGON_S6_vtrunohb_ppp
+ {Intrinsic::hexagon_V6_extractw, 31647}, // __builtin_HEXAGON_V6_extractw
+ {Intrinsic::hexagon_V6_extractw_128B, 31677}, // __builtin_HEXAGON_V6_extractw_128B
+ {Intrinsic::hexagon_V6_hi, 31712}, // __builtin_HEXAGON_V6_hi
+ {Intrinsic::hexagon_V6_hi_128B, 31736}, // __builtin_HEXAGON_V6_hi_128B
+ {Intrinsic::hexagon_V6_ld0, 31765}, // __builtin_HEXAGON_V6_ld0
+ {Intrinsic::hexagon_V6_ld0_128B, 31790}, // __builtin_HEXAGON_V6_ld0_128B
+ {Intrinsic::hexagon_V6_ldcnp0, 31820}, // __builtin_HEXAGON_V6_ldcnp0
+ {Intrinsic::hexagon_V6_ldcnp0_128B, 31848}, // __builtin_HEXAGON_V6_ldcnp0_128B
+ {Intrinsic::hexagon_V6_ldcnpnt0, 31881}, // __builtin_HEXAGON_V6_ldcnpnt0
+ {Intrinsic::hexagon_V6_ldcnpnt0_128B, 31911}, // __builtin_HEXAGON_V6_ldcnpnt0_128B
+ {Intrinsic::hexagon_V6_ldcp0, 31946}, // __builtin_HEXAGON_V6_ldcp0
+ {Intrinsic::hexagon_V6_ldcp0_128B, 31973}, // __builtin_HEXAGON_V6_ldcp0_128B
+ {Intrinsic::hexagon_V6_ldcpnt0, 32005}, // __builtin_HEXAGON_V6_ldcpnt0
+ {Intrinsic::hexagon_V6_ldcpnt0_128B, 32034}, // __builtin_HEXAGON_V6_ldcpnt0_128B
+ {Intrinsic::hexagon_V6_ldnp0, 32068}, // __builtin_HEXAGON_V6_ldnp0
+ {Intrinsic::hexagon_V6_ldnp0_128B, 32095}, // __builtin_HEXAGON_V6_ldnp0_128B
+ {Intrinsic::hexagon_V6_ldnpnt0, 32127}, // __builtin_HEXAGON_V6_ldnpnt0
+ {Intrinsic::hexagon_V6_ldnpnt0_128B, 32156}, // __builtin_HEXAGON_V6_ldnpnt0_128B
+ {Intrinsic::hexagon_V6_ldnt0, 32190}, // __builtin_HEXAGON_V6_ldnt0
+ {Intrinsic::hexagon_V6_ldnt0_128B, 32217}, // __builtin_HEXAGON_V6_ldnt0_128B
+ {Intrinsic::hexagon_V6_ldntnt0, 32249}, // __builtin_HEXAGON_V6_ldntnt0
+ {Intrinsic::hexagon_V6_ldp0, 32278}, // __builtin_HEXAGON_V6_ldp0
+ {Intrinsic::hexagon_V6_ldp0_128B, 32304}, // __builtin_HEXAGON_V6_ldp0_128B
+ {Intrinsic::hexagon_V6_ldpnt0, 32335}, // __builtin_HEXAGON_V6_ldpnt0
+ {Intrinsic::hexagon_V6_ldpnt0_128B, 32363}, // __builtin_HEXAGON_V6_ldpnt0_128B
+ {Intrinsic::hexagon_V6_ldtnp0, 32396}, // __builtin_HEXAGON_V6_ldtnp0
+ {Intrinsic::hexagon_V6_ldtnp0_128B, 32424}, // __builtin_HEXAGON_V6_ldtnp0_128B
+ {Intrinsic::hexagon_V6_ldtnpnt0, 32457}, // __builtin_HEXAGON_V6_ldtnpnt0
+ {Intrinsic::hexagon_V6_ldtnpnt0_128B, 32487}, // __builtin_HEXAGON_V6_ldtnpnt0_128B
+ {Intrinsic::hexagon_V6_ldtp0, 32522}, // __builtin_HEXAGON_V6_ldtp0
+ {Intrinsic::hexagon_V6_ldtp0_128B, 32549}, // __builtin_HEXAGON_V6_ldtp0_128B
+ {Intrinsic::hexagon_V6_ldtpnt0, 32581}, // __builtin_HEXAGON_V6_ldtpnt0
+ {Intrinsic::hexagon_V6_ldtpnt0_128B, 32610}, // __builtin_HEXAGON_V6_ldtpnt0_128B
+ {Intrinsic::hexagon_V6_ldu0, 32644}, // __builtin_HEXAGON_V6_ldu0
+ {Intrinsic::hexagon_V6_ldu0_128B, 32670}, // __builtin_HEXAGON_V6_ldu0_128B
+ {Intrinsic::hexagon_V6_lo, 32701}, // __builtin_HEXAGON_V6_lo
+ {Intrinsic::hexagon_V6_lo_128B, 32725}, // __builtin_HEXAGON_V6_lo_128B
+ {Intrinsic::hexagon_V6_lvsplatb, 32754}, // __builtin_HEXAGON_V6_lvsplatb
+ {Intrinsic::hexagon_V6_lvsplatb_128B, 32784}, // __builtin_HEXAGON_V6_lvsplatb_128B
+ {Intrinsic::hexagon_V6_lvsplath, 32819}, // __builtin_HEXAGON_V6_lvsplath
+ {Intrinsic::hexagon_V6_lvsplath_128B, 32849}, // __builtin_HEXAGON_V6_lvsplath_128B
+ {Intrinsic::hexagon_V6_lvsplatw, 32884}, // __builtin_HEXAGON_V6_lvsplatw
+ {Intrinsic::hexagon_V6_lvsplatw_128B, 32914}, // __builtin_HEXAGON_V6_lvsplatw_128B
+ {Intrinsic::hexagon_V6_pred_and, 32949}, // __builtin_HEXAGON_V6_pred_and
+ {Intrinsic::hexagon_V6_pred_and_128B, 32979}, // __builtin_HEXAGON_V6_pred_and_128B
+ {Intrinsic::hexagon_V6_pred_and_n, 33014}, // __builtin_HEXAGON_V6_pred_and_n
+ {Intrinsic::hexagon_V6_pred_and_n_128B, 33046}, // __builtin_HEXAGON_V6_pred_and_n_128B
+ {Intrinsic::hexagon_V6_pred_not, 33083}, // __builtin_HEXAGON_V6_pred_not
+ {Intrinsic::hexagon_V6_pred_not_128B, 33113}, // __builtin_HEXAGON_V6_pred_not_128B
+ {Intrinsic::hexagon_V6_pred_or, 33148}, // __builtin_HEXAGON_V6_pred_or
+ {Intrinsic::hexagon_V6_pred_or_128B, 33177}, // __builtin_HEXAGON_V6_pred_or_128B
+ {Intrinsic::hexagon_V6_pred_or_n, 33211}, // __builtin_HEXAGON_V6_pred_or_n
+ {Intrinsic::hexagon_V6_pred_or_n_128B, 33242}, // __builtin_HEXAGON_V6_pred_or_n_128B
+ {Intrinsic::hexagon_V6_pred_scalar2, 33278}, // __builtin_HEXAGON_V6_pred_scalar2
+ {Intrinsic::hexagon_V6_pred_scalar2_128B, 33312}, // __builtin_HEXAGON_V6_pred_scalar2_128B
+ {Intrinsic::hexagon_V6_pred_scalar2v2, 33351}, // __builtin_HEXAGON_V6_pred_scalar2v2
+ {Intrinsic::hexagon_V6_pred_scalar2v2_128B, 33387}, // __builtin_HEXAGON_V6_pred_scalar2v2_128B
+ {Intrinsic::hexagon_V6_pred_xor, 33428}, // __builtin_HEXAGON_V6_pred_xor
+ {Intrinsic::hexagon_V6_pred_xor_128B, 33458}, // __builtin_HEXAGON_V6_pred_xor_128B
+ {Intrinsic::hexagon_V6_shuffeqh, 33493}, // __builtin_HEXAGON_V6_shuffeqh
+ {Intrinsic::hexagon_V6_shuffeqh_128B, 33523}, // __builtin_HEXAGON_V6_shuffeqh_128B
+ {Intrinsic::hexagon_V6_shuffeqw, 33558}, // __builtin_HEXAGON_V6_shuffeqw
+ {Intrinsic::hexagon_V6_shuffeqw_128B, 33588}, // __builtin_HEXAGON_V6_shuffeqw_128B
+ {Intrinsic::hexagon_V6_vS32b_nqpred_ai, 33623}, // __builtin_HEXAGON_V6_vS32b_nqpred_ai
+ {Intrinsic::hexagon_V6_vS32b_nqpred_ai_128B, 33660}, // __builtin_HEXAGON_V6_vS32b_nqpred_ai_128B
+ {Intrinsic::hexagon_V6_vS32b_nt_nqpred_ai, 33702}, // __builtin_HEXAGON_V6_vS32b_nt_nqpred_ai
+ {Intrinsic::hexagon_V6_vS32b_nt_nqpred_ai_128B, 33742}, // __builtin_HEXAGON_V6_vS32b_nt_nqpred_ai_128B
+ {Intrinsic::hexagon_V6_vS32b_nt_qpred_ai, 33787}, // __builtin_HEXAGON_V6_vS32b_nt_qpred_ai
+ {Intrinsic::hexagon_V6_vS32b_nt_qpred_ai_128B, 33826}, // __builtin_HEXAGON_V6_vS32b_nt_qpred_ai_128B
+ {Intrinsic::hexagon_V6_vS32b_qpred_ai, 33870}, // __builtin_HEXAGON_V6_vS32b_qpred_ai
+ {Intrinsic::hexagon_V6_vS32b_qpred_ai_128B, 33906}, // __builtin_HEXAGON_V6_vS32b_qpred_ai_128B
+ {Intrinsic::hexagon_V6_vabsb, 33947}, // __builtin_HEXAGON_V6_vabsb
+ {Intrinsic::hexagon_V6_vabsb_128B, 33974}, // __builtin_HEXAGON_V6_vabsb_128B
+ {Intrinsic::hexagon_V6_vabsb_sat, 34006}, // __builtin_HEXAGON_V6_vabsb_sat
+ {Intrinsic::hexagon_V6_vabsb_sat_128B, 34037}, // __builtin_HEXAGON_V6_vabsb_sat_128B
+ {Intrinsic::hexagon_V6_vabsdiffh, 34073}, // __builtin_HEXAGON_V6_vabsdiffh
+ {Intrinsic::hexagon_V6_vabsdiffh_128B, 34104}, // __builtin_HEXAGON_V6_vabsdiffh_128B
+ {Intrinsic::hexagon_V6_vabsdiffub, 34140}, // __builtin_HEXAGON_V6_vabsdiffub
+ {Intrinsic::hexagon_V6_vabsdiffub_128B, 34172}, // __builtin_HEXAGON_V6_vabsdiffub_128B
+ {Intrinsic::hexagon_V6_vabsdiffuh, 34209}, // __builtin_HEXAGON_V6_vabsdiffuh
+ {Intrinsic::hexagon_V6_vabsdiffuh_128B, 34241}, // __builtin_HEXAGON_V6_vabsdiffuh_128B
+ {Intrinsic::hexagon_V6_vabsdiffw, 34278}, // __builtin_HEXAGON_V6_vabsdiffw
+ {Intrinsic::hexagon_V6_vabsdiffw_128B, 34309}, // __builtin_HEXAGON_V6_vabsdiffw_128B
+ {Intrinsic::hexagon_V6_vabsh, 34345}, // __builtin_HEXAGON_V6_vabsh
+ {Intrinsic::hexagon_V6_vabsh_128B, 34372}, // __builtin_HEXAGON_V6_vabsh_128B
+ {Intrinsic::hexagon_V6_vabsh_sat, 34404}, // __builtin_HEXAGON_V6_vabsh_sat
+ {Intrinsic::hexagon_V6_vabsh_sat_128B, 34435}, // __builtin_HEXAGON_V6_vabsh_sat_128B
+ {Intrinsic::hexagon_V6_vabsw, 34471}, // __builtin_HEXAGON_V6_vabsw
+ {Intrinsic::hexagon_V6_vabsw_128B, 34498}, // __builtin_HEXAGON_V6_vabsw_128B
+ {Intrinsic::hexagon_V6_vabsw_sat, 34530}, // __builtin_HEXAGON_V6_vabsw_sat
+ {Intrinsic::hexagon_V6_vabsw_sat_128B, 34561}, // __builtin_HEXAGON_V6_vabsw_sat_128B
+ {Intrinsic::hexagon_V6_vaddb, 34597}, // __builtin_HEXAGON_V6_vaddb
+ {Intrinsic::hexagon_V6_vaddb_128B, 34624}, // __builtin_HEXAGON_V6_vaddb_128B
+ {Intrinsic::hexagon_V6_vaddb_dv, 34656}, // __builtin_HEXAGON_V6_vaddb_dv
+ {Intrinsic::hexagon_V6_vaddb_dv_128B, 34686}, // __builtin_HEXAGON_V6_vaddb_dv_128B
+ {Intrinsic::hexagon_V6_vaddbnq, 34721}, // __builtin_HEXAGON_V6_vaddbnq
+ {Intrinsic::hexagon_V6_vaddbnq_128B, 34750}, // __builtin_HEXAGON_V6_vaddbnq_128B
+ {Intrinsic::hexagon_V6_vaddbq, 34784}, // __builtin_HEXAGON_V6_vaddbq
+ {Intrinsic::hexagon_V6_vaddbq_128B, 34812}, // __builtin_HEXAGON_V6_vaddbq_128B
+ {Intrinsic::hexagon_V6_vaddbsat, 34845}, // __builtin_HEXAGON_V6_vaddbsat
+ {Intrinsic::hexagon_V6_vaddbsat_128B, 34875}, // __builtin_HEXAGON_V6_vaddbsat_128B
+ {Intrinsic::hexagon_V6_vaddbsat_dv, 34910}, // __builtin_HEXAGON_V6_vaddbsat_dv
+ {Intrinsic::hexagon_V6_vaddbsat_dv_128B, 34943}, // __builtin_HEXAGON_V6_vaddbsat_dv_128B
+ {Intrinsic::hexagon_V6_vaddcarrysat, 34981}, // __builtin_HEXAGON_V6_vaddcarrysat
+ {Intrinsic::hexagon_V6_vaddcarrysat_128B, 35015}, // __builtin_HEXAGON_V6_vaddcarrysat_128B
+ {Intrinsic::hexagon_V6_vaddclbh, 35054}, // __builtin_HEXAGON_V6_vaddclbh
+ {Intrinsic::hexagon_V6_vaddclbh_128B, 35084}, // __builtin_HEXAGON_V6_vaddclbh_128B
+ {Intrinsic::hexagon_V6_vaddclbw, 35119}, // __builtin_HEXAGON_V6_vaddclbw
+ {Intrinsic::hexagon_V6_vaddclbw_128B, 35149}, // __builtin_HEXAGON_V6_vaddclbw_128B
+ {Intrinsic::hexagon_V6_vaddh, 35184}, // __builtin_HEXAGON_V6_vaddh
+ {Intrinsic::hexagon_V6_vaddh_128B, 35211}, // __builtin_HEXAGON_V6_vaddh_128B
+ {Intrinsic::hexagon_V6_vaddh_dv, 35243}, // __builtin_HEXAGON_V6_vaddh_dv
+ {Intrinsic::hexagon_V6_vaddh_dv_128B, 35273}, // __builtin_HEXAGON_V6_vaddh_dv_128B
+ {Intrinsic::hexagon_V6_vaddhnq, 35308}, // __builtin_HEXAGON_V6_vaddhnq
+ {Intrinsic::hexagon_V6_vaddhnq_128B, 35337}, // __builtin_HEXAGON_V6_vaddhnq_128B
+ {Intrinsic::hexagon_V6_vaddhq, 35371}, // __builtin_HEXAGON_V6_vaddhq
+ {Intrinsic::hexagon_V6_vaddhq_128B, 35399}, // __builtin_HEXAGON_V6_vaddhq_128B
+ {Intrinsic::hexagon_V6_vaddhsat, 35432}, // __builtin_HEXAGON_V6_vaddhsat
+ {Intrinsic::hexagon_V6_vaddhsat_128B, 35462}, // __builtin_HEXAGON_V6_vaddhsat_128B
+ {Intrinsic::hexagon_V6_vaddhsat_dv, 35497}, // __builtin_HEXAGON_V6_vaddhsat_dv
+ {Intrinsic::hexagon_V6_vaddhsat_dv_128B, 35530}, // __builtin_HEXAGON_V6_vaddhsat_dv_128B
+ {Intrinsic::hexagon_V6_vaddhw, 35568}, // __builtin_HEXAGON_V6_vaddhw
+ {Intrinsic::hexagon_V6_vaddhw_128B, 35596}, // __builtin_HEXAGON_V6_vaddhw_128B
+ {Intrinsic::hexagon_V6_vaddhw_acc, 35629}, // __builtin_HEXAGON_V6_vaddhw_acc
+ {Intrinsic::hexagon_V6_vaddhw_acc_128B, 35661}, // __builtin_HEXAGON_V6_vaddhw_acc_128B
+ {Intrinsic::hexagon_V6_vaddubh, 35698}, // __builtin_HEXAGON_V6_vaddubh
+ {Intrinsic::hexagon_V6_vaddubh_128B, 35727}, // __builtin_HEXAGON_V6_vaddubh_128B
+ {Intrinsic::hexagon_V6_vaddubh_acc, 35761}, // __builtin_HEXAGON_V6_vaddubh_acc
+ {Intrinsic::hexagon_V6_vaddubh_acc_128B, 35794}, // __builtin_HEXAGON_V6_vaddubh_acc_128B
+ {Intrinsic::hexagon_V6_vaddubsat, 35832}, // __builtin_HEXAGON_V6_vaddubsat
+ {Intrinsic::hexagon_V6_vaddubsat_128B, 35863}, // __builtin_HEXAGON_V6_vaddubsat_128B
+ {Intrinsic::hexagon_V6_vaddubsat_dv, 35899}, // __builtin_HEXAGON_V6_vaddubsat_dv
+ {Intrinsic::hexagon_V6_vaddubsat_dv_128B, 35933}, // __builtin_HEXAGON_V6_vaddubsat_dv_128B
+ {Intrinsic::hexagon_V6_vaddububb_sat, 35972}, // __builtin_HEXAGON_V6_vaddububb_sat
+ {Intrinsic::hexagon_V6_vaddububb_sat_128B, 36007}, // __builtin_HEXAGON_V6_vaddububb_sat_128B
+ {Intrinsic::hexagon_V6_vadduhsat, 36047}, // __builtin_HEXAGON_V6_vadduhsat
+ {Intrinsic::hexagon_V6_vadduhsat_128B, 36078}, // __builtin_HEXAGON_V6_vadduhsat_128B
+ {Intrinsic::hexagon_V6_vadduhsat_dv, 36114}, // __builtin_HEXAGON_V6_vadduhsat_dv
+ {Intrinsic::hexagon_V6_vadduhsat_dv_128B, 36148}, // __builtin_HEXAGON_V6_vadduhsat_dv_128B
+ {Intrinsic::hexagon_V6_vadduhw, 36187}, // __builtin_HEXAGON_V6_vadduhw
+ {Intrinsic::hexagon_V6_vadduhw_128B, 36216}, // __builtin_HEXAGON_V6_vadduhw_128B
+ {Intrinsic::hexagon_V6_vadduhw_acc, 36250}, // __builtin_HEXAGON_V6_vadduhw_acc
+ {Intrinsic::hexagon_V6_vadduhw_acc_128B, 36283}, // __builtin_HEXAGON_V6_vadduhw_acc_128B
+ {Intrinsic::hexagon_V6_vadduwsat, 36321}, // __builtin_HEXAGON_V6_vadduwsat
+ {Intrinsic::hexagon_V6_vadduwsat_128B, 36352}, // __builtin_HEXAGON_V6_vadduwsat_128B
+ {Intrinsic::hexagon_V6_vadduwsat_dv, 36388}, // __builtin_HEXAGON_V6_vadduwsat_dv
+ {Intrinsic::hexagon_V6_vadduwsat_dv_128B, 36422}, // __builtin_HEXAGON_V6_vadduwsat_dv_128B
+ {Intrinsic::hexagon_V6_vaddw, 36461}, // __builtin_HEXAGON_V6_vaddw
+ {Intrinsic::hexagon_V6_vaddw_128B, 36488}, // __builtin_HEXAGON_V6_vaddw_128B
+ {Intrinsic::hexagon_V6_vaddw_dv, 36520}, // __builtin_HEXAGON_V6_vaddw_dv
+ {Intrinsic::hexagon_V6_vaddw_dv_128B, 36550}, // __builtin_HEXAGON_V6_vaddw_dv_128B
+ {Intrinsic::hexagon_V6_vaddwnq, 36585}, // __builtin_HEXAGON_V6_vaddwnq
+ {Intrinsic::hexagon_V6_vaddwnq_128B, 36614}, // __builtin_HEXAGON_V6_vaddwnq_128B
+ {Intrinsic::hexagon_V6_vaddwq, 36648}, // __builtin_HEXAGON_V6_vaddwq
+ {Intrinsic::hexagon_V6_vaddwq_128B, 36676}, // __builtin_HEXAGON_V6_vaddwq_128B
+ {Intrinsic::hexagon_V6_vaddwsat, 36709}, // __builtin_HEXAGON_V6_vaddwsat
+ {Intrinsic::hexagon_V6_vaddwsat_128B, 36739}, // __builtin_HEXAGON_V6_vaddwsat_128B
+ {Intrinsic::hexagon_V6_vaddwsat_dv, 36774}, // __builtin_HEXAGON_V6_vaddwsat_dv
+ {Intrinsic::hexagon_V6_vaddwsat_dv_128B, 36807}, // __builtin_HEXAGON_V6_vaddwsat_dv_128B
+ {Intrinsic::hexagon_V6_valignb, 36845}, // __builtin_HEXAGON_V6_valignb
+ {Intrinsic::hexagon_V6_valignb_128B, 36874}, // __builtin_HEXAGON_V6_valignb_128B
+ {Intrinsic::hexagon_V6_valignbi, 36908}, // __builtin_HEXAGON_V6_valignbi
+ {Intrinsic::hexagon_V6_valignbi_128B, 36938}, // __builtin_HEXAGON_V6_valignbi_128B
+ {Intrinsic::hexagon_V6_vand, 36973}, // __builtin_HEXAGON_V6_vand
+ {Intrinsic::hexagon_V6_vand_128B, 36999}, // __builtin_HEXAGON_V6_vand_128B
+ {Intrinsic::hexagon_V6_vandnqrt, 37030}, // __builtin_HEXAGON_V6_vandnqrt
+ {Intrinsic::hexagon_V6_vandnqrt_128B, 37060}, // __builtin_HEXAGON_V6_vandnqrt_128B
+ {Intrinsic::hexagon_V6_vandnqrt_acc, 37095}, // __builtin_HEXAGON_V6_vandnqrt_acc
+ {Intrinsic::hexagon_V6_vandnqrt_acc_128B, 37129}, // __builtin_HEXAGON_V6_vandnqrt_acc_128B
+ {Intrinsic::hexagon_V6_vandqrt, 37168}, // __builtin_HEXAGON_V6_vandqrt
+ {Intrinsic::hexagon_V6_vandqrt_128B, 37197}, // __builtin_HEXAGON_V6_vandqrt_128B
+ {Intrinsic::hexagon_V6_vandqrt_acc, 37231}, // __builtin_HEXAGON_V6_vandqrt_acc
+ {Intrinsic::hexagon_V6_vandqrt_acc_128B, 37264}, // __builtin_HEXAGON_V6_vandqrt_acc_128B
+ {Intrinsic::hexagon_V6_vandvnqv, 37302}, // __builtin_HEXAGON_V6_vandvnqv
+ {Intrinsic::hexagon_V6_vandvnqv_128B, 37332}, // __builtin_HEXAGON_V6_vandvnqv_128B
+ {Intrinsic::hexagon_V6_vandvqv, 37367}, // __builtin_HEXAGON_V6_vandvqv
+ {Intrinsic::hexagon_V6_vandvqv_128B, 37396}, // __builtin_HEXAGON_V6_vandvqv_128B
+ {Intrinsic::hexagon_V6_vandvrt, 37430}, // __builtin_HEXAGON_V6_vandvrt
+ {Intrinsic::hexagon_V6_vandvrt_128B, 37459}, // __builtin_HEXAGON_V6_vandvrt_128B
+ {Intrinsic::hexagon_V6_vandvrt_acc, 37493}, // __builtin_HEXAGON_V6_vandvrt_acc
+ {Intrinsic::hexagon_V6_vandvrt_acc_128B, 37526}, // __builtin_HEXAGON_V6_vandvrt_acc_128B
+ {Intrinsic::hexagon_V6_vaslh, 37564}, // __builtin_HEXAGON_V6_vaslh
+ {Intrinsic::hexagon_V6_vaslh_128B, 37591}, // __builtin_HEXAGON_V6_vaslh_128B
+ {Intrinsic::hexagon_V6_vaslh_acc, 37623}, // __builtin_HEXAGON_V6_vaslh_acc
+ {Intrinsic::hexagon_V6_vaslh_acc_128B, 37654}, // __builtin_HEXAGON_V6_vaslh_acc_128B
+ {Intrinsic::hexagon_V6_vaslhv, 37690}, // __builtin_HEXAGON_V6_vaslhv
+ {Intrinsic::hexagon_V6_vaslhv_128B, 37718}, // __builtin_HEXAGON_V6_vaslhv_128B
+ {Intrinsic::hexagon_V6_vaslw, 37751}, // __builtin_HEXAGON_V6_vaslw
+ {Intrinsic::hexagon_V6_vaslw_128B, 37778}, // __builtin_HEXAGON_V6_vaslw_128B
+ {Intrinsic::hexagon_V6_vaslw_acc, 37810}, // __builtin_HEXAGON_V6_vaslw_acc
+ {Intrinsic::hexagon_V6_vaslw_acc_128B, 37841}, // __builtin_HEXAGON_V6_vaslw_acc_128B
+ {Intrinsic::hexagon_V6_vaslwv, 37877}, // __builtin_HEXAGON_V6_vaslwv
+ {Intrinsic::hexagon_V6_vaslwv_128B, 37905}, // __builtin_HEXAGON_V6_vaslwv_128B
+ {Intrinsic::hexagon_V6_vasr_into, 37938}, // __builtin_HEXAGON_V6_vasr_into
+ {Intrinsic::hexagon_V6_vasr_into_128B, 37969}, // __builtin_HEXAGON_V6_vasr_into_128B
+ {Intrinsic::hexagon_V6_vasrh, 38005}, // __builtin_HEXAGON_V6_vasrh
+ {Intrinsic::hexagon_V6_vasrh_128B, 38032}, // __builtin_HEXAGON_V6_vasrh_128B
+ {Intrinsic::hexagon_V6_vasrh_acc, 38064}, // __builtin_HEXAGON_V6_vasrh_acc
+ {Intrinsic::hexagon_V6_vasrh_acc_128B, 38095}, // __builtin_HEXAGON_V6_vasrh_acc_128B
+ {Intrinsic::hexagon_V6_vasrhbrndsat, 38131}, // __builtin_HEXAGON_V6_vasrhbrndsat
+ {Intrinsic::hexagon_V6_vasrhbrndsat_128B, 38165}, // __builtin_HEXAGON_V6_vasrhbrndsat_128B
+ {Intrinsic::hexagon_V6_vasrhbsat, 38204}, // __builtin_HEXAGON_V6_vasrhbsat
+ {Intrinsic::hexagon_V6_vasrhbsat_128B, 38235}, // __builtin_HEXAGON_V6_vasrhbsat_128B
+ {Intrinsic::hexagon_V6_vasrhubrndsat, 38271}, // __builtin_HEXAGON_V6_vasrhubrndsat
+ {Intrinsic::hexagon_V6_vasrhubrndsat_128B, 38306}, // __builtin_HEXAGON_V6_vasrhubrndsat_128B
+ {Intrinsic::hexagon_V6_vasrhubsat, 38346}, // __builtin_HEXAGON_V6_vasrhubsat
+ {Intrinsic::hexagon_V6_vasrhubsat_128B, 38378}, // __builtin_HEXAGON_V6_vasrhubsat_128B
+ {Intrinsic::hexagon_V6_vasrhv, 38415}, // __builtin_HEXAGON_V6_vasrhv
+ {Intrinsic::hexagon_V6_vasrhv_128B, 38443}, // __builtin_HEXAGON_V6_vasrhv_128B
+ {Intrinsic::hexagon_V6_vasruhubrndsat, 38476}, // __builtin_HEXAGON_V6_vasruhubrndsat
+ {Intrinsic::hexagon_V6_vasruhubrndsat_128B, 38512}, // __builtin_HEXAGON_V6_vasruhubrndsat_128B
+ {Intrinsic::hexagon_V6_vasruhubsat, 38553}, // __builtin_HEXAGON_V6_vasruhubsat
+ {Intrinsic::hexagon_V6_vasruhubsat_128B, 38586}, // __builtin_HEXAGON_V6_vasruhubsat_128B
+ {Intrinsic::hexagon_V6_vasruwuhrndsat, 38624}, // __builtin_HEXAGON_V6_vasruwuhrndsat
+ {Intrinsic::hexagon_V6_vasruwuhrndsat_128B, 38660}, // __builtin_HEXAGON_V6_vasruwuhrndsat_128B
+ {Intrinsic::hexagon_V6_vasruwuhsat, 38701}, // __builtin_HEXAGON_V6_vasruwuhsat
+ {Intrinsic::hexagon_V6_vasruwuhsat_128B, 38734}, // __builtin_HEXAGON_V6_vasruwuhsat_128B
+ {Intrinsic::hexagon_V6_vasrw, 38772}, // __builtin_HEXAGON_V6_vasrw
+ {Intrinsic::hexagon_V6_vasrw_128B, 38799}, // __builtin_HEXAGON_V6_vasrw_128B
+ {Intrinsic::hexagon_V6_vasrw_acc, 38831}, // __builtin_HEXAGON_V6_vasrw_acc
+ {Intrinsic::hexagon_V6_vasrw_acc_128B, 38862}, // __builtin_HEXAGON_V6_vasrw_acc_128B
+ {Intrinsic::hexagon_V6_vasrwh, 38898}, // __builtin_HEXAGON_V6_vasrwh
+ {Intrinsic::hexagon_V6_vasrwh_128B, 38926}, // __builtin_HEXAGON_V6_vasrwh_128B
+ {Intrinsic::hexagon_V6_vasrwhrndsat, 38959}, // __builtin_HEXAGON_V6_vasrwhrndsat
+ {Intrinsic::hexagon_V6_vasrwhrndsat_128B, 38993}, // __builtin_HEXAGON_V6_vasrwhrndsat_128B
+ {Intrinsic::hexagon_V6_vasrwhsat, 39032}, // __builtin_HEXAGON_V6_vasrwhsat
+ {Intrinsic::hexagon_V6_vasrwhsat_128B, 39063}, // __builtin_HEXAGON_V6_vasrwhsat_128B
+ {Intrinsic::hexagon_V6_vasrwuhrndsat, 39099}, // __builtin_HEXAGON_V6_vasrwuhrndsat
+ {Intrinsic::hexagon_V6_vasrwuhrndsat_128B, 39134}, // __builtin_HEXAGON_V6_vasrwuhrndsat_128B
+ {Intrinsic::hexagon_V6_vasrwuhsat, 39174}, // __builtin_HEXAGON_V6_vasrwuhsat
+ {Intrinsic::hexagon_V6_vasrwuhsat_128B, 39206}, // __builtin_HEXAGON_V6_vasrwuhsat_128B
+ {Intrinsic::hexagon_V6_vasrwv, 39243}, // __builtin_HEXAGON_V6_vasrwv
+ {Intrinsic::hexagon_V6_vasrwv_128B, 39271}, // __builtin_HEXAGON_V6_vasrwv_128B
+ {Intrinsic::hexagon_V6_vassign, 39304}, // __builtin_HEXAGON_V6_vassign
+ {Intrinsic::hexagon_V6_vassign_128B, 39333}, // __builtin_HEXAGON_V6_vassign_128B
+ {Intrinsic::hexagon_V6_vassignp, 39367}, // __builtin_HEXAGON_V6_vassignp
+ {Intrinsic::hexagon_V6_vassignp_128B, 39397}, // __builtin_HEXAGON_V6_vassignp_128B
+ {Intrinsic::hexagon_V6_vavgb, 39432}, // __builtin_HEXAGON_V6_vavgb
+ {Intrinsic::hexagon_V6_vavgb_128B, 39459}, // __builtin_HEXAGON_V6_vavgb_128B
+ {Intrinsic::hexagon_V6_vavgbrnd, 39491}, // __builtin_HEXAGON_V6_vavgbrnd
+ {Intrinsic::hexagon_V6_vavgbrnd_128B, 39521}, // __builtin_HEXAGON_V6_vavgbrnd_128B
+ {Intrinsic::hexagon_V6_vavgh, 39556}, // __builtin_HEXAGON_V6_vavgh
+ {Intrinsic::hexagon_V6_vavgh_128B, 39583}, // __builtin_HEXAGON_V6_vavgh_128B
+ {Intrinsic::hexagon_V6_vavghrnd, 39615}, // __builtin_HEXAGON_V6_vavghrnd
+ {Intrinsic::hexagon_V6_vavghrnd_128B, 39645}, // __builtin_HEXAGON_V6_vavghrnd_128B
+ {Intrinsic::hexagon_V6_vavgub, 39680}, // __builtin_HEXAGON_V6_vavgub
+ {Intrinsic::hexagon_V6_vavgub_128B, 39708}, // __builtin_HEXAGON_V6_vavgub_128B
+ {Intrinsic::hexagon_V6_vavgubrnd, 39741}, // __builtin_HEXAGON_V6_vavgubrnd
+ {Intrinsic::hexagon_V6_vavgubrnd_128B, 39772}, // __builtin_HEXAGON_V6_vavgubrnd_128B
+ {Intrinsic::hexagon_V6_vavguh, 39808}, // __builtin_HEXAGON_V6_vavguh
+ {Intrinsic::hexagon_V6_vavguh_128B, 39836}, // __builtin_HEXAGON_V6_vavguh_128B
+ {Intrinsic::hexagon_V6_vavguhrnd, 39869}, // __builtin_HEXAGON_V6_vavguhrnd
+ {Intrinsic::hexagon_V6_vavguhrnd_128B, 39900}, // __builtin_HEXAGON_V6_vavguhrnd_128B
+ {Intrinsic::hexagon_V6_vavguw, 39936}, // __builtin_HEXAGON_V6_vavguw
+ {Intrinsic::hexagon_V6_vavguw_128B, 39964}, // __builtin_HEXAGON_V6_vavguw_128B
+ {Intrinsic::hexagon_V6_vavguwrnd, 39997}, // __builtin_HEXAGON_V6_vavguwrnd
+ {Intrinsic::hexagon_V6_vavguwrnd_128B, 40028}, // __builtin_HEXAGON_V6_vavguwrnd_128B
+ {Intrinsic::hexagon_V6_vavgw, 40064}, // __builtin_HEXAGON_V6_vavgw
+ {Intrinsic::hexagon_V6_vavgw_128B, 40091}, // __builtin_HEXAGON_V6_vavgw_128B
+ {Intrinsic::hexagon_V6_vavgwrnd, 40123}, // __builtin_HEXAGON_V6_vavgwrnd
+ {Intrinsic::hexagon_V6_vavgwrnd_128B, 40153}, // __builtin_HEXAGON_V6_vavgwrnd_128B
+ {Intrinsic::hexagon_V6_vcl0h, 40188}, // __builtin_HEXAGON_V6_vcl0h
+ {Intrinsic::hexagon_V6_vcl0h_128B, 40215}, // __builtin_HEXAGON_V6_vcl0h_128B
+ {Intrinsic::hexagon_V6_vcl0w, 40247}, // __builtin_HEXAGON_V6_vcl0w
+ {Intrinsic::hexagon_V6_vcl0w_128B, 40274}, // __builtin_HEXAGON_V6_vcl0w_128B
+ {Intrinsic::hexagon_V6_vcombine, 40306}, // __builtin_HEXAGON_V6_vcombine
+ {Intrinsic::hexagon_V6_vcombine_128B, 40336}, // __builtin_HEXAGON_V6_vcombine_128B
+ {Intrinsic::hexagon_V6_vd0, 40371}, // __builtin_HEXAGON_V6_vd0
+ {Intrinsic::hexagon_V6_vd0_128B, 40396}, // __builtin_HEXAGON_V6_vd0_128B
+ {Intrinsic::hexagon_V6_vdd0, 40426}, // __builtin_HEXAGON_V6_vdd0
+ {Intrinsic::hexagon_V6_vdd0_128B, 40452}, // __builtin_HEXAGON_V6_vdd0_128B
+ {Intrinsic::hexagon_V6_vdealb, 40483}, // __builtin_HEXAGON_V6_vdealb
+ {Intrinsic::hexagon_V6_vdealb4w, 40544}, // __builtin_HEXAGON_V6_vdealb4w
+ {Intrinsic::hexagon_V6_vdealb4w_128B, 40574}, // __builtin_HEXAGON_V6_vdealb4w_128B
+ {Intrinsic::hexagon_V6_vdealb_128B, 40511}, // __builtin_HEXAGON_V6_vdealb_128B
+ {Intrinsic::hexagon_V6_vdealh, 40609}, // __builtin_HEXAGON_V6_vdealh
+ {Intrinsic::hexagon_V6_vdealh_128B, 40637}, // __builtin_HEXAGON_V6_vdealh_128B
+ {Intrinsic::hexagon_V6_vdealvdd, 40670}, // __builtin_HEXAGON_V6_vdealvdd
+ {Intrinsic::hexagon_V6_vdealvdd_128B, 40700}, // __builtin_HEXAGON_V6_vdealvdd_128B
+ {Intrinsic::hexagon_V6_vdelta, 40735}, // __builtin_HEXAGON_V6_vdelta
+ {Intrinsic::hexagon_V6_vdelta_128B, 40763}, // __builtin_HEXAGON_V6_vdelta_128B
+ {Intrinsic::hexagon_V6_vdmpybus, 40796}, // __builtin_HEXAGON_V6_vdmpybus
+ {Intrinsic::hexagon_V6_vdmpybus_128B, 40826}, // __builtin_HEXAGON_V6_vdmpybus_128B
+ {Intrinsic::hexagon_V6_vdmpybus_acc, 40861}, // __builtin_HEXAGON_V6_vdmpybus_acc
+ {Intrinsic::hexagon_V6_vdmpybus_acc_128B, 40895}, // __builtin_HEXAGON_V6_vdmpybus_acc_128B
+ {Intrinsic::hexagon_V6_vdmpybus_dv, 40934}, // __builtin_HEXAGON_V6_vdmpybus_dv
+ {Intrinsic::hexagon_V6_vdmpybus_dv_128B, 40967}, // __builtin_HEXAGON_V6_vdmpybus_dv_128B
+ {Intrinsic::hexagon_V6_vdmpybus_dv_acc, 41005}, // __builtin_HEXAGON_V6_vdmpybus_dv_acc
+ {Intrinsic::hexagon_V6_vdmpybus_dv_acc_128B, 41042}, // __builtin_HEXAGON_V6_vdmpybus_dv_acc_128B
+ {Intrinsic::hexagon_V6_vdmpyhb, 41084}, // __builtin_HEXAGON_V6_vdmpyhb
+ {Intrinsic::hexagon_V6_vdmpyhb_128B, 41113}, // __builtin_HEXAGON_V6_vdmpyhb_128B
+ {Intrinsic::hexagon_V6_vdmpyhb_acc, 41147}, // __builtin_HEXAGON_V6_vdmpyhb_acc
+ {Intrinsic::hexagon_V6_vdmpyhb_acc_128B, 41180}, // __builtin_HEXAGON_V6_vdmpyhb_acc_128B
+ {Intrinsic::hexagon_V6_vdmpyhb_dv, 41218}, // __builtin_HEXAGON_V6_vdmpyhb_dv
+ {Intrinsic::hexagon_V6_vdmpyhb_dv_128B, 41250}, // __builtin_HEXAGON_V6_vdmpyhb_dv_128B
+ {Intrinsic::hexagon_V6_vdmpyhb_dv_acc, 41287}, // __builtin_HEXAGON_V6_vdmpyhb_dv_acc
+ {Intrinsic::hexagon_V6_vdmpyhb_dv_acc_128B, 41323}, // __builtin_HEXAGON_V6_vdmpyhb_dv_acc_128B
+ {Intrinsic::hexagon_V6_vdmpyhisat, 41364}, // __builtin_HEXAGON_V6_vdmpyhisat
+ {Intrinsic::hexagon_V6_vdmpyhisat_128B, 41396}, // __builtin_HEXAGON_V6_vdmpyhisat_128B
+ {Intrinsic::hexagon_V6_vdmpyhisat_acc, 41433}, // __builtin_HEXAGON_V6_vdmpyhisat_acc
+ {Intrinsic::hexagon_V6_vdmpyhisat_acc_128B, 41469}, // __builtin_HEXAGON_V6_vdmpyhisat_acc_128B
+ {Intrinsic::hexagon_V6_vdmpyhsat, 41510}, // __builtin_HEXAGON_V6_vdmpyhsat
+ {Intrinsic::hexagon_V6_vdmpyhsat_128B, 41541}, // __builtin_HEXAGON_V6_vdmpyhsat_128B
+ {Intrinsic::hexagon_V6_vdmpyhsat_acc, 41577}, // __builtin_HEXAGON_V6_vdmpyhsat_acc
+ {Intrinsic::hexagon_V6_vdmpyhsat_acc_128B, 41612}, // __builtin_HEXAGON_V6_vdmpyhsat_acc_128B
+ {Intrinsic::hexagon_V6_vdmpyhsuisat, 41652}, // __builtin_HEXAGON_V6_vdmpyhsuisat
+ {Intrinsic::hexagon_V6_vdmpyhsuisat_128B, 41686}, // __builtin_HEXAGON_V6_vdmpyhsuisat_128B
+ {Intrinsic::hexagon_V6_vdmpyhsuisat_acc, 41725}, // __builtin_HEXAGON_V6_vdmpyhsuisat_acc
+ {Intrinsic::hexagon_V6_vdmpyhsuisat_acc_128B, 41763}, // __builtin_HEXAGON_V6_vdmpyhsuisat_acc_128B
+ {Intrinsic::hexagon_V6_vdmpyhsusat, 41806}, // __builtin_HEXAGON_V6_vdmpyhsusat
+ {Intrinsic::hexagon_V6_vdmpyhsusat_128B, 41839}, // __builtin_HEXAGON_V6_vdmpyhsusat_128B
+ {Intrinsic::hexagon_V6_vdmpyhsusat_acc, 41877}, // __builtin_HEXAGON_V6_vdmpyhsusat_acc
+ {Intrinsic::hexagon_V6_vdmpyhsusat_acc_128B, 41914}, // __builtin_HEXAGON_V6_vdmpyhsusat_acc_128B
+ {Intrinsic::hexagon_V6_vdmpyhvsat, 41956}, // __builtin_HEXAGON_V6_vdmpyhvsat
+ {Intrinsic::hexagon_V6_vdmpyhvsat_128B, 41988}, // __builtin_HEXAGON_V6_vdmpyhvsat_128B
+ {Intrinsic::hexagon_V6_vdmpyhvsat_acc, 42025}, // __builtin_HEXAGON_V6_vdmpyhvsat_acc
+ {Intrinsic::hexagon_V6_vdmpyhvsat_acc_128B, 42061}, // __builtin_HEXAGON_V6_vdmpyhvsat_acc_128B
+ {Intrinsic::hexagon_V6_vdsaduh, 42102}, // __builtin_HEXAGON_V6_vdsaduh
+ {Intrinsic::hexagon_V6_vdsaduh_128B, 42131}, // __builtin_HEXAGON_V6_vdsaduh_128B
+ {Intrinsic::hexagon_V6_vdsaduh_acc, 42165}, // __builtin_HEXAGON_V6_vdsaduh_acc
+ {Intrinsic::hexagon_V6_vdsaduh_acc_128B, 42198}, // __builtin_HEXAGON_V6_vdsaduh_acc_128B
+ {Intrinsic::hexagon_V6_veqb, 42236}, // __builtin_HEXAGON_V6_veqb
+ {Intrinsic::hexagon_V6_veqb_128B, 42262}, // __builtin_HEXAGON_V6_veqb_128B
+ {Intrinsic::hexagon_V6_veqb_and, 42293}, // __builtin_HEXAGON_V6_veqb_and
+ {Intrinsic::hexagon_V6_veqb_and_128B, 42323}, // __builtin_HEXAGON_V6_veqb_and_128B
+ {Intrinsic::hexagon_V6_veqb_or, 42358}, // __builtin_HEXAGON_V6_veqb_or
+ {Intrinsic::hexagon_V6_veqb_or_128B, 42387}, // __builtin_HEXAGON_V6_veqb_or_128B
+ {Intrinsic::hexagon_V6_veqb_xor, 42421}, // __builtin_HEXAGON_V6_veqb_xor
+ {Intrinsic::hexagon_V6_veqb_xor_128B, 42451}, // __builtin_HEXAGON_V6_veqb_xor_128B
+ {Intrinsic::hexagon_V6_veqh, 42486}, // __builtin_HEXAGON_V6_veqh
+ {Intrinsic::hexagon_V6_veqh_128B, 42512}, // __builtin_HEXAGON_V6_veqh_128B
+ {Intrinsic::hexagon_V6_veqh_and, 42543}, // __builtin_HEXAGON_V6_veqh_and
+ {Intrinsic::hexagon_V6_veqh_and_128B, 42573}, // __builtin_HEXAGON_V6_veqh_and_128B
+ {Intrinsic::hexagon_V6_veqh_or, 42608}, // __builtin_HEXAGON_V6_veqh_or
+ {Intrinsic::hexagon_V6_veqh_or_128B, 42637}, // __builtin_HEXAGON_V6_veqh_or_128B
+ {Intrinsic::hexagon_V6_veqh_xor, 42671}, // __builtin_HEXAGON_V6_veqh_xor
+ {Intrinsic::hexagon_V6_veqh_xor_128B, 42701}, // __builtin_HEXAGON_V6_veqh_xor_128B
+ {Intrinsic::hexagon_V6_veqw, 42736}, // __builtin_HEXAGON_V6_veqw
+ {Intrinsic::hexagon_V6_veqw_128B, 42762}, // __builtin_HEXAGON_V6_veqw_128B
+ {Intrinsic::hexagon_V6_veqw_and, 42793}, // __builtin_HEXAGON_V6_veqw_and
+ {Intrinsic::hexagon_V6_veqw_and_128B, 42823}, // __builtin_HEXAGON_V6_veqw_and_128B
+ {Intrinsic::hexagon_V6_veqw_or, 42858}, // __builtin_HEXAGON_V6_veqw_or
+ {Intrinsic::hexagon_V6_veqw_or_128B, 42887}, // __builtin_HEXAGON_V6_veqw_or_128B
+ {Intrinsic::hexagon_V6_veqw_xor, 42921}, // __builtin_HEXAGON_V6_veqw_xor
+ {Intrinsic::hexagon_V6_veqw_xor_128B, 42951}, // __builtin_HEXAGON_V6_veqw_xor_128B
+ {Intrinsic::hexagon_V6_vgathermh, 42986}, // __builtin_HEXAGON_V6_vgathermh
+ {Intrinsic::hexagon_V6_vgathermh_128B, 43017}, // __builtin_HEXAGON_V6_vgathermh_128B
+ {Intrinsic::hexagon_V6_vgathermhq, 43053}, // __builtin_HEXAGON_V6_vgathermhq
+ {Intrinsic::hexagon_V6_vgathermhq_128B, 43085}, // __builtin_HEXAGON_V6_vgathermhq_128B
+ {Intrinsic::hexagon_V6_vgathermhw, 43122}, // __builtin_HEXAGON_V6_vgathermhw
+ {Intrinsic::hexagon_V6_vgathermhw_128B, 43154}, // __builtin_HEXAGON_V6_vgathermhw_128B
+ {Intrinsic::hexagon_V6_vgathermhwq, 43191}, // __builtin_HEXAGON_V6_vgathermhwq
+ {Intrinsic::hexagon_V6_vgathermhwq_128B, 43224}, // __builtin_HEXAGON_V6_vgathermhwq_128B
+ {Intrinsic::hexagon_V6_vgathermw, 43262}, // __builtin_HEXAGON_V6_vgathermw
+ {Intrinsic::hexagon_V6_vgathermw_128B, 43293}, // __builtin_HEXAGON_V6_vgathermw_128B
+ {Intrinsic::hexagon_V6_vgathermwq, 43329}, // __builtin_HEXAGON_V6_vgathermwq
+ {Intrinsic::hexagon_V6_vgathermwq_128B, 43361}, // __builtin_HEXAGON_V6_vgathermwq_128B
+ {Intrinsic::hexagon_V6_vgtb, 43398}, // __builtin_HEXAGON_V6_vgtb
+ {Intrinsic::hexagon_V6_vgtb_128B, 43424}, // __builtin_HEXAGON_V6_vgtb_128B
+ {Intrinsic::hexagon_V6_vgtb_and, 43455}, // __builtin_HEXAGON_V6_vgtb_and
+ {Intrinsic::hexagon_V6_vgtb_and_128B, 43485}, // __builtin_HEXAGON_V6_vgtb_and_128B
+ {Intrinsic::hexagon_V6_vgtb_or, 43520}, // __builtin_HEXAGON_V6_vgtb_or
+ {Intrinsic::hexagon_V6_vgtb_or_128B, 43549}, // __builtin_HEXAGON_V6_vgtb_or_128B
+ {Intrinsic::hexagon_V6_vgtb_xor, 43583}, // __builtin_HEXAGON_V6_vgtb_xor
+ {Intrinsic::hexagon_V6_vgtb_xor_128B, 43613}, // __builtin_HEXAGON_V6_vgtb_xor_128B
+ {Intrinsic::hexagon_V6_vgth, 43648}, // __builtin_HEXAGON_V6_vgth
+ {Intrinsic::hexagon_V6_vgth_128B, 43674}, // __builtin_HEXAGON_V6_vgth_128B
+ {Intrinsic::hexagon_V6_vgth_and, 43705}, // __builtin_HEXAGON_V6_vgth_and
+ {Intrinsic::hexagon_V6_vgth_and_128B, 43735}, // __builtin_HEXAGON_V6_vgth_and_128B
+ {Intrinsic::hexagon_V6_vgth_or, 43770}, // __builtin_HEXAGON_V6_vgth_or
+ {Intrinsic::hexagon_V6_vgth_or_128B, 43799}, // __builtin_HEXAGON_V6_vgth_or_128B
+ {Intrinsic::hexagon_V6_vgth_xor, 43833}, // __builtin_HEXAGON_V6_vgth_xor
+ {Intrinsic::hexagon_V6_vgth_xor_128B, 43863}, // __builtin_HEXAGON_V6_vgth_xor_128B
+ {Intrinsic::hexagon_V6_vgtub, 43898}, // __builtin_HEXAGON_V6_vgtub
+ {Intrinsic::hexagon_V6_vgtub_128B, 43925}, // __builtin_HEXAGON_V6_vgtub_128B
+ {Intrinsic::hexagon_V6_vgtub_and, 43957}, // __builtin_HEXAGON_V6_vgtub_and
+ {Intrinsic::hexagon_V6_vgtub_and_128B, 43988}, // __builtin_HEXAGON_V6_vgtub_and_128B
+ {Intrinsic::hexagon_V6_vgtub_or, 44024}, // __builtin_HEXAGON_V6_vgtub_or
+ {Intrinsic::hexagon_V6_vgtub_or_128B, 44054}, // __builtin_HEXAGON_V6_vgtub_or_128B
+ {Intrinsic::hexagon_V6_vgtub_xor, 44089}, // __builtin_HEXAGON_V6_vgtub_xor
+ {Intrinsic::hexagon_V6_vgtub_xor_128B, 44120}, // __builtin_HEXAGON_V6_vgtub_xor_128B
+ {Intrinsic::hexagon_V6_vgtuh, 44156}, // __builtin_HEXAGON_V6_vgtuh
+ {Intrinsic::hexagon_V6_vgtuh_128B, 44183}, // __builtin_HEXAGON_V6_vgtuh_128B
+ {Intrinsic::hexagon_V6_vgtuh_and, 44215}, // __builtin_HEXAGON_V6_vgtuh_and
+ {Intrinsic::hexagon_V6_vgtuh_and_128B, 44246}, // __builtin_HEXAGON_V6_vgtuh_and_128B
+ {Intrinsic::hexagon_V6_vgtuh_or, 44282}, // __builtin_HEXAGON_V6_vgtuh_or
+ {Intrinsic::hexagon_V6_vgtuh_or_128B, 44312}, // __builtin_HEXAGON_V6_vgtuh_or_128B
+ {Intrinsic::hexagon_V6_vgtuh_xor, 44347}, // __builtin_HEXAGON_V6_vgtuh_xor
+ {Intrinsic::hexagon_V6_vgtuh_xor_128B, 44378}, // __builtin_HEXAGON_V6_vgtuh_xor_128B
+ {Intrinsic::hexagon_V6_vgtuw, 44414}, // __builtin_HEXAGON_V6_vgtuw
+ {Intrinsic::hexagon_V6_vgtuw_128B, 44441}, // __builtin_HEXAGON_V6_vgtuw_128B
+ {Intrinsic::hexagon_V6_vgtuw_and, 44473}, // __builtin_HEXAGON_V6_vgtuw_and
+ {Intrinsic::hexagon_V6_vgtuw_and_128B, 44504}, // __builtin_HEXAGON_V6_vgtuw_and_128B
+ {Intrinsic::hexagon_V6_vgtuw_or, 44540}, // __builtin_HEXAGON_V6_vgtuw_or
+ {Intrinsic::hexagon_V6_vgtuw_or_128B, 44570}, // __builtin_HEXAGON_V6_vgtuw_or_128B
+ {Intrinsic::hexagon_V6_vgtuw_xor, 44605}, // __builtin_HEXAGON_V6_vgtuw_xor
+ {Intrinsic::hexagon_V6_vgtuw_xor_128B, 44636}, // __builtin_HEXAGON_V6_vgtuw_xor_128B
+ {Intrinsic::hexagon_V6_vgtw, 44672}, // __builtin_HEXAGON_V6_vgtw
+ {Intrinsic::hexagon_V6_vgtw_128B, 44698}, // __builtin_HEXAGON_V6_vgtw_128B
+ {Intrinsic::hexagon_V6_vgtw_and, 44729}, // __builtin_HEXAGON_V6_vgtw_and
+ {Intrinsic::hexagon_V6_vgtw_and_128B, 44759}, // __builtin_HEXAGON_V6_vgtw_and_128B
+ {Intrinsic::hexagon_V6_vgtw_or, 44794}, // __builtin_HEXAGON_V6_vgtw_or
+ {Intrinsic::hexagon_V6_vgtw_or_128B, 44823}, // __builtin_HEXAGON_V6_vgtw_or_128B
+ {Intrinsic::hexagon_V6_vgtw_xor, 44857}, // __builtin_HEXAGON_V6_vgtw_xor
+ {Intrinsic::hexagon_V6_vgtw_xor_128B, 44887}, // __builtin_HEXAGON_V6_vgtw_xor_128B
+ {Intrinsic::hexagon_V6_vinsertwr, 44922}, // __builtin_HEXAGON_V6_vinsertwr
+ {Intrinsic::hexagon_V6_vinsertwr_128B, 44953}, // __builtin_HEXAGON_V6_vinsertwr_128B
+ {Intrinsic::hexagon_V6_vlalignb, 44989}, // __builtin_HEXAGON_V6_vlalignb
+ {Intrinsic::hexagon_V6_vlalignb_128B, 45019}, // __builtin_HEXAGON_V6_vlalignb_128B
+ {Intrinsic::hexagon_V6_vlalignbi, 45054}, // __builtin_HEXAGON_V6_vlalignbi
+ {Intrinsic::hexagon_V6_vlalignbi_128B, 45085}, // __builtin_HEXAGON_V6_vlalignbi_128B
+ {Intrinsic::hexagon_V6_vlsrb, 45121}, // __builtin_HEXAGON_V6_vlsrb
+ {Intrinsic::hexagon_V6_vlsrb_128B, 45148}, // __builtin_HEXAGON_V6_vlsrb_128B
+ {Intrinsic::hexagon_V6_vlsrh, 45180}, // __builtin_HEXAGON_V6_vlsrh
+ {Intrinsic::hexagon_V6_vlsrh_128B, 45207}, // __builtin_HEXAGON_V6_vlsrh_128B
+ {Intrinsic::hexagon_V6_vlsrhv, 45239}, // __builtin_HEXAGON_V6_vlsrhv
+ {Intrinsic::hexagon_V6_vlsrhv_128B, 45267}, // __builtin_HEXAGON_V6_vlsrhv_128B
+ {Intrinsic::hexagon_V6_vlsrw, 45300}, // __builtin_HEXAGON_V6_vlsrw
+ {Intrinsic::hexagon_V6_vlsrw_128B, 45327}, // __builtin_HEXAGON_V6_vlsrw_128B
+ {Intrinsic::hexagon_V6_vlsrwv, 45359}, // __builtin_HEXAGON_V6_vlsrwv
+ {Intrinsic::hexagon_V6_vlsrwv_128B, 45387}, // __builtin_HEXAGON_V6_vlsrwv_128B
+ {Intrinsic::hexagon_V6_vlut4, 45420}, // __builtin_HEXAGON_V6_vlut4
+ {Intrinsic::hexagon_V6_vlut4_128B, 45447}, // __builtin_HEXAGON_V6_vlut4_128B
+ {Intrinsic::hexagon_V6_vlutvvb, 45479}, // __builtin_HEXAGON_V6_vlutvvb
+ {Intrinsic::hexagon_V6_vlutvvb_128B, 45508}, // __builtin_HEXAGON_V6_vlutvvb_128B
+ {Intrinsic::hexagon_V6_vlutvvb_nm, 45542}, // __builtin_HEXAGON_V6_vlutvvb_nm
+ {Intrinsic::hexagon_V6_vlutvvb_nm_128B, 45574}, // __builtin_HEXAGON_V6_vlutvvb_nm_128B
+ {Intrinsic::hexagon_V6_vlutvvb_oracc, 45611}, // __builtin_HEXAGON_V6_vlutvvb_oracc
+ {Intrinsic::hexagon_V6_vlutvvb_oracc_128B, 45646}, // __builtin_HEXAGON_V6_vlutvvb_oracc_128B
+ {Intrinsic::hexagon_V6_vlutvvb_oracci, 45686}, // __builtin_HEXAGON_V6_vlutvvb_oracci
+ {Intrinsic::hexagon_V6_vlutvvb_oracci_128B, 45722}, // __builtin_HEXAGON_V6_vlutvvb_oracci_128B
+ {Intrinsic::hexagon_V6_vlutvvbi, 45763}, // __builtin_HEXAGON_V6_vlutvvbi
+ {Intrinsic::hexagon_V6_vlutvvbi_128B, 45793}, // __builtin_HEXAGON_V6_vlutvvbi_128B
+ {Intrinsic::hexagon_V6_vlutvwh, 45828}, // __builtin_HEXAGON_V6_vlutvwh
+ {Intrinsic::hexagon_V6_vlutvwh_128B, 45857}, // __builtin_HEXAGON_V6_vlutvwh_128B
+ {Intrinsic::hexagon_V6_vlutvwh_nm, 45891}, // __builtin_HEXAGON_V6_vlutvwh_nm
+ {Intrinsic::hexagon_V6_vlutvwh_nm_128B, 45923}, // __builtin_HEXAGON_V6_vlutvwh_nm_128B
+ {Intrinsic::hexagon_V6_vlutvwh_oracc, 45960}, // __builtin_HEXAGON_V6_vlutvwh_oracc
+ {Intrinsic::hexagon_V6_vlutvwh_oracc_128B, 45995}, // __builtin_HEXAGON_V6_vlutvwh_oracc_128B
+ {Intrinsic::hexagon_V6_vlutvwh_oracci, 46035}, // __builtin_HEXAGON_V6_vlutvwh_oracci
+ {Intrinsic::hexagon_V6_vlutvwh_oracci_128B, 46071}, // __builtin_HEXAGON_V6_vlutvwh_oracci_128B
+ {Intrinsic::hexagon_V6_vlutvwhi, 46112}, // __builtin_HEXAGON_V6_vlutvwhi
+ {Intrinsic::hexagon_V6_vlutvwhi_128B, 46142}, // __builtin_HEXAGON_V6_vlutvwhi_128B
+ {Intrinsic::hexagon_V6_vmaskedstorenq, 46177}, // __builtin_HEXAGON_V6_vmaskedstorenq
+ {Intrinsic::hexagon_V6_vmaskedstorenq_128B, 46213}, // __builtin_HEXAGON_V6_vmaskedstorenq_128B
+ {Intrinsic::hexagon_V6_vmaskedstorentnq, 46254}, // __builtin_HEXAGON_V6_vmaskedstorentnq
+ {Intrinsic::hexagon_V6_vmaskedstorentnq_128B, 46292}, // __builtin_HEXAGON_V6_vmaskedstorentnq_128B
+ {Intrinsic::hexagon_V6_vmaskedstorentq, 46335}, // __builtin_HEXAGON_V6_vmaskedstorentq
+ {Intrinsic::hexagon_V6_vmaskedstorentq_128B, 46372}, // __builtin_HEXAGON_V6_vmaskedstorentq_128B
+ {Intrinsic::hexagon_V6_vmaskedstoreq, 46414}, // __builtin_HEXAGON_V6_vmaskedstoreq
+ {Intrinsic::hexagon_V6_vmaskedstoreq_128B, 46449}, // __builtin_HEXAGON_V6_vmaskedstoreq_128B
+ {Intrinsic::hexagon_V6_vmaxb, 46489}, // __builtin_HEXAGON_V6_vmaxb
+ {Intrinsic::hexagon_V6_vmaxb_128B, 46516}, // __builtin_HEXAGON_V6_vmaxb_128B
+ {Intrinsic::hexagon_V6_vmaxh, 46548}, // __builtin_HEXAGON_V6_vmaxh
+ {Intrinsic::hexagon_V6_vmaxh_128B, 46575}, // __builtin_HEXAGON_V6_vmaxh_128B
+ {Intrinsic::hexagon_V6_vmaxub, 46607}, // __builtin_HEXAGON_V6_vmaxub
+ {Intrinsic::hexagon_V6_vmaxub_128B, 46635}, // __builtin_HEXAGON_V6_vmaxub_128B
+ {Intrinsic::hexagon_V6_vmaxuh, 46668}, // __builtin_HEXAGON_V6_vmaxuh
+ {Intrinsic::hexagon_V6_vmaxuh_128B, 46696}, // __builtin_HEXAGON_V6_vmaxuh_128B
+ {Intrinsic::hexagon_V6_vmaxw, 46729}, // __builtin_HEXAGON_V6_vmaxw
+ {Intrinsic::hexagon_V6_vmaxw_128B, 46756}, // __builtin_HEXAGON_V6_vmaxw_128B
+ {Intrinsic::hexagon_V6_vminb, 46788}, // __builtin_HEXAGON_V6_vminb
+ {Intrinsic::hexagon_V6_vminb_128B, 46815}, // __builtin_HEXAGON_V6_vminb_128B
+ {Intrinsic::hexagon_V6_vminh, 46847}, // __builtin_HEXAGON_V6_vminh
+ {Intrinsic::hexagon_V6_vminh_128B, 46874}, // __builtin_HEXAGON_V6_vminh_128B
+ {Intrinsic::hexagon_V6_vminub, 46906}, // __builtin_HEXAGON_V6_vminub
+ {Intrinsic::hexagon_V6_vminub_128B, 46934}, // __builtin_HEXAGON_V6_vminub_128B
+ {Intrinsic::hexagon_V6_vminuh, 46967}, // __builtin_HEXAGON_V6_vminuh
+ {Intrinsic::hexagon_V6_vminuh_128B, 46995}, // __builtin_HEXAGON_V6_vminuh_128B
+ {Intrinsic::hexagon_V6_vminw, 47028}, // __builtin_HEXAGON_V6_vminw
+ {Intrinsic::hexagon_V6_vminw_128B, 47055}, // __builtin_HEXAGON_V6_vminw_128B
+ {Intrinsic::hexagon_V6_vmpabus, 47087}, // __builtin_HEXAGON_V6_vmpabus
+ {Intrinsic::hexagon_V6_vmpabus_128B, 47116}, // __builtin_HEXAGON_V6_vmpabus_128B
+ {Intrinsic::hexagon_V6_vmpabus_acc, 47150}, // __builtin_HEXAGON_V6_vmpabus_acc
+ {Intrinsic::hexagon_V6_vmpabus_acc_128B, 47183}, // __builtin_HEXAGON_V6_vmpabus_acc_128B
+ {Intrinsic::hexagon_V6_vmpabusv, 47221}, // __builtin_HEXAGON_V6_vmpabusv
+ {Intrinsic::hexagon_V6_vmpabusv_128B, 47251}, // __builtin_HEXAGON_V6_vmpabusv_128B
+ {Intrinsic::hexagon_V6_vmpabuu, 47286}, // __builtin_HEXAGON_V6_vmpabuu
+ {Intrinsic::hexagon_V6_vmpabuu_128B, 47315}, // __builtin_HEXAGON_V6_vmpabuu_128B
+ {Intrinsic::hexagon_V6_vmpabuu_acc, 47349}, // __builtin_HEXAGON_V6_vmpabuu_acc
+ {Intrinsic::hexagon_V6_vmpabuu_acc_128B, 47382}, // __builtin_HEXAGON_V6_vmpabuu_acc_128B
+ {Intrinsic::hexagon_V6_vmpabuuv, 47420}, // __builtin_HEXAGON_V6_vmpabuuv
+ {Intrinsic::hexagon_V6_vmpabuuv_128B, 47450}, // __builtin_HEXAGON_V6_vmpabuuv_128B
+ {Intrinsic::hexagon_V6_vmpahb, 47485}, // __builtin_HEXAGON_V6_vmpahb
+ {Intrinsic::hexagon_V6_vmpahb_128B, 47513}, // __builtin_HEXAGON_V6_vmpahb_128B
+ {Intrinsic::hexagon_V6_vmpahb_acc, 47546}, // __builtin_HEXAGON_V6_vmpahb_acc
+ {Intrinsic::hexagon_V6_vmpahb_acc_128B, 47578}, // __builtin_HEXAGON_V6_vmpahb_acc_128B
+ {Intrinsic::hexagon_V6_vmpahhsat, 47615}, // __builtin_HEXAGON_V6_vmpahhsat
+ {Intrinsic::hexagon_V6_vmpahhsat_128B, 47646}, // __builtin_HEXAGON_V6_vmpahhsat_128B
+ {Intrinsic::hexagon_V6_vmpauhb, 47682}, // __builtin_HEXAGON_V6_vmpauhb
+ {Intrinsic::hexagon_V6_vmpauhb_128B, 47711}, // __builtin_HEXAGON_V6_vmpauhb_128B
+ {Intrinsic::hexagon_V6_vmpauhb_acc, 47745}, // __builtin_HEXAGON_V6_vmpauhb_acc
+ {Intrinsic::hexagon_V6_vmpauhb_acc_128B, 47778}, // __builtin_HEXAGON_V6_vmpauhb_acc_128B
+ {Intrinsic::hexagon_V6_vmpauhuhsat, 47816}, // __builtin_HEXAGON_V6_vmpauhuhsat
+ {Intrinsic::hexagon_V6_vmpauhuhsat_128B, 47849}, // __builtin_HEXAGON_V6_vmpauhuhsat_128B
+ {Intrinsic::hexagon_V6_vmpsuhuhsat, 47887}, // __builtin_HEXAGON_V6_vmpsuhuhsat
+ {Intrinsic::hexagon_V6_vmpsuhuhsat_128B, 47920}, // __builtin_HEXAGON_V6_vmpsuhuhsat_128B
+ {Intrinsic::hexagon_V6_vmpybus, 47958}, // __builtin_HEXAGON_V6_vmpybus
+ {Intrinsic::hexagon_V6_vmpybus_128B, 47987}, // __builtin_HEXAGON_V6_vmpybus_128B
+ {Intrinsic::hexagon_V6_vmpybus_acc, 48021}, // __builtin_HEXAGON_V6_vmpybus_acc
+ {Intrinsic::hexagon_V6_vmpybus_acc_128B, 48054}, // __builtin_HEXAGON_V6_vmpybus_acc_128B
+ {Intrinsic::hexagon_V6_vmpybusv, 48092}, // __builtin_HEXAGON_V6_vmpybusv
+ {Intrinsic::hexagon_V6_vmpybusv_128B, 48122}, // __builtin_HEXAGON_V6_vmpybusv_128B
+ {Intrinsic::hexagon_V6_vmpybusv_acc, 48157}, // __builtin_HEXAGON_V6_vmpybusv_acc
+ {Intrinsic::hexagon_V6_vmpybusv_acc_128B, 48191}, // __builtin_HEXAGON_V6_vmpybusv_acc_128B
+ {Intrinsic::hexagon_V6_vmpybv, 48230}, // __builtin_HEXAGON_V6_vmpybv
+ {Intrinsic::hexagon_V6_vmpybv_128B, 48258}, // __builtin_HEXAGON_V6_vmpybv_128B
+ {Intrinsic::hexagon_V6_vmpybv_acc, 48291}, // __builtin_HEXAGON_V6_vmpybv_acc
+ {Intrinsic::hexagon_V6_vmpybv_acc_128B, 48323}, // __builtin_HEXAGON_V6_vmpybv_acc_128B
+ {Intrinsic::hexagon_V6_vmpyewuh, 48360}, // __builtin_HEXAGON_V6_vmpyewuh
+ {Intrinsic::hexagon_V6_vmpyewuh_128B, 48390}, // __builtin_HEXAGON_V6_vmpyewuh_128B
+ {Intrinsic::hexagon_V6_vmpyewuh_64, 48425}, // __builtin_HEXAGON_V6_vmpyewuh_64
+ {Intrinsic::hexagon_V6_vmpyewuh_64_128B, 48458}, // __builtin_HEXAGON_V6_vmpyewuh_64_128B
+ {Intrinsic::hexagon_V6_vmpyh, 48496}, // __builtin_HEXAGON_V6_vmpyh
+ {Intrinsic::hexagon_V6_vmpyh_128B, 48523}, // __builtin_HEXAGON_V6_vmpyh_128B
+ {Intrinsic::hexagon_V6_vmpyh_acc, 48555}, // __builtin_HEXAGON_V6_vmpyh_acc
+ {Intrinsic::hexagon_V6_vmpyh_acc_128B, 48586}, // __builtin_HEXAGON_V6_vmpyh_acc_128B
+ {Intrinsic::hexagon_V6_vmpyhsat_acc, 48622}, // __builtin_HEXAGON_V6_vmpyhsat_acc
+ {Intrinsic::hexagon_V6_vmpyhsat_acc_128B, 48656}, // __builtin_HEXAGON_V6_vmpyhsat_acc_128B
+ {Intrinsic::hexagon_V6_vmpyhsrs, 48695}, // __builtin_HEXAGON_V6_vmpyhsrs
+ {Intrinsic::hexagon_V6_vmpyhsrs_128B, 48725}, // __builtin_HEXAGON_V6_vmpyhsrs_128B
+ {Intrinsic::hexagon_V6_vmpyhss, 48760}, // __builtin_HEXAGON_V6_vmpyhss
+ {Intrinsic::hexagon_V6_vmpyhss_128B, 48789}, // __builtin_HEXAGON_V6_vmpyhss_128B
+ {Intrinsic::hexagon_V6_vmpyhus, 48823}, // __builtin_HEXAGON_V6_vmpyhus
+ {Intrinsic::hexagon_V6_vmpyhus_128B, 48852}, // __builtin_HEXAGON_V6_vmpyhus_128B
+ {Intrinsic::hexagon_V6_vmpyhus_acc, 48886}, // __builtin_HEXAGON_V6_vmpyhus_acc
+ {Intrinsic::hexagon_V6_vmpyhus_acc_128B, 48919}, // __builtin_HEXAGON_V6_vmpyhus_acc_128B
+ {Intrinsic::hexagon_V6_vmpyhv, 48957}, // __builtin_HEXAGON_V6_vmpyhv
+ {Intrinsic::hexagon_V6_vmpyhv_128B, 48985}, // __builtin_HEXAGON_V6_vmpyhv_128B
+ {Intrinsic::hexagon_V6_vmpyhv_acc, 49018}, // __builtin_HEXAGON_V6_vmpyhv_acc
+ {Intrinsic::hexagon_V6_vmpyhv_acc_128B, 49050}, // __builtin_HEXAGON_V6_vmpyhv_acc_128B
+ {Intrinsic::hexagon_V6_vmpyhvsrs, 49087}, // __builtin_HEXAGON_V6_vmpyhvsrs
+ {Intrinsic::hexagon_V6_vmpyhvsrs_128B, 49118}, // __builtin_HEXAGON_V6_vmpyhvsrs_128B
+ {Intrinsic::hexagon_V6_vmpyieoh, 49154}, // __builtin_HEXAGON_V6_vmpyieoh
+ {Intrinsic::hexagon_V6_vmpyieoh_128B, 49184}, // __builtin_HEXAGON_V6_vmpyieoh_128B
+ {Intrinsic::hexagon_V6_vmpyiewh_acc, 49219}, // __builtin_HEXAGON_V6_vmpyiewh_acc
+ {Intrinsic::hexagon_V6_vmpyiewh_acc_128B, 49253}, // __builtin_HEXAGON_V6_vmpyiewh_acc_128B
+ {Intrinsic::hexagon_V6_vmpyiewuh, 49292}, // __builtin_HEXAGON_V6_vmpyiewuh
+ {Intrinsic::hexagon_V6_vmpyiewuh_128B, 49323}, // __builtin_HEXAGON_V6_vmpyiewuh_128B
+ {Intrinsic::hexagon_V6_vmpyiewuh_acc, 49359}, // __builtin_HEXAGON_V6_vmpyiewuh_acc
+ {Intrinsic::hexagon_V6_vmpyiewuh_acc_128B, 49394}, // __builtin_HEXAGON_V6_vmpyiewuh_acc_128B
+ {Intrinsic::hexagon_V6_vmpyih, 49434}, // __builtin_HEXAGON_V6_vmpyih
+ {Intrinsic::hexagon_V6_vmpyih_128B, 49462}, // __builtin_HEXAGON_V6_vmpyih_128B
+ {Intrinsic::hexagon_V6_vmpyih_acc, 49495}, // __builtin_HEXAGON_V6_vmpyih_acc
+ {Intrinsic::hexagon_V6_vmpyih_acc_128B, 49527}, // __builtin_HEXAGON_V6_vmpyih_acc_128B
+ {Intrinsic::hexagon_V6_vmpyihb, 49564}, // __builtin_HEXAGON_V6_vmpyihb
+ {Intrinsic::hexagon_V6_vmpyihb_128B, 49593}, // __builtin_HEXAGON_V6_vmpyihb_128B
+ {Intrinsic::hexagon_V6_vmpyihb_acc, 49627}, // __builtin_HEXAGON_V6_vmpyihb_acc
+ {Intrinsic::hexagon_V6_vmpyihb_acc_128B, 49660}, // __builtin_HEXAGON_V6_vmpyihb_acc_128B
+ {Intrinsic::hexagon_V6_vmpyiowh, 49698}, // __builtin_HEXAGON_V6_vmpyiowh
+ {Intrinsic::hexagon_V6_vmpyiowh_128B, 49728}, // __builtin_HEXAGON_V6_vmpyiowh_128B
+ {Intrinsic::hexagon_V6_vmpyiwb, 49763}, // __builtin_HEXAGON_V6_vmpyiwb
+ {Intrinsic::hexagon_V6_vmpyiwb_128B, 49792}, // __builtin_HEXAGON_V6_vmpyiwb_128B
+ {Intrinsic::hexagon_V6_vmpyiwb_acc, 49826}, // __builtin_HEXAGON_V6_vmpyiwb_acc
+ {Intrinsic::hexagon_V6_vmpyiwb_acc_128B, 49859}, // __builtin_HEXAGON_V6_vmpyiwb_acc_128B
+ {Intrinsic::hexagon_V6_vmpyiwh, 49897}, // __builtin_HEXAGON_V6_vmpyiwh
+ {Intrinsic::hexagon_V6_vmpyiwh_128B, 49926}, // __builtin_HEXAGON_V6_vmpyiwh_128B
+ {Intrinsic::hexagon_V6_vmpyiwh_acc, 49960}, // __builtin_HEXAGON_V6_vmpyiwh_acc
+ {Intrinsic::hexagon_V6_vmpyiwh_acc_128B, 49993}, // __builtin_HEXAGON_V6_vmpyiwh_acc_128B
+ {Intrinsic::hexagon_V6_vmpyiwub, 50031}, // __builtin_HEXAGON_V6_vmpyiwub
+ {Intrinsic::hexagon_V6_vmpyiwub_128B, 50061}, // __builtin_HEXAGON_V6_vmpyiwub_128B
+ {Intrinsic::hexagon_V6_vmpyiwub_acc, 50096}, // __builtin_HEXAGON_V6_vmpyiwub_acc
+ {Intrinsic::hexagon_V6_vmpyiwub_acc_128B, 50130}, // __builtin_HEXAGON_V6_vmpyiwub_acc_128B
+ {Intrinsic::hexagon_V6_vmpyowh, 50169}, // __builtin_HEXAGON_V6_vmpyowh
+ {Intrinsic::hexagon_V6_vmpyowh_128B, 50198}, // __builtin_HEXAGON_V6_vmpyowh_128B
+ {Intrinsic::hexagon_V6_vmpyowh_64_acc, 50232}, // __builtin_HEXAGON_V6_vmpyowh_64_acc
+ {Intrinsic::hexagon_V6_vmpyowh_64_acc_128B, 50268}, // __builtin_HEXAGON_V6_vmpyowh_64_acc_128B
+ {Intrinsic::hexagon_V6_vmpyowh_rnd, 50309}, // __builtin_HEXAGON_V6_vmpyowh_rnd
+ {Intrinsic::hexagon_V6_vmpyowh_rnd_128B, 50342}, // __builtin_HEXAGON_V6_vmpyowh_rnd_128B
+ {Intrinsic::hexagon_V6_vmpyowh_rnd_sacc, 50380}, // __builtin_HEXAGON_V6_vmpyowh_rnd_sacc
+ {Intrinsic::hexagon_V6_vmpyowh_rnd_sacc_128B, 50418}, // __builtin_HEXAGON_V6_vmpyowh_rnd_sacc_128B
+ {Intrinsic::hexagon_V6_vmpyowh_sacc, 50461}, // __builtin_HEXAGON_V6_vmpyowh_sacc
+ {Intrinsic::hexagon_V6_vmpyowh_sacc_128B, 50495}, // __builtin_HEXAGON_V6_vmpyowh_sacc_128B
+ {Intrinsic::hexagon_V6_vmpyub, 50534}, // __builtin_HEXAGON_V6_vmpyub
+ {Intrinsic::hexagon_V6_vmpyub_128B, 50562}, // __builtin_HEXAGON_V6_vmpyub_128B
+ {Intrinsic::hexagon_V6_vmpyub_acc, 50595}, // __builtin_HEXAGON_V6_vmpyub_acc
+ {Intrinsic::hexagon_V6_vmpyub_acc_128B, 50627}, // __builtin_HEXAGON_V6_vmpyub_acc_128B
+ {Intrinsic::hexagon_V6_vmpyubv, 50664}, // __builtin_HEXAGON_V6_vmpyubv
+ {Intrinsic::hexagon_V6_vmpyubv_128B, 50693}, // __builtin_HEXAGON_V6_vmpyubv_128B
+ {Intrinsic::hexagon_V6_vmpyubv_acc, 50727}, // __builtin_HEXAGON_V6_vmpyubv_acc
+ {Intrinsic::hexagon_V6_vmpyubv_acc_128B, 50760}, // __builtin_HEXAGON_V6_vmpyubv_acc_128B
+ {Intrinsic::hexagon_V6_vmpyuh, 50798}, // __builtin_HEXAGON_V6_vmpyuh
+ {Intrinsic::hexagon_V6_vmpyuh_128B, 50826}, // __builtin_HEXAGON_V6_vmpyuh_128B
+ {Intrinsic::hexagon_V6_vmpyuh_acc, 50859}, // __builtin_HEXAGON_V6_vmpyuh_acc
+ {Intrinsic::hexagon_V6_vmpyuh_acc_128B, 50891}, // __builtin_HEXAGON_V6_vmpyuh_acc_128B
+ {Intrinsic::hexagon_V6_vmpyuhe, 50928}, // __builtin_HEXAGON_V6_vmpyuhe
+ {Intrinsic::hexagon_V6_vmpyuhe_128B, 50957}, // __builtin_HEXAGON_V6_vmpyuhe_128B
+ {Intrinsic::hexagon_V6_vmpyuhe_acc, 50991}, // __builtin_HEXAGON_V6_vmpyuhe_acc
+ {Intrinsic::hexagon_V6_vmpyuhe_acc_128B, 51024}, // __builtin_HEXAGON_V6_vmpyuhe_acc_128B
+ {Intrinsic::hexagon_V6_vmpyuhv, 51062}, // __builtin_HEXAGON_V6_vmpyuhv
+ {Intrinsic::hexagon_V6_vmpyuhv_128B, 51091}, // __builtin_HEXAGON_V6_vmpyuhv_128B
+ {Intrinsic::hexagon_V6_vmpyuhv_acc, 51125}, // __builtin_HEXAGON_V6_vmpyuhv_acc
+ {Intrinsic::hexagon_V6_vmpyuhv_acc_128B, 51158}, // __builtin_HEXAGON_V6_vmpyuhv_acc_128B
+ {Intrinsic::hexagon_V6_vmux, 51196}, // __builtin_HEXAGON_V6_vmux
+ {Intrinsic::hexagon_V6_vmux_128B, 51222}, // __builtin_HEXAGON_V6_vmux_128B
+ {Intrinsic::hexagon_V6_vnavgb, 51253}, // __builtin_HEXAGON_V6_vnavgb
+ {Intrinsic::hexagon_V6_vnavgb_128B, 51281}, // __builtin_HEXAGON_V6_vnavgb_128B
+ {Intrinsic::hexagon_V6_vnavgh, 51314}, // __builtin_HEXAGON_V6_vnavgh
+ {Intrinsic::hexagon_V6_vnavgh_128B, 51342}, // __builtin_HEXAGON_V6_vnavgh_128B
+ {Intrinsic::hexagon_V6_vnavgub, 51375}, // __builtin_HEXAGON_V6_vnavgub
+ {Intrinsic::hexagon_V6_vnavgub_128B, 51404}, // __builtin_HEXAGON_V6_vnavgub_128B
+ {Intrinsic::hexagon_V6_vnavgw, 51438}, // __builtin_HEXAGON_V6_vnavgw
+ {Intrinsic::hexagon_V6_vnavgw_128B, 51466}, // __builtin_HEXAGON_V6_vnavgw_128B
+ {Intrinsic::hexagon_V6_vnormamth, 51499}, // __builtin_HEXAGON_V6_vnormamth
+ {Intrinsic::hexagon_V6_vnormamth_128B, 51530}, // __builtin_HEXAGON_V6_vnormamth_128B
+ {Intrinsic::hexagon_V6_vnormamtw, 51566}, // __builtin_HEXAGON_V6_vnormamtw
+ {Intrinsic::hexagon_V6_vnormamtw_128B, 51597}, // __builtin_HEXAGON_V6_vnormamtw_128B
+ {Intrinsic::hexagon_V6_vnot, 51633}, // __builtin_HEXAGON_V6_vnot
+ {Intrinsic::hexagon_V6_vnot_128B, 51659}, // __builtin_HEXAGON_V6_vnot_128B
+ {Intrinsic::hexagon_V6_vor, 51690}, // __builtin_HEXAGON_V6_vor
+ {Intrinsic::hexagon_V6_vor_128B, 51715}, // __builtin_HEXAGON_V6_vor_128B
+ {Intrinsic::hexagon_V6_vpackeb, 51745}, // __builtin_HEXAGON_V6_vpackeb
+ {Intrinsic::hexagon_V6_vpackeb_128B, 51774}, // __builtin_HEXAGON_V6_vpackeb_128B
+ {Intrinsic::hexagon_V6_vpackeh, 51808}, // __builtin_HEXAGON_V6_vpackeh
+ {Intrinsic::hexagon_V6_vpackeh_128B, 51837}, // __builtin_HEXAGON_V6_vpackeh_128B
+ {Intrinsic::hexagon_V6_vpackhb_sat, 51871}, // __builtin_HEXAGON_V6_vpackhb_sat
+ {Intrinsic::hexagon_V6_vpackhb_sat_128B, 51904}, // __builtin_HEXAGON_V6_vpackhb_sat_128B
+ {Intrinsic::hexagon_V6_vpackhub_sat, 51942}, // __builtin_HEXAGON_V6_vpackhub_sat
+ {Intrinsic::hexagon_V6_vpackhub_sat_128B, 51976}, // __builtin_HEXAGON_V6_vpackhub_sat_128B
+ {Intrinsic::hexagon_V6_vpackob, 52015}, // __builtin_HEXAGON_V6_vpackob
+ {Intrinsic::hexagon_V6_vpackob_128B, 52044}, // __builtin_HEXAGON_V6_vpackob_128B
+ {Intrinsic::hexagon_V6_vpackoh, 52078}, // __builtin_HEXAGON_V6_vpackoh
+ {Intrinsic::hexagon_V6_vpackoh_128B, 52107}, // __builtin_HEXAGON_V6_vpackoh_128B
+ {Intrinsic::hexagon_V6_vpackwh_sat, 52141}, // __builtin_HEXAGON_V6_vpackwh_sat
+ {Intrinsic::hexagon_V6_vpackwh_sat_128B, 52174}, // __builtin_HEXAGON_V6_vpackwh_sat_128B
+ {Intrinsic::hexagon_V6_vpackwuh_sat, 52212}, // __builtin_HEXAGON_V6_vpackwuh_sat
+ {Intrinsic::hexagon_V6_vpackwuh_sat_128B, 52246}, // __builtin_HEXAGON_V6_vpackwuh_sat_128B
+ {Intrinsic::hexagon_V6_vpopcounth, 52285}, // __builtin_HEXAGON_V6_vpopcounth
+ {Intrinsic::hexagon_V6_vpopcounth_128B, 52317}, // __builtin_HEXAGON_V6_vpopcounth_128B
+ {Intrinsic::hexagon_V6_vprefixqb, 52354}, // __builtin_HEXAGON_V6_vprefixqb
+ {Intrinsic::hexagon_V6_vprefixqb_128B, 52385}, // __builtin_HEXAGON_V6_vprefixqb_128B
+ {Intrinsic::hexagon_V6_vprefixqh, 52421}, // __builtin_HEXAGON_V6_vprefixqh
+ {Intrinsic::hexagon_V6_vprefixqh_128B, 52452}, // __builtin_HEXAGON_V6_vprefixqh_128B
+ {Intrinsic::hexagon_V6_vprefixqw, 52488}, // __builtin_HEXAGON_V6_vprefixqw
+ {Intrinsic::hexagon_V6_vprefixqw_128B, 52519}, // __builtin_HEXAGON_V6_vprefixqw_128B
+ {Intrinsic::hexagon_V6_vrdelta, 52555}, // __builtin_HEXAGON_V6_vrdelta
+ {Intrinsic::hexagon_V6_vrdelta_128B, 52584}, // __builtin_HEXAGON_V6_vrdelta_128B
+ {Intrinsic::hexagon_V6_vrmpybub_rtt, 52618}, // __builtin_HEXAGON_V6_vrmpybub_rtt
+ {Intrinsic::hexagon_V6_vrmpybub_rtt_128B, 52652}, // __builtin_HEXAGON_V6_vrmpybub_rtt_128B
+ {Intrinsic::hexagon_V6_vrmpybub_rtt_acc, 52691}, // __builtin_HEXAGON_V6_vrmpybub_rtt_acc
+ {Intrinsic::hexagon_V6_vrmpybub_rtt_acc_128B, 52729}, // __builtin_HEXAGON_V6_vrmpybub_rtt_acc_128B
+ {Intrinsic::hexagon_V6_vrmpybus, 52772}, // __builtin_HEXAGON_V6_vrmpybus
+ {Intrinsic::hexagon_V6_vrmpybus_128B, 52802}, // __builtin_HEXAGON_V6_vrmpybus_128B
+ {Intrinsic::hexagon_V6_vrmpybus_acc, 52837}, // __builtin_HEXAGON_V6_vrmpybus_acc
+ {Intrinsic::hexagon_V6_vrmpybus_acc_128B, 52871}, // __builtin_HEXAGON_V6_vrmpybus_acc_128B
+ {Intrinsic::hexagon_V6_vrmpybusi, 52910}, // __builtin_HEXAGON_V6_vrmpybusi
+ {Intrinsic::hexagon_V6_vrmpybusi_128B, 52941}, // __builtin_HEXAGON_V6_vrmpybusi_128B
+ {Intrinsic::hexagon_V6_vrmpybusi_acc, 52977}, // __builtin_HEXAGON_V6_vrmpybusi_acc
+ {Intrinsic::hexagon_V6_vrmpybusi_acc_128B, 53012}, // __builtin_HEXAGON_V6_vrmpybusi_acc_128B
+ {Intrinsic::hexagon_V6_vrmpybusv, 53052}, // __builtin_HEXAGON_V6_vrmpybusv
+ {Intrinsic::hexagon_V6_vrmpybusv_128B, 53083}, // __builtin_HEXAGON_V6_vrmpybusv_128B
+ {Intrinsic::hexagon_V6_vrmpybusv_acc, 53119}, // __builtin_HEXAGON_V6_vrmpybusv_acc
+ {Intrinsic::hexagon_V6_vrmpybusv_acc_128B, 53154}, // __builtin_HEXAGON_V6_vrmpybusv_acc_128B
+ {Intrinsic::hexagon_V6_vrmpybv, 53194}, // __builtin_HEXAGON_V6_vrmpybv
+ {Intrinsic::hexagon_V6_vrmpybv_128B, 53223}, // __builtin_HEXAGON_V6_vrmpybv_128B
+ {Intrinsic::hexagon_V6_vrmpybv_acc, 53257}, // __builtin_HEXAGON_V6_vrmpybv_acc
+ {Intrinsic::hexagon_V6_vrmpybv_acc_128B, 53290}, // __builtin_HEXAGON_V6_vrmpybv_acc_128B
+ {Intrinsic::hexagon_V6_vrmpyub, 53328}, // __builtin_HEXAGON_V6_vrmpyub
+ {Intrinsic::hexagon_V6_vrmpyub_128B, 53357}, // __builtin_HEXAGON_V6_vrmpyub_128B
+ {Intrinsic::hexagon_V6_vrmpyub_acc, 53391}, // __builtin_HEXAGON_V6_vrmpyub_acc
+ {Intrinsic::hexagon_V6_vrmpyub_acc_128B, 53424}, // __builtin_HEXAGON_V6_vrmpyub_acc_128B
+ {Intrinsic::hexagon_V6_vrmpyub_rtt, 53462}, // __builtin_HEXAGON_V6_vrmpyub_rtt
+ {Intrinsic::hexagon_V6_vrmpyub_rtt_128B, 53495}, // __builtin_HEXAGON_V6_vrmpyub_rtt_128B
+ {Intrinsic::hexagon_V6_vrmpyub_rtt_acc, 53533}, // __builtin_HEXAGON_V6_vrmpyub_rtt_acc
+ {Intrinsic::hexagon_V6_vrmpyub_rtt_acc_128B, 53570}, // __builtin_HEXAGON_V6_vrmpyub_rtt_acc_128B
+ {Intrinsic::hexagon_V6_vrmpyubi, 53612}, // __builtin_HEXAGON_V6_vrmpyubi
+ {Intrinsic::hexagon_V6_vrmpyubi_128B, 53642}, // __builtin_HEXAGON_V6_vrmpyubi_128B
+ {Intrinsic::hexagon_V6_vrmpyubi_acc, 53677}, // __builtin_HEXAGON_V6_vrmpyubi_acc
+ {Intrinsic::hexagon_V6_vrmpyubi_acc_128B, 53711}, // __builtin_HEXAGON_V6_vrmpyubi_acc_128B
+ {Intrinsic::hexagon_V6_vrmpyubv, 53750}, // __builtin_HEXAGON_V6_vrmpyubv
+ {Intrinsic::hexagon_V6_vrmpyubv_128B, 53780}, // __builtin_HEXAGON_V6_vrmpyubv_128B
+ {Intrinsic::hexagon_V6_vrmpyubv_acc, 53815}, // __builtin_HEXAGON_V6_vrmpyubv_acc
+ {Intrinsic::hexagon_V6_vrmpyubv_acc_128B, 53849}, // __builtin_HEXAGON_V6_vrmpyubv_acc_128B
+ {Intrinsic::hexagon_V6_vror, 53888}, // __builtin_HEXAGON_V6_vror
+ {Intrinsic::hexagon_V6_vror_128B, 53914}, // __builtin_HEXAGON_V6_vror_128B
+ {Intrinsic::hexagon_V6_vrotr, 53945}, // __builtin_HEXAGON_V6_vrotr
+ {Intrinsic::hexagon_V6_vrotr_128B, 53972}, // __builtin_HEXAGON_V6_vrotr_128B
+ {Intrinsic::hexagon_V6_vroundhb, 54004}, // __builtin_HEXAGON_V6_vroundhb
+ {Intrinsic::hexagon_V6_vroundhb_128B, 54034}, // __builtin_HEXAGON_V6_vroundhb_128B
+ {Intrinsic::hexagon_V6_vroundhub, 54069}, // __builtin_HEXAGON_V6_vroundhub
+ {Intrinsic::hexagon_V6_vroundhub_128B, 54100}, // __builtin_HEXAGON_V6_vroundhub_128B
+ {Intrinsic::hexagon_V6_vrounduhub, 54136}, // __builtin_HEXAGON_V6_vrounduhub
+ {Intrinsic::hexagon_V6_vrounduhub_128B, 54168}, // __builtin_HEXAGON_V6_vrounduhub_128B
+ {Intrinsic::hexagon_V6_vrounduwuh, 54205}, // __builtin_HEXAGON_V6_vrounduwuh
+ {Intrinsic::hexagon_V6_vrounduwuh_128B, 54237}, // __builtin_HEXAGON_V6_vrounduwuh_128B
+ {Intrinsic::hexagon_V6_vroundwh, 54274}, // __builtin_HEXAGON_V6_vroundwh
+ {Intrinsic::hexagon_V6_vroundwh_128B, 54304}, // __builtin_HEXAGON_V6_vroundwh_128B
+ {Intrinsic::hexagon_V6_vroundwuh, 54339}, // __builtin_HEXAGON_V6_vroundwuh
+ {Intrinsic::hexagon_V6_vroundwuh_128B, 54370}, // __builtin_HEXAGON_V6_vroundwuh_128B
+ {Intrinsic::hexagon_V6_vrsadubi, 54406}, // __builtin_HEXAGON_V6_vrsadubi
+ {Intrinsic::hexagon_V6_vrsadubi_128B, 54436}, // __builtin_HEXAGON_V6_vrsadubi_128B
+ {Intrinsic::hexagon_V6_vrsadubi_acc, 54471}, // __builtin_HEXAGON_V6_vrsadubi_acc
+ {Intrinsic::hexagon_V6_vrsadubi_acc_128B, 54505}, // __builtin_HEXAGON_V6_vrsadubi_acc_128B
+ {Intrinsic::hexagon_V6_vsatdw, 54544}, // __builtin_HEXAGON_V6_vsatdw
+ {Intrinsic::hexagon_V6_vsatdw_128B, 54572}, // __builtin_HEXAGON_V6_vsatdw_128B
+ {Intrinsic::hexagon_V6_vsathub, 54605}, // __builtin_HEXAGON_V6_vsathub
+ {Intrinsic::hexagon_V6_vsathub_128B, 54634}, // __builtin_HEXAGON_V6_vsathub_128B
+ {Intrinsic::hexagon_V6_vsatuwuh, 54668}, // __builtin_HEXAGON_V6_vsatuwuh
+ {Intrinsic::hexagon_V6_vsatuwuh_128B, 54698}, // __builtin_HEXAGON_V6_vsatuwuh_128B
+ {Intrinsic::hexagon_V6_vsatwh, 54733}, // __builtin_HEXAGON_V6_vsatwh
+ {Intrinsic::hexagon_V6_vsatwh_128B, 54761}, // __builtin_HEXAGON_V6_vsatwh_128B
+ {Intrinsic::hexagon_V6_vsb, 54794}, // __builtin_HEXAGON_V6_vsb
+ {Intrinsic::hexagon_V6_vsb_128B, 54819}, // __builtin_HEXAGON_V6_vsb_128B
+ {Intrinsic::hexagon_V6_vscattermh, 54849}, // __builtin_HEXAGON_V6_vscattermh
+ {Intrinsic::hexagon_V6_vscattermh_128B, 54881}, // __builtin_HEXAGON_V6_vscattermh_128B
+ {Intrinsic::hexagon_V6_vscattermh_add, 54918}, // __builtin_HEXAGON_V6_vscattermh_add
+ {Intrinsic::hexagon_V6_vscattermh_add_128B, 54954}, // __builtin_HEXAGON_V6_vscattermh_add_128B
+ {Intrinsic::hexagon_V6_vscattermhq, 54995}, // __builtin_HEXAGON_V6_vscattermhq
+ {Intrinsic::hexagon_V6_vscattermhq_128B, 55028}, // __builtin_HEXAGON_V6_vscattermhq_128B
+ {Intrinsic::hexagon_V6_vscattermhw, 55066}, // __builtin_HEXAGON_V6_vscattermhw
+ {Intrinsic::hexagon_V6_vscattermhw_128B, 55099}, // __builtin_HEXAGON_V6_vscattermhw_128B
+ {Intrinsic::hexagon_V6_vscattermhw_add, 55137}, // __builtin_HEXAGON_V6_vscattermhw_add
+ {Intrinsic::hexagon_V6_vscattermhw_add_128B, 55174}, // __builtin_HEXAGON_V6_vscattermhw_add_128B
+ {Intrinsic::hexagon_V6_vscattermhwq, 55216}, // __builtin_HEXAGON_V6_vscattermhwq
+ {Intrinsic::hexagon_V6_vscattermhwq_128B, 55250}, // __builtin_HEXAGON_V6_vscattermhwq_128B
+ {Intrinsic::hexagon_V6_vscattermw, 55289}, // __builtin_HEXAGON_V6_vscattermw
+ {Intrinsic::hexagon_V6_vscattermw_128B, 55321}, // __builtin_HEXAGON_V6_vscattermw_128B
+ {Intrinsic::hexagon_V6_vscattermw_add, 55358}, // __builtin_HEXAGON_V6_vscattermw_add
+ {Intrinsic::hexagon_V6_vscattermw_add_128B, 55394}, // __builtin_HEXAGON_V6_vscattermw_add_128B
+ {Intrinsic::hexagon_V6_vscattermwq, 55435}, // __builtin_HEXAGON_V6_vscattermwq
+ {Intrinsic::hexagon_V6_vscattermwq_128B, 55468}, // __builtin_HEXAGON_V6_vscattermwq_128B
+ {Intrinsic::hexagon_V6_vsh, 55506}, // __builtin_HEXAGON_V6_vsh
+ {Intrinsic::hexagon_V6_vsh_128B, 55531}, // __builtin_HEXAGON_V6_vsh_128B
+ {Intrinsic::hexagon_V6_vshufeh, 55561}, // __builtin_HEXAGON_V6_vshufeh
+ {Intrinsic::hexagon_V6_vshufeh_128B, 55590}, // __builtin_HEXAGON_V6_vshufeh_128B
+ {Intrinsic::hexagon_V6_vshuffb, 55624}, // __builtin_HEXAGON_V6_vshuffb
+ {Intrinsic::hexagon_V6_vshuffb_128B, 55653}, // __builtin_HEXAGON_V6_vshuffb_128B
+ {Intrinsic::hexagon_V6_vshuffeb, 55687}, // __builtin_HEXAGON_V6_vshuffeb
+ {Intrinsic::hexagon_V6_vshuffeb_128B, 55717}, // __builtin_HEXAGON_V6_vshuffeb_128B
+ {Intrinsic::hexagon_V6_vshuffh, 55752}, // __builtin_HEXAGON_V6_vshuffh
+ {Intrinsic::hexagon_V6_vshuffh_128B, 55781}, // __builtin_HEXAGON_V6_vshuffh_128B
+ {Intrinsic::hexagon_V6_vshuffob, 55815}, // __builtin_HEXAGON_V6_vshuffob
+ {Intrinsic::hexagon_V6_vshuffob_128B, 55845}, // __builtin_HEXAGON_V6_vshuffob_128B
+ {Intrinsic::hexagon_V6_vshuffvdd, 55880}, // __builtin_HEXAGON_V6_vshuffvdd
+ {Intrinsic::hexagon_V6_vshuffvdd_128B, 55911}, // __builtin_HEXAGON_V6_vshuffvdd_128B
+ {Intrinsic::hexagon_V6_vshufoeb, 55947}, // __builtin_HEXAGON_V6_vshufoeb
+ {Intrinsic::hexagon_V6_vshufoeb_128B, 55977}, // __builtin_HEXAGON_V6_vshufoeb_128B
+ {Intrinsic::hexagon_V6_vshufoeh, 56012}, // __builtin_HEXAGON_V6_vshufoeh
+ {Intrinsic::hexagon_V6_vshufoeh_128B, 56042}, // __builtin_HEXAGON_V6_vshufoeh_128B
+ {Intrinsic::hexagon_V6_vshufoh, 56077}, // __builtin_HEXAGON_V6_vshufoh
+ {Intrinsic::hexagon_V6_vshufoh_128B, 56106}, // __builtin_HEXAGON_V6_vshufoh_128B
+ {Intrinsic::hexagon_V6_vsubb, 56140}, // __builtin_HEXAGON_V6_vsubb
+ {Intrinsic::hexagon_V6_vsubb_128B, 56167}, // __builtin_HEXAGON_V6_vsubb_128B
+ {Intrinsic::hexagon_V6_vsubb_dv, 56199}, // __builtin_HEXAGON_V6_vsubb_dv
+ {Intrinsic::hexagon_V6_vsubb_dv_128B, 56229}, // __builtin_HEXAGON_V6_vsubb_dv_128B
+ {Intrinsic::hexagon_V6_vsubbnq, 56264}, // __builtin_HEXAGON_V6_vsubbnq
+ {Intrinsic::hexagon_V6_vsubbnq_128B, 56293}, // __builtin_HEXAGON_V6_vsubbnq_128B
+ {Intrinsic::hexagon_V6_vsubbq, 56327}, // __builtin_HEXAGON_V6_vsubbq
+ {Intrinsic::hexagon_V6_vsubbq_128B, 56355}, // __builtin_HEXAGON_V6_vsubbq_128B
+ {Intrinsic::hexagon_V6_vsubbsat, 56388}, // __builtin_HEXAGON_V6_vsubbsat
+ {Intrinsic::hexagon_V6_vsubbsat_128B, 56418}, // __builtin_HEXAGON_V6_vsubbsat_128B
+ {Intrinsic::hexagon_V6_vsubbsat_dv, 56453}, // __builtin_HEXAGON_V6_vsubbsat_dv
+ {Intrinsic::hexagon_V6_vsubbsat_dv_128B, 56486}, // __builtin_HEXAGON_V6_vsubbsat_dv_128B
+ {Intrinsic::hexagon_V6_vsubh, 56524}, // __builtin_HEXAGON_V6_vsubh
+ {Intrinsic::hexagon_V6_vsubh_128B, 56551}, // __builtin_HEXAGON_V6_vsubh_128B
+ {Intrinsic::hexagon_V6_vsubh_dv, 56583}, // __builtin_HEXAGON_V6_vsubh_dv
+ {Intrinsic::hexagon_V6_vsubh_dv_128B, 56613}, // __builtin_HEXAGON_V6_vsubh_dv_128B
+ {Intrinsic::hexagon_V6_vsubhnq, 56648}, // __builtin_HEXAGON_V6_vsubhnq
+ {Intrinsic::hexagon_V6_vsubhnq_128B, 56677}, // __builtin_HEXAGON_V6_vsubhnq_128B
+ {Intrinsic::hexagon_V6_vsubhq, 56711}, // __builtin_HEXAGON_V6_vsubhq
+ {Intrinsic::hexagon_V6_vsubhq_128B, 56739}, // __builtin_HEXAGON_V6_vsubhq_128B
+ {Intrinsic::hexagon_V6_vsubhsat, 56772}, // __builtin_HEXAGON_V6_vsubhsat
+ {Intrinsic::hexagon_V6_vsubhsat_128B, 56802}, // __builtin_HEXAGON_V6_vsubhsat_128B
+ {Intrinsic::hexagon_V6_vsubhsat_dv, 56837}, // __builtin_HEXAGON_V6_vsubhsat_dv
+ {Intrinsic::hexagon_V6_vsubhsat_dv_128B, 56870}, // __builtin_HEXAGON_V6_vsubhsat_dv_128B
+ {Intrinsic::hexagon_V6_vsubhw, 56908}, // __builtin_HEXAGON_V6_vsubhw
+ {Intrinsic::hexagon_V6_vsubhw_128B, 56936}, // __builtin_HEXAGON_V6_vsubhw_128B
+ {Intrinsic::hexagon_V6_vsububh, 56969}, // __builtin_HEXAGON_V6_vsububh
+ {Intrinsic::hexagon_V6_vsububh_128B, 56998}, // __builtin_HEXAGON_V6_vsububh_128B
+ {Intrinsic::hexagon_V6_vsububsat, 57032}, // __builtin_HEXAGON_V6_vsububsat
+ {Intrinsic::hexagon_V6_vsububsat_128B, 57063}, // __builtin_HEXAGON_V6_vsububsat_128B
+ {Intrinsic::hexagon_V6_vsububsat_dv, 57099}, // __builtin_HEXAGON_V6_vsububsat_dv
+ {Intrinsic::hexagon_V6_vsububsat_dv_128B, 57133}, // __builtin_HEXAGON_V6_vsububsat_dv_128B
+ {Intrinsic::hexagon_V6_vsubububb_sat, 57172}, // __builtin_HEXAGON_V6_vsubububb_sat
+ {Intrinsic::hexagon_V6_vsubububb_sat_128B, 57207}, // __builtin_HEXAGON_V6_vsubububb_sat_128B
+ {Intrinsic::hexagon_V6_vsubuhsat, 57247}, // __builtin_HEXAGON_V6_vsubuhsat
+ {Intrinsic::hexagon_V6_vsubuhsat_128B, 57278}, // __builtin_HEXAGON_V6_vsubuhsat_128B
+ {Intrinsic::hexagon_V6_vsubuhsat_dv, 57314}, // __builtin_HEXAGON_V6_vsubuhsat_dv
+ {Intrinsic::hexagon_V6_vsubuhsat_dv_128B, 57348}, // __builtin_HEXAGON_V6_vsubuhsat_dv_128B
+ {Intrinsic::hexagon_V6_vsubuhw, 57387}, // __builtin_HEXAGON_V6_vsubuhw
+ {Intrinsic::hexagon_V6_vsubuhw_128B, 57416}, // __builtin_HEXAGON_V6_vsubuhw_128B
+ {Intrinsic::hexagon_V6_vsubuwsat, 57450}, // __builtin_HEXAGON_V6_vsubuwsat
+ {Intrinsic::hexagon_V6_vsubuwsat_128B, 57481}, // __builtin_HEXAGON_V6_vsubuwsat_128B
+ {Intrinsic::hexagon_V6_vsubuwsat_dv, 57517}, // __builtin_HEXAGON_V6_vsubuwsat_dv
+ {Intrinsic::hexagon_V6_vsubuwsat_dv_128B, 57551}, // __builtin_HEXAGON_V6_vsubuwsat_dv_128B
+ {Intrinsic::hexagon_V6_vsubw, 57590}, // __builtin_HEXAGON_V6_vsubw
+ {Intrinsic::hexagon_V6_vsubw_128B, 57617}, // __builtin_HEXAGON_V6_vsubw_128B
+ {Intrinsic::hexagon_V6_vsubw_dv, 57649}, // __builtin_HEXAGON_V6_vsubw_dv
+ {Intrinsic::hexagon_V6_vsubw_dv_128B, 57679}, // __builtin_HEXAGON_V6_vsubw_dv_128B
+ {Intrinsic::hexagon_V6_vsubwnq, 57714}, // __builtin_HEXAGON_V6_vsubwnq
+ {Intrinsic::hexagon_V6_vsubwnq_128B, 57743}, // __builtin_HEXAGON_V6_vsubwnq_128B
+ {Intrinsic::hexagon_V6_vsubwq, 57777}, // __builtin_HEXAGON_V6_vsubwq
+ {Intrinsic::hexagon_V6_vsubwq_128B, 57805}, // __builtin_HEXAGON_V6_vsubwq_128B
+ {Intrinsic::hexagon_V6_vsubwsat, 57838}, // __builtin_HEXAGON_V6_vsubwsat
+ {Intrinsic::hexagon_V6_vsubwsat_128B, 57868}, // __builtin_HEXAGON_V6_vsubwsat_128B
+ {Intrinsic::hexagon_V6_vsubwsat_dv, 57903}, // __builtin_HEXAGON_V6_vsubwsat_dv
+ {Intrinsic::hexagon_V6_vsubwsat_dv_128B, 57936}, // __builtin_HEXAGON_V6_vsubwsat_dv_128B
+ {Intrinsic::hexagon_V6_vswap, 57974}, // __builtin_HEXAGON_V6_vswap
+ {Intrinsic::hexagon_V6_vswap_128B, 58001}, // __builtin_HEXAGON_V6_vswap_128B
+ {Intrinsic::hexagon_V6_vtmpyb, 58033}, // __builtin_HEXAGON_V6_vtmpyb
+ {Intrinsic::hexagon_V6_vtmpyb_128B, 58061}, // __builtin_HEXAGON_V6_vtmpyb_128B
+ {Intrinsic::hexagon_V6_vtmpyb_acc, 58094}, // __builtin_HEXAGON_V6_vtmpyb_acc
+ {Intrinsic::hexagon_V6_vtmpyb_acc_128B, 58126}, // __builtin_HEXAGON_V6_vtmpyb_acc_128B
+ {Intrinsic::hexagon_V6_vtmpybus, 58163}, // __builtin_HEXAGON_V6_vtmpybus
+ {Intrinsic::hexagon_V6_vtmpybus_128B, 58193}, // __builtin_HEXAGON_V6_vtmpybus_128B
+ {Intrinsic::hexagon_V6_vtmpybus_acc, 58228}, // __builtin_HEXAGON_V6_vtmpybus_acc
+ {Intrinsic::hexagon_V6_vtmpybus_acc_128B, 58262}, // __builtin_HEXAGON_V6_vtmpybus_acc_128B
+ {Intrinsic::hexagon_V6_vtmpyhb, 58301}, // __builtin_HEXAGON_V6_vtmpyhb
+ {Intrinsic::hexagon_V6_vtmpyhb_128B, 58330}, // __builtin_HEXAGON_V6_vtmpyhb_128B
+ {Intrinsic::hexagon_V6_vtmpyhb_acc, 58364}, // __builtin_HEXAGON_V6_vtmpyhb_acc
+ {Intrinsic::hexagon_V6_vtmpyhb_acc_128B, 58397}, // __builtin_HEXAGON_V6_vtmpyhb_acc_128B
+ {Intrinsic::hexagon_V6_vtran2x2_map, 58435}, // __builtin_HEXAGON_V6_vtran2x2_map
+ {Intrinsic::hexagon_V6_vtran2x2_map_128B, 58469}, // __builtin_HEXAGON_V6_vtran2x2_map_128B
+ {Intrinsic::hexagon_V6_vunpackb, 58508}, // __builtin_HEXAGON_V6_vunpackb
+ {Intrinsic::hexagon_V6_vunpackb_128B, 58538}, // __builtin_HEXAGON_V6_vunpackb_128B
+ {Intrinsic::hexagon_V6_vunpackh, 58573}, // __builtin_HEXAGON_V6_vunpackh
+ {Intrinsic::hexagon_V6_vunpackh_128B, 58603}, // __builtin_HEXAGON_V6_vunpackh_128B
+ {Intrinsic::hexagon_V6_vunpackob, 58638}, // __builtin_HEXAGON_V6_vunpackob
+ {Intrinsic::hexagon_V6_vunpackob_128B, 58669}, // __builtin_HEXAGON_V6_vunpackob_128B
+ {Intrinsic::hexagon_V6_vunpackoh, 58705}, // __builtin_HEXAGON_V6_vunpackoh
+ {Intrinsic::hexagon_V6_vunpackoh_128B, 58736}, // __builtin_HEXAGON_V6_vunpackoh_128B
+ {Intrinsic::hexagon_V6_vunpackub, 58772}, // __builtin_HEXAGON_V6_vunpackub
+ {Intrinsic::hexagon_V6_vunpackub_128B, 58803}, // __builtin_HEXAGON_V6_vunpackub_128B
+ {Intrinsic::hexagon_V6_vunpackuh, 58839}, // __builtin_HEXAGON_V6_vunpackuh
+ {Intrinsic::hexagon_V6_vunpackuh_128B, 58870}, // __builtin_HEXAGON_V6_vunpackuh_128B
+ {Intrinsic::hexagon_V6_vxor, 58906}, // __builtin_HEXAGON_V6_vxor
+ {Intrinsic::hexagon_V6_vxor_128B, 58932}, // __builtin_HEXAGON_V6_vxor_128B
+ {Intrinsic::hexagon_V6_vzb, 58963}, // __builtin_HEXAGON_V6_vzb
+ {Intrinsic::hexagon_V6_vzb_128B, 58988}, // __builtin_HEXAGON_V6_vzb_128B
+ {Intrinsic::hexagon_V6_vzh, 59018}, // __builtin_HEXAGON_V6_vzh
+ {Intrinsic::hexagon_V6_vzh_128B, 59043}, // __builtin_HEXAGON_V6_vzh_128B
+ {Intrinsic::hexagon_Y2_dccleana, 59073}, // __builtin_HEXAGON_Y2_dccleana
+ {Intrinsic::hexagon_Y2_dccleaninva, 59103}, // __builtin_HEXAGON_Y2_dccleaninva
+ {Intrinsic::hexagon_Y2_dcinva, 59136}, // __builtin_HEXAGON_Y2_dcinva
+ {Intrinsic::hexagon_Y2_dczeroa, 59164}, // __builtin_HEXAGON_Y2_dczeroa
+ {Intrinsic::hexagon_Y4_l2fetch, 59193}, // __builtin_HEXAGON_Y4_l2fetch
+ {Intrinsic::hexagon_Y5_l2fetch, 59222}, // __builtin_HEXAGON_Y5_l2fetch
+ {Intrinsic::hexagon_prefetch, 59464}, // __builtin_HEXAGON_prefetch
+ {Intrinsic::hexagon_S2_storerb_pbr, 28677}, // __builtin_brev_stb
+ {Intrinsic::hexagon_S2_storerd_pbr, 28696}, // __builtin_brev_std
+ {Intrinsic::hexagon_S2_storerh_pbr, 28736}, // __builtin_brev_sth
+ {Intrinsic::hexagon_S2_storerf_pbr, 28715}, // __builtin_brev_sthhi
+ {Intrinsic::hexagon_S2_storeri_pbr, 28755}, // __builtin_brev_stw
+ {Intrinsic::hexagon_circ_ldb, 59251}, // __builtin_circ_ldb
+ {Intrinsic::hexagon_circ_ldd, 59270}, // __builtin_circ_ldd
+ {Intrinsic::hexagon_circ_ldh, 59289}, // __builtin_circ_ldh
+ {Intrinsic::hexagon_circ_ldub, 59308}, // __builtin_circ_ldub
+ {Intrinsic::hexagon_circ_lduh, 59328}, // __builtin_circ_lduh
+ {Intrinsic::hexagon_circ_ldw, 59348}, // __builtin_circ_ldw
+ {Intrinsic::hexagon_circ_stb, 59367}, // __builtin_circ_stb
+ {Intrinsic::hexagon_circ_std, 59386}, // __builtin_circ_std
+ {Intrinsic::hexagon_circ_sth, 59405}, // __builtin_circ_sth
+ {Intrinsic::hexagon_circ_sthhi, 59424}, // __builtin_circ_sthhi
+ {Intrinsic::hexagon_circ_stw, 59445}, // __builtin_circ_stw
+ {Intrinsic::hexagon_vmemcpy, 59491}, // __builtin_hexagon_vmemcpy
+ {Intrinsic::hexagon_vmemset, 59517}, // __builtin_hexagon_vmemset
};
auto I = std::lower_bound(std::begin(hexagonNames),
std::end(hexagonNames),
@@ -26805,673 +26699,673 @@
}
if (TargetPrefix == "mips") {
static const BuiltinEntry mipsNames[] = {
- {Intrinsic::mips_absq_s_ph, 57884}, // __builtin_mips_absq_s_ph
- {Intrinsic::mips_absq_s_qb, 57909}, // __builtin_mips_absq_s_qb
- {Intrinsic::mips_absq_s_w, 57934}, // __builtin_mips_absq_s_w
- {Intrinsic::mips_addq_ph, 58046}, // __builtin_mips_addq_ph
- {Intrinsic::mips_addq_s_ph, 58069}, // __builtin_mips_addq_s_ph
- {Intrinsic::mips_addq_s_w, 58094}, // __builtin_mips_addq_s_w
- {Intrinsic::mips_addqh_ph, 58118}, // __builtin_mips_addqh_ph
- {Intrinsic::mips_addqh_r_ph, 58142}, // __builtin_mips_addqh_r_ph
- {Intrinsic::mips_addqh_r_w, 58168}, // __builtin_mips_addqh_r_w
- {Intrinsic::mips_addqh_w, 58193}, // __builtin_mips_addqh_w
- {Intrinsic::mips_addsc, 58492}, // __builtin_mips_addsc
- {Intrinsic::mips_addu_ph, 58513}, // __builtin_mips_addu_ph
- {Intrinsic::mips_addu_qb, 58536}, // __builtin_mips_addu_qb
- {Intrinsic::mips_addu_s_ph, 58559}, // __builtin_mips_addu_s_ph
- {Intrinsic::mips_addu_s_qb, 58584}, // __builtin_mips_addu_s_qb
- {Intrinsic::mips_adduh_qb, 58609}, // __builtin_mips_adduh_qb
- {Intrinsic::mips_adduh_r_qb, 58633}, // __builtin_mips_adduh_r_qb
- {Intrinsic::mips_addwc, 58831}, // __builtin_mips_addwc
- {Intrinsic::mips_append, 58893}, // __builtin_mips_append
- {Intrinsic::mips_balign, 59459}, // __builtin_mips_balign
- {Intrinsic::mips_bitrev, 60013}, // __builtin_mips_bitrev
- {Intrinsic::mips_bposge32, 60391}, // __builtin_mips_bposge32
- {Intrinsic::mips_cmp_eq_ph, 61630}, // __builtin_mips_cmp_eq_ph
- {Intrinsic::mips_cmp_le_ph, 61655}, // __builtin_mips_cmp_le_ph
- {Intrinsic::mips_cmp_lt_ph, 61680}, // __builtin_mips_cmp_lt_ph
- {Intrinsic::mips_cmpgdu_eq_qb, 61705}, // __builtin_mips_cmpgdu_eq_qb
- {Intrinsic::mips_cmpgdu_le_qb, 61733}, // __builtin_mips_cmpgdu_le_qb
- {Intrinsic::mips_cmpgdu_lt_qb, 61761}, // __builtin_mips_cmpgdu_lt_qb
- {Intrinsic::mips_cmpgu_eq_qb, 61789}, // __builtin_mips_cmpgu_eq_qb
- {Intrinsic::mips_cmpgu_le_qb, 61816}, // __builtin_mips_cmpgu_le_qb
- {Intrinsic::mips_cmpgu_lt_qb, 61843}, // __builtin_mips_cmpgu_lt_qb
- {Intrinsic::mips_cmpu_eq_qb, 61870}, // __builtin_mips_cmpu_eq_qb
- {Intrinsic::mips_cmpu_le_qb, 61896}, // __builtin_mips_cmpu_le_qb
- {Intrinsic::mips_cmpu_lt_qb, 61922}, // __builtin_mips_cmpu_lt_qb
- {Intrinsic::mips_dlsa, 62329}, // __builtin_mips_dlsa
- {Intrinsic::mips_dpa_w_ph, 62487}, // __builtin_mips_dpa_w_ph
- {Intrinsic::mips_dpaq_s_w_ph, 62655}, // __builtin_mips_dpaq_s_w_ph
- {Intrinsic::mips_dpaq_sa_l_w, 62682}, // __builtin_mips_dpaq_sa_l_w
- {Intrinsic::mips_dpaqx_s_w_ph, 62709}, // __builtin_mips_dpaqx_s_w_ph
- {Intrinsic::mips_dpaqx_sa_w_ph, 62737}, // __builtin_mips_dpaqx_sa_w_ph
- {Intrinsic::mips_dpau_h_qbl, 62766}, // __builtin_mips_dpau_h_qbl
- {Intrinsic::mips_dpau_h_qbr, 62792}, // __builtin_mips_dpau_h_qbr
- {Intrinsic::mips_dpax_w_ph, 62818}, // __builtin_mips_dpax_w_ph
- {Intrinsic::mips_dps_w_ph, 62843}, // __builtin_mips_dps_w_ph
- {Intrinsic::mips_dpsq_s_w_ph, 62867}, // __builtin_mips_dpsq_s_w_ph
- {Intrinsic::mips_dpsq_sa_l_w, 62894}, // __builtin_mips_dpsq_sa_l_w
- {Intrinsic::mips_dpsqx_s_w_ph, 62921}, // __builtin_mips_dpsqx_s_w_ph
- {Intrinsic::mips_dpsqx_sa_w_ph, 62949}, // __builtin_mips_dpsqx_sa_w_ph
- {Intrinsic::mips_dpsu_h_qbl, 62978}, // __builtin_mips_dpsu_h_qbl
- {Intrinsic::mips_dpsu_h_qbr, 63004}, // __builtin_mips_dpsu_h_qbr
- {Intrinsic::mips_dpsx_w_ph, 63174}, // __builtin_mips_dpsx_w_ph
- {Intrinsic::mips_extp, 63199}, // __builtin_mips_extp
- {Intrinsic::mips_extpdp, 63219}, // __builtin_mips_extpdp
- {Intrinsic::mips_extr_r_w, 63241}, // __builtin_mips_extr_r_w
- {Intrinsic::mips_extr_rs_w, 63265}, // __builtin_mips_extr_rs_w
- {Intrinsic::mips_extr_s_h, 63290}, // __builtin_mips_extr_s_h
- {Intrinsic::mips_extr_w, 63314}, // __builtin_mips_extr_w
- {Intrinsic::mips_insv, 66366}, // __builtin_mips_insv
- {Intrinsic::mips_lbux, 66474}, // __builtin_mips_lbux
- {Intrinsic::mips_lhx, 66650}, // __builtin_mips_lhx
- {Intrinsic::mips_lsa, 66669}, // __builtin_mips_lsa
- {Intrinsic::mips_lwx, 66688}, // __builtin_mips_lwx
- {Intrinsic::mips_madd, 66707}, // __builtin_mips_madd
- {Intrinsic::mips_maddu, 66821}, // __builtin_mips_maddu
- {Intrinsic::mips_maq_s_w_phl, 66930}, // __builtin_mips_maq_s_w_phl
- {Intrinsic::mips_maq_s_w_phr, 66957}, // __builtin_mips_maq_s_w_phr
- {Intrinsic::mips_maq_sa_w_phl, 66984}, // __builtin_mips_maq_sa_w_phl
- {Intrinsic::mips_maq_sa_w_phr, 67012}, // __builtin_mips_maq_sa_w_phr
- {Intrinsic::mips_modsub, 68112}, // __builtin_mips_modsub
- {Intrinsic::mips_msub, 68155}, // __builtin_mips_msub
- {Intrinsic::mips_msubu, 68269}, // __builtin_mips_msubu
- {Intrinsic::mips_mthlip, 68378}, // __builtin_mips_mthlip
- {Intrinsic::mips_mul_ph, 68400}, // __builtin_mips_mul_ph
- {Intrinsic::mips_mul_s_ph, 68466}, // __builtin_mips_mul_s_ph
- {Intrinsic::mips_muleq_s_w_phl, 68490}, // __builtin_mips_muleq_s_w_phl
- {Intrinsic::mips_muleq_s_w_phr, 68519}, // __builtin_mips_muleq_s_w_phr
- {Intrinsic::mips_muleu_s_ph_qbl, 68548}, // __builtin_mips_muleu_s_ph_qbl
- {Intrinsic::mips_muleu_s_ph_qbr, 68578}, // __builtin_mips_muleu_s_ph_qbr
- {Intrinsic::mips_mulq_rs_ph, 68608}, // __builtin_mips_mulq_rs_ph
- {Intrinsic::mips_mulq_rs_w, 68634}, // __builtin_mips_mulq_rs_w
- {Intrinsic::mips_mulq_s_ph, 68659}, // __builtin_mips_mulq_s_ph
- {Intrinsic::mips_mulq_s_w, 68684}, // __builtin_mips_mulq_s_w
- {Intrinsic::mips_mulsa_w_ph, 68754}, // __builtin_mips_mulsa_w_ph
- {Intrinsic::mips_mulsaq_s_w_ph, 68780}, // __builtin_mips_mulsaq_s_w_ph
- {Intrinsic::mips_mult, 68809}, // __builtin_mips_mult
- {Intrinsic::mips_multu, 68829}, // __builtin_mips_multu
- {Intrinsic::mips_packrl_ph, 69182}, // __builtin_mips_packrl_ph
- {Intrinsic::mips_pick_ph, 69467}, // __builtin_mips_pick_ph
- {Intrinsic::mips_pick_qb, 69490}, // __builtin_mips_pick_qb
- {Intrinsic::mips_preceq_w_phl, 69513}, // __builtin_mips_preceq_w_phl
- {Intrinsic::mips_preceq_w_phr, 69541}, // __builtin_mips_preceq_w_phr
- {Intrinsic::mips_precequ_ph_qbl, 69569}, // __builtin_mips_precequ_ph_qbl
- {Intrinsic::mips_precequ_ph_qbla, 69599}, // __builtin_mips_precequ_ph_qbla
- {Intrinsic::mips_precequ_ph_qbr, 69630}, // __builtin_mips_precequ_ph_qbr
- {Intrinsic::mips_precequ_ph_qbra, 69660}, // __builtin_mips_precequ_ph_qbra
- {Intrinsic::mips_preceu_ph_qbl, 69691}, // __builtin_mips_preceu_ph_qbl
- {Intrinsic::mips_preceu_ph_qbla, 69720}, // __builtin_mips_preceu_ph_qbla
- {Intrinsic::mips_preceu_ph_qbr, 69750}, // __builtin_mips_preceu_ph_qbr
- {Intrinsic::mips_preceu_ph_qbra, 69779}, // __builtin_mips_preceu_ph_qbra
- {Intrinsic::mips_precr_qb_ph, 69809}, // __builtin_mips_precr_qb_ph
- {Intrinsic::mips_precr_sra_ph_w, 69836}, // __builtin_mips_precr_sra_ph_w
- {Intrinsic::mips_precr_sra_r_ph_w, 69866}, // __builtin_mips_precr_sra_r_ph_w
- {Intrinsic::mips_precrq_ph_w, 69898}, // __builtin_mips_precrq_ph_w
- {Intrinsic::mips_precrq_qb_ph, 69925}, // __builtin_mips_precrq_qb_ph
- {Intrinsic::mips_precrq_rs_ph_w, 69953}, // __builtin_mips_precrq_rs_ph_w
- {Intrinsic::mips_precrqu_s_qb_ph, 69983}, // __builtin_mips_precrqu_s_qb_ph
- {Intrinsic::mips_prepend, 70014}, // __builtin_mips_prepend
- {Intrinsic::mips_raddu_w_qb, 70037}, // __builtin_mips_raddu_w_qb
- {Intrinsic::mips_rddsp, 70063}, // __builtin_mips_rddsp
- {Intrinsic::mips_repl_ph, 70084}, // __builtin_mips_repl_ph
- {Intrinsic::mips_repl_qb, 70107}, // __builtin_mips_repl_qb
- {Intrinsic::mips_shilo, 70366}, // __builtin_mips_shilo
- {Intrinsic::mips_shll_ph, 70387}, // __builtin_mips_shll_ph
- {Intrinsic::mips_shll_qb, 70410}, // __builtin_mips_shll_qb
- {Intrinsic::mips_shll_s_ph, 70433}, // __builtin_mips_shll_s_ph
- {Intrinsic::mips_shll_s_w, 70458}, // __builtin_mips_shll_s_w
- {Intrinsic::mips_shra_ph, 70482}, // __builtin_mips_shra_ph
- {Intrinsic::mips_shra_qb, 70505}, // __builtin_mips_shra_qb
- {Intrinsic::mips_shra_r_ph, 70528}, // __builtin_mips_shra_r_ph
- {Intrinsic::mips_shra_r_qb, 70553}, // __builtin_mips_shra_r_qb
- {Intrinsic::mips_shra_r_w, 70578}, // __builtin_mips_shra_r_w
- {Intrinsic::mips_shrl_ph, 70602}, // __builtin_mips_shrl_ph
- {Intrinsic::mips_shrl_qb, 70625}, // __builtin_mips_shrl_qb
- {Intrinsic::mips_subq_ph, 71904}, // __builtin_mips_subq_ph
- {Intrinsic::mips_subq_s_ph, 71927}, // __builtin_mips_subq_s_ph
- {Intrinsic::mips_subq_s_w, 71952}, // __builtin_mips_subq_s_w
- {Intrinsic::mips_subqh_ph, 71976}, // __builtin_mips_subqh_ph
- {Intrinsic::mips_subqh_r_ph, 72000}, // __builtin_mips_subqh_r_ph
- {Intrinsic::mips_subqh_r_w, 72026}, // __builtin_mips_subqh_r_w
- {Intrinsic::mips_subqh_w, 72051}, // __builtin_mips_subqh_w
- {Intrinsic::mips_subu_ph, 72458}, // __builtin_mips_subu_ph
- {Intrinsic::mips_subu_qb, 72481}, // __builtin_mips_subu_qb
- {Intrinsic::mips_subu_s_ph, 72504}, // __builtin_mips_subu_s_ph
- {Intrinsic::mips_subu_s_qb, 72529}, // __builtin_mips_subu_s_qb
- {Intrinsic::mips_subuh_qb, 72554}, // __builtin_mips_subuh_qb
- {Intrinsic::mips_subuh_r_qb, 72578}, // __builtin_mips_subuh_r_qb
- {Intrinsic::mips_wrdsp, 72860}, // __builtin_mips_wrdsp
- {Intrinsic::mips_add_a_b, 57958}, // __builtin_msa_add_a_b
- {Intrinsic::mips_add_a_d, 57980}, // __builtin_msa_add_a_d
- {Intrinsic::mips_add_a_h, 58002}, // __builtin_msa_add_a_h
- {Intrinsic::mips_add_a_w, 58024}, // __builtin_msa_add_a_w
- {Intrinsic::mips_adds_a_b, 58216}, // __builtin_msa_adds_a_b
- {Intrinsic::mips_adds_a_d, 58239}, // __builtin_msa_adds_a_d
- {Intrinsic::mips_adds_a_h, 58262}, // __builtin_msa_adds_a_h
- {Intrinsic::mips_adds_a_w, 58285}, // __builtin_msa_adds_a_w
- {Intrinsic::mips_adds_s_b, 58308}, // __builtin_msa_adds_s_b
- {Intrinsic::mips_adds_s_d, 58331}, // __builtin_msa_adds_s_d
- {Intrinsic::mips_adds_s_h, 58354}, // __builtin_msa_adds_s_h
- {Intrinsic::mips_adds_s_w, 58377}, // __builtin_msa_adds_s_w
- {Intrinsic::mips_adds_u_b, 58400}, // __builtin_msa_adds_u_b
- {Intrinsic::mips_adds_u_d, 58423}, // __builtin_msa_adds_u_d
- {Intrinsic::mips_adds_u_h, 58446}, // __builtin_msa_adds_u_h
- {Intrinsic::mips_adds_u_w, 58469}, // __builtin_msa_adds_u_w
- {Intrinsic::mips_addv_b, 58659}, // __builtin_msa_addv_b
- {Intrinsic::mips_addv_d, 58680}, // __builtin_msa_addv_d
- {Intrinsic::mips_addv_h, 58701}, // __builtin_msa_addv_h
- {Intrinsic::mips_addv_w, 58722}, // __builtin_msa_addv_w
- {Intrinsic::mips_addvi_b, 58743}, // __builtin_msa_addvi_b
- {Intrinsic::mips_addvi_d, 58765}, // __builtin_msa_addvi_d
- {Intrinsic::mips_addvi_h, 58787}, // __builtin_msa_addvi_h
- {Intrinsic::mips_addvi_w, 58809}, // __builtin_msa_addvi_w
- {Intrinsic::mips_and_v, 58852}, // __builtin_msa_and_v
- {Intrinsic::mips_andi_b, 58872}, // __builtin_msa_andi_b
- {Intrinsic::mips_asub_s_b, 58915}, // __builtin_msa_asub_s_b
- {Intrinsic::mips_asub_s_d, 58938}, // __builtin_msa_asub_s_d
- {Intrinsic::mips_asub_s_h, 58961}, // __builtin_msa_asub_s_h
- {Intrinsic::mips_asub_s_w, 58984}, // __builtin_msa_asub_s_w
- {Intrinsic::mips_asub_u_b, 59007}, // __builtin_msa_asub_u_b
- {Intrinsic::mips_asub_u_d, 59030}, // __builtin_msa_asub_u_d
- {Intrinsic::mips_asub_u_h, 59053}, // __builtin_msa_asub_u_h
- {Intrinsic::mips_asub_u_w, 59076}, // __builtin_msa_asub_u_w
- {Intrinsic::mips_ave_s_b, 59099}, // __builtin_msa_ave_s_b
- {Intrinsic::mips_ave_s_d, 59121}, // __builtin_msa_ave_s_d
- {Intrinsic::mips_ave_s_h, 59143}, // __builtin_msa_ave_s_h
- {Intrinsic::mips_ave_s_w, 59165}, // __builtin_msa_ave_s_w
- {Intrinsic::mips_ave_u_b, 59187}, // __builtin_msa_ave_u_b
- {Intrinsic::mips_ave_u_d, 59209}, // __builtin_msa_ave_u_d
- {Intrinsic::mips_ave_u_h, 59231}, // __builtin_msa_ave_u_h
- {Intrinsic::mips_ave_u_w, 59253}, // __builtin_msa_ave_u_w
- {Intrinsic::mips_aver_s_b, 59275}, // __builtin_msa_aver_s_b
- {Intrinsic::mips_aver_s_d, 59298}, // __builtin_msa_aver_s_d
- {Intrinsic::mips_aver_s_h, 59321}, // __builtin_msa_aver_s_h
- {Intrinsic::mips_aver_s_w, 59344}, // __builtin_msa_aver_s_w
- {Intrinsic::mips_aver_u_b, 59367}, // __builtin_msa_aver_u_b
- {Intrinsic::mips_aver_u_d, 59390}, // __builtin_msa_aver_u_d
- {Intrinsic::mips_aver_u_h, 59413}, // __builtin_msa_aver_u_h
- {Intrinsic::mips_aver_u_w, 59436}, // __builtin_msa_aver_u_w
- {Intrinsic::mips_bclr_b, 59481}, // __builtin_msa_bclr_b
- {Intrinsic::mips_bclr_d, 59502}, // __builtin_msa_bclr_d
- {Intrinsic::mips_bclr_h, 59523}, // __builtin_msa_bclr_h
- {Intrinsic::mips_bclr_w, 59544}, // __builtin_msa_bclr_w
- {Intrinsic::mips_bclri_b, 59565}, // __builtin_msa_bclri_b
- {Intrinsic::mips_bclri_d, 59587}, // __builtin_msa_bclri_d
- {Intrinsic::mips_bclri_h, 59609}, // __builtin_msa_bclri_h
- {Intrinsic::mips_bclri_w, 59631}, // __builtin_msa_bclri_w
- {Intrinsic::mips_binsl_b, 59653}, // __builtin_msa_binsl_b
- {Intrinsic::mips_binsl_d, 59675}, // __builtin_msa_binsl_d
- {Intrinsic::mips_binsl_h, 59697}, // __builtin_msa_binsl_h
- {Intrinsic::mips_binsl_w, 59719}, // __builtin_msa_binsl_w
- {Intrinsic::mips_binsli_b, 59741}, // __builtin_msa_binsli_b
- {Intrinsic::mips_binsli_d, 59764}, // __builtin_msa_binsli_d
- {Intrinsic::mips_binsli_h, 59787}, // __builtin_msa_binsli_h
- {Intrinsic::mips_binsli_w, 59810}, // __builtin_msa_binsli_w
- {Intrinsic::mips_binsr_b, 59833}, // __builtin_msa_binsr_b
- {Intrinsic::mips_binsr_d, 59855}, // __builtin_msa_binsr_d
- {Intrinsic::mips_binsr_h, 59877}, // __builtin_msa_binsr_h
- {Intrinsic::mips_binsr_w, 59899}, // __builtin_msa_binsr_w
- {Intrinsic::mips_binsri_b, 59921}, // __builtin_msa_binsri_b
- {Intrinsic::mips_binsri_d, 59944}, // __builtin_msa_binsri_d
- {Intrinsic::mips_binsri_h, 59967}, // __builtin_msa_binsri_h
- {Intrinsic::mips_binsri_w, 59990}, // __builtin_msa_binsri_w
- {Intrinsic::mips_bmnz_v, 60035}, // __builtin_msa_bmnz_v
- {Intrinsic::mips_bmnzi_b, 60056}, // __builtin_msa_bmnzi_b
- {Intrinsic::mips_bmz_v, 60078}, // __builtin_msa_bmz_v
- {Intrinsic::mips_bmzi_b, 60098}, // __builtin_msa_bmzi_b
- {Intrinsic::mips_bneg_b, 60119}, // __builtin_msa_bneg_b
- {Intrinsic::mips_bneg_d, 60140}, // __builtin_msa_bneg_d
- {Intrinsic::mips_bneg_h, 60161}, // __builtin_msa_bneg_h
- {Intrinsic::mips_bneg_w, 60182}, // __builtin_msa_bneg_w
- {Intrinsic::mips_bnegi_b, 60203}, // __builtin_msa_bnegi_b
- {Intrinsic::mips_bnegi_d, 60225}, // __builtin_msa_bnegi_d
- {Intrinsic::mips_bnegi_h, 60247}, // __builtin_msa_bnegi_h
- {Intrinsic::mips_bnegi_w, 60269}, // __builtin_msa_bnegi_w
- {Intrinsic::mips_bnz_b, 60291}, // __builtin_msa_bnz_b
- {Intrinsic::mips_bnz_d, 60311}, // __builtin_msa_bnz_d
- {Intrinsic::mips_bnz_h, 60331}, // __builtin_msa_bnz_h
- {Intrinsic::mips_bnz_v, 60351}, // __builtin_msa_bnz_v
- {Intrinsic::mips_bnz_w, 60371}, // __builtin_msa_bnz_w
- {Intrinsic::mips_bsel_v, 60415}, // __builtin_msa_bsel_v
- {Intrinsic::mips_bseli_b, 60436}, // __builtin_msa_bseli_b
- {Intrinsic::mips_bset_b, 60458}, // __builtin_msa_bset_b
- {Intrinsic::mips_bset_d, 60479}, // __builtin_msa_bset_d
- {Intrinsic::mips_bset_h, 60500}, // __builtin_msa_bset_h
- {Intrinsic::mips_bset_w, 60521}, // __builtin_msa_bset_w
- {Intrinsic::mips_bseti_b, 60542}, // __builtin_msa_bseti_b
- {Intrinsic::mips_bseti_d, 60564}, // __builtin_msa_bseti_d
- {Intrinsic::mips_bseti_h, 60586}, // __builtin_msa_bseti_h
- {Intrinsic::mips_bseti_w, 60608}, // __builtin_msa_bseti_w
- {Intrinsic::mips_bz_b, 60630}, // __builtin_msa_bz_b
- {Intrinsic::mips_bz_d, 60649}, // __builtin_msa_bz_d
- {Intrinsic::mips_bz_h, 60668}, // __builtin_msa_bz_h
- {Intrinsic::mips_bz_v, 60687}, // __builtin_msa_bz_v
- {Intrinsic::mips_bz_w, 60706}, // __builtin_msa_bz_w
- {Intrinsic::mips_ceq_b, 60725}, // __builtin_msa_ceq_b
- {Intrinsic::mips_ceq_d, 60745}, // __builtin_msa_ceq_d
- {Intrinsic::mips_ceq_h, 60765}, // __builtin_msa_ceq_h
- {Intrinsic::mips_ceq_w, 60785}, // __builtin_msa_ceq_w
- {Intrinsic::mips_ceqi_b, 60805}, // __builtin_msa_ceqi_b
- {Intrinsic::mips_ceqi_d, 60826}, // __builtin_msa_ceqi_d
- {Intrinsic::mips_ceqi_h, 60847}, // __builtin_msa_ceqi_h
- {Intrinsic::mips_ceqi_w, 60868}, // __builtin_msa_ceqi_w
- {Intrinsic::mips_cfcmsa, 60889}, // __builtin_msa_cfcmsa
- {Intrinsic::mips_cle_s_b, 60910}, // __builtin_msa_cle_s_b
- {Intrinsic::mips_cle_s_d, 60932}, // __builtin_msa_cle_s_d
- {Intrinsic::mips_cle_s_h, 60954}, // __builtin_msa_cle_s_h
- {Intrinsic::mips_cle_s_w, 60976}, // __builtin_msa_cle_s_w
- {Intrinsic::mips_cle_u_b, 60998}, // __builtin_msa_cle_u_b
- {Intrinsic::mips_cle_u_d, 61020}, // __builtin_msa_cle_u_d
- {Intrinsic::mips_cle_u_h, 61042}, // __builtin_msa_cle_u_h
- {Intrinsic::mips_cle_u_w, 61064}, // __builtin_msa_cle_u_w
- {Intrinsic::mips_clei_s_b, 61086}, // __builtin_msa_clei_s_b
- {Intrinsic::mips_clei_s_d, 61109}, // __builtin_msa_clei_s_d
- {Intrinsic::mips_clei_s_h, 61132}, // __builtin_msa_clei_s_h
- {Intrinsic::mips_clei_s_w, 61155}, // __builtin_msa_clei_s_w
- {Intrinsic::mips_clei_u_b, 61178}, // __builtin_msa_clei_u_b
- {Intrinsic::mips_clei_u_d, 61201}, // __builtin_msa_clei_u_d
- {Intrinsic::mips_clei_u_h, 61224}, // __builtin_msa_clei_u_h
- {Intrinsic::mips_clei_u_w, 61247}, // __builtin_msa_clei_u_w
- {Intrinsic::mips_clt_s_b, 61270}, // __builtin_msa_clt_s_b
- {Intrinsic::mips_clt_s_d, 61292}, // __builtin_msa_clt_s_d
- {Intrinsic::mips_clt_s_h, 61314}, // __builtin_msa_clt_s_h
- {Intrinsic::mips_clt_s_w, 61336}, // __builtin_msa_clt_s_w
- {Intrinsic::mips_clt_u_b, 61358}, // __builtin_msa_clt_u_b
- {Intrinsic::mips_clt_u_d, 61380}, // __builtin_msa_clt_u_d
- {Intrinsic::mips_clt_u_h, 61402}, // __builtin_msa_clt_u_h
- {Intrinsic::mips_clt_u_w, 61424}, // __builtin_msa_clt_u_w
- {Intrinsic::mips_clti_s_b, 61446}, // __builtin_msa_clti_s_b
- {Intrinsic::mips_clti_s_d, 61469}, // __builtin_msa_clti_s_d
- {Intrinsic::mips_clti_s_h, 61492}, // __builtin_msa_clti_s_h
- {Intrinsic::mips_clti_s_w, 61515}, // __builtin_msa_clti_s_w
- {Intrinsic::mips_clti_u_b, 61538}, // __builtin_msa_clti_u_b
- {Intrinsic::mips_clti_u_d, 61561}, // __builtin_msa_clti_u_d
- {Intrinsic::mips_clti_u_h, 61584}, // __builtin_msa_clti_u_h
- {Intrinsic::mips_clti_u_w, 61607}, // __builtin_msa_clti_u_w
- {Intrinsic::mips_copy_s_b, 61948}, // __builtin_msa_copy_s_b
- {Intrinsic::mips_copy_s_d, 61971}, // __builtin_msa_copy_s_d
- {Intrinsic::mips_copy_s_h, 61994}, // __builtin_msa_copy_s_h
- {Intrinsic::mips_copy_s_w, 62017}, // __builtin_msa_copy_s_w
- {Intrinsic::mips_copy_u_b, 62040}, // __builtin_msa_copy_u_b
- {Intrinsic::mips_copy_u_d, 62063}, // __builtin_msa_copy_u_d
- {Intrinsic::mips_copy_u_h, 62086}, // __builtin_msa_copy_u_h
- {Intrinsic::mips_copy_u_w, 62109}, // __builtin_msa_copy_u_w
- {Intrinsic::mips_ctcmsa, 62132}, // __builtin_msa_ctcmsa
- {Intrinsic::mips_div_s_b, 62153}, // __builtin_msa_div_s_b
- {Intrinsic::mips_div_s_d, 62175}, // __builtin_msa_div_s_d
- {Intrinsic::mips_div_s_h, 62197}, // __builtin_msa_div_s_h
- {Intrinsic::mips_div_s_w, 62219}, // __builtin_msa_div_s_w
- {Intrinsic::mips_div_u_b, 62241}, // __builtin_msa_div_u_b
- {Intrinsic::mips_div_u_d, 62263}, // __builtin_msa_div_u_d
- {Intrinsic::mips_div_u_h, 62285}, // __builtin_msa_div_u_h
- {Intrinsic::mips_div_u_w, 62307}, // __builtin_msa_div_u_w
- {Intrinsic::mips_dotp_s_d, 62349}, // __builtin_msa_dotp_s_d
- {Intrinsic::mips_dotp_s_h, 62372}, // __builtin_msa_dotp_s_h
- {Intrinsic::mips_dotp_s_w, 62395}, // __builtin_msa_dotp_s_w
- {Intrinsic::mips_dotp_u_d, 62418}, // __builtin_msa_dotp_u_d
- {Intrinsic::mips_dotp_u_h, 62441}, // __builtin_msa_dotp_u_h
- {Intrinsic::mips_dotp_u_w, 62464}, // __builtin_msa_dotp_u_w
- {Intrinsic::mips_dpadd_s_d, 62511}, // __builtin_msa_dpadd_s_d
- {Intrinsic::mips_dpadd_s_h, 62535}, // __builtin_msa_dpadd_s_h
- {Intrinsic::mips_dpadd_s_w, 62559}, // __builtin_msa_dpadd_s_w
- {Intrinsic::mips_dpadd_u_d, 62583}, // __builtin_msa_dpadd_u_d
- {Intrinsic::mips_dpadd_u_h, 62607}, // __builtin_msa_dpadd_u_h
- {Intrinsic::mips_dpadd_u_w, 62631}, // __builtin_msa_dpadd_u_w
- {Intrinsic::mips_dpsub_s_d, 63030}, // __builtin_msa_dpsub_s_d
- {Intrinsic::mips_dpsub_s_h, 63054}, // __builtin_msa_dpsub_s_h
- {Intrinsic::mips_dpsub_s_w, 63078}, // __builtin_msa_dpsub_s_w
- {Intrinsic::mips_dpsub_u_d, 63102}, // __builtin_msa_dpsub_u_d
- {Intrinsic::mips_dpsub_u_h, 63126}, // __builtin_msa_dpsub_u_h
- {Intrinsic::mips_dpsub_u_w, 63150}, // __builtin_msa_dpsub_u_w
- {Intrinsic::mips_fadd_d, 63336}, // __builtin_msa_fadd_d
- {Intrinsic::mips_fadd_w, 63357}, // __builtin_msa_fadd_w
- {Intrinsic::mips_fcaf_d, 63378}, // __builtin_msa_fcaf_d
- {Intrinsic::mips_fcaf_w, 63399}, // __builtin_msa_fcaf_w
- {Intrinsic::mips_fceq_d, 63420}, // __builtin_msa_fceq_d
- {Intrinsic::mips_fceq_w, 63441}, // __builtin_msa_fceq_w
- {Intrinsic::mips_fclass_d, 63462}, // __builtin_msa_fclass_d
- {Intrinsic::mips_fclass_w, 63485}, // __builtin_msa_fclass_w
- {Intrinsic::mips_fcle_d, 63508}, // __builtin_msa_fcle_d
- {Intrinsic::mips_fcle_w, 63529}, // __builtin_msa_fcle_w
- {Intrinsic::mips_fclt_d, 63550}, // __builtin_msa_fclt_d
- {Intrinsic::mips_fclt_w, 63571}, // __builtin_msa_fclt_w
- {Intrinsic::mips_fcne_d, 63592}, // __builtin_msa_fcne_d
- {Intrinsic::mips_fcne_w, 63613}, // __builtin_msa_fcne_w
- {Intrinsic::mips_fcor_d, 63634}, // __builtin_msa_fcor_d
- {Intrinsic::mips_fcor_w, 63655}, // __builtin_msa_fcor_w
- {Intrinsic::mips_fcueq_d, 63676}, // __builtin_msa_fcueq_d
- {Intrinsic::mips_fcueq_w, 63698}, // __builtin_msa_fcueq_w
- {Intrinsic::mips_fcule_d, 63720}, // __builtin_msa_fcule_d
- {Intrinsic::mips_fcule_w, 63742}, // __builtin_msa_fcule_w
- {Intrinsic::mips_fcult_d, 63764}, // __builtin_msa_fcult_d
- {Intrinsic::mips_fcult_w, 63786}, // __builtin_msa_fcult_w
- {Intrinsic::mips_fcun_d, 63808}, // __builtin_msa_fcun_d
- {Intrinsic::mips_fcun_w, 63829}, // __builtin_msa_fcun_w
- {Intrinsic::mips_fcune_d, 63850}, // __builtin_msa_fcune_d
- {Intrinsic::mips_fcune_w, 63872}, // __builtin_msa_fcune_w
- {Intrinsic::mips_fdiv_d, 63894}, // __builtin_msa_fdiv_d
- {Intrinsic::mips_fdiv_w, 63915}, // __builtin_msa_fdiv_w
- {Intrinsic::mips_fexdo_h, 63936}, // __builtin_msa_fexdo_h
- {Intrinsic::mips_fexdo_w, 63958}, // __builtin_msa_fexdo_w
- {Intrinsic::mips_fexp2_d, 63980}, // __builtin_msa_fexp2_d
- {Intrinsic::mips_fexp2_w, 64002}, // __builtin_msa_fexp2_w
- {Intrinsic::mips_fexupl_d, 64024}, // __builtin_msa_fexupl_d
- {Intrinsic::mips_fexupl_w, 64047}, // __builtin_msa_fexupl_w
- {Intrinsic::mips_fexupr_d, 64070}, // __builtin_msa_fexupr_d
- {Intrinsic::mips_fexupr_w, 64093}, // __builtin_msa_fexupr_w
- {Intrinsic::mips_ffint_s_d, 64116}, // __builtin_msa_ffint_s_d
- {Intrinsic::mips_ffint_s_w, 64140}, // __builtin_msa_ffint_s_w
- {Intrinsic::mips_ffint_u_d, 64164}, // __builtin_msa_ffint_u_d
- {Intrinsic::mips_ffint_u_w, 64188}, // __builtin_msa_ffint_u_w
- {Intrinsic::mips_ffql_d, 64212}, // __builtin_msa_ffql_d
- {Intrinsic::mips_ffql_w, 64233}, // __builtin_msa_ffql_w
- {Intrinsic::mips_ffqr_d, 64254}, // __builtin_msa_ffqr_d
- {Intrinsic::mips_ffqr_w, 64275}, // __builtin_msa_ffqr_w
- {Intrinsic::mips_fill_b, 64296}, // __builtin_msa_fill_b
- {Intrinsic::mips_fill_d, 64317}, // __builtin_msa_fill_d
- {Intrinsic::mips_fill_h, 64338}, // __builtin_msa_fill_h
- {Intrinsic::mips_fill_w, 64359}, // __builtin_msa_fill_w
- {Intrinsic::mips_flog2_d, 64380}, // __builtin_msa_flog2_d
- {Intrinsic::mips_flog2_w, 64402}, // __builtin_msa_flog2_w
- {Intrinsic::mips_fmadd_d, 64424}, // __builtin_msa_fmadd_d
- {Intrinsic::mips_fmadd_w, 64446}, // __builtin_msa_fmadd_w
- {Intrinsic::mips_fmax_a_d, 64468}, // __builtin_msa_fmax_a_d
- {Intrinsic::mips_fmax_a_w, 64491}, // __builtin_msa_fmax_a_w
- {Intrinsic::mips_fmax_d, 64514}, // __builtin_msa_fmax_d
- {Intrinsic::mips_fmax_w, 64535}, // __builtin_msa_fmax_w
- {Intrinsic::mips_fmin_a_d, 64556}, // __builtin_msa_fmin_a_d
- {Intrinsic::mips_fmin_a_w, 64579}, // __builtin_msa_fmin_a_w
- {Intrinsic::mips_fmin_d, 64602}, // __builtin_msa_fmin_d
- {Intrinsic::mips_fmin_w, 64623}, // __builtin_msa_fmin_w
- {Intrinsic::mips_fmsub_d, 64644}, // __builtin_msa_fmsub_d
- {Intrinsic::mips_fmsub_w, 64666}, // __builtin_msa_fmsub_w
- {Intrinsic::mips_fmul_d, 64688}, // __builtin_msa_fmul_d
- {Intrinsic::mips_fmul_w, 64709}, // __builtin_msa_fmul_w
- {Intrinsic::mips_frcp_d, 64730}, // __builtin_msa_frcp_d
- {Intrinsic::mips_frcp_w, 64751}, // __builtin_msa_frcp_w
- {Intrinsic::mips_frint_d, 64772}, // __builtin_msa_frint_d
- {Intrinsic::mips_frint_w, 64794}, // __builtin_msa_frint_w
- {Intrinsic::mips_frsqrt_d, 64816}, // __builtin_msa_frsqrt_d
- {Intrinsic::mips_frsqrt_w, 64839}, // __builtin_msa_frsqrt_w
- {Intrinsic::mips_fsaf_d, 64862}, // __builtin_msa_fsaf_d
- {Intrinsic::mips_fsaf_w, 64883}, // __builtin_msa_fsaf_w
- {Intrinsic::mips_fseq_d, 64904}, // __builtin_msa_fseq_d
- {Intrinsic::mips_fseq_w, 64925}, // __builtin_msa_fseq_w
- {Intrinsic::mips_fsle_d, 64946}, // __builtin_msa_fsle_d
- {Intrinsic::mips_fsle_w, 64967}, // __builtin_msa_fsle_w
- {Intrinsic::mips_fslt_d, 64988}, // __builtin_msa_fslt_d
- {Intrinsic::mips_fslt_w, 65009}, // __builtin_msa_fslt_w
- {Intrinsic::mips_fsne_d, 65030}, // __builtin_msa_fsne_d
- {Intrinsic::mips_fsne_w, 65051}, // __builtin_msa_fsne_w
- {Intrinsic::mips_fsor_d, 65072}, // __builtin_msa_fsor_d
- {Intrinsic::mips_fsor_w, 65093}, // __builtin_msa_fsor_w
- {Intrinsic::mips_fsqrt_d, 65114}, // __builtin_msa_fsqrt_d
- {Intrinsic::mips_fsqrt_w, 65136}, // __builtin_msa_fsqrt_w
- {Intrinsic::mips_fsub_d, 65158}, // __builtin_msa_fsub_d
- {Intrinsic::mips_fsub_w, 65179}, // __builtin_msa_fsub_w
- {Intrinsic::mips_fsueq_d, 65200}, // __builtin_msa_fsueq_d
- {Intrinsic::mips_fsueq_w, 65222}, // __builtin_msa_fsueq_w
- {Intrinsic::mips_fsule_d, 65244}, // __builtin_msa_fsule_d
- {Intrinsic::mips_fsule_w, 65266}, // __builtin_msa_fsule_w
- {Intrinsic::mips_fsult_d, 65288}, // __builtin_msa_fsult_d
- {Intrinsic::mips_fsult_w, 65310}, // __builtin_msa_fsult_w
- {Intrinsic::mips_fsun_d, 65332}, // __builtin_msa_fsun_d
- {Intrinsic::mips_fsun_w, 65353}, // __builtin_msa_fsun_w
- {Intrinsic::mips_fsune_d, 65374}, // __builtin_msa_fsune_d
- {Intrinsic::mips_fsune_w, 65396}, // __builtin_msa_fsune_w
- {Intrinsic::mips_ftint_s_d, 65418}, // __builtin_msa_ftint_s_d
- {Intrinsic::mips_ftint_s_w, 65442}, // __builtin_msa_ftint_s_w
- {Intrinsic::mips_ftint_u_d, 65466}, // __builtin_msa_ftint_u_d
- {Intrinsic::mips_ftint_u_w, 65490}, // __builtin_msa_ftint_u_w
- {Intrinsic::mips_ftq_h, 65514}, // __builtin_msa_ftq_h
- {Intrinsic::mips_ftq_w, 65534}, // __builtin_msa_ftq_w
- {Intrinsic::mips_ftrunc_s_d, 65554}, // __builtin_msa_ftrunc_s_d
- {Intrinsic::mips_ftrunc_s_w, 65579}, // __builtin_msa_ftrunc_s_w
- {Intrinsic::mips_ftrunc_u_d, 65604}, // __builtin_msa_ftrunc_u_d
- {Intrinsic::mips_ftrunc_u_w, 65629}, // __builtin_msa_ftrunc_u_w
- {Intrinsic::mips_hadd_s_d, 65654}, // __builtin_msa_hadd_s_d
- {Intrinsic::mips_hadd_s_h, 65677}, // __builtin_msa_hadd_s_h
- {Intrinsic::mips_hadd_s_w, 65700}, // __builtin_msa_hadd_s_w
- {Intrinsic::mips_hadd_u_d, 65723}, // __builtin_msa_hadd_u_d
- {Intrinsic::mips_hadd_u_h, 65746}, // __builtin_msa_hadd_u_h
- {Intrinsic::mips_hadd_u_w, 65769}, // __builtin_msa_hadd_u_w
- {Intrinsic::mips_hsub_s_d, 65792}, // __builtin_msa_hsub_s_d
- {Intrinsic::mips_hsub_s_h, 65815}, // __builtin_msa_hsub_s_h
- {Intrinsic::mips_hsub_s_w, 65838}, // __builtin_msa_hsub_s_w
- {Intrinsic::mips_hsub_u_d, 65861}, // __builtin_msa_hsub_u_d
- {Intrinsic::mips_hsub_u_h, 65884}, // __builtin_msa_hsub_u_h
- {Intrinsic::mips_hsub_u_w, 65907}, // __builtin_msa_hsub_u_w
- {Intrinsic::mips_ilvev_b, 65930}, // __builtin_msa_ilvev_b
- {Intrinsic::mips_ilvev_d, 65952}, // __builtin_msa_ilvev_d
- {Intrinsic::mips_ilvev_h, 65974}, // __builtin_msa_ilvev_h
- {Intrinsic::mips_ilvev_w, 65996}, // __builtin_msa_ilvev_w
- {Intrinsic::mips_ilvl_b, 66018}, // __builtin_msa_ilvl_b
- {Intrinsic::mips_ilvl_d, 66039}, // __builtin_msa_ilvl_d
- {Intrinsic::mips_ilvl_h, 66060}, // __builtin_msa_ilvl_h
- {Intrinsic::mips_ilvl_w, 66081}, // __builtin_msa_ilvl_w
- {Intrinsic::mips_ilvod_b, 66102}, // __builtin_msa_ilvod_b
- {Intrinsic::mips_ilvod_d, 66124}, // __builtin_msa_ilvod_d
- {Intrinsic::mips_ilvod_h, 66146}, // __builtin_msa_ilvod_h
- {Intrinsic::mips_ilvod_w, 66168}, // __builtin_msa_ilvod_w
- {Intrinsic::mips_ilvr_b, 66190}, // __builtin_msa_ilvr_b
- {Intrinsic::mips_ilvr_d, 66211}, // __builtin_msa_ilvr_d
- {Intrinsic::mips_ilvr_h, 66232}, // __builtin_msa_ilvr_h
- {Intrinsic::mips_ilvr_w, 66253}, // __builtin_msa_ilvr_w
- {Intrinsic::mips_insert_b, 66274}, // __builtin_msa_insert_b
- {Intrinsic::mips_insert_d, 66297}, // __builtin_msa_insert_d
- {Intrinsic::mips_insert_h, 66320}, // __builtin_msa_insert_h
- {Intrinsic::mips_insert_w, 66343}, // __builtin_msa_insert_w
- {Intrinsic::mips_insve_b, 66386}, // __builtin_msa_insve_b
- {Intrinsic::mips_insve_d, 66408}, // __builtin_msa_insve_d
- {Intrinsic::mips_insve_h, 66430}, // __builtin_msa_insve_h
- {Intrinsic::mips_insve_w, 66452}, // __builtin_msa_insve_w
- {Intrinsic::mips_ld_b, 66494}, // __builtin_msa_ld_b
- {Intrinsic::mips_ld_d, 66513}, // __builtin_msa_ld_d
- {Intrinsic::mips_ld_h, 66532}, // __builtin_msa_ld_h
- {Intrinsic::mips_ld_w, 66551}, // __builtin_msa_ld_w
- {Intrinsic::mips_ldi_b, 66570}, // __builtin_msa_ldi_b
- {Intrinsic::mips_ldi_d, 66590}, // __builtin_msa_ldi_d
- {Intrinsic::mips_ldi_h, 66610}, // __builtin_msa_ldi_h
- {Intrinsic::mips_ldi_w, 66630}, // __builtin_msa_ldi_w
- {Intrinsic::mips_madd_q_h, 66727}, // __builtin_msa_madd_q_h
- {Intrinsic::mips_madd_q_w, 66750}, // __builtin_msa_madd_q_w
- {Intrinsic::mips_maddr_q_h, 66773}, // __builtin_msa_maddr_q_h
- {Intrinsic::mips_maddr_q_w, 66797}, // __builtin_msa_maddr_q_w
- {Intrinsic::mips_maddv_b, 66842}, // __builtin_msa_maddv_b
- {Intrinsic::mips_maddv_d, 66864}, // __builtin_msa_maddv_d
- {Intrinsic::mips_maddv_h, 66886}, // __builtin_msa_maddv_h
- {Intrinsic::mips_maddv_w, 66908}, // __builtin_msa_maddv_w
- {Intrinsic::mips_max_a_b, 67040}, // __builtin_msa_max_a_b
- {Intrinsic::mips_max_a_d, 67062}, // __builtin_msa_max_a_d
- {Intrinsic::mips_max_a_h, 67084}, // __builtin_msa_max_a_h
- {Intrinsic::mips_max_a_w, 67106}, // __builtin_msa_max_a_w
- {Intrinsic::mips_max_s_b, 67128}, // __builtin_msa_max_s_b
- {Intrinsic::mips_max_s_d, 67150}, // __builtin_msa_max_s_d
- {Intrinsic::mips_max_s_h, 67172}, // __builtin_msa_max_s_h
- {Intrinsic::mips_max_s_w, 67194}, // __builtin_msa_max_s_w
- {Intrinsic::mips_max_u_b, 67216}, // __builtin_msa_max_u_b
- {Intrinsic::mips_max_u_d, 67238}, // __builtin_msa_max_u_d
- {Intrinsic::mips_max_u_h, 67260}, // __builtin_msa_max_u_h
- {Intrinsic::mips_max_u_w, 67282}, // __builtin_msa_max_u_w
- {Intrinsic::mips_maxi_s_b, 67304}, // __builtin_msa_maxi_s_b
- {Intrinsic::mips_maxi_s_d, 67327}, // __builtin_msa_maxi_s_d
- {Intrinsic::mips_maxi_s_h, 67350}, // __builtin_msa_maxi_s_h
- {Intrinsic::mips_maxi_s_w, 67373}, // __builtin_msa_maxi_s_w
- {Intrinsic::mips_maxi_u_b, 67396}, // __builtin_msa_maxi_u_b
- {Intrinsic::mips_maxi_u_d, 67419}, // __builtin_msa_maxi_u_d
- {Intrinsic::mips_maxi_u_h, 67442}, // __builtin_msa_maxi_u_h
- {Intrinsic::mips_maxi_u_w, 67465}, // __builtin_msa_maxi_u_w
- {Intrinsic::mips_min_a_b, 67488}, // __builtin_msa_min_a_b
- {Intrinsic::mips_min_a_d, 67510}, // __builtin_msa_min_a_d
- {Intrinsic::mips_min_a_h, 67532}, // __builtin_msa_min_a_h
- {Intrinsic::mips_min_a_w, 67554}, // __builtin_msa_min_a_w
- {Intrinsic::mips_min_s_b, 67576}, // __builtin_msa_min_s_b
- {Intrinsic::mips_min_s_d, 67598}, // __builtin_msa_min_s_d
- {Intrinsic::mips_min_s_h, 67620}, // __builtin_msa_min_s_h
- {Intrinsic::mips_min_s_w, 67642}, // __builtin_msa_min_s_w
- {Intrinsic::mips_min_u_b, 67664}, // __builtin_msa_min_u_b
- {Intrinsic::mips_min_u_d, 67686}, // __builtin_msa_min_u_d
- {Intrinsic::mips_min_u_h, 67708}, // __builtin_msa_min_u_h
- {Intrinsic::mips_min_u_w, 67730}, // __builtin_msa_min_u_w
- {Intrinsic::mips_mini_s_b, 67752}, // __builtin_msa_mini_s_b
- {Intrinsic::mips_mini_s_d, 67775}, // __builtin_msa_mini_s_d
- {Intrinsic::mips_mini_s_h, 67798}, // __builtin_msa_mini_s_h
- {Intrinsic::mips_mini_s_w, 67821}, // __builtin_msa_mini_s_w
- {Intrinsic::mips_mini_u_b, 67844}, // __builtin_msa_mini_u_b
- {Intrinsic::mips_mini_u_d, 67867}, // __builtin_msa_mini_u_d
- {Intrinsic::mips_mini_u_h, 67890}, // __builtin_msa_mini_u_h
- {Intrinsic::mips_mini_u_w, 67913}, // __builtin_msa_mini_u_w
- {Intrinsic::mips_mod_s_b, 67936}, // __builtin_msa_mod_s_b
- {Intrinsic::mips_mod_s_d, 67958}, // __builtin_msa_mod_s_d
- {Intrinsic::mips_mod_s_h, 67980}, // __builtin_msa_mod_s_h
- {Intrinsic::mips_mod_s_w, 68002}, // __builtin_msa_mod_s_w
- {Intrinsic::mips_mod_u_b, 68024}, // __builtin_msa_mod_u_b
- {Intrinsic::mips_mod_u_d, 68046}, // __builtin_msa_mod_u_d
- {Intrinsic::mips_mod_u_h, 68068}, // __builtin_msa_mod_u_h
- {Intrinsic::mips_mod_u_w, 68090}, // __builtin_msa_mod_u_w
- {Intrinsic::mips_move_v, 68134}, // __builtin_msa_move_v
- {Intrinsic::mips_msub_q_h, 68175}, // __builtin_msa_msub_q_h
- {Intrinsic::mips_msub_q_w, 68198}, // __builtin_msa_msub_q_w
- {Intrinsic::mips_msubr_q_h, 68221}, // __builtin_msa_msubr_q_h
- {Intrinsic::mips_msubr_q_w, 68245}, // __builtin_msa_msubr_q_w
- {Intrinsic::mips_msubv_b, 68290}, // __builtin_msa_msubv_b
- {Intrinsic::mips_msubv_d, 68312}, // __builtin_msa_msubv_d
- {Intrinsic::mips_msubv_h, 68334}, // __builtin_msa_msubv_h
- {Intrinsic::mips_msubv_w, 68356}, // __builtin_msa_msubv_w
- {Intrinsic::mips_mul_q_h, 68422}, // __builtin_msa_mul_q_h
- {Intrinsic::mips_mul_q_w, 68444}, // __builtin_msa_mul_q_w
- {Intrinsic::mips_mulr_q_h, 68708}, // __builtin_msa_mulr_q_h
- {Intrinsic::mips_mulr_q_w, 68731}, // __builtin_msa_mulr_q_w
- {Intrinsic::mips_mulv_b, 68850}, // __builtin_msa_mulv_b
- {Intrinsic::mips_mulv_d, 68871}, // __builtin_msa_mulv_d
- {Intrinsic::mips_mulv_h, 68892}, // __builtin_msa_mulv_h
- {Intrinsic::mips_mulv_w, 68913}, // __builtin_msa_mulv_w
- {Intrinsic::mips_nloc_b, 68934}, // __builtin_msa_nloc_b
- {Intrinsic::mips_nloc_d, 68955}, // __builtin_msa_nloc_d
- {Intrinsic::mips_nloc_h, 68976}, // __builtin_msa_nloc_h
- {Intrinsic::mips_nloc_w, 68997}, // __builtin_msa_nloc_w
- {Intrinsic::mips_nlzc_b, 69018}, // __builtin_msa_nlzc_b
- {Intrinsic::mips_nlzc_d, 69039}, // __builtin_msa_nlzc_d
- {Intrinsic::mips_nlzc_h, 69060}, // __builtin_msa_nlzc_h
- {Intrinsic::mips_nlzc_w, 69081}, // __builtin_msa_nlzc_w
- {Intrinsic::mips_nor_v, 69102}, // __builtin_msa_nor_v
- {Intrinsic::mips_nori_b, 69122}, // __builtin_msa_nori_b
- {Intrinsic::mips_or_v, 69143}, // __builtin_msa_or_v
- {Intrinsic::mips_ori_b, 69162}, // __builtin_msa_ori_b
- {Intrinsic::mips_pckev_b, 69207}, // __builtin_msa_pckev_b
- {Intrinsic::mips_pckev_d, 69229}, // __builtin_msa_pckev_d
- {Intrinsic::mips_pckev_h, 69251}, // __builtin_msa_pckev_h
- {Intrinsic::mips_pckev_w, 69273}, // __builtin_msa_pckev_w
- {Intrinsic::mips_pckod_b, 69295}, // __builtin_msa_pckod_b
- {Intrinsic::mips_pckod_d, 69317}, // __builtin_msa_pckod_d
- {Intrinsic::mips_pckod_h, 69339}, // __builtin_msa_pckod_h
- {Intrinsic::mips_pckod_w, 69361}, // __builtin_msa_pckod_w
- {Intrinsic::mips_pcnt_b, 69383}, // __builtin_msa_pcnt_b
- {Intrinsic::mips_pcnt_d, 69404}, // __builtin_msa_pcnt_d
- {Intrinsic::mips_pcnt_h, 69425}, // __builtin_msa_pcnt_h
- {Intrinsic::mips_pcnt_w, 69446}, // __builtin_msa_pcnt_w
- {Intrinsic::mips_sat_s_b, 70130}, // __builtin_msa_sat_s_b
- {Intrinsic::mips_sat_s_d, 70152}, // __builtin_msa_sat_s_d
- {Intrinsic::mips_sat_s_h, 70174}, // __builtin_msa_sat_s_h
- {Intrinsic::mips_sat_s_w, 70196}, // __builtin_msa_sat_s_w
- {Intrinsic::mips_sat_u_b, 70218}, // __builtin_msa_sat_u_b
- {Intrinsic::mips_sat_u_d, 70240}, // __builtin_msa_sat_u_d
- {Intrinsic::mips_sat_u_h, 70262}, // __builtin_msa_sat_u_h
- {Intrinsic::mips_sat_u_w, 70284}, // __builtin_msa_sat_u_w
- {Intrinsic::mips_shf_b, 70306}, // __builtin_msa_shf_b
- {Intrinsic::mips_shf_h, 70326}, // __builtin_msa_shf_h
- {Intrinsic::mips_shf_w, 70346}, // __builtin_msa_shf_w
- {Intrinsic::mips_sld_b, 70648}, // __builtin_msa_sld_b
- {Intrinsic::mips_sld_d, 70668}, // __builtin_msa_sld_d
- {Intrinsic::mips_sld_h, 70688}, // __builtin_msa_sld_h
- {Intrinsic::mips_sld_w, 70708}, // __builtin_msa_sld_w
- {Intrinsic::mips_sldi_b, 70728}, // __builtin_msa_sldi_b
- {Intrinsic::mips_sldi_d, 70749}, // __builtin_msa_sldi_d
- {Intrinsic::mips_sldi_h, 70770}, // __builtin_msa_sldi_h
- {Intrinsic::mips_sldi_w, 70791}, // __builtin_msa_sldi_w
- {Intrinsic::mips_sll_b, 70812}, // __builtin_msa_sll_b
- {Intrinsic::mips_sll_d, 70832}, // __builtin_msa_sll_d
- {Intrinsic::mips_sll_h, 70852}, // __builtin_msa_sll_h
- {Intrinsic::mips_sll_w, 70872}, // __builtin_msa_sll_w
- {Intrinsic::mips_slli_b, 70892}, // __builtin_msa_slli_b
- {Intrinsic::mips_slli_d, 70913}, // __builtin_msa_slli_d
- {Intrinsic::mips_slli_h, 70934}, // __builtin_msa_slli_h
- {Intrinsic::mips_slli_w, 70955}, // __builtin_msa_slli_w
- {Intrinsic::mips_splat_b, 70976}, // __builtin_msa_splat_b
- {Intrinsic::mips_splat_d, 70998}, // __builtin_msa_splat_d
- {Intrinsic::mips_splat_h, 71020}, // __builtin_msa_splat_h
- {Intrinsic::mips_splat_w, 71042}, // __builtin_msa_splat_w
- {Intrinsic::mips_splati_b, 71064}, // __builtin_msa_splati_b
- {Intrinsic::mips_splati_d, 71087}, // __builtin_msa_splati_d
- {Intrinsic::mips_splati_h, 71110}, // __builtin_msa_splati_h
- {Intrinsic::mips_splati_w, 71133}, // __builtin_msa_splati_w
- {Intrinsic::mips_sra_b, 71156}, // __builtin_msa_sra_b
- {Intrinsic::mips_sra_d, 71176}, // __builtin_msa_sra_d
- {Intrinsic::mips_sra_h, 71196}, // __builtin_msa_sra_h
- {Intrinsic::mips_sra_w, 71216}, // __builtin_msa_sra_w
- {Intrinsic::mips_srai_b, 71236}, // __builtin_msa_srai_b
- {Intrinsic::mips_srai_d, 71257}, // __builtin_msa_srai_d
- {Intrinsic::mips_srai_h, 71278}, // __builtin_msa_srai_h
- {Intrinsic::mips_srai_w, 71299}, // __builtin_msa_srai_w
- {Intrinsic::mips_srar_b, 71320}, // __builtin_msa_srar_b
- {Intrinsic::mips_srar_d, 71341}, // __builtin_msa_srar_d
- {Intrinsic::mips_srar_h, 71362}, // __builtin_msa_srar_h
- {Intrinsic::mips_srar_w, 71383}, // __builtin_msa_srar_w
- {Intrinsic::mips_srari_b, 71404}, // __builtin_msa_srari_b
- {Intrinsic::mips_srari_d, 71426}, // __builtin_msa_srari_d
- {Intrinsic::mips_srari_h, 71448}, // __builtin_msa_srari_h
- {Intrinsic::mips_srari_w, 71470}, // __builtin_msa_srari_w
- {Intrinsic::mips_srl_b, 71492}, // __builtin_msa_srl_b
- {Intrinsic::mips_srl_d, 71512}, // __builtin_msa_srl_d
- {Intrinsic::mips_srl_h, 71532}, // __builtin_msa_srl_h
- {Intrinsic::mips_srl_w, 71552}, // __builtin_msa_srl_w
- {Intrinsic::mips_srli_b, 71572}, // __builtin_msa_srli_b
- {Intrinsic::mips_srli_d, 71593}, // __builtin_msa_srli_d
- {Intrinsic::mips_srli_h, 71614}, // __builtin_msa_srli_h
- {Intrinsic::mips_srli_w, 71635}, // __builtin_msa_srli_w
- {Intrinsic::mips_srlr_b, 71656}, // __builtin_msa_srlr_b
- {Intrinsic::mips_srlr_d, 71677}, // __builtin_msa_srlr_d
- {Intrinsic::mips_srlr_h, 71698}, // __builtin_msa_srlr_h
- {Intrinsic::mips_srlr_w, 71719}, // __builtin_msa_srlr_w
- {Intrinsic::mips_srlri_b, 71740}, // __builtin_msa_srlri_b
- {Intrinsic::mips_srlri_d, 71762}, // __builtin_msa_srlri_d
- {Intrinsic::mips_srlri_h, 71784}, // __builtin_msa_srlri_h
- {Intrinsic::mips_srlri_w, 71806}, // __builtin_msa_srlri_w
- {Intrinsic::mips_st_b, 71828}, // __builtin_msa_st_b
- {Intrinsic::mips_st_d, 71847}, // __builtin_msa_st_d
- {Intrinsic::mips_st_h, 71866}, // __builtin_msa_st_h
- {Intrinsic::mips_st_w, 71885}, // __builtin_msa_st_w
- {Intrinsic::mips_subs_s_b, 72074}, // __builtin_msa_subs_s_b
- {Intrinsic::mips_subs_s_d, 72097}, // __builtin_msa_subs_s_d
- {Intrinsic::mips_subs_s_h, 72120}, // __builtin_msa_subs_s_h
- {Intrinsic::mips_subs_s_w, 72143}, // __builtin_msa_subs_s_w
- {Intrinsic::mips_subs_u_b, 72166}, // __builtin_msa_subs_u_b
- {Intrinsic::mips_subs_u_d, 72189}, // __builtin_msa_subs_u_d
- {Intrinsic::mips_subs_u_h, 72212}, // __builtin_msa_subs_u_h
- {Intrinsic::mips_subs_u_w, 72235}, // __builtin_msa_subs_u_w
- {Intrinsic::mips_subsus_u_b, 72258}, // __builtin_msa_subsus_u_b
- {Intrinsic::mips_subsus_u_d, 72283}, // __builtin_msa_subsus_u_d
- {Intrinsic::mips_subsus_u_h, 72308}, // __builtin_msa_subsus_u_h
- {Intrinsic::mips_subsus_u_w, 72333}, // __builtin_msa_subsus_u_w
- {Intrinsic::mips_subsuu_s_b, 72358}, // __builtin_msa_subsuu_s_b
- {Intrinsic::mips_subsuu_s_d, 72383}, // __builtin_msa_subsuu_s_d
- {Intrinsic::mips_subsuu_s_h, 72408}, // __builtin_msa_subsuu_s_h
- {Intrinsic::mips_subsuu_s_w, 72433}, // __builtin_msa_subsuu_s_w
- {Intrinsic::mips_subv_b, 72604}, // __builtin_msa_subv_b
- {Intrinsic::mips_subv_d, 72625}, // __builtin_msa_subv_d
- {Intrinsic::mips_subv_h, 72646}, // __builtin_msa_subv_h
- {Intrinsic::mips_subv_w, 72667}, // __builtin_msa_subv_w
- {Intrinsic::mips_subvi_b, 72688}, // __builtin_msa_subvi_b
- {Intrinsic::mips_subvi_d, 72710}, // __builtin_msa_subvi_d
- {Intrinsic::mips_subvi_h, 72732}, // __builtin_msa_subvi_h
- {Intrinsic::mips_subvi_w, 72754}, // __builtin_msa_subvi_w
- {Intrinsic::mips_vshf_b, 72776}, // __builtin_msa_vshf_b
- {Intrinsic::mips_vshf_d, 72797}, // __builtin_msa_vshf_d
- {Intrinsic::mips_vshf_h, 72818}, // __builtin_msa_vshf_h
- {Intrinsic::mips_vshf_w, 72839}, // __builtin_msa_vshf_w
- {Intrinsic::mips_xor_v, 72881}, // __builtin_msa_xor_v
- {Intrinsic::mips_xori_b, 72901}, // __builtin_msa_xori_b
+ {Intrinsic::mips_absq_s_ph, 59543}, // __builtin_mips_absq_s_ph
+ {Intrinsic::mips_absq_s_qb, 59568}, // __builtin_mips_absq_s_qb
+ {Intrinsic::mips_absq_s_w, 59593}, // __builtin_mips_absq_s_w
+ {Intrinsic::mips_addq_ph, 59705}, // __builtin_mips_addq_ph
+ {Intrinsic::mips_addq_s_ph, 59728}, // __builtin_mips_addq_s_ph
+ {Intrinsic::mips_addq_s_w, 59753}, // __builtin_mips_addq_s_w
+ {Intrinsic::mips_addqh_ph, 59777}, // __builtin_mips_addqh_ph
+ {Intrinsic::mips_addqh_r_ph, 59801}, // __builtin_mips_addqh_r_ph
+ {Intrinsic::mips_addqh_r_w, 59827}, // __builtin_mips_addqh_r_w
+ {Intrinsic::mips_addqh_w, 59852}, // __builtin_mips_addqh_w
+ {Intrinsic::mips_addsc, 60151}, // __builtin_mips_addsc
+ {Intrinsic::mips_addu_ph, 60172}, // __builtin_mips_addu_ph
+ {Intrinsic::mips_addu_qb, 60195}, // __builtin_mips_addu_qb
+ {Intrinsic::mips_addu_s_ph, 60218}, // __builtin_mips_addu_s_ph
+ {Intrinsic::mips_addu_s_qb, 60243}, // __builtin_mips_addu_s_qb
+ {Intrinsic::mips_adduh_qb, 60268}, // __builtin_mips_adduh_qb
+ {Intrinsic::mips_adduh_r_qb, 60292}, // __builtin_mips_adduh_r_qb
+ {Intrinsic::mips_addwc, 60490}, // __builtin_mips_addwc
+ {Intrinsic::mips_append, 60552}, // __builtin_mips_append
+ {Intrinsic::mips_balign, 61118}, // __builtin_mips_balign
+ {Intrinsic::mips_bitrev, 61672}, // __builtin_mips_bitrev
+ {Intrinsic::mips_bposge32, 62050}, // __builtin_mips_bposge32
+ {Intrinsic::mips_cmp_eq_ph, 63289}, // __builtin_mips_cmp_eq_ph
+ {Intrinsic::mips_cmp_le_ph, 63314}, // __builtin_mips_cmp_le_ph
+ {Intrinsic::mips_cmp_lt_ph, 63339}, // __builtin_mips_cmp_lt_ph
+ {Intrinsic::mips_cmpgdu_eq_qb, 63364}, // __builtin_mips_cmpgdu_eq_qb
+ {Intrinsic::mips_cmpgdu_le_qb, 63392}, // __builtin_mips_cmpgdu_le_qb
+ {Intrinsic::mips_cmpgdu_lt_qb, 63420}, // __builtin_mips_cmpgdu_lt_qb
+ {Intrinsic::mips_cmpgu_eq_qb, 63448}, // __builtin_mips_cmpgu_eq_qb
+ {Intrinsic::mips_cmpgu_le_qb, 63475}, // __builtin_mips_cmpgu_le_qb
+ {Intrinsic::mips_cmpgu_lt_qb, 63502}, // __builtin_mips_cmpgu_lt_qb
+ {Intrinsic::mips_cmpu_eq_qb, 63529}, // __builtin_mips_cmpu_eq_qb
+ {Intrinsic::mips_cmpu_le_qb, 63555}, // __builtin_mips_cmpu_le_qb
+ {Intrinsic::mips_cmpu_lt_qb, 63581}, // __builtin_mips_cmpu_lt_qb
+ {Intrinsic::mips_dlsa, 63988}, // __builtin_mips_dlsa
+ {Intrinsic::mips_dpa_w_ph, 64146}, // __builtin_mips_dpa_w_ph
+ {Intrinsic::mips_dpaq_s_w_ph, 64314}, // __builtin_mips_dpaq_s_w_ph
+ {Intrinsic::mips_dpaq_sa_l_w, 64341}, // __builtin_mips_dpaq_sa_l_w
+ {Intrinsic::mips_dpaqx_s_w_ph, 64368}, // __builtin_mips_dpaqx_s_w_ph
+ {Intrinsic::mips_dpaqx_sa_w_ph, 64396}, // __builtin_mips_dpaqx_sa_w_ph
+ {Intrinsic::mips_dpau_h_qbl, 64425}, // __builtin_mips_dpau_h_qbl
+ {Intrinsic::mips_dpau_h_qbr, 64451}, // __builtin_mips_dpau_h_qbr
+ {Intrinsic::mips_dpax_w_ph, 64477}, // __builtin_mips_dpax_w_ph
+ {Intrinsic::mips_dps_w_ph, 64502}, // __builtin_mips_dps_w_ph
+ {Intrinsic::mips_dpsq_s_w_ph, 64526}, // __builtin_mips_dpsq_s_w_ph
+ {Intrinsic::mips_dpsq_sa_l_w, 64553}, // __builtin_mips_dpsq_sa_l_w
+ {Intrinsic::mips_dpsqx_s_w_ph, 64580}, // __builtin_mips_dpsqx_s_w_ph
+ {Intrinsic::mips_dpsqx_sa_w_ph, 64608}, // __builtin_mips_dpsqx_sa_w_ph
+ {Intrinsic::mips_dpsu_h_qbl, 64637}, // __builtin_mips_dpsu_h_qbl
+ {Intrinsic::mips_dpsu_h_qbr, 64663}, // __builtin_mips_dpsu_h_qbr
+ {Intrinsic::mips_dpsx_w_ph, 64833}, // __builtin_mips_dpsx_w_ph
+ {Intrinsic::mips_extp, 64858}, // __builtin_mips_extp
+ {Intrinsic::mips_extpdp, 64878}, // __builtin_mips_extpdp
+ {Intrinsic::mips_extr_r_w, 64900}, // __builtin_mips_extr_r_w
+ {Intrinsic::mips_extr_rs_w, 64924}, // __builtin_mips_extr_rs_w
+ {Intrinsic::mips_extr_s_h, 64949}, // __builtin_mips_extr_s_h
+ {Intrinsic::mips_extr_w, 64973}, // __builtin_mips_extr_w
+ {Intrinsic::mips_insv, 68025}, // __builtin_mips_insv
+ {Intrinsic::mips_lbux, 68133}, // __builtin_mips_lbux
+ {Intrinsic::mips_lhx, 68309}, // __builtin_mips_lhx
+ {Intrinsic::mips_lsa, 68328}, // __builtin_mips_lsa
+ {Intrinsic::mips_lwx, 68347}, // __builtin_mips_lwx
+ {Intrinsic::mips_madd, 68366}, // __builtin_mips_madd
+ {Intrinsic::mips_maddu, 68480}, // __builtin_mips_maddu
+ {Intrinsic::mips_maq_s_w_phl, 68589}, // __builtin_mips_maq_s_w_phl
+ {Intrinsic::mips_maq_s_w_phr, 68616}, // __builtin_mips_maq_s_w_phr
+ {Intrinsic::mips_maq_sa_w_phl, 68643}, // __builtin_mips_maq_sa_w_phl
+ {Intrinsic::mips_maq_sa_w_phr, 68671}, // __builtin_mips_maq_sa_w_phr
+ {Intrinsic::mips_modsub, 69771}, // __builtin_mips_modsub
+ {Intrinsic::mips_msub, 69814}, // __builtin_mips_msub
+ {Intrinsic::mips_msubu, 69928}, // __builtin_mips_msubu
+ {Intrinsic::mips_mthlip, 70037}, // __builtin_mips_mthlip
+ {Intrinsic::mips_mul_ph, 70059}, // __builtin_mips_mul_ph
+ {Intrinsic::mips_mul_s_ph, 70125}, // __builtin_mips_mul_s_ph
+ {Intrinsic::mips_muleq_s_w_phl, 70149}, // __builtin_mips_muleq_s_w_phl
+ {Intrinsic::mips_muleq_s_w_phr, 70178}, // __builtin_mips_muleq_s_w_phr
+ {Intrinsic::mips_muleu_s_ph_qbl, 70207}, // __builtin_mips_muleu_s_ph_qbl
+ {Intrinsic::mips_muleu_s_ph_qbr, 70237}, // __builtin_mips_muleu_s_ph_qbr
+ {Intrinsic::mips_mulq_rs_ph, 70267}, // __builtin_mips_mulq_rs_ph
+ {Intrinsic::mips_mulq_rs_w, 70293}, // __builtin_mips_mulq_rs_w
+ {Intrinsic::mips_mulq_s_ph, 70318}, // __builtin_mips_mulq_s_ph
+ {Intrinsic::mips_mulq_s_w, 70343}, // __builtin_mips_mulq_s_w
+ {Intrinsic::mips_mulsa_w_ph, 70413}, // __builtin_mips_mulsa_w_ph
+ {Intrinsic::mips_mulsaq_s_w_ph, 70439}, // __builtin_mips_mulsaq_s_w_ph
+ {Intrinsic::mips_mult, 70468}, // __builtin_mips_mult
+ {Intrinsic::mips_multu, 70488}, // __builtin_mips_multu
+ {Intrinsic::mips_packrl_ph, 70841}, // __builtin_mips_packrl_ph
+ {Intrinsic::mips_pick_ph, 71126}, // __builtin_mips_pick_ph
+ {Intrinsic::mips_pick_qb, 71149}, // __builtin_mips_pick_qb
+ {Intrinsic::mips_preceq_w_phl, 71172}, // __builtin_mips_preceq_w_phl
+ {Intrinsic::mips_preceq_w_phr, 71200}, // __builtin_mips_preceq_w_phr
+ {Intrinsic::mips_precequ_ph_qbl, 71228}, // __builtin_mips_precequ_ph_qbl
+ {Intrinsic::mips_precequ_ph_qbla, 71258}, // __builtin_mips_precequ_ph_qbla
+ {Intrinsic::mips_precequ_ph_qbr, 71289}, // __builtin_mips_precequ_ph_qbr
+ {Intrinsic::mips_precequ_ph_qbra, 71319}, // __builtin_mips_precequ_ph_qbra
+ {Intrinsic::mips_preceu_ph_qbl, 71350}, // __builtin_mips_preceu_ph_qbl
+ {Intrinsic::mips_preceu_ph_qbla, 71379}, // __builtin_mips_preceu_ph_qbla
+ {Intrinsic::mips_preceu_ph_qbr, 71409}, // __builtin_mips_preceu_ph_qbr
+ {Intrinsic::mips_preceu_ph_qbra, 71438}, // __builtin_mips_preceu_ph_qbra
+ {Intrinsic::mips_precr_qb_ph, 71468}, // __builtin_mips_precr_qb_ph
+ {Intrinsic::mips_precr_sra_ph_w, 71495}, // __builtin_mips_precr_sra_ph_w
+ {Intrinsic::mips_precr_sra_r_ph_w, 71525}, // __builtin_mips_precr_sra_r_ph_w
+ {Intrinsic::mips_precrq_ph_w, 71557}, // __builtin_mips_precrq_ph_w
+ {Intrinsic::mips_precrq_qb_ph, 71584}, // __builtin_mips_precrq_qb_ph
+ {Intrinsic::mips_precrq_rs_ph_w, 71612}, // __builtin_mips_precrq_rs_ph_w
+ {Intrinsic::mips_precrqu_s_qb_ph, 71642}, // __builtin_mips_precrqu_s_qb_ph
+ {Intrinsic::mips_prepend, 71673}, // __builtin_mips_prepend
+ {Intrinsic::mips_raddu_w_qb, 71696}, // __builtin_mips_raddu_w_qb
+ {Intrinsic::mips_rddsp, 71722}, // __builtin_mips_rddsp
+ {Intrinsic::mips_repl_ph, 71743}, // __builtin_mips_repl_ph
+ {Intrinsic::mips_repl_qb, 71766}, // __builtin_mips_repl_qb
+ {Intrinsic::mips_shilo, 72025}, // __builtin_mips_shilo
+ {Intrinsic::mips_shll_ph, 72046}, // __builtin_mips_shll_ph
+ {Intrinsic::mips_shll_qb, 72069}, // __builtin_mips_shll_qb
+ {Intrinsic::mips_shll_s_ph, 72092}, // __builtin_mips_shll_s_ph
+ {Intrinsic::mips_shll_s_w, 72117}, // __builtin_mips_shll_s_w
+ {Intrinsic::mips_shra_ph, 72141}, // __builtin_mips_shra_ph
+ {Intrinsic::mips_shra_qb, 72164}, // __builtin_mips_shra_qb
+ {Intrinsic::mips_shra_r_ph, 72187}, // __builtin_mips_shra_r_ph
+ {Intrinsic::mips_shra_r_qb, 72212}, // __builtin_mips_shra_r_qb
+ {Intrinsic::mips_shra_r_w, 72237}, // __builtin_mips_shra_r_w
+ {Intrinsic::mips_shrl_ph, 72261}, // __builtin_mips_shrl_ph
+ {Intrinsic::mips_shrl_qb, 72284}, // __builtin_mips_shrl_qb
+ {Intrinsic::mips_subq_ph, 73563}, // __builtin_mips_subq_ph
+ {Intrinsic::mips_subq_s_ph, 73586}, // __builtin_mips_subq_s_ph
+ {Intrinsic::mips_subq_s_w, 73611}, // __builtin_mips_subq_s_w
+ {Intrinsic::mips_subqh_ph, 73635}, // __builtin_mips_subqh_ph
+ {Intrinsic::mips_subqh_r_ph, 73659}, // __builtin_mips_subqh_r_ph
+ {Intrinsic::mips_subqh_r_w, 73685}, // __builtin_mips_subqh_r_w
+ {Intrinsic::mips_subqh_w, 73710}, // __builtin_mips_subqh_w
+ {Intrinsic::mips_subu_ph, 74117}, // __builtin_mips_subu_ph
+ {Intrinsic::mips_subu_qb, 74140}, // __builtin_mips_subu_qb
+ {Intrinsic::mips_subu_s_ph, 74163}, // __builtin_mips_subu_s_ph
+ {Intrinsic::mips_subu_s_qb, 74188}, // __builtin_mips_subu_s_qb
+ {Intrinsic::mips_subuh_qb, 74213}, // __builtin_mips_subuh_qb
+ {Intrinsic::mips_subuh_r_qb, 74237}, // __builtin_mips_subuh_r_qb
+ {Intrinsic::mips_wrdsp, 74519}, // __builtin_mips_wrdsp
+ {Intrinsic::mips_add_a_b, 59617}, // __builtin_msa_add_a_b
+ {Intrinsic::mips_add_a_d, 59639}, // __builtin_msa_add_a_d
+ {Intrinsic::mips_add_a_h, 59661}, // __builtin_msa_add_a_h
+ {Intrinsic::mips_add_a_w, 59683}, // __builtin_msa_add_a_w
+ {Intrinsic::mips_adds_a_b, 59875}, // __builtin_msa_adds_a_b
+ {Intrinsic::mips_adds_a_d, 59898}, // __builtin_msa_adds_a_d
+ {Intrinsic::mips_adds_a_h, 59921}, // __builtin_msa_adds_a_h
+ {Intrinsic::mips_adds_a_w, 59944}, // __builtin_msa_adds_a_w
+ {Intrinsic::mips_adds_s_b, 59967}, // __builtin_msa_adds_s_b
+ {Intrinsic::mips_adds_s_d, 59990}, // __builtin_msa_adds_s_d
+ {Intrinsic::mips_adds_s_h, 60013}, // __builtin_msa_adds_s_h
+ {Intrinsic::mips_adds_s_w, 60036}, // __builtin_msa_adds_s_w
+ {Intrinsic::mips_adds_u_b, 60059}, // __builtin_msa_adds_u_b
+ {Intrinsic::mips_adds_u_d, 60082}, // __builtin_msa_adds_u_d
+ {Intrinsic::mips_adds_u_h, 60105}, // __builtin_msa_adds_u_h
+ {Intrinsic::mips_adds_u_w, 60128}, // __builtin_msa_adds_u_w
+ {Intrinsic::mips_addv_b, 60318}, // __builtin_msa_addv_b
+ {Intrinsic::mips_addv_d, 60339}, // __builtin_msa_addv_d
+ {Intrinsic::mips_addv_h, 60360}, // __builtin_msa_addv_h
+ {Intrinsic::mips_addv_w, 60381}, // __builtin_msa_addv_w
+ {Intrinsic::mips_addvi_b, 60402}, // __builtin_msa_addvi_b
+ {Intrinsic::mips_addvi_d, 60424}, // __builtin_msa_addvi_d
+ {Intrinsic::mips_addvi_h, 60446}, // __builtin_msa_addvi_h
+ {Intrinsic::mips_addvi_w, 60468}, // __builtin_msa_addvi_w
+ {Intrinsic::mips_and_v, 60511}, // __builtin_msa_and_v
+ {Intrinsic::mips_andi_b, 60531}, // __builtin_msa_andi_b
+ {Intrinsic::mips_asub_s_b, 60574}, // __builtin_msa_asub_s_b
+ {Intrinsic::mips_asub_s_d, 60597}, // __builtin_msa_asub_s_d
+ {Intrinsic::mips_asub_s_h, 60620}, // __builtin_msa_asub_s_h
+ {Intrinsic::mips_asub_s_w, 60643}, // __builtin_msa_asub_s_w
+ {Intrinsic::mips_asub_u_b, 60666}, // __builtin_msa_asub_u_b
+ {Intrinsic::mips_asub_u_d, 60689}, // __builtin_msa_asub_u_d
+ {Intrinsic::mips_asub_u_h, 60712}, // __builtin_msa_asub_u_h
+ {Intrinsic::mips_asub_u_w, 60735}, // __builtin_msa_asub_u_w
+ {Intrinsic::mips_ave_s_b, 60758}, // __builtin_msa_ave_s_b
+ {Intrinsic::mips_ave_s_d, 60780}, // __builtin_msa_ave_s_d
+ {Intrinsic::mips_ave_s_h, 60802}, // __builtin_msa_ave_s_h
+ {Intrinsic::mips_ave_s_w, 60824}, // __builtin_msa_ave_s_w
+ {Intrinsic::mips_ave_u_b, 60846}, // __builtin_msa_ave_u_b
+ {Intrinsic::mips_ave_u_d, 60868}, // __builtin_msa_ave_u_d
+ {Intrinsic::mips_ave_u_h, 60890}, // __builtin_msa_ave_u_h
+ {Intrinsic::mips_ave_u_w, 60912}, // __builtin_msa_ave_u_w
+ {Intrinsic::mips_aver_s_b, 60934}, // __builtin_msa_aver_s_b
+ {Intrinsic::mips_aver_s_d, 60957}, // __builtin_msa_aver_s_d
+ {Intrinsic::mips_aver_s_h, 60980}, // __builtin_msa_aver_s_h
+ {Intrinsic::mips_aver_s_w, 61003}, // __builtin_msa_aver_s_w
+ {Intrinsic::mips_aver_u_b, 61026}, // __builtin_msa_aver_u_b
+ {Intrinsic::mips_aver_u_d, 61049}, // __builtin_msa_aver_u_d
+ {Intrinsic::mips_aver_u_h, 61072}, // __builtin_msa_aver_u_h
+ {Intrinsic::mips_aver_u_w, 61095}, // __builtin_msa_aver_u_w
+ {Intrinsic::mips_bclr_b, 61140}, // __builtin_msa_bclr_b
+ {Intrinsic::mips_bclr_d, 61161}, // __builtin_msa_bclr_d
+ {Intrinsic::mips_bclr_h, 61182}, // __builtin_msa_bclr_h
+ {Intrinsic::mips_bclr_w, 61203}, // __builtin_msa_bclr_w
+ {Intrinsic::mips_bclri_b, 61224}, // __builtin_msa_bclri_b
+ {Intrinsic::mips_bclri_d, 61246}, // __builtin_msa_bclri_d
+ {Intrinsic::mips_bclri_h, 61268}, // __builtin_msa_bclri_h
+ {Intrinsic::mips_bclri_w, 61290}, // __builtin_msa_bclri_w
+ {Intrinsic::mips_binsl_b, 61312}, // __builtin_msa_binsl_b
+ {Intrinsic::mips_binsl_d, 61334}, // __builtin_msa_binsl_d
+ {Intrinsic::mips_binsl_h, 61356}, // __builtin_msa_binsl_h
+ {Intrinsic::mips_binsl_w, 61378}, // __builtin_msa_binsl_w
+ {Intrinsic::mips_binsli_b, 61400}, // __builtin_msa_binsli_b
+ {Intrinsic::mips_binsli_d, 61423}, // __builtin_msa_binsli_d
+ {Intrinsic::mips_binsli_h, 61446}, // __builtin_msa_binsli_h
+ {Intrinsic::mips_binsli_w, 61469}, // __builtin_msa_binsli_w
+ {Intrinsic::mips_binsr_b, 61492}, // __builtin_msa_binsr_b
+ {Intrinsic::mips_binsr_d, 61514}, // __builtin_msa_binsr_d
+ {Intrinsic::mips_binsr_h, 61536}, // __builtin_msa_binsr_h
+ {Intrinsic::mips_binsr_w, 61558}, // __builtin_msa_binsr_w
+ {Intrinsic::mips_binsri_b, 61580}, // __builtin_msa_binsri_b
+ {Intrinsic::mips_binsri_d, 61603}, // __builtin_msa_binsri_d
+ {Intrinsic::mips_binsri_h, 61626}, // __builtin_msa_binsri_h
+ {Intrinsic::mips_binsri_w, 61649}, // __builtin_msa_binsri_w
+ {Intrinsic::mips_bmnz_v, 61694}, // __builtin_msa_bmnz_v
+ {Intrinsic::mips_bmnzi_b, 61715}, // __builtin_msa_bmnzi_b
+ {Intrinsic::mips_bmz_v, 61737}, // __builtin_msa_bmz_v
+ {Intrinsic::mips_bmzi_b, 61757}, // __builtin_msa_bmzi_b
+ {Intrinsic::mips_bneg_b, 61778}, // __builtin_msa_bneg_b
+ {Intrinsic::mips_bneg_d, 61799}, // __builtin_msa_bneg_d
+ {Intrinsic::mips_bneg_h, 61820}, // __builtin_msa_bneg_h
+ {Intrinsic::mips_bneg_w, 61841}, // __builtin_msa_bneg_w
+ {Intrinsic::mips_bnegi_b, 61862}, // __builtin_msa_bnegi_b
+ {Intrinsic::mips_bnegi_d, 61884}, // __builtin_msa_bnegi_d
+ {Intrinsic::mips_bnegi_h, 61906}, // __builtin_msa_bnegi_h
+ {Intrinsic::mips_bnegi_w, 61928}, // __builtin_msa_bnegi_w
+ {Intrinsic::mips_bnz_b, 61950}, // __builtin_msa_bnz_b
+ {Intrinsic::mips_bnz_d, 61970}, // __builtin_msa_bnz_d
+ {Intrinsic::mips_bnz_h, 61990}, // __builtin_msa_bnz_h
+ {Intrinsic::mips_bnz_v, 62010}, // __builtin_msa_bnz_v
+ {Intrinsic::mips_bnz_w, 62030}, // __builtin_msa_bnz_w
+ {Intrinsic::mips_bsel_v, 62074}, // __builtin_msa_bsel_v
+ {Intrinsic::mips_bseli_b, 62095}, // __builtin_msa_bseli_b
+ {Intrinsic::mips_bset_b, 62117}, // __builtin_msa_bset_b
+ {Intrinsic::mips_bset_d, 62138}, // __builtin_msa_bset_d
+ {Intrinsic::mips_bset_h, 62159}, // __builtin_msa_bset_h
+ {Intrinsic::mips_bset_w, 62180}, // __builtin_msa_bset_w
+ {Intrinsic::mips_bseti_b, 62201}, // __builtin_msa_bseti_b
+ {Intrinsic::mips_bseti_d, 62223}, // __builtin_msa_bseti_d
+ {Intrinsic::mips_bseti_h, 62245}, // __builtin_msa_bseti_h
+ {Intrinsic::mips_bseti_w, 62267}, // __builtin_msa_bseti_w
+ {Intrinsic::mips_bz_b, 62289}, // __builtin_msa_bz_b
+ {Intrinsic::mips_bz_d, 62308}, // __builtin_msa_bz_d
+ {Intrinsic::mips_bz_h, 62327}, // __builtin_msa_bz_h
+ {Intrinsic::mips_bz_v, 62346}, // __builtin_msa_bz_v
+ {Intrinsic::mips_bz_w, 62365}, // __builtin_msa_bz_w
+ {Intrinsic::mips_ceq_b, 62384}, // __builtin_msa_ceq_b
+ {Intrinsic::mips_ceq_d, 62404}, // __builtin_msa_ceq_d
+ {Intrinsic::mips_ceq_h, 62424}, // __builtin_msa_ceq_h
+ {Intrinsic::mips_ceq_w, 62444}, // __builtin_msa_ceq_w
+ {Intrinsic::mips_ceqi_b, 62464}, // __builtin_msa_ceqi_b
+ {Intrinsic::mips_ceqi_d, 62485}, // __builtin_msa_ceqi_d
+ {Intrinsic::mips_ceqi_h, 62506}, // __builtin_msa_ceqi_h
+ {Intrinsic::mips_ceqi_w, 62527}, // __builtin_msa_ceqi_w
+ {Intrinsic::mips_cfcmsa, 62548}, // __builtin_msa_cfcmsa
+ {Intrinsic::mips_cle_s_b, 62569}, // __builtin_msa_cle_s_b
+ {Intrinsic::mips_cle_s_d, 62591}, // __builtin_msa_cle_s_d
+ {Intrinsic::mips_cle_s_h, 62613}, // __builtin_msa_cle_s_h
+ {Intrinsic::mips_cle_s_w, 62635}, // __builtin_msa_cle_s_w
+ {Intrinsic::mips_cle_u_b, 62657}, // __builtin_msa_cle_u_b
+ {Intrinsic::mips_cle_u_d, 62679}, // __builtin_msa_cle_u_d
+ {Intrinsic::mips_cle_u_h, 62701}, // __builtin_msa_cle_u_h
+ {Intrinsic::mips_cle_u_w, 62723}, // __builtin_msa_cle_u_w
+ {Intrinsic::mips_clei_s_b, 62745}, // __builtin_msa_clei_s_b
+ {Intrinsic::mips_clei_s_d, 62768}, // __builtin_msa_clei_s_d
+ {Intrinsic::mips_clei_s_h, 62791}, // __builtin_msa_clei_s_h
+ {Intrinsic::mips_clei_s_w, 62814}, // __builtin_msa_clei_s_w
+ {Intrinsic::mips_clei_u_b, 62837}, // __builtin_msa_clei_u_b
+ {Intrinsic::mips_clei_u_d, 62860}, // __builtin_msa_clei_u_d
+ {Intrinsic::mips_clei_u_h, 62883}, // __builtin_msa_clei_u_h
+ {Intrinsic::mips_clei_u_w, 62906}, // __builtin_msa_clei_u_w
+ {Intrinsic::mips_clt_s_b, 62929}, // __builtin_msa_clt_s_b
+ {Intrinsic::mips_clt_s_d, 62951}, // __builtin_msa_clt_s_d
+ {Intrinsic::mips_clt_s_h, 62973}, // __builtin_msa_clt_s_h
+ {Intrinsic::mips_clt_s_w, 62995}, // __builtin_msa_clt_s_w
+ {Intrinsic::mips_clt_u_b, 63017}, // __builtin_msa_clt_u_b
+ {Intrinsic::mips_clt_u_d, 63039}, // __builtin_msa_clt_u_d
+ {Intrinsic::mips_clt_u_h, 63061}, // __builtin_msa_clt_u_h
+ {Intrinsic::mips_clt_u_w, 63083}, // __builtin_msa_clt_u_w
+ {Intrinsic::mips_clti_s_b, 63105}, // __builtin_msa_clti_s_b
+ {Intrinsic::mips_clti_s_d, 63128}, // __builtin_msa_clti_s_d
+ {Intrinsic::mips_clti_s_h, 63151}, // __builtin_msa_clti_s_h
+ {Intrinsic::mips_clti_s_w, 63174}, // __builtin_msa_clti_s_w
+ {Intrinsic::mips_clti_u_b, 63197}, // __builtin_msa_clti_u_b
+ {Intrinsic::mips_clti_u_d, 63220}, // __builtin_msa_clti_u_d
+ {Intrinsic::mips_clti_u_h, 63243}, // __builtin_msa_clti_u_h
+ {Intrinsic::mips_clti_u_w, 63266}, // __builtin_msa_clti_u_w
+ {Intrinsic::mips_copy_s_b, 63607}, // __builtin_msa_copy_s_b
+ {Intrinsic::mips_copy_s_d, 63630}, // __builtin_msa_copy_s_d
+ {Intrinsic::mips_copy_s_h, 63653}, // __builtin_msa_copy_s_h
+ {Intrinsic::mips_copy_s_w, 63676}, // __builtin_msa_copy_s_w
+ {Intrinsic::mips_copy_u_b, 63699}, // __builtin_msa_copy_u_b
+ {Intrinsic::mips_copy_u_d, 63722}, // __builtin_msa_copy_u_d
+ {Intrinsic::mips_copy_u_h, 63745}, // __builtin_msa_copy_u_h
+ {Intrinsic::mips_copy_u_w, 63768}, // __builtin_msa_copy_u_w
+ {Intrinsic::mips_ctcmsa, 63791}, // __builtin_msa_ctcmsa
+ {Intrinsic::mips_div_s_b, 63812}, // __builtin_msa_div_s_b
+ {Intrinsic::mips_div_s_d, 63834}, // __builtin_msa_div_s_d
+ {Intrinsic::mips_div_s_h, 63856}, // __builtin_msa_div_s_h
+ {Intrinsic::mips_div_s_w, 63878}, // __builtin_msa_div_s_w
+ {Intrinsic::mips_div_u_b, 63900}, // __builtin_msa_div_u_b
+ {Intrinsic::mips_div_u_d, 63922}, // __builtin_msa_div_u_d
+ {Intrinsic::mips_div_u_h, 63944}, // __builtin_msa_div_u_h
+ {Intrinsic::mips_div_u_w, 63966}, // __builtin_msa_div_u_w
+ {Intrinsic::mips_dotp_s_d, 64008}, // __builtin_msa_dotp_s_d
+ {Intrinsic::mips_dotp_s_h, 64031}, // __builtin_msa_dotp_s_h
+ {Intrinsic::mips_dotp_s_w, 64054}, // __builtin_msa_dotp_s_w
+ {Intrinsic::mips_dotp_u_d, 64077}, // __builtin_msa_dotp_u_d
+ {Intrinsic::mips_dotp_u_h, 64100}, // __builtin_msa_dotp_u_h
+ {Intrinsic::mips_dotp_u_w, 64123}, // __builtin_msa_dotp_u_w
+ {Intrinsic::mips_dpadd_s_d, 64170}, // __builtin_msa_dpadd_s_d
+ {Intrinsic::mips_dpadd_s_h, 64194}, // __builtin_msa_dpadd_s_h
+ {Intrinsic::mips_dpadd_s_w, 64218}, // __builtin_msa_dpadd_s_w
+ {Intrinsic::mips_dpadd_u_d, 64242}, // __builtin_msa_dpadd_u_d
+ {Intrinsic::mips_dpadd_u_h, 64266}, // __builtin_msa_dpadd_u_h
+ {Intrinsic::mips_dpadd_u_w, 64290}, // __builtin_msa_dpadd_u_w
+ {Intrinsic::mips_dpsub_s_d, 64689}, // __builtin_msa_dpsub_s_d
+ {Intrinsic::mips_dpsub_s_h, 64713}, // __builtin_msa_dpsub_s_h
+ {Intrinsic::mips_dpsub_s_w, 64737}, // __builtin_msa_dpsub_s_w
+ {Intrinsic::mips_dpsub_u_d, 64761}, // __builtin_msa_dpsub_u_d
+ {Intrinsic::mips_dpsub_u_h, 64785}, // __builtin_msa_dpsub_u_h
+ {Intrinsic::mips_dpsub_u_w, 64809}, // __builtin_msa_dpsub_u_w
+ {Intrinsic::mips_fadd_d, 64995}, // __builtin_msa_fadd_d
+ {Intrinsic::mips_fadd_w, 65016}, // __builtin_msa_fadd_w
+ {Intrinsic::mips_fcaf_d, 65037}, // __builtin_msa_fcaf_d
+ {Intrinsic::mips_fcaf_w, 65058}, // __builtin_msa_fcaf_w
+ {Intrinsic::mips_fceq_d, 65079}, // __builtin_msa_fceq_d
+ {Intrinsic::mips_fceq_w, 65100}, // __builtin_msa_fceq_w
+ {Intrinsic::mips_fclass_d, 65121}, // __builtin_msa_fclass_d
+ {Intrinsic::mips_fclass_w, 65144}, // __builtin_msa_fclass_w
+ {Intrinsic::mips_fcle_d, 65167}, // __builtin_msa_fcle_d
+ {Intrinsic::mips_fcle_w, 65188}, // __builtin_msa_fcle_w
+ {Intrinsic::mips_fclt_d, 65209}, // __builtin_msa_fclt_d
+ {Intrinsic::mips_fclt_w, 65230}, // __builtin_msa_fclt_w
+ {Intrinsic::mips_fcne_d, 65251}, // __builtin_msa_fcne_d
+ {Intrinsic::mips_fcne_w, 65272}, // __builtin_msa_fcne_w
+ {Intrinsic::mips_fcor_d, 65293}, // __builtin_msa_fcor_d
+ {Intrinsic::mips_fcor_w, 65314}, // __builtin_msa_fcor_w
+ {Intrinsic::mips_fcueq_d, 65335}, // __builtin_msa_fcueq_d
+ {Intrinsic::mips_fcueq_w, 65357}, // __builtin_msa_fcueq_w
+ {Intrinsic::mips_fcule_d, 65379}, // __builtin_msa_fcule_d
+ {Intrinsic::mips_fcule_w, 65401}, // __builtin_msa_fcule_w
+ {Intrinsic::mips_fcult_d, 65423}, // __builtin_msa_fcult_d
+ {Intrinsic::mips_fcult_w, 65445}, // __builtin_msa_fcult_w
+ {Intrinsic::mips_fcun_d, 65467}, // __builtin_msa_fcun_d
+ {Intrinsic::mips_fcun_w, 65488}, // __builtin_msa_fcun_w
+ {Intrinsic::mips_fcune_d, 65509}, // __builtin_msa_fcune_d
+ {Intrinsic::mips_fcune_w, 65531}, // __builtin_msa_fcune_w
+ {Intrinsic::mips_fdiv_d, 65553}, // __builtin_msa_fdiv_d
+ {Intrinsic::mips_fdiv_w, 65574}, // __builtin_msa_fdiv_w
+ {Intrinsic::mips_fexdo_h, 65595}, // __builtin_msa_fexdo_h
+ {Intrinsic::mips_fexdo_w, 65617}, // __builtin_msa_fexdo_w
+ {Intrinsic::mips_fexp2_d, 65639}, // __builtin_msa_fexp2_d
+ {Intrinsic::mips_fexp2_w, 65661}, // __builtin_msa_fexp2_w
+ {Intrinsic::mips_fexupl_d, 65683}, // __builtin_msa_fexupl_d
+ {Intrinsic::mips_fexupl_w, 65706}, // __builtin_msa_fexupl_w
+ {Intrinsic::mips_fexupr_d, 65729}, // __builtin_msa_fexupr_d
+ {Intrinsic::mips_fexupr_w, 65752}, // __builtin_msa_fexupr_w
+ {Intrinsic::mips_ffint_s_d, 65775}, // __builtin_msa_ffint_s_d
+ {Intrinsic::mips_ffint_s_w, 65799}, // __builtin_msa_ffint_s_w
+ {Intrinsic::mips_ffint_u_d, 65823}, // __builtin_msa_ffint_u_d
+ {Intrinsic::mips_ffint_u_w, 65847}, // __builtin_msa_ffint_u_w
+ {Intrinsic::mips_ffql_d, 65871}, // __builtin_msa_ffql_d
+ {Intrinsic::mips_ffql_w, 65892}, // __builtin_msa_ffql_w
+ {Intrinsic::mips_ffqr_d, 65913}, // __builtin_msa_ffqr_d
+ {Intrinsic::mips_ffqr_w, 65934}, // __builtin_msa_ffqr_w
+ {Intrinsic::mips_fill_b, 65955}, // __builtin_msa_fill_b
+ {Intrinsic::mips_fill_d, 65976}, // __builtin_msa_fill_d
+ {Intrinsic::mips_fill_h, 65997}, // __builtin_msa_fill_h
+ {Intrinsic::mips_fill_w, 66018}, // __builtin_msa_fill_w
+ {Intrinsic::mips_flog2_d, 66039}, // __builtin_msa_flog2_d
+ {Intrinsic::mips_flog2_w, 66061}, // __builtin_msa_flog2_w
+ {Intrinsic::mips_fmadd_d, 66083}, // __builtin_msa_fmadd_d
+ {Intrinsic::mips_fmadd_w, 66105}, // __builtin_msa_fmadd_w
+ {Intrinsic::mips_fmax_a_d, 66127}, // __builtin_msa_fmax_a_d
+ {Intrinsic::mips_fmax_a_w, 66150}, // __builtin_msa_fmax_a_w
+ {Intrinsic::mips_fmax_d, 66173}, // __builtin_msa_fmax_d
+ {Intrinsic::mips_fmax_w, 66194}, // __builtin_msa_fmax_w
+ {Intrinsic::mips_fmin_a_d, 66215}, // __builtin_msa_fmin_a_d
+ {Intrinsic::mips_fmin_a_w, 66238}, // __builtin_msa_fmin_a_w
+ {Intrinsic::mips_fmin_d, 66261}, // __builtin_msa_fmin_d
+ {Intrinsic::mips_fmin_w, 66282}, // __builtin_msa_fmin_w
+ {Intrinsic::mips_fmsub_d, 66303}, // __builtin_msa_fmsub_d
+ {Intrinsic::mips_fmsub_w, 66325}, // __builtin_msa_fmsub_w
+ {Intrinsic::mips_fmul_d, 66347}, // __builtin_msa_fmul_d
+ {Intrinsic::mips_fmul_w, 66368}, // __builtin_msa_fmul_w
+ {Intrinsic::mips_frcp_d, 66389}, // __builtin_msa_frcp_d
+ {Intrinsic::mips_frcp_w, 66410}, // __builtin_msa_frcp_w
+ {Intrinsic::mips_frint_d, 66431}, // __builtin_msa_frint_d
+ {Intrinsic::mips_frint_w, 66453}, // __builtin_msa_frint_w
+ {Intrinsic::mips_frsqrt_d, 66475}, // __builtin_msa_frsqrt_d
+ {Intrinsic::mips_frsqrt_w, 66498}, // __builtin_msa_frsqrt_w
+ {Intrinsic::mips_fsaf_d, 66521}, // __builtin_msa_fsaf_d
+ {Intrinsic::mips_fsaf_w, 66542}, // __builtin_msa_fsaf_w
+ {Intrinsic::mips_fseq_d, 66563}, // __builtin_msa_fseq_d
+ {Intrinsic::mips_fseq_w, 66584}, // __builtin_msa_fseq_w
+ {Intrinsic::mips_fsle_d, 66605}, // __builtin_msa_fsle_d
+ {Intrinsic::mips_fsle_w, 66626}, // __builtin_msa_fsle_w
+ {Intrinsic::mips_fslt_d, 66647}, // __builtin_msa_fslt_d
+ {Intrinsic::mips_fslt_w, 66668}, // __builtin_msa_fslt_w
+ {Intrinsic::mips_fsne_d, 66689}, // __builtin_msa_fsne_d
+ {Intrinsic::mips_fsne_w, 66710}, // __builtin_msa_fsne_w
+ {Intrinsic::mips_fsor_d, 66731}, // __builtin_msa_fsor_d
+ {Intrinsic::mips_fsor_w, 66752}, // __builtin_msa_fsor_w
+ {Intrinsic::mips_fsqrt_d, 66773}, // __builtin_msa_fsqrt_d
+ {Intrinsic::mips_fsqrt_w, 66795}, // __builtin_msa_fsqrt_w
+ {Intrinsic::mips_fsub_d, 66817}, // __builtin_msa_fsub_d
+ {Intrinsic::mips_fsub_w, 66838}, // __builtin_msa_fsub_w
+ {Intrinsic::mips_fsueq_d, 66859}, // __builtin_msa_fsueq_d
+ {Intrinsic::mips_fsueq_w, 66881}, // __builtin_msa_fsueq_w
+ {Intrinsic::mips_fsule_d, 66903}, // __builtin_msa_fsule_d
+ {Intrinsic::mips_fsule_w, 66925}, // __builtin_msa_fsule_w
+ {Intrinsic::mips_fsult_d, 66947}, // __builtin_msa_fsult_d
+ {Intrinsic::mips_fsult_w, 66969}, // __builtin_msa_fsult_w
+ {Intrinsic::mips_fsun_d, 66991}, // __builtin_msa_fsun_d
+ {Intrinsic::mips_fsun_w, 67012}, // __builtin_msa_fsun_w
+ {Intrinsic::mips_fsune_d, 67033}, // __builtin_msa_fsune_d
+ {Intrinsic::mips_fsune_w, 67055}, // __builtin_msa_fsune_w
+ {Intrinsic::mips_ftint_s_d, 67077}, // __builtin_msa_ftint_s_d
+ {Intrinsic::mips_ftint_s_w, 67101}, // __builtin_msa_ftint_s_w
+ {Intrinsic::mips_ftint_u_d, 67125}, // __builtin_msa_ftint_u_d
+ {Intrinsic::mips_ftint_u_w, 67149}, // __builtin_msa_ftint_u_w
+ {Intrinsic::mips_ftq_h, 67173}, // __builtin_msa_ftq_h
+ {Intrinsic::mips_ftq_w, 67193}, // __builtin_msa_ftq_w
+ {Intrinsic::mips_ftrunc_s_d, 67213}, // __builtin_msa_ftrunc_s_d
+ {Intrinsic::mips_ftrunc_s_w, 67238}, // __builtin_msa_ftrunc_s_w
+ {Intrinsic::mips_ftrunc_u_d, 67263}, // __builtin_msa_ftrunc_u_d
+ {Intrinsic::mips_ftrunc_u_w, 67288}, // __builtin_msa_ftrunc_u_w
+ {Intrinsic::mips_hadd_s_d, 67313}, // __builtin_msa_hadd_s_d
+ {Intrinsic::mips_hadd_s_h, 67336}, // __builtin_msa_hadd_s_h
+ {Intrinsic::mips_hadd_s_w, 67359}, // __builtin_msa_hadd_s_w
+ {Intrinsic::mips_hadd_u_d, 67382}, // __builtin_msa_hadd_u_d
+ {Intrinsic::mips_hadd_u_h, 67405}, // __builtin_msa_hadd_u_h
+ {Intrinsic::mips_hadd_u_w, 67428}, // __builtin_msa_hadd_u_w
+ {Intrinsic::mips_hsub_s_d, 67451}, // __builtin_msa_hsub_s_d
+ {Intrinsic::mips_hsub_s_h, 67474}, // __builtin_msa_hsub_s_h
+ {Intrinsic::mips_hsub_s_w, 67497}, // __builtin_msa_hsub_s_w
+ {Intrinsic::mips_hsub_u_d, 67520}, // __builtin_msa_hsub_u_d
+ {Intrinsic::mips_hsub_u_h, 67543}, // __builtin_msa_hsub_u_h
+ {Intrinsic::mips_hsub_u_w, 67566}, // __builtin_msa_hsub_u_w
+ {Intrinsic::mips_ilvev_b, 67589}, // __builtin_msa_ilvev_b
+ {Intrinsic::mips_ilvev_d, 67611}, // __builtin_msa_ilvev_d
+ {Intrinsic::mips_ilvev_h, 67633}, // __builtin_msa_ilvev_h
+ {Intrinsic::mips_ilvev_w, 67655}, // __builtin_msa_ilvev_w
+ {Intrinsic::mips_ilvl_b, 67677}, // __builtin_msa_ilvl_b
+ {Intrinsic::mips_ilvl_d, 67698}, // __builtin_msa_ilvl_d
+ {Intrinsic::mips_ilvl_h, 67719}, // __builtin_msa_ilvl_h
+ {Intrinsic::mips_ilvl_w, 67740}, // __builtin_msa_ilvl_w
+ {Intrinsic::mips_ilvod_b, 67761}, // __builtin_msa_ilvod_b
+ {Intrinsic::mips_ilvod_d, 67783}, // __builtin_msa_ilvod_d
+ {Intrinsic::mips_ilvod_h, 67805}, // __builtin_msa_ilvod_h
+ {Intrinsic::mips_ilvod_w, 67827}, // __builtin_msa_ilvod_w
+ {Intrinsic::mips_ilvr_b, 67849}, // __builtin_msa_ilvr_b
+ {Intrinsic::mips_ilvr_d, 67870}, // __builtin_msa_ilvr_d
+ {Intrinsic::mips_ilvr_h, 67891}, // __builtin_msa_ilvr_h
+ {Intrinsic::mips_ilvr_w, 67912}, // __builtin_msa_ilvr_w
+ {Intrinsic::mips_insert_b, 67933}, // __builtin_msa_insert_b
+ {Intrinsic::mips_insert_d, 67956}, // __builtin_msa_insert_d
+ {Intrinsic::mips_insert_h, 67979}, // __builtin_msa_insert_h
+ {Intrinsic::mips_insert_w, 68002}, // __builtin_msa_insert_w
+ {Intrinsic::mips_insve_b, 68045}, // __builtin_msa_insve_b
+ {Intrinsic::mips_insve_d, 68067}, // __builtin_msa_insve_d
+ {Intrinsic::mips_insve_h, 68089}, // __builtin_msa_insve_h
+ {Intrinsic::mips_insve_w, 68111}, // __builtin_msa_insve_w
+ {Intrinsic::mips_ld_b, 68153}, // __builtin_msa_ld_b
+ {Intrinsic::mips_ld_d, 68172}, // __builtin_msa_ld_d
+ {Intrinsic::mips_ld_h, 68191}, // __builtin_msa_ld_h
+ {Intrinsic::mips_ld_w, 68210}, // __builtin_msa_ld_w
+ {Intrinsic::mips_ldi_b, 68229}, // __builtin_msa_ldi_b
+ {Intrinsic::mips_ldi_d, 68249}, // __builtin_msa_ldi_d
+ {Intrinsic::mips_ldi_h, 68269}, // __builtin_msa_ldi_h
+ {Intrinsic::mips_ldi_w, 68289}, // __builtin_msa_ldi_w
+ {Intrinsic::mips_madd_q_h, 68386}, // __builtin_msa_madd_q_h
+ {Intrinsic::mips_madd_q_w, 68409}, // __builtin_msa_madd_q_w
+ {Intrinsic::mips_maddr_q_h, 68432}, // __builtin_msa_maddr_q_h
+ {Intrinsic::mips_maddr_q_w, 68456}, // __builtin_msa_maddr_q_w
+ {Intrinsic::mips_maddv_b, 68501}, // __builtin_msa_maddv_b
+ {Intrinsic::mips_maddv_d, 68523}, // __builtin_msa_maddv_d
+ {Intrinsic::mips_maddv_h, 68545}, // __builtin_msa_maddv_h
+ {Intrinsic::mips_maddv_w, 68567}, // __builtin_msa_maddv_w
+ {Intrinsic::mips_max_a_b, 68699}, // __builtin_msa_max_a_b
+ {Intrinsic::mips_max_a_d, 68721}, // __builtin_msa_max_a_d
+ {Intrinsic::mips_max_a_h, 68743}, // __builtin_msa_max_a_h
+ {Intrinsic::mips_max_a_w, 68765}, // __builtin_msa_max_a_w
+ {Intrinsic::mips_max_s_b, 68787}, // __builtin_msa_max_s_b
+ {Intrinsic::mips_max_s_d, 68809}, // __builtin_msa_max_s_d
+ {Intrinsic::mips_max_s_h, 68831}, // __builtin_msa_max_s_h
+ {Intrinsic::mips_max_s_w, 68853}, // __builtin_msa_max_s_w
+ {Intrinsic::mips_max_u_b, 68875}, // __builtin_msa_max_u_b
+ {Intrinsic::mips_max_u_d, 68897}, // __builtin_msa_max_u_d
+ {Intrinsic::mips_max_u_h, 68919}, // __builtin_msa_max_u_h
+ {Intrinsic::mips_max_u_w, 68941}, // __builtin_msa_max_u_w
+ {Intrinsic::mips_maxi_s_b, 68963}, // __builtin_msa_maxi_s_b
+ {Intrinsic::mips_maxi_s_d, 68986}, // __builtin_msa_maxi_s_d
+ {Intrinsic::mips_maxi_s_h, 69009}, // __builtin_msa_maxi_s_h
+ {Intrinsic::mips_maxi_s_w, 69032}, // __builtin_msa_maxi_s_w
+ {Intrinsic::mips_maxi_u_b, 69055}, // __builtin_msa_maxi_u_b
+ {Intrinsic::mips_maxi_u_d, 69078}, // __builtin_msa_maxi_u_d
+ {Intrinsic::mips_maxi_u_h, 69101}, // __builtin_msa_maxi_u_h
+ {Intrinsic::mips_maxi_u_w, 69124}, // __builtin_msa_maxi_u_w
+ {Intrinsic::mips_min_a_b, 69147}, // __builtin_msa_min_a_b
+ {Intrinsic::mips_min_a_d, 69169}, // __builtin_msa_min_a_d
+ {Intrinsic::mips_min_a_h, 69191}, // __builtin_msa_min_a_h
+ {Intrinsic::mips_min_a_w, 69213}, // __builtin_msa_min_a_w
+ {Intrinsic::mips_min_s_b, 69235}, // __builtin_msa_min_s_b
+ {Intrinsic::mips_min_s_d, 69257}, // __builtin_msa_min_s_d
+ {Intrinsic::mips_min_s_h, 69279}, // __builtin_msa_min_s_h
+ {Intrinsic::mips_min_s_w, 69301}, // __builtin_msa_min_s_w
+ {Intrinsic::mips_min_u_b, 69323}, // __builtin_msa_min_u_b
+ {Intrinsic::mips_min_u_d, 69345}, // __builtin_msa_min_u_d
+ {Intrinsic::mips_min_u_h, 69367}, // __builtin_msa_min_u_h
+ {Intrinsic::mips_min_u_w, 69389}, // __builtin_msa_min_u_w
+ {Intrinsic::mips_mini_s_b, 69411}, // __builtin_msa_mini_s_b
+ {Intrinsic::mips_mini_s_d, 69434}, // __builtin_msa_mini_s_d
+ {Intrinsic::mips_mini_s_h, 69457}, // __builtin_msa_mini_s_h
+ {Intrinsic::mips_mini_s_w, 69480}, // __builtin_msa_mini_s_w
+ {Intrinsic::mips_mini_u_b, 69503}, // __builtin_msa_mini_u_b
+ {Intrinsic::mips_mini_u_d, 69526}, // __builtin_msa_mini_u_d
+ {Intrinsic::mips_mini_u_h, 69549}, // __builtin_msa_mini_u_h
+ {Intrinsic::mips_mini_u_w, 69572}, // __builtin_msa_mini_u_w
+ {Intrinsic::mips_mod_s_b, 69595}, // __builtin_msa_mod_s_b
+ {Intrinsic::mips_mod_s_d, 69617}, // __builtin_msa_mod_s_d
+ {Intrinsic::mips_mod_s_h, 69639}, // __builtin_msa_mod_s_h
+ {Intrinsic::mips_mod_s_w, 69661}, // __builtin_msa_mod_s_w
+ {Intrinsic::mips_mod_u_b, 69683}, // __builtin_msa_mod_u_b
+ {Intrinsic::mips_mod_u_d, 69705}, // __builtin_msa_mod_u_d
+ {Intrinsic::mips_mod_u_h, 69727}, // __builtin_msa_mod_u_h
+ {Intrinsic::mips_mod_u_w, 69749}, // __builtin_msa_mod_u_w
+ {Intrinsic::mips_move_v, 69793}, // __builtin_msa_move_v
+ {Intrinsic::mips_msub_q_h, 69834}, // __builtin_msa_msub_q_h
+ {Intrinsic::mips_msub_q_w, 69857}, // __builtin_msa_msub_q_w
+ {Intrinsic::mips_msubr_q_h, 69880}, // __builtin_msa_msubr_q_h
+ {Intrinsic::mips_msubr_q_w, 69904}, // __builtin_msa_msubr_q_w
+ {Intrinsic::mips_msubv_b, 69949}, // __builtin_msa_msubv_b
+ {Intrinsic::mips_msubv_d, 69971}, // __builtin_msa_msubv_d
+ {Intrinsic::mips_msubv_h, 69993}, // __builtin_msa_msubv_h
+ {Intrinsic::mips_msubv_w, 70015}, // __builtin_msa_msubv_w
+ {Intrinsic::mips_mul_q_h, 70081}, // __builtin_msa_mul_q_h
+ {Intrinsic::mips_mul_q_w, 70103}, // __builtin_msa_mul_q_w
+ {Intrinsic::mips_mulr_q_h, 70367}, // __builtin_msa_mulr_q_h
+ {Intrinsic::mips_mulr_q_w, 70390}, // __builtin_msa_mulr_q_w
+ {Intrinsic::mips_mulv_b, 70509}, // __builtin_msa_mulv_b
+ {Intrinsic::mips_mulv_d, 70530}, // __builtin_msa_mulv_d
+ {Intrinsic::mips_mulv_h, 70551}, // __builtin_msa_mulv_h
+ {Intrinsic::mips_mulv_w, 70572}, // __builtin_msa_mulv_w
+ {Intrinsic::mips_nloc_b, 70593}, // __builtin_msa_nloc_b
+ {Intrinsic::mips_nloc_d, 70614}, // __builtin_msa_nloc_d
+ {Intrinsic::mips_nloc_h, 70635}, // __builtin_msa_nloc_h
+ {Intrinsic::mips_nloc_w, 70656}, // __builtin_msa_nloc_w
+ {Intrinsic::mips_nlzc_b, 70677}, // __builtin_msa_nlzc_b
+ {Intrinsic::mips_nlzc_d, 70698}, // __builtin_msa_nlzc_d
+ {Intrinsic::mips_nlzc_h, 70719}, // __builtin_msa_nlzc_h
+ {Intrinsic::mips_nlzc_w, 70740}, // __builtin_msa_nlzc_w
+ {Intrinsic::mips_nor_v, 70761}, // __builtin_msa_nor_v
+ {Intrinsic::mips_nori_b, 70781}, // __builtin_msa_nori_b
+ {Intrinsic::mips_or_v, 70802}, // __builtin_msa_or_v
+ {Intrinsic::mips_ori_b, 70821}, // __builtin_msa_ori_b
+ {Intrinsic::mips_pckev_b, 70866}, // __builtin_msa_pckev_b
+ {Intrinsic::mips_pckev_d, 70888}, // __builtin_msa_pckev_d
+ {Intrinsic::mips_pckev_h, 70910}, // __builtin_msa_pckev_h
+ {Intrinsic::mips_pckev_w, 70932}, // __builtin_msa_pckev_w
+ {Intrinsic::mips_pckod_b, 70954}, // __builtin_msa_pckod_b
+ {Intrinsic::mips_pckod_d, 70976}, // __builtin_msa_pckod_d
+ {Intrinsic::mips_pckod_h, 70998}, // __builtin_msa_pckod_h
+ {Intrinsic::mips_pckod_w, 71020}, // __builtin_msa_pckod_w
+ {Intrinsic::mips_pcnt_b, 71042}, // __builtin_msa_pcnt_b
+ {Intrinsic::mips_pcnt_d, 71063}, // __builtin_msa_pcnt_d
+ {Intrinsic::mips_pcnt_h, 71084}, // __builtin_msa_pcnt_h
+ {Intrinsic::mips_pcnt_w, 71105}, // __builtin_msa_pcnt_w
+ {Intrinsic::mips_sat_s_b, 71789}, // __builtin_msa_sat_s_b
+ {Intrinsic::mips_sat_s_d, 71811}, // __builtin_msa_sat_s_d
+ {Intrinsic::mips_sat_s_h, 71833}, // __builtin_msa_sat_s_h
+ {Intrinsic::mips_sat_s_w, 71855}, // __builtin_msa_sat_s_w
+ {Intrinsic::mips_sat_u_b, 71877}, // __builtin_msa_sat_u_b
+ {Intrinsic::mips_sat_u_d, 71899}, // __builtin_msa_sat_u_d
+ {Intrinsic::mips_sat_u_h, 71921}, // __builtin_msa_sat_u_h
+ {Intrinsic::mips_sat_u_w, 71943}, // __builtin_msa_sat_u_w
+ {Intrinsic::mips_shf_b, 71965}, // __builtin_msa_shf_b
+ {Intrinsic::mips_shf_h, 71985}, // __builtin_msa_shf_h
+ {Intrinsic::mips_shf_w, 72005}, // __builtin_msa_shf_w
+ {Intrinsic::mips_sld_b, 72307}, // __builtin_msa_sld_b
+ {Intrinsic::mips_sld_d, 72327}, // __builtin_msa_sld_d
+ {Intrinsic::mips_sld_h, 72347}, // __builtin_msa_sld_h
+ {Intrinsic::mips_sld_w, 72367}, // __builtin_msa_sld_w
+ {Intrinsic::mips_sldi_b, 72387}, // __builtin_msa_sldi_b
+ {Intrinsic::mips_sldi_d, 72408}, // __builtin_msa_sldi_d
+ {Intrinsic::mips_sldi_h, 72429}, // __builtin_msa_sldi_h
+ {Intrinsic::mips_sldi_w, 72450}, // __builtin_msa_sldi_w
+ {Intrinsic::mips_sll_b, 72471}, // __builtin_msa_sll_b
+ {Intrinsic::mips_sll_d, 72491}, // __builtin_msa_sll_d
+ {Intrinsic::mips_sll_h, 72511}, // __builtin_msa_sll_h
+ {Intrinsic::mips_sll_w, 72531}, // __builtin_msa_sll_w
+ {Intrinsic::mips_slli_b, 72551}, // __builtin_msa_slli_b
+ {Intrinsic::mips_slli_d, 72572}, // __builtin_msa_slli_d
+ {Intrinsic::mips_slli_h, 72593}, // __builtin_msa_slli_h
+ {Intrinsic::mips_slli_w, 72614}, // __builtin_msa_slli_w
+ {Intrinsic::mips_splat_b, 72635}, // __builtin_msa_splat_b
+ {Intrinsic::mips_splat_d, 72657}, // __builtin_msa_splat_d
+ {Intrinsic::mips_splat_h, 72679}, // __builtin_msa_splat_h
+ {Intrinsic::mips_splat_w, 72701}, // __builtin_msa_splat_w
+ {Intrinsic::mips_splati_b, 72723}, // __builtin_msa_splati_b
+ {Intrinsic::mips_splati_d, 72746}, // __builtin_msa_splati_d
+ {Intrinsic::mips_splati_h, 72769}, // __builtin_msa_splati_h
+ {Intrinsic::mips_splati_w, 72792}, // __builtin_msa_splati_w
+ {Intrinsic::mips_sra_b, 72815}, // __builtin_msa_sra_b
+ {Intrinsic::mips_sra_d, 72835}, // __builtin_msa_sra_d
+ {Intrinsic::mips_sra_h, 72855}, // __builtin_msa_sra_h
+ {Intrinsic::mips_sra_w, 72875}, // __builtin_msa_sra_w
+ {Intrinsic::mips_srai_b, 72895}, // __builtin_msa_srai_b
+ {Intrinsic::mips_srai_d, 72916}, // __builtin_msa_srai_d
+ {Intrinsic::mips_srai_h, 72937}, // __builtin_msa_srai_h
+ {Intrinsic::mips_srai_w, 72958}, // __builtin_msa_srai_w
+ {Intrinsic::mips_srar_b, 72979}, // __builtin_msa_srar_b
+ {Intrinsic::mips_srar_d, 73000}, // __builtin_msa_srar_d
+ {Intrinsic::mips_srar_h, 73021}, // __builtin_msa_srar_h
+ {Intrinsic::mips_srar_w, 73042}, // __builtin_msa_srar_w
+ {Intrinsic::mips_srari_b, 73063}, // __builtin_msa_srari_b
+ {Intrinsic::mips_srari_d, 73085}, // __builtin_msa_srari_d
+ {Intrinsic::mips_srari_h, 73107}, // __builtin_msa_srari_h
+ {Intrinsic::mips_srari_w, 73129}, // __builtin_msa_srari_w
+ {Intrinsic::mips_srl_b, 73151}, // __builtin_msa_srl_b
+ {Intrinsic::mips_srl_d, 73171}, // __builtin_msa_srl_d
+ {Intrinsic::mips_srl_h, 73191}, // __builtin_msa_srl_h
+ {Intrinsic::mips_srl_w, 73211}, // __builtin_msa_srl_w
+ {Intrinsic::mips_srli_b, 73231}, // __builtin_msa_srli_b
+ {Intrinsic::mips_srli_d, 73252}, // __builtin_msa_srli_d
+ {Intrinsic::mips_srli_h, 73273}, // __builtin_msa_srli_h
+ {Intrinsic::mips_srli_w, 73294}, // __builtin_msa_srli_w
+ {Intrinsic::mips_srlr_b, 73315}, // __builtin_msa_srlr_b
+ {Intrinsic::mips_srlr_d, 73336}, // __builtin_msa_srlr_d
+ {Intrinsic::mips_srlr_h, 73357}, // __builtin_msa_srlr_h
+ {Intrinsic::mips_srlr_w, 73378}, // __builtin_msa_srlr_w
+ {Intrinsic::mips_srlri_b, 73399}, // __builtin_msa_srlri_b
+ {Intrinsic::mips_srlri_d, 73421}, // __builtin_msa_srlri_d
+ {Intrinsic::mips_srlri_h, 73443}, // __builtin_msa_srlri_h
+ {Intrinsic::mips_srlri_w, 73465}, // __builtin_msa_srlri_w
+ {Intrinsic::mips_st_b, 73487}, // __builtin_msa_st_b
+ {Intrinsic::mips_st_d, 73506}, // __builtin_msa_st_d
+ {Intrinsic::mips_st_h, 73525}, // __builtin_msa_st_h
+ {Intrinsic::mips_st_w, 73544}, // __builtin_msa_st_w
+ {Intrinsic::mips_subs_s_b, 73733}, // __builtin_msa_subs_s_b
+ {Intrinsic::mips_subs_s_d, 73756}, // __builtin_msa_subs_s_d
+ {Intrinsic::mips_subs_s_h, 73779}, // __builtin_msa_subs_s_h
+ {Intrinsic::mips_subs_s_w, 73802}, // __builtin_msa_subs_s_w
+ {Intrinsic::mips_subs_u_b, 73825}, // __builtin_msa_subs_u_b
+ {Intrinsic::mips_subs_u_d, 73848}, // __builtin_msa_subs_u_d
+ {Intrinsic::mips_subs_u_h, 73871}, // __builtin_msa_subs_u_h
+ {Intrinsic::mips_subs_u_w, 73894}, // __builtin_msa_subs_u_w
+ {Intrinsic::mips_subsus_u_b, 73917}, // __builtin_msa_subsus_u_b
+ {Intrinsic::mips_subsus_u_d, 73942}, // __builtin_msa_subsus_u_d
+ {Intrinsic::mips_subsus_u_h, 73967}, // __builtin_msa_subsus_u_h
+ {Intrinsic::mips_subsus_u_w, 73992}, // __builtin_msa_subsus_u_w
+ {Intrinsic::mips_subsuu_s_b, 74017}, // __builtin_msa_subsuu_s_b
+ {Intrinsic::mips_subsuu_s_d, 74042}, // __builtin_msa_subsuu_s_d
+ {Intrinsic::mips_subsuu_s_h, 74067}, // __builtin_msa_subsuu_s_h
+ {Intrinsic::mips_subsuu_s_w, 74092}, // __builtin_msa_subsuu_s_w
+ {Intrinsic::mips_subv_b, 74263}, // __builtin_msa_subv_b
+ {Intrinsic::mips_subv_d, 74284}, // __builtin_msa_subv_d
+ {Intrinsic::mips_subv_h, 74305}, // __builtin_msa_subv_h
+ {Intrinsic::mips_subv_w, 74326}, // __builtin_msa_subv_w
+ {Intrinsic::mips_subvi_b, 74347}, // __builtin_msa_subvi_b
+ {Intrinsic::mips_subvi_d, 74369}, // __builtin_msa_subvi_d
+ {Intrinsic::mips_subvi_h, 74391}, // __builtin_msa_subvi_h
+ {Intrinsic::mips_subvi_w, 74413}, // __builtin_msa_subvi_w
+ {Intrinsic::mips_vshf_b, 74435}, // __builtin_msa_vshf_b
+ {Intrinsic::mips_vshf_d, 74456}, // __builtin_msa_vshf_d
+ {Intrinsic::mips_vshf_h, 74477}, // __builtin_msa_vshf_h
+ {Intrinsic::mips_vshf_w, 74498}, // __builtin_msa_vshf_w
+ {Intrinsic::mips_xor_v, 74540}, // __builtin_msa_xor_v
+ {Intrinsic::mips_xori_b, 74560}, // __builtin_msa_xori_b
};
auto I = std::lower_bound(std::begin(mipsNames),
std::end(mipsNames),
@@ -27482,568 +27376,568 @@
}
if (TargetPrefix == "nvvm") {
static const BuiltinEntry nvvmNames[] = {
- {Intrinsic::nvvm_add_rm_d, 72922}, // __nvvm_add_rm_d
- {Intrinsic::nvvm_add_rm_f, 72938}, // __nvvm_add_rm_f
- {Intrinsic::nvvm_add_rm_ftz_f, 72954}, // __nvvm_add_rm_ftz_f
- {Intrinsic::nvvm_add_rn_d, 72974}, // __nvvm_add_rn_d
- {Intrinsic::nvvm_add_rn_f, 72990}, // __nvvm_add_rn_f
- {Intrinsic::nvvm_add_rn_ftz_f, 73006}, // __nvvm_add_rn_ftz_f
- {Intrinsic::nvvm_add_rp_d, 73026}, // __nvvm_add_rp_d
- {Intrinsic::nvvm_add_rp_f, 73042}, // __nvvm_add_rp_f
- {Intrinsic::nvvm_add_rp_ftz_f, 73058}, // __nvvm_add_rp_ftz_f
- {Intrinsic::nvvm_add_rz_d, 73078}, // __nvvm_add_rz_d
- {Intrinsic::nvvm_add_rz_f, 73094}, // __nvvm_add_rz_f
- {Intrinsic::nvvm_add_rz_ftz_f, 73110}, // __nvvm_add_rz_ftz_f
- {Intrinsic::nvvm_barrier, 73167}, // __nvvm_bar
- {Intrinsic::nvvm_barrier0_and, 73249}, // __nvvm_bar0_and
- {Intrinsic::nvvm_barrier0_or, 73265}, // __nvvm_bar0_or
- {Intrinsic::nvvm_barrier0_popc, 73280}, // __nvvm_bar0_popc
- {Intrinsic::nvvm_barrier_n, 73178}, // __nvvm_bar_n
- {Intrinsic::nvvm_bar_sync, 73130}, // __nvvm_bar_sync
- {Intrinsic::nvvm_bar_warp_sync, 73146}, // __nvvm_bar_warp_sync
- {Intrinsic::nvvm_barrier_sync, 73191}, // __nvvm_barrier_sync
- {Intrinsic::nvvm_barrier_sync_cnt, 73211}, // __nvvm_barrier_sync_cnt
- {Intrinsic::nvvm_bitcast_d2ll, 73297}, // __nvvm_bitcast_d2ll
- {Intrinsic::nvvm_bitcast_f2i, 73317}, // __nvvm_bitcast_f2i
- {Intrinsic::nvvm_bitcast_i2f, 73336}, // __nvvm_bitcast_i2f
- {Intrinsic::nvvm_bitcast_ll2d, 73355}, // __nvvm_bitcast_ll2d
- {Intrinsic::nvvm_ceil_d, 73375}, // __nvvm_ceil_d
- {Intrinsic::nvvm_ceil_f, 73389}, // __nvvm_ceil_f
- {Intrinsic::nvvm_ceil_ftz_f, 73403}, // __nvvm_ceil_ftz_f
- {Intrinsic::nvvm_cos_approx_f, 73421}, // __nvvm_cos_approx_f
- {Intrinsic::nvvm_cos_approx_ftz_f, 73441}, // __nvvm_cos_approx_ftz_f
- {Intrinsic::nvvm_d2f_rm, 73465}, // __nvvm_d2f_rm
- {Intrinsic::nvvm_d2f_rm_ftz, 73479}, // __nvvm_d2f_rm_ftz
- {Intrinsic::nvvm_d2f_rn, 73497}, // __nvvm_d2f_rn
- {Intrinsic::nvvm_d2f_rn_ftz, 73511}, // __nvvm_d2f_rn_ftz
- {Intrinsic::nvvm_d2f_rp, 73529}, // __nvvm_d2f_rp
- {Intrinsic::nvvm_d2f_rp_ftz, 73543}, // __nvvm_d2f_rp_ftz
- {Intrinsic::nvvm_d2f_rz, 73561}, // __nvvm_d2f_rz
- {Intrinsic::nvvm_d2f_rz_ftz, 73575}, // __nvvm_d2f_rz_ftz
- {Intrinsic::nvvm_d2i_hi, 73593}, // __nvvm_d2i_hi
- {Intrinsic::nvvm_d2i_lo, 73607}, // __nvvm_d2i_lo
- {Intrinsic::nvvm_d2i_rm, 73621}, // __nvvm_d2i_rm
- {Intrinsic::nvvm_d2i_rn, 73635}, // __nvvm_d2i_rn
- {Intrinsic::nvvm_d2i_rp, 73649}, // __nvvm_d2i_rp
- {Intrinsic::nvvm_d2i_rz, 73663}, // __nvvm_d2i_rz
- {Intrinsic::nvvm_d2ll_rm, 73677}, // __nvvm_d2ll_rm
- {Intrinsic::nvvm_d2ll_rn, 73692}, // __nvvm_d2ll_rn
- {Intrinsic::nvvm_d2ll_rp, 73707}, // __nvvm_d2ll_rp
- {Intrinsic::nvvm_d2ll_rz, 73722}, // __nvvm_d2ll_rz
- {Intrinsic::nvvm_d2ui_rm, 73737}, // __nvvm_d2ui_rm
- {Intrinsic::nvvm_d2ui_rn, 73752}, // __nvvm_d2ui_rn
- {Intrinsic::nvvm_d2ui_rp, 73767}, // __nvvm_d2ui_rp
- {Intrinsic::nvvm_d2ui_rz, 73782}, // __nvvm_d2ui_rz
- {Intrinsic::nvvm_d2ull_rm, 73797}, // __nvvm_d2ull_rm
- {Intrinsic::nvvm_d2ull_rn, 73813}, // __nvvm_d2ull_rn
- {Intrinsic::nvvm_d2ull_rp, 73829}, // __nvvm_d2ull_rp
- {Intrinsic::nvvm_d2ull_rz, 73845}, // __nvvm_d2ull_rz
- {Intrinsic::nvvm_div_approx_f, 73861}, // __nvvm_div_approx_f
- {Intrinsic::nvvm_div_approx_ftz_f, 73881}, // __nvvm_div_approx_ftz_f
- {Intrinsic::nvvm_div_rm_d, 73905}, // __nvvm_div_rm_d
- {Intrinsic::nvvm_div_rm_f, 73921}, // __nvvm_div_rm_f
- {Intrinsic::nvvm_div_rm_ftz_f, 73937}, // __nvvm_div_rm_ftz_f
- {Intrinsic::nvvm_div_rn_d, 73957}, // __nvvm_div_rn_d
- {Intrinsic::nvvm_div_rn_f, 73973}, // __nvvm_div_rn_f
- {Intrinsic::nvvm_div_rn_ftz_f, 73989}, // __nvvm_div_rn_ftz_f
- {Intrinsic::nvvm_div_rp_d, 74009}, // __nvvm_div_rp_d
- {Intrinsic::nvvm_div_rp_f, 74025}, // __nvvm_div_rp_f
- {Intrinsic::nvvm_div_rp_ftz_f, 74041}, // __nvvm_div_rp_ftz_f
- {Intrinsic::nvvm_div_rz_d, 74061}, // __nvvm_div_rz_d
- {Intrinsic::nvvm_div_rz_f, 74077}, // __nvvm_div_rz_f
- {Intrinsic::nvvm_div_rz_ftz_f, 74093}, // __nvvm_div_rz_ftz_f
- {Intrinsic::nvvm_ex2_approx_d, 74113}, // __nvvm_ex2_approx_d
- {Intrinsic::nvvm_ex2_approx_f, 74133}, // __nvvm_ex2_approx_f
- {Intrinsic::nvvm_ex2_approx_ftz_f, 74153}, // __nvvm_ex2_approx_ftz_f
- {Intrinsic::nvvm_f2h_rn, 74177}, // __nvvm_f2h_rn
- {Intrinsic::nvvm_f2h_rn_ftz, 74191}, // __nvvm_f2h_rn_ftz
- {Intrinsic::nvvm_f2i_rm, 74209}, // __nvvm_f2i_rm
- {Intrinsic::nvvm_f2i_rm_ftz, 74223}, // __nvvm_f2i_rm_ftz
- {Intrinsic::nvvm_f2i_rn, 74241}, // __nvvm_f2i_rn
- {Intrinsic::nvvm_f2i_rn_ftz, 74255}, // __nvvm_f2i_rn_ftz
- {Intrinsic::nvvm_f2i_rp, 74273}, // __nvvm_f2i_rp
- {Intrinsic::nvvm_f2i_rp_ftz, 74287}, // __nvvm_f2i_rp_ftz
- {Intrinsic::nvvm_f2i_rz, 74305}, // __nvvm_f2i_rz
- {Intrinsic::nvvm_f2i_rz_ftz, 74319}, // __nvvm_f2i_rz_ftz
- {Intrinsic::nvvm_f2ll_rm, 74337}, // __nvvm_f2ll_rm
- {Intrinsic::nvvm_f2ll_rm_ftz, 74352}, // __nvvm_f2ll_rm_ftz
- {Intrinsic::nvvm_f2ll_rn, 74371}, // __nvvm_f2ll_rn
- {Intrinsic::nvvm_f2ll_rn_ftz, 74386}, // __nvvm_f2ll_rn_ftz
- {Intrinsic::nvvm_f2ll_rp, 74405}, // __nvvm_f2ll_rp
- {Intrinsic::nvvm_f2ll_rp_ftz, 74420}, // __nvvm_f2ll_rp_ftz
- {Intrinsic::nvvm_f2ll_rz, 74439}, // __nvvm_f2ll_rz
- {Intrinsic::nvvm_f2ll_rz_ftz, 74454}, // __nvvm_f2ll_rz_ftz
- {Intrinsic::nvvm_f2ui_rm, 74473}, // __nvvm_f2ui_rm
- {Intrinsic::nvvm_f2ui_rm_ftz, 74488}, // __nvvm_f2ui_rm_ftz
- {Intrinsic::nvvm_f2ui_rn, 74507}, // __nvvm_f2ui_rn
- {Intrinsic::nvvm_f2ui_rn_ftz, 74522}, // __nvvm_f2ui_rn_ftz
- {Intrinsic::nvvm_f2ui_rp, 74541}, // __nvvm_f2ui_rp
- {Intrinsic::nvvm_f2ui_rp_ftz, 74556}, // __nvvm_f2ui_rp_ftz
- {Intrinsic::nvvm_f2ui_rz, 74575}, // __nvvm_f2ui_rz
- {Intrinsic::nvvm_f2ui_rz_ftz, 74590}, // __nvvm_f2ui_rz_ftz
- {Intrinsic::nvvm_f2ull_rm, 74609}, // __nvvm_f2ull_rm
- {Intrinsic::nvvm_f2ull_rm_ftz, 74625}, // __nvvm_f2ull_rm_ftz
- {Intrinsic::nvvm_f2ull_rn, 74645}, // __nvvm_f2ull_rn
- {Intrinsic::nvvm_f2ull_rn_ftz, 74661}, // __nvvm_f2ull_rn_ftz
- {Intrinsic::nvvm_f2ull_rp, 74681}, // __nvvm_f2ull_rp
- {Intrinsic::nvvm_f2ull_rp_ftz, 74697}, // __nvvm_f2ull_rp_ftz
- {Intrinsic::nvvm_f2ull_rz, 74717}, // __nvvm_f2ull_rz
- {Intrinsic::nvvm_f2ull_rz_ftz, 74733}, // __nvvm_f2ull_rz_ftz
- {Intrinsic::nvvm_fabs_d, 74753}, // __nvvm_fabs_d
- {Intrinsic::nvvm_fabs_f, 74767}, // __nvvm_fabs_f
- {Intrinsic::nvvm_fabs_ftz_f, 74781}, // __nvvm_fabs_ftz_f
- {Intrinsic::nvvm_floor_d, 74799}, // __nvvm_floor_d
- {Intrinsic::nvvm_floor_f, 74814}, // __nvvm_floor_f
- {Intrinsic::nvvm_floor_ftz_f, 74829}, // __nvvm_floor_ftz_f
- {Intrinsic::nvvm_fma_rm_d, 74848}, // __nvvm_fma_rm_d
- {Intrinsic::nvvm_fma_rm_f, 74864}, // __nvvm_fma_rm_f
- {Intrinsic::nvvm_fma_rm_ftz_f, 74880}, // __nvvm_fma_rm_ftz_f
- {Intrinsic::nvvm_fma_rn_d, 74900}, // __nvvm_fma_rn_d
- {Intrinsic::nvvm_fma_rn_f, 74916}, // __nvvm_fma_rn_f
- {Intrinsic::nvvm_fma_rn_ftz_f, 74932}, // __nvvm_fma_rn_ftz_f
- {Intrinsic::nvvm_fma_rp_d, 74952}, // __nvvm_fma_rp_d
- {Intrinsic::nvvm_fma_rp_f, 74968}, // __nvvm_fma_rp_f
- {Intrinsic::nvvm_fma_rp_ftz_f, 74984}, // __nvvm_fma_rp_ftz_f
- {Intrinsic::nvvm_fma_rz_d, 75004}, // __nvvm_fma_rz_d
- {Intrinsic::nvvm_fma_rz_f, 75020}, // __nvvm_fma_rz_f
- {Intrinsic::nvvm_fma_rz_ftz_f, 75036}, // __nvvm_fma_rz_ftz_f
- {Intrinsic::nvvm_fmax_d, 75056}, // __nvvm_fmax_d
- {Intrinsic::nvvm_fmax_f, 75070}, // __nvvm_fmax_f
- {Intrinsic::nvvm_fmax_ftz_f, 75084}, // __nvvm_fmax_ftz_f
- {Intrinsic::nvvm_fmin_d, 75102}, // __nvvm_fmin_d
- {Intrinsic::nvvm_fmin_f, 75116}, // __nvvm_fmin_f
- {Intrinsic::nvvm_fmin_ftz_f, 75130}, // __nvvm_fmin_ftz_f
- {Intrinsic::nvvm_fns, 75148}, // __nvvm_fns
- {Intrinsic::nvvm_i2d_rm, 75159}, // __nvvm_i2d_rm
- {Intrinsic::nvvm_i2d_rn, 75173}, // __nvvm_i2d_rn
- {Intrinsic::nvvm_i2d_rp, 75187}, // __nvvm_i2d_rp
- {Intrinsic::nvvm_i2d_rz, 75201}, // __nvvm_i2d_rz
- {Intrinsic::nvvm_i2f_rm, 75215}, // __nvvm_i2f_rm
- {Intrinsic::nvvm_i2f_rn, 75229}, // __nvvm_i2f_rn
- {Intrinsic::nvvm_i2f_rp, 75243}, // __nvvm_i2f_rp
- {Intrinsic::nvvm_i2f_rz, 75257}, // __nvvm_i2f_rz
- {Intrinsic::nvvm_isspacep_const, 75271}, // __nvvm_isspacep_const
- {Intrinsic::nvvm_isspacep_global, 75293}, // __nvvm_isspacep_global
- {Intrinsic::nvvm_isspacep_local, 75316}, // __nvvm_isspacep_local
- {Intrinsic::nvvm_isspacep_shared, 75338}, // __nvvm_isspacep_shared
- {Intrinsic::nvvm_istypep_sampler, 75361}, // __nvvm_istypep_sampler
- {Intrinsic::nvvm_istypep_surface, 75384}, // __nvvm_istypep_surface
- {Intrinsic::nvvm_istypep_texture, 75407}, // __nvvm_istypep_texture
- {Intrinsic::nvvm_lg2_approx_d, 75430}, // __nvvm_lg2_approx_d
- {Intrinsic::nvvm_lg2_approx_f, 75450}, // __nvvm_lg2_approx_f
- {Intrinsic::nvvm_lg2_approx_ftz_f, 75470}, // __nvvm_lg2_approx_ftz_f
- {Intrinsic::nvvm_ll2d_rm, 75494}, // __nvvm_ll2d_rm
- {Intrinsic::nvvm_ll2d_rn, 75509}, // __nvvm_ll2d_rn
- {Intrinsic::nvvm_ll2d_rp, 75524}, // __nvvm_ll2d_rp
- {Intrinsic::nvvm_ll2d_rz, 75539}, // __nvvm_ll2d_rz
- {Intrinsic::nvvm_ll2f_rm, 75554}, // __nvvm_ll2f_rm
- {Intrinsic::nvvm_ll2f_rn, 75569}, // __nvvm_ll2f_rn
- {Intrinsic::nvvm_ll2f_rp, 75584}, // __nvvm_ll2f_rp
- {Intrinsic::nvvm_ll2f_rz, 75599}, // __nvvm_ll2f_rz
- {Intrinsic::nvvm_lohi_i2d, 75614}, // __nvvm_lohi_i2d
- {Intrinsic::nvvm_match_any_sync_i32, 75630}, // __nvvm_match_any_sync_i32
- {Intrinsic::nvvm_match_any_sync_i64, 75656}, // __nvvm_match_any_sync_i64
- {Intrinsic::nvvm_membar_cta, 75682}, // __nvvm_membar_cta
- {Intrinsic::nvvm_membar_gl, 75700}, // __nvvm_membar_gl
- {Intrinsic::nvvm_membar_sys, 75717}, // __nvvm_membar_sys
- {Intrinsic::nvvm_mul24_i, 75943}, // __nvvm_mul24_i
- {Intrinsic::nvvm_mul24_ui, 75958}, // __nvvm_mul24_ui
- {Intrinsic::nvvm_mul_rm_d, 75735}, // __nvvm_mul_rm_d
- {Intrinsic::nvvm_mul_rm_f, 75751}, // __nvvm_mul_rm_f
- {Intrinsic::nvvm_mul_rm_ftz_f, 75767}, // __nvvm_mul_rm_ftz_f
- {Intrinsic::nvvm_mul_rn_d, 75787}, // __nvvm_mul_rn_d
- {Intrinsic::nvvm_mul_rn_f, 75803}, // __nvvm_mul_rn_f
- {Intrinsic::nvvm_mul_rn_ftz_f, 75819}, // __nvvm_mul_rn_ftz_f
- {Intrinsic::nvvm_mul_rp_d, 75839}, // __nvvm_mul_rp_d
- {Intrinsic::nvvm_mul_rp_f, 75855}, // __nvvm_mul_rp_f
- {Intrinsic::nvvm_mul_rp_ftz_f, 75871}, // __nvvm_mul_rp_ftz_f
- {Intrinsic::nvvm_mul_rz_d, 75891}, // __nvvm_mul_rz_d
- {Intrinsic::nvvm_mul_rz_f, 75907}, // __nvvm_mul_rz_f
- {Intrinsic::nvvm_mul_rz_ftz_f, 75923}, // __nvvm_mul_rz_ftz_f
- {Intrinsic::nvvm_mulhi_i, 75974}, // __nvvm_mulhi_i
- {Intrinsic::nvvm_mulhi_ll, 75989}, // __nvvm_mulhi_ll
- {Intrinsic::nvvm_mulhi_ui, 76005}, // __nvvm_mulhi_ui
- {Intrinsic::nvvm_mulhi_ull, 76021}, // __nvvm_mulhi_ull
- {Intrinsic::nvvm_prmt, 76038}, // __nvvm_prmt
- {Intrinsic::nvvm_rcp_approx_ftz_d, 76050}, // __nvvm_rcp_approx_ftz_d
- {Intrinsic::nvvm_rcp_rm_d, 76074}, // __nvvm_rcp_rm_d
- {Intrinsic::nvvm_rcp_rm_f, 76090}, // __nvvm_rcp_rm_f
- {Intrinsic::nvvm_rcp_rm_ftz_f, 76106}, // __nvvm_rcp_rm_ftz_f
- {Intrinsic::nvvm_rcp_rn_d, 76126}, // __nvvm_rcp_rn_d
- {Intrinsic::nvvm_rcp_rn_f, 76142}, // __nvvm_rcp_rn_f
- {Intrinsic::nvvm_rcp_rn_ftz_f, 76158}, // __nvvm_rcp_rn_ftz_f
- {Intrinsic::nvvm_rcp_rp_d, 76178}, // __nvvm_rcp_rp_d
- {Intrinsic::nvvm_rcp_rp_f, 76194}, // __nvvm_rcp_rp_f
- {Intrinsic::nvvm_rcp_rp_ftz_f, 76210}, // __nvvm_rcp_rp_ftz_f
- {Intrinsic::nvvm_rcp_rz_d, 76230}, // __nvvm_rcp_rz_d
- {Intrinsic::nvvm_rcp_rz_f, 76246}, // __nvvm_rcp_rz_f
- {Intrinsic::nvvm_rcp_rz_ftz_f, 76262}, // __nvvm_rcp_rz_ftz_f
- {Intrinsic::nvvm_read_ptx_sreg_clock, 76282}, // __nvvm_read_ptx_sreg_clock
- {Intrinsic::nvvm_read_ptx_sreg_clock64, 76309}, // __nvvm_read_ptx_sreg_clock64
- {Intrinsic::nvvm_read_ptx_sreg_ctaid_w, 76338}, // __nvvm_read_ptx_sreg_ctaid_w
- {Intrinsic::nvvm_read_ptx_sreg_ctaid_x, 76367}, // __nvvm_read_ptx_sreg_ctaid_x
- {Intrinsic::nvvm_read_ptx_sreg_ctaid_y, 76396}, // __nvvm_read_ptx_sreg_ctaid_y
- {Intrinsic::nvvm_read_ptx_sreg_ctaid_z, 76425}, // __nvvm_read_ptx_sreg_ctaid_z
- {Intrinsic::nvvm_read_ptx_sreg_envreg0, 76454}, // __nvvm_read_ptx_sreg_envreg0
- {Intrinsic::nvvm_read_ptx_sreg_envreg1, 76483}, // __nvvm_read_ptx_sreg_envreg1
- {Intrinsic::nvvm_read_ptx_sreg_envreg10, 76512}, // __nvvm_read_ptx_sreg_envreg10
- {Intrinsic::nvvm_read_ptx_sreg_envreg11, 76542}, // __nvvm_read_ptx_sreg_envreg11
- {Intrinsic::nvvm_read_ptx_sreg_envreg12, 76572}, // __nvvm_read_ptx_sreg_envreg12
- {Intrinsic::nvvm_read_ptx_sreg_envreg13, 76602}, // __nvvm_read_ptx_sreg_envreg13
- {Intrinsic::nvvm_read_ptx_sreg_envreg14, 76632}, // __nvvm_read_ptx_sreg_envreg14
- {Intrinsic::nvvm_read_ptx_sreg_envreg15, 76662}, // __nvvm_read_ptx_sreg_envreg15
- {Intrinsic::nvvm_read_ptx_sreg_envreg16, 76692}, // __nvvm_read_ptx_sreg_envreg16
- {Intrinsic::nvvm_read_ptx_sreg_envreg17, 76722}, // __nvvm_read_ptx_sreg_envreg17
- {Intrinsic::nvvm_read_ptx_sreg_envreg18, 76752}, // __nvvm_read_ptx_sreg_envreg18
- {Intrinsic::nvvm_read_ptx_sreg_envreg19, 76782}, // __nvvm_read_ptx_sreg_envreg19
- {Intrinsic::nvvm_read_ptx_sreg_envreg2, 76812}, // __nvvm_read_ptx_sreg_envreg2
- {Intrinsic::nvvm_read_ptx_sreg_envreg20, 76841}, // __nvvm_read_ptx_sreg_envreg20
- {Intrinsic::nvvm_read_ptx_sreg_envreg21, 76871}, // __nvvm_read_ptx_sreg_envreg21
- {Intrinsic::nvvm_read_ptx_sreg_envreg22, 76901}, // __nvvm_read_ptx_sreg_envreg22
- {Intrinsic::nvvm_read_ptx_sreg_envreg23, 76931}, // __nvvm_read_ptx_sreg_envreg23
- {Intrinsic::nvvm_read_ptx_sreg_envreg24, 76961}, // __nvvm_read_ptx_sreg_envreg24
- {Intrinsic::nvvm_read_ptx_sreg_envreg25, 76991}, // __nvvm_read_ptx_sreg_envreg25
- {Intrinsic::nvvm_read_ptx_sreg_envreg26, 77021}, // __nvvm_read_ptx_sreg_envreg26
- {Intrinsic::nvvm_read_ptx_sreg_envreg27, 77051}, // __nvvm_read_ptx_sreg_envreg27
- {Intrinsic::nvvm_read_ptx_sreg_envreg28, 77081}, // __nvvm_read_ptx_sreg_envreg28
- {Intrinsic::nvvm_read_ptx_sreg_envreg29, 77111}, // __nvvm_read_ptx_sreg_envreg29
- {Intrinsic::nvvm_read_ptx_sreg_envreg3, 77141}, // __nvvm_read_ptx_sreg_envreg3
- {Intrinsic::nvvm_read_ptx_sreg_envreg30, 77170}, // __nvvm_read_ptx_sreg_envreg30
- {Intrinsic::nvvm_read_ptx_sreg_envreg31, 77200}, // __nvvm_read_ptx_sreg_envreg31
- {Intrinsic::nvvm_read_ptx_sreg_envreg4, 77230}, // __nvvm_read_ptx_sreg_envreg4
- {Intrinsic::nvvm_read_ptx_sreg_envreg5, 77259}, // __nvvm_read_ptx_sreg_envreg5
- {Intrinsic::nvvm_read_ptx_sreg_envreg6, 77288}, // __nvvm_read_ptx_sreg_envreg6
- {Intrinsic::nvvm_read_ptx_sreg_envreg7, 77317}, // __nvvm_read_ptx_sreg_envreg7
- {Intrinsic::nvvm_read_ptx_sreg_envreg8, 77346}, // __nvvm_read_ptx_sreg_envreg8
- {Intrinsic::nvvm_read_ptx_sreg_envreg9, 77375}, // __nvvm_read_ptx_sreg_envreg9
- {Intrinsic::nvvm_read_ptx_sreg_gridid, 77404}, // __nvvm_read_ptx_sreg_gridid
- {Intrinsic::nvvm_read_ptx_sreg_laneid, 77432}, // __nvvm_read_ptx_sreg_laneid
- {Intrinsic::nvvm_read_ptx_sreg_lanemask_eq, 77460}, // __nvvm_read_ptx_sreg_lanemask_eq
- {Intrinsic::nvvm_read_ptx_sreg_lanemask_ge, 77493}, // __nvvm_read_ptx_sreg_lanemask_ge
- {Intrinsic::nvvm_read_ptx_sreg_lanemask_gt, 77526}, // __nvvm_read_ptx_sreg_lanemask_gt
- {Intrinsic::nvvm_read_ptx_sreg_lanemask_le, 77559}, // __nvvm_read_ptx_sreg_lanemask_le
- {Intrinsic::nvvm_read_ptx_sreg_lanemask_lt, 77592}, // __nvvm_read_ptx_sreg_lanemask_lt
- {Intrinsic::nvvm_read_ptx_sreg_nctaid_w, 77625}, // __nvvm_read_ptx_sreg_nctaid_w
- {Intrinsic::nvvm_read_ptx_sreg_nctaid_x, 77655}, // __nvvm_read_ptx_sreg_nctaid_x
- {Intrinsic::nvvm_read_ptx_sreg_nctaid_y, 77685}, // __nvvm_read_ptx_sreg_nctaid_y
- {Intrinsic::nvvm_read_ptx_sreg_nctaid_z, 77715}, // __nvvm_read_ptx_sreg_nctaid_z
- {Intrinsic::nvvm_read_ptx_sreg_nsmid, 77745}, // __nvvm_read_ptx_sreg_nsmid
- {Intrinsic::nvvm_read_ptx_sreg_ntid_w, 77772}, // __nvvm_read_ptx_sreg_ntid_w
- {Intrinsic::nvvm_read_ptx_sreg_ntid_x, 77800}, // __nvvm_read_ptx_sreg_ntid_x
- {Intrinsic::nvvm_read_ptx_sreg_ntid_y, 77828}, // __nvvm_read_ptx_sreg_ntid_y
- {Intrinsic::nvvm_read_ptx_sreg_ntid_z, 77856}, // __nvvm_read_ptx_sreg_ntid_z
- {Intrinsic::nvvm_read_ptx_sreg_nwarpid, 77884}, // __nvvm_read_ptx_sreg_nwarpid
- {Intrinsic::nvvm_read_ptx_sreg_pm0, 77913}, // __nvvm_read_ptx_sreg_pm0
- {Intrinsic::nvvm_read_ptx_sreg_pm1, 77938}, // __nvvm_read_ptx_sreg_pm1
- {Intrinsic::nvvm_read_ptx_sreg_pm2, 77963}, // __nvvm_read_ptx_sreg_pm2
- {Intrinsic::nvvm_read_ptx_sreg_pm3, 77988}, // __nvvm_read_ptx_sreg_pm3
- {Intrinsic::nvvm_read_ptx_sreg_smid, 78013}, // __nvvm_read_ptx_sreg_smid
- {Intrinsic::nvvm_read_ptx_sreg_tid_w, 78039}, // __nvvm_read_ptx_sreg_tid_w
- {Intrinsic::nvvm_read_ptx_sreg_tid_x, 78066}, // __nvvm_read_ptx_sreg_tid_x
- {Intrinsic::nvvm_read_ptx_sreg_tid_y, 78093}, // __nvvm_read_ptx_sreg_tid_y
- {Intrinsic::nvvm_read_ptx_sreg_tid_z, 78120}, // __nvvm_read_ptx_sreg_tid_z
- {Intrinsic::nvvm_read_ptx_sreg_warpid, 78147}, // __nvvm_read_ptx_sreg_warpid
- {Intrinsic::nvvm_read_ptx_sreg_warpsize, 78175}, // __nvvm_read_ptx_sreg_warpsize
- {Intrinsic::nvvm_rotate_b32, 78205}, // __nvvm_rotate_b32
- {Intrinsic::nvvm_rotate_b64, 78223}, // __nvvm_rotate_b64
- {Intrinsic::nvvm_rotate_right_b64, 78241}, // __nvvm_rotate_right_b64
- {Intrinsic::nvvm_round_d, 78265}, // __nvvm_round_d
- {Intrinsic::nvvm_round_f, 78280}, // __nvvm_round_f
- {Intrinsic::nvvm_round_ftz_f, 78295}, // __nvvm_round_ftz_f
- {Intrinsic::nvvm_rsqrt_approx_d, 78314}, // __nvvm_rsqrt_approx_d
- {Intrinsic::nvvm_rsqrt_approx_f, 78336}, // __nvvm_rsqrt_approx_f
- {Intrinsic::nvvm_rsqrt_approx_ftz_f, 78358}, // __nvvm_rsqrt_approx_ftz_f
- {Intrinsic::nvvm_sad_i, 78384}, // __nvvm_sad_i
- {Intrinsic::nvvm_sad_ui, 78397}, // __nvvm_sad_ui
- {Intrinsic::nvvm_saturate_d, 78411}, // __nvvm_saturate_d
- {Intrinsic::nvvm_saturate_f, 78429}, // __nvvm_saturate_f
- {Intrinsic::nvvm_saturate_ftz_f, 78447}, // __nvvm_saturate_ftz_f
- {Intrinsic::nvvm_shfl_bfly_f32, 78469}, // __nvvm_shfl_bfly_f32
- {Intrinsic::nvvm_shfl_bfly_i32, 78490}, // __nvvm_shfl_bfly_i32
- {Intrinsic::nvvm_shfl_down_f32, 78511}, // __nvvm_shfl_down_f32
- {Intrinsic::nvvm_shfl_down_i32, 78532}, // __nvvm_shfl_down_i32
- {Intrinsic::nvvm_shfl_idx_f32, 78553}, // __nvvm_shfl_idx_f32
- {Intrinsic::nvvm_shfl_idx_i32, 78573}, // __nvvm_shfl_idx_i32
- {Intrinsic::nvvm_shfl_sync_bfly_f32, 78593}, // __nvvm_shfl_sync_bfly_f32
- {Intrinsic::nvvm_shfl_sync_bfly_i32, 78619}, // __nvvm_shfl_sync_bfly_i32
- {Intrinsic::nvvm_shfl_sync_down_f32, 78645}, // __nvvm_shfl_sync_down_f32
- {Intrinsic::nvvm_shfl_sync_down_i32, 78671}, // __nvvm_shfl_sync_down_i32
- {Intrinsic::nvvm_shfl_sync_idx_f32, 78697}, // __nvvm_shfl_sync_idx_f32
- {Intrinsic::nvvm_shfl_sync_idx_i32, 78722}, // __nvvm_shfl_sync_idx_i32
- {Intrinsic::nvvm_shfl_sync_up_f32, 78747}, // __nvvm_shfl_sync_up_f32
- {Intrinsic::nvvm_shfl_sync_up_i32, 78771}, // __nvvm_shfl_sync_up_i32
- {Intrinsic::nvvm_shfl_up_f32, 78795}, // __nvvm_shfl_up_f32
- {Intrinsic::nvvm_shfl_up_i32, 78814}, // __nvvm_shfl_up_i32
- {Intrinsic::nvvm_sin_approx_f, 78833}, // __nvvm_sin_approx_f
- {Intrinsic::nvvm_sin_approx_ftz_f, 78853}, // __nvvm_sin_approx_ftz_f
- {Intrinsic::nvvm_sqrt_approx_f, 78877}, // __nvvm_sqrt_approx_f
- {Intrinsic::nvvm_sqrt_approx_ftz_f, 78898}, // __nvvm_sqrt_approx_ftz_f
- {Intrinsic::nvvm_sqrt_f, 78923}, // __nvvm_sqrt_f
- {Intrinsic::nvvm_sqrt_rm_d, 78937}, // __nvvm_sqrt_rm_d
- {Intrinsic::nvvm_sqrt_rm_f, 78954}, // __nvvm_sqrt_rm_f
- {Intrinsic::nvvm_sqrt_rm_ftz_f, 78971}, // __nvvm_sqrt_rm_ftz_f
- {Intrinsic::nvvm_sqrt_rn_d, 78992}, // __nvvm_sqrt_rn_d
- {Intrinsic::nvvm_sqrt_rn_f, 79009}, // __nvvm_sqrt_rn_f
- {Intrinsic::nvvm_sqrt_rn_ftz_f, 79026}, // __nvvm_sqrt_rn_ftz_f
- {Intrinsic::nvvm_sqrt_rp_d, 79047}, // __nvvm_sqrt_rp_d
- {Intrinsic::nvvm_sqrt_rp_f, 79064}, // __nvvm_sqrt_rp_f
- {Intrinsic::nvvm_sqrt_rp_ftz_f, 79081}, // __nvvm_sqrt_rp_ftz_f
- {Intrinsic::nvvm_sqrt_rz_d, 79102}, // __nvvm_sqrt_rz_d
- {Intrinsic::nvvm_sqrt_rz_f, 79119}, // __nvvm_sqrt_rz_f
- {Intrinsic::nvvm_sqrt_rz_ftz_f, 79136}, // __nvvm_sqrt_rz_ftz_f
- {Intrinsic::nvvm_suq_array_size, 79157}, // __nvvm_suq_array_size
- {Intrinsic::nvvm_suq_channel_data_type, 79179}, // __nvvm_suq_channel_data_type
- {Intrinsic::nvvm_suq_channel_order, 79208}, // __nvvm_suq_channel_order
- {Intrinsic::nvvm_suq_depth, 79233}, // __nvvm_suq_depth
- {Intrinsic::nvvm_suq_height, 79250}, // __nvvm_suq_height
- {Intrinsic::nvvm_suq_width, 79268}, // __nvvm_suq_width
- {Intrinsic::nvvm_sust_b_1d_array_i16_clamp, 79285}, // __nvvm_sust_b_1d_array_i16_clamp
- {Intrinsic::nvvm_sust_b_1d_array_i16_trap, 79318}, // __nvvm_sust_b_1d_array_i16_trap
- {Intrinsic::nvvm_sust_b_1d_array_i16_zero, 79350}, // __nvvm_sust_b_1d_array_i16_zero
- {Intrinsic::nvvm_sust_b_1d_array_i32_clamp, 79382}, // __nvvm_sust_b_1d_array_i32_clamp
- {Intrinsic::nvvm_sust_b_1d_array_i32_trap, 79415}, // __nvvm_sust_b_1d_array_i32_trap
- {Intrinsic::nvvm_sust_b_1d_array_i32_zero, 79447}, // __nvvm_sust_b_1d_array_i32_zero
- {Intrinsic::nvvm_sust_b_1d_array_i64_clamp, 79479}, // __nvvm_sust_b_1d_array_i64_clamp
- {Intrinsic::nvvm_sust_b_1d_array_i64_trap, 79512}, // __nvvm_sust_b_1d_array_i64_trap
- {Intrinsic::nvvm_sust_b_1d_array_i64_zero, 79544}, // __nvvm_sust_b_1d_array_i64_zero
- {Intrinsic::nvvm_sust_b_1d_array_i8_clamp, 79576}, // __nvvm_sust_b_1d_array_i8_clamp
- {Intrinsic::nvvm_sust_b_1d_array_i8_trap, 79608}, // __nvvm_sust_b_1d_array_i8_trap
- {Intrinsic::nvvm_sust_b_1d_array_i8_zero, 79639}, // __nvvm_sust_b_1d_array_i8_zero
- {Intrinsic::nvvm_sust_b_1d_array_v2i16_clamp, 79670}, // __nvvm_sust_b_1d_array_v2i16_clamp
- {Intrinsic::nvvm_sust_b_1d_array_v2i16_trap, 79705}, // __nvvm_sust_b_1d_array_v2i16_trap
- {Intrinsic::nvvm_sust_b_1d_array_v2i16_zero, 79739}, // __nvvm_sust_b_1d_array_v2i16_zero
- {Intrinsic::nvvm_sust_b_1d_array_v2i32_clamp, 79773}, // __nvvm_sust_b_1d_array_v2i32_clamp
- {Intrinsic::nvvm_sust_b_1d_array_v2i32_trap, 79808}, // __nvvm_sust_b_1d_array_v2i32_trap
- {Intrinsic::nvvm_sust_b_1d_array_v2i32_zero, 79842}, // __nvvm_sust_b_1d_array_v2i32_zero
- {Intrinsic::nvvm_sust_b_1d_array_v2i64_clamp, 79876}, // __nvvm_sust_b_1d_array_v2i64_clamp
- {Intrinsic::nvvm_sust_b_1d_array_v2i64_trap, 79911}, // __nvvm_sust_b_1d_array_v2i64_trap
- {Intrinsic::nvvm_sust_b_1d_array_v2i64_zero, 79945}, // __nvvm_sust_b_1d_array_v2i64_zero
- {Intrinsic::nvvm_sust_b_1d_array_v2i8_clamp, 79979}, // __nvvm_sust_b_1d_array_v2i8_clamp
- {Intrinsic::nvvm_sust_b_1d_array_v2i8_trap, 80013}, // __nvvm_sust_b_1d_array_v2i8_trap
- {Intrinsic::nvvm_sust_b_1d_array_v2i8_zero, 80046}, // __nvvm_sust_b_1d_array_v2i8_zero
- {Intrinsic::nvvm_sust_b_1d_array_v4i16_clamp, 80079}, // __nvvm_sust_b_1d_array_v4i16_clamp
- {Intrinsic::nvvm_sust_b_1d_array_v4i16_trap, 80114}, // __nvvm_sust_b_1d_array_v4i16_trap
- {Intrinsic::nvvm_sust_b_1d_array_v4i16_zero, 80148}, // __nvvm_sust_b_1d_array_v4i16_zero
- {Intrinsic::nvvm_sust_b_1d_array_v4i32_clamp, 80182}, // __nvvm_sust_b_1d_array_v4i32_clamp
- {Intrinsic::nvvm_sust_b_1d_array_v4i32_trap, 80217}, // __nvvm_sust_b_1d_array_v4i32_trap
- {Intrinsic::nvvm_sust_b_1d_array_v4i32_zero, 80251}, // __nvvm_sust_b_1d_array_v4i32_zero
- {Intrinsic::nvvm_sust_b_1d_array_v4i8_clamp, 80285}, // __nvvm_sust_b_1d_array_v4i8_clamp
- {Intrinsic::nvvm_sust_b_1d_array_v4i8_trap, 80319}, // __nvvm_sust_b_1d_array_v4i8_trap
- {Intrinsic::nvvm_sust_b_1d_array_v4i8_zero, 80352}, // __nvvm_sust_b_1d_array_v4i8_zero
- {Intrinsic::nvvm_sust_b_1d_i16_clamp, 80385}, // __nvvm_sust_b_1d_i16_clamp
- {Intrinsic::nvvm_sust_b_1d_i16_trap, 80412}, // __nvvm_sust_b_1d_i16_trap
- {Intrinsic::nvvm_sust_b_1d_i16_zero, 80438}, // __nvvm_sust_b_1d_i16_zero
- {Intrinsic::nvvm_sust_b_1d_i32_clamp, 80464}, // __nvvm_sust_b_1d_i32_clamp
- {Intrinsic::nvvm_sust_b_1d_i32_trap, 80491}, // __nvvm_sust_b_1d_i32_trap
- {Intrinsic::nvvm_sust_b_1d_i32_zero, 80517}, // __nvvm_sust_b_1d_i32_zero
- {Intrinsic::nvvm_sust_b_1d_i64_clamp, 80543}, // __nvvm_sust_b_1d_i64_clamp
- {Intrinsic::nvvm_sust_b_1d_i64_trap, 80570}, // __nvvm_sust_b_1d_i64_trap
- {Intrinsic::nvvm_sust_b_1d_i64_zero, 80596}, // __nvvm_sust_b_1d_i64_zero
- {Intrinsic::nvvm_sust_b_1d_i8_clamp, 80622}, // __nvvm_sust_b_1d_i8_clamp
- {Intrinsic::nvvm_sust_b_1d_i8_trap, 80648}, // __nvvm_sust_b_1d_i8_trap
- {Intrinsic::nvvm_sust_b_1d_i8_zero, 80673}, // __nvvm_sust_b_1d_i8_zero
- {Intrinsic::nvvm_sust_b_1d_v2i16_clamp, 80698}, // __nvvm_sust_b_1d_v2i16_clamp
- {Intrinsic::nvvm_sust_b_1d_v2i16_trap, 80727}, // __nvvm_sust_b_1d_v2i16_trap
- {Intrinsic::nvvm_sust_b_1d_v2i16_zero, 80755}, // __nvvm_sust_b_1d_v2i16_zero
- {Intrinsic::nvvm_sust_b_1d_v2i32_clamp, 80783}, // __nvvm_sust_b_1d_v2i32_clamp
- {Intrinsic::nvvm_sust_b_1d_v2i32_trap, 80812}, // __nvvm_sust_b_1d_v2i32_trap
- {Intrinsic::nvvm_sust_b_1d_v2i32_zero, 80840}, // __nvvm_sust_b_1d_v2i32_zero
- {Intrinsic::nvvm_sust_b_1d_v2i64_clamp, 80868}, // __nvvm_sust_b_1d_v2i64_clamp
- {Intrinsic::nvvm_sust_b_1d_v2i64_trap, 80897}, // __nvvm_sust_b_1d_v2i64_trap
- {Intrinsic::nvvm_sust_b_1d_v2i64_zero, 80925}, // __nvvm_sust_b_1d_v2i64_zero
- {Intrinsic::nvvm_sust_b_1d_v2i8_clamp, 80953}, // __nvvm_sust_b_1d_v2i8_clamp
- {Intrinsic::nvvm_sust_b_1d_v2i8_trap, 80981}, // __nvvm_sust_b_1d_v2i8_trap
- {Intrinsic::nvvm_sust_b_1d_v2i8_zero, 81008}, // __nvvm_sust_b_1d_v2i8_zero
- {Intrinsic::nvvm_sust_b_1d_v4i16_clamp, 81035}, // __nvvm_sust_b_1d_v4i16_clamp
- {Intrinsic::nvvm_sust_b_1d_v4i16_trap, 81064}, // __nvvm_sust_b_1d_v4i16_trap
- {Intrinsic::nvvm_sust_b_1d_v4i16_zero, 81092}, // __nvvm_sust_b_1d_v4i16_zero
- {Intrinsic::nvvm_sust_b_1d_v4i32_clamp, 81120}, // __nvvm_sust_b_1d_v4i32_clamp
- {Intrinsic::nvvm_sust_b_1d_v4i32_trap, 81149}, // __nvvm_sust_b_1d_v4i32_trap
- {Intrinsic::nvvm_sust_b_1d_v4i32_zero, 81177}, // __nvvm_sust_b_1d_v4i32_zero
- {Intrinsic::nvvm_sust_b_1d_v4i8_clamp, 81205}, // __nvvm_sust_b_1d_v4i8_clamp
- {Intrinsic::nvvm_sust_b_1d_v4i8_trap, 81233}, // __nvvm_sust_b_1d_v4i8_trap
- {Intrinsic::nvvm_sust_b_1d_v4i8_zero, 81260}, // __nvvm_sust_b_1d_v4i8_zero
- {Intrinsic::nvvm_sust_b_2d_array_i16_clamp, 81287}, // __nvvm_sust_b_2d_array_i16_clamp
- {Intrinsic::nvvm_sust_b_2d_array_i16_trap, 81320}, // __nvvm_sust_b_2d_array_i16_trap
- {Intrinsic::nvvm_sust_b_2d_array_i16_zero, 81352}, // __nvvm_sust_b_2d_array_i16_zero
- {Intrinsic::nvvm_sust_b_2d_array_i32_clamp, 81384}, // __nvvm_sust_b_2d_array_i32_clamp
- {Intrinsic::nvvm_sust_b_2d_array_i32_trap, 81417}, // __nvvm_sust_b_2d_array_i32_trap
- {Intrinsic::nvvm_sust_b_2d_array_i32_zero, 81449}, // __nvvm_sust_b_2d_array_i32_zero
- {Intrinsic::nvvm_sust_b_2d_array_i64_clamp, 81481}, // __nvvm_sust_b_2d_array_i64_clamp
- {Intrinsic::nvvm_sust_b_2d_array_i64_trap, 81514}, // __nvvm_sust_b_2d_array_i64_trap
- {Intrinsic::nvvm_sust_b_2d_array_i64_zero, 81546}, // __nvvm_sust_b_2d_array_i64_zero
- {Intrinsic::nvvm_sust_b_2d_array_i8_clamp, 81578}, // __nvvm_sust_b_2d_array_i8_clamp
- {Intrinsic::nvvm_sust_b_2d_array_i8_trap, 81610}, // __nvvm_sust_b_2d_array_i8_trap
- {Intrinsic::nvvm_sust_b_2d_array_i8_zero, 81641}, // __nvvm_sust_b_2d_array_i8_zero
- {Intrinsic::nvvm_sust_b_2d_array_v2i16_clamp, 81672}, // __nvvm_sust_b_2d_array_v2i16_clamp
- {Intrinsic::nvvm_sust_b_2d_array_v2i16_trap, 81707}, // __nvvm_sust_b_2d_array_v2i16_trap
- {Intrinsic::nvvm_sust_b_2d_array_v2i16_zero, 81741}, // __nvvm_sust_b_2d_array_v2i16_zero
- {Intrinsic::nvvm_sust_b_2d_array_v2i32_clamp, 81775}, // __nvvm_sust_b_2d_array_v2i32_clamp
- {Intrinsic::nvvm_sust_b_2d_array_v2i32_trap, 81810}, // __nvvm_sust_b_2d_array_v2i32_trap
- {Intrinsic::nvvm_sust_b_2d_array_v2i32_zero, 81844}, // __nvvm_sust_b_2d_array_v2i32_zero
- {Intrinsic::nvvm_sust_b_2d_array_v2i64_clamp, 81878}, // __nvvm_sust_b_2d_array_v2i64_clamp
- {Intrinsic::nvvm_sust_b_2d_array_v2i64_trap, 81913}, // __nvvm_sust_b_2d_array_v2i64_trap
- {Intrinsic::nvvm_sust_b_2d_array_v2i64_zero, 81947}, // __nvvm_sust_b_2d_array_v2i64_zero
- {Intrinsic::nvvm_sust_b_2d_array_v2i8_clamp, 81981}, // __nvvm_sust_b_2d_array_v2i8_clamp
- {Intrinsic::nvvm_sust_b_2d_array_v2i8_trap, 82015}, // __nvvm_sust_b_2d_array_v2i8_trap
- {Intrinsic::nvvm_sust_b_2d_array_v2i8_zero, 82048}, // __nvvm_sust_b_2d_array_v2i8_zero
- {Intrinsic::nvvm_sust_b_2d_array_v4i16_clamp, 82081}, // __nvvm_sust_b_2d_array_v4i16_clamp
- {Intrinsic::nvvm_sust_b_2d_array_v4i16_trap, 82116}, // __nvvm_sust_b_2d_array_v4i16_trap
- {Intrinsic::nvvm_sust_b_2d_array_v4i16_zero, 82150}, // __nvvm_sust_b_2d_array_v4i16_zero
- {Intrinsic::nvvm_sust_b_2d_array_v4i32_clamp, 82184}, // __nvvm_sust_b_2d_array_v4i32_clamp
- {Intrinsic::nvvm_sust_b_2d_array_v4i32_trap, 82219}, // __nvvm_sust_b_2d_array_v4i32_trap
- {Intrinsic::nvvm_sust_b_2d_array_v4i32_zero, 82253}, // __nvvm_sust_b_2d_array_v4i32_zero
- {Intrinsic::nvvm_sust_b_2d_array_v4i8_clamp, 82287}, // __nvvm_sust_b_2d_array_v4i8_clamp
- {Intrinsic::nvvm_sust_b_2d_array_v4i8_trap, 82321}, // __nvvm_sust_b_2d_array_v4i8_trap
- {Intrinsic::nvvm_sust_b_2d_array_v4i8_zero, 82354}, // __nvvm_sust_b_2d_array_v4i8_zero
- {Intrinsic::nvvm_sust_b_2d_i16_clamp, 82387}, // __nvvm_sust_b_2d_i16_clamp
- {Intrinsic::nvvm_sust_b_2d_i16_trap, 82414}, // __nvvm_sust_b_2d_i16_trap
- {Intrinsic::nvvm_sust_b_2d_i16_zero, 82440}, // __nvvm_sust_b_2d_i16_zero
- {Intrinsic::nvvm_sust_b_2d_i32_clamp, 82466}, // __nvvm_sust_b_2d_i32_clamp
- {Intrinsic::nvvm_sust_b_2d_i32_trap, 82493}, // __nvvm_sust_b_2d_i32_trap
- {Intrinsic::nvvm_sust_b_2d_i32_zero, 82519}, // __nvvm_sust_b_2d_i32_zero
- {Intrinsic::nvvm_sust_b_2d_i64_clamp, 82545}, // __nvvm_sust_b_2d_i64_clamp
- {Intrinsic::nvvm_sust_b_2d_i64_trap, 82572}, // __nvvm_sust_b_2d_i64_trap
- {Intrinsic::nvvm_sust_b_2d_i64_zero, 82598}, // __nvvm_sust_b_2d_i64_zero
- {Intrinsic::nvvm_sust_b_2d_i8_clamp, 82624}, // __nvvm_sust_b_2d_i8_clamp
- {Intrinsic::nvvm_sust_b_2d_i8_trap, 82650}, // __nvvm_sust_b_2d_i8_trap
- {Intrinsic::nvvm_sust_b_2d_i8_zero, 82675}, // __nvvm_sust_b_2d_i8_zero
- {Intrinsic::nvvm_sust_b_2d_v2i16_clamp, 82700}, // __nvvm_sust_b_2d_v2i16_clamp
- {Intrinsic::nvvm_sust_b_2d_v2i16_trap, 82729}, // __nvvm_sust_b_2d_v2i16_trap
- {Intrinsic::nvvm_sust_b_2d_v2i16_zero, 82757}, // __nvvm_sust_b_2d_v2i16_zero
- {Intrinsic::nvvm_sust_b_2d_v2i32_clamp, 82785}, // __nvvm_sust_b_2d_v2i32_clamp
- {Intrinsic::nvvm_sust_b_2d_v2i32_trap, 82814}, // __nvvm_sust_b_2d_v2i32_trap
- {Intrinsic::nvvm_sust_b_2d_v2i32_zero, 82842}, // __nvvm_sust_b_2d_v2i32_zero
- {Intrinsic::nvvm_sust_b_2d_v2i64_clamp, 82870}, // __nvvm_sust_b_2d_v2i64_clamp
- {Intrinsic::nvvm_sust_b_2d_v2i64_trap, 82899}, // __nvvm_sust_b_2d_v2i64_trap
- {Intrinsic::nvvm_sust_b_2d_v2i64_zero, 82927}, // __nvvm_sust_b_2d_v2i64_zero
- {Intrinsic::nvvm_sust_b_2d_v2i8_clamp, 82955}, // __nvvm_sust_b_2d_v2i8_clamp
- {Intrinsic::nvvm_sust_b_2d_v2i8_trap, 82983}, // __nvvm_sust_b_2d_v2i8_trap
- {Intrinsic::nvvm_sust_b_2d_v2i8_zero, 83010}, // __nvvm_sust_b_2d_v2i8_zero
- {Intrinsic::nvvm_sust_b_2d_v4i16_clamp, 83037}, // __nvvm_sust_b_2d_v4i16_clamp
- {Intrinsic::nvvm_sust_b_2d_v4i16_trap, 83066}, // __nvvm_sust_b_2d_v4i16_trap
- {Intrinsic::nvvm_sust_b_2d_v4i16_zero, 83094}, // __nvvm_sust_b_2d_v4i16_zero
- {Intrinsic::nvvm_sust_b_2d_v4i32_clamp, 83122}, // __nvvm_sust_b_2d_v4i32_clamp
- {Intrinsic::nvvm_sust_b_2d_v4i32_trap, 83151}, // __nvvm_sust_b_2d_v4i32_trap
- {Intrinsic::nvvm_sust_b_2d_v4i32_zero, 83179}, // __nvvm_sust_b_2d_v4i32_zero
- {Intrinsic::nvvm_sust_b_2d_v4i8_clamp, 83207}, // __nvvm_sust_b_2d_v4i8_clamp
- {Intrinsic::nvvm_sust_b_2d_v4i8_trap, 83235}, // __nvvm_sust_b_2d_v4i8_trap
- {Intrinsic::nvvm_sust_b_2d_v4i8_zero, 83262}, // __nvvm_sust_b_2d_v4i8_zero
- {Intrinsic::nvvm_sust_b_3d_i16_clamp, 83289}, // __nvvm_sust_b_3d_i16_clamp
- {Intrinsic::nvvm_sust_b_3d_i16_trap, 83316}, // __nvvm_sust_b_3d_i16_trap
- {Intrinsic::nvvm_sust_b_3d_i16_zero, 83342}, // __nvvm_sust_b_3d_i16_zero
- {Intrinsic::nvvm_sust_b_3d_i32_clamp, 83368}, // __nvvm_sust_b_3d_i32_clamp
- {Intrinsic::nvvm_sust_b_3d_i32_trap, 83395}, // __nvvm_sust_b_3d_i32_trap
- {Intrinsic::nvvm_sust_b_3d_i32_zero, 83421}, // __nvvm_sust_b_3d_i32_zero
- {Intrinsic::nvvm_sust_b_3d_i64_clamp, 83447}, // __nvvm_sust_b_3d_i64_clamp
- {Intrinsic::nvvm_sust_b_3d_i64_trap, 83474}, // __nvvm_sust_b_3d_i64_trap
- {Intrinsic::nvvm_sust_b_3d_i64_zero, 83500}, // __nvvm_sust_b_3d_i64_zero
- {Intrinsic::nvvm_sust_b_3d_i8_clamp, 83526}, // __nvvm_sust_b_3d_i8_clamp
- {Intrinsic::nvvm_sust_b_3d_i8_trap, 83552}, // __nvvm_sust_b_3d_i8_trap
- {Intrinsic::nvvm_sust_b_3d_i8_zero, 83577}, // __nvvm_sust_b_3d_i8_zero
- {Intrinsic::nvvm_sust_b_3d_v2i16_clamp, 83602}, // __nvvm_sust_b_3d_v2i16_clamp
- {Intrinsic::nvvm_sust_b_3d_v2i16_trap, 83631}, // __nvvm_sust_b_3d_v2i16_trap
- {Intrinsic::nvvm_sust_b_3d_v2i16_zero, 83659}, // __nvvm_sust_b_3d_v2i16_zero
- {Intrinsic::nvvm_sust_b_3d_v2i32_clamp, 83687}, // __nvvm_sust_b_3d_v2i32_clamp
- {Intrinsic::nvvm_sust_b_3d_v2i32_trap, 83716}, // __nvvm_sust_b_3d_v2i32_trap
- {Intrinsic::nvvm_sust_b_3d_v2i32_zero, 83744}, // __nvvm_sust_b_3d_v2i32_zero
- {Intrinsic::nvvm_sust_b_3d_v2i64_clamp, 83772}, // __nvvm_sust_b_3d_v2i64_clamp
- {Intrinsic::nvvm_sust_b_3d_v2i64_trap, 83801}, // __nvvm_sust_b_3d_v2i64_trap
- {Intrinsic::nvvm_sust_b_3d_v2i64_zero, 83829}, // __nvvm_sust_b_3d_v2i64_zero
- {Intrinsic::nvvm_sust_b_3d_v2i8_clamp, 83857}, // __nvvm_sust_b_3d_v2i8_clamp
- {Intrinsic::nvvm_sust_b_3d_v2i8_trap, 83885}, // __nvvm_sust_b_3d_v2i8_trap
- {Intrinsic::nvvm_sust_b_3d_v2i8_zero, 83912}, // __nvvm_sust_b_3d_v2i8_zero
- {Intrinsic::nvvm_sust_b_3d_v4i16_clamp, 83939}, // __nvvm_sust_b_3d_v4i16_clamp
- {Intrinsic::nvvm_sust_b_3d_v4i16_trap, 83968}, // __nvvm_sust_b_3d_v4i16_trap
- {Intrinsic::nvvm_sust_b_3d_v4i16_zero, 83996}, // __nvvm_sust_b_3d_v4i16_zero
- {Intrinsic::nvvm_sust_b_3d_v4i32_clamp, 84024}, // __nvvm_sust_b_3d_v4i32_clamp
- {Intrinsic::nvvm_sust_b_3d_v4i32_trap, 84053}, // __nvvm_sust_b_3d_v4i32_trap
- {Intrinsic::nvvm_sust_b_3d_v4i32_zero, 84081}, // __nvvm_sust_b_3d_v4i32_zero
- {Intrinsic::nvvm_sust_b_3d_v4i8_clamp, 84109}, // __nvvm_sust_b_3d_v4i8_clamp
- {Intrinsic::nvvm_sust_b_3d_v4i8_trap, 84137}, // __nvvm_sust_b_3d_v4i8_trap
- {Intrinsic::nvvm_sust_b_3d_v4i8_zero, 84164}, // __nvvm_sust_b_3d_v4i8_zero
- {Intrinsic::nvvm_sust_p_1d_array_i16_trap, 84191}, // __nvvm_sust_p_1d_array_i16_trap
- {Intrinsic::nvvm_sust_p_1d_array_i32_trap, 84223}, // __nvvm_sust_p_1d_array_i32_trap
- {Intrinsic::nvvm_sust_p_1d_array_i8_trap, 84255}, // __nvvm_sust_p_1d_array_i8_trap
- {Intrinsic::nvvm_sust_p_1d_array_v2i16_trap, 84286}, // __nvvm_sust_p_1d_array_v2i16_trap
- {Intrinsic::nvvm_sust_p_1d_array_v2i32_trap, 84320}, // __nvvm_sust_p_1d_array_v2i32_trap
- {Intrinsic::nvvm_sust_p_1d_array_v2i8_trap, 84354}, // __nvvm_sust_p_1d_array_v2i8_trap
- {Intrinsic::nvvm_sust_p_1d_array_v4i16_trap, 84387}, // __nvvm_sust_p_1d_array_v4i16_trap
- {Intrinsic::nvvm_sust_p_1d_array_v4i32_trap, 84421}, // __nvvm_sust_p_1d_array_v4i32_trap
- {Intrinsic::nvvm_sust_p_1d_array_v4i8_trap, 84455}, // __nvvm_sust_p_1d_array_v4i8_trap
- {Intrinsic::nvvm_sust_p_1d_i16_trap, 84488}, // __nvvm_sust_p_1d_i16_trap
- {Intrinsic::nvvm_sust_p_1d_i32_trap, 84514}, // __nvvm_sust_p_1d_i32_trap
- {Intrinsic::nvvm_sust_p_1d_i8_trap, 84540}, // __nvvm_sust_p_1d_i8_trap
- {Intrinsic::nvvm_sust_p_1d_v2i16_trap, 84565}, // __nvvm_sust_p_1d_v2i16_trap
- {Intrinsic::nvvm_sust_p_1d_v2i32_trap, 84593}, // __nvvm_sust_p_1d_v2i32_trap
- {Intrinsic::nvvm_sust_p_1d_v2i8_trap, 84621}, // __nvvm_sust_p_1d_v2i8_trap
- {Intrinsic::nvvm_sust_p_1d_v4i16_trap, 84648}, // __nvvm_sust_p_1d_v4i16_trap
- {Intrinsic::nvvm_sust_p_1d_v4i32_trap, 84676}, // __nvvm_sust_p_1d_v4i32_trap
- {Intrinsic::nvvm_sust_p_1d_v4i8_trap, 84704}, // __nvvm_sust_p_1d_v4i8_trap
- {Intrinsic::nvvm_sust_p_2d_array_i16_trap, 84731}, // __nvvm_sust_p_2d_array_i16_trap
- {Intrinsic::nvvm_sust_p_2d_array_i32_trap, 84763}, // __nvvm_sust_p_2d_array_i32_trap
- {Intrinsic::nvvm_sust_p_2d_array_i8_trap, 84795}, // __nvvm_sust_p_2d_array_i8_trap
- {Intrinsic::nvvm_sust_p_2d_array_v2i16_trap, 84826}, // __nvvm_sust_p_2d_array_v2i16_trap
- {Intrinsic::nvvm_sust_p_2d_array_v2i32_trap, 84860}, // __nvvm_sust_p_2d_array_v2i32_trap
- {Intrinsic::nvvm_sust_p_2d_array_v2i8_trap, 84894}, // __nvvm_sust_p_2d_array_v2i8_trap
- {Intrinsic::nvvm_sust_p_2d_array_v4i16_trap, 84927}, // __nvvm_sust_p_2d_array_v4i16_trap
- {Intrinsic::nvvm_sust_p_2d_array_v4i32_trap, 84961}, // __nvvm_sust_p_2d_array_v4i32_trap
- {Intrinsic::nvvm_sust_p_2d_array_v4i8_trap, 84995}, // __nvvm_sust_p_2d_array_v4i8_trap
- {Intrinsic::nvvm_sust_p_2d_i16_trap, 85028}, // __nvvm_sust_p_2d_i16_trap
- {Intrinsic::nvvm_sust_p_2d_i32_trap, 85054}, // __nvvm_sust_p_2d_i32_trap
- {Intrinsic::nvvm_sust_p_2d_i8_trap, 85080}, // __nvvm_sust_p_2d_i8_trap
- {Intrinsic::nvvm_sust_p_2d_v2i16_trap, 85105}, // __nvvm_sust_p_2d_v2i16_trap
- {Intrinsic::nvvm_sust_p_2d_v2i32_trap, 85133}, // __nvvm_sust_p_2d_v2i32_trap
- {Intrinsic::nvvm_sust_p_2d_v2i8_trap, 85161}, // __nvvm_sust_p_2d_v2i8_trap
- {Intrinsic::nvvm_sust_p_2d_v4i16_trap, 85188}, // __nvvm_sust_p_2d_v4i16_trap
- {Intrinsic::nvvm_sust_p_2d_v4i32_trap, 85216}, // __nvvm_sust_p_2d_v4i32_trap
- {Intrinsic::nvvm_sust_p_2d_v4i8_trap, 85244}, // __nvvm_sust_p_2d_v4i8_trap
- {Intrinsic::nvvm_sust_p_3d_i16_trap, 85271}, // __nvvm_sust_p_3d_i16_trap
- {Intrinsic::nvvm_sust_p_3d_i32_trap, 85297}, // __nvvm_sust_p_3d_i32_trap
- {Intrinsic::nvvm_sust_p_3d_i8_trap, 85323}, // __nvvm_sust_p_3d_i8_trap
- {Intrinsic::nvvm_sust_p_3d_v2i16_trap, 85348}, // __nvvm_sust_p_3d_v2i16_trap
- {Intrinsic::nvvm_sust_p_3d_v2i32_trap, 85376}, // __nvvm_sust_p_3d_v2i32_trap
- {Intrinsic::nvvm_sust_p_3d_v2i8_trap, 85404}, // __nvvm_sust_p_3d_v2i8_trap
- {Intrinsic::nvvm_sust_p_3d_v4i16_trap, 85431}, // __nvvm_sust_p_3d_v4i16_trap
- {Intrinsic::nvvm_sust_p_3d_v4i32_trap, 85459}, // __nvvm_sust_p_3d_v4i32_trap
- {Intrinsic::nvvm_sust_p_3d_v4i8_trap, 85487}, // __nvvm_sust_p_3d_v4i8_trap
- {Intrinsic::nvvm_swap_lo_hi_b64, 85514}, // __nvvm_swap_lo_hi_b64
- {Intrinsic::nvvm_trunc_d, 85536}, // __nvvm_trunc_d
- {Intrinsic::nvvm_trunc_f, 85551}, // __nvvm_trunc_f
- {Intrinsic::nvvm_trunc_ftz_f, 85566}, // __nvvm_trunc_ftz_f
- {Intrinsic::nvvm_txq_array_size, 85585}, // __nvvm_txq_array_size
- {Intrinsic::nvvm_txq_channel_data_type, 85607}, // __nvvm_txq_channel_data_type
- {Intrinsic::nvvm_txq_channel_order, 85636}, // __nvvm_txq_channel_order
- {Intrinsic::nvvm_txq_depth, 85661}, // __nvvm_txq_depth
- {Intrinsic::nvvm_txq_height, 85678}, // __nvvm_txq_height
- {Intrinsic::nvvm_txq_num_mipmap_levels, 85696}, // __nvvm_txq_num_mipmap_levels
- {Intrinsic::nvvm_txq_num_samples, 85725}, // __nvvm_txq_num_samples
- {Intrinsic::nvvm_txq_width, 85748}, // __nvvm_txq_width
- {Intrinsic::nvvm_ui2d_rm, 85765}, // __nvvm_ui2d_rm
- {Intrinsic::nvvm_ui2d_rn, 85780}, // __nvvm_ui2d_rn
- {Intrinsic::nvvm_ui2d_rp, 85795}, // __nvvm_ui2d_rp
- {Intrinsic::nvvm_ui2d_rz, 85810}, // __nvvm_ui2d_rz
- {Intrinsic::nvvm_ui2f_rm, 85825}, // __nvvm_ui2f_rm
- {Intrinsic::nvvm_ui2f_rn, 85840}, // __nvvm_ui2f_rn
- {Intrinsic::nvvm_ui2f_rp, 85855}, // __nvvm_ui2f_rp
- {Intrinsic::nvvm_ui2f_rz, 85870}, // __nvvm_ui2f_rz
- {Intrinsic::nvvm_ull2d_rm, 85885}, // __nvvm_ull2d_rm
- {Intrinsic::nvvm_ull2d_rn, 85901}, // __nvvm_ull2d_rn
- {Intrinsic::nvvm_ull2d_rp, 85917}, // __nvvm_ull2d_rp
- {Intrinsic::nvvm_ull2d_rz, 85933}, // __nvvm_ull2d_rz
- {Intrinsic::nvvm_ull2f_rm, 85949}, // __nvvm_ull2f_rm
- {Intrinsic::nvvm_ull2f_rn, 85965}, // __nvvm_ull2f_rn
- {Intrinsic::nvvm_ull2f_rp, 85981}, // __nvvm_ull2f_rp
- {Intrinsic::nvvm_ull2f_rz, 85997}, // __nvvm_ull2f_rz
- {Intrinsic::nvvm_vote_all, 86013}, // __nvvm_vote_all
- {Intrinsic::nvvm_vote_all_sync, 86029}, // __nvvm_vote_all_sync
- {Intrinsic::nvvm_vote_any, 86050}, // __nvvm_vote_any
- {Intrinsic::nvvm_vote_any_sync, 86066}, // __nvvm_vote_any_sync
- {Intrinsic::nvvm_vote_ballot, 86087}, // __nvvm_vote_ballot
- {Intrinsic::nvvm_vote_ballot_sync, 86106}, // __nvvm_vote_ballot_sync
- {Intrinsic::nvvm_vote_uni, 86130}, // __nvvm_vote_uni
- {Intrinsic::nvvm_vote_uni_sync, 86146}, // __nvvm_vote_uni_sync
- {Intrinsic::nvvm_barrier0, 73235}, // __syncthreads
+ {Intrinsic::nvvm_add_rm_d, 74581}, // __nvvm_add_rm_d
+ {Intrinsic::nvvm_add_rm_f, 74597}, // __nvvm_add_rm_f
+ {Intrinsic::nvvm_add_rm_ftz_f, 74613}, // __nvvm_add_rm_ftz_f
+ {Intrinsic::nvvm_add_rn_d, 74633}, // __nvvm_add_rn_d
+ {Intrinsic::nvvm_add_rn_f, 74649}, // __nvvm_add_rn_f
+ {Intrinsic::nvvm_add_rn_ftz_f, 74665}, // __nvvm_add_rn_ftz_f
+ {Intrinsic::nvvm_add_rp_d, 74685}, // __nvvm_add_rp_d
+ {Intrinsic::nvvm_add_rp_f, 74701}, // __nvvm_add_rp_f
+ {Intrinsic::nvvm_add_rp_ftz_f, 74717}, // __nvvm_add_rp_ftz_f
+ {Intrinsic::nvvm_add_rz_d, 74737}, // __nvvm_add_rz_d
+ {Intrinsic::nvvm_add_rz_f, 74753}, // __nvvm_add_rz_f
+ {Intrinsic::nvvm_add_rz_ftz_f, 74769}, // __nvvm_add_rz_ftz_f
+ {Intrinsic::nvvm_barrier, 74826}, // __nvvm_bar
+ {Intrinsic::nvvm_barrier0_and, 74908}, // __nvvm_bar0_and
+ {Intrinsic::nvvm_barrier0_or, 74924}, // __nvvm_bar0_or
+ {Intrinsic::nvvm_barrier0_popc, 74939}, // __nvvm_bar0_popc
+ {Intrinsic::nvvm_barrier_n, 74837}, // __nvvm_bar_n
+ {Intrinsic::nvvm_bar_sync, 74789}, // __nvvm_bar_sync
+ {Intrinsic::nvvm_bar_warp_sync, 74805}, // __nvvm_bar_warp_sync
+ {Intrinsic::nvvm_barrier_sync, 74850}, // __nvvm_barrier_sync
+ {Intrinsic::nvvm_barrier_sync_cnt, 74870}, // __nvvm_barrier_sync_cnt
+ {Intrinsic::nvvm_bitcast_d2ll, 74956}, // __nvvm_bitcast_d2ll
+ {Intrinsic::nvvm_bitcast_f2i, 74976}, // __nvvm_bitcast_f2i
+ {Intrinsic::nvvm_bitcast_i2f, 74995}, // __nvvm_bitcast_i2f
+ {Intrinsic::nvvm_bitcast_ll2d, 75014}, // __nvvm_bitcast_ll2d
+ {Intrinsic::nvvm_ceil_d, 75034}, // __nvvm_ceil_d
+ {Intrinsic::nvvm_ceil_f, 75048}, // __nvvm_ceil_f
+ {Intrinsic::nvvm_ceil_ftz_f, 75062}, // __nvvm_ceil_ftz_f
+ {Intrinsic::nvvm_cos_approx_f, 75080}, // __nvvm_cos_approx_f
+ {Intrinsic::nvvm_cos_approx_ftz_f, 75100}, // __nvvm_cos_approx_ftz_f
+ {Intrinsic::nvvm_d2f_rm, 75124}, // __nvvm_d2f_rm
+ {Intrinsic::nvvm_d2f_rm_ftz, 75138}, // __nvvm_d2f_rm_ftz
+ {Intrinsic::nvvm_d2f_rn, 75156}, // __nvvm_d2f_rn
+ {Intrinsic::nvvm_d2f_rn_ftz, 75170}, // __nvvm_d2f_rn_ftz
+ {Intrinsic::nvvm_d2f_rp, 75188}, // __nvvm_d2f_rp
+ {Intrinsic::nvvm_d2f_rp_ftz, 75202}, // __nvvm_d2f_rp_ftz
+ {Intrinsic::nvvm_d2f_rz, 75220}, // __nvvm_d2f_rz
+ {Intrinsic::nvvm_d2f_rz_ftz, 75234}, // __nvvm_d2f_rz_ftz
+ {Intrinsic::nvvm_d2i_hi, 75252}, // __nvvm_d2i_hi
+ {Intrinsic::nvvm_d2i_lo, 75266}, // __nvvm_d2i_lo
+ {Intrinsic::nvvm_d2i_rm, 75280}, // __nvvm_d2i_rm
+ {Intrinsic::nvvm_d2i_rn, 75294}, // __nvvm_d2i_rn
+ {Intrinsic::nvvm_d2i_rp, 75308}, // __nvvm_d2i_rp
+ {Intrinsic::nvvm_d2i_rz, 75322}, // __nvvm_d2i_rz
+ {Intrinsic::nvvm_d2ll_rm, 75336}, // __nvvm_d2ll_rm
+ {Intrinsic::nvvm_d2ll_rn, 75351}, // __nvvm_d2ll_rn
+ {Intrinsic::nvvm_d2ll_rp, 75366}, // __nvvm_d2ll_rp
+ {Intrinsic::nvvm_d2ll_rz, 75381}, // __nvvm_d2ll_rz
+ {Intrinsic::nvvm_d2ui_rm, 75396}, // __nvvm_d2ui_rm
+ {Intrinsic::nvvm_d2ui_rn, 75411}, // __nvvm_d2ui_rn
+ {Intrinsic::nvvm_d2ui_rp, 75426}, // __nvvm_d2ui_rp
+ {Intrinsic::nvvm_d2ui_rz, 75441}, // __nvvm_d2ui_rz
+ {Intrinsic::nvvm_d2ull_rm, 75456}, // __nvvm_d2ull_rm
+ {Intrinsic::nvvm_d2ull_rn, 75472}, // __nvvm_d2ull_rn
+ {Intrinsic::nvvm_d2ull_rp, 75488}, // __nvvm_d2ull_rp
+ {Intrinsic::nvvm_d2ull_rz, 75504}, // __nvvm_d2ull_rz
+ {Intrinsic::nvvm_div_approx_f, 75520}, // __nvvm_div_approx_f
+ {Intrinsic::nvvm_div_approx_ftz_f, 75540}, // __nvvm_div_approx_ftz_f
+ {Intrinsic::nvvm_div_rm_d, 75564}, // __nvvm_div_rm_d
+ {Intrinsic::nvvm_div_rm_f, 75580}, // __nvvm_div_rm_f
+ {Intrinsic::nvvm_div_rm_ftz_f, 75596}, // __nvvm_div_rm_ftz_f
+ {Intrinsic::nvvm_div_rn_d, 75616}, // __nvvm_div_rn_d
+ {Intrinsic::nvvm_div_rn_f, 75632}, // __nvvm_div_rn_f
+ {Intrinsic::nvvm_div_rn_ftz_f, 75648}, // __nvvm_div_rn_ftz_f
+ {Intrinsic::nvvm_div_rp_d, 75668}, // __nvvm_div_rp_d
+ {Intrinsic::nvvm_div_rp_f, 75684}, // __nvvm_div_rp_f
+ {Intrinsic::nvvm_div_rp_ftz_f, 75700}, // __nvvm_div_rp_ftz_f
+ {Intrinsic::nvvm_div_rz_d, 75720}, // __nvvm_div_rz_d
+ {Intrinsic::nvvm_div_rz_f, 75736}, // __nvvm_div_rz_f
+ {Intrinsic::nvvm_div_rz_ftz_f, 75752}, // __nvvm_div_rz_ftz_f
+ {Intrinsic::nvvm_ex2_approx_d, 75772}, // __nvvm_ex2_approx_d
+ {Intrinsic::nvvm_ex2_approx_f, 75792}, // __nvvm_ex2_approx_f
+ {Intrinsic::nvvm_ex2_approx_ftz_f, 75812}, // __nvvm_ex2_approx_ftz_f
+ {Intrinsic::nvvm_f2h_rn, 75836}, // __nvvm_f2h_rn
+ {Intrinsic::nvvm_f2h_rn_ftz, 75850}, // __nvvm_f2h_rn_ftz
+ {Intrinsic::nvvm_f2i_rm, 75868}, // __nvvm_f2i_rm
+ {Intrinsic::nvvm_f2i_rm_ftz, 75882}, // __nvvm_f2i_rm_ftz
+ {Intrinsic::nvvm_f2i_rn, 75900}, // __nvvm_f2i_rn
+ {Intrinsic::nvvm_f2i_rn_ftz, 75914}, // __nvvm_f2i_rn_ftz
+ {Intrinsic::nvvm_f2i_rp, 75932}, // __nvvm_f2i_rp
+ {Intrinsic::nvvm_f2i_rp_ftz, 75946}, // __nvvm_f2i_rp_ftz
+ {Intrinsic::nvvm_f2i_rz, 75964}, // __nvvm_f2i_rz
+ {Intrinsic::nvvm_f2i_rz_ftz, 75978}, // __nvvm_f2i_rz_ftz
+ {Intrinsic::nvvm_f2ll_rm, 75996}, // __nvvm_f2ll_rm
+ {Intrinsic::nvvm_f2ll_rm_ftz, 76011}, // __nvvm_f2ll_rm_ftz
+ {Intrinsic::nvvm_f2ll_rn, 76030}, // __nvvm_f2ll_rn
+ {Intrinsic::nvvm_f2ll_rn_ftz, 76045}, // __nvvm_f2ll_rn_ftz
+ {Intrinsic::nvvm_f2ll_rp, 76064}, // __nvvm_f2ll_rp
+ {Intrinsic::nvvm_f2ll_rp_ftz, 76079}, // __nvvm_f2ll_rp_ftz
+ {Intrinsic::nvvm_f2ll_rz, 76098}, // __nvvm_f2ll_rz
+ {Intrinsic::nvvm_f2ll_rz_ftz, 76113}, // __nvvm_f2ll_rz_ftz
+ {Intrinsic::nvvm_f2ui_rm, 76132}, // __nvvm_f2ui_rm
+ {Intrinsic::nvvm_f2ui_rm_ftz, 76147}, // __nvvm_f2ui_rm_ftz
+ {Intrinsic::nvvm_f2ui_rn, 76166}, // __nvvm_f2ui_rn
+ {Intrinsic::nvvm_f2ui_rn_ftz, 76181}, // __nvvm_f2ui_rn_ftz
+ {Intrinsic::nvvm_f2ui_rp, 76200}, // __nvvm_f2ui_rp
+ {Intrinsic::nvvm_f2ui_rp_ftz, 76215}, // __nvvm_f2ui_rp_ftz
+ {Intrinsic::nvvm_f2ui_rz, 76234}, // __nvvm_f2ui_rz
+ {Intrinsic::nvvm_f2ui_rz_ftz, 76249}, // __nvvm_f2ui_rz_ftz
+ {Intrinsic::nvvm_f2ull_rm, 76268}, // __nvvm_f2ull_rm
+ {Intrinsic::nvvm_f2ull_rm_ftz, 76284}, // __nvvm_f2ull_rm_ftz
+ {Intrinsic::nvvm_f2ull_rn, 76304}, // __nvvm_f2ull_rn
+ {Intrinsic::nvvm_f2ull_rn_ftz, 76320}, // __nvvm_f2ull_rn_ftz
+ {Intrinsic::nvvm_f2ull_rp, 76340}, // __nvvm_f2ull_rp
+ {Intrinsic::nvvm_f2ull_rp_ftz, 76356}, // __nvvm_f2ull_rp_ftz
+ {Intrinsic::nvvm_f2ull_rz, 76376}, // __nvvm_f2ull_rz
+ {Intrinsic::nvvm_f2ull_rz_ftz, 76392}, // __nvvm_f2ull_rz_ftz
+ {Intrinsic::nvvm_fabs_d, 76412}, // __nvvm_fabs_d
+ {Intrinsic::nvvm_fabs_f, 76426}, // __nvvm_fabs_f
+ {Intrinsic::nvvm_fabs_ftz_f, 76440}, // __nvvm_fabs_ftz_f
+ {Intrinsic::nvvm_floor_d, 76458}, // __nvvm_floor_d
+ {Intrinsic::nvvm_floor_f, 76473}, // __nvvm_floor_f
+ {Intrinsic::nvvm_floor_ftz_f, 76488}, // __nvvm_floor_ftz_f
+ {Intrinsic::nvvm_fma_rm_d, 76507}, // __nvvm_fma_rm_d
+ {Intrinsic::nvvm_fma_rm_f, 76523}, // __nvvm_fma_rm_f
+ {Intrinsic::nvvm_fma_rm_ftz_f, 76539}, // __nvvm_fma_rm_ftz_f
+ {Intrinsic::nvvm_fma_rn_d, 76559}, // __nvvm_fma_rn_d
+ {Intrinsic::nvvm_fma_rn_f, 76575}, // __nvvm_fma_rn_f
+ {Intrinsic::nvvm_fma_rn_ftz_f, 76591}, // __nvvm_fma_rn_ftz_f
+ {Intrinsic::nvvm_fma_rp_d, 76611}, // __nvvm_fma_rp_d
+ {Intrinsic::nvvm_fma_rp_f, 76627}, // __nvvm_fma_rp_f
+ {Intrinsic::nvvm_fma_rp_ftz_f, 76643}, // __nvvm_fma_rp_ftz_f
+ {Intrinsic::nvvm_fma_rz_d, 76663}, // __nvvm_fma_rz_d
+ {Intrinsic::nvvm_fma_rz_f, 76679}, // __nvvm_fma_rz_f
+ {Intrinsic::nvvm_fma_rz_ftz_f, 76695}, // __nvvm_fma_rz_ftz_f
+ {Intrinsic::nvvm_fmax_d, 76715}, // __nvvm_fmax_d
+ {Intrinsic::nvvm_fmax_f, 76729}, // __nvvm_fmax_f
+ {Intrinsic::nvvm_fmax_ftz_f, 76743}, // __nvvm_fmax_ftz_f
+ {Intrinsic::nvvm_fmin_d, 76761}, // __nvvm_fmin_d
+ {Intrinsic::nvvm_fmin_f, 76775}, // __nvvm_fmin_f
+ {Intrinsic::nvvm_fmin_ftz_f, 76789}, // __nvvm_fmin_ftz_f
+ {Intrinsic::nvvm_fns, 76807}, // __nvvm_fns
+ {Intrinsic::nvvm_i2d_rm, 76818}, // __nvvm_i2d_rm
+ {Intrinsic::nvvm_i2d_rn, 76832}, // __nvvm_i2d_rn
+ {Intrinsic::nvvm_i2d_rp, 76846}, // __nvvm_i2d_rp
+ {Intrinsic::nvvm_i2d_rz, 76860}, // __nvvm_i2d_rz
+ {Intrinsic::nvvm_i2f_rm, 76874}, // __nvvm_i2f_rm
+ {Intrinsic::nvvm_i2f_rn, 76888}, // __nvvm_i2f_rn
+ {Intrinsic::nvvm_i2f_rp, 76902}, // __nvvm_i2f_rp
+ {Intrinsic::nvvm_i2f_rz, 76916}, // __nvvm_i2f_rz
+ {Intrinsic::nvvm_isspacep_const, 76930}, // __nvvm_isspacep_const
+ {Intrinsic::nvvm_isspacep_global, 76952}, // __nvvm_isspacep_global
+ {Intrinsic::nvvm_isspacep_local, 76975}, // __nvvm_isspacep_local
+ {Intrinsic::nvvm_isspacep_shared, 76997}, // __nvvm_isspacep_shared
+ {Intrinsic::nvvm_istypep_sampler, 77020}, // __nvvm_istypep_sampler
+ {Intrinsic::nvvm_istypep_surface, 77043}, // __nvvm_istypep_surface
+ {Intrinsic::nvvm_istypep_texture, 77066}, // __nvvm_istypep_texture
+ {Intrinsic::nvvm_lg2_approx_d, 77089}, // __nvvm_lg2_approx_d
+ {Intrinsic::nvvm_lg2_approx_f, 77109}, // __nvvm_lg2_approx_f
+ {Intrinsic::nvvm_lg2_approx_ftz_f, 77129}, // __nvvm_lg2_approx_ftz_f
+ {Intrinsic::nvvm_ll2d_rm, 77153}, // __nvvm_ll2d_rm
+ {Intrinsic::nvvm_ll2d_rn, 77168}, // __nvvm_ll2d_rn
+ {Intrinsic::nvvm_ll2d_rp, 77183}, // __nvvm_ll2d_rp
+ {Intrinsic::nvvm_ll2d_rz, 77198}, // __nvvm_ll2d_rz
+ {Intrinsic::nvvm_ll2f_rm, 77213}, // __nvvm_ll2f_rm
+ {Intrinsic::nvvm_ll2f_rn, 77228}, // __nvvm_ll2f_rn
+ {Intrinsic::nvvm_ll2f_rp, 77243}, // __nvvm_ll2f_rp
+ {Intrinsic::nvvm_ll2f_rz, 77258}, // __nvvm_ll2f_rz
+ {Intrinsic::nvvm_lohi_i2d, 77273}, // __nvvm_lohi_i2d
+ {Intrinsic::nvvm_match_any_sync_i32, 77289}, // __nvvm_match_any_sync_i32
+ {Intrinsic::nvvm_match_any_sync_i64, 77315}, // __nvvm_match_any_sync_i64
+ {Intrinsic::nvvm_membar_cta, 77341}, // __nvvm_membar_cta
+ {Intrinsic::nvvm_membar_gl, 77359}, // __nvvm_membar_gl
+ {Intrinsic::nvvm_membar_sys, 77376}, // __nvvm_membar_sys
+ {Intrinsic::nvvm_mul24_i, 77602}, // __nvvm_mul24_i
+ {Intrinsic::nvvm_mul24_ui, 77617}, // __nvvm_mul24_ui
+ {Intrinsic::nvvm_mul_rm_d, 77394}, // __nvvm_mul_rm_d
+ {Intrinsic::nvvm_mul_rm_f, 77410}, // __nvvm_mul_rm_f
+ {Intrinsic::nvvm_mul_rm_ftz_f, 77426}, // __nvvm_mul_rm_ftz_f
+ {Intrinsic::nvvm_mul_rn_d, 77446}, // __nvvm_mul_rn_d
+ {Intrinsic::nvvm_mul_rn_f, 77462}, // __nvvm_mul_rn_f
+ {Intrinsic::nvvm_mul_rn_ftz_f, 77478}, // __nvvm_mul_rn_ftz_f
+ {Intrinsic::nvvm_mul_rp_d, 77498}, // __nvvm_mul_rp_d
+ {Intrinsic::nvvm_mul_rp_f, 77514}, // __nvvm_mul_rp_f
+ {Intrinsic::nvvm_mul_rp_ftz_f, 77530}, // __nvvm_mul_rp_ftz_f
+ {Intrinsic::nvvm_mul_rz_d, 77550}, // __nvvm_mul_rz_d
+ {Intrinsic::nvvm_mul_rz_f, 77566}, // __nvvm_mul_rz_f
+ {Intrinsic::nvvm_mul_rz_ftz_f, 77582}, // __nvvm_mul_rz_ftz_f
+ {Intrinsic::nvvm_mulhi_i, 77633}, // __nvvm_mulhi_i
+ {Intrinsic::nvvm_mulhi_ll, 77648}, // __nvvm_mulhi_ll
+ {Intrinsic::nvvm_mulhi_ui, 77664}, // __nvvm_mulhi_ui
+ {Intrinsic::nvvm_mulhi_ull, 77680}, // __nvvm_mulhi_ull
+ {Intrinsic::nvvm_prmt, 77697}, // __nvvm_prmt
+ {Intrinsic::nvvm_rcp_approx_ftz_d, 77709}, // __nvvm_rcp_approx_ftz_d
+ {Intrinsic::nvvm_rcp_rm_d, 77733}, // __nvvm_rcp_rm_d
+ {Intrinsic::nvvm_rcp_rm_f, 77749}, // __nvvm_rcp_rm_f
+ {Intrinsic::nvvm_rcp_rm_ftz_f, 77765}, // __nvvm_rcp_rm_ftz_f
+ {Intrinsic::nvvm_rcp_rn_d, 77785}, // __nvvm_rcp_rn_d
+ {Intrinsic::nvvm_rcp_rn_f, 77801}, // __nvvm_rcp_rn_f
+ {Intrinsic::nvvm_rcp_rn_ftz_f, 77817}, // __nvvm_rcp_rn_ftz_f
+ {Intrinsic::nvvm_rcp_rp_d, 77837}, // __nvvm_rcp_rp_d
+ {Intrinsic::nvvm_rcp_rp_f, 77853}, // __nvvm_rcp_rp_f
+ {Intrinsic::nvvm_rcp_rp_ftz_f, 77869}, // __nvvm_rcp_rp_ftz_f
+ {Intrinsic::nvvm_rcp_rz_d, 77889}, // __nvvm_rcp_rz_d
+ {Intrinsic::nvvm_rcp_rz_f, 77905}, // __nvvm_rcp_rz_f
+ {Intrinsic::nvvm_rcp_rz_ftz_f, 77921}, // __nvvm_rcp_rz_ftz_f
+ {Intrinsic::nvvm_read_ptx_sreg_clock, 77941}, // __nvvm_read_ptx_sreg_clock
+ {Intrinsic::nvvm_read_ptx_sreg_clock64, 77968}, // __nvvm_read_ptx_sreg_clock64
+ {Intrinsic::nvvm_read_ptx_sreg_ctaid_w, 77997}, // __nvvm_read_ptx_sreg_ctaid_w
+ {Intrinsic::nvvm_read_ptx_sreg_ctaid_x, 78026}, // __nvvm_read_ptx_sreg_ctaid_x
+ {Intrinsic::nvvm_read_ptx_sreg_ctaid_y, 78055}, // __nvvm_read_ptx_sreg_ctaid_y
+ {Intrinsic::nvvm_read_ptx_sreg_ctaid_z, 78084}, // __nvvm_read_ptx_sreg_ctaid_z
+ {Intrinsic::nvvm_read_ptx_sreg_envreg0, 78113}, // __nvvm_read_ptx_sreg_envreg0
+ {Intrinsic::nvvm_read_ptx_sreg_envreg1, 78142}, // __nvvm_read_ptx_sreg_envreg1
+ {Intrinsic::nvvm_read_ptx_sreg_envreg10, 78171}, // __nvvm_read_ptx_sreg_envreg10
+ {Intrinsic::nvvm_read_ptx_sreg_envreg11, 78201}, // __nvvm_read_ptx_sreg_envreg11
+ {Intrinsic::nvvm_read_ptx_sreg_envreg12, 78231}, // __nvvm_read_ptx_sreg_envreg12
+ {Intrinsic::nvvm_read_ptx_sreg_envreg13, 78261}, // __nvvm_read_ptx_sreg_envreg13
+ {Intrinsic::nvvm_read_ptx_sreg_envreg14, 78291}, // __nvvm_read_ptx_sreg_envreg14
+ {Intrinsic::nvvm_read_ptx_sreg_envreg15, 78321}, // __nvvm_read_ptx_sreg_envreg15
+ {Intrinsic::nvvm_read_ptx_sreg_envreg16, 78351}, // __nvvm_read_ptx_sreg_envreg16
+ {Intrinsic::nvvm_read_ptx_sreg_envreg17, 78381}, // __nvvm_read_ptx_sreg_envreg17
+ {Intrinsic::nvvm_read_ptx_sreg_envreg18, 78411}, // __nvvm_read_ptx_sreg_envreg18
+ {Intrinsic::nvvm_read_ptx_sreg_envreg19, 78441}, // __nvvm_read_ptx_sreg_envreg19
+ {Intrinsic::nvvm_read_ptx_sreg_envreg2, 78471}, // __nvvm_read_ptx_sreg_envreg2
+ {Intrinsic::nvvm_read_ptx_sreg_envreg20, 78500}, // __nvvm_read_ptx_sreg_envreg20
+ {Intrinsic::nvvm_read_ptx_sreg_envreg21, 78530}, // __nvvm_read_ptx_sreg_envreg21
+ {Intrinsic::nvvm_read_ptx_sreg_envreg22, 78560}, // __nvvm_read_ptx_sreg_envreg22
+ {Intrinsic::nvvm_read_ptx_sreg_envreg23, 78590}, // __nvvm_read_ptx_sreg_envreg23
+ {Intrinsic::nvvm_read_ptx_sreg_envreg24, 78620}, // __nvvm_read_ptx_sreg_envreg24
+ {Intrinsic::nvvm_read_ptx_sreg_envreg25, 78650}, // __nvvm_read_ptx_sreg_envreg25
+ {Intrinsic::nvvm_read_ptx_sreg_envreg26, 78680}, // __nvvm_read_ptx_sreg_envreg26
+ {Intrinsic::nvvm_read_ptx_sreg_envreg27, 78710}, // __nvvm_read_ptx_sreg_envreg27
+ {Intrinsic::nvvm_read_ptx_sreg_envreg28, 78740}, // __nvvm_read_ptx_sreg_envreg28
+ {Intrinsic::nvvm_read_ptx_sreg_envreg29, 78770}, // __nvvm_read_ptx_sreg_envreg29
+ {Intrinsic::nvvm_read_ptx_sreg_envreg3, 78800}, // __nvvm_read_ptx_sreg_envreg3
+ {Intrinsic::nvvm_read_ptx_sreg_envreg30, 78829}, // __nvvm_read_ptx_sreg_envreg30
+ {Intrinsic::nvvm_read_ptx_sreg_envreg31, 78859}, // __nvvm_read_ptx_sreg_envreg31
+ {Intrinsic::nvvm_read_ptx_sreg_envreg4, 78889}, // __nvvm_read_ptx_sreg_envreg4
+ {Intrinsic::nvvm_read_ptx_sreg_envreg5, 78918}, // __nvvm_read_ptx_sreg_envreg5
+ {Intrinsic::nvvm_read_ptx_sreg_envreg6, 78947}, // __nvvm_read_ptx_sreg_envreg6
+ {Intrinsic::nvvm_read_ptx_sreg_envreg7, 78976}, // __nvvm_read_ptx_sreg_envreg7
+ {Intrinsic::nvvm_read_ptx_sreg_envreg8, 79005}, // __nvvm_read_ptx_sreg_envreg8
+ {Intrinsic::nvvm_read_ptx_sreg_envreg9, 79034}, // __nvvm_read_ptx_sreg_envreg9
+ {Intrinsic::nvvm_read_ptx_sreg_gridid, 79063}, // __nvvm_read_ptx_sreg_gridid
+ {Intrinsic::nvvm_read_ptx_sreg_laneid, 79091}, // __nvvm_read_ptx_sreg_laneid
+ {Intrinsic::nvvm_read_ptx_sreg_lanemask_eq, 79119}, // __nvvm_read_ptx_sreg_lanemask_eq
+ {Intrinsic::nvvm_read_ptx_sreg_lanemask_ge, 79152}, // __nvvm_read_ptx_sreg_lanemask_ge
+ {Intrinsic::nvvm_read_ptx_sreg_lanemask_gt, 79185}, // __nvvm_read_ptx_sreg_lanemask_gt
+ {Intrinsic::nvvm_read_ptx_sreg_lanemask_le, 79218}, // __nvvm_read_ptx_sreg_lanemask_le
+ {Intrinsic::nvvm_read_ptx_sreg_lanemask_lt, 79251}, // __nvvm_read_ptx_sreg_lanemask_lt
+ {Intrinsic::nvvm_read_ptx_sreg_nctaid_w, 79284}, // __nvvm_read_ptx_sreg_nctaid_w
+ {Intrinsic::nvvm_read_ptx_sreg_nctaid_x, 79314}, // __nvvm_read_ptx_sreg_nctaid_x
+ {Intrinsic::nvvm_read_ptx_sreg_nctaid_y, 79344}, // __nvvm_read_ptx_sreg_nctaid_y
+ {Intrinsic::nvvm_read_ptx_sreg_nctaid_z, 79374}, // __nvvm_read_ptx_sreg_nctaid_z
+ {Intrinsic::nvvm_read_ptx_sreg_nsmid, 79404}, // __nvvm_read_ptx_sreg_nsmid
+ {Intrinsic::nvvm_read_ptx_sreg_ntid_w, 79431}, // __nvvm_read_ptx_sreg_ntid_w
+ {Intrinsic::nvvm_read_ptx_sreg_ntid_x, 79459}, // __nvvm_read_ptx_sreg_ntid_x
+ {Intrinsic::nvvm_read_ptx_sreg_ntid_y, 79487}, // __nvvm_read_ptx_sreg_ntid_y
+ {Intrinsic::nvvm_read_ptx_sreg_ntid_z, 79515}, // __nvvm_read_ptx_sreg_ntid_z
+ {Intrinsic::nvvm_read_ptx_sreg_nwarpid, 79543}, // __nvvm_read_ptx_sreg_nwarpid
+ {Intrinsic::nvvm_read_ptx_sreg_pm0, 79572}, // __nvvm_read_ptx_sreg_pm0
+ {Intrinsic::nvvm_read_ptx_sreg_pm1, 79597}, // __nvvm_read_ptx_sreg_pm1
+ {Intrinsic::nvvm_read_ptx_sreg_pm2, 79622}, // __nvvm_read_ptx_sreg_pm2
+ {Intrinsic::nvvm_read_ptx_sreg_pm3, 79647}, // __nvvm_read_ptx_sreg_pm3
+ {Intrinsic::nvvm_read_ptx_sreg_smid, 79672}, // __nvvm_read_ptx_sreg_smid
+ {Intrinsic::nvvm_read_ptx_sreg_tid_w, 79698}, // __nvvm_read_ptx_sreg_tid_w
+ {Intrinsic::nvvm_read_ptx_sreg_tid_x, 79725}, // __nvvm_read_ptx_sreg_tid_x
+ {Intrinsic::nvvm_read_ptx_sreg_tid_y, 79752}, // __nvvm_read_ptx_sreg_tid_y
+ {Intrinsic::nvvm_read_ptx_sreg_tid_z, 79779}, // __nvvm_read_ptx_sreg_tid_z
+ {Intrinsic::nvvm_read_ptx_sreg_warpid, 79806}, // __nvvm_read_ptx_sreg_warpid
+ {Intrinsic::nvvm_read_ptx_sreg_warpsize, 79834}, // __nvvm_read_ptx_sreg_warpsize
+ {Intrinsic::nvvm_rotate_b32, 79864}, // __nvvm_rotate_b32
+ {Intrinsic::nvvm_rotate_b64, 79882}, // __nvvm_rotate_b64
+ {Intrinsic::nvvm_rotate_right_b64, 79900}, // __nvvm_rotate_right_b64
+ {Intrinsic::nvvm_round_d, 79924}, // __nvvm_round_d
+ {Intrinsic::nvvm_round_f, 79939}, // __nvvm_round_f
+ {Intrinsic::nvvm_round_ftz_f, 79954}, // __nvvm_round_ftz_f
+ {Intrinsic::nvvm_rsqrt_approx_d, 79973}, // __nvvm_rsqrt_approx_d
+ {Intrinsic::nvvm_rsqrt_approx_f, 79995}, // __nvvm_rsqrt_approx_f
+ {Intrinsic::nvvm_rsqrt_approx_ftz_f, 80017}, // __nvvm_rsqrt_approx_ftz_f
+ {Intrinsic::nvvm_sad_i, 80043}, // __nvvm_sad_i
+ {Intrinsic::nvvm_sad_ui, 80056}, // __nvvm_sad_ui
+ {Intrinsic::nvvm_saturate_d, 80070}, // __nvvm_saturate_d
+ {Intrinsic::nvvm_saturate_f, 80088}, // __nvvm_saturate_f
+ {Intrinsic::nvvm_saturate_ftz_f, 80106}, // __nvvm_saturate_ftz_f
+ {Intrinsic::nvvm_shfl_bfly_f32, 80128}, // __nvvm_shfl_bfly_f32
+ {Intrinsic::nvvm_shfl_bfly_i32, 80149}, // __nvvm_shfl_bfly_i32
+ {Intrinsic::nvvm_shfl_down_f32, 80170}, // __nvvm_shfl_down_f32
+ {Intrinsic::nvvm_shfl_down_i32, 80191}, // __nvvm_shfl_down_i32
+ {Intrinsic::nvvm_shfl_idx_f32, 80212}, // __nvvm_shfl_idx_f32
+ {Intrinsic::nvvm_shfl_idx_i32, 80232}, // __nvvm_shfl_idx_i32
+ {Intrinsic::nvvm_shfl_sync_bfly_f32, 80252}, // __nvvm_shfl_sync_bfly_f32
+ {Intrinsic::nvvm_shfl_sync_bfly_i32, 80278}, // __nvvm_shfl_sync_bfly_i32
+ {Intrinsic::nvvm_shfl_sync_down_f32, 80304}, // __nvvm_shfl_sync_down_f32
+ {Intrinsic::nvvm_shfl_sync_down_i32, 80330}, // __nvvm_shfl_sync_down_i32
+ {Intrinsic::nvvm_shfl_sync_idx_f32, 80356}, // __nvvm_shfl_sync_idx_f32
+ {Intrinsic::nvvm_shfl_sync_idx_i32, 80381}, // __nvvm_shfl_sync_idx_i32
+ {Intrinsic::nvvm_shfl_sync_up_f32, 80406}, // __nvvm_shfl_sync_up_f32
+ {Intrinsic::nvvm_shfl_sync_up_i32, 80430}, // __nvvm_shfl_sync_up_i32
+ {Intrinsic::nvvm_shfl_up_f32, 80454}, // __nvvm_shfl_up_f32
+ {Intrinsic::nvvm_shfl_up_i32, 80473}, // __nvvm_shfl_up_i32
+ {Intrinsic::nvvm_sin_approx_f, 80492}, // __nvvm_sin_approx_f
+ {Intrinsic::nvvm_sin_approx_ftz_f, 80512}, // __nvvm_sin_approx_ftz_f
+ {Intrinsic::nvvm_sqrt_approx_f, 80536}, // __nvvm_sqrt_approx_f
+ {Intrinsic::nvvm_sqrt_approx_ftz_f, 80557}, // __nvvm_sqrt_approx_ftz_f
+ {Intrinsic::nvvm_sqrt_f, 80582}, // __nvvm_sqrt_f
+ {Intrinsic::nvvm_sqrt_rm_d, 80596}, // __nvvm_sqrt_rm_d
+ {Intrinsic::nvvm_sqrt_rm_f, 80613}, // __nvvm_sqrt_rm_f
+ {Intrinsic::nvvm_sqrt_rm_ftz_f, 80630}, // __nvvm_sqrt_rm_ftz_f
+ {Intrinsic::nvvm_sqrt_rn_d, 80651}, // __nvvm_sqrt_rn_d
+ {Intrinsic::nvvm_sqrt_rn_f, 80668}, // __nvvm_sqrt_rn_f
+ {Intrinsic::nvvm_sqrt_rn_ftz_f, 80685}, // __nvvm_sqrt_rn_ftz_f
+ {Intrinsic::nvvm_sqrt_rp_d, 80706}, // __nvvm_sqrt_rp_d
+ {Intrinsic::nvvm_sqrt_rp_f, 80723}, // __nvvm_sqrt_rp_f
+ {Intrinsic::nvvm_sqrt_rp_ftz_f, 80740}, // __nvvm_sqrt_rp_ftz_f
+ {Intrinsic::nvvm_sqrt_rz_d, 80761}, // __nvvm_sqrt_rz_d
+ {Intrinsic::nvvm_sqrt_rz_f, 80778}, // __nvvm_sqrt_rz_f
+ {Intrinsic::nvvm_sqrt_rz_ftz_f, 80795}, // __nvvm_sqrt_rz_ftz_f
+ {Intrinsic::nvvm_suq_array_size, 80816}, // __nvvm_suq_array_size
+ {Intrinsic::nvvm_suq_channel_data_type, 80838}, // __nvvm_suq_channel_data_type
+ {Intrinsic::nvvm_suq_channel_order, 80867}, // __nvvm_suq_channel_order
+ {Intrinsic::nvvm_suq_depth, 80892}, // __nvvm_suq_depth
+ {Intrinsic::nvvm_suq_height, 80909}, // __nvvm_suq_height
+ {Intrinsic::nvvm_suq_width, 80927}, // __nvvm_suq_width
+ {Intrinsic::nvvm_sust_b_1d_array_i16_clamp, 80944}, // __nvvm_sust_b_1d_array_i16_clamp
+ {Intrinsic::nvvm_sust_b_1d_array_i16_trap, 80977}, // __nvvm_sust_b_1d_array_i16_trap
+ {Intrinsic::nvvm_sust_b_1d_array_i16_zero, 81009}, // __nvvm_sust_b_1d_array_i16_zero
+ {Intrinsic::nvvm_sust_b_1d_array_i32_clamp, 81041}, // __nvvm_sust_b_1d_array_i32_clamp
+ {Intrinsic::nvvm_sust_b_1d_array_i32_trap, 81074}, // __nvvm_sust_b_1d_array_i32_trap
+ {Intrinsic::nvvm_sust_b_1d_array_i32_zero, 81106}, // __nvvm_sust_b_1d_array_i32_zero
+ {Intrinsic::nvvm_sust_b_1d_array_i64_clamp, 81138}, // __nvvm_sust_b_1d_array_i64_clamp
+ {Intrinsic::nvvm_sust_b_1d_array_i64_trap, 81171}, // __nvvm_sust_b_1d_array_i64_trap
+ {Intrinsic::nvvm_sust_b_1d_array_i64_zero, 81203}, // __nvvm_sust_b_1d_array_i64_zero
+ {Intrinsic::nvvm_sust_b_1d_array_i8_clamp, 81235}, // __nvvm_sust_b_1d_array_i8_clamp
+ {Intrinsic::nvvm_sust_b_1d_array_i8_trap, 81267}, // __nvvm_sust_b_1d_array_i8_trap
+ {Intrinsic::nvvm_sust_b_1d_array_i8_zero, 81298}, // __nvvm_sust_b_1d_array_i8_zero
+ {Intrinsic::nvvm_sust_b_1d_array_v2i16_clamp, 81329}, // __nvvm_sust_b_1d_array_v2i16_clamp
+ {Intrinsic::nvvm_sust_b_1d_array_v2i16_trap, 81364}, // __nvvm_sust_b_1d_array_v2i16_trap
+ {Intrinsic::nvvm_sust_b_1d_array_v2i16_zero, 81398}, // __nvvm_sust_b_1d_array_v2i16_zero
+ {Intrinsic::nvvm_sust_b_1d_array_v2i32_clamp, 81432}, // __nvvm_sust_b_1d_array_v2i32_clamp
+ {Intrinsic::nvvm_sust_b_1d_array_v2i32_trap, 81467}, // __nvvm_sust_b_1d_array_v2i32_trap
+ {Intrinsic::nvvm_sust_b_1d_array_v2i32_zero, 81501}, // __nvvm_sust_b_1d_array_v2i32_zero
+ {Intrinsic::nvvm_sust_b_1d_array_v2i64_clamp, 81535}, // __nvvm_sust_b_1d_array_v2i64_clamp
+ {Intrinsic::nvvm_sust_b_1d_array_v2i64_trap, 81570}, // __nvvm_sust_b_1d_array_v2i64_trap
+ {Intrinsic::nvvm_sust_b_1d_array_v2i64_zero, 81604}, // __nvvm_sust_b_1d_array_v2i64_zero
+ {Intrinsic::nvvm_sust_b_1d_array_v2i8_clamp, 81638}, // __nvvm_sust_b_1d_array_v2i8_clamp
+ {Intrinsic::nvvm_sust_b_1d_array_v2i8_trap, 81672}, // __nvvm_sust_b_1d_array_v2i8_trap
+ {Intrinsic::nvvm_sust_b_1d_array_v2i8_zero, 81705}, // __nvvm_sust_b_1d_array_v2i8_zero
+ {Intrinsic::nvvm_sust_b_1d_array_v4i16_clamp, 81738}, // __nvvm_sust_b_1d_array_v4i16_clamp
+ {Intrinsic::nvvm_sust_b_1d_array_v4i16_trap, 81773}, // __nvvm_sust_b_1d_array_v4i16_trap
+ {Intrinsic::nvvm_sust_b_1d_array_v4i16_zero, 81807}, // __nvvm_sust_b_1d_array_v4i16_zero
+ {Intrinsic::nvvm_sust_b_1d_array_v4i32_clamp, 81841}, // __nvvm_sust_b_1d_array_v4i32_clamp
+ {Intrinsic::nvvm_sust_b_1d_array_v4i32_trap, 81876}, // __nvvm_sust_b_1d_array_v4i32_trap
+ {Intrinsic::nvvm_sust_b_1d_array_v4i32_zero, 81910}, // __nvvm_sust_b_1d_array_v4i32_zero
+ {Intrinsic::nvvm_sust_b_1d_array_v4i8_clamp, 81944}, // __nvvm_sust_b_1d_array_v4i8_clamp
+ {Intrinsic::nvvm_sust_b_1d_array_v4i8_trap, 81978}, // __nvvm_sust_b_1d_array_v4i8_trap
+ {Intrinsic::nvvm_sust_b_1d_array_v4i8_zero, 82011}, // __nvvm_sust_b_1d_array_v4i8_zero
+ {Intrinsic::nvvm_sust_b_1d_i16_clamp, 82044}, // __nvvm_sust_b_1d_i16_clamp
+ {Intrinsic::nvvm_sust_b_1d_i16_trap, 82071}, // __nvvm_sust_b_1d_i16_trap
+ {Intrinsic::nvvm_sust_b_1d_i16_zero, 82097}, // __nvvm_sust_b_1d_i16_zero
+ {Intrinsic::nvvm_sust_b_1d_i32_clamp, 82123}, // __nvvm_sust_b_1d_i32_clamp
+ {Intrinsic::nvvm_sust_b_1d_i32_trap, 82150}, // __nvvm_sust_b_1d_i32_trap
+ {Intrinsic::nvvm_sust_b_1d_i32_zero, 82176}, // __nvvm_sust_b_1d_i32_zero
+ {Intrinsic::nvvm_sust_b_1d_i64_clamp, 82202}, // __nvvm_sust_b_1d_i64_clamp
+ {Intrinsic::nvvm_sust_b_1d_i64_trap, 82229}, // __nvvm_sust_b_1d_i64_trap
+ {Intrinsic::nvvm_sust_b_1d_i64_zero, 82255}, // __nvvm_sust_b_1d_i64_zero
+ {Intrinsic::nvvm_sust_b_1d_i8_clamp, 82281}, // __nvvm_sust_b_1d_i8_clamp
+ {Intrinsic::nvvm_sust_b_1d_i8_trap, 82307}, // __nvvm_sust_b_1d_i8_trap
+ {Intrinsic::nvvm_sust_b_1d_i8_zero, 82332}, // __nvvm_sust_b_1d_i8_zero
+ {Intrinsic::nvvm_sust_b_1d_v2i16_clamp, 82357}, // __nvvm_sust_b_1d_v2i16_clamp
+ {Intrinsic::nvvm_sust_b_1d_v2i16_trap, 82386}, // __nvvm_sust_b_1d_v2i16_trap
+ {Intrinsic::nvvm_sust_b_1d_v2i16_zero, 82414}, // __nvvm_sust_b_1d_v2i16_zero
+ {Intrinsic::nvvm_sust_b_1d_v2i32_clamp, 82442}, // __nvvm_sust_b_1d_v2i32_clamp
+ {Intrinsic::nvvm_sust_b_1d_v2i32_trap, 82471}, // __nvvm_sust_b_1d_v2i32_trap
+ {Intrinsic::nvvm_sust_b_1d_v2i32_zero, 82499}, // __nvvm_sust_b_1d_v2i32_zero
+ {Intrinsic::nvvm_sust_b_1d_v2i64_clamp, 82527}, // __nvvm_sust_b_1d_v2i64_clamp
+ {Intrinsic::nvvm_sust_b_1d_v2i64_trap, 82556}, // __nvvm_sust_b_1d_v2i64_trap
+ {Intrinsic::nvvm_sust_b_1d_v2i64_zero, 82584}, // __nvvm_sust_b_1d_v2i64_zero
+ {Intrinsic::nvvm_sust_b_1d_v2i8_clamp, 82612}, // __nvvm_sust_b_1d_v2i8_clamp
+ {Intrinsic::nvvm_sust_b_1d_v2i8_trap, 82640}, // __nvvm_sust_b_1d_v2i8_trap
+ {Intrinsic::nvvm_sust_b_1d_v2i8_zero, 82667}, // __nvvm_sust_b_1d_v2i8_zero
+ {Intrinsic::nvvm_sust_b_1d_v4i16_clamp, 82694}, // __nvvm_sust_b_1d_v4i16_clamp
+ {Intrinsic::nvvm_sust_b_1d_v4i16_trap, 82723}, // __nvvm_sust_b_1d_v4i16_trap
+ {Intrinsic::nvvm_sust_b_1d_v4i16_zero, 82751}, // __nvvm_sust_b_1d_v4i16_zero
+ {Intrinsic::nvvm_sust_b_1d_v4i32_clamp, 82779}, // __nvvm_sust_b_1d_v4i32_clamp
+ {Intrinsic::nvvm_sust_b_1d_v4i32_trap, 82808}, // __nvvm_sust_b_1d_v4i32_trap
+ {Intrinsic::nvvm_sust_b_1d_v4i32_zero, 82836}, // __nvvm_sust_b_1d_v4i32_zero
+ {Intrinsic::nvvm_sust_b_1d_v4i8_clamp, 82864}, // __nvvm_sust_b_1d_v4i8_clamp
+ {Intrinsic::nvvm_sust_b_1d_v4i8_trap, 82892}, // __nvvm_sust_b_1d_v4i8_trap
+ {Intrinsic::nvvm_sust_b_1d_v4i8_zero, 82919}, // __nvvm_sust_b_1d_v4i8_zero
+ {Intrinsic::nvvm_sust_b_2d_array_i16_clamp, 82946}, // __nvvm_sust_b_2d_array_i16_clamp
+ {Intrinsic::nvvm_sust_b_2d_array_i16_trap, 82979}, // __nvvm_sust_b_2d_array_i16_trap
+ {Intrinsic::nvvm_sust_b_2d_array_i16_zero, 83011}, // __nvvm_sust_b_2d_array_i16_zero
+ {Intrinsic::nvvm_sust_b_2d_array_i32_clamp, 83043}, // __nvvm_sust_b_2d_array_i32_clamp
+ {Intrinsic::nvvm_sust_b_2d_array_i32_trap, 83076}, // __nvvm_sust_b_2d_array_i32_trap
+ {Intrinsic::nvvm_sust_b_2d_array_i32_zero, 83108}, // __nvvm_sust_b_2d_array_i32_zero
+ {Intrinsic::nvvm_sust_b_2d_array_i64_clamp, 83140}, // __nvvm_sust_b_2d_array_i64_clamp
+ {Intrinsic::nvvm_sust_b_2d_array_i64_trap, 83173}, // __nvvm_sust_b_2d_array_i64_trap
+ {Intrinsic::nvvm_sust_b_2d_array_i64_zero, 83205}, // __nvvm_sust_b_2d_array_i64_zero
+ {Intrinsic::nvvm_sust_b_2d_array_i8_clamp, 83237}, // __nvvm_sust_b_2d_array_i8_clamp
+ {Intrinsic::nvvm_sust_b_2d_array_i8_trap, 83269}, // __nvvm_sust_b_2d_array_i8_trap
+ {Intrinsic::nvvm_sust_b_2d_array_i8_zero, 83300}, // __nvvm_sust_b_2d_array_i8_zero
+ {Intrinsic::nvvm_sust_b_2d_array_v2i16_clamp, 83331}, // __nvvm_sust_b_2d_array_v2i16_clamp
+ {Intrinsic::nvvm_sust_b_2d_array_v2i16_trap, 83366}, // __nvvm_sust_b_2d_array_v2i16_trap
+ {Intrinsic::nvvm_sust_b_2d_array_v2i16_zero, 83400}, // __nvvm_sust_b_2d_array_v2i16_zero
+ {Intrinsic::nvvm_sust_b_2d_array_v2i32_clamp, 83434}, // __nvvm_sust_b_2d_array_v2i32_clamp
+ {Intrinsic::nvvm_sust_b_2d_array_v2i32_trap, 83469}, // __nvvm_sust_b_2d_array_v2i32_trap
+ {Intrinsic::nvvm_sust_b_2d_array_v2i32_zero, 83503}, // __nvvm_sust_b_2d_array_v2i32_zero
+ {Intrinsic::nvvm_sust_b_2d_array_v2i64_clamp, 83537}, // __nvvm_sust_b_2d_array_v2i64_clamp
+ {Intrinsic::nvvm_sust_b_2d_array_v2i64_trap, 83572}, // __nvvm_sust_b_2d_array_v2i64_trap
+ {Intrinsic::nvvm_sust_b_2d_array_v2i64_zero, 83606}, // __nvvm_sust_b_2d_array_v2i64_zero
+ {Intrinsic::nvvm_sust_b_2d_array_v2i8_clamp, 83640}, // __nvvm_sust_b_2d_array_v2i8_clamp
+ {Intrinsic::nvvm_sust_b_2d_array_v2i8_trap, 83674}, // __nvvm_sust_b_2d_array_v2i8_trap
+ {Intrinsic::nvvm_sust_b_2d_array_v2i8_zero, 83707}, // __nvvm_sust_b_2d_array_v2i8_zero
+ {Intrinsic::nvvm_sust_b_2d_array_v4i16_clamp, 83740}, // __nvvm_sust_b_2d_array_v4i16_clamp
+ {Intrinsic::nvvm_sust_b_2d_array_v4i16_trap, 83775}, // __nvvm_sust_b_2d_array_v4i16_trap
+ {Intrinsic::nvvm_sust_b_2d_array_v4i16_zero, 83809}, // __nvvm_sust_b_2d_array_v4i16_zero
+ {Intrinsic::nvvm_sust_b_2d_array_v4i32_clamp, 83843}, // __nvvm_sust_b_2d_array_v4i32_clamp
+ {Intrinsic::nvvm_sust_b_2d_array_v4i32_trap, 83878}, // __nvvm_sust_b_2d_array_v4i32_trap
+ {Intrinsic::nvvm_sust_b_2d_array_v4i32_zero, 83912}, // __nvvm_sust_b_2d_array_v4i32_zero
+ {Intrinsic::nvvm_sust_b_2d_array_v4i8_clamp, 83946}, // __nvvm_sust_b_2d_array_v4i8_clamp
+ {Intrinsic::nvvm_sust_b_2d_array_v4i8_trap, 83980}, // __nvvm_sust_b_2d_array_v4i8_trap
+ {Intrinsic::nvvm_sust_b_2d_array_v4i8_zero, 84013}, // __nvvm_sust_b_2d_array_v4i8_zero
+ {Intrinsic::nvvm_sust_b_2d_i16_clamp, 84046}, // __nvvm_sust_b_2d_i16_clamp
+ {Intrinsic::nvvm_sust_b_2d_i16_trap, 84073}, // __nvvm_sust_b_2d_i16_trap
+ {Intrinsic::nvvm_sust_b_2d_i16_zero, 84099}, // __nvvm_sust_b_2d_i16_zero
+ {Intrinsic::nvvm_sust_b_2d_i32_clamp, 84125}, // __nvvm_sust_b_2d_i32_clamp
+ {Intrinsic::nvvm_sust_b_2d_i32_trap, 84152}, // __nvvm_sust_b_2d_i32_trap
+ {Intrinsic::nvvm_sust_b_2d_i32_zero, 84178}, // __nvvm_sust_b_2d_i32_zero
+ {Intrinsic::nvvm_sust_b_2d_i64_clamp, 84204}, // __nvvm_sust_b_2d_i64_clamp
+ {Intrinsic::nvvm_sust_b_2d_i64_trap, 84231}, // __nvvm_sust_b_2d_i64_trap
+ {Intrinsic::nvvm_sust_b_2d_i64_zero, 84257}, // __nvvm_sust_b_2d_i64_zero
+ {Intrinsic::nvvm_sust_b_2d_i8_clamp, 84283}, // __nvvm_sust_b_2d_i8_clamp
+ {Intrinsic::nvvm_sust_b_2d_i8_trap, 84309}, // __nvvm_sust_b_2d_i8_trap
+ {Intrinsic::nvvm_sust_b_2d_i8_zero, 84334}, // __nvvm_sust_b_2d_i8_zero
+ {Intrinsic::nvvm_sust_b_2d_v2i16_clamp, 84359}, // __nvvm_sust_b_2d_v2i16_clamp
+ {Intrinsic::nvvm_sust_b_2d_v2i16_trap, 84388}, // __nvvm_sust_b_2d_v2i16_trap
+ {Intrinsic::nvvm_sust_b_2d_v2i16_zero, 84416}, // __nvvm_sust_b_2d_v2i16_zero
+ {Intrinsic::nvvm_sust_b_2d_v2i32_clamp, 84444}, // __nvvm_sust_b_2d_v2i32_clamp
+ {Intrinsic::nvvm_sust_b_2d_v2i32_trap, 84473}, // __nvvm_sust_b_2d_v2i32_trap
+ {Intrinsic::nvvm_sust_b_2d_v2i32_zero, 84501}, // __nvvm_sust_b_2d_v2i32_zero
+ {Intrinsic::nvvm_sust_b_2d_v2i64_clamp, 84529}, // __nvvm_sust_b_2d_v2i64_clamp
+ {Intrinsic::nvvm_sust_b_2d_v2i64_trap, 84558}, // __nvvm_sust_b_2d_v2i64_trap
+ {Intrinsic::nvvm_sust_b_2d_v2i64_zero, 84586}, // __nvvm_sust_b_2d_v2i64_zero
+ {Intrinsic::nvvm_sust_b_2d_v2i8_clamp, 84614}, // __nvvm_sust_b_2d_v2i8_clamp
+ {Intrinsic::nvvm_sust_b_2d_v2i8_trap, 84642}, // __nvvm_sust_b_2d_v2i8_trap
+ {Intrinsic::nvvm_sust_b_2d_v2i8_zero, 84669}, // __nvvm_sust_b_2d_v2i8_zero
+ {Intrinsic::nvvm_sust_b_2d_v4i16_clamp, 84696}, // __nvvm_sust_b_2d_v4i16_clamp
+ {Intrinsic::nvvm_sust_b_2d_v4i16_trap, 84725}, // __nvvm_sust_b_2d_v4i16_trap
+ {Intrinsic::nvvm_sust_b_2d_v4i16_zero, 84753}, // __nvvm_sust_b_2d_v4i16_zero
+ {Intrinsic::nvvm_sust_b_2d_v4i32_clamp, 84781}, // __nvvm_sust_b_2d_v4i32_clamp
+ {Intrinsic::nvvm_sust_b_2d_v4i32_trap, 84810}, // __nvvm_sust_b_2d_v4i32_trap
+ {Intrinsic::nvvm_sust_b_2d_v4i32_zero, 84838}, // __nvvm_sust_b_2d_v4i32_zero
+ {Intrinsic::nvvm_sust_b_2d_v4i8_clamp, 84866}, // __nvvm_sust_b_2d_v4i8_clamp
+ {Intrinsic::nvvm_sust_b_2d_v4i8_trap, 84894}, // __nvvm_sust_b_2d_v4i8_trap
+ {Intrinsic::nvvm_sust_b_2d_v4i8_zero, 84921}, // __nvvm_sust_b_2d_v4i8_zero
+ {Intrinsic::nvvm_sust_b_3d_i16_clamp, 84948}, // __nvvm_sust_b_3d_i16_clamp
+ {Intrinsic::nvvm_sust_b_3d_i16_trap, 84975}, // __nvvm_sust_b_3d_i16_trap
+ {Intrinsic::nvvm_sust_b_3d_i16_zero, 85001}, // __nvvm_sust_b_3d_i16_zero
+ {Intrinsic::nvvm_sust_b_3d_i32_clamp, 85027}, // __nvvm_sust_b_3d_i32_clamp
+ {Intrinsic::nvvm_sust_b_3d_i32_trap, 85054}, // __nvvm_sust_b_3d_i32_trap
+ {Intrinsic::nvvm_sust_b_3d_i32_zero, 85080}, // __nvvm_sust_b_3d_i32_zero
+ {Intrinsic::nvvm_sust_b_3d_i64_clamp, 85106}, // __nvvm_sust_b_3d_i64_clamp
+ {Intrinsic::nvvm_sust_b_3d_i64_trap, 85133}, // __nvvm_sust_b_3d_i64_trap
+ {Intrinsic::nvvm_sust_b_3d_i64_zero, 85159}, // __nvvm_sust_b_3d_i64_zero
+ {Intrinsic::nvvm_sust_b_3d_i8_clamp, 85185}, // __nvvm_sust_b_3d_i8_clamp
+ {Intrinsic::nvvm_sust_b_3d_i8_trap, 85211}, // __nvvm_sust_b_3d_i8_trap
+ {Intrinsic::nvvm_sust_b_3d_i8_zero, 85236}, // __nvvm_sust_b_3d_i8_zero
+ {Intrinsic::nvvm_sust_b_3d_v2i16_clamp, 85261}, // __nvvm_sust_b_3d_v2i16_clamp
+ {Intrinsic::nvvm_sust_b_3d_v2i16_trap, 85290}, // __nvvm_sust_b_3d_v2i16_trap
+ {Intrinsic::nvvm_sust_b_3d_v2i16_zero, 85318}, // __nvvm_sust_b_3d_v2i16_zero
+ {Intrinsic::nvvm_sust_b_3d_v2i32_clamp, 85346}, // __nvvm_sust_b_3d_v2i32_clamp
+ {Intrinsic::nvvm_sust_b_3d_v2i32_trap, 85375}, // __nvvm_sust_b_3d_v2i32_trap
+ {Intrinsic::nvvm_sust_b_3d_v2i32_zero, 85403}, // __nvvm_sust_b_3d_v2i32_zero
+ {Intrinsic::nvvm_sust_b_3d_v2i64_clamp, 85431}, // __nvvm_sust_b_3d_v2i64_clamp
+ {Intrinsic::nvvm_sust_b_3d_v2i64_trap, 85460}, // __nvvm_sust_b_3d_v2i64_trap
+ {Intrinsic::nvvm_sust_b_3d_v2i64_zero, 85488}, // __nvvm_sust_b_3d_v2i64_zero
+ {Intrinsic::nvvm_sust_b_3d_v2i8_clamp, 85516}, // __nvvm_sust_b_3d_v2i8_clamp
+ {Intrinsic::nvvm_sust_b_3d_v2i8_trap, 85544}, // __nvvm_sust_b_3d_v2i8_trap
+ {Intrinsic::nvvm_sust_b_3d_v2i8_zero, 85571}, // __nvvm_sust_b_3d_v2i8_zero
+ {Intrinsic::nvvm_sust_b_3d_v4i16_clamp, 85598}, // __nvvm_sust_b_3d_v4i16_clamp
+ {Intrinsic::nvvm_sust_b_3d_v4i16_trap, 85627}, // __nvvm_sust_b_3d_v4i16_trap
+ {Intrinsic::nvvm_sust_b_3d_v4i16_zero, 85655}, // __nvvm_sust_b_3d_v4i16_zero
+ {Intrinsic::nvvm_sust_b_3d_v4i32_clamp, 85683}, // __nvvm_sust_b_3d_v4i32_clamp
+ {Intrinsic::nvvm_sust_b_3d_v4i32_trap, 85712}, // __nvvm_sust_b_3d_v4i32_trap
+ {Intrinsic::nvvm_sust_b_3d_v4i32_zero, 85740}, // __nvvm_sust_b_3d_v4i32_zero
+ {Intrinsic::nvvm_sust_b_3d_v4i8_clamp, 85768}, // __nvvm_sust_b_3d_v4i8_clamp
+ {Intrinsic::nvvm_sust_b_3d_v4i8_trap, 85796}, // __nvvm_sust_b_3d_v4i8_trap
+ {Intrinsic::nvvm_sust_b_3d_v4i8_zero, 85823}, // __nvvm_sust_b_3d_v4i8_zero
+ {Intrinsic::nvvm_sust_p_1d_array_i16_trap, 85850}, // __nvvm_sust_p_1d_array_i16_trap
+ {Intrinsic::nvvm_sust_p_1d_array_i32_trap, 85882}, // __nvvm_sust_p_1d_array_i32_trap
+ {Intrinsic::nvvm_sust_p_1d_array_i8_trap, 85914}, // __nvvm_sust_p_1d_array_i8_trap
+ {Intrinsic::nvvm_sust_p_1d_array_v2i16_trap, 85945}, // __nvvm_sust_p_1d_array_v2i16_trap
+ {Intrinsic::nvvm_sust_p_1d_array_v2i32_trap, 85979}, // __nvvm_sust_p_1d_array_v2i32_trap
+ {Intrinsic::nvvm_sust_p_1d_array_v2i8_trap, 86013}, // __nvvm_sust_p_1d_array_v2i8_trap
+ {Intrinsic::nvvm_sust_p_1d_array_v4i16_trap, 86046}, // __nvvm_sust_p_1d_array_v4i16_trap
+ {Intrinsic::nvvm_sust_p_1d_array_v4i32_trap, 86080}, // __nvvm_sust_p_1d_array_v4i32_trap
+ {Intrinsic::nvvm_sust_p_1d_array_v4i8_trap, 86114}, // __nvvm_sust_p_1d_array_v4i8_trap
+ {Intrinsic::nvvm_sust_p_1d_i16_trap, 86147}, // __nvvm_sust_p_1d_i16_trap
+ {Intrinsic::nvvm_sust_p_1d_i32_trap, 86173}, // __nvvm_sust_p_1d_i32_trap
+ {Intrinsic::nvvm_sust_p_1d_i8_trap, 86199}, // __nvvm_sust_p_1d_i8_trap
+ {Intrinsic::nvvm_sust_p_1d_v2i16_trap, 86224}, // __nvvm_sust_p_1d_v2i16_trap
+ {Intrinsic::nvvm_sust_p_1d_v2i32_trap, 86252}, // __nvvm_sust_p_1d_v2i32_trap
+ {Intrinsic::nvvm_sust_p_1d_v2i8_trap, 86280}, // __nvvm_sust_p_1d_v2i8_trap
+ {Intrinsic::nvvm_sust_p_1d_v4i16_trap, 86307}, // __nvvm_sust_p_1d_v4i16_trap
+ {Intrinsic::nvvm_sust_p_1d_v4i32_trap, 86335}, // __nvvm_sust_p_1d_v4i32_trap
+ {Intrinsic::nvvm_sust_p_1d_v4i8_trap, 86363}, // __nvvm_sust_p_1d_v4i8_trap
+ {Intrinsic::nvvm_sust_p_2d_array_i16_trap, 86390}, // __nvvm_sust_p_2d_array_i16_trap
+ {Intrinsic::nvvm_sust_p_2d_array_i32_trap, 86422}, // __nvvm_sust_p_2d_array_i32_trap
+ {Intrinsic::nvvm_sust_p_2d_array_i8_trap, 86454}, // __nvvm_sust_p_2d_array_i8_trap
+ {Intrinsic::nvvm_sust_p_2d_array_v2i16_trap, 86485}, // __nvvm_sust_p_2d_array_v2i16_trap
+ {Intrinsic::nvvm_sust_p_2d_array_v2i32_trap, 86519}, // __nvvm_sust_p_2d_array_v2i32_trap
+ {Intrinsic::nvvm_sust_p_2d_array_v2i8_trap, 86553}, // __nvvm_sust_p_2d_array_v2i8_trap
+ {Intrinsic::nvvm_sust_p_2d_array_v4i16_trap, 86586}, // __nvvm_sust_p_2d_array_v4i16_trap
+ {Intrinsic::nvvm_sust_p_2d_array_v4i32_trap, 86620}, // __nvvm_sust_p_2d_array_v4i32_trap
+ {Intrinsic::nvvm_sust_p_2d_array_v4i8_trap, 86654}, // __nvvm_sust_p_2d_array_v4i8_trap
+ {Intrinsic::nvvm_sust_p_2d_i16_trap, 86687}, // __nvvm_sust_p_2d_i16_trap
+ {Intrinsic::nvvm_sust_p_2d_i32_trap, 86713}, // __nvvm_sust_p_2d_i32_trap
+ {Intrinsic::nvvm_sust_p_2d_i8_trap, 86739}, // __nvvm_sust_p_2d_i8_trap
+ {Intrinsic::nvvm_sust_p_2d_v2i16_trap, 86764}, // __nvvm_sust_p_2d_v2i16_trap
+ {Intrinsic::nvvm_sust_p_2d_v2i32_trap, 86792}, // __nvvm_sust_p_2d_v2i32_trap
+ {Intrinsic::nvvm_sust_p_2d_v2i8_trap, 86820}, // __nvvm_sust_p_2d_v2i8_trap
+ {Intrinsic::nvvm_sust_p_2d_v4i16_trap, 86847}, // __nvvm_sust_p_2d_v4i16_trap
+ {Intrinsic::nvvm_sust_p_2d_v4i32_trap, 86875}, // __nvvm_sust_p_2d_v4i32_trap
+ {Intrinsic::nvvm_sust_p_2d_v4i8_trap, 86903}, // __nvvm_sust_p_2d_v4i8_trap
+ {Intrinsic::nvvm_sust_p_3d_i16_trap, 86930}, // __nvvm_sust_p_3d_i16_trap
+ {Intrinsic::nvvm_sust_p_3d_i32_trap, 86956}, // __nvvm_sust_p_3d_i32_trap
+ {Intrinsic::nvvm_sust_p_3d_i8_trap, 86982}, // __nvvm_sust_p_3d_i8_trap
+ {Intrinsic::nvvm_sust_p_3d_v2i16_trap, 87007}, // __nvvm_sust_p_3d_v2i16_trap
+ {Intrinsic::nvvm_sust_p_3d_v2i32_trap, 87035}, // __nvvm_sust_p_3d_v2i32_trap
+ {Intrinsic::nvvm_sust_p_3d_v2i8_trap, 87063}, // __nvvm_sust_p_3d_v2i8_trap
+ {Intrinsic::nvvm_sust_p_3d_v4i16_trap, 87090}, // __nvvm_sust_p_3d_v4i16_trap
+ {Intrinsic::nvvm_sust_p_3d_v4i32_trap, 87118}, // __nvvm_sust_p_3d_v4i32_trap
+ {Intrinsic::nvvm_sust_p_3d_v4i8_trap, 87146}, // __nvvm_sust_p_3d_v4i8_trap
+ {Intrinsic::nvvm_swap_lo_hi_b64, 87173}, // __nvvm_swap_lo_hi_b64
+ {Intrinsic::nvvm_trunc_d, 87195}, // __nvvm_trunc_d
+ {Intrinsic::nvvm_trunc_f, 87210}, // __nvvm_trunc_f
+ {Intrinsic::nvvm_trunc_ftz_f, 87225}, // __nvvm_trunc_ftz_f
+ {Intrinsic::nvvm_txq_array_size, 87244}, // __nvvm_txq_array_size
+ {Intrinsic::nvvm_txq_channel_data_type, 87266}, // __nvvm_txq_channel_data_type
+ {Intrinsic::nvvm_txq_channel_order, 87295}, // __nvvm_txq_channel_order
+ {Intrinsic::nvvm_txq_depth, 87320}, // __nvvm_txq_depth
+ {Intrinsic::nvvm_txq_height, 87337}, // __nvvm_txq_height
+ {Intrinsic::nvvm_txq_num_mipmap_levels, 87355}, // __nvvm_txq_num_mipmap_levels
+ {Intrinsic::nvvm_txq_num_samples, 87384}, // __nvvm_txq_num_samples
+ {Intrinsic::nvvm_txq_width, 87407}, // __nvvm_txq_width
+ {Intrinsic::nvvm_ui2d_rm, 87424}, // __nvvm_ui2d_rm
+ {Intrinsic::nvvm_ui2d_rn, 87439}, // __nvvm_ui2d_rn
+ {Intrinsic::nvvm_ui2d_rp, 87454}, // __nvvm_ui2d_rp
+ {Intrinsic::nvvm_ui2d_rz, 87469}, // __nvvm_ui2d_rz
+ {Intrinsic::nvvm_ui2f_rm, 87484}, // __nvvm_ui2f_rm
+ {Intrinsic::nvvm_ui2f_rn, 87499}, // __nvvm_ui2f_rn
+ {Intrinsic::nvvm_ui2f_rp, 87514}, // __nvvm_ui2f_rp
+ {Intrinsic::nvvm_ui2f_rz, 87529}, // __nvvm_ui2f_rz
+ {Intrinsic::nvvm_ull2d_rm, 87544}, // __nvvm_ull2d_rm
+ {Intrinsic::nvvm_ull2d_rn, 87560}, // __nvvm_ull2d_rn
+ {Intrinsic::nvvm_ull2d_rp, 87576}, // __nvvm_ull2d_rp
+ {Intrinsic::nvvm_ull2d_rz, 87592}, // __nvvm_ull2d_rz
+ {Intrinsic::nvvm_ull2f_rm, 87608}, // __nvvm_ull2f_rm
+ {Intrinsic::nvvm_ull2f_rn, 87624}, // __nvvm_ull2f_rn
+ {Intrinsic::nvvm_ull2f_rp, 87640}, // __nvvm_ull2f_rp
+ {Intrinsic::nvvm_ull2f_rz, 87656}, // __nvvm_ull2f_rz
+ {Intrinsic::nvvm_vote_all, 87672}, // __nvvm_vote_all
+ {Intrinsic::nvvm_vote_all_sync, 87688}, // __nvvm_vote_all_sync
+ {Intrinsic::nvvm_vote_any, 87709}, // __nvvm_vote_any
+ {Intrinsic::nvvm_vote_any_sync, 87725}, // __nvvm_vote_any_sync
+ {Intrinsic::nvvm_vote_ballot, 87746}, // __nvvm_vote_ballot
+ {Intrinsic::nvvm_vote_ballot_sync, 87765}, // __nvvm_vote_ballot_sync
+ {Intrinsic::nvvm_vote_uni, 87789}, // __nvvm_vote_uni
+ {Intrinsic::nvvm_vote_uni_sync, 87805}, // __nvvm_vote_uni_sync
+ {Intrinsic::nvvm_barrier0, 74894}, // __syncthreads
};
auto I = std::lower_bound(std::begin(nvvmNames),
std::end(nvvmNames),
@@ -28054,372 +27948,372 @@
}
if (TargetPrefix == "ppc") {
static const BuiltinEntry ppcNames[] = {
- {Intrinsic::ppc_addf128_round_to_odd, 86167}, // __builtin_addf128_round_to_odd
- {Intrinsic::ppc_altivec_crypto_vcipher, 86198}, // __builtin_altivec_crypto_vcipher
- {Intrinsic::ppc_altivec_crypto_vcipherlast, 86231}, // __builtin_altivec_crypto_vcipherlast
- {Intrinsic::ppc_altivec_crypto_vncipher, 86268}, // __builtin_altivec_crypto_vncipher
- {Intrinsic::ppc_altivec_crypto_vncipherlast, 86302}, // __builtin_altivec_crypto_vncipherlast
- {Intrinsic::ppc_altivec_crypto_vpermxor, 86340}, // __builtin_altivec_crypto_vpermxor
- {Intrinsic::ppc_altivec_crypto_vpmsumb, 86374}, // __builtin_altivec_crypto_vpmsumb
- {Intrinsic::ppc_altivec_crypto_vpmsumd, 86407}, // __builtin_altivec_crypto_vpmsumd
- {Intrinsic::ppc_altivec_crypto_vpmsumh, 86440}, // __builtin_altivec_crypto_vpmsumh
- {Intrinsic::ppc_altivec_crypto_vpmsumw, 86473}, // __builtin_altivec_crypto_vpmsumw
- {Intrinsic::ppc_altivec_crypto_vsbox, 86506}, // __builtin_altivec_crypto_vsbox
- {Intrinsic::ppc_altivec_crypto_vshasigmad, 86537}, // __builtin_altivec_crypto_vshasigmad
- {Intrinsic::ppc_altivec_crypto_vshasigmaw, 86573}, // __builtin_altivec_crypto_vshasigmaw
- {Intrinsic::ppc_altivec_dss, 86609}, // __builtin_altivec_dss
- {Intrinsic::ppc_altivec_dssall, 86631}, // __builtin_altivec_dssall
- {Intrinsic::ppc_altivec_dst, 86656}, // __builtin_altivec_dst
- {Intrinsic::ppc_altivec_dstst, 86678}, // __builtin_altivec_dstst
- {Intrinsic::ppc_altivec_dststt, 86702}, // __builtin_altivec_dststt
- {Intrinsic::ppc_altivec_dstt, 86727}, // __builtin_altivec_dstt
- {Intrinsic::ppc_altivec_mfvscr, 86750}, // __builtin_altivec_mfvscr
- {Intrinsic::ppc_altivec_mtvscr, 86775}, // __builtin_altivec_mtvscr
- {Intrinsic::ppc_altivec_vabsdub, 86800}, // __builtin_altivec_vabsdub
- {Intrinsic::ppc_altivec_vabsduh, 86826}, // __builtin_altivec_vabsduh
- {Intrinsic::ppc_altivec_vabsduw, 86852}, // __builtin_altivec_vabsduw
- {Intrinsic::ppc_altivec_vaddcuq, 86878}, // __builtin_altivec_vaddcuq
- {Intrinsic::ppc_altivec_vaddcuw, 86904}, // __builtin_altivec_vaddcuw
- {Intrinsic::ppc_altivec_vaddecuq, 86930}, // __builtin_altivec_vaddecuq
- {Intrinsic::ppc_altivec_vaddeuqm, 86957}, // __builtin_altivec_vaddeuqm
- {Intrinsic::ppc_altivec_vaddsbs, 86984}, // __builtin_altivec_vaddsbs
- {Intrinsic::ppc_altivec_vaddshs, 87010}, // __builtin_altivec_vaddshs
- {Intrinsic::ppc_altivec_vaddsws, 87036}, // __builtin_altivec_vaddsws
- {Intrinsic::ppc_altivec_vaddubs, 87062}, // __builtin_altivec_vaddubs
- {Intrinsic::ppc_altivec_vadduhs, 87088}, // __builtin_altivec_vadduhs
- {Intrinsic::ppc_altivec_vadduws, 87114}, // __builtin_altivec_vadduws
- {Intrinsic::ppc_altivec_vavgsb, 87140}, // __builtin_altivec_vavgsb
- {Intrinsic::ppc_altivec_vavgsh, 87165}, // __builtin_altivec_vavgsh
- {Intrinsic::ppc_altivec_vavgsw, 87190}, // __builtin_altivec_vavgsw
- {Intrinsic::ppc_altivec_vavgub, 87215}, // __builtin_altivec_vavgub
- {Intrinsic::ppc_altivec_vavguh, 87240}, // __builtin_altivec_vavguh
- {Intrinsic::ppc_altivec_vavguw, 87265}, // __builtin_altivec_vavguw
- {Intrinsic::ppc_altivec_vbpermq, 87290}, // __builtin_altivec_vbpermq
- {Intrinsic::ppc_altivec_vcfsx, 87316}, // __builtin_altivec_vcfsx
- {Intrinsic::ppc_altivec_vcfux, 87340}, // __builtin_altivec_vcfux
- {Intrinsic::ppc_altivec_vclzlsbb, 87364}, // __builtin_altivec_vclzlsbb
- {Intrinsic::ppc_altivec_vcmpbfp, 87391}, // __builtin_altivec_vcmpbfp
- {Intrinsic::ppc_altivec_vcmpbfp_p, 87417}, // __builtin_altivec_vcmpbfp_p
- {Intrinsic::ppc_altivec_vcmpeqfp, 87445}, // __builtin_altivec_vcmpeqfp
- {Intrinsic::ppc_altivec_vcmpeqfp_p, 87472}, // __builtin_altivec_vcmpeqfp_p
- {Intrinsic::ppc_altivec_vcmpequb, 87501}, // __builtin_altivec_vcmpequb
- {Intrinsic::ppc_altivec_vcmpequb_p, 87528}, // __builtin_altivec_vcmpequb_p
- {Intrinsic::ppc_altivec_vcmpequd, 87557}, // __builtin_altivec_vcmpequd
- {Intrinsic::ppc_altivec_vcmpequd_p, 87584}, // __builtin_altivec_vcmpequd_p
- {Intrinsic::ppc_altivec_vcmpequh, 87613}, // __builtin_altivec_vcmpequh
- {Intrinsic::ppc_altivec_vcmpequh_p, 87640}, // __builtin_altivec_vcmpequh_p
- {Intrinsic::ppc_altivec_vcmpequw, 87669}, // __builtin_altivec_vcmpequw
- {Intrinsic::ppc_altivec_vcmpequw_p, 87696}, // __builtin_altivec_vcmpequw_p
- {Intrinsic::ppc_altivec_vcmpgefp, 87725}, // __builtin_altivec_vcmpgefp
- {Intrinsic::ppc_altivec_vcmpgefp_p, 87752}, // __builtin_altivec_vcmpgefp_p
- {Intrinsic::ppc_altivec_vcmpgtfp, 87781}, // __builtin_altivec_vcmpgtfp
- {Intrinsic::ppc_altivec_vcmpgtfp_p, 87808}, // __builtin_altivec_vcmpgtfp_p
- {Intrinsic::ppc_altivec_vcmpgtsb, 87837}, // __builtin_altivec_vcmpgtsb
- {Intrinsic::ppc_altivec_vcmpgtsb_p, 87864}, // __builtin_altivec_vcmpgtsb_p
- {Intrinsic::ppc_altivec_vcmpgtsd, 87893}, // __builtin_altivec_vcmpgtsd
- {Intrinsic::ppc_altivec_vcmpgtsd_p, 87920}, // __builtin_altivec_vcmpgtsd_p
- {Intrinsic::ppc_altivec_vcmpgtsh, 87949}, // __builtin_altivec_vcmpgtsh
- {Intrinsic::ppc_altivec_vcmpgtsh_p, 87976}, // __builtin_altivec_vcmpgtsh_p
- {Intrinsic::ppc_altivec_vcmpgtsw, 88005}, // __builtin_altivec_vcmpgtsw
- {Intrinsic::ppc_altivec_vcmpgtsw_p, 88032}, // __builtin_altivec_vcmpgtsw_p
- {Intrinsic::ppc_altivec_vcmpgtub, 88061}, // __builtin_altivec_vcmpgtub
- {Intrinsic::ppc_altivec_vcmpgtub_p, 88088}, // __builtin_altivec_vcmpgtub_p
- {Intrinsic::ppc_altivec_vcmpgtud, 88117}, // __builtin_altivec_vcmpgtud
- {Intrinsic::ppc_altivec_vcmpgtud_p, 88144}, // __builtin_altivec_vcmpgtud_p
- {Intrinsic::ppc_altivec_vcmpgtuh, 88173}, // __builtin_altivec_vcmpgtuh
- {Intrinsic::ppc_altivec_vcmpgtuh_p, 88200}, // __builtin_altivec_vcmpgtuh_p
- {Intrinsic::ppc_altivec_vcmpgtuw, 88229}, // __builtin_altivec_vcmpgtuw
- {Intrinsic::ppc_altivec_vcmpgtuw_p, 88256}, // __builtin_altivec_vcmpgtuw_p
- {Intrinsic::ppc_altivec_vcmpneb, 88285}, // __builtin_altivec_vcmpneb
- {Intrinsic::ppc_altivec_vcmpneb_p, 88311}, // __builtin_altivec_vcmpneb_p
- {Intrinsic::ppc_altivec_vcmpneh, 88339}, // __builtin_altivec_vcmpneh
- {Intrinsic::ppc_altivec_vcmpneh_p, 88365}, // __builtin_altivec_vcmpneh_p
- {Intrinsic::ppc_altivec_vcmpnew, 88393}, // __builtin_altivec_vcmpnew
- {Intrinsic::ppc_altivec_vcmpnew_p, 88419}, // __builtin_altivec_vcmpnew_p
- {Intrinsic::ppc_altivec_vcmpnezb, 88447}, // __builtin_altivec_vcmpnezb
- {Intrinsic::ppc_altivec_vcmpnezb_p, 88474}, // __builtin_altivec_vcmpnezb_p
- {Intrinsic::ppc_altivec_vcmpnezh, 88503}, // __builtin_altivec_vcmpnezh
- {Intrinsic::ppc_altivec_vcmpnezh_p, 88530}, // __builtin_altivec_vcmpnezh_p
- {Intrinsic::ppc_altivec_vcmpnezw, 88559}, // __builtin_altivec_vcmpnezw
- {Intrinsic::ppc_altivec_vcmpnezw_p, 88586}, // __builtin_altivec_vcmpnezw_p
- {Intrinsic::ppc_altivec_vctsxs, 88615}, // __builtin_altivec_vctsxs
- {Intrinsic::ppc_altivec_vctuxs, 88640}, // __builtin_altivec_vctuxs
- {Intrinsic::ppc_altivec_vctzlsbb, 88665}, // __builtin_altivec_vctzlsbb
- {Intrinsic::ppc_altivec_vexptefp, 88692}, // __builtin_altivec_vexptefp
- {Intrinsic::ppc_altivec_vgbbd, 88719}, // __builtin_altivec_vgbbd
- {Intrinsic::ppc_altivec_vlogefp, 88743}, // __builtin_altivec_vlogefp
- {Intrinsic::ppc_altivec_vmaddfp, 88769}, // __builtin_altivec_vmaddfp
- {Intrinsic::ppc_altivec_vmaxfp, 88795}, // __builtin_altivec_vmaxfp
- {Intrinsic::ppc_altivec_vmaxsb, 88820}, // __builtin_altivec_vmaxsb
- {Intrinsic::ppc_altivec_vmaxsd, 88845}, // __builtin_altivec_vmaxsd
- {Intrinsic::ppc_altivec_vmaxsh, 88870}, // __builtin_altivec_vmaxsh
- {Intrinsic::ppc_altivec_vmaxsw, 88895}, // __builtin_altivec_vmaxsw
- {Intrinsic::ppc_altivec_vmaxub, 88920}, // __builtin_altivec_vmaxub
- {Intrinsic::ppc_altivec_vmaxud, 88945}, // __builtin_altivec_vmaxud
- {Intrinsic::ppc_altivec_vmaxuh, 88970}, // __builtin_altivec_vmaxuh
- {Intrinsic::ppc_altivec_vmaxuw, 88995}, // __builtin_altivec_vmaxuw
- {Intrinsic::ppc_altivec_vmhaddshs, 89020}, // __builtin_altivec_vmhaddshs
- {Intrinsic::ppc_altivec_vmhraddshs, 89048}, // __builtin_altivec_vmhraddshs
- {Intrinsic::ppc_altivec_vminfp, 89077}, // __builtin_altivec_vminfp
- {Intrinsic::ppc_altivec_vminsb, 89102}, // __builtin_altivec_vminsb
- {Intrinsic::ppc_altivec_vminsd, 89127}, // __builtin_altivec_vminsd
- {Intrinsic::ppc_altivec_vminsh, 89152}, // __builtin_altivec_vminsh
- {Intrinsic::ppc_altivec_vminsw, 89177}, // __builtin_altivec_vminsw
- {Intrinsic::ppc_altivec_vminub, 89202}, // __builtin_altivec_vminub
- {Intrinsic::ppc_altivec_vminud, 89227}, // __builtin_altivec_vminud
- {Intrinsic::ppc_altivec_vminuh, 89252}, // __builtin_altivec_vminuh
- {Intrinsic::ppc_altivec_vminuw, 89277}, // __builtin_altivec_vminuw
- {Intrinsic::ppc_altivec_vmladduhm, 89302}, // __builtin_altivec_vmladduhm
- {Intrinsic::ppc_altivec_vmsummbm, 89330}, // __builtin_altivec_vmsummbm
- {Intrinsic::ppc_altivec_vmsumshm, 89357}, // __builtin_altivec_vmsumshm
- {Intrinsic::ppc_altivec_vmsumshs, 89384}, // __builtin_altivec_vmsumshs
- {Intrinsic::ppc_altivec_vmsumubm, 89411}, // __builtin_altivec_vmsumubm
- {Intrinsic::ppc_altivec_vmsumuhm, 89438}, // __builtin_altivec_vmsumuhm
- {Intrinsic::ppc_altivec_vmsumuhs, 89465}, // __builtin_altivec_vmsumuhs
- {Intrinsic::ppc_altivec_vmulesb, 89492}, // __builtin_altivec_vmulesb
- {Intrinsic::ppc_altivec_vmulesh, 89518}, // __builtin_altivec_vmulesh
- {Intrinsic::ppc_altivec_vmulesw, 89544}, // __builtin_altivec_vmulesw
- {Intrinsic::ppc_altivec_vmuleub, 89570}, // __builtin_altivec_vmuleub
- {Intrinsic::ppc_altivec_vmuleuh, 89596}, // __builtin_altivec_vmuleuh
- {Intrinsic::ppc_altivec_vmuleuw, 89622}, // __builtin_altivec_vmuleuw
- {Intrinsic::ppc_altivec_vmulosb, 89648}, // __builtin_altivec_vmulosb
- {Intrinsic::ppc_altivec_vmulosh, 89674}, // __builtin_altivec_vmulosh
- {Intrinsic::ppc_altivec_vmulosw, 89700}, // __builtin_altivec_vmulosw
- {Intrinsic::ppc_altivec_vmuloub, 89726}, // __builtin_altivec_vmuloub
- {Intrinsic::ppc_altivec_vmulouh, 89752}, // __builtin_altivec_vmulouh
- {Intrinsic::ppc_altivec_vmulouw, 89778}, // __builtin_altivec_vmulouw
- {Intrinsic::ppc_altivec_vnmsubfp, 89804}, // __builtin_altivec_vnmsubfp
- {Intrinsic::ppc_altivec_vperm, 89831}, // __builtin_altivec_vperm_4si
- {Intrinsic::ppc_altivec_vpkpx, 89859}, // __builtin_altivec_vpkpx
- {Intrinsic::ppc_altivec_vpksdss, 89883}, // __builtin_altivec_vpksdss
- {Intrinsic::ppc_altivec_vpksdus, 89909}, // __builtin_altivec_vpksdus
- {Intrinsic::ppc_altivec_vpkshss, 89935}, // __builtin_altivec_vpkshss
- {Intrinsic::ppc_altivec_vpkshus, 89961}, // __builtin_altivec_vpkshus
- {Intrinsic::ppc_altivec_vpkswss, 89987}, // __builtin_altivec_vpkswss
- {Intrinsic::ppc_altivec_vpkswus, 90013}, // __builtin_altivec_vpkswus
- {Intrinsic::ppc_altivec_vpkudus, 90039}, // __builtin_altivec_vpkudus
- {Intrinsic::ppc_altivec_vpkuhus, 90065}, // __builtin_altivec_vpkuhus
- {Intrinsic::ppc_altivec_vpkuwus, 90091}, // __builtin_altivec_vpkuwus
- {Intrinsic::ppc_altivec_vprtybd, 90117}, // __builtin_altivec_vprtybd
- {Intrinsic::ppc_altivec_vprtybq, 90143}, // __builtin_altivec_vprtybq
- {Intrinsic::ppc_altivec_vprtybw, 90169}, // __builtin_altivec_vprtybw
- {Intrinsic::ppc_altivec_vrefp, 90195}, // __builtin_altivec_vrefp
- {Intrinsic::ppc_altivec_vrfim, 90219}, // __builtin_altivec_vrfim
- {Intrinsic::ppc_altivec_vrfin, 90243}, // __builtin_altivec_vrfin
- {Intrinsic::ppc_altivec_vrfip, 90267}, // __builtin_altivec_vrfip
- {Intrinsic::ppc_altivec_vrfiz, 90291}, // __builtin_altivec_vrfiz
- {Intrinsic::ppc_altivec_vrlb, 90315}, // __builtin_altivec_vrlb
- {Intrinsic::ppc_altivec_vrld, 90338}, // __builtin_altivec_vrld
- {Intrinsic::ppc_altivec_vrldmi, 90361}, // __builtin_altivec_vrldmi
- {Intrinsic::ppc_altivec_vrldnm, 90386}, // __builtin_altivec_vrldnm
- {Intrinsic::ppc_altivec_vrlh, 90411}, // __builtin_altivec_vrlh
- {Intrinsic::ppc_altivec_vrlw, 90434}, // __builtin_altivec_vrlw
- {Intrinsic::ppc_altivec_vrlwmi, 90457}, // __builtin_altivec_vrlwmi
- {Intrinsic::ppc_altivec_vrlwnm, 90482}, // __builtin_altivec_vrlwnm
- {Intrinsic::ppc_altivec_vrsqrtefp, 90507}, // __builtin_altivec_vrsqrtefp
- {Intrinsic::ppc_altivec_vsel, 90535}, // __builtin_altivec_vsel_4si
- {Intrinsic::ppc_altivec_vsl, 90562}, // __builtin_altivec_vsl
- {Intrinsic::ppc_altivec_vslb, 90584}, // __builtin_altivec_vslb
- {Intrinsic::ppc_altivec_vslh, 90607}, // __builtin_altivec_vslh
- {Intrinsic::ppc_altivec_vslo, 90630}, // __builtin_altivec_vslo
- {Intrinsic::ppc_altivec_vslv, 90653}, // __builtin_altivec_vslv
- {Intrinsic::ppc_altivec_vslw, 90676}, // __builtin_altivec_vslw
- {Intrinsic::ppc_altivec_vsr, 90699}, // __builtin_altivec_vsr
- {Intrinsic::ppc_altivec_vsrab, 90721}, // __builtin_altivec_vsrab
- {Intrinsic::ppc_altivec_vsrah, 90745}, // __builtin_altivec_vsrah
- {Intrinsic::ppc_altivec_vsraw, 90769}, // __builtin_altivec_vsraw
- {Intrinsic::ppc_altivec_vsrb, 90793}, // __builtin_altivec_vsrb
- {Intrinsic::ppc_altivec_vsrh, 90816}, // __builtin_altivec_vsrh
- {Intrinsic::ppc_altivec_vsro, 90839}, // __builtin_altivec_vsro
- {Intrinsic::ppc_altivec_vsrv, 90862}, // __builtin_altivec_vsrv
- {Intrinsic::ppc_altivec_vsrw, 90885}, // __builtin_altivec_vsrw
- {Intrinsic::ppc_altivec_vsubcuq, 90908}, // __builtin_altivec_vsubcuq
- {Intrinsic::ppc_altivec_vsubcuw, 90934}, // __builtin_altivec_vsubcuw
- {Intrinsic::ppc_altivec_vsubecuq, 90960}, // __builtin_altivec_vsubecuq
- {Intrinsic::ppc_altivec_vsubeuqm, 90987}, // __builtin_altivec_vsubeuqm
- {Intrinsic::ppc_altivec_vsubsbs, 91014}, // __builtin_altivec_vsubsbs
- {Intrinsic::ppc_altivec_vsubshs, 91040}, // __builtin_altivec_vsubshs
- {Intrinsic::ppc_altivec_vsubsws, 91066}, // __builtin_altivec_vsubsws
- {Intrinsic::ppc_altivec_vsububs, 91092}, // __builtin_altivec_vsububs
- {Intrinsic::ppc_altivec_vsubuhs, 91118}, // __builtin_altivec_vsubuhs
- {Intrinsic::ppc_altivec_vsubuws, 91144}, // __builtin_altivec_vsubuws
- {Intrinsic::ppc_altivec_vsum2sws, 91170}, // __builtin_altivec_vsum2sws
- {Intrinsic::ppc_altivec_vsum4sbs, 91197}, // __builtin_altivec_vsum4sbs
- {Intrinsic::ppc_altivec_vsum4shs, 91224}, // __builtin_altivec_vsum4shs
- {Intrinsic::ppc_altivec_vsum4ubs, 91251}, // __builtin_altivec_vsum4ubs
- {Intrinsic::ppc_altivec_vsumsws, 91278}, // __builtin_altivec_vsumsws
- {Intrinsic::ppc_altivec_vupkhpx, 91304}, // __builtin_altivec_vupkhpx
- {Intrinsic::ppc_altivec_vupkhsb, 91330}, // __builtin_altivec_vupkhsb
- {Intrinsic::ppc_altivec_vupkhsh, 91356}, // __builtin_altivec_vupkhsh
- {Intrinsic::ppc_altivec_vupkhsw, 91382}, // __builtin_altivec_vupkhsw
- {Intrinsic::ppc_altivec_vupklpx, 91408}, // __builtin_altivec_vupklpx
- {Intrinsic::ppc_altivec_vupklsb, 91434}, // __builtin_altivec_vupklsb
- {Intrinsic::ppc_altivec_vupklsh, 91460}, // __builtin_altivec_vupklsh
- {Intrinsic::ppc_altivec_vupklsw, 91486}, // __builtin_altivec_vupklsw
- {Intrinsic::ppc_bpermd, 91512}, // __builtin_bpermd
- {Intrinsic::ppc_divde, 91529}, // __builtin_divde
- {Intrinsic::ppc_divdeu, 91545}, // __builtin_divdeu
- {Intrinsic::ppc_divf128_round_to_odd, 91562}, // __builtin_divf128_round_to_odd
- {Intrinsic::ppc_divwe, 91593}, // __builtin_divwe
- {Intrinsic::ppc_divweu, 91609}, // __builtin_divweu
- {Intrinsic::ppc_fmaf128_round_to_odd, 91626}, // __builtin_fmaf128_round_to_odd
- {Intrinsic::ppc_get_texasr, 91657}, // __builtin_get_texasr
- {Intrinsic::ppc_get_texasru, 91678}, // __builtin_get_texasru
- {Intrinsic::ppc_get_tfhar, 91700}, // __builtin_get_tfhar
- {Intrinsic::ppc_get_tfiar, 91720}, // __builtin_get_tfiar
- {Intrinsic::ppc_mulf128_round_to_odd, 91740}, // __builtin_mulf128_round_to_odd
- {Intrinsic::ppc_qpx_qvfabs, 91771}, // __builtin_qpx_qvfabs
- {Intrinsic::ppc_qpx_qvfadd, 91792}, // __builtin_qpx_qvfadd
- {Intrinsic::ppc_qpx_qvfadds, 91813}, // __builtin_qpx_qvfadds
- {Intrinsic::ppc_qpx_qvfcfid, 91835}, // __builtin_qpx_qvfcfid
- {Intrinsic::ppc_qpx_qvfcfids, 91857}, // __builtin_qpx_qvfcfids
- {Intrinsic::ppc_qpx_qvfcfidu, 91880}, // __builtin_qpx_qvfcfidu
- {Intrinsic::ppc_qpx_qvfcfidus, 91903}, // __builtin_qpx_qvfcfidus
- {Intrinsic::ppc_qpx_qvfcmpeq, 91927}, // __builtin_qpx_qvfcmpeq
- {Intrinsic::ppc_qpx_qvfcmpgt, 91950}, // __builtin_qpx_qvfcmpgt
- {Intrinsic::ppc_qpx_qvfcmplt, 91973}, // __builtin_qpx_qvfcmplt
- {Intrinsic::ppc_qpx_qvfcpsgn, 91996}, // __builtin_qpx_qvfcpsgn
- {Intrinsic::ppc_qpx_qvfctid, 92019}, // __builtin_qpx_qvfctid
- {Intrinsic::ppc_qpx_qvfctidu, 92041}, // __builtin_qpx_qvfctidu
- {Intrinsic::ppc_qpx_qvfctiduz, 92064}, // __builtin_qpx_qvfctiduz
- {Intrinsic::ppc_qpx_qvfctidz, 92088}, // __builtin_qpx_qvfctidz
- {Intrinsic::ppc_qpx_qvfctiw, 92111}, // __builtin_qpx_qvfctiw
- {Intrinsic::ppc_qpx_qvfctiwu, 92133}, // __builtin_qpx_qvfctiwu
- {Intrinsic::ppc_qpx_qvfctiwuz, 92156}, // __builtin_qpx_qvfctiwuz
- {Intrinsic::ppc_qpx_qvfctiwz, 92180}, // __builtin_qpx_qvfctiwz
- {Intrinsic::ppc_qpx_qvflogical, 92203}, // __builtin_qpx_qvflogical
- {Intrinsic::ppc_qpx_qvfmadd, 92228}, // __builtin_qpx_qvfmadd
- {Intrinsic::ppc_qpx_qvfmadds, 92250}, // __builtin_qpx_qvfmadds
- {Intrinsic::ppc_qpx_qvfmsub, 92273}, // __builtin_qpx_qvfmsub
- {Intrinsic::ppc_qpx_qvfmsubs, 92295}, // __builtin_qpx_qvfmsubs
- {Intrinsic::ppc_qpx_qvfmul, 92318}, // __builtin_qpx_qvfmul
- {Intrinsic::ppc_qpx_qvfmuls, 92339}, // __builtin_qpx_qvfmuls
- {Intrinsic::ppc_qpx_qvfnabs, 92361}, // __builtin_qpx_qvfnabs
- {Intrinsic::ppc_qpx_qvfneg, 92383}, // __builtin_qpx_qvfneg
- {Intrinsic::ppc_qpx_qvfnmadd, 92404}, // __builtin_qpx_qvfnmadd
- {Intrinsic::ppc_qpx_qvfnmadds, 92427}, // __builtin_qpx_qvfnmadds
- {Intrinsic::ppc_qpx_qvfnmsub, 92451}, // __builtin_qpx_qvfnmsub
- {Intrinsic::ppc_qpx_qvfnmsubs, 92474}, // __builtin_qpx_qvfnmsubs
- {Intrinsic::ppc_qpx_qvfperm, 92498}, // __builtin_qpx_qvfperm
- {Intrinsic::ppc_qpx_qvfre, 92520}, // __builtin_qpx_qvfre
- {Intrinsic::ppc_qpx_qvfres, 92540}, // __builtin_qpx_qvfres
- {Intrinsic::ppc_qpx_qvfrim, 92561}, // __builtin_qpx_qvfrim
- {Intrinsic::ppc_qpx_qvfrin, 92582}, // __builtin_qpx_qvfrin
- {Intrinsic::ppc_qpx_qvfrip, 92603}, // __builtin_qpx_qvfrip
- {Intrinsic::ppc_qpx_qvfriz, 92624}, // __builtin_qpx_qvfriz
- {Intrinsic::ppc_qpx_qvfrsp, 92645}, // __builtin_qpx_qvfrsp
- {Intrinsic::ppc_qpx_qvfrsqrte, 92666}, // __builtin_qpx_qvfrsqrte
- {Intrinsic::ppc_qpx_qvfrsqrtes, 92690}, // __builtin_qpx_qvfrsqrtes
- {Intrinsic::ppc_qpx_qvfsel, 92715}, // __builtin_qpx_qvfsel
- {Intrinsic::ppc_qpx_qvfsub, 92736}, // __builtin_qpx_qvfsub
- {Intrinsic::ppc_qpx_qvfsubs, 92757}, // __builtin_qpx_qvfsubs
- {Intrinsic::ppc_qpx_qvftstnan, 92779}, // __builtin_qpx_qvftstnan
- {Intrinsic::ppc_qpx_qvfxmadd, 92803}, // __builtin_qpx_qvfxmadd
- {Intrinsic::ppc_qpx_qvfxmadds, 92826}, // __builtin_qpx_qvfxmadds
- {Intrinsic::ppc_qpx_qvfxmul, 92850}, // __builtin_qpx_qvfxmul
- {Intrinsic::ppc_qpx_qvfxmuls, 92872}, // __builtin_qpx_qvfxmuls
- {Intrinsic::ppc_qpx_qvfxxcpnmadd, 92895}, // __builtin_qpx_qvfxxcpnmadd
- {Intrinsic::ppc_qpx_qvfxxcpnmadds, 92922}, // __builtin_qpx_qvfxxcpnmadds
- {Intrinsic::ppc_qpx_qvfxxmadd, 92950}, // __builtin_qpx_qvfxxmadd
- {Intrinsic::ppc_qpx_qvfxxmadds, 92974}, // __builtin_qpx_qvfxxmadds
- {Intrinsic::ppc_qpx_qvfxxnpmadd, 92999}, // __builtin_qpx_qvfxxnpmadd
- {Intrinsic::ppc_qpx_qvfxxnpmadds, 93025}, // __builtin_qpx_qvfxxnpmadds
- {Intrinsic::ppc_qpx_qvgpci, 93052}, // __builtin_qpx_qvgpci
- {Intrinsic::ppc_qpx_qvlfcd, 93073}, // __builtin_qpx_qvlfcd
- {Intrinsic::ppc_qpx_qvlfcda, 93094}, // __builtin_qpx_qvlfcda
- {Intrinsic::ppc_qpx_qvlfcs, 93116}, // __builtin_qpx_qvlfcs
- {Intrinsic::ppc_qpx_qvlfcsa, 93137}, // __builtin_qpx_qvlfcsa
- {Intrinsic::ppc_qpx_qvlfd, 93159}, // __builtin_qpx_qvlfd
- {Intrinsic::ppc_qpx_qvlfda, 93179}, // __builtin_qpx_qvlfda
- {Intrinsic::ppc_qpx_qvlfiwa, 93200}, // __builtin_qpx_qvlfiwa
- {Intrinsic::ppc_qpx_qvlfiwaa, 93222}, // __builtin_qpx_qvlfiwaa
- {Intrinsic::ppc_qpx_qvlfiwz, 93245}, // __builtin_qpx_qvlfiwz
- {Intrinsic::ppc_qpx_qvlfiwza, 93267}, // __builtin_qpx_qvlfiwza
- {Intrinsic::ppc_qpx_qvlfs, 93290}, // __builtin_qpx_qvlfs
- {Intrinsic::ppc_qpx_qvlfsa, 93310}, // __builtin_qpx_qvlfsa
- {Intrinsic::ppc_qpx_qvlpcld, 93331}, // __builtin_qpx_qvlpcld
- {Intrinsic::ppc_qpx_qvlpcls, 93353}, // __builtin_qpx_qvlpcls
- {Intrinsic::ppc_qpx_qvlpcrd, 93375}, // __builtin_qpx_qvlpcrd
- {Intrinsic::ppc_qpx_qvlpcrs, 93397}, // __builtin_qpx_qvlpcrs
- {Intrinsic::ppc_qpx_qvstfcd, 93419}, // __builtin_qpx_qvstfcd
- {Intrinsic::ppc_qpx_qvstfcda, 93441}, // __builtin_qpx_qvstfcda
- {Intrinsic::ppc_qpx_qvstfcs, 93464}, // __builtin_qpx_qvstfcs
- {Intrinsic::ppc_qpx_qvstfcsa, 93486}, // __builtin_qpx_qvstfcsa
- {Intrinsic::ppc_qpx_qvstfd, 93509}, // __builtin_qpx_qvstfd
- {Intrinsic::ppc_qpx_qvstfda, 93530}, // __builtin_qpx_qvstfda
- {Intrinsic::ppc_qpx_qvstfiw, 93552}, // __builtin_qpx_qvstfiw
- {Intrinsic::ppc_qpx_qvstfiwa, 93574}, // __builtin_qpx_qvstfiwa
- {Intrinsic::ppc_qpx_qvstfs, 93597}, // __builtin_qpx_qvstfs
- {Intrinsic::ppc_qpx_qvstfsa, 93618}, // __builtin_qpx_qvstfsa
- {Intrinsic::ppc_set_texasr, 93709}, // __builtin_set_texasr
- {Intrinsic::ppc_set_texasru, 93730}, // __builtin_set_texasru
- {Intrinsic::ppc_set_tfhar, 93752}, // __builtin_set_tfhar
- {Intrinsic::ppc_set_tfiar, 93772}, // __builtin_set_tfiar
- {Intrinsic::ppc_sqrtf128_round_to_odd, 93792}, // __builtin_sqrtf128_round_to_odd
- {Intrinsic::ppc_subf128_round_to_odd, 93824}, // __builtin_subf128_round_to_odd
- {Intrinsic::ppc_tabort, 93855}, // __builtin_tabort
- {Intrinsic::ppc_tabortdc, 93872}, // __builtin_tabortdc
- {Intrinsic::ppc_tabortdci, 93891}, // __builtin_tabortdci
- {Intrinsic::ppc_tabortwc, 93911}, // __builtin_tabortwc
- {Intrinsic::ppc_tabortwci, 93930}, // __builtin_tabortwci
- {Intrinsic::ppc_tbegin, 93950}, // __builtin_tbegin
- {Intrinsic::ppc_tcheck, 93967}, // __builtin_tcheck
- {Intrinsic::ppc_tend, 93984}, // __builtin_tend
- {Intrinsic::ppc_tendall, 93999}, // __builtin_tendall
- {Intrinsic::ppc_trechkpt, 94017}, // __builtin_trechkpt
- {Intrinsic::ppc_treclaim, 94036}, // __builtin_treclaim
- {Intrinsic::ppc_tresume, 94055}, // __builtin_tresume
- {Intrinsic::ppc_truncf128_round_to_odd, 94073}, // __builtin_truncf128_round_to_odd
- {Intrinsic::ppc_tsr, 94106}, // __builtin_tsr
- {Intrinsic::ppc_tsuspend, 94120}, // __builtin_tsuspend
- {Intrinsic::ppc_ttest, 94139}, // __builtin_ttest
- {Intrinsic::ppc_scalar_extract_expq, 93640}, // __builtin_vsx_scalar_extract_expq
- {Intrinsic::ppc_scalar_insert_exp_qp, 93674}, // __builtin_vsx_scalar_insert_exp_qp
- {Intrinsic::ppc_vsx_xsmaxdp, 94155}, // __builtin_vsx_xsmaxdp
- {Intrinsic::ppc_vsx_xsmindp, 94177}, // __builtin_vsx_xsmindp
- {Intrinsic::ppc_vsx_xvcmpeqdp, 94199}, // __builtin_vsx_xvcmpeqdp
- {Intrinsic::ppc_vsx_xvcmpeqdp_p, 94223}, // __builtin_vsx_xvcmpeqdp_p
- {Intrinsic::ppc_vsx_xvcmpeqsp, 94249}, // __builtin_vsx_xvcmpeqsp
- {Intrinsic::ppc_vsx_xvcmpeqsp_p, 94273}, // __builtin_vsx_xvcmpeqsp_p
- {Intrinsic::ppc_vsx_xvcmpgedp, 94299}, // __builtin_vsx_xvcmpgedp
- {Intrinsic::ppc_vsx_xvcmpgedp_p, 94323}, // __builtin_vsx_xvcmpgedp_p
- {Intrinsic::ppc_vsx_xvcmpgesp, 94349}, // __builtin_vsx_xvcmpgesp
- {Intrinsic::ppc_vsx_xvcmpgesp_p, 94373}, // __builtin_vsx_xvcmpgesp_p
- {Intrinsic::ppc_vsx_xvcmpgtdp, 94399}, // __builtin_vsx_xvcmpgtdp
- {Intrinsic::ppc_vsx_xvcmpgtdp_p, 94423}, // __builtin_vsx_xvcmpgtdp_p
- {Intrinsic::ppc_vsx_xvcmpgtsp, 94449}, // __builtin_vsx_xvcmpgtsp
- {Intrinsic::ppc_vsx_xvcmpgtsp_p, 94473}, // __builtin_vsx_xvcmpgtsp_p
- {Intrinsic::ppc_vsx_xvcvdpsp, 94499}, // __builtin_vsx_xvcvdpsp
- {Intrinsic::ppc_vsx_xvcvdpsxws, 94522}, // __builtin_vsx_xvcvdpsxws
- {Intrinsic::ppc_vsx_xvcvdpuxws, 94547}, // __builtin_vsx_xvcvdpuxws
- {Intrinsic::ppc_vsx_xvcvhpsp, 94572}, // __builtin_vsx_xvcvhpsp
- {Intrinsic::ppc_vsx_xvcvspdp, 94595}, // __builtin_vsx_xvcvspdp
- {Intrinsic::ppc_vsx_xvcvsphp, 94618}, // __builtin_vsx_xvcvsphp
- {Intrinsic::ppc_vsx_xvcvsxdsp, 94641}, // __builtin_vsx_xvcvsxdsp
- {Intrinsic::ppc_vsx_xvcvsxwdp, 94665}, // __builtin_vsx_xvcvsxwdp
- {Intrinsic::ppc_vsx_xvcvuxdsp, 94689}, // __builtin_vsx_xvcvuxdsp
- {Intrinsic::ppc_vsx_xvcvuxwdp, 94713}, // __builtin_vsx_xvcvuxwdp
- {Intrinsic::ppc_vsx_xvdivdp, 94737}, // __builtin_vsx_xvdivdp
- {Intrinsic::ppc_vsx_xvdivsp, 94759}, // __builtin_vsx_xvdivsp
- {Intrinsic::ppc_vsx_xviexpdp, 94781}, // __builtin_vsx_xviexpdp
- {Intrinsic::ppc_vsx_xviexpsp, 94804}, // __builtin_vsx_xviexpsp
- {Intrinsic::ppc_vsx_xvmaxdp, 94827}, // __builtin_vsx_xvmaxdp
- {Intrinsic::ppc_vsx_xvmaxsp, 94849}, // __builtin_vsx_xvmaxsp
- {Intrinsic::ppc_vsx_xvmindp, 94871}, // __builtin_vsx_xvmindp
- {Intrinsic::ppc_vsx_xvminsp, 94893}, // __builtin_vsx_xvminsp
- {Intrinsic::ppc_vsx_xvredp, 94915}, // __builtin_vsx_xvredp
- {Intrinsic::ppc_vsx_xvresp, 94936}, // __builtin_vsx_xvresp
- {Intrinsic::ppc_vsx_xvrsqrtedp, 94957}, // __builtin_vsx_xvrsqrtedp
- {Intrinsic::ppc_vsx_xvrsqrtesp, 94982}, // __builtin_vsx_xvrsqrtesp
- {Intrinsic::ppc_vsx_xvtstdcdp, 95007}, // __builtin_vsx_xvtstdcdp
- {Intrinsic::ppc_vsx_xvtstdcsp, 95031}, // __builtin_vsx_xvtstdcsp
- {Intrinsic::ppc_vsx_xvxexpdp, 95055}, // __builtin_vsx_xvxexpdp
- {Intrinsic::ppc_vsx_xvxexpsp, 95078}, // __builtin_vsx_xvxexpsp
- {Intrinsic::ppc_vsx_xvxsigdp, 95101}, // __builtin_vsx_xvxsigdp
- {Intrinsic::ppc_vsx_xvxsigsp, 95124}, // __builtin_vsx_xvxsigsp
- {Intrinsic::ppc_vsx_xxextractuw, 95147}, // __builtin_vsx_xxextractuw
- {Intrinsic::ppc_vsx_xxinsertw, 95173}, // __builtin_vsx_xxinsertw
- {Intrinsic::ppc_vsx_xxleqv, 95197}, // __builtin_vsx_xxleqv
+ {Intrinsic::ppc_addf128_round_to_odd, 87826}, // __builtin_addf128_round_to_odd
+ {Intrinsic::ppc_altivec_crypto_vcipher, 87857}, // __builtin_altivec_crypto_vcipher
+ {Intrinsic::ppc_altivec_crypto_vcipherlast, 87890}, // __builtin_altivec_crypto_vcipherlast
+ {Intrinsic::ppc_altivec_crypto_vncipher, 87927}, // __builtin_altivec_crypto_vncipher
+ {Intrinsic::ppc_altivec_crypto_vncipherlast, 87961}, // __builtin_altivec_crypto_vncipherlast
+ {Intrinsic::ppc_altivec_crypto_vpermxor, 87999}, // __builtin_altivec_crypto_vpermxor
+ {Intrinsic::ppc_altivec_crypto_vpmsumb, 88033}, // __builtin_altivec_crypto_vpmsumb
+ {Intrinsic::ppc_altivec_crypto_vpmsumd, 88066}, // __builtin_altivec_crypto_vpmsumd
+ {Intrinsic::ppc_altivec_crypto_vpmsumh, 88099}, // __builtin_altivec_crypto_vpmsumh
+ {Intrinsic::ppc_altivec_crypto_vpmsumw, 88132}, // __builtin_altivec_crypto_vpmsumw
+ {Intrinsic::ppc_altivec_crypto_vsbox, 88165}, // __builtin_altivec_crypto_vsbox
+ {Intrinsic::ppc_altivec_crypto_vshasigmad, 88196}, // __builtin_altivec_crypto_vshasigmad
+ {Intrinsic::ppc_altivec_crypto_vshasigmaw, 88232}, // __builtin_altivec_crypto_vshasigmaw
+ {Intrinsic::ppc_altivec_dss, 88268}, // __builtin_altivec_dss
+ {Intrinsic::ppc_altivec_dssall, 88290}, // __builtin_altivec_dssall
+ {Intrinsic::ppc_altivec_dst, 88315}, // __builtin_altivec_dst
+ {Intrinsic::ppc_altivec_dstst, 88337}, // __builtin_altivec_dstst
+ {Intrinsic::ppc_altivec_dststt, 88361}, // __builtin_altivec_dststt
+ {Intrinsic::ppc_altivec_dstt, 88386}, // __builtin_altivec_dstt
+ {Intrinsic::ppc_altivec_mfvscr, 88409}, // __builtin_altivec_mfvscr
+ {Intrinsic::ppc_altivec_mtvscr, 88434}, // __builtin_altivec_mtvscr
+ {Intrinsic::ppc_altivec_vabsdub, 88459}, // __builtin_altivec_vabsdub
+ {Intrinsic::ppc_altivec_vabsduh, 88485}, // __builtin_altivec_vabsduh
+ {Intrinsic::ppc_altivec_vabsduw, 88511}, // __builtin_altivec_vabsduw
+ {Intrinsic::ppc_altivec_vaddcuq, 88537}, // __builtin_altivec_vaddcuq
+ {Intrinsic::ppc_altivec_vaddcuw, 88563}, // __builtin_altivec_vaddcuw
+ {Intrinsic::ppc_altivec_vaddecuq, 88589}, // __builtin_altivec_vaddecuq
+ {Intrinsic::ppc_altivec_vaddeuqm, 88616}, // __builtin_altivec_vaddeuqm
+ {Intrinsic::ppc_altivec_vaddsbs, 88643}, // __builtin_altivec_vaddsbs
+ {Intrinsic::ppc_altivec_vaddshs, 88669}, // __builtin_altivec_vaddshs
+ {Intrinsic::ppc_altivec_vaddsws, 88695}, // __builtin_altivec_vaddsws
+ {Intrinsic::ppc_altivec_vaddubs, 88721}, // __builtin_altivec_vaddubs
+ {Intrinsic::ppc_altivec_vadduhs, 88747}, // __builtin_altivec_vadduhs
+ {Intrinsic::ppc_altivec_vadduws, 88773}, // __builtin_altivec_vadduws
+ {Intrinsic::ppc_altivec_vavgsb, 88799}, // __builtin_altivec_vavgsb
+ {Intrinsic::ppc_altivec_vavgsh, 88824}, // __builtin_altivec_vavgsh
+ {Intrinsic::ppc_altivec_vavgsw, 88849}, // __builtin_altivec_vavgsw
+ {Intrinsic::ppc_altivec_vavgub, 88874}, // __builtin_altivec_vavgub
+ {Intrinsic::ppc_altivec_vavguh, 88899}, // __builtin_altivec_vavguh
+ {Intrinsic::ppc_altivec_vavguw, 88924}, // __builtin_altivec_vavguw
+ {Intrinsic::ppc_altivec_vbpermq, 88949}, // __builtin_altivec_vbpermq
+ {Intrinsic::ppc_altivec_vcfsx, 88975}, // __builtin_altivec_vcfsx
+ {Intrinsic::ppc_altivec_vcfux, 88999}, // __builtin_altivec_vcfux
+ {Intrinsic::ppc_altivec_vclzlsbb, 89023}, // __builtin_altivec_vclzlsbb
+ {Intrinsic::ppc_altivec_vcmpbfp, 89050}, // __builtin_altivec_vcmpbfp
+ {Intrinsic::ppc_altivec_vcmpbfp_p, 89076}, // __builtin_altivec_vcmpbfp_p
+ {Intrinsic::ppc_altivec_vcmpeqfp, 89104}, // __builtin_altivec_vcmpeqfp
+ {Intrinsic::ppc_altivec_vcmpeqfp_p, 89131}, // __builtin_altivec_vcmpeqfp_p
+ {Intrinsic::ppc_altivec_vcmpequb, 89160}, // __builtin_altivec_vcmpequb
+ {Intrinsic::ppc_altivec_vcmpequb_p, 89187}, // __builtin_altivec_vcmpequb_p
+ {Intrinsic::ppc_altivec_vcmpequd, 89216}, // __builtin_altivec_vcmpequd
+ {Intrinsic::ppc_altivec_vcmpequd_p, 89243}, // __builtin_altivec_vcmpequd_p
+ {Intrinsic::ppc_altivec_vcmpequh, 89272}, // __builtin_altivec_vcmpequh
+ {Intrinsic::ppc_altivec_vcmpequh_p, 89299}, // __builtin_altivec_vcmpequh_p
+ {Intrinsic::ppc_altivec_vcmpequw, 89328}, // __builtin_altivec_vcmpequw
+ {Intrinsic::ppc_altivec_vcmpequw_p, 89355}, // __builtin_altivec_vcmpequw_p
+ {Intrinsic::ppc_altivec_vcmpgefp, 89384}, // __builtin_altivec_vcmpgefp
+ {Intrinsic::ppc_altivec_vcmpgefp_p, 89411}, // __builtin_altivec_vcmpgefp_p
+ {Intrinsic::ppc_altivec_vcmpgtfp, 89440}, // __builtin_altivec_vcmpgtfp
+ {Intrinsic::ppc_altivec_vcmpgtfp_p, 89467}, // __builtin_altivec_vcmpgtfp_p
+ {Intrinsic::ppc_altivec_vcmpgtsb, 89496}, // __builtin_altivec_vcmpgtsb
+ {Intrinsic::ppc_altivec_vcmpgtsb_p, 89523}, // __builtin_altivec_vcmpgtsb_p
+ {Intrinsic::ppc_altivec_vcmpgtsd, 89552}, // __builtin_altivec_vcmpgtsd
+ {Intrinsic::ppc_altivec_vcmpgtsd_p, 89579}, // __builtin_altivec_vcmpgtsd_p
+ {Intrinsic::ppc_altivec_vcmpgtsh, 89608}, // __builtin_altivec_vcmpgtsh
+ {Intrinsic::ppc_altivec_vcmpgtsh_p, 89635}, // __builtin_altivec_vcmpgtsh_p
+ {Intrinsic::ppc_altivec_vcmpgtsw, 89664}, // __builtin_altivec_vcmpgtsw
+ {Intrinsic::ppc_altivec_vcmpgtsw_p, 89691}, // __builtin_altivec_vcmpgtsw_p
+ {Intrinsic::ppc_altivec_vcmpgtub, 89720}, // __builtin_altivec_vcmpgtub
+ {Intrinsic::ppc_altivec_vcmpgtub_p, 89747}, // __builtin_altivec_vcmpgtub_p
+ {Intrinsic::ppc_altivec_vcmpgtud, 89776}, // __builtin_altivec_vcmpgtud
+ {Intrinsic::ppc_altivec_vcmpgtud_p, 89803}, // __builtin_altivec_vcmpgtud_p
+ {Intrinsic::ppc_altivec_vcmpgtuh, 89832}, // __builtin_altivec_vcmpgtuh
+ {Intrinsic::ppc_altivec_vcmpgtuh_p, 89859}, // __builtin_altivec_vcmpgtuh_p
+ {Intrinsic::ppc_altivec_vcmpgtuw, 89888}, // __builtin_altivec_vcmpgtuw
+ {Intrinsic::ppc_altivec_vcmpgtuw_p, 89915}, // __builtin_altivec_vcmpgtuw_p
+ {Intrinsic::ppc_altivec_vcmpneb, 89944}, // __builtin_altivec_vcmpneb
+ {Intrinsic::ppc_altivec_vcmpneb_p, 89970}, // __builtin_altivec_vcmpneb_p
+ {Intrinsic::ppc_altivec_vcmpneh, 89998}, // __builtin_altivec_vcmpneh
+ {Intrinsic::ppc_altivec_vcmpneh_p, 90024}, // __builtin_altivec_vcmpneh_p
+ {Intrinsic::ppc_altivec_vcmpnew, 90052}, // __builtin_altivec_vcmpnew
+ {Intrinsic::ppc_altivec_vcmpnew_p, 90078}, // __builtin_altivec_vcmpnew_p
+ {Intrinsic::ppc_altivec_vcmpnezb, 90106}, // __builtin_altivec_vcmpnezb
+ {Intrinsic::ppc_altivec_vcmpnezb_p, 90133}, // __builtin_altivec_vcmpnezb_p
+ {Intrinsic::ppc_altivec_vcmpnezh, 90162}, // __builtin_altivec_vcmpnezh
+ {Intrinsic::ppc_altivec_vcmpnezh_p, 90189}, // __builtin_altivec_vcmpnezh_p
+ {Intrinsic::ppc_altivec_vcmpnezw, 90218}, // __builtin_altivec_vcmpnezw
+ {Intrinsic::ppc_altivec_vcmpnezw_p, 90245}, // __builtin_altivec_vcmpnezw_p
+ {Intrinsic::ppc_altivec_vctsxs, 90274}, // __builtin_altivec_vctsxs
+ {Intrinsic::ppc_altivec_vctuxs, 90299}, // __builtin_altivec_vctuxs
+ {Intrinsic::ppc_altivec_vctzlsbb, 90324}, // __builtin_altivec_vctzlsbb
+ {Intrinsic::ppc_altivec_vexptefp, 90351}, // __builtin_altivec_vexptefp
+ {Intrinsic::ppc_altivec_vgbbd, 90378}, // __builtin_altivec_vgbbd
+ {Intrinsic::ppc_altivec_vlogefp, 90402}, // __builtin_altivec_vlogefp
+ {Intrinsic::ppc_altivec_vmaddfp, 90428}, // __builtin_altivec_vmaddfp
+ {Intrinsic::ppc_altivec_vmaxfp, 90454}, // __builtin_altivec_vmaxfp
+ {Intrinsic::ppc_altivec_vmaxsb, 90479}, // __builtin_altivec_vmaxsb
+ {Intrinsic::ppc_altivec_vmaxsd, 90504}, // __builtin_altivec_vmaxsd
+ {Intrinsic::ppc_altivec_vmaxsh, 90529}, // __builtin_altivec_vmaxsh
+ {Intrinsic::ppc_altivec_vmaxsw, 90554}, // __builtin_altivec_vmaxsw
+ {Intrinsic::ppc_altivec_vmaxub, 90579}, // __builtin_altivec_vmaxub
+ {Intrinsic::ppc_altivec_vmaxud, 90604}, // __builtin_altivec_vmaxud
+ {Intrinsic::ppc_altivec_vmaxuh, 90629}, // __builtin_altivec_vmaxuh
+ {Intrinsic::ppc_altivec_vmaxuw, 90654}, // __builtin_altivec_vmaxuw
+ {Intrinsic::ppc_altivec_vmhaddshs, 90679}, // __builtin_altivec_vmhaddshs
+ {Intrinsic::ppc_altivec_vmhraddshs, 90707}, // __builtin_altivec_vmhraddshs
+ {Intrinsic::ppc_altivec_vminfp, 90736}, // __builtin_altivec_vminfp
+ {Intrinsic::ppc_altivec_vminsb, 90761}, // __builtin_altivec_vminsb
+ {Intrinsic::ppc_altivec_vminsd, 90786}, // __builtin_altivec_vminsd
+ {Intrinsic::ppc_altivec_vminsh, 90811}, // __builtin_altivec_vminsh
+ {Intrinsic::ppc_altivec_vminsw, 90836}, // __builtin_altivec_vminsw
+ {Intrinsic::ppc_altivec_vminub, 90861}, // __builtin_altivec_vminub
+ {Intrinsic::ppc_altivec_vminud, 90886}, // __builtin_altivec_vminud
+ {Intrinsic::ppc_altivec_vminuh, 90911}, // __builtin_altivec_vminuh
+ {Intrinsic::ppc_altivec_vminuw, 90936}, // __builtin_altivec_vminuw
+ {Intrinsic::ppc_altivec_vmladduhm, 90961}, // __builtin_altivec_vmladduhm
+ {Intrinsic::ppc_altivec_vmsummbm, 90989}, // __builtin_altivec_vmsummbm
+ {Intrinsic::ppc_altivec_vmsumshm, 91016}, // __builtin_altivec_vmsumshm
+ {Intrinsic::ppc_altivec_vmsumshs, 91043}, // __builtin_altivec_vmsumshs
+ {Intrinsic::ppc_altivec_vmsumubm, 91070}, // __builtin_altivec_vmsumubm
+ {Intrinsic::ppc_altivec_vmsumuhm, 91097}, // __builtin_altivec_vmsumuhm
+ {Intrinsic::ppc_altivec_vmsumuhs, 91124}, // __builtin_altivec_vmsumuhs
+ {Intrinsic::ppc_altivec_vmulesb, 91151}, // __builtin_altivec_vmulesb
+ {Intrinsic::ppc_altivec_vmulesh, 91177}, // __builtin_altivec_vmulesh
+ {Intrinsic::ppc_altivec_vmulesw, 91203}, // __builtin_altivec_vmulesw
+ {Intrinsic::ppc_altivec_vmuleub, 91229}, // __builtin_altivec_vmuleub
+ {Intrinsic::ppc_altivec_vmuleuh, 91255}, // __builtin_altivec_vmuleuh
+ {Intrinsic::ppc_altivec_vmuleuw, 91281}, // __builtin_altivec_vmuleuw
+ {Intrinsic::ppc_altivec_vmulosb, 91307}, // __builtin_altivec_vmulosb
+ {Intrinsic::ppc_altivec_vmulosh, 91333}, // __builtin_altivec_vmulosh
+ {Intrinsic::ppc_altivec_vmulosw, 91359}, // __builtin_altivec_vmulosw
+ {Intrinsic::ppc_altivec_vmuloub, 91385}, // __builtin_altivec_vmuloub
+ {Intrinsic::ppc_altivec_vmulouh, 91411}, // __builtin_altivec_vmulouh
+ {Intrinsic::ppc_altivec_vmulouw, 91437}, // __builtin_altivec_vmulouw
+ {Intrinsic::ppc_altivec_vnmsubfp, 91463}, // __builtin_altivec_vnmsubfp
+ {Intrinsic::ppc_altivec_vperm, 91490}, // __builtin_altivec_vperm_4si
+ {Intrinsic::ppc_altivec_vpkpx, 91518}, // __builtin_altivec_vpkpx
+ {Intrinsic::ppc_altivec_vpksdss, 91542}, // __builtin_altivec_vpksdss
+ {Intrinsic::ppc_altivec_vpksdus, 91568}, // __builtin_altivec_vpksdus
+ {Intrinsic::ppc_altivec_vpkshss, 91594}, // __builtin_altivec_vpkshss
+ {Intrinsic::ppc_altivec_vpkshus, 91620}, // __builtin_altivec_vpkshus
+ {Intrinsic::ppc_altivec_vpkswss, 91646}, // __builtin_altivec_vpkswss
+ {Intrinsic::ppc_altivec_vpkswus, 91672}, // __builtin_altivec_vpkswus
+ {Intrinsic::ppc_altivec_vpkudus, 91698}, // __builtin_altivec_vpkudus
+ {Intrinsic::ppc_altivec_vpkuhus, 91724}, // __builtin_altivec_vpkuhus
+ {Intrinsic::ppc_altivec_vpkuwus, 91750}, // __builtin_altivec_vpkuwus
+ {Intrinsic::ppc_altivec_vprtybd, 91776}, // __builtin_altivec_vprtybd
+ {Intrinsic::ppc_altivec_vprtybq, 91802}, // __builtin_altivec_vprtybq
+ {Intrinsic::ppc_altivec_vprtybw, 91828}, // __builtin_altivec_vprtybw
+ {Intrinsic::ppc_altivec_vrefp, 91854}, // __builtin_altivec_vrefp
+ {Intrinsic::ppc_altivec_vrfim, 91878}, // __builtin_altivec_vrfim
+ {Intrinsic::ppc_altivec_vrfin, 91902}, // __builtin_altivec_vrfin
+ {Intrinsic::ppc_altivec_vrfip, 91926}, // __builtin_altivec_vrfip
+ {Intrinsic::ppc_altivec_vrfiz, 91950}, // __builtin_altivec_vrfiz
+ {Intrinsic::ppc_altivec_vrlb, 91974}, // __builtin_altivec_vrlb
+ {Intrinsic::ppc_altivec_vrld, 91997}, // __builtin_altivec_vrld
+ {Intrinsic::ppc_altivec_vrldmi, 92020}, // __builtin_altivec_vrldmi
+ {Intrinsic::ppc_altivec_vrldnm, 92045}, // __builtin_altivec_vrldnm
+ {Intrinsic::ppc_altivec_vrlh, 92070}, // __builtin_altivec_vrlh
+ {Intrinsic::ppc_altivec_vrlw, 92093}, // __builtin_altivec_vrlw
+ {Intrinsic::ppc_altivec_vrlwmi, 92116}, // __builtin_altivec_vrlwmi
+ {Intrinsic::ppc_altivec_vrlwnm, 92141}, // __builtin_altivec_vrlwnm
+ {Intrinsic::ppc_altivec_vrsqrtefp, 92166}, // __builtin_altivec_vrsqrtefp
+ {Intrinsic::ppc_altivec_vsel, 92194}, // __builtin_altivec_vsel_4si
+ {Intrinsic::ppc_altivec_vsl, 92221}, // __builtin_altivec_vsl
+ {Intrinsic::ppc_altivec_vslb, 92243}, // __builtin_altivec_vslb
+ {Intrinsic::ppc_altivec_vslh, 92266}, // __builtin_altivec_vslh
+ {Intrinsic::ppc_altivec_vslo, 92289}, // __builtin_altivec_vslo
+ {Intrinsic::ppc_altivec_vslv, 92312}, // __builtin_altivec_vslv
+ {Intrinsic::ppc_altivec_vslw, 92335}, // __builtin_altivec_vslw
+ {Intrinsic::ppc_altivec_vsr, 92358}, // __builtin_altivec_vsr
+ {Intrinsic::ppc_altivec_vsrab, 92380}, // __builtin_altivec_vsrab
+ {Intrinsic::ppc_altivec_vsrah, 92404}, // __builtin_altivec_vsrah
+ {Intrinsic::ppc_altivec_vsraw, 92428}, // __builtin_altivec_vsraw
+ {Intrinsic::ppc_altivec_vsrb, 92452}, // __builtin_altivec_vsrb
+ {Intrinsic::ppc_altivec_vsrh, 92475}, // __builtin_altivec_vsrh
+ {Intrinsic::ppc_altivec_vsro, 92498}, // __builtin_altivec_vsro
+ {Intrinsic::ppc_altivec_vsrv, 92521}, // __builtin_altivec_vsrv
+ {Intrinsic::ppc_altivec_vsrw, 92544}, // __builtin_altivec_vsrw
+ {Intrinsic::ppc_altivec_vsubcuq, 92567}, // __builtin_altivec_vsubcuq
+ {Intrinsic::ppc_altivec_vsubcuw, 92593}, // __builtin_altivec_vsubcuw
+ {Intrinsic::ppc_altivec_vsubecuq, 92619}, // __builtin_altivec_vsubecuq
+ {Intrinsic::ppc_altivec_vsubeuqm, 92646}, // __builtin_altivec_vsubeuqm
+ {Intrinsic::ppc_altivec_vsubsbs, 92673}, // __builtin_altivec_vsubsbs
+ {Intrinsic::ppc_altivec_vsubshs, 92699}, // __builtin_altivec_vsubshs
+ {Intrinsic::ppc_altivec_vsubsws, 92725}, // __builtin_altivec_vsubsws
+ {Intrinsic::ppc_altivec_vsububs, 92751}, // __builtin_altivec_vsububs
+ {Intrinsic::ppc_altivec_vsubuhs, 92777}, // __builtin_altivec_vsubuhs
+ {Intrinsic::ppc_altivec_vsubuws, 92803}, // __builtin_altivec_vsubuws
+ {Intrinsic::ppc_altivec_vsum2sws, 92829}, // __builtin_altivec_vsum2sws
+ {Intrinsic::ppc_altivec_vsum4sbs, 92856}, // __builtin_altivec_vsum4sbs
+ {Intrinsic::ppc_altivec_vsum4shs, 92883}, // __builtin_altivec_vsum4shs
+ {Intrinsic::ppc_altivec_vsum4ubs, 92910}, // __builtin_altivec_vsum4ubs
+ {Intrinsic::ppc_altivec_vsumsws, 92937}, // __builtin_altivec_vsumsws
+ {Intrinsic::ppc_altivec_vupkhpx, 92963}, // __builtin_altivec_vupkhpx
+ {Intrinsic::ppc_altivec_vupkhsb, 92989}, // __builtin_altivec_vupkhsb
+ {Intrinsic::ppc_altivec_vupkhsh, 93015}, // __builtin_altivec_vupkhsh
+ {Intrinsic::ppc_altivec_vupkhsw, 93041}, // __builtin_altivec_vupkhsw
+ {Intrinsic::ppc_altivec_vupklpx, 93067}, // __builtin_altivec_vupklpx
+ {Intrinsic::ppc_altivec_vupklsb, 93093}, // __builtin_altivec_vupklsb
+ {Intrinsic::ppc_altivec_vupklsh, 93119}, // __builtin_altivec_vupklsh
+ {Intrinsic::ppc_altivec_vupklsw, 93145}, // __builtin_altivec_vupklsw
+ {Intrinsic::ppc_bpermd, 93171}, // __builtin_bpermd
+ {Intrinsic::ppc_divde, 93188}, // __builtin_divde
+ {Intrinsic::ppc_divdeu, 93204}, // __builtin_divdeu
+ {Intrinsic::ppc_divf128_round_to_odd, 93221}, // __builtin_divf128_round_to_odd
+ {Intrinsic::ppc_divwe, 93252}, // __builtin_divwe
+ {Intrinsic::ppc_divweu, 93268}, // __builtin_divweu
+ {Intrinsic::ppc_fmaf128_round_to_odd, 93285}, // __builtin_fmaf128_round_to_odd
+ {Intrinsic::ppc_get_texasr, 93316}, // __builtin_get_texasr
+ {Intrinsic::ppc_get_texasru, 93337}, // __builtin_get_texasru
+ {Intrinsic::ppc_get_tfhar, 93359}, // __builtin_get_tfhar
+ {Intrinsic::ppc_get_tfiar, 93379}, // __builtin_get_tfiar
+ {Intrinsic::ppc_mulf128_round_to_odd, 93399}, // __builtin_mulf128_round_to_odd
+ {Intrinsic::ppc_qpx_qvfabs, 93430}, // __builtin_qpx_qvfabs
+ {Intrinsic::ppc_qpx_qvfadd, 93451}, // __builtin_qpx_qvfadd
+ {Intrinsic::ppc_qpx_qvfadds, 93472}, // __builtin_qpx_qvfadds
+ {Intrinsic::ppc_qpx_qvfcfid, 93494}, // __builtin_qpx_qvfcfid
+ {Intrinsic::ppc_qpx_qvfcfids, 93516}, // __builtin_qpx_qvfcfids
+ {Intrinsic::ppc_qpx_qvfcfidu, 93539}, // __builtin_qpx_qvfcfidu
+ {Intrinsic::ppc_qpx_qvfcfidus, 93562}, // __builtin_qpx_qvfcfidus
+ {Intrinsic::ppc_qpx_qvfcmpeq, 93586}, // __builtin_qpx_qvfcmpeq
+ {Intrinsic::ppc_qpx_qvfcmpgt, 93609}, // __builtin_qpx_qvfcmpgt
+ {Intrinsic::ppc_qpx_qvfcmplt, 93632}, // __builtin_qpx_qvfcmplt
+ {Intrinsic::ppc_qpx_qvfcpsgn, 93655}, // __builtin_qpx_qvfcpsgn
+ {Intrinsic::ppc_qpx_qvfctid, 93678}, // __builtin_qpx_qvfctid
+ {Intrinsic::ppc_qpx_qvfctidu, 93700}, // __builtin_qpx_qvfctidu
+ {Intrinsic::ppc_qpx_qvfctiduz, 93723}, // __builtin_qpx_qvfctiduz
+ {Intrinsic::ppc_qpx_qvfctidz, 93747}, // __builtin_qpx_qvfctidz
+ {Intrinsic::ppc_qpx_qvfctiw, 93770}, // __builtin_qpx_qvfctiw
+ {Intrinsic::ppc_qpx_qvfctiwu, 93792}, // __builtin_qpx_qvfctiwu
+ {Intrinsic::ppc_qpx_qvfctiwuz, 93815}, // __builtin_qpx_qvfctiwuz
+ {Intrinsic::ppc_qpx_qvfctiwz, 93839}, // __builtin_qpx_qvfctiwz
+ {Intrinsic::ppc_qpx_qvflogical, 93862}, // __builtin_qpx_qvflogical
+ {Intrinsic::ppc_qpx_qvfmadd, 93887}, // __builtin_qpx_qvfmadd
+ {Intrinsic::ppc_qpx_qvfmadds, 93909}, // __builtin_qpx_qvfmadds
+ {Intrinsic::ppc_qpx_qvfmsub, 93932}, // __builtin_qpx_qvfmsub
+ {Intrinsic::ppc_qpx_qvfmsubs, 93954}, // __builtin_qpx_qvfmsubs
+ {Intrinsic::ppc_qpx_qvfmul, 93977}, // __builtin_qpx_qvfmul
+ {Intrinsic::ppc_qpx_qvfmuls, 93998}, // __builtin_qpx_qvfmuls
+ {Intrinsic::ppc_qpx_qvfnabs, 94020}, // __builtin_qpx_qvfnabs
+ {Intrinsic::ppc_qpx_qvfneg, 94042}, // __builtin_qpx_qvfneg
+ {Intrinsic::ppc_qpx_qvfnmadd, 94063}, // __builtin_qpx_qvfnmadd
+ {Intrinsic::ppc_qpx_qvfnmadds, 94086}, // __builtin_qpx_qvfnmadds
+ {Intrinsic::ppc_qpx_qvfnmsub, 94110}, // __builtin_qpx_qvfnmsub
+ {Intrinsic::ppc_qpx_qvfnmsubs, 94133}, // __builtin_qpx_qvfnmsubs
+ {Intrinsic::ppc_qpx_qvfperm, 94157}, // __builtin_qpx_qvfperm
+ {Intrinsic::ppc_qpx_qvfre, 94179}, // __builtin_qpx_qvfre
+ {Intrinsic::ppc_qpx_qvfres, 94199}, // __builtin_qpx_qvfres
+ {Intrinsic::ppc_qpx_qvfrim, 94220}, // __builtin_qpx_qvfrim
+ {Intrinsic::ppc_qpx_qvfrin, 94241}, // __builtin_qpx_qvfrin
+ {Intrinsic::ppc_qpx_qvfrip, 94262}, // __builtin_qpx_qvfrip
+ {Intrinsic::ppc_qpx_qvfriz, 94283}, // __builtin_qpx_qvfriz
+ {Intrinsic::ppc_qpx_qvfrsp, 94304}, // __builtin_qpx_qvfrsp
+ {Intrinsic::ppc_qpx_qvfrsqrte, 94325}, // __builtin_qpx_qvfrsqrte
+ {Intrinsic::ppc_qpx_qvfrsqrtes, 94349}, // __builtin_qpx_qvfrsqrtes
+ {Intrinsic::ppc_qpx_qvfsel, 94374}, // __builtin_qpx_qvfsel
+ {Intrinsic::ppc_qpx_qvfsub, 94395}, // __builtin_qpx_qvfsub
+ {Intrinsic::ppc_qpx_qvfsubs, 94416}, // __builtin_qpx_qvfsubs
+ {Intrinsic::ppc_qpx_qvftstnan, 94438}, // __builtin_qpx_qvftstnan
+ {Intrinsic::ppc_qpx_qvfxmadd, 94462}, // __builtin_qpx_qvfxmadd
+ {Intrinsic::ppc_qpx_qvfxmadds, 94485}, // __builtin_qpx_qvfxmadds
+ {Intrinsic::ppc_qpx_qvfxmul, 94509}, // __builtin_qpx_qvfxmul
+ {Intrinsic::ppc_qpx_qvfxmuls, 94531}, // __builtin_qpx_qvfxmuls
+ {Intrinsic::ppc_qpx_qvfxxcpnmadd, 94554}, // __builtin_qpx_qvfxxcpnmadd
+ {Intrinsic::ppc_qpx_qvfxxcpnmadds, 94581}, // __builtin_qpx_qvfxxcpnmadds
+ {Intrinsic::ppc_qpx_qvfxxmadd, 94609}, // __builtin_qpx_qvfxxmadd
+ {Intrinsic::ppc_qpx_qvfxxmadds, 94633}, // __builtin_qpx_qvfxxmadds
+ {Intrinsic::ppc_qpx_qvfxxnpmadd, 94658}, // __builtin_qpx_qvfxxnpmadd
+ {Intrinsic::ppc_qpx_qvfxxnpmadds, 94684}, // __builtin_qpx_qvfxxnpmadds
+ {Intrinsic::ppc_qpx_qvgpci, 94711}, // __builtin_qpx_qvgpci
+ {Intrinsic::ppc_qpx_qvlfcd, 94732}, // __builtin_qpx_qvlfcd
+ {Intrinsic::ppc_qpx_qvlfcda, 94753}, // __builtin_qpx_qvlfcda
+ {Intrinsic::ppc_qpx_qvlfcs, 94775}, // __builtin_qpx_qvlfcs
+ {Intrinsic::ppc_qpx_qvlfcsa, 94796}, // __builtin_qpx_qvlfcsa
+ {Intrinsic::ppc_qpx_qvlfd, 94818}, // __builtin_qpx_qvlfd
+ {Intrinsic::ppc_qpx_qvlfda, 94838}, // __builtin_qpx_qvlfda
+ {Intrinsic::ppc_qpx_qvlfiwa, 94859}, // __builtin_qpx_qvlfiwa
+ {Intrinsic::ppc_qpx_qvlfiwaa, 94881}, // __builtin_qpx_qvlfiwaa
+ {Intrinsic::ppc_qpx_qvlfiwz, 94904}, // __builtin_qpx_qvlfiwz
+ {Intrinsic::ppc_qpx_qvlfiwza, 94926}, // __builtin_qpx_qvlfiwza
+ {Intrinsic::ppc_qpx_qvlfs, 94949}, // __builtin_qpx_qvlfs
+ {Intrinsic::ppc_qpx_qvlfsa, 94969}, // __builtin_qpx_qvlfsa
+ {Intrinsic::ppc_qpx_qvlpcld, 94990}, // __builtin_qpx_qvlpcld
+ {Intrinsic::ppc_qpx_qvlpcls, 95012}, // __builtin_qpx_qvlpcls
+ {Intrinsic::ppc_qpx_qvlpcrd, 95034}, // __builtin_qpx_qvlpcrd
+ {Intrinsic::ppc_qpx_qvlpcrs, 95056}, // __builtin_qpx_qvlpcrs
+ {Intrinsic::ppc_qpx_qvstfcd, 95078}, // __builtin_qpx_qvstfcd
+ {Intrinsic::ppc_qpx_qvstfcda, 95100}, // __builtin_qpx_qvstfcda
+ {Intrinsic::ppc_qpx_qvstfcs, 95123}, // __builtin_qpx_qvstfcs
+ {Intrinsic::ppc_qpx_qvstfcsa, 95145}, // __builtin_qpx_qvstfcsa
+ {Intrinsic::ppc_qpx_qvstfd, 95168}, // __builtin_qpx_qvstfd
+ {Intrinsic::ppc_qpx_qvstfda, 95189}, // __builtin_qpx_qvstfda
+ {Intrinsic::ppc_qpx_qvstfiw, 95211}, // __builtin_qpx_qvstfiw
+ {Intrinsic::ppc_qpx_qvstfiwa, 95233}, // __builtin_qpx_qvstfiwa
+ {Intrinsic::ppc_qpx_qvstfs, 95256}, // __builtin_qpx_qvstfs
+ {Intrinsic::ppc_qpx_qvstfsa, 95277}, // __builtin_qpx_qvstfsa
+ {Intrinsic::ppc_set_texasr, 95368}, // __builtin_set_texasr
+ {Intrinsic::ppc_set_texasru, 95389}, // __builtin_set_texasru
+ {Intrinsic::ppc_set_tfhar, 95411}, // __builtin_set_tfhar
+ {Intrinsic::ppc_set_tfiar, 95431}, // __builtin_set_tfiar
+ {Intrinsic::ppc_sqrtf128_round_to_odd, 95451}, // __builtin_sqrtf128_round_to_odd
+ {Intrinsic::ppc_subf128_round_to_odd, 95483}, // __builtin_subf128_round_to_odd
+ {Intrinsic::ppc_tabort, 95514}, // __builtin_tabort
+ {Intrinsic::ppc_tabortdc, 95531}, // __builtin_tabortdc
+ {Intrinsic::ppc_tabortdci, 95550}, // __builtin_tabortdci
+ {Intrinsic::ppc_tabortwc, 95570}, // __builtin_tabortwc
+ {Intrinsic::ppc_tabortwci, 95589}, // __builtin_tabortwci
+ {Intrinsic::ppc_tbegin, 95609}, // __builtin_tbegin
+ {Intrinsic::ppc_tcheck, 95626}, // __builtin_tcheck
+ {Intrinsic::ppc_tend, 95643}, // __builtin_tend
+ {Intrinsic::ppc_tendall, 95658}, // __builtin_tendall
+ {Intrinsic::ppc_trechkpt, 95676}, // __builtin_trechkpt
+ {Intrinsic::ppc_treclaim, 95695}, // __builtin_treclaim
+ {Intrinsic::ppc_tresume, 95714}, // __builtin_tresume
+ {Intrinsic::ppc_truncf128_round_to_odd, 95732}, // __builtin_truncf128_round_to_odd
+ {Intrinsic::ppc_tsr, 95765}, // __builtin_tsr
+ {Intrinsic::ppc_tsuspend, 95779}, // __builtin_tsuspend
+ {Intrinsic::ppc_ttest, 95798}, // __builtin_ttest
+ {Intrinsic::ppc_scalar_extract_expq, 95299}, // __builtin_vsx_scalar_extract_expq
+ {Intrinsic::ppc_scalar_insert_exp_qp, 95333}, // __builtin_vsx_scalar_insert_exp_qp
+ {Intrinsic::ppc_vsx_xsmaxdp, 95814}, // __builtin_vsx_xsmaxdp
+ {Intrinsic::ppc_vsx_xsmindp, 95836}, // __builtin_vsx_xsmindp
+ {Intrinsic::ppc_vsx_xvcmpeqdp, 95858}, // __builtin_vsx_xvcmpeqdp
+ {Intrinsic::ppc_vsx_xvcmpeqdp_p, 95882}, // __builtin_vsx_xvcmpeqdp_p
+ {Intrinsic::ppc_vsx_xvcmpeqsp, 95908}, // __builtin_vsx_xvcmpeqsp
+ {Intrinsic::ppc_vsx_xvcmpeqsp_p, 95932}, // __builtin_vsx_xvcmpeqsp_p
+ {Intrinsic::ppc_vsx_xvcmpgedp, 95958}, // __builtin_vsx_xvcmpgedp
+ {Intrinsic::ppc_vsx_xvcmpgedp_p, 95982}, // __builtin_vsx_xvcmpgedp_p
+ {Intrinsic::ppc_vsx_xvcmpgesp, 96008}, // __builtin_vsx_xvcmpgesp
+ {Intrinsic::ppc_vsx_xvcmpgesp_p, 96032}, // __builtin_vsx_xvcmpgesp_p
+ {Intrinsic::ppc_vsx_xvcmpgtdp, 96058}, // __builtin_vsx_xvcmpgtdp
+ {Intrinsic::ppc_vsx_xvcmpgtdp_p, 96082}, // __builtin_vsx_xvcmpgtdp_p
+ {Intrinsic::ppc_vsx_xvcmpgtsp, 96108}, // __builtin_vsx_xvcmpgtsp
+ {Intrinsic::ppc_vsx_xvcmpgtsp_p, 96132}, // __builtin_vsx_xvcmpgtsp_p
+ {Intrinsic::ppc_vsx_xvcvdpsp, 96158}, // __builtin_vsx_xvcvdpsp
+ {Intrinsic::ppc_vsx_xvcvdpsxws, 96181}, // __builtin_vsx_xvcvdpsxws
+ {Intrinsic::ppc_vsx_xvcvdpuxws, 96206}, // __builtin_vsx_xvcvdpuxws
+ {Intrinsic::ppc_vsx_xvcvhpsp, 96231}, // __builtin_vsx_xvcvhpsp
+ {Intrinsic::ppc_vsx_xvcvspdp, 96254}, // __builtin_vsx_xvcvspdp
+ {Intrinsic::ppc_vsx_xvcvsphp, 96277}, // __builtin_vsx_xvcvsphp
+ {Intrinsic::ppc_vsx_xvcvsxdsp, 96300}, // __builtin_vsx_xvcvsxdsp
+ {Intrinsic::ppc_vsx_xvcvsxwdp, 96324}, // __builtin_vsx_xvcvsxwdp
+ {Intrinsic::ppc_vsx_xvcvuxdsp, 96348}, // __builtin_vsx_xvcvuxdsp
+ {Intrinsic::ppc_vsx_xvcvuxwdp, 96372}, // __builtin_vsx_xvcvuxwdp
+ {Intrinsic::ppc_vsx_xvdivdp, 96396}, // __builtin_vsx_xvdivdp
+ {Intrinsic::ppc_vsx_xvdivsp, 96418}, // __builtin_vsx_xvdivsp
+ {Intrinsic::ppc_vsx_xviexpdp, 96440}, // __builtin_vsx_xviexpdp
+ {Intrinsic::ppc_vsx_xviexpsp, 96463}, // __builtin_vsx_xviexpsp
+ {Intrinsic::ppc_vsx_xvmaxdp, 96486}, // __builtin_vsx_xvmaxdp
+ {Intrinsic::ppc_vsx_xvmaxsp, 96508}, // __builtin_vsx_xvmaxsp
+ {Intrinsic::ppc_vsx_xvmindp, 96530}, // __builtin_vsx_xvmindp
+ {Intrinsic::ppc_vsx_xvminsp, 96552}, // __builtin_vsx_xvminsp
+ {Intrinsic::ppc_vsx_xvredp, 96574}, // __builtin_vsx_xvredp
+ {Intrinsic::ppc_vsx_xvresp, 96595}, // __builtin_vsx_xvresp
+ {Intrinsic::ppc_vsx_xvrsqrtedp, 96616}, // __builtin_vsx_xvrsqrtedp
+ {Intrinsic::ppc_vsx_xvrsqrtesp, 96641}, // __builtin_vsx_xvrsqrtesp
+ {Intrinsic::ppc_vsx_xvtstdcdp, 96666}, // __builtin_vsx_xvtstdcdp
+ {Intrinsic::ppc_vsx_xvtstdcsp, 96690}, // __builtin_vsx_xvtstdcsp
+ {Intrinsic::ppc_vsx_xvxexpdp, 96714}, // __builtin_vsx_xvxexpdp
+ {Intrinsic::ppc_vsx_xvxexpsp, 96737}, // __builtin_vsx_xvxexpsp
+ {Intrinsic::ppc_vsx_xvxsigdp, 96760}, // __builtin_vsx_xvxsigdp
+ {Intrinsic::ppc_vsx_xvxsigsp, 96783}, // __builtin_vsx_xvxsigsp
+ {Intrinsic::ppc_vsx_xxextractuw, 96806}, // __builtin_vsx_xxextractuw
+ {Intrinsic::ppc_vsx_xxinsertw, 96832}, // __builtin_vsx_xxinsertw
+ {Intrinsic::ppc_vsx_xxleqv, 96856}, // __builtin_vsx_xxleqv
};
auto I = std::lower_bound(std::begin(ppcNames),
std::end(ppcNames),
@@ -28430,18 +28324,18 @@
}
if (TargetPrefix == "r600") {
static const BuiltinEntry r600Names[] = {
- {Intrinsic::r600_group_barrier, 95218}, // __builtin_r600_group_barrier
- {Intrinsic::r600_implicitarg_ptr, 95247}, // __builtin_r600_implicitarg_ptr
- {Intrinsic::r600_rat_store_typed, 95278}, // __builtin_r600_rat_store_typed
- {Intrinsic::r600_read_global_size_x, 95309}, // __builtin_r600_read_global_size_x
- {Intrinsic::r600_read_global_size_y, 95343}, // __builtin_r600_read_global_size_y
- {Intrinsic::r600_read_global_size_z, 95377}, // __builtin_r600_read_global_size_z
- {Intrinsic::r600_read_ngroups_x, 95411}, // __builtin_r600_read_ngroups_x
- {Intrinsic::r600_read_ngroups_y, 95441}, // __builtin_r600_read_ngroups_y
- {Intrinsic::r600_read_ngroups_z, 95471}, // __builtin_r600_read_ngroups_z
- {Intrinsic::r600_read_tgid_x, 95501}, // __builtin_r600_read_tgid_x
- {Intrinsic::r600_read_tgid_y, 95528}, // __builtin_r600_read_tgid_y
- {Intrinsic::r600_read_tgid_z, 95555}, // __builtin_r600_read_tgid_z
+ {Intrinsic::r600_group_barrier, 96877}, // __builtin_r600_group_barrier
+ {Intrinsic::r600_implicitarg_ptr, 96906}, // __builtin_r600_implicitarg_ptr
+ {Intrinsic::r600_rat_store_typed, 96937}, // __builtin_r600_rat_store_typed
+ {Intrinsic::r600_read_global_size_x, 96968}, // __builtin_r600_read_global_size_x
+ {Intrinsic::r600_read_global_size_y, 97002}, // __builtin_r600_read_global_size_y
+ {Intrinsic::r600_read_global_size_z, 97036}, // __builtin_r600_read_global_size_z
+ {Intrinsic::r600_read_ngroups_x, 97070}, // __builtin_r600_read_ngroups_x
+ {Intrinsic::r600_read_ngroups_y, 97100}, // __builtin_r600_read_ngroups_y
+ {Intrinsic::r600_read_ngroups_z, 97130}, // __builtin_r600_read_ngroups_z
+ {Intrinsic::r600_read_tgid_x, 97160}, // __builtin_r600_read_tgid_x
+ {Intrinsic::r600_read_tgid_y, 97187}, // __builtin_r600_read_tgid_y
+ {Intrinsic::r600_read_tgid_z, 97214}, // __builtin_r600_read_tgid_z
};
auto I = std::lower_bound(std::begin(r600Names),
std::end(r600Names),
@@ -28452,161 +28346,161 @@
}
if (TargetPrefix == "s390") {
static const BuiltinEntry s390Names[] = {
- {Intrinsic::s390_efpc, 95582}, // __builtin_s390_efpc
- {Intrinsic::s390_lcbb, 95629}, // __builtin_s390_lcbb
- {Intrinsic::s390_sfpc, 95669}, // __builtin_s390_sfpc
- {Intrinsic::s390_vaccb, 95689}, // __builtin_s390_vaccb
- {Intrinsic::s390_vacccq, 95710}, // __builtin_s390_vacccq
- {Intrinsic::s390_vaccf, 95732}, // __builtin_s390_vaccf
- {Intrinsic::s390_vaccg, 95753}, // __builtin_s390_vaccg
- {Intrinsic::s390_vacch, 95774}, // __builtin_s390_vacch
- {Intrinsic::s390_vaccq, 95795}, // __builtin_s390_vaccq
- {Intrinsic::s390_vacq, 95816}, // __builtin_s390_vacq
- {Intrinsic::s390_vaq, 95836}, // __builtin_s390_vaq
- {Intrinsic::s390_vavgb, 95855}, // __builtin_s390_vavgb
- {Intrinsic::s390_vavgf, 95876}, // __builtin_s390_vavgf
- {Intrinsic::s390_vavgg, 95897}, // __builtin_s390_vavgg
- {Intrinsic::s390_vavgh, 95918}, // __builtin_s390_vavgh
- {Intrinsic::s390_vavglb, 95939}, // __builtin_s390_vavglb
- {Intrinsic::s390_vavglf, 95961}, // __builtin_s390_vavglf
- {Intrinsic::s390_vavglg, 95983}, // __builtin_s390_vavglg
- {Intrinsic::s390_vavglh, 96005}, // __builtin_s390_vavglh
- {Intrinsic::s390_vbperm, 96027}, // __builtin_s390_vbperm
- {Intrinsic::s390_vcksm, 96049}, // __builtin_s390_vcksm
- {Intrinsic::s390_verimb, 96070}, // __builtin_s390_verimb
- {Intrinsic::s390_verimf, 96092}, // __builtin_s390_verimf
- {Intrinsic::s390_verimg, 96114}, // __builtin_s390_verimg
- {Intrinsic::s390_verimh, 96136}, // __builtin_s390_verimh
- {Intrinsic::s390_verllb, 96158}, // __builtin_s390_verllb
- {Intrinsic::s390_verllf, 96180}, // __builtin_s390_verllf
- {Intrinsic::s390_verllg, 96202}, // __builtin_s390_verllg
- {Intrinsic::s390_verllh, 96224}, // __builtin_s390_verllh
- {Intrinsic::s390_verllvb, 96246}, // __builtin_s390_verllvb
- {Intrinsic::s390_verllvf, 96269}, // __builtin_s390_verllvf
- {Intrinsic::s390_verllvg, 96292}, // __builtin_s390_verllvg
- {Intrinsic::s390_verllvh, 96315}, // __builtin_s390_verllvh
- {Intrinsic::s390_vfaeb, 96338}, // __builtin_s390_vfaeb
- {Intrinsic::s390_vfaef, 96359}, // __builtin_s390_vfaef
- {Intrinsic::s390_vfaeh, 96380}, // __builtin_s390_vfaeh
- {Intrinsic::s390_vfaezb, 96401}, // __builtin_s390_vfaezb
- {Intrinsic::s390_vfaezf, 96423}, // __builtin_s390_vfaezf
- {Intrinsic::s390_vfaezh, 96445}, // __builtin_s390_vfaezh
- {Intrinsic::s390_vfeeb, 96467}, // __builtin_s390_vfeeb
- {Intrinsic::s390_vfeef, 96488}, // __builtin_s390_vfeef
- {Intrinsic::s390_vfeeh, 96509}, // __builtin_s390_vfeeh
- {Intrinsic::s390_vfeezb, 96530}, // __builtin_s390_vfeezb
- {Intrinsic::s390_vfeezf, 96552}, // __builtin_s390_vfeezf
- {Intrinsic::s390_vfeezh, 96574}, // __builtin_s390_vfeezh
- {Intrinsic::s390_vfeneb, 96596}, // __builtin_s390_vfeneb
- {Intrinsic::s390_vfenef, 96618}, // __builtin_s390_vfenef
- {Intrinsic::s390_vfeneh, 96640}, // __builtin_s390_vfeneh
- {Intrinsic::s390_vfenezb, 96662}, // __builtin_s390_vfenezb
- {Intrinsic::s390_vfenezf, 96685}, // __builtin_s390_vfenezf
- {Intrinsic::s390_vfenezh, 96708}, // __builtin_s390_vfenezh
- {Intrinsic::s390_vgfmab, 96731}, // __builtin_s390_vgfmab
- {Intrinsic::s390_vgfmaf, 96753}, // __builtin_s390_vgfmaf
- {Intrinsic::s390_vgfmag, 96775}, // __builtin_s390_vgfmag
- {Intrinsic::s390_vgfmah, 96797}, // __builtin_s390_vgfmah
- {Intrinsic::s390_vgfmb, 96819}, // __builtin_s390_vgfmb
- {Intrinsic::s390_vgfmf, 96840}, // __builtin_s390_vgfmf
- {Intrinsic::s390_vgfmg, 96861}, // __builtin_s390_vgfmg
- {Intrinsic::s390_vgfmh, 96882}, // __builtin_s390_vgfmh
- {Intrinsic::s390_vistrb, 96903}, // __builtin_s390_vistrb
- {Intrinsic::s390_vistrf, 96925}, // __builtin_s390_vistrf
- {Intrinsic::s390_vistrh, 96947}, // __builtin_s390_vistrh
- {Intrinsic::s390_vlbb, 96969}, // __builtin_s390_vlbb
- {Intrinsic::s390_vll, 96989}, // __builtin_s390_vll
- {Intrinsic::s390_vlrl, 97008}, // __builtin_s390_vlrl
- {Intrinsic::s390_vmaeb, 97028}, // __builtin_s390_vmaeb
- {Intrinsic::s390_vmaef, 97049}, // __builtin_s390_vmaef
- {Intrinsic::s390_vmaeh, 97070}, // __builtin_s390_vmaeh
- {Intrinsic::s390_vmahb, 97091}, // __builtin_s390_vmahb
- {Intrinsic::s390_vmahf, 97112}, // __builtin_s390_vmahf
- {Intrinsic::s390_vmahh, 97133}, // __builtin_s390_vmahh
- {Intrinsic::s390_vmaleb, 97154}, // __builtin_s390_vmaleb
- {Intrinsic::s390_vmalef, 97176}, // __builtin_s390_vmalef
- {Intrinsic::s390_vmaleh, 97198}, // __builtin_s390_vmaleh
- {Intrinsic::s390_vmalhb, 97220}, // __builtin_s390_vmalhb
- {Intrinsic::s390_vmalhf, 97242}, // __builtin_s390_vmalhf
- {Intrinsic::s390_vmalhh, 97264}, // __builtin_s390_vmalhh
- {Intrinsic::s390_vmalob, 97286}, // __builtin_s390_vmalob
- {Intrinsic::s390_vmalof, 97308}, // __builtin_s390_vmalof
- {Intrinsic::s390_vmaloh, 97330}, // __builtin_s390_vmaloh
- {Intrinsic::s390_vmaob, 97352}, // __builtin_s390_vmaob
- {Intrinsic::s390_vmaof, 97373}, // __builtin_s390_vmaof
- {Intrinsic::s390_vmaoh, 97394}, // __builtin_s390_vmaoh
- {Intrinsic::s390_vmeb, 97415}, // __builtin_s390_vmeb
- {Intrinsic::s390_vmef, 97435}, // __builtin_s390_vmef
- {Intrinsic::s390_vmeh, 97455}, // __builtin_s390_vmeh
- {Intrinsic::s390_vmhb, 97475}, // __builtin_s390_vmhb
- {Intrinsic::s390_vmhf, 97495}, // __builtin_s390_vmhf
- {Intrinsic::s390_vmhh, 97515}, // __builtin_s390_vmhh
- {Intrinsic::s390_vmleb, 97535}, // __builtin_s390_vmleb
- {Intrinsic::s390_vmlef, 97556}, // __builtin_s390_vmlef
- {Intrinsic::s390_vmleh, 97577}, // __builtin_s390_vmleh
- {Intrinsic::s390_vmlhb, 97598}, // __builtin_s390_vmlhb
- {Intrinsic::s390_vmlhf, 97619}, // __builtin_s390_vmlhf
- {Intrinsic::s390_vmlhh, 97640}, // __builtin_s390_vmlhh
- {Intrinsic::s390_vmlob, 97661}, // __builtin_s390_vmlob
- {Intrinsic::s390_vmlof, 97682}, // __builtin_s390_vmlof
- {Intrinsic::s390_vmloh, 97703}, // __builtin_s390_vmloh
- {Intrinsic::s390_vmob, 97724}, // __builtin_s390_vmob
- {Intrinsic::s390_vmof, 97744}, // __builtin_s390_vmof
- {Intrinsic::s390_vmoh, 97764}, // __builtin_s390_vmoh
- {Intrinsic::s390_vmslg, 97784}, // __builtin_s390_vmslg
- {Intrinsic::s390_vpdi, 97805}, // __builtin_s390_vpdi
- {Intrinsic::s390_vperm, 97825}, // __builtin_s390_vperm
- {Intrinsic::s390_vpklsf, 97846}, // __builtin_s390_vpklsf
- {Intrinsic::s390_vpklsg, 97868}, // __builtin_s390_vpklsg
- {Intrinsic::s390_vpklsh, 97890}, // __builtin_s390_vpklsh
- {Intrinsic::s390_vpksf, 97912}, // __builtin_s390_vpksf
- {Intrinsic::s390_vpksg, 97933}, // __builtin_s390_vpksg
- {Intrinsic::s390_vpksh, 97954}, // __builtin_s390_vpksh
- {Intrinsic::s390_vsbcbiq, 97975}, // __builtin_s390_vsbcbiq
- {Intrinsic::s390_vsbiq, 97998}, // __builtin_s390_vsbiq
- {Intrinsic::s390_vscbib, 98019}, // __builtin_s390_vscbib
- {Intrinsic::s390_vscbif, 98041}, // __builtin_s390_vscbif
- {Intrinsic::s390_vscbig, 98063}, // __builtin_s390_vscbig
- {Intrinsic::s390_vscbih, 98085}, // __builtin_s390_vscbih
- {Intrinsic::s390_vscbiq, 98107}, // __builtin_s390_vscbiq
- {Intrinsic::s390_vsl, 98129}, // __builtin_s390_vsl
- {Intrinsic::s390_vslb, 98148}, // __builtin_s390_vslb
- {Intrinsic::s390_vsldb, 98168}, // __builtin_s390_vsldb
- {Intrinsic::s390_vsq, 98189}, // __builtin_s390_vsq
- {Intrinsic::s390_vsra, 98208}, // __builtin_s390_vsra
- {Intrinsic::s390_vsrab, 98228}, // __builtin_s390_vsrab
- {Intrinsic::s390_vsrl, 98249}, // __builtin_s390_vsrl
- {Intrinsic::s390_vsrlb, 98269}, // __builtin_s390_vsrlb
- {Intrinsic::s390_vstl, 98290}, // __builtin_s390_vstl
- {Intrinsic::s390_vstrcb, 98310}, // __builtin_s390_vstrcb
- {Intrinsic::s390_vstrcf, 98332}, // __builtin_s390_vstrcf
- {Intrinsic::s390_vstrch, 98354}, // __builtin_s390_vstrch
- {Intrinsic::s390_vstrczb, 98376}, // __builtin_s390_vstrczb
- {Intrinsic::s390_vstrczf, 98399}, // __builtin_s390_vstrczf
- {Intrinsic::s390_vstrczh, 98422}, // __builtin_s390_vstrczh
- {Intrinsic::s390_vstrl, 98445}, // __builtin_s390_vstrl
- {Intrinsic::s390_vsumb, 98466}, // __builtin_s390_vsumb
- {Intrinsic::s390_vsumgf, 98487}, // __builtin_s390_vsumgf
- {Intrinsic::s390_vsumgh, 98509}, // __builtin_s390_vsumgh
- {Intrinsic::s390_vsumh, 98531}, // __builtin_s390_vsumh
- {Intrinsic::s390_vsumqf, 98552}, // __builtin_s390_vsumqf
- {Intrinsic::s390_vsumqg, 98574}, // __builtin_s390_vsumqg
- {Intrinsic::s390_vtm, 98596}, // __builtin_s390_vtm
- {Intrinsic::s390_vuphb, 98615}, // __builtin_s390_vuphb
- {Intrinsic::s390_vuphf, 98636}, // __builtin_s390_vuphf
- {Intrinsic::s390_vuphh, 98657}, // __builtin_s390_vuphh
- {Intrinsic::s390_vuplb, 98678}, // __builtin_s390_vuplb
- {Intrinsic::s390_vuplf, 98699}, // __builtin_s390_vuplf
- {Intrinsic::s390_vuplhb, 98720}, // __builtin_s390_vuplhb
- {Intrinsic::s390_vuplhf, 98742}, // __builtin_s390_vuplhf
- {Intrinsic::s390_vuplhh, 98764}, // __builtin_s390_vuplhh
- {Intrinsic::s390_vuplhw, 98786}, // __builtin_s390_vuplhw
- {Intrinsic::s390_vupllb, 98808}, // __builtin_s390_vupllb
- {Intrinsic::s390_vupllf, 98830}, // __builtin_s390_vupllf
- {Intrinsic::s390_vupllh, 98852}, // __builtin_s390_vupllh
- {Intrinsic::s390_tend, 93984}, // __builtin_tend
- {Intrinsic::s390_ppa_txassist, 95649}, // __builtin_tx_assist
- {Intrinsic::s390_etnd, 95602}, // __builtin_tx_nesting_depth
+ {Intrinsic::s390_efpc, 97241}, // __builtin_s390_efpc
+ {Intrinsic::s390_lcbb, 97288}, // __builtin_s390_lcbb
+ {Intrinsic::s390_sfpc, 97328}, // __builtin_s390_sfpc
+ {Intrinsic::s390_vaccb, 97348}, // __builtin_s390_vaccb
+ {Intrinsic::s390_vacccq, 97369}, // __builtin_s390_vacccq
+ {Intrinsic::s390_vaccf, 97391}, // __builtin_s390_vaccf
+ {Intrinsic::s390_vaccg, 97412}, // __builtin_s390_vaccg
+ {Intrinsic::s390_vacch, 97433}, // __builtin_s390_vacch
+ {Intrinsic::s390_vaccq, 97454}, // __builtin_s390_vaccq
+ {Intrinsic::s390_vacq, 97475}, // __builtin_s390_vacq
+ {Intrinsic::s390_vaq, 97495}, // __builtin_s390_vaq
+ {Intrinsic::s390_vavgb, 97514}, // __builtin_s390_vavgb
+ {Intrinsic::s390_vavgf, 97535}, // __builtin_s390_vavgf
+ {Intrinsic::s390_vavgg, 97556}, // __builtin_s390_vavgg
+ {Intrinsic::s390_vavgh, 97577}, // __builtin_s390_vavgh
+ {Intrinsic::s390_vavglb, 97598}, // __builtin_s390_vavglb
+ {Intrinsic::s390_vavglf, 97620}, // __builtin_s390_vavglf
+ {Intrinsic::s390_vavglg, 97642}, // __builtin_s390_vavglg
+ {Intrinsic::s390_vavglh, 97664}, // __builtin_s390_vavglh
+ {Intrinsic::s390_vbperm, 97686}, // __builtin_s390_vbperm
+ {Intrinsic::s390_vcksm, 97708}, // __builtin_s390_vcksm
+ {Intrinsic::s390_verimb, 97729}, // __builtin_s390_verimb
+ {Intrinsic::s390_verimf, 97751}, // __builtin_s390_verimf
+ {Intrinsic::s390_verimg, 97773}, // __builtin_s390_verimg
+ {Intrinsic::s390_verimh, 97795}, // __builtin_s390_verimh
+ {Intrinsic::s390_verllb, 97817}, // __builtin_s390_verllb
+ {Intrinsic::s390_verllf, 97839}, // __builtin_s390_verllf
+ {Intrinsic::s390_verllg, 97861}, // __builtin_s390_verllg
+ {Intrinsic::s390_verllh, 97883}, // __builtin_s390_verllh
+ {Intrinsic::s390_verllvb, 97905}, // __builtin_s390_verllvb
+ {Intrinsic::s390_verllvf, 97928}, // __builtin_s390_verllvf
+ {Intrinsic::s390_verllvg, 97951}, // __builtin_s390_verllvg
+ {Intrinsic::s390_verllvh, 97974}, // __builtin_s390_verllvh
+ {Intrinsic::s390_vfaeb, 97997}, // __builtin_s390_vfaeb
+ {Intrinsic::s390_vfaef, 98018}, // __builtin_s390_vfaef
+ {Intrinsic::s390_vfaeh, 98039}, // __builtin_s390_vfaeh
+ {Intrinsic::s390_vfaezb, 98060}, // __builtin_s390_vfaezb
+ {Intrinsic::s390_vfaezf, 98082}, // __builtin_s390_vfaezf
+ {Intrinsic::s390_vfaezh, 98104}, // __builtin_s390_vfaezh
+ {Intrinsic::s390_vfeeb, 98126}, // __builtin_s390_vfeeb
+ {Intrinsic::s390_vfeef, 98147}, // __builtin_s390_vfeef
+ {Intrinsic::s390_vfeeh, 98168}, // __builtin_s390_vfeeh
+ {Intrinsic::s390_vfeezb, 98189}, // __builtin_s390_vfeezb
+ {Intrinsic::s390_vfeezf, 98211}, // __builtin_s390_vfeezf
+ {Intrinsic::s390_vfeezh, 98233}, // __builtin_s390_vfeezh
+ {Intrinsic::s390_vfeneb, 98255}, // __builtin_s390_vfeneb
+ {Intrinsic::s390_vfenef, 98277}, // __builtin_s390_vfenef
+ {Intrinsic::s390_vfeneh, 98299}, // __builtin_s390_vfeneh
+ {Intrinsic::s390_vfenezb, 98321}, // __builtin_s390_vfenezb
+ {Intrinsic::s390_vfenezf, 98344}, // __builtin_s390_vfenezf
+ {Intrinsic::s390_vfenezh, 98367}, // __builtin_s390_vfenezh
+ {Intrinsic::s390_vgfmab, 98390}, // __builtin_s390_vgfmab
+ {Intrinsic::s390_vgfmaf, 98412}, // __builtin_s390_vgfmaf
+ {Intrinsic::s390_vgfmag, 98434}, // __builtin_s390_vgfmag
+ {Intrinsic::s390_vgfmah, 98456}, // __builtin_s390_vgfmah
+ {Intrinsic::s390_vgfmb, 98478}, // __builtin_s390_vgfmb
+ {Intrinsic::s390_vgfmf, 98499}, // __builtin_s390_vgfmf
+ {Intrinsic::s390_vgfmg, 98520}, // __builtin_s390_vgfmg
+ {Intrinsic::s390_vgfmh, 98541}, // __builtin_s390_vgfmh
+ {Intrinsic::s390_vistrb, 98562}, // __builtin_s390_vistrb
+ {Intrinsic::s390_vistrf, 98584}, // __builtin_s390_vistrf
+ {Intrinsic::s390_vistrh, 98606}, // __builtin_s390_vistrh
+ {Intrinsic::s390_vlbb, 98628}, // __builtin_s390_vlbb
+ {Intrinsic::s390_vll, 98648}, // __builtin_s390_vll
+ {Intrinsic::s390_vlrl, 98667}, // __builtin_s390_vlrl
+ {Intrinsic::s390_vmaeb, 98687}, // __builtin_s390_vmaeb
+ {Intrinsic::s390_vmaef, 98708}, // __builtin_s390_vmaef
+ {Intrinsic::s390_vmaeh, 98729}, // __builtin_s390_vmaeh
+ {Intrinsic::s390_vmahb, 98750}, // __builtin_s390_vmahb
+ {Intrinsic::s390_vmahf, 98771}, // __builtin_s390_vmahf
+ {Intrinsic::s390_vmahh, 98792}, // __builtin_s390_vmahh
+ {Intrinsic::s390_vmaleb, 98813}, // __builtin_s390_vmaleb
+ {Intrinsic::s390_vmalef, 98835}, // __builtin_s390_vmalef
+ {Intrinsic::s390_vmaleh, 98857}, // __builtin_s390_vmaleh
+ {Intrinsic::s390_vmalhb, 98879}, // __builtin_s390_vmalhb
+ {Intrinsic::s390_vmalhf, 98901}, // __builtin_s390_vmalhf
+ {Intrinsic::s390_vmalhh, 98923}, // __builtin_s390_vmalhh
+ {Intrinsic::s390_vmalob, 98945}, // __builtin_s390_vmalob
+ {Intrinsic::s390_vmalof, 98967}, // __builtin_s390_vmalof
+ {Intrinsic::s390_vmaloh, 98989}, // __builtin_s390_vmaloh
+ {Intrinsic::s390_vmaob, 99011}, // __builtin_s390_vmaob
+ {Intrinsic::s390_vmaof, 99032}, // __builtin_s390_vmaof
+ {Intrinsic::s390_vmaoh, 99053}, // __builtin_s390_vmaoh
+ {Intrinsic::s390_vmeb, 99074}, // __builtin_s390_vmeb
+ {Intrinsic::s390_vmef, 99094}, // __builtin_s390_vmef
+ {Intrinsic::s390_vmeh, 99114}, // __builtin_s390_vmeh
+ {Intrinsic::s390_vmhb, 99134}, // __builtin_s390_vmhb
+ {Intrinsic::s390_vmhf, 99154}, // __builtin_s390_vmhf
+ {Intrinsic::s390_vmhh, 99174}, // __builtin_s390_vmhh
+ {Intrinsic::s390_vmleb, 99194}, // __builtin_s390_vmleb
+ {Intrinsic::s390_vmlef, 99215}, // __builtin_s390_vmlef
+ {Intrinsic::s390_vmleh, 99236}, // __builtin_s390_vmleh
+ {Intrinsic::s390_vmlhb, 99257}, // __builtin_s390_vmlhb
+ {Intrinsic::s390_vmlhf, 99278}, // __builtin_s390_vmlhf
+ {Intrinsic::s390_vmlhh, 99299}, // __builtin_s390_vmlhh
+ {Intrinsic::s390_vmlob, 99320}, // __builtin_s390_vmlob
+ {Intrinsic::s390_vmlof, 99341}, // __builtin_s390_vmlof
+ {Intrinsic::s390_vmloh, 99362}, // __builtin_s390_vmloh
+ {Intrinsic::s390_vmob, 99383}, // __builtin_s390_vmob
+ {Intrinsic::s390_vmof, 99403}, // __builtin_s390_vmof
+ {Intrinsic::s390_vmoh, 99423}, // __builtin_s390_vmoh
+ {Intrinsic::s390_vmslg, 99443}, // __builtin_s390_vmslg
+ {Intrinsic::s390_vpdi, 99464}, // __builtin_s390_vpdi
+ {Intrinsic::s390_vperm, 99484}, // __builtin_s390_vperm
+ {Intrinsic::s390_vpklsf, 99505}, // __builtin_s390_vpklsf
+ {Intrinsic::s390_vpklsg, 99527}, // __builtin_s390_vpklsg
+ {Intrinsic::s390_vpklsh, 99549}, // __builtin_s390_vpklsh
+ {Intrinsic::s390_vpksf, 99571}, // __builtin_s390_vpksf
+ {Intrinsic::s390_vpksg, 99592}, // __builtin_s390_vpksg
+ {Intrinsic::s390_vpksh, 99613}, // __builtin_s390_vpksh
+ {Intrinsic::s390_vsbcbiq, 99634}, // __builtin_s390_vsbcbiq
+ {Intrinsic::s390_vsbiq, 99657}, // __builtin_s390_vsbiq
+ {Intrinsic::s390_vscbib, 99678}, // __builtin_s390_vscbib
+ {Intrinsic::s390_vscbif, 99700}, // __builtin_s390_vscbif
+ {Intrinsic::s390_vscbig, 99722}, // __builtin_s390_vscbig
+ {Intrinsic::s390_vscbih, 99744}, // __builtin_s390_vscbih
+ {Intrinsic::s390_vscbiq, 99766}, // __builtin_s390_vscbiq
+ {Intrinsic::s390_vsl, 99788}, // __builtin_s390_vsl
+ {Intrinsic::s390_vslb, 99807}, // __builtin_s390_vslb
+ {Intrinsic::s390_vsldb, 99827}, // __builtin_s390_vsldb
+ {Intrinsic::s390_vsq, 99848}, // __builtin_s390_vsq
+ {Intrinsic::s390_vsra, 99867}, // __builtin_s390_vsra
+ {Intrinsic::s390_vsrab, 99887}, // __builtin_s390_vsrab
+ {Intrinsic::s390_vsrl, 99908}, // __builtin_s390_vsrl
+ {Intrinsic::s390_vsrlb, 99928}, // __builtin_s390_vsrlb
+ {Intrinsic::s390_vstl, 99949}, // __builtin_s390_vstl
+ {Intrinsic::s390_vstrcb, 99969}, // __builtin_s390_vstrcb
+ {Intrinsic::s390_vstrcf, 99991}, // __builtin_s390_vstrcf
+ {Intrinsic::s390_vstrch, 100013}, // __builtin_s390_vstrch
+ {Intrinsic::s390_vstrczb, 100035}, // __builtin_s390_vstrczb
+ {Intrinsic::s390_vstrczf, 100058}, // __builtin_s390_vstrczf
+ {Intrinsic::s390_vstrczh, 100081}, // __builtin_s390_vstrczh
+ {Intrinsic::s390_vstrl, 100104}, // __builtin_s390_vstrl
+ {Intrinsic::s390_vsumb, 100125}, // __builtin_s390_vsumb
+ {Intrinsic::s390_vsumgf, 100146}, // __builtin_s390_vsumgf
+ {Intrinsic::s390_vsumgh, 100168}, // __builtin_s390_vsumgh
+ {Intrinsic::s390_vsumh, 100190}, // __builtin_s390_vsumh
+ {Intrinsic::s390_vsumqf, 100211}, // __builtin_s390_vsumqf
+ {Intrinsic::s390_vsumqg, 100233}, // __builtin_s390_vsumqg
+ {Intrinsic::s390_vtm, 100255}, // __builtin_s390_vtm
+ {Intrinsic::s390_vuphb, 100274}, // __builtin_s390_vuphb
+ {Intrinsic::s390_vuphf, 100295}, // __builtin_s390_vuphf
+ {Intrinsic::s390_vuphh, 100316}, // __builtin_s390_vuphh
+ {Intrinsic::s390_vuplb, 100337}, // __builtin_s390_vuplb
+ {Intrinsic::s390_vuplf, 100358}, // __builtin_s390_vuplf
+ {Intrinsic::s390_vuplhb, 100379}, // __builtin_s390_vuplhb
+ {Intrinsic::s390_vuplhf, 100401}, // __builtin_s390_vuplhf
+ {Intrinsic::s390_vuplhh, 100423}, // __builtin_s390_vuplhh
+ {Intrinsic::s390_vuplhw, 100445}, // __builtin_s390_vuplhw
+ {Intrinsic::s390_vupllb, 100467}, // __builtin_s390_vupllb
+ {Intrinsic::s390_vupllf, 100489}, // __builtin_s390_vupllf
+ {Intrinsic::s390_vupllh, 100511}, // __builtin_s390_vupllh
+ {Intrinsic::s390_tend, 95643}, // __builtin_tend
+ {Intrinsic::s390_ppa_txassist, 97308}, // __builtin_tx_assist
+ {Intrinsic::s390_etnd, 97261}, // __builtin_tx_nesting_depth
};
auto I = std::lower_bound(std::begin(s390Names),
std::end(s390Names),
@@ -28617,1180 +28511,979 @@
}
if (TargetPrefix == "x86") {
static const BuiltinEntry x86Names[] = {
- {Intrinsic::x86_avx512_add_pd_512, 103225}, // __builtin_ia32_addpd512
- {Intrinsic::x86_avx512_add_ps_512, 103249}, // __builtin_ia32_addps512
- {Intrinsic::x86_avx512_mask_add_sd_round, 104823}, // __builtin_ia32_addsd_round_mask
- {Intrinsic::x86_avx512_mask_add_ss_round, 104855}, // __builtin_ia32_addss_round_mask
- {Intrinsic::x86_sse3_addsub_pd, 127076}, // __builtin_ia32_addsubpd
- {Intrinsic::x86_avx_addsub_pd_256, 99765}, // __builtin_ia32_addsubpd256
- {Intrinsic::x86_sse3_addsub_ps, 127100}, // __builtin_ia32_addsubps
- {Intrinsic::x86_avx_addsub_ps_256, 99792}, // __builtin_ia32_addsubps256
- {Intrinsic::x86_aesni_aesdec, 99382}, // __builtin_ia32_aesdec128
- {Intrinsic::x86_aesni_aesdec_256, 99407}, // __builtin_ia32_aesdec256
- {Intrinsic::x86_aesni_aesdec_512, 99432}, // __builtin_ia32_aesdec512
- {Intrinsic::x86_aesni_aesdeclast, 99457}, // __builtin_ia32_aesdeclast128
- {Intrinsic::x86_aesni_aesdeclast_256, 99486}, // __builtin_ia32_aesdeclast256
- {Intrinsic::x86_aesni_aesdeclast_512, 99515}, // __builtin_ia32_aesdeclast512
- {Intrinsic::x86_aesni_aesenc, 99544}, // __builtin_ia32_aesenc128
- {Intrinsic::x86_aesni_aesenc_256, 99569}, // __builtin_ia32_aesenc256
- {Intrinsic::x86_aesni_aesenc_512, 99594}, // __builtin_ia32_aesenc512
- {Intrinsic::x86_aesni_aesenclast, 99619}, // __builtin_ia32_aesenclast128
- {Intrinsic::x86_aesni_aesenclast_256, 99648}, // __builtin_ia32_aesenclast256
- {Intrinsic::x86_aesni_aesenclast_512, 99677}, // __builtin_ia32_aesenclast512
- {Intrinsic::x86_aesni_aesimc, 99706}, // __builtin_ia32_aesimc128
- {Intrinsic::x86_aesni_aeskeygenassist, 99731}, // __builtin_ia32_aeskeygenassist128
- {Intrinsic::x86_bmi_bextr_32, 121738}, // __builtin_ia32_bextr_u32
- {Intrinsic::x86_bmi_bextr_64, 121763}, // __builtin_ia32_bextr_u64
- {Intrinsic::x86_tbm_bextri_u32, 128895}, // __builtin_ia32_bextri_u32
- {Intrinsic::x86_tbm_bextri_u64, 128921}, // __builtin_ia32_bextri_u64
- {Intrinsic::x86_sse41_blendvpd, 127277}, // __builtin_ia32_blendvpd
- {Intrinsic::x86_avx_blendv_pd_256, 99819}, // __builtin_ia32_blendvpd256
- {Intrinsic::x86_sse41_blendvps, 127301}, // __builtin_ia32_blendvps
- {Intrinsic::x86_avx_blendv_ps_256, 99846}, // __builtin_ia32_blendvps256
- {Intrinsic::x86_avx512_broadcastmb_128, 103273}, // __builtin_ia32_broadcastmb128
- {Intrinsic::x86_avx512_broadcastmb_256, 103303}, // __builtin_ia32_broadcastmb256
- {Intrinsic::x86_avx512_broadcastmb_512, 103333}, // __builtin_ia32_broadcastmb512
- {Intrinsic::x86_avx512_broadcastmw_128, 103363}, // __builtin_ia32_broadcastmw128
- {Intrinsic::x86_avx512_broadcastmw_256, 103393}, // __builtin_ia32_broadcastmw256
- {Intrinsic::x86_avx512_broadcastmw_512, 103423}, // __builtin_ia32_broadcastmw512
- {Intrinsic::x86_bmi_bzhi_64, 121811}, // __builtin_ia32_bzhi_di
- {Intrinsic::x86_bmi_bzhi_32, 121788}, // __builtin_ia32_bzhi_si
- {Intrinsic::x86_cldemote, 121926}, // __builtin_ia32_cldemote
- {Intrinsic::x86_sse2_clflush, 125587}, // __builtin_ia32_clflush
- {Intrinsic::x86_clflushopt, 121950}, // __builtin_ia32_clflushopt
- {Intrinsic::x86_clrssbsy, 121976}, // __builtin_ia32_clrssbsy
- {Intrinsic::x86_clwb, 122000}, // __builtin_ia32_clwb
- {Intrinsic::x86_clzero, 122020}, // __builtin_ia32_clzero
- {Intrinsic::x86_sse2_cmp_sd, 125610}, // __builtin_ia32_cmpsd
- {Intrinsic::x86_avx512_mask_cmp_sd, 104887}, // __builtin_ia32_cmpsd_mask
- {Intrinsic::x86_sse_cmp_ss, 124806}, // __builtin_ia32_cmpss
- {Intrinsic::x86_avx512_mask_cmp_ss, 104913}, // __builtin_ia32_cmpss_mask
- {Intrinsic::x86_sse_comieq_ss, 124827}, // __builtin_ia32_comieq
- {Intrinsic::x86_sse_comige_ss, 124849}, // __builtin_ia32_comige
- {Intrinsic::x86_sse_comigt_ss, 124871}, // __builtin_ia32_comigt
- {Intrinsic::x86_sse_comile_ss, 124893}, // __builtin_ia32_comile
- {Intrinsic::x86_sse_comilt_ss, 124915}, // __builtin_ia32_comilt
- {Intrinsic::x86_sse_comineq_ss, 124937}, // __builtin_ia32_comineq
- {Intrinsic::x86_sse2_comieq_sd, 125631}, // __builtin_ia32_comisdeq
- {Intrinsic::x86_sse2_comige_sd, 125655}, // __builtin_ia32_comisdge
- {Intrinsic::x86_sse2_comigt_sd, 125679}, // __builtin_ia32_comisdgt
- {Intrinsic::x86_sse2_comile_sd, 125703}, // __builtin_ia32_comisdle
- {Intrinsic::x86_sse2_comilt_sd, 125727}, // __builtin_ia32_comisdlt
- {Intrinsic::x86_sse2_comineq_sd, 125751}, // __builtin_ia32_comisdneq
- {Intrinsic::x86_avx512_mask_compress_pd_128, 105143}, // __builtin_ia32_compressdf128_mask
- {Intrinsic::x86_avx512_mask_compress_pd_256, 105177}, // __builtin_ia32_compressdf256_mask
- {Intrinsic::x86_avx512_mask_compress_pd_512, 105211}, // __builtin_ia32_compressdf512_mask
- {Intrinsic::x86_avx512_mask_compress_q_128, 105347}, // __builtin_ia32_compressdi128_mask
- {Intrinsic::x86_avx512_mask_compress_q_256, 105381}, // __builtin_ia32_compressdi256_mask
- {Intrinsic::x86_avx512_mask_compress_q_512, 105415}, // __builtin_ia32_compressdi512_mask
- {Intrinsic::x86_avx512_mask_compress_w_128, 105449}, // __builtin_ia32_compresshi128_mask
- {Intrinsic::x86_avx512_mask_compress_w_256, 105483}, // __builtin_ia32_compresshi256_mask
- {Intrinsic::x86_avx512_mask_compress_w_512, 105517}, // __builtin_ia32_compresshi512_mask
- {Intrinsic::x86_avx512_mask_compress_b_128, 104939}, // __builtin_ia32_compressqi128_mask
- {Intrinsic::x86_avx512_mask_compress_b_256, 104973}, // __builtin_ia32_compressqi256_mask
- {Intrinsic::x86_avx512_mask_compress_b_512, 105007}, // __builtin_ia32_compressqi512_mask
- {Intrinsic::x86_avx512_mask_compress_ps_128, 105245}, // __builtin_ia32_compresssf128_mask
- {Intrinsic::x86_avx512_mask_compress_ps_256, 105279}, // __builtin_ia32_compresssf256_mask
- {Intrinsic::x86_avx512_mask_compress_ps_512, 105313}, // __builtin_ia32_compresssf512_mask
- {Intrinsic::x86_avx512_mask_compress_d_128, 105041}, // __builtin_ia32_compresssi128_mask
- {Intrinsic::x86_avx512_mask_compress_d_256, 105075}, // __builtin_ia32_compresssi256_mask
- {Intrinsic::x86_avx512_mask_compress_d_512, 105109}, // __builtin_ia32_compresssi512_mask
- {Intrinsic::x86_sse42_crc32_64_64, 127739}, // __builtin_ia32_crc32di
- {Intrinsic::x86_sse42_crc32_32_16, 127670}, // __builtin_ia32_crc32hi
- {Intrinsic::x86_sse42_crc32_32_8, 127716}, // __builtin_ia32_crc32qi
- {Intrinsic::x86_sse42_crc32_32_32, 127693}, // __builtin_ia32_crc32si
- {Intrinsic::x86_avx512_mask_cvtdq2ps_512, 105773}, // __builtin_ia32_cvtdq2ps512_mask
- {Intrinsic::x86_sse2_cvtpd2dq, 125776}, // __builtin_ia32_cvtpd2dq
- {Intrinsic::x86_avx512_mask_cvtpd2dq_128, 105805}, // __builtin_ia32_cvtpd2dq128_mask
- {Intrinsic::x86_avx_cvt_pd2dq_256, 99900}, // __builtin_ia32_cvtpd2dq256
- {Intrinsic::x86_avx512_mask_cvtpd2dq_512, 105837}, // __builtin_ia32_cvtpd2dq512_mask
- {Intrinsic::x86_sse_cvtpd2pi, 124960}, // __builtin_ia32_cvtpd2pi
- {Intrinsic::x86_sse2_cvtpd2ps, 125800}, // __builtin_ia32_cvtpd2ps
- {Intrinsic::x86_avx_cvt_pd2_ps_256, 99873}, // __builtin_ia32_cvtpd2ps256
- {Intrinsic::x86_avx512_mask_cvtpd2ps_512, 105898}, // __builtin_ia32_cvtpd2ps512_mask
- {Intrinsic::x86_avx512_mask_cvtpd2ps, 105869}, // __builtin_ia32_cvtpd2ps_mask
- {Intrinsic::x86_avx512_mask_cvtpd2qq_128, 105930}, // __builtin_ia32_cvtpd2qq128_mask
- {Intrinsic::x86_avx512_mask_cvtpd2qq_256, 105962}, // __builtin_ia32_cvtpd2qq256_mask
- {Intrinsic::x86_avx512_mask_cvtpd2qq_512, 105994}, // __builtin_ia32_cvtpd2qq512_mask
- {Intrinsic::x86_avx512_mask_cvtpd2udq_128, 106026}, // __builtin_ia32_cvtpd2udq128_mask
- {Intrinsic::x86_avx512_mask_cvtpd2udq_256, 106059}, // __builtin_ia32_cvtpd2udq256_mask
- {Intrinsic::x86_avx512_mask_cvtpd2udq_512, 106092}, // __builtin_ia32_cvtpd2udq512_mask
- {Intrinsic::x86_avx512_mask_cvtpd2uqq_128, 106125}, // __builtin_ia32_cvtpd2uqq128_mask
- {Intrinsic::x86_avx512_mask_cvtpd2uqq_256, 106158}, // __builtin_ia32_cvtpd2uqq256_mask
- {Intrinsic::x86_avx512_mask_cvtpd2uqq_512, 106191}, // __builtin_ia32_cvtpd2uqq512_mask
- {Intrinsic::x86_sse_cvtpi2pd, 124984}, // __builtin_ia32_cvtpi2pd
- {Intrinsic::x86_sse_cvtpi2ps, 125008}, // __builtin_ia32_cvtpi2ps
- {Intrinsic::x86_sse2_cvtps2dq, 125824}, // __builtin_ia32_cvtps2dq
- {Intrinsic::x86_avx512_mask_cvtps2dq_128, 106224}, // __builtin_ia32_cvtps2dq128_mask
- {Intrinsic::x86_avx_cvt_ps2dq_256, 99927}, // __builtin_ia32_cvtps2dq256
- {Intrinsic::x86_avx512_mask_cvtps2dq_256, 106256}, // __builtin_ia32_cvtps2dq256_mask
- {Intrinsic::x86_avx512_mask_cvtps2dq_512, 106288}, // __builtin_ia32_cvtps2dq512_mask
- {Intrinsic::x86_avx512_mask_cvtps2pd_512, 106320}, // __builtin_ia32_cvtps2pd512_mask
- {Intrinsic::x86_sse_cvtps2pi, 125032}, // __builtin_ia32_cvtps2pi
- {Intrinsic::x86_avx512_mask_cvtps2qq_128, 106352}, // __builtin_ia32_cvtps2qq128_mask
- {Intrinsic::x86_avx512_mask_cvtps2qq_256, 106384}, // __builtin_ia32_cvtps2qq256_mask
- {Intrinsic::x86_avx512_mask_cvtps2qq_512, 106416}, // __builtin_ia32_cvtps2qq512_mask
- {Intrinsic::x86_avx512_mask_cvtps2udq_128, 106448}, // __builtin_ia32_cvtps2udq128_mask
- {Intrinsic::x86_avx512_mask_cvtps2udq_256, 106481}, // __builtin_ia32_cvtps2udq256_mask
- {Intrinsic::x86_avx512_mask_cvtps2udq_512, 106514}, // __builtin_ia32_cvtps2udq512_mask
- {Intrinsic::x86_avx512_mask_cvtps2uqq_128, 106547}, // __builtin_ia32_cvtps2uqq128_mask
- {Intrinsic::x86_avx512_mask_cvtps2uqq_256, 106580}, // __builtin_ia32_cvtps2uqq256_mask
- {Intrinsic::x86_avx512_mask_cvtps2uqq_512, 106613}, // __builtin_ia32_cvtps2uqq512_mask
- {Intrinsic::x86_avx512_mask_cvtqq2pd_512, 106646}, // __builtin_ia32_cvtqq2pd512_mask
- {Intrinsic::x86_avx512_mask_cvtqq2ps_128, 106678}, // __builtin_ia32_cvtqq2ps128_mask
- {Intrinsic::x86_avx512_mask_cvtqq2ps_256, 106710}, // __builtin_ia32_cvtqq2ps256_mask
- {Intrinsic::x86_avx512_mask_cvtqq2ps_512, 106742}, // __builtin_ia32_cvtqq2ps512_mask
- {Intrinsic::x86_sse2_cvtsd2si, 125848}, // __builtin_ia32_cvtsd2si
- {Intrinsic::x86_sse2_cvtsd2si64, 125872}, // __builtin_ia32_cvtsd2si64
- {Intrinsic::x86_sse2_cvtsd2ss, 125898}, // __builtin_ia32_cvtsd2ss
- {Intrinsic::x86_avx512_mask_cvtsd2ss_round, 106774}, // __builtin_ia32_cvtsd2ss_round_mask
- {Intrinsic::x86_avx512_cvtsi2sd64, 103453}, // __builtin_ia32_cvtsi2sd64
- {Intrinsic::x86_avx512_cvtsi2ss32, 103479}, // __builtin_ia32_cvtsi2ss32
- {Intrinsic::x86_avx512_cvtsi2ss64, 103505}, // __builtin_ia32_cvtsi2ss64
- {Intrinsic::x86_avx512_mask_cvtss2sd_round, 106809}, // __builtin_ia32_cvtss2sd_round_mask
- {Intrinsic::x86_sse_cvtss2si, 125056}, // __builtin_ia32_cvtss2si
- {Intrinsic::x86_sse_cvtss2si64, 125080}, // __builtin_ia32_cvtss2si64
- {Intrinsic::x86_sse2_cvttpd2dq, 125922}, // __builtin_ia32_cvttpd2dq
- {Intrinsic::x86_avx512_mask_cvttpd2dq_128, 106844}, // __builtin_ia32_cvttpd2dq128_mask
- {Intrinsic::x86_avx_cvtt_pd2dq_256, 99954}, // __builtin_ia32_cvttpd2dq256
- {Intrinsic::x86_avx512_mask_cvttpd2dq_512, 106877}, // __builtin_ia32_cvttpd2dq512_mask
- {Intrinsic::x86_sse_cvttpd2pi, 125106}, // __builtin_ia32_cvttpd2pi
- {Intrinsic::x86_avx512_mask_cvttpd2qq_128, 106910}, // __builtin_ia32_cvttpd2qq128_mask
- {Intrinsic::x86_avx512_mask_cvttpd2qq_256, 106943}, // __builtin_ia32_cvttpd2qq256_mask
- {Intrinsic::x86_avx512_mask_cvttpd2qq_512, 106976}, // __builtin_ia32_cvttpd2qq512_mask
- {Intrinsic::x86_avx512_mask_cvttpd2udq_128, 107009}, // __builtin_ia32_cvttpd2udq128_mask
- {Intrinsic::x86_avx512_mask_cvttpd2udq_256, 107043}, // __builtin_ia32_cvttpd2udq256_mask
- {Intrinsic::x86_avx512_mask_cvttpd2udq_512, 107077}, // __builtin_ia32_cvttpd2udq512_mask
- {Intrinsic::x86_avx512_mask_cvttpd2uqq_128, 107111}, // __builtin_ia32_cvttpd2uqq128_mask
- {Intrinsic::x86_avx512_mask_cvttpd2uqq_256, 107145}, // __builtin_ia32_cvttpd2uqq256_mask
- {Intrinsic::x86_avx512_mask_cvttpd2uqq_512, 107179}, // __builtin_ia32_cvttpd2uqq512_mask
- {Intrinsic::x86_sse2_cvttps2dq, 125947}, // __builtin_ia32_cvttps2dq
- {Intrinsic::x86_avx_cvtt_ps2dq_256, 99982}, // __builtin_ia32_cvttps2dq256
- {Intrinsic::x86_avx512_mask_cvttps2dq_512, 107213}, // __builtin_ia32_cvttps2dq512_mask
- {Intrinsic::x86_sse_cvttps2pi, 125131}, // __builtin_ia32_cvttps2pi
- {Intrinsic::x86_avx512_mask_cvttps2qq_128, 107246}, // __builtin_ia32_cvttps2qq128_mask
- {Intrinsic::x86_avx512_mask_cvttps2qq_256, 107279}, // __builtin_ia32_cvttps2qq256_mask
- {Intrinsic::x86_avx512_mask_cvttps2qq_512, 107312}, // __builtin_ia32_cvttps2qq512_mask
- {Intrinsic::x86_avx512_mask_cvttps2udq_128, 107345}, // __builtin_ia32_cvttps2udq128_mask
- {Intrinsic::x86_avx512_mask_cvttps2udq_256, 107379}, // __builtin_ia32_cvttps2udq256_mask
- {Intrinsic::x86_avx512_mask_cvttps2udq_512, 107413}, // __builtin_ia32_cvttps2udq512_mask
- {Intrinsic::x86_avx512_mask_cvttps2uqq_128, 107447}, // __builtin_ia32_cvttps2uqq128_mask
- {Intrinsic::x86_avx512_mask_cvttps2uqq_256, 107481}, // __builtin_ia32_cvttps2uqq256_mask
- {Intrinsic::x86_avx512_mask_cvttps2uqq_512, 107515}, // __builtin_ia32_cvttps2uqq512_mask
- {Intrinsic::x86_sse2_cvttsd2si, 125972}, // __builtin_ia32_cvttsd2si
- {Intrinsic::x86_sse2_cvttsd2si64, 125997}, // __builtin_ia32_cvttsd2si64
- {Intrinsic::x86_sse_cvttss2si, 125156}, // __builtin_ia32_cvttss2si
- {Intrinsic::x86_sse_cvttss2si64, 125181}, // __builtin_ia32_cvttss2si64
- {Intrinsic::x86_avx512_mask_cvtudq2ps_512, 107549}, // __builtin_ia32_cvtudq2ps512_mask
- {Intrinsic::x86_avx512_mask_cvtuqq2pd_512, 107582}, // __builtin_ia32_cvtuqq2pd512_mask
- {Intrinsic::x86_avx512_mask_cvtuqq2ps_128, 107615}, // __builtin_ia32_cvtuqq2ps128_mask
- {Intrinsic::x86_avx512_mask_cvtuqq2ps_256, 107648}, // __builtin_ia32_cvtuqq2ps256_mask
- {Intrinsic::x86_avx512_mask_cvtuqq2ps_512, 107681}, // __builtin_ia32_cvtuqq2ps512_mask
- {Intrinsic::x86_avx512_cvtusi642sd, 103786}, // __builtin_ia32_cvtusi2sd64
- {Intrinsic::x86_avx512_cvtusi2ss, 103759}, // __builtin_ia32_cvtusi2ss32
- {Intrinsic::x86_avx512_cvtusi642ss, 103813}, // __builtin_ia32_cvtusi2ss64
- {Intrinsic::x86_avx512_dbpsadbw_128, 103840}, // __builtin_ia32_dbpsadbw128
- {Intrinsic::x86_avx512_dbpsadbw_256, 103867}, // __builtin_ia32_dbpsadbw256
- {Intrinsic::x86_avx512_dbpsadbw_512, 103894}, // __builtin_ia32_dbpsadbw512
- {Intrinsic::x86_directstore32, 122042}, // __builtin_ia32_directstore_u32
- {Intrinsic::x86_directstore64, 122073}, // __builtin_ia32_directstore_u64
- {Intrinsic::x86_avx512_div_pd_512, 103921}, // __builtin_ia32_divpd512
- {Intrinsic::x86_avx512_div_ps_512, 103945}, // __builtin_ia32_divps512
- {Intrinsic::x86_avx512_mask_div_sd_round, 107714}, // __builtin_ia32_divsd_round_mask
- {Intrinsic::x86_avx512_mask_div_ss_round, 107746}, // __builtin_ia32_divss_round_mask
- {Intrinsic::x86_sse41_dppd, 127325}, // __builtin_ia32_dppd
- {Intrinsic::x86_sse41_dpps, 127345}, // __builtin_ia32_dpps
- {Intrinsic::x86_avx_dp_ps_256, 100010}, // __builtin_ia32_dpps256
- {Intrinsic::x86_mmx_emms, 122507}, // __builtin_ia32_emms
- {Intrinsic::x86_avx512_exp2_pd, 103969}, // __builtin_ia32_exp2pd_mask
- {Intrinsic::x86_avx512_exp2_ps, 103996}, // __builtin_ia32_exp2ps_mask
- {Intrinsic::x86_avx512_mask_expand_pd_128, 107970}, // __builtin_ia32_expanddf128_mask
- {Intrinsic::x86_avx512_mask_expand_pd_256, 108002}, // __builtin_ia32_expanddf256_mask
- {Intrinsic::x86_avx512_mask_expand_pd_512, 108034}, // __builtin_ia32_expanddf512_mask
- {Intrinsic::x86_avx512_mask_expand_q_128, 108162}, // __builtin_ia32_expanddi128_mask
- {Intrinsic::x86_avx512_mask_expand_q_256, 108194}, // __builtin_ia32_expanddi256_mask
- {Intrinsic::x86_avx512_mask_expand_q_512, 108226}, // __builtin_ia32_expanddi512_mask
- {Intrinsic::x86_avx512_mask_expand_w_128, 108258}, // __builtin_ia32_expandhi128_mask
- {Intrinsic::x86_avx512_mask_expand_w_256, 108290}, // __builtin_ia32_expandhi256_mask
- {Intrinsic::x86_avx512_mask_expand_w_512, 108322}, // __builtin_ia32_expandhi512_mask
- {Intrinsic::x86_avx512_mask_expand_b_128, 107778}, // __builtin_ia32_expandqi128_mask
- {Intrinsic::x86_avx512_mask_expand_b_256, 107810}, // __builtin_ia32_expandqi256_mask
- {Intrinsic::x86_avx512_mask_expand_b_512, 107842}, // __builtin_ia32_expandqi512_mask
- {Intrinsic::x86_avx512_mask_expand_ps_128, 108066}, // __builtin_ia32_expandsf128_mask
- {Intrinsic::x86_avx512_mask_expand_ps_256, 108098}, // __builtin_ia32_expandsf256_mask
- {Intrinsic::x86_avx512_mask_expand_ps_512, 108130}, // __builtin_ia32_expandsf512_mask
- {Intrinsic::x86_avx512_mask_expand_d_128, 107874}, // __builtin_ia32_expandsi128_mask
- {Intrinsic::x86_avx512_mask_expand_d_256, 107906}, // __builtin_ia32_expandsi256_mask
- {Intrinsic::x86_avx512_mask_expand_d_512, 107938}, // __builtin_ia32_expandsi512_mask
- {Intrinsic::x86_sse4a_extrq, 128164}, // __builtin_ia32_extrq
- {Intrinsic::x86_sse4a_extrqi, 128185}, // __builtin_ia32_extrqi
- {Intrinsic::x86_mmx_femms, 122527}, // __builtin_ia32_femms
- {Intrinsic::x86_avx512_mask_fixupimm_pd_128, 108354}, // __builtin_ia32_fixupimmpd128_mask
- {Intrinsic::x86_avx512_maskz_fixupimm_pd_128, 114812}, // __builtin_ia32_fixupimmpd128_maskz
- {Intrinsic::x86_avx512_mask_fixupimm_pd_256, 108388}, // __builtin_ia32_fixupimmpd256_mask
- {Intrinsic::x86_avx512_maskz_fixupimm_pd_256, 114847}, // __builtin_ia32_fixupimmpd256_maskz
- {Intrinsic::x86_avx512_mask_fixupimm_pd_512, 108422}, // __builtin_ia32_fixupimmpd512_mask
- {Intrinsic::x86_avx512_maskz_fixupimm_pd_512, 114882}, // __builtin_ia32_fixupimmpd512_maskz
- {Intrinsic::x86_avx512_mask_fixupimm_ps_128, 108456}, // __builtin_ia32_fixupimmps128_mask
- {Intrinsic::x86_avx512_maskz_fixupimm_ps_128, 114917}, // __builtin_ia32_fixupimmps128_maskz
- {Intrinsic::x86_avx512_mask_fixupimm_ps_256, 108490}, // __builtin_ia32_fixupimmps256_mask
- {Intrinsic::x86_avx512_maskz_fixupimm_ps_256, 114952}, // __builtin_ia32_fixupimmps256_maskz
- {Intrinsic::x86_avx512_mask_fixupimm_ps_512, 108524}, // __builtin_ia32_fixupimmps512_mask
- {Intrinsic::x86_avx512_maskz_fixupimm_ps_512, 114987}, // __builtin_ia32_fixupimmps512_maskz
- {Intrinsic::x86_avx512_mask_fixupimm_sd, 108558}, // __builtin_ia32_fixupimmsd_mask
- {Intrinsic::x86_avx512_maskz_fixupimm_sd, 115022}, // __builtin_ia32_fixupimmsd_maskz
- {Intrinsic::x86_avx512_mask_fixupimm_ss, 108589}, // __builtin_ia32_fixupimmss_mask
- {Intrinsic::x86_avx512_maskz_fixupimm_ss, 115054}, // __builtin_ia32_fixupimmss_maskz
- {Intrinsic::x86_avx512_mask_fpclass_sd, 108620}, // __builtin_ia32_fpclasssd_mask
- {Intrinsic::x86_avx512_mask_fpclass_ss, 108650}, // __builtin_ia32_fpclassss_mask
- {Intrinsic::x86_fxrstor, 122226}, // __builtin_ia32_fxrstor
- {Intrinsic::x86_fxrstor64, 122249}, // __builtin_ia32_fxrstor64
- {Intrinsic::x86_fxsave, 122274}, // __builtin_ia32_fxsave
- {Intrinsic::x86_fxsave64, 122296}, // __builtin_ia32_fxsave64
- {Intrinsic::x86_avx512_gather3div2_df, 104251}, // __builtin_ia32_gather3div2df
- {Intrinsic::x86_avx512_gather3div2_di, 104280}, // __builtin_ia32_gather3div2di
- {Intrinsic::x86_avx512_gather3div4_df, 104309}, // __builtin_ia32_gather3div4df
- {Intrinsic::x86_avx512_gather3div4_di, 104338}, // __builtin_ia32_gather3div4di
- {Intrinsic::x86_avx512_gather3div4_sf, 104367}, // __builtin_ia32_gather3div4sf
- {Intrinsic::x86_avx512_gather3div4_si, 104396}, // __builtin_ia32_gather3div4si
- {Intrinsic::x86_avx512_gather3div8_sf, 104425}, // __builtin_ia32_gather3div8sf
- {Intrinsic::x86_avx512_gather3div8_si, 104454}, // __builtin_ia32_gather3div8si
- {Intrinsic::x86_avx512_gather3siv2_df, 104483}, // __builtin_ia32_gather3siv2df
- {Intrinsic::x86_avx512_gather3siv2_di, 104512}, // __builtin_ia32_gather3siv2di
- {Intrinsic::x86_avx512_gather3siv4_df, 104541}, // __builtin_ia32_gather3siv4df
- {Intrinsic::x86_avx512_gather3siv4_di, 104570}, // __builtin_ia32_gather3siv4di
- {Intrinsic::x86_avx512_gather3siv4_sf, 104599}, // __builtin_ia32_gather3siv4sf
- {Intrinsic::x86_avx512_gather3siv4_si, 104628}, // __builtin_ia32_gather3siv4si
- {Intrinsic::x86_avx512_gather3siv8_sf, 104657}, // __builtin_ia32_gather3siv8sf
- {Intrinsic::x86_avx512_gather3siv8_si, 104686}, // __builtin_ia32_gather3siv8si
- {Intrinsic::x86_avx2_gather_d_d, 101192}, // __builtin_ia32_gatherd_d
- {Intrinsic::x86_avx2_gather_d_d_256, 101217}, // __builtin_ia32_gatherd_d256
- {Intrinsic::x86_avx2_gather_d_pd, 101245}, // __builtin_ia32_gatherd_pd
- {Intrinsic::x86_avx2_gather_d_pd_256, 101271}, // __builtin_ia32_gatherd_pd256
- {Intrinsic::x86_avx2_gather_d_ps, 101300}, // __builtin_ia32_gatherd_ps
- {Intrinsic::x86_avx2_gather_d_ps_256, 101326}, // __builtin_ia32_gatherd_ps256
- {Intrinsic::x86_avx2_gather_d_q, 101355}, // __builtin_ia32_gatherd_q
- {Intrinsic::x86_avx2_gather_d_q_256, 101380}, // __builtin_ia32_gatherd_q256
- {Intrinsic::x86_avx512_gather_qps_512, 104222}, // __builtin_ia32_gatherdiv16sf
- {Intrinsic::x86_avx512_gather_qpi_512, 104165}, // __builtin_ia32_gatherdiv16si
- {Intrinsic::x86_avx512_gather_qpd_512, 104137}, // __builtin_ia32_gatherdiv8df
- {Intrinsic::x86_avx512_gather_qpq_512, 104194}, // __builtin_ia32_gatherdiv8di
- {Intrinsic::x86_avx512_gatherpf_dpd_512, 104715}, // __builtin_ia32_gatherpfdpd
- {Intrinsic::x86_avx512_gatherpf_dps_512, 104742}, // __builtin_ia32_gatherpfdps
- {Intrinsic::x86_avx512_gatherpf_qpd_512, 104769}, // __builtin_ia32_gatherpfqpd
- {Intrinsic::x86_avx512_gatherpf_qps_512, 104796}, // __builtin_ia32_gatherpfqps
- {Intrinsic::x86_avx2_gather_q_d, 101408}, // __builtin_ia32_gatherq_d
- {Intrinsic::x86_avx2_gather_q_d_256, 101433}, // __builtin_ia32_gatherq_d256
- {Intrinsic::x86_avx2_gather_q_pd, 101461}, // __builtin_ia32_gatherq_pd
- {Intrinsic::x86_avx2_gather_q_pd_256, 101487}, // __builtin_ia32_gatherq_pd256
- {Intrinsic::x86_avx2_gather_q_ps, 101516}, // __builtin_ia32_gatherq_ps
- {Intrinsic::x86_avx2_gather_q_ps_256, 101542}, // __builtin_ia32_gatherq_ps256
- {Intrinsic::x86_avx2_gather_q_q, 101571}, // __builtin_ia32_gatherq_q
- {Intrinsic::x86_avx2_gather_q_q_256, 101596}, // __builtin_ia32_gatherq_q256
- {Intrinsic::x86_avx512_gather_dps_512, 104108}, // __builtin_ia32_gathersiv16sf
- {Intrinsic::x86_avx512_gather_dpi_512, 104051}, // __builtin_ia32_gathersiv16si
- {Intrinsic::x86_avx512_gather_dpd_512, 104023}, // __builtin_ia32_gathersiv8df
- {Intrinsic::x86_avx512_gather_dpq_512, 104080}, // __builtin_ia32_gathersiv8di
- {Intrinsic::x86_avx512_mask_getexp_pd_128, 108680}, // __builtin_ia32_getexppd128_mask
- {Intrinsic::x86_avx512_mask_getexp_pd_256, 108712}, // __builtin_ia32_getexppd256_mask
- {Intrinsic::x86_avx512_mask_getexp_pd_512, 108744}, // __builtin_ia32_getexppd512_mask
- {Intrinsic::x86_avx512_mask_getexp_ps_128, 108776}, // __builtin_ia32_getexpps128_mask
- {Intrinsic::x86_avx512_mask_getexp_ps_256, 108808}, // __builtin_ia32_getexpps256_mask
- {Intrinsic::x86_avx512_mask_getexp_ps_512, 108840}, // __builtin_ia32_getexpps512_mask
- {Intrinsic::x86_avx512_mask_getexp_sd, 108872}, // __builtin_ia32_getexpsd128_round_mask
- {Intrinsic::x86_avx512_mask_getexp_ss, 108910}, // __builtin_ia32_getexpss128_round_mask
- {Intrinsic::x86_avx512_mask_getmant_pd_128, 108948}, // __builtin_ia32_getmantpd128_mask
- {Intrinsic::x86_avx512_mask_getmant_pd_256, 108981}, // __builtin_ia32_getmantpd256_mask
- {Intrinsic::x86_avx512_mask_getmant_pd_512, 109014}, // __builtin_ia32_getmantpd512_mask
- {Intrinsic::x86_avx512_mask_getmant_ps_128, 109047}, // __builtin_ia32_getmantps128_mask
- {Intrinsic::x86_avx512_mask_getmant_ps_256, 109080}, // __builtin_ia32_getmantps256_mask
- {Intrinsic::x86_avx512_mask_getmant_ps_512, 109113}, // __builtin_ia32_getmantps512_mask
- {Intrinsic::x86_avx512_mask_getmant_sd, 109146}, // __builtin_ia32_getmantsd_round_mask
- {Intrinsic::x86_avx512_mask_getmant_ss, 109182}, // __builtin_ia32_getmantss_round_mask
- {Intrinsic::x86_sse3_hadd_pd, 127124}, // __builtin_ia32_haddpd
- {Intrinsic::x86_avx_hadd_pd_256, 100033}, // __builtin_ia32_haddpd256
- {Intrinsic::x86_sse3_hadd_ps, 127146}, // __builtin_ia32_haddps
- {Intrinsic::x86_avx_hadd_ps_256, 100058}, // __builtin_ia32_haddps256
- {Intrinsic::x86_sse3_hsub_pd, 127168}, // __builtin_ia32_hsubpd
- {Intrinsic::x86_avx_hsub_pd_256, 100083}, // __builtin_ia32_hsubpd256
- {Intrinsic::x86_sse3_hsub_ps, 127190}, // __builtin_ia32_hsubps
- {Intrinsic::x86_avx_hsub_ps_256, 100108}, // __builtin_ia32_hsubps256
- {Intrinsic::x86_incsspd, 122320}, // __builtin_ia32_incsspd
- {Intrinsic::x86_incsspq, 122343}, // __builtin_ia32_incsspq
- {Intrinsic::x86_sse41_insertps, 127365}, // __builtin_ia32_insertps128
- {Intrinsic::x86_sse4a_insertq, 128207}, // __builtin_ia32_insertq
- {Intrinsic::x86_sse4a_insertqi, 128230}, // __builtin_ia32_insertqi
- {Intrinsic::x86_invpcid, 122366}, // __builtin_ia32_invpcid
- {Intrinsic::x86_sse3_ldu_dq, 127212}, // __builtin_ia32_lddqu
- {Intrinsic::x86_avx_ldu_dq_256, 100133}, // __builtin_ia32_lddqu256
- {Intrinsic::x86_sse2_lfence, 126024}, // __builtin_ia32_lfence
- {Intrinsic::x86_llwpcb, 122389}, // __builtin_ia32_llwpcb
- {Intrinsic::x86_lwpins32, 122411}, // __builtin_ia32_lwpins32
- {Intrinsic::x86_lwpins64, 122435}, // __builtin_ia32_lwpins64
- {Intrinsic::x86_lwpval32, 122459}, // __builtin_ia32_lwpval32
- {Intrinsic::x86_lwpval64, 122483}, // __builtin_ia32_lwpval64
- {Intrinsic::x86_avx2_maskload_d, 101624}, // __builtin_ia32_maskloadd
- {Intrinsic::x86_avx2_maskload_d_256, 101649}, // __builtin_ia32_maskloadd256
- {Intrinsic::x86_avx_maskload_pd, 100157}, // __builtin_ia32_maskloadpd
- {Intrinsic::x86_avx_maskload_pd_256, 100183}, // __builtin_ia32_maskloadpd256
- {Intrinsic::x86_avx_maskload_ps, 100212}, // __builtin_ia32_maskloadps
- {Intrinsic::x86_avx_maskload_ps_256, 100238}, // __builtin_ia32_maskloadps256
- {Intrinsic::x86_avx2_maskload_q, 101677}, // __builtin_ia32_maskloadq
- {Intrinsic::x86_avx2_maskload_q_256, 101702}, // __builtin_ia32_maskloadq256
- {Intrinsic::x86_sse2_maskmov_dqu, 126046}, // __builtin_ia32_maskmovdqu
- {Intrinsic::x86_mmx_maskmovq, 122548}, // __builtin_ia32_maskmovq
- {Intrinsic::x86_avx2_maskstore_d, 101730}, // __builtin_ia32_maskstored
- {Intrinsic::x86_avx2_maskstore_d_256, 101756}, // __builtin_ia32_maskstored256
- {Intrinsic::x86_avx_maskstore_pd, 100267}, // __builtin_ia32_maskstorepd
- {Intrinsic::x86_avx_maskstore_pd_256, 100294}, // __builtin_ia32_maskstorepd256
- {Intrinsic::x86_avx_maskstore_ps, 100324}, // __builtin_ia32_maskstoreps
- {Intrinsic::x86_avx_maskstore_ps_256, 100351}, // __builtin_ia32_maskstoreps256
- {Intrinsic::x86_avx2_maskstore_q, 101785}, // __builtin_ia32_maskstoreq
- {Intrinsic::x86_avx2_maskstore_q_256, 101811}, // __builtin_ia32_maskstoreq256
- {Intrinsic::x86_sse2_max_pd, 126072}, // __builtin_ia32_maxpd
- {Intrinsic::x86_avx_max_pd_256, 100381}, // __builtin_ia32_maxpd256
- {Intrinsic::x86_avx512_max_pd_512, 115680}, // __builtin_ia32_maxpd512
- {Intrinsic::x86_sse_max_ps, 125208}, // __builtin_ia32_maxps
- {Intrinsic::x86_avx_max_ps_256, 100405}, // __builtin_ia32_maxps256
- {Intrinsic::x86_avx512_max_ps_512, 115704}, // __builtin_ia32_maxps512
- {Intrinsic::x86_sse2_max_sd, 126093}, // __builtin_ia32_maxsd
- {Intrinsic::x86_avx512_mask_max_sd_round, 109218}, // __builtin_ia32_maxsd_round_mask
- {Intrinsic::x86_sse_max_ss, 125229}, // __builtin_ia32_maxss
- {Intrinsic::x86_avx512_mask_max_ss_round, 109250}, // __builtin_ia32_maxss_round_mask
- {Intrinsic::x86_sse2_mfence, 126114}, // __builtin_ia32_mfence
- {Intrinsic::x86_sse2_min_pd, 126136}, // __builtin_ia32_minpd
- {Intrinsic::x86_avx_min_pd_256, 100429}, // __builtin_ia32_minpd256
- {Intrinsic::x86_avx512_min_pd_512, 115728}, // __builtin_ia32_minpd512
- {Intrinsic::x86_sse_min_ps, 125250}, // __builtin_ia32_minps
- {Intrinsic::x86_avx_min_ps_256, 100453}, // __builtin_ia32_minps256
- {Intrinsic::x86_avx512_min_ps_512, 115752}, // __builtin_ia32_minps512
- {Intrinsic::x86_sse2_min_sd, 126157}, // __builtin_ia32_minsd
- {Intrinsic::x86_avx512_mask_min_sd_round, 109282}, // __builtin_ia32_minsd_round_mask
- {Intrinsic::x86_sse_min_ss, 125271}, // __builtin_ia32_minss
- {Intrinsic::x86_avx512_mask_min_ss_round, 109314}, // __builtin_ia32_minss_round_mask
- {Intrinsic::x86_sse3_monitor, 127233}, // __builtin_ia32_monitor
- {Intrinsic::x86_monitorx, 124094}, // __builtin_ia32_monitorx
- {Intrinsic::x86_movdir64b, 124118}, // __builtin_ia32_movdir64b
- {Intrinsic::x86_sse2_movmsk_pd, 126178}, // __builtin_ia32_movmskpd
- {Intrinsic::x86_avx_movmsk_pd_256, 100477}, // __builtin_ia32_movmskpd256
- {Intrinsic::x86_sse_movmsk_ps, 125292}, // __builtin_ia32_movmskps
- {Intrinsic::x86_avx_movmsk_ps_256, 100504}, // __builtin_ia32_movmskps256
- {Intrinsic::x86_mmx_movnt_dq, 122572}, // __builtin_ia32_movntq
- {Intrinsic::x86_sse41_mpsadbw, 127392}, // __builtin_ia32_mpsadbw128
- {Intrinsic::x86_avx2_mpsadbw, 101840}, // __builtin_ia32_mpsadbw256
- {Intrinsic::x86_avx512_mul_pd_512, 115776}, // __builtin_ia32_mulpd512
- {Intrinsic::x86_avx512_mul_ps_512, 115800}, // __builtin_ia32_mulps512
- {Intrinsic::x86_avx512_mask_mul_sd_round, 109346}, // __builtin_ia32_mulsd_round_mask
- {Intrinsic::x86_avx512_mask_mul_ss_round, 109378}, // __builtin_ia32_mulss_round_mask
- {Intrinsic::x86_sse3_mwait, 127256}, // __builtin_ia32_mwait
- {Intrinsic::x86_mwaitx, 124143}, // __builtin_ia32_mwaitx
- {Intrinsic::x86_ssse3_pabs_b, 128254}, // __builtin_ia32_pabsb
- {Intrinsic::x86_ssse3_pabs_d, 128275}, // __builtin_ia32_pabsd
- {Intrinsic::x86_ssse3_pabs_w, 128296}, // __builtin_ia32_pabsw
- {Intrinsic::x86_mmx_packssdw, 122594}, // __builtin_ia32_packssdw
- {Intrinsic::x86_sse2_packssdw_128, 126202}, // __builtin_ia32_packssdw128
- {Intrinsic::x86_avx2_packssdw, 101866}, // __builtin_ia32_packssdw256
- {Intrinsic::x86_avx512_packssdw_512, 115824}, // __builtin_ia32_packssdw512
- {Intrinsic::x86_mmx_packsswb, 122618}, // __builtin_ia32_packsswb
- {Intrinsic::x86_sse2_packsswb_128, 126229}, // __builtin_ia32_packsswb128
- {Intrinsic::x86_avx2_packsswb, 101893}, // __builtin_ia32_packsswb256
- {Intrinsic::x86_avx512_packsswb_512, 115851}, // __builtin_ia32_packsswb512
- {Intrinsic::x86_sse41_packusdw, 127418}, // __builtin_ia32_packusdw128
- {Intrinsic::x86_avx2_packusdw, 101920}, // __builtin_ia32_packusdw256
- {Intrinsic::x86_avx512_packusdw_512, 115878}, // __builtin_ia32_packusdw512
- {Intrinsic::x86_mmx_packuswb, 122642}, // __builtin_ia32_packuswb
- {Intrinsic::x86_sse2_packuswb_128, 126256}, // __builtin_ia32_packuswb128
- {Intrinsic::x86_avx2_packuswb, 101947}, // __builtin_ia32_packuswb256
- {Intrinsic::x86_avx512_packuswb_512, 115905}, // __builtin_ia32_packuswb512
- {Intrinsic::x86_mmx_padd_b, 122666}, // __builtin_ia32_paddb
- {Intrinsic::x86_mmx_padd_d, 122687}, // __builtin_ia32_paddd
- {Intrinsic::x86_mmx_padd_q, 122708}, // __builtin_ia32_paddq
- {Intrinsic::x86_mmx_padds_b, 122750}, // __builtin_ia32_paddsb
- {Intrinsic::x86_sse2_padds_b, 126283}, // __builtin_ia32_paddsb128
- {Intrinsic::x86_avx2_padds_b, 101974}, // __builtin_ia32_paddsb256
- {Intrinsic::x86_avx512_padds_b_512, 115932}, // __builtin_ia32_paddsb512
- {Intrinsic::x86_mmx_padds_w, 122772}, // __builtin_ia32_paddsw
- {Intrinsic::x86_sse2_padds_w, 126308}, // __builtin_ia32_paddsw128
- {Intrinsic::x86_avx2_padds_w, 101999}, // __builtin_ia32_paddsw256
- {Intrinsic::x86_avx512_padds_w_512, 115957}, // __builtin_ia32_paddsw512
- {Intrinsic::x86_mmx_paddus_b, 122794}, // __builtin_ia32_paddusb
- {Intrinsic::x86_mmx_paddus_w, 122817}, // __builtin_ia32_paddusw
- {Intrinsic::x86_mmx_padd_w, 122729}, // __builtin_ia32_paddw
- {Intrinsic::x86_mmx_palignr_b, 122840}, // __builtin_ia32_palignr
- {Intrinsic::x86_mmx_pand, 122863}, // __builtin_ia32_pand
- {Intrinsic::x86_mmx_pandn, 122883}, // __builtin_ia32_pandn
- {Intrinsic::x86_sse2_pause, 126333}, // __builtin_ia32_pause
- {Intrinsic::x86_mmx_pavg_b, 122904}, // __builtin_ia32_pavgb
- {Intrinsic::x86_3dnow_pavgusb, 98874}, // __builtin_ia32_pavgusb
- {Intrinsic::x86_mmx_pavg_w, 122925}, // __builtin_ia32_pavgw
- {Intrinsic::x86_sse41_pblendvb, 127445}, // __builtin_ia32_pblendvb128
- {Intrinsic::x86_avx2_pblendvb, 102024}, // __builtin_ia32_pblendvb256
- {Intrinsic::x86_pclmulqdq, 124165}, // __builtin_ia32_pclmulqdq128
- {Intrinsic::x86_pclmulqdq_256, 124193}, // __builtin_ia32_pclmulqdq256
- {Intrinsic::x86_pclmulqdq_512, 124221}, // __builtin_ia32_pclmulqdq512
- {Intrinsic::x86_mmx_pcmpeq_b, 122946}, // __builtin_ia32_pcmpeqb
- {Intrinsic::x86_mmx_pcmpeq_d, 122969}, // __builtin_ia32_pcmpeqd
- {Intrinsic::x86_mmx_pcmpeq_w, 122992}, // __builtin_ia32_pcmpeqw
- {Intrinsic::x86_sse42_pcmpestri128, 127762}, // __builtin_ia32_pcmpestri128
- {Intrinsic::x86_sse42_pcmpestria128, 127790}, // __builtin_ia32_pcmpestria128
- {Intrinsic::x86_sse42_pcmpestric128, 127819}, // __builtin_ia32_pcmpestric128
- {Intrinsic::x86_sse42_pcmpestrio128, 127848}, // __builtin_ia32_pcmpestrio128
- {Intrinsic::x86_sse42_pcmpestris128, 127877}, // __builtin_ia32_pcmpestris128
- {Intrinsic::x86_sse42_pcmpestriz128, 127906}, // __builtin_ia32_pcmpestriz128
- {Intrinsic::x86_sse42_pcmpestrm128, 127935}, // __builtin_ia32_pcmpestrm128
- {Intrinsic::x86_mmx_pcmpgt_b, 123015}, // __builtin_ia32_pcmpgtb
- {Intrinsic::x86_mmx_pcmpgt_d, 123038}, // __builtin_ia32_pcmpgtd
- {Intrinsic::x86_mmx_pcmpgt_w, 123061}, // __builtin_ia32_pcmpgtw
- {Intrinsic::x86_sse42_pcmpistri128, 127963}, // __builtin_ia32_pcmpistri128
- {Intrinsic::x86_sse42_pcmpistria128, 127991}, // __builtin_ia32_pcmpistria128
- {Intrinsic::x86_sse42_pcmpistric128, 128020}, // __builtin_ia32_pcmpistric128
- {Intrinsic::x86_sse42_pcmpistrio128, 128049}, // __builtin_ia32_pcmpistrio128
- {Intrinsic::x86_sse42_pcmpistris128, 128078}, // __builtin_ia32_pcmpistris128
- {Intrinsic::x86_sse42_pcmpistriz128, 128107}, // __builtin_ia32_pcmpistriz128
- {Intrinsic::x86_sse42_pcmpistrm128, 128136}, // __builtin_ia32_pcmpistrm128
- {Intrinsic::x86_bmi_pdep_64, 121857}, // __builtin_ia32_pdep_di
- {Intrinsic::x86_bmi_pdep_32, 121834}, // __builtin_ia32_pdep_si
- {Intrinsic::x86_avx512_permvar_df_256, 115982}, // __builtin_ia32_permvardf256
- {Intrinsic::x86_avx512_permvar_df_512, 116010}, // __builtin_ia32_permvardf512
- {Intrinsic::x86_avx512_permvar_di_256, 116038}, // __builtin_ia32_permvardi256
- {Intrinsic::x86_avx512_permvar_di_512, 116066}, // __builtin_ia32_permvardi512
- {Intrinsic::x86_avx512_permvar_hi_128, 116094}, // __builtin_ia32_permvarhi128
- {Intrinsic::x86_avx512_permvar_hi_256, 116122}, // __builtin_ia32_permvarhi256
- {Intrinsic::x86_avx512_permvar_hi_512, 116150}, // __builtin_ia32_permvarhi512
- {Intrinsic::x86_avx512_permvar_qi_128, 116178}, // __builtin_ia32_permvarqi128
- {Intrinsic::x86_avx512_permvar_qi_256, 116206}, // __builtin_ia32_permvarqi256
- {Intrinsic::x86_avx512_permvar_qi_512, 116234}, // __builtin_ia32_permvarqi512
- {Intrinsic::x86_avx2_permps, 102079}, // __builtin_ia32_permvarsf256
- {Intrinsic::x86_avx512_permvar_sf_512, 116262}, // __builtin_ia32_permvarsf512
- {Intrinsic::x86_avx2_permd, 102051}, // __builtin_ia32_permvarsi256
- {Intrinsic::x86_avx512_permvar_si_512, 116290}, // __builtin_ia32_permvarsi512
- {Intrinsic::x86_bmi_pext_64, 121903}, // __builtin_ia32_pext_di
- {Intrinsic::x86_bmi_pext_32, 121880}, // __builtin_ia32_pext_si
- {Intrinsic::x86_3dnow_pf2id, 98897}, // __builtin_ia32_pf2id
- {Intrinsic::x86_3dnowa_pf2iw, 99295}, // __builtin_ia32_pf2iw
- {Intrinsic::x86_3dnow_pfacc, 98918}, // __builtin_ia32_pfacc
- {Intrinsic::x86_3dnow_pfadd, 98939}, // __builtin_ia32_pfadd
- {Intrinsic::x86_3dnow_pfcmpeq, 98960}, // __builtin_ia32_pfcmpeq
- {Intrinsic::x86_3dnow_pfcmpge, 98983}, // __builtin_ia32_pfcmpge
- {Intrinsic::x86_3dnow_pfcmpgt, 99006}, // __builtin_ia32_pfcmpgt
- {Intrinsic::x86_3dnow_pfmax, 99029}, // __builtin_ia32_pfmax
- {Intrinsic::x86_3dnow_pfmin, 99050}, // __builtin_ia32_pfmin
- {Intrinsic::x86_3dnow_pfmul, 99071}, // __builtin_ia32_pfmul
- {Intrinsic::x86_3dnowa_pfnacc, 99316}, // __builtin_ia32_pfnacc
- {Intrinsic::x86_3dnowa_pfpnacc, 99338}, // __builtin_ia32_pfpnacc
- {Intrinsic::x86_3dnow_pfrcp, 99092}, // __builtin_ia32_pfrcp
- {Intrinsic::x86_3dnow_pfrcpit1, 99113}, // __builtin_ia32_pfrcpit1
- {Intrinsic::x86_3dnow_pfrcpit2, 99137}, // __builtin_ia32_pfrcpit2
- {Intrinsic::x86_3dnow_pfrsqit1, 99161}, // __builtin_ia32_pfrsqit1
- {Intrinsic::x86_3dnow_pfrsqrt, 99185}, // __builtin_ia32_pfrsqrt
- {Intrinsic::x86_3dnow_pfsub, 99208}, // __builtin_ia32_pfsub
- {Intrinsic::x86_3dnow_pfsubr, 99229}, // __builtin_ia32_pfsubr
- {Intrinsic::x86_ssse3_phadd_d, 128317}, // __builtin_ia32_phaddd
- {Intrinsic::x86_ssse3_phadd_d_128, 128339}, // __builtin_ia32_phaddd128
- {Intrinsic::x86_avx2_phadd_d, 102107}, // __builtin_ia32_phaddd256
- {Intrinsic::x86_ssse3_phadd_sw, 128364}, // __builtin_ia32_phaddsw
- {Intrinsic::x86_ssse3_phadd_sw_128, 128387}, // __builtin_ia32_phaddsw128
- {Intrinsic::x86_avx2_phadd_sw, 102132}, // __builtin_ia32_phaddsw256
- {Intrinsic::x86_ssse3_phadd_w, 128413}, // __builtin_ia32_phaddw
- {Intrinsic::x86_ssse3_phadd_w_128, 128435}, // __builtin_ia32_phaddw128
- {Intrinsic::x86_avx2_phadd_w, 102158}, // __builtin_ia32_phaddw256
- {Intrinsic::x86_sse41_phminposuw, 127472}, // __builtin_ia32_phminposuw128
- {Intrinsic::x86_ssse3_phsub_d, 128460}, // __builtin_ia32_phsubd
- {Intrinsic::x86_ssse3_phsub_d_128, 128482}, // __builtin_ia32_phsubd128
- {Intrinsic::x86_avx2_phsub_d, 102183}, // __builtin_ia32_phsubd256
- {Intrinsic::x86_ssse3_phsub_sw, 128507}, // __builtin_ia32_phsubsw
- {Intrinsic::x86_ssse3_phsub_sw_128, 128530}, // __builtin_ia32_phsubsw128
- {Intrinsic::x86_avx2_phsub_sw, 102208}, // __builtin_ia32_phsubsw256
- {Intrinsic::x86_ssse3_phsub_w, 128556}, // __builtin_ia32_phsubw
- {Intrinsic::x86_ssse3_phsub_w_128, 128578}, // __builtin_ia32_phsubw128
- {Intrinsic::x86_avx2_phsub_w, 102234}, // __builtin_ia32_phsubw256
- {Intrinsic::x86_3dnow_pi2fd, 99251}, // __builtin_ia32_pi2fd
- {Intrinsic::x86_3dnowa_pi2fw, 99361}, // __builtin_ia32_pi2fw
- {Intrinsic::x86_ssse3_pmadd_ub_sw, 128603}, // __builtin_ia32_pmaddubsw
- {Intrinsic::x86_ssse3_pmadd_ub_sw_128, 128628}, // __builtin_ia32_pmaddubsw128
- {Intrinsic::x86_avx2_pmadd_ub_sw, 102259}, // __builtin_ia32_pmaddubsw256
- {Intrinsic::x86_avx512_pmaddubs_w_512, 116318}, // __builtin_ia32_pmaddubsw512
- {Intrinsic::x86_mmx_pmadd_wd, 123140}, // __builtin_ia32_pmaddwd
- {Intrinsic::x86_sse2_pmadd_wd, 126354}, // __builtin_ia32_pmaddwd128
- {Intrinsic::x86_avx2_pmadd_wd, 102287}, // __builtin_ia32_pmaddwd256
- {Intrinsic::x86_avx512_pmaddw_d_512, 116346}, // __builtin_ia32_pmaddwd512
- {Intrinsic::x86_mmx_pmaxs_w, 123163}, // __builtin_ia32_pmaxsw
- {Intrinsic::x86_mmx_pmaxu_b, 123185}, // __builtin_ia32_pmaxub
- {Intrinsic::x86_mmx_pmins_w, 123207}, // __builtin_ia32_pminsw
- {Intrinsic::x86_mmx_pminu_b, 123229}, // __builtin_ia32_pminub
- {Intrinsic::x86_avx512_mask_pmov_db_128, 109410}, // __builtin_ia32_pmovdb128_mask
- {Intrinsic::x86_avx512_mask_pmov_db_mem_128, 109470}, // __builtin_ia32_pmovdb128mem_mask
- {Intrinsic::x86_avx512_mask_pmov_db_256, 109440}, // __builtin_ia32_pmovdb256_mask
- {Intrinsic::x86_avx512_mask_pmov_db_mem_256, 109503}, // __builtin_ia32_pmovdb256mem_mask
- {Intrinsic::x86_avx512_mask_pmov_db_mem_512, 109536}, // __builtin_ia32_pmovdb512mem_mask
- {Intrinsic::x86_avx512_mask_pmov_dw_128, 109569}, // __builtin_ia32_pmovdw128_mask
- {Intrinsic::x86_avx512_mask_pmov_dw_mem_128, 109629}, // __builtin_ia32_pmovdw128mem_mask
- {Intrinsic::x86_avx512_mask_pmov_dw_256, 109599}, // __builtin_ia32_pmovdw256_mask
- {Intrinsic::x86_avx512_mask_pmov_dw_mem_256, 109662}, // __builtin_ia32_pmovdw256mem_mask
- {Intrinsic::x86_avx512_mask_pmov_dw_mem_512, 109695}, // __builtin_ia32_pmovdw512mem_mask
- {Intrinsic::x86_mmx_pmovmskb, 123251}, // __builtin_ia32_pmovmskb
- {Intrinsic::x86_sse2_pmovmskb_128, 126380}, // __builtin_ia32_pmovmskb128
- {Intrinsic::x86_avx2_pmovmskb, 102313}, // __builtin_ia32_pmovmskb256
- {Intrinsic::x86_avx512_mask_pmov_qb_128, 109728}, // __builtin_ia32_pmovqb128_mask
- {Intrinsic::x86_avx512_mask_pmov_qb_mem_128, 109818}, // __builtin_ia32_pmovqb128mem_mask
- {Intrinsic::x86_avx512_mask_pmov_qb_256, 109758}, // __builtin_ia32_pmovqb256_mask
- {Intrinsic::x86_avx512_mask_pmov_qb_mem_256, 109851}, // __builtin_ia32_pmovqb256mem_mask
- {Intrinsic::x86_avx512_mask_pmov_qb_512, 109788}, // __builtin_ia32_pmovqb512_mask
- {Intrinsic::x86_avx512_mask_pmov_qb_mem_512, 109884}, // __builtin_ia32_pmovqb512mem_mask
- {Intrinsic::x86_avx512_mask_pmov_qd_128, 109917}, // __builtin_ia32_pmovqd128_mask
- {Intrinsic::x86_avx512_mask_pmov_qd_mem_128, 109947}, // __builtin_ia32_pmovqd128mem_mask
- {Intrinsic::x86_avx512_mask_pmov_qd_mem_256, 109980}, // __builtin_ia32_pmovqd256mem_mask
- {Intrinsic::x86_avx512_mask_pmov_qd_mem_512, 110013}, // __builtin_ia32_pmovqd512mem_mask
- {Intrinsic::x86_avx512_mask_pmov_qw_128, 110046}, // __builtin_ia32_pmovqw128_mask
- {Intrinsic::x86_avx512_mask_pmov_qw_mem_128, 110106}, // __builtin_ia32_pmovqw128mem_mask
- {Intrinsic::x86_avx512_mask_pmov_qw_256, 110076}, // __builtin_ia32_pmovqw256_mask
- {Intrinsic::x86_avx512_mask_pmov_qw_mem_256, 110139}, // __builtin_ia32_pmovqw256mem_mask
- {Intrinsic::x86_avx512_mask_pmov_qw_mem_512, 110172}, // __builtin_ia32_pmovqw512mem_mask
- {Intrinsic::x86_avx512_mask_pmovs_db_128, 110334}, // __builtin_ia32_pmovsdb128_mask
- {Intrinsic::x86_avx512_mask_pmovs_db_mem_128, 110427}, // __builtin_ia32_pmovsdb128mem_mask
- {Intrinsic::x86_avx512_mask_pmovs_db_256, 110365}, // __builtin_ia32_pmovsdb256_mask
- {Intrinsic::x86_avx512_mask_pmovs_db_mem_256, 110461}, // __builtin_ia32_pmovsdb256mem_mask
- {Intrinsic::x86_avx512_mask_pmovs_db_512, 110396}, // __builtin_ia32_pmovsdb512_mask
- {Intrinsic::x86_avx512_mask_pmovs_db_mem_512, 110495}, // __builtin_ia32_pmovsdb512mem_mask
- {Intrinsic::x86_avx512_mask_pmovs_dw_128, 110529}, // __builtin_ia32_pmovsdw128_mask
- {Intrinsic::x86_avx512_mask_pmovs_dw_mem_128, 110622}, // __builtin_ia32_pmovsdw128mem_mask
- {Intrinsic::x86_avx512_mask_pmovs_dw_256, 110560}, // __builtin_ia32_pmovsdw256_mask
- {Intrinsic::x86_avx512_mask_pmovs_dw_mem_256, 110656}, // __builtin_ia32_pmovsdw256mem_mask
- {Intrinsic::x86_avx512_mask_pmovs_dw_512, 110591}, // __builtin_ia32_pmovsdw512_mask
- {Intrinsic::x86_avx512_mask_pmovs_dw_mem_512, 110690}, // __builtin_ia32_pmovsdw512mem_mask
- {Intrinsic::x86_avx512_mask_pmovs_qb_128, 110724}, // __builtin_ia32_pmovsqb128_mask
- {Intrinsic::x86_avx512_mask_pmovs_qb_mem_128, 110817}, // __builtin_ia32_pmovsqb128mem_mask
- {Intrinsic::x86_avx512_mask_pmovs_qb_256, 110755}, // __builtin_ia32_pmovsqb256_mask
- {Intrinsic::x86_avx512_mask_pmovs_qb_mem_256, 110851}, // __builtin_ia32_pmovsqb256mem_mask
- {Intrinsic::x86_avx512_mask_pmovs_qb_512, 110786}, // __builtin_ia32_pmovsqb512_mask
- {Intrinsic::x86_avx512_mask_pmovs_qb_mem_512, 110885}, // __builtin_ia32_pmovsqb512mem_mask
- {Intrinsic::x86_avx512_mask_pmovs_qd_128, 110919}, // __builtin_ia32_pmovsqd128_mask
- {Intrinsic::x86_avx512_mask_pmovs_qd_mem_128, 111012}, // __builtin_ia32_pmovsqd128mem_mask
- {Intrinsic::x86_avx512_mask_pmovs_qd_256, 110950}, // __builtin_ia32_pmovsqd256_mask
- {Intrinsic::x86_avx512_mask_pmovs_qd_mem_256, 111046}, // __builtin_ia32_pmovsqd256mem_mask
- {Intrinsic::x86_avx512_mask_pmovs_qd_512, 110981}, // __builtin_ia32_pmovsqd512_mask
- {Intrinsic::x86_avx512_mask_pmovs_qd_mem_512, 111080}, // __builtin_ia32_pmovsqd512mem_mask
- {Intrinsic::x86_avx512_mask_pmovs_qw_128, 111114}, // __builtin_ia32_pmovsqw128_mask
- {Intrinsic::x86_avx512_mask_pmovs_qw_mem_128, 111207}, // __builtin_ia32_pmovsqw128mem_mask
- {Intrinsic::x86_avx512_mask_pmovs_qw_256, 111145}, // __builtin_ia32_pmovsqw256_mask
- {Intrinsic::x86_avx512_mask_pmovs_qw_mem_256, 111241}, // __builtin_ia32_pmovsqw256mem_mask
- {Intrinsic::x86_avx512_mask_pmovs_qw_512, 111176}, // __builtin_ia32_pmovsqw512_mask
- {Intrinsic::x86_avx512_mask_pmovs_qw_mem_512, 111275}, // __builtin_ia32_pmovsqw512mem_mask
- {Intrinsic::x86_avx512_mask_pmovs_wb_128, 111309}, // __builtin_ia32_pmovswb128_mask
- {Intrinsic::x86_avx512_mask_pmovs_wb_mem_128, 111402}, // __builtin_ia32_pmovswb128mem_mask
- {Intrinsic::x86_avx512_mask_pmovs_wb_256, 111340}, // __builtin_ia32_pmovswb256_mask
- {Intrinsic::x86_avx512_mask_pmovs_wb_mem_256, 111436}, // __builtin_ia32_pmovswb256mem_mask
- {Intrinsic::x86_avx512_mask_pmovs_wb_512, 111371}, // __builtin_ia32_pmovswb512_mask
- {Intrinsic::x86_avx512_mask_pmovs_wb_mem_512, 111470}, // __builtin_ia32_pmovswb512mem_mask
- {Intrinsic::x86_avx512_mask_pmovus_db_128, 111504}, // __builtin_ia32_pmovusdb128_mask
- {Intrinsic::x86_avx512_mask_pmovus_db_mem_128, 111600}, // __builtin_ia32_pmovusdb128mem_mask
- {Intrinsic::x86_avx512_mask_pmovus_db_256, 111536}, // __builtin_ia32_pmovusdb256_mask
- {Intrinsic::x86_avx512_mask_pmovus_db_mem_256, 111635}, // __builtin_ia32_pmovusdb256mem_mask
- {Intrinsic::x86_avx512_mask_pmovus_db_512, 111568}, // __builtin_ia32_pmovusdb512_mask
- {Intrinsic::x86_avx512_mask_pmovus_db_mem_512, 111670}, // __builtin_ia32_pmovusdb512mem_mask
- {Intrinsic::x86_avx512_mask_pmovus_dw_128, 111705}, // __builtin_ia32_pmovusdw128_mask
- {Intrinsic::x86_avx512_mask_pmovus_dw_mem_128, 111801}, // __builtin_ia32_pmovusdw128mem_mask
- {Intrinsic::x86_avx512_mask_pmovus_dw_256, 111737}, // __builtin_ia32_pmovusdw256_mask
- {Intrinsic::x86_avx512_mask_pmovus_dw_mem_256, 111836}, // __builtin_ia32_pmovusdw256mem_mask
- {Intrinsic::x86_avx512_mask_pmovus_dw_512, 111769}, // __builtin_ia32_pmovusdw512_mask
- {Intrinsic::x86_avx512_mask_pmovus_dw_mem_512, 111871}, // __builtin_ia32_pmovusdw512mem_mask
- {Intrinsic::x86_avx512_mask_pmovus_qb_128, 111906}, // __builtin_ia32_pmovusqb128_mask
- {Intrinsic::x86_avx512_mask_pmovus_qb_mem_128, 112002}, // __builtin_ia32_pmovusqb128mem_mask
- {Intrinsic::x86_avx512_mask_pmovus_qb_256, 111938}, // __builtin_ia32_pmovusqb256_mask
- {Intrinsic::x86_avx512_mask_pmovus_qb_mem_256, 112037}, // __builtin_ia32_pmovusqb256mem_mask
- {Intrinsic::x86_avx512_mask_pmovus_qb_512, 111970}, // __builtin_ia32_pmovusqb512_mask
- {Intrinsic::x86_avx512_mask_pmovus_qb_mem_512, 112072}, // __builtin_ia32_pmovusqb512mem_mask
- {Intrinsic::x86_avx512_mask_pmovus_qd_128, 112107}, // __builtin_ia32_pmovusqd128_mask
- {Intrinsic::x86_avx512_mask_pmovus_qd_mem_128, 112203}, // __builtin_ia32_pmovusqd128mem_mask
- {Intrinsic::x86_avx512_mask_pmovus_qd_256, 112139}, // __builtin_ia32_pmovusqd256_mask
- {Intrinsic::x86_avx512_mask_pmovus_qd_mem_256, 112238}, // __builtin_ia32_pmovusqd256mem_mask
- {Intrinsic::x86_avx512_mask_pmovus_qd_512, 112171}, // __builtin_ia32_pmovusqd512_mask
- {Intrinsic::x86_avx512_mask_pmovus_qd_mem_512, 112273}, // __builtin_ia32_pmovusqd512mem_mask
- {Intrinsic::x86_avx512_mask_pmovus_qw_128, 112308}, // __builtin_ia32_pmovusqw128_mask
- {Intrinsic::x86_avx512_mask_pmovus_qw_mem_128, 112404}, // __builtin_ia32_pmovusqw128mem_mask
- {Intrinsic::x86_avx512_mask_pmovus_qw_256, 112340}, // __builtin_ia32_pmovusqw256_mask
- {Intrinsic::x86_avx512_mask_pmovus_qw_mem_256, 112439}, // __builtin_ia32_pmovusqw256mem_mask
- {Intrinsic::x86_avx512_mask_pmovus_qw_512, 112372}, // __builtin_ia32_pmovusqw512_mask
- {Intrinsic::x86_avx512_mask_pmovus_qw_mem_512, 112474}, // __builtin_ia32_pmovusqw512mem_mask
- {Intrinsic::x86_avx512_mask_pmovus_wb_128, 112509}, // __builtin_ia32_pmovuswb128_mask
- {Intrinsic::x86_avx512_mask_pmovus_wb_mem_128, 112605}, // __builtin_ia32_pmovuswb128mem_mask
- {Intrinsic::x86_avx512_mask_pmovus_wb_256, 112541}, // __builtin_ia32_pmovuswb256_mask
- {Intrinsic::x86_avx512_mask_pmovus_wb_mem_256, 112640}, // __builtin_ia32_pmovuswb256mem_mask
- {Intrinsic::x86_avx512_mask_pmovus_wb_512, 112573}, // __builtin_ia32_pmovuswb512_mask
- {Intrinsic::x86_avx512_mask_pmovus_wb_mem_512, 112675}, // __builtin_ia32_pmovuswb512mem_mask
- {Intrinsic::x86_avx512_mask_pmov_wb_128, 110205}, // __builtin_ia32_pmovwb128_mask
- {Intrinsic::x86_avx512_mask_pmov_wb_mem_128, 110235}, // __builtin_ia32_pmovwb128mem_mask
- {Intrinsic::x86_avx512_mask_pmov_wb_mem_256, 110268}, // __builtin_ia32_pmovwb256mem_mask
- {Intrinsic::x86_avx512_mask_pmov_wb_mem_512, 110301}, // __builtin_ia32_pmovwb512mem_mask
- {Intrinsic::x86_ssse3_pmul_hr_sw, 128656}, // __builtin_ia32_pmulhrsw
- {Intrinsic::x86_ssse3_pmul_hr_sw_128, 128680}, // __builtin_ia32_pmulhrsw128
- {Intrinsic::x86_avx2_pmul_hr_sw, 102340}, // __builtin_ia32_pmulhrsw256
- {Intrinsic::x86_avx512_pmul_hr_sw_512, 116372}, // __builtin_ia32_pmulhrsw512
- {Intrinsic::x86_3dnow_pmulhrw, 99272}, // __builtin_ia32_pmulhrw
- {Intrinsic::x86_mmx_pmulhu_w, 123297}, // __builtin_ia32_pmulhuw
- {Intrinsic::x86_sse2_pmulhu_w, 126432}, // __builtin_ia32_pmulhuw128
- {Intrinsic::x86_avx2_pmulhu_w, 102392}, // __builtin_ia32_pmulhuw256
- {Intrinsic::x86_avx512_pmulhu_w_512, 116424}, // __builtin_ia32_pmulhuw512
- {Intrinsic::x86_mmx_pmulh_w, 123275}, // __builtin_ia32_pmulhw
- {Intrinsic::x86_sse2_pmulh_w, 126407}, // __builtin_ia32_pmulhw128
- {Intrinsic::x86_avx2_pmulh_w, 102367}, // __builtin_ia32_pmulhw256
- {Intrinsic::x86_avx512_pmulh_w_512, 116399}, // __builtin_ia32_pmulhw512
- {Intrinsic::x86_mmx_pmull_w, 123320}, // __builtin_ia32_pmullw
- {Intrinsic::x86_mmx_pmulu_dq, 123342}, // __builtin_ia32_pmuludq
- {Intrinsic::x86_mmx_por, 123365}, // __builtin_ia32_por
- {Intrinsic::x86_avx512_prol_d_128, 116450}, // __builtin_ia32_prold128
- {Intrinsic::x86_avx512_prol_d_256, 116474}, // __builtin_ia32_prold256
- {Intrinsic::x86_avx512_prol_d_512, 116498}, // __builtin_ia32_prold512
- {Intrinsic::x86_avx512_prol_q_128, 116522}, // __builtin_ia32_prolq128
- {Intrinsic::x86_avx512_prol_q_256, 116546}, // __builtin_ia32_prolq256
- {Intrinsic::x86_avx512_prol_q_512, 116570}, // __builtin_ia32_prolq512
- {Intrinsic::x86_avx512_prolv_d_128, 116594}, // __builtin_ia32_prolvd128
- {Intrinsic::x86_avx512_prolv_d_256, 116619}, // __builtin_ia32_prolvd256
- {Intrinsic::x86_avx512_prolv_d_512, 116644}, // __builtin_ia32_prolvd512
- {Intrinsic::x86_avx512_prolv_q_128, 116669}, // __builtin_ia32_prolvq128
- {Intrinsic::x86_avx512_prolv_q_256, 116694}, // __builtin_ia32_prolvq256
- {Intrinsic::x86_avx512_prolv_q_512, 116719}, // __builtin_ia32_prolvq512
- {Intrinsic::x86_avx512_pror_d_128, 116744}, // __builtin_ia32_prord128
- {Intrinsic::x86_avx512_pror_d_256, 116768}, // __builtin_ia32_prord256
- {Intrinsic::x86_avx512_pror_d_512, 116792}, // __builtin_ia32_prord512
- {Intrinsic::x86_avx512_pror_q_128, 116816}, // __builtin_ia32_prorq128
- {Intrinsic::x86_avx512_pror_q_256, 116840}, // __builtin_ia32_prorq256
- {Intrinsic::x86_avx512_pror_q_512, 116864}, // __builtin_ia32_prorq512
- {Intrinsic::x86_avx512_prorv_d_128, 116888}, // __builtin_ia32_prorvd128
- {Intrinsic::x86_avx512_prorv_d_256, 116913}, // __builtin_ia32_prorvd256
- {Intrinsic::x86_avx512_prorv_d_512, 116938}, // __builtin_ia32_prorvd512
- {Intrinsic::x86_avx512_prorv_q_128, 116963}, // __builtin_ia32_prorvq128
- {Intrinsic::x86_avx512_prorv_q_256, 116988}, // __builtin_ia32_prorvq256
- {Intrinsic::x86_avx512_prorv_q_512, 117013}, // __builtin_ia32_prorvq512
- {Intrinsic::x86_mmx_psad_bw, 123384}, // __builtin_ia32_psadbw
- {Intrinsic::x86_sse2_psad_bw, 126458}, // __builtin_ia32_psadbw128
- {Intrinsic::x86_avx2_psad_bw, 102418}, // __builtin_ia32_psadbw256
- {Intrinsic::x86_avx512_psad_bw_512, 117038}, // __builtin_ia32_psadbw512
- {Intrinsic::x86_ssse3_pshuf_b, 128707}, // __builtin_ia32_pshufb
- {Intrinsic::x86_ssse3_pshuf_b_128, 128729}, // __builtin_ia32_pshufb128
- {Intrinsic::x86_avx2_pshuf_b, 102443}, // __builtin_ia32_pshufb256
- {Intrinsic::x86_avx512_pshuf_b_512, 117063}, // __builtin_ia32_pshufb512
- {Intrinsic::x86_sse_pshuf_w, 125316}, // __builtin_ia32_pshufw
- {Intrinsic::x86_ssse3_psign_b, 128754}, // __builtin_ia32_psignb
- {Intrinsic::x86_ssse3_psign_b_128, 128776}, // __builtin_ia32_psignb128
- {Intrinsic::x86_avx2_psign_b, 102468}, // __builtin_ia32_psignb256
- {Intrinsic::x86_ssse3_psign_d, 128801}, // __builtin_ia32_psignd
- {Intrinsic::x86_ssse3_psign_d_128, 128823}, // __builtin_ia32_psignd128
- {Intrinsic::x86_avx2_psign_d, 102493}, // __builtin_ia32_psignd256
- {Intrinsic::x86_ssse3_psign_w, 128848}, // __builtin_ia32_psignw
- {Intrinsic::x86_ssse3_psign_w_128, 128870}, // __builtin_ia32_psignw128
- {Intrinsic::x86_avx2_psign_w, 102518}, // __builtin_ia32_psignw256
- {Intrinsic::x86_mmx_psll_d, 123406}, // __builtin_ia32_pslld
- {Intrinsic::x86_sse2_psll_d, 126483}, // __builtin_ia32_pslld128
- {Intrinsic::x86_avx2_psll_d, 102543}, // __builtin_ia32_pslld256
- {Intrinsic::x86_avx512_psll_d_512, 117088}, // __builtin_ia32_pslld512
- {Intrinsic::x86_mmx_pslli_d, 123469}, // __builtin_ia32_pslldi
- {Intrinsic::x86_sse2_pslli_d, 126555}, // __builtin_ia32_pslldi128
- {Intrinsic::x86_avx2_pslli_d, 102615}, // __builtin_ia32_pslldi256
- {Intrinsic::x86_avx512_pslli_d_512, 117160}, // __builtin_ia32_pslldi512
- {Intrinsic::x86_mmx_psll_q, 123427}, // __builtin_ia32_psllq
- {Intrinsic::x86_sse2_psll_q, 126507}, // __builtin_ia32_psllq128
- {Intrinsic::x86_avx2_psll_q, 102567}, // __builtin_ia32_psllq256
- {Intrinsic::x86_avx512_psll_q_512, 117112}, // __builtin_ia32_psllq512
- {Intrinsic::x86_mmx_pslli_q, 123491}, // __builtin_ia32_psllqi
- {Intrinsic::x86_sse2_pslli_q, 126580}, // __builtin_ia32_psllqi128
- {Intrinsic::x86_avx2_pslli_q, 102640}, // __builtin_ia32_psllqi256
- {Intrinsic::x86_avx512_pslli_q_512, 117185}, // __builtin_ia32_psllqi512
- {Intrinsic::x86_avx512_psllv_w_256, 117308}, // __builtin_ia32_psllv16hi
- {Intrinsic::x86_avx512_psllv_d_512, 117235}, // __builtin_ia32_psllv16si
- {Intrinsic::x86_avx2_psllv_q, 102738}, // __builtin_ia32_psllv2di
- {Intrinsic::x86_avx512_psllv_w_512, 117333}, // __builtin_ia32_psllv32hi
- {Intrinsic::x86_avx2_psllv_q_256, 102762}, // __builtin_ia32_psllv4di
- {Intrinsic::x86_avx2_psllv_d, 102690}, // __builtin_ia32_psllv4si
- {Intrinsic::x86_avx512_psllv_q_512, 117260}, // __builtin_ia32_psllv8di
- {Intrinsic::x86_avx512_psllv_w_128, 117284}, // __builtin_ia32_psllv8hi
- {Intrinsic::x86_avx2_psllv_d_256, 102714}, // __builtin_ia32_psllv8si
- {Intrinsic::x86_mmx_psll_w, 123448}, // __builtin_ia32_psllw
- {Intrinsic::x86_sse2_psll_w, 126531}, // __builtin_ia32_psllw128
- {Intrinsic::x86_avx2_psll_w, 102591}, // __builtin_ia32_psllw256
- {Intrinsic::x86_avx512_psll_w_512, 117136}, // __builtin_ia32_psllw512
- {Intrinsic::x86_mmx_pslli_w, 123513}, // __builtin_ia32_psllwi
- {Intrinsic::x86_sse2_pslli_w, 126605}, // __builtin_ia32_psllwi128
- {Intrinsic::x86_avx2_pslli_w, 102665}, // __builtin_ia32_psllwi256
- {Intrinsic::x86_avx512_pslli_w_512, 117210}, // __builtin_ia32_psllwi512
- {Intrinsic::x86_mmx_psra_d, 123535}, // __builtin_ia32_psrad
- {Intrinsic::x86_sse2_psra_d, 126630}, // __builtin_ia32_psrad128
- {Intrinsic::x86_avx2_psra_d, 102786}, // __builtin_ia32_psrad256
- {Intrinsic::x86_avx512_psra_d_512, 117358}, // __builtin_ia32_psrad512
- {Intrinsic::x86_mmx_psrai_d, 123577}, // __builtin_ia32_psradi
- {Intrinsic::x86_sse2_psrai_d, 126678}, // __builtin_ia32_psradi128
- {Intrinsic::x86_avx2_psrai_d, 102834}, // __builtin_ia32_psradi256
- {Intrinsic::x86_avx512_psrai_d_512, 117478}, // __builtin_ia32_psradi512
- {Intrinsic::x86_avx512_psra_q_128, 117382}, // __builtin_ia32_psraq128
- {Intrinsic::x86_avx512_psra_q_256, 117406}, // __builtin_ia32_psraq256
- {Intrinsic::x86_avx512_psra_q_512, 117430}, // __builtin_ia32_psraq512
- {Intrinsic::x86_avx512_psrai_q_128, 117503}, // __builtin_ia32_psraqi128
- {Intrinsic::x86_avx512_psrai_q_256, 117528}, // __builtin_ia32_psraqi256
- {Intrinsic::x86_avx512_psrai_q_512, 117553}, // __builtin_ia32_psraqi512
- {Intrinsic::x86_avx512_psrav_w_256, 117726}, // __builtin_ia32_psrav16hi
- {Intrinsic::x86_avx512_psrav_d_512, 117603}, // __builtin_ia32_psrav16si
- {Intrinsic::x86_avx512_psrav_w_512, 117751}, // __builtin_ia32_psrav32hi
- {Intrinsic::x86_avx2_psrav_d, 102884}, // __builtin_ia32_psrav4si
- {Intrinsic::x86_avx512_psrav_q_512, 117678}, // __builtin_ia32_psrav8di
- {Intrinsic::x86_avx512_psrav_w_128, 117702}, // __builtin_ia32_psrav8hi
- {Intrinsic::x86_avx2_psrav_d_256, 102908}, // __builtin_ia32_psrav8si
- {Intrinsic::x86_avx512_psrav_q_128, 117628}, // __builtin_ia32_psravq128
- {Intrinsic::x86_avx512_psrav_q_256, 117653}, // __builtin_ia32_psravq256
- {Intrinsic::x86_mmx_psra_w, 123556}, // __builtin_ia32_psraw
- {Intrinsic::x86_sse2_psra_w, 126654}, // __builtin_ia32_psraw128
- {Intrinsic::x86_avx2_psra_w, 102810}, // __builtin_ia32_psraw256
- {Intrinsic::x86_avx512_psra_w_512, 117454}, // __builtin_ia32_psraw512
- {Intrinsic::x86_mmx_psrai_w, 123599}, // __builtin_ia32_psrawi
- {Intrinsic::x86_sse2_psrai_w, 126703}, // __builtin_ia32_psrawi128
- {Intrinsic::x86_avx2_psrai_w, 102859}, // __builtin_ia32_psrawi256
- {Intrinsic::x86_avx512_psrai_w_512, 117578}, // __builtin_ia32_psrawi512
- {Intrinsic::x86_mmx_psrl_d, 123621}, // __builtin_ia32_psrld
- {Intrinsic::x86_sse2_psrl_d, 126728}, // __builtin_ia32_psrld128
- {Intrinsic::x86_avx2_psrl_d, 102932}, // __builtin_ia32_psrld256
- {Intrinsic::x86_avx512_psrl_d_512, 117776}, // __builtin_ia32_psrld512
- {Intrinsic::x86_mmx_psrli_d, 123684}, // __builtin_ia32_psrldi
- {Intrinsic::x86_sse2_psrli_d, 126800}, // __builtin_ia32_psrldi128
- {Intrinsic::x86_avx2_psrli_d, 103004}, // __builtin_ia32_psrldi256
- {Intrinsic::x86_avx512_psrli_d_512, 117848}, // __builtin_ia32_psrldi512
- {Intrinsic::x86_mmx_psrl_q, 123642}, // __builtin_ia32_psrlq
- {Intrinsic::x86_sse2_psrl_q, 126752}, // __builtin_ia32_psrlq128
- {Intrinsic::x86_avx2_psrl_q, 102956}, // __builtin_ia32_psrlq256
- {Intrinsic::x86_avx512_psrl_q_512, 117800}, // __builtin_ia32_psrlq512
- {Intrinsic::x86_mmx_psrli_q, 123706}, // __builtin_ia32_psrlqi
- {Intrinsic::x86_sse2_psrli_q, 126825}, // __builtin_ia32_psrlqi128
- {Intrinsic::x86_avx2_psrli_q, 103029}, // __builtin_ia32_psrlqi256
- {Intrinsic::x86_avx512_psrli_q_512, 117873}, // __builtin_ia32_psrlqi512
- {Intrinsic::x86_avx512_psrlv_w_256, 117996}, // __builtin_ia32_psrlv16hi
- {Intrinsic::x86_avx512_psrlv_d_512, 117923}, // __builtin_ia32_psrlv16si
- {Intrinsic::x86_avx2_psrlv_q, 103127}, // __builtin_ia32_psrlv2di
- {Intrinsic::x86_avx512_psrlv_w_512, 118021}, // __builtin_ia32_psrlv32hi
- {Intrinsic::x86_avx2_psrlv_q_256, 103151}, // __builtin_ia32_psrlv4di
- {Intrinsic::x86_avx2_psrlv_d, 103079}, // __builtin_ia32_psrlv4si
- {Intrinsic::x86_avx512_psrlv_q_512, 117948}, // __builtin_ia32_psrlv8di
- {Intrinsic::x86_avx512_psrlv_w_128, 117972}, // __builtin_ia32_psrlv8hi
- {Intrinsic::x86_avx2_psrlv_d_256, 103103}, // __builtin_ia32_psrlv8si
- {Intrinsic::x86_mmx_psrl_w, 123663}, // __builtin_ia32_psrlw
- {Intrinsic::x86_sse2_psrl_w, 126776}, // __builtin_ia32_psrlw128
- {Intrinsic::x86_avx2_psrl_w, 102980}, // __builtin_ia32_psrlw256
- {Intrinsic::x86_avx512_psrl_w_512, 117824}, // __builtin_ia32_psrlw512
- {Intrinsic::x86_mmx_psrli_w, 123728}, // __builtin_ia32_psrlwi
- {Intrinsic::x86_sse2_psrli_w, 126850}, // __builtin_ia32_psrlwi128
- {Intrinsic::x86_avx2_psrli_w, 103054}, // __builtin_ia32_psrlwi256
- {Intrinsic::x86_avx512_psrli_w_512, 117898}, // __builtin_ia32_psrlwi512
- {Intrinsic::x86_mmx_psub_b, 123750}, // __builtin_ia32_psubb
- {Intrinsic::x86_mmx_psub_d, 123771}, // __builtin_ia32_psubd
- {Intrinsic::x86_mmx_psub_q, 123792}, // __builtin_ia32_psubq
- {Intrinsic::x86_mmx_psubs_b, 123834}, // __builtin_ia32_psubsb
- {Intrinsic::x86_sse2_psubs_b, 126875}, // __builtin_ia32_psubsb128
- {Intrinsic::x86_avx2_psubs_b, 103175}, // __builtin_ia32_psubsb256
- {Intrinsic::x86_avx512_psubs_b_512, 118046}, // __builtin_ia32_psubsb512
- {Intrinsic::x86_mmx_psubs_w, 123856}, // __builtin_ia32_psubsw
- {Intrinsic::x86_sse2_psubs_w, 126900}, // __builtin_ia32_psubsw128
- {Intrinsic::x86_avx2_psubs_w, 103200}, // __builtin_ia32_psubsw256
- {Intrinsic::x86_avx512_psubs_w_512, 118071}, // __builtin_ia32_psubsw512
- {Intrinsic::x86_mmx_psubus_b, 123878}, // __builtin_ia32_psubusb
- {Intrinsic::x86_mmx_psubus_w, 123901}, // __builtin_ia32_psubusw
- {Intrinsic::x86_mmx_psub_w, 123813}, // __builtin_ia32_psubw
- {Intrinsic::x86_avx512_pternlog_d_128, 118096}, // __builtin_ia32_pternlogd128
- {Intrinsic::x86_avx512_pternlog_d_256, 118124}, // __builtin_ia32_pternlogd256
- {Intrinsic::x86_avx512_pternlog_d_512, 118152}, // __builtin_ia32_pternlogd512
- {Intrinsic::x86_avx512_pternlog_q_128, 118180}, // __builtin_ia32_pternlogq128
- {Intrinsic::x86_avx512_pternlog_q_256, 118208}, // __builtin_ia32_pternlogq256
- {Intrinsic::x86_avx512_pternlog_q_512, 118236}, // __builtin_ia32_pternlogq512
- {Intrinsic::x86_sse41_ptestc, 127501}, // __builtin_ia32_ptestc128
- {Intrinsic::x86_avx_ptestc_256, 100531}, // __builtin_ia32_ptestc256
- {Intrinsic::x86_sse41_ptestnzc, 127526}, // __builtin_ia32_ptestnzc128
- {Intrinsic::x86_avx_ptestnzc_256, 100556}, // __builtin_ia32_ptestnzc256
- {Intrinsic::x86_sse41_ptestz, 127553}, // __builtin_ia32_ptestz128
- {Intrinsic::x86_avx_ptestz_256, 100583}, // __builtin_ia32_ptestz256
- {Intrinsic::x86_ptwrite32, 124249}, // __builtin_ia32_ptwrite32
- {Intrinsic::x86_ptwrite64, 124274}, // __builtin_ia32_ptwrite64
- {Intrinsic::x86_mmx_punpckhbw, 123924}, // __builtin_ia32_punpckhbw
- {Intrinsic::x86_mmx_punpckhdq, 123949}, // __builtin_ia32_punpckhdq
- {Intrinsic::x86_mmx_punpckhwd, 123974}, // __builtin_ia32_punpckhwd
- {Intrinsic::x86_mmx_punpcklbw, 123999}, // __builtin_ia32_punpcklbw
- {Intrinsic::x86_mmx_punpckldq, 124024}, // __builtin_ia32_punpckldq
- {Intrinsic::x86_mmx_punpcklwd, 124049}, // __builtin_ia32_punpcklwd
- {Intrinsic::x86_mmx_pxor, 124074}, // __builtin_ia32_pxor
- {Intrinsic::x86_avx512_mask_range_pd_128, 112824}, // __builtin_ia32_rangepd128_mask
- {Intrinsic::x86_avx512_mask_range_pd_256, 112855}, // __builtin_ia32_rangepd256_mask
- {Intrinsic::x86_avx512_mask_range_pd_512, 112886}, // __builtin_ia32_rangepd512_mask
- {Intrinsic::x86_avx512_mask_range_ps_128, 112917}, // __builtin_ia32_rangeps128_mask
- {Intrinsic::x86_avx512_mask_range_ps_256, 112948}, // __builtin_ia32_rangeps256_mask
- {Intrinsic::x86_avx512_mask_range_ps_512, 112979}, // __builtin_ia32_rangeps512_mask
- {Intrinsic::x86_avx512_mask_range_sd, 113010}, // __builtin_ia32_rangesd128_round_mask
- {Intrinsic::x86_avx512_mask_range_ss, 113047}, // __builtin_ia32_rangess128_round_mask
- {Intrinsic::x86_avx512_rcp14_pd_128, 118264}, // __builtin_ia32_rcp14pd128_mask
- {Intrinsic::x86_avx512_rcp14_pd_256, 118295}, // __builtin_ia32_rcp14pd256_mask
- {Intrinsic::x86_avx512_rcp14_pd_512, 118326}, // __builtin_ia32_rcp14pd512_mask
- {Intrinsic::x86_avx512_rcp14_ps_128, 118357}, // __builtin_ia32_rcp14ps128_mask
- {Intrinsic::x86_avx512_rcp14_ps_256, 118388}, // __builtin_ia32_rcp14ps256_mask
- {Intrinsic::x86_avx512_rcp14_ps_512, 118419}, // __builtin_ia32_rcp14ps512_mask
- {Intrinsic::x86_avx512_rcp14_sd, 118450}, // __builtin_ia32_rcp14sd_mask
- {Intrinsic::x86_avx512_rcp14_ss, 118478}, // __builtin_ia32_rcp14ss_mask
- {Intrinsic::x86_avx512_rcp28_pd, 118506}, // __builtin_ia32_rcp28pd_mask
- {Intrinsic::x86_avx512_rcp28_ps, 118534}, // __builtin_ia32_rcp28ps_mask
- {Intrinsic::x86_avx512_rcp28_sd, 118562}, // __builtin_ia32_rcp28sd_round_mask
- {Intrinsic::x86_avx512_rcp28_ss, 118596}, // __builtin_ia32_rcp28ss_round_mask
- {Intrinsic::x86_sse_rcp_ps, 125338}, // __builtin_ia32_rcpps
- {Intrinsic::x86_avx_rcp_ps_256, 100608}, // __builtin_ia32_rcpps256
- {Intrinsic::x86_sse_rcp_ss, 125359}, // __builtin_ia32_rcpss
- {Intrinsic::x86_rdfsbase_32, 124299}, // __builtin_ia32_rdfsbase32
- {Intrinsic::x86_rdfsbase_64, 124325}, // __builtin_ia32_rdfsbase64
- {Intrinsic::x86_rdgsbase_32, 124351}, // __builtin_ia32_rdgsbase32
- {Intrinsic::x86_rdgsbase_64, 124377}, // __builtin_ia32_rdgsbase64
- {Intrinsic::x86_rdpid, 124403}, // __builtin_ia32_rdpid
- {Intrinsic::x86_rdpkru, 124424}, // __builtin_ia32_rdpkru
- {Intrinsic::x86_rdpmc, 124446}, // __builtin_ia32_rdpmc
- {Intrinsic::x86_rdsspd, 124467}, // __builtin_ia32_rdsspd
- {Intrinsic::x86_rdsspq, 124489}, // __builtin_ia32_rdsspq
- {Intrinsic::x86_rdtsc, 124511}, // __builtin_ia32_rdtsc
- {Intrinsic::x86_flags_read_u32, 122104}, // __builtin_ia32_readeflags_u32
- {Intrinsic::x86_flags_read_u64, 122134}, // __builtin_ia32_readeflags_u64
- {Intrinsic::x86_avx512_mask_reduce_pd_128, 113084}, // __builtin_ia32_reducepd128_mask
- {Intrinsic::x86_avx512_mask_reduce_pd_256, 113116}, // __builtin_ia32_reducepd256_mask
- {Intrinsic::x86_avx512_mask_reduce_pd_512, 113148}, // __builtin_ia32_reducepd512_mask
- {Intrinsic::x86_avx512_mask_reduce_ps_128, 113180}, // __builtin_ia32_reduceps128_mask
- {Intrinsic::x86_avx512_mask_reduce_ps_256, 113212}, // __builtin_ia32_reduceps256_mask
- {Intrinsic::x86_avx512_mask_reduce_ps_512, 113244}, // __builtin_ia32_reduceps512_mask
- {Intrinsic::x86_avx512_mask_reduce_sd, 113276}, // __builtin_ia32_reducesd_mask
- {Intrinsic::x86_avx512_mask_reduce_ss, 113305}, // __builtin_ia32_reducess_mask
- {Intrinsic::x86_avx512_mask_rndscale_pd_128, 113334}, // __builtin_ia32_rndscalepd_128_mask
- {Intrinsic::x86_avx512_mask_rndscale_pd_256, 113369}, // __builtin_ia32_rndscalepd_256_mask
- {Intrinsic::x86_avx512_mask_rndscale_pd_512, 113404}, // __builtin_ia32_rndscalepd_mask
- {Intrinsic::x86_avx512_mask_rndscale_ps_128, 113435}, // __builtin_ia32_rndscaleps_128_mask
- {Intrinsic::x86_avx512_mask_rndscale_ps_256, 113470}, // __builtin_ia32_rndscaleps_256_mask
- {Intrinsic::x86_avx512_mask_rndscale_ps_512, 113505}, // __builtin_ia32_rndscaleps_mask
- {Intrinsic::x86_avx512_mask_rndscale_sd, 113536}, // __builtin_ia32_rndscalesd_round_mask
- {Intrinsic::x86_avx512_mask_rndscale_ss, 113573}, // __builtin_ia32_rndscaless_round_mask
- {Intrinsic::x86_sse41_round_pd, 127578}, // __builtin_ia32_roundpd
- {Intrinsic::x86_avx_round_pd_256, 100632}, // __builtin_ia32_roundpd256
- {Intrinsic::x86_sse41_round_ps, 127601}, // __builtin_ia32_roundps
- {Intrinsic::x86_avx_round_ps_256, 100658}, // __builtin_ia32_roundps256
- {Intrinsic::x86_sse41_round_sd, 127624}, // __builtin_ia32_roundsd
- {Intrinsic::x86_sse41_round_ss, 127647}, // __builtin_ia32_roundss
- {Intrinsic::x86_avx512_rsqrt14_pd_128, 118630}, // __builtin_ia32_rsqrt14pd128_mask
- {Intrinsic::x86_avx512_rsqrt14_pd_256, 118663}, // __builtin_ia32_rsqrt14pd256_mask
- {Intrinsic::x86_avx512_rsqrt14_pd_512, 118696}, // __builtin_ia32_rsqrt14pd512_mask
- {Intrinsic::x86_avx512_rsqrt14_ps_128, 118729}, // __builtin_ia32_rsqrt14ps128_mask
- {Intrinsic::x86_avx512_rsqrt14_ps_256, 118762}, // __builtin_ia32_rsqrt14ps256_mask
- {Intrinsic::x86_avx512_rsqrt14_ps_512, 118795}, // __builtin_ia32_rsqrt14ps512_mask
- {Intrinsic::x86_avx512_rsqrt14_sd, 118828}, // __builtin_ia32_rsqrt14sd_mask
- {Intrinsic::x86_avx512_rsqrt14_ss, 118858}, // __builtin_ia32_rsqrt14ss_mask
- {Intrinsic::x86_avx512_rsqrt28_pd, 118888}, // __builtin_ia32_rsqrt28pd_mask
- {Intrinsic::x86_avx512_rsqrt28_ps, 118918}, // __builtin_ia32_rsqrt28ps_mask
- {Intrinsic::x86_avx512_rsqrt28_sd, 118948}, // __builtin_ia32_rsqrt28sd_round_mask
- {Intrinsic::x86_avx512_rsqrt28_ss, 118984}, // __builtin_ia32_rsqrt28ss_round_mask
- {Intrinsic::x86_sse_rsqrt_ps, 125380}, // __builtin_ia32_rsqrtps
- {Intrinsic::x86_avx_rsqrt_ps_256, 100684}, // __builtin_ia32_rsqrtps256
- {Intrinsic::x86_sse_rsqrt_ss, 125403}, // __builtin_ia32_rsqrtss
- {Intrinsic::x86_rstorssp, 124532}, // __builtin_ia32_rstorssp
- {Intrinsic::x86_saveprevssp, 124556}, // __builtin_ia32_saveprevssp
- {Intrinsic::x86_avx512_mask_scalef_pd_128, 113610}, // __builtin_ia32_scalefpd128_mask
- {Intrinsic::x86_avx512_mask_scalef_pd_256, 113642}, // __builtin_ia32_scalefpd256_mask
- {Intrinsic::x86_avx512_mask_scalef_pd_512, 113674}, // __builtin_ia32_scalefpd512_mask
- {Intrinsic::x86_avx512_mask_scalef_ps_128, 113706}, // __builtin_ia32_scalefps128_mask
- {Intrinsic::x86_avx512_mask_scalef_ps_256, 113738}, // __builtin_ia32_scalefps256_mask
- {Intrinsic::x86_avx512_mask_scalef_ps_512, 113770}, // __builtin_ia32_scalefps512_mask
- {Intrinsic::x86_avx512_mask_scalef_sd, 113802}, // __builtin_ia32_scalefsd_round_mask
- {Intrinsic::x86_avx512_mask_scalef_ss, 113837}, // __builtin_ia32_scalefss_round_mask
- {Intrinsic::x86_avx512_scatter_qps_512, 119226}, // __builtin_ia32_scatterdiv16sf
- {Intrinsic::x86_avx512_scatter_qpi_512, 119167}, // __builtin_ia32_scatterdiv16si
- {Intrinsic::x86_avx512_scatterdiv2_df, 119256}, // __builtin_ia32_scatterdiv2df
- {Intrinsic::x86_avx512_scatterdiv2_di, 119285}, // __builtin_ia32_scatterdiv2di
- {Intrinsic::x86_avx512_scatterdiv4_df, 119314}, // __builtin_ia32_scatterdiv4df
- {Intrinsic::x86_avx512_scatterdiv4_di, 119343}, // __builtin_ia32_scatterdiv4di
- {Intrinsic::x86_avx512_scatterdiv4_sf, 119372}, // __builtin_ia32_scatterdiv4sf
- {Intrinsic::x86_avx512_scatterdiv4_si, 119401}, // __builtin_ia32_scatterdiv4si
- {Intrinsic::x86_avx512_scatter_qpd_512, 119138}, // __builtin_ia32_scatterdiv8df
- {Intrinsic::x86_avx512_scatter_qpq_512, 119197}, // __builtin_ia32_scatterdiv8di
- {Intrinsic::x86_avx512_scatterdiv8_sf, 119430}, // __builtin_ia32_scatterdiv8sf
- {Intrinsic::x86_avx512_scatterdiv8_si, 119459}, // __builtin_ia32_scatterdiv8si
- {Intrinsic::x86_avx512_scatterpf_dpd_512, 119488}, // __builtin_ia32_scatterpfdpd
- {Intrinsic::x86_avx512_scatterpf_dps_512, 119516}, // __builtin_ia32_scatterpfdps
- {Intrinsic::x86_avx512_scatterpf_qpd_512, 119544}, // __builtin_ia32_scatterpfqpd
- {Intrinsic::x86_avx512_scatterpf_qps_512, 119572}, // __builtin_ia32_scatterpfqps
- {Intrinsic::x86_avx512_scatter_dps_512, 119108}, // __builtin_ia32_scattersiv16sf
- {Intrinsic::x86_avx512_scatter_dpi_512, 119049}, // __builtin_ia32_scattersiv16si
- {Intrinsic::x86_avx512_scattersiv2_df, 119600}, // __builtin_ia32_scattersiv2df
- {Intrinsic::x86_avx512_scattersiv2_di, 119629}, // __builtin_ia32_scattersiv2di
- {Intrinsic::x86_avx512_scattersiv4_df, 119658}, // __builtin_ia32_scattersiv4df
- {Intrinsic::x86_avx512_scattersiv4_di, 119687}, // __builtin_ia32_scattersiv4di
- {Intrinsic::x86_avx512_scattersiv4_sf, 119716}, // __builtin_ia32_scattersiv4sf
- {Intrinsic::x86_avx512_scattersiv4_si, 119745}, // __builtin_ia32_scattersiv4si
- {Intrinsic::x86_avx512_scatter_dpd_512, 119020}, // __builtin_ia32_scattersiv8df
- {Intrinsic::x86_avx512_scatter_dpq_512, 119079}, // __builtin_ia32_scattersiv8di
- {Intrinsic::x86_avx512_scattersiv8_sf, 119774}, // __builtin_ia32_scattersiv8sf
- {Intrinsic::x86_avx512_scattersiv8_si, 119803}, // __builtin_ia32_scattersiv8si
- {Intrinsic::x86_setssbsy, 124583}, // __builtin_ia32_setssbsy
- {Intrinsic::x86_sse_sfence, 125426}, // __builtin_ia32_sfence
- {Intrinsic::x86_sha1msg1, 124607}, // __builtin_ia32_sha1msg1
- {Intrinsic::x86_sha1msg2, 124631}, // __builtin_ia32_sha1msg2
- {Intrinsic::x86_sha1nexte, 124655}, // __builtin_ia32_sha1nexte
- {Intrinsic::x86_sha1rnds4, 124680}, // __builtin_ia32_sha1rnds4
- {Intrinsic::x86_sha256msg1, 124705}, // __builtin_ia32_sha256msg1
- {Intrinsic::x86_sha256msg2, 124731}, // __builtin_ia32_sha256msg2
- {Intrinsic::x86_sha256rnds2, 124757}, // __builtin_ia32_sha256rnds2
- {Intrinsic::x86_slwpcb, 124784}, // __builtin_ia32_slwpcb
- {Intrinsic::x86_avx512_sub_pd_512, 119832}, // __builtin_ia32_subpd512
- {Intrinsic::x86_avx512_sub_ps_512, 119856}, // __builtin_ia32_subps512
- {Intrinsic::x86_avx512_mask_sub_sd_round, 113872}, // __builtin_ia32_subsd_round_mask
- {Intrinsic::x86_avx512_mask_sub_ss_round, 113904}, // __builtin_ia32_subss_round_mask
- {Intrinsic::x86_tpause, 128947}, // __builtin_ia32_tpause
- {Intrinsic::x86_sse_ucomieq_ss, 125448}, // __builtin_ia32_ucomieq
- {Intrinsic::x86_sse_ucomige_ss, 125471}, // __builtin_ia32_ucomige
- {Intrinsic::x86_sse_ucomigt_ss, 125494}, // __builtin_ia32_ucomigt
- {Intrinsic::x86_sse_ucomile_ss, 125517}, // __builtin_ia32_ucomile
- {Intrinsic::x86_sse_ucomilt_ss, 125540}, // __builtin_ia32_ucomilt
- {Intrinsic::x86_sse_ucomineq_ss, 125563}, // __builtin_ia32_ucomineq
- {Intrinsic::x86_sse2_ucomieq_sd, 126925}, // __builtin_ia32_ucomisdeq
- {Intrinsic::x86_sse2_ucomige_sd, 126950}, // __builtin_ia32_ucomisdge
- {Intrinsic::x86_sse2_ucomigt_sd, 126975}, // __builtin_ia32_ucomisdgt
- {Intrinsic::x86_sse2_ucomile_sd, 127000}, // __builtin_ia32_ucomisdle
- {Intrinsic::x86_sse2_ucomilt_sd, 127025}, // __builtin_ia32_ucomisdlt
- {Intrinsic::x86_sse2_ucomineq_sd, 127050}, // __builtin_ia32_ucomisdneq
- {Intrinsic::x86_umonitor, 128969}, // __builtin_ia32_umonitor
- {Intrinsic::x86_umwait, 128993}, // __builtin_ia32_umwait
- {Intrinsic::x86_avx512_vcomi_sd, 119880}, // __builtin_ia32_vcomisd
- {Intrinsic::x86_avx512_vcomi_ss, 119903}, // __builtin_ia32_vcomiss
- {Intrinsic::x86_vcvtph2ps_128, 129015}, // __builtin_ia32_vcvtph2ps
- {Intrinsic::x86_vcvtph2ps_256, 129040}, // __builtin_ia32_vcvtph2ps256
- {Intrinsic::x86_avx512_mask_vcvtph2ps_256, 113966}, // __builtin_ia32_vcvtph2ps256_mask
- {Intrinsic::x86_avx512_mask_vcvtph2ps_512, 113999}, // __builtin_ia32_vcvtph2ps512_mask
- {Intrinsic::x86_avx512_mask_vcvtph2ps_128, 113936}, // __builtin_ia32_vcvtph2ps_mask
- {Intrinsic::x86_vcvtps2ph_128, 129068}, // __builtin_ia32_vcvtps2ph
- {Intrinsic::x86_vcvtps2ph_256, 129093}, // __builtin_ia32_vcvtps2ph256
- {Intrinsic::x86_avx512_mask_vcvtps2ph_256, 114062}, // __builtin_ia32_vcvtps2ph256_mask
- {Intrinsic::x86_avx512_mask_vcvtps2ph_512, 114095}, // __builtin_ia32_vcvtps2ph512_mask
- {Intrinsic::x86_avx512_mask_vcvtps2ph_128, 114032}, // __builtin_ia32_vcvtps2ph_mask
- {Intrinsic::x86_avx512_vcvtsd2si32, 119926}, // __builtin_ia32_vcvtsd2si32
- {Intrinsic::x86_avx512_vcvtsd2si64, 119953}, // __builtin_ia32_vcvtsd2si64
- {Intrinsic::x86_avx512_vcvtsd2usi32, 119980}, // __builtin_ia32_vcvtsd2usi32
- {Intrinsic::x86_avx512_vcvtsd2usi64, 120008}, // __builtin_ia32_vcvtsd2usi64
- {Intrinsic::x86_avx512_vcvtss2si32, 120036}, // __builtin_ia32_vcvtss2si32
- {Intrinsic::x86_avx512_vcvtss2si64, 120063}, // __builtin_ia32_vcvtss2si64
- {Intrinsic::x86_avx512_vcvtss2usi32, 120090}, // __builtin_ia32_vcvtss2usi32
- {Intrinsic::x86_avx512_vcvtss2usi64, 120118}, // __builtin_ia32_vcvtss2usi64
- {Intrinsic::x86_avx512_cvttsd2si, 103531}, // __builtin_ia32_vcvttsd2si32
- {Intrinsic::x86_avx512_cvttsd2si64, 103559}, // __builtin_ia32_vcvttsd2si64
- {Intrinsic::x86_avx512_cvttsd2usi, 103587}, // __builtin_ia32_vcvttsd2usi32
- {Intrinsic::x86_avx512_cvttsd2usi64, 103616}, // __builtin_ia32_vcvttsd2usi64
- {Intrinsic::x86_avx512_cvttss2si, 103645}, // __builtin_ia32_vcvttss2si32
- {Intrinsic::x86_avx512_cvttss2si64, 103673}, // __builtin_ia32_vcvttss2si64
- {Intrinsic::x86_avx512_cvttss2usi, 103701}, // __builtin_ia32_vcvttss2usi32
- {Intrinsic::x86_avx512_cvttss2usi64, 103730}, // __builtin_ia32_vcvttss2usi64
- {Intrinsic::x86_mmx_pextr_w, 123084}, // __builtin_ia32_vec_ext_v4hi
- {Intrinsic::x86_mmx_pinsr_w, 123112}, // __builtin_ia32_vec_set_v4hi
- {Intrinsic::x86_xop_vfrcz_pd, 129764}, // __builtin_ia32_vfrczpd
- {Intrinsic::x86_xop_vfrcz_pd_256, 129787}, // __builtin_ia32_vfrczpd256
- {Intrinsic::x86_xop_vfrcz_ps, 129813}, // __builtin_ia32_vfrczps
- {Intrinsic::x86_xop_vfrcz_ps_256, 129836}, // __builtin_ia32_vfrczps256
- {Intrinsic::x86_xop_vfrcz_sd, 129862}, // __builtin_ia32_vfrczsd
- {Intrinsic::x86_xop_vfrcz_ss, 129885}, // __builtin_ia32_vfrczss
- {Intrinsic::x86_vgf2p8affineinvqb_128, 129121}, // __builtin_ia32_vgf2p8affineinvqb_v16qi
- {Intrinsic::x86_vgf2p8affineinvqb_256, 129160}, // __builtin_ia32_vgf2p8affineinvqb_v32qi
- {Intrinsic::x86_vgf2p8affineinvqb_512, 129199}, // __builtin_ia32_vgf2p8affineinvqb_v64qi
- {Intrinsic::x86_vgf2p8affineqb_128, 129238}, // __builtin_ia32_vgf2p8affineqb_v16qi
- {Intrinsic::x86_vgf2p8affineqb_256, 129274}, // __builtin_ia32_vgf2p8affineqb_v32qi
- {Intrinsic::x86_vgf2p8affineqb_512, 129310}, // __builtin_ia32_vgf2p8affineqb_v64qi
- {Intrinsic::x86_vgf2p8mulb_128, 129346}, // __builtin_ia32_vgf2p8mulb_v16qi
- {Intrinsic::x86_vgf2p8mulb_256, 129378}, // __builtin_ia32_vgf2p8mulb_v32qi
- {Intrinsic::x86_vgf2p8mulb_512, 129410}, // __builtin_ia32_vgf2p8mulb_v64qi
- {Intrinsic::x86_xop_vpcomb, 129908}, // __builtin_ia32_vpcomb
- {Intrinsic::x86_xop_vpcomd, 129930}, // __builtin_ia32_vpcomd
- {Intrinsic::x86_xop_vpcomq, 129952}, // __builtin_ia32_vpcomq
- {Intrinsic::x86_xop_vpcomub, 129974}, // __builtin_ia32_vpcomub
- {Intrinsic::x86_xop_vpcomud, 129997}, // __builtin_ia32_vpcomud
- {Intrinsic::x86_xop_vpcomuq, 130020}, // __builtin_ia32_vpcomuq
- {Intrinsic::x86_xop_vpcomuw, 130043}, // __builtin_ia32_vpcomuw
- {Intrinsic::x86_xop_vpcomw, 130066}, // __builtin_ia32_vpcomw
- {Intrinsic::x86_avx512_mask_conflict_q_128, 105662}, // __builtin_ia32_vpconflictdi_128_mask
- {Intrinsic::x86_avx512_mask_conflict_q_256, 105699}, // __builtin_ia32_vpconflictdi_256_mask
- {Intrinsic::x86_avx512_mask_conflict_q_512, 105736}, // __builtin_ia32_vpconflictdi_512_mask
- {Intrinsic::x86_avx512_mask_conflict_d_128, 105551}, // __builtin_ia32_vpconflictsi_128_mask
- {Intrinsic::x86_avx512_mask_conflict_d_256, 105588}, // __builtin_ia32_vpconflictsi_256_mask
- {Intrinsic::x86_avx512_mask_conflict_d_512, 105625}, // __builtin_ia32_vpconflictsi_512_mask
- {Intrinsic::x86_avx512_vpdpbusd_128, 120146}, // __builtin_ia32_vpdpbusd128
- {Intrinsic::x86_avx512_vpdpbusd_256, 120173}, // __builtin_ia32_vpdpbusd256
- {Intrinsic::x86_avx512_vpdpbusd_512, 120200}, // __builtin_ia32_vpdpbusd512
- {Intrinsic::x86_avx512_vpdpbusds_128, 120227}, // __builtin_ia32_vpdpbusds128
- {Intrinsic::x86_avx512_vpdpbusds_256, 120255}, // __builtin_ia32_vpdpbusds256
- {Intrinsic::x86_avx512_vpdpbusds_512, 120283}, // __builtin_ia32_vpdpbusds512
- {Intrinsic::x86_avx512_vpdpwssd_128, 120311}, // __builtin_ia32_vpdpwssd128
- {Intrinsic::x86_avx512_vpdpwssd_256, 120338}, // __builtin_ia32_vpdpwssd256
- {Intrinsic::x86_avx512_vpdpwssd_512, 120365}, // __builtin_ia32_vpdpwssd512
- {Intrinsic::x86_avx512_vpdpwssds_128, 120392}, // __builtin_ia32_vpdpwssds128
- {Intrinsic::x86_avx512_vpdpwssds_256, 120420}, // __builtin_ia32_vpdpwssds256
- {Intrinsic::x86_avx512_vpdpwssds_512, 120448}, // __builtin_ia32_vpdpwssds512
- {Intrinsic::x86_avx512_vpermi2var_d_128, 120476}, // __builtin_ia32_vpermi2vard128
- {Intrinsic::x86_avx512_vpermi2var_d_256, 120506}, // __builtin_ia32_vpermi2vard256
- {Intrinsic::x86_avx512_vpermi2var_d_512, 120536}, // __builtin_ia32_vpermi2vard512
- {Intrinsic::x86_avx512_vpermi2var_hi_128, 120566}, // __builtin_ia32_vpermi2varhi128
- {Intrinsic::x86_avx512_vpermi2var_hi_256, 120597}, // __builtin_ia32_vpermi2varhi256
- {Intrinsic::x86_avx512_vpermi2var_hi_512, 120628}, // __builtin_ia32_vpermi2varhi512
- {Intrinsic::x86_avx512_vpermi2var_pd_128, 120659}, // __builtin_ia32_vpermi2varpd128
- {Intrinsic::x86_avx512_vpermi2var_pd_256, 120690}, // __builtin_ia32_vpermi2varpd256
- {Intrinsic::x86_avx512_vpermi2var_pd_512, 120721}, // __builtin_ia32_vpermi2varpd512
- {Intrinsic::x86_avx512_vpermi2var_ps_128, 120752}, // __builtin_ia32_vpermi2varps128
- {Intrinsic::x86_avx512_vpermi2var_ps_256, 120783}, // __builtin_ia32_vpermi2varps256
- {Intrinsic::x86_avx512_vpermi2var_ps_512, 120814}, // __builtin_ia32_vpermi2varps512
- {Intrinsic::x86_avx512_vpermi2var_q_128, 120845}, // __builtin_ia32_vpermi2varq128
- {Intrinsic::x86_avx512_vpermi2var_q_256, 120875}, // __builtin_ia32_vpermi2varq256
- {Intrinsic::x86_avx512_vpermi2var_q_512, 120905}, // __builtin_ia32_vpermi2varq512
- {Intrinsic::x86_avx512_vpermi2var_qi_128, 120935}, // __builtin_ia32_vpermi2varqi128
- {Intrinsic::x86_avx512_vpermi2var_qi_256, 120966}, // __builtin_ia32_vpermi2varqi256
- {Intrinsic::x86_avx512_vpermi2var_qi_512, 120997}, // __builtin_ia32_vpermi2varqi512
- {Intrinsic::x86_xop_vpermil2pd, 130088}, // __builtin_ia32_vpermil2pd
- {Intrinsic::x86_xop_vpermil2pd_256, 130114}, // __builtin_ia32_vpermil2pd256
- {Intrinsic::x86_xop_vpermil2ps, 130143}, // __builtin_ia32_vpermil2ps
- {Intrinsic::x86_xop_vpermil2ps_256, 130169}, // __builtin_ia32_vpermil2ps256
- {Intrinsic::x86_avx_vpermilvar_pd, 100710}, // __builtin_ia32_vpermilvarpd
- {Intrinsic::x86_avx_vpermilvar_pd_256, 100738}, // __builtin_ia32_vpermilvarpd256
- {Intrinsic::x86_avx512_vpermilvar_pd_512, 121028}, // __builtin_ia32_vpermilvarpd512
- {Intrinsic::x86_avx_vpermilvar_ps, 100769}, // __builtin_ia32_vpermilvarps
- {Intrinsic::x86_avx_vpermilvar_ps_256, 100797}, // __builtin_ia32_vpermilvarps256
- {Intrinsic::x86_avx512_vpermilvar_ps_512, 121059}, // __builtin_ia32_vpermilvarps512
- {Intrinsic::x86_xop_vphaddbd, 130198}, // __builtin_ia32_vphaddbd
- {Intrinsic::x86_xop_vphaddbq, 130222}, // __builtin_ia32_vphaddbq
- {Intrinsic::x86_xop_vphaddbw, 130246}, // __builtin_ia32_vphaddbw
- {Intrinsic::x86_xop_vphadddq, 130270}, // __builtin_ia32_vphadddq
- {Intrinsic::x86_xop_vphaddubd, 130294}, // __builtin_ia32_vphaddubd
- {Intrinsic::x86_xop_vphaddubq, 130319}, // __builtin_ia32_vphaddubq
- {Intrinsic::x86_xop_vphaddubw, 130344}, // __builtin_ia32_vphaddubw
- {Intrinsic::x86_xop_vphaddudq, 130369}, // __builtin_ia32_vphaddudq
- {Intrinsic::x86_xop_vphadduwd, 130394}, // __builtin_ia32_vphadduwd
- {Intrinsic::x86_xop_vphadduwq, 130419}, // __builtin_ia32_vphadduwq
- {Intrinsic::x86_xop_vphaddwd, 130444}, // __builtin_ia32_vphaddwd
- {Intrinsic::x86_xop_vphaddwq, 130468}, // __builtin_ia32_vphaddwq
- {Intrinsic::x86_xop_vphsubbw, 130492}, // __builtin_ia32_vphsubbw
- {Intrinsic::x86_xop_vphsubdq, 130516}, // __builtin_ia32_vphsubdq
- {Intrinsic::x86_xop_vphsubwd, 130540}, // __builtin_ia32_vphsubwd
- {Intrinsic::x86_xop_vpmacsdd, 130564}, // __builtin_ia32_vpmacsdd
- {Intrinsic::x86_xop_vpmacsdqh, 130588}, // __builtin_ia32_vpmacsdqh
- {Intrinsic::x86_xop_vpmacsdql, 130613}, // __builtin_ia32_vpmacsdql
- {Intrinsic::x86_xop_vpmacssdd, 130638}, // __builtin_ia32_vpmacssdd
- {Intrinsic::x86_xop_vpmacssdqh, 130663}, // __builtin_ia32_vpmacssdqh
- {Intrinsic::x86_xop_vpmacssdql, 130689}, // __builtin_ia32_vpmacssdql
- {Intrinsic::x86_xop_vpmacsswd, 130715}, // __builtin_ia32_vpmacsswd
- {Intrinsic::x86_xop_vpmacssww, 130740}, // __builtin_ia32_vpmacssww
- {Intrinsic::x86_xop_vpmacswd, 130765}, // __builtin_ia32_vpmacswd
- {Intrinsic::x86_xop_vpmacsww, 130789}, // __builtin_ia32_vpmacsww
- {Intrinsic::x86_xop_vpmadcsswd, 130813}, // __builtin_ia32_vpmadcsswd
- {Intrinsic::x86_xop_vpmadcswd, 130839}, // __builtin_ia32_vpmadcswd
- {Intrinsic::x86_avx512_vpmadd52h_uq_128, 121090}, // __builtin_ia32_vpmadd52huq128
- {Intrinsic::x86_avx512_vpmadd52h_uq_256, 121120}, // __builtin_ia32_vpmadd52huq256
- {Intrinsic::x86_avx512_vpmadd52h_uq_512, 121150}, // __builtin_ia32_vpmadd52huq512
- {Intrinsic::x86_avx512_vpmadd52l_uq_128, 121180}, // __builtin_ia32_vpmadd52luq128
- {Intrinsic::x86_avx512_vpmadd52l_uq_256, 121210}, // __builtin_ia32_vpmadd52luq256
- {Intrinsic::x86_avx512_vpmadd52l_uq_512, 121240}, // __builtin_ia32_vpmadd52luq512
- {Intrinsic::x86_avx512_mask_pmultishift_qb_128, 112710}, // __builtin_ia32_vpmultishiftqb128_mask
- {Intrinsic::x86_avx512_mask_pmultishift_qb_256, 112748}, // __builtin_ia32_vpmultishiftqb256_mask
- {Intrinsic::x86_avx512_mask_pmultishift_qb_512, 112786}, // __builtin_ia32_vpmultishiftqb512_mask
- {Intrinsic::x86_xop_vpperm, 130864}, // __builtin_ia32_vpperm
- {Intrinsic::x86_xop_vprotb, 130886}, // __builtin_ia32_vprotb
- {Intrinsic::x86_xop_vprotbi, 130908}, // __builtin_ia32_vprotbi
- {Intrinsic::x86_xop_vprotd, 130931}, // __builtin_ia32_vprotd
- {Intrinsic::x86_xop_vprotdi, 130953}, // __builtin_ia32_vprotdi
- {Intrinsic::x86_xop_vprotq, 130976}, // __builtin_ia32_vprotq
- {Intrinsic::x86_xop_vprotqi, 130998}, // __builtin_ia32_vprotqi
- {Intrinsic::x86_xop_vprotw, 131021}, // __builtin_ia32_vprotw
- {Intrinsic::x86_xop_vprotwi, 131043}, // __builtin_ia32_vprotwi
- {Intrinsic::x86_xop_vpshab, 131066}, // __builtin_ia32_vpshab
- {Intrinsic::x86_xop_vpshad, 131088}, // __builtin_ia32_vpshad
- {Intrinsic::x86_xop_vpshaq, 131110}, // __builtin_ia32_vpshaq
- {Intrinsic::x86_xop_vpshaw, 131132}, // __builtin_ia32_vpshaw
- {Intrinsic::x86_xop_vpshlb, 131154}, // __builtin_ia32_vpshlb
- {Intrinsic::x86_xop_vpshld, 131176}, // __builtin_ia32_vpshld
- {Intrinsic::x86_avx512_vpshld_d_128, 121270}, // __builtin_ia32_vpshldd128
- {Intrinsic::x86_avx512_vpshld_d_256, 121296}, // __builtin_ia32_vpshldd256
- {Intrinsic::x86_avx512_vpshld_d_512, 121322}, // __builtin_ia32_vpshldd512
- {Intrinsic::x86_avx512_vpshld_q_128, 121348}, // __builtin_ia32_vpshldq128
- {Intrinsic::x86_avx512_vpshld_q_256, 121374}, // __builtin_ia32_vpshldq256
- {Intrinsic::x86_avx512_vpshld_q_512, 121400}, // __builtin_ia32_vpshldq512
- {Intrinsic::x86_avx512_mask_vpshldv_d_128, 114128}, // __builtin_ia32_vpshldvd128_mask
- {Intrinsic::x86_avx512_maskz_vpshldv_d_128, 115086}, // __builtin_ia32_vpshldvd128_maskz
- {Intrinsic::x86_avx512_mask_vpshldv_d_256, 114160}, // __builtin_ia32_vpshldvd256_mask
- {Intrinsic::x86_avx512_maskz_vpshldv_d_256, 115119}, // __builtin_ia32_vpshldvd256_maskz
- {Intrinsic::x86_avx512_mask_vpshldv_d_512, 114192}, // __builtin_ia32_vpshldvd512_mask
- {Intrinsic::x86_avx512_maskz_vpshldv_d_512, 115152}, // __builtin_ia32_vpshldvd512_maskz
- {Intrinsic::x86_avx512_mask_vpshldv_q_128, 114224}, // __builtin_ia32_vpshldvq128_mask
- {Intrinsic::x86_avx512_maskz_vpshldv_q_128, 115185}, // __builtin_ia32_vpshldvq128_maskz
- {Intrinsic::x86_avx512_mask_vpshldv_q_256, 114256}, // __builtin_ia32_vpshldvq256_mask
- {Intrinsic::x86_avx512_maskz_vpshldv_q_256, 115218}, // __builtin_ia32_vpshldvq256_maskz
- {Intrinsic::x86_avx512_mask_vpshldv_q_512, 114288}, // __builtin_ia32_vpshldvq512_mask
- {Intrinsic::x86_avx512_maskz_vpshldv_q_512, 115251}, // __builtin_ia32_vpshldvq512_maskz
- {Intrinsic::x86_avx512_mask_vpshldv_w_128, 114320}, // __builtin_ia32_vpshldvw128_mask
- {Intrinsic::x86_avx512_maskz_vpshldv_w_128, 115284}, // __builtin_ia32_vpshldvw128_maskz
- {Intrinsic::x86_avx512_mask_vpshldv_w_256, 114352}, // __builtin_ia32_vpshldvw256_mask
- {Intrinsic::x86_avx512_maskz_vpshldv_w_256, 115317}, // __builtin_ia32_vpshldvw256_maskz
- {Intrinsic::x86_avx512_mask_vpshldv_w_512, 114384}, // __builtin_ia32_vpshldvw512_mask
- {Intrinsic::x86_avx512_maskz_vpshldv_w_512, 115350}, // __builtin_ia32_vpshldvw512_maskz
- {Intrinsic::x86_avx512_vpshld_w_128, 121426}, // __builtin_ia32_vpshldw128
- {Intrinsic::x86_avx512_vpshld_w_256, 121452}, // __builtin_ia32_vpshldw256
- {Intrinsic::x86_avx512_vpshld_w_512, 121478}, // __builtin_ia32_vpshldw512
- {Intrinsic::x86_xop_vpshlq, 131198}, // __builtin_ia32_vpshlq
- {Intrinsic::x86_xop_vpshlw, 131220}, // __builtin_ia32_vpshlw
- {Intrinsic::x86_avx512_vpshrd_d_128, 121504}, // __builtin_ia32_vpshrdd128
- {Intrinsic::x86_avx512_vpshrd_d_256, 121530}, // __builtin_ia32_vpshrdd256
- {Intrinsic::x86_avx512_vpshrd_d_512, 121556}, // __builtin_ia32_vpshrdd512
- {Intrinsic::x86_avx512_vpshrd_q_128, 121582}, // __builtin_ia32_vpshrdq128
- {Intrinsic::x86_avx512_vpshrd_q_256, 121608}, // __builtin_ia32_vpshrdq256
- {Intrinsic::x86_avx512_vpshrd_q_512, 121634}, // __builtin_ia32_vpshrdq512
- {Intrinsic::x86_avx512_mask_vpshrdv_d_128, 114416}, // __builtin_ia32_vpshrdvd128_mask
- {Intrinsic::x86_avx512_maskz_vpshrdv_d_128, 115383}, // __builtin_ia32_vpshrdvd128_maskz
- {Intrinsic::x86_avx512_mask_vpshrdv_d_256, 114448}, // __builtin_ia32_vpshrdvd256_mask
- {Intrinsic::x86_avx512_maskz_vpshrdv_d_256, 115416}, // __builtin_ia32_vpshrdvd256_maskz
- {Intrinsic::x86_avx512_mask_vpshrdv_d_512, 114480}, // __builtin_ia32_vpshrdvd512_mask
- {Intrinsic::x86_avx512_maskz_vpshrdv_d_512, 115449}, // __builtin_ia32_vpshrdvd512_maskz
- {Intrinsic::x86_avx512_mask_vpshrdv_q_128, 114512}, // __builtin_ia32_vpshrdvq128_mask
- {Intrinsic::x86_avx512_maskz_vpshrdv_q_128, 115482}, // __builtin_ia32_vpshrdvq128_maskz
- {Intrinsic::x86_avx512_mask_vpshrdv_q_256, 114544}, // __builtin_ia32_vpshrdvq256_mask
- {Intrinsic::x86_avx512_maskz_vpshrdv_q_256, 115515}, // __builtin_ia32_vpshrdvq256_maskz
- {Intrinsic::x86_avx512_mask_vpshrdv_q_512, 114576}, // __builtin_ia32_vpshrdvq512_mask
- {Intrinsic::x86_avx512_maskz_vpshrdv_q_512, 115548}, // __builtin_ia32_vpshrdvq512_maskz
- {Intrinsic::x86_avx512_mask_vpshrdv_w_128, 114608}, // __builtin_ia32_vpshrdvw128_mask
- {Intrinsic::x86_avx512_maskz_vpshrdv_w_128, 115581}, // __builtin_ia32_vpshrdvw128_maskz
- {Intrinsic::x86_avx512_mask_vpshrdv_w_256, 114640}, // __builtin_ia32_vpshrdvw256_mask
- {Intrinsic::x86_avx512_maskz_vpshrdv_w_256, 115614}, // __builtin_ia32_vpshrdvw256_maskz
- {Intrinsic::x86_avx512_mask_vpshrdv_w_512, 114672}, // __builtin_ia32_vpshrdvw512_mask
- {Intrinsic::x86_avx512_maskz_vpshrdv_w_512, 115647}, // __builtin_ia32_vpshrdvw512_maskz
- {Intrinsic::x86_avx512_vpshrd_w_128, 121660}, // __builtin_ia32_vpshrdw128
- {Intrinsic::x86_avx512_vpshrd_w_256, 121686}, // __builtin_ia32_vpshrdw256
- {Intrinsic::x86_avx512_vpshrd_w_512, 121712}, // __builtin_ia32_vpshrdw512
- {Intrinsic::x86_avx512_mask_vpshufbitqmb_128, 114704}, // __builtin_ia32_vpshufbitqmb128_mask
- {Intrinsic::x86_avx512_mask_vpshufbitqmb_256, 114740}, // __builtin_ia32_vpshufbitqmb256_mask
- {Intrinsic::x86_avx512_mask_vpshufbitqmb_512, 114776}, // __builtin_ia32_vpshufbitqmb512_mask
- {Intrinsic::x86_avx_vtestc_pd, 100828}, // __builtin_ia32_vtestcpd
- {Intrinsic::x86_avx_vtestc_pd_256, 100852}, // __builtin_ia32_vtestcpd256
- {Intrinsic::x86_avx_vtestc_ps, 100879}, // __builtin_ia32_vtestcps
- {Intrinsic::x86_avx_vtestc_ps_256, 100903}, // __builtin_ia32_vtestcps256
- {Intrinsic::x86_avx_vtestnzc_pd, 100930}, // __builtin_ia32_vtestnzcpd
- {Intrinsic::x86_avx_vtestnzc_pd_256, 100956}, // __builtin_ia32_vtestnzcpd256
- {Intrinsic::x86_avx_vtestnzc_ps, 100985}, // __builtin_ia32_vtestnzcps
- {Intrinsic::x86_avx_vtestnzc_ps_256, 101011}, // __builtin_ia32_vtestnzcps256
- {Intrinsic::x86_avx_vtestz_pd, 101040}, // __builtin_ia32_vtestzpd
- {Intrinsic::x86_avx_vtestz_pd_256, 101064}, // __builtin_ia32_vtestzpd256
- {Intrinsic::x86_avx_vtestz_ps, 101091}, // __builtin_ia32_vtestzps
- {Intrinsic::x86_avx_vtestz_ps_256, 101115}, // __builtin_ia32_vtestzps256
- {Intrinsic::x86_avx_vzeroall, 101142}, // __builtin_ia32_vzeroall
- {Intrinsic::x86_avx_vzeroupper, 101166}, // __builtin_ia32_vzeroupper
- {Intrinsic::x86_wbinvd, 129442}, // __builtin_ia32_wbinvd
- {Intrinsic::x86_wbnoinvd, 129464}, // __builtin_ia32_wbnoinvd
- {Intrinsic::x86_wrfsbase_32, 129488}, // __builtin_ia32_wrfsbase32
- {Intrinsic::x86_wrfsbase_64, 129514}, // __builtin_ia32_wrfsbase64
- {Intrinsic::x86_wrgsbase_32, 129540}, // __builtin_ia32_wrgsbase32
- {Intrinsic::x86_wrgsbase_64, 129566}, // __builtin_ia32_wrgsbase64
- {Intrinsic::x86_flags_write_u32, 122164}, // __builtin_ia32_writeeflags_u32
- {Intrinsic::x86_flags_write_u64, 122195}, // __builtin_ia32_writeeflags_u64
- {Intrinsic::x86_wrpkru, 129592}, // __builtin_ia32_wrpkru
- {Intrinsic::x86_wrssd, 129614}, // __builtin_ia32_wrssd
- {Intrinsic::x86_wrssq, 129635}, // __builtin_ia32_wrssq
- {Intrinsic::x86_wrussd, 129656}, // __builtin_ia32_wrussd
- {Intrinsic::x86_wrussq, 129678}, // __builtin_ia32_wrussq
- {Intrinsic::x86_xabort, 129700}, // __builtin_ia32_xabort
- {Intrinsic::x86_xbegin, 129722}, // __builtin_ia32_xbegin
- {Intrinsic::x86_xend, 129744}, // __builtin_ia32_xend
- {Intrinsic::x86_xtest, 131242}, // __builtin_ia32_xtest
+ {Intrinsic::x86_avx512_add_pd_512, 104784}, // __builtin_ia32_addpd512
+ {Intrinsic::x86_avx512_add_ps_512, 104808}, // __builtin_ia32_addps512
+ {Intrinsic::x86_avx512_mask_add_sd_round, 105882}, // __builtin_ia32_addsd_round_mask
+ {Intrinsic::x86_avx512_mask_add_ss_round, 105914}, // __builtin_ia32_addss_round_mask
+ {Intrinsic::x86_sse3_addsub_pd, 123216}, // __builtin_ia32_addsubpd
+ {Intrinsic::x86_avx_addsub_pd_256, 101424}, // __builtin_ia32_addsubpd256
+ {Intrinsic::x86_sse3_addsub_ps, 123240}, // __builtin_ia32_addsubps
+ {Intrinsic::x86_avx_addsub_ps_256, 101451}, // __builtin_ia32_addsubps256
+ {Intrinsic::x86_aesni_aesdec, 101041}, // __builtin_ia32_aesdec128
+ {Intrinsic::x86_aesni_aesdec_256, 101066}, // __builtin_ia32_aesdec256
+ {Intrinsic::x86_aesni_aesdec_512, 101091}, // __builtin_ia32_aesdec512
+ {Intrinsic::x86_aesni_aesdeclast, 101116}, // __builtin_ia32_aesdeclast128
+ {Intrinsic::x86_aesni_aesdeclast_256, 101145}, // __builtin_ia32_aesdeclast256
+ {Intrinsic::x86_aesni_aesdeclast_512, 101174}, // __builtin_ia32_aesdeclast512
+ {Intrinsic::x86_aesni_aesenc, 101203}, // __builtin_ia32_aesenc128
+ {Intrinsic::x86_aesni_aesenc_256, 101228}, // __builtin_ia32_aesenc256
+ {Intrinsic::x86_aesni_aesenc_512, 101253}, // __builtin_ia32_aesenc512
+ {Intrinsic::x86_aesni_aesenclast, 101278}, // __builtin_ia32_aesenclast128
+ {Intrinsic::x86_aesni_aesenclast_256, 101307}, // __builtin_ia32_aesenclast256
+ {Intrinsic::x86_aesni_aesenclast_512, 101336}, // __builtin_ia32_aesenclast512
+ {Intrinsic::x86_aesni_aesimc, 101365}, // __builtin_ia32_aesimc128
+ {Intrinsic::x86_aesni_aeskeygenassist, 101390}, // __builtin_ia32_aeskeygenassist128
+ {Intrinsic::x86_bmi_bextr_32, 117978}, // __builtin_ia32_bextr_u32
+ {Intrinsic::x86_bmi_bextr_64, 118003}, // __builtin_ia32_bextr_u64
+ {Intrinsic::x86_tbm_bextri_u32, 125035}, // __builtin_ia32_bextri_u32
+ {Intrinsic::x86_tbm_bextri_u64, 125061}, // __builtin_ia32_bextri_u64
+ {Intrinsic::x86_sse41_blendvpd, 123417}, // __builtin_ia32_blendvpd
+ {Intrinsic::x86_avx_blendv_pd_256, 101478}, // __builtin_ia32_blendvpd256
+ {Intrinsic::x86_sse41_blendvps, 123441}, // __builtin_ia32_blendvps
+ {Intrinsic::x86_avx_blendv_ps_256, 101505}, // __builtin_ia32_blendvps256
+ {Intrinsic::x86_avx512_broadcastmb_128, 104832}, // __builtin_ia32_broadcastmb128
+ {Intrinsic::x86_avx512_broadcastmb_256, 104862}, // __builtin_ia32_broadcastmb256
+ {Intrinsic::x86_avx512_broadcastmb_512, 104892}, // __builtin_ia32_broadcastmb512
+ {Intrinsic::x86_avx512_broadcastmw_128, 104922}, // __builtin_ia32_broadcastmw128
+ {Intrinsic::x86_avx512_broadcastmw_256, 104952}, // __builtin_ia32_broadcastmw256
+ {Intrinsic::x86_avx512_broadcastmw_512, 104982}, // __builtin_ia32_broadcastmw512
+ {Intrinsic::x86_bmi_bzhi_64, 118051}, // __builtin_ia32_bzhi_di
+ {Intrinsic::x86_bmi_bzhi_32, 118028}, // __builtin_ia32_bzhi_si
+ {Intrinsic::x86_cldemote, 118166}, // __builtin_ia32_cldemote
+ {Intrinsic::x86_sse2_clflush, 121827}, // __builtin_ia32_clflush
+ {Intrinsic::x86_clflushopt, 118190}, // __builtin_ia32_clflushopt
+ {Intrinsic::x86_clrssbsy, 118216}, // __builtin_ia32_clrssbsy
+ {Intrinsic::x86_clwb, 118240}, // __builtin_ia32_clwb
+ {Intrinsic::x86_clzero, 118260}, // __builtin_ia32_clzero
+ {Intrinsic::x86_sse2_cmp_sd, 121850}, // __builtin_ia32_cmpsd
+ {Intrinsic::x86_avx512_mask_cmp_sd, 105946}, // __builtin_ia32_cmpsd_mask
+ {Intrinsic::x86_sse_cmp_ss, 121046}, // __builtin_ia32_cmpss
+ {Intrinsic::x86_avx512_mask_cmp_ss, 105972}, // __builtin_ia32_cmpss_mask
+ {Intrinsic::x86_sse_comieq_ss, 121067}, // __builtin_ia32_comieq
+ {Intrinsic::x86_sse_comige_ss, 121089}, // __builtin_ia32_comige
+ {Intrinsic::x86_sse_comigt_ss, 121111}, // __builtin_ia32_comigt
+ {Intrinsic::x86_sse_comile_ss, 121133}, // __builtin_ia32_comile
+ {Intrinsic::x86_sse_comilt_ss, 121155}, // __builtin_ia32_comilt
+ {Intrinsic::x86_sse_comineq_ss, 121177}, // __builtin_ia32_comineq
+ {Intrinsic::x86_sse2_comieq_sd, 121871}, // __builtin_ia32_comisdeq
+ {Intrinsic::x86_sse2_comige_sd, 121895}, // __builtin_ia32_comisdge
+ {Intrinsic::x86_sse2_comigt_sd, 121919}, // __builtin_ia32_comisdgt
+ {Intrinsic::x86_sse2_comile_sd, 121943}, // __builtin_ia32_comisdle
+ {Intrinsic::x86_sse2_comilt_sd, 121967}, // __builtin_ia32_comisdlt
+ {Intrinsic::x86_sse2_comineq_sd, 121991}, // __builtin_ia32_comisdneq
+ {Intrinsic::x86_sse42_crc32_64_64, 123879}, // __builtin_ia32_crc32di
+ {Intrinsic::x86_sse42_crc32_32_16, 123810}, // __builtin_ia32_crc32hi
+ {Intrinsic::x86_sse42_crc32_32_8, 123856}, // __builtin_ia32_crc32qi
+ {Intrinsic::x86_sse42_crc32_32_32, 123833}, // __builtin_ia32_crc32si
+ {Intrinsic::x86_sse2_cvtpd2dq, 122016}, // __builtin_ia32_cvtpd2dq
+ {Intrinsic::x86_avx512_mask_cvtpd2dq_128, 105998}, // __builtin_ia32_cvtpd2dq128_mask
+ {Intrinsic::x86_avx_cvt_pd2dq_256, 101559}, // __builtin_ia32_cvtpd2dq256
+ {Intrinsic::x86_avx512_mask_cvtpd2dq_512, 106030}, // __builtin_ia32_cvtpd2dq512_mask
+ {Intrinsic::x86_sse_cvtpd2pi, 121200}, // __builtin_ia32_cvtpd2pi
+ {Intrinsic::x86_sse2_cvtpd2ps, 122040}, // __builtin_ia32_cvtpd2ps
+ {Intrinsic::x86_avx_cvt_pd2_ps_256, 101532}, // __builtin_ia32_cvtpd2ps256
+ {Intrinsic::x86_avx512_mask_cvtpd2ps_512, 106091}, // __builtin_ia32_cvtpd2ps512_mask
+ {Intrinsic::x86_avx512_mask_cvtpd2ps, 106062}, // __builtin_ia32_cvtpd2ps_mask
+ {Intrinsic::x86_avx512_mask_cvtpd2qq_128, 106123}, // __builtin_ia32_cvtpd2qq128_mask
+ {Intrinsic::x86_avx512_mask_cvtpd2qq_256, 106155}, // __builtin_ia32_cvtpd2qq256_mask
+ {Intrinsic::x86_avx512_mask_cvtpd2qq_512, 106187}, // __builtin_ia32_cvtpd2qq512_mask
+ {Intrinsic::x86_avx512_mask_cvtpd2udq_128, 106219}, // __builtin_ia32_cvtpd2udq128_mask
+ {Intrinsic::x86_avx512_mask_cvtpd2udq_256, 106252}, // __builtin_ia32_cvtpd2udq256_mask
+ {Intrinsic::x86_avx512_mask_cvtpd2udq_512, 106285}, // __builtin_ia32_cvtpd2udq512_mask
+ {Intrinsic::x86_avx512_mask_cvtpd2uqq_128, 106318}, // __builtin_ia32_cvtpd2uqq128_mask
+ {Intrinsic::x86_avx512_mask_cvtpd2uqq_256, 106351}, // __builtin_ia32_cvtpd2uqq256_mask
+ {Intrinsic::x86_avx512_mask_cvtpd2uqq_512, 106384}, // __builtin_ia32_cvtpd2uqq512_mask
+ {Intrinsic::x86_sse_cvtpi2pd, 121224}, // __builtin_ia32_cvtpi2pd
+ {Intrinsic::x86_sse_cvtpi2ps, 121248}, // __builtin_ia32_cvtpi2ps
+ {Intrinsic::x86_sse2_cvtps2dq, 122064}, // __builtin_ia32_cvtps2dq
+ {Intrinsic::x86_avx512_mask_cvtps2dq_128, 106417}, // __builtin_ia32_cvtps2dq128_mask
+ {Intrinsic::x86_avx_cvt_ps2dq_256, 101586}, // __builtin_ia32_cvtps2dq256
+ {Intrinsic::x86_avx512_mask_cvtps2dq_256, 106449}, // __builtin_ia32_cvtps2dq256_mask
+ {Intrinsic::x86_avx512_mask_cvtps2dq_512, 106481}, // __builtin_ia32_cvtps2dq512_mask
+ {Intrinsic::x86_avx512_mask_cvtps2pd_512, 106513}, // __builtin_ia32_cvtps2pd512_mask
+ {Intrinsic::x86_sse_cvtps2pi, 121272}, // __builtin_ia32_cvtps2pi
+ {Intrinsic::x86_avx512_mask_cvtps2qq_128, 106545}, // __builtin_ia32_cvtps2qq128_mask
+ {Intrinsic::x86_avx512_mask_cvtps2qq_256, 106577}, // __builtin_ia32_cvtps2qq256_mask
+ {Intrinsic::x86_avx512_mask_cvtps2qq_512, 106609}, // __builtin_ia32_cvtps2qq512_mask
+ {Intrinsic::x86_avx512_mask_cvtps2udq_128, 106641}, // __builtin_ia32_cvtps2udq128_mask
+ {Intrinsic::x86_avx512_mask_cvtps2udq_256, 106674}, // __builtin_ia32_cvtps2udq256_mask
+ {Intrinsic::x86_avx512_mask_cvtps2udq_512, 106707}, // __builtin_ia32_cvtps2udq512_mask
+ {Intrinsic::x86_avx512_mask_cvtps2uqq_128, 106740}, // __builtin_ia32_cvtps2uqq128_mask
+ {Intrinsic::x86_avx512_mask_cvtps2uqq_256, 106773}, // __builtin_ia32_cvtps2uqq256_mask
+ {Intrinsic::x86_avx512_mask_cvtps2uqq_512, 106806}, // __builtin_ia32_cvtps2uqq512_mask
+ {Intrinsic::x86_avx512_mask_cvtqq2ps_128, 106839}, // __builtin_ia32_cvtqq2ps128_mask
+ {Intrinsic::x86_sse2_cvtsd2si, 122088}, // __builtin_ia32_cvtsd2si
+ {Intrinsic::x86_sse2_cvtsd2si64, 122112}, // __builtin_ia32_cvtsd2si64
+ {Intrinsic::x86_sse2_cvtsd2ss, 122138}, // __builtin_ia32_cvtsd2ss
+ {Intrinsic::x86_avx512_mask_cvtsd2ss_round, 106871}, // __builtin_ia32_cvtsd2ss_round_mask
+ {Intrinsic::x86_avx512_cvtsi2sd64, 105204}, // __builtin_ia32_cvtsi2sd64
+ {Intrinsic::x86_avx512_cvtsi2ss32, 105230}, // __builtin_ia32_cvtsi2ss32
+ {Intrinsic::x86_avx512_cvtsi2ss64, 105256}, // __builtin_ia32_cvtsi2ss64
+ {Intrinsic::x86_avx512_mask_cvtss2sd_round, 106906}, // __builtin_ia32_cvtss2sd_round_mask
+ {Intrinsic::x86_sse_cvtss2si, 121296}, // __builtin_ia32_cvtss2si
+ {Intrinsic::x86_sse_cvtss2si64, 121320}, // __builtin_ia32_cvtss2si64
+ {Intrinsic::x86_sse2_cvttpd2dq, 122162}, // __builtin_ia32_cvttpd2dq
+ {Intrinsic::x86_avx512_mask_cvttpd2dq_128, 106941}, // __builtin_ia32_cvttpd2dq128_mask
+ {Intrinsic::x86_avx_cvtt_pd2dq_256, 101613}, // __builtin_ia32_cvttpd2dq256
+ {Intrinsic::x86_avx512_mask_cvttpd2dq_512, 106974}, // __builtin_ia32_cvttpd2dq512_mask
+ {Intrinsic::x86_sse_cvttpd2pi, 121346}, // __builtin_ia32_cvttpd2pi
+ {Intrinsic::x86_avx512_mask_cvttpd2qq_128, 107007}, // __builtin_ia32_cvttpd2qq128_mask
+ {Intrinsic::x86_avx512_mask_cvttpd2qq_256, 107040}, // __builtin_ia32_cvttpd2qq256_mask
+ {Intrinsic::x86_avx512_mask_cvttpd2qq_512, 107073}, // __builtin_ia32_cvttpd2qq512_mask
+ {Intrinsic::x86_avx512_mask_cvttpd2udq_128, 107106}, // __builtin_ia32_cvttpd2udq128_mask
+ {Intrinsic::x86_avx512_mask_cvttpd2udq_256, 107140}, // __builtin_ia32_cvttpd2udq256_mask
+ {Intrinsic::x86_avx512_mask_cvttpd2udq_512, 107174}, // __builtin_ia32_cvttpd2udq512_mask
+ {Intrinsic::x86_avx512_mask_cvttpd2uqq_128, 107208}, // __builtin_ia32_cvttpd2uqq128_mask
+ {Intrinsic::x86_avx512_mask_cvttpd2uqq_256, 107242}, // __builtin_ia32_cvttpd2uqq256_mask
+ {Intrinsic::x86_avx512_mask_cvttpd2uqq_512, 107276}, // __builtin_ia32_cvttpd2uqq512_mask
+ {Intrinsic::x86_sse2_cvttps2dq, 122187}, // __builtin_ia32_cvttps2dq
+ {Intrinsic::x86_avx_cvtt_ps2dq_256, 101641}, // __builtin_ia32_cvttps2dq256
+ {Intrinsic::x86_avx512_mask_cvttps2dq_512, 107310}, // __builtin_ia32_cvttps2dq512_mask
+ {Intrinsic::x86_sse_cvttps2pi, 121371}, // __builtin_ia32_cvttps2pi
+ {Intrinsic::x86_avx512_mask_cvttps2qq_128, 107343}, // __builtin_ia32_cvttps2qq128_mask
+ {Intrinsic::x86_avx512_mask_cvttps2qq_256, 107376}, // __builtin_ia32_cvttps2qq256_mask
+ {Intrinsic::x86_avx512_mask_cvttps2qq_512, 107409}, // __builtin_ia32_cvttps2qq512_mask
+ {Intrinsic::x86_avx512_mask_cvttps2udq_128, 107442}, // __builtin_ia32_cvttps2udq128_mask
+ {Intrinsic::x86_avx512_mask_cvttps2udq_256, 107476}, // __builtin_ia32_cvttps2udq256_mask
+ {Intrinsic::x86_avx512_mask_cvttps2udq_512, 107510}, // __builtin_ia32_cvttps2udq512_mask
+ {Intrinsic::x86_avx512_mask_cvttps2uqq_128, 107544}, // __builtin_ia32_cvttps2uqq128_mask
+ {Intrinsic::x86_avx512_mask_cvttps2uqq_256, 107578}, // __builtin_ia32_cvttps2uqq256_mask
+ {Intrinsic::x86_avx512_mask_cvttps2uqq_512, 107612}, // __builtin_ia32_cvttps2uqq512_mask
+ {Intrinsic::x86_sse2_cvttsd2si, 122212}, // __builtin_ia32_cvttsd2si
+ {Intrinsic::x86_sse2_cvttsd2si64, 122237}, // __builtin_ia32_cvttsd2si64
+ {Intrinsic::x86_sse_cvttss2si, 121396}, // __builtin_ia32_cvttss2si
+ {Intrinsic::x86_sse_cvttss2si64, 121421}, // __builtin_ia32_cvttss2si64
+ {Intrinsic::x86_avx512_mask_cvtuqq2ps_128, 107646}, // __builtin_ia32_cvtuqq2ps128_mask
+ {Intrinsic::x86_avx512_cvtusi642sd, 105537}, // __builtin_ia32_cvtusi2sd64
+ {Intrinsic::x86_avx512_cvtusi2ss, 105510}, // __builtin_ia32_cvtusi2ss32
+ {Intrinsic::x86_avx512_cvtusi642ss, 105564}, // __builtin_ia32_cvtusi2ss64
+ {Intrinsic::x86_avx512_dbpsadbw_128, 105591}, // __builtin_ia32_dbpsadbw128
+ {Intrinsic::x86_avx512_dbpsadbw_256, 105618}, // __builtin_ia32_dbpsadbw256
+ {Intrinsic::x86_avx512_dbpsadbw_512, 105645}, // __builtin_ia32_dbpsadbw512
+ {Intrinsic::x86_directstore32, 118282}, // __builtin_ia32_directstore_u32
+ {Intrinsic::x86_directstore64, 118313}, // __builtin_ia32_directstore_u64
+ {Intrinsic::x86_avx512_div_pd_512, 105672}, // __builtin_ia32_divpd512
+ {Intrinsic::x86_avx512_div_ps_512, 105696}, // __builtin_ia32_divps512
+ {Intrinsic::x86_avx512_mask_div_sd_round, 107679}, // __builtin_ia32_divsd_round_mask
+ {Intrinsic::x86_avx512_mask_div_ss_round, 107711}, // __builtin_ia32_divss_round_mask
+ {Intrinsic::x86_sse41_dppd, 123465}, // __builtin_ia32_dppd
+ {Intrinsic::x86_sse41_dpps, 123485}, // __builtin_ia32_dpps
+ {Intrinsic::x86_avx_dp_ps_256, 101669}, // __builtin_ia32_dpps256
+ {Intrinsic::x86_mmx_emms, 118747}, // __builtin_ia32_emms
+ {Intrinsic::x86_avx512_exp2_pd, 105720}, // __builtin_ia32_exp2pd_mask
+ {Intrinsic::x86_avx512_exp2_ps, 105747}, // __builtin_ia32_exp2ps_mask
+ {Intrinsic::x86_sse4a_extrq, 124304}, // __builtin_ia32_extrq
+ {Intrinsic::x86_sse4a_extrqi, 124325}, // __builtin_ia32_extrqi
+ {Intrinsic::x86_mmx_femms, 118767}, // __builtin_ia32_femms
+ {Intrinsic::x86_avx512_mask_fixupimm_pd_128, 107743}, // __builtin_ia32_fixupimmpd128_mask
+ {Intrinsic::x86_avx512_maskz_fixupimm_pd_128, 113403}, // __builtin_ia32_fixupimmpd128_maskz
+ {Intrinsic::x86_avx512_mask_fixupimm_pd_256, 107777}, // __builtin_ia32_fixupimmpd256_mask
+ {Intrinsic::x86_avx512_maskz_fixupimm_pd_256, 113438}, // __builtin_ia32_fixupimmpd256_maskz
+ {Intrinsic::x86_avx512_mask_fixupimm_pd_512, 107811}, // __builtin_ia32_fixupimmpd512_mask
+ {Intrinsic::x86_avx512_maskz_fixupimm_pd_512, 113473}, // __builtin_ia32_fixupimmpd512_maskz
+ {Intrinsic::x86_avx512_mask_fixupimm_ps_128, 107845}, // __builtin_ia32_fixupimmps128_mask
+ {Intrinsic::x86_avx512_maskz_fixupimm_ps_128, 113508}, // __builtin_ia32_fixupimmps128_maskz
+ {Intrinsic::x86_avx512_mask_fixupimm_ps_256, 107879}, // __builtin_ia32_fixupimmps256_mask
+ {Intrinsic::x86_avx512_maskz_fixupimm_ps_256, 113543}, // __builtin_ia32_fixupimmps256_maskz
+ {Intrinsic::x86_avx512_mask_fixupimm_ps_512, 107913}, // __builtin_ia32_fixupimmps512_mask
+ {Intrinsic::x86_avx512_maskz_fixupimm_ps_512, 113578}, // __builtin_ia32_fixupimmps512_maskz
+ {Intrinsic::x86_avx512_mask_fixupimm_sd, 107947}, // __builtin_ia32_fixupimmsd_mask
+ {Intrinsic::x86_avx512_maskz_fixupimm_sd, 113613}, // __builtin_ia32_fixupimmsd_maskz
+ {Intrinsic::x86_avx512_mask_fixupimm_ss, 107978}, // __builtin_ia32_fixupimmss_mask
+ {Intrinsic::x86_avx512_maskz_fixupimm_ss, 113645}, // __builtin_ia32_fixupimmss_maskz
+ {Intrinsic::x86_avx512_mask_fpclass_sd, 108009}, // __builtin_ia32_fpclasssd_mask
+ {Intrinsic::x86_avx512_mask_fpclass_ss, 108039}, // __builtin_ia32_fpclassss_mask
+ {Intrinsic::x86_fxrstor, 118466}, // __builtin_ia32_fxrstor
+ {Intrinsic::x86_fxrstor64, 118489}, // __builtin_ia32_fxrstor64
+ {Intrinsic::x86_fxsave, 118514}, // __builtin_ia32_fxsave
+ {Intrinsic::x86_fxsave64, 118536}, // __builtin_ia32_fxsave64
+ {Intrinsic::x86_avx2_gather_d_d, 102851}, // __builtin_ia32_gatherd_d
+ {Intrinsic::x86_avx2_gather_d_d_256, 102876}, // __builtin_ia32_gatherd_d256
+ {Intrinsic::x86_avx2_gather_d_pd, 102904}, // __builtin_ia32_gatherd_pd
+ {Intrinsic::x86_avx2_gather_d_pd_256, 102930}, // __builtin_ia32_gatherd_pd256
+ {Intrinsic::x86_avx2_gather_d_ps, 102959}, // __builtin_ia32_gatherd_ps
+ {Intrinsic::x86_avx2_gather_d_ps_256, 102985}, // __builtin_ia32_gatherd_ps256
+ {Intrinsic::x86_avx2_gather_d_q, 103014}, // __builtin_ia32_gatherd_q
+ {Intrinsic::x86_avx2_gather_d_q_256, 103039}, // __builtin_ia32_gatherd_q256
+ {Intrinsic::x86_avx512_gatherpf_dpd_512, 105774}, // __builtin_ia32_gatherpfdpd
+ {Intrinsic::x86_avx512_gatherpf_dps_512, 105801}, // __builtin_ia32_gatherpfdps
+ {Intrinsic::x86_avx512_gatherpf_qpd_512, 105828}, // __builtin_ia32_gatherpfqpd
+ {Intrinsic::x86_avx512_gatherpf_qps_512, 105855}, // __builtin_ia32_gatherpfqps
+ {Intrinsic::x86_avx2_gather_q_d, 103067}, // __builtin_ia32_gatherq_d
+ {Intrinsic::x86_avx2_gather_q_d_256, 103092}, // __builtin_ia32_gatherq_d256
+ {Intrinsic::x86_avx2_gather_q_pd, 103120}, // __builtin_ia32_gatherq_pd
+ {Intrinsic::x86_avx2_gather_q_pd_256, 103146}, // __builtin_ia32_gatherq_pd256
+ {Intrinsic::x86_avx2_gather_q_ps, 103175}, // __builtin_ia32_gatherq_ps
+ {Intrinsic::x86_avx2_gather_q_ps_256, 103201}, // __builtin_ia32_gatherq_ps256
+ {Intrinsic::x86_avx2_gather_q_q, 103230}, // __builtin_ia32_gatherq_q
+ {Intrinsic::x86_avx2_gather_q_q_256, 103255}, // __builtin_ia32_gatherq_q256
+ {Intrinsic::x86_avx512_mask_getexp_pd_128, 108069}, // __builtin_ia32_getexppd128_mask
+ {Intrinsic::x86_avx512_mask_getexp_pd_256, 108101}, // __builtin_ia32_getexppd256_mask
+ {Intrinsic::x86_avx512_mask_getexp_pd_512, 108133}, // __builtin_ia32_getexppd512_mask
+ {Intrinsic::x86_avx512_mask_getexp_ps_128, 108165}, // __builtin_ia32_getexpps128_mask
+ {Intrinsic::x86_avx512_mask_getexp_ps_256, 108197}, // __builtin_ia32_getexpps256_mask
+ {Intrinsic::x86_avx512_mask_getexp_ps_512, 108229}, // __builtin_ia32_getexpps512_mask
+ {Intrinsic::x86_avx512_mask_getexp_sd, 108261}, // __builtin_ia32_getexpsd128_round_mask
+ {Intrinsic::x86_avx512_mask_getexp_ss, 108299}, // __builtin_ia32_getexpss128_round_mask
+ {Intrinsic::x86_avx512_mask_getmant_pd_128, 108337}, // __builtin_ia32_getmantpd128_mask
+ {Intrinsic::x86_avx512_mask_getmant_pd_256, 108370}, // __builtin_ia32_getmantpd256_mask
+ {Intrinsic::x86_avx512_mask_getmant_pd_512, 108403}, // __builtin_ia32_getmantpd512_mask
+ {Intrinsic::x86_avx512_mask_getmant_ps_128, 108436}, // __builtin_ia32_getmantps128_mask
+ {Intrinsic::x86_avx512_mask_getmant_ps_256, 108469}, // __builtin_ia32_getmantps256_mask
+ {Intrinsic::x86_avx512_mask_getmant_ps_512, 108502}, // __builtin_ia32_getmantps512_mask
+ {Intrinsic::x86_avx512_mask_getmant_sd, 108535}, // __builtin_ia32_getmantsd_round_mask
+ {Intrinsic::x86_avx512_mask_getmant_ss, 108571}, // __builtin_ia32_getmantss_round_mask
+ {Intrinsic::x86_sse3_hadd_pd, 123264}, // __builtin_ia32_haddpd
+ {Intrinsic::x86_avx_hadd_pd_256, 101692}, // __builtin_ia32_haddpd256
+ {Intrinsic::x86_sse3_hadd_ps, 123286}, // __builtin_ia32_haddps
+ {Intrinsic::x86_avx_hadd_ps_256, 101717}, // __builtin_ia32_haddps256
+ {Intrinsic::x86_sse3_hsub_pd, 123308}, // __builtin_ia32_hsubpd
+ {Intrinsic::x86_avx_hsub_pd_256, 101742}, // __builtin_ia32_hsubpd256
+ {Intrinsic::x86_sse3_hsub_ps, 123330}, // __builtin_ia32_hsubps
+ {Intrinsic::x86_avx_hsub_ps_256, 101767}, // __builtin_ia32_hsubps256
+ {Intrinsic::x86_incsspd, 118560}, // __builtin_ia32_incsspd
+ {Intrinsic::x86_incsspq, 118583}, // __builtin_ia32_incsspq
+ {Intrinsic::x86_sse41_insertps, 123505}, // __builtin_ia32_insertps128
+ {Intrinsic::x86_sse4a_insertq, 124347}, // __builtin_ia32_insertq
+ {Intrinsic::x86_sse4a_insertqi, 124370}, // __builtin_ia32_insertqi
+ {Intrinsic::x86_invpcid, 118606}, // __builtin_ia32_invpcid
+ {Intrinsic::x86_sse3_ldu_dq, 123352}, // __builtin_ia32_lddqu
+ {Intrinsic::x86_avx_ldu_dq_256, 101792}, // __builtin_ia32_lddqu256
+ {Intrinsic::x86_sse2_lfence, 122264}, // __builtin_ia32_lfence
+ {Intrinsic::x86_llwpcb, 118629}, // __builtin_ia32_llwpcb
+ {Intrinsic::x86_lwpins32, 118651}, // __builtin_ia32_lwpins32
+ {Intrinsic::x86_lwpins64, 118675}, // __builtin_ia32_lwpins64
+ {Intrinsic::x86_lwpval32, 118699}, // __builtin_ia32_lwpval32
+ {Intrinsic::x86_lwpval64, 118723}, // __builtin_ia32_lwpval64
+ {Intrinsic::x86_avx2_maskload_d, 103283}, // __builtin_ia32_maskloadd
+ {Intrinsic::x86_avx2_maskload_d_256, 103308}, // __builtin_ia32_maskloadd256
+ {Intrinsic::x86_avx_maskload_pd, 101816}, // __builtin_ia32_maskloadpd
+ {Intrinsic::x86_avx_maskload_pd_256, 101842}, // __builtin_ia32_maskloadpd256
+ {Intrinsic::x86_avx_maskload_ps, 101871}, // __builtin_ia32_maskloadps
+ {Intrinsic::x86_avx_maskload_ps_256, 101897}, // __builtin_ia32_maskloadps256
+ {Intrinsic::x86_avx2_maskload_q, 103336}, // __builtin_ia32_maskloadq
+ {Intrinsic::x86_avx2_maskload_q_256, 103361}, // __builtin_ia32_maskloadq256
+ {Intrinsic::x86_sse2_maskmov_dqu, 122286}, // __builtin_ia32_maskmovdqu
+ {Intrinsic::x86_mmx_maskmovq, 118788}, // __builtin_ia32_maskmovq
+ {Intrinsic::x86_avx2_maskstore_d, 103389}, // __builtin_ia32_maskstored
+ {Intrinsic::x86_avx2_maskstore_d_256, 103415}, // __builtin_ia32_maskstored256
+ {Intrinsic::x86_avx_maskstore_pd, 101926}, // __builtin_ia32_maskstorepd
+ {Intrinsic::x86_avx_maskstore_pd_256, 101953}, // __builtin_ia32_maskstorepd256
+ {Intrinsic::x86_avx_maskstore_ps, 101983}, // __builtin_ia32_maskstoreps
+ {Intrinsic::x86_avx_maskstore_ps_256, 102010}, // __builtin_ia32_maskstoreps256
+ {Intrinsic::x86_avx2_maskstore_q, 103444}, // __builtin_ia32_maskstoreq
+ {Intrinsic::x86_avx2_maskstore_q_256, 103470}, // __builtin_ia32_maskstoreq256
+ {Intrinsic::x86_sse2_max_pd, 122312}, // __builtin_ia32_maxpd
+ {Intrinsic::x86_avx_max_pd_256, 102040}, // __builtin_ia32_maxpd256
+ {Intrinsic::x86_avx512_max_pd_512, 113677}, // __builtin_ia32_maxpd512
+ {Intrinsic::x86_sse_max_ps, 121448}, // __builtin_ia32_maxps
+ {Intrinsic::x86_avx_max_ps_256, 102064}, // __builtin_ia32_maxps256
+ {Intrinsic::x86_avx512_max_ps_512, 113701}, // __builtin_ia32_maxps512
+ {Intrinsic::x86_sse2_max_sd, 122333}, // __builtin_ia32_maxsd
+ {Intrinsic::x86_avx512_mask_max_sd_round, 108607}, // __builtin_ia32_maxsd_round_mask
+ {Intrinsic::x86_sse_max_ss, 121469}, // __builtin_ia32_maxss
+ {Intrinsic::x86_avx512_mask_max_ss_round, 108639}, // __builtin_ia32_maxss_round_mask
+ {Intrinsic::x86_sse2_mfence, 122354}, // __builtin_ia32_mfence
+ {Intrinsic::x86_sse2_min_pd, 122376}, // __builtin_ia32_minpd
+ {Intrinsic::x86_avx_min_pd_256, 102088}, // __builtin_ia32_minpd256
+ {Intrinsic::x86_avx512_min_pd_512, 113725}, // __builtin_ia32_minpd512
+ {Intrinsic::x86_sse_min_ps, 121490}, // __builtin_ia32_minps
+ {Intrinsic::x86_avx_min_ps_256, 102112}, // __builtin_ia32_minps256
+ {Intrinsic::x86_avx512_min_ps_512, 113749}, // __builtin_ia32_minps512
+ {Intrinsic::x86_sse2_min_sd, 122397}, // __builtin_ia32_minsd
+ {Intrinsic::x86_avx512_mask_min_sd_round, 108671}, // __builtin_ia32_minsd_round_mask
+ {Intrinsic::x86_sse_min_ss, 121511}, // __builtin_ia32_minss
+ {Intrinsic::x86_avx512_mask_min_ss_round, 108703}, // __builtin_ia32_minss_round_mask
+ {Intrinsic::x86_sse3_monitor, 123373}, // __builtin_ia32_monitor
+ {Intrinsic::x86_monitorx, 120334}, // __builtin_ia32_monitorx
+ {Intrinsic::x86_movdir64b, 120358}, // __builtin_ia32_movdir64b
+ {Intrinsic::x86_sse2_movmsk_pd, 122418}, // __builtin_ia32_movmskpd
+ {Intrinsic::x86_avx_movmsk_pd_256, 102136}, // __builtin_ia32_movmskpd256
+ {Intrinsic::x86_sse_movmsk_ps, 121532}, // __builtin_ia32_movmskps
+ {Intrinsic::x86_avx_movmsk_ps_256, 102163}, // __builtin_ia32_movmskps256
+ {Intrinsic::x86_mmx_movnt_dq, 118812}, // __builtin_ia32_movntq
+ {Intrinsic::x86_sse41_mpsadbw, 123532}, // __builtin_ia32_mpsadbw128
+ {Intrinsic::x86_avx2_mpsadbw, 103499}, // __builtin_ia32_mpsadbw256
+ {Intrinsic::x86_avx512_mul_pd_512, 113773}, // __builtin_ia32_mulpd512
+ {Intrinsic::x86_avx512_mul_ps_512, 113797}, // __builtin_ia32_mulps512
+ {Intrinsic::x86_avx512_mask_mul_sd_round, 108735}, // __builtin_ia32_mulsd_round_mask
+ {Intrinsic::x86_avx512_mask_mul_ss_round, 108767}, // __builtin_ia32_mulss_round_mask
+ {Intrinsic::x86_sse3_mwait, 123396}, // __builtin_ia32_mwait
+ {Intrinsic::x86_mwaitx, 120383}, // __builtin_ia32_mwaitx
+ {Intrinsic::x86_ssse3_pabs_b, 124394}, // __builtin_ia32_pabsb
+ {Intrinsic::x86_ssse3_pabs_d, 124415}, // __builtin_ia32_pabsd
+ {Intrinsic::x86_ssse3_pabs_w, 124436}, // __builtin_ia32_pabsw
+ {Intrinsic::x86_mmx_packssdw, 118834}, // __builtin_ia32_packssdw
+ {Intrinsic::x86_sse2_packssdw_128, 122442}, // __builtin_ia32_packssdw128
+ {Intrinsic::x86_avx2_packssdw, 103525}, // __builtin_ia32_packssdw256
+ {Intrinsic::x86_avx512_packssdw_512, 113821}, // __builtin_ia32_packssdw512
+ {Intrinsic::x86_mmx_packsswb, 118858}, // __builtin_ia32_packsswb
+ {Intrinsic::x86_sse2_packsswb_128, 122469}, // __builtin_ia32_packsswb128
+ {Intrinsic::x86_avx2_packsswb, 103552}, // __builtin_ia32_packsswb256
+ {Intrinsic::x86_avx512_packsswb_512, 113848}, // __builtin_ia32_packsswb512
+ {Intrinsic::x86_sse41_packusdw, 123558}, // __builtin_ia32_packusdw128
+ {Intrinsic::x86_avx2_packusdw, 103579}, // __builtin_ia32_packusdw256
+ {Intrinsic::x86_avx512_packusdw_512, 113875}, // __builtin_ia32_packusdw512
+ {Intrinsic::x86_mmx_packuswb, 118882}, // __builtin_ia32_packuswb
+ {Intrinsic::x86_sse2_packuswb_128, 122496}, // __builtin_ia32_packuswb128
+ {Intrinsic::x86_avx2_packuswb, 103606}, // __builtin_ia32_packuswb256
+ {Intrinsic::x86_avx512_packuswb_512, 113902}, // __builtin_ia32_packuswb512
+ {Intrinsic::x86_mmx_padd_b, 118906}, // __builtin_ia32_paddb
+ {Intrinsic::x86_mmx_padd_d, 118927}, // __builtin_ia32_paddd
+ {Intrinsic::x86_mmx_padd_q, 118948}, // __builtin_ia32_paddq
+ {Intrinsic::x86_mmx_padds_b, 118990}, // __builtin_ia32_paddsb
+ {Intrinsic::x86_mmx_padds_w, 119012}, // __builtin_ia32_paddsw
+ {Intrinsic::x86_mmx_paddus_b, 119034}, // __builtin_ia32_paddusb
+ {Intrinsic::x86_mmx_paddus_w, 119057}, // __builtin_ia32_paddusw
+ {Intrinsic::x86_mmx_padd_w, 118969}, // __builtin_ia32_paddw
+ {Intrinsic::x86_mmx_palignr_b, 119080}, // __builtin_ia32_palignr
+ {Intrinsic::x86_mmx_pand, 119103}, // __builtin_ia32_pand
+ {Intrinsic::x86_mmx_pandn, 119123}, // __builtin_ia32_pandn
+ {Intrinsic::x86_sse2_pause, 122523}, // __builtin_ia32_pause
+ {Intrinsic::x86_mmx_pavg_b, 119144}, // __builtin_ia32_pavgb
+ {Intrinsic::x86_3dnow_pavgusb, 100533}, // __builtin_ia32_pavgusb
+ {Intrinsic::x86_mmx_pavg_w, 119165}, // __builtin_ia32_pavgw
+ {Intrinsic::x86_sse41_pblendvb, 123585}, // __builtin_ia32_pblendvb128
+ {Intrinsic::x86_avx2_pblendvb, 103633}, // __builtin_ia32_pblendvb256
+ {Intrinsic::x86_pclmulqdq, 120405}, // __builtin_ia32_pclmulqdq128
+ {Intrinsic::x86_pclmulqdq_256, 120433}, // __builtin_ia32_pclmulqdq256
+ {Intrinsic::x86_pclmulqdq_512, 120461}, // __builtin_ia32_pclmulqdq512
+ {Intrinsic::x86_mmx_pcmpeq_b, 119186}, // __builtin_ia32_pcmpeqb
+ {Intrinsic::x86_mmx_pcmpeq_d, 119209}, // __builtin_ia32_pcmpeqd
+ {Intrinsic::x86_mmx_pcmpeq_w, 119232}, // __builtin_ia32_pcmpeqw
+ {Intrinsic::x86_sse42_pcmpestri128, 123902}, // __builtin_ia32_pcmpestri128
+ {Intrinsic::x86_sse42_pcmpestria128, 123930}, // __builtin_ia32_pcmpestria128
+ {Intrinsic::x86_sse42_pcmpestric128, 123959}, // __builtin_ia32_pcmpestric128
+ {Intrinsic::x86_sse42_pcmpestrio128, 123988}, // __builtin_ia32_pcmpestrio128
+ {Intrinsic::x86_sse42_pcmpestris128, 124017}, // __builtin_ia32_pcmpestris128
+ {Intrinsic::x86_sse42_pcmpestriz128, 124046}, // __builtin_ia32_pcmpestriz128
+ {Intrinsic::x86_sse42_pcmpestrm128, 124075}, // __builtin_ia32_pcmpestrm128
+ {Intrinsic::x86_mmx_pcmpgt_b, 119255}, // __builtin_ia32_pcmpgtb
+ {Intrinsic::x86_mmx_pcmpgt_d, 119278}, // __builtin_ia32_pcmpgtd
+ {Intrinsic::x86_mmx_pcmpgt_w, 119301}, // __builtin_ia32_pcmpgtw
+ {Intrinsic::x86_sse42_pcmpistri128, 124103}, // __builtin_ia32_pcmpistri128
+ {Intrinsic::x86_sse42_pcmpistria128, 124131}, // __builtin_ia32_pcmpistria128
+ {Intrinsic::x86_sse42_pcmpistric128, 124160}, // __builtin_ia32_pcmpistric128
+ {Intrinsic::x86_sse42_pcmpistrio128, 124189}, // __builtin_ia32_pcmpistrio128
+ {Intrinsic::x86_sse42_pcmpistris128, 124218}, // __builtin_ia32_pcmpistris128
+ {Intrinsic::x86_sse42_pcmpistriz128, 124247}, // __builtin_ia32_pcmpistriz128
+ {Intrinsic::x86_sse42_pcmpistrm128, 124276}, // __builtin_ia32_pcmpistrm128
+ {Intrinsic::x86_bmi_pdep_64, 118097}, // __builtin_ia32_pdep_di
+ {Intrinsic::x86_bmi_pdep_32, 118074}, // __builtin_ia32_pdep_si
+ {Intrinsic::x86_avx512_permvar_df_256, 113929}, // __builtin_ia32_permvardf256
+ {Intrinsic::x86_avx512_permvar_df_512, 113957}, // __builtin_ia32_permvardf512
+ {Intrinsic::x86_avx512_permvar_di_256, 113985}, // __builtin_ia32_permvardi256
+ {Intrinsic::x86_avx512_permvar_di_512, 114013}, // __builtin_ia32_permvardi512
+ {Intrinsic::x86_avx512_permvar_hi_128, 114041}, // __builtin_ia32_permvarhi128
+ {Intrinsic::x86_avx512_permvar_hi_256, 114069}, // __builtin_ia32_permvarhi256
+ {Intrinsic::x86_avx512_permvar_hi_512, 114097}, // __builtin_ia32_permvarhi512
+ {Intrinsic::x86_avx512_permvar_qi_128, 114125}, // __builtin_ia32_permvarqi128
+ {Intrinsic::x86_avx512_permvar_qi_256, 114153}, // __builtin_ia32_permvarqi256
+ {Intrinsic::x86_avx512_permvar_qi_512, 114181}, // __builtin_ia32_permvarqi512
+ {Intrinsic::x86_avx2_permps, 103688}, // __builtin_ia32_permvarsf256
+ {Intrinsic::x86_avx512_permvar_sf_512, 114209}, // __builtin_ia32_permvarsf512
+ {Intrinsic::x86_avx2_permd, 103660}, // __builtin_ia32_permvarsi256
+ {Intrinsic::x86_avx512_permvar_si_512, 114237}, // __builtin_ia32_permvarsi512
+ {Intrinsic::x86_bmi_pext_64, 118143}, // __builtin_ia32_pext_di
+ {Intrinsic::x86_bmi_pext_32, 118120}, // __builtin_ia32_pext_si
+ {Intrinsic::x86_3dnow_pf2id, 100556}, // __builtin_ia32_pf2id
+ {Intrinsic::x86_3dnowa_pf2iw, 100954}, // __builtin_ia32_pf2iw
+ {Intrinsic::x86_3dnow_pfacc, 100577}, // __builtin_ia32_pfacc
+ {Intrinsic::x86_3dnow_pfadd, 100598}, // __builtin_ia32_pfadd
+ {Intrinsic::x86_3dnow_pfcmpeq, 100619}, // __builtin_ia32_pfcmpeq
+ {Intrinsic::x86_3dnow_pfcmpge, 100642}, // __builtin_ia32_pfcmpge
+ {Intrinsic::x86_3dnow_pfcmpgt, 100665}, // __builtin_ia32_pfcmpgt
+ {Intrinsic::x86_3dnow_pfmax, 100688}, // __builtin_ia32_pfmax
+ {Intrinsic::x86_3dnow_pfmin, 100709}, // __builtin_ia32_pfmin
+ {Intrinsic::x86_3dnow_pfmul, 100730}, // __builtin_ia32_pfmul
+ {Intrinsic::x86_3dnowa_pfnacc, 100975}, // __builtin_ia32_pfnacc
+ {Intrinsic::x86_3dnowa_pfpnacc, 100997}, // __builtin_ia32_pfpnacc
+ {Intrinsic::x86_3dnow_pfrcp, 100751}, // __builtin_ia32_pfrcp
+ {Intrinsic::x86_3dnow_pfrcpit1, 100772}, // __builtin_ia32_pfrcpit1
+ {Intrinsic::x86_3dnow_pfrcpit2, 100796}, // __builtin_ia32_pfrcpit2
+ {Intrinsic::x86_3dnow_pfrsqit1, 100820}, // __builtin_ia32_pfrsqit1
+ {Intrinsic::x86_3dnow_pfrsqrt, 100844}, // __builtin_ia32_pfrsqrt
+ {Intrinsic::x86_3dnow_pfsub, 100867}, // __builtin_ia32_pfsub
+ {Intrinsic::x86_3dnow_pfsubr, 100888}, // __builtin_ia32_pfsubr
+ {Intrinsic::x86_ssse3_phadd_d, 124457}, // __builtin_ia32_phaddd
+ {Intrinsic::x86_ssse3_phadd_d_128, 124479}, // __builtin_ia32_phaddd128
+ {Intrinsic::x86_avx2_phadd_d, 103716}, // __builtin_ia32_phaddd256
+ {Intrinsic::x86_ssse3_phadd_sw, 124504}, // __builtin_ia32_phaddsw
+ {Intrinsic::x86_ssse3_phadd_sw_128, 124527}, // __builtin_ia32_phaddsw128
+ {Intrinsic::x86_avx2_phadd_sw, 103741}, // __builtin_ia32_phaddsw256
+ {Intrinsic::x86_ssse3_phadd_w, 124553}, // __builtin_ia32_phaddw
+ {Intrinsic::x86_ssse3_phadd_w_128, 124575}, // __builtin_ia32_phaddw128
+ {Intrinsic::x86_avx2_phadd_w, 103767}, // __builtin_ia32_phaddw256
+ {Intrinsic::x86_sse41_phminposuw, 123612}, // __builtin_ia32_phminposuw128
+ {Intrinsic::x86_ssse3_phsub_d, 124600}, // __builtin_ia32_phsubd
+ {Intrinsic::x86_ssse3_phsub_d_128, 124622}, // __builtin_ia32_phsubd128
+ {Intrinsic::x86_avx2_phsub_d, 103792}, // __builtin_ia32_phsubd256
+ {Intrinsic::x86_ssse3_phsub_sw, 124647}, // __builtin_ia32_phsubsw
+ {Intrinsic::x86_ssse3_phsub_sw_128, 124670}, // __builtin_ia32_phsubsw128
+ {Intrinsic::x86_avx2_phsub_sw, 103817}, // __builtin_ia32_phsubsw256
+ {Intrinsic::x86_ssse3_phsub_w, 124696}, // __builtin_ia32_phsubw
+ {Intrinsic::x86_ssse3_phsub_w_128, 124718}, // __builtin_ia32_phsubw128
+ {Intrinsic::x86_avx2_phsub_w, 103843}, // __builtin_ia32_phsubw256
+ {Intrinsic::x86_3dnow_pi2fd, 100910}, // __builtin_ia32_pi2fd
+ {Intrinsic::x86_3dnowa_pi2fw, 101020}, // __builtin_ia32_pi2fw
+ {Intrinsic::x86_ssse3_pmadd_ub_sw, 124743}, // __builtin_ia32_pmaddubsw
+ {Intrinsic::x86_ssse3_pmadd_ub_sw_128, 124768}, // __builtin_ia32_pmaddubsw128
+ {Intrinsic::x86_avx2_pmadd_ub_sw, 103868}, // __builtin_ia32_pmaddubsw256
+ {Intrinsic::x86_avx512_pmaddubs_w_512, 114265}, // __builtin_ia32_pmaddubsw512
+ {Intrinsic::x86_mmx_pmadd_wd, 119380}, // __builtin_ia32_pmaddwd
+ {Intrinsic::x86_sse2_pmadd_wd, 122544}, // __builtin_ia32_pmaddwd128
+ {Intrinsic::x86_avx2_pmadd_wd, 103896}, // __builtin_ia32_pmaddwd256
+ {Intrinsic::x86_avx512_pmaddw_d_512, 114293}, // __builtin_ia32_pmaddwd512
+ {Intrinsic::x86_mmx_pmaxs_w, 119403}, // __builtin_ia32_pmaxsw
+ {Intrinsic::x86_mmx_pmaxu_b, 119425}, // __builtin_ia32_pmaxub
+ {Intrinsic::x86_mmx_pmins_w, 119447}, // __builtin_ia32_pminsw
+ {Intrinsic::x86_mmx_pminu_b, 119469}, // __builtin_ia32_pminub
+ {Intrinsic::x86_avx512_mask_pmov_db_128, 108799}, // __builtin_ia32_pmovdb128_mask
+ {Intrinsic::x86_avx512_mask_pmov_db_mem_128, 108859}, // __builtin_ia32_pmovdb128mem_mask
+ {Intrinsic::x86_avx512_mask_pmov_db_256, 108829}, // __builtin_ia32_pmovdb256_mask
+ {Intrinsic::x86_avx512_mask_pmov_db_mem_256, 108892}, // __builtin_ia32_pmovdb256mem_mask
+ {Intrinsic::x86_avx512_mask_pmov_db_mem_512, 108925}, // __builtin_ia32_pmovdb512mem_mask
+ {Intrinsic::x86_avx512_mask_pmov_dw_128, 108958}, // __builtin_ia32_pmovdw128_mask
+ {Intrinsic::x86_avx512_mask_pmov_dw_mem_128, 109018}, // __builtin_ia32_pmovdw128mem_mask
+ {Intrinsic::x86_avx512_mask_pmov_dw_256, 108988}, // __builtin_ia32_pmovdw256_mask
+ {Intrinsic::x86_avx512_mask_pmov_dw_mem_256, 109051}, // __builtin_ia32_pmovdw256mem_mask
+ {Intrinsic::x86_avx512_mask_pmov_dw_mem_512, 109084}, // __builtin_ia32_pmovdw512mem_mask
+ {Intrinsic::x86_mmx_pmovmskb, 119491}, // __builtin_ia32_pmovmskb
+ {Intrinsic::x86_sse2_pmovmskb_128, 122570}, // __builtin_ia32_pmovmskb128
+ {Intrinsic::x86_avx2_pmovmskb, 103922}, // __builtin_ia32_pmovmskb256
+ {Intrinsic::x86_avx512_mask_pmov_qb_128, 109117}, // __builtin_ia32_pmovqb128_mask
+ {Intrinsic::x86_avx512_mask_pmov_qb_mem_128, 109207}, // __builtin_ia32_pmovqb128mem_mask
+ {Intrinsic::x86_avx512_mask_pmov_qb_256, 109147}, // __builtin_ia32_pmovqb256_mask
+ {Intrinsic::x86_avx512_mask_pmov_qb_mem_256, 109240}, // __builtin_ia32_pmovqb256mem_mask
+ {Intrinsic::x86_avx512_mask_pmov_qb_512, 109177}, // __builtin_ia32_pmovqb512_mask
+ {Intrinsic::x86_avx512_mask_pmov_qb_mem_512, 109273}, // __builtin_ia32_pmovqb512mem_mask
+ {Intrinsic::x86_avx512_mask_pmov_qd_128, 109306}, // __builtin_ia32_pmovqd128_mask
+ {Intrinsic::x86_avx512_mask_pmov_qd_mem_128, 109336}, // __builtin_ia32_pmovqd128mem_mask
+ {Intrinsic::x86_avx512_mask_pmov_qd_mem_256, 109369}, // __builtin_ia32_pmovqd256mem_mask
+ {Intrinsic::x86_avx512_mask_pmov_qd_mem_512, 109402}, // __builtin_ia32_pmovqd512mem_mask
+ {Intrinsic::x86_avx512_mask_pmov_qw_128, 109435}, // __builtin_ia32_pmovqw128_mask
+ {Intrinsic::x86_avx512_mask_pmov_qw_mem_128, 109495}, // __builtin_ia32_pmovqw128mem_mask
+ {Intrinsic::x86_avx512_mask_pmov_qw_256, 109465}, // __builtin_ia32_pmovqw256_mask
+ {Intrinsic::x86_avx512_mask_pmov_qw_mem_256, 109528}, // __builtin_ia32_pmovqw256mem_mask
+ {Intrinsic::x86_avx512_mask_pmov_qw_mem_512, 109561}, // __builtin_ia32_pmovqw512mem_mask
+ {Intrinsic::x86_avx512_mask_pmovs_db_128, 109723}, // __builtin_ia32_pmovsdb128_mask
+ {Intrinsic::x86_avx512_mask_pmovs_db_mem_128, 109816}, // __builtin_ia32_pmovsdb128mem_mask
+ {Intrinsic::x86_avx512_mask_pmovs_db_256, 109754}, // __builtin_ia32_pmovsdb256_mask
+ {Intrinsic::x86_avx512_mask_pmovs_db_mem_256, 109850}, // __builtin_ia32_pmovsdb256mem_mask
+ {Intrinsic::x86_avx512_mask_pmovs_db_512, 109785}, // __builtin_ia32_pmovsdb512_mask
+ {Intrinsic::x86_avx512_mask_pmovs_db_mem_512, 109884}, // __builtin_ia32_pmovsdb512mem_mask
+ {Intrinsic::x86_avx512_mask_pmovs_dw_128, 109918}, // __builtin_ia32_pmovsdw128_mask
+ {Intrinsic::x86_avx512_mask_pmovs_dw_mem_128, 110011}, // __builtin_ia32_pmovsdw128mem_mask
+ {Intrinsic::x86_avx512_mask_pmovs_dw_256, 109949}, // __builtin_ia32_pmovsdw256_mask
+ {Intrinsic::x86_avx512_mask_pmovs_dw_mem_256, 110045}, // __builtin_ia32_pmovsdw256mem_mask
+ {Intrinsic::x86_avx512_mask_pmovs_dw_512, 109980}, // __builtin_ia32_pmovsdw512_mask
+ {Intrinsic::x86_avx512_mask_pmovs_dw_mem_512, 110079}, // __builtin_ia32_pmovsdw512mem_mask
+ {Intrinsic::x86_avx512_mask_pmovs_qb_128, 110113}, // __builtin_ia32_pmovsqb128_mask
+ {Intrinsic::x86_avx512_mask_pmovs_qb_mem_128, 110206}, // __builtin_ia32_pmovsqb128mem_mask
+ {Intrinsic::x86_avx512_mask_pmovs_qb_256, 110144}, // __builtin_ia32_pmovsqb256_mask
+ {Intrinsic::x86_avx512_mask_pmovs_qb_mem_256, 110240}, // __builtin_ia32_pmovsqb256mem_mask
+ {Intrinsic::x86_avx512_mask_pmovs_qb_512, 110175}, // __builtin_ia32_pmovsqb512_mask
+ {Intrinsic::x86_avx512_mask_pmovs_qb_mem_512, 110274}, // __builtin_ia32_pmovsqb512mem_mask
+ {Intrinsic::x86_avx512_mask_pmovs_qd_128, 110308}, // __builtin_ia32_pmovsqd128_mask
+ {Intrinsic::x86_avx512_mask_pmovs_qd_mem_128, 110401}, // __builtin_ia32_pmovsqd128mem_mask
+ {Intrinsic::x86_avx512_mask_pmovs_qd_256, 110339}, // __builtin_ia32_pmovsqd256_mask
+ {Intrinsic::x86_avx512_mask_pmovs_qd_mem_256, 110435}, // __builtin_ia32_pmovsqd256mem_mask
+ {Intrinsic::x86_avx512_mask_pmovs_qd_512, 110370}, // __builtin_ia32_pmovsqd512_mask
+ {Intrinsic::x86_avx512_mask_pmovs_qd_mem_512, 110469}, // __builtin_ia32_pmovsqd512mem_mask
+ {Intrinsic::x86_avx512_mask_pmovs_qw_128, 110503}, // __builtin_ia32_pmovsqw128_mask
+ {Intrinsic::x86_avx512_mask_pmovs_qw_mem_128, 110596}, // __builtin_ia32_pmovsqw128mem_mask
+ {Intrinsic::x86_avx512_mask_pmovs_qw_256, 110534}, // __builtin_ia32_pmovsqw256_mask
+ {Intrinsic::x86_avx512_mask_pmovs_qw_mem_256, 110630}, // __builtin_ia32_pmovsqw256mem_mask
+ {Intrinsic::x86_avx512_mask_pmovs_qw_512, 110565}, // __builtin_ia32_pmovsqw512_mask
+ {Intrinsic::x86_avx512_mask_pmovs_qw_mem_512, 110664}, // __builtin_ia32_pmovsqw512mem_mask
+ {Intrinsic::x86_avx512_mask_pmovs_wb_128, 110698}, // __builtin_ia32_pmovswb128_mask
+ {Intrinsic::x86_avx512_mask_pmovs_wb_mem_128, 110791}, // __builtin_ia32_pmovswb128mem_mask
+ {Intrinsic::x86_avx512_mask_pmovs_wb_256, 110729}, // __builtin_ia32_pmovswb256_mask
+ {Intrinsic::x86_avx512_mask_pmovs_wb_mem_256, 110825}, // __builtin_ia32_pmovswb256mem_mask
+ {Intrinsic::x86_avx512_mask_pmovs_wb_512, 110760}, // __builtin_ia32_pmovswb512_mask
+ {Intrinsic::x86_avx512_mask_pmovs_wb_mem_512, 110859}, // __builtin_ia32_pmovswb512mem_mask
+ {Intrinsic::x86_avx512_mask_pmovus_db_128, 110893}, // __builtin_ia32_pmovusdb128_mask
+ {Intrinsic::x86_avx512_mask_pmovus_db_mem_128, 110989}, // __builtin_ia32_pmovusdb128mem_mask
+ {Intrinsic::x86_avx512_mask_pmovus_db_256, 110925}, // __builtin_ia32_pmovusdb256_mask
+ {Intrinsic::x86_avx512_mask_pmovus_db_mem_256, 111024}, // __builtin_ia32_pmovusdb256mem_mask
+ {Intrinsic::x86_avx512_mask_pmovus_db_512, 110957}, // __builtin_ia32_pmovusdb512_mask
+ {Intrinsic::x86_avx512_mask_pmovus_db_mem_512, 111059}, // __builtin_ia32_pmovusdb512mem_mask
+ {Intrinsic::x86_avx512_mask_pmovus_dw_128, 111094}, // __builtin_ia32_pmovusdw128_mask
+ {Intrinsic::x86_avx512_mask_pmovus_dw_mem_128, 111190}, // __builtin_ia32_pmovusdw128mem_mask
+ {Intrinsic::x86_avx512_mask_pmovus_dw_256, 111126}, // __builtin_ia32_pmovusdw256_mask
+ {Intrinsic::x86_avx512_mask_pmovus_dw_mem_256, 111225}, // __builtin_ia32_pmovusdw256mem_mask
+ {Intrinsic::x86_avx512_mask_pmovus_dw_512, 111158}, // __builtin_ia32_pmovusdw512_mask
+ {Intrinsic::x86_avx512_mask_pmovus_dw_mem_512, 111260}, // __builtin_ia32_pmovusdw512mem_mask
+ {Intrinsic::x86_avx512_mask_pmovus_qb_128, 111295}, // __builtin_ia32_pmovusqb128_mask
+ {Intrinsic::x86_avx512_mask_pmovus_qb_mem_128, 111391}, // __builtin_ia32_pmovusqb128mem_mask
+ {Intrinsic::x86_avx512_mask_pmovus_qb_256, 111327}, // __builtin_ia32_pmovusqb256_mask
+ {Intrinsic::x86_avx512_mask_pmovus_qb_mem_256, 111426}, // __builtin_ia32_pmovusqb256mem_mask
+ {Intrinsic::x86_avx512_mask_pmovus_qb_512, 111359}, // __builtin_ia32_pmovusqb512_mask
+ {Intrinsic::x86_avx512_mask_pmovus_qb_mem_512, 111461}, // __builtin_ia32_pmovusqb512mem_mask
+ {Intrinsic::x86_avx512_mask_pmovus_qd_128, 111496}, // __builtin_ia32_pmovusqd128_mask
+ {Intrinsic::x86_avx512_mask_pmovus_qd_mem_128, 111592}, // __builtin_ia32_pmovusqd128mem_mask
+ {Intrinsic::x86_avx512_mask_pmovus_qd_256, 111528}, // __builtin_ia32_pmovusqd256_mask
+ {Intrinsic::x86_avx512_mask_pmovus_qd_mem_256, 111627}, // __builtin_ia32_pmovusqd256mem_mask
+ {Intrinsic::x86_avx512_mask_pmovus_qd_512, 111560}, // __builtin_ia32_pmovusqd512_mask
+ {Intrinsic::x86_avx512_mask_pmovus_qd_mem_512, 111662}, // __builtin_ia32_pmovusqd512mem_mask
+ {Intrinsic::x86_avx512_mask_pmovus_qw_128, 111697}, // __builtin_ia32_pmovusqw128_mask
+ {Intrinsic::x86_avx512_mask_pmovus_qw_mem_128, 111793}, // __builtin_ia32_pmovusqw128mem_mask
+ {Intrinsic::x86_avx512_mask_pmovus_qw_256, 111729}, // __builtin_ia32_pmovusqw256_mask
+ {Intrinsic::x86_avx512_mask_pmovus_qw_mem_256, 111828}, // __builtin_ia32_pmovusqw256mem_mask
+ {Intrinsic::x86_avx512_mask_pmovus_qw_512, 111761}, // __builtin_ia32_pmovusqw512_mask
+ {Intrinsic::x86_avx512_mask_pmovus_qw_mem_512, 111863}, // __builtin_ia32_pmovusqw512mem_mask
+ {Intrinsic::x86_avx512_mask_pmovus_wb_128, 111898}, // __builtin_ia32_pmovuswb128_mask
+ {Intrinsic::x86_avx512_mask_pmovus_wb_mem_128, 111994}, // __builtin_ia32_pmovuswb128mem_mask
+ {Intrinsic::x86_avx512_mask_pmovus_wb_256, 111930}, // __builtin_ia32_pmovuswb256_mask
+ {Intrinsic::x86_avx512_mask_pmovus_wb_mem_256, 112029}, // __builtin_ia32_pmovuswb256mem_mask
+ {Intrinsic::x86_avx512_mask_pmovus_wb_512, 111962}, // __builtin_ia32_pmovuswb512_mask
+ {Intrinsic::x86_avx512_mask_pmovus_wb_mem_512, 112064}, // __builtin_ia32_pmovuswb512mem_mask
+ {Intrinsic::x86_avx512_mask_pmov_wb_128, 109594}, // __builtin_ia32_pmovwb128_mask
+ {Intrinsic::x86_avx512_mask_pmov_wb_mem_128, 109624}, // __builtin_ia32_pmovwb128mem_mask
+ {Intrinsic::x86_avx512_mask_pmov_wb_mem_256, 109657}, // __builtin_ia32_pmovwb256mem_mask
+ {Intrinsic::x86_avx512_mask_pmov_wb_mem_512, 109690}, // __builtin_ia32_pmovwb512mem_mask
+ {Intrinsic::x86_ssse3_pmul_hr_sw, 124796}, // __builtin_ia32_pmulhrsw
+ {Intrinsic::x86_ssse3_pmul_hr_sw_128, 124820}, // __builtin_ia32_pmulhrsw128
+ {Intrinsic::x86_avx2_pmul_hr_sw, 103949}, // __builtin_ia32_pmulhrsw256
+ {Intrinsic::x86_avx512_pmul_hr_sw_512, 114319}, // __builtin_ia32_pmulhrsw512
+ {Intrinsic::x86_3dnow_pmulhrw, 100931}, // __builtin_ia32_pmulhrw
+ {Intrinsic::x86_mmx_pmulhu_w, 119537}, // __builtin_ia32_pmulhuw
+ {Intrinsic::x86_sse2_pmulhu_w, 122622}, // __builtin_ia32_pmulhuw128
+ {Intrinsic::x86_avx2_pmulhu_w, 104001}, // __builtin_ia32_pmulhuw256
+ {Intrinsic::x86_avx512_pmulhu_w_512, 114371}, // __builtin_ia32_pmulhuw512
+ {Intrinsic::x86_mmx_pmulh_w, 119515}, // __builtin_ia32_pmulhw
+ {Intrinsic::x86_sse2_pmulh_w, 122597}, // __builtin_ia32_pmulhw128
+ {Intrinsic::x86_avx2_pmulh_w, 103976}, // __builtin_ia32_pmulhw256
+ {Intrinsic::x86_avx512_pmulh_w_512, 114346}, // __builtin_ia32_pmulhw512
+ {Intrinsic::x86_mmx_pmull_w, 119560}, // __builtin_ia32_pmullw
+ {Intrinsic::x86_mmx_pmulu_dq, 119582}, // __builtin_ia32_pmuludq
+ {Intrinsic::x86_mmx_por, 119605}, // __builtin_ia32_por
+ {Intrinsic::x86_mmx_psad_bw, 119624}, // __builtin_ia32_psadbw
+ {Intrinsic::x86_sse2_psad_bw, 122648}, // __builtin_ia32_psadbw128
+ {Intrinsic::x86_avx2_psad_bw, 104027}, // __builtin_ia32_psadbw256
+ {Intrinsic::x86_avx512_psad_bw_512, 114496}, // __builtin_ia32_psadbw512
+ {Intrinsic::x86_ssse3_pshuf_b, 124847}, // __builtin_ia32_pshufb
+ {Intrinsic::x86_ssse3_pshuf_b_128, 124869}, // __builtin_ia32_pshufb128
+ {Intrinsic::x86_avx2_pshuf_b, 104052}, // __builtin_ia32_pshufb256
+ {Intrinsic::x86_avx512_pshuf_b_512, 114521}, // __builtin_ia32_pshufb512
+ {Intrinsic::x86_sse_pshuf_w, 121556}, // __builtin_ia32_pshufw
+ {Intrinsic::x86_ssse3_psign_b, 124894}, // __builtin_ia32_psignb
+ {Intrinsic::x86_ssse3_psign_b_128, 124916}, // __builtin_ia32_psignb128
+ {Intrinsic::x86_avx2_psign_b, 104077}, // __builtin_ia32_psignb256
+ {Intrinsic::x86_ssse3_psign_d, 124941}, // __builtin_ia32_psignd
+ {Intrinsic::x86_ssse3_psign_d_128, 124963}, // __builtin_ia32_psignd128
+ {Intrinsic::x86_avx2_psign_d, 104102}, // __builtin_ia32_psignd256
+ {Intrinsic::x86_ssse3_psign_w, 124988}, // __builtin_ia32_psignw
+ {Intrinsic::x86_ssse3_psign_w_128, 125010}, // __builtin_ia32_psignw128
+ {Intrinsic::x86_avx2_psign_w, 104127}, // __builtin_ia32_psignw256
+ {Intrinsic::x86_mmx_psll_d, 119646}, // __builtin_ia32_pslld
+ {Intrinsic::x86_sse2_psll_d, 122673}, // __builtin_ia32_pslld128
+ {Intrinsic::x86_avx2_psll_d, 104152}, // __builtin_ia32_pslld256
+ {Intrinsic::x86_avx512_psll_d_512, 114546}, // __builtin_ia32_pslld512
+ {Intrinsic::x86_mmx_pslli_d, 119709}, // __builtin_ia32_pslldi
+ {Intrinsic::x86_sse2_pslli_d, 122745}, // __builtin_ia32_pslldi128
+ {Intrinsic::x86_avx2_pslli_d, 104224}, // __builtin_ia32_pslldi256
+ {Intrinsic::x86_avx512_pslli_d_512, 114618}, // __builtin_ia32_pslldi512
+ {Intrinsic::x86_mmx_psll_q, 119667}, // __builtin_ia32_psllq
+ {Intrinsic::x86_sse2_psll_q, 122697}, // __builtin_ia32_psllq128
+ {Intrinsic::x86_avx2_psll_q, 104176}, // __builtin_ia32_psllq256
+ {Intrinsic::x86_avx512_psll_q_512, 114570}, // __builtin_ia32_psllq512
+ {Intrinsic::x86_mmx_pslli_q, 119731}, // __builtin_ia32_psllqi
+ {Intrinsic::x86_sse2_pslli_q, 122770}, // __builtin_ia32_psllqi128
+ {Intrinsic::x86_avx2_pslli_q, 104249}, // __builtin_ia32_psllqi256
+ {Intrinsic::x86_avx512_pslli_q_512, 114643}, // __builtin_ia32_psllqi512
+ {Intrinsic::x86_avx512_psllv_w_256, 114766}, // __builtin_ia32_psllv16hi
+ {Intrinsic::x86_avx512_psllv_d_512, 114693}, // __builtin_ia32_psllv16si
+ {Intrinsic::x86_avx2_psllv_q, 104347}, // __builtin_ia32_psllv2di
+ {Intrinsic::x86_avx512_psllv_w_512, 114791}, // __builtin_ia32_psllv32hi
+ {Intrinsic::x86_avx2_psllv_q_256, 104371}, // __builtin_ia32_psllv4di
+ {Intrinsic::x86_avx2_psllv_d, 104299}, // __builtin_ia32_psllv4si
+ {Intrinsic::x86_avx512_psllv_q_512, 114718}, // __builtin_ia32_psllv8di
+ {Intrinsic::x86_avx512_psllv_w_128, 114742}, // __builtin_ia32_psllv8hi
+ {Intrinsic::x86_avx2_psllv_d_256, 104323}, // __builtin_ia32_psllv8si
+ {Intrinsic::x86_mmx_psll_w, 119688}, // __builtin_ia32_psllw
+ {Intrinsic::x86_sse2_psll_w, 122721}, // __builtin_ia32_psllw128
+ {Intrinsic::x86_avx2_psll_w, 104200}, // __builtin_ia32_psllw256
+ {Intrinsic::x86_avx512_psll_w_512, 114594}, // __builtin_ia32_psllw512
+ {Intrinsic::x86_mmx_pslli_w, 119753}, // __builtin_ia32_psllwi
+ {Intrinsic::x86_sse2_pslli_w, 122795}, // __builtin_ia32_psllwi128
+ {Intrinsic::x86_avx2_pslli_w, 104274}, // __builtin_ia32_psllwi256
+ {Intrinsic::x86_avx512_pslli_w_512, 114668}, // __builtin_ia32_psllwi512
+ {Intrinsic::x86_mmx_psra_d, 119775}, // __builtin_ia32_psrad
+ {Intrinsic::x86_sse2_psra_d, 122820}, // __builtin_ia32_psrad128
+ {Intrinsic::x86_avx2_psra_d, 104395}, // __builtin_ia32_psrad256
+ {Intrinsic::x86_avx512_psra_d_512, 114816}, // __builtin_ia32_psrad512
+ {Intrinsic::x86_mmx_psrai_d, 119817}, // __builtin_ia32_psradi
+ {Intrinsic::x86_sse2_psrai_d, 122868}, // __builtin_ia32_psradi128
+ {Intrinsic::x86_avx2_psrai_d, 104443}, // __builtin_ia32_psradi256
+ {Intrinsic::x86_avx512_psrai_d_512, 114936}, // __builtin_ia32_psradi512
+ {Intrinsic::x86_avx512_psra_q_128, 114840}, // __builtin_ia32_psraq128
+ {Intrinsic::x86_avx512_psra_q_256, 114864}, // __builtin_ia32_psraq256
+ {Intrinsic::x86_avx512_psra_q_512, 114888}, // __builtin_ia32_psraq512
+ {Intrinsic::x86_avx512_psrai_q_128, 114961}, // __builtin_ia32_psraqi128
+ {Intrinsic::x86_avx512_psrai_q_256, 114986}, // __builtin_ia32_psraqi256
+ {Intrinsic::x86_avx512_psrai_q_512, 115011}, // __builtin_ia32_psraqi512
+ {Intrinsic::x86_avx512_psrav_w_256, 115184}, // __builtin_ia32_psrav16hi
+ {Intrinsic::x86_avx512_psrav_d_512, 115061}, // __builtin_ia32_psrav16si
+ {Intrinsic::x86_avx512_psrav_w_512, 115209}, // __builtin_ia32_psrav32hi
+ {Intrinsic::x86_avx2_psrav_d, 104493}, // __builtin_ia32_psrav4si
+ {Intrinsic::x86_avx512_psrav_q_512, 115136}, // __builtin_ia32_psrav8di
+ {Intrinsic::x86_avx512_psrav_w_128, 115160}, // __builtin_ia32_psrav8hi
+ {Intrinsic::x86_avx2_psrav_d_256, 104517}, // __builtin_ia32_psrav8si
+ {Intrinsic::x86_avx512_psrav_q_128, 115086}, // __builtin_ia32_psravq128
+ {Intrinsic::x86_avx512_psrav_q_256, 115111}, // __builtin_ia32_psravq256
+ {Intrinsic::x86_mmx_psra_w, 119796}, // __builtin_ia32_psraw
+ {Intrinsic::x86_sse2_psra_w, 122844}, // __builtin_ia32_psraw128
+ {Intrinsic::x86_avx2_psra_w, 104419}, // __builtin_ia32_psraw256
+ {Intrinsic::x86_avx512_psra_w_512, 114912}, // __builtin_ia32_psraw512
+ {Intrinsic::x86_mmx_psrai_w, 119839}, // __builtin_ia32_psrawi
+ {Intrinsic::x86_sse2_psrai_w, 122893}, // __builtin_ia32_psrawi128
+ {Intrinsic::x86_avx2_psrai_w, 104468}, // __builtin_ia32_psrawi256
+ {Intrinsic::x86_avx512_psrai_w_512, 115036}, // __builtin_ia32_psrawi512
+ {Intrinsic::x86_mmx_psrl_d, 119861}, // __builtin_ia32_psrld
+ {Intrinsic::x86_sse2_psrl_d, 122918}, // __builtin_ia32_psrld128
+ {Intrinsic::x86_avx2_psrl_d, 104541}, // __builtin_ia32_psrld256
+ {Intrinsic::x86_avx512_psrl_d_512, 115234}, // __builtin_ia32_psrld512
+ {Intrinsic::x86_mmx_psrli_d, 119924}, // __builtin_ia32_psrldi
+ {Intrinsic::x86_sse2_psrli_d, 122990}, // __builtin_ia32_psrldi128
+ {Intrinsic::x86_avx2_psrli_d, 104613}, // __builtin_ia32_psrldi256
+ {Intrinsic::x86_avx512_psrli_d_512, 115306}, // __builtin_ia32_psrldi512
+ {Intrinsic::x86_mmx_psrl_q, 119882}, // __builtin_ia32_psrlq
+ {Intrinsic::x86_sse2_psrl_q, 122942}, // __builtin_ia32_psrlq128
+ {Intrinsic::x86_avx2_psrl_q, 104565}, // __builtin_ia32_psrlq256
+ {Intrinsic::x86_avx512_psrl_q_512, 115258}, // __builtin_ia32_psrlq512
+ {Intrinsic::x86_mmx_psrli_q, 119946}, // __builtin_ia32_psrlqi
+ {Intrinsic::x86_sse2_psrli_q, 123015}, // __builtin_ia32_psrlqi128
+ {Intrinsic::x86_avx2_psrli_q, 104638}, // __builtin_ia32_psrlqi256
+ {Intrinsic::x86_avx512_psrli_q_512, 115331}, // __builtin_ia32_psrlqi512
+ {Intrinsic::x86_avx512_psrlv_w_256, 115454}, // __builtin_ia32_psrlv16hi
+ {Intrinsic::x86_avx512_psrlv_d_512, 115381}, // __builtin_ia32_psrlv16si
+ {Intrinsic::x86_avx2_psrlv_q, 104736}, // __builtin_ia32_psrlv2di
+ {Intrinsic::x86_avx512_psrlv_w_512, 115479}, // __builtin_ia32_psrlv32hi
+ {Intrinsic::x86_avx2_psrlv_q_256, 104760}, // __builtin_ia32_psrlv4di
+ {Intrinsic::x86_avx2_psrlv_d, 104688}, // __builtin_ia32_psrlv4si
+ {Intrinsic::x86_avx512_psrlv_q_512, 115406}, // __builtin_ia32_psrlv8di
+ {Intrinsic::x86_avx512_psrlv_w_128, 115430}, // __builtin_ia32_psrlv8hi
+ {Intrinsic::x86_avx2_psrlv_d_256, 104712}, // __builtin_ia32_psrlv8si
+ {Intrinsic::x86_mmx_psrl_w, 119903}, // __builtin_ia32_psrlw
+ {Intrinsic::x86_sse2_psrl_w, 122966}, // __builtin_ia32_psrlw128
+ {Intrinsic::x86_avx2_psrl_w, 104589}, // __builtin_ia32_psrlw256
+ {Intrinsic::x86_avx512_psrl_w_512, 115282}, // __builtin_ia32_psrlw512
+ {Intrinsic::x86_mmx_psrli_w, 119968}, // __builtin_ia32_psrlwi
+ {Intrinsic::x86_sse2_psrli_w, 123040}, // __builtin_ia32_psrlwi128
+ {Intrinsic::x86_avx2_psrli_w, 104663}, // __builtin_ia32_psrlwi256
+ {Intrinsic::x86_avx512_psrli_w_512, 115356}, // __builtin_ia32_psrlwi512
+ {Intrinsic::x86_mmx_psub_b, 119990}, // __builtin_ia32_psubb
+ {Intrinsic::x86_mmx_psub_d, 120011}, // __builtin_ia32_psubd
+ {Intrinsic::x86_mmx_psub_q, 120032}, // __builtin_ia32_psubq
+ {Intrinsic::x86_mmx_psubs_b, 120074}, // __builtin_ia32_psubsb
+ {Intrinsic::x86_mmx_psubs_w, 120096}, // __builtin_ia32_psubsw
+ {Intrinsic::x86_mmx_psubus_b, 120118}, // __builtin_ia32_psubusb
+ {Intrinsic::x86_mmx_psubus_w, 120141}, // __builtin_ia32_psubusw
+ {Intrinsic::x86_mmx_psub_w, 120053}, // __builtin_ia32_psubw
+ {Intrinsic::x86_avx512_pternlog_d_128, 115504}, // __builtin_ia32_pternlogd128
+ {Intrinsic::x86_avx512_pternlog_d_256, 115532}, // __builtin_ia32_pternlogd256
+ {Intrinsic::x86_avx512_pternlog_d_512, 115560}, // __builtin_ia32_pternlogd512
+ {Intrinsic::x86_avx512_pternlog_q_128, 115588}, // __builtin_ia32_pternlogq128
+ {Intrinsic::x86_avx512_pternlog_q_256, 115616}, // __builtin_ia32_pternlogq256
+ {Intrinsic::x86_avx512_pternlog_q_512, 115644}, // __builtin_ia32_pternlogq512
+ {Intrinsic::x86_sse41_ptestc, 123641}, // __builtin_ia32_ptestc128
+ {Intrinsic::x86_avx_ptestc_256, 102190}, // __builtin_ia32_ptestc256
+ {Intrinsic::x86_sse41_ptestnzc, 123666}, // __builtin_ia32_ptestnzc128
+ {Intrinsic::x86_avx_ptestnzc_256, 102215}, // __builtin_ia32_ptestnzc256
+ {Intrinsic::x86_sse41_ptestz, 123693}, // __builtin_ia32_ptestz128
+ {Intrinsic::x86_avx_ptestz_256, 102242}, // __builtin_ia32_ptestz256
+ {Intrinsic::x86_ptwrite32, 120489}, // __builtin_ia32_ptwrite32
+ {Intrinsic::x86_ptwrite64, 120514}, // __builtin_ia32_ptwrite64
+ {Intrinsic::x86_mmx_punpckhbw, 120164}, // __builtin_ia32_punpckhbw
+ {Intrinsic::x86_mmx_punpckhdq, 120189}, // __builtin_ia32_punpckhdq
+ {Intrinsic::x86_mmx_punpckhwd, 120214}, // __builtin_ia32_punpckhwd
+ {Intrinsic::x86_mmx_punpcklbw, 120239}, // __builtin_ia32_punpcklbw
+ {Intrinsic::x86_mmx_punpckldq, 120264}, // __builtin_ia32_punpckldq
+ {Intrinsic::x86_mmx_punpcklwd, 120289}, // __builtin_ia32_punpcklwd
+ {Intrinsic::x86_mmx_pxor, 120314}, // __builtin_ia32_pxor
+ {Intrinsic::x86_avx512_mask_range_pd_128, 112099}, // __builtin_ia32_rangepd128_mask
+ {Intrinsic::x86_avx512_mask_range_pd_256, 112130}, // __builtin_ia32_rangepd256_mask
+ {Intrinsic::x86_avx512_mask_range_pd_512, 112161}, // __builtin_ia32_rangepd512_mask
+ {Intrinsic::x86_avx512_mask_range_ps_128, 112192}, // __builtin_ia32_rangeps128_mask
+ {Intrinsic::x86_avx512_mask_range_ps_256, 112223}, // __builtin_ia32_rangeps256_mask
+ {Intrinsic::x86_avx512_mask_range_ps_512, 112254}, // __builtin_ia32_rangeps512_mask
+ {Intrinsic::x86_avx512_mask_range_sd, 112285}, // __builtin_ia32_rangesd128_round_mask
+ {Intrinsic::x86_avx512_mask_range_ss, 112322}, // __builtin_ia32_rangess128_round_mask
+ {Intrinsic::x86_avx512_rcp14_pd_128, 115672}, // __builtin_ia32_rcp14pd128_mask
+ {Intrinsic::x86_avx512_rcp14_pd_256, 115703}, // __builtin_ia32_rcp14pd256_mask
+ {Intrinsic::x86_avx512_rcp14_pd_512, 115734}, // __builtin_ia32_rcp14pd512_mask
+ {Intrinsic::x86_avx512_rcp14_ps_128, 115765}, // __builtin_ia32_rcp14ps128_mask
+ {Intrinsic::x86_avx512_rcp14_ps_256, 115796}, // __builtin_ia32_rcp14ps256_mask
+ {Intrinsic::x86_avx512_rcp14_ps_512, 115827}, // __builtin_ia32_rcp14ps512_mask
+ {Intrinsic::x86_avx512_rcp14_sd, 115858}, // __builtin_ia32_rcp14sd_mask
+ {Intrinsic::x86_avx512_rcp14_ss, 115886}, // __builtin_ia32_rcp14ss_mask
+ {Intrinsic::x86_avx512_rcp28_pd, 115914}, // __builtin_ia32_rcp28pd_mask
+ {Intrinsic::x86_avx512_rcp28_ps, 115942}, // __builtin_ia32_rcp28ps_mask
+ {Intrinsic::x86_avx512_rcp28_sd, 115970}, // __builtin_ia32_rcp28sd_round_mask
+ {Intrinsic::x86_avx512_rcp28_ss, 116004}, // __builtin_ia32_rcp28ss_round_mask
+ {Intrinsic::x86_sse_rcp_ps, 121578}, // __builtin_ia32_rcpps
+ {Intrinsic::x86_avx_rcp_ps_256, 102267}, // __builtin_ia32_rcpps256
+ {Intrinsic::x86_sse_rcp_ss, 121599}, // __builtin_ia32_rcpss
+ {Intrinsic::x86_rdfsbase_32, 120539}, // __builtin_ia32_rdfsbase32
+ {Intrinsic::x86_rdfsbase_64, 120565}, // __builtin_ia32_rdfsbase64
+ {Intrinsic::x86_rdgsbase_32, 120591}, // __builtin_ia32_rdgsbase32
+ {Intrinsic::x86_rdgsbase_64, 120617}, // __builtin_ia32_rdgsbase64
+ {Intrinsic::x86_rdpid, 120643}, // __builtin_ia32_rdpid
+ {Intrinsic::x86_rdpkru, 120664}, // __builtin_ia32_rdpkru
+ {Intrinsic::x86_rdpmc, 120686}, // __builtin_ia32_rdpmc
+ {Intrinsic::x86_rdsspd, 120707}, // __builtin_ia32_rdsspd
+ {Intrinsic::x86_rdsspq, 120729}, // __builtin_ia32_rdsspq
+ {Intrinsic::x86_rdtsc, 120751}, // __builtin_ia32_rdtsc
+ {Intrinsic::x86_flags_read_u32, 118344}, // __builtin_ia32_readeflags_u32
+ {Intrinsic::x86_flags_read_u64, 118374}, // __builtin_ia32_readeflags_u64
+ {Intrinsic::x86_avx512_mask_reduce_pd_128, 112359}, // __builtin_ia32_reducepd128_mask
+ {Intrinsic::x86_avx512_mask_reduce_pd_256, 112391}, // __builtin_ia32_reducepd256_mask
+ {Intrinsic::x86_avx512_mask_reduce_pd_512, 112423}, // __builtin_ia32_reducepd512_mask
+ {Intrinsic::x86_avx512_mask_reduce_ps_128, 112455}, // __builtin_ia32_reduceps128_mask
+ {Intrinsic::x86_avx512_mask_reduce_ps_256, 112487}, // __builtin_ia32_reduceps256_mask
+ {Intrinsic::x86_avx512_mask_reduce_ps_512, 112519}, // __builtin_ia32_reduceps512_mask
+ {Intrinsic::x86_avx512_mask_reduce_sd, 112551}, // __builtin_ia32_reducesd_mask
+ {Intrinsic::x86_avx512_mask_reduce_ss, 112580}, // __builtin_ia32_reducess_mask
+ {Intrinsic::x86_avx512_mask_rndscale_pd_128, 112609}, // __builtin_ia32_rndscalepd_128_mask
+ {Intrinsic::x86_avx512_mask_rndscale_pd_256, 112644}, // __builtin_ia32_rndscalepd_256_mask
+ {Intrinsic::x86_avx512_mask_rndscale_pd_512, 112679}, // __builtin_ia32_rndscalepd_mask
+ {Intrinsic::x86_avx512_mask_rndscale_ps_128, 112710}, // __builtin_ia32_rndscaleps_128_mask
+ {Intrinsic::x86_avx512_mask_rndscale_ps_256, 112745}, // __builtin_ia32_rndscaleps_256_mask
+ {Intrinsic::x86_avx512_mask_rndscale_ps_512, 112780}, // __builtin_ia32_rndscaleps_mask
+ {Intrinsic::x86_avx512_mask_rndscale_sd, 112811}, // __builtin_ia32_rndscalesd_round_mask
+ {Intrinsic::x86_avx512_mask_rndscale_ss, 112848}, // __builtin_ia32_rndscaless_round_mask
+ {Intrinsic::x86_sse41_round_pd, 123718}, // __builtin_ia32_roundpd
+ {Intrinsic::x86_avx_round_pd_256, 102291}, // __builtin_ia32_roundpd256
+ {Intrinsic::x86_sse41_round_ps, 123741}, // __builtin_ia32_roundps
+ {Intrinsic::x86_avx_round_ps_256, 102317}, // __builtin_ia32_roundps256
+ {Intrinsic::x86_sse41_round_sd, 123764}, // __builtin_ia32_roundsd
+ {Intrinsic::x86_sse41_round_ss, 123787}, // __builtin_ia32_roundss
+ {Intrinsic::x86_avx512_rsqrt14_pd_128, 116038}, // __builtin_ia32_rsqrt14pd128_mask
+ {Intrinsic::x86_avx512_rsqrt14_pd_256, 116071}, // __builtin_ia32_rsqrt14pd256_mask
+ {Intrinsic::x86_avx512_rsqrt14_pd_512, 116104}, // __builtin_ia32_rsqrt14pd512_mask
+ {Intrinsic::x86_avx512_rsqrt14_ps_128, 116137}, // __builtin_ia32_rsqrt14ps128_mask
+ {Intrinsic::x86_avx512_rsqrt14_ps_256, 116170}, // __builtin_ia32_rsqrt14ps256_mask
+ {Intrinsic::x86_avx512_rsqrt14_ps_512, 116203}, // __builtin_ia32_rsqrt14ps512_mask
+ {Intrinsic::x86_avx512_rsqrt14_sd, 116236}, // __builtin_ia32_rsqrt14sd_mask
+ {Intrinsic::x86_avx512_rsqrt14_ss, 116266}, // __builtin_ia32_rsqrt14ss_mask
+ {Intrinsic::x86_avx512_rsqrt28_pd, 116296}, // __builtin_ia32_rsqrt28pd_mask
+ {Intrinsic::x86_avx512_rsqrt28_ps, 116326}, // __builtin_ia32_rsqrt28ps_mask
+ {Intrinsic::x86_avx512_rsqrt28_sd, 116356}, // __builtin_ia32_rsqrt28sd_round_mask
+ {Intrinsic::x86_avx512_rsqrt28_ss, 116392}, // __builtin_ia32_rsqrt28ss_round_mask
+ {Intrinsic::x86_sse_rsqrt_ps, 121620}, // __builtin_ia32_rsqrtps
+ {Intrinsic::x86_avx_rsqrt_ps_256, 102343}, // __builtin_ia32_rsqrtps256
+ {Intrinsic::x86_sse_rsqrt_ss, 121643}, // __builtin_ia32_rsqrtss
+ {Intrinsic::x86_rstorssp, 120772}, // __builtin_ia32_rstorssp
+ {Intrinsic::x86_saveprevssp, 120796}, // __builtin_ia32_saveprevssp
+ {Intrinsic::x86_avx512_mask_scalef_pd_128, 112885}, // __builtin_ia32_scalefpd128_mask
+ {Intrinsic::x86_avx512_mask_scalef_pd_256, 112917}, // __builtin_ia32_scalefpd256_mask
+ {Intrinsic::x86_avx512_mask_scalef_pd_512, 112949}, // __builtin_ia32_scalefpd512_mask
+ {Intrinsic::x86_avx512_mask_scalef_ps_128, 112981}, // __builtin_ia32_scalefps128_mask
+ {Intrinsic::x86_avx512_mask_scalef_ps_256, 113013}, // __builtin_ia32_scalefps256_mask
+ {Intrinsic::x86_avx512_mask_scalef_ps_512, 113045}, // __builtin_ia32_scalefps512_mask
+ {Intrinsic::x86_avx512_mask_scalef_sd, 113077}, // __builtin_ia32_scalefsd_round_mask
+ {Intrinsic::x86_avx512_mask_scalef_ss, 113112}, // __builtin_ia32_scalefss_round_mask
+ {Intrinsic::x86_avx512_scatterpf_dpd_512, 116428}, // __builtin_ia32_scatterpfdpd
+ {Intrinsic::x86_avx512_scatterpf_dps_512, 116456}, // __builtin_ia32_scatterpfdps
+ {Intrinsic::x86_avx512_scatterpf_qpd_512, 116484}, // __builtin_ia32_scatterpfqpd
+ {Intrinsic::x86_avx512_scatterpf_qps_512, 116512}, // __builtin_ia32_scatterpfqps
+ {Intrinsic::x86_setssbsy, 120823}, // __builtin_ia32_setssbsy
+ {Intrinsic::x86_sse_sfence, 121666}, // __builtin_ia32_sfence
+ {Intrinsic::x86_sha1msg1, 120847}, // __builtin_ia32_sha1msg1
+ {Intrinsic::x86_sha1msg2, 120871}, // __builtin_ia32_sha1msg2
+ {Intrinsic::x86_sha1nexte, 120895}, // __builtin_ia32_sha1nexte
+ {Intrinsic::x86_sha1rnds4, 120920}, // __builtin_ia32_sha1rnds4
+ {Intrinsic::x86_sha256msg1, 120945}, // __builtin_ia32_sha256msg1
+ {Intrinsic::x86_sha256msg2, 120971}, // __builtin_ia32_sha256msg2
+ {Intrinsic::x86_sha256rnds2, 120997}, // __builtin_ia32_sha256rnds2
+ {Intrinsic::x86_slwpcb, 121024}, // __builtin_ia32_slwpcb
+ {Intrinsic::x86_avx512_sub_pd_512, 116540}, // __builtin_ia32_subpd512
+ {Intrinsic::x86_avx512_sub_ps_512, 116564}, // __builtin_ia32_subps512
+ {Intrinsic::x86_avx512_mask_sub_sd_round, 113147}, // __builtin_ia32_subsd_round_mask
+ {Intrinsic::x86_avx512_mask_sub_ss_round, 113179}, // __builtin_ia32_subss_round_mask
+ {Intrinsic::x86_tpause, 125087}, // __builtin_ia32_tpause
+ {Intrinsic::x86_sse_ucomieq_ss, 121688}, // __builtin_ia32_ucomieq
+ {Intrinsic::x86_sse_ucomige_ss, 121711}, // __builtin_ia32_ucomige
+ {Intrinsic::x86_sse_ucomigt_ss, 121734}, // __builtin_ia32_ucomigt
+ {Intrinsic::x86_sse_ucomile_ss, 121757}, // __builtin_ia32_ucomile
+ {Intrinsic::x86_sse_ucomilt_ss, 121780}, // __builtin_ia32_ucomilt
+ {Intrinsic::x86_sse_ucomineq_ss, 121803}, // __builtin_ia32_ucomineq
+ {Intrinsic::x86_sse2_ucomieq_sd, 123065}, // __builtin_ia32_ucomisdeq
+ {Intrinsic::x86_sse2_ucomige_sd, 123090}, // __builtin_ia32_ucomisdge
+ {Intrinsic::x86_sse2_ucomigt_sd, 123115}, // __builtin_ia32_ucomisdgt
+ {Intrinsic::x86_sse2_ucomile_sd, 123140}, // __builtin_ia32_ucomisdle
+ {Intrinsic::x86_sse2_ucomilt_sd, 123165}, // __builtin_ia32_ucomisdlt
+ {Intrinsic::x86_sse2_ucomineq_sd, 123190}, // __builtin_ia32_ucomisdneq
+ {Intrinsic::x86_umonitor, 125109}, // __builtin_ia32_umonitor
+ {Intrinsic::x86_umwait, 125133}, // __builtin_ia32_umwait
+ {Intrinsic::x86_avx512_vcomi_sd, 116588}, // __builtin_ia32_vcomisd
+ {Intrinsic::x86_avx512_vcomi_ss, 116611}, // __builtin_ia32_vcomiss
+ {Intrinsic::x86_vcvtph2ps_128, 125155}, // __builtin_ia32_vcvtph2ps
+ {Intrinsic::x86_vcvtph2ps_256, 125180}, // __builtin_ia32_vcvtph2ps256
+ {Intrinsic::x86_avx512_mask_vcvtph2ps_256, 113241}, // __builtin_ia32_vcvtph2ps256_mask
+ {Intrinsic::x86_avx512_mask_vcvtph2ps_512, 113274}, // __builtin_ia32_vcvtph2ps512_mask
+ {Intrinsic::x86_avx512_mask_vcvtph2ps_128, 113211}, // __builtin_ia32_vcvtph2ps_mask
+ {Intrinsic::x86_vcvtps2ph_128, 125208}, // __builtin_ia32_vcvtps2ph
+ {Intrinsic::x86_vcvtps2ph_256, 125233}, // __builtin_ia32_vcvtps2ph256
+ {Intrinsic::x86_avx512_mask_vcvtps2ph_256, 113337}, // __builtin_ia32_vcvtps2ph256_mask
+ {Intrinsic::x86_avx512_mask_vcvtps2ph_512, 113370}, // __builtin_ia32_vcvtps2ph512_mask
+ {Intrinsic::x86_avx512_mask_vcvtps2ph_128, 113307}, // __builtin_ia32_vcvtps2ph_mask
+ {Intrinsic::x86_avx512_vcvtsd2si32, 116634}, // __builtin_ia32_vcvtsd2si32
+ {Intrinsic::x86_avx512_vcvtsd2si64, 116661}, // __builtin_ia32_vcvtsd2si64
+ {Intrinsic::x86_avx512_vcvtsd2usi32, 116688}, // __builtin_ia32_vcvtsd2usi32
+ {Intrinsic::x86_avx512_vcvtsd2usi64, 116716}, // __builtin_ia32_vcvtsd2usi64
+ {Intrinsic::x86_avx512_vcvtss2si32, 116744}, // __builtin_ia32_vcvtss2si32
+ {Intrinsic::x86_avx512_vcvtss2si64, 116771}, // __builtin_ia32_vcvtss2si64
+ {Intrinsic::x86_avx512_vcvtss2usi32, 116798}, // __builtin_ia32_vcvtss2usi32
+ {Intrinsic::x86_avx512_vcvtss2usi64, 116826}, // __builtin_ia32_vcvtss2usi64
+ {Intrinsic::x86_avx512_cvttsd2si, 105282}, // __builtin_ia32_vcvttsd2si32
+ {Intrinsic::x86_avx512_cvttsd2si64, 105310}, // __builtin_ia32_vcvttsd2si64
+ {Intrinsic::x86_avx512_cvttsd2usi, 105338}, // __builtin_ia32_vcvttsd2usi32
+ {Intrinsic::x86_avx512_cvttsd2usi64, 105367}, // __builtin_ia32_vcvttsd2usi64
+ {Intrinsic::x86_avx512_cvttss2si, 105396}, // __builtin_ia32_vcvttss2si32
+ {Intrinsic::x86_avx512_cvttss2si64, 105424}, // __builtin_ia32_vcvttss2si64
+ {Intrinsic::x86_avx512_cvttss2usi, 105452}, // __builtin_ia32_vcvttss2usi32
+ {Intrinsic::x86_avx512_cvttss2usi64, 105481}, // __builtin_ia32_vcvttss2usi64
+ {Intrinsic::x86_mmx_pextr_w, 119324}, // __builtin_ia32_vec_ext_v4hi
+ {Intrinsic::x86_mmx_pinsr_w, 119352}, // __builtin_ia32_vec_set_v4hi
+ {Intrinsic::x86_xop_vfrcz_pd, 125904}, // __builtin_ia32_vfrczpd
+ {Intrinsic::x86_xop_vfrcz_pd_256, 125927}, // __builtin_ia32_vfrczpd256
+ {Intrinsic::x86_xop_vfrcz_ps, 125953}, // __builtin_ia32_vfrczps
+ {Intrinsic::x86_xop_vfrcz_ps_256, 125976}, // __builtin_ia32_vfrczps256
+ {Intrinsic::x86_xop_vfrcz_sd, 126002}, // __builtin_ia32_vfrczsd
+ {Intrinsic::x86_xop_vfrcz_ss, 126025}, // __builtin_ia32_vfrczss
+ {Intrinsic::x86_vgf2p8affineinvqb_128, 125261}, // __builtin_ia32_vgf2p8affineinvqb_v16qi
+ {Intrinsic::x86_vgf2p8affineinvqb_256, 125300}, // __builtin_ia32_vgf2p8affineinvqb_v32qi
+ {Intrinsic::x86_vgf2p8affineinvqb_512, 125339}, // __builtin_ia32_vgf2p8affineinvqb_v64qi
+ {Intrinsic::x86_vgf2p8affineqb_128, 125378}, // __builtin_ia32_vgf2p8affineqb_v16qi
+ {Intrinsic::x86_vgf2p8affineqb_256, 125414}, // __builtin_ia32_vgf2p8affineqb_v32qi
+ {Intrinsic::x86_vgf2p8affineqb_512, 125450}, // __builtin_ia32_vgf2p8affineqb_v64qi
+ {Intrinsic::x86_vgf2p8mulb_128, 125486}, // __builtin_ia32_vgf2p8mulb_v16qi
+ {Intrinsic::x86_vgf2p8mulb_256, 125518}, // __builtin_ia32_vgf2p8mulb_v32qi
+ {Intrinsic::x86_vgf2p8mulb_512, 125550}, // __builtin_ia32_vgf2p8mulb_v64qi
+ {Intrinsic::x86_avx512_conflict_q_128, 105108}, // __builtin_ia32_vpconflictdi_128
+ {Intrinsic::x86_avx512_conflict_q_256, 105140}, // __builtin_ia32_vpconflictdi_256
+ {Intrinsic::x86_avx512_conflict_q_512, 105172}, // __builtin_ia32_vpconflictdi_512
+ {Intrinsic::x86_avx512_conflict_d_128, 105012}, // __builtin_ia32_vpconflictsi_128
+ {Intrinsic::x86_avx512_conflict_d_256, 105044}, // __builtin_ia32_vpconflictsi_256
+ {Intrinsic::x86_avx512_conflict_d_512, 105076}, // __builtin_ia32_vpconflictsi_512
+ {Intrinsic::x86_avx512_vpdpbusd_128, 116854}, // __builtin_ia32_vpdpbusd128
+ {Intrinsic::x86_avx512_vpdpbusd_256, 116881}, // __builtin_ia32_vpdpbusd256
+ {Intrinsic::x86_avx512_vpdpbusd_512, 116908}, // __builtin_ia32_vpdpbusd512
+ {Intrinsic::x86_avx512_vpdpbusds_128, 116935}, // __builtin_ia32_vpdpbusds128
+ {Intrinsic::x86_avx512_vpdpbusds_256, 116963}, // __builtin_ia32_vpdpbusds256
+ {Intrinsic::x86_avx512_vpdpbusds_512, 116991}, // __builtin_ia32_vpdpbusds512
+ {Intrinsic::x86_avx512_vpdpwssd_128, 117019}, // __builtin_ia32_vpdpwssd128
+ {Intrinsic::x86_avx512_vpdpwssd_256, 117046}, // __builtin_ia32_vpdpwssd256
+ {Intrinsic::x86_avx512_vpdpwssd_512, 117073}, // __builtin_ia32_vpdpwssd512
+ {Intrinsic::x86_avx512_vpdpwssds_128, 117100}, // __builtin_ia32_vpdpwssds128
+ {Intrinsic::x86_avx512_vpdpwssds_256, 117128}, // __builtin_ia32_vpdpwssds256
+ {Intrinsic::x86_avx512_vpdpwssds_512, 117156}, // __builtin_ia32_vpdpwssds512
+ {Intrinsic::x86_avx512_vpermi2var_d_128, 117184}, // __builtin_ia32_vpermi2vard128
+ {Intrinsic::x86_avx512_vpermi2var_d_256, 117214}, // __builtin_ia32_vpermi2vard256
+ {Intrinsic::x86_avx512_vpermi2var_d_512, 117244}, // __builtin_ia32_vpermi2vard512
+ {Intrinsic::x86_avx512_vpermi2var_hi_128, 117274}, // __builtin_ia32_vpermi2varhi128
+ {Intrinsic::x86_avx512_vpermi2var_hi_256, 117305}, // __builtin_ia32_vpermi2varhi256
+ {Intrinsic::x86_avx512_vpermi2var_hi_512, 117336}, // __builtin_ia32_vpermi2varhi512
+ {Intrinsic::x86_avx512_vpermi2var_pd_128, 117367}, // __builtin_ia32_vpermi2varpd128
+ {Intrinsic::x86_avx512_vpermi2var_pd_256, 117398}, // __builtin_ia32_vpermi2varpd256
+ {Intrinsic::x86_avx512_vpermi2var_pd_512, 117429}, // __builtin_ia32_vpermi2varpd512
+ {Intrinsic::x86_avx512_vpermi2var_ps_128, 117460}, // __builtin_ia32_vpermi2varps128
+ {Intrinsic::x86_avx512_vpermi2var_ps_256, 117491}, // __builtin_ia32_vpermi2varps256
+ {Intrinsic::x86_avx512_vpermi2var_ps_512, 117522}, // __builtin_ia32_vpermi2varps512
+ {Intrinsic::x86_avx512_vpermi2var_q_128, 117553}, // __builtin_ia32_vpermi2varq128
+ {Intrinsic::x86_avx512_vpermi2var_q_256, 117583}, // __builtin_ia32_vpermi2varq256
+ {Intrinsic::x86_avx512_vpermi2var_q_512, 117613}, // __builtin_ia32_vpermi2varq512
+ {Intrinsic::x86_avx512_vpermi2var_qi_128, 117643}, // __builtin_ia32_vpermi2varqi128
+ {Intrinsic::x86_avx512_vpermi2var_qi_256, 117674}, // __builtin_ia32_vpermi2varqi256
+ {Intrinsic::x86_avx512_vpermi2var_qi_512, 117705}, // __builtin_ia32_vpermi2varqi512
+ {Intrinsic::x86_xop_vpermil2pd, 126048}, // __builtin_ia32_vpermil2pd
+ {Intrinsic::x86_xop_vpermil2pd_256, 126074}, // __builtin_ia32_vpermil2pd256
+ {Intrinsic::x86_xop_vpermil2ps, 126103}, // __builtin_ia32_vpermil2ps
+ {Intrinsic::x86_xop_vpermil2ps_256, 126129}, // __builtin_ia32_vpermil2ps256
+ {Intrinsic::x86_avx_vpermilvar_pd, 102369}, // __builtin_ia32_vpermilvarpd
+ {Intrinsic::x86_avx_vpermilvar_pd_256, 102397}, // __builtin_ia32_vpermilvarpd256
+ {Intrinsic::x86_avx512_vpermilvar_pd_512, 117736}, // __builtin_ia32_vpermilvarpd512
+ {Intrinsic::x86_avx_vpermilvar_ps, 102428}, // __builtin_ia32_vpermilvarps
+ {Intrinsic::x86_avx_vpermilvar_ps_256, 102456}, // __builtin_ia32_vpermilvarps256
+ {Intrinsic::x86_avx512_vpermilvar_ps_512, 117767}, // __builtin_ia32_vpermilvarps512
+ {Intrinsic::x86_xop_vphaddbd, 126158}, // __builtin_ia32_vphaddbd
+ {Intrinsic::x86_xop_vphaddbq, 126182}, // __builtin_ia32_vphaddbq
+ {Intrinsic::x86_xop_vphaddbw, 126206}, // __builtin_ia32_vphaddbw
+ {Intrinsic::x86_xop_vphadddq, 126230}, // __builtin_ia32_vphadddq
+ {Intrinsic::x86_xop_vphaddubd, 126254}, // __builtin_ia32_vphaddubd
+ {Intrinsic::x86_xop_vphaddubq, 126279}, // __builtin_ia32_vphaddubq
+ {Intrinsic::x86_xop_vphaddubw, 126304}, // __builtin_ia32_vphaddubw
+ {Intrinsic::x86_xop_vphaddudq, 126329}, // __builtin_ia32_vphaddudq
+ {Intrinsic::x86_xop_vphadduwd, 126354}, // __builtin_ia32_vphadduwd
+ {Intrinsic::x86_xop_vphadduwq, 126379}, // __builtin_ia32_vphadduwq
+ {Intrinsic::x86_xop_vphaddwd, 126404}, // __builtin_ia32_vphaddwd
+ {Intrinsic::x86_xop_vphaddwq, 126428}, // __builtin_ia32_vphaddwq
+ {Intrinsic::x86_xop_vphsubbw, 126452}, // __builtin_ia32_vphsubbw
+ {Intrinsic::x86_xop_vphsubdq, 126476}, // __builtin_ia32_vphsubdq
+ {Intrinsic::x86_xop_vphsubwd, 126500}, // __builtin_ia32_vphsubwd
+ {Intrinsic::x86_xop_vpmacsdd, 126524}, // __builtin_ia32_vpmacsdd
+ {Intrinsic::x86_xop_vpmacsdqh, 126548}, // __builtin_ia32_vpmacsdqh
+ {Intrinsic::x86_xop_vpmacsdql, 126573}, // __builtin_ia32_vpmacsdql
+ {Intrinsic::x86_xop_vpmacssdd, 126598}, // __builtin_ia32_vpmacssdd
+ {Intrinsic::x86_xop_vpmacssdqh, 126623}, // __builtin_ia32_vpmacssdqh
+ {Intrinsic::x86_xop_vpmacssdql, 126649}, // __builtin_ia32_vpmacssdql
+ {Intrinsic::x86_xop_vpmacsswd, 126675}, // __builtin_ia32_vpmacsswd
+ {Intrinsic::x86_xop_vpmacssww, 126700}, // __builtin_ia32_vpmacssww
+ {Intrinsic::x86_xop_vpmacswd, 126725}, // __builtin_ia32_vpmacswd
+ {Intrinsic::x86_xop_vpmacsww, 126749}, // __builtin_ia32_vpmacsww
+ {Intrinsic::x86_xop_vpmadcsswd, 126773}, // __builtin_ia32_vpmadcsswd
+ {Intrinsic::x86_xop_vpmadcswd, 126799}, // __builtin_ia32_vpmadcswd
+ {Intrinsic::x86_avx512_vpmadd52h_uq_128, 117798}, // __builtin_ia32_vpmadd52huq128
+ {Intrinsic::x86_avx512_vpmadd52h_uq_256, 117828}, // __builtin_ia32_vpmadd52huq256
+ {Intrinsic::x86_avx512_vpmadd52h_uq_512, 117858}, // __builtin_ia32_vpmadd52huq512
+ {Intrinsic::x86_avx512_vpmadd52l_uq_128, 117888}, // __builtin_ia32_vpmadd52luq128
+ {Intrinsic::x86_avx512_vpmadd52l_uq_256, 117918}, // __builtin_ia32_vpmadd52luq256
+ {Intrinsic::x86_avx512_vpmadd52l_uq_512, 117948}, // __builtin_ia32_vpmadd52luq512
+ {Intrinsic::x86_avx512_pmultishift_qb_128, 114397}, // __builtin_ia32_vpmultishiftqb128
+ {Intrinsic::x86_avx512_pmultishift_qb_256, 114430}, // __builtin_ia32_vpmultishiftqb256
+ {Intrinsic::x86_avx512_pmultishift_qb_512, 114463}, // __builtin_ia32_vpmultishiftqb512
+ {Intrinsic::x86_xop_vpperm, 126824}, // __builtin_ia32_vpperm
+ {Intrinsic::x86_xop_vpshab, 126846}, // __builtin_ia32_vpshab
+ {Intrinsic::x86_xop_vpshad, 126868}, // __builtin_ia32_vpshad
+ {Intrinsic::x86_xop_vpshaq, 126890}, // __builtin_ia32_vpshaq
+ {Intrinsic::x86_xop_vpshaw, 126912}, // __builtin_ia32_vpshaw
+ {Intrinsic::x86_xop_vpshlb, 126934}, // __builtin_ia32_vpshlb
+ {Intrinsic::x86_xop_vpshld, 126956}, // __builtin_ia32_vpshld
+ {Intrinsic::x86_xop_vpshlq, 126978}, // __builtin_ia32_vpshlq
+ {Intrinsic::x86_xop_vpshlw, 127000}, // __builtin_ia32_vpshlw
+ {Intrinsic::x86_avx_vtestc_pd, 102487}, // __builtin_ia32_vtestcpd
+ {Intrinsic::x86_avx_vtestc_pd_256, 102511}, // __builtin_ia32_vtestcpd256
+ {Intrinsic::x86_avx_vtestc_ps, 102538}, // __builtin_ia32_vtestcps
+ {Intrinsic::x86_avx_vtestc_ps_256, 102562}, // __builtin_ia32_vtestcps256
+ {Intrinsic::x86_avx_vtestnzc_pd, 102589}, // __builtin_ia32_vtestnzcpd
+ {Intrinsic::x86_avx_vtestnzc_pd_256, 102615}, // __builtin_ia32_vtestnzcpd256
+ {Intrinsic::x86_avx_vtestnzc_ps, 102644}, // __builtin_ia32_vtestnzcps
+ {Intrinsic::x86_avx_vtestnzc_ps_256, 102670}, // __builtin_ia32_vtestnzcps256
+ {Intrinsic::x86_avx_vtestz_pd, 102699}, // __builtin_ia32_vtestzpd
+ {Intrinsic::x86_avx_vtestz_pd_256, 102723}, // __builtin_ia32_vtestzpd256
+ {Intrinsic::x86_avx_vtestz_ps, 102750}, // __builtin_ia32_vtestzps
+ {Intrinsic::x86_avx_vtestz_ps_256, 102774}, // __builtin_ia32_vtestzps256
+ {Intrinsic::x86_avx_vzeroall, 102801}, // __builtin_ia32_vzeroall
+ {Intrinsic::x86_avx_vzeroupper, 102825}, // __builtin_ia32_vzeroupper
+ {Intrinsic::x86_wbinvd, 125582}, // __builtin_ia32_wbinvd
+ {Intrinsic::x86_wbnoinvd, 125604}, // __builtin_ia32_wbnoinvd
+ {Intrinsic::x86_wrfsbase_32, 125628}, // __builtin_ia32_wrfsbase32
+ {Intrinsic::x86_wrfsbase_64, 125654}, // __builtin_ia32_wrfsbase64
+ {Intrinsic::x86_wrgsbase_32, 125680}, // __builtin_ia32_wrgsbase32
+ {Intrinsic::x86_wrgsbase_64, 125706}, // __builtin_ia32_wrgsbase64
+ {Intrinsic::x86_flags_write_u32, 118404}, // __builtin_ia32_writeeflags_u32
+ {Intrinsic::x86_flags_write_u64, 118435}, // __builtin_ia32_writeeflags_u64
+ {Intrinsic::x86_wrpkru, 125732}, // __builtin_ia32_wrpkru
+ {Intrinsic::x86_wrssd, 125754}, // __builtin_ia32_wrssd
+ {Intrinsic::x86_wrssq, 125775}, // __builtin_ia32_wrssq
+ {Intrinsic::x86_wrussd, 125796}, // __builtin_ia32_wrussd
+ {Intrinsic::x86_wrussq, 125818}, // __builtin_ia32_wrussq
+ {Intrinsic::x86_xabort, 125840}, // __builtin_ia32_xabort
+ {Intrinsic::x86_xbegin, 125862}, // __builtin_ia32_xbegin
+ {Intrinsic::x86_xend, 125884}, // __builtin_ia32_xend
+ {Intrinsic::x86_xtest, 127022}, // __builtin_ia32_xtest
};
auto I = std::lower_bound(std::begin(x86Names),
std::end(x86Names),
@@ -29801,10 +29494,10 @@
}
if (TargetPrefix == "xcore") {
static const BuiltinEntry xcoreNames[] = {
- {Intrinsic::xcore_bitrev, 131263}, // __builtin_bitrev
- {Intrinsic::xcore_getid, 131280}, // __builtin_getid
- {Intrinsic::xcore_getps, 131296}, // __builtin_getps
- {Intrinsic::xcore_setps, 131312}, // __builtin_setps
+ {Intrinsic::xcore_bitrev, 127043}, // __builtin_bitrev
+ {Intrinsic::xcore_getid, 127060}, // __builtin_getid
+ {Intrinsic::xcore_getps, 127076}, // __builtin_getps
+ {Intrinsic::xcore_setps, 127092}, // __builtin_setps
};
auto I = std::lower_bound(std::begin(xcoreNames),
std::end(xcoreNames),
diff --git a/linux-x64/clang/include/llvm/IR/IntrinsicInst.h b/linux-x64/clang/include/llvm/IR/IntrinsicInst.h
index 32a62a4..62bb4fa 100644
--- a/linux-x64/clang/include/llvm/IR/IntrinsicInst.h
+++ b/linux-x64/clang/include/llvm/IR/IntrinsicInst.h
@@ -1,9 +1,8 @@
//===-- llvm/IntrinsicInst.h - Intrinsic Instruction Wrappers ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -251,6 +250,12 @@
case Intrinsic::experimental_constrained_log2:
case Intrinsic::experimental_constrained_rint:
case Intrinsic::experimental_constrained_nearbyint:
+ case Intrinsic::experimental_constrained_maxnum:
+ case Intrinsic::experimental_constrained_minnum:
+ case Intrinsic::experimental_constrained_ceil:
+ case Intrinsic::experimental_constrained_floor:
+ case Intrinsic::experimental_constrained_round:
+ case Intrinsic::experimental_constrained_trunc:
return true;
default: return false;
}
diff --git a/linux-x64/clang/include/llvm/IR/Intrinsics.h b/linux-x64/clang/include/llvm/IR/Intrinsics.h
index e1e17f9..ad5e7d1 100644
--- a/linux-x64/clang/include/llvm/IR/Intrinsics.h
+++ b/linux-x64/clang/include/llvm/IR/Intrinsics.h
@@ -1,9 +1,8 @@
-//===-- llvm/Instrinsics.h - LLVM Intrinsic Function Handling ---*- C++ -*-===//
+//===- Intrinsics.h - LLVM Intrinsic Function Handling ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/Intrinsics.td b/linux-x64/clang/include/llvm/IR/Intrinsics.td
index b405e86..090ee60 100644
--- a/linux-x64/clang/include/llvm/IR/Intrinsics.td
+++ b/linux-x64/clang/include/llvm/IR/Intrinsics.td
@@ -1,9 +1,8 @@
//===- Intrinsics.td - Defines all LLVM intrinsics ---------*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -90,6 +89,10 @@
def IntrNoReturn : IntrinsicProperty;
+// IntrCold - Calls to this intrinsic are cold.
+// Parallels the cold attribute on LLVM IR functions.
+def IntrCold : IntrinsicProperty;
+
// IntrNoduplicate - Calls to this intrinsic cannot be duplicated.
// Parallels the noduplicate attribute on LLVM IR functions.
def IntrNoDuplicate : IntrinsicProperty;
@@ -153,10 +156,15 @@
// the intrinsic is overloaded, so the matched type should be declared as iAny.
class LLVMExtendedType<int num> : LLVMMatchType<num>;
class LLVMTruncatedType<int num> : LLVMMatchType<num>;
-class LLVMVectorSameWidth<int num, LLVMType elty>
- : LLVMMatchType<num> {
+
+// Match the scalar/vector of another intrinsic parameter but with a different
+// element type. Either both are scalars or both are vectors with the same
+// number of elements.
+class LLVMScalarOrSameVectorWidth<int idx, LLVMType elty>
+ : LLVMMatchType<idx> {
ValueType ElTy = elty.VT;
}
+
class LLVMPointerTo<int num> : LLVMMatchType<num>;
class LLVMPointerToElt<int num> : LLVMMatchType<num>;
class LLVMVectorOfAnyPointersToElt<int num> : LLVMMatchType<num>;
@@ -315,11 +323,84 @@
[llvm_ptr_ty, llvm_ptr_ty, llvm_ptrptr_ty],
[IntrArgMemOnly, NoCapture<1>, NoCapture<2>]>;
+//===------------------- ObjC ARC runtime Intrinsics --------------------===//
+//
+// Note these are to support the Objective-C ARC optimizer which wants to
+// eliminate retain and releases where possible.
+
+def int_objc_autorelease : Intrinsic<[llvm_ptr_ty],
+ [llvm_ptr_ty]>;
+def int_objc_autoreleasePoolPop : Intrinsic<[], [llvm_ptr_ty]>;
+def int_objc_autoreleasePoolPush : Intrinsic<[llvm_ptr_ty], []>;
+def int_objc_autoreleaseReturnValue : Intrinsic<[llvm_ptr_ty],
+ [llvm_ptr_ty]>;
+def int_objc_copyWeak : Intrinsic<[],
+ [llvm_ptrptr_ty,
+ llvm_ptrptr_ty]>;
+def int_objc_destroyWeak : Intrinsic<[], [llvm_ptrptr_ty]>;
+def int_objc_initWeak : Intrinsic<[llvm_ptr_ty],
+ [llvm_ptrptr_ty,
+ llvm_ptr_ty]>;
+def int_objc_loadWeak : Intrinsic<[llvm_ptr_ty],
+ [llvm_ptrptr_ty]>;
+def int_objc_loadWeakRetained : Intrinsic<[llvm_ptr_ty],
+ [llvm_ptrptr_ty]>;
+def int_objc_moveWeak : Intrinsic<[],
+ [llvm_ptrptr_ty,
+ llvm_ptrptr_ty]>;
+def int_objc_release : Intrinsic<[], [llvm_ptr_ty]>;
+def int_objc_retain : Intrinsic<[llvm_ptr_ty],
+ [llvm_ptr_ty]>;
+def int_objc_retainAutorelease : Intrinsic<[llvm_ptr_ty],
+ [llvm_ptr_ty]>;
+def int_objc_retainAutoreleaseReturnValue : Intrinsic<[llvm_ptr_ty],
+ [llvm_ptr_ty]>;
+def int_objc_retainAutoreleasedReturnValue : Intrinsic<[llvm_ptr_ty],
+ [llvm_ptr_ty]>;
+def int_objc_retainBlock : Intrinsic<[llvm_ptr_ty],
+ [llvm_ptr_ty]>;
+def int_objc_storeStrong : Intrinsic<[],
+ [llvm_ptrptr_ty,
+ llvm_ptr_ty]>;
+def int_objc_storeWeak : Intrinsic<[llvm_ptr_ty],
+ [llvm_ptrptr_ty,
+ llvm_ptr_ty]>;
+def int_objc_clang_arc_use : Intrinsic<[],
+ [llvm_vararg_ty]>;
+def int_objc_unsafeClaimAutoreleasedReturnValue : Intrinsic<[llvm_ptr_ty],
+ [llvm_ptr_ty]>;
+def int_objc_retainedObject : Intrinsic<[llvm_ptr_ty],
+ [llvm_ptr_ty]>;
+def int_objc_unretainedObject : Intrinsic<[llvm_ptr_ty],
+ [llvm_ptr_ty]>;
+def int_objc_unretainedPointer : Intrinsic<[llvm_ptr_ty],
+ [llvm_ptr_ty]>;
+def int_objc_retain_autorelease : Intrinsic<[llvm_ptr_ty],
+ [llvm_ptr_ty]>;
+def int_objc_sync_enter : Intrinsic<[llvm_i32_ty],
+ [llvm_ptr_ty]>;
+def int_objc_sync_exit : Intrinsic<[llvm_i32_ty],
+ [llvm_ptr_ty]>;
+def int_objc_arc_annotation_topdown_bbstart : Intrinsic<[],
+ [llvm_ptrptr_ty,
+ llvm_ptrptr_ty]>;
+def int_objc_arc_annotation_topdown_bbend : Intrinsic<[],
+ [llvm_ptrptr_ty,
+ llvm_ptrptr_ty]>;
+def int_objc_arc_annotation_bottomup_bbstart : Intrinsic<[],
+ [llvm_ptrptr_ty,
+ llvm_ptrptr_ty]>;
+def int_objc_arc_annotation_bottomup_bbend : Intrinsic<[],
+ [llvm_ptrptr_ty,
+ llvm_ptrptr_ty]>;
+
+
//===--------------------- Code Generator Intrinsics ----------------------===//
//
def int_returnaddress : Intrinsic<[llvm_ptr_ty], [llvm_i32_ty], [IntrNoMem]>;
def int_addressofreturnaddress : Intrinsic<[llvm_ptr_ty], [], [IntrNoMem]>;
def int_frameaddress : Intrinsic<[llvm_ptr_ty], [llvm_i32_ty], [IntrNoMem]>;
+def int_sponentry : Intrinsic<[llvm_ptr_ty], [], [IntrNoMem]>;
def int_read_register : Intrinsic<[llvm_anyint_ty], [llvm_metadata_ty],
[IntrReadMem], "llvm.read_register">;
def int_write_register : Intrinsic<[], [llvm_metadata_ty, llvm_anyint_ty],
@@ -337,6 +418,13 @@
def int_localrecover : Intrinsic<[llvm_ptr_ty],
[llvm_ptr_ty, llvm_ptr_ty, llvm_i32_ty],
[IntrNoMem]>;
+
+// Given the frame pointer passed into an SEH filter function, returns a
+// pointer to the local variable area suitable for use with llvm.localrecover.
+def int_eh_recoverfp : Intrinsic<[llvm_ptr_ty],
+ [llvm_ptr_ty, llvm_ptr_ty],
+ [IntrNoMem]>;
+
// Note: we treat stacksave/stackrestore as writemem because we don't otherwise
// model their dependencies on allocas.
def int_stacksave : Intrinsic<[llvm_ptr_ty]>,
@@ -453,6 +541,14 @@
[LLVMMatchType<0>, LLVMMatchType<0>],
[IntrNoMem, IntrSpeculatable, Commutative]
>;
+def int_minimum : Intrinsic<[llvm_anyfloat_ty],
+ [LLVMMatchType<0>, LLVMMatchType<0>],
+ [IntrNoMem, IntrSpeculatable, Commutative]
+>;
+def int_maximum : Intrinsic<[llvm_anyfloat_ty],
+ [LLVMMatchType<0>, LLVMMatchType<0>],
+ [IntrNoMem, IntrSpeculatable, Commutative]
+>;
// NOTE: these are internal interfaces.
def int_setjmp : Intrinsic<[llvm_i32_ty], [llvm_ptr_ty]>;
@@ -462,7 +558,8 @@
// Internal interface for object size checking
def int_objectsize : Intrinsic<[llvm_anyint_ty],
- [llvm_anyptr_ty, llvm_i1_ty, llvm_i1_ty],
+ [llvm_anyptr_ty, llvm_i1_ty,
+ llvm_i1_ty, llvm_i1_ty],
[IntrNoMem, IntrSpeculatable]>,
GCCBuiltin<"__builtin_object_size">;
@@ -557,9 +654,35 @@
[ LLVMMatchType<0>,
llvm_metadata_ty,
llvm_metadata_ty ]>;
+ def int_experimental_constrained_maxnum : Intrinsic<[ llvm_anyfloat_ty ],
+ [ LLVMMatchType<0>,
+ LLVMMatchType<0>,
+ llvm_metadata_ty,
+ llvm_metadata_ty ]>;
+ def int_experimental_constrained_minnum : Intrinsic<[ llvm_anyfloat_ty ],
+ [ LLVMMatchType<0>,
+ LLVMMatchType<0>,
+ llvm_metadata_ty,
+ llvm_metadata_ty ]>;
+ def int_experimental_constrained_ceil : Intrinsic<[ llvm_anyfloat_ty ],
+ [ LLVMMatchType<0>,
+ llvm_metadata_ty,
+ llvm_metadata_ty ]>;
+ def int_experimental_constrained_floor : Intrinsic<[ llvm_anyfloat_ty ],
+ [ LLVMMatchType<0>,
+ llvm_metadata_ty,
+ llvm_metadata_ty ]>;
+ def int_experimental_constrained_round : Intrinsic<[ llvm_anyfloat_ty ],
+ [ LLVMMatchType<0>,
+ llvm_metadata_ty,
+ llvm_metadata_ty ]>;
+ def int_experimental_constrained_trunc : Intrinsic<[ llvm_anyfloat_ty ],
+ [ LLVMMatchType<0>,
+ llvm_metadata_ty,
+ llvm_metadata_ty ]>;
}
// FIXME: Add intrinsics for fcmp, fptrunc, fpext, fptoui and fptosi.
-// FIXME: Add intrinsics for fabs, copysign, floor, ceil, trunc and round?
+// FIXME: Add intrinsics for fabs and copysign?
//===------------------------- Expect Intrinsics --------------------------===//
@@ -679,27 +802,58 @@
//
// Expose the carry flag from add operations on two integrals.
-def int_sadd_with_overflow : Intrinsic<[llvm_anyint_ty, llvm_i1_ty],
+def int_sadd_with_overflow : Intrinsic<[llvm_anyint_ty,
+ LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>],
[LLVMMatchType<0>, LLVMMatchType<0>],
[IntrNoMem, IntrSpeculatable]>;
-def int_uadd_with_overflow : Intrinsic<[llvm_anyint_ty, llvm_i1_ty],
+def int_uadd_with_overflow : Intrinsic<[llvm_anyint_ty,
+ LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>],
[LLVMMatchType<0>, LLVMMatchType<0>],
[IntrNoMem, IntrSpeculatable]>;
-def int_ssub_with_overflow : Intrinsic<[llvm_anyint_ty, llvm_i1_ty],
+def int_ssub_with_overflow : Intrinsic<[llvm_anyint_ty,
+ LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>],
[LLVMMatchType<0>, LLVMMatchType<0>],
[IntrNoMem, IntrSpeculatable]>;
-def int_usub_with_overflow : Intrinsic<[llvm_anyint_ty, llvm_i1_ty],
+def int_usub_with_overflow : Intrinsic<[llvm_anyint_ty,
+ LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>],
[LLVMMatchType<0>, LLVMMatchType<0>],
[IntrNoMem, IntrSpeculatable]>;
-def int_smul_with_overflow : Intrinsic<[llvm_anyint_ty, llvm_i1_ty],
+def int_smul_with_overflow : Intrinsic<[llvm_anyint_ty,
+ LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>],
[LLVMMatchType<0>, LLVMMatchType<0>],
[IntrNoMem, IntrSpeculatable]>;
-def int_umul_with_overflow : Intrinsic<[llvm_anyint_ty, llvm_i1_ty],
+def int_umul_with_overflow : Intrinsic<[llvm_anyint_ty,
+ LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>],
[LLVMMatchType<0>, LLVMMatchType<0>],
[IntrNoMem, IntrSpeculatable]>;
+//===------------------------- Saturation Arithmetic Intrinsics ---------------------===//
+//
+def int_sadd_sat : Intrinsic<[llvm_anyint_ty],
+ [LLVMMatchType<0>, LLVMMatchType<0>],
+ [IntrNoMem, IntrSpeculatable, Commutative]>;
+def int_uadd_sat : Intrinsic<[llvm_anyint_ty],
+ [LLVMMatchType<0>, LLVMMatchType<0>],
+ [IntrNoMem, IntrSpeculatable, Commutative]>;
+def int_ssub_sat : Intrinsic<[llvm_anyint_ty],
+ [LLVMMatchType<0>, LLVMMatchType<0>],
+ [IntrNoMem, IntrSpeculatable]>;
+def int_usub_sat : Intrinsic<[llvm_anyint_ty],
+ [LLVMMatchType<0>, LLVMMatchType<0>],
+ [IntrNoMem, IntrSpeculatable]>;
+
+//===------------------------- Fixed Point Arithmetic Intrinsics ---------------------===//
+//
+def int_smul_fix : Intrinsic<[llvm_anyint_ty],
+ [LLVMMatchType<0>, LLVMMatchType<0>, llvm_i32_ty],
+ [IntrNoMem, IntrSpeculatable, Commutative]>;
+
+def int_umul_fix : Intrinsic<[llvm_anyint_ty],
+ [LLVMMatchType<0>, LLVMMatchType<0>, llvm_i32_ty],
+ [IntrNoMem, IntrSpeculatable, Commutative]>;
+
//===------------------------- Memory Use Markers -------------------------===//
//
def int_lifetime_start : Intrinsic<[],
@@ -817,7 +971,7 @@
//
def int_flt_rounds : Intrinsic<[llvm_i32_ty]>,
GCCBuiltin<"__builtin_flt_rounds">;
-def int_trap : Intrinsic<[], [], [IntrNoReturn]>,
+def int_trap : Intrinsic<[], [], [IntrNoReturn, IntrCold]>,
GCCBuiltin<"__builtin_trap">;
def int_debugtrap : Intrinsic<[]>,
GCCBuiltin<"__builtin_debugtrap">;
@@ -830,6 +984,10 @@
def int_experimental_guard : Intrinsic<[], [llvm_i1_ty, llvm_vararg_ty],
[Throws]>;
+// Supports widenable conditions for guards represented as explicit branches.
+def int_experimental_widenable_condition : Intrinsic<[llvm_i1_ty], [],
+ [IntrInaccessibleMemOnly]>;
+
// NOP: calls/invokes to this intrinsic are removed by codegen
def int_donothing : Intrinsic<[], [], [IntrNoMem]>;
@@ -850,40 +1008,44 @@
def int_clear_cache : Intrinsic<[], [llvm_ptr_ty, llvm_ptr_ty],
[], "llvm.clear_cache">;
+// Intrinsic to detect whether its argument is a constant.
+def int_is_constant : Intrinsic<[llvm_i1_ty], [llvm_any_ty], [IntrNoMem], "llvm.is.constant">;
+
+
//===-------------------------- Masked Intrinsics -------------------------===//
//
def int_masked_store : Intrinsic<[], [llvm_anyvector_ty,
LLVMAnyPointerType<LLVMMatchType<0>>,
llvm_i32_ty,
- LLVMVectorSameWidth<0, llvm_i1_ty>],
+ LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>],
[IntrArgMemOnly]>;
def int_masked_load : Intrinsic<[llvm_anyvector_ty],
[LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty,
- LLVMVectorSameWidth<0, llvm_i1_ty>, LLVMMatchType<0>],
+ LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>, LLVMMatchType<0>],
[IntrReadMem, IntrArgMemOnly]>;
def int_masked_gather: Intrinsic<[llvm_anyvector_ty],
[LLVMVectorOfAnyPointersToElt<0>, llvm_i32_ty,
- LLVMVectorSameWidth<0, llvm_i1_ty>,
+ LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>,
LLVMMatchType<0>],
[IntrReadMem]>;
def int_masked_scatter: Intrinsic<[],
[llvm_anyvector_ty,
LLVMVectorOfAnyPointersToElt<0>, llvm_i32_ty,
- LLVMVectorSameWidth<0, llvm_i1_ty>]>;
+ LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>]>;
def int_masked_expandload: Intrinsic<[llvm_anyvector_ty],
[LLVMPointerToElt<0>,
- LLVMVectorSameWidth<0, llvm_i1_ty>,
+ LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>,
LLVMMatchType<0>],
[IntrReadMem]>;
def int_masked_compressstore: Intrinsic<[],
[llvm_anyvector_ty,
LLVMPointerToElt<0>,
- LLVMVectorSameWidth<0, llvm_i1_ty>],
+ LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>],
[IntrArgMemOnly]>;
// Test whether a pointer is associated with a type metadata identifier.
@@ -902,6 +1064,9 @@
def int_load_relative: Intrinsic<[llvm_ptr_ty], [llvm_ptr_ty, llvm_anyint_ty],
[IntrReadMem, IntrArgMemOnly]>;
+def int_hwasan_check_memaccess :
+ Intrinsic<[], [llvm_ptr_ty, llvm_ptr_ty, llvm_i32_ty], [IntrInaccessibleMemOnly]>;
+
// Xray intrinsics
//===----------------------------------------------------------------------===//
// Custom event logging for x-ray.
diff --git a/linux-x64/clang/include/llvm/IR/IntrinsicsAArch64.td b/linux-x64/clang/include/llvm/IR/IntrinsicsAArch64.td
index 688e863..3abeff4 100644
--- a/linux-x64/clang/include/llvm/IR/IntrinsicsAArch64.td
+++ b/linux-x64/clang/include/llvm/IR/IntrinsicsAArch64.td
@@ -1,9 +1,8 @@
//===- IntrinsicsAARCH64.td - Defines AARCH64 intrinsics ---*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -44,6 +43,12 @@
def int_aarch64_dsb : GCCBuiltin<"__builtin_arm_dsb">, MSBuiltin<"__dsb">, Intrinsic<[], [llvm_i32_ty]>;
def int_aarch64_isb : GCCBuiltin<"__builtin_arm_isb">, MSBuiltin<"__isb">, Intrinsic<[], [llvm_i32_ty]>;
+// A space-consuming intrinsic primarily for testing block and jump table
+// placements. The first argument is the number of bytes this "instruction"
+// takes up, the second and return value are essentially chains, used to force
+// ordering during ISel.
+def int_aarch64_space : Intrinsic<[llvm_i64_ty], [llvm_i32_ty, llvm_i64_ty], []>;
+
}
//===----------------------------------------------------------------------===//
@@ -154,6 +159,11 @@
: Intrinsic<[llvm_anyvector_ty],
[LLVMMatchType<0>, llvm_anyvector_ty, LLVMMatchType<1>],
[IntrNoMem]>;
+
+ class AdvSIMD_FP16FML_Intrinsic
+ : Intrinsic<[llvm_anyvector_ty],
+ [LLVMMatchType<0>, llvm_anyvector_ty, LLVMMatchType<1>],
+ [IntrNoMem]>;
}
// Arithmetic ops
@@ -424,6 +434,12 @@
// v8.2-A Dot Product
def int_aarch64_neon_udot : AdvSIMD_Dot_Intrinsic;
def int_aarch64_neon_sdot : AdvSIMD_Dot_Intrinsic;
+
+ // v8.2-A FP16 Fused Multiply-Add Long
+ def int_aarch64_neon_fmlal : AdvSIMD_FP16FML_Intrinsic;
+ def int_aarch64_neon_fmlsl : AdvSIMD_FP16FML_Intrinsic;
+ def int_aarch64_neon_fmlal2 : AdvSIMD_FP16FML_Intrinsic;
+ def int_aarch64_neon_fmlsl2 : AdvSIMD_FP16FML_Intrinsic;
}
let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
diff --git a/linux-x64/clang/include/llvm/IR/IntrinsicsAMDGPU.td b/linux-x64/clang/include/llvm/IR/IntrinsicsAMDGPU.td
index ccf43a6..151329c 100644
--- a/linux-x64/clang/include/llvm/IR/IntrinsicsAMDGPU.td
+++ b/linux-x64/clang/include/llvm/IR/IntrinsicsAMDGPU.td
@@ -1,9 +1,8 @@
//===- IntrinsicsAMDGPU.td - Defines AMDGPU intrinsics -----*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -392,6 +391,35 @@
[IntrArgMemOnly, NoCapture<0>]
>;
+class AMDGPUDSOrderedIntrinsic : Intrinsic<
+ [llvm_i32_ty],
+ // M0 = {hi16:address, lo16:waveID}. Allow passing M0 as a pointer, so that
+ // the bit packing can be optimized at the IR level.
+ [LLVMQualPointerType<llvm_i32_ty, 2>, // IntToPtr(M0)
+ llvm_i32_ty, // value to add or swap
+ llvm_i32_ty, // ordering
+ llvm_i32_ty, // scope
+ llvm_i1_ty, // isVolatile
+ llvm_i32_ty, // ordered count index (OA index), also added to the address
+ llvm_i1_ty, // wave release, usually set to 1
+ llvm_i1_ty], // wave done, set to 1 for the last ordered instruction
+ [NoCapture<0>]
+>;
+
+class AMDGPUDSAppendConsumedIntrinsic : Intrinsic<
+ [llvm_i32_ty],
+ [llvm_anyptr_ty, // LDS or GDS ptr
+ llvm_i1_ty], // isVolatile
+ [IntrConvergent, IntrArgMemOnly, NoCapture<0>]
+>;
+
+def int_amdgcn_ds_ordered_add : AMDGPUDSOrderedIntrinsic;
+def int_amdgcn_ds_ordered_swap : AMDGPUDSOrderedIntrinsic;
+
+// The pointer argument is assumed to be dynamically uniform if a VGPR.
+def int_amdgcn_ds_append : AMDGPUDSAppendConsumedIntrinsic;
+def int_amdgcn_ds_consume : AMDGPUDSAppendConsumedIntrinsic;
+
def int_amdgcn_ds_fadd : AMDGPULDSF32Intrin<"__builtin_amdgcn_ds_faddf">;
def int_amdgcn_ds_fmin : AMDGPULDSF32Intrin<"__builtin_amdgcn_ds_fminf">;
def int_amdgcn_ds_fmax : AMDGPULDSF32Intrin<"__builtin_amdgcn_ds_fmaxf">;
@@ -590,7 +618,7 @@
AMDGPUDimProps dim,
AMDGPUSampleVariant sample> : AMDGPUDimProfile<opmod, dim> {
let IsSample = 1;
- let RetTypes = [llvm_anyfloat_ty];
+ let RetTypes = [llvm_any_ty];
let ExtraAddrArgs = sample.ExtraAddrArgs;
let Gradients = sample.Gradients;
let LodClampMip = sample.LodOrClamp;
@@ -683,11 +711,11 @@
}
defm int_amdgcn_image_load
- : AMDGPUImageDimIntrinsicsAll<"LOAD", [llvm_anyfloat_ty], [], [IntrReadMem],
+ : AMDGPUImageDimIntrinsicsAll<"LOAD", [llvm_any_ty], [], [IntrReadMem],
[SDNPMemOperand]>,
AMDGPUImageDMaskIntrinsic;
defm int_amdgcn_image_load_mip
- : AMDGPUImageDimIntrinsicsNoMsaa<"LOAD_MIP", [llvm_anyfloat_ty], [],
+ : AMDGPUImageDimIntrinsicsNoMsaa<"LOAD_MIP", [llvm_any_ty], [],
[IntrReadMem], [SDNPMemOperand], 1>,
AMDGPUImageDMaskIntrinsic;
@@ -803,7 +831,7 @@
def int_amdgcn_buffer_load : AMDGPUBufferLoad;
def int_amdgcn_s_buffer_load : Intrinsic <
- [llvm_anyint_ty],
+ [llvm_any_ty],
[llvm_v4i32_ty, // rsrc(SGPR)
llvm_i32_ty, // byte offset(SGPR/VGPR/imm)
llvm_i32_ty], // cachepolicy(imm; bit 0 = glc)
@@ -835,7 +863,7 @@
[llvm_v4i32_ty, // rsrc(SGPR)
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)
llvm_i32_ty, // soffset(SGPR/imm, excluded from bounds checking and swizzling)
- llvm_i32_ty], // cachepolicy(imm; bit 0 = glc, bit 1 = slc)
+ llvm_i32_ty], // cachepolicy(imm; bit 0 = glc, bit 1 = slc)
[IntrReadMem], "", [SDNPMemOperand]>,
AMDGPURsrcIntrinsic<0>;
def int_amdgcn_raw_buffer_load_format : AMDGPURawBufferLoad;
@@ -847,7 +875,7 @@
llvm_i32_ty, // vindex(VGPR)
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)
llvm_i32_ty, // soffset(SGPR/imm, excluded from bounds checking and swizzling)
- llvm_i32_ty], // cachepolicy(imm; bit 0 = glc, bit 1 = slc)
+ llvm_i32_ty], // cachepolicy(imm; bit 0 = glc, bit 1 = slc)
[IntrReadMem], "", [SDNPMemOperand]>,
AMDGPURsrcIntrinsic<0>;
def int_amdgcn_struct_buffer_load_format : AMDGPUStructBufferLoad;
@@ -859,7 +887,7 @@
llvm_v4i32_ty, // rsrc(SGPR)
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)
llvm_i32_ty, // soffset(SGPR/imm, excluded from bounds checking and swizzling)
- llvm_i32_ty], // cachepolicy(imm; bit 0 = glc, bit 1 = slc)
+ llvm_i32_ty], // cachepolicy(imm; bit 0 = glc, bit 1 = slc)
[IntrWriteMem], "", [SDNPMemOperand]>,
AMDGPURsrcIntrinsic<1>;
def int_amdgcn_raw_buffer_store_format : AMDGPURawBufferStore;
@@ -872,7 +900,7 @@
llvm_i32_ty, // vindex(VGPR)
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)
llvm_i32_ty, // soffset(SGPR/imm, excluded from bounds checking and swizzling)
- llvm_i32_ty], // cachepolicy(imm; bit 0 = glc, bit 1 = slc)
+ llvm_i32_ty], // cachepolicy(imm; bit 0 = glc, bit 1 = slc)
[IntrWriteMem], "", [SDNPMemOperand]>,
AMDGPURsrcIntrinsic<1>;
def int_amdgcn_struct_buffer_store_format : AMDGPUStructBufferStore;
@@ -884,7 +912,7 @@
llvm_v4i32_ty, // rsrc(SGPR)
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)
llvm_i32_ty, // soffset(SGPR/imm, excluded from bounds checking and swizzling)
- llvm_i32_ty], // cachepolicy(imm; bit 1 = slc)
+ llvm_i32_ty], // cachepolicy(imm; bit 1 = slc)
[], "", [SDNPMemOperand]>,
AMDGPURsrcIntrinsic<1, 0>;
def int_amdgcn_raw_buffer_atomic_swap : AMDGPURawBufferAtomic;
@@ -904,7 +932,7 @@
llvm_v4i32_ty, // rsrc(SGPR)
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)
llvm_i32_ty, // soffset(SGPR/imm, excluded from bounds checking and swizzling)
- llvm_i32_ty], // cachepolicy(imm; bit 1 = slc)
+ llvm_i32_ty], // cachepolicy(imm; bit 1 = slc)
[], "", [SDNPMemOperand]>,
AMDGPURsrcIntrinsic<2, 0>;
@@ -915,7 +943,7 @@
llvm_i32_ty, // vindex(VGPR)
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)
llvm_i32_ty, // soffset(SGPR/imm, excluded from bounds checking and swizzling)
- llvm_i32_ty], // cachepolicy(imm; bit 1 = slc)
+ llvm_i32_ty], // cachepolicy(imm; bit 1 = slc)
[], "", [SDNPMemOperand]>,
AMDGPURsrcIntrinsic<1, 0>;
def int_amdgcn_struct_buffer_atomic_swap : AMDGPUStructBufferAtomic;
@@ -936,7 +964,7 @@
llvm_i32_ty, // vindex(VGPR)
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)
llvm_i32_ty, // soffset(SGPR/imm, excluded from bounds checking and swizzling)
- llvm_i32_ty], // cachepolicy(imm; bit 1 = slc)
+ llvm_i32_ty], // cachepolicy(imm; bit 1 = slc)
[], "", [SDNPMemOperand]>,
AMDGPURsrcIntrinsic<2, 0>;
@@ -980,7 +1008,7 @@
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)
llvm_i32_ty, // soffset(SGPR/imm, excluded from bounds checking and swizzling)
llvm_i32_ty, // format(imm; bits 3..0 = dfmt, bits 6..4 = nfmt)
- llvm_i32_ty], // cachepolicy(imm; bit 0 = glc, bit 1 = slc)
+ llvm_i32_ty], // cachepolicy(imm; bit 0 = glc, bit 1 = slc)
[IntrReadMem], "", [SDNPMemOperand]>,
AMDGPURsrcIntrinsic<0>;
@@ -991,7 +1019,7 @@
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)
llvm_i32_ty, // soffset(SGPR/imm, excluded from bounds checking and swizzling)
llvm_i32_ty, // format(imm; bits 3..0 = dfmt, bits 6..4 = nfmt)
- llvm_i32_ty], // cachepolicy(imm; bit 0 = glc, bit 1 = slc)
+ llvm_i32_ty], // cachepolicy(imm; bit 0 = glc, bit 1 = slc)
[IntrWriteMem], "", [SDNPMemOperand]>,
AMDGPURsrcIntrinsic<1>;
@@ -1002,7 +1030,7 @@
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)
llvm_i32_ty, // soffset(SGPR/imm, excluded from bounds checking and swizzling)
llvm_i32_ty, // format(imm; bits 3..0 = dfmt, bits 6..4 = nfmt)
- llvm_i32_ty], // cachepolicy(imm; bit 0 = glc, bit 1 = slc)
+ llvm_i32_ty], // cachepolicy(imm; bit 0 = glc, bit 1 = slc)
[IntrReadMem], "", [SDNPMemOperand]>,
AMDGPURsrcIntrinsic<0>;
@@ -1014,7 +1042,7 @@
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)
llvm_i32_ty, // soffset(SGPR/imm, excluded from bounds checking and swizzling)
llvm_i32_ty, // format(imm; bits 3..0 = dfmt, bits 6..4 = nfmt)
- llvm_i32_ty], // cachepolicy(imm; bit 0 = glc, bit 1 = slc)
+ llvm_i32_ty], // cachepolicy(imm; bit 0 = glc, bit 1 = slc)
[IntrWriteMem], "", [SDNPMemOperand]>,
AMDGPURsrcIntrinsic<1>;
@@ -1148,6 +1176,20 @@
[IntrNoMem, IntrSpeculatable]>;
// See int_amdgcn_v_interp_p1 for why this is IntrNoMem.
+// __builtin_amdgcn_interp_p1_f16 <i>, <attr_chan>, <attr>, <high>, <m0>
+def int_amdgcn_interp_p1_f16 :
+ GCCBuiltin<"__builtin_amdgcn_interp_p1_f16">,
+ Intrinsic<[llvm_float_ty],
+ [llvm_float_ty, llvm_i32_ty, llvm_i32_ty, llvm_i1_ty, llvm_i32_ty],
+ [IntrNoMem, IntrSpeculatable]>;
+
+// __builtin_amdgcn_interp_p2_f16 <p1>, <j>, <attr_chan>, <attr>, <high>, <m0>
+def int_amdgcn_interp_p2_f16 :
+ GCCBuiltin<"__builtin_amdgcn_interp_p2_f16">,
+ Intrinsic<[llvm_half_ty],
+ [llvm_float_ty, llvm_float_ty, llvm_i32_ty, llvm_i32_ty, llvm_i1_ty, llvm_i32_ty],
+ [IntrNoMem, IntrSpeculatable]>;
+
// Pixel shaders only: whether the current pixel is live (i.e. not a helper
// invocation for derivative computation).
def int_amdgcn_ps_live : Intrinsic <
@@ -1484,18 +1526,10 @@
[llvm_i64_ty], [IntrConvergent]
>;
-def int_amdgcn_break : Intrinsic<[llvm_i64_ty],
- [llvm_i64_ty], [IntrNoMem, IntrConvergent]
->;
-
def int_amdgcn_if_break : Intrinsic<[llvm_i64_ty],
[llvm_i1_ty, llvm_i64_ty], [IntrNoMem, IntrConvergent]
>;
-def int_amdgcn_else_break : Intrinsic<[llvm_i64_ty],
- [llvm_i64_ty, llvm_i64_ty], [IntrNoMem, IntrConvergent]
->;
-
def int_amdgcn_loop : Intrinsic<[llvm_i1_ty],
[llvm_i64_ty], [IntrConvergent]
>;
diff --git a/linux-x64/clang/include/llvm/IR/IntrinsicsARM.td b/linux-x64/clang/include/llvm/IR/IntrinsicsARM.td
index 4e11f9c..229c20a 100644
--- a/linux-x64/clang/include/llvm/IR/IntrinsicsARM.td
+++ b/linux-x64/clang/include/llvm/IR/IntrinsicsARM.td
@@ -1,9 +1,8 @@
//===- IntrinsicsARM.td - Defines ARM intrinsics -----------*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/IntrinsicsBPF.td b/linux-x64/clang/include/llvm/IR/IntrinsicsBPF.td
index 94eca8e..d7595a2 100644
--- a/linux-x64/clang/include/llvm/IR/IntrinsicsBPF.td
+++ b/linux-x64/clang/include/llvm/IR/IntrinsicsBPF.td
@@ -1,9 +1,8 @@
//===- IntrinsicsBPF.td - Defines BPF intrinsics -----------*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/IntrinsicsHexagon.td b/linux-x64/clang/include/llvm/IR/IntrinsicsHexagon.td
index 25f4215..3e3166d 100644
--- a/linux-x64/clang/include/llvm/IR/IntrinsicsHexagon.td
+++ b/linux-x64/clang/include/llvm/IR/IntrinsicsHexagon.td
@@ -1,8 +1,7 @@
//===- IntrinsicsHexagon.td - Defines Hexagon intrinsics ---*- tablegen -*-===//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -15,7 +14,7 @@
//
// All Hexagon intrinsics start with "llvm.hexagon.".
let TargetPrefix = "hexagon" in {
- /// Hexagon_Intrinsic - Base class for all Hexagon intrinsics.
+ /// Hexagon_Intrinsic - Base class for the majority of Hexagon intrinsics.
class Hexagon_Intrinsic<string GCCIntSuffix, list<LLVMType> ret_types,
list<LLVMType> param_types,
list<IntrinsicProperty> properties>
@@ -30,397 +29,6 @@
: Intrinsic<ret_types, param_types, properties>;
}
-//===----------------------------------------------------------------------===//
-//
-// DEF_FUNCTION_TYPE_1(QI_ftype_MEM,BT_BOOL,BT_PTR) ->
-// Hexagon_qi_mem_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_qi_mem_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i1_ty], [llvm_ptr_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_1(HI_ftype_SI,BT_I16,BT_INT) ->
-// Hexagon_hi_si_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_hi_si_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i16_ty], [llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_1(SI_ftype_SI,BT_INT,BT_INT) ->
-// Hexagon_si_si_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_si_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_1(DI_ftype_SI,BT_LONGLONG,BT_INT) ->
-// Hexagon_di_si_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_di_si_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_1(SI_ftype_DI,BT_INT,BT_LONGLONG) ->
-// Hexagon_si_di_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_di_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i64_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_1(DI_ftype_DI,BT_LONGLONG,BT_LONGLONG) ->
-// Hexagon_di_di_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_di_di_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i64_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_1(QI_ftype_QI,BT_BOOL,BT_BOOL) ->
-// Hexagon_qi_qi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_qi_qi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i1_ty], [llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_1(QI_ftype_SI,BT_BOOL,BT_INT) ->
-// Hexagon_qi_si_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_qi_si_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i1_ty], [llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_1(DI_ftype_QI,BT_LONGLONG,BT_BOOL) ->
-// Hexagon_di_qi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_di_qi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_1(SI_ftype_QI,BT_INT,BT_BOOL) ->
-// Hexagon_si_qi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_qi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(QI_ftype_SISI,BT_BOOL,BT_INT,BT_INT) ->
-// Hexagon_qi_sisi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_qi_sisi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i1_ty], [llvm_i32_ty, llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(void_ftype_SISI,BT_VOID,BT_INT,BT_INT) ->
-// Hexagon_void_sisi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_void_sisi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_void_ty], [llvm_i32_ty, llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(SI_ftype_SISI,BT_INT,BT_INT,BT_INT) ->
-// Hexagon_si_sisi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_sisi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(USI_ftype_SISI,BT_UINT,BT_INT,BT_INT) ->
-// Hexagon_usi_sisi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_usi_sisi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(DI_ftype_SISI,BT_LONGLONG,BT_INT,BT_INT) ->
-// Hexagon_di_sisi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_di_sisi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i32_ty, llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(UDI_ftype_SISI,BT_ULONGLONG,BT_INT,BT_INT) ->
-// Hexagon_udi_sisi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_udi_sisi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i32_ty, llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(DI_ftype_SIDI,BT_LONGLONG,BT_INT,BT_LONGLONG) ->
-// Hexagon_di_sidi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_di_sidi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i32_ty, llvm_i64_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(DI_ftype_DISI,BT_LONGLONG,BT_LONGLONG,BT_INT) ->
-// Hexagon_di_disi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_di_disi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(SI_ftype_SIDI,BT_INT,BT_INT,BT_LONGLONG) ->
-// Hexagon_si_sidi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_sidi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i32_ty, llvm_i64_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(SI_ftype_DIDI,BT_INT,BT_LONGLONG,BT_LONGLONG) ->
-// Hexagon_si_didi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_didi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i64_ty, llvm_i64_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(DI_ftype_DIDI,BT_LONGLONG,BT_LONGLONG,BT_LONGLONG) ->
-// Hexagon_di_didi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_di_didi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(UDI_ftype_DIDI,BT_ULONGLONG,BT_LONGLONG,BT_LONGLONG) ->
-// Hexagon_udi_didi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_udi_didi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(SI_ftype_DISI,BT_INT,BT_LONGLONG,BT_INT) ->
-// Hexagon_si_disi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_disi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(QI_ftype_DIDI,BT_BOOL,BT_LONGLONG,BT_LONGLONG) ->
-// Hexagon_qi_didi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_qi_didi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i1_ty], [llvm_i64_ty, llvm_i64_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(QI_ftype_SIDI,BT_BOOL,BT_INT,BT_LONGLONG) ->
-// Hexagon_qi_didi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_qi_sidi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i1_ty], [llvm_i32_ty, llvm_i64_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(QI_ftype_DISI,BT_BOOL,BT_LONGLONG,BT_INT) ->
-// Hexagon_qi_disi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_qi_disi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i1_ty], [llvm_i64_ty, llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(QI_ftype_QIQI,BT_BOOL,BT_BOOL,BT_BOOL) ->
-// Hexagon_qi_qiqi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_qi_qiqi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i1_ty], [llvm_i32_ty, llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(QI_ftype_QIQIQI,BT_BOOL,BT_BOOL,BT_BOOL) ->
-// Hexagon_qi_qiqiqi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_qi_qiqiqi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i1_ty], [llvm_i1_ty, llvm_i1_ty, llvm_i1_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(SI_ftype_QIQI,BT_INT,BT_BOOL,BT_BOOL) ->
-// Hexagon_si_qiqi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_qiqi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_2(SI_ftype_QISI,BT_INT,BT_BOOL,BT_INT) ->
-// Hexagon_si_qisi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_qisi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i1_ty, llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_3(void_ftype_SISISI,BT_VOID,BT_INT,BT_INT,BT_INT) ->
-// Hexagon_void_sisisi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_void_sisisi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_void_ty], [llvm_i32_ty, llvm_i32_ty,
- llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_3(SI_ftype_SISISI,BT_INT,BT_INT,BT_INT,BT_INT) ->
-// Hexagon_si_sisisi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_sisisi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty,
- llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_3(DI_ftype_SISISI,BT_LONGLONG,BT_INT,BT_INT,BT_INT) ->
-// Hexagon_di_sisisi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_di_sisisi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i32_ty, llvm_i32_ty,
- llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_3(SI_ftype_DISISI,BT_INT,BT_LONGLONG,BT_INT,BT_INT) ->
-// Hexagon_si_disisi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_disisi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty,
- llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_3(DI_ftype_DISISI,BT_LONGLONG,BT_LONGLONG,BT_INT,BT_INT) ->
-// Hexagon_di_disisi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_di_disisi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty,
- llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_3(SI_ftype_SIDISI,BT_INT,BT_INT,BT_LONGLONG,BT_INT) ->
-// Hexagon_si_sidisi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_sidisi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i32_ty, llvm_i64_ty,
- llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_3(DI_ftype_DIDISI,BT_LONGLONG,BT_LONGLONG,
-// BT_LONGLONG,BT_INT) ->
-// Hexagon_di_didisi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_di_didisi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty,
- llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_3(SI_ftype_SIDIDI,BT_INT,BT_INT,BT_LONGLONG,BT_LONGLONG) ->
-// Hexagon_si_sididi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_sididi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i32_ty, llvm_i64_ty,
- llvm_i64_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_3(DI_ftype_DIDIDI,BT_LONGLONG,BT_LONGLONG,BT_LONGLONG,
-// BT_LONGLONG) ->
-// Hexagon_di_dididi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_di_dididi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty,
- llvm_i64_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_3(SI_ftype_SISIDI,BT_INT,BT_INT,BT_INT,BT_LONGLONG) ->
-// Hexagon_si_sisidi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_sisidi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty,
- llvm_i64_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_3(SI_ftype_QISISI,BT_INT,BT_BOOL,BT_INT,BT_INT) ->
-// Hexagon_si_qisisi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_qisisi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty,
- llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_3(DI_ftype_QISISI,BT_LONGLONG,BT_BOOL,BT_INT,BT_INT) ->
-// Hexagon_di_qisisi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_di_qisisi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i1_ty, llvm_i32_ty,
- llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_3(DI_ftype_QIDIDI,BT_LONGLONG,BT_BOOL,BT_LONGLONG,
-// BT_LONGLONG) ->
-// Hexagon_di_qididi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_di_qididi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i32_ty, llvm_i64_ty,
- llvm_i64_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_3(DI_ftype_DIDIQI,BT_LONGLONG,BT_LONGLONG,BT_LONGLONG,
-// BT_BOOL) ->
-// Hexagon_di_didiqi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_di_didiqi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty,
- llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_4(SI_ftype_SISISISI,BT_INT,BT_INT,BT_INT,BT_INT,BT_INT) ->
-// Hexagon_si_sisisisi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_sisisisi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty,
- llvm_i32_ty, llvm_i32_ty],
- [IntrNoMem]>;
-//
-// DEF_FUNCTION_TYPE_4(DI_ftype_DIDISISI,BT_LONGLONG,BT_LONGLONG,
-// BT_LONGLONG,BT_INT,BT_INT) ->
-// Hexagon_di_didisisi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_di_didisisi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty,
- llvm_i32_ty, llvm_i32_ty],
- [IntrNoMem]>;
-
class Hexagon_mem_memmemsi_Intrinsic<string GCCIntSuffix>
: Hexagon_Intrinsic<GCCIntSuffix,
[llvm_ptr_ty], [llvm_ptr_ty, llvm_ptr_ty,
@@ -457,191 +65,6 @@
llvm_i32_ty, llvm_i32_ty],
[IntrWriteMem]>;
-class Hexagon_v256_v256v256_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty],
- [IntrArgMemOnly]>;
-
-//
-// Hexagon_sf_df_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_sf_si_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_float_ty], [llvm_i32_ty],
- [IntrNoMem, Throws]>;
-//
-// Hexagon_sf_df_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_sf_df_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_float_ty], [llvm_double_ty],
- [IntrNoMem]>;
-//
-// Hexagon_sf_di_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_sf_di_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_float_ty], [llvm_i64_ty],
- [IntrNoMem]>;
-//
-// Hexagon_df_sf_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_df_sf_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_double_ty], [llvm_float_ty],
- [IntrNoMem]>;
-//
-// Hexagon_di_sf_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_di_sf_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_float_ty],
- [IntrNoMem]>;
-//
-// Hexagon_sf_sf_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_sf_sf_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_float_ty], [llvm_float_ty],
- [IntrNoMem]>;
-//
-// Hexagon_si_sf_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_sf_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_float_ty],
- [IntrNoMem]>;
-//
-// Hexagon_si_df_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_df_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_double_ty],
- [IntrNoMem]>;
-//
-// Hexagon_sf_sfsf_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_sf_sfsf_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_float_ty], [llvm_float_ty, llvm_float_ty],
- [IntrNoMem, Throws]>;
-//
-// Hexagon_si_sfsf_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_sfsf_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_float_ty, llvm_float_ty],
- [IntrNoMem, Throws]>;
-//
-// Hexagon_si_sfsi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_sfsi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_float_ty, llvm_i32_ty],
- [IntrNoMem, Throws]>;
-//
-// Hexagon_qi_sfqi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_qi_sfqi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i1_ty], [llvm_float_ty, llvm_i32_ty],
- [IntrNoMem]>;
-//
-// Hexagon_sf_sfsfsf_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_sf_sfsfsf_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_float_ty], [llvm_float_ty, llvm_float_ty,
- llvm_float_ty],
- [IntrNoMem, Throws]>;
-//
-// Hexagon_sf_sfsfsfqi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_sf_sfsfsfqi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_float_ty], [llvm_float_ty, llvm_float_ty,
- llvm_float_ty,
- llvm_i32_ty],
- [IntrNoMem, Throws]>;
-//
-// Hexagon_di_dididi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_di_dididisi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty,
- llvm_i64_ty, llvm_i32_ty],
- [IntrNoMem]>;
-//
-// Hexagon_df_si_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_df_si_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_double_ty], [llvm_i32_ty],
- [IntrNoMem, Throws]>;
-//
-// Hexagon_df_di_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_df_di_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_double_ty], [llvm_i64_ty],
- [IntrNoMem]>;
-//
-// Hexagon_di_df_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_di_df_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_double_ty],
- [IntrNoMem]>;
-//
-// Hexagon_df_df_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_df_df_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_double_ty], [llvm_double_ty],
- [IntrNoMem]>;
-//
-// Hexagon_df_dfdf_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_df_dfdf_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_double_ty], [llvm_double_ty, llvm_double_ty],
- [IntrNoMem, Throws]>;
-//
-// Hexagon_si_dfdf_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_dfdf_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_double_ty, llvm_double_ty],
- [IntrNoMem, Throws]>;
-//
-// Hexagon_si_dfsi_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_si_dfsi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_double_ty, llvm_i32_ty],
- [IntrNoMem, Throws]>;
-//
-//
-// Hexagon_df_dfdfdf_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_df_dfdfdf_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_double_ty], [llvm_double_ty, llvm_double_ty,
- llvm_double_ty],
- [IntrNoMem, Throws]>;
-//
-// Hexagon_df_dfdfdf_Intrinsic<string GCCIntSuffix>
-//
-class Hexagon_df_dfdfdfqi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_double_ty], [llvm_double_ty, llvm_double_ty,
- llvm_double_ty,
- llvm_i32_ty],
- [IntrNoMem, Throws]>;
-
-
-// This one below will not be auto-generated,
-// so make sure, you don't overwrite this one.
//
// BUILTIN_INFO_NONCONST(circ_ldd,PTR_ftype_PTRPTRSISI,4)
//
@@ -699,4204 +122,6 @@
def int_hexagon_circ_stb :
Hexagon_mem_memsisisi_Intrinsic<"circ_stb">;
-
-def int_hexagon_mm256i_vaddw :
-Hexagon_v256_v256v256_Intrinsic<"_mm256i_vaddw">;
-
-
-// This one above will not be auto-generated,
-// so make sure, you don't overwrite this one.
-//
-// BUILTIN_INFO(HEXAGON.C2_cmpeq,QI_ftype_SISI,2)
-//
-def int_hexagon_C2_cmpeq :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C2_cmpeq">;
-//
-// BUILTIN_INFO(HEXAGON.C2_cmpgt,QI_ftype_SISI,2)
-//
-def int_hexagon_C2_cmpgt :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C2_cmpgt">;
-//
-// BUILTIN_INFO(HEXAGON.C2_cmpgtu,QI_ftype_SISI,2)
-//
-def int_hexagon_C2_cmpgtu :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C2_cmpgtu">;
-//
-// BUILTIN_INFO(HEXAGON.C2_cmpeqp,QI_ftype_DIDI,2)
-//
-def int_hexagon_C2_cmpeqp :
-Hexagon_si_didi_Intrinsic<"HEXAGON_C2_cmpeqp">;
-//
-// BUILTIN_INFO(HEXAGON.C2_cmpgtp,QI_ftype_DIDI,2)
-//
-def int_hexagon_C2_cmpgtp :
-Hexagon_si_didi_Intrinsic<"HEXAGON_C2_cmpgtp">;
-//
-// BUILTIN_INFO(HEXAGON.C2_cmpgtup,QI_ftype_DIDI,2)
-//
-def int_hexagon_C2_cmpgtup :
-Hexagon_si_didi_Intrinsic<"HEXAGON_C2_cmpgtup">;
-//
-// BUILTIN_INFO(HEXAGON.A4_rcmpeqi,SI_ftype_SISI,2)
-//
-def int_hexagon_A4_rcmpeqi :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_rcmpeqi">;
-//
-// BUILTIN_INFO(HEXAGON.A4_rcmpneqi,SI_ftype_SISI,2)
-//
-def int_hexagon_A4_rcmpneqi :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_rcmpneqi">;
-//
-// BUILTIN_INFO(HEXAGON.A4_rcmpeq,SI_ftype_SISI,2)
-//
-def int_hexagon_A4_rcmpeq :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_rcmpeq">;
-//
-// BUILTIN_INFO(HEXAGON.A4_rcmpneq,SI_ftype_SISI,2)
-//
-def int_hexagon_A4_rcmpneq :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_rcmpneq">;
-//
-// BUILTIN_INFO(HEXAGON.C2_bitsset,QI_ftype_SISI,2)
-//
-def int_hexagon_C2_bitsset :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C2_bitsset">;
-//
-// BUILTIN_INFO(HEXAGON.C2_bitsclr,QI_ftype_SISI,2)
-//
-def int_hexagon_C2_bitsclr :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C2_bitsclr">;
-//
-// BUILTIN_INFO(HEXAGON.C4_nbitsset,QI_ftype_SISI,2)
-//
-def int_hexagon_C4_nbitsset :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C4_nbitsset">;
-//
-// BUILTIN_INFO(HEXAGON.C4_nbitsclr,QI_ftype_SISI,2)
-//
-def int_hexagon_C4_nbitsclr :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C4_nbitsclr">;
-//
-// BUILTIN_INFO(HEXAGON.C2_cmpeqi,QI_ftype_SISI,2)
-//
-def int_hexagon_C2_cmpeqi :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C2_cmpeqi">;
-//
-// BUILTIN_INFO(HEXAGON.C2_cmpgti,QI_ftype_SISI,2)
-//
-def int_hexagon_C2_cmpgti :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C2_cmpgti">;
-//
-// BUILTIN_INFO(HEXAGON.C2_cmpgtui,QI_ftype_SISI,2)
-//
-def int_hexagon_C2_cmpgtui :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C2_cmpgtui">;
-//
-// BUILTIN_INFO(HEXAGON.C2_cmpgei,QI_ftype_SISI,2)
-//
-def int_hexagon_C2_cmpgei :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C2_cmpgei">;
-//
-// BUILTIN_INFO(HEXAGON.C2_cmpgeui,QI_ftype_SISI,2)
-//
-def int_hexagon_C2_cmpgeui :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C2_cmpgeui">;
-//
-// BUILTIN_INFO(HEXAGON.C2_cmplt,QI_ftype_SISI,2)
-//
-def int_hexagon_C2_cmplt :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C2_cmplt">;
-//
-// BUILTIN_INFO(HEXAGON.C2_cmpltu,QI_ftype_SISI,2)
-//
-def int_hexagon_C2_cmpltu :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C2_cmpltu">;
-//
-// BUILTIN_INFO(HEXAGON.C2_bitsclri,QI_ftype_SISI,2)
-//
-def int_hexagon_C2_bitsclri :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C2_bitsclri">;
-//
-// BUILTIN_INFO(HEXAGON.C4_nbitsclri,QI_ftype_SISI,2)
-//
-def int_hexagon_C4_nbitsclri :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C4_nbitsclri">;
-//
-// BUILTIN_INFO(HEXAGON.C4_cmpneqi,QI_ftype_SISI,2)
-//
-def int_hexagon_C4_cmpneqi :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C4_cmpneqi">;
-//
-// BUILTIN_INFO(HEXAGON.C4_cmpltei,QI_ftype_SISI,2)
-//
-def int_hexagon_C4_cmpltei :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C4_cmpltei">;
-//
-// BUILTIN_INFO(HEXAGON.C4_cmplteui,QI_ftype_SISI,2)
-//
-def int_hexagon_C4_cmplteui :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C4_cmplteui">;
-//
-// BUILTIN_INFO(HEXAGON.C4_cmpneq,QI_ftype_SISI,2)
-//
-def int_hexagon_C4_cmpneq :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C4_cmpneq">;
-//
-// BUILTIN_INFO(HEXAGON.C4_cmplte,QI_ftype_SISI,2)
-//
-def int_hexagon_C4_cmplte :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C4_cmplte">;
-//
-// BUILTIN_INFO(HEXAGON.C4_cmplteu,QI_ftype_SISI,2)
-//
-def int_hexagon_C4_cmplteu :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C4_cmplteu">;
-//
-// BUILTIN_INFO(HEXAGON.C2_and,QI_ftype_QIQI,2)
-//
-def int_hexagon_C2_and :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C2_and">;
-//
-// BUILTIN_INFO(HEXAGON.C2_or,QI_ftype_QIQI,2)
-//
-def int_hexagon_C2_or :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C2_or">;
-//
-// BUILTIN_INFO(HEXAGON.C2_xor,QI_ftype_QIQI,2)
-//
-def int_hexagon_C2_xor :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C2_xor">;
-//
-// BUILTIN_INFO(HEXAGON.C2_andn,QI_ftype_QIQI,2)
-//
-def int_hexagon_C2_andn :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C2_andn">;
-//
-// BUILTIN_INFO(HEXAGON.C2_not,QI_ftype_QI,1)
-//
-def int_hexagon_C2_not :
-Hexagon_si_si_Intrinsic<"HEXAGON_C2_not">;
-//
-// BUILTIN_INFO(HEXAGON.C2_orn,QI_ftype_QIQI,2)
-//
-def int_hexagon_C2_orn :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_C2_orn">;
-//
-// BUILTIN_INFO(HEXAGON.C4_and_and,QI_ftype_QIQIQI,3)
-//
-def int_hexagon_C4_and_and :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_C4_and_and">;
-//
-// BUILTIN_INFO(HEXAGON.C4_and_or,QI_ftype_QIQIQI,3)
-//
-def int_hexagon_C4_and_or :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_C4_and_or">;
-//
-// BUILTIN_INFO(HEXAGON.C4_or_and,QI_ftype_QIQIQI,3)
-//
-def int_hexagon_C4_or_and :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_C4_or_and">;
-//
-// BUILTIN_INFO(HEXAGON.C4_or_or,QI_ftype_QIQIQI,3)
-//
-def int_hexagon_C4_or_or :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_C4_or_or">;
-//
-// BUILTIN_INFO(HEXAGON.C4_and_andn,QI_ftype_QIQIQI,3)
-//
-def int_hexagon_C4_and_andn :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_C4_and_andn">;
-//
-// BUILTIN_INFO(HEXAGON.C4_and_orn,QI_ftype_QIQIQI,3)
-//
-def int_hexagon_C4_and_orn :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_C4_and_orn">;
-//
-// BUILTIN_INFO(HEXAGON.C4_or_andn,QI_ftype_QIQIQI,3)
-//
-def int_hexagon_C4_or_andn :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_C4_or_andn">;
-//
-// BUILTIN_INFO(HEXAGON.C4_or_orn,QI_ftype_QIQIQI,3)
-//
-def int_hexagon_C4_or_orn :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_C4_or_orn">;
-//
-// BUILTIN_INFO(HEXAGON.C2_pxfer_map,QI_ftype_QI,1)
-//
-def int_hexagon_C2_pxfer_map :
-Hexagon_si_qi_Intrinsic<"HEXAGON_C2_pxfer_map">;
-//
-// BUILTIN_INFO(HEXAGON.C2_any8,QI_ftype_QI,1)
-//
-def int_hexagon_C2_any8 :
-Hexagon_si_qi_Intrinsic<"HEXAGON_C2_any8">;
-//
-// BUILTIN_INFO(HEXAGON.C2_all8,QI_ftype_QI,1)
-//
-def int_hexagon_C2_all8 :
-Hexagon_si_qi_Intrinsic<"HEXAGON_C2_all8">;
-//
-// BUILTIN_INFO(HEXAGON.C2_vitpack,SI_ftype_QIQI,2)
-//
-def int_hexagon_C2_vitpack :
-Hexagon_si_qiqi_Intrinsic<"HEXAGON_C2_vitpack">;
-//
-// BUILTIN_INFO(HEXAGON.C2_mux,SI_ftype_QISISI,3)
-//
-def int_hexagon_C2_mux :
-Hexagon_si_qisisi_Intrinsic<"HEXAGON_C2_mux">;
-//
-// BUILTIN_INFO(HEXAGON.C2_muxii,SI_ftype_QISISI,3)
-//
-def int_hexagon_C2_muxii :
-Hexagon_si_qisisi_Intrinsic<"HEXAGON_C2_muxii">;
-//
-// BUILTIN_INFO(HEXAGON.C2_muxir,SI_ftype_QISISI,3)
-//
-def int_hexagon_C2_muxir :
-Hexagon_si_qisisi_Intrinsic<"HEXAGON_C2_muxir">;
-//
-// BUILTIN_INFO(HEXAGON.C2_muxri,SI_ftype_QISISI,3)
-//
-def int_hexagon_C2_muxri :
-Hexagon_si_qisisi_Intrinsic<"HEXAGON_C2_muxri">;
-//
-// BUILTIN_INFO(HEXAGON.C2_vmux,DI_ftype_QIDIDI,3)
-//
-def int_hexagon_C2_vmux :
-Hexagon_di_qididi_Intrinsic<"HEXAGON_C2_vmux">;
-//
-// BUILTIN_INFO(HEXAGON.C2_mask,DI_ftype_QI,1)
-//
-def int_hexagon_C2_mask :
-Hexagon_di_qi_Intrinsic<"HEXAGON_C2_mask">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vcmpbeq,QI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vcmpbeq :
-Hexagon_si_didi_Intrinsic<"HEXAGON_A2_vcmpbeq">;
-//
-// BUILTIN_INFO(HEXAGON.A4_vcmpbeqi,QI_ftype_DISI,2)
-//
-def int_hexagon_A4_vcmpbeqi :
-Hexagon_si_disi_Intrinsic<"HEXAGON_A4_vcmpbeqi">;
-//
-// BUILTIN_INFO(HEXAGON.A4_vcmpbeq_any,QI_ftype_DIDI,2)
-//
-def int_hexagon_A4_vcmpbeq_any :
-Hexagon_si_didi_Intrinsic<"HEXAGON_A4_vcmpbeq_any">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vcmpbgtu,QI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vcmpbgtu :
-Hexagon_si_didi_Intrinsic<"HEXAGON_A2_vcmpbgtu">;
-//
-// BUILTIN_INFO(HEXAGON.A4_vcmpbgtui,QI_ftype_DISI,2)
-//
-def int_hexagon_A4_vcmpbgtui :
-Hexagon_si_disi_Intrinsic<"HEXAGON_A4_vcmpbgtui">;
-//
-// BUILTIN_INFO(HEXAGON.A4_vcmpbgt,QI_ftype_DIDI,2)
-//
-def int_hexagon_A4_vcmpbgt :
-Hexagon_si_didi_Intrinsic<"HEXAGON_A4_vcmpbgt">;
-//
-// BUILTIN_INFO(HEXAGON.A4_vcmpbgti,QI_ftype_DISI,2)
-//
-def int_hexagon_A4_vcmpbgti :
-Hexagon_si_disi_Intrinsic<"HEXAGON_A4_vcmpbgti">;
-//
-// BUILTIN_INFO(HEXAGON.A4_cmpbeq,QI_ftype_SISI,2)
-//
-def int_hexagon_A4_cmpbeq :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_cmpbeq">;
-//
-// BUILTIN_INFO(HEXAGON.A4_cmpbeqi,QI_ftype_SISI,2)
-//
-def int_hexagon_A4_cmpbeqi :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_cmpbeqi">;
-//
-// BUILTIN_INFO(HEXAGON.A4_cmpbgtu,QI_ftype_SISI,2)
-//
-def int_hexagon_A4_cmpbgtu :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_cmpbgtu">;
-//
-// BUILTIN_INFO(HEXAGON.A4_cmpbgtui,QI_ftype_SISI,2)
-//
-def int_hexagon_A4_cmpbgtui :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_cmpbgtui">;
-//
-// BUILTIN_INFO(HEXAGON.A4_cmpbgt,QI_ftype_SISI,2)
-//
-def int_hexagon_A4_cmpbgt :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_cmpbgt">;
-//
-// BUILTIN_INFO(HEXAGON.A4_cmpbgti,QI_ftype_SISI,2)
-//
-def int_hexagon_A4_cmpbgti :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_cmpbgti">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vcmpheq,QI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vcmpheq :
-Hexagon_si_didi_Intrinsic<"HEXAGON_A2_vcmpheq">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vcmphgt,QI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vcmphgt :
-Hexagon_si_didi_Intrinsic<"HEXAGON_A2_vcmphgt">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vcmphgtu,QI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vcmphgtu :
-Hexagon_si_didi_Intrinsic<"HEXAGON_A2_vcmphgtu">;
-//
-// BUILTIN_INFO(HEXAGON.A4_vcmpheqi,QI_ftype_DISI,2)
-//
-def int_hexagon_A4_vcmpheqi :
-Hexagon_si_disi_Intrinsic<"HEXAGON_A4_vcmpheqi">;
-//
-// BUILTIN_INFO(HEXAGON.A4_vcmphgti,QI_ftype_DISI,2)
-//
-def int_hexagon_A4_vcmphgti :
-Hexagon_si_disi_Intrinsic<"HEXAGON_A4_vcmphgti">;
-//
-// BUILTIN_INFO(HEXAGON.A4_vcmphgtui,QI_ftype_DISI,2)
-//
-def int_hexagon_A4_vcmphgtui :
-Hexagon_si_disi_Intrinsic<"HEXAGON_A4_vcmphgtui">;
-//
-// BUILTIN_INFO(HEXAGON.A4_cmpheq,QI_ftype_SISI,2)
-//
-def int_hexagon_A4_cmpheq :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_cmpheq">;
-//
-// BUILTIN_INFO(HEXAGON.A4_cmphgt,QI_ftype_SISI,2)
-//
-def int_hexagon_A4_cmphgt :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_cmphgt">;
-//
-// BUILTIN_INFO(HEXAGON.A4_cmphgtu,QI_ftype_SISI,2)
-//
-def int_hexagon_A4_cmphgtu :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_cmphgtu">;
-//
-// BUILTIN_INFO(HEXAGON.A4_cmpheqi,QI_ftype_SISI,2)
-//
-def int_hexagon_A4_cmpheqi :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_cmpheqi">;
-//
-// BUILTIN_INFO(HEXAGON.A4_cmphgti,QI_ftype_SISI,2)
-//
-def int_hexagon_A4_cmphgti :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_cmphgti">;
-//
-// BUILTIN_INFO(HEXAGON.A4_cmphgtui,QI_ftype_SISI,2)
-//
-def int_hexagon_A4_cmphgtui :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_cmphgtui">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vcmpweq,QI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vcmpweq :
-Hexagon_si_didi_Intrinsic<"HEXAGON_A2_vcmpweq">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vcmpwgt,QI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vcmpwgt :
-Hexagon_si_didi_Intrinsic<"HEXAGON_A2_vcmpwgt">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vcmpwgtu,QI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vcmpwgtu :
-Hexagon_si_didi_Intrinsic<"HEXAGON_A2_vcmpwgtu">;
-//
-// BUILTIN_INFO(HEXAGON.A4_vcmpweqi,QI_ftype_DISI,2)
-//
-def int_hexagon_A4_vcmpweqi :
-Hexagon_si_disi_Intrinsic<"HEXAGON_A4_vcmpweqi">;
-//
-// BUILTIN_INFO(HEXAGON.A4_vcmpwgti,QI_ftype_DISI,2)
-//
-def int_hexagon_A4_vcmpwgti :
-Hexagon_si_disi_Intrinsic<"HEXAGON_A4_vcmpwgti">;
-//
-// BUILTIN_INFO(HEXAGON.A4_vcmpwgtui,QI_ftype_DISI,2)
-//
-def int_hexagon_A4_vcmpwgtui :
-Hexagon_si_disi_Intrinsic<"HEXAGON_A4_vcmpwgtui">;
-//
-// BUILTIN_INFO(HEXAGON.A4_boundscheck,QI_ftype_SIDI,2)
-//
-def int_hexagon_A4_boundscheck :
-Hexagon_si_sidi_Intrinsic<"HEXAGON_A4_boundscheck">;
-//
-// BUILTIN_INFO(HEXAGON.A4_tlbmatch,QI_ftype_DISI,2)
-//
-def int_hexagon_A4_tlbmatch :
-Hexagon_si_disi_Intrinsic<"HEXAGON_A4_tlbmatch">;
-//
-// BUILTIN_INFO(HEXAGON.C2_tfrpr,SI_ftype_QI,1)
-//
-def int_hexagon_C2_tfrpr :
-Hexagon_si_qi_Intrinsic<"HEXAGON_C2_tfrpr">;
-//
-// BUILTIN_INFO(HEXAGON.C2_tfrrp,QI_ftype_SI,1)
-//
-def int_hexagon_C2_tfrrp :
-Hexagon_si_si_Intrinsic<"HEXAGON_C2_tfrrp">;
-//
-// BUILTIN_INFO(HEXAGON.C4_fastcorner9,QI_ftype_QIQI,2)
-//
-def int_hexagon_C4_fastcorner9 :
-Hexagon_si_qiqi_Intrinsic<"HEXAGON_C4_fastcorner9">;
-//
-// BUILTIN_INFO(HEXAGON.C4_fastcorner9_not,QI_ftype_QIQI,2)
-//
-def int_hexagon_C4_fastcorner9_not :
-Hexagon_si_qiqi_Intrinsic<"HEXAGON_C4_fastcorner9_not">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_acc_hh_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_acc_hh_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_acc_hh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_acc_hh_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_acc_hh_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_acc_hh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_acc_hl_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_acc_hl_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_acc_hl_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_acc_hl_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_acc_hl_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_acc_hl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_acc_lh_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_acc_lh_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_acc_lh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_acc_lh_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_acc_lh_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_acc_lh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_acc_ll_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_acc_ll_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_acc_ll_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_acc_ll_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_acc_ll_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_acc_ll_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_nac_hh_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_nac_hh_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_nac_hh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_nac_hh_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_nac_hh_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_nac_hh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_nac_hl_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_nac_hl_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_nac_hl_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_nac_hl_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_nac_hl_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_nac_hl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_nac_lh_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_nac_lh_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_nac_lh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_nac_lh_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_nac_lh_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_nac_lh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_nac_ll_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_nac_ll_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_nac_ll_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_nac_ll_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_nac_ll_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_nac_ll_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_acc_sat_hh_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_acc_sat_hh_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_acc_sat_hh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_acc_sat_hh_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_acc_sat_hh_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_acc_sat_hh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_acc_sat_hl_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_acc_sat_hl_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_acc_sat_hl_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_acc_sat_hl_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_acc_sat_hl_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_acc_sat_hl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_acc_sat_lh_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_acc_sat_lh_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_acc_sat_lh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_acc_sat_lh_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_acc_sat_lh_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_acc_sat_lh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_acc_sat_ll_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_acc_sat_ll_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_acc_sat_ll_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_acc_sat_ll_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_acc_sat_ll_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_acc_sat_ll_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_nac_sat_hh_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_nac_sat_hh_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_nac_sat_hh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_nac_sat_hh_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_nac_sat_hh_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_nac_sat_hh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_nac_sat_hl_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_nac_sat_hl_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_nac_sat_hl_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_nac_sat_hl_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_nac_sat_hl_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_nac_sat_hl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_nac_sat_lh_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_nac_sat_lh_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_nac_sat_lh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_nac_sat_lh_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_nac_sat_lh_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_nac_sat_lh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_nac_sat_ll_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_nac_sat_ll_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_nac_sat_ll_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_nac_sat_ll_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpy_nac_sat_ll_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpy_nac_sat_ll_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_hh_s0,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_hh_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_hh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_hh_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_hh_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_hh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_hl_s0,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_hl_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_hl_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_hl_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_hl_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_hl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_lh_s0,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_lh_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_lh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_lh_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_lh_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_lh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_ll_s0,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_ll_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_ll_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_ll_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_ll_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_ll_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_sat_hh_s0,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_sat_hh_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_sat_hh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_sat_hh_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_sat_hh_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_sat_hh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_sat_hl_s0,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_sat_hl_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_sat_hl_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_sat_hl_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_sat_hl_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_sat_hl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_sat_lh_s0,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_sat_lh_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_sat_lh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_sat_lh_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_sat_lh_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_sat_lh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_sat_ll_s0,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_sat_ll_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_sat_ll_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_sat_ll_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_sat_ll_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_sat_ll_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_rnd_hh_s0,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_rnd_hh_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_rnd_hh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_rnd_hh_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_rnd_hh_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_rnd_hh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_rnd_hl_s0,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_rnd_hl_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_rnd_hl_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_rnd_hl_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_rnd_hl_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_rnd_hl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_rnd_lh_s0,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_rnd_lh_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_rnd_lh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_rnd_lh_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_rnd_lh_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_rnd_lh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_rnd_ll_s0,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_rnd_ll_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_rnd_ll_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_rnd_ll_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_rnd_ll_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_rnd_ll_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_sat_rnd_hh_s0,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_sat_rnd_hh_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_sat_rnd_hh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_sat_rnd_hh_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_sat_rnd_hh_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_sat_rnd_hh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_sat_rnd_hl_s0,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_sat_rnd_hl_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_sat_rnd_hl_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_sat_rnd_hl_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_sat_rnd_hl_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_sat_rnd_hl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_sat_rnd_lh_s0,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_sat_rnd_lh_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_sat_rnd_lh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_sat_rnd_lh_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_sat_rnd_lh_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_sat_rnd_lh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_sat_rnd_ll_s0,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_sat_rnd_ll_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_sat_rnd_ll_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_sat_rnd_ll_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_sat_rnd_ll_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_sat_rnd_ll_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_acc_hh_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyd_acc_hh_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyd_acc_hh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_acc_hh_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyd_acc_hh_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyd_acc_hh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_acc_hl_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyd_acc_hl_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyd_acc_hl_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_acc_hl_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyd_acc_hl_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyd_acc_hl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_acc_lh_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyd_acc_lh_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyd_acc_lh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_acc_lh_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyd_acc_lh_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyd_acc_lh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_acc_ll_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyd_acc_ll_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyd_acc_ll_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_acc_ll_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyd_acc_ll_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyd_acc_ll_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_nac_hh_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyd_nac_hh_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyd_nac_hh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_nac_hh_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyd_nac_hh_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyd_nac_hh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_nac_hl_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyd_nac_hl_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyd_nac_hl_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_nac_hl_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyd_nac_hl_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyd_nac_hl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_nac_lh_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyd_nac_lh_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyd_nac_lh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_nac_lh_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyd_nac_lh_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyd_nac_lh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_nac_ll_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyd_nac_ll_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyd_nac_ll_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_nac_ll_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyd_nac_ll_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyd_nac_ll_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_hh_s0,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyd_hh_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyd_hh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_hh_s1,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyd_hh_s1 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyd_hh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_hl_s0,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyd_hl_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyd_hl_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_hl_s1,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyd_hl_s1 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyd_hl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_lh_s0,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyd_lh_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyd_lh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_lh_s1,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyd_lh_s1 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyd_lh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_ll_s0,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyd_ll_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyd_ll_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_ll_s1,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyd_ll_s1 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyd_ll_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_rnd_hh_s0,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyd_rnd_hh_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyd_rnd_hh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_rnd_hh_s1,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyd_rnd_hh_s1 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyd_rnd_hh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_rnd_hl_s0,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyd_rnd_hl_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyd_rnd_hl_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_rnd_hl_s1,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyd_rnd_hl_s1 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyd_rnd_hl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_rnd_lh_s0,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyd_rnd_lh_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyd_rnd_lh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_rnd_lh_s1,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyd_rnd_lh_s1 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyd_rnd_lh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_rnd_ll_s0,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyd_rnd_ll_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyd_rnd_ll_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyd_rnd_ll_s1,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyd_rnd_ll_s1 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyd_rnd_ll_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_acc_hh_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpyu_acc_hh_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpyu_acc_hh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_acc_hh_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpyu_acc_hh_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpyu_acc_hh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_acc_hl_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpyu_acc_hl_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpyu_acc_hl_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_acc_hl_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpyu_acc_hl_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpyu_acc_hl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_acc_lh_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpyu_acc_lh_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpyu_acc_lh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_acc_lh_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpyu_acc_lh_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpyu_acc_lh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_acc_ll_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpyu_acc_ll_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpyu_acc_ll_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_acc_ll_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpyu_acc_ll_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpyu_acc_ll_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_nac_hh_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpyu_nac_hh_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpyu_nac_hh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_nac_hh_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpyu_nac_hh_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpyu_nac_hh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_nac_hl_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpyu_nac_hl_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpyu_nac_hl_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_nac_hl_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpyu_nac_hl_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpyu_nac_hl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_nac_lh_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpyu_nac_lh_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpyu_nac_lh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_nac_lh_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpyu_nac_lh_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpyu_nac_lh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_nac_ll_s0,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpyu_nac_ll_s0 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpyu_nac_ll_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_nac_ll_s1,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_mpyu_nac_ll_s1 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_mpyu_nac_ll_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_hh_s0,USI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyu_hh_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpyu_hh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_hh_s1,USI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyu_hh_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpyu_hh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_hl_s0,USI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyu_hl_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpyu_hl_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_hl_s1,USI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyu_hl_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpyu_hl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_lh_s0,USI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyu_lh_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpyu_lh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_lh_s1,USI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyu_lh_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpyu_lh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_ll_s0,USI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyu_ll_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpyu_ll_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_ll_s1,USI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyu_ll_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpyu_ll_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_acc_hh_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyud_acc_hh_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyud_acc_hh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_acc_hh_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyud_acc_hh_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyud_acc_hh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_acc_hl_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyud_acc_hl_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyud_acc_hl_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_acc_hl_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyud_acc_hl_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyud_acc_hl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_acc_lh_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyud_acc_lh_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyud_acc_lh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_acc_lh_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyud_acc_lh_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyud_acc_lh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_acc_ll_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyud_acc_ll_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyud_acc_ll_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_acc_ll_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyud_acc_ll_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyud_acc_ll_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_nac_hh_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyud_nac_hh_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyud_nac_hh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_nac_hh_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyud_nac_hh_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyud_nac_hh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_nac_hl_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyud_nac_hl_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyud_nac_hl_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_nac_hl_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyud_nac_hl_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyud_nac_hl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_nac_lh_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyud_nac_lh_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyud_nac_lh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_nac_lh_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyud_nac_lh_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyud_nac_lh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_nac_ll_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyud_nac_ll_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyud_nac_ll_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_nac_ll_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_mpyud_nac_ll_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_mpyud_nac_ll_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_hh_s0,UDI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyud_hh_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyud_hh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_hh_s1,UDI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyud_hh_s1 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyud_hh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_hl_s0,UDI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyud_hl_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyud_hl_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_hl_s1,UDI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyud_hl_s1 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyud_hl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_lh_s0,UDI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyud_lh_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyud_lh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_lh_s1,UDI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyud_lh_s1 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyud_lh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_ll_s0,UDI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyud_ll_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyud_ll_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyud_ll_s1,UDI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyud_ll_s1 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_mpyud_ll_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpysmi,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpysmi :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpysmi">;
-//
-// BUILTIN_INFO(HEXAGON.M2_macsip,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_macsip :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_macsip">;
-//
-// BUILTIN_INFO(HEXAGON.M2_macsin,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_macsin :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_macsin">;
-//
-// BUILTIN_INFO(HEXAGON.M2_dpmpyss_s0,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_dpmpyss_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_dpmpyss_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_dpmpyss_acc_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_dpmpyss_acc_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_dpmpyss_acc_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_dpmpyss_nac_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_dpmpyss_nac_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_dpmpyss_nac_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_dpmpyuu_s0,UDI_ftype_SISI,2)
-//
-def int_hexagon_M2_dpmpyuu_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_dpmpyuu_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_dpmpyuu_acc_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_dpmpyuu_acc_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_dpmpyuu_acc_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_dpmpyuu_nac_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_dpmpyuu_nac_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_dpmpyuu_nac_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_up,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_up :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_up">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_up_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_up_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_up_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpy_up_s1_sat,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpy_up_s1_sat :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpy_up_s1_sat">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyu_up,USI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyu_up :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpyu_up">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpysu_up,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpysu_up :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpysu_up">;
-//
-// BUILTIN_INFO(HEXAGON.M2_dpmpyss_rnd_s0,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_dpmpyss_rnd_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_dpmpyss_rnd_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M4_mac_up_s1_sat,SI_ftype_SISISI,3)
-//
-def int_hexagon_M4_mac_up_s1_sat :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M4_mac_up_s1_sat">;
-//
-// BUILTIN_INFO(HEXAGON.M4_nac_up_s1_sat,SI_ftype_SISISI,3)
-//
-def int_hexagon_M4_nac_up_s1_sat :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M4_nac_up_s1_sat">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyi,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyi :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpyi">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mpyui,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_mpyui :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_mpyui">;
-//
-// BUILTIN_INFO(HEXAGON.M2_maci,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_maci :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_maci">;
-//
-// BUILTIN_INFO(HEXAGON.M2_acci,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_acci :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_acci">;
-//
-// BUILTIN_INFO(HEXAGON.M2_accii,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_accii :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_accii">;
-//
-// BUILTIN_INFO(HEXAGON.M2_nacci,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_nacci :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_nacci">;
-//
-// BUILTIN_INFO(HEXAGON.M2_naccii,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_naccii :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_naccii">;
-//
-// BUILTIN_INFO(HEXAGON.M2_subacc,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_subacc :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_subacc">;
-//
-// BUILTIN_INFO(HEXAGON.M4_mpyrr_addr,SI_ftype_SISISI,3)
-//
-def int_hexagon_M4_mpyrr_addr :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M4_mpyrr_addr">;
-//
-// BUILTIN_INFO(HEXAGON.M4_mpyri_addr_u2,SI_ftype_SISISI,3)
-//
-def int_hexagon_M4_mpyri_addr_u2 :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M4_mpyri_addr_u2">;
-//
-// BUILTIN_INFO(HEXAGON.M4_mpyri_addr,SI_ftype_SISISI,3)
-//
-def int_hexagon_M4_mpyri_addr :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M4_mpyri_addr">;
-//
-// BUILTIN_INFO(HEXAGON.M4_mpyri_addi,SI_ftype_SISISI,3)
-//
-def int_hexagon_M4_mpyri_addi :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M4_mpyri_addi">;
-//
-// BUILTIN_INFO(HEXAGON.M4_mpyrr_addi,SI_ftype_SISISI,3)
-//
-def int_hexagon_M4_mpyrr_addi :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M4_mpyrr_addi">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vmpy2s_s0,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_vmpy2s_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_vmpy2s_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vmpy2s_s1,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_vmpy2s_s1 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_vmpy2s_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vmac2s_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_vmac2s_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_vmac2s_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vmac2s_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_vmac2s_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_vmac2s_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vmpy2su_s0,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_vmpy2su_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_vmpy2su_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vmpy2su_s1,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_vmpy2su_s1 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_vmpy2su_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vmac2su_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_vmac2su_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_vmac2su_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vmac2su_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_vmac2su_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_vmac2su_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vmpy2s_s0pack,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_vmpy2s_s0pack :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_vmpy2s_s0pack">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vmpy2s_s1pack,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_vmpy2s_s1pack :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_vmpy2s_s1pack">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vmac2,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_vmac2 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_vmac2">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vmpy2es_s0,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_vmpy2es_s0 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_vmpy2es_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vmpy2es_s1,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_vmpy2es_s1 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_vmpy2es_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vmac2es_s0,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_vmac2es_s0 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_vmac2es_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vmac2es_s1,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_vmac2es_s1 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_vmac2es_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vmac2es,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_vmac2es :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_vmac2es">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vrmac_s0,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_vrmac_s0 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_vrmac_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vrmpy_s0,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_vrmpy_s0 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_vrmpy_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vdmpyrs_s0,SI_ftype_DIDI,2)
-//
-def int_hexagon_M2_vdmpyrs_s0 :
-Hexagon_si_didi_Intrinsic<"HEXAGON_M2_vdmpyrs_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vdmpyrs_s1,SI_ftype_DIDI,2)
-//
-def int_hexagon_M2_vdmpyrs_s1 :
-Hexagon_si_didi_Intrinsic<"HEXAGON_M2_vdmpyrs_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M5_vrmpybuu,DI_ftype_DIDI,2)
-//
-def int_hexagon_M5_vrmpybuu :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M5_vrmpybuu">;
-//
-// BUILTIN_INFO(HEXAGON.M5_vrmacbuu,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M5_vrmacbuu :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M5_vrmacbuu">;
-//
-// BUILTIN_INFO(HEXAGON.M5_vrmpybsu,DI_ftype_DIDI,2)
-//
-def int_hexagon_M5_vrmpybsu :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M5_vrmpybsu">;
-//
-// BUILTIN_INFO(HEXAGON.M5_vrmacbsu,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M5_vrmacbsu :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M5_vrmacbsu">;
-//
-// BUILTIN_INFO(HEXAGON.M5_vmpybuu,DI_ftype_SISI,2)
-//
-def int_hexagon_M5_vmpybuu :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M5_vmpybuu">;
-//
-// BUILTIN_INFO(HEXAGON.M5_vmpybsu,DI_ftype_SISI,2)
-//
-def int_hexagon_M5_vmpybsu :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M5_vmpybsu">;
-//
-// BUILTIN_INFO(HEXAGON.M5_vmacbuu,DI_ftype_DISISI,3)
-//
-def int_hexagon_M5_vmacbuu :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M5_vmacbuu">;
-//
-// BUILTIN_INFO(HEXAGON.M5_vmacbsu,DI_ftype_DISISI,3)
-//
-def int_hexagon_M5_vmacbsu :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M5_vmacbsu">;
-//
-// BUILTIN_INFO(HEXAGON.M5_vdmpybsu,DI_ftype_DIDI,2)
-//
-def int_hexagon_M5_vdmpybsu :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M5_vdmpybsu">;
-//
-// BUILTIN_INFO(HEXAGON.M5_vdmacbsu,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M5_vdmacbsu :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M5_vdmacbsu">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vdmacs_s0,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_vdmacs_s0 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_vdmacs_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vdmacs_s1,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_vdmacs_s1 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_vdmacs_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vdmpys_s0,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_vdmpys_s0 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_vdmpys_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vdmpys_s1,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_vdmpys_s1 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_vdmpys_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cmpyrs_s0,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_cmpyrs_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_cmpyrs_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cmpyrs_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_cmpyrs_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_cmpyrs_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cmpyrsc_s0,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_cmpyrsc_s0 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_cmpyrsc_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cmpyrsc_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_cmpyrsc_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_cmpyrsc_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cmacs_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_cmacs_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_cmacs_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cmacs_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_cmacs_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_cmacs_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cmacsc_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_cmacsc_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_cmacsc_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cmacsc_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_cmacsc_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_cmacsc_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cmpys_s0,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_cmpys_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_cmpys_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cmpys_s1,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_cmpys_s1 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_cmpys_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cmpysc_s0,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_cmpysc_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_cmpysc_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cmpysc_s1,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_cmpysc_s1 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_cmpysc_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cnacs_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_cnacs_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_cnacs_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cnacs_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_cnacs_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_cnacs_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cnacsc_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_cnacsc_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_cnacsc_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cnacsc_s1,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_cnacsc_s1 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_cnacsc_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vrcmpys_s1,DI_ftype_DISI,2)
-//
-def int_hexagon_M2_vrcmpys_s1 :
-Hexagon_di_disi_Intrinsic<"HEXAGON_M2_vrcmpys_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vrcmpys_acc_s1,DI_ftype_DIDISI,3)
-//
-def int_hexagon_M2_vrcmpys_acc_s1 :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_M2_vrcmpys_acc_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vrcmpys_s1rp,SI_ftype_DISI,2)
-//
-def int_hexagon_M2_vrcmpys_s1rp :
-Hexagon_si_disi_Intrinsic<"HEXAGON_M2_vrcmpys_s1rp">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmacls_s0,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_mmacls_s0 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_mmacls_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmacls_s1,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_mmacls_s1 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_mmacls_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmachs_s0,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_mmachs_s0 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_mmachs_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmachs_s1,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_mmachs_s1 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_mmachs_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmpyl_s0,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_mmpyl_s0 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_mmpyl_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmpyl_s1,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_mmpyl_s1 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_mmpyl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmpyh_s0,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_mmpyh_s0 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_mmpyh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmpyh_s1,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_mmpyh_s1 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_mmpyh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmacls_rs0,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_mmacls_rs0 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_mmacls_rs0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmacls_rs1,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_mmacls_rs1 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_mmacls_rs1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmachs_rs0,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_mmachs_rs0 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_mmachs_rs0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmachs_rs1,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_mmachs_rs1 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_mmachs_rs1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmpyl_rs0,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_mmpyl_rs0 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_mmpyl_rs0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmpyl_rs1,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_mmpyl_rs1 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_mmpyl_rs1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmpyh_rs0,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_mmpyh_rs0 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_mmpyh_rs0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmpyh_rs1,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_mmpyh_rs1 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_mmpyh_rs1">;
-//
-// BUILTIN_INFO(HEXAGON.M4_vrmpyeh_s0,DI_ftype_DIDI,2)
-//
-def int_hexagon_M4_vrmpyeh_s0 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M4_vrmpyeh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M4_vrmpyeh_s1,DI_ftype_DIDI,2)
-//
-def int_hexagon_M4_vrmpyeh_s1 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M4_vrmpyeh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M4_vrmpyeh_acc_s0,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M4_vrmpyeh_acc_s0 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M4_vrmpyeh_acc_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M4_vrmpyeh_acc_s1,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M4_vrmpyeh_acc_s1 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M4_vrmpyeh_acc_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M4_vrmpyoh_s0,DI_ftype_DIDI,2)
-//
-def int_hexagon_M4_vrmpyoh_s0 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M4_vrmpyoh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M4_vrmpyoh_s1,DI_ftype_DIDI,2)
-//
-def int_hexagon_M4_vrmpyoh_s1 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M4_vrmpyoh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M4_vrmpyoh_acc_s0,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M4_vrmpyoh_acc_s0 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M4_vrmpyoh_acc_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M4_vrmpyoh_acc_s1,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M4_vrmpyoh_acc_s1 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M4_vrmpyoh_acc_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_hmmpyl_rs1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_hmmpyl_rs1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_hmmpyl_rs1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_hmmpyh_rs1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_hmmpyh_rs1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_hmmpyh_rs1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_hmmpyl_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_hmmpyl_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_hmmpyl_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_hmmpyh_s1,SI_ftype_SISI,2)
-//
-def int_hexagon_M2_hmmpyh_s1 :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_M2_hmmpyh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmaculs_s0,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_mmaculs_s0 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_mmaculs_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmaculs_s1,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_mmaculs_s1 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_mmaculs_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmacuhs_s0,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_mmacuhs_s0 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_mmacuhs_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmacuhs_s1,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_mmacuhs_s1 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_mmacuhs_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmpyul_s0,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_mmpyul_s0 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_mmpyul_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmpyul_s1,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_mmpyul_s1 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_mmpyul_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmpyuh_s0,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_mmpyuh_s0 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_mmpyuh_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmpyuh_s1,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_mmpyuh_s1 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_mmpyuh_s1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmaculs_rs0,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_mmaculs_rs0 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_mmaculs_rs0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmaculs_rs1,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_mmaculs_rs1 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_mmaculs_rs1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmacuhs_rs0,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_mmacuhs_rs0 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_mmacuhs_rs0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmacuhs_rs1,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_mmacuhs_rs1 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_mmacuhs_rs1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmpyul_rs0,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_mmpyul_rs0 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_mmpyul_rs0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmpyul_rs1,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_mmpyul_rs1 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_mmpyul_rs1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmpyuh_rs0,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_mmpyuh_rs0 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_mmpyuh_rs0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_mmpyuh_rs1,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_mmpyuh_rs1 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_mmpyuh_rs1">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vrcmaci_s0,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_vrcmaci_s0 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_vrcmaci_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vrcmacr_s0,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_vrcmacr_s0 :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_vrcmacr_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vrcmaci_s0c,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_vrcmaci_s0c :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_vrcmaci_s0c">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vrcmacr_s0c,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_vrcmacr_s0c :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_vrcmacr_s0c">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cmaci_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_cmaci_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_cmaci_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cmacr_s0,DI_ftype_DISISI,3)
-//
-def int_hexagon_M2_cmacr_s0 :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M2_cmacr_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vrcmpyi_s0,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_vrcmpyi_s0 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_vrcmpyi_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vrcmpyr_s0,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_vrcmpyr_s0 :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_vrcmpyr_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vrcmpyi_s0c,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_vrcmpyi_s0c :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_vrcmpyi_s0c">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vrcmpyr_s0c,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_vrcmpyr_s0c :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_vrcmpyr_s0c">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cmpyi_s0,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_cmpyi_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_cmpyi_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M2_cmpyr_s0,DI_ftype_SISI,2)
-//
-def int_hexagon_M2_cmpyr_s0 :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M2_cmpyr_s0">;
-//
-// BUILTIN_INFO(HEXAGON.M4_cmpyi_wh,SI_ftype_DISI,2)
-//
-def int_hexagon_M4_cmpyi_wh :
-Hexagon_si_disi_Intrinsic<"HEXAGON_M4_cmpyi_wh">;
-//
-// BUILTIN_INFO(HEXAGON.M4_cmpyr_wh,SI_ftype_DISI,2)
-//
-def int_hexagon_M4_cmpyr_wh :
-Hexagon_si_disi_Intrinsic<"HEXAGON_M4_cmpyr_wh">;
-//
-// BUILTIN_INFO(HEXAGON.M4_cmpyi_whc,SI_ftype_DISI,2)
-//
-def int_hexagon_M4_cmpyi_whc :
-Hexagon_si_disi_Intrinsic<"HEXAGON_M4_cmpyi_whc">;
-//
-// BUILTIN_INFO(HEXAGON.M4_cmpyr_whc,SI_ftype_DISI,2)
-//
-def int_hexagon_M4_cmpyr_whc :
-Hexagon_si_disi_Intrinsic<"HEXAGON_M4_cmpyr_whc">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vcmpy_s0_sat_i,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_vcmpy_s0_sat_i :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_vcmpy_s0_sat_i">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vcmpy_s0_sat_r,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_vcmpy_s0_sat_r :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_vcmpy_s0_sat_r">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vcmpy_s1_sat_i,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_vcmpy_s1_sat_i :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_vcmpy_s1_sat_i">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vcmpy_s1_sat_r,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_vcmpy_s1_sat_r :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_vcmpy_s1_sat_r">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vcmac_s0_sat_i,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_vcmac_s0_sat_i :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_vcmac_s0_sat_i">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vcmac_s0_sat_r,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M2_vcmac_s0_sat_r :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M2_vcmac_s0_sat_r">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vcrotate,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_vcrotate :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_vcrotate">;
-//
-// BUILTIN_INFO(HEXAGON.S4_vrcrotate_acc,DI_ftype_DIDISISI,4)
-//
-def int_hexagon_S4_vrcrotate_acc :
-Hexagon_di_didisisi_Intrinsic<"HEXAGON_S4_vrcrotate_acc">;
-//
-// BUILTIN_INFO(HEXAGON.S4_vrcrotate,DI_ftype_DISISI,3)
-//
-def int_hexagon_S4_vrcrotate :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_S4_vrcrotate">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vcnegh,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_vcnegh :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_vcnegh">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vrcnegh,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_vrcnegh :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_vrcnegh">;
-//
-// BUILTIN_INFO(HEXAGON.M4_pmpyw,DI_ftype_SISI,2)
-//
-def int_hexagon_M4_pmpyw :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M4_pmpyw">;
-//
-// BUILTIN_INFO(HEXAGON.M4_vpmpyh,DI_ftype_SISI,2)
-//
-def int_hexagon_M4_vpmpyh :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_M4_vpmpyh">;
-//
-// BUILTIN_INFO(HEXAGON.M4_pmpyw_acc,DI_ftype_DISISI,3)
-//
-def int_hexagon_M4_pmpyw_acc :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M4_pmpyw_acc">;
-//
-// BUILTIN_INFO(HEXAGON.M4_vpmpyh_acc,DI_ftype_DISISI,3)
-//
-def int_hexagon_M4_vpmpyh_acc :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_M4_vpmpyh_acc">;
-//
-// BUILTIN_INFO(HEXAGON.A2_add,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_add :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_add">;
-//
-// BUILTIN_INFO(HEXAGON.A2_sub,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_sub :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_sub">;
-//
-// BUILTIN_INFO(HEXAGON.A2_addsat,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_addsat :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_addsat">;
-//
-// BUILTIN_INFO(HEXAGON.A2_subsat,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_subsat :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_subsat">;
-//
-// BUILTIN_INFO(HEXAGON.A2_addi,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_addi :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_addi">;
-//
-// BUILTIN_INFO(HEXAGON.A2_addh_l16_ll,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_addh_l16_ll :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_addh_l16_ll">;
-//
-// BUILTIN_INFO(HEXAGON.A2_addh_l16_hl,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_addh_l16_hl :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_addh_l16_hl">;
-//
-// BUILTIN_INFO(HEXAGON.A2_addh_l16_sat_ll,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_addh_l16_sat_ll :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_addh_l16_sat_ll">;
-//
-// BUILTIN_INFO(HEXAGON.A2_addh_l16_sat_hl,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_addh_l16_sat_hl :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_addh_l16_sat_hl">;
-//
-// BUILTIN_INFO(HEXAGON.A2_subh_l16_ll,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_subh_l16_ll :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_subh_l16_ll">;
-//
-// BUILTIN_INFO(HEXAGON.A2_subh_l16_hl,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_subh_l16_hl :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_subh_l16_hl">;
-//
-// BUILTIN_INFO(HEXAGON.A2_subh_l16_sat_ll,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_subh_l16_sat_ll :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_subh_l16_sat_ll">;
-//
-// BUILTIN_INFO(HEXAGON.A2_subh_l16_sat_hl,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_subh_l16_sat_hl :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_subh_l16_sat_hl">;
-//
-// BUILTIN_INFO(HEXAGON.A2_addh_h16_ll,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_addh_h16_ll :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_addh_h16_ll">;
-//
-// BUILTIN_INFO(HEXAGON.A2_addh_h16_lh,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_addh_h16_lh :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_addh_h16_lh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_addh_h16_hl,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_addh_h16_hl :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_addh_h16_hl">;
-//
-// BUILTIN_INFO(HEXAGON.A2_addh_h16_hh,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_addh_h16_hh :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_addh_h16_hh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_addh_h16_sat_ll,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_addh_h16_sat_ll :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_addh_h16_sat_ll">;
-//
-// BUILTIN_INFO(HEXAGON.A2_addh_h16_sat_lh,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_addh_h16_sat_lh :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_addh_h16_sat_lh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_addh_h16_sat_hl,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_addh_h16_sat_hl :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_addh_h16_sat_hl">;
-//
-// BUILTIN_INFO(HEXAGON.A2_addh_h16_sat_hh,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_addh_h16_sat_hh :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_addh_h16_sat_hh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_subh_h16_ll,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_subh_h16_ll :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_subh_h16_ll">;
-//
-// BUILTIN_INFO(HEXAGON.A2_subh_h16_lh,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_subh_h16_lh :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_subh_h16_lh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_subh_h16_hl,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_subh_h16_hl :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_subh_h16_hl">;
-//
-// BUILTIN_INFO(HEXAGON.A2_subh_h16_hh,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_subh_h16_hh :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_subh_h16_hh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_subh_h16_sat_ll,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_subh_h16_sat_ll :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_subh_h16_sat_ll">;
-//
-// BUILTIN_INFO(HEXAGON.A2_subh_h16_sat_lh,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_subh_h16_sat_lh :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_subh_h16_sat_lh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_subh_h16_sat_hl,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_subh_h16_sat_hl :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_subh_h16_sat_hl">;
-//
-// BUILTIN_INFO(HEXAGON.A2_subh_h16_sat_hh,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_subh_h16_sat_hh :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_subh_h16_sat_hh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_aslh,SI_ftype_SI,1)
-//
-def int_hexagon_A2_aslh :
-Hexagon_si_si_Intrinsic<"HEXAGON_A2_aslh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_asrh,SI_ftype_SI,1)
-//
-def int_hexagon_A2_asrh :
-Hexagon_si_si_Intrinsic<"HEXAGON_A2_asrh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_addp,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_addp :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_addp">;
-//
-// BUILTIN_INFO(HEXAGON.A2_addpsat,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_addpsat :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_addpsat">;
-//
-// BUILTIN_INFO(HEXAGON.A2_addsp,DI_ftype_SIDI,2)
-//
-def int_hexagon_A2_addsp :
-Hexagon_di_sidi_Intrinsic<"HEXAGON_A2_addsp">;
-//
-// BUILTIN_INFO(HEXAGON.A2_subp,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_subp :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_subp">;
-//
-// BUILTIN_INFO(HEXAGON.A2_neg,SI_ftype_SI,1)
-//
-def int_hexagon_A2_neg :
-Hexagon_si_si_Intrinsic<"HEXAGON_A2_neg">;
-//
-// BUILTIN_INFO(HEXAGON.A2_negsat,SI_ftype_SI,1)
-//
-def int_hexagon_A2_negsat :
-Hexagon_si_si_Intrinsic<"HEXAGON_A2_negsat">;
-//
-// BUILTIN_INFO(HEXAGON.A2_abs,SI_ftype_SI,1)
-//
-def int_hexagon_A2_abs :
-Hexagon_si_si_Intrinsic<"HEXAGON_A2_abs">;
-//
-// BUILTIN_INFO(HEXAGON.A2_abssat,SI_ftype_SI,1)
-//
-def int_hexagon_A2_abssat :
-Hexagon_si_si_Intrinsic<"HEXAGON_A2_abssat">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vconj,DI_ftype_DI,1)
-//
-def int_hexagon_A2_vconj :
-Hexagon_di_di_Intrinsic<"HEXAGON_A2_vconj">;
-//
-// BUILTIN_INFO(HEXAGON.A2_negp,DI_ftype_DI,1)
-//
-def int_hexagon_A2_negp :
-Hexagon_di_di_Intrinsic<"HEXAGON_A2_negp">;
-//
-// BUILTIN_INFO(HEXAGON.A2_absp,DI_ftype_DI,1)
-//
-def int_hexagon_A2_absp :
-Hexagon_di_di_Intrinsic<"HEXAGON_A2_absp">;
-//
-// BUILTIN_INFO(HEXAGON.A2_max,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_max :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_max">;
-//
-// BUILTIN_INFO(HEXAGON.A2_maxu,USI_ftype_SISI,2)
-//
-def int_hexagon_A2_maxu :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_maxu">;
-//
-// BUILTIN_INFO(HEXAGON.A2_min,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_min :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_min">;
-//
-// BUILTIN_INFO(HEXAGON.A2_minu,USI_ftype_SISI,2)
-//
-def int_hexagon_A2_minu :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_minu">;
-//
-// BUILTIN_INFO(HEXAGON.A2_maxp,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_maxp :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_maxp">;
-//
-// BUILTIN_INFO(HEXAGON.A2_maxup,UDI_ftype_DIDI,2)
-//
-def int_hexagon_A2_maxup :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_maxup">;
-//
-// BUILTIN_INFO(HEXAGON.A2_minp,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_minp :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_minp">;
-//
-// BUILTIN_INFO(HEXAGON.A2_minup,UDI_ftype_DIDI,2)
-//
-def int_hexagon_A2_minup :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_minup">;
-//
-// BUILTIN_INFO(HEXAGON.A2_tfr,SI_ftype_SI,1)
-//
-def int_hexagon_A2_tfr :
-Hexagon_si_si_Intrinsic<"HEXAGON_A2_tfr">;
-//
-// BUILTIN_INFO(HEXAGON.A2_tfrsi,SI_ftype_SI,1)
-//
-def int_hexagon_A2_tfrsi :
-Hexagon_si_si_Intrinsic<"HEXAGON_A2_tfrsi">;
-//
-// BUILTIN_INFO(HEXAGON.A2_tfrp,DI_ftype_DI,1)
-//
-def int_hexagon_A2_tfrp :
-Hexagon_di_di_Intrinsic<"HEXAGON_A2_tfrp">;
-//
-// BUILTIN_INFO(HEXAGON.A2_tfrpi,DI_ftype_SI,1)
-//
-def int_hexagon_A2_tfrpi :
-Hexagon_di_si_Intrinsic<"HEXAGON_A2_tfrpi">;
-//
-// BUILTIN_INFO(HEXAGON.A2_zxtb,SI_ftype_SI,1)
-//
-def int_hexagon_A2_zxtb :
-Hexagon_si_si_Intrinsic<"HEXAGON_A2_zxtb">;
-//
-// BUILTIN_INFO(HEXAGON.A2_sxtb,SI_ftype_SI,1)
-//
-def int_hexagon_A2_sxtb :
-Hexagon_si_si_Intrinsic<"HEXAGON_A2_sxtb">;
-//
-// BUILTIN_INFO(HEXAGON.A2_zxth,SI_ftype_SI,1)
-//
-def int_hexagon_A2_zxth :
-Hexagon_si_si_Intrinsic<"HEXAGON_A2_zxth">;
-//
-// BUILTIN_INFO(HEXAGON.A2_sxth,SI_ftype_SI,1)
-//
-def int_hexagon_A2_sxth :
-Hexagon_si_si_Intrinsic<"HEXAGON_A2_sxth">;
-//
-// BUILTIN_INFO(HEXAGON.A2_combinew,DI_ftype_SISI,2)
-//
-def int_hexagon_A2_combinew :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_A2_combinew">;
-//
-// BUILTIN_INFO(HEXAGON.A4_combineri,DI_ftype_SISI,2)
-//
-def int_hexagon_A4_combineri :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_A4_combineri">;
-//
-// BUILTIN_INFO(HEXAGON.A4_combineir,DI_ftype_SISI,2)
-//
-def int_hexagon_A4_combineir :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_A4_combineir">;
-//
-// BUILTIN_INFO(HEXAGON.A2_combineii,DI_ftype_SISI,2)
-//
-def int_hexagon_A2_combineii :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_A2_combineii">;
-//
-// BUILTIN_INFO(HEXAGON.A2_combine_hh,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_combine_hh :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_combine_hh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_combine_hl,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_combine_hl :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_combine_hl">;
-//
-// BUILTIN_INFO(HEXAGON.A2_combine_lh,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_combine_lh :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_combine_lh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_combine_ll,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_combine_ll :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_combine_ll">;
-//
-// BUILTIN_INFO(HEXAGON.A2_tfril,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_tfril :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_tfril">;
-//
-// BUILTIN_INFO(HEXAGON.A2_tfrih,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_tfrih :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_tfrih">;
-//
-// BUILTIN_INFO(HEXAGON.A2_and,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_and :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_and">;
-//
-// BUILTIN_INFO(HEXAGON.A2_or,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_or :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_or">;
-//
-// BUILTIN_INFO(HEXAGON.A2_xor,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_xor :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_xor">;
-//
-// BUILTIN_INFO(HEXAGON.A2_not,SI_ftype_SI,1)
-//
-def int_hexagon_A2_not :
-Hexagon_si_si_Intrinsic<"HEXAGON_A2_not">;
-//
-// BUILTIN_INFO(HEXAGON.M2_xor_xacc,SI_ftype_SISISI,3)
-//
-def int_hexagon_M2_xor_xacc :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M2_xor_xacc">;
-//
-// BUILTIN_INFO(HEXAGON.M4_xor_xacc,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_M4_xor_xacc :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_M4_xor_xacc">;
-//
-// BUILTIN_INFO(HEXAGON.A4_andn,SI_ftype_SISI,2)
-//
-def int_hexagon_A4_andn :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_andn">;
-//
-// BUILTIN_INFO(HEXAGON.A4_orn,SI_ftype_SISI,2)
-//
-def int_hexagon_A4_orn :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_orn">;
-//
-// BUILTIN_INFO(HEXAGON.A4_andnp,DI_ftype_DIDI,2)
-//
-def int_hexagon_A4_andnp :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A4_andnp">;
-//
-// BUILTIN_INFO(HEXAGON.A4_ornp,DI_ftype_DIDI,2)
-//
-def int_hexagon_A4_ornp :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A4_ornp">;
-//
-// BUILTIN_INFO(HEXAGON.S4_addaddi,SI_ftype_SISISI,3)
-//
-def int_hexagon_S4_addaddi :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S4_addaddi">;
-//
-// BUILTIN_INFO(HEXAGON.S4_subaddi,SI_ftype_SISISI,3)
-//
-def int_hexagon_S4_subaddi :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S4_subaddi">;
-//
-// BUILTIN_INFO(HEXAGON.M4_and_and,SI_ftype_SISISI,3)
-//
-def int_hexagon_M4_and_and :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M4_and_and">;
-//
-// BUILTIN_INFO(HEXAGON.M4_and_andn,SI_ftype_SISISI,3)
-//
-def int_hexagon_M4_and_andn :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M4_and_andn">;
-//
-// BUILTIN_INFO(HEXAGON.M4_and_or,SI_ftype_SISISI,3)
-//
-def int_hexagon_M4_and_or :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M4_and_or">;
-//
-// BUILTIN_INFO(HEXAGON.M4_and_xor,SI_ftype_SISISI,3)
-//
-def int_hexagon_M4_and_xor :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M4_and_xor">;
-//
-// BUILTIN_INFO(HEXAGON.M4_or_and,SI_ftype_SISISI,3)
-//
-def int_hexagon_M4_or_and :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M4_or_and">;
-//
-// BUILTIN_INFO(HEXAGON.M4_or_andn,SI_ftype_SISISI,3)
-//
-def int_hexagon_M4_or_andn :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M4_or_andn">;
-//
-// BUILTIN_INFO(HEXAGON.M4_or_or,SI_ftype_SISISI,3)
-//
-def int_hexagon_M4_or_or :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M4_or_or">;
-//
-// BUILTIN_INFO(HEXAGON.M4_or_xor,SI_ftype_SISISI,3)
-//
-def int_hexagon_M4_or_xor :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M4_or_xor">;
-//
-// BUILTIN_INFO(HEXAGON.S4_or_andix,SI_ftype_SISISI,3)
-//
-def int_hexagon_S4_or_andix :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S4_or_andix">;
-//
-// BUILTIN_INFO(HEXAGON.S4_or_andi,SI_ftype_SISISI,3)
-//
-def int_hexagon_S4_or_andi :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S4_or_andi">;
-//
-// BUILTIN_INFO(HEXAGON.S4_or_ori,SI_ftype_SISISI,3)
-//
-def int_hexagon_S4_or_ori :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S4_or_ori">;
-//
-// BUILTIN_INFO(HEXAGON.M4_xor_and,SI_ftype_SISISI,3)
-//
-def int_hexagon_M4_xor_and :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M4_xor_and">;
-//
-// BUILTIN_INFO(HEXAGON.M4_xor_or,SI_ftype_SISISI,3)
-//
-def int_hexagon_M4_xor_or :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M4_xor_or">;
-//
-// BUILTIN_INFO(HEXAGON.M4_xor_andn,SI_ftype_SISISI,3)
-//
-def int_hexagon_M4_xor_andn :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_M4_xor_andn">;
-//
-// BUILTIN_INFO(HEXAGON.A2_subri,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_subri :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_subri">;
-//
-// BUILTIN_INFO(HEXAGON.A2_andir,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_andir :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_andir">;
-//
-// BUILTIN_INFO(HEXAGON.A2_orir,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_orir :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_orir">;
-//
-// BUILTIN_INFO(HEXAGON.A2_andp,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_andp :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_andp">;
-//
-// BUILTIN_INFO(HEXAGON.A2_orp,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_orp :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_orp">;
-//
-// BUILTIN_INFO(HEXAGON.A2_xorp,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_xorp :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_xorp">;
-//
-// BUILTIN_INFO(HEXAGON.A2_notp,DI_ftype_DI,1)
-//
-def int_hexagon_A2_notp :
-Hexagon_di_di_Intrinsic<"HEXAGON_A2_notp">;
-//
-// BUILTIN_INFO(HEXAGON.A2_sxtw,DI_ftype_SI,1)
-//
-def int_hexagon_A2_sxtw :
-Hexagon_di_si_Intrinsic<"HEXAGON_A2_sxtw">;
-//
-// BUILTIN_INFO(HEXAGON.A2_sat,SI_ftype_DI,1)
-//
-def int_hexagon_A2_sat :
-Hexagon_si_di_Intrinsic<"HEXAGON_A2_sat">;
-//
-// BUILTIN_INFO(HEXAGON.A2_roundsat,SI_ftype_DI,1)
-//
-def int_hexagon_A2_roundsat :
-Hexagon_si_di_Intrinsic<"HEXAGON_A2_roundsat">;
-//
-// BUILTIN_INFO(HEXAGON.A2_sath,SI_ftype_SI,1)
-//
-def int_hexagon_A2_sath :
-Hexagon_si_si_Intrinsic<"HEXAGON_A2_sath">;
-//
-// BUILTIN_INFO(HEXAGON.A2_satuh,SI_ftype_SI,1)
-//
-def int_hexagon_A2_satuh :
-Hexagon_si_si_Intrinsic<"HEXAGON_A2_satuh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_satub,SI_ftype_SI,1)
-//
-def int_hexagon_A2_satub :
-Hexagon_si_si_Intrinsic<"HEXAGON_A2_satub">;
-//
-// BUILTIN_INFO(HEXAGON.A2_satb,SI_ftype_SI,1)
-//
-def int_hexagon_A2_satb :
-Hexagon_si_si_Intrinsic<"HEXAGON_A2_satb">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vaddub,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vaddub :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vaddub">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vaddb_map,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vaddb_map :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vaddb_map">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vaddubs,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vaddubs :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vaddubs">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vaddh,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vaddh :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vaddh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vaddhs,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vaddhs :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vaddhs">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vadduhs,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vadduhs :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vadduhs">;
-//
-// BUILTIN_INFO(HEXAGON.A5_vaddhubs,SI_ftype_DIDI,2)
-//
-def int_hexagon_A5_vaddhubs :
-Hexagon_si_didi_Intrinsic<"HEXAGON_A5_vaddhubs">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vaddw,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vaddw :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vaddw">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vaddws,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vaddws :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vaddws">;
-//
-// BUILTIN_INFO(HEXAGON.S4_vxaddsubw,DI_ftype_DIDI,2)
-//
-def int_hexagon_S4_vxaddsubw :
-Hexagon_di_didi_Intrinsic<"HEXAGON_S4_vxaddsubw">;
-//
-// BUILTIN_INFO(HEXAGON.S4_vxsubaddw,DI_ftype_DIDI,2)
-//
-def int_hexagon_S4_vxsubaddw :
-Hexagon_di_didi_Intrinsic<"HEXAGON_S4_vxsubaddw">;
-//
-// BUILTIN_INFO(HEXAGON.S4_vxaddsubh,DI_ftype_DIDI,2)
-//
-def int_hexagon_S4_vxaddsubh :
-Hexagon_di_didi_Intrinsic<"HEXAGON_S4_vxaddsubh">;
-//
-// BUILTIN_INFO(HEXAGON.S4_vxsubaddh,DI_ftype_DIDI,2)
-//
-def int_hexagon_S4_vxsubaddh :
-Hexagon_di_didi_Intrinsic<"HEXAGON_S4_vxsubaddh">;
-//
-// BUILTIN_INFO(HEXAGON.S4_vxaddsubhr,DI_ftype_DIDI,2)
-//
-def int_hexagon_S4_vxaddsubhr :
-Hexagon_di_didi_Intrinsic<"HEXAGON_S4_vxaddsubhr">;
-//
-// BUILTIN_INFO(HEXAGON.S4_vxsubaddhr,DI_ftype_DIDI,2)
-//
-def int_hexagon_S4_vxsubaddhr :
-Hexagon_di_didi_Intrinsic<"HEXAGON_S4_vxsubaddhr">;
-//
-// BUILTIN_INFO(HEXAGON.A2_svavgh,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_svavgh :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_svavgh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_svavghs,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_svavghs :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_svavghs">;
-//
-// BUILTIN_INFO(HEXAGON.A2_svnavgh,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_svnavgh :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_svnavgh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_svaddh,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_svaddh :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_svaddh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_svaddhs,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_svaddhs :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_svaddhs">;
-//
-// BUILTIN_INFO(HEXAGON.A2_svadduhs,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_svadduhs :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_svadduhs">;
-//
-// BUILTIN_INFO(HEXAGON.A2_svsubh,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_svsubh :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_svsubh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_svsubhs,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_svsubhs :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_svsubhs">;
-//
-// BUILTIN_INFO(HEXAGON.A2_svsubuhs,SI_ftype_SISI,2)
-//
-def int_hexagon_A2_svsubuhs :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A2_svsubuhs">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vraddub,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vraddub :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vraddub">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vraddub_acc,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_A2_vraddub_acc :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_A2_vraddub_acc">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vraddh,SI_ftype_DIDI,2)
-//
-def int_hexagon_M2_vraddh :
-Hexagon_si_didi_Intrinsic<"HEXAGON_M2_vraddh">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vradduh,SI_ftype_DIDI,2)
-//
-def int_hexagon_M2_vradduh :
-Hexagon_si_didi_Intrinsic<"HEXAGON_M2_vradduh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vsubub,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vsubub :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vsubub">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vsubb_map,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vsubb_map :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vsubb_map">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vsububs,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vsububs :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vsububs">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vsubh,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vsubh :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vsubh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vsubhs,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vsubhs :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vsubhs">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vsubuhs,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vsubuhs :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vsubuhs">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vsubw,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vsubw :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vsubw">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vsubws,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vsubws :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vsubws">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vabsh,DI_ftype_DI,1)
-//
-def int_hexagon_A2_vabsh :
-Hexagon_di_di_Intrinsic<"HEXAGON_A2_vabsh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vabshsat,DI_ftype_DI,1)
-//
-def int_hexagon_A2_vabshsat :
-Hexagon_di_di_Intrinsic<"HEXAGON_A2_vabshsat">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vabsw,DI_ftype_DI,1)
-//
-def int_hexagon_A2_vabsw :
-Hexagon_di_di_Intrinsic<"HEXAGON_A2_vabsw">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vabswsat,DI_ftype_DI,1)
-//
-def int_hexagon_A2_vabswsat :
-Hexagon_di_di_Intrinsic<"HEXAGON_A2_vabswsat">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vabsdiffw,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_vabsdiffw :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_vabsdiffw">;
-//
-// BUILTIN_INFO(HEXAGON.M2_vabsdiffh,DI_ftype_DIDI,2)
-//
-def int_hexagon_M2_vabsdiffh :
-Hexagon_di_didi_Intrinsic<"HEXAGON_M2_vabsdiffh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vrsadub,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vrsadub :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vrsadub">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vrsadub_acc,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_A2_vrsadub_acc :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_A2_vrsadub_acc">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vavgub,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vavgub :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vavgub">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vavguh,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vavguh :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vavguh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vavgh,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vavgh :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vavgh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vnavgh,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vnavgh :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vnavgh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vavgw,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vavgw :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vavgw">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vnavgw,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vnavgw :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vnavgw">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vavgwr,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vavgwr :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vavgwr">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vnavgwr,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vnavgwr :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vnavgwr">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vavgwcr,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vavgwcr :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vavgwcr">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vnavgwcr,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vnavgwcr :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vnavgwcr">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vavghcr,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vavghcr :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vavghcr">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vnavghcr,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vnavghcr :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vnavghcr">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vavguw,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vavguw :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vavguw">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vavguwr,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vavguwr :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vavguwr">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vavgubr,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vavgubr :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vavgubr">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vavguhr,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vavguhr :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vavguhr">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vavghr,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vavghr :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vavghr">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vnavghr,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vnavghr :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vnavghr">;
-//
-// BUILTIN_INFO(HEXAGON.A4_round_ri,SI_ftype_SISI,2)
-//
-def int_hexagon_A4_round_ri :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_round_ri">;
-//
-// BUILTIN_INFO(HEXAGON.A4_round_rr,SI_ftype_SISI,2)
-//
-def int_hexagon_A4_round_rr :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_round_rr">;
-//
-// BUILTIN_INFO(HEXAGON.A4_round_ri_sat,SI_ftype_SISI,2)
-//
-def int_hexagon_A4_round_ri_sat :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_round_ri_sat">;
-//
-// BUILTIN_INFO(HEXAGON.A4_round_rr_sat,SI_ftype_SISI,2)
-//
-def int_hexagon_A4_round_rr_sat :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_round_rr_sat">;
-//
-// BUILTIN_INFO(HEXAGON.A4_cround_ri,SI_ftype_SISI,2)
-//
-def int_hexagon_A4_cround_ri :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_cround_ri">;
-//
-// BUILTIN_INFO(HEXAGON.A4_cround_rr,SI_ftype_SISI,2)
-//
-def int_hexagon_A4_cround_rr :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_cround_rr">;
-//
-// BUILTIN_INFO(HEXAGON.A4_vrminh,DI_ftype_DIDISI,3)
-//
-def int_hexagon_A4_vrminh :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_A4_vrminh">;
-//
-// BUILTIN_INFO(HEXAGON.A4_vrmaxh,DI_ftype_DIDISI,3)
-//
-def int_hexagon_A4_vrmaxh :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_A4_vrmaxh">;
-//
-// BUILTIN_INFO(HEXAGON.A4_vrminuh,DI_ftype_DIDISI,3)
-//
-def int_hexagon_A4_vrminuh :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_A4_vrminuh">;
-//
-// BUILTIN_INFO(HEXAGON.A4_vrmaxuh,DI_ftype_DIDISI,3)
-//
-def int_hexagon_A4_vrmaxuh :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_A4_vrmaxuh">;
-//
-// BUILTIN_INFO(HEXAGON.A4_vrminw,DI_ftype_DIDISI,3)
-//
-def int_hexagon_A4_vrminw :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_A4_vrminw">;
-//
-// BUILTIN_INFO(HEXAGON.A4_vrmaxw,DI_ftype_DIDISI,3)
-//
-def int_hexagon_A4_vrmaxw :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_A4_vrmaxw">;
-//
-// BUILTIN_INFO(HEXAGON.A4_vrminuw,DI_ftype_DIDISI,3)
-//
-def int_hexagon_A4_vrminuw :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_A4_vrminuw">;
-//
-// BUILTIN_INFO(HEXAGON.A4_vrmaxuw,DI_ftype_DIDISI,3)
-//
-def int_hexagon_A4_vrmaxuw :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_A4_vrmaxuw">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vminb,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vminb :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vminb">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vmaxb,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vmaxb :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vmaxb">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vminub,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vminub :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vminub">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vmaxub,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vmaxub :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vmaxub">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vminh,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vminh :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vminh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vmaxh,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vmaxh :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vmaxh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vminuh,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vminuh :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vminuh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vmaxuh,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vmaxuh :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vmaxuh">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vminw,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vminw :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vminw">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vmaxw,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vmaxw :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vmaxw">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vminuw,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vminuw :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vminuw">;
-//
-// BUILTIN_INFO(HEXAGON.A2_vmaxuw,DI_ftype_DIDI,2)
-//
-def int_hexagon_A2_vmaxuw :
-Hexagon_di_didi_Intrinsic<"HEXAGON_A2_vmaxuw">;
-//
-// BUILTIN_INFO(HEXAGON.A4_modwrapu,SI_ftype_SISI,2)
-//
-def int_hexagon_A4_modwrapu :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_A4_modwrapu">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sfadd,SF_ftype_SFSF,2)
-//
-def int_hexagon_F2_sfadd :
-Hexagon_sf_sfsf_Intrinsic<"HEXAGON_F2_sfadd">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sfsub,SF_ftype_SFSF,2)
-//
-def int_hexagon_F2_sfsub :
-Hexagon_sf_sfsf_Intrinsic<"HEXAGON_F2_sfsub">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sfmpy,SF_ftype_SFSF,2)
-//
-def int_hexagon_F2_sfmpy :
-Hexagon_sf_sfsf_Intrinsic<"HEXAGON_F2_sfmpy">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sffma,SF_ftype_SFSFSF,3)
-//
-def int_hexagon_F2_sffma :
-Hexagon_sf_sfsfsf_Intrinsic<"HEXAGON_F2_sffma">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sffma_sc,SF_ftype_SFSFSFQI,4)
-//
-def int_hexagon_F2_sffma_sc :
-Hexagon_sf_sfsfsfqi_Intrinsic<"HEXAGON_F2_sffma_sc">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sffms,SF_ftype_SFSFSF,3)
-//
-def int_hexagon_F2_sffms :
-Hexagon_sf_sfsfsf_Intrinsic<"HEXAGON_F2_sffms">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sffma_lib,SF_ftype_SFSFSF,3)
-//
-def int_hexagon_F2_sffma_lib :
-Hexagon_sf_sfsfsf_Intrinsic<"HEXAGON_F2_sffma_lib">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sffms_lib,SF_ftype_SFSFSF,3)
-//
-def int_hexagon_F2_sffms_lib :
-Hexagon_sf_sfsfsf_Intrinsic<"HEXAGON_F2_sffms_lib">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sfcmpeq,QI_ftype_SFSF,2)
-//
-def int_hexagon_F2_sfcmpeq :
-Hexagon_si_sfsf_Intrinsic<"HEXAGON_F2_sfcmpeq">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sfcmpgt,QI_ftype_SFSF,2)
-//
-def int_hexagon_F2_sfcmpgt :
-Hexagon_si_sfsf_Intrinsic<"HEXAGON_F2_sfcmpgt">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sfcmpge,QI_ftype_SFSF,2)
-//
-def int_hexagon_F2_sfcmpge :
-Hexagon_si_sfsf_Intrinsic<"HEXAGON_F2_sfcmpge">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sfcmpuo,QI_ftype_SFSF,2)
-//
-def int_hexagon_F2_sfcmpuo :
-Hexagon_si_sfsf_Intrinsic<"HEXAGON_F2_sfcmpuo">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sfmax,SF_ftype_SFSF,2)
-//
-def int_hexagon_F2_sfmax :
-Hexagon_sf_sfsf_Intrinsic<"HEXAGON_F2_sfmax">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sfmin,SF_ftype_SFSF,2)
-//
-def int_hexagon_F2_sfmin :
-Hexagon_sf_sfsf_Intrinsic<"HEXAGON_F2_sfmin">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sfclass,QI_ftype_SFSI,2)
-//
-def int_hexagon_F2_sfclass :
-Hexagon_si_sfsi_Intrinsic<"HEXAGON_F2_sfclass">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sfimm_p,SF_ftype_SI,1)
-//
-def int_hexagon_F2_sfimm_p :
-Hexagon_sf_si_Intrinsic<"HEXAGON_F2_sfimm_p">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sfimm_n,SF_ftype_SI,1)
-//
-def int_hexagon_F2_sfimm_n :
-Hexagon_sf_si_Intrinsic<"HEXAGON_F2_sfimm_n">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sffixupn,SF_ftype_SFSF,2)
-//
-def int_hexagon_F2_sffixupn :
-Hexagon_sf_sfsf_Intrinsic<"HEXAGON_F2_sffixupn">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sffixupd,SF_ftype_SFSF,2)
-//
-def int_hexagon_F2_sffixupd :
-Hexagon_sf_sfsf_Intrinsic<"HEXAGON_F2_sffixupd">;
-//
-// BUILTIN_INFO(HEXAGON.F2_sffixupr,SF_ftype_SF,1)
-//
-def int_hexagon_F2_sffixupr :
-Hexagon_sf_sf_Intrinsic<"HEXAGON_F2_sffixupr">;
-//
-// BUILTIN_INFO(HEXAGON.F2_dfcmpeq,QI_ftype_DFDF,2)
-//
-def int_hexagon_F2_dfcmpeq :
-Hexagon_si_dfdf_Intrinsic<"HEXAGON_F2_dfcmpeq">;
-//
-// BUILTIN_INFO(HEXAGON.F2_dfcmpgt,QI_ftype_DFDF,2)
-//
-def int_hexagon_F2_dfcmpgt :
-Hexagon_si_dfdf_Intrinsic<"HEXAGON_F2_dfcmpgt">;
-//
-// BUILTIN_INFO(HEXAGON.F2_dfcmpge,QI_ftype_DFDF,2)
-//
-def int_hexagon_F2_dfcmpge :
-Hexagon_si_dfdf_Intrinsic<"HEXAGON_F2_dfcmpge">;
-//
-// BUILTIN_INFO(HEXAGON.F2_dfcmpuo,QI_ftype_DFDF,2)
-//
-def int_hexagon_F2_dfcmpuo :
-Hexagon_si_dfdf_Intrinsic<"HEXAGON_F2_dfcmpuo">;
-//
-// BUILTIN_INFO(HEXAGON.F2_dfclass,QI_ftype_DFSI,2)
-//
-def int_hexagon_F2_dfclass :
-Hexagon_si_dfsi_Intrinsic<"HEXAGON_F2_dfclass">;
-//
-// BUILTIN_INFO(HEXAGON.F2_dfimm_p,DF_ftype_SI,1)
-//
-def int_hexagon_F2_dfimm_p :
-Hexagon_df_si_Intrinsic<"HEXAGON_F2_dfimm_p">;
-//
-// BUILTIN_INFO(HEXAGON.F2_dfimm_n,DF_ftype_SI,1)
-//
-def int_hexagon_F2_dfimm_n :
-Hexagon_df_si_Intrinsic<"HEXAGON_F2_dfimm_n">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_sf2df,DF_ftype_SF,1)
-//
-def int_hexagon_F2_conv_sf2df :
-Hexagon_df_sf_Intrinsic<"HEXAGON_F2_conv_sf2df">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_df2sf,SF_ftype_DF,1)
-//
-def int_hexagon_F2_conv_df2sf :
-Hexagon_sf_df_Intrinsic<"HEXAGON_F2_conv_df2sf">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_uw2sf,SF_ftype_SI,1)
-//
-def int_hexagon_F2_conv_uw2sf :
-Hexagon_sf_si_Intrinsic<"HEXAGON_F2_conv_uw2sf">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_uw2df,DF_ftype_SI,1)
-//
-def int_hexagon_F2_conv_uw2df :
-Hexagon_df_si_Intrinsic<"HEXAGON_F2_conv_uw2df">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_w2sf,SF_ftype_SI,1)
-//
-def int_hexagon_F2_conv_w2sf :
-Hexagon_sf_si_Intrinsic<"HEXAGON_F2_conv_w2sf">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_w2df,DF_ftype_SI,1)
-//
-def int_hexagon_F2_conv_w2df :
-Hexagon_df_si_Intrinsic<"HEXAGON_F2_conv_w2df">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_ud2sf,SF_ftype_DI,1)
-//
-def int_hexagon_F2_conv_ud2sf :
-Hexagon_sf_di_Intrinsic<"HEXAGON_F2_conv_ud2sf">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_ud2df,DF_ftype_DI,1)
-//
-def int_hexagon_F2_conv_ud2df :
-Hexagon_df_di_Intrinsic<"HEXAGON_F2_conv_ud2df">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_d2sf,SF_ftype_DI,1)
-//
-def int_hexagon_F2_conv_d2sf :
-Hexagon_sf_di_Intrinsic<"HEXAGON_F2_conv_d2sf">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_d2df,DF_ftype_DI,1)
-//
-def int_hexagon_F2_conv_d2df :
-Hexagon_df_di_Intrinsic<"HEXAGON_F2_conv_d2df">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_sf2uw,SI_ftype_SF,1)
-//
-def int_hexagon_F2_conv_sf2uw :
-Hexagon_si_sf_Intrinsic<"HEXAGON_F2_conv_sf2uw">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_sf2w,SI_ftype_SF,1)
-//
-def int_hexagon_F2_conv_sf2w :
-Hexagon_si_sf_Intrinsic<"HEXAGON_F2_conv_sf2w">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_sf2ud,DI_ftype_SF,1)
-//
-def int_hexagon_F2_conv_sf2ud :
-Hexagon_di_sf_Intrinsic<"HEXAGON_F2_conv_sf2ud">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_sf2d,DI_ftype_SF,1)
-//
-def int_hexagon_F2_conv_sf2d :
-Hexagon_di_sf_Intrinsic<"HEXAGON_F2_conv_sf2d">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_df2uw,SI_ftype_DF,1)
-//
-def int_hexagon_F2_conv_df2uw :
-Hexagon_si_df_Intrinsic<"HEXAGON_F2_conv_df2uw">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_df2w,SI_ftype_DF,1)
-//
-def int_hexagon_F2_conv_df2w :
-Hexagon_si_df_Intrinsic<"HEXAGON_F2_conv_df2w">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_df2ud,DI_ftype_DF,1)
-//
-def int_hexagon_F2_conv_df2ud :
-Hexagon_di_df_Intrinsic<"HEXAGON_F2_conv_df2ud">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_df2d,DI_ftype_DF,1)
-//
-def int_hexagon_F2_conv_df2d :
-Hexagon_di_df_Intrinsic<"HEXAGON_F2_conv_df2d">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_sf2uw_chop,SI_ftype_SF,1)
-//
-def int_hexagon_F2_conv_sf2uw_chop :
-Hexagon_si_sf_Intrinsic<"HEXAGON_F2_conv_sf2uw_chop">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_sf2w_chop,SI_ftype_SF,1)
-//
-def int_hexagon_F2_conv_sf2w_chop :
-Hexagon_si_sf_Intrinsic<"HEXAGON_F2_conv_sf2w_chop">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_sf2ud_chop,DI_ftype_SF,1)
-//
-def int_hexagon_F2_conv_sf2ud_chop :
-Hexagon_di_sf_Intrinsic<"HEXAGON_F2_conv_sf2ud_chop">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_sf2d_chop,DI_ftype_SF,1)
-//
-def int_hexagon_F2_conv_sf2d_chop :
-Hexagon_di_sf_Intrinsic<"HEXAGON_F2_conv_sf2d_chop">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_df2uw_chop,SI_ftype_DF,1)
-//
-def int_hexagon_F2_conv_df2uw_chop :
-Hexagon_si_df_Intrinsic<"HEXAGON_F2_conv_df2uw_chop">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_df2w_chop,SI_ftype_DF,1)
-//
-def int_hexagon_F2_conv_df2w_chop :
-Hexagon_si_df_Intrinsic<"HEXAGON_F2_conv_df2w_chop">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_df2ud_chop,DI_ftype_DF,1)
-//
-def int_hexagon_F2_conv_df2ud_chop :
-Hexagon_di_df_Intrinsic<"HEXAGON_F2_conv_df2ud_chop">;
-//
-// BUILTIN_INFO(HEXAGON.F2_conv_df2d_chop,DI_ftype_DF,1)
-//
-def int_hexagon_F2_conv_df2d_chop :
-Hexagon_di_df_Intrinsic<"HEXAGON_F2_conv_df2d_chop">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_r_r,SI_ftype_SISI,2)
-//
-def int_hexagon_S2_asr_r_r :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_asr_r_r">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_r_r,SI_ftype_SISI,2)
-//
-def int_hexagon_S2_asl_r_r :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_asl_r_r">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_r_r,SI_ftype_SISI,2)
-//
-def int_hexagon_S2_lsr_r_r :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_lsr_r_r">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsl_r_r,SI_ftype_SISI,2)
-//
-def int_hexagon_S2_lsl_r_r :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_lsl_r_r">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_r_p,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_asr_r_p :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_asr_r_p">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_r_p,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_asl_r_p :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_asl_r_p">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_r_p,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_lsr_r_p :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_lsr_r_p">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsl_r_p,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_lsl_r_p :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_lsl_r_p">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_r_r_acc,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_asr_r_r_acc :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_asr_r_r_acc">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_r_r_acc,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_asl_r_r_acc :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_asl_r_r_acc">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_r_r_acc,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_lsr_r_r_acc :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_lsr_r_r_acc">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsl_r_r_acc,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_lsl_r_r_acc :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_lsl_r_r_acc">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_r_p_acc,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_asr_r_p_acc :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_asr_r_p_acc">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_r_p_acc,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_asl_r_p_acc :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_asl_r_p_acc">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_r_p_acc,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_lsr_r_p_acc :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_lsr_r_p_acc">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsl_r_p_acc,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_lsl_r_p_acc :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_lsl_r_p_acc">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_r_r_nac,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_asr_r_r_nac :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_asr_r_r_nac">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_r_r_nac,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_asl_r_r_nac :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_asl_r_r_nac">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_r_r_nac,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_lsr_r_r_nac :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_lsr_r_r_nac">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsl_r_r_nac,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_lsl_r_r_nac :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_lsl_r_r_nac">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_r_p_nac,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_asr_r_p_nac :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_asr_r_p_nac">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_r_p_nac,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_asl_r_p_nac :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_asl_r_p_nac">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_r_p_nac,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_lsr_r_p_nac :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_lsr_r_p_nac">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsl_r_p_nac,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_lsl_r_p_nac :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_lsl_r_p_nac">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_r_r_and,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_asr_r_r_and :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_asr_r_r_and">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_r_r_and,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_asl_r_r_and :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_asl_r_r_and">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_r_r_and,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_lsr_r_r_and :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_lsr_r_r_and">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsl_r_r_and,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_lsl_r_r_and :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_lsl_r_r_and">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_r_r_or,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_asr_r_r_or :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_asr_r_r_or">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_r_r_or,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_asl_r_r_or :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_asl_r_r_or">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_r_r_or,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_lsr_r_r_or :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_lsr_r_r_or">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsl_r_r_or,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_lsl_r_r_or :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_lsl_r_r_or">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_r_p_and,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_asr_r_p_and :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_asr_r_p_and">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_r_p_and,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_asl_r_p_and :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_asl_r_p_and">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_r_p_and,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_lsr_r_p_and :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_lsr_r_p_and">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsl_r_p_and,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_lsl_r_p_and :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_lsl_r_p_and">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_r_p_or,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_asr_r_p_or :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_asr_r_p_or">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_r_p_or,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_asl_r_p_or :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_asl_r_p_or">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_r_p_or,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_lsr_r_p_or :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_lsr_r_p_or">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsl_r_p_or,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_lsl_r_p_or :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_lsl_r_p_or">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_r_p_xor,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_asr_r_p_xor :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_asr_r_p_xor">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_r_p_xor,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_asl_r_p_xor :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_asl_r_p_xor">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_r_p_xor,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_lsr_r_p_xor :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_lsr_r_p_xor">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsl_r_p_xor,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_lsl_r_p_xor :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_lsl_r_p_xor">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_r_r_sat,SI_ftype_SISI,2)
-//
-def int_hexagon_S2_asr_r_r_sat :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_asr_r_r_sat">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_r_r_sat,SI_ftype_SISI,2)
-//
-def int_hexagon_S2_asl_r_r_sat :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_asl_r_r_sat">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_i_r,SI_ftype_SISI,2)
-//
-def int_hexagon_S2_asr_i_r :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_asr_i_r">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_i_r,SI_ftype_SISI,2)
-//
-def int_hexagon_S2_lsr_i_r :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_lsr_i_r">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_i_r,SI_ftype_SISI,2)
-//
-def int_hexagon_S2_asl_i_r :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_asl_i_r">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_i_p,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_asr_i_p :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_asr_i_p">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_i_p,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_lsr_i_p :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_lsr_i_p">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_i_p,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_asl_i_p :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_asl_i_p">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_i_r_acc,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_asr_i_r_acc :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_asr_i_r_acc">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_i_r_acc,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_lsr_i_r_acc :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_lsr_i_r_acc">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_i_r_acc,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_asl_i_r_acc :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_asl_i_r_acc">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_i_p_acc,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_asr_i_p_acc :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_asr_i_p_acc">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_i_p_acc,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_lsr_i_p_acc :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_lsr_i_p_acc">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_i_p_acc,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_asl_i_p_acc :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_asl_i_p_acc">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_i_r_nac,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_asr_i_r_nac :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_asr_i_r_nac">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_i_r_nac,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_lsr_i_r_nac :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_lsr_i_r_nac">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_i_r_nac,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_asl_i_r_nac :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_asl_i_r_nac">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_i_p_nac,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_asr_i_p_nac :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_asr_i_p_nac">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_i_p_nac,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_lsr_i_p_nac :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_lsr_i_p_nac">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_i_p_nac,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_asl_i_p_nac :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_asl_i_p_nac">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_i_r_xacc,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_lsr_i_r_xacc :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_lsr_i_r_xacc">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_i_r_xacc,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_asl_i_r_xacc :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_asl_i_r_xacc">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_i_p_xacc,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_lsr_i_p_xacc :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_lsr_i_p_xacc">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_i_p_xacc,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_asl_i_p_xacc :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_asl_i_p_xacc">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_i_r_and,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_asr_i_r_and :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_asr_i_r_and">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_i_r_and,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_lsr_i_r_and :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_lsr_i_r_and">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_i_r_and,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_asl_i_r_and :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_asl_i_r_and">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_i_r_or,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_asr_i_r_or :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_asr_i_r_or">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_i_r_or,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_lsr_i_r_or :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_lsr_i_r_or">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_i_r_or,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_asl_i_r_or :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_asl_i_r_or">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_i_p_and,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_asr_i_p_and :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_asr_i_p_and">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_i_p_and,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_lsr_i_p_and :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_lsr_i_p_and">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_i_p_and,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_asl_i_p_and :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_asl_i_p_and">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_i_p_or,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_asr_i_p_or :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_asr_i_p_or">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_i_p_or,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_lsr_i_p_or :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_lsr_i_p_or">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_i_p_or,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_asl_i_p_or :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_asl_i_p_or">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_i_r_sat,SI_ftype_SISI,2)
-//
-def int_hexagon_S2_asl_i_r_sat :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_asl_i_r_sat">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_i_r_rnd,SI_ftype_SISI,2)
-//
-def int_hexagon_S2_asr_i_r_rnd :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_asr_i_r_rnd">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_i_r_rnd_goodsyntax,SI_ftype_SISI,2)
-//
-def int_hexagon_S2_asr_i_r_rnd_goodsyntax :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_asr_i_r_rnd_goodsyntax">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_i_p_rnd,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_asr_i_p_rnd :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_asr_i_p_rnd">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_i_p_rnd_goodsyntax,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_asr_i_p_rnd_goodsyntax :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_asr_i_p_rnd_goodsyntax">;
-//
-// BUILTIN_INFO(HEXAGON.S4_lsli,SI_ftype_SISI,2)
-//
-def int_hexagon_S4_lsli :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S4_lsli">;
-//
-// BUILTIN_INFO(HEXAGON.S2_addasl_rrri,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_addasl_rrri :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_addasl_rrri">;
-//
-// BUILTIN_INFO(HEXAGON.S4_andi_asl_ri,SI_ftype_SISISI,3)
-//
-def int_hexagon_S4_andi_asl_ri :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S4_andi_asl_ri">;
-//
-// BUILTIN_INFO(HEXAGON.S4_ori_asl_ri,SI_ftype_SISISI,3)
-//
-def int_hexagon_S4_ori_asl_ri :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S4_ori_asl_ri">;
-//
-// BUILTIN_INFO(HEXAGON.S4_addi_asl_ri,SI_ftype_SISISI,3)
-//
-def int_hexagon_S4_addi_asl_ri :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S4_addi_asl_ri">;
-//
-// BUILTIN_INFO(HEXAGON.S4_subi_asl_ri,SI_ftype_SISISI,3)
-//
-def int_hexagon_S4_subi_asl_ri :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S4_subi_asl_ri">;
-//
-// BUILTIN_INFO(HEXAGON.S4_andi_lsr_ri,SI_ftype_SISISI,3)
-//
-def int_hexagon_S4_andi_lsr_ri :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S4_andi_lsr_ri">;
-//
-// BUILTIN_INFO(HEXAGON.S4_ori_lsr_ri,SI_ftype_SISISI,3)
-//
-def int_hexagon_S4_ori_lsr_ri :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S4_ori_lsr_ri">;
-//
-// BUILTIN_INFO(HEXAGON.S4_addi_lsr_ri,SI_ftype_SISISI,3)
-//
-def int_hexagon_S4_addi_lsr_ri :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S4_addi_lsr_ri">;
-//
-// BUILTIN_INFO(HEXAGON.S4_subi_lsr_ri,SI_ftype_SISISI,3)
-//
-def int_hexagon_S4_subi_lsr_ri :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S4_subi_lsr_ri">;
-//
-// BUILTIN_INFO(HEXAGON.S2_valignib,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_valignib :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_valignib">;
-//
-// BUILTIN_INFO(HEXAGON.S2_valignrb,DI_ftype_DIDIQI,3)
-//
-def int_hexagon_S2_valignrb :
-Hexagon_di_didiqi_Intrinsic<"HEXAGON_S2_valignrb">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vspliceib,DI_ftype_DIDISI,3)
-//
-def int_hexagon_S2_vspliceib :
-Hexagon_di_didisi_Intrinsic<"HEXAGON_S2_vspliceib">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vsplicerb,DI_ftype_DIDIQI,3)
-//
-def int_hexagon_S2_vsplicerb :
-Hexagon_di_didiqi_Intrinsic<"HEXAGON_S2_vsplicerb">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vsplatrh,DI_ftype_SI,1)
-//
-def int_hexagon_S2_vsplatrh :
-Hexagon_di_si_Intrinsic<"HEXAGON_S2_vsplatrh">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vsplatrb,SI_ftype_SI,1)
-//
-def int_hexagon_S2_vsplatrb :
-Hexagon_si_si_Intrinsic<"HEXAGON_S2_vsplatrb">;
-//
-// BUILTIN_INFO(HEXAGON.S2_insert,SI_ftype_SISISISI,4)
-//
-def int_hexagon_S2_insert :
-Hexagon_si_sisisisi_Intrinsic<"HEXAGON_S2_insert">;
-//
-// BUILTIN_INFO(HEXAGON.S2_tableidxb_goodsyntax,SI_ftype_SISISISI,4)
-//
-def int_hexagon_S2_tableidxb_goodsyntax :
-Hexagon_si_sisisisi_Intrinsic<"HEXAGON_S2_tableidxb_goodsyntax">;
-//
-// BUILTIN_INFO(HEXAGON.S2_tableidxh_goodsyntax,SI_ftype_SISISISI,4)
-//
-def int_hexagon_S2_tableidxh_goodsyntax :
-Hexagon_si_sisisisi_Intrinsic<"HEXAGON_S2_tableidxh_goodsyntax">;
-//
-// BUILTIN_INFO(HEXAGON.S2_tableidxw_goodsyntax,SI_ftype_SISISISI,4)
-//
-def int_hexagon_S2_tableidxw_goodsyntax :
-Hexagon_si_sisisisi_Intrinsic<"HEXAGON_S2_tableidxw_goodsyntax">;
-//
-// BUILTIN_INFO(HEXAGON.S2_tableidxd_goodsyntax,SI_ftype_SISISISI,4)
-//
-def int_hexagon_S2_tableidxd_goodsyntax :
-Hexagon_si_sisisisi_Intrinsic<"HEXAGON_S2_tableidxd_goodsyntax">;
-//
-// BUILTIN_INFO(HEXAGON.A4_bitspliti,DI_ftype_SISI,2)
-//
-def int_hexagon_A4_bitspliti :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_A4_bitspliti">;
-//
-// BUILTIN_INFO(HEXAGON.A4_bitsplit,DI_ftype_SISI,2)
-//
-def int_hexagon_A4_bitsplit :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_A4_bitsplit">;
-//
-// BUILTIN_INFO(HEXAGON.S4_extract,SI_ftype_SISISI,3)
-//
-def int_hexagon_S4_extract :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S4_extract">;
-//
-// BUILTIN_INFO(HEXAGON.S2_extractu,SI_ftype_SISISI,3)
-//
-def int_hexagon_S2_extractu :
-Hexagon_si_sisisi_Intrinsic<"HEXAGON_S2_extractu">;
-//
-// BUILTIN_INFO(HEXAGON.S2_insertp,DI_ftype_DIDISISI,4)
-//
-def int_hexagon_S2_insertp :
-Hexagon_di_didisisi_Intrinsic<"HEXAGON_S2_insertp">;
-//
-// BUILTIN_INFO(HEXAGON.S4_extractp,DI_ftype_DISISI,3)
-//
-def int_hexagon_S4_extractp :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_S4_extractp">;
-//
-// BUILTIN_INFO(HEXAGON.S2_extractup,DI_ftype_DISISI,3)
-//
-def int_hexagon_S2_extractup :
-Hexagon_di_disisi_Intrinsic<"HEXAGON_S2_extractup">;
-//
-// BUILTIN_INFO(HEXAGON.S2_insert_rp,SI_ftype_SISIDI,3)
-//
-def int_hexagon_S2_insert_rp :
-Hexagon_si_sisidi_Intrinsic<"HEXAGON_S2_insert_rp">;
-//
-// BUILTIN_INFO(HEXAGON.S4_extract_rp,SI_ftype_SIDI,2)
-//
-def int_hexagon_S4_extract_rp :
-Hexagon_si_sidi_Intrinsic<"HEXAGON_S4_extract_rp">;
-//
-// BUILTIN_INFO(HEXAGON.S2_extractu_rp,SI_ftype_SIDI,2)
-//
-def int_hexagon_S2_extractu_rp :
-Hexagon_si_sidi_Intrinsic<"HEXAGON_S2_extractu_rp">;
-//
-// BUILTIN_INFO(HEXAGON.S2_insertp_rp,DI_ftype_DIDIDI,3)
-//
-def int_hexagon_S2_insertp_rp :
-Hexagon_di_dididi_Intrinsic<"HEXAGON_S2_insertp_rp">;
-//
-// BUILTIN_INFO(HEXAGON.S4_extractp_rp,DI_ftype_DIDI,2)
-//
-def int_hexagon_S4_extractp_rp :
-Hexagon_di_didi_Intrinsic<"HEXAGON_S4_extractp_rp">;
-//
-// BUILTIN_INFO(HEXAGON.S2_extractup_rp,DI_ftype_DIDI,2)
-//
-def int_hexagon_S2_extractup_rp :
-Hexagon_di_didi_Intrinsic<"HEXAGON_S2_extractup_rp">;
-//
-// BUILTIN_INFO(HEXAGON.S2_tstbit_i,QI_ftype_SISI,2)
-//
-def int_hexagon_S2_tstbit_i :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_tstbit_i">;
-//
-// BUILTIN_INFO(HEXAGON.S4_ntstbit_i,QI_ftype_SISI,2)
-//
-def int_hexagon_S4_ntstbit_i :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S4_ntstbit_i">;
-//
-// BUILTIN_INFO(HEXAGON.S2_setbit_i,SI_ftype_SISI,2)
-//
-def int_hexagon_S2_setbit_i :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_setbit_i">;
-//
-// BUILTIN_INFO(HEXAGON.S2_togglebit_i,SI_ftype_SISI,2)
-//
-def int_hexagon_S2_togglebit_i :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_togglebit_i">;
-//
-// BUILTIN_INFO(HEXAGON.S2_clrbit_i,SI_ftype_SISI,2)
-//
-def int_hexagon_S2_clrbit_i :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_clrbit_i">;
-//
-// BUILTIN_INFO(HEXAGON.S2_tstbit_r,QI_ftype_SISI,2)
-//
-def int_hexagon_S2_tstbit_r :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_tstbit_r">;
-//
-// BUILTIN_INFO(HEXAGON.S4_ntstbit_r,QI_ftype_SISI,2)
-//
-def int_hexagon_S4_ntstbit_r :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S4_ntstbit_r">;
-//
-// BUILTIN_INFO(HEXAGON.S2_setbit_r,SI_ftype_SISI,2)
-//
-def int_hexagon_S2_setbit_r :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_setbit_r">;
-//
-// BUILTIN_INFO(HEXAGON.S2_togglebit_r,SI_ftype_SISI,2)
-//
-def int_hexagon_S2_togglebit_r :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_togglebit_r">;
-//
-// BUILTIN_INFO(HEXAGON.S2_clrbit_r,SI_ftype_SISI,2)
-//
-def int_hexagon_S2_clrbit_r :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S2_clrbit_r">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_i_vh,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_asr_i_vh :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_asr_i_vh">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_i_vh,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_lsr_i_vh :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_lsr_i_vh">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_i_vh,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_asl_i_vh :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_asl_i_vh">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_r_vh,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_asr_r_vh :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_asr_r_vh">;
-//
-// BUILTIN_INFO(HEXAGON.S5_asrhub_rnd_sat_goodsyntax,SI_ftype_DISI,2)
-//
-def int_hexagon_S5_asrhub_rnd_sat_goodsyntax :
-Hexagon_si_disi_Intrinsic<"HEXAGON_S5_asrhub_rnd_sat_goodsyntax">;
-//
-// BUILTIN_INFO(HEXAGON.S5_asrhub_sat,SI_ftype_DISI,2)
-//
-def int_hexagon_S5_asrhub_sat :
-Hexagon_si_disi_Intrinsic<"HEXAGON_S5_asrhub_sat">;
-//
-// BUILTIN_INFO(HEXAGON.S5_vasrhrnd_goodsyntax,DI_ftype_DISI,2)
-//
-def int_hexagon_S5_vasrhrnd_goodsyntax :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S5_vasrhrnd_goodsyntax">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_r_vh,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_asl_r_vh :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_asl_r_vh">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_r_vh,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_lsr_r_vh :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_lsr_r_vh">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsl_r_vh,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_lsl_r_vh :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_lsl_r_vh">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_i_vw,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_asr_i_vw :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_asr_i_vw">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_i_svw_trun,SI_ftype_DISI,2)
-//
-def int_hexagon_S2_asr_i_svw_trun :
-Hexagon_si_disi_Intrinsic<"HEXAGON_S2_asr_i_svw_trun">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_r_svw_trun,SI_ftype_DISI,2)
-//
-def int_hexagon_S2_asr_r_svw_trun :
-Hexagon_si_disi_Intrinsic<"HEXAGON_S2_asr_r_svw_trun">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_i_vw,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_lsr_i_vw :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_lsr_i_vw">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_i_vw,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_asl_i_vw :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_asl_i_vw">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asr_r_vw,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_asr_r_vw :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_asr_r_vw">;
-//
-// BUILTIN_INFO(HEXAGON.S2_asl_r_vw,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_asl_r_vw :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_asl_r_vw">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsr_r_vw,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_lsr_r_vw :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_lsr_r_vw">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lsl_r_vw,DI_ftype_DISI,2)
-//
-def int_hexagon_S2_lsl_r_vw :
-Hexagon_di_disi_Intrinsic<"HEXAGON_S2_lsl_r_vw">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vrndpackwh,SI_ftype_DI,1)
-//
-def int_hexagon_S2_vrndpackwh :
-Hexagon_si_di_Intrinsic<"HEXAGON_S2_vrndpackwh">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vrndpackwhs,SI_ftype_DI,1)
-//
-def int_hexagon_S2_vrndpackwhs :
-Hexagon_si_di_Intrinsic<"HEXAGON_S2_vrndpackwhs">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vsxtbh,DI_ftype_SI,1)
-//
-def int_hexagon_S2_vsxtbh :
-Hexagon_di_si_Intrinsic<"HEXAGON_S2_vsxtbh">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vzxtbh,DI_ftype_SI,1)
-//
-def int_hexagon_S2_vzxtbh :
-Hexagon_di_si_Intrinsic<"HEXAGON_S2_vzxtbh">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vsathub,SI_ftype_DI,1)
-//
-def int_hexagon_S2_vsathub :
-Hexagon_si_di_Intrinsic<"HEXAGON_S2_vsathub">;
-//
-// BUILTIN_INFO(HEXAGON.S2_svsathub,SI_ftype_SI,1)
-//
-def int_hexagon_S2_svsathub :
-Hexagon_si_si_Intrinsic<"HEXAGON_S2_svsathub">;
-//
-// BUILTIN_INFO(HEXAGON.S2_svsathb,SI_ftype_SI,1)
-//
-def int_hexagon_S2_svsathb :
-Hexagon_si_si_Intrinsic<"HEXAGON_S2_svsathb">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vsathb,SI_ftype_DI,1)
-//
-def int_hexagon_S2_vsathb :
-Hexagon_si_di_Intrinsic<"HEXAGON_S2_vsathb">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vtrunohb,SI_ftype_DI,1)
-//
-def int_hexagon_S2_vtrunohb :
-Hexagon_si_di_Intrinsic<"HEXAGON_S2_vtrunohb">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vtrunewh,DI_ftype_DIDI,2)
-//
-def int_hexagon_S2_vtrunewh :
-Hexagon_di_didi_Intrinsic<"HEXAGON_S2_vtrunewh">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vtrunowh,DI_ftype_DIDI,2)
-//
-def int_hexagon_S2_vtrunowh :
-Hexagon_di_didi_Intrinsic<"HEXAGON_S2_vtrunowh">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vtrunehb,SI_ftype_DI,1)
-//
-def int_hexagon_S2_vtrunehb :
-Hexagon_si_di_Intrinsic<"HEXAGON_S2_vtrunehb">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vsxthw,DI_ftype_SI,1)
-//
-def int_hexagon_S2_vsxthw :
-Hexagon_di_si_Intrinsic<"HEXAGON_S2_vsxthw">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vzxthw,DI_ftype_SI,1)
-//
-def int_hexagon_S2_vzxthw :
-Hexagon_di_si_Intrinsic<"HEXAGON_S2_vzxthw">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vsatwh,SI_ftype_DI,1)
-//
-def int_hexagon_S2_vsatwh :
-Hexagon_si_di_Intrinsic<"HEXAGON_S2_vsatwh">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vsatwuh,SI_ftype_DI,1)
-//
-def int_hexagon_S2_vsatwuh :
-Hexagon_si_di_Intrinsic<"HEXAGON_S2_vsatwuh">;
-//
-// BUILTIN_INFO(HEXAGON.S2_packhl,DI_ftype_SISI,2)
-//
-def int_hexagon_S2_packhl :
-Hexagon_di_sisi_Intrinsic<"HEXAGON_S2_packhl">;
-//
-// BUILTIN_INFO(HEXAGON.A2_swiz,SI_ftype_SI,1)
-//
-def int_hexagon_A2_swiz :
-Hexagon_si_si_Intrinsic<"HEXAGON_A2_swiz">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vsathub_nopack,DI_ftype_DI,1)
-//
-def int_hexagon_S2_vsathub_nopack :
-Hexagon_di_di_Intrinsic<"HEXAGON_S2_vsathub_nopack">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vsathb_nopack,DI_ftype_DI,1)
-//
-def int_hexagon_S2_vsathb_nopack :
-Hexagon_di_di_Intrinsic<"HEXAGON_S2_vsathb_nopack">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vsatwh_nopack,DI_ftype_DI,1)
-//
-def int_hexagon_S2_vsatwh_nopack :
-Hexagon_di_di_Intrinsic<"HEXAGON_S2_vsatwh_nopack">;
-//
-// BUILTIN_INFO(HEXAGON.S2_vsatwuh_nopack,DI_ftype_DI,1)
-//
-def int_hexagon_S2_vsatwuh_nopack :
-Hexagon_di_di_Intrinsic<"HEXAGON_S2_vsatwuh_nopack">;
-//
-// BUILTIN_INFO(HEXAGON.S2_shuffob,DI_ftype_DIDI,2)
-//
-def int_hexagon_S2_shuffob :
-Hexagon_di_didi_Intrinsic<"HEXAGON_S2_shuffob">;
-//
-// BUILTIN_INFO(HEXAGON.S2_shuffeb,DI_ftype_DIDI,2)
-//
-def int_hexagon_S2_shuffeb :
-Hexagon_di_didi_Intrinsic<"HEXAGON_S2_shuffeb">;
-//
-// BUILTIN_INFO(HEXAGON.S2_shuffoh,DI_ftype_DIDI,2)
-//
-def int_hexagon_S2_shuffoh :
-Hexagon_di_didi_Intrinsic<"HEXAGON_S2_shuffoh">;
-//
-// BUILTIN_INFO(HEXAGON.S2_shuffeh,DI_ftype_DIDI,2)
-//
-def int_hexagon_S2_shuffeh :
-Hexagon_di_didi_Intrinsic<"HEXAGON_S2_shuffeh">;
-//
-// BUILTIN_INFO(HEXAGON.S5_popcountp,SI_ftype_DI,1)
-//
-def int_hexagon_S5_popcountp :
-Hexagon_si_di_Intrinsic<"HEXAGON_S5_popcountp">;
-//
-// BUILTIN_INFO(HEXAGON.S4_parity,SI_ftype_SISI,2)
-//
-def int_hexagon_S4_parity :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S4_parity">;
-//
-// BUILTIN_INFO(HEXAGON.S2_parityp,SI_ftype_DIDI,2)
-//
-def int_hexagon_S2_parityp :
-Hexagon_si_didi_Intrinsic<"HEXAGON_S2_parityp">;
-//
-// BUILTIN_INFO(HEXAGON.S2_lfsp,DI_ftype_DIDI,2)
-//
-def int_hexagon_S2_lfsp :
-Hexagon_di_didi_Intrinsic<"HEXAGON_S2_lfsp">;
-//
-// BUILTIN_INFO(HEXAGON.S2_clbnorm,SI_ftype_SI,1)
-//
-def int_hexagon_S2_clbnorm :
-Hexagon_si_si_Intrinsic<"HEXAGON_S2_clbnorm">;
-//
-// BUILTIN_INFO(HEXAGON.S4_clbaddi,SI_ftype_SISI,2)
-//
-def int_hexagon_S4_clbaddi :
-Hexagon_si_sisi_Intrinsic<"HEXAGON_S4_clbaddi">;
-//
-// BUILTIN_INFO(HEXAGON.S4_clbpnorm,SI_ftype_DI,1)
-//
-def int_hexagon_S4_clbpnorm :
-Hexagon_si_di_Intrinsic<"HEXAGON_S4_clbpnorm">;
-//
-// BUILTIN_INFO(HEXAGON.S4_clbpaddi,SI_ftype_DISI,2)
-//
-def int_hexagon_S4_clbpaddi :
-Hexagon_si_disi_Intrinsic<"HEXAGON_S4_clbpaddi">;
-//
-// BUILTIN_INFO(HEXAGON.S2_clb,SI_ftype_SI,1)
-//
-def int_hexagon_S2_clb :
-Hexagon_si_si_Intrinsic<"HEXAGON_S2_clb">;
-//
-// BUILTIN_INFO(HEXAGON.S2_cl0,SI_ftype_SI,1)
-//
-def int_hexagon_S2_cl0 :
-Hexagon_si_si_Intrinsic<"HEXAGON_S2_cl0">;
-//
-// BUILTIN_INFO(HEXAGON.S2_cl1,SI_ftype_SI,1)
-//
-def int_hexagon_S2_cl1 :
-Hexagon_si_si_Intrinsic<"HEXAGON_S2_cl1">;
-//
-// BUILTIN_INFO(HEXAGON.S2_clbp,SI_ftype_DI,1)
-//
-def int_hexagon_S2_clbp :
-Hexagon_si_di_Intrinsic<"HEXAGON_S2_clbp">;
-//
-// BUILTIN_INFO(HEXAGON.S2_cl0p,SI_ftype_DI,1)
-//
-def int_hexagon_S2_cl0p :
-Hexagon_si_di_Intrinsic<"HEXAGON_S2_cl0p">;
-//
-// BUILTIN_INFO(HEXAGON.S2_cl1p,SI_ftype_DI,1)
-//
-def int_hexagon_S2_cl1p :
-Hexagon_si_di_Intrinsic<"HEXAGON_S2_cl1p">;
-//
-// BUILTIN_INFO(HEXAGON.S2_brev,SI_ftype_SI,1)
-//
-def int_hexagon_S2_brev :
-Hexagon_si_si_Intrinsic<"HEXAGON_S2_brev">;
-//
-// BUILTIN_INFO(HEXAGON.S2_brevp,DI_ftype_DI,1)
-//
-def int_hexagon_S2_brevp :
-Hexagon_di_di_Intrinsic<"HEXAGON_S2_brevp">;
-//
-// BUILTIN_INFO(HEXAGON.S2_ct0,SI_ftype_SI,1)
-//
-def int_hexagon_S2_ct0 :
-Hexagon_si_si_Intrinsic<"HEXAGON_S2_ct0">;
-//
-// BUILTIN_INFO(HEXAGON.S2_ct1,SI_ftype_SI,1)
-//
-def int_hexagon_S2_ct1 :
-Hexagon_si_si_Intrinsic<"HEXAGON_S2_ct1">;
-//
-// BUILTIN_INFO(HEXAGON.S2_ct0p,SI_ftype_DI,1)
-//
-def int_hexagon_S2_ct0p :
-Hexagon_si_di_Intrinsic<"HEXAGON_S2_ct0p">;
-//
-// BUILTIN_INFO(HEXAGON.S2_ct1p,SI_ftype_DI,1)
-//
-def int_hexagon_S2_ct1p :
-Hexagon_si_di_Intrinsic<"HEXAGON_S2_ct1p">;
-//
-// BUILTIN_INFO(HEXAGON.S2_interleave,DI_ftype_DI,1)
-//
-def int_hexagon_S2_interleave :
-Hexagon_di_di_Intrinsic<"HEXAGON_S2_interleave">;
-//
-// BUILTIN_INFO(HEXAGON.S2_deinterleave,DI_ftype_DI,1)
-//
-def int_hexagon_S2_deinterleave :
-Hexagon_di_di_Intrinsic<"HEXAGON_S2_deinterleave">;
-
//
// BUILTIN_INFO(HEXAGON.dcfetch_A,v_ftype_DI*,1)
//
@@ -4934,4318 +159,13 @@
Hexagon_Intrinsic<"HEXAGON_S4_stored_locked", [llvm_i32_ty],
[llvm_ptr64_ty, llvm_i64_ty], [IntrArgMemOnly, NoCapture<0>]>;
-// V60
+def int_hexagon_vmemcpy : Hexagon_Intrinsic<"hexagon_vmemcpy",
+ [], [llvm_ptr_ty, llvm_ptr_ty, llvm_i32_ty],
+ [IntrArgMemOnly, NoCapture<0>, NoCapture<1>, WriteOnly<0>, ReadOnly<1>]>;
-class Hexagon_v2048v2048_Intrinsic_T<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v64i32_ty],
- [IntrNoMem]>;
-
-// tag : V6_hi_W
-// tag : V6_lo_W
-class Hexagon_v512v1024_Intrinsic_T<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v32i32_ty],
- [IntrNoMem]>;
-
-// tag : V6_hi_W_128B
-// tag : V6_lo_W_128B
-class Hexagon_v1024v2048_Intrinsic_T<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v64i32_ty],
- [IntrNoMem]>;
-
-class Hexagon_v1024v1024_Intrinsic_T<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty],
- [IntrNoMem]>;
-
-// BUILTIN_INFO(HEXAGON.V6_hi_W,VI_ftype_VI,1)
-// tag : V6_hi
-def int_hexagon_V6_hi :
-Hexagon_v512v1024_Intrinsic_T<"HEXAGON_V6_hi">;
-
-// BUILTIN_INFO(HEXAGON.V6_lo_W,VI_ftype_VI,1)
-// tag : V6_lo
-def int_hexagon_V6_lo :
-Hexagon_v512v1024_Intrinsic_T<"HEXAGON_V6_lo">;
-
-// BUILTIN_INFO(HEXAGON.V6_hi_W,VI_ftype_VI,1)
-// tag : V6_hi_128B
-def int_hexagon_V6_hi_128B :
-Hexagon_v1024v2048_Intrinsic_T<"HEXAGON_V6_hi_128B">;
-
-// BUILTIN_INFO(HEXAGON.V6_lo_W,VI_ftype_VI,1)
-// tag : V6_lo_128B
-def int_hexagon_V6_lo_128B :
-Hexagon_v1024v2048_Intrinsic_T<"HEXAGON_V6_lo_128B">;
-
-// BUILTIN_INFO(HEXAGON.V6_vassignp,VI_ftype_VI,1)
-// tag : V6_vassignp
-def int_hexagon_V6_vassignp :
-Hexagon_v1024v1024_Intrinsic_T<"HEXAGON_V6_vassignp">;
-
-// BUILTIN_INFO(HEXAGON.V6_vassignp,VI_ftype_VI,1)
-// tag : V6_vassignp_128B
-def int_hexagon_V6_vassignp_128B :
-Hexagon_v2048v2048_Intrinsic_T<"HEXAGON_V6_vassignp_128B">;
-
-
-//
-// Hexagon_iii_Intrinsic<string GCCIntSuffix>
-// tag : S6_rol_i_r
-class Hexagon_iii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_LLiLLii_Intrinsic<string GCCIntSuffix>
-// tag : S6_rol_i_p
-class Hexagon_LLiLLii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i64_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_iiii_Intrinsic<string GCCIntSuffix>
-// tag : S6_rol_i_r_acc
-class Hexagon_iiii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i32_ty,llvm_i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_LLiLLiLLii_Intrinsic<string GCCIntSuffix>
-// tag : S6_rol_i_p_acc
-class Hexagon_LLiLLiLLii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i64_ty,llvm_i64_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v512v512v512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_valignb
-class Hexagon_v512v512v512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v1024v1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_valignb_128B
-class Hexagon_v1024v1024v1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v512v512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vror
-class Hexagon_v512v512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vror_128B
-class Hexagon_v1024v1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v512_Intrinsic<string GCCIntSuffix>
-// tag : V6_vunpackub
-class Hexagon_v1024v512_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v16i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v2048v1024_Intrinsic<string GCCIntSuffix>
-// tag : V6_vunpackub_128B
-class Hexagon_v2048v1024_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v32i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v1024v512_Intrinsic<string GCCIntSuffix>
-// tag : V6_vunpackob
-class Hexagon_v1024v1024v512_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v16i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v2048v2048v1024_Intrinsic<string GCCIntSuffix>
-// tag : V6_vunpackob_128B
-class Hexagon_v2048v2048v1024_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v32i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v512v512v512_Intrinsic<string GCCIntSuffix>
-// tag : V6_vpackeb
-class Hexagon_v512v512v512_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v1024v1024_Intrinsic<string GCCIntSuffix>
-// tag : V6_vpackeb_128B
-class Hexagon_v1024v1024v1024_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v2048v2048i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vdmpybus_dv_128B
-class Hexagon_v2048v2048i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v2048v2048v2048i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vdmpybus_dv_acc_128B
-class Hexagon_v2048v2048v2048i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v64i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v512v512v512v512_Intrinsic<string GCCIntSuffix>
-// tag : V6_vdmpyhvsat_acc
-class Hexagon_v512v512v512v512_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty,llvm_v16i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v1024v1024v1024_Intrinsic<string GCCIntSuffix>
-// tag : V6_vdmpyhvsat_acc_128B
-class Hexagon_v1024v1024v1024v1024_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_v32i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v512v1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vdmpyhisat
-class Hexagon_v512v1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v2048i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vdmpyhisat_128B
-class Hexagon_v1024v2048i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v64i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v512v512v1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vdmpyhisat_acc
-class Hexagon_v512v512v1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v1024v2048i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vdmpyhisat_acc_128B
-class Hexagon_v1024v1024v2048i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v64i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v1024ii_Intrinsic<string GCCIntSuffix>
-// tag : V6_vrmpyubi
-class Hexagon_v1024v1024ii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v2048v2048ii_Intrinsic<string GCCIntSuffix>
-// tag : V6_vrmpyubi_128B
-class Hexagon_v2048v2048ii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v1024v1024ii_Intrinsic<string GCCIntSuffix>
-// tag : V6_vrmpyubi_acc
-class Hexagon_v1024v1024v1024ii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v2048v2048v2048ii_Intrinsic<string GCCIntSuffix>
-// tag : V6_vrmpyubi_acc_128B
-class Hexagon_v2048v2048v2048ii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v64i32_ty,llvm_i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v2048v2048v2048_Intrinsic<string GCCIntSuffix>
-// tag : V6_vaddb_dv_128B
-class Hexagon_v2048v2048v2048_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v64i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v512v512_Intrinsic<string GCCIntSuffix>
-// tag : V6_vaddubh
-class Hexagon_v1024v512v512_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v2048v1024v1024_Intrinsic<string GCCIntSuffix>
-// tag : V6_vaddubh_128B
-class Hexagon_v2048v1024v1024_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v512_Intrinsic<string GCCIntSuffix>
-// tag : V6_vd0
-class Hexagon_v512_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024_Intrinsic<string GCCIntSuffix>
-// tag : V6_vd0_128B
-class Hexagon_v1024_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [],
- [IntrNoMem]>;
-
-//
-// Hexagon_v512v64iv512v512_Intrinsic<string GCCIntSuffix>
-// tag : V6_vaddbq
-class Hexagon_v512v64iv512v512_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v512i1_ty,llvm_v16i32_ty,llvm_v16i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v128iv1024v1024_Intrinsic<string GCCIntSuffix>
-// tag : V6_vaddbq_128B
-class Hexagon_v1024v128iv1024v1024_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v1024i1_ty,llvm_v32i32_ty,llvm_v32i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v512v512_Intrinsic<string GCCIntSuffix>
-// tag : V6_vabsh
-class Hexagon_v512v512_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v16i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v1024_Intrinsic<string GCCIntSuffix>
-// tag : V6_vabsh_128B
-class Hexagon_v1024v1024_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v1024v512v512_Intrinsic<string GCCIntSuffix>
-// tag : V6_vmpybv_acc
-class Hexagon_v1024v1024v512v512_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v16i32_ty,llvm_v16i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v2048v2048v1024v1024_Intrinsic<string GCCIntSuffix>
-// tag : V6_vmpybv_acc_128B
-class Hexagon_v2048v2048v1024v1024_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v32i32_ty,llvm_v32i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vmpyub
-class Hexagon_v1024v512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v16i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v2048v1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vmpyub_128B
-class Hexagon_v2048v1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v1024v512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vmpyub_acc
-class Hexagon_v1024v1024v512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v16i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v2048v2048v1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vmpyub_acc_128B
-class Hexagon_v2048v2048v1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v512v64ii_Intrinsic<string GCCIntSuffix>
-// tag : V6_vandqrt
-class Hexagon_v512v64ii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v512i1_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v128ii_Intrinsic<string GCCIntSuffix>
-// tag : V6_vandqrt_128B
-class Hexagon_v1024v128ii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v1024i1_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v512v512v64ii_Intrinsic<string GCCIntSuffix>
-// tag : V6_vandqrt_acc
-class Hexagon_v512v512v64ii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v512i1_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v1024v128ii_Intrinsic<string GCCIntSuffix>
-// tag : V6_vandqrt_acc_128B
-class Hexagon_v1024v1024v128ii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v1024i1_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v64iv512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vandvrt
-class Hexagon_v64iv512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v512i1_ty], [llvm_v16i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v128iv1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vandvrt_128B
-class Hexagon_v128iv1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v1024i1_ty], [llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v64iv64iv512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vandvrt_acc
-class Hexagon_v64iv64iv512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v512i1_ty], [llvm_v512i1_ty,llvm_v16i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v128iv128iv1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vandvrt_acc_128B
-class Hexagon_v128iv128iv1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v1024i1_ty], [llvm_v1024i1_ty,llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v64iv512v512_Intrinsic<string GCCIntSuffix>
-// tag : V6_vgtw
-class Hexagon_v64iv512v512_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v512i1_ty], [llvm_v16i32_ty,llvm_v16i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v128iv1024v1024_Intrinsic<string GCCIntSuffix>
-// tag : V6_vgtw_128B
-class Hexagon_v128iv1024v1024_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v1024i1_ty], [llvm_v32i32_ty,llvm_v32i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v64iv64iv512v512_Intrinsic<string GCCIntSuffix>
-// tag : V6_vgtw_and
-class Hexagon_v64iv64iv512v512_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v512i1_ty], [llvm_v512i1_ty,llvm_v16i32_ty,llvm_v16i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v128iv128iv1024v1024_Intrinsic<string GCCIntSuffix>
-// tag : V6_vgtw_and_128B
-class Hexagon_v128iv128iv1024v1024_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v1024i1_ty], [llvm_v1024i1_ty,llvm_v32i32_ty,llvm_v32i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v64iv64iv64i_Intrinsic<string GCCIntSuffix>
-// tag : V6_pred_or
-class Hexagon_v64iv64iv64i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v512i1_ty], [llvm_v512i1_ty,llvm_v512i1_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v128iv128iv128i_Intrinsic<string GCCIntSuffix>
-// tag : V6_pred_or_128B
-class Hexagon_v128iv128iv128i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v1024i1_ty], [llvm_v1024i1_ty,llvm_v1024i1_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v64iv64i_Intrinsic<string GCCIntSuffix>
-// tag : V6_pred_not
-class Hexagon_v64iv64i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v512i1_ty], [llvm_v512i1_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v128iv128i_Intrinsic<string GCCIntSuffix>
-// tag : V6_pred_not_128B
-class Hexagon_v128iv128i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v1024i1_ty], [llvm_v1024i1_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v64ii_Intrinsic<string GCCIntSuffix>
-// tag : V6_pred_scalar2
-class Hexagon_v64ii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v512i1_ty], [llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v128ii_Intrinsic<string GCCIntSuffix>
-// tag : V6_pred_scalar2_128B
-class Hexagon_v128ii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v1024i1_ty], [llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v64iv512v512_Intrinsic<string GCCIntSuffix>
-// tag : V6_vswap
-class Hexagon_v1024v64iv512v512_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v512i1_ty,llvm_v16i32_ty,llvm_v16i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v2048v128iv1024v1024_Intrinsic<string GCCIntSuffix>
-// tag : V6_vswap_128B
-class Hexagon_v2048v128iv1024v1024_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v1024i1_ty,llvm_v32i32_ty,llvm_v32i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v512v512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vshuffvdd
-class Hexagon_v1024v512v512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v2048v1024v1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vshuffvdd_128B
-class Hexagon_v2048v1024v1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-
-//
-// Hexagon_iv512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_extractw
-class Hexagon_iv512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_v16i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_iv1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_extractw_128B
-class Hexagon_iv1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_lvsplatw
-class Hexagon_v512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_lvsplatw_128B
-class Hexagon_v1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v512v512v512v512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vlutvvb_oracc
-class Hexagon_v512v512v512v512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty,llvm_v16i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v1024v1024v1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vlutvvb_oracc_128B
-class Hexagon_v1024v1024v1024v1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v1024v1024v512v512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vlutvwh_oracc
-class Hexagon_v1024v1024v512v512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v16i32_ty,llvm_v16i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_v2048v2048v1024v1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vlutvwh_oracc_128B
-class Hexagon_v2048v2048v1024v1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v32i32_ty,llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_vv64ivmemv512_Intrinsic<string GCCIntSuffix>
-// tag: V6_vS32b_qpred_ai
-class Hexagon_vv64ivmemv512_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [], [llvm_v512i1_ty,llvm_ptr_ty,llvm_v16i32_ty],
- [IntrArgMemOnly]>;
-
-//
-// Hexagon_vv128ivmemv1024_Intrinsic<string GCCIntSuffix>
-// tag: V6_vS32b_qpred_ai_128B
-class Hexagon_vv128ivmemv1024_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [], [llvm_v1024i1_ty,llvm_ptr_ty,llvm_v32i32_ty],
- [IntrArgMemOnly]>;
-
-//
-// BUILTIN_INFO(HEXAGON.S6_rol_i_r,SI_ftype_SISI,2)
-// tag : S6_rol_i_r
-def int_hexagon_S6_rol_i_r :
-Hexagon_iii_Intrinsic<"HEXAGON_S6_rol_i_r">;
-
-//
-// BUILTIN_INFO(HEXAGON.S6_rol_i_p,DI_ftype_DISI,2)
-// tag : S6_rol_i_p
-def int_hexagon_S6_rol_i_p :
-Hexagon_LLiLLii_Intrinsic<"HEXAGON_S6_rol_i_p">;
-
-//
-// BUILTIN_INFO(HEXAGON.S6_rol_i_r_acc,SI_ftype_SISISI,3)
-// tag : S6_rol_i_r_acc
-def int_hexagon_S6_rol_i_r_acc :
-Hexagon_iiii_Intrinsic<"HEXAGON_S6_rol_i_r_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.S6_rol_i_p_acc,DI_ftype_DIDISI,3)
-// tag : S6_rol_i_p_acc
-def int_hexagon_S6_rol_i_p_acc :
-Hexagon_LLiLLiLLii_Intrinsic<"HEXAGON_S6_rol_i_p_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.S6_rol_i_r_nac,SI_ftype_SISISI,3)
-// tag : S6_rol_i_r_nac
-def int_hexagon_S6_rol_i_r_nac :
-Hexagon_iiii_Intrinsic<"HEXAGON_S6_rol_i_r_nac">;
-
-//
-// BUILTIN_INFO(HEXAGON.S6_rol_i_p_nac,DI_ftype_DIDISI,3)
-// tag : S6_rol_i_p_nac
-def int_hexagon_S6_rol_i_p_nac :
-Hexagon_LLiLLiLLii_Intrinsic<"HEXAGON_S6_rol_i_p_nac">;
-
-//
-// BUILTIN_INFO(HEXAGON.S6_rol_i_r_xacc,SI_ftype_SISISI,3)
-// tag : S6_rol_i_r_xacc
-def int_hexagon_S6_rol_i_r_xacc :
-Hexagon_iiii_Intrinsic<"HEXAGON_S6_rol_i_r_xacc">;
-
-//
-// BUILTIN_INFO(HEXAGON.S6_rol_i_p_xacc,DI_ftype_DIDISI,3)
-// tag : S6_rol_i_p_xacc
-def int_hexagon_S6_rol_i_p_xacc :
-Hexagon_LLiLLiLLii_Intrinsic<"HEXAGON_S6_rol_i_p_xacc">;
-
-//
-// BUILTIN_INFO(HEXAGON.S6_rol_i_r_and,SI_ftype_SISISI,3)
-// tag : S6_rol_i_r_and
-def int_hexagon_S6_rol_i_r_and :
-Hexagon_iiii_Intrinsic<"HEXAGON_S6_rol_i_r_and">;
-
-//
-// BUILTIN_INFO(HEXAGON.S6_rol_i_r_or,SI_ftype_SISISI,3)
-// tag : S6_rol_i_r_or
-def int_hexagon_S6_rol_i_r_or :
-Hexagon_iiii_Intrinsic<"HEXAGON_S6_rol_i_r_or">;
-
-//
-// BUILTIN_INFO(HEXAGON.S6_rol_i_p_and,DI_ftype_DIDISI,3)
-// tag : S6_rol_i_p_and
-def int_hexagon_S6_rol_i_p_and :
-Hexagon_LLiLLiLLii_Intrinsic<"HEXAGON_S6_rol_i_p_and">;
-
-//
-// BUILTIN_INFO(HEXAGON.S6_rol_i_p_or,DI_ftype_DIDISI,3)
-// tag : S6_rol_i_p_or
-def int_hexagon_S6_rol_i_p_or :
-Hexagon_LLiLLiLLii_Intrinsic<"HEXAGON_S6_rol_i_p_or">;
-
-//
-// BUILTIN_INFO(HEXAGON.S2_cabacencbin,DI_ftype_DIDIQI,3)
-// tag : S2_cabacencbin
-def int_hexagon_S2_cabacencbin :
-Hexagon_LLiLLiLLii_Intrinsic<"HEXAGON_S2_cabacencbin">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_valignb,VI_ftype_VIVISI,3)
-// tag : V6_valignb
-def int_hexagon_V6_valignb :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_valignb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_valignb_128B,VI_ftype_VIVISI,3)
-// tag : V6_valignb_128B
-def int_hexagon_V6_valignb_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_valignb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlalignb,VI_ftype_VIVISI,3)
-// tag : V6_vlalignb
-def int_hexagon_V6_vlalignb :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vlalignb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlalignb_128B,VI_ftype_VIVISI,3)
-// tag : V6_vlalignb_128B
-def int_hexagon_V6_vlalignb_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vlalignb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_valignbi,VI_ftype_VIVISI,3)
-// tag : V6_valignbi
-def int_hexagon_V6_valignbi :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_valignbi">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_valignbi_128B,VI_ftype_VIVISI,3)
-// tag : V6_valignbi_128B
-def int_hexagon_V6_valignbi_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_valignbi_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlalignbi,VI_ftype_VIVISI,3)
-// tag : V6_vlalignbi
-def int_hexagon_V6_vlalignbi :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vlalignbi">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlalignbi_128B,VI_ftype_VIVISI,3)
-// tag : V6_vlalignbi_128B
-def int_hexagon_V6_vlalignbi_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vlalignbi_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vror,VI_ftype_VISI,2)
-// tag : V6_vror
-def int_hexagon_V6_vror :
-Hexagon_v512v512i_Intrinsic<"HEXAGON_V6_vror">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vror_128B,VI_ftype_VISI,2)
-// tag : V6_vror_128B
-def int_hexagon_V6_vror_128B :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vror_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vunpackub,VD_ftype_VI,1)
-// tag : V6_vunpackub
-def int_hexagon_V6_vunpackub :
-Hexagon_v1024v512_Intrinsic<"HEXAGON_V6_vunpackub">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vunpackub_128B,VD_ftype_VI,1)
-// tag : V6_vunpackub_128B
-def int_hexagon_V6_vunpackub_128B :
-Hexagon_v2048v1024_Intrinsic<"HEXAGON_V6_vunpackub_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vunpackb,VD_ftype_VI,1)
-// tag : V6_vunpackb
-def int_hexagon_V6_vunpackb :
-Hexagon_v1024v512_Intrinsic<"HEXAGON_V6_vunpackb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vunpackb_128B,VD_ftype_VI,1)
-// tag : V6_vunpackb_128B
-def int_hexagon_V6_vunpackb_128B :
-Hexagon_v2048v1024_Intrinsic<"HEXAGON_V6_vunpackb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vunpackuh,VD_ftype_VI,1)
-// tag : V6_vunpackuh
-def int_hexagon_V6_vunpackuh :
-Hexagon_v1024v512_Intrinsic<"HEXAGON_V6_vunpackuh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vunpackuh_128B,VD_ftype_VI,1)
-// tag : V6_vunpackuh_128B
-def int_hexagon_V6_vunpackuh_128B :
-Hexagon_v2048v1024_Intrinsic<"HEXAGON_V6_vunpackuh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vunpackh,VD_ftype_VI,1)
-// tag : V6_vunpackh
-def int_hexagon_V6_vunpackh :
-Hexagon_v1024v512_Intrinsic<"HEXAGON_V6_vunpackh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vunpackh_128B,VD_ftype_VI,1)
-// tag : V6_vunpackh_128B
-def int_hexagon_V6_vunpackh_128B :
-Hexagon_v2048v1024_Intrinsic<"HEXAGON_V6_vunpackh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vunpackob,VD_ftype_VDVI,2)
-// tag : V6_vunpackob
-def int_hexagon_V6_vunpackob :
-Hexagon_v1024v1024v512_Intrinsic<"HEXAGON_V6_vunpackob">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vunpackob_128B,VD_ftype_VDVI,2)
-// tag : V6_vunpackob_128B
-def int_hexagon_V6_vunpackob_128B :
-Hexagon_v2048v2048v1024_Intrinsic<"HEXAGON_V6_vunpackob_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vunpackoh,VD_ftype_VDVI,2)
-// tag : V6_vunpackoh
-def int_hexagon_V6_vunpackoh :
-Hexagon_v1024v1024v512_Intrinsic<"HEXAGON_V6_vunpackoh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vunpackoh_128B,VD_ftype_VDVI,2)
-// tag : V6_vunpackoh_128B
-def int_hexagon_V6_vunpackoh_128B :
-Hexagon_v2048v2048v1024_Intrinsic<"HEXAGON_V6_vunpackoh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vpackeb,VI_ftype_VIVI,2)
-// tag : V6_vpackeb
-def int_hexagon_V6_vpackeb :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vpackeb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vpackeb_128B,VI_ftype_VIVI,2)
-// tag : V6_vpackeb_128B
-def int_hexagon_V6_vpackeb_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vpackeb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vpackeh,VI_ftype_VIVI,2)
-// tag : V6_vpackeh
-def int_hexagon_V6_vpackeh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vpackeh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vpackeh_128B,VI_ftype_VIVI,2)
-// tag : V6_vpackeh_128B
-def int_hexagon_V6_vpackeh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vpackeh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vpackob,VI_ftype_VIVI,2)
-// tag : V6_vpackob
-def int_hexagon_V6_vpackob :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vpackob">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vpackob_128B,VI_ftype_VIVI,2)
-// tag : V6_vpackob_128B
-def int_hexagon_V6_vpackob_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vpackob_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vpackoh,VI_ftype_VIVI,2)
-// tag : V6_vpackoh
-def int_hexagon_V6_vpackoh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vpackoh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vpackoh_128B,VI_ftype_VIVI,2)
-// tag : V6_vpackoh_128B
-def int_hexagon_V6_vpackoh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vpackoh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vpackhub_sat,VI_ftype_VIVI,2)
-// tag : V6_vpackhub_sat
-def int_hexagon_V6_vpackhub_sat :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vpackhub_sat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vpackhub_sat_128B,VI_ftype_VIVI,2)
-// tag : V6_vpackhub_sat_128B
-def int_hexagon_V6_vpackhub_sat_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vpackhub_sat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vpackhb_sat,VI_ftype_VIVI,2)
-// tag : V6_vpackhb_sat
-def int_hexagon_V6_vpackhb_sat :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vpackhb_sat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vpackhb_sat_128B,VI_ftype_VIVI,2)
-// tag : V6_vpackhb_sat_128B
-def int_hexagon_V6_vpackhb_sat_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vpackhb_sat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vpackwuh_sat,VI_ftype_VIVI,2)
-// tag : V6_vpackwuh_sat
-def int_hexagon_V6_vpackwuh_sat :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vpackwuh_sat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vpackwuh_sat_128B,VI_ftype_VIVI,2)
-// tag : V6_vpackwuh_sat_128B
-def int_hexagon_V6_vpackwuh_sat_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vpackwuh_sat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vpackwh_sat,VI_ftype_VIVI,2)
-// tag : V6_vpackwh_sat
-def int_hexagon_V6_vpackwh_sat :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vpackwh_sat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vpackwh_sat_128B,VI_ftype_VIVI,2)
-// tag : V6_vpackwh_sat_128B
-def int_hexagon_V6_vpackwh_sat_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vpackwh_sat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vzb,VD_ftype_VI,1)
-// tag : V6_vzb
-def int_hexagon_V6_vzb :
-Hexagon_v1024v512_Intrinsic<"HEXAGON_V6_vzb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vzb_128B,VD_ftype_VI,1)
-// tag : V6_vzb_128B
-def int_hexagon_V6_vzb_128B :
-Hexagon_v2048v1024_Intrinsic<"HEXAGON_V6_vzb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsb,VD_ftype_VI,1)
-// tag : V6_vsb
-def int_hexagon_V6_vsb :
-Hexagon_v1024v512_Intrinsic<"HEXAGON_V6_vsb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsb_128B,VD_ftype_VI,1)
-// tag : V6_vsb_128B
-def int_hexagon_V6_vsb_128B :
-Hexagon_v2048v1024_Intrinsic<"HEXAGON_V6_vsb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vzh,VD_ftype_VI,1)
-// tag : V6_vzh
-def int_hexagon_V6_vzh :
-Hexagon_v1024v512_Intrinsic<"HEXAGON_V6_vzh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vzh_128B,VD_ftype_VI,1)
-// tag : V6_vzh_128B
-def int_hexagon_V6_vzh_128B :
-Hexagon_v2048v1024_Intrinsic<"HEXAGON_V6_vzh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsh,VD_ftype_VI,1)
-// tag : V6_vsh
-def int_hexagon_V6_vsh :
-Hexagon_v1024v512_Intrinsic<"HEXAGON_V6_vsh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsh_128B,VD_ftype_VI,1)
-// tag : V6_vsh_128B
-def int_hexagon_V6_vsh_128B :
-Hexagon_v2048v1024_Intrinsic<"HEXAGON_V6_vsh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpybus,VI_ftype_VISI,2)
-// tag : V6_vdmpybus
-def int_hexagon_V6_vdmpybus :
-Hexagon_v512v512i_Intrinsic<"HEXAGON_V6_vdmpybus">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpybus_128B,VI_ftype_VISI,2)
-// tag : V6_vdmpybus_128B
-def int_hexagon_V6_vdmpybus_128B :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vdmpybus_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpybus_acc,VI_ftype_VIVISI,3)
-// tag : V6_vdmpybus_acc
-def int_hexagon_V6_vdmpybus_acc :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vdmpybus_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpybus_acc_128B,VI_ftype_VIVISI,3)
-// tag : V6_vdmpybus_acc_128B
-def int_hexagon_V6_vdmpybus_acc_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vdmpybus_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpybus_dv,VD_ftype_VDSI,2)
-// tag : V6_vdmpybus_dv
-def int_hexagon_V6_vdmpybus_dv :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vdmpybus_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpybus_dv_128B,VD_ftype_VDSI,2)
-// tag : V6_vdmpybus_dv_128B
-def int_hexagon_V6_vdmpybus_dv_128B :
-Hexagon_v2048v2048i_Intrinsic<"HEXAGON_V6_vdmpybus_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpybus_dv_acc,VD_ftype_VDVDSI,3)
-// tag : V6_vdmpybus_dv_acc
-def int_hexagon_V6_vdmpybus_dv_acc :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vdmpybus_dv_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpybus_dv_acc_128B,VD_ftype_VDVDSI,3)
-// tag : V6_vdmpybus_dv_acc_128B
-def int_hexagon_V6_vdmpybus_dv_acc_128B :
-Hexagon_v2048v2048v2048i_Intrinsic<"HEXAGON_V6_vdmpybus_dv_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhb,VI_ftype_VISI,2)
-// tag : V6_vdmpyhb
-def int_hexagon_V6_vdmpyhb :
-Hexagon_v512v512i_Intrinsic<"HEXAGON_V6_vdmpyhb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhb_128B,VI_ftype_VISI,2)
-// tag : V6_vdmpyhb_128B
-def int_hexagon_V6_vdmpyhb_128B :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vdmpyhb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhb_acc,VI_ftype_VIVISI,3)
-// tag : V6_vdmpyhb_acc
-def int_hexagon_V6_vdmpyhb_acc :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vdmpyhb_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhb_acc_128B,VI_ftype_VIVISI,3)
-// tag : V6_vdmpyhb_acc_128B
-def int_hexagon_V6_vdmpyhb_acc_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vdmpyhb_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhb_dv,VD_ftype_VDSI,2)
-// tag : V6_vdmpyhb_dv
-def int_hexagon_V6_vdmpyhb_dv :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vdmpyhb_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhb_dv_128B,VD_ftype_VDSI,2)
-// tag : V6_vdmpyhb_dv_128B
-def int_hexagon_V6_vdmpyhb_dv_128B :
-Hexagon_v2048v2048i_Intrinsic<"HEXAGON_V6_vdmpyhb_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhb_dv_acc,VD_ftype_VDVDSI,3)
-// tag : V6_vdmpyhb_dv_acc
-def int_hexagon_V6_vdmpyhb_dv_acc :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vdmpyhb_dv_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhb_dv_acc_128B,VD_ftype_VDVDSI,3)
-// tag : V6_vdmpyhb_dv_acc_128B
-def int_hexagon_V6_vdmpyhb_dv_acc_128B :
-Hexagon_v2048v2048v2048i_Intrinsic<"HEXAGON_V6_vdmpyhb_dv_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhvsat,VI_ftype_VIVI,2)
-// tag : V6_vdmpyhvsat
-def int_hexagon_V6_vdmpyhvsat :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vdmpyhvsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhvsat_128B,VI_ftype_VIVI,2)
-// tag : V6_vdmpyhvsat_128B
-def int_hexagon_V6_vdmpyhvsat_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vdmpyhvsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhvsat_acc,VI_ftype_VIVIVI,3)
-// tag : V6_vdmpyhvsat_acc
-def int_hexagon_V6_vdmpyhvsat_acc :
-Hexagon_v512v512v512v512_Intrinsic<"HEXAGON_V6_vdmpyhvsat_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhvsat_acc_128B,VI_ftype_VIVIVI,3)
-// tag : V6_vdmpyhvsat_acc_128B
-def int_hexagon_V6_vdmpyhvsat_acc_128B :
-Hexagon_v1024v1024v1024v1024_Intrinsic<"HEXAGON_V6_vdmpyhvsat_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhsat,VI_ftype_VISI,2)
-// tag : V6_vdmpyhsat
-def int_hexagon_V6_vdmpyhsat :
-Hexagon_v512v512i_Intrinsic<"HEXAGON_V6_vdmpyhsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhsat_128B,VI_ftype_VISI,2)
-// tag : V6_vdmpyhsat_128B
-def int_hexagon_V6_vdmpyhsat_128B :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vdmpyhsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhsat_acc,VI_ftype_VIVISI,3)
-// tag : V6_vdmpyhsat_acc
-def int_hexagon_V6_vdmpyhsat_acc :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vdmpyhsat_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhsat_acc_128B,VI_ftype_VIVISI,3)
-// tag : V6_vdmpyhsat_acc_128B
-def int_hexagon_V6_vdmpyhsat_acc_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vdmpyhsat_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhisat,VI_ftype_VDSI,2)
-// tag : V6_vdmpyhisat
-def int_hexagon_V6_vdmpyhisat :
-Hexagon_v512v1024i_Intrinsic<"HEXAGON_V6_vdmpyhisat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhisat_128B,VI_ftype_VDSI,2)
-// tag : V6_vdmpyhisat_128B
-def int_hexagon_V6_vdmpyhisat_128B :
-Hexagon_v1024v2048i_Intrinsic<"HEXAGON_V6_vdmpyhisat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhisat_acc,VI_ftype_VIVDSI,3)
-// tag : V6_vdmpyhisat_acc
-def int_hexagon_V6_vdmpyhisat_acc :
-Hexagon_v512v512v1024i_Intrinsic<"HEXAGON_V6_vdmpyhisat_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhisat_acc_128B,VI_ftype_VIVDSI,3)
-// tag : V6_vdmpyhisat_acc_128B
-def int_hexagon_V6_vdmpyhisat_acc_128B :
-Hexagon_v1024v1024v2048i_Intrinsic<"HEXAGON_V6_vdmpyhisat_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhsusat,VI_ftype_VISI,2)
-// tag : V6_vdmpyhsusat
-def int_hexagon_V6_vdmpyhsusat :
-Hexagon_v512v512i_Intrinsic<"HEXAGON_V6_vdmpyhsusat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhsusat_128B,VI_ftype_VISI,2)
-// tag : V6_vdmpyhsusat_128B
-def int_hexagon_V6_vdmpyhsusat_128B :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vdmpyhsusat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhsusat_acc,VI_ftype_VIVISI,3)
-// tag : V6_vdmpyhsusat_acc
-def int_hexagon_V6_vdmpyhsusat_acc :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vdmpyhsusat_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhsusat_acc_128B,VI_ftype_VIVISI,3)
-// tag : V6_vdmpyhsusat_acc_128B
-def int_hexagon_V6_vdmpyhsusat_acc_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vdmpyhsusat_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhsuisat,VI_ftype_VDSI,2)
-// tag : V6_vdmpyhsuisat
-def int_hexagon_V6_vdmpyhsuisat :
-Hexagon_v512v1024i_Intrinsic<"HEXAGON_V6_vdmpyhsuisat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhsuisat_128B,VI_ftype_VDSI,2)
-// tag : V6_vdmpyhsuisat_128B
-def int_hexagon_V6_vdmpyhsuisat_128B :
-Hexagon_v1024v2048i_Intrinsic<"HEXAGON_V6_vdmpyhsuisat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhsuisat_acc,VI_ftype_VIVDSI,3)
-// tag : V6_vdmpyhsuisat_acc
-def int_hexagon_V6_vdmpyhsuisat_acc :
-Hexagon_v512v512v1024i_Intrinsic<"HEXAGON_V6_vdmpyhsuisat_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdmpyhsuisat_acc_128B,VI_ftype_VIVDSI,3)
-// tag : V6_vdmpyhsuisat_acc_128B
-def int_hexagon_V6_vdmpyhsuisat_acc_128B :
-Hexagon_v1024v1024v2048i_Intrinsic<"HEXAGON_V6_vdmpyhsuisat_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vtmpyb,VD_ftype_VDSI,2)
-// tag : V6_vtmpyb
-def int_hexagon_V6_vtmpyb :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vtmpyb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vtmpyb_128B,VD_ftype_VDSI,2)
-// tag : V6_vtmpyb_128B
-def int_hexagon_V6_vtmpyb_128B :
-Hexagon_v2048v2048i_Intrinsic<"HEXAGON_V6_vtmpyb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vtmpyb_acc,VD_ftype_VDVDSI,3)
-// tag : V6_vtmpyb_acc
-def int_hexagon_V6_vtmpyb_acc :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vtmpyb_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vtmpyb_acc_128B,VD_ftype_VDVDSI,3)
-// tag : V6_vtmpyb_acc_128B
-def int_hexagon_V6_vtmpyb_acc_128B :
-Hexagon_v2048v2048v2048i_Intrinsic<"HEXAGON_V6_vtmpyb_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vtmpybus,VD_ftype_VDSI,2)
-// tag : V6_vtmpybus
-def int_hexagon_V6_vtmpybus :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vtmpybus">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vtmpybus_128B,VD_ftype_VDSI,2)
-// tag : V6_vtmpybus_128B
-def int_hexagon_V6_vtmpybus_128B :
-Hexagon_v2048v2048i_Intrinsic<"HEXAGON_V6_vtmpybus_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vtmpybus_acc,VD_ftype_VDVDSI,3)
-// tag : V6_vtmpybus_acc
-def int_hexagon_V6_vtmpybus_acc :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vtmpybus_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vtmpybus_acc_128B,VD_ftype_VDVDSI,3)
-// tag : V6_vtmpybus_acc_128B
-def int_hexagon_V6_vtmpybus_acc_128B :
-Hexagon_v2048v2048v2048i_Intrinsic<"HEXAGON_V6_vtmpybus_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vtmpyhb,VD_ftype_VDSI,2)
-// tag : V6_vtmpyhb
-def int_hexagon_V6_vtmpyhb :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vtmpyhb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vtmpyhb_128B,VD_ftype_VDSI,2)
-// tag : V6_vtmpyhb_128B
-def int_hexagon_V6_vtmpyhb_128B :
-Hexagon_v2048v2048i_Intrinsic<"HEXAGON_V6_vtmpyhb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vtmpyhb_acc,VD_ftype_VDVDSI,3)
-// tag : V6_vtmpyhb_acc
-def int_hexagon_V6_vtmpyhb_acc :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vtmpyhb_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vtmpyhb_acc_128B,VD_ftype_VDVDSI,3)
-// tag : V6_vtmpyhb_acc_128B
-def int_hexagon_V6_vtmpyhb_acc_128B :
-Hexagon_v2048v2048v2048i_Intrinsic<"HEXAGON_V6_vtmpyhb_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpyub,VI_ftype_VISI,2)
-// tag : V6_vrmpyub
-def int_hexagon_V6_vrmpyub :
-Hexagon_v512v512i_Intrinsic<"HEXAGON_V6_vrmpyub">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpyub_128B,VI_ftype_VISI,2)
-// tag : V6_vrmpyub_128B
-def int_hexagon_V6_vrmpyub_128B :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vrmpyub_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpyub_acc,VI_ftype_VIVISI,3)
-// tag : V6_vrmpyub_acc
-def int_hexagon_V6_vrmpyub_acc :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vrmpyub_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpyub_acc_128B,VI_ftype_VIVISI,3)
-// tag : V6_vrmpyub_acc_128B
-def int_hexagon_V6_vrmpyub_acc_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vrmpyub_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpyubv,VI_ftype_VIVI,2)
-// tag : V6_vrmpyubv
-def int_hexagon_V6_vrmpyubv :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vrmpyubv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpyubv_128B,VI_ftype_VIVI,2)
-// tag : V6_vrmpyubv_128B
-def int_hexagon_V6_vrmpyubv_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vrmpyubv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpyubv_acc,VI_ftype_VIVIVI,3)
-// tag : V6_vrmpyubv_acc
-def int_hexagon_V6_vrmpyubv_acc :
-Hexagon_v512v512v512v512_Intrinsic<"HEXAGON_V6_vrmpyubv_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpyubv_acc_128B,VI_ftype_VIVIVI,3)
-// tag : V6_vrmpyubv_acc_128B
-def int_hexagon_V6_vrmpyubv_acc_128B :
-Hexagon_v1024v1024v1024v1024_Intrinsic<"HEXAGON_V6_vrmpyubv_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybv,VI_ftype_VIVI,2)
-// tag : V6_vrmpybv
-def int_hexagon_V6_vrmpybv :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vrmpybv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybv_128B,VI_ftype_VIVI,2)
-// tag : V6_vrmpybv_128B
-def int_hexagon_V6_vrmpybv_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vrmpybv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybv_acc,VI_ftype_VIVIVI,3)
-// tag : V6_vrmpybv_acc
-def int_hexagon_V6_vrmpybv_acc :
-Hexagon_v512v512v512v512_Intrinsic<"HEXAGON_V6_vrmpybv_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybv_acc_128B,VI_ftype_VIVIVI,3)
-// tag : V6_vrmpybv_acc_128B
-def int_hexagon_V6_vrmpybv_acc_128B :
-Hexagon_v1024v1024v1024v1024_Intrinsic<"HEXAGON_V6_vrmpybv_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpyubi,VD_ftype_VDSISI,3)
-// tag : V6_vrmpyubi
-def int_hexagon_V6_vrmpyubi :
-Hexagon_v1024v1024ii_Intrinsic<"HEXAGON_V6_vrmpyubi">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpyubi_128B,VD_ftype_VDSISI,3)
-// tag : V6_vrmpyubi_128B
-def int_hexagon_V6_vrmpyubi_128B :
-Hexagon_v2048v2048ii_Intrinsic<"HEXAGON_V6_vrmpyubi_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpyubi_acc,VD_ftype_VDVDSISI,4)
-// tag : V6_vrmpyubi_acc
-def int_hexagon_V6_vrmpyubi_acc :
-Hexagon_v1024v1024v1024ii_Intrinsic<"HEXAGON_V6_vrmpyubi_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpyubi_acc_128B,VD_ftype_VDVDSISI,4)
-// tag : V6_vrmpyubi_acc_128B
-def int_hexagon_V6_vrmpyubi_acc_128B :
-Hexagon_v2048v2048v2048ii_Intrinsic<"HEXAGON_V6_vrmpyubi_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybus,VI_ftype_VISI,2)
-// tag : V6_vrmpybus
-def int_hexagon_V6_vrmpybus :
-Hexagon_v512v512i_Intrinsic<"HEXAGON_V6_vrmpybus">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybus_128B,VI_ftype_VISI,2)
-// tag : V6_vrmpybus_128B
-def int_hexagon_V6_vrmpybus_128B :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vrmpybus_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybus_acc,VI_ftype_VIVISI,3)
-// tag : V6_vrmpybus_acc
-def int_hexagon_V6_vrmpybus_acc :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vrmpybus_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybus_acc_128B,VI_ftype_VIVISI,3)
-// tag : V6_vrmpybus_acc_128B
-def int_hexagon_V6_vrmpybus_acc_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vrmpybus_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybusi,VD_ftype_VDSISI,3)
-// tag : V6_vrmpybusi
-def int_hexagon_V6_vrmpybusi :
-Hexagon_v1024v1024ii_Intrinsic<"HEXAGON_V6_vrmpybusi">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybusi_128B,VD_ftype_VDSISI,3)
-// tag : V6_vrmpybusi_128B
-def int_hexagon_V6_vrmpybusi_128B :
-Hexagon_v2048v2048ii_Intrinsic<"HEXAGON_V6_vrmpybusi_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybusi_acc,VD_ftype_VDVDSISI,4)
-// tag : V6_vrmpybusi_acc
-def int_hexagon_V6_vrmpybusi_acc :
-Hexagon_v1024v1024v1024ii_Intrinsic<"HEXAGON_V6_vrmpybusi_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybusi_acc_128B,VD_ftype_VDVDSISI,4)
-// tag : V6_vrmpybusi_acc_128B
-def int_hexagon_V6_vrmpybusi_acc_128B :
-Hexagon_v2048v2048v2048ii_Intrinsic<"HEXAGON_V6_vrmpybusi_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybusv,VI_ftype_VIVI,2)
-// tag : V6_vrmpybusv
-def int_hexagon_V6_vrmpybusv :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vrmpybusv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybusv_128B,VI_ftype_VIVI,2)
-// tag : V6_vrmpybusv_128B
-def int_hexagon_V6_vrmpybusv_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vrmpybusv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybusv_acc,VI_ftype_VIVIVI,3)
-// tag : V6_vrmpybusv_acc
-def int_hexagon_V6_vrmpybusv_acc :
-Hexagon_v512v512v512v512_Intrinsic<"HEXAGON_V6_vrmpybusv_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybusv_acc_128B,VI_ftype_VIVIVI,3)
-// tag : V6_vrmpybusv_acc_128B
-def int_hexagon_V6_vrmpybusv_acc_128B :
-Hexagon_v1024v1024v1024v1024_Intrinsic<"HEXAGON_V6_vrmpybusv_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdsaduh,VD_ftype_VDSI,2)
-// tag : V6_vdsaduh
-def int_hexagon_V6_vdsaduh :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vdsaduh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdsaduh_128B,VD_ftype_VDSI,2)
-// tag : V6_vdsaduh_128B
-def int_hexagon_V6_vdsaduh_128B :
-Hexagon_v2048v2048i_Intrinsic<"HEXAGON_V6_vdsaduh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdsaduh_acc,VD_ftype_VDVDSI,3)
-// tag : V6_vdsaduh_acc
-def int_hexagon_V6_vdsaduh_acc :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vdsaduh_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdsaduh_acc_128B,VD_ftype_VDVDSI,3)
-// tag : V6_vdsaduh_acc_128B
-def int_hexagon_V6_vdsaduh_acc_128B :
-Hexagon_v2048v2048v2048i_Intrinsic<"HEXAGON_V6_vdsaduh_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrsadubi,VD_ftype_VDSISI,3)
-// tag : V6_vrsadubi
-def int_hexagon_V6_vrsadubi :
-Hexagon_v1024v1024ii_Intrinsic<"HEXAGON_V6_vrsadubi">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrsadubi_128B,VD_ftype_VDSISI,3)
-// tag : V6_vrsadubi_128B
-def int_hexagon_V6_vrsadubi_128B :
-Hexagon_v2048v2048ii_Intrinsic<"HEXAGON_V6_vrsadubi_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrsadubi_acc,VD_ftype_VDVDSISI,4)
-// tag : V6_vrsadubi_acc
-def int_hexagon_V6_vrsadubi_acc :
-Hexagon_v1024v1024v1024ii_Intrinsic<"HEXAGON_V6_vrsadubi_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrsadubi_acc_128B,VD_ftype_VDVDSISI,4)
-// tag : V6_vrsadubi_acc_128B
-def int_hexagon_V6_vrsadubi_acc_128B :
-Hexagon_v2048v2048v2048ii_Intrinsic<"HEXAGON_V6_vrsadubi_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrw,VI_ftype_VISI,2)
-// tag : V6_vasrw
-def int_hexagon_V6_vasrw :
-Hexagon_v512v512i_Intrinsic<"HEXAGON_V6_vasrw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrw_128B,VI_ftype_VISI,2)
-// tag : V6_vasrw_128B
-def int_hexagon_V6_vasrw_128B :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vasrw_128B">;
-
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaslw,VI_ftype_VISI,2)
-// tag : V6_vaslw
-def int_hexagon_V6_vaslw :
-Hexagon_v512v512i_Intrinsic<"HEXAGON_V6_vaslw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaslw_128B,VI_ftype_VISI,2)
-// tag : V6_vaslw_128B
-def int_hexagon_V6_vaslw_128B :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vaslw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlsrw,VI_ftype_VISI,2)
-// tag : V6_vlsrw
-def int_hexagon_V6_vlsrw :
-Hexagon_v512v512i_Intrinsic<"HEXAGON_V6_vlsrw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlsrw_128B,VI_ftype_VISI,2)
-// tag : V6_vlsrw_128B
-def int_hexagon_V6_vlsrw_128B :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vlsrw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrwv,VI_ftype_VIVI,2)
-// tag : V6_vasrwv
-def int_hexagon_V6_vasrwv :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vasrwv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrwv_128B,VI_ftype_VIVI,2)
-// tag : V6_vasrwv_128B
-def int_hexagon_V6_vasrwv_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vasrwv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaslwv,VI_ftype_VIVI,2)
-// tag : V6_vaslwv
-def int_hexagon_V6_vaslwv :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vaslwv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaslwv_128B,VI_ftype_VIVI,2)
-// tag : V6_vaslwv_128B
-def int_hexagon_V6_vaslwv_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vaslwv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlsrwv,VI_ftype_VIVI,2)
-// tag : V6_vlsrwv
-def int_hexagon_V6_vlsrwv :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vlsrwv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlsrwv_128B,VI_ftype_VIVI,2)
-// tag : V6_vlsrwv_128B
-def int_hexagon_V6_vlsrwv_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vlsrwv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrh,VI_ftype_VISI,2)
-// tag : V6_vasrh
-def int_hexagon_V6_vasrh :
-Hexagon_v512v512i_Intrinsic<"HEXAGON_V6_vasrh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrh_128B,VI_ftype_VISI,2)
-// tag : V6_vasrh_128B
-def int_hexagon_V6_vasrh_128B :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vasrh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaslh,VI_ftype_VISI,2)
-// tag : V6_vaslh
-def int_hexagon_V6_vaslh :
-Hexagon_v512v512i_Intrinsic<"HEXAGON_V6_vaslh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaslh_128B,VI_ftype_VISI,2)
-// tag : V6_vaslh_128B
-def int_hexagon_V6_vaslh_128B :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vaslh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlsrh,VI_ftype_VISI,2)
-// tag : V6_vlsrh
-def int_hexagon_V6_vlsrh :
-Hexagon_v512v512i_Intrinsic<"HEXAGON_V6_vlsrh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlsrh_128B,VI_ftype_VISI,2)
-// tag : V6_vlsrh_128B
-def int_hexagon_V6_vlsrh_128B :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vlsrh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrhv,VI_ftype_VIVI,2)
-// tag : V6_vasrhv
-def int_hexagon_V6_vasrhv :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vasrhv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrhv_128B,VI_ftype_VIVI,2)
-// tag : V6_vasrhv_128B
-def int_hexagon_V6_vasrhv_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vasrhv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaslhv,VI_ftype_VIVI,2)
-// tag : V6_vaslhv
-def int_hexagon_V6_vaslhv :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vaslhv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaslhv_128B,VI_ftype_VIVI,2)
-// tag : V6_vaslhv_128B
-def int_hexagon_V6_vaslhv_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vaslhv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlsrhv,VI_ftype_VIVI,2)
-// tag : V6_vlsrhv
-def int_hexagon_V6_vlsrhv :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vlsrhv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlsrhv_128B,VI_ftype_VIVI,2)
-// tag : V6_vlsrhv_128B
-def int_hexagon_V6_vlsrhv_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vlsrhv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrwh,VI_ftype_VIVISI,3)
-// tag : V6_vasrwh
-def int_hexagon_V6_vasrwh :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vasrwh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrwh_128B,VI_ftype_VIVISI,3)
-// tag : V6_vasrwh_128B
-def int_hexagon_V6_vasrwh_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vasrwh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrwhsat,VI_ftype_VIVISI,3)
-// tag : V6_vasrwhsat
-def int_hexagon_V6_vasrwhsat :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vasrwhsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrwhsat_128B,VI_ftype_VIVISI,3)
-// tag : V6_vasrwhsat_128B
-def int_hexagon_V6_vasrwhsat_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vasrwhsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrwhrndsat,VI_ftype_VIVISI,3)
-// tag : V6_vasrwhrndsat
-def int_hexagon_V6_vasrwhrndsat :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vasrwhrndsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrwhrndsat_128B,VI_ftype_VIVISI,3)
-// tag : V6_vasrwhrndsat_128B
-def int_hexagon_V6_vasrwhrndsat_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vasrwhrndsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrwuhsat,VI_ftype_VIVISI,3)
-// tag : V6_vasrwuhsat
-def int_hexagon_V6_vasrwuhsat :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vasrwuhsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrwuhsat_128B,VI_ftype_VIVISI,3)
-// tag : V6_vasrwuhsat_128B
-def int_hexagon_V6_vasrwuhsat_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vasrwuhsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vroundwh,VI_ftype_VIVI,2)
-// tag : V6_vroundwh
-def int_hexagon_V6_vroundwh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vroundwh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vroundwh_128B,VI_ftype_VIVI,2)
-// tag : V6_vroundwh_128B
-def int_hexagon_V6_vroundwh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vroundwh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vroundwuh,VI_ftype_VIVI,2)
-// tag : V6_vroundwuh
-def int_hexagon_V6_vroundwuh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vroundwuh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vroundwuh_128B,VI_ftype_VIVI,2)
-// tag : V6_vroundwuh_128B
-def int_hexagon_V6_vroundwuh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vroundwuh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrhubsat,VI_ftype_VIVISI,3)
-// tag : V6_vasrhubsat
-def int_hexagon_V6_vasrhubsat :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vasrhubsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrhubsat_128B,VI_ftype_VIVISI,3)
-// tag : V6_vasrhubsat_128B
-def int_hexagon_V6_vasrhubsat_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vasrhubsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrhubrndsat,VI_ftype_VIVISI,3)
-// tag : V6_vasrhubrndsat
-def int_hexagon_V6_vasrhubrndsat :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vasrhubrndsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrhubrndsat_128B,VI_ftype_VIVISI,3)
-// tag : V6_vasrhubrndsat_128B
-def int_hexagon_V6_vasrhubrndsat_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vasrhubrndsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrhbrndsat,VI_ftype_VIVISI,3)
-// tag : V6_vasrhbrndsat
-def int_hexagon_V6_vasrhbrndsat :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vasrhbrndsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrhbrndsat_128B,VI_ftype_VIVISI,3)
-// tag : V6_vasrhbrndsat_128B
-def int_hexagon_V6_vasrhbrndsat_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vasrhbrndsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vroundhb,VI_ftype_VIVI,2)
-// tag : V6_vroundhb
-def int_hexagon_V6_vroundhb :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vroundhb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vroundhb_128B,VI_ftype_VIVI,2)
-// tag : V6_vroundhb_128B
-def int_hexagon_V6_vroundhb_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vroundhb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vroundhub,VI_ftype_VIVI,2)
-// tag : V6_vroundhub
-def int_hexagon_V6_vroundhub :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vroundhub">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vroundhub_128B,VI_ftype_VIVI,2)
-// tag : V6_vroundhub_128B
-def int_hexagon_V6_vroundhub_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vroundhub_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaslw_acc,VI_ftype_VIVISI,3)
-// tag : V6_vaslw_acc
-def int_hexagon_V6_vaslw_acc :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vaslw_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaslw_acc_128B,VI_ftype_VIVISI,3)
-// tag : V6_vaslw_acc_128B
-def int_hexagon_V6_vaslw_acc_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vaslw_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrw_acc,VI_ftype_VIVISI,3)
-// tag : V6_vasrw_acc
-def int_hexagon_V6_vasrw_acc :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vasrw_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrw_acc_128B,VI_ftype_VIVISI,3)
-// tag : V6_vasrw_acc_128B
-def int_hexagon_V6_vasrw_acc_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vasrw_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddb,VI_ftype_VIVI,2)
-// tag : V6_vaddb
-def int_hexagon_V6_vaddb :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vaddb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddb_128B,VI_ftype_VIVI,2)
-// tag : V6_vaddb_128B
-def int_hexagon_V6_vaddb_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vaddb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubb,VI_ftype_VIVI,2)
-// tag : V6_vsubb
-def int_hexagon_V6_vsubb :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vsubb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubb_128B,VI_ftype_VIVI,2)
-// tag : V6_vsubb_128B
-def int_hexagon_V6_vsubb_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsubb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddb_dv,VD_ftype_VDVD,2)
-// tag : V6_vaddb_dv
-def int_hexagon_V6_vaddb_dv :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vaddb_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddb_dv_128B,VD_ftype_VDVD,2)
-// tag : V6_vaddb_dv_128B
-def int_hexagon_V6_vaddb_dv_128B :
-Hexagon_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vaddb_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubb_dv,VD_ftype_VDVD,2)
-// tag : V6_vsubb_dv
-def int_hexagon_V6_vsubb_dv :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsubb_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubb_dv_128B,VD_ftype_VDVD,2)
-// tag : V6_vsubb_dv_128B
-def int_hexagon_V6_vsubb_dv_128B :
-Hexagon_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vsubb_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddh,VI_ftype_VIVI,2)
-// tag : V6_vaddh
-def int_hexagon_V6_vaddh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vaddh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddh_128B,VI_ftype_VIVI,2)
-// tag : V6_vaddh_128B
-def int_hexagon_V6_vaddh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vaddh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubh,VI_ftype_VIVI,2)
-// tag : V6_vsubh
-def int_hexagon_V6_vsubh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vsubh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubh_128B,VI_ftype_VIVI,2)
-// tag : V6_vsubh_128B
-def int_hexagon_V6_vsubh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsubh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddh_dv,VD_ftype_VDVD,2)
-// tag : V6_vaddh_dv
-def int_hexagon_V6_vaddh_dv :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vaddh_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddh_dv_128B,VD_ftype_VDVD,2)
-// tag : V6_vaddh_dv_128B
-def int_hexagon_V6_vaddh_dv_128B :
-Hexagon_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vaddh_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubh_dv,VD_ftype_VDVD,2)
-// tag : V6_vsubh_dv
-def int_hexagon_V6_vsubh_dv :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsubh_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubh_dv_128B,VD_ftype_VDVD,2)
-// tag : V6_vsubh_dv_128B
-def int_hexagon_V6_vsubh_dv_128B :
-Hexagon_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vsubh_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddw,VI_ftype_VIVI,2)
-// tag : V6_vaddw
-def int_hexagon_V6_vaddw :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vaddw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddw_128B,VI_ftype_VIVI,2)
-// tag : V6_vaddw_128B
-def int_hexagon_V6_vaddw_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vaddw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubw,VI_ftype_VIVI,2)
-// tag : V6_vsubw
-def int_hexagon_V6_vsubw :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vsubw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubw_128B,VI_ftype_VIVI,2)
-// tag : V6_vsubw_128B
-def int_hexagon_V6_vsubw_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsubw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddw_dv,VD_ftype_VDVD,2)
-// tag : V6_vaddw_dv
-def int_hexagon_V6_vaddw_dv :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vaddw_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddw_dv_128B,VD_ftype_VDVD,2)
-// tag : V6_vaddw_dv_128B
-def int_hexagon_V6_vaddw_dv_128B :
-Hexagon_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vaddw_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubw_dv,VD_ftype_VDVD,2)
-// tag : V6_vsubw_dv
-def int_hexagon_V6_vsubw_dv :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsubw_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubw_dv_128B,VD_ftype_VDVD,2)
-// tag : V6_vsubw_dv_128B
-def int_hexagon_V6_vsubw_dv_128B :
-Hexagon_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vsubw_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddubsat,VI_ftype_VIVI,2)
-// tag : V6_vaddubsat
-def int_hexagon_V6_vaddubsat :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vaddubsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddubsat_128B,VI_ftype_VIVI,2)
-// tag : V6_vaddubsat_128B
-def int_hexagon_V6_vaddubsat_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vaddubsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddubsat_dv,VD_ftype_VDVD,2)
-// tag : V6_vaddubsat_dv
-def int_hexagon_V6_vaddubsat_dv :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vaddubsat_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddubsat_dv_128B,VD_ftype_VDVD,2)
-// tag : V6_vaddubsat_dv_128B
-def int_hexagon_V6_vaddubsat_dv_128B :
-Hexagon_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vaddubsat_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsububsat,VI_ftype_VIVI,2)
-// tag : V6_vsububsat
-def int_hexagon_V6_vsububsat :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vsububsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsububsat_128B,VI_ftype_VIVI,2)
-// tag : V6_vsububsat_128B
-def int_hexagon_V6_vsububsat_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsububsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsububsat_dv,VD_ftype_VDVD,2)
-// tag : V6_vsububsat_dv
-def int_hexagon_V6_vsububsat_dv :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsububsat_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsububsat_dv_128B,VD_ftype_VDVD,2)
-// tag : V6_vsububsat_dv_128B
-def int_hexagon_V6_vsububsat_dv_128B :
-Hexagon_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vsububsat_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vadduhsat,VI_ftype_VIVI,2)
-// tag : V6_vadduhsat
-def int_hexagon_V6_vadduhsat :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vadduhsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vadduhsat_128B,VI_ftype_VIVI,2)
-// tag : V6_vadduhsat_128B
-def int_hexagon_V6_vadduhsat_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vadduhsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vadduhsat_dv,VD_ftype_VDVD,2)
-// tag : V6_vadduhsat_dv
-def int_hexagon_V6_vadduhsat_dv :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vadduhsat_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vadduhsat_dv_128B,VD_ftype_VDVD,2)
-// tag : V6_vadduhsat_dv_128B
-def int_hexagon_V6_vadduhsat_dv_128B :
-Hexagon_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vadduhsat_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubuhsat,VI_ftype_VIVI,2)
-// tag : V6_vsubuhsat
-def int_hexagon_V6_vsubuhsat :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vsubuhsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubuhsat_128B,VI_ftype_VIVI,2)
-// tag : V6_vsubuhsat_128B
-def int_hexagon_V6_vsubuhsat_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsubuhsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubuhsat_dv,VD_ftype_VDVD,2)
-// tag : V6_vsubuhsat_dv
-def int_hexagon_V6_vsubuhsat_dv :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsubuhsat_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubuhsat_dv_128B,VD_ftype_VDVD,2)
-// tag : V6_vsubuhsat_dv_128B
-def int_hexagon_V6_vsubuhsat_dv_128B :
-Hexagon_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vsubuhsat_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddhsat,VI_ftype_VIVI,2)
-// tag : V6_vaddhsat
-def int_hexagon_V6_vaddhsat :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vaddhsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddhsat_128B,VI_ftype_VIVI,2)
-// tag : V6_vaddhsat_128B
-def int_hexagon_V6_vaddhsat_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vaddhsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddhsat_dv,VD_ftype_VDVD,2)
-// tag : V6_vaddhsat_dv
-def int_hexagon_V6_vaddhsat_dv :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vaddhsat_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddhsat_dv_128B,VD_ftype_VDVD,2)
-// tag : V6_vaddhsat_dv_128B
-def int_hexagon_V6_vaddhsat_dv_128B :
-Hexagon_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vaddhsat_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubhsat,VI_ftype_VIVI,2)
-// tag : V6_vsubhsat
-def int_hexagon_V6_vsubhsat :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vsubhsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubhsat_128B,VI_ftype_VIVI,2)
-// tag : V6_vsubhsat_128B
-def int_hexagon_V6_vsubhsat_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsubhsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubhsat_dv,VD_ftype_VDVD,2)
-// tag : V6_vsubhsat_dv
-def int_hexagon_V6_vsubhsat_dv :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsubhsat_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubhsat_dv_128B,VD_ftype_VDVD,2)
-// tag : V6_vsubhsat_dv_128B
-def int_hexagon_V6_vsubhsat_dv_128B :
-Hexagon_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vsubhsat_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddwsat,VI_ftype_VIVI,2)
-// tag : V6_vaddwsat
-def int_hexagon_V6_vaddwsat :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vaddwsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddwsat_128B,VI_ftype_VIVI,2)
-// tag : V6_vaddwsat_128B
-def int_hexagon_V6_vaddwsat_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vaddwsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddwsat_dv,VD_ftype_VDVD,2)
-// tag : V6_vaddwsat_dv
-def int_hexagon_V6_vaddwsat_dv :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vaddwsat_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddwsat_dv_128B,VD_ftype_VDVD,2)
-// tag : V6_vaddwsat_dv_128B
-def int_hexagon_V6_vaddwsat_dv_128B :
-Hexagon_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vaddwsat_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubwsat,VI_ftype_VIVI,2)
-// tag : V6_vsubwsat
-def int_hexagon_V6_vsubwsat :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vsubwsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubwsat_128B,VI_ftype_VIVI,2)
-// tag : V6_vsubwsat_128B
-def int_hexagon_V6_vsubwsat_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsubwsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubwsat_dv,VD_ftype_VDVD,2)
-// tag : V6_vsubwsat_dv
-def int_hexagon_V6_vsubwsat_dv :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsubwsat_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubwsat_dv_128B,VD_ftype_VDVD,2)
-// tag : V6_vsubwsat_dv_128B
-def int_hexagon_V6_vsubwsat_dv_128B :
-Hexagon_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vsubwsat_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavgub,VI_ftype_VIVI,2)
-// tag : V6_vavgub
-def int_hexagon_V6_vavgub :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vavgub">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavgub_128B,VI_ftype_VIVI,2)
-// tag : V6_vavgub_128B
-def int_hexagon_V6_vavgub_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vavgub_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavgubrnd,VI_ftype_VIVI,2)
-// tag : V6_vavgubrnd
-def int_hexagon_V6_vavgubrnd :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vavgubrnd">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavgubrnd_128B,VI_ftype_VIVI,2)
-// tag : V6_vavgubrnd_128B
-def int_hexagon_V6_vavgubrnd_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vavgubrnd_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavguh,VI_ftype_VIVI,2)
-// tag : V6_vavguh
-def int_hexagon_V6_vavguh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vavguh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavguh_128B,VI_ftype_VIVI,2)
-// tag : V6_vavguh_128B
-def int_hexagon_V6_vavguh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vavguh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavguhrnd,VI_ftype_VIVI,2)
-// tag : V6_vavguhrnd
-def int_hexagon_V6_vavguhrnd :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vavguhrnd">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavguhrnd_128B,VI_ftype_VIVI,2)
-// tag : V6_vavguhrnd_128B
-def int_hexagon_V6_vavguhrnd_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vavguhrnd_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavgh,VI_ftype_VIVI,2)
-// tag : V6_vavgh
-def int_hexagon_V6_vavgh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vavgh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavgh_128B,VI_ftype_VIVI,2)
-// tag : V6_vavgh_128B
-def int_hexagon_V6_vavgh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vavgh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavghrnd,VI_ftype_VIVI,2)
-// tag : V6_vavghrnd
-def int_hexagon_V6_vavghrnd :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vavghrnd">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavghrnd_128B,VI_ftype_VIVI,2)
-// tag : V6_vavghrnd_128B
-def int_hexagon_V6_vavghrnd_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vavghrnd_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vnavgh,VI_ftype_VIVI,2)
-// tag : V6_vnavgh
-def int_hexagon_V6_vnavgh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vnavgh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vnavgh_128B,VI_ftype_VIVI,2)
-// tag : V6_vnavgh_128B
-def int_hexagon_V6_vnavgh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vnavgh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavgw,VI_ftype_VIVI,2)
-// tag : V6_vavgw
-def int_hexagon_V6_vavgw :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vavgw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavgw_128B,VI_ftype_VIVI,2)
-// tag : V6_vavgw_128B
-def int_hexagon_V6_vavgw_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vavgw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavgwrnd,VI_ftype_VIVI,2)
-// tag : V6_vavgwrnd
-def int_hexagon_V6_vavgwrnd :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vavgwrnd">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavgwrnd_128B,VI_ftype_VIVI,2)
-// tag : V6_vavgwrnd_128B
-def int_hexagon_V6_vavgwrnd_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vavgwrnd_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vnavgw,VI_ftype_VIVI,2)
-// tag : V6_vnavgw
-def int_hexagon_V6_vnavgw :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vnavgw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vnavgw_128B,VI_ftype_VIVI,2)
-// tag : V6_vnavgw_128B
-def int_hexagon_V6_vnavgw_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vnavgw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsdiffub,VI_ftype_VIVI,2)
-// tag : V6_vabsdiffub
-def int_hexagon_V6_vabsdiffub :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vabsdiffub">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsdiffub_128B,VI_ftype_VIVI,2)
-// tag : V6_vabsdiffub_128B
-def int_hexagon_V6_vabsdiffub_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vabsdiffub_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsdiffuh,VI_ftype_VIVI,2)
-// tag : V6_vabsdiffuh
-def int_hexagon_V6_vabsdiffuh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vabsdiffuh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsdiffuh_128B,VI_ftype_VIVI,2)
-// tag : V6_vabsdiffuh_128B
-def int_hexagon_V6_vabsdiffuh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vabsdiffuh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsdiffh,VI_ftype_VIVI,2)
-// tag : V6_vabsdiffh
-def int_hexagon_V6_vabsdiffh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vabsdiffh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsdiffh_128B,VI_ftype_VIVI,2)
-// tag : V6_vabsdiffh_128B
-def int_hexagon_V6_vabsdiffh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vabsdiffh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsdiffw,VI_ftype_VIVI,2)
-// tag : V6_vabsdiffw
-def int_hexagon_V6_vabsdiffw :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vabsdiffw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsdiffw_128B,VI_ftype_VIVI,2)
-// tag : V6_vabsdiffw_128B
-def int_hexagon_V6_vabsdiffw_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vabsdiffw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vnavgub,VI_ftype_VIVI,2)
-// tag : V6_vnavgub
-def int_hexagon_V6_vnavgub :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vnavgub">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vnavgub_128B,VI_ftype_VIVI,2)
-// tag : V6_vnavgub_128B
-def int_hexagon_V6_vnavgub_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vnavgub_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddubh,VD_ftype_VIVI,2)
-// tag : V6_vaddubh
-def int_hexagon_V6_vaddubh :
-Hexagon_v1024v512v512_Intrinsic<"HEXAGON_V6_vaddubh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddubh_128B,VD_ftype_VIVI,2)
-// tag : V6_vaddubh_128B
-def int_hexagon_V6_vaddubh_128B :
-Hexagon_v2048v1024v1024_Intrinsic<"HEXAGON_V6_vaddubh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsububh,VD_ftype_VIVI,2)
-// tag : V6_vsububh
-def int_hexagon_V6_vsububh :
-Hexagon_v1024v512v512_Intrinsic<"HEXAGON_V6_vsububh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsububh_128B,VD_ftype_VIVI,2)
-// tag : V6_vsububh_128B
-def int_hexagon_V6_vsububh_128B :
-Hexagon_v2048v1024v1024_Intrinsic<"HEXAGON_V6_vsububh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddhw,VD_ftype_VIVI,2)
-// tag : V6_vaddhw
-def int_hexagon_V6_vaddhw :
-Hexagon_v1024v512v512_Intrinsic<"HEXAGON_V6_vaddhw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddhw_128B,VD_ftype_VIVI,2)
-// tag : V6_vaddhw_128B
-def int_hexagon_V6_vaddhw_128B :
-Hexagon_v2048v1024v1024_Intrinsic<"HEXAGON_V6_vaddhw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubhw,VD_ftype_VIVI,2)
-// tag : V6_vsubhw
-def int_hexagon_V6_vsubhw :
-Hexagon_v1024v512v512_Intrinsic<"HEXAGON_V6_vsubhw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubhw_128B,VD_ftype_VIVI,2)
-// tag : V6_vsubhw_128B
-def int_hexagon_V6_vsubhw_128B :
-Hexagon_v2048v1024v1024_Intrinsic<"HEXAGON_V6_vsubhw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vadduhw,VD_ftype_VIVI,2)
-// tag : V6_vadduhw
-def int_hexagon_V6_vadduhw :
-Hexagon_v1024v512v512_Intrinsic<"HEXAGON_V6_vadduhw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vadduhw_128B,VD_ftype_VIVI,2)
-// tag : V6_vadduhw_128B
-def int_hexagon_V6_vadduhw_128B :
-Hexagon_v2048v1024v1024_Intrinsic<"HEXAGON_V6_vadduhw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubuhw,VD_ftype_VIVI,2)
-// tag : V6_vsubuhw
-def int_hexagon_V6_vsubuhw :
-Hexagon_v1024v512v512_Intrinsic<"HEXAGON_V6_vsubuhw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubuhw_128B,VD_ftype_VIVI,2)
-// tag : V6_vsubuhw_128B
-def int_hexagon_V6_vsubuhw_128B :
-Hexagon_v2048v1024v1024_Intrinsic<"HEXAGON_V6_vsubuhw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vd0,VI_ftype_,0)
-// tag : V6_vd0
-def int_hexagon_V6_vd0 :
-Hexagon_v512_Intrinsic<"HEXAGON_V6_vd0">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vd0_128B,VI_ftype_,0)
-// tag : V6_vd0_128B
-def int_hexagon_V6_vd0_128B :
-Hexagon_v1024_Intrinsic<"HEXAGON_V6_vd0_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddbq,VI_ftype_QVVIVI,3)
-// tag : V6_vaddbq
-def int_hexagon_V6_vaddbq :
-Hexagon_v512v64iv512v512_Intrinsic<"HEXAGON_V6_vaddbq">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddbq_128B,VI_ftype_QVVIVI,3)
-// tag : V6_vaddbq_128B
-def int_hexagon_V6_vaddbq_128B :
-Hexagon_v1024v128iv1024v1024_Intrinsic<"HEXAGON_V6_vaddbq_128B">;
-
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubbq,VI_ftype_QVVIVI,3)
-// tag : V6_vsubbq
-def int_hexagon_V6_vsubbq :
-Hexagon_v512v64iv512v512_Intrinsic<"HEXAGON_V6_vsubbq">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubbq_128B,VI_ftype_QVVIVI,3)
-// tag : V6_vsubbq_128B
-def int_hexagon_V6_vsubbq_128B :
-Hexagon_v1024v128iv1024v1024_Intrinsic<"HEXAGON_V6_vsubbq_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddbnq,VI_ftype_QVVIVI,3)
-// tag : V6_vaddbnq
-def int_hexagon_V6_vaddbnq :
-Hexagon_v512v64iv512v512_Intrinsic<"HEXAGON_V6_vaddbnq">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddbnq_128B,VI_ftype_QVVIVI,3)
-// tag : V6_vaddbnq_128B
-def int_hexagon_V6_vaddbnq_128B :
-Hexagon_v1024v128iv1024v1024_Intrinsic<"HEXAGON_V6_vaddbnq_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubbnq,VI_ftype_QVVIVI,3)
-// tag : V6_vsubbnq
-def int_hexagon_V6_vsubbnq :
-Hexagon_v512v64iv512v512_Intrinsic<"HEXAGON_V6_vsubbnq">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubbnq_128B,VI_ftype_QVVIVI,3)
-// tag : V6_vsubbnq_128B
-def int_hexagon_V6_vsubbnq_128B :
-Hexagon_v1024v128iv1024v1024_Intrinsic<"HEXAGON_V6_vsubbnq_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddhq,VI_ftype_QVVIVI,3)
-// tag : V6_vaddhq
-def int_hexagon_V6_vaddhq :
-Hexagon_v512v64iv512v512_Intrinsic<"HEXAGON_V6_vaddhq">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddhq_128B,VI_ftype_QVVIVI,3)
-// tag : V6_vaddhq_128B
-def int_hexagon_V6_vaddhq_128B :
-Hexagon_v1024v128iv1024v1024_Intrinsic<"HEXAGON_V6_vaddhq_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubhq,VI_ftype_QVVIVI,3)
-// tag : V6_vsubhq
-def int_hexagon_V6_vsubhq :
-Hexagon_v512v64iv512v512_Intrinsic<"HEXAGON_V6_vsubhq">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubhq_128B,VI_ftype_QVVIVI,3)
-// tag : V6_vsubhq_128B
-def int_hexagon_V6_vsubhq_128B :
-Hexagon_v1024v128iv1024v1024_Intrinsic<"HEXAGON_V6_vsubhq_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddhnq,VI_ftype_QVVIVI,3)
-// tag : V6_vaddhnq
-def int_hexagon_V6_vaddhnq :
-Hexagon_v512v64iv512v512_Intrinsic<"HEXAGON_V6_vaddhnq">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddhnq_128B,VI_ftype_QVVIVI,3)
-// tag : V6_vaddhnq_128B
-def int_hexagon_V6_vaddhnq_128B :
-Hexagon_v1024v128iv1024v1024_Intrinsic<"HEXAGON_V6_vaddhnq_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubhnq,VI_ftype_QVVIVI,3)
-// tag : V6_vsubhnq
-def int_hexagon_V6_vsubhnq :
-Hexagon_v512v64iv512v512_Intrinsic<"HEXAGON_V6_vsubhnq">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubhnq_128B,VI_ftype_QVVIVI,3)
-// tag : V6_vsubhnq_128B
-def int_hexagon_V6_vsubhnq_128B :
-Hexagon_v1024v128iv1024v1024_Intrinsic<"HEXAGON_V6_vsubhnq_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddwq,VI_ftype_QVVIVI,3)
-// tag : V6_vaddwq
-def int_hexagon_V6_vaddwq :
-Hexagon_v512v64iv512v512_Intrinsic<"HEXAGON_V6_vaddwq">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddwq_128B,VI_ftype_QVVIVI,3)
-// tag : V6_vaddwq_128B
-def int_hexagon_V6_vaddwq_128B :
-Hexagon_v1024v128iv1024v1024_Intrinsic<"HEXAGON_V6_vaddwq_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubwq,VI_ftype_QVVIVI,3)
-// tag : V6_vsubwq
-def int_hexagon_V6_vsubwq :
-Hexagon_v512v64iv512v512_Intrinsic<"HEXAGON_V6_vsubwq">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubwq_128B,VI_ftype_QVVIVI,3)
-// tag : V6_vsubwq_128B
-def int_hexagon_V6_vsubwq_128B :
-Hexagon_v1024v128iv1024v1024_Intrinsic<"HEXAGON_V6_vsubwq_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddwnq,VI_ftype_QVVIVI,3)
-// tag : V6_vaddwnq
-def int_hexagon_V6_vaddwnq :
-Hexagon_v512v64iv512v512_Intrinsic<"HEXAGON_V6_vaddwnq">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddwnq_128B,VI_ftype_QVVIVI,3)
-// tag : V6_vaddwnq_128B
-def int_hexagon_V6_vaddwnq_128B :
-Hexagon_v1024v128iv1024v1024_Intrinsic<"HEXAGON_V6_vaddwnq_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubwnq,VI_ftype_QVVIVI,3)
-// tag : V6_vsubwnq
-def int_hexagon_V6_vsubwnq :
-Hexagon_v512v64iv512v512_Intrinsic<"HEXAGON_V6_vsubwnq">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubwnq_128B,VI_ftype_QVVIVI,3)
-// tag : V6_vsubwnq_128B
-def int_hexagon_V6_vsubwnq_128B :
-Hexagon_v1024v128iv1024v1024_Intrinsic<"HEXAGON_V6_vsubwnq_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsh,VI_ftype_VI,1)
-// tag : V6_vabsh
-def int_hexagon_V6_vabsh :
-Hexagon_v512v512_Intrinsic<"HEXAGON_V6_vabsh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsh_128B,VI_ftype_VI,1)
-// tag : V6_vabsh_128B
-def int_hexagon_V6_vabsh_128B :
-Hexagon_v1024v1024_Intrinsic<"HEXAGON_V6_vabsh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsh_sat,VI_ftype_VI,1)
-// tag : V6_vabsh_sat
-def int_hexagon_V6_vabsh_sat :
-Hexagon_v512v512_Intrinsic<"HEXAGON_V6_vabsh_sat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsh_sat_128B,VI_ftype_VI,1)
-// tag : V6_vabsh_sat_128B
-def int_hexagon_V6_vabsh_sat_128B :
-Hexagon_v1024v1024_Intrinsic<"HEXAGON_V6_vabsh_sat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsw,VI_ftype_VI,1)
-// tag : V6_vabsw
-def int_hexagon_V6_vabsw :
-Hexagon_v512v512_Intrinsic<"HEXAGON_V6_vabsw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsw_128B,VI_ftype_VI,1)
-// tag : V6_vabsw_128B
-def int_hexagon_V6_vabsw_128B :
-Hexagon_v1024v1024_Intrinsic<"HEXAGON_V6_vabsw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsw_sat,VI_ftype_VI,1)
-// tag : V6_vabsw_sat
-def int_hexagon_V6_vabsw_sat :
-Hexagon_v512v512_Intrinsic<"HEXAGON_V6_vabsw_sat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsw_sat_128B,VI_ftype_VI,1)
-// tag : V6_vabsw_sat_128B
-def int_hexagon_V6_vabsw_sat_128B :
-Hexagon_v1024v1024_Intrinsic<"HEXAGON_V6_vabsw_sat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpybv,VD_ftype_VIVI,2)
-// tag : V6_vmpybv
-def int_hexagon_V6_vmpybv :
-Hexagon_v1024v512v512_Intrinsic<"HEXAGON_V6_vmpybv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpybv_128B,VD_ftype_VIVI,2)
-// tag : V6_vmpybv_128B
-def int_hexagon_V6_vmpybv_128B :
-Hexagon_v2048v1024v1024_Intrinsic<"HEXAGON_V6_vmpybv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpybv_acc,VD_ftype_VDVIVI,3)
-// tag : V6_vmpybv_acc
-def int_hexagon_V6_vmpybv_acc :
-Hexagon_v1024v1024v512v512_Intrinsic<"HEXAGON_V6_vmpybv_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpybv_acc_128B,VD_ftype_VDVIVI,3)
-// tag : V6_vmpybv_acc_128B
-def int_hexagon_V6_vmpybv_acc_128B :
-Hexagon_v2048v2048v1024v1024_Intrinsic<"HEXAGON_V6_vmpybv_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyubv,VD_ftype_VIVI,2)
-// tag : V6_vmpyubv
-def int_hexagon_V6_vmpyubv :
-Hexagon_v1024v512v512_Intrinsic<"HEXAGON_V6_vmpyubv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyubv_128B,VD_ftype_VIVI,2)
-// tag : V6_vmpyubv_128B
-def int_hexagon_V6_vmpyubv_128B :
-Hexagon_v2048v1024v1024_Intrinsic<"HEXAGON_V6_vmpyubv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyubv_acc,VD_ftype_VDVIVI,3)
-// tag : V6_vmpyubv_acc
-def int_hexagon_V6_vmpyubv_acc :
-Hexagon_v1024v1024v512v512_Intrinsic<"HEXAGON_V6_vmpyubv_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyubv_acc_128B,VD_ftype_VDVIVI,3)
-// tag : V6_vmpyubv_acc_128B
-def int_hexagon_V6_vmpyubv_acc_128B :
-Hexagon_v2048v2048v1024v1024_Intrinsic<"HEXAGON_V6_vmpyubv_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpybusv,VD_ftype_VIVI,2)
-// tag : V6_vmpybusv
-def int_hexagon_V6_vmpybusv :
-Hexagon_v1024v512v512_Intrinsic<"HEXAGON_V6_vmpybusv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpybusv_128B,VD_ftype_VIVI,2)
-// tag : V6_vmpybusv_128B
-def int_hexagon_V6_vmpybusv_128B :
-Hexagon_v2048v1024v1024_Intrinsic<"HEXAGON_V6_vmpybusv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpybusv_acc,VD_ftype_VDVIVI,3)
-// tag : V6_vmpybusv_acc
-def int_hexagon_V6_vmpybusv_acc :
-Hexagon_v1024v1024v512v512_Intrinsic<"HEXAGON_V6_vmpybusv_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpybusv_acc_128B,VD_ftype_VDVIVI,3)
-// tag : V6_vmpybusv_acc_128B
-def int_hexagon_V6_vmpybusv_acc_128B :
-Hexagon_v2048v2048v1024v1024_Intrinsic<"HEXAGON_V6_vmpybusv_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpabusv,VD_ftype_VDVD,2)
-// tag : V6_vmpabusv
-def int_hexagon_V6_vmpabusv :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmpabusv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpabusv_128B,VD_ftype_VDVD,2)
-// tag : V6_vmpabusv_128B
-def int_hexagon_V6_vmpabusv_128B :
-Hexagon_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vmpabusv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpabuuv,VD_ftype_VDVD,2)
-// tag : V6_vmpabuuv
-def int_hexagon_V6_vmpabuuv :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmpabuuv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpabuuv_128B,VD_ftype_VDVD,2)
-// tag : V6_vmpabuuv_128B
-def int_hexagon_V6_vmpabuuv_128B :
-Hexagon_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vmpabuuv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyhv,VD_ftype_VIVI,2)
-// tag : V6_vmpyhv
-def int_hexagon_V6_vmpyhv :
-Hexagon_v1024v512v512_Intrinsic<"HEXAGON_V6_vmpyhv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyhv_128B,VD_ftype_VIVI,2)
-// tag : V6_vmpyhv_128B
-def int_hexagon_V6_vmpyhv_128B :
-Hexagon_v2048v1024v1024_Intrinsic<"HEXAGON_V6_vmpyhv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyhv_acc,VD_ftype_VDVIVI,3)
-// tag : V6_vmpyhv_acc
-def int_hexagon_V6_vmpyhv_acc :
-Hexagon_v1024v1024v512v512_Intrinsic<"HEXAGON_V6_vmpyhv_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyhv_acc_128B,VD_ftype_VDVIVI,3)
-// tag : V6_vmpyhv_acc_128B
-def int_hexagon_V6_vmpyhv_acc_128B :
-Hexagon_v2048v2048v1024v1024_Intrinsic<"HEXAGON_V6_vmpyhv_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyuhv,VD_ftype_VIVI,2)
-// tag : V6_vmpyuhv
-def int_hexagon_V6_vmpyuhv :
-Hexagon_v1024v512v512_Intrinsic<"HEXAGON_V6_vmpyuhv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyuhv_128B,VD_ftype_VIVI,2)
-// tag : V6_vmpyuhv_128B
-def int_hexagon_V6_vmpyuhv_128B :
-Hexagon_v2048v1024v1024_Intrinsic<"HEXAGON_V6_vmpyuhv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyuhv_acc,VD_ftype_VDVIVI,3)
-// tag : V6_vmpyuhv_acc
-def int_hexagon_V6_vmpyuhv_acc :
-Hexagon_v1024v1024v512v512_Intrinsic<"HEXAGON_V6_vmpyuhv_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyuhv_acc_128B,VD_ftype_VDVIVI,3)
-// tag : V6_vmpyuhv_acc_128B
-def int_hexagon_V6_vmpyuhv_acc_128B :
-Hexagon_v2048v2048v1024v1024_Intrinsic<"HEXAGON_V6_vmpyuhv_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyhvsrs,VI_ftype_VIVI,2)
-// tag : V6_vmpyhvsrs
-def int_hexagon_V6_vmpyhvsrs :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vmpyhvsrs">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyhvsrs_128B,VI_ftype_VIVI,2)
-// tag : V6_vmpyhvsrs_128B
-def int_hexagon_V6_vmpyhvsrs_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmpyhvsrs_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyhus,VD_ftype_VIVI,2)
-// tag : V6_vmpyhus
-def int_hexagon_V6_vmpyhus :
-Hexagon_v1024v512v512_Intrinsic<"HEXAGON_V6_vmpyhus">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyhus_128B,VD_ftype_VIVI,2)
-// tag : V6_vmpyhus_128B
-def int_hexagon_V6_vmpyhus_128B :
-Hexagon_v2048v1024v1024_Intrinsic<"HEXAGON_V6_vmpyhus_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyhus_acc,VD_ftype_VDVIVI,3)
-// tag : V6_vmpyhus_acc
-def int_hexagon_V6_vmpyhus_acc :
-Hexagon_v1024v1024v512v512_Intrinsic<"HEXAGON_V6_vmpyhus_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyhus_acc_128B,VD_ftype_VDVIVI,3)
-// tag : V6_vmpyhus_acc_128B
-def int_hexagon_V6_vmpyhus_acc_128B :
-Hexagon_v2048v2048v1024v1024_Intrinsic<"HEXAGON_V6_vmpyhus_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyih,VI_ftype_VIVI,2)
-// tag : V6_vmpyih
-def int_hexagon_V6_vmpyih :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vmpyih">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyih_128B,VI_ftype_VIVI,2)
-// tag : V6_vmpyih_128B
-def int_hexagon_V6_vmpyih_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmpyih_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyih_acc,VI_ftype_VIVIVI,3)
-// tag : V6_vmpyih_acc
-def int_hexagon_V6_vmpyih_acc :
-Hexagon_v512v512v512v512_Intrinsic<"HEXAGON_V6_vmpyih_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyih_acc_128B,VI_ftype_VIVIVI,3)
-// tag : V6_vmpyih_acc_128B
-def int_hexagon_V6_vmpyih_acc_128B :
-Hexagon_v1024v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmpyih_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyewuh,VI_ftype_VIVI,2)
-// tag : V6_vmpyewuh
-def int_hexagon_V6_vmpyewuh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vmpyewuh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyewuh_128B,VI_ftype_VIVI,2)
-// tag : V6_vmpyewuh_128B
-def int_hexagon_V6_vmpyewuh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmpyewuh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyowh,VI_ftype_VIVI,2)
-// tag : V6_vmpyowh
-def int_hexagon_V6_vmpyowh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vmpyowh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyowh_128B,VI_ftype_VIVI,2)
-// tag : V6_vmpyowh_128B
-def int_hexagon_V6_vmpyowh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmpyowh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyowh_rnd,VI_ftype_VIVI,2)
-// tag : V6_vmpyowh_rnd
-def int_hexagon_V6_vmpyowh_rnd :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vmpyowh_rnd">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyowh_rnd_128B,VI_ftype_VIVI,2)
-// tag : V6_vmpyowh_rnd_128B
-def int_hexagon_V6_vmpyowh_rnd_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmpyowh_rnd_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyowh_sacc,VI_ftype_VIVIVI,3)
-// tag : V6_vmpyowh_sacc
-def int_hexagon_V6_vmpyowh_sacc :
-Hexagon_v512v512v512v512_Intrinsic<"HEXAGON_V6_vmpyowh_sacc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyowh_sacc_128B,VI_ftype_VIVIVI,3)
-// tag : V6_vmpyowh_sacc_128B
-def int_hexagon_V6_vmpyowh_sacc_128B :
-Hexagon_v1024v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmpyowh_sacc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyowh_rnd_sacc,VI_ftype_VIVIVI,3)
-// tag : V6_vmpyowh_rnd_sacc
-def int_hexagon_V6_vmpyowh_rnd_sacc :
-Hexagon_v512v512v512v512_Intrinsic<"HEXAGON_V6_vmpyowh_rnd_sacc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyowh_rnd_sacc_128B,VI_ftype_VIVIVI,3)
-// tag : V6_vmpyowh_rnd_sacc_128B
-def int_hexagon_V6_vmpyowh_rnd_sacc_128B :
-Hexagon_v1024v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmpyowh_rnd_sacc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyieoh,VI_ftype_VIVI,2)
-// tag : V6_vmpyieoh
-def int_hexagon_V6_vmpyieoh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vmpyieoh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyieoh_128B,VI_ftype_VIVI,2)
-// tag : V6_vmpyieoh_128B
-def int_hexagon_V6_vmpyieoh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmpyieoh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiewuh,VI_ftype_VIVI,2)
-// tag : V6_vmpyiewuh
-def int_hexagon_V6_vmpyiewuh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vmpyiewuh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiewuh_128B,VI_ftype_VIVI,2)
-// tag : V6_vmpyiewuh_128B
-def int_hexagon_V6_vmpyiewuh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmpyiewuh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiowh,VI_ftype_VIVI,2)
-// tag : V6_vmpyiowh
-def int_hexagon_V6_vmpyiowh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vmpyiowh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiowh_128B,VI_ftype_VIVI,2)
-// tag : V6_vmpyiowh_128B
-def int_hexagon_V6_vmpyiowh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmpyiowh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiewh_acc,VI_ftype_VIVIVI,3)
-// tag : V6_vmpyiewh_acc
-def int_hexagon_V6_vmpyiewh_acc :
-Hexagon_v512v512v512v512_Intrinsic<"HEXAGON_V6_vmpyiewh_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiewh_acc_128B,VI_ftype_VIVIVI,3)
-// tag : V6_vmpyiewh_acc_128B
-def int_hexagon_V6_vmpyiewh_acc_128B :
-Hexagon_v1024v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmpyiewh_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiewuh_acc,VI_ftype_VIVIVI,3)
-// tag : V6_vmpyiewuh_acc
-def int_hexagon_V6_vmpyiewuh_acc :
-Hexagon_v512v512v512v512_Intrinsic<"HEXAGON_V6_vmpyiewuh_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiewuh_acc_128B,VI_ftype_VIVIVI,3)
-// tag : V6_vmpyiewuh_acc_128B
-def int_hexagon_V6_vmpyiewuh_acc_128B :
-Hexagon_v1024v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmpyiewuh_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyub,VD_ftype_VISI,2)
-// tag : V6_vmpyub
-def int_hexagon_V6_vmpyub :
-Hexagon_v1024v512i_Intrinsic<"HEXAGON_V6_vmpyub">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyub_128B,VD_ftype_VISI,2)
-// tag : V6_vmpyub_128B
-def int_hexagon_V6_vmpyub_128B :
-Hexagon_v2048v1024i_Intrinsic<"HEXAGON_V6_vmpyub_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyub_acc,VD_ftype_VDVISI,3)
-// tag : V6_vmpyub_acc
-def int_hexagon_V6_vmpyub_acc :
-Hexagon_v1024v1024v512i_Intrinsic<"HEXAGON_V6_vmpyub_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyub_acc_128B,VD_ftype_VDVISI,3)
-// tag : V6_vmpyub_acc_128B
-def int_hexagon_V6_vmpyub_acc_128B :
-Hexagon_v2048v2048v1024i_Intrinsic<"HEXAGON_V6_vmpyub_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpybus,VD_ftype_VISI,2)
-// tag : V6_vmpybus
-def int_hexagon_V6_vmpybus :
-Hexagon_v1024v512i_Intrinsic<"HEXAGON_V6_vmpybus">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpybus_128B,VD_ftype_VISI,2)
-// tag : V6_vmpybus_128B
-def int_hexagon_V6_vmpybus_128B :
-Hexagon_v2048v1024i_Intrinsic<"HEXAGON_V6_vmpybus_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpybus_acc,VD_ftype_VDVISI,3)
-// tag : V6_vmpybus_acc
-def int_hexagon_V6_vmpybus_acc :
-Hexagon_v1024v1024v512i_Intrinsic<"HEXAGON_V6_vmpybus_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpybus_acc_128B,VD_ftype_VDVISI,3)
-// tag : V6_vmpybus_acc_128B
-def int_hexagon_V6_vmpybus_acc_128B :
-Hexagon_v2048v2048v1024i_Intrinsic<"HEXAGON_V6_vmpybus_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpabus,VD_ftype_VDSI,2)
-// tag : V6_vmpabus
-def int_hexagon_V6_vmpabus :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vmpabus">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpabus_128B,VD_ftype_VDSI,2)
-// tag : V6_vmpabus_128B
-def int_hexagon_V6_vmpabus_128B :
-Hexagon_v2048v2048i_Intrinsic<"HEXAGON_V6_vmpabus_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpabus_acc,VD_ftype_VDVDSI,3)
-// tag : V6_vmpabus_acc
-def int_hexagon_V6_vmpabus_acc :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vmpabus_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpabus_acc_128B,VD_ftype_VDVDSI,3)
-// tag : V6_vmpabus_acc_128B
-def int_hexagon_V6_vmpabus_acc_128B :
-Hexagon_v2048v2048v2048i_Intrinsic<"HEXAGON_V6_vmpabus_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpahb,VD_ftype_VDSI,2)
-// tag : V6_vmpahb
-def int_hexagon_V6_vmpahb :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vmpahb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpahb_128B,VD_ftype_VDSI,2)
-// tag : V6_vmpahb_128B
-def int_hexagon_V6_vmpahb_128B :
-Hexagon_v2048v2048i_Intrinsic<"HEXAGON_V6_vmpahb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpahb_acc,VD_ftype_VDVDSI,3)
-// tag : V6_vmpahb_acc
-def int_hexagon_V6_vmpahb_acc :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vmpahb_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpahb_acc_128B,VD_ftype_VDVDSI,3)
-// tag : V6_vmpahb_acc_128B
-def int_hexagon_V6_vmpahb_acc_128B :
-Hexagon_v2048v2048v2048i_Intrinsic<"HEXAGON_V6_vmpahb_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyh,VD_ftype_VISI,2)
-// tag : V6_vmpyh
-def int_hexagon_V6_vmpyh :
-Hexagon_v1024v512i_Intrinsic<"HEXAGON_V6_vmpyh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyh_128B,VD_ftype_VISI,2)
-// tag : V6_vmpyh_128B
-def int_hexagon_V6_vmpyh_128B :
-Hexagon_v2048v1024i_Intrinsic<"HEXAGON_V6_vmpyh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyhsat_acc,VD_ftype_VDVISI,3)
-// tag : V6_vmpyhsat_acc
-def int_hexagon_V6_vmpyhsat_acc :
-Hexagon_v1024v1024v512i_Intrinsic<"HEXAGON_V6_vmpyhsat_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyhsat_acc_128B,VD_ftype_VDVISI,3)
-// tag : V6_vmpyhsat_acc_128B
-def int_hexagon_V6_vmpyhsat_acc_128B :
-Hexagon_v2048v2048v1024i_Intrinsic<"HEXAGON_V6_vmpyhsat_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyhss,VI_ftype_VISI,2)
-// tag : V6_vmpyhss
-def int_hexagon_V6_vmpyhss :
-Hexagon_v512v512i_Intrinsic<"HEXAGON_V6_vmpyhss">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyhss_128B,VI_ftype_VISI,2)
-// tag : V6_vmpyhss_128B
-def int_hexagon_V6_vmpyhss_128B :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vmpyhss_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyhsrs,VI_ftype_VISI,2)
-// tag : V6_vmpyhsrs
-def int_hexagon_V6_vmpyhsrs :
-Hexagon_v512v512i_Intrinsic<"HEXAGON_V6_vmpyhsrs">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyhsrs_128B,VI_ftype_VISI,2)
-// tag : V6_vmpyhsrs_128B
-def int_hexagon_V6_vmpyhsrs_128B :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vmpyhsrs_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyuh,VD_ftype_VISI,2)
-// tag : V6_vmpyuh
-def int_hexagon_V6_vmpyuh :
-Hexagon_v1024v512i_Intrinsic<"HEXAGON_V6_vmpyuh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyuh_128B,VD_ftype_VISI,2)
-// tag : V6_vmpyuh_128B
-def int_hexagon_V6_vmpyuh_128B :
-Hexagon_v2048v1024i_Intrinsic<"HEXAGON_V6_vmpyuh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyuh_acc,VD_ftype_VDVISI,3)
-// tag : V6_vmpyuh_acc
-def int_hexagon_V6_vmpyuh_acc :
-Hexagon_v1024v1024v512i_Intrinsic<"HEXAGON_V6_vmpyuh_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyuh_acc_128B,VD_ftype_VDVISI,3)
-// tag : V6_vmpyuh_acc_128B
-def int_hexagon_V6_vmpyuh_acc_128B :
-Hexagon_v2048v2048v1024i_Intrinsic<"HEXAGON_V6_vmpyuh_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyihb,VI_ftype_VISI,2)
-// tag : V6_vmpyihb
-def int_hexagon_V6_vmpyihb :
-Hexagon_v512v512i_Intrinsic<"HEXAGON_V6_vmpyihb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyihb_128B,VI_ftype_VISI,2)
-// tag : V6_vmpyihb_128B
-def int_hexagon_V6_vmpyihb_128B :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vmpyihb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyihb_acc,VI_ftype_VIVISI,3)
-// tag : V6_vmpyihb_acc
-def int_hexagon_V6_vmpyihb_acc :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vmpyihb_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyihb_acc_128B,VI_ftype_VIVISI,3)
-// tag : V6_vmpyihb_acc_128B
-def int_hexagon_V6_vmpyihb_acc_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vmpyihb_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiwb,VI_ftype_VISI,2)
-// tag : V6_vmpyiwb
-def int_hexagon_V6_vmpyiwb :
-Hexagon_v512v512i_Intrinsic<"HEXAGON_V6_vmpyiwb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiwb_128B,VI_ftype_VISI,2)
-// tag : V6_vmpyiwb_128B
-def int_hexagon_V6_vmpyiwb_128B :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vmpyiwb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiwb_acc,VI_ftype_VIVISI,3)
-// tag : V6_vmpyiwb_acc
-def int_hexagon_V6_vmpyiwb_acc :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vmpyiwb_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiwb_acc_128B,VI_ftype_VIVISI,3)
-// tag : V6_vmpyiwb_acc_128B
-def int_hexagon_V6_vmpyiwb_acc_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vmpyiwb_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiwh,VI_ftype_VISI,2)
-// tag : V6_vmpyiwh
-def int_hexagon_V6_vmpyiwh :
-Hexagon_v512v512i_Intrinsic<"HEXAGON_V6_vmpyiwh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiwh_128B,VI_ftype_VISI,2)
-// tag : V6_vmpyiwh_128B
-def int_hexagon_V6_vmpyiwh_128B :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vmpyiwh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiwh_acc,VI_ftype_VIVISI,3)
-// tag : V6_vmpyiwh_acc
-def int_hexagon_V6_vmpyiwh_acc :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vmpyiwh_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiwh_acc_128B,VI_ftype_VIVISI,3)
-// tag : V6_vmpyiwh_acc_128B
-def int_hexagon_V6_vmpyiwh_acc_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vmpyiwh_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vand,VI_ftype_VIVI,2)
-// tag : V6_vand
-def int_hexagon_V6_vand :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vand">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vand_128B,VI_ftype_VIVI,2)
-// tag : V6_vand_128B
-def int_hexagon_V6_vand_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vand_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vor,VI_ftype_VIVI,2)
-// tag : V6_vor
-def int_hexagon_V6_vor :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vor">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vor_128B,VI_ftype_VIVI,2)
-// tag : V6_vor_128B
-def int_hexagon_V6_vor_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vor_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vxor,VI_ftype_VIVI,2)
-// tag : V6_vxor
-def int_hexagon_V6_vxor :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vxor">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vxor_128B,VI_ftype_VIVI,2)
-// tag : V6_vxor_128B
-def int_hexagon_V6_vxor_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vxor_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vnot,VI_ftype_VI,1)
-// tag : V6_vnot
-def int_hexagon_V6_vnot :
-Hexagon_v512v512_Intrinsic<"HEXAGON_V6_vnot">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vnot_128B,VI_ftype_VI,1)
-// tag : V6_vnot_128B
-def int_hexagon_V6_vnot_128B :
-Hexagon_v1024v1024_Intrinsic<"HEXAGON_V6_vnot_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vandqrt,VI_ftype_QVSI,2)
-// tag : V6_vandqrt
-def int_hexagon_V6_vandqrt :
-Hexagon_v512v64ii_Intrinsic<"HEXAGON_V6_vandqrt">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vandqrt_128B,VI_ftype_QVSI,2)
-// tag : V6_vandqrt_128B
-def int_hexagon_V6_vandqrt_128B :
-Hexagon_v1024v128ii_Intrinsic<"HEXAGON_V6_vandqrt_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vandqrt_acc,VI_ftype_VIQVSI,3)
-// tag : V6_vandqrt_acc
-def int_hexagon_V6_vandqrt_acc :
-Hexagon_v512v512v64ii_Intrinsic<"HEXAGON_V6_vandqrt_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vandqrt_acc_128B,VI_ftype_VIQVSI,3)
-// tag : V6_vandqrt_acc_128B
-def int_hexagon_V6_vandqrt_acc_128B :
-Hexagon_v1024v1024v128ii_Intrinsic<"HEXAGON_V6_vandqrt_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vandvrt,QV_ftype_VISI,2)
-// tag : V6_vandvrt
-def int_hexagon_V6_vandvrt :
-Hexagon_v64iv512i_Intrinsic<"HEXAGON_V6_vandvrt">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vandvrt_128B,QV_ftype_VISI,2)
-// tag : V6_vandvrt_128B
-def int_hexagon_V6_vandvrt_128B :
-Hexagon_v128iv1024i_Intrinsic<"HEXAGON_V6_vandvrt_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vandvrt_acc,QV_ftype_QVVISI,3)
-// tag : V6_vandvrt_acc
-def int_hexagon_V6_vandvrt_acc :
-Hexagon_v64iv64iv512i_Intrinsic<"HEXAGON_V6_vandvrt_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vandvrt_acc_128B,QV_ftype_QVVISI,3)
-// tag : V6_vandvrt_acc_128B
-def int_hexagon_V6_vandvrt_acc_128B :
-Hexagon_v128iv128iv1024i_Intrinsic<"HEXAGON_V6_vandvrt_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtw,QV_ftype_VIVI,2)
-// tag : V6_vgtw
-def int_hexagon_V6_vgtw :
-Hexagon_v64iv512v512_Intrinsic<"HEXAGON_V6_vgtw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtw_128B,QV_ftype_VIVI,2)
-// tag : V6_vgtw_128B
-def int_hexagon_V6_vgtw_128B :
-Hexagon_v128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtw_and,QV_ftype_QVVIVI,3)
-// tag : V6_vgtw_and
-def int_hexagon_V6_vgtw_and :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_vgtw_and">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtw_and_128B,QV_ftype_QVVIVI,3)
-// tag : V6_vgtw_and_128B
-def int_hexagon_V6_vgtw_and_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtw_and_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtw_or,QV_ftype_QVVIVI,3)
-// tag : V6_vgtw_or
-def int_hexagon_V6_vgtw_or :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_vgtw_or">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtw_or_128B,QV_ftype_QVVIVI,3)
-// tag : V6_vgtw_or_128B
-def int_hexagon_V6_vgtw_or_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtw_or_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtw_xor,QV_ftype_QVVIVI,3)
-// tag : V6_vgtw_xor
-def int_hexagon_V6_vgtw_xor :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_vgtw_xor">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtw_xor_128B,QV_ftype_QVVIVI,3)
-// tag : V6_vgtw_xor_128B
-def int_hexagon_V6_vgtw_xor_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtw_xor_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqw,QV_ftype_VIVI,2)
-// tag : V6_veqw
-def int_hexagon_V6_veqw :
-Hexagon_v64iv512v512_Intrinsic<"HEXAGON_V6_veqw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqw_128B,QV_ftype_VIVI,2)
-// tag : V6_veqw_128B
-def int_hexagon_V6_veqw_128B :
-Hexagon_v128iv1024v1024_Intrinsic<"HEXAGON_V6_veqw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqw_and,QV_ftype_QVVIVI,3)
-// tag : V6_veqw_and
-def int_hexagon_V6_veqw_and :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_veqw_and">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqw_and_128B,QV_ftype_QVVIVI,3)
-// tag : V6_veqw_and_128B
-def int_hexagon_V6_veqw_and_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_veqw_and_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqw_or,QV_ftype_QVVIVI,3)
-// tag : V6_veqw_or
-def int_hexagon_V6_veqw_or :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_veqw_or">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqw_or_128B,QV_ftype_QVVIVI,3)
-// tag : V6_veqw_or_128B
-def int_hexagon_V6_veqw_or_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_veqw_or_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqw_xor,QV_ftype_QVVIVI,3)
-// tag : V6_veqw_xor
-def int_hexagon_V6_veqw_xor :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_veqw_xor">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqw_xor_128B,QV_ftype_QVVIVI,3)
-// tag : V6_veqw_xor_128B
-def int_hexagon_V6_veqw_xor_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_veqw_xor_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgth,QV_ftype_VIVI,2)
-// tag : V6_vgth
-def int_hexagon_V6_vgth :
-Hexagon_v64iv512v512_Intrinsic<"HEXAGON_V6_vgth">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgth_128B,QV_ftype_VIVI,2)
-// tag : V6_vgth_128B
-def int_hexagon_V6_vgth_128B :
-Hexagon_v128iv1024v1024_Intrinsic<"HEXAGON_V6_vgth_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgth_and,QV_ftype_QVVIVI,3)
-// tag : V6_vgth_and
-def int_hexagon_V6_vgth_and :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_vgth_and">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgth_and_128B,QV_ftype_QVVIVI,3)
-// tag : V6_vgth_and_128B
-def int_hexagon_V6_vgth_and_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_vgth_and_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgth_or,QV_ftype_QVVIVI,3)
-// tag : V6_vgth_or
-def int_hexagon_V6_vgth_or :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_vgth_or">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgth_or_128B,QV_ftype_QVVIVI,3)
-// tag : V6_vgth_or_128B
-def int_hexagon_V6_vgth_or_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_vgth_or_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgth_xor,QV_ftype_QVVIVI,3)
-// tag : V6_vgth_xor
-def int_hexagon_V6_vgth_xor :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_vgth_xor">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgth_xor_128B,QV_ftype_QVVIVI,3)
-// tag : V6_vgth_xor_128B
-def int_hexagon_V6_vgth_xor_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_vgth_xor_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqh,QV_ftype_VIVI,2)
-// tag : V6_veqh
-def int_hexagon_V6_veqh :
-Hexagon_v64iv512v512_Intrinsic<"HEXAGON_V6_veqh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqh_128B,QV_ftype_VIVI,2)
-// tag : V6_veqh_128B
-def int_hexagon_V6_veqh_128B :
-Hexagon_v128iv1024v1024_Intrinsic<"HEXAGON_V6_veqh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqh_and,QV_ftype_QVVIVI,3)
-// tag : V6_veqh_and
-def int_hexagon_V6_veqh_and :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_veqh_and">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqh_and_128B,QV_ftype_QVVIVI,3)
-// tag : V6_veqh_and_128B
-def int_hexagon_V6_veqh_and_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_veqh_and_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqh_or,QV_ftype_QVVIVI,3)
-// tag : V6_veqh_or
-def int_hexagon_V6_veqh_or :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_veqh_or">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqh_or_128B,QV_ftype_QVVIVI,3)
-// tag : V6_veqh_or_128B
-def int_hexagon_V6_veqh_or_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_veqh_or_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqh_xor,QV_ftype_QVVIVI,3)
-// tag : V6_veqh_xor
-def int_hexagon_V6_veqh_xor :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_veqh_xor">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqh_xor_128B,QV_ftype_QVVIVI,3)
-// tag : V6_veqh_xor_128B
-def int_hexagon_V6_veqh_xor_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_veqh_xor_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtb,QV_ftype_VIVI,2)
-// tag : V6_vgtb
-def int_hexagon_V6_vgtb :
-Hexagon_v64iv512v512_Intrinsic<"HEXAGON_V6_vgtb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtb_128B,QV_ftype_VIVI,2)
-// tag : V6_vgtb_128B
-def int_hexagon_V6_vgtb_128B :
-Hexagon_v128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtb_and,QV_ftype_QVVIVI,3)
-// tag : V6_vgtb_and
-def int_hexagon_V6_vgtb_and :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_vgtb_and">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtb_and_128B,QV_ftype_QVVIVI,3)
-// tag : V6_vgtb_and_128B
-def int_hexagon_V6_vgtb_and_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtb_and_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtb_or,QV_ftype_QVVIVI,3)
-// tag : V6_vgtb_or
-def int_hexagon_V6_vgtb_or :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_vgtb_or">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtb_or_128B,QV_ftype_QVVIVI,3)
-// tag : V6_vgtb_or_128B
-def int_hexagon_V6_vgtb_or_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtb_or_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtb_xor,QV_ftype_QVVIVI,3)
-// tag : V6_vgtb_xor
-def int_hexagon_V6_vgtb_xor :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_vgtb_xor">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtb_xor_128B,QV_ftype_QVVIVI,3)
-// tag : V6_vgtb_xor_128B
-def int_hexagon_V6_vgtb_xor_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtb_xor_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqb,QV_ftype_VIVI,2)
-// tag : V6_veqb
-def int_hexagon_V6_veqb :
-Hexagon_v64iv512v512_Intrinsic<"HEXAGON_V6_veqb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqb_128B,QV_ftype_VIVI,2)
-// tag : V6_veqb_128B
-def int_hexagon_V6_veqb_128B :
-Hexagon_v128iv1024v1024_Intrinsic<"HEXAGON_V6_veqb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqb_and,QV_ftype_QVVIVI,3)
-// tag : V6_veqb_and
-def int_hexagon_V6_veqb_and :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_veqb_and">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqb_and_128B,QV_ftype_QVVIVI,3)
-// tag : V6_veqb_and_128B
-def int_hexagon_V6_veqb_and_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_veqb_and_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqb_or,QV_ftype_QVVIVI,3)
-// tag : V6_veqb_or
-def int_hexagon_V6_veqb_or :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_veqb_or">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqb_or_128B,QV_ftype_QVVIVI,3)
-// tag : V6_veqb_or_128B
-def int_hexagon_V6_veqb_or_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_veqb_or_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqb_xor,QV_ftype_QVVIVI,3)
-// tag : V6_veqb_xor
-def int_hexagon_V6_veqb_xor :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_veqb_xor">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_veqb_xor_128B,QV_ftype_QVVIVI,3)
-// tag : V6_veqb_xor_128B
-def int_hexagon_V6_veqb_xor_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_veqb_xor_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtuw,QV_ftype_VIVI,2)
-// tag : V6_vgtuw
-def int_hexagon_V6_vgtuw :
-Hexagon_v64iv512v512_Intrinsic<"HEXAGON_V6_vgtuw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtuw_128B,QV_ftype_VIVI,2)
-// tag : V6_vgtuw_128B
-def int_hexagon_V6_vgtuw_128B :
-Hexagon_v128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtuw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtuw_and,QV_ftype_QVVIVI,3)
-// tag : V6_vgtuw_and
-def int_hexagon_V6_vgtuw_and :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_vgtuw_and">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtuw_and_128B,QV_ftype_QVVIVI,3)
-// tag : V6_vgtuw_and_128B
-def int_hexagon_V6_vgtuw_and_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtuw_and_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtuw_or,QV_ftype_QVVIVI,3)
-// tag : V6_vgtuw_or
-def int_hexagon_V6_vgtuw_or :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_vgtuw_or">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtuw_or_128B,QV_ftype_QVVIVI,3)
-// tag : V6_vgtuw_or_128B
-def int_hexagon_V6_vgtuw_or_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtuw_or_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtuw_xor,QV_ftype_QVVIVI,3)
-// tag : V6_vgtuw_xor
-def int_hexagon_V6_vgtuw_xor :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_vgtuw_xor">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtuw_xor_128B,QV_ftype_QVVIVI,3)
-// tag : V6_vgtuw_xor_128B
-def int_hexagon_V6_vgtuw_xor_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtuw_xor_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtuh,QV_ftype_VIVI,2)
-// tag : V6_vgtuh
-def int_hexagon_V6_vgtuh :
-Hexagon_v64iv512v512_Intrinsic<"HEXAGON_V6_vgtuh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtuh_128B,QV_ftype_VIVI,2)
-// tag : V6_vgtuh_128B
-def int_hexagon_V6_vgtuh_128B :
-Hexagon_v128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtuh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtuh_and,QV_ftype_QVVIVI,3)
-// tag : V6_vgtuh_and
-def int_hexagon_V6_vgtuh_and :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_vgtuh_and">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtuh_and_128B,QV_ftype_QVVIVI,3)
-// tag : V6_vgtuh_and_128B
-def int_hexagon_V6_vgtuh_and_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtuh_and_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtuh_or,QV_ftype_QVVIVI,3)
-// tag : V6_vgtuh_or
-def int_hexagon_V6_vgtuh_or :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_vgtuh_or">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtuh_or_128B,QV_ftype_QVVIVI,3)
-// tag : V6_vgtuh_or_128B
-def int_hexagon_V6_vgtuh_or_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtuh_or_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtuh_xor,QV_ftype_QVVIVI,3)
-// tag : V6_vgtuh_xor
-def int_hexagon_V6_vgtuh_xor :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_vgtuh_xor">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtuh_xor_128B,QV_ftype_QVVIVI,3)
-// tag : V6_vgtuh_xor_128B
-def int_hexagon_V6_vgtuh_xor_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtuh_xor_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtub,QV_ftype_VIVI,2)
-// tag : V6_vgtub
-def int_hexagon_V6_vgtub :
-Hexagon_v64iv512v512_Intrinsic<"HEXAGON_V6_vgtub">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtub_128B,QV_ftype_VIVI,2)
-// tag : V6_vgtub_128B
-def int_hexagon_V6_vgtub_128B :
-Hexagon_v128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtub_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtub_and,QV_ftype_QVVIVI,3)
-// tag : V6_vgtub_and
-def int_hexagon_V6_vgtub_and :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_vgtub_and">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtub_and_128B,QV_ftype_QVVIVI,3)
-// tag : V6_vgtub_and_128B
-def int_hexagon_V6_vgtub_and_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtub_and_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtub_or,QV_ftype_QVVIVI,3)
-// tag : V6_vgtub_or
-def int_hexagon_V6_vgtub_or :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_vgtub_or">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtub_or_128B,QV_ftype_QVVIVI,3)
-// tag : V6_vgtub_or_128B
-def int_hexagon_V6_vgtub_or_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtub_or_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtub_xor,QV_ftype_QVVIVI,3)
-// tag : V6_vgtub_xor
-def int_hexagon_V6_vgtub_xor :
-Hexagon_v64iv64iv512v512_Intrinsic<"HEXAGON_V6_vgtub_xor">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vgtub_xor_128B,QV_ftype_QVVIVI,3)
-// tag : V6_vgtub_xor_128B
-def int_hexagon_V6_vgtub_xor_128B :
-Hexagon_v128iv128iv1024v1024_Intrinsic<"HEXAGON_V6_vgtub_xor_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_pred_or,QV_ftype_QVQV,2)
-// tag : V6_pred_or
-def int_hexagon_V6_pred_or :
-Hexagon_v64iv64iv64i_Intrinsic<"HEXAGON_V6_pred_or">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_pred_or_128B,QV_ftype_QVQV,2)
-// tag : V6_pred_or_128B
-def int_hexagon_V6_pred_or_128B :
-Hexagon_v128iv128iv128i_Intrinsic<"HEXAGON_V6_pred_or_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_pred_and,QV_ftype_QVQV,2)
-// tag : V6_pred_and
-def int_hexagon_V6_pred_and :
-Hexagon_v64iv64iv64i_Intrinsic<"HEXAGON_V6_pred_and">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_pred_and_128B,QV_ftype_QVQV,2)
-// tag : V6_pred_and_128B
-def int_hexagon_V6_pred_and_128B :
-Hexagon_v128iv128iv128i_Intrinsic<"HEXAGON_V6_pred_and_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_pred_not,QV_ftype_QV,1)
-// tag : V6_pred_not
-def int_hexagon_V6_pred_not :
-Hexagon_v64iv64i_Intrinsic<"HEXAGON_V6_pred_not">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_pred_not_128B,QV_ftype_QV,1)
-// tag : V6_pred_not_128B
-def int_hexagon_V6_pred_not_128B :
-Hexagon_v128iv128i_Intrinsic<"HEXAGON_V6_pred_not_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_pred_xor,QV_ftype_QVQV,2)
-// tag : V6_pred_xor
-def int_hexagon_V6_pred_xor :
-Hexagon_v64iv64iv64i_Intrinsic<"HEXAGON_V6_pred_xor">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_pred_xor_128B,QV_ftype_QVQV,2)
-// tag : V6_pred_xor_128B
-def int_hexagon_V6_pred_xor_128B :
-Hexagon_v128iv128iv128i_Intrinsic<"HEXAGON_V6_pred_xor_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_pred_and_n,QV_ftype_QVQV,2)
-// tag : V6_pred_and_n
-def int_hexagon_V6_pred_and_n :
-Hexagon_v64iv64iv64i_Intrinsic<"HEXAGON_V6_pred_and_n">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_pred_and_n_128B,QV_ftype_QVQV,2)
-// tag : V6_pred_and_n_128B
-def int_hexagon_V6_pred_and_n_128B :
-Hexagon_v128iv128iv128i_Intrinsic<"HEXAGON_V6_pred_and_n_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_pred_or_n,QV_ftype_QVQV,2)
-// tag : V6_pred_or_n
-def int_hexagon_V6_pred_or_n :
-Hexagon_v64iv64iv64i_Intrinsic<"HEXAGON_V6_pred_or_n">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_pred_or_n_128B,QV_ftype_QVQV,2)
-// tag : V6_pred_or_n_128B
-def int_hexagon_V6_pred_or_n_128B :
-Hexagon_v128iv128iv128i_Intrinsic<"HEXAGON_V6_pred_or_n_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_pred_scalar2,QV_ftype_SI,1)
-// tag : V6_pred_scalar2
-def int_hexagon_V6_pred_scalar2 :
-Hexagon_v64ii_Intrinsic<"HEXAGON_V6_pred_scalar2">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_pred_scalar2_128B,QV_ftype_SI,1)
-// tag : V6_pred_scalar2_128B
-def int_hexagon_V6_pred_scalar2_128B :
-Hexagon_v128ii_Intrinsic<"HEXAGON_V6_pred_scalar2_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmux,VI_ftype_QVVIVI,3)
-// tag : V6_vmux
-def int_hexagon_V6_vmux :
-Hexagon_v512v64iv512v512_Intrinsic<"HEXAGON_V6_vmux">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmux_128B,VI_ftype_QVVIVI,3)
-// tag : V6_vmux_128B
-def int_hexagon_V6_vmux_128B :
-Hexagon_v1024v128iv1024v1024_Intrinsic<"HEXAGON_V6_vmux_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vswap,VD_ftype_QVVIVI,3)
-// tag : V6_vswap
-def int_hexagon_V6_vswap :
-Hexagon_v1024v64iv512v512_Intrinsic<"HEXAGON_V6_vswap">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vswap_128B,VD_ftype_QVVIVI,3)
-// tag : V6_vswap_128B
-def int_hexagon_V6_vswap_128B :
-Hexagon_v2048v128iv1024v1024_Intrinsic<"HEXAGON_V6_vswap_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmaxub,VI_ftype_VIVI,2)
-// tag : V6_vmaxub
-def int_hexagon_V6_vmaxub :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vmaxub">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmaxub_128B,VI_ftype_VIVI,2)
-// tag : V6_vmaxub_128B
-def int_hexagon_V6_vmaxub_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmaxub_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vminub,VI_ftype_VIVI,2)
-// tag : V6_vminub
-def int_hexagon_V6_vminub :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vminub">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vminub_128B,VI_ftype_VIVI,2)
-// tag : V6_vminub_128B
-def int_hexagon_V6_vminub_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vminub_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmaxuh,VI_ftype_VIVI,2)
-// tag : V6_vmaxuh
-def int_hexagon_V6_vmaxuh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vmaxuh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmaxuh_128B,VI_ftype_VIVI,2)
-// tag : V6_vmaxuh_128B
-def int_hexagon_V6_vmaxuh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmaxuh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vminuh,VI_ftype_VIVI,2)
-// tag : V6_vminuh
-def int_hexagon_V6_vminuh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vminuh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vminuh_128B,VI_ftype_VIVI,2)
-// tag : V6_vminuh_128B
-def int_hexagon_V6_vminuh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vminuh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmaxh,VI_ftype_VIVI,2)
-// tag : V6_vmaxh
-def int_hexagon_V6_vmaxh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vmaxh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmaxh_128B,VI_ftype_VIVI,2)
-// tag : V6_vmaxh_128B
-def int_hexagon_V6_vmaxh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmaxh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vminh,VI_ftype_VIVI,2)
-// tag : V6_vminh
-def int_hexagon_V6_vminh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vminh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vminh_128B,VI_ftype_VIVI,2)
-// tag : V6_vminh_128B
-def int_hexagon_V6_vminh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vminh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmaxw,VI_ftype_VIVI,2)
-// tag : V6_vmaxw
-def int_hexagon_V6_vmaxw :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vmaxw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmaxw_128B,VI_ftype_VIVI,2)
-// tag : V6_vmaxw_128B
-def int_hexagon_V6_vmaxw_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmaxw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vminw,VI_ftype_VIVI,2)
-// tag : V6_vminw
-def int_hexagon_V6_vminw :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vminw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vminw_128B,VI_ftype_VIVI,2)
-// tag : V6_vminw_128B
-def int_hexagon_V6_vminw_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vminw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsathub,VI_ftype_VIVI,2)
-// tag : V6_vsathub
-def int_hexagon_V6_vsathub :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vsathub">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsathub_128B,VI_ftype_VIVI,2)
-// tag : V6_vsathub_128B
-def int_hexagon_V6_vsathub_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsathub_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsatwh,VI_ftype_VIVI,2)
-// tag : V6_vsatwh
-def int_hexagon_V6_vsatwh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vsatwh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsatwh_128B,VI_ftype_VIVI,2)
-// tag : V6_vsatwh_128B
-def int_hexagon_V6_vsatwh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsatwh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vshuffeb,VI_ftype_VIVI,2)
-// tag : V6_vshuffeb
-def int_hexagon_V6_vshuffeb :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vshuffeb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vshuffeb_128B,VI_ftype_VIVI,2)
-// tag : V6_vshuffeb_128B
-def int_hexagon_V6_vshuffeb_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vshuffeb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vshuffob,VI_ftype_VIVI,2)
-// tag : V6_vshuffob
-def int_hexagon_V6_vshuffob :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vshuffob">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vshuffob_128B,VI_ftype_VIVI,2)
-// tag : V6_vshuffob_128B
-def int_hexagon_V6_vshuffob_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vshuffob_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vshufeh,VI_ftype_VIVI,2)
-// tag : V6_vshufeh
-def int_hexagon_V6_vshufeh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vshufeh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vshufeh_128B,VI_ftype_VIVI,2)
-// tag : V6_vshufeh_128B
-def int_hexagon_V6_vshufeh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vshufeh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vshufoh,VI_ftype_VIVI,2)
-// tag : V6_vshufoh
-def int_hexagon_V6_vshufoh :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vshufoh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vshufoh_128B,VI_ftype_VIVI,2)
-// tag : V6_vshufoh_128B
-def int_hexagon_V6_vshufoh_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vshufoh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vshuffvdd,VD_ftype_VIVISI,3)
-// tag : V6_vshuffvdd
-def int_hexagon_V6_vshuffvdd :
-Hexagon_v1024v512v512i_Intrinsic<"HEXAGON_V6_vshuffvdd">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vshuffvdd_128B,VD_ftype_VIVISI,3)
-// tag : V6_vshuffvdd_128B
-def int_hexagon_V6_vshuffvdd_128B :
-Hexagon_v2048v1024v1024i_Intrinsic<"HEXAGON_V6_vshuffvdd_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdealvdd,VD_ftype_VIVISI,3)
-// tag : V6_vdealvdd
-def int_hexagon_V6_vdealvdd :
-Hexagon_v1024v512v512i_Intrinsic<"HEXAGON_V6_vdealvdd">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdealvdd_128B,VD_ftype_VIVISI,3)
-// tag : V6_vdealvdd_128B
-def int_hexagon_V6_vdealvdd_128B :
-Hexagon_v2048v1024v1024i_Intrinsic<"HEXAGON_V6_vdealvdd_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vshufoeh,VD_ftype_VIVI,2)
-// tag : V6_vshufoeh
-def int_hexagon_V6_vshufoeh :
-Hexagon_v1024v512v512_Intrinsic<"HEXAGON_V6_vshufoeh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vshufoeh_128B,VD_ftype_VIVI,2)
-// tag : V6_vshufoeh_128B
-def int_hexagon_V6_vshufoeh_128B :
-Hexagon_v2048v1024v1024_Intrinsic<"HEXAGON_V6_vshufoeh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vshufoeb,VD_ftype_VIVI,2)
-// tag : V6_vshufoeb
-def int_hexagon_V6_vshufoeb :
-Hexagon_v1024v512v512_Intrinsic<"HEXAGON_V6_vshufoeb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vshufoeb_128B,VD_ftype_VIVI,2)
-// tag : V6_vshufoeb_128B
-def int_hexagon_V6_vshufoeb_128B :
-Hexagon_v2048v1024v1024_Intrinsic<"HEXAGON_V6_vshufoeb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdealh,VI_ftype_VI,1)
-// tag : V6_vdealh
-def int_hexagon_V6_vdealh :
-Hexagon_v512v512_Intrinsic<"HEXAGON_V6_vdealh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdealh_128B,VI_ftype_VI,1)
-// tag : V6_vdealh_128B
-def int_hexagon_V6_vdealh_128B :
-Hexagon_v1024v1024_Intrinsic<"HEXAGON_V6_vdealh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdealb,VI_ftype_VI,1)
-// tag : V6_vdealb
-def int_hexagon_V6_vdealb :
-Hexagon_v512v512_Intrinsic<"HEXAGON_V6_vdealb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdealb_128B,VI_ftype_VI,1)
-// tag : V6_vdealb_128B
-def int_hexagon_V6_vdealb_128B :
-Hexagon_v1024v1024_Intrinsic<"HEXAGON_V6_vdealb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdealb4w,VI_ftype_VIVI,2)
-// tag : V6_vdealb4w
-def int_hexagon_V6_vdealb4w :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vdealb4w">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdealb4w_128B,VI_ftype_VIVI,2)
-// tag : V6_vdealb4w_128B
-def int_hexagon_V6_vdealb4w_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vdealb4w_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vshuffh,VI_ftype_VI,1)
-// tag : V6_vshuffh
-def int_hexagon_V6_vshuffh :
-Hexagon_v512v512_Intrinsic<"HEXAGON_V6_vshuffh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vshuffh_128B,VI_ftype_VI,1)
-// tag : V6_vshuffh_128B
-def int_hexagon_V6_vshuffh_128B :
-Hexagon_v1024v1024_Intrinsic<"HEXAGON_V6_vshuffh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vshuffb,VI_ftype_VI,1)
-// tag : V6_vshuffb
-def int_hexagon_V6_vshuffb :
-Hexagon_v512v512_Intrinsic<"HEXAGON_V6_vshuffb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vshuffb_128B,VI_ftype_VI,1)
-// tag : V6_vshuffb_128B
-def int_hexagon_V6_vshuffb_128B :
-Hexagon_v1024v1024_Intrinsic<"HEXAGON_V6_vshuffb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_extractw,SI_ftype_VISI,2)
-// tag : V6_extractw
-def int_hexagon_V6_extractw :
-Hexagon_iv512i_Intrinsic<"HEXAGON_V6_extractw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_extractw_128B,SI_ftype_VISI,2)
-// tag : V6_extractw_128B
-def int_hexagon_V6_extractw_128B :
-Hexagon_iv1024i_Intrinsic<"HEXAGON_V6_extractw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vinsertwr,VI_ftype_VISI,2)
-// tag : V6_vinsertwr
-def int_hexagon_V6_vinsertwr :
-Hexagon_v512v512i_Intrinsic<"HEXAGON_V6_vinsertwr">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vinsertwr_128B,VI_ftype_VISI,2)
-// tag : V6_vinsertwr_128B
-def int_hexagon_V6_vinsertwr_128B :
-Hexagon_v1024v1024i_Intrinsic<"HEXAGON_V6_vinsertwr_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_lvsplatw,VI_ftype_SI,1)
-// tag : V6_lvsplatw
-def int_hexagon_V6_lvsplatw :
-Hexagon_v512i_Intrinsic<"HEXAGON_V6_lvsplatw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_lvsplatw_128B,VI_ftype_SI,1)
-// tag : V6_lvsplatw_128B
-def int_hexagon_V6_lvsplatw_128B :
-Hexagon_v1024i_Intrinsic<"HEXAGON_V6_lvsplatw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vassign,VI_ftype_VI,1)
-// tag : V6_vassign
-def int_hexagon_V6_vassign :
-Hexagon_v512v512_Intrinsic<"HEXAGON_V6_vassign">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vassign_128B,VI_ftype_VI,1)
-// tag : V6_vassign_128B
-def int_hexagon_V6_vassign_128B :
-Hexagon_v1024v1024_Intrinsic<"HEXAGON_V6_vassign_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vcombine,VD_ftype_VIVI,2)
-// tag : V6_vcombine
-def int_hexagon_V6_vcombine :
-Hexagon_v1024v512v512_Intrinsic<"HEXAGON_V6_vcombine">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vcombine_128B,VD_ftype_VIVI,2)
-// tag : V6_vcombine_128B
-def int_hexagon_V6_vcombine_128B :
-Hexagon_v2048v1024v1024_Intrinsic<"HEXAGON_V6_vcombine_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdelta,VI_ftype_VIVI,2)
-// tag : V6_vdelta
-def int_hexagon_V6_vdelta :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vdelta">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vdelta_128B,VI_ftype_VIVI,2)
-// tag : V6_vdelta_128B
-def int_hexagon_V6_vdelta_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vdelta_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrdelta,VI_ftype_VIVI,2)
-// tag : V6_vrdelta
-def int_hexagon_V6_vrdelta :
-Hexagon_v512v512v512_Intrinsic<"HEXAGON_V6_vrdelta">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrdelta_128B,VI_ftype_VIVI,2)
-// tag : V6_vrdelta_128B
-def int_hexagon_V6_vrdelta_128B :
-Hexagon_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vrdelta_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vcl0w,VI_ftype_VI,1)
-// tag : V6_vcl0w
-def int_hexagon_V6_vcl0w :
-Hexagon_v512v512_Intrinsic<"HEXAGON_V6_vcl0w">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vcl0w_128B,VI_ftype_VI,1)
-// tag : V6_vcl0w_128B
-def int_hexagon_V6_vcl0w_128B :
-Hexagon_v1024v1024_Intrinsic<"HEXAGON_V6_vcl0w_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vcl0h,VI_ftype_VI,1)
-// tag : V6_vcl0h
-def int_hexagon_V6_vcl0h :
-Hexagon_v512v512_Intrinsic<"HEXAGON_V6_vcl0h">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vcl0h_128B,VI_ftype_VI,1)
-// tag : V6_vcl0h_128B
-def int_hexagon_V6_vcl0h_128B :
-Hexagon_v1024v1024_Intrinsic<"HEXAGON_V6_vcl0h_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vnormamtw,VI_ftype_VI,1)
-// tag : V6_vnormamtw
-def int_hexagon_V6_vnormamtw :
-Hexagon_v512v512_Intrinsic<"HEXAGON_V6_vnormamtw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vnormamtw_128B,VI_ftype_VI,1)
-// tag : V6_vnormamtw_128B
-def int_hexagon_V6_vnormamtw_128B :
-Hexagon_v1024v1024_Intrinsic<"HEXAGON_V6_vnormamtw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vnormamth,VI_ftype_VI,1)
-// tag : V6_vnormamth
-def int_hexagon_V6_vnormamth :
-Hexagon_v512v512_Intrinsic<"HEXAGON_V6_vnormamth">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vnormamth_128B,VI_ftype_VI,1)
-// tag : V6_vnormamth_128B
-def int_hexagon_V6_vnormamth_128B :
-Hexagon_v1024v1024_Intrinsic<"HEXAGON_V6_vnormamth_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vpopcounth,VI_ftype_VI,1)
-// tag : V6_vpopcounth
-def int_hexagon_V6_vpopcounth :
-Hexagon_v512v512_Intrinsic<"HEXAGON_V6_vpopcounth">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vpopcounth_128B,VI_ftype_VI,1)
-// tag : V6_vpopcounth_128B
-def int_hexagon_V6_vpopcounth_128B :
-Hexagon_v1024v1024_Intrinsic<"HEXAGON_V6_vpopcounth_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvvb,VI_ftype_VIVISI,3)
-// tag : V6_vlutvvb
-def int_hexagon_V6_vlutvvb :
-Hexagon_v512v512v512i_Intrinsic<"HEXAGON_V6_vlutvvb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvvb_128B,VI_ftype_VIVISI,3)
-// tag : V6_vlutvvb_128B
-def int_hexagon_V6_vlutvvb_128B :
-Hexagon_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vlutvvb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvvb_oracc,VI_ftype_VIVIVISI,4)
-// tag : V6_vlutvvb_oracc
-def int_hexagon_V6_vlutvvb_oracc :
-Hexagon_v512v512v512v512i_Intrinsic<"HEXAGON_V6_vlutvvb_oracc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvvb_oracc_128B,VI_ftype_VIVIVISI,4)
-// tag : V6_vlutvvb_oracc_128B
-def int_hexagon_V6_vlutvvb_oracc_128B :
-Hexagon_v1024v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vlutvvb_oracc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvwh,VD_ftype_VIVISI,3)
-// tag : V6_vlutvwh
-def int_hexagon_V6_vlutvwh :
-Hexagon_v1024v512v512i_Intrinsic<"HEXAGON_V6_vlutvwh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvwh_128B,VD_ftype_VIVISI,3)
-// tag : V6_vlutvwh_128B
-def int_hexagon_V6_vlutvwh_128B :
-Hexagon_v2048v1024v1024i_Intrinsic<"HEXAGON_V6_vlutvwh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvwh_oracc,VD_ftype_VDVIVISI,4)
-// tag : V6_vlutvwh_oracc
-def int_hexagon_V6_vlutvwh_oracc :
-Hexagon_v1024v1024v512v512i_Intrinsic<"HEXAGON_V6_vlutvwh_oracc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvwh_oracc_128B,VD_ftype_VDVIVISI,4)
-// tag : V6_vlutvwh_oracc_128B
-def int_hexagon_V6_vlutvwh_oracc_128B :
-Hexagon_v2048v2048v1024v1024i_Intrinsic<"HEXAGON_V6_vlutvwh_oracc_128B">;
-
-//
-// Masked vector stores
-//
-def int_hexagon_V6_vS32b_qpred_ai :
-Hexagon_vv64ivmemv512_Intrinsic<"HEXAGON_V6_vS32b_qpred_ai">;
-
-def int_hexagon_V6_vS32b_nqpred_ai :
-Hexagon_vv64ivmemv512_Intrinsic<"HEXAGON_V6_vS32b_nqpred_ai">;
-
-def int_hexagon_V6_vS32b_nt_qpred_ai :
-Hexagon_vv64ivmemv512_Intrinsic<"HEXAGON_V6_vS32b_nt_qpred_ai">;
-
-def int_hexagon_V6_vS32b_nt_nqpred_ai :
-Hexagon_vv64ivmemv512_Intrinsic<"HEXAGON_V6_vS32b_nt_nqpred_ai">;
-
-def int_hexagon_V6_vS32b_qpred_ai_128B :
-Hexagon_vv128ivmemv1024_Intrinsic<"HEXAGON_V6_vS32b_qpred_ai_128B">;
-
-def int_hexagon_V6_vS32b_nqpred_ai_128B :
-Hexagon_vv128ivmemv1024_Intrinsic<"HEXAGON_V6_vS32b_nqpred_ai_128B">;
-
-def int_hexagon_V6_vS32b_nt_qpred_ai_128B :
-Hexagon_vv128ivmemv1024_Intrinsic<"HEXAGON_V6_vS32b_nt_qpred_ai_128B">;
-
-def int_hexagon_V6_vS32b_nt_nqpred_ai_128B :
-Hexagon_vv128ivmemv1024_Intrinsic<"HEXAGON_V6_vS32b_nt_nqpred_ai_128B">;
-
-def int_hexagon_V6_vmaskedstoreq :
-Hexagon_vv64ivmemv512_Intrinsic<"HEXAGON_V6_vmaskedstoreq">;
-
-def int_hexagon_V6_vmaskedstorenq :
-Hexagon_vv64ivmemv512_Intrinsic<"HEXAGON_V6_vmaskedstorenq">;
-
-def int_hexagon_V6_vmaskedstorentq :
-Hexagon_vv64ivmemv512_Intrinsic<"HEXAGON_V6_vmaskedstorentq">;
-
-def int_hexagon_V6_vmaskedstorentnq :
-Hexagon_vv64ivmemv512_Intrinsic<"HEXAGON_V6_vmaskedstorentnq">;
-
-def int_hexagon_V6_vmaskedstoreq_128B :
-Hexagon_vv128ivmemv1024_Intrinsic<"HEXAGON_V6_vmaskedstoreq_128B">;
-
-def int_hexagon_V6_vmaskedstorenq_128B :
-Hexagon_vv128ivmemv1024_Intrinsic<"HEXAGON_V6_vmaskedstorenq_128B">;
-
-def int_hexagon_V6_vmaskedstorentq_128B :
-Hexagon_vv128ivmemv1024_Intrinsic<"HEXAGON_V6_vmaskedstorentq_128B">;
-
-def int_hexagon_V6_vmaskedstorentnq_128B :
-Hexagon_vv128ivmemv1024_Intrinsic<"HEXAGON_V6_vmaskedstorentnq_128B">;
+def int_hexagon_vmemset : Hexagon_Intrinsic<"hexagon_vmemset",
+ [], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty],
+ [IntrArgMemOnly, NoCapture<0>, WriteOnly<0>]>;
multiclass Hexagon_custom_circ_ld_Intrinsic<LLVMType ElTy> {
def NAME#_pci : Hexagon_NonGCC_Intrinsic<
@@ -9301,1424 +221,74 @@
def int_hexagon_S2_storeri_pbr : Hexagon_mem_memsisi_Intrinsic<"brev_stw">;
def int_hexagon_S2_storerd_pbr : Hexagon_mem_memdisi_Intrinsic<"brev_std">;
-
-///
-/// HexagonV62 intrinsics
-///
+//
+// Masked vector stores
+//
//
-// Hexagon_LLiLLiLLi_Intrinsic<string GCCIntSuffix>
-// tag : M6_vabsdiffb
-class Hexagon_LLiLLiLLi_Intrinsic<string GCCIntSuffix>
+// Hexagon_vv64ivmemv512_Intrinsic<string GCCIntSuffix>
+// tag: V6_vS32b_qpred_ai
+class Hexagon_vv64ivmemv512_Intrinsic<string GCCIntSuffix>
: Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i64_ty,llvm_i64_ty],
- [IntrNoMem]>;
+ [], [llvm_v512i1_ty,llvm_ptr_ty,llvm_v16i32_ty],
+ [IntrArgMemOnly]>;
//
-// Hexagon_LLii_Intrinsic<string GCCIntSuffix>
-// tag : S6_vsplatrbp
-class Hexagon_LLii_Intrinsic<string GCCIntSuffix>
+// Hexagon_vv128ivmemv1024_Intrinsic<string GCCIntSuffix>
+// tag: V6_vS32b_qpred_ai_128B
+class Hexagon_vv128ivmemv1024_Intrinsic<string GCCIntSuffix>
: Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i64_ty], [llvm_i32_ty],
- [IntrNoMem]>;
+ [], [llvm_v1024i1_ty,llvm_ptr_ty,llvm_v32i32_ty],
+ [IntrArgMemOnly]>;
-//
-// Hexagon_V62_v512v512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vlsrb
-class Hexagon_V62_v512v512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
+def int_hexagon_V6_vS32b_qpred_ai :
+Hexagon_vv64ivmemv512_Intrinsic<"HEXAGON_V6_vS32b_qpred_ai">;
-//
-// Hexagon_V62_v1024v1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vlsrb_128B
-class Hexagon_V62_v1024v1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
+def int_hexagon_V6_vS32b_nqpred_ai :
+Hexagon_vv64ivmemv512_Intrinsic<"HEXAGON_V6_vS32b_nqpred_ai">;
-//
-// Hexagon_V62_v512v512v512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vasrwuhrndsat
-class Hexagon_V62_v512v512v512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
+def int_hexagon_V6_vS32b_nt_qpred_ai :
+Hexagon_vv64ivmemv512_Intrinsic<"HEXAGON_V6_vS32b_nt_qpred_ai">;
-//
-// Hexagon_V62_v1024v1024v1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vasrwuhrndsat_128B
-class Hexagon_V62_v1024v1024v1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
+def int_hexagon_V6_vS32b_nt_nqpred_ai :
+Hexagon_vv64ivmemv512_Intrinsic<"HEXAGON_V6_vS32b_nt_nqpred_ai">;
-//
-// Hexagon_V62_v512v512v512_Intrinsic<string GCCIntSuffix>
-// tag : V6_vrounduwuh
-class Hexagon_V62_v512v512v512_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty],
- [IntrNoMem]>;
+def int_hexagon_V6_vS32b_qpred_ai_128B :
+Hexagon_vv128ivmemv1024_Intrinsic<"HEXAGON_V6_vS32b_qpred_ai_128B">;
-//
-// Hexagon_V62_v1024v1024v1024_Intrinsic<string GCCIntSuffix>
-// tag : V6_vrounduwuh_128B
-class Hexagon_V62_v1024v1024v1024_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty],
- [IntrNoMem]>;
+def int_hexagon_V6_vS32b_nqpred_ai_128B :
+Hexagon_vv128ivmemv1024_Intrinsic<"HEXAGON_V6_vS32b_nqpred_ai_128B">;
-//
-// Hexagon_V62_v2048v2048v2048_Intrinsic<string GCCIntSuffix>
-// tag : V6_vadduwsat_dv_128B
-class Hexagon_V62_v2048v2048v2048_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v64i32_ty],
- [IntrNoMem]>;
+def int_hexagon_V6_vS32b_nt_qpred_ai_128B :
+Hexagon_vv128ivmemv1024_Intrinsic<"HEXAGON_V6_vS32b_nt_qpred_ai_128B">;
-//
-// Hexagon_V62_v1024v1024v512v512_Intrinsic<string GCCIntSuffix>
-// tag : V6_vaddhw_acc
-class Hexagon_V62_v1024v1024v512v512_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v16i32_ty,llvm_v16i32_ty],
- [IntrNoMem]>;
+def int_hexagon_V6_vS32b_nt_nqpred_ai_128B :
+Hexagon_vv128ivmemv1024_Intrinsic<"HEXAGON_V6_vS32b_nt_nqpred_ai_128B">;
-//
-// Hexagon_V62_v2048v2048v1024v1024_Intrinsic<string GCCIntSuffix>
-// tag : V6_vaddhw_acc_128B
-class Hexagon_V62_v2048v2048v1024v1024_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v32i32_ty,llvm_v32i32_ty],
- [IntrNoMem]>;
+def int_hexagon_V6_vmaskedstoreq :
+Hexagon_vv64ivmemv512_Intrinsic<"HEXAGON_V6_vmaskedstoreq">;
-//
-// Hexagon_V62_v1024v512v512_Intrinsic<string GCCIntSuffix>
-// tag : V6_vmpyewuh_64
-class Hexagon_V62_v1024v512v512_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty],
- [IntrNoMem]>;
+def int_hexagon_V6_vmaskedstorenq :
+Hexagon_vv64ivmemv512_Intrinsic<"HEXAGON_V6_vmaskedstorenq">;
-//
-// Hexagon_V62_v2048v1024v1024_Intrinsic<string GCCIntSuffix>
-// tag : V6_vmpyewuh_64_128B
-class Hexagon_V62_v2048v1024v1024_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty],
- [IntrNoMem]>;
+def int_hexagon_V6_vmaskedstorentq :
+Hexagon_vv64ivmemv512_Intrinsic<"HEXAGON_V6_vmaskedstorentq">;
-//
-// Hexagon_V62_v2048v2048i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vmpauhb_128B
-class Hexagon_V62_v2048v2048i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
+def int_hexagon_V6_vmaskedstorentnq :
+Hexagon_vv64ivmemv512_Intrinsic<"HEXAGON_V6_vmaskedstorentnq">;
-//
-// Hexagon_V62_v2048v2048v2048i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vmpauhb_acc_128B
-class Hexagon_V62_v2048v2048v2048i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v64i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
+def int_hexagon_V6_vmaskedstoreq_128B :
+Hexagon_vv128ivmemv1024_Intrinsic<"HEXAGON_V6_vmaskedstoreq_128B">;
-//
-// Hexagon_V62_v512v64ii_Intrinsic<string GCCIntSuffix>
-// tag : V6_vandnqrt
-class Hexagon_V62_v512v64ii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v512i1_ty,llvm_i32_ty],
- [IntrNoMem]>;
+def int_hexagon_V6_vmaskedstorenq_128B :
+Hexagon_vv128ivmemv1024_Intrinsic<"HEXAGON_V6_vmaskedstorenq_128B">;
-//
-// Hexagon_V62_v1024v128ii_Intrinsic<string GCCIntSuffix>
-// tag : V6_vandnqrt_128B
-class Hexagon_V62_v1024v128ii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v1024i1_ty,llvm_i32_ty],
- [IntrNoMem]>;
+def int_hexagon_V6_vmaskedstorentq_128B :
+Hexagon_vv128ivmemv1024_Intrinsic<"HEXAGON_V6_vmaskedstorentq_128B">;
-//
-// Hexagon_V62_v512v512v64ii_Intrinsic<string GCCIntSuffix>
-// tag : V6_vandnqrt_acc
-class Hexagon_V62_v512v512v64ii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v512i1_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V62_v1024v1024v128ii_Intrinsic<string GCCIntSuffix>
-// tag : V6_vandnqrt_acc_128B
-class Hexagon_V62_v1024v1024v128ii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v1024i1_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V62_v512v64iv512_Intrinsic<string GCCIntSuffix>
-// tag : V6_vandvqv
-class Hexagon_V62_v512v64iv512_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v512i1_ty,llvm_v16i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V62_v1024v128iv1024_Intrinsic<string GCCIntSuffix>
-// tag : V6_vandvqv_128B
-class Hexagon_V62_v1024v128iv1024_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v1024i1_ty,llvm_v32i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V62_v64ii_Intrinsic<string GCCIntSuffix>
-// tag : V6_pred_scalar2v2
-class Hexagon_V62_v64ii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v512i1_ty], [llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V62_v128ii_Intrinsic<string GCCIntSuffix>
-// tag : V6_pred_scalar2v2_128B
-class Hexagon_V62_v128ii_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v1024i1_ty], [llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V62_v64iv64iv64i_Intrinsic<string GCCIntSuffix>
-// tag : V6_shuffeqw
-class Hexagon_V62_v64iv64iv64i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v512i1_ty], [llvm_v512i1_ty,llvm_v512i1_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V62_v128iv128iv128i_Intrinsic<string GCCIntSuffix>
-// tag : V6_shuffeqw_128B
-class Hexagon_V62_v128iv128iv128i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v1024i1_ty], [llvm_v1024i1_ty,llvm_v1024i1_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V62_v512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_lvsplath
-class Hexagon_V62_v512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V62_v1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_lvsplath_128B
-class Hexagon_V62_v1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V62_v512v512v512v512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vlutvvb_oracci
-class Hexagon_V62_v512v512v512v512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty,llvm_v16i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V62_v1024v1024v1024v1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vlutvvb_oracci_128B
-class Hexagon_V62_v1024v1024v1024v1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V62_v1024v512v512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vlutvwhi
-class Hexagon_V62_v1024v512v512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V62_v2048v1024v1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vlutvwhi_128B
-class Hexagon_V62_v2048v1024v1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V62_v1024v1024v512v512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vlutvwh_oracci
-class Hexagon_V62_v1024v1024v512v512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v16i32_ty,llvm_v16i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V62_v2048v2048v1024v1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vlutvwh_oracci_128B
-class Hexagon_V62_v2048v2048v1024v1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v32i32_ty,llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-// Hexagon_v512v64iv512v512v64i_Intrinsic<string GCCIntSuffix>
-// tag: V6_vaddcarry
-class Hexagon_v512v64iv512v512v64i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty, llvm_v512i1_ty], [llvm_v16i32_ty,llvm_v16i32_ty,llvm_v512i1_ty],
- [IntrNoMem]>;
-
-// Hexagon_v1024v128iv1024v1024v128i_Intrinsic<string GCCIntSuffix>
-// tag: V6_vaddcarry_128B
-class Hexagon_v1024v128iv1024v1024v128i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty, llvm_v1024i1_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_v1024i1_ty],
- [IntrNoMem]>;
-
-
-//
-// BUILTIN_INFO(HEXAGON.M6_vabsdiffb,DI_ftype_DIDI,2)
-// tag : M6_vabsdiffb
-def int_hexagon_M6_vabsdiffb :
-Hexagon_LLiLLiLLi_Intrinsic<"HEXAGON_M6_vabsdiffb">;
-
-//
-// BUILTIN_INFO(HEXAGON.M6_vabsdiffub,DI_ftype_DIDI,2)
-// tag : M6_vabsdiffub
-def int_hexagon_M6_vabsdiffub :
-Hexagon_LLiLLiLLi_Intrinsic<"HEXAGON_M6_vabsdiffub">;
-
-//
-// BUILTIN_INFO(HEXAGON.S6_vtrunehb_ppp,DI_ftype_DIDI,2)
-// tag : S6_vtrunehb_ppp
-def int_hexagon_S6_vtrunehb_ppp :
-Hexagon_LLiLLiLLi_Intrinsic<"HEXAGON_S6_vtrunehb_ppp">;
-
-//
-// BUILTIN_INFO(HEXAGON.S6_vtrunohb_ppp,DI_ftype_DIDI,2)
-// tag : S6_vtrunohb_ppp
-def int_hexagon_S6_vtrunohb_ppp :
-Hexagon_LLiLLiLLi_Intrinsic<"HEXAGON_S6_vtrunohb_ppp">;
-
-//
-// BUILTIN_INFO(HEXAGON.S6_vsplatrbp,DI_ftype_SI,1)
-// tag : S6_vsplatrbp
-def int_hexagon_S6_vsplatrbp :
-Hexagon_LLii_Intrinsic<"HEXAGON_S6_vsplatrbp">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlsrb,VI_ftype_VISI,2)
-// tag : V6_vlsrb
-def int_hexagon_V6_vlsrb :
-Hexagon_V62_v512v512i_Intrinsic<"HEXAGON_V6_vlsrb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlsrb_128B,VI_ftype_VISI,2)
-// tag : V6_vlsrb_128B
-def int_hexagon_V6_vlsrb_128B :
-Hexagon_V62_v1024v1024i_Intrinsic<"HEXAGON_V6_vlsrb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrwuhrndsat,VI_ftype_VIVISI,3)
-// tag : V6_vasrwuhrndsat
-def int_hexagon_V6_vasrwuhrndsat :
-Hexagon_V62_v512v512v512i_Intrinsic<"HEXAGON_V6_vasrwuhrndsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrwuhrndsat_128B,VI_ftype_VIVISI,3)
-// tag : V6_vasrwuhrndsat_128B
-def int_hexagon_V6_vasrwuhrndsat_128B :
-Hexagon_V62_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vasrwuhrndsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasruwuhrndsat,VI_ftype_VIVISI,3)
-// tag : V6_vasruwuhrndsat
-def int_hexagon_V6_vasruwuhrndsat :
-Hexagon_V62_v512v512v512i_Intrinsic<"HEXAGON_V6_vasruwuhrndsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasruwuhrndsat_128B,VI_ftype_VIVISI,3)
-// tag : V6_vasruwuhrndsat_128B
-def int_hexagon_V6_vasruwuhrndsat_128B :
-Hexagon_V62_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vasruwuhrndsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrhbsat,VI_ftype_VIVISI,3)
-// tag : V6_vasrhbsat
-def int_hexagon_V6_vasrhbsat :
-Hexagon_V62_v512v512v512i_Intrinsic<"HEXAGON_V6_vasrhbsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrhbsat_128B,VI_ftype_VIVISI,3)
-// tag : V6_vasrhbsat_128B
-def int_hexagon_V6_vasrhbsat_128B :
-Hexagon_V62_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vasrhbsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrounduwuh,VI_ftype_VIVI,2)
-// tag : V6_vrounduwuh
-def int_hexagon_V6_vrounduwuh :
-Hexagon_V62_v512v512v512_Intrinsic<"HEXAGON_V6_vrounduwuh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrounduwuh_128B,VI_ftype_VIVI,2)
-// tag : V6_vrounduwuh_128B
-def int_hexagon_V6_vrounduwuh_128B :
-Hexagon_V62_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vrounduwuh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrounduhub,VI_ftype_VIVI,2)
-// tag : V6_vrounduhub
-def int_hexagon_V6_vrounduhub :
-Hexagon_V62_v512v512v512_Intrinsic<"HEXAGON_V6_vrounduhub">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrounduhub_128B,VI_ftype_VIVI,2)
-// tag : V6_vrounduhub_128B
-def int_hexagon_V6_vrounduhub_128B :
-Hexagon_V62_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vrounduhub_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vadduwsat,VI_ftype_VIVI,2)
-// tag : V6_vadduwsat
-def int_hexagon_V6_vadduwsat :
-Hexagon_V62_v512v512v512_Intrinsic<"HEXAGON_V6_vadduwsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vadduwsat_128B,VI_ftype_VIVI,2)
-// tag : V6_vadduwsat_128B
-def int_hexagon_V6_vadduwsat_128B :
-Hexagon_V62_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vadduwsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vadduwsat_dv,VD_ftype_VDVD,2)
-// tag : V6_vadduwsat_dv
-def int_hexagon_V6_vadduwsat_dv :
-Hexagon_V62_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vadduwsat_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vadduwsat_dv_128B,VD_ftype_VDVD,2)
-// tag : V6_vadduwsat_dv_128B
-def int_hexagon_V6_vadduwsat_dv_128B :
-Hexagon_V62_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vadduwsat_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubuwsat,VI_ftype_VIVI,2)
-// tag : V6_vsubuwsat
-def int_hexagon_V6_vsubuwsat :
-Hexagon_V62_v512v512v512_Intrinsic<"HEXAGON_V6_vsubuwsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubuwsat_128B,VI_ftype_VIVI,2)
-// tag : V6_vsubuwsat_128B
-def int_hexagon_V6_vsubuwsat_128B :
-Hexagon_V62_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsubuwsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubuwsat_dv,VD_ftype_VDVD,2)
-// tag : V6_vsubuwsat_dv
-def int_hexagon_V6_vsubuwsat_dv :
-Hexagon_V62_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsubuwsat_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubuwsat_dv_128B,VD_ftype_VDVD,2)
-// tag : V6_vsubuwsat_dv_128B
-def int_hexagon_V6_vsubuwsat_dv_128B :
-Hexagon_V62_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vsubuwsat_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddbsat,VI_ftype_VIVI,2)
-// tag : V6_vaddbsat
-def int_hexagon_V6_vaddbsat :
-Hexagon_V62_v512v512v512_Intrinsic<"HEXAGON_V6_vaddbsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddbsat_128B,VI_ftype_VIVI,2)
-// tag : V6_vaddbsat_128B
-def int_hexagon_V6_vaddbsat_128B :
-Hexagon_V62_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vaddbsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddbsat_dv,VD_ftype_VDVD,2)
-// tag : V6_vaddbsat_dv
-def int_hexagon_V6_vaddbsat_dv :
-Hexagon_V62_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vaddbsat_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddbsat_dv_128B,VD_ftype_VDVD,2)
-// tag : V6_vaddbsat_dv_128B
-def int_hexagon_V6_vaddbsat_dv_128B :
-Hexagon_V62_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vaddbsat_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubbsat,VI_ftype_VIVI,2)
-// tag : V6_vsubbsat
-def int_hexagon_V6_vsubbsat :
-Hexagon_V62_v512v512v512_Intrinsic<"HEXAGON_V6_vsubbsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubbsat_128B,VI_ftype_VIVI,2)
-// tag : V6_vsubbsat_128B
-def int_hexagon_V6_vsubbsat_128B :
-Hexagon_V62_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsubbsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubbsat_dv,VD_ftype_VDVD,2)
-// tag : V6_vsubbsat_dv
-def int_hexagon_V6_vsubbsat_dv :
-Hexagon_V62_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsubbsat_dv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubbsat_dv_128B,VD_ftype_VDVD,2)
-// tag : V6_vsubbsat_dv_128B
-def int_hexagon_V6_vsubbsat_dv_128B :
-Hexagon_V62_v2048v2048v2048_Intrinsic<"HEXAGON_V6_vsubbsat_dv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddububb_sat,VI_ftype_VIVI,2)
-// tag : V6_vaddububb_sat
-def int_hexagon_V6_vaddububb_sat :
-Hexagon_V62_v512v512v512_Intrinsic<"HEXAGON_V6_vaddububb_sat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddububb_sat_128B,VI_ftype_VIVI,2)
-// tag : V6_vaddububb_sat_128B
-def int_hexagon_V6_vaddububb_sat_128B :
-Hexagon_V62_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vaddububb_sat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubububb_sat,VI_ftype_VIVI,2)
-// tag : V6_vsubububb_sat
-def int_hexagon_V6_vsubububb_sat :
-Hexagon_V62_v512v512v512_Intrinsic<"HEXAGON_V6_vsubububb_sat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubububb_sat_128B,VI_ftype_VIVI,2)
-// tag : V6_vsubububb_sat_128B
-def int_hexagon_V6_vsubububb_sat_128B :
-Hexagon_V62_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsubububb_sat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddhw_acc,VD_ftype_VDVIVI,3)
-// tag : V6_vaddhw_acc
-def int_hexagon_V6_vaddhw_acc :
-Hexagon_V62_v1024v1024v512v512_Intrinsic<"HEXAGON_V6_vaddhw_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddhw_acc_128B,VD_ftype_VDVIVI,3)
-// tag : V6_vaddhw_acc_128B
-def int_hexagon_V6_vaddhw_acc_128B :
-Hexagon_V62_v2048v2048v1024v1024_Intrinsic<"HEXAGON_V6_vaddhw_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vadduhw_acc,VD_ftype_VDVIVI,3)
-// tag : V6_vadduhw_acc
-def int_hexagon_V6_vadduhw_acc :
-Hexagon_V62_v1024v1024v512v512_Intrinsic<"HEXAGON_V6_vadduhw_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vadduhw_acc_128B,VD_ftype_VDVIVI,3)
-// tag : V6_vadduhw_acc_128B
-def int_hexagon_V6_vadduhw_acc_128B :
-Hexagon_V62_v2048v2048v1024v1024_Intrinsic<"HEXAGON_V6_vadduhw_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddubh_acc,VD_ftype_VDVIVI,3)
-// tag : V6_vaddubh_acc
-def int_hexagon_V6_vaddubh_acc :
-Hexagon_V62_v1024v1024v512v512_Intrinsic<"HEXAGON_V6_vaddubh_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddubh_acc_128B,VD_ftype_VDVIVI,3)
-// tag : V6_vaddubh_acc_128B
-def int_hexagon_V6_vaddubh_acc_128B :
-Hexagon_V62_v2048v2048v1024v1024_Intrinsic<"HEXAGON_V6_vaddubh_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyewuh_64,VD_ftype_VIVI,2)
-// tag : V6_vmpyewuh_64
-def int_hexagon_V6_vmpyewuh_64 :
-Hexagon_V62_v1024v512v512_Intrinsic<"HEXAGON_V6_vmpyewuh_64">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyewuh_64_128B,VD_ftype_VIVI,2)
-// tag : V6_vmpyewuh_64_128B
-def int_hexagon_V6_vmpyewuh_64_128B :
-Hexagon_V62_v2048v1024v1024_Intrinsic<"HEXAGON_V6_vmpyewuh_64_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyowh_64_acc,VD_ftype_VDVIVI,3)
-// tag : V6_vmpyowh_64_acc
-def int_hexagon_V6_vmpyowh_64_acc :
-Hexagon_V62_v1024v1024v512v512_Intrinsic<"HEXAGON_V6_vmpyowh_64_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyowh_64_acc_128B,VD_ftype_VDVIVI,3)
-// tag : V6_vmpyowh_64_acc_128B
-def int_hexagon_V6_vmpyowh_64_acc_128B :
-Hexagon_V62_v2048v2048v1024v1024_Intrinsic<"HEXAGON_V6_vmpyowh_64_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpauhb,VD_ftype_VDSI,2)
-// tag : V6_vmpauhb
-def int_hexagon_V6_vmpauhb :
-Hexagon_V62_v1024v1024i_Intrinsic<"HEXAGON_V6_vmpauhb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpauhb_128B,VD_ftype_VDSI,2)
-// tag : V6_vmpauhb_128B
-def int_hexagon_V6_vmpauhb_128B :
-Hexagon_V62_v2048v2048i_Intrinsic<"HEXAGON_V6_vmpauhb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpauhb_acc,VD_ftype_VDVDSI,3)
-// tag : V6_vmpauhb_acc
-def int_hexagon_V6_vmpauhb_acc :
-Hexagon_V62_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vmpauhb_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpauhb_acc_128B,VD_ftype_VDVDSI,3)
-// tag : V6_vmpauhb_acc_128B
-def int_hexagon_V6_vmpauhb_acc_128B :
-Hexagon_V62_v2048v2048v2048i_Intrinsic<"HEXAGON_V6_vmpauhb_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiwub,VI_ftype_VISI,2)
-// tag : V6_vmpyiwub
-def int_hexagon_V6_vmpyiwub :
-Hexagon_V62_v512v512i_Intrinsic<"HEXAGON_V6_vmpyiwub">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiwub_128B,VI_ftype_VISI,2)
-// tag : V6_vmpyiwub_128B
-def int_hexagon_V6_vmpyiwub_128B :
-Hexagon_V62_v1024v1024i_Intrinsic<"HEXAGON_V6_vmpyiwub_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiwub_acc,VI_ftype_VIVISI,3)
-// tag : V6_vmpyiwub_acc
-def int_hexagon_V6_vmpyiwub_acc :
-Hexagon_V62_v512v512v512i_Intrinsic<"HEXAGON_V6_vmpyiwub_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyiwub_acc_128B,VI_ftype_VIVISI,3)
-// tag : V6_vmpyiwub_acc_128B
-def int_hexagon_V6_vmpyiwub_acc_128B :
-Hexagon_V62_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vmpyiwub_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vandnqrt,VI_ftype_QVSI,2)
-// tag : V6_vandnqrt
-def int_hexagon_V6_vandnqrt :
-Hexagon_V62_v512v64ii_Intrinsic<"HEXAGON_V6_vandnqrt">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vandnqrt_128B,VI_ftype_QVSI,2)
-// tag : V6_vandnqrt_128B
-def int_hexagon_V6_vandnqrt_128B :
-Hexagon_V62_v1024v128ii_Intrinsic<"HEXAGON_V6_vandnqrt_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vandnqrt_acc,VI_ftype_VIQVSI,3)
-// tag : V6_vandnqrt_acc
-def int_hexagon_V6_vandnqrt_acc :
-Hexagon_V62_v512v512v64ii_Intrinsic<"HEXAGON_V6_vandnqrt_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vandnqrt_acc_128B,VI_ftype_VIQVSI,3)
-// tag : V6_vandnqrt_acc_128B
-def int_hexagon_V6_vandnqrt_acc_128B :
-Hexagon_V62_v1024v1024v128ii_Intrinsic<"HEXAGON_V6_vandnqrt_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vandvqv,VI_ftype_QVVI,2)
-// tag : V6_vandvqv
-def int_hexagon_V6_vandvqv :
-Hexagon_V62_v512v64iv512_Intrinsic<"HEXAGON_V6_vandvqv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vandvqv_128B,VI_ftype_QVVI,2)
-// tag : V6_vandvqv_128B
-def int_hexagon_V6_vandvqv_128B :
-Hexagon_V62_v1024v128iv1024_Intrinsic<"HEXAGON_V6_vandvqv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vandvnqv,VI_ftype_QVVI,2)
-// tag : V6_vandvnqv
-def int_hexagon_V6_vandvnqv :
-Hexagon_V62_v512v64iv512_Intrinsic<"HEXAGON_V6_vandvnqv">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vandvnqv_128B,VI_ftype_QVVI,2)
-// tag : V6_vandvnqv_128B
-def int_hexagon_V6_vandvnqv_128B :
-Hexagon_V62_v1024v128iv1024_Intrinsic<"HEXAGON_V6_vandvnqv_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_pred_scalar2v2,QV_ftype_SI,1)
-// tag : V6_pred_scalar2v2
-def int_hexagon_V6_pred_scalar2v2 :
-Hexagon_V62_v64ii_Intrinsic<"HEXAGON_V6_pred_scalar2v2">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_pred_scalar2v2_128B,QV_ftype_SI,1)
-// tag : V6_pred_scalar2v2_128B
-def int_hexagon_V6_pred_scalar2v2_128B :
-Hexagon_V62_v128ii_Intrinsic<"HEXAGON_V6_pred_scalar2v2_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_shuffeqw,QV_ftype_QVQV,2)
-// tag : V6_shuffeqw
-def int_hexagon_V6_shuffeqw :
-Hexagon_V62_v64iv64iv64i_Intrinsic<"HEXAGON_V6_shuffeqw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_shuffeqw_128B,QV_ftype_QVQV,2)
-// tag : V6_shuffeqw_128B
-def int_hexagon_V6_shuffeqw_128B :
-Hexagon_V62_v128iv128iv128i_Intrinsic<"HEXAGON_V6_shuffeqw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_shuffeqh,QV_ftype_QVQV,2)
-// tag : V6_shuffeqh
-def int_hexagon_V6_shuffeqh :
-Hexagon_V62_v64iv64iv64i_Intrinsic<"HEXAGON_V6_shuffeqh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_shuffeqh_128B,QV_ftype_QVQV,2)
-// tag : V6_shuffeqh_128B
-def int_hexagon_V6_shuffeqh_128B :
-Hexagon_V62_v128iv128iv128i_Intrinsic<"HEXAGON_V6_shuffeqh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmaxb,VI_ftype_VIVI,2)
-// tag : V6_vmaxb
-def int_hexagon_V6_vmaxb :
-Hexagon_V62_v512v512v512_Intrinsic<"HEXAGON_V6_vmaxb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmaxb_128B,VI_ftype_VIVI,2)
-// tag : V6_vmaxb_128B
-def int_hexagon_V6_vmaxb_128B :
-Hexagon_V62_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vmaxb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vminb,VI_ftype_VIVI,2)
-// tag : V6_vminb
-def int_hexagon_V6_vminb :
-Hexagon_V62_v512v512v512_Intrinsic<"HEXAGON_V6_vminb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vminb_128B,VI_ftype_VIVI,2)
-// tag : V6_vminb_128B
-def int_hexagon_V6_vminb_128B :
-Hexagon_V62_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vminb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsatuwuh,VI_ftype_VIVI,2)
-// tag : V6_vsatuwuh
-def int_hexagon_V6_vsatuwuh :
-Hexagon_V62_v512v512v512_Intrinsic<"HEXAGON_V6_vsatuwuh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsatuwuh_128B,VI_ftype_VIVI,2)
-// tag : V6_vsatuwuh_128B
-def int_hexagon_V6_vsatuwuh_128B :
-Hexagon_V62_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vsatuwuh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_lvsplath,VI_ftype_SI,1)
-// tag : V6_lvsplath
-def int_hexagon_V6_lvsplath :
-Hexagon_V62_v512i_Intrinsic<"HEXAGON_V6_lvsplath">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_lvsplath_128B,VI_ftype_SI,1)
-// tag : V6_lvsplath_128B
-def int_hexagon_V6_lvsplath_128B :
-Hexagon_V62_v1024i_Intrinsic<"HEXAGON_V6_lvsplath_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_lvsplatb,VI_ftype_SI,1)
-// tag : V6_lvsplatb
-def int_hexagon_V6_lvsplatb :
-Hexagon_V62_v512i_Intrinsic<"HEXAGON_V6_lvsplatb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_lvsplatb_128B,VI_ftype_SI,1)
-// tag : V6_lvsplatb_128B
-def int_hexagon_V6_lvsplatb_128B :
-Hexagon_V62_v1024i_Intrinsic<"HEXAGON_V6_lvsplatb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddclbw,VI_ftype_VIVI,2)
-// tag : V6_vaddclbw
-def int_hexagon_V6_vaddclbw :
-Hexagon_V62_v512v512v512_Intrinsic<"HEXAGON_V6_vaddclbw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddclbw_128B,VI_ftype_VIVI,2)
-// tag : V6_vaddclbw_128B
-def int_hexagon_V6_vaddclbw_128B :
-Hexagon_V62_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vaddclbw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddclbh,VI_ftype_VIVI,2)
-// tag : V6_vaddclbh
-def int_hexagon_V6_vaddclbh :
-Hexagon_V62_v512v512v512_Intrinsic<"HEXAGON_V6_vaddclbh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddclbh_128B,VI_ftype_VIVI,2)
-// tag : V6_vaddclbh_128B
-def int_hexagon_V6_vaddclbh_128B :
-Hexagon_V62_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vaddclbh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvvbi,VI_ftype_VIVISI,3)
-// tag : V6_vlutvvbi
-def int_hexagon_V6_vlutvvbi :
-Hexagon_V62_v512v512v512i_Intrinsic<"HEXAGON_V6_vlutvvbi">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvvbi_128B,VI_ftype_VIVISI,3)
-// tag : V6_vlutvvbi_128B
-def int_hexagon_V6_vlutvvbi_128B :
-Hexagon_V62_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vlutvvbi_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvvb_oracci,VI_ftype_VIVIVISI,4)
-// tag : V6_vlutvvb_oracci
-def int_hexagon_V6_vlutvvb_oracci :
-Hexagon_V62_v512v512v512v512i_Intrinsic<"HEXAGON_V6_vlutvvb_oracci">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvvb_oracci_128B,VI_ftype_VIVIVISI,4)
-// tag : V6_vlutvvb_oracci_128B
-def int_hexagon_V6_vlutvvb_oracci_128B :
-Hexagon_V62_v1024v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vlutvvb_oracci_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvwhi,VD_ftype_VIVISI,3)
-// tag : V6_vlutvwhi
-def int_hexagon_V6_vlutvwhi :
-Hexagon_V62_v1024v512v512i_Intrinsic<"HEXAGON_V6_vlutvwhi">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvwhi_128B,VD_ftype_VIVISI,3)
-// tag : V6_vlutvwhi_128B
-def int_hexagon_V6_vlutvwhi_128B :
-Hexagon_V62_v2048v1024v1024i_Intrinsic<"HEXAGON_V6_vlutvwhi_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvwh_oracci,VD_ftype_VDVIVISI,4)
-// tag : V6_vlutvwh_oracci
-def int_hexagon_V6_vlutvwh_oracci :
-Hexagon_V62_v1024v1024v512v512i_Intrinsic<"HEXAGON_V6_vlutvwh_oracci">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvwh_oracci_128B,VD_ftype_VDVIVISI,4)
-// tag : V6_vlutvwh_oracci_128B
-def int_hexagon_V6_vlutvwh_oracci_128B :
-Hexagon_V62_v2048v2048v1024v1024i_Intrinsic<"HEXAGON_V6_vlutvwh_oracci_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvvb_nm,VI_ftype_VIVISI,3)
-// tag : V6_vlutvvb_nm
-def int_hexagon_V6_vlutvvb_nm :
-Hexagon_V62_v512v512v512i_Intrinsic<"HEXAGON_V6_vlutvvb_nm">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvvb_nm_128B,VI_ftype_VIVISI,3)
-// tag : V6_vlutvvb_nm_128B
-def int_hexagon_V6_vlutvvb_nm_128B :
-Hexagon_V62_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vlutvvb_nm_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvwh_nm,VD_ftype_VIVISI,3)
-// tag : V6_vlutvwh_nm
-def int_hexagon_V6_vlutvwh_nm :
-Hexagon_V62_v1024v512v512i_Intrinsic<"HEXAGON_V6_vlutvwh_nm">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlutvwh_nm_128B,VD_ftype_VIVISI,3)
-// tag : V6_vlutvwh_nm_128B
-def int_hexagon_V6_vlutvwh_nm_128B :
-Hexagon_V62_v2048v1024v1024i_Intrinsic<"HEXAGON_V6_vlutvwh_nm_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddcarry,VI_ftype_VIVIQV,3)
-// tag: V6_vaddcarry
-def int_hexagon_V6_vaddcarry :
-Hexagon_v512v64iv512v512v64i_Intrinsic<"HEXAGON_v6_vaddcarry">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaddcarry_128B,VI_ftype_VIVIQV,3)
-// tag: V6_vaddcarry_128B
-def int_hexagon_V6_vaddcarry_128B :
-Hexagon_v1024v128iv1024v1024v128i_Intrinsic<"HEXAGON_v6_vaddcarry_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubcarry,VI_ftype_VIVIQV,3)
-// tag: V6_vsubcarry
-def int_hexagon_V6_vsubcarry :
-Hexagon_v512v64iv512v512v64i_Intrinsic<"HEXAGON_v6_vsubcarry">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vsubcarry_128B,VI_ftype_VIVIQV,3)
-// tag: V6_vsubcarry_128B
-def int_hexagon_V6_vsubcarry_128B :
-Hexagon_v1024v128iv1024v1024v128i_Intrinsic<"HEXAGON_v6_vsubcarry_128B">;
-
-
-///
-/// HexagonV65 intrinsics
-///
-
-//
-// Hexagon_V65_iLLiLLi_Intrinsic<string GCCIntSuffix>
-// tag : A6_vcmpbeq_notany
-class Hexagon_V65_iLLiLLi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_i32_ty], [llvm_i64_ty,llvm_i64_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v1024v512LLi_Intrinsic<string GCCIntSuffix>
-// tag : V6_vrmpyub_rtt
-class Hexagon_V65_v1024v512LLi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v16i32_ty,llvm_i64_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v2048v1024LLi_Intrinsic<string GCCIntSuffix>
-// tag : V6_vrmpyub_rtt_128B
-class Hexagon_V65_v2048v1024LLi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v32i32_ty,llvm_i64_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v1024v1024v512LLi_Intrinsic<string GCCIntSuffix>
-// tag : V6_vrmpyub_rtt_acc
-class Hexagon_V65_v1024v1024v512LLi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v16i32_ty,llvm_i64_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v2048v2048v1024LLi_Intrinsic<string GCCIntSuffix>
-// tag : V6_vrmpyub_rtt_acc_128B
-class Hexagon_V65_v2048v2048v1024LLi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v32i32_ty,llvm_i64_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v512v512v512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vasruwuhsat
-class Hexagon_V65_v512v512v512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v1024v1024v1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vasruwuhsat_128B
-class Hexagon_V65_v1024v1024v1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v512v512v512_Intrinsic<string GCCIntSuffix>
-// tag : V6_vavguw
-class Hexagon_V65_v512v512v512_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v1024v1024v1024_Intrinsic<string GCCIntSuffix>
-// tag : V6_vavguw_128B
-class Hexagon_V65_v1024v1024v1024_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v512v512_Intrinsic<string GCCIntSuffix>
-// tag : V6_vabsb
-class Hexagon_V65_v512v512_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v16i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v1024v1024_Intrinsic<string GCCIntSuffix>
-// tag : V6_vabsb_128B
-class Hexagon_V65_v1024v1024_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v1024v1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vmpabuu
-class Hexagon_V65_v1024v1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v2048v2048i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vmpabuu_128B
-class Hexagon_V65_v2048v2048i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v2048v2048v2048i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vmpabuu_acc_128B
-class Hexagon_V65_v2048v2048v2048i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v64i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v1024v1024v512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vmpyh_acc
-class Hexagon_V65_v1024v1024v512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v16i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v2048v2048v1024i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vmpyh_acc_128B
-class Hexagon_V65_v2048v2048v1024i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v32i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v512v512v512LLi_Intrinsic<string GCCIntSuffix>
-// tag : V6_vmpahhsat
-class Hexagon_V65_v512v512v512LLi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty,llvm_i64_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v1024v1024v1024LLi_Intrinsic<string GCCIntSuffix>
-// tag : V6_vmpahhsat_128B
-class Hexagon_V65_v1024v1024v1024LLi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_i64_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v512v512LLi_Intrinsic<string GCCIntSuffix>
-// tag : V6_vlut4
-class Hexagon_V65_v512v512LLi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_i64_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v1024v1024LLi_Intrinsic<string GCCIntSuffix>
-// tag : V6_vlut4_128B
-class Hexagon_V65_v1024v1024LLi_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_i64_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v512v512i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vmpyuhe
-class Hexagon_V65_v512v512i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_i32_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v512v64i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vprefixqb
-class Hexagon_V65_v512v64i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v16i32_ty], [llvm_v512i1_ty],
- [IntrNoMem]>;
-
-//
-// Hexagon_V65_v1024v128i_Intrinsic<string GCCIntSuffix>
-// tag : V6_vprefixqb_128B
-class Hexagon_V65_v1024v128i_Intrinsic<string GCCIntSuffix>
- : Hexagon_Intrinsic<GCCIntSuffix,
- [llvm_v32i32_ty], [llvm_v1024i1_ty],
- [IntrNoMem]>;
-
-//
-// BUILTIN_INFO(HEXAGON.A6_vcmpbeq_notany,QI_ftype_DIDI,2)
-// tag : A6_vcmpbeq_notany
-def int_hexagon_A6_vcmpbeq_notany :
-Hexagon_V65_iLLiLLi_Intrinsic<"HEXAGON_A6_vcmpbeq_notany">;
-
-//
-// BUILTIN_INFO(HEXAGON.A6_vcmpbeq_notany_128B,QI_ftype_DIDI,2)
-// tag : A6_vcmpbeq_notany_128B
-def int_hexagon_A6_vcmpbeq_notany_128B :
-Hexagon_V65_iLLiLLi_Intrinsic<"HEXAGON_A6_vcmpbeq_notany_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpyub_rtt,VD_ftype_VIDI,2)
-// tag : V6_vrmpyub_rtt
-def int_hexagon_V6_vrmpyub_rtt :
-Hexagon_V65_v1024v512LLi_Intrinsic<"HEXAGON_V6_vrmpyub_rtt">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpyub_rtt_128B,VD_ftype_VIDI,2)
-// tag : V6_vrmpyub_rtt_128B
-def int_hexagon_V6_vrmpyub_rtt_128B :
-Hexagon_V65_v2048v1024LLi_Intrinsic<"HEXAGON_V6_vrmpyub_rtt_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpyub_rtt_acc,VD_ftype_VDVIDI,3)
-// tag : V6_vrmpyub_rtt_acc
-def int_hexagon_V6_vrmpyub_rtt_acc :
-Hexagon_V65_v1024v1024v512LLi_Intrinsic<"HEXAGON_V6_vrmpyub_rtt_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpyub_rtt_acc_128B,VD_ftype_VDVIDI,3)
-// tag : V6_vrmpyub_rtt_acc_128B
-def int_hexagon_V6_vrmpyub_rtt_acc_128B :
-Hexagon_V65_v2048v2048v1024LLi_Intrinsic<"HEXAGON_V6_vrmpyub_rtt_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybub_rtt,VD_ftype_VIDI,2)
-// tag : V6_vrmpybub_rtt
-def int_hexagon_V6_vrmpybub_rtt :
-Hexagon_V65_v1024v512LLi_Intrinsic<"HEXAGON_V6_vrmpybub_rtt">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybub_rtt_128B,VD_ftype_VIDI,2)
-// tag : V6_vrmpybub_rtt_128B
-def int_hexagon_V6_vrmpybub_rtt_128B :
-Hexagon_V65_v2048v1024LLi_Intrinsic<"HEXAGON_V6_vrmpybub_rtt_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybub_rtt_acc,VD_ftype_VDVIDI,3)
-// tag : V6_vrmpybub_rtt_acc
-def int_hexagon_V6_vrmpybub_rtt_acc :
-Hexagon_V65_v1024v1024v512LLi_Intrinsic<"HEXAGON_V6_vrmpybub_rtt_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vrmpybub_rtt_acc_128B,VD_ftype_VDVIDI,3)
-// tag : V6_vrmpybub_rtt_acc_128B
-def int_hexagon_V6_vrmpybub_rtt_acc_128B :
-Hexagon_V65_v2048v2048v1024LLi_Intrinsic<"HEXAGON_V6_vrmpybub_rtt_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasruwuhsat,VI_ftype_VIVISI,3)
-// tag : V6_vasruwuhsat
-def int_hexagon_V6_vasruwuhsat :
-Hexagon_V65_v512v512v512i_Intrinsic<"HEXAGON_V6_vasruwuhsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasruwuhsat_128B,VI_ftype_VIVISI,3)
-// tag : V6_vasruwuhsat_128B
-def int_hexagon_V6_vasruwuhsat_128B :
-Hexagon_V65_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vasruwuhsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasruhubsat,VI_ftype_VIVISI,3)
-// tag : V6_vasruhubsat
-def int_hexagon_V6_vasruhubsat :
-Hexagon_V65_v512v512v512i_Intrinsic<"HEXAGON_V6_vasruhubsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasruhubsat_128B,VI_ftype_VIVISI,3)
-// tag : V6_vasruhubsat_128B
-def int_hexagon_V6_vasruhubsat_128B :
-Hexagon_V65_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vasruhubsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasruhubrndsat,VI_ftype_VIVISI,3)
-// tag : V6_vasruhubrndsat
-def int_hexagon_V6_vasruhubrndsat :
-Hexagon_V65_v512v512v512i_Intrinsic<"HEXAGON_V6_vasruhubrndsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasruhubrndsat_128B,VI_ftype_VIVISI,3)
-// tag : V6_vasruhubrndsat_128B
-def int_hexagon_V6_vasruhubrndsat_128B :
-Hexagon_V65_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vasruhubrndsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaslh_acc,VI_ftype_VIVISI,3)
-// tag : V6_vaslh_acc
-def int_hexagon_V6_vaslh_acc :
-Hexagon_V65_v512v512v512i_Intrinsic<"HEXAGON_V6_vaslh_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vaslh_acc_128B,VI_ftype_VIVISI,3)
-// tag : V6_vaslh_acc_128B
-def int_hexagon_V6_vaslh_acc_128B :
-Hexagon_V65_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vaslh_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrh_acc,VI_ftype_VIVISI,3)
-// tag : V6_vasrh_acc
-def int_hexagon_V6_vasrh_acc :
-Hexagon_V65_v512v512v512i_Intrinsic<"HEXAGON_V6_vasrh_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vasrh_acc_128B,VI_ftype_VIVISI,3)
-// tag : V6_vasrh_acc_128B
-def int_hexagon_V6_vasrh_acc_128B :
-Hexagon_V65_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vasrh_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavguw,VI_ftype_VIVI,2)
-// tag : V6_vavguw
-def int_hexagon_V6_vavguw :
-Hexagon_V65_v512v512v512_Intrinsic<"HEXAGON_V6_vavguw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavguw_128B,VI_ftype_VIVI,2)
-// tag : V6_vavguw_128B
-def int_hexagon_V6_vavguw_128B :
-Hexagon_V65_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vavguw_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavguwrnd,VI_ftype_VIVI,2)
-// tag : V6_vavguwrnd
-def int_hexagon_V6_vavguwrnd :
-Hexagon_V65_v512v512v512_Intrinsic<"HEXAGON_V6_vavguwrnd">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavguwrnd_128B,VI_ftype_VIVI,2)
-// tag : V6_vavguwrnd_128B
-def int_hexagon_V6_vavguwrnd_128B :
-Hexagon_V65_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vavguwrnd_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavgb,VI_ftype_VIVI,2)
-// tag : V6_vavgb
-def int_hexagon_V6_vavgb :
-Hexagon_V65_v512v512v512_Intrinsic<"HEXAGON_V6_vavgb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavgb_128B,VI_ftype_VIVI,2)
-// tag : V6_vavgb_128B
-def int_hexagon_V6_vavgb_128B :
-Hexagon_V65_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vavgb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavgbrnd,VI_ftype_VIVI,2)
-// tag : V6_vavgbrnd
-def int_hexagon_V6_vavgbrnd :
-Hexagon_V65_v512v512v512_Intrinsic<"HEXAGON_V6_vavgbrnd">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vavgbrnd_128B,VI_ftype_VIVI,2)
-// tag : V6_vavgbrnd_128B
-def int_hexagon_V6_vavgbrnd_128B :
-Hexagon_V65_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vavgbrnd_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vnavgb,VI_ftype_VIVI,2)
-// tag : V6_vnavgb
-def int_hexagon_V6_vnavgb :
-Hexagon_V65_v512v512v512_Intrinsic<"HEXAGON_V6_vnavgb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vnavgb_128B,VI_ftype_VIVI,2)
-// tag : V6_vnavgb_128B
-def int_hexagon_V6_vnavgb_128B :
-Hexagon_V65_v1024v1024v1024_Intrinsic<"HEXAGON_V6_vnavgb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsb,VI_ftype_VI,1)
-// tag : V6_vabsb
-def int_hexagon_V6_vabsb :
-Hexagon_V65_v512v512_Intrinsic<"HEXAGON_V6_vabsb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsb_128B,VI_ftype_VI,1)
-// tag : V6_vabsb_128B
-def int_hexagon_V6_vabsb_128B :
-Hexagon_V65_v1024v1024_Intrinsic<"HEXAGON_V6_vabsb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsb_sat,VI_ftype_VI,1)
-// tag : V6_vabsb_sat
-def int_hexagon_V6_vabsb_sat :
-Hexagon_V65_v512v512_Intrinsic<"HEXAGON_V6_vabsb_sat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vabsb_sat_128B,VI_ftype_VI,1)
-// tag : V6_vabsb_sat_128B
-def int_hexagon_V6_vabsb_sat_128B :
-Hexagon_V65_v1024v1024_Intrinsic<"HEXAGON_V6_vabsb_sat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpabuu,VD_ftype_VDSI,2)
-// tag : V6_vmpabuu
-def int_hexagon_V6_vmpabuu :
-Hexagon_V65_v1024v1024i_Intrinsic<"HEXAGON_V6_vmpabuu">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpabuu_128B,VD_ftype_VDSI,2)
-// tag : V6_vmpabuu_128B
-def int_hexagon_V6_vmpabuu_128B :
-Hexagon_V65_v2048v2048i_Intrinsic<"HEXAGON_V6_vmpabuu_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpabuu_acc,VD_ftype_VDVDSI,3)
-// tag : V6_vmpabuu_acc
-def int_hexagon_V6_vmpabuu_acc :
-Hexagon_V65_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vmpabuu_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpabuu_acc_128B,VD_ftype_VDVDSI,3)
-// tag : V6_vmpabuu_acc_128B
-def int_hexagon_V6_vmpabuu_acc_128B :
-Hexagon_V65_v2048v2048v2048i_Intrinsic<"HEXAGON_V6_vmpabuu_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyh_acc,VD_ftype_VDVISI,3)
-// tag : V6_vmpyh_acc
-def int_hexagon_V6_vmpyh_acc :
-Hexagon_V65_v1024v1024v512i_Intrinsic<"HEXAGON_V6_vmpyh_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyh_acc_128B,VD_ftype_VDVISI,3)
-// tag : V6_vmpyh_acc_128B
-def int_hexagon_V6_vmpyh_acc_128B :
-Hexagon_V65_v2048v2048v1024i_Intrinsic<"HEXAGON_V6_vmpyh_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpahhsat,VI_ftype_VIVIDI,3)
-// tag : V6_vmpahhsat
-def int_hexagon_V6_vmpahhsat :
-Hexagon_V65_v512v512v512LLi_Intrinsic<"HEXAGON_V6_vmpahhsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpahhsat_128B,VI_ftype_VIVIDI,3)
-// tag : V6_vmpahhsat_128B
-def int_hexagon_V6_vmpahhsat_128B :
-Hexagon_V65_v1024v1024v1024LLi_Intrinsic<"HEXAGON_V6_vmpahhsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpauhuhsat,VI_ftype_VIVIDI,3)
-// tag : V6_vmpauhuhsat
-def int_hexagon_V6_vmpauhuhsat :
-Hexagon_V65_v512v512v512LLi_Intrinsic<"HEXAGON_V6_vmpauhuhsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpauhuhsat_128B,VI_ftype_VIVIDI,3)
-// tag : V6_vmpauhuhsat_128B
-def int_hexagon_V6_vmpauhuhsat_128B :
-Hexagon_V65_v1024v1024v1024LLi_Intrinsic<"HEXAGON_V6_vmpauhuhsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpsuhuhsat,VI_ftype_VIVIDI,3)
-// tag : V6_vmpsuhuhsat
-def int_hexagon_V6_vmpsuhuhsat :
-Hexagon_V65_v512v512v512LLi_Intrinsic<"HEXAGON_V6_vmpsuhuhsat">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpsuhuhsat_128B,VI_ftype_VIVIDI,3)
-// tag : V6_vmpsuhuhsat_128B
-def int_hexagon_V6_vmpsuhuhsat_128B :
-Hexagon_V65_v1024v1024v1024LLi_Intrinsic<"HEXAGON_V6_vmpsuhuhsat_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlut4,VI_ftype_VIDI,2)
-// tag : V6_vlut4
-def int_hexagon_V6_vlut4 :
-Hexagon_V65_v512v512LLi_Intrinsic<"HEXAGON_V6_vlut4">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vlut4_128B,VI_ftype_VIDI,2)
-// tag : V6_vlut4_128B
-def int_hexagon_V6_vlut4_128B :
-Hexagon_V65_v1024v1024LLi_Intrinsic<"HEXAGON_V6_vlut4_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyuhe,VI_ftype_VISI,2)
-// tag : V6_vmpyuhe
-def int_hexagon_V6_vmpyuhe :
-Hexagon_V65_v512v512i_Intrinsic<"HEXAGON_V6_vmpyuhe">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyuhe_128B,VI_ftype_VISI,2)
-// tag : V6_vmpyuhe_128B
-def int_hexagon_V6_vmpyuhe_128B :
-Hexagon_V65_v1024v1024i_Intrinsic<"HEXAGON_V6_vmpyuhe_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyuhe_acc,VI_ftype_VIVISI,3)
-// tag : V6_vmpyuhe_acc
-def int_hexagon_V6_vmpyuhe_acc :
-Hexagon_V65_v512v512v512i_Intrinsic<"HEXAGON_V6_vmpyuhe_acc">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vmpyuhe_acc_128B,VI_ftype_VIVISI,3)
-// tag : V6_vmpyuhe_acc_128B
-def int_hexagon_V6_vmpyuhe_acc_128B :
-Hexagon_V65_v1024v1024v1024i_Intrinsic<"HEXAGON_V6_vmpyuhe_acc_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vprefixqb,VI_ftype_QV,1)
-// tag : V6_vprefixqb
-def int_hexagon_V6_vprefixqb :
-Hexagon_V65_v512v64i_Intrinsic<"HEXAGON_V6_vprefixqb">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vprefixqb_128B,VI_ftype_QV,1)
-// tag : V6_vprefixqb_128B
-def int_hexagon_V6_vprefixqb_128B :
-Hexagon_V65_v1024v128i_Intrinsic<"HEXAGON_V6_vprefixqb_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vprefixqh,VI_ftype_QV,1)
-// tag : V6_vprefixqh
-def int_hexagon_V6_vprefixqh :
-Hexagon_V65_v512v64i_Intrinsic<"HEXAGON_V6_vprefixqh">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vprefixqh_128B,VI_ftype_QV,1)
-// tag : V6_vprefixqh_128B
-def int_hexagon_V6_vprefixqh_128B :
-Hexagon_V65_v1024v128i_Intrinsic<"HEXAGON_V6_vprefixqh_128B">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vprefixqw,VI_ftype_QV,1)
-// tag : V6_vprefixqw
-def int_hexagon_V6_vprefixqw :
-Hexagon_V65_v512v64i_Intrinsic<"HEXAGON_V6_vprefixqw">;
-
-//
-// BUILTIN_INFO(HEXAGON.V6_vprefixqw_128B,VI_ftype_QV,1)
-// tag : V6_vprefixqw_128B
-def int_hexagon_V6_vprefixqw_128B :
-Hexagon_V65_v1024v128i_Intrinsic<"HEXAGON_V6_vprefixqw_128B">;
-
+def int_hexagon_V6_vmaskedstorentnq_128B :
+Hexagon_vv128ivmemv1024_Intrinsic<"HEXAGON_V6_vmaskedstorentnq_128B">;
-// The scatter/gather ones below will not be generated from iset.py. Make sure
-// you don't overwrite these.
class Hexagon_V65_vvmemiiv512_Intrinsic<string GCCIntSuffix>
: Hexagon_Intrinsic<GCCIntSuffix,
[], [llvm_ptr_ty,llvm_i32_ty,llvm_i32_ty,
@@ -10962,14 +532,5824 @@
def int_hexagon_V6_vscattermhw_add_128B :
Hexagon_V65_viiv2048v1024_Intrinsic<"HEXAGON_V6_vscattermhw_add_128B">;
-//
-// BUILTIN_INFO(HEXAGON.V6_vdd0,VD_ftype_,0)
-// tag : V6_vdd0
-def int_hexagon_V6_vdd0 :
-Hexagon_v1024_Intrinsic<"HEXAGON_V6_vdd0">;
+// Auto-generated intrinsics
-//
-// BUILTIN_INFO(HEXAGON.V6_vdd0_128B,VD_ftype_,0)
-// tag : V6_vdd0_128B
+// tag : S2_vsatwh
+class Hexagon_i32_i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i32_ty], [llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vrmpybusv
+class Hexagon_v16i32_v16i32v16i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vrmpybusv
+class Hexagon_v32i32_v32i32v32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vaslw_acc
+class Hexagon_v16i32_v16i32v16i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vaslw_acc
+class Hexagon_v32i32_v32i32v32i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vmux
+class Hexagon_v16i32_v512i1v16i32v16i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [llvm_v512i1_ty,llvm_v16i32_ty,llvm_v16i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vmux
+class Hexagon_v32i32_v1024i1v32i32v32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v1024i1_ty,llvm_v32i32_ty,llvm_v32i32_ty],
+ [IntrNoMem]>;
+
+// tag : S2_tableidxd_goodsyntax
+class Hexagon_i32_i32i32i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i32_ty], [llvm_i32_ty,llvm_i32_ty,llvm_i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vandnqrt_acc
+class Hexagon_v16i32_v16i32v512i1i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v512i1_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vandnqrt_acc
+class Hexagon_v32i32_v32i32v1024i1i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v1024i1_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vrmpybusi
+class Hexagon_v32i32_v32i32i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vrmpybusi
+class Hexagon_v64i32_v64i32i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vsubb_dv
+class Hexagon_v64i32_v64i32v64i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v64i32_ty],
+ [IntrNoMem]>;
+
+// tag : M2_mpysu_up
+class Hexagon_i32_i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i32_ty], [llvm_i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : M2_mpyud_acc_ll_s0
+class Hexagon_i64_i64i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i64_ty], [llvm_i64_ty,llvm_i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : S2_lsr_i_r_nac
+class Hexagon_i32_i32i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i32_ty], [llvm_i32_ty,llvm_i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : M2_cmpysc_s0
+class Hexagon_i64_i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i64_ty], [llvm_i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_lo
+class Hexagon_v16i32_v32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [llvm_v32i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_lo
+class Hexagon_v32i32_v64i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v64i32_ty],
+ [IntrNoMem]>;
+
+// tag : S2_shuffoh
+class Hexagon_i64_i64i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i64_ty], [llvm_i64_ty,llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag : F2_sfmax
+class Hexagon_float_floatfloat_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_float_ty], [llvm_float_ty,llvm_float_ty],
+ [IntrNoMem, Throws]>;
+
+// tag : A2_vabswsat
+class Hexagon_i64_i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i64_ty], [llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag :
+class Hexagon_v32i32_v32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v32i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_ldnp0
+class Hexagon_v16i32_i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [llvm_i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_ldnp0
+class Hexagon_v32i32_i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vdmpyhb
+class Hexagon_v16i32_v16i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vdmpyhb
+class Hexagon_v32i32_v32i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : A4_vcmphgti
+class Hexagon_i32_i64i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i32_ty], [llvm_i64_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag :
+class Hexagon_v32i32_v16i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v16i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : S6_rol_i_p_or
+class Hexagon_i64_i64i64i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i64_ty], [llvm_i64_ty,llvm_i64_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vgtuh_and
+class Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v512i1_ty], [llvm_v512i1_ty,llvm_v16i32_ty,llvm_v16i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vgtuh_and
+class Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v1024i1_ty], [llvm_v1024i1_ty,llvm_v32i32_ty,llvm_v32i32_ty],
+ [IntrNoMem]>;
+
+// tag : A2_abssat
+class Hexagon_i32_i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i32_ty], [llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : A2_vcmpwgtu
+class Hexagon_i32_i64i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i32_ty], [llvm_i64_ty,llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vtmpybus_acc
+class Hexagon_v64i32_v64i32v64i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v64i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : F2_conv_df2uw_chop
+class Hexagon_i32_double_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i32_ty], [llvm_double_ty],
+ [IntrNoMem]>;
+
+// tag : V6_pred_or
+class Hexagon_v512i1_v512i1v512i1_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v512i1_ty], [llvm_v512i1_ty,llvm_v512i1_ty],
+ [IntrNoMem]>;
+
+// tag : V6_pred_or
+class Hexagon_v1024i1_v1024i1v1024i1_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v1024i1_ty], [llvm_v1024i1_ty,llvm_v1024i1_ty],
+ [IntrNoMem]>;
+
+// tag : S2_asr_i_p_rnd_goodsyntax
+class Hexagon_i64_i64i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i64_ty], [llvm_i64_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : F2_conv_w2df
+class Hexagon_double_i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_double_ty], [llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vunpackuh
+class Hexagon_v32i32_v16i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v16i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vunpackuh
+class Hexagon_v64i32_v32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v64i32_ty], [llvm_v32i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vadduhw_acc
+class Hexagon_v32i32_v32i32v16i32v16i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v16i32_ty,llvm_v16i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vadduhw_acc
+class Hexagon_v64i32_v64i32v32i32v32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v32i32_ty,llvm_v32i32_ty],
+ [IntrNoMem]>;
+
+// tag : M2_vdmacs_s0
+class Hexagon_i64_i64i64i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i64_ty], [llvm_i64_ty,llvm_i64_ty,llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vrmpybub_rtt_acc
+class Hexagon_v32i32_v32i32v16i32i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v16i32_ty,llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vrmpybub_rtt_acc
+class Hexagon_v64i32_v64i32v32i32i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v32i32_ty,llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag : V6_ldu0
+class Hexagon_v16i32_i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_ldu0
+class Hexagon_v32i32_i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : S4_extract_rp
+class Hexagon_i32_i32i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i32_ty], [llvm_i32_ty,llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vdmpyhsuisat
+class Hexagon_v16i32_v32i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [llvm_v32i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vdmpyhsuisat
+class Hexagon_v32i32_v64i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v64i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : A2_addsp
+class Hexagon_i64_i32i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i64_ty], [llvm_i32_ty,llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag : V6_extractw
+class Hexagon_i32_v16i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i32_ty], [llvm_v16i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_extractw
+class Hexagon_i32_v32i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i32_ty], [llvm_v32i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vlutvwhi
+class Hexagon_v32i32_v16i32v16i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vlutvwhi
+class Hexagon_v64i32_v32i32v32i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v64i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vgtuh
+class Hexagon_v512i1_v16i32v16i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v512i1_ty], [llvm_v16i32_ty,llvm_v16i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vgtuh
+class Hexagon_v1024i1_v32i32v32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v1024i1_ty], [llvm_v32i32_ty,llvm_v32i32_ty],
+ [IntrNoMem]>;
+
+// tag : F2_sffma_lib
+class Hexagon_float_floatfloatfloat_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_float_ty], [llvm_float_ty,llvm_float_ty,llvm_float_ty],
+ [IntrNoMem, Throws]>;
+
+// tag : F2_conv_ud2df
+class Hexagon_double_i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_double_ty], [llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag : S2_vzxthw
+class Hexagon_i64_i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i64_ty], [llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vtmpyhb
+class Hexagon_v64i32_v64i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vshufoeh
+class Hexagon_v32i32_v16i32v16i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vshufoeh
+class Hexagon_v64i32_v32i32v32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v64i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vlut4
+class Hexagon_v16i32_v16i32i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vlut4
+class Hexagon_v32i32_v32i32i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag :
+class Hexagon_v16i32_v16i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [llvm_v16i32_ty],
+ [IntrNoMem]>;
+
+// tag : F2_conv_uw2sf
+class Hexagon_float_i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_float_ty], [llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vswap
+class Hexagon_v32i32_v512i1v16i32v16i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v512i1_ty,llvm_v16i32_ty,llvm_v16i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vswap
+class Hexagon_v64i32_v1024i1v32i32v32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v64i32_ty], [llvm_v1024i1_ty,llvm_v32i32_ty,llvm_v32i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vandnqrt
+class Hexagon_v16i32_v512i1i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [llvm_v512i1_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vandnqrt
+class Hexagon_v32i32_v1024i1i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v1024i1_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vmpyub
+class Hexagon_v64i32_v32i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v64i32_ty], [llvm_v32i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : A5_ACS
+class Hexagon_i64i32_i64i64i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i64_ty,llvm_i32_ty], [llvm_i64_ty,llvm_i64_ty,llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vunpackob
+class Hexagon_v32i32_v32i32v16i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v16i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vunpackob
+class Hexagon_v64i32_v64i32v32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v32i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vmpyhsat_acc
+class Hexagon_v32i32_v32i32v16i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v16i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vmpyhsat_acc
+class Hexagon_v64i32_v64i32v32i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v32i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vaddcarrysat
+class Hexagon_v16i32_v16i32v16i32v512i1_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty,llvm_v512i1_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vaddcarrysat
+class Hexagon_v32i32_v32i32v32i32v1024i1_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_v1024i1_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vlutvvb_oracc
+class Hexagon_v16i32_v16i32v16i32v16i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty,llvm_v16i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vlutvvb_oracc
+class Hexagon_v32i32_v32i32v32i32v32i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_v32i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vrmpybub_rtt
+class Hexagon_v32i32_v16i32i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v16i32_ty,llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vrmpybub_rtt
+class Hexagon_v64i32_v32i32i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v64i32_ty], [llvm_v32i32_ty,llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag : A4_addp_c
+class Hexagon_i64i32_i64i64i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i64_ty,llvm_i32_ty], [llvm_i64_ty,llvm_i64_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vrsadubi_acc
+class Hexagon_v32i32_v32i32v32i32i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vrsadubi_acc
+class Hexagon_v64i32_v64i32v64i32i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v64i32_ty,llvm_i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : F2_conv_df2sf
+class Hexagon_float_double_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_float_ty], [llvm_double_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vandvqv
+class Hexagon_v16i32_v512i1v16i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [llvm_v512i1_ty,llvm_v16i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vandvqv
+class Hexagon_v32i32_v1024i1v32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v1024i1_ty,llvm_v32i32_ty],
+ [IntrNoMem]>;
+
+// tag : C2_vmux
+class Hexagon_i64_i32i64i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i64_ty], [llvm_i32_ty,llvm_i64_ty,llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag : F2_sfcmpeq
+class Hexagon_i32_floatfloat_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i32_ty], [llvm_float_ty,llvm_float_ty],
+ [IntrNoMem, Throws]>;
+
+// tag : V6_vmpahhsat
+class Hexagon_v16i32_v16i32v16i32i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty,llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vmpahhsat
+class Hexagon_v32i32_v32i32v32i32i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vandvrt
+class Hexagon_v512i1_v16i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v512i1_ty], [llvm_v16i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vandvrt
+class Hexagon_v1024i1_v32i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v1024i1_ty], [llvm_v32i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vsubcarry
+class Hexagon_custom_v16i32v512i1_v16i32v16i32v512i1_Intrinsic
+ : Hexagon_NonGCC_Intrinsic<
+ [llvm_v16i32_ty,llvm_v512i1_ty], [llvm_v16i32_ty,llvm_v16i32_ty,llvm_v512i1_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vsubcarry
+class Hexagon_custom_v32i32v1024i1_v32i32v32i32v1024i1_Intrinsic_128B
+ : Hexagon_NonGCC_Intrinsic<
+ [llvm_v32i32_ty,llvm_v1024i1_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_v1024i1_ty],
+ [IntrNoMem]>;
+
+// tag : F2_sffixupr
+class Hexagon_float_float_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_float_ty], [llvm_float_ty],
+ [IntrNoMem, Throws]>;
+
+// tag : V6_vandvrt_acc
+class Hexagon_v512i1_v512i1v16i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v512i1_ty], [llvm_v512i1_ty,llvm_v16i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vandvrt_acc
+class Hexagon_v1024i1_v1024i1v32i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v1024i1_ty], [llvm_v1024i1_ty,llvm_v32i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : F2_dfsub
+class Hexagon_double_doubledouble_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_double_ty], [llvm_double_ty,llvm_double_ty],
+ [IntrNoMem, Throws]>;
+
+// tag : V6_vmpyowh_sacc
+class Hexagon_v16i32_v16i32v16i32v16i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty,llvm_v16i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vmpyowh_sacc
+class Hexagon_v32i32_v32i32v32i32v32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_v32i32_ty],
+ [IntrNoMem]>;
+
+// tag : S2_insertp
+class Hexagon_i64_i64i64i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i64_ty], [llvm_i64_ty,llvm_i64_ty,llvm_i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : F2_sfinvsqrta
+class Hexagon_floati32_float_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_float_ty,llvm_i32_ty], [llvm_float_ty],
+ [IntrNoMem, Throws]>;
+
+// tag : V6_vtran2x2_map
+class Hexagon_v16i32v16i32_v16i32v16i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty,llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v16i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vtran2x2_map
+class Hexagon_v32i32v32i32_v32i32v32i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty,llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v32i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vlutvwh_oracc
+class Hexagon_v32i32_v32i32v16i32v16i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v16i32_ty,llvm_v16i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vlutvwh_oracc
+class Hexagon_v64i32_v64i32v32i32v32i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v64i32_ty], [llvm_v64i32_ty,llvm_v32i32_ty,llvm_v32i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : F2_dfcmpge
+class Hexagon_i32_doubledouble_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i32_ty], [llvm_double_ty,llvm_double_ty],
+ [IntrNoMem, Throws]>;
+
+// tag : F2_conv_df2d_chop
+class Hexagon_i64_double_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i64_ty], [llvm_double_ty],
+ [IntrNoMem]>;
+
+// tag : F2_conv_sf2w
+class Hexagon_i32_float_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i32_ty], [llvm_float_ty],
+ [IntrNoMem]>;
+
+// tag : F2_sfclass
+class Hexagon_i32_floati32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i32_ty], [llvm_float_ty,llvm_i32_ty],
+ [IntrNoMem, Throws]>;
+
+// tag : F2_conv_sf2ud_chop
+class Hexagon_i64_float_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i64_ty], [llvm_float_ty],
+ [IntrNoMem]>;
+
+// tag : V6_pred_scalar2v2
+class Hexagon_v512i1_i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v512i1_ty], [llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_pred_scalar2v2
+class Hexagon_v1024i1_i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v1024i1_ty], [llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : F2_sfrecipa
+class Hexagon_floati32_floatfloat_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_float_ty,llvm_i32_ty], [llvm_float_ty,llvm_float_ty],
+ [IntrNoMem, Throws]>;
+
+// tag : V6_vprefixqh
+class Hexagon_v16i32_v512i1_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [llvm_v512i1_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vprefixqh
+class Hexagon_v32i32_v1024i1_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v1024i1_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vdmpyhisat_acc
+class Hexagon_v16i32_v16i32v32i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [llvm_v16i32_ty,llvm_v32i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vdmpyhisat_acc
+class Hexagon_v32i32_v32i32v64i32i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [llvm_v32i32_ty,llvm_v64i32_ty,llvm_i32_ty],
+ [IntrNoMem]>;
+
+// tag : F2_conv_ud2sf
+class Hexagon_float_i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_float_ty], [llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag : F2_conv_sf2df
+class Hexagon_double_float_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_double_ty], [llvm_float_ty],
+ [IntrNoMem]>;
+
+// tag : F2_sffma_sc
+class Hexagon_float_floatfloatfloati32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_float_ty], [llvm_float_ty,llvm_float_ty,llvm_float_ty,llvm_i32_ty],
+ [IntrNoMem, Throws]>;
+
+// tag : F2_dfclass
+class Hexagon_i32_doublei32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i32_ty], [llvm_double_ty,llvm_i32_ty],
+ [IntrNoMem, Throws]>;
+
+// tag : V6_vd0
+class Hexagon_v16i32__Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v16i32_ty], [],
+ [IntrNoMem]>;
+
+// tag : V6_vd0
+class Hexagon_v32i32__Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v32i32_ty], [],
+ [IntrNoMem]>;
+
+// tag : V6_vdd0
+class Hexagon_v64i32__Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v64i32_ty], [],
+ [IntrNoMem]>;
+
+// tag : S2_insert_rp
+class Hexagon_i32_i32i32i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i32_ty], [llvm_i32_ty,llvm_i32_ty,llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag : V6_vassignp
+class Hexagon_v64i32_v64i32_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v64i32_ty], [llvm_v64i32_ty],
+ [IntrNoMem]>;
+
+// tag : A6_vminub_RdP
+class Hexagon_i64i32_i64i64_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_i64_ty,llvm_i32_ty], [llvm_i64_ty,llvm_i64_ty],
+ [IntrNoMem]>;
+
+// tag : V6_pred_not
+class Hexagon_v512i1_v512i1_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v512i1_ty], [llvm_v512i1_ty],
+ [IntrNoMem]>;
+
+// tag : V6_pred_not
+class Hexagon_v1024i1_v1024i1_Intrinsic<string GCCIntSuffix>
+ : Hexagon_Intrinsic<GCCIntSuffix,
+ [llvm_v1024i1_ty], [llvm_v1024i1_ty],
+ [IntrNoMem]>;
+
+// V5 Scalar Instructions.
+
+def int_hexagon_S2_asr_r_p_or :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asr_r_p_or">;
+
+def int_hexagon_S2_vsatwh :
+Hexagon_i32_i64_Intrinsic<"HEXAGON_S2_vsatwh">;
+
+def int_hexagon_S2_tableidxd_goodsyntax :
+Hexagon_i32_i32i32i32i32_Intrinsic<"HEXAGON_S2_tableidxd_goodsyntax">;
+
+def int_hexagon_M2_mpysu_up :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpysu_up">;
+
+def int_hexagon_M2_mpyud_acc_ll_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyud_acc_ll_s0">;
+
+def int_hexagon_M2_mpyud_acc_ll_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyud_acc_ll_s1">;
+
+def int_hexagon_M2_cmpysc_s1 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_cmpysc_s1">;
+
+def int_hexagon_M2_cmpysc_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_cmpysc_s0">;
+
+def int_hexagon_M4_cmpyi_whc :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_M4_cmpyi_whc">;
+
+def int_hexagon_M2_mpy_sat_rnd_lh_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_sat_rnd_lh_s1">;
+
+def int_hexagon_M2_mpy_sat_rnd_lh_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_sat_rnd_lh_s0">;
+
+def int_hexagon_S2_tableidxb_goodsyntax :
+Hexagon_i32_i32i32i32i32_Intrinsic<"HEXAGON_S2_tableidxb_goodsyntax">;
+
+def int_hexagon_S2_shuffoh :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_S2_shuffoh">;
+
+def int_hexagon_F2_sfmax :
+Hexagon_float_floatfloat_Intrinsic<"HEXAGON_F2_sfmax">;
+
+def int_hexagon_A2_vabswsat :
+Hexagon_i64_i64_Intrinsic<"HEXAGON_A2_vabswsat">;
+
+def int_hexagon_S2_asr_i_r :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asr_i_r">;
+
+def int_hexagon_S2_asr_i_p :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_i_p">;
+
+def int_hexagon_A4_combineri :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_A4_combineri">;
+
+def int_hexagon_M2_mpy_nac_sat_hl_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_nac_sat_hl_s1">;
+
+def int_hexagon_M4_vpmpyh_acc :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M4_vpmpyh_acc">;
+
+def int_hexagon_M2_vcmpy_s0_sat_i :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_vcmpy_s0_sat_i">;
+
+def int_hexagon_A2_notp :
+Hexagon_i64_i64_Intrinsic<"HEXAGON_A2_notp">;
+
+def int_hexagon_M2_mpy_hl_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_hl_s1">;
+
+def int_hexagon_M2_mpy_hl_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_hl_s0">;
+
+def int_hexagon_C4_or_and :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_C4_or_and">;
+
+def int_hexagon_M2_vmac2s_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_vmac2s_s0">;
+
+def int_hexagon_M2_vmac2s_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_vmac2s_s1">;
+
+def int_hexagon_S2_brevp :
+Hexagon_i64_i64_Intrinsic<"HEXAGON_S2_brevp">;
+
+def int_hexagon_M4_pmpyw_acc :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M4_pmpyw_acc">;
+
+def int_hexagon_S2_cl1 :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_S2_cl1">;
+
+def int_hexagon_C4_cmplte :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_cmplte">;
+
+def int_hexagon_M2_mmpyul_s0 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_mmpyul_s0">;
+
+def int_hexagon_A2_vaddws :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vaddws">;
+
+def int_hexagon_A2_maxup :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_maxup">;
+
+def int_hexagon_A4_vcmphgti :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmphgti">;
+
+def int_hexagon_S2_interleave :
+Hexagon_i64_i64_Intrinsic<"HEXAGON_S2_interleave">;
+
+def int_hexagon_M2_vrcmpyi_s0 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_vrcmpyi_s0">;
+
+def int_hexagon_A2_abssat :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_abssat">;
+
+def int_hexagon_A2_vcmpwgtu :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A2_vcmpwgtu">;
+
+def int_hexagon_C2_cmpgtu :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpgtu">;
+
+def int_hexagon_C2_cmpgtp :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_C2_cmpgtp">;
+
+def int_hexagon_A4_cmphgtui :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmphgtui">;
+
+def int_hexagon_C2_cmpgti :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpgti">;
+
+def int_hexagon_M2_mpyi :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpyi">;
+
+def int_hexagon_F2_conv_df2uw_chop :
+Hexagon_i32_double_Intrinsic<"HEXAGON_F2_conv_df2uw_chop">;
+
+def int_hexagon_A4_cmpheq :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpheq">;
+
+def int_hexagon_M2_mpy_lh_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_lh_s1">;
+
+def int_hexagon_M2_mpy_lh_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_lh_s0">;
+
+def int_hexagon_S2_lsr_i_r_xacc :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsr_i_r_xacc">;
+
+def int_hexagon_S2_vrcnegh :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_vrcnegh">;
+
+def int_hexagon_S2_extractup :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_S2_extractup">;
+
+def int_hexagon_S2_asr_i_p_rnd_goodsyntax :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_i_p_rnd_goodsyntax">;
+
+def int_hexagon_S4_ntstbit_r :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S4_ntstbit_r">;
+
+def int_hexagon_F2_conv_w2sf :
+Hexagon_float_i32_Intrinsic<"HEXAGON_F2_conv_w2sf">;
+
+def int_hexagon_C2_not :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_C2_not">;
+
+def int_hexagon_C2_tfrpr :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_C2_tfrpr">;
+
+def int_hexagon_M2_mpy_ll_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_ll_s1">;
+
+def int_hexagon_M2_mpy_ll_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_ll_s0">;
+
+def int_hexagon_A4_cmpbgt :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpbgt">;
+
+def int_hexagon_S2_asr_r_r_and :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asr_r_r_and">;
+
+def int_hexagon_A4_rcmpneqi :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_rcmpneqi">;
+
+def int_hexagon_S2_asl_i_r_nac :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asl_i_r_nac">;
+
+def int_hexagon_M2_subacc :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_subacc">;
+
+def int_hexagon_A2_orp :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_orp">;
+
+def int_hexagon_M2_mpyu_up :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpyu_up">;
+
+def int_hexagon_M2_mpy_acc_sat_lh_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_acc_sat_lh_s1">;
+
+def int_hexagon_S2_asr_i_vh :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_i_vh">;
+
+def int_hexagon_S2_asr_i_vw :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_i_vw">;
+
+def int_hexagon_A4_cmpbgtu :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpbgtu">;
+
+def int_hexagon_A4_vcmpbeq_any :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A4_vcmpbeq_any">;
+
+def int_hexagon_A4_cmpbgti :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpbgti">;
+
+def int_hexagon_M2_mpyd_lh_s1 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyd_lh_s1">;
+
+def int_hexagon_S2_asl_r_p_nac :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_r_p_nac">;
+
+def int_hexagon_S2_lsr_i_r_nac :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsr_i_r_nac">;
+
+def int_hexagon_A2_addsp :
+Hexagon_i64_i32i64_Intrinsic<"HEXAGON_A2_addsp">;
+
+def int_hexagon_S4_vxsubaddw :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_S4_vxsubaddw">;
+
+def int_hexagon_A4_vcmpheqi :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpheqi">;
+
+def int_hexagon_S4_vxsubaddh :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_S4_vxsubaddh">;
+
+def int_hexagon_M4_pmpyw :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M4_pmpyw">;
+
+def int_hexagon_S2_vsathb :
+Hexagon_i32_i64_Intrinsic<"HEXAGON_S2_vsathb">;
+
+def int_hexagon_S2_asr_r_p_and :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asr_r_p_and">;
+
+def int_hexagon_M2_mpyu_acc_lh_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpyu_acc_lh_s1">;
+
+def int_hexagon_M2_mpyu_acc_lh_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpyu_acc_lh_s0">;
+
+def int_hexagon_S2_lsl_r_p_acc :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsl_r_p_acc">;
+
+def int_hexagon_A2_pxorf :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_A2_pxorf">;
+
+def int_hexagon_C2_cmpgei :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpgei">;
+
+def int_hexagon_A2_vsubub :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vsubub">;
+
+def int_hexagon_S2_asl_i_p :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asl_i_p">;
+
+def int_hexagon_S2_asl_i_r :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asl_i_r">;
+
+def int_hexagon_A4_vrminuw :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_A4_vrminuw">;
+
+def int_hexagon_F2_sffma :
+Hexagon_float_floatfloatfloat_Intrinsic<"HEXAGON_F2_sffma">;
+
+def int_hexagon_A2_absp :
+Hexagon_i64_i64_Intrinsic<"HEXAGON_A2_absp">;
+
+def int_hexagon_C2_all8 :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_C2_all8">;
+
+def int_hexagon_A4_vrminuh :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_A4_vrminuh">;
+
+def int_hexagon_F2_sffma_lib :
+Hexagon_float_floatfloatfloat_Intrinsic<"HEXAGON_F2_sffma_lib">;
+
+def int_hexagon_M4_vrmpyoh_s0 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M4_vrmpyoh_s0">;
+
+def int_hexagon_M4_vrmpyoh_s1 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M4_vrmpyoh_s1">;
+
+def int_hexagon_C2_bitsset :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_bitsset">;
+
+def int_hexagon_M2_mpysip :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpysip">;
+
+def int_hexagon_M2_mpysin :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpysin">;
+
+def int_hexagon_A4_boundscheck :
+Hexagon_i32_i32i64_Intrinsic<"HEXAGON_A4_boundscheck">;
+
+def int_hexagon_M5_vrmpybuu :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M5_vrmpybuu">;
+
+def int_hexagon_C4_fastcorner9 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_fastcorner9">;
+
+def int_hexagon_M2_vrcmpys_s1rp :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_M2_vrcmpys_s1rp">;
+
+def int_hexagon_A2_neg :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_neg">;
+
+def int_hexagon_A2_subsat :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_subsat">;
+
+def int_hexagon_S2_asl_r_r :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asl_r_r">;
+
+def int_hexagon_S2_asl_r_p :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asl_r_p">;
+
+def int_hexagon_A2_vnavgh :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vnavgh">;
+
+def int_hexagon_M2_mpy_nac_sat_hl_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_nac_sat_hl_s0">;
+
+def int_hexagon_F2_conv_ud2df :
+Hexagon_double_i64_Intrinsic<"HEXAGON_F2_conv_ud2df">;
+
+def int_hexagon_A2_vnavgw :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vnavgw">;
+
+def int_hexagon_S2_asl_i_r_acc :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asl_i_r_acc">;
+
+def int_hexagon_S4_subi_lsr_ri :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_subi_lsr_ri">;
+
+def int_hexagon_S2_vzxthw :
+Hexagon_i64_i32_Intrinsic<"HEXAGON_S2_vzxthw">;
+
+def int_hexagon_F2_sfadd :
+Hexagon_float_floatfloat_Intrinsic<"HEXAGON_F2_sfadd">;
+
+def int_hexagon_A2_sub :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_sub">;
+
+def int_hexagon_M2_vmac2su_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_vmac2su_s0">;
+
+def int_hexagon_M2_vmac2su_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_vmac2su_s1">;
+
+def int_hexagon_M2_dpmpyss_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_dpmpyss_s0">;
+
+def int_hexagon_S2_insert :
+Hexagon_i32_i32i32i32i32_Intrinsic<"HEXAGON_S2_insert">;
+
+def int_hexagon_S2_packhl :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_S2_packhl">;
+
+def int_hexagon_A4_vcmpwgti :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpwgti">;
+
+def int_hexagon_A2_vavguwr :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vavguwr">;
+
+def int_hexagon_S2_asl_r_r_and :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asl_r_r_and">;
+
+def int_hexagon_A2_svsubhs :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_svsubhs">;
+
+def int_hexagon_A2_addh_l16_hl :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_addh_l16_hl">;
+
+def int_hexagon_M4_and_and :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_and_and">;
+
+def int_hexagon_F2_conv_d2df :
+Hexagon_double_i64_Intrinsic<"HEXAGON_F2_conv_d2df">;
+
+def int_hexagon_C2_cmpgtui :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpgtui">;
+
+def int_hexagon_A2_vconj :
+Hexagon_i64_i64_Intrinsic<"HEXAGON_A2_vconj">;
+
+def int_hexagon_S2_lsr_r_vw :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_lsr_r_vw">;
+
+def int_hexagon_S2_lsr_r_vh :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_lsr_r_vh">;
+
+def int_hexagon_A2_subh_l16_hl :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_subh_l16_hl">;
+
+def int_hexagon_S4_vxsubaddhr :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_S4_vxsubaddhr">;
+
+def int_hexagon_S2_clbp :
+Hexagon_i32_i64_Intrinsic<"HEXAGON_S2_clbp">;
+
+def int_hexagon_S2_deinterleave :
+Hexagon_i64_i64_Intrinsic<"HEXAGON_S2_deinterleave">;
+
+def int_hexagon_C2_any8 :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_C2_any8">;
+
+def int_hexagon_S2_togglebit_r :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_togglebit_r">;
+
+def int_hexagon_S2_togglebit_i :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_togglebit_i">;
+
+def int_hexagon_F2_conv_uw2sf :
+Hexagon_float_i32_Intrinsic<"HEXAGON_F2_conv_uw2sf">;
+
+def int_hexagon_S2_vsathb_nopack :
+Hexagon_i64_i64_Intrinsic<"HEXAGON_S2_vsathb_nopack">;
+
+def int_hexagon_M2_cmacs_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_cmacs_s0">;
+
+def int_hexagon_M2_cmacs_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_cmacs_s1">;
+
+def int_hexagon_M2_mpy_sat_hh_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_sat_hh_s0">;
+
+def int_hexagon_M2_mpy_sat_hh_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_sat_hh_s1">;
+
+def int_hexagon_M2_mmacuhs_s1 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_mmacuhs_s1">;
+
+def int_hexagon_M2_mmacuhs_s0 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_mmacuhs_s0">;
+
+def int_hexagon_S2_clrbit_r :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_clrbit_r">;
+
+def int_hexagon_C4_or_andn :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_C4_or_andn">;
+
+def int_hexagon_S2_asl_r_r_nac :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asl_r_r_nac">;
+
+def int_hexagon_S2_asl_i_p_acc :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_i_p_acc">;
+
+def int_hexagon_A4_vcmpwgtui :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpwgtui">;
+
+def int_hexagon_M4_vrmpyoh_acc_s0 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M4_vrmpyoh_acc_s0">;
+
+def int_hexagon_M4_vrmpyoh_acc_s1 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M4_vrmpyoh_acc_s1">;
+
+def int_hexagon_A4_vrmaxh :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_A4_vrmaxh">;
+
+def int_hexagon_A2_vcmpbeq :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A2_vcmpbeq">;
+
+def int_hexagon_A2_vcmphgt :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A2_vcmphgt">;
+
+def int_hexagon_A2_vnavgwcr :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vnavgwcr">;
+
+def int_hexagon_M2_vrcmacr_s0c :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_vrcmacr_s0c">;
+
+def int_hexagon_A2_vavgwcr :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vavgwcr">;
+
+def int_hexagon_S2_asl_i_p_xacc :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_i_p_xacc">;
+
+def int_hexagon_A4_vrmaxw :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_A4_vrmaxw">;
+
+def int_hexagon_A2_vnavghr :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vnavghr">;
+
+def int_hexagon_M4_cmpyi_wh :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_M4_cmpyi_wh">;
+
+def int_hexagon_A2_tfrsi :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_tfrsi">;
+
+def int_hexagon_S2_asr_i_r_acc :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asr_i_r_acc">;
+
+def int_hexagon_A2_svnavgh :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_svnavgh">;
+
+def int_hexagon_S2_lsr_i_r :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_lsr_i_r">;
+
+def int_hexagon_M2_vmac2 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_vmac2">;
+
+def int_hexagon_A4_vcmphgtui :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmphgtui">;
+
+def int_hexagon_A2_svavgh :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_svavgh">;
+
+def int_hexagon_M4_vrmpyeh_acc_s0 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M4_vrmpyeh_acc_s0">;
+
+def int_hexagon_M4_vrmpyeh_acc_s1 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M4_vrmpyeh_acc_s1">;
+
+def int_hexagon_S2_lsr_i_p :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_lsr_i_p">;
+
+def int_hexagon_A2_combine_hl :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_combine_hl">;
+
+def int_hexagon_M2_mpy_up :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_up">;
+
+def int_hexagon_A2_combine_hh :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_combine_hh">;
+
+def int_hexagon_A2_negsat :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_negsat">;
+
+def int_hexagon_M2_mpyd_hl_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyd_hl_s0">;
+
+def int_hexagon_M2_mpyd_hl_s1 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyd_hl_s1">;
+
+def int_hexagon_A4_bitsplit :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_A4_bitsplit">;
+
+def int_hexagon_A2_vabshsat :
+Hexagon_i64_i64_Intrinsic<"HEXAGON_A2_vabshsat">;
+
+def int_hexagon_M2_mpyui :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpyui">;
+
+def int_hexagon_A2_addh_l16_sat_ll :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_addh_l16_sat_ll">;
+
+def int_hexagon_S2_lsl_r_r_and :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsl_r_r_and">;
+
+def int_hexagon_M2_mmpyul_rs0 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_mmpyul_rs0">;
+
+def int_hexagon_S2_asr_i_r_rnd_goodsyntax :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asr_i_r_rnd_goodsyntax">;
+
+def int_hexagon_S2_lsr_r_p_nac :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_r_p_nac">;
+
+def int_hexagon_C2_cmplt :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmplt">;
+
+def int_hexagon_M2_cmacr_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_cmacr_s0">;
+
+def int_hexagon_M4_or_and :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_or_and">;
+
+def int_hexagon_M4_mpyrr_addi :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_mpyrr_addi">;
+
+def int_hexagon_S4_or_andi :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_or_andi">;
+
+def int_hexagon_M2_mpy_sat_hl_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_sat_hl_s0">;
+
+def int_hexagon_M2_mpy_sat_hl_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_sat_hl_s1">;
+
+def int_hexagon_M4_mpyrr_addr :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_mpyrr_addr">;
+
+def int_hexagon_M2_mmachs_rs0 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_mmachs_rs0">;
+
+def int_hexagon_M2_mmachs_rs1 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_mmachs_rs1">;
+
+def int_hexagon_M2_vrcmpyr_s0c :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_vrcmpyr_s0c">;
+
+def int_hexagon_M2_mpy_acc_sat_hl_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_acc_sat_hl_s0">;
+
+def int_hexagon_M2_mpyd_acc_ll_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyd_acc_ll_s1">;
+
+def int_hexagon_F2_sffixupn :
+Hexagon_float_floatfloat_Intrinsic<"HEXAGON_F2_sffixupn">;
+
+def int_hexagon_M2_mpyd_acc_lh_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyd_acc_lh_s0">;
+
+def int_hexagon_M2_mpyd_acc_lh_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyd_acc_lh_s1">;
+
+def int_hexagon_M2_mpy_rnd_hh_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_rnd_hh_s0">;
+
+def int_hexagon_M2_mpy_rnd_hh_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_rnd_hh_s1">;
+
+def int_hexagon_A2_vadduhs :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vadduhs">;
+
+def int_hexagon_A2_vsubuhs :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vsubuhs">;
+
+def int_hexagon_A2_subh_h16_hl :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_subh_h16_hl">;
+
+def int_hexagon_A2_subh_h16_hh :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_subh_h16_hh">;
+
+def int_hexagon_A2_xorp :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_xorp">;
+
+def int_hexagon_A4_tfrpcp :
+Hexagon_i64_i64_Intrinsic<"HEXAGON_A4_tfrpcp">;
+
+def int_hexagon_A2_addh_h16_lh :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_addh_h16_lh">;
+
+def int_hexagon_A2_addh_h16_sat_hl :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_addh_h16_sat_hl">;
+
+def int_hexagon_A2_addh_h16_ll :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_addh_h16_ll">;
+
+def int_hexagon_A2_addh_h16_sat_hh :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_addh_h16_sat_hh">;
+
+def int_hexagon_A2_zxtb :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_zxtb">;
+
+def int_hexagon_A2_zxth :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_zxth">;
+
+def int_hexagon_A2_vnavgwr :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vnavgwr">;
+
+def int_hexagon_M4_or_xor :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_or_xor">;
+
+def int_hexagon_M2_mpyud_acc_hh_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyud_acc_hh_s0">;
+
+def int_hexagon_M2_mpyud_acc_hh_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyud_acc_hh_s1">;
+
+def int_hexagon_M5_vmacbsu :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M5_vmacbsu">;
+
+def int_hexagon_M2_dpmpyuu_acc_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_dpmpyuu_acc_s0">;
+
+def int_hexagon_M2_mpy_rnd_hl_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_rnd_hl_s0">;
+
+def int_hexagon_M2_mpy_rnd_hl_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_rnd_hl_s1">;
+
+def int_hexagon_F2_sffms_lib :
+Hexagon_float_floatfloatfloat_Intrinsic<"HEXAGON_F2_sffms_lib">;
+
+def int_hexagon_C4_cmpneqi :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_cmpneqi">;
+
+def int_hexagon_M4_and_xor :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_and_xor">;
+
+def int_hexagon_A2_sat :
+Hexagon_i32_i64_Intrinsic<"HEXAGON_A2_sat">;
+
+def int_hexagon_M2_mpyd_nac_lh_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyd_nac_lh_s1">;
+
+def int_hexagon_M2_mpyd_nac_lh_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyd_nac_lh_s0">;
+
+def int_hexagon_A2_addsat :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_addsat">;
+
+def int_hexagon_A2_svavghs :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_svavghs">;
+
+def int_hexagon_A2_vrsadub_acc :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_A2_vrsadub_acc">;
+
+def int_hexagon_C2_bitsclri :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_bitsclri">;
+
+def int_hexagon_A2_subh_h16_sat_hh :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_subh_h16_sat_hh">;
+
+def int_hexagon_A2_subh_h16_sat_hl :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_subh_h16_sat_hl">;
+
+def int_hexagon_M2_mmaculs_rs0 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_mmaculs_rs0">;
+
+def int_hexagon_M2_mmaculs_rs1 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_mmaculs_rs1">;
+
+def int_hexagon_M2_vradduh :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_M2_vradduh">;
+
+def int_hexagon_A4_addp_c :
+Hexagon_i64i32_i64i64i32_Intrinsic<"HEXAGON_A4_addp_c">;
+
+def int_hexagon_C2_xor :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_xor">;
+
+def int_hexagon_S2_lsl_r_r_acc :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsl_r_r_acc">;
+
+def int_hexagon_M2_mmpyh_rs1 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_mmpyh_rs1">;
+
+def int_hexagon_M2_mmpyh_rs0 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_mmpyh_rs0">;
+
+def int_hexagon_F2_conv_df2ud_chop :
+Hexagon_i64_double_Intrinsic<"HEXAGON_F2_conv_df2ud_chop">;
+
+def int_hexagon_C4_or_or :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_C4_or_or">;
+
+def int_hexagon_S4_vxaddsubhr :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_S4_vxaddsubhr">;
+
+def int_hexagon_S2_vsathub :
+Hexagon_i32_i64_Intrinsic<"HEXAGON_S2_vsathub">;
+
+def int_hexagon_F2_conv_df2sf :
+Hexagon_float_double_Intrinsic<"HEXAGON_F2_conv_df2sf">;
+
+def int_hexagon_M2_hmmpyh_rs1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_hmmpyh_rs1">;
+
+def int_hexagon_M2_hmmpyh_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_hmmpyh_s1">;
+
+def int_hexagon_A2_vavgwr :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vavgwr">;
+
+def int_hexagon_S2_tableidxh_goodsyntax :
+Hexagon_i32_i32i32i32i32_Intrinsic<"HEXAGON_S2_tableidxh_goodsyntax">;
+
+def int_hexagon_A2_sxth :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_sxth">;
+
+def int_hexagon_A2_sxtb :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_sxtb">;
+
+def int_hexagon_C4_or_orn :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_C4_or_orn">;
+
+def int_hexagon_M2_vrcmaci_s0c :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_vrcmaci_s0c">;
+
+def int_hexagon_A2_sxtw :
+Hexagon_i64_i32_Intrinsic<"HEXAGON_A2_sxtw">;
+
+def int_hexagon_M2_vabsdiffh :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_vabsdiffh">;
+
+def int_hexagon_M2_mpy_acc_lh_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_acc_lh_s1">;
+
+def int_hexagon_M2_mpy_acc_lh_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_acc_lh_s0">;
+
+def int_hexagon_M2_hmmpyl_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_hmmpyl_s1">;
+
+def int_hexagon_S2_cl1p :
+Hexagon_i32_i64_Intrinsic<"HEXAGON_S2_cl1p">;
+
+def int_hexagon_M2_vabsdiffw :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_vabsdiffw">;
+
+def int_hexagon_A4_andnp :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A4_andnp">;
+
+def int_hexagon_C2_vmux :
+Hexagon_i64_i32i64i64_Intrinsic<"HEXAGON_C2_vmux">;
+
+def int_hexagon_S2_parityp :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_S2_parityp">;
+
+def int_hexagon_S2_lsr_i_p_and :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_i_p_and">;
+
+def int_hexagon_S2_asr_i_r_or :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asr_i_r_or">;
+
+def int_hexagon_M2_mpyu_nac_ll_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpyu_nac_ll_s0">;
+
+def int_hexagon_M2_mpyu_nac_ll_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpyu_nac_ll_s1">;
+
+def int_hexagon_F2_sfcmpeq :
+Hexagon_i32_floatfloat_Intrinsic<"HEXAGON_F2_sfcmpeq">;
+
+def int_hexagon_A2_vaddb_map :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vaddb_map">;
+
+def int_hexagon_S2_lsr_r_r_nac :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsr_r_r_nac">;
+
+def int_hexagon_A2_vcmpheq :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A2_vcmpheq">;
+
+def int_hexagon_S2_clbnorm :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_S2_clbnorm">;
+
+def int_hexagon_M2_cnacsc_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_cnacsc_s1">;
+
+def int_hexagon_M2_cnacsc_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_cnacsc_s0">;
+
+def int_hexagon_S4_subaddi :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_subaddi">;
+
+def int_hexagon_M2_mpyud_nac_hl_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyud_nac_hl_s1">;
+
+def int_hexagon_M2_mpyud_nac_hl_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyud_nac_hl_s0">;
+
+def int_hexagon_S5_vasrhrnd_goodsyntax :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S5_vasrhrnd_goodsyntax">;
+
+def int_hexagon_S2_tstbit_r :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_tstbit_r">;
+
+def int_hexagon_S4_vrcrotate :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_S4_vrcrotate">;
+
+def int_hexagon_M2_mmachs_s1 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_mmachs_s1">;
+
+def int_hexagon_M2_mmachs_s0 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_mmachs_s0">;
+
+def int_hexagon_S2_tstbit_i :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_tstbit_i">;
+
+def int_hexagon_M2_mpy_up_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_up_s1">;
+
+def int_hexagon_S2_extractu_rp :
+Hexagon_i32_i32i64_Intrinsic<"HEXAGON_S2_extractu_rp">;
+
+def int_hexagon_M2_mmpyuh_rs0 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_mmpyuh_rs0">;
+
+def int_hexagon_S2_lsr_i_vw :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_lsr_i_vw">;
+
+def int_hexagon_M2_mpy_rnd_ll_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_rnd_ll_s0">;
+
+def int_hexagon_M2_mpy_rnd_ll_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_rnd_ll_s1">;
+
+def int_hexagon_M4_or_or :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_or_or">;
+
+def int_hexagon_M2_mpyu_hh_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpyu_hh_s1">;
+
+def int_hexagon_M2_mpyu_hh_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpyu_hh_s0">;
+
+def int_hexagon_S2_asl_r_p_acc :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_r_p_acc">;
+
+def int_hexagon_M2_mpyu_nac_lh_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpyu_nac_lh_s0">;
+
+def int_hexagon_M2_mpyu_nac_lh_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpyu_nac_lh_s1">;
+
+def int_hexagon_M2_mpy_sat_ll_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_sat_ll_s0">;
+
+def int_hexagon_M2_mpy_sat_ll_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_sat_ll_s1">;
+
+def int_hexagon_F2_conv_w2df :
+Hexagon_double_i32_Intrinsic<"HEXAGON_F2_conv_w2df">;
+
+def int_hexagon_A2_subh_l16_sat_hl :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_subh_l16_sat_hl">;
+
+def int_hexagon_C2_cmpeqi :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpeqi">;
+
+def int_hexagon_S2_asl_i_r_and :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asl_i_r_and">;
+
+def int_hexagon_S2_vcnegh :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_vcnegh">;
+
+def int_hexagon_A4_vcmpweqi :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpweqi">;
+
+def int_hexagon_M2_vdmpyrs_s0 :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_M2_vdmpyrs_s0">;
+
+def int_hexagon_M2_vdmpyrs_s1 :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_M2_vdmpyrs_s1">;
+
+def int_hexagon_M4_xor_xacc :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M4_xor_xacc">;
+
+def int_hexagon_M2_vdmpys_s1 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_vdmpys_s1">;
+
+def int_hexagon_M2_vdmpys_s0 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_vdmpys_s0">;
+
+def int_hexagon_A2_vavgubr :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vavgubr">;
+
+def int_hexagon_M2_mpyu_hl_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpyu_hl_s1">;
+
+def int_hexagon_M2_mpyu_hl_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpyu_hl_s0">;
+
+def int_hexagon_S2_asl_r_r_acc :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asl_r_r_acc">;
+
+def int_hexagon_S2_cl0p :
+Hexagon_i32_i64_Intrinsic<"HEXAGON_S2_cl0p">;
+
+def int_hexagon_S2_valignib :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_valignib">;
+
+def int_hexagon_F2_sffixupd :
+Hexagon_float_floatfloat_Intrinsic<"HEXAGON_F2_sffixupd">;
+
+def int_hexagon_M2_mpy_sat_rnd_hl_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_sat_rnd_hl_s1">;
+
+def int_hexagon_M2_mpy_sat_rnd_hl_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_sat_rnd_hl_s0">;
+
+def int_hexagon_M2_cmacsc_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_cmacsc_s0">;
+
+def int_hexagon_M2_cmacsc_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_cmacsc_s1">;
+
+def int_hexagon_S2_ct1 :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_S2_ct1">;
+
+def int_hexagon_S2_ct0 :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_S2_ct0">;
+
+def int_hexagon_M2_dpmpyuu_nac_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_dpmpyuu_nac_s0">;
+
+def int_hexagon_M2_mmpyul_rs1 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_mmpyul_rs1">;
+
+def int_hexagon_S4_ntstbit_i :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S4_ntstbit_i">;
+
+def int_hexagon_F2_sffixupr :
+Hexagon_float_float_Intrinsic<"HEXAGON_F2_sffixupr">;
+
+def int_hexagon_S2_asr_r_p_xor :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asr_r_p_xor">;
+
+def int_hexagon_M2_mpyud_acc_hl_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyud_acc_hl_s0">;
+
+def int_hexagon_M2_mpyud_acc_hl_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyud_acc_hl_s1">;
+
+def int_hexagon_A2_vcmphgtu :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A2_vcmphgtu">;
+
+def int_hexagon_C2_andn :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_andn">;
+
+def int_hexagon_M2_vmpy2s_s0pack :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_vmpy2s_s0pack">;
+
+def int_hexagon_S4_addaddi :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_addaddi">;
+
+def int_hexagon_M2_mpyd_acc_ll_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyd_acc_ll_s0">;
+
+def int_hexagon_M2_mpy_acc_sat_hl_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_acc_sat_hl_s1">;
+
+def int_hexagon_A4_rcmpeqi :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_rcmpeqi">;
+
+def int_hexagon_M4_xor_and :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_xor_and">;
+
+def int_hexagon_S2_asl_i_p_and :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_i_p_and">;
+
+def int_hexagon_M2_mmpyuh_rs1 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_mmpyuh_rs1">;
+
+def int_hexagon_S2_asr_r_r_or :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asr_r_r_or">;
+
+def int_hexagon_A4_round_ri :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_round_ri">;
+
+def int_hexagon_A2_max :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_max">;
+
+def int_hexagon_A4_round_rr :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_round_rr">;
+
+def int_hexagon_A4_combineii :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_A4_combineii">;
+
+def int_hexagon_A4_combineir :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_A4_combineir">;
+
+def int_hexagon_C4_and_orn :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_C4_and_orn">;
+
+def int_hexagon_M5_vmacbuu :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M5_vmacbuu">;
+
+def int_hexagon_A4_rcmpeq :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_rcmpeq">;
+
+def int_hexagon_M4_cmpyr_whc :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_M4_cmpyr_whc">;
+
+def int_hexagon_S2_lsr_i_r_acc :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsr_i_r_acc">;
+
+def int_hexagon_S2_vzxtbh :
+Hexagon_i64_i32_Intrinsic<"HEXAGON_S2_vzxtbh">;
+
+def int_hexagon_M2_mmacuhs_rs1 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_mmacuhs_rs1">;
+
+def int_hexagon_S2_asr_r_r_sat :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asr_r_r_sat">;
+
+def int_hexagon_A2_combinew :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_A2_combinew">;
+
+def int_hexagon_M2_mpy_acc_ll_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_acc_ll_s1">;
+
+def int_hexagon_M2_mpy_acc_ll_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_acc_ll_s0">;
+
+def int_hexagon_M2_cmpyi_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_cmpyi_s0">;
+
+def int_hexagon_S2_asl_r_p_or :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_r_p_or">;
+
+def int_hexagon_S4_ori_asl_ri :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_ori_asl_ri">;
+
+def int_hexagon_C4_nbitsset :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_nbitsset">;
+
+def int_hexagon_M2_mpyu_acc_hh_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpyu_acc_hh_s1">;
+
+def int_hexagon_M2_mpyu_acc_hh_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpyu_acc_hh_s0">;
+
+def int_hexagon_M2_mpyu_ll_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpyu_ll_s1">;
+
+def int_hexagon_M2_mpyu_ll_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpyu_ll_s0">;
+
+def int_hexagon_A2_addh_l16_ll :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_addh_l16_ll">;
+
+def int_hexagon_S2_lsr_r_r_and :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsr_r_r_and">;
+
+def int_hexagon_A4_modwrapu :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_modwrapu">;
+
+def int_hexagon_A4_rcmpneq :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_rcmpneq">;
+
+def int_hexagon_M2_mpyd_acc_hh_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyd_acc_hh_s0">;
+
+def int_hexagon_M2_mpyd_acc_hh_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyd_acc_hh_s1">;
+
+def int_hexagon_F2_sfimm_p :
+Hexagon_float_i32_Intrinsic<"HEXAGON_F2_sfimm_p">;
+
+def int_hexagon_F2_sfimm_n :
+Hexagon_float_i32_Intrinsic<"HEXAGON_F2_sfimm_n">;
+
+def int_hexagon_M4_cmpyr_wh :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_M4_cmpyr_wh">;
+
+def int_hexagon_S2_lsl_r_p_and :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsl_r_p_and">;
+
+def int_hexagon_A2_vavgub :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vavgub">;
+
+def int_hexagon_F2_conv_d2sf :
+Hexagon_float_i64_Intrinsic<"HEXAGON_F2_conv_d2sf">;
+
+def int_hexagon_A2_vavguh :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vavguh">;
+
+def int_hexagon_A4_cmpbeqi :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpbeqi">;
+
+def int_hexagon_F2_sfcmpuo :
+Hexagon_i32_floatfloat_Intrinsic<"HEXAGON_F2_sfcmpuo">;
+
+def int_hexagon_A2_vavguw :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vavguw">;
+
+def int_hexagon_S2_asr_i_p_nac :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asr_i_p_nac">;
+
+def int_hexagon_S2_vsatwh_nopack :
+Hexagon_i64_i64_Intrinsic<"HEXAGON_S2_vsatwh_nopack">;
+
+def int_hexagon_M2_mpyd_hh_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyd_hh_s0">;
+
+def int_hexagon_M2_mpyd_hh_s1 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyd_hh_s1">;
+
+def int_hexagon_S2_lsl_r_p_or :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsl_r_p_or">;
+
+def int_hexagon_A2_minu :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_minu">;
+
+def int_hexagon_M2_mpy_sat_lh_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_sat_lh_s1">;
+
+def int_hexagon_M4_or_andn :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_or_andn">;
+
+def int_hexagon_A2_minp :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_minp">;
+
+def int_hexagon_S4_or_andix :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_or_andix">;
+
+def int_hexagon_M2_mpy_rnd_lh_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_rnd_lh_s0">;
+
+def int_hexagon_M2_mpy_rnd_lh_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_rnd_lh_s1">;
+
+def int_hexagon_M2_mmpyuh_s0 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_mmpyuh_s0">;
+
+def int_hexagon_M2_mmpyuh_s1 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_mmpyuh_s1">;
+
+def int_hexagon_M2_mpy_acc_sat_lh_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_acc_sat_lh_s0">;
+
+def int_hexagon_F2_sfcmpge :
+Hexagon_i32_floatfloat_Intrinsic<"HEXAGON_F2_sfcmpge">;
+
+def int_hexagon_F2_sfmin :
+Hexagon_float_floatfloat_Intrinsic<"HEXAGON_F2_sfmin">;
+
+def int_hexagon_F2_sfcmpgt :
+Hexagon_i32_floatfloat_Intrinsic<"HEXAGON_F2_sfcmpgt">;
+
+def int_hexagon_M4_vpmpyh :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M4_vpmpyh">;
+
+def int_hexagon_M2_mmacuhs_rs0 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_mmacuhs_rs0">;
+
+def int_hexagon_M2_mpyd_rnd_lh_s1 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyd_rnd_lh_s1">;
+
+def int_hexagon_M2_mpyd_rnd_lh_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyd_rnd_lh_s0">;
+
+def int_hexagon_A2_roundsat :
+Hexagon_i32_i64_Intrinsic<"HEXAGON_A2_roundsat">;
+
+def int_hexagon_S2_ct1p :
+Hexagon_i32_i64_Intrinsic<"HEXAGON_S2_ct1p">;
+
+def int_hexagon_S4_extract_rp :
+Hexagon_i32_i32i64_Intrinsic<"HEXAGON_S4_extract_rp">;
+
+def int_hexagon_S2_lsl_r_r_or :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsl_r_r_or">;
+
+def int_hexagon_C4_cmplteui :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_cmplteui">;
+
+def int_hexagon_S4_addi_lsr_ri :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_addi_lsr_ri">;
+
+def int_hexagon_A4_tfrcpp :
+Hexagon_i64_i64_Intrinsic<"HEXAGON_A4_tfrcpp">;
+
+def int_hexagon_S2_asr_i_svw_trun :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_S2_asr_i_svw_trun">;
+
+def int_hexagon_A4_cmphgti :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmphgti">;
+
+def int_hexagon_A4_vrminh :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_A4_vrminh">;
+
+def int_hexagon_A4_vrminw :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_A4_vrminw">;
+
+def int_hexagon_A4_cmphgtu :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmphgtu">;
+
+def int_hexagon_S2_insertp_rp :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_S2_insertp_rp">;
+
+def int_hexagon_A2_vnavghcr :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vnavghcr">;
+
+def int_hexagon_S4_subi_asl_ri :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_subi_asl_ri">;
+
+def int_hexagon_S2_lsl_r_vh :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_lsl_r_vh">;
+
+def int_hexagon_M2_mpy_hh_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_hh_s0">;
+
+def int_hexagon_A2_vsubws :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vsubws">;
+
+def int_hexagon_A2_sath :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_sath">;
+
+def int_hexagon_S2_asl_r_p_xor :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_r_p_xor">;
+
+def int_hexagon_A2_satb :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_satb">;
+
+def int_hexagon_C2_cmpltu :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpltu">;
+
+def int_hexagon_S2_insertp :
+Hexagon_i64_i64i64i32i32_Intrinsic<"HEXAGON_S2_insertp">;
+
+def int_hexagon_M2_mpyd_rnd_ll_s1 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyd_rnd_ll_s1">;
+
+def int_hexagon_M2_mpyd_rnd_ll_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyd_rnd_ll_s0">;
+
+def int_hexagon_S2_lsr_i_p_nac :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_i_p_nac">;
+
+def int_hexagon_S2_extractup_rp :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_S2_extractup_rp">;
+
+def int_hexagon_S4_vxaddsubw :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_S4_vxaddsubw">;
+
+def int_hexagon_S4_vxaddsubh :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_S4_vxaddsubh">;
+
+def int_hexagon_A2_asrh :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_asrh">;
+
+def int_hexagon_S4_extractp_rp :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_S4_extractp_rp">;
+
+def int_hexagon_S2_lsr_r_r_acc :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsr_r_r_acc">;
+
+def int_hexagon_M2_mpyd_nac_ll_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyd_nac_ll_s1">;
+
+def int_hexagon_M2_mpyd_nac_ll_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyd_nac_ll_s0">;
+
+def int_hexagon_C2_or :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_or">;
+
+def int_hexagon_M2_mmpyul_s1 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_mmpyul_s1">;
+
+def int_hexagon_M2_vrcmacr_s0 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_vrcmacr_s0">;
+
+def int_hexagon_A2_xor :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_xor">;
+
+def int_hexagon_A2_add :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_add">;
+
+def int_hexagon_A2_vsububs :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vsububs">;
+
+def int_hexagon_M2_vmpy2s_s1 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_vmpy2s_s1">;
+
+def int_hexagon_M2_vmpy2s_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_vmpy2s_s0">;
+
+def int_hexagon_A2_vraddub_acc :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_A2_vraddub_acc">;
+
+def int_hexagon_F2_sfinvsqrta :
+Hexagon_floati32_float_Intrinsic<"HEXAGON_F2_sfinvsqrta">;
+
+def int_hexagon_S2_ct0p :
+Hexagon_i32_i64_Intrinsic<"HEXAGON_S2_ct0p">;
+
+def int_hexagon_A2_svaddh :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_svaddh">;
+
+def int_hexagon_S2_vcrotate :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_vcrotate">;
+
+def int_hexagon_A2_aslh :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_aslh">;
+
+def int_hexagon_A2_subh_h16_lh :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_subh_h16_lh">;
+
+def int_hexagon_A2_subh_h16_ll :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_subh_h16_ll">;
+
+def int_hexagon_M2_hmmpyl_rs1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_hmmpyl_rs1">;
+
+def int_hexagon_S2_asr_r_p :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_r_p">;
+
+def int_hexagon_S2_vsplatrh :
+Hexagon_i64_i32_Intrinsic<"HEXAGON_S2_vsplatrh">;
+
+def int_hexagon_S2_asr_r_r :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asr_r_r">;
+
+def int_hexagon_A2_addh_h16_hl :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_addh_h16_hl">;
+
+def int_hexagon_S2_vsplatrb :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_S2_vsplatrb">;
+
+def int_hexagon_A2_addh_h16_hh :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_addh_h16_hh">;
+
+def int_hexagon_M2_cmpyr_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_cmpyr_s0">;
+
+def int_hexagon_M2_dpmpyss_rnd_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_dpmpyss_rnd_s0">;
+
+def int_hexagon_C2_muxri :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_C2_muxri">;
+
+def int_hexagon_M2_vmac2es_s0 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_vmac2es_s0">;
+
+def int_hexagon_M2_vmac2es_s1 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_vmac2es_s1">;
+
+def int_hexagon_C2_pxfer_map :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_C2_pxfer_map">;
+
+def int_hexagon_M2_mpyu_lh_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpyu_lh_s1">;
+
+def int_hexagon_M2_mpyu_lh_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpyu_lh_s0">;
+
+def int_hexagon_S2_asl_i_r_or :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asl_i_r_or">;
+
+def int_hexagon_M2_mpyd_acc_hl_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyd_acc_hl_s0">;
+
+def int_hexagon_M2_mpyd_acc_hl_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyd_acc_hl_s1">;
+
+def int_hexagon_S2_asr_r_p_nac :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asr_r_p_nac">;
+
+def int_hexagon_A2_vaddw :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vaddw">;
+
+def int_hexagon_S2_asr_i_r_and :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asr_i_r_and">;
+
+def int_hexagon_A2_vaddh :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vaddh">;
+
+def int_hexagon_M2_mpy_nac_sat_lh_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_nac_sat_lh_s1">;
+
+def int_hexagon_M2_mpy_nac_sat_lh_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_nac_sat_lh_s0">;
+
+def int_hexagon_C2_cmpeqp :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_C2_cmpeqp">;
+
+def int_hexagon_M4_mpyri_addi :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_mpyri_addi">;
+
+def int_hexagon_A2_not :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_not">;
+
+def int_hexagon_S4_andi_lsr_ri :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_andi_lsr_ri">;
+
+def int_hexagon_M2_macsip :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_macsip">;
+
+def int_hexagon_A2_tfrcrr :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_tfrcrr">;
+
+def int_hexagon_M2_macsin :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_macsin">;
+
+def int_hexagon_C2_orn :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_orn">;
+
+def int_hexagon_M4_and_andn :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_and_andn">;
+
+def int_hexagon_F2_sfmpy :
+Hexagon_float_floatfloat_Intrinsic<"HEXAGON_F2_sfmpy">;
+
+def int_hexagon_M2_mpyud_nac_hh_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyud_nac_hh_s1">;
+
+def int_hexagon_M2_mpyud_nac_hh_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyud_nac_hh_s0">;
+
+def int_hexagon_S2_lsr_r_p_acc :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_r_p_acc">;
+
+def int_hexagon_S2_asr_r_vw :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_r_vw">;
+
+def int_hexagon_M4_and_or :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_and_or">;
+
+def int_hexagon_S2_asr_r_vh :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_r_vh">;
+
+def int_hexagon_C2_mask :
+Hexagon_i64_i32_Intrinsic<"HEXAGON_C2_mask">;
+
+def int_hexagon_M2_mpy_nac_hh_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_nac_hh_s0">;
+
+def int_hexagon_M2_mpy_nac_hh_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_nac_hh_s1">;
+
+def int_hexagon_M2_mpy_up_s1_sat :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_up_s1_sat">;
+
+def int_hexagon_A4_vcmpbgt :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A4_vcmpbgt">;
+
+def int_hexagon_M5_vrmacbsu :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M5_vrmacbsu">;
+
+def int_hexagon_S2_tableidxw_goodsyntax :
+Hexagon_i32_i32i32i32i32_Intrinsic<"HEXAGON_S2_tableidxw_goodsyntax">;
+
+def int_hexagon_A2_vrsadub :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vrsadub">;
+
+def int_hexagon_A2_tfrrcr :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_tfrrcr">;
+
+def int_hexagon_M2_vrcmpys_acc_s1 :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_M2_vrcmpys_acc_s1">;
+
+def int_hexagon_F2_dfcmpge :
+Hexagon_i32_doubledouble_Intrinsic<"HEXAGON_F2_dfcmpge">;
+
+def int_hexagon_M2_accii :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_accii">;
+
+def int_hexagon_A5_vaddhubs :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A5_vaddhubs">;
+
+def int_hexagon_A2_vmaxw :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vmaxw">;
+
+def int_hexagon_A2_vmaxb :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vmaxb">;
+
+def int_hexagon_A2_vmaxh :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vmaxh">;
+
+def int_hexagon_S2_vsxthw :
+Hexagon_i64_i32_Intrinsic<"HEXAGON_S2_vsxthw">;
+
+def int_hexagon_S4_andi_asl_ri :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_andi_asl_ri">;
+
+def int_hexagon_S2_asl_i_p_nac :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_i_p_nac">;
+
+def int_hexagon_S2_lsl_r_p_xor :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsl_r_p_xor">;
+
+def int_hexagon_C2_cmpgt :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpgt">;
+
+def int_hexagon_F2_conv_df2d_chop :
+Hexagon_i64_double_Intrinsic<"HEXAGON_F2_conv_df2d_chop">;
+
+def int_hexagon_M2_mpyu_nac_hl_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpyu_nac_hl_s0">;
+
+def int_hexagon_M2_mpyu_nac_hl_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpyu_nac_hl_s1">;
+
+def int_hexagon_F2_conv_sf2w :
+Hexagon_i32_float_Intrinsic<"HEXAGON_F2_conv_sf2w">;
+
+def int_hexagon_S2_lsr_r_p_or :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_r_p_or">;
+
+def int_hexagon_F2_sfclass :
+Hexagon_i32_floati32_Intrinsic<"HEXAGON_F2_sfclass">;
+
+def int_hexagon_M2_mpyud_acc_lh_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyud_acc_lh_s0">;
+
+def int_hexagon_M4_xor_andn :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_xor_andn">;
+
+def int_hexagon_S2_addasl_rrri :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_addasl_rrri">;
+
+def int_hexagon_M5_vdmpybsu :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M5_vdmpybsu">;
+
+def int_hexagon_M2_mpyu_nac_hh_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpyu_nac_hh_s0">;
+
+def int_hexagon_M2_mpyu_nac_hh_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpyu_nac_hh_s1">;
+
+def int_hexagon_A2_addi :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_addi">;
+
+def int_hexagon_A2_addp :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_addp">;
+
+def int_hexagon_M2_vmpy2s_s1pack :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_vmpy2s_s1pack">;
+
+def int_hexagon_S4_clbpnorm :
+Hexagon_i32_i64_Intrinsic<"HEXAGON_S4_clbpnorm">;
+
+def int_hexagon_A4_round_rr_sat :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_round_rr_sat">;
+
+def int_hexagon_M2_nacci :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_nacci">;
+
+def int_hexagon_S2_shuffeh :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_S2_shuffeh">;
+
+def int_hexagon_S2_lsr_i_r_and :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsr_i_r_and">;
+
+def int_hexagon_M2_mpy_sat_rnd_hh_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_sat_rnd_hh_s1">;
+
+def int_hexagon_M2_mpy_sat_rnd_hh_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_sat_rnd_hh_s0">;
+
+def int_hexagon_F2_conv_sf2uw :
+Hexagon_i32_float_Intrinsic<"HEXAGON_F2_conv_sf2uw">;
+
+def int_hexagon_A2_vsubh :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vsubh">;
+
+def int_hexagon_F2_conv_sf2ud :
+Hexagon_i64_float_Intrinsic<"HEXAGON_F2_conv_sf2ud">;
+
+def int_hexagon_A2_vsubw :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vsubw">;
+
+def int_hexagon_A2_vcmpwgt :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A2_vcmpwgt">;
+
+def int_hexagon_M4_xor_or :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_xor_or">;
+
+def int_hexagon_F2_conv_sf2uw_chop :
+Hexagon_i32_float_Intrinsic<"HEXAGON_F2_conv_sf2uw_chop">;
+
+def int_hexagon_S2_asl_r_vw :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asl_r_vw">;
+
+def int_hexagon_S2_vsatwuh_nopack :
+Hexagon_i64_i64_Intrinsic<"HEXAGON_S2_vsatwuh_nopack">;
+
+def int_hexagon_S2_asl_r_vh :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asl_r_vh">;
+
+def int_hexagon_A2_svsubuhs :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_svsubuhs">;
+
+def int_hexagon_M5_vmpybsu :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M5_vmpybsu">;
+
+def int_hexagon_A2_subh_l16_sat_ll :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_subh_l16_sat_ll">;
+
+def int_hexagon_C4_and_and :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_C4_and_and">;
+
+def int_hexagon_M2_mpyu_acc_hl_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpyu_acc_hl_s1">;
+
+def int_hexagon_M2_mpyu_acc_hl_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpyu_acc_hl_s0">;
+
+def int_hexagon_S2_lsr_r_p :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_lsr_r_p">;
+
+def int_hexagon_S2_lsr_r_r :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_lsr_r_r">;
+
+def int_hexagon_A4_subp_c :
+Hexagon_i64i32_i64i64i32_Intrinsic<"HEXAGON_A4_subp_c">;
+
+def int_hexagon_A2_vsubhs :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vsubhs">;
+
+def int_hexagon_C2_vitpack :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_vitpack">;
+
+def int_hexagon_A2_vavguhr :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vavguhr">;
+
+def int_hexagon_S2_vsplicerb :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_vsplicerb">;
+
+def int_hexagon_C4_nbitsclr :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_nbitsclr">;
+
+def int_hexagon_A2_vcmpbgtu :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A2_vcmpbgtu">;
+
+def int_hexagon_M2_cmpys_s1 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_cmpys_s1">;
+
+def int_hexagon_M2_cmpys_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_cmpys_s0">;
+
+def int_hexagon_F2_dfcmpuo :
+Hexagon_i32_doubledouble_Intrinsic<"HEXAGON_F2_dfcmpuo">;
+
+def int_hexagon_S2_shuffob :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_S2_shuffob">;
+
+def int_hexagon_C2_and :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_and">;
+
+def int_hexagon_S5_popcountp :
+Hexagon_i32_i64_Intrinsic<"HEXAGON_S5_popcountp">;
+
+def int_hexagon_S4_extractp :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_S4_extractp">;
+
+def int_hexagon_S2_cl0 :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_S2_cl0">;
+
+def int_hexagon_A4_vcmpbgti :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpbgti">;
+
+def int_hexagon_M2_mmacls_s1 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_mmacls_s1">;
+
+def int_hexagon_M2_mmacls_s0 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_mmacls_s0">;
+
+def int_hexagon_C4_cmpneq :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_cmpneq">;
+
+def int_hexagon_M2_vmac2es :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_vmac2es">;
+
+def int_hexagon_M2_vdmacs_s0 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_vdmacs_s0">;
+
+def int_hexagon_M2_vdmacs_s1 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_vdmacs_s1">;
+
+def int_hexagon_M2_mpyud_ll_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyud_ll_s0">;
+
+def int_hexagon_M2_mpyud_ll_s1 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyud_ll_s1">;
+
+def int_hexagon_S2_clb :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_S2_clb">;
+
+def int_hexagon_M2_mpy_nac_ll_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_nac_ll_s0">;
+
+def int_hexagon_M2_mpy_nac_ll_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_nac_ll_s1">;
+
+def int_hexagon_M2_mpyd_nac_hl_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyd_nac_hl_s1">;
+
+def int_hexagon_M2_mpyd_nac_hl_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyd_nac_hl_s0">;
+
+def int_hexagon_M2_maci :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_maci">;
+
+def int_hexagon_A2_vmaxuh :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vmaxuh">;
+
+def int_hexagon_A4_bitspliti :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_A4_bitspliti">;
+
+def int_hexagon_A2_vmaxub :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vmaxub">;
+
+def int_hexagon_M2_mpyud_hh_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyud_hh_s0">;
+
+def int_hexagon_M2_mpyud_hh_s1 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyud_hh_s1">;
+
+def int_hexagon_M2_vrmac_s0 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_vrmac_s0">;
+
+def int_hexagon_M2_mpy_sat_lh_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_sat_lh_s0">;
+
+def int_hexagon_S2_asl_r_r_sat :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asl_r_r_sat">;
+
+def int_hexagon_F2_conv_sf2d :
+Hexagon_i64_float_Intrinsic<"HEXAGON_F2_conv_sf2d">;
+
+def int_hexagon_S2_asr_r_r_nac :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asr_r_r_nac">;
+
+def int_hexagon_F2_dfimm_n :
+Hexagon_double_i32_Intrinsic<"HEXAGON_F2_dfimm_n">;
+
+def int_hexagon_A4_cmphgt :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmphgt">;
+
+def int_hexagon_F2_dfimm_p :
+Hexagon_double_i32_Intrinsic<"HEXAGON_F2_dfimm_p">;
+
+def int_hexagon_M2_mpyud_acc_lh_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyud_acc_lh_s1">;
+
+def int_hexagon_M2_vcmpy_s1_sat_r :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_vcmpy_s1_sat_r">;
+
+def int_hexagon_M4_mpyri_addr_u2 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_mpyri_addr_u2">;
+
+def int_hexagon_M2_vcmpy_s1_sat_i :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_vcmpy_s1_sat_i">;
+
+def int_hexagon_S2_lsl_r_p_nac :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsl_r_p_nac">;
+
+def int_hexagon_M5_vrmacbuu :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M5_vrmacbuu">;
+
+def int_hexagon_S5_asrhub_rnd_sat_goodsyntax :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_S5_asrhub_rnd_sat_goodsyntax">;
+
+def int_hexagon_S2_vspliceib :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_vspliceib">;
+
+def int_hexagon_M2_dpmpyss_acc_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_dpmpyss_acc_s0">;
+
+def int_hexagon_M2_cnacs_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_cnacs_s1">;
+
+def int_hexagon_M2_cnacs_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_cnacs_s0">;
+
+def int_hexagon_A2_maxu :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_maxu">;
+
+def int_hexagon_A2_maxp :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_maxp">;
+
+def int_hexagon_A2_andir :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_andir">;
+
+def int_hexagon_F2_sfrecipa :
+Hexagon_floati32_floatfloat_Intrinsic<"HEXAGON_F2_sfrecipa">;
+
+def int_hexagon_A2_combineii :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_A2_combineii">;
+
+def int_hexagon_A4_orn :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_orn">;
+
+def int_hexagon_A4_cmpbgtui :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpbgtui">;
+
+def int_hexagon_S2_lsr_r_r_or :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsr_r_r_or">;
+
+def int_hexagon_A4_vcmpbeqi :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpbeqi">;
+
+def int_hexagon_S2_lsl_r_r :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_lsl_r_r">;
+
+def int_hexagon_S2_lsl_r_p :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_lsl_r_p">;
+
+def int_hexagon_A2_or :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_or">;
+
+def int_hexagon_F2_dfcmpeq :
+Hexagon_i32_doubledouble_Intrinsic<"HEXAGON_F2_dfcmpeq">;
+
+def int_hexagon_C2_cmpeq :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpeq">;
+
+def int_hexagon_A2_tfrp :
+Hexagon_i64_i64_Intrinsic<"HEXAGON_A2_tfrp">;
+
+def int_hexagon_C4_and_andn :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_C4_and_andn">;
+
+def int_hexagon_S2_vsathub_nopack :
+Hexagon_i64_i64_Intrinsic<"HEXAGON_S2_vsathub_nopack">;
+
+def int_hexagon_A2_satuh :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_satuh">;
+
+def int_hexagon_A2_satub :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_satub">;
+
+def int_hexagon_M2_vrcmpys_s1 :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_M2_vrcmpys_s1">;
+
+def int_hexagon_S4_or_ori :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_or_ori">;
+
+def int_hexagon_C4_fastcorner9_not :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_fastcorner9_not">;
+
+def int_hexagon_A2_tfrih :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_tfrih">;
+
+def int_hexagon_A2_tfril :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_tfril">;
+
+def int_hexagon_M4_mpyri_addr :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_mpyri_addr">;
+
+def int_hexagon_S2_vtrunehb :
+Hexagon_i32_i64_Intrinsic<"HEXAGON_S2_vtrunehb">;
+
+def int_hexagon_A2_vabsw :
+Hexagon_i64_i64_Intrinsic<"HEXAGON_A2_vabsw">;
+
+def int_hexagon_A2_vabsh :
+Hexagon_i64_i64_Intrinsic<"HEXAGON_A2_vabsh">;
+
+def int_hexagon_F2_sfsub :
+Hexagon_float_floatfloat_Intrinsic<"HEXAGON_F2_sfsub">;
+
+def int_hexagon_C2_muxii :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_C2_muxii">;
+
+def int_hexagon_C2_muxir :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_C2_muxir">;
+
+def int_hexagon_A2_swiz :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_swiz">;
+
+def int_hexagon_S2_asr_i_p_and :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asr_i_p_and">;
+
+def int_hexagon_M2_cmpyrsc_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_cmpyrsc_s0">;
+
+def int_hexagon_M2_cmpyrsc_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_cmpyrsc_s1">;
+
+def int_hexagon_A2_vraddub :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vraddub">;
+
+def int_hexagon_A4_tlbmatch :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_tlbmatch">;
+
+def int_hexagon_F2_conv_df2w_chop :
+Hexagon_i32_double_Intrinsic<"HEXAGON_F2_conv_df2w_chop">;
+
+def int_hexagon_A2_and :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_and">;
+
+def int_hexagon_S2_lsr_r_p_and :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_r_p_and">;
+
+def int_hexagon_M2_mpy_nac_sat_ll_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_nac_sat_ll_s1">;
+
+def int_hexagon_M2_mpy_nac_sat_ll_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_nac_sat_ll_s0">;
+
+def int_hexagon_S4_extract :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_extract">;
+
+def int_hexagon_A2_vcmpweq :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A2_vcmpweq">;
+
+def int_hexagon_M2_acci :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_acci">;
+
+def int_hexagon_S2_lsr_i_p_acc :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_i_p_acc">;
+
+def int_hexagon_S2_lsr_i_p_or :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_i_p_or">;
+
+def int_hexagon_F2_conv_ud2sf :
+Hexagon_float_i64_Intrinsic<"HEXAGON_F2_conv_ud2sf">;
+
+def int_hexagon_A2_tfr :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_tfr">;
+
+def int_hexagon_S2_asr_i_p_or :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asr_i_p_or">;
+
+def int_hexagon_A2_subri :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_subri">;
+
+def int_hexagon_A4_vrmaxuw :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_A4_vrmaxuw">;
+
+def int_hexagon_M5_vmpybuu :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M5_vmpybuu">;
+
+def int_hexagon_A4_vrmaxuh :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_A4_vrmaxuh">;
+
+def int_hexagon_S2_asl_i_vw :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asl_i_vw">;
+
+def int_hexagon_A2_vavgw :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vavgw">;
+
+def int_hexagon_S2_brev :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_S2_brev">;
+
+def int_hexagon_A2_vavgh :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vavgh">;
+
+def int_hexagon_S2_clrbit_i :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_clrbit_i">;
+
+def int_hexagon_S2_asl_i_vh :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asl_i_vh">;
+
+def int_hexagon_S2_lsr_i_r_or :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsr_i_r_or">;
+
+def int_hexagon_S2_lsl_r_r_nac :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsl_r_r_nac">;
+
+def int_hexagon_M2_mmpyl_rs1 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_mmpyl_rs1">;
+
+def int_hexagon_M2_mpyud_hl_s1 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyud_hl_s1">;
+
+def int_hexagon_M2_mmpyl_s0 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_mmpyl_s0">;
+
+def int_hexagon_M2_mmpyl_s1 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_mmpyl_s1">;
+
+def int_hexagon_M2_naccii :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_naccii">;
+
+def int_hexagon_S2_vrndpackwhs :
+Hexagon_i32_i64_Intrinsic<"HEXAGON_S2_vrndpackwhs">;
+
+def int_hexagon_S2_vtrunewh :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_S2_vtrunewh">;
+
+def int_hexagon_M2_dpmpyss_nac_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_dpmpyss_nac_s0">;
+
+def int_hexagon_M2_mpyd_ll_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyd_ll_s0">;
+
+def int_hexagon_M2_mpyd_ll_s1 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyd_ll_s1">;
+
+def int_hexagon_M4_mac_up_s1_sat :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_mac_up_s1_sat">;
+
+def int_hexagon_S4_vrcrotate_acc :
+Hexagon_i64_i64i64i32i32_Intrinsic<"HEXAGON_S4_vrcrotate_acc">;
+
+def int_hexagon_F2_conv_uw2df :
+Hexagon_double_i32_Intrinsic<"HEXAGON_F2_conv_uw2df">;
+
+def int_hexagon_A2_vaddubs :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vaddubs">;
+
+def int_hexagon_S2_asr_r_r_acc :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asr_r_r_acc">;
+
+def int_hexagon_A2_orir :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_orir">;
+
+def int_hexagon_A2_andp :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_andp">;
+
+def int_hexagon_S2_lfsp :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_S2_lfsp">;
+
+def int_hexagon_A2_min :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_min">;
+
+def int_hexagon_M2_mpysmi :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpysmi">;
+
+def int_hexagon_M2_vcmpy_s0_sat_r :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_vcmpy_s0_sat_r">;
+
+def int_hexagon_M2_mpyu_acc_ll_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpyu_acc_ll_s1">;
+
+def int_hexagon_M2_mpyu_acc_ll_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpyu_acc_ll_s0">;
+
+def int_hexagon_S2_asr_r_svw_trun :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_S2_asr_r_svw_trun">;
+
+def int_hexagon_M2_mmpyh_s0 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_mmpyh_s0">;
+
+def int_hexagon_M2_mmpyh_s1 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_mmpyh_s1">;
+
+def int_hexagon_F2_conv_sf2df :
+Hexagon_double_float_Intrinsic<"HEXAGON_F2_conv_sf2df">;
+
+def int_hexagon_S2_vtrunohb :
+Hexagon_i32_i64_Intrinsic<"HEXAGON_S2_vtrunohb">;
+
+def int_hexagon_F2_conv_sf2d_chop :
+Hexagon_i64_float_Intrinsic<"HEXAGON_F2_conv_sf2d_chop">;
+
+def int_hexagon_M2_mpyd_lh_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyd_lh_s0">;
+
+def int_hexagon_F2_conv_df2w :
+Hexagon_i32_double_Intrinsic<"HEXAGON_F2_conv_df2w">;
+
+def int_hexagon_S5_asrhub_sat :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_S5_asrhub_sat">;
+
+def int_hexagon_S2_asl_i_r_xacc :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asl_i_r_xacc">;
+
+def int_hexagon_F2_conv_df2d :
+Hexagon_i64_double_Intrinsic<"HEXAGON_F2_conv_df2d">;
+
+def int_hexagon_M2_mmaculs_s1 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_mmaculs_s1">;
+
+def int_hexagon_M2_mmaculs_s0 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_mmaculs_s0">;
+
+def int_hexagon_A2_svadduhs :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_svadduhs">;
+
+def int_hexagon_F2_conv_sf2w_chop :
+Hexagon_i32_float_Intrinsic<"HEXAGON_F2_conv_sf2w_chop">;
+
+def int_hexagon_S2_svsathub :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_S2_svsathub">;
+
+def int_hexagon_M2_mpyd_rnd_hl_s1 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyd_rnd_hl_s1">;
+
+def int_hexagon_M2_mpyd_rnd_hl_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyd_rnd_hl_s0">;
+
+def int_hexagon_S2_setbit_r :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_setbit_r">;
+
+def int_hexagon_A2_vavghr :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vavghr">;
+
+def int_hexagon_F2_sffma_sc :
+Hexagon_float_floatfloatfloati32_Intrinsic<"HEXAGON_F2_sffma_sc">;
+
+def int_hexagon_F2_dfclass :
+Hexagon_i32_doublei32_Intrinsic<"HEXAGON_F2_dfclass">;
+
+def int_hexagon_F2_conv_df2ud :
+Hexagon_i64_double_Intrinsic<"HEXAGON_F2_conv_df2ud">;
+
+def int_hexagon_F2_conv_df2uw :
+Hexagon_i32_double_Intrinsic<"HEXAGON_F2_conv_df2uw">;
+
+def int_hexagon_M2_cmpyrs_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_cmpyrs_s0">;
+
+def int_hexagon_M2_cmpyrs_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_cmpyrs_s1">;
+
+def int_hexagon_C4_cmpltei :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_cmpltei">;
+
+def int_hexagon_C4_cmplteu :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_cmplteu">;
+
+def int_hexagon_A2_vsubb_map :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vsubb_map">;
+
+def int_hexagon_A2_subh_l16_ll :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_subh_l16_ll">;
+
+def int_hexagon_S2_asr_i_r_rnd :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asr_i_r_rnd">;
+
+def int_hexagon_M2_vrmpy_s0 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_vrmpy_s0">;
+
+def int_hexagon_M2_mpyd_rnd_hh_s1 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyd_rnd_hh_s1">;
+
+def int_hexagon_M2_mpyd_rnd_hh_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyd_rnd_hh_s0">;
+
+def int_hexagon_A2_minup :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_minup">;
+
+def int_hexagon_S2_valignrb :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_valignrb">;
+
+def int_hexagon_S2_asr_r_p_acc :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asr_r_p_acc">;
+
+def int_hexagon_M2_mmpyl_rs0 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_mmpyl_rs0">;
+
+def int_hexagon_M2_vrcmaci_s0 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_vrcmaci_s0">;
+
+def int_hexagon_A2_vaddub :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vaddub">;
+
+def int_hexagon_A2_combine_lh :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_combine_lh">;
+
+def int_hexagon_M5_vdmacbsu :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M5_vdmacbsu">;
+
+def int_hexagon_A2_combine_ll :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_combine_ll">;
+
+def int_hexagon_M2_mpyud_hl_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyud_hl_s0">;
+
+def int_hexagon_M2_vrcmpyi_s0c :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_vrcmpyi_s0c">;
+
+def int_hexagon_S2_asr_i_p_rnd :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_i_p_rnd">;
+
+def int_hexagon_A2_addpsat :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_addpsat">;
+
+def int_hexagon_A2_svaddhs :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_svaddhs">;
+
+def int_hexagon_S4_ori_lsr_ri :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_ori_lsr_ri">;
+
+def int_hexagon_M2_mpy_sat_rnd_ll_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_sat_rnd_ll_s1">;
+
+def int_hexagon_M2_mpy_sat_rnd_ll_s0 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_sat_rnd_ll_s0">;
+
+def int_hexagon_A2_vminw :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vminw">;
+
+def int_hexagon_A2_vminh :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vminh">;
+
+def int_hexagon_M2_vrcmpyr_s0 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_vrcmpyr_s0">;
+
+def int_hexagon_A2_vminb :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vminb">;
+
+def int_hexagon_M2_vcmac_s0_sat_i :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_vcmac_s0_sat_i">;
+
+def int_hexagon_M2_mpyud_lh_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyud_lh_s0">;
+
+def int_hexagon_M2_mpyud_lh_s1 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyud_lh_s1">;
+
+def int_hexagon_S2_asl_r_r_or :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asl_r_r_or">;
+
+def int_hexagon_S4_lsli :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S4_lsli">;
+
+def int_hexagon_S2_lsl_r_vw :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_lsl_r_vw">;
+
+def int_hexagon_M2_mpy_hh_s1 :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpy_hh_s1">;
+
+def int_hexagon_M4_vrmpyeh_s0 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M4_vrmpyeh_s0">;
+
+def int_hexagon_M4_vrmpyeh_s1 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M4_vrmpyeh_s1">;
+
+def int_hexagon_M2_mpy_nac_lh_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_nac_lh_s0">;
+
+def int_hexagon_M2_mpy_nac_lh_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_nac_lh_s1">;
+
+def int_hexagon_M2_vraddh :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_M2_vraddh">;
+
+def int_hexagon_C2_tfrrp :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_C2_tfrrp">;
+
+def int_hexagon_M2_mpy_acc_sat_ll_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_acc_sat_ll_s0">;
+
+def int_hexagon_M2_mpy_acc_sat_ll_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_acc_sat_ll_s1">;
+
+def int_hexagon_S2_vtrunowh :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_S2_vtrunowh">;
+
+def int_hexagon_A2_abs :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_abs">;
+
+def int_hexagon_A4_cmpbeq :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpbeq">;
+
+def int_hexagon_A2_negp :
+Hexagon_i64_i64_Intrinsic<"HEXAGON_A2_negp">;
+
+def int_hexagon_S2_asl_i_r_sat :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asl_i_r_sat">;
+
+def int_hexagon_A2_addh_l16_sat_hl :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_addh_l16_sat_hl">;
+
+def int_hexagon_S2_vsatwuh :
+Hexagon_i32_i64_Intrinsic<"HEXAGON_S2_vsatwuh">;
+
+def int_hexagon_F2_dfcmpgt :
+Hexagon_i32_doubledouble_Intrinsic<"HEXAGON_F2_dfcmpgt">;
+
+def int_hexagon_S2_svsathb :
+Hexagon_i32_i32_Intrinsic<"HEXAGON_S2_svsathb">;
+
+def int_hexagon_C2_cmpgtup :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_C2_cmpgtup">;
+
+def int_hexagon_A4_cround_ri :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cround_ri">;
+
+def int_hexagon_S4_clbpaddi :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_S4_clbpaddi">;
+
+def int_hexagon_A4_cround_rr :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cround_rr">;
+
+def int_hexagon_C2_mux :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_C2_mux">;
+
+def int_hexagon_M2_dpmpyuu_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_dpmpyuu_s0">;
+
+def int_hexagon_S2_shuffeb :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_S2_shuffeb">;
+
+def int_hexagon_A2_vminuw :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vminuw">;
+
+def int_hexagon_A2_vaddhs :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vaddhs">;
+
+def int_hexagon_S2_insert_rp :
+Hexagon_i32_i32i32i64_Intrinsic<"HEXAGON_S2_insert_rp">;
+
+def int_hexagon_A2_vminuh :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vminuh">;
+
+def int_hexagon_A2_vminub :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vminub">;
+
+def int_hexagon_S2_extractu :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_extractu">;
+
+def int_hexagon_A2_svsubh :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_svsubh">;
+
+def int_hexagon_S4_clbaddi :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S4_clbaddi">;
+
+def int_hexagon_F2_sffms :
+Hexagon_float_floatfloatfloat_Intrinsic<"HEXAGON_F2_sffms">;
+
+def int_hexagon_S2_vsxtbh :
+Hexagon_i64_i32_Intrinsic<"HEXAGON_S2_vsxtbh">;
+
+def int_hexagon_M2_mpyud_nac_ll_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyud_nac_ll_s1">;
+
+def int_hexagon_M2_mpyud_nac_ll_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyud_nac_ll_s0">;
+
+def int_hexagon_A2_subp :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_subp">;
+
+def int_hexagon_M2_vmpy2es_s1 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_vmpy2es_s1">;
+
+def int_hexagon_M2_vmpy2es_s0 :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M2_vmpy2es_s0">;
+
+def int_hexagon_S4_parity :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S4_parity">;
+
+def int_hexagon_M2_mpy_acc_hh_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_acc_hh_s1">;
+
+def int_hexagon_M2_mpy_acc_hh_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_acc_hh_s0">;
+
+def int_hexagon_S4_addi_asl_ri :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_addi_asl_ri">;
+
+def int_hexagon_M2_mpyd_nac_hh_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyd_nac_hh_s1">;
+
+def int_hexagon_M2_mpyd_nac_hh_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyd_nac_hh_s0">;
+
+def int_hexagon_S2_asr_i_r_nac :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asr_i_r_nac">;
+
+def int_hexagon_A4_cmpheqi :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpheqi">;
+
+def int_hexagon_S2_lsr_r_p_xor :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_r_p_xor">;
+
+def int_hexagon_M2_mpy_acc_hl_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_acc_hl_s1">;
+
+def int_hexagon_M2_mpy_acc_hl_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_acc_hl_s0">;
+
+def int_hexagon_F2_conv_sf2ud_chop :
+Hexagon_i64_float_Intrinsic<"HEXAGON_F2_conv_sf2ud_chop">;
+
+def int_hexagon_C2_cmpgeui :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpgeui">;
+
+def int_hexagon_M2_mpy_acc_sat_hh_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_acc_sat_hh_s0">;
+
+def int_hexagon_M2_mpy_acc_sat_hh_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_acc_sat_hh_s1">;
+
+def int_hexagon_S2_asl_r_p_and :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_r_p_and">;
+
+def int_hexagon_A2_addh_h16_sat_lh :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_addh_h16_sat_lh">;
+
+def int_hexagon_A2_addh_h16_sat_ll :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_addh_h16_sat_ll">;
+
+def int_hexagon_M4_nac_up_s1_sat :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_nac_up_s1_sat">;
+
+def int_hexagon_M2_mpyud_nac_lh_s1 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyud_nac_lh_s1">;
+
+def int_hexagon_M2_mpyud_nac_lh_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_mpyud_nac_lh_s0">;
+
+def int_hexagon_A4_round_ri_sat :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_round_ri_sat">;
+
+def int_hexagon_M2_mpy_nac_hl_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_nac_hl_s0">;
+
+def int_hexagon_M2_mpy_nac_hl_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_nac_hl_s1">;
+
+def int_hexagon_A2_vavghcr :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vavghcr">;
+
+def int_hexagon_M2_mmacls_rs0 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_mmacls_rs0">;
+
+def int_hexagon_M2_mmacls_rs1 :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_mmacls_rs1">;
+
+def int_hexagon_M2_cmaci_s0 :
+Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_M2_cmaci_s0">;
+
+def int_hexagon_S2_setbit_i :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_setbit_i">;
+
+def int_hexagon_S2_asl_i_p_or :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_i_p_or">;
+
+def int_hexagon_A4_andn :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_andn">;
+
+def int_hexagon_M5_vrmpybsu :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M5_vrmpybsu">;
+
+def int_hexagon_S2_vrndpackwh :
+Hexagon_i32_i64_Intrinsic<"HEXAGON_S2_vrndpackwh">;
+
+def int_hexagon_M2_vcmac_s0_sat_r :
+Hexagon_i64_i64i64i64_Intrinsic<"HEXAGON_M2_vcmac_s0_sat_r">;
+
+def int_hexagon_A2_vmaxuw :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vmaxuw">;
+
+def int_hexagon_C2_bitsclr :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_bitsclr">;
+
+def int_hexagon_M2_xor_xacc :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_xor_xacc">;
+
+def int_hexagon_A4_vcmpbgtui :
+Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpbgtui">;
+
+def int_hexagon_A4_ornp :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A4_ornp">;
+
+def int_hexagon_A2_tfrpi :
+Hexagon_i64_i32_Intrinsic<"HEXAGON_A2_tfrpi">;
+
+def int_hexagon_C4_and_or :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_C4_and_or">;
+
+def int_hexagon_M2_mpy_nac_sat_hh_s1 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_nac_sat_hh_s1">;
+
+def int_hexagon_M2_mpy_nac_sat_hh_s0 :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mpy_nac_sat_hh_s0">;
+
+def int_hexagon_A2_subh_h16_sat_ll :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_subh_h16_sat_ll">;
+
+def int_hexagon_A2_subh_h16_sat_lh :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_subh_h16_sat_lh">;
+
+def int_hexagon_M2_vmpy2su_s1 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_vmpy2su_s1">;
+
+def int_hexagon_M2_vmpy2su_s0 :
+Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_vmpy2su_s0">;
+
+def int_hexagon_S2_asr_i_p_acc :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asr_i_p_acc">;
+
+def int_hexagon_C4_nbitsclri :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_nbitsclri">;
+
+def int_hexagon_S2_lsr_i_vh :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_lsr_i_vh">;
+
+def int_hexagon_S2_lsr_i_p_xacc :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_i_p_xacc">;
+
+// V55 Scalar Instructions.
+
+def int_hexagon_A5_ACS :
+Hexagon_i64i32_i64i64i64_Intrinsic<"HEXAGON_A5_ACS">;
+
+// V60 Scalar Instructions.
+
+def int_hexagon_S6_rol_i_p_and :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S6_rol_i_p_and">;
+
+def int_hexagon_S6_rol_i_r_xacc :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S6_rol_i_r_xacc">;
+
+def int_hexagon_S6_rol_i_r_and :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S6_rol_i_r_and">;
+
+def int_hexagon_S6_rol_i_r_acc :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S6_rol_i_r_acc">;
+
+def int_hexagon_S6_rol_i_p_xacc :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S6_rol_i_p_xacc">;
+
+def int_hexagon_S6_rol_i_p :
+Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S6_rol_i_p">;
+
+def int_hexagon_S6_rol_i_p_nac :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S6_rol_i_p_nac">;
+
+def int_hexagon_S6_rol_i_p_acc :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S6_rol_i_p_acc">;
+
+def int_hexagon_S6_rol_i_r_or :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S6_rol_i_r_or">;
+
+def int_hexagon_S6_rol_i_r :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S6_rol_i_r">;
+
+def int_hexagon_S6_rol_i_r_nac :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S6_rol_i_r_nac">;
+
+def int_hexagon_S6_rol_i_p_or :
+Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S6_rol_i_p_or">;
+
+// V62 Scalar Instructions.
+
+def int_hexagon_S6_vtrunehb_ppp :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_S6_vtrunehb_ppp">;
+
+def int_hexagon_V6_ldntnt0 :
+Hexagon_v16i32_i32_Intrinsic<"HEXAGON_V6_ldntnt0">;
+
+def int_hexagon_M6_vabsdiffub :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M6_vabsdiffub">;
+
+def int_hexagon_S6_vtrunohb_ppp :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_S6_vtrunohb_ppp">;
+
+def int_hexagon_M6_vabsdiffb :
+Hexagon_i64_i64i64_Intrinsic<"HEXAGON_M6_vabsdiffb">;
+
+def int_hexagon_A6_vminub_RdP :
+Hexagon_i64i32_i64i64_Intrinsic<"HEXAGON_A6_vminub_RdP">;
+
+def int_hexagon_S6_vsplatrbp :
+Hexagon_i64_i32_Intrinsic<"HEXAGON_S6_vsplatrbp">;
+
+// V65 Scalar Instructions.
+
+def int_hexagon_A6_vcmpbeq_notany :
+Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A6_vcmpbeq_notany">;
+
+// V66 Scalar Instructions.
+
+def int_hexagon_F2_dfsub :
+Hexagon_double_doubledouble_Intrinsic<"HEXAGON_F2_dfsub">;
+
+def int_hexagon_F2_dfadd :
+Hexagon_double_doubledouble_Intrinsic<"HEXAGON_F2_dfadd">;
+
+def int_hexagon_M2_mnaci :
+Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_mnaci">;
+
+def int_hexagon_S2_mask :
+Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_mask">;
+
+// V60 HVX Instructions.
+
+def int_hexagon_V6_veqb_or :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_veqb_or">;
+
+def int_hexagon_V6_veqb_or_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_veqb_or_128B">;
+
+def int_hexagon_V6_vminub :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vminub">;
+
+def int_hexagon_V6_vminub_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vminub_128B">;
+
+def int_hexagon_V6_vaslw_acc :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vaslw_acc">;
+
+def int_hexagon_V6_vaslw_acc_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vaslw_acc_128B">;
+
+def int_hexagon_V6_vmpyhvsrs :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyhvsrs">;
+
+def int_hexagon_V6_vmpyhvsrs_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyhvsrs_128B">;
+
+def int_hexagon_V6_vsathub :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vsathub">;
+
+def int_hexagon_V6_vsathub_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsathub_128B">;
+
+def int_hexagon_V6_vaddh_dv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddh_dv">;
+
+def int_hexagon_V6_vaddh_dv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vaddh_dv_128B">;
+
+def int_hexagon_V6_vrmpybusi :
+Hexagon_v32i32_v32i32i32i32_Intrinsic<"HEXAGON_V6_vrmpybusi">;
+
+def int_hexagon_V6_vrmpybusi_128B :
+Hexagon_v64i32_v64i32i32i32_Intrinsic<"HEXAGON_V6_vrmpybusi_128B">;
+
+def int_hexagon_V6_vshufoh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vshufoh">;
+
+def int_hexagon_V6_vshufoh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vshufoh_128B">;
+
+def int_hexagon_V6_vasrwv :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vasrwv">;
+
+def int_hexagon_V6_vasrwv_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vasrwv_128B">;
+
+def int_hexagon_V6_vdmpyhsuisat :
+Hexagon_v16i32_v32i32i32_Intrinsic<"HEXAGON_V6_vdmpyhsuisat">;
+
+def int_hexagon_V6_vdmpyhsuisat_128B :
+Hexagon_v32i32_v64i32i32_Intrinsic<"HEXAGON_V6_vdmpyhsuisat_128B">;
+
+def int_hexagon_V6_vrsadubi_acc :
+Hexagon_v32i32_v32i32v32i32i32i32_Intrinsic<"HEXAGON_V6_vrsadubi_acc">;
+
+def int_hexagon_V6_vrsadubi_acc_128B :
+Hexagon_v64i32_v64i32v64i32i32i32_Intrinsic<"HEXAGON_V6_vrsadubi_acc_128B">;
+
+def int_hexagon_V6_vnavgw :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vnavgw">;
+
+def int_hexagon_V6_vnavgw_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vnavgw_128B">;
+
+def int_hexagon_V6_vnavgh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vnavgh">;
+
+def int_hexagon_V6_vnavgh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vnavgh_128B">;
+
+def int_hexagon_V6_vavgub :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vavgub">;
+
+def int_hexagon_V6_vavgub_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vavgub_128B">;
+
+def int_hexagon_V6_vsubb :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vsubb">;
+
+def int_hexagon_V6_vsubb_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubb_128B">;
+
+def int_hexagon_V6_vgtw_and :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtw_and">;
+
+def int_hexagon_V6_vgtw_and_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtw_and_128B">;
+
+def int_hexagon_V6_vavgubrnd :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vavgubrnd">;
+
+def int_hexagon_V6_vavgubrnd_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vavgubrnd_128B">;
+
+def int_hexagon_V6_vrmpybusv :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vrmpybusv">;
+
+def int_hexagon_V6_vrmpybusv_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vrmpybusv_128B">;
+
+def int_hexagon_V6_vsubbnq :
+Hexagon_v16i32_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vsubbnq">;
+
+def int_hexagon_V6_vsubbnq_128B :
+Hexagon_v32i32_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubbnq_128B">;
+
+def int_hexagon_V6_vroundhb :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vroundhb">;
+
+def int_hexagon_V6_vroundhb_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vroundhb_128B">;
+
+def int_hexagon_V6_vadduhsat_dv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vadduhsat_dv">;
+
+def int_hexagon_V6_vadduhsat_dv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vadduhsat_dv_128B">;
+
+def int_hexagon_V6_vsububsat :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vsububsat">;
+
+def int_hexagon_V6_vsububsat_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsububsat_128B">;
+
+def int_hexagon_V6_vmpabus_acc :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vmpabus_acc">;
+
+def int_hexagon_V6_vmpabus_acc_128B :
+Hexagon_v64i32_v64i32v64i32i32_Intrinsic<"HEXAGON_V6_vmpabus_acc_128B">;
+
+def int_hexagon_V6_vmux :
+Hexagon_v16i32_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vmux">;
+
+def int_hexagon_V6_vmux_128B :
+Hexagon_v32i32_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vmux_128B">;
+
+def int_hexagon_V6_vmpyhus :
+Hexagon_v32i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyhus">;
+
+def int_hexagon_V6_vmpyhus_128B :
+Hexagon_v64i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyhus_128B">;
+
+def int_hexagon_V6_vpackeb :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vpackeb">;
+
+def int_hexagon_V6_vpackeb_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vpackeb_128B">;
+
+def int_hexagon_V6_vsubhnq :
+Hexagon_v16i32_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vsubhnq">;
+
+def int_hexagon_V6_vsubhnq_128B :
+Hexagon_v32i32_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubhnq_128B">;
+
+def int_hexagon_V6_vavghrnd :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vavghrnd">;
+
+def int_hexagon_V6_vavghrnd_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vavghrnd_128B">;
+
+def int_hexagon_V6_vtran2x2_map :
+Hexagon_v16i32v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vtran2x2_map">;
+
+def int_hexagon_V6_vtran2x2_map_128B :
+Hexagon_v32i32v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vtran2x2_map_128B">;
+
+def int_hexagon_V6_vdelta :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vdelta">;
+
+def int_hexagon_V6_vdelta_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vdelta_128B">;
+
+def int_hexagon_V6_vgtuh_and :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtuh_and">;
+
+def int_hexagon_V6_vgtuh_and_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtuh_and_128B">;
+
+def int_hexagon_V6_vtmpyhb :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vtmpyhb">;
+
+def int_hexagon_V6_vtmpyhb_128B :
+Hexagon_v64i32_v64i32i32_Intrinsic<"HEXAGON_V6_vtmpyhb_128B">;
+
+def int_hexagon_V6_vpackob :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vpackob">;
+
+def int_hexagon_V6_vpackob_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vpackob_128B">;
+
+def int_hexagon_V6_vmaxh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmaxh">;
+
+def int_hexagon_V6_vmaxh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmaxh_128B">;
+
+def int_hexagon_V6_vtmpybus_acc :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vtmpybus_acc">;
+
+def int_hexagon_V6_vtmpybus_acc_128B :
+Hexagon_v64i32_v64i32v64i32i32_Intrinsic<"HEXAGON_V6_vtmpybus_acc_128B">;
+
+def int_hexagon_V6_vsubuhsat :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vsubuhsat">;
+
+def int_hexagon_V6_vsubuhsat_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubuhsat_128B">;
+
+def int_hexagon_V6_vasrw_acc :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vasrw_acc">;
+
+def int_hexagon_V6_vasrw_acc_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vasrw_acc_128B">;
+
+def int_hexagon_V6_pred_or :
+Hexagon_v512i1_v512i1v512i1_Intrinsic<"HEXAGON_V6_pred_or">;
+
+def int_hexagon_V6_pred_or_128B :
+Hexagon_v1024i1_v1024i1v1024i1_Intrinsic<"HEXAGON_V6_pred_or_128B">;
+
+def int_hexagon_V6_vrmpyub_acc :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vrmpyub_acc">;
+
+def int_hexagon_V6_vrmpyub_acc_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vrmpyub_acc_128B">;
+
+def int_hexagon_V6_lo :
+Hexagon_v16i32_v32i32_Intrinsic<"HEXAGON_V6_lo">;
+
+def int_hexagon_V6_lo_128B :
+Hexagon_v32i32_v64i32_Intrinsic<"HEXAGON_V6_lo_128B">;
+
+def int_hexagon_V6_vsubb_dv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubb_dv">;
+
+def int_hexagon_V6_vsubb_dv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vsubb_dv_128B">;
+
+def int_hexagon_V6_vsubhsat_dv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubhsat_dv">;
+
+def int_hexagon_V6_vsubhsat_dv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vsubhsat_dv_128B">;
+
+def int_hexagon_V6_vmpyiwh :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vmpyiwh">;
+
+def int_hexagon_V6_vmpyiwh_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vmpyiwh_128B">;
+
+def int_hexagon_V6_vmpyiwb :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vmpyiwb">;
+
+def int_hexagon_V6_vmpyiwb_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vmpyiwb_128B">;
+
+def int_hexagon_V6_ldu0 :
+Hexagon_v16i32_i32_Intrinsic<"HEXAGON_V6_ldu0">;
+
+def int_hexagon_V6_ldu0_128B :
+Hexagon_v32i32_i32_Intrinsic<"HEXAGON_V6_ldu0_128B">;
+
+def int_hexagon_V6_vgtuh_xor :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtuh_xor">;
+
+def int_hexagon_V6_vgtuh_xor_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtuh_xor_128B">;
+
+def int_hexagon_V6_vgth_or :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vgth_or">;
+
+def int_hexagon_V6_vgth_or_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vgth_or_128B">;
+
+def int_hexagon_V6_vavgh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vavgh">;
+
+def int_hexagon_V6_vavgh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vavgh_128B">;
+
+def int_hexagon_V6_vlalignb :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlalignb">;
+
+def int_hexagon_V6_vlalignb_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlalignb_128B">;
+
+def int_hexagon_V6_vsh :
+Hexagon_v32i32_v16i32_Intrinsic<"HEXAGON_V6_vsh">;
+
+def int_hexagon_V6_vsh_128B :
+Hexagon_v64i32_v32i32_Intrinsic<"HEXAGON_V6_vsh_128B">;
+
+def int_hexagon_V6_pred_and_n :
+Hexagon_v512i1_v512i1v512i1_Intrinsic<"HEXAGON_V6_pred_and_n">;
+
+def int_hexagon_V6_pred_and_n_128B :
+Hexagon_v1024i1_v1024i1v1024i1_Intrinsic<"HEXAGON_V6_pred_and_n_128B">;
+
+def int_hexagon_V6_vsb :
+Hexagon_v32i32_v16i32_Intrinsic<"HEXAGON_V6_vsb">;
+
+def int_hexagon_V6_vsb_128B :
+Hexagon_v64i32_v32i32_Intrinsic<"HEXAGON_V6_vsb_128B">;
+
+def int_hexagon_V6_vroundwuh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vroundwuh">;
+
+def int_hexagon_V6_vroundwuh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vroundwuh_128B">;
+
+def int_hexagon_V6_vasrhv :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vasrhv">;
+
+def int_hexagon_V6_vasrhv_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vasrhv_128B">;
+
+def int_hexagon_V6_vshuffh :
+Hexagon_v16i32_v16i32_Intrinsic<"HEXAGON_V6_vshuffh">;
+
+def int_hexagon_V6_vshuffh_128B :
+Hexagon_v32i32_v32i32_Intrinsic<"HEXAGON_V6_vshuffh_128B">;
+
+def int_hexagon_V6_vaddhsat_dv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddhsat_dv">;
+
+def int_hexagon_V6_vaddhsat_dv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vaddhsat_dv_128B">;
+
+def int_hexagon_V6_vnavgub :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vnavgub">;
+
+def int_hexagon_V6_vnavgub_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vnavgub_128B">;
+
+def int_hexagon_V6_vrmpybv :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vrmpybv">;
+
+def int_hexagon_V6_vrmpybv_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vrmpybv_128B">;
+
+def int_hexagon_V6_vnormamth :
+Hexagon_v16i32_v16i32_Intrinsic<"HEXAGON_V6_vnormamth">;
+
+def int_hexagon_V6_vnormamth_128B :
+Hexagon_v32i32_v32i32_Intrinsic<"HEXAGON_V6_vnormamth_128B">;
+
+def int_hexagon_V6_vdmpyhb :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vdmpyhb">;
+
+def int_hexagon_V6_vdmpyhb_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vdmpyhb_128B">;
+
+def int_hexagon_V6_vavguh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vavguh">;
+
+def int_hexagon_V6_vavguh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vavguh_128B">;
+
+def int_hexagon_V6_vlsrwv :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vlsrwv">;
+
+def int_hexagon_V6_vlsrwv_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vlsrwv_128B">;
+
+def int_hexagon_V6_vlsrhv :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vlsrhv">;
+
+def int_hexagon_V6_vlsrhv_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vlsrhv_128B">;
+
+def int_hexagon_V6_vdmpyhisat :
+Hexagon_v16i32_v32i32i32_Intrinsic<"HEXAGON_V6_vdmpyhisat">;
+
+def int_hexagon_V6_vdmpyhisat_128B :
+Hexagon_v32i32_v64i32i32_Intrinsic<"HEXAGON_V6_vdmpyhisat_128B">;
+
+def int_hexagon_V6_vdmpyhvsat :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vdmpyhvsat">;
+
+def int_hexagon_V6_vdmpyhvsat_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vdmpyhvsat_128B">;
+
+def int_hexagon_V6_vaddw :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddw">;
+
+def int_hexagon_V6_vaddw_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddw_128B">;
+
+def int_hexagon_V6_vzh :
+Hexagon_v32i32_v16i32_Intrinsic<"HEXAGON_V6_vzh">;
+
+def int_hexagon_V6_vzh_128B :
+Hexagon_v64i32_v32i32_Intrinsic<"HEXAGON_V6_vzh_128B">;
+
+def int_hexagon_V6_vaddh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddh">;
+
+def int_hexagon_V6_vaddh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddh_128B">;
+
+def int_hexagon_V6_vmaxub :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmaxub">;
+
+def int_hexagon_V6_vmaxub_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmaxub_128B">;
+
+def int_hexagon_V6_vmpyhv_acc :
+Hexagon_v32i32_v32i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyhv_acc">;
+
+def int_hexagon_V6_vmpyhv_acc_128B :
+Hexagon_v64i32_v64i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyhv_acc_128B">;
+
+def int_hexagon_V6_vadduhsat :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vadduhsat">;
+
+def int_hexagon_V6_vadduhsat_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vadduhsat_128B">;
+
+def int_hexagon_V6_vshufoeh :
+Hexagon_v32i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vshufoeh">;
+
+def int_hexagon_V6_vshufoeh_128B :
+Hexagon_v64i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vshufoeh_128B">;
+
+def int_hexagon_V6_vmpyuhv_acc :
+Hexagon_v32i32_v32i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyuhv_acc">;
+
+def int_hexagon_V6_vmpyuhv_acc_128B :
+Hexagon_v64i32_v64i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyuhv_acc_128B">;
+
+def int_hexagon_V6_veqh :
+Hexagon_v512i1_v16i32v16i32_Intrinsic<"HEXAGON_V6_veqh">;
+
+def int_hexagon_V6_veqh_128B :
+Hexagon_v1024i1_v32i32v32i32_Intrinsic<"HEXAGON_V6_veqh_128B">;
+
+def int_hexagon_V6_vmpabuuv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpabuuv">;
+
+def int_hexagon_V6_vmpabuuv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vmpabuuv_128B">;
+
+def int_hexagon_V6_vasrwhsat :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vasrwhsat">;
+
+def int_hexagon_V6_vasrwhsat_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vasrwhsat_128B">;
+
+def int_hexagon_V6_vminuh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vminuh">;
+
+def int_hexagon_V6_vminuh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vminuh_128B">;
+
+def int_hexagon_V6_vror :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vror">;
+
+def int_hexagon_V6_vror_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vror_128B">;
+
+def int_hexagon_V6_vmpyowh_rnd_sacc :
+Hexagon_v16i32_v16i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyowh_rnd_sacc">;
+
+def int_hexagon_V6_vmpyowh_rnd_sacc_128B :
+Hexagon_v32i32_v32i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyowh_rnd_sacc_128B">;
+
+def int_hexagon_V6_vmaxuh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmaxuh">;
+
+def int_hexagon_V6_vmaxuh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmaxuh_128B">;
+
+def int_hexagon_V6_vabsh_sat :
+Hexagon_v16i32_v16i32_Intrinsic<"HEXAGON_V6_vabsh_sat">;
+
+def int_hexagon_V6_vabsh_sat_128B :
+Hexagon_v32i32_v32i32_Intrinsic<"HEXAGON_V6_vabsh_sat_128B">;
+
+def int_hexagon_V6_pred_or_n :
+Hexagon_v512i1_v512i1v512i1_Intrinsic<"HEXAGON_V6_pred_or_n">;
+
+def int_hexagon_V6_pred_or_n_128B :
+Hexagon_v1024i1_v1024i1v1024i1_Intrinsic<"HEXAGON_V6_pred_or_n_128B">;
+
+def int_hexagon_V6_vdealb :
+Hexagon_v16i32_v16i32_Intrinsic<"HEXAGON_V6_vdealb">;
+
+def int_hexagon_V6_vdealb_128B :
+Hexagon_v32i32_v32i32_Intrinsic<"HEXAGON_V6_vdealb_128B">;
+
+def int_hexagon_V6_vmpybusv :
+Hexagon_v32i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpybusv">;
+
+def int_hexagon_V6_vmpybusv_128B :
+Hexagon_v64i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpybusv_128B">;
+
+def int_hexagon_V6_vzb :
+Hexagon_v32i32_v16i32_Intrinsic<"HEXAGON_V6_vzb">;
+
+def int_hexagon_V6_vzb_128B :
+Hexagon_v64i32_v32i32_Intrinsic<"HEXAGON_V6_vzb_128B">;
+
+def int_hexagon_V6_vdmpybus_dv :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vdmpybus_dv">;
+
+def int_hexagon_V6_vdmpybus_dv_128B :
+Hexagon_v64i32_v64i32i32_Intrinsic<"HEXAGON_V6_vdmpybus_dv_128B">;
+
+def int_hexagon_V6_vaddbq :
+Hexagon_v16i32_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddbq">;
+
+def int_hexagon_V6_vaddbq_128B :
+Hexagon_v32i32_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddbq_128B">;
+
+def int_hexagon_V6_vaddb :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddb">;
+
+def int_hexagon_V6_vaddb_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddb_128B">;
+
+def int_hexagon_V6_vaddwq :
+Hexagon_v16i32_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddwq">;
+
+def int_hexagon_V6_vaddwq_128B :
+Hexagon_v32i32_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddwq_128B">;
+
+def int_hexagon_V6_vasrhubrndsat :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vasrhubrndsat">;
+
+def int_hexagon_V6_vasrhubrndsat_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vasrhubrndsat_128B">;
+
+def int_hexagon_V6_vasrhubsat :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vasrhubsat">;
+
+def int_hexagon_V6_vasrhubsat_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vasrhubsat_128B">;
+
+def int_hexagon_V6_vshufoeb :
+Hexagon_v32i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vshufoeb">;
+
+def int_hexagon_V6_vshufoeb_128B :
+Hexagon_v64i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vshufoeb_128B">;
+
+def int_hexagon_V6_vpackhub_sat :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vpackhub_sat">;
+
+def int_hexagon_V6_vpackhub_sat_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vpackhub_sat_128B">;
+
+def int_hexagon_V6_vmpyiwh_acc :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vmpyiwh_acc">;
+
+def int_hexagon_V6_vmpyiwh_acc_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vmpyiwh_acc_128B">;
+
+def int_hexagon_V6_vtmpyb :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vtmpyb">;
+
+def int_hexagon_V6_vtmpyb_128B :
+Hexagon_v64i32_v64i32i32_Intrinsic<"HEXAGON_V6_vtmpyb_128B">;
+
+def int_hexagon_V6_vmpabusv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpabusv">;
+
+def int_hexagon_V6_vmpabusv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vmpabusv_128B">;
+
+def int_hexagon_V6_pred_and :
+Hexagon_v512i1_v512i1v512i1_Intrinsic<"HEXAGON_V6_pred_and">;
+
+def int_hexagon_V6_pred_and_128B :
+Hexagon_v1024i1_v1024i1v1024i1_Intrinsic<"HEXAGON_V6_pred_and_128B">;
+
+def int_hexagon_V6_vsubwnq :
+Hexagon_v16i32_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vsubwnq">;
+
+def int_hexagon_V6_vsubwnq_128B :
+Hexagon_v32i32_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubwnq_128B">;
+
+def int_hexagon_V6_vpackwuh_sat :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vpackwuh_sat">;
+
+def int_hexagon_V6_vpackwuh_sat_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vpackwuh_sat_128B">;
+
+def int_hexagon_V6_vswap :
+Hexagon_v32i32_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vswap">;
+
+def int_hexagon_V6_vswap_128B :
+Hexagon_v64i32_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vswap_128B">;
+
+def int_hexagon_V6_vrmpyubv_acc :
+Hexagon_v16i32_v16i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vrmpyubv_acc">;
+
+def int_hexagon_V6_vrmpyubv_acc_128B :
+Hexagon_v32i32_v32i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vrmpyubv_acc_128B">;
+
+def int_hexagon_V6_vgtb_and :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtb_and">;
+
+def int_hexagon_V6_vgtb_and_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtb_and_128B">;
+
+def int_hexagon_V6_vaslw :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vaslw">;
+
+def int_hexagon_V6_vaslw_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vaslw_128B">;
+
+def int_hexagon_V6_vpackhb_sat :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vpackhb_sat">;
+
+def int_hexagon_V6_vpackhb_sat_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vpackhb_sat_128B">;
+
+def int_hexagon_V6_vmpyih_acc :
+Hexagon_v16i32_v16i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyih_acc">;
+
+def int_hexagon_V6_vmpyih_acc_128B :
+Hexagon_v32i32_v32i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyih_acc_128B">;
+
+def int_hexagon_V6_vshuffvdd :
+Hexagon_v32i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vshuffvdd">;
+
+def int_hexagon_V6_vshuffvdd_128B :
+Hexagon_v64i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vshuffvdd_128B">;
+
+def int_hexagon_V6_vaddb_dv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddb_dv">;
+
+def int_hexagon_V6_vaddb_dv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vaddb_dv_128B">;
+
+def int_hexagon_V6_vunpackub :
+Hexagon_v32i32_v16i32_Intrinsic<"HEXAGON_V6_vunpackub">;
+
+def int_hexagon_V6_vunpackub_128B :
+Hexagon_v64i32_v32i32_Intrinsic<"HEXAGON_V6_vunpackub_128B">;
+
+def int_hexagon_V6_vgtuw :
+Hexagon_v512i1_v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtuw">;
+
+def int_hexagon_V6_vgtuw_128B :
+Hexagon_v1024i1_v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtuw_128B">;
+
+def int_hexagon_V6_vlutvwh :
+Hexagon_v32i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlutvwh">;
+
+def int_hexagon_V6_vlutvwh_128B :
+Hexagon_v64i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlutvwh_128B">;
+
+def int_hexagon_V6_vgtub :
+Hexagon_v512i1_v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtub">;
+
+def int_hexagon_V6_vgtub_128B :
+Hexagon_v1024i1_v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtub_128B">;
+
+def int_hexagon_V6_vmpyowh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyowh">;
+
+def int_hexagon_V6_vmpyowh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyowh_128B">;
+
+def int_hexagon_V6_vmpyieoh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyieoh">;
+
+def int_hexagon_V6_vmpyieoh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyieoh_128B">;
+
+def int_hexagon_V6_extractw :
+Hexagon_i32_v16i32i32_Intrinsic<"HEXAGON_V6_extractw">;
+
+def int_hexagon_V6_extractw_128B :
+Hexagon_i32_v32i32i32_Intrinsic<"HEXAGON_V6_extractw_128B">;
+
+def int_hexagon_V6_vavgwrnd :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vavgwrnd">;
+
+def int_hexagon_V6_vavgwrnd_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vavgwrnd_128B">;
+
+def int_hexagon_V6_vdmpyhsat_acc :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vdmpyhsat_acc">;
+
+def int_hexagon_V6_vdmpyhsat_acc_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vdmpyhsat_acc_128B">;
+
+def int_hexagon_V6_vgtub_xor :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtub_xor">;
+
+def int_hexagon_V6_vgtub_xor_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtub_xor_128B">;
+
+def int_hexagon_V6_vmpyub :
+Hexagon_v32i32_v16i32i32_Intrinsic<"HEXAGON_V6_vmpyub">;
+
+def int_hexagon_V6_vmpyub_128B :
+Hexagon_v64i32_v32i32i32_Intrinsic<"HEXAGON_V6_vmpyub_128B">;
+
+def int_hexagon_V6_vmpyuh :
+Hexagon_v32i32_v16i32i32_Intrinsic<"HEXAGON_V6_vmpyuh">;
+
+def int_hexagon_V6_vmpyuh_128B :
+Hexagon_v64i32_v32i32i32_Intrinsic<"HEXAGON_V6_vmpyuh_128B">;
+
+def int_hexagon_V6_vunpackob :
+Hexagon_v32i32_v32i32v16i32_Intrinsic<"HEXAGON_V6_vunpackob">;
+
+def int_hexagon_V6_vunpackob_128B :
+Hexagon_v64i32_v64i32v32i32_Intrinsic<"HEXAGON_V6_vunpackob_128B">;
+
+def int_hexagon_V6_vmpahb :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vmpahb">;
+
+def int_hexagon_V6_vmpahb_128B :
+Hexagon_v64i32_v64i32i32_Intrinsic<"HEXAGON_V6_vmpahb_128B">;
+
+def int_hexagon_V6_veqw_or :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_veqw_or">;
+
+def int_hexagon_V6_veqw_or_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_veqw_or_128B">;
+
+def int_hexagon_V6_vandqrt :
+Hexagon_v16i32_v512i1i32_Intrinsic<"HEXAGON_V6_vandqrt">;
+
+def int_hexagon_V6_vandqrt_128B :
+Hexagon_v32i32_v1024i1i32_Intrinsic<"HEXAGON_V6_vandqrt_128B">;
+
+def int_hexagon_V6_vxor :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vxor">;
+
+def int_hexagon_V6_vxor_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vxor_128B">;
+
+def int_hexagon_V6_vasrwhrndsat :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vasrwhrndsat">;
+
+def int_hexagon_V6_vasrwhrndsat_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vasrwhrndsat_128B">;
+
+def int_hexagon_V6_vmpyhsat_acc :
+Hexagon_v32i32_v32i32v16i32i32_Intrinsic<"HEXAGON_V6_vmpyhsat_acc">;
+
+def int_hexagon_V6_vmpyhsat_acc_128B :
+Hexagon_v64i32_v64i32v32i32i32_Intrinsic<"HEXAGON_V6_vmpyhsat_acc_128B">;
+
+def int_hexagon_V6_vrmpybus_acc :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vrmpybus_acc">;
+
+def int_hexagon_V6_vrmpybus_acc_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vrmpybus_acc_128B">;
+
+def int_hexagon_V6_vsubhw :
+Hexagon_v32i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vsubhw">;
+
+def int_hexagon_V6_vsubhw_128B :
+Hexagon_v64i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubhw_128B">;
+
+def int_hexagon_V6_vdealb4w :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vdealb4w">;
+
+def int_hexagon_V6_vdealb4w_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vdealb4w_128B">;
+
+def int_hexagon_V6_vmpyowh_sacc :
+Hexagon_v16i32_v16i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyowh_sacc">;
+
+def int_hexagon_V6_vmpyowh_sacc_128B :
+Hexagon_v32i32_v32i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyowh_sacc_128B">;
+
+def int_hexagon_V6_vmpybv :
+Hexagon_v32i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpybv">;
+
+def int_hexagon_V6_vmpybv_128B :
+Hexagon_v64i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpybv_128B">;
+
+def int_hexagon_V6_vabsdiffh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vabsdiffh">;
+
+def int_hexagon_V6_vabsdiffh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vabsdiffh_128B">;
+
+def int_hexagon_V6_vshuffob :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vshuffob">;
+
+def int_hexagon_V6_vshuffob_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vshuffob_128B">;
+
+def int_hexagon_V6_vmpyub_acc :
+Hexagon_v32i32_v32i32v16i32i32_Intrinsic<"HEXAGON_V6_vmpyub_acc">;
+
+def int_hexagon_V6_vmpyub_acc_128B :
+Hexagon_v64i32_v64i32v32i32i32_Intrinsic<"HEXAGON_V6_vmpyub_acc_128B">;
+
+def int_hexagon_V6_vnormamtw :
+Hexagon_v16i32_v16i32_Intrinsic<"HEXAGON_V6_vnormamtw">;
+
+def int_hexagon_V6_vnormamtw_128B :
+Hexagon_v32i32_v32i32_Intrinsic<"HEXAGON_V6_vnormamtw_128B">;
+
+def int_hexagon_V6_vunpackuh :
+Hexagon_v32i32_v16i32_Intrinsic<"HEXAGON_V6_vunpackuh">;
+
+def int_hexagon_V6_vunpackuh_128B :
+Hexagon_v64i32_v32i32_Intrinsic<"HEXAGON_V6_vunpackuh_128B">;
+
+def int_hexagon_V6_vgtuh_or :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtuh_or">;
+
+def int_hexagon_V6_vgtuh_or_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtuh_or_128B">;
+
+def int_hexagon_V6_vmpyiewuh_acc :
+Hexagon_v16i32_v16i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyiewuh_acc">;
+
+def int_hexagon_V6_vmpyiewuh_acc_128B :
+Hexagon_v32i32_v32i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyiewuh_acc_128B">;
+
+def int_hexagon_V6_vunpackoh :
+Hexagon_v32i32_v32i32v16i32_Intrinsic<"HEXAGON_V6_vunpackoh">;
+
+def int_hexagon_V6_vunpackoh_128B :
+Hexagon_v64i32_v64i32v32i32_Intrinsic<"HEXAGON_V6_vunpackoh_128B">;
+
+def int_hexagon_V6_vdmpyhsat :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vdmpyhsat">;
+
+def int_hexagon_V6_vdmpyhsat_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vdmpyhsat_128B">;
+
+def int_hexagon_V6_vmpyubv :
+Hexagon_v32i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyubv">;
+
+def int_hexagon_V6_vmpyubv_128B :
+Hexagon_v64i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyubv_128B">;
+
+def int_hexagon_V6_vmpyhss :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vmpyhss">;
+
+def int_hexagon_V6_vmpyhss_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vmpyhss_128B">;
+
+def int_hexagon_V6_hi :
+Hexagon_v16i32_v32i32_Intrinsic<"HEXAGON_V6_hi">;
+
+def int_hexagon_V6_hi_128B :
+Hexagon_v32i32_v64i32_Intrinsic<"HEXAGON_V6_hi_128B">;
+
+def int_hexagon_V6_vasrwuhsat :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vasrwuhsat">;
+
+def int_hexagon_V6_vasrwuhsat_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vasrwuhsat_128B">;
+
+def int_hexagon_V6_veqw :
+Hexagon_v512i1_v16i32v16i32_Intrinsic<"HEXAGON_V6_veqw">;
+
+def int_hexagon_V6_veqw_128B :
+Hexagon_v1024i1_v32i32v32i32_Intrinsic<"HEXAGON_V6_veqw_128B">;
+
+def int_hexagon_V6_vdsaduh :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vdsaduh">;
+
+def int_hexagon_V6_vdsaduh_128B :
+Hexagon_v64i32_v64i32i32_Intrinsic<"HEXAGON_V6_vdsaduh_128B">;
+
+def int_hexagon_V6_vsubw :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vsubw">;
+
+def int_hexagon_V6_vsubw_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubw_128B">;
+
+def int_hexagon_V6_vsubw_dv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubw_dv">;
+
+def int_hexagon_V6_vsubw_dv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vsubw_dv_128B">;
+
+def int_hexagon_V6_veqb_and :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_veqb_and">;
+
+def int_hexagon_V6_veqb_and_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_veqb_and_128B">;
+
+def int_hexagon_V6_vmpyih :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyih">;
+
+def int_hexagon_V6_vmpyih_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyih_128B">;
+
+def int_hexagon_V6_vtmpyb_acc :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vtmpyb_acc">;
+
+def int_hexagon_V6_vtmpyb_acc_128B :
+Hexagon_v64i32_v64i32v64i32i32_Intrinsic<"HEXAGON_V6_vtmpyb_acc_128B">;
+
+def int_hexagon_V6_vrmpybus :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vrmpybus">;
+
+def int_hexagon_V6_vrmpybus_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vrmpybus_128B">;
+
+def int_hexagon_V6_vmpybus_acc :
+Hexagon_v32i32_v32i32v16i32i32_Intrinsic<"HEXAGON_V6_vmpybus_acc">;
+
+def int_hexagon_V6_vmpybus_acc_128B :
+Hexagon_v64i32_v64i32v32i32i32_Intrinsic<"HEXAGON_V6_vmpybus_acc_128B">;
+
+def int_hexagon_V6_vgth_xor :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vgth_xor">;
+
+def int_hexagon_V6_vgth_xor_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vgth_xor_128B">;
+
+def int_hexagon_V6_vsubhsat :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vsubhsat">;
+
+def int_hexagon_V6_vsubhsat_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubhsat_128B">;
+
+def int_hexagon_V6_vrmpyubi_acc :
+Hexagon_v32i32_v32i32v32i32i32i32_Intrinsic<"HEXAGON_V6_vrmpyubi_acc">;
+
+def int_hexagon_V6_vrmpyubi_acc_128B :
+Hexagon_v64i32_v64i32v64i32i32i32_Intrinsic<"HEXAGON_V6_vrmpyubi_acc_128B">;
+
+def int_hexagon_V6_vabsw :
+Hexagon_v16i32_v16i32_Intrinsic<"HEXAGON_V6_vabsw">;
+
+def int_hexagon_V6_vabsw_128B :
+Hexagon_v32i32_v32i32_Intrinsic<"HEXAGON_V6_vabsw_128B">;
+
+def int_hexagon_V6_vaddwsat_dv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddwsat_dv">;
+
+def int_hexagon_V6_vaddwsat_dv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vaddwsat_dv_128B">;
+
+def int_hexagon_V6_vlsrw :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vlsrw">;
+
+def int_hexagon_V6_vlsrw_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vlsrw_128B">;
+
+def int_hexagon_V6_vabsh :
+Hexagon_v16i32_v16i32_Intrinsic<"HEXAGON_V6_vabsh">;
+
+def int_hexagon_V6_vabsh_128B :
+Hexagon_v32i32_v32i32_Intrinsic<"HEXAGON_V6_vabsh_128B">;
+
+def int_hexagon_V6_vlsrh :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vlsrh">;
+
+def int_hexagon_V6_vlsrh_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vlsrh_128B">;
+
+def int_hexagon_V6_valignb :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_valignb">;
+
+def int_hexagon_V6_valignb_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_valignb_128B">;
+
+def int_hexagon_V6_vsubhq :
+Hexagon_v16i32_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vsubhq">;
+
+def int_hexagon_V6_vsubhq_128B :
+Hexagon_v32i32_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubhq_128B">;
+
+def int_hexagon_V6_vpackoh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vpackoh">;
+
+def int_hexagon_V6_vpackoh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vpackoh_128B">;
+
+def int_hexagon_V6_vdmpybus_acc :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vdmpybus_acc">;
+
+def int_hexagon_V6_vdmpybus_acc_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vdmpybus_acc_128B">;
+
+def int_hexagon_V6_vdmpyhvsat_acc :
+Hexagon_v16i32_v16i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vdmpyhvsat_acc">;
+
+def int_hexagon_V6_vdmpyhvsat_acc_128B :
+Hexagon_v32i32_v32i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vdmpyhvsat_acc_128B">;
+
+def int_hexagon_V6_vrmpybv_acc :
+Hexagon_v16i32_v16i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vrmpybv_acc">;
+
+def int_hexagon_V6_vrmpybv_acc_128B :
+Hexagon_v32i32_v32i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vrmpybv_acc_128B">;
+
+def int_hexagon_V6_vaddhsat :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddhsat">;
+
+def int_hexagon_V6_vaddhsat_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddhsat_128B">;
+
+def int_hexagon_V6_vcombine :
+Hexagon_v32i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vcombine">;
+
+def int_hexagon_V6_vcombine_128B :
+Hexagon_v64i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vcombine_128B">;
+
+def int_hexagon_V6_vandqrt_acc :
+Hexagon_v16i32_v16i32v512i1i32_Intrinsic<"HEXAGON_V6_vandqrt_acc">;
+
+def int_hexagon_V6_vandqrt_acc_128B :
+Hexagon_v32i32_v32i32v1024i1i32_Intrinsic<"HEXAGON_V6_vandqrt_acc_128B">;
+
+def int_hexagon_V6_vaslhv :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vaslhv">;
+
+def int_hexagon_V6_vaslhv_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaslhv_128B">;
+
+def int_hexagon_V6_vinsertwr :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vinsertwr">;
+
+def int_hexagon_V6_vinsertwr_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vinsertwr_128B">;
+
+def int_hexagon_V6_vsubh_dv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubh_dv">;
+
+def int_hexagon_V6_vsubh_dv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vsubh_dv_128B">;
+
+def int_hexagon_V6_vshuffb :
+Hexagon_v16i32_v16i32_Intrinsic<"HEXAGON_V6_vshuffb">;
+
+def int_hexagon_V6_vshuffb_128B :
+Hexagon_v32i32_v32i32_Intrinsic<"HEXAGON_V6_vshuffb_128B">;
+
+def int_hexagon_V6_vand :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vand">;
+
+def int_hexagon_V6_vand_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vand_128B">;
+
+def int_hexagon_V6_vmpyhv :
+Hexagon_v32i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyhv">;
+
+def int_hexagon_V6_vmpyhv_128B :
+Hexagon_v64i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyhv_128B">;
+
+def int_hexagon_V6_vdmpyhsuisat_acc :
+Hexagon_v16i32_v16i32v32i32i32_Intrinsic<"HEXAGON_V6_vdmpyhsuisat_acc">;
+
+def int_hexagon_V6_vdmpyhsuisat_acc_128B :
+Hexagon_v32i32_v32i32v64i32i32_Intrinsic<"HEXAGON_V6_vdmpyhsuisat_acc_128B">;
+
+def int_hexagon_V6_vsububsat_dv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsububsat_dv">;
+
+def int_hexagon_V6_vsububsat_dv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vsububsat_dv_128B">;
+
+def int_hexagon_V6_vgtb_xor :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtb_xor">;
+
+def int_hexagon_V6_vgtb_xor_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtb_xor_128B">;
+
+def int_hexagon_V6_vdsaduh_acc :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vdsaduh_acc">;
+
+def int_hexagon_V6_vdsaduh_acc_128B :
+Hexagon_v64i32_v64i32v64i32i32_Intrinsic<"HEXAGON_V6_vdsaduh_acc_128B">;
+
+def int_hexagon_V6_vrmpyub :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vrmpyub">;
+
+def int_hexagon_V6_vrmpyub_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vrmpyub_128B">;
+
+def int_hexagon_V6_vmpyuh_acc :
+Hexagon_v32i32_v32i32v16i32i32_Intrinsic<"HEXAGON_V6_vmpyuh_acc">;
+
+def int_hexagon_V6_vmpyuh_acc_128B :
+Hexagon_v64i32_v64i32v32i32i32_Intrinsic<"HEXAGON_V6_vmpyuh_acc_128B">;
+
+def int_hexagon_V6_vcl0h :
+Hexagon_v16i32_v16i32_Intrinsic<"HEXAGON_V6_vcl0h">;
+
+def int_hexagon_V6_vcl0h_128B :
+Hexagon_v32i32_v32i32_Intrinsic<"HEXAGON_V6_vcl0h_128B">;
+
+def int_hexagon_V6_vmpyhus_acc :
+Hexagon_v32i32_v32i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyhus_acc">;
+
+def int_hexagon_V6_vmpyhus_acc_128B :
+Hexagon_v64i32_v64i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyhus_acc_128B">;
+
+def int_hexagon_V6_vmpybv_acc :
+Hexagon_v32i32_v32i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpybv_acc">;
+
+def int_hexagon_V6_vmpybv_acc_128B :
+Hexagon_v64i32_v64i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpybv_acc_128B">;
+
+def int_hexagon_V6_vrsadubi :
+Hexagon_v32i32_v32i32i32i32_Intrinsic<"HEXAGON_V6_vrsadubi">;
+
+def int_hexagon_V6_vrsadubi_128B :
+Hexagon_v64i32_v64i32i32i32_Intrinsic<"HEXAGON_V6_vrsadubi_128B">;
+
+def int_hexagon_V6_vdmpyhb_dv_acc :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vdmpyhb_dv_acc">;
+
+def int_hexagon_V6_vdmpyhb_dv_acc_128B :
+Hexagon_v64i32_v64i32v64i32i32_Intrinsic<"HEXAGON_V6_vdmpyhb_dv_acc_128B">;
+
+def int_hexagon_V6_vshufeh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vshufeh">;
+
+def int_hexagon_V6_vshufeh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vshufeh_128B">;
+
+def int_hexagon_V6_vmpyewuh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyewuh">;
+
+def int_hexagon_V6_vmpyewuh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyewuh_128B">;
+
+def int_hexagon_V6_vmpyhsrs :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vmpyhsrs">;
+
+def int_hexagon_V6_vmpyhsrs_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vmpyhsrs_128B">;
+
+def int_hexagon_V6_vdmpybus_dv_acc :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vdmpybus_dv_acc">;
+
+def int_hexagon_V6_vdmpybus_dv_acc_128B :
+Hexagon_v64i32_v64i32v64i32i32_Intrinsic<"HEXAGON_V6_vdmpybus_dv_acc_128B">;
+
+def int_hexagon_V6_vaddubh :
+Hexagon_v32i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddubh">;
+
+def int_hexagon_V6_vaddubh_128B :
+Hexagon_v64i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddubh_128B">;
+
+def int_hexagon_V6_vasrwh :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vasrwh">;
+
+def int_hexagon_V6_vasrwh_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vasrwh_128B">;
+
+def int_hexagon_V6_ld0 :
+Hexagon_v16i32_i32_Intrinsic<"HEXAGON_V6_ld0">;
+
+def int_hexagon_V6_ld0_128B :
+Hexagon_v32i32_i32_Intrinsic<"HEXAGON_V6_ld0_128B">;
+
+def int_hexagon_V6_vpopcounth :
+Hexagon_v16i32_v16i32_Intrinsic<"HEXAGON_V6_vpopcounth">;
+
+def int_hexagon_V6_vpopcounth_128B :
+Hexagon_v32i32_v32i32_Intrinsic<"HEXAGON_V6_vpopcounth_128B">;
+
+def int_hexagon_V6_ldnt0 :
+Hexagon_v16i32_i32_Intrinsic<"HEXAGON_V6_ldnt0">;
+
+def int_hexagon_V6_ldnt0_128B :
+Hexagon_v32i32_i32_Intrinsic<"HEXAGON_V6_ldnt0_128B">;
+
+def int_hexagon_V6_vgth_and :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vgth_and">;
+
+def int_hexagon_V6_vgth_and_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vgth_and_128B">;
+
+def int_hexagon_V6_vaddubsat_dv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddubsat_dv">;
+
+def int_hexagon_V6_vaddubsat_dv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vaddubsat_dv_128B">;
+
+def int_hexagon_V6_vpackeh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vpackeh">;
+
+def int_hexagon_V6_vpackeh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vpackeh_128B">;
+
+def int_hexagon_V6_vmpyh :
+Hexagon_v32i32_v16i32i32_Intrinsic<"HEXAGON_V6_vmpyh">;
+
+def int_hexagon_V6_vmpyh_128B :
+Hexagon_v64i32_v32i32i32_Intrinsic<"HEXAGON_V6_vmpyh_128B">;
+
+def int_hexagon_V6_vminh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vminh">;
+
+def int_hexagon_V6_vminh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vminh_128B">;
+
+def int_hexagon_V6_pred_scalar2 :
+Hexagon_v512i1_i32_Intrinsic<"HEXAGON_V6_pred_scalar2">;
+
+def int_hexagon_V6_pred_scalar2_128B :
+Hexagon_v1024i1_i32_Intrinsic<"HEXAGON_V6_pred_scalar2_128B">;
+
+def int_hexagon_V6_vdealh :
+Hexagon_v16i32_v16i32_Intrinsic<"HEXAGON_V6_vdealh">;
+
+def int_hexagon_V6_vdealh_128B :
+Hexagon_v32i32_v32i32_Intrinsic<"HEXAGON_V6_vdealh_128B">;
+
+def int_hexagon_V6_vpackwh_sat :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vpackwh_sat">;
+
+def int_hexagon_V6_vpackwh_sat_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vpackwh_sat_128B">;
+
+def int_hexagon_V6_vaslh :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vaslh">;
+
+def int_hexagon_V6_vaslh_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vaslh_128B">;
+
+def int_hexagon_V6_vgtuw_and :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtuw_and">;
+
+def int_hexagon_V6_vgtuw_and_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtuw_and_128B">;
+
+def int_hexagon_V6_vor :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vor">;
+
+def int_hexagon_V6_vor_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vor_128B">;
+
+def int_hexagon_V6_vlutvvb :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlutvvb">;
+
+def int_hexagon_V6_vlutvvb_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlutvvb_128B">;
+
+def int_hexagon_V6_vmpyiowh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyiowh">;
+
+def int_hexagon_V6_vmpyiowh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyiowh_128B">;
+
+def int_hexagon_V6_vlutvvb_oracc :
+Hexagon_v16i32_v16i32v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlutvvb_oracc">;
+
+def int_hexagon_V6_vlutvvb_oracc_128B :
+Hexagon_v32i32_v32i32v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlutvvb_oracc_128B">;
+
+def int_hexagon_V6_vandvrt :
+Hexagon_v512i1_v16i32i32_Intrinsic<"HEXAGON_V6_vandvrt">;
+
+def int_hexagon_V6_vandvrt_128B :
+Hexagon_v1024i1_v32i32i32_Intrinsic<"HEXAGON_V6_vandvrt_128B">;
+
+def int_hexagon_V6_veqh_xor :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_veqh_xor">;
+
+def int_hexagon_V6_veqh_xor_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_veqh_xor_128B">;
+
+def int_hexagon_V6_vadduhw :
+Hexagon_v32i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vadduhw">;
+
+def int_hexagon_V6_vadduhw_128B :
+Hexagon_v64i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vadduhw_128B">;
+
+def int_hexagon_V6_vcl0w :
+Hexagon_v16i32_v16i32_Intrinsic<"HEXAGON_V6_vcl0w">;
+
+def int_hexagon_V6_vcl0w_128B :
+Hexagon_v32i32_v32i32_Intrinsic<"HEXAGON_V6_vcl0w_128B">;
+
+def int_hexagon_V6_vmpyihb :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vmpyihb">;
+
+def int_hexagon_V6_vmpyihb_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vmpyihb_128B">;
+
+def int_hexagon_V6_vtmpybus :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vtmpybus">;
+
+def int_hexagon_V6_vtmpybus_128B :
+Hexagon_v64i32_v64i32i32_Intrinsic<"HEXAGON_V6_vtmpybus_128B">;
+
+def int_hexagon_V6_vd0 :
+Hexagon_v16i32__Intrinsic<"HEXAGON_V6_vd0">;
+
+def int_hexagon_V6_vd0_128B :
+Hexagon_v32i32__Intrinsic<"HEXAGON_V6_vd0_128B">;
+
+def int_hexagon_V6_veqh_or :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_veqh_or">;
+
+def int_hexagon_V6_veqh_or_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_veqh_or_128B">;
+
+def int_hexagon_V6_vgtw_or :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtw_or">;
+
+def int_hexagon_V6_vgtw_or_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtw_or_128B">;
+
+def int_hexagon_V6_vdmpybus :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vdmpybus">;
+
+def int_hexagon_V6_vdmpybus_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vdmpybus_128B">;
+
+def int_hexagon_V6_vgtub_or :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtub_or">;
+
+def int_hexagon_V6_vgtub_or_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtub_or_128B">;
+
+def int_hexagon_V6_vmpybus :
+Hexagon_v32i32_v16i32i32_Intrinsic<"HEXAGON_V6_vmpybus">;
+
+def int_hexagon_V6_vmpybus_128B :
+Hexagon_v64i32_v32i32i32_Intrinsic<"HEXAGON_V6_vmpybus_128B">;
+
+def int_hexagon_V6_vdmpyhb_acc :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vdmpyhb_acc">;
+
+def int_hexagon_V6_vdmpyhb_acc_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vdmpyhb_acc_128B">;
+
+def int_hexagon_V6_vandvrt_acc :
+Hexagon_v512i1_v512i1v16i32i32_Intrinsic<"HEXAGON_V6_vandvrt_acc">;
+
+def int_hexagon_V6_vandvrt_acc_128B :
+Hexagon_v1024i1_v1024i1v32i32i32_Intrinsic<"HEXAGON_V6_vandvrt_acc_128B">;
+
+def int_hexagon_V6_vassign :
+Hexagon_v16i32_v16i32_Intrinsic<"HEXAGON_V6_vassign">;
+
+def int_hexagon_V6_vassign_128B :
+Hexagon_v32i32_v32i32_Intrinsic<"HEXAGON_V6_vassign_128B">;
+
+def int_hexagon_V6_vaddwnq :
+Hexagon_v16i32_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddwnq">;
+
+def int_hexagon_V6_vaddwnq_128B :
+Hexagon_v32i32_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddwnq_128B">;
+
+def int_hexagon_V6_vgtub_and :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtub_and">;
+
+def int_hexagon_V6_vgtub_and_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtub_and_128B">;
+
+def int_hexagon_V6_vdmpyhb_dv :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vdmpyhb_dv">;
+
+def int_hexagon_V6_vdmpyhb_dv_128B :
+Hexagon_v64i32_v64i32i32_Intrinsic<"HEXAGON_V6_vdmpyhb_dv_128B">;
+
+def int_hexagon_V6_vunpackb :
+Hexagon_v32i32_v16i32_Intrinsic<"HEXAGON_V6_vunpackb">;
+
+def int_hexagon_V6_vunpackb_128B :
+Hexagon_v64i32_v32i32_Intrinsic<"HEXAGON_V6_vunpackb_128B">;
+
+def int_hexagon_V6_vunpackh :
+Hexagon_v32i32_v16i32_Intrinsic<"HEXAGON_V6_vunpackh">;
+
+def int_hexagon_V6_vunpackh_128B :
+Hexagon_v64i32_v32i32_Intrinsic<"HEXAGON_V6_vunpackh_128B">;
+
+def int_hexagon_V6_vmpahb_acc :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vmpahb_acc">;
+
+def int_hexagon_V6_vmpahb_acc_128B :
+Hexagon_v64i32_v64i32v64i32i32_Intrinsic<"HEXAGON_V6_vmpahb_acc_128B">;
+
+def int_hexagon_V6_vaddbnq :
+Hexagon_v16i32_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddbnq">;
+
+def int_hexagon_V6_vaddbnq_128B :
+Hexagon_v32i32_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddbnq_128B">;
+
+def int_hexagon_V6_vlalignbi :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlalignbi">;
+
+def int_hexagon_V6_vlalignbi_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlalignbi_128B">;
+
+def int_hexagon_V6_vsatwh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vsatwh">;
+
+def int_hexagon_V6_vsatwh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsatwh_128B">;
+
+def int_hexagon_V6_vgtuh :
+Hexagon_v512i1_v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtuh">;
+
+def int_hexagon_V6_vgtuh_128B :
+Hexagon_v1024i1_v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtuh_128B">;
+
+def int_hexagon_V6_vmpyihb_acc :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vmpyihb_acc">;
+
+def int_hexagon_V6_vmpyihb_acc_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vmpyihb_acc_128B">;
+
+def int_hexagon_V6_vrmpybusv_acc :
+Hexagon_v16i32_v16i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vrmpybusv_acc">;
+
+def int_hexagon_V6_vrmpybusv_acc_128B :
+Hexagon_v32i32_v32i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vrmpybusv_acc_128B">;
+
+def int_hexagon_V6_vrdelta :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vrdelta">;
+
+def int_hexagon_V6_vrdelta_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vrdelta_128B">;
+
+def int_hexagon_V6_vroundwh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vroundwh">;
+
+def int_hexagon_V6_vroundwh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vroundwh_128B">;
+
+def int_hexagon_V6_vaddw_dv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddw_dv">;
+
+def int_hexagon_V6_vaddw_dv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vaddw_dv_128B">;
+
+def int_hexagon_V6_vmpyiwb_acc :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vmpyiwb_acc">;
+
+def int_hexagon_V6_vmpyiwb_acc_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vmpyiwb_acc_128B">;
+
+def int_hexagon_V6_vsubbq :
+Hexagon_v16i32_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vsubbq">;
+
+def int_hexagon_V6_vsubbq_128B :
+Hexagon_v32i32_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubbq_128B">;
+
+def int_hexagon_V6_veqh_and :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_veqh_and">;
+
+def int_hexagon_V6_veqh_and_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_veqh_and_128B">;
+
+def int_hexagon_V6_valignbi :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_valignbi">;
+
+def int_hexagon_V6_valignbi_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_valignbi_128B">;
+
+def int_hexagon_V6_vaddwsat :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddwsat">;
+
+def int_hexagon_V6_vaddwsat_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddwsat_128B">;
+
+def int_hexagon_V6_veqw_and :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_veqw_and">;
+
+def int_hexagon_V6_veqw_and_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_veqw_and_128B">;
+
+def int_hexagon_V6_vabsdiffub :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vabsdiffub">;
+
+def int_hexagon_V6_vabsdiffub_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vabsdiffub_128B">;
+
+def int_hexagon_V6_vshuffeb :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vshuffeb">;
+
+def int_hexagon_V6_vshuffeb_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vshuffeb_128B">;
+
+def int_hexagon_V6_vabsdiffuh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vabsdiffuh">;
+
+def int_hexagon_V6_vabsdiffuh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vabsdiffuh_128B">;
+
+def int_hexagon_V6_veqw_xor :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_veqw_xor">;
+
+def int_hexagon_V6_veqw_xor_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_veqw_xor_128B">;
+
+def int_hexagon_V6_vgth :
+Hexagon_v512i1_v16i32v16i32_Intrinsic<"HEXAGON_V6_vgth">;
+
+def int_hexagon_V6_vgth_128B :
+Hexagon_v1024i1_v32i32v32i32_Intrinsic<"HEXAGON_V6_vgth_128B">;
+
+def int_hexagon_V6_vgtuw_xor :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtuw_xor">;
+
+def int_hexagon_V6_vgtuw_xor_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtuw_xor_128B">;
+
+def int_hexagon_V6_vgtb :
+Hexagon_v512i1_v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtb">;
+
+def int_hexagon_V6_vgtb_128B :
+Hexagon_v1024i1_v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtb_128B">;
+
+def int_hexagon_V6_vgtw :
+Hexagon_v512i1_v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtw">;
+
+def int_hexagon_V6_vgtw_128B :
+Hexagon_v1024i1_v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtw_128B">;
+
+def int_hexagon_V6_vsubwq :
+Hexagon_v16i32_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vsubwq">;
+
+def int_hexagon_V6_vsubwq_128B :
+Hexagon_v32i32_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubwq_128B">;
+
+def int_hexagon_V6_vnot :
+Hexagon_v16i32_v16i32_Intrinsic<"HEXAGON_V6_vnot">;
+
+def int_hexagon_V6_vnot_128B :
+Hexagon_v32i32_v32i32_Intrinsic<"HEXAGON_V6_vnot_128B">;
+
+def int_hexagon_V6_vgtb_or :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtb_or">;
+
+def int_hexagon_V6_vgtb_or_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtb_or_128B">;
+
+def int_hexagon_V6_vgtuw_or :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtuw_or">;
+
+def int_hexagon_V6_vgtuw_or_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtuw_or_128B">;
+
+def int_hexagon_V6_vaddubsat :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddubsat">;
+
+def int_hexagon_V6_vaddubsat_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddubsat_128B">;
+
+def int_hexagon_V6_vmaxw :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmaxw">;
+
+def int_hexagon_V6_vmaxw_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmaxw_128B">;
+
+def int_hexagon_V6_vaslwv :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vaslwv">;
+
+def int_hexagon_V6_vaslwv_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaslwv_128B">;
+
+def int_hexagon_V6_vabsw_sat :
+Hexagon_v16i32_v16i32_Intrinsic<"HEXAGON_V6_vabsw_sat">;
+
+def int_hexagon_V6_vabsw_sat_128B :
+Hexagon_v32i32_v32i32_Intrinsic<"HEXAGON_V6_vabsw_sat_128B">;
+
+def int_hexagon_V6_vsubwsat_dv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubwsat_dv">;
+
+def int_hexagon_V6_vsubwsat_dv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vsubwsat_dv_128B">;
+
+def int_hexagon_V6_vroundhub :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vroundhub">;
+
+def int_hexagon_V6_vroundhub_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vroundhub_128B">;
+
+def int_hexagon_V6_vdmpyhisat_acc :
+Hexagon_v16i32_v16i32v32i32i32_Intrinsic<"HEXAGON_V6_vdmpyhisat_acc">;
+
+def int_hexagon_V6_vdmpyhisat_acc_128B :
+Hexagon_v32i32_v32i32v64i32i32_Intrinsic<"HEXAGON_V6_vdmpyhisat_acc_128B">;
+
+def int_hexagon_V6_vmpabus :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vmpabus">;
+
+def int_hexagon_V6_vmpabus_128B :
+Hexagon_v64i32_v64i32i32_Intrinsic<"HEXAGON_V6_vmpabus_128B">;
+
+def int_hexagon_V6_vassignp :
+Hexagon_v32i32_v32i32_Intrinsic<"HEXAGON_V6_vassignp">;
+
+def int_hexagon_V6_vassignp_128B :
+Hexagon_v64i32_v64i32_Intrinsic<"HEXAGON_V6_vassignp_128B">;
+
+def int_hexagon_V6_veqb :
+Hexagon_v512i1_v16i32v16i32_Intrinsic<"HEXAGON_V6_veqb">;
+
+def int_hexagon_V6_veqb_128B :
+Hexagon_v1024i1_v32i32v32i32_Intrinsic<"HEXAGON_V6_veqb_128B">;
+
+def int_hexagon_V6_vsububh :
+Hexagon_v32i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vsububh">;
+
+def int_hexagon_V6_vsububh_128B :
+Hexagon_v64i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsububh_128B">;
+
+def int_hexagon_V6_lvsplatw :
+Hexagon_v16i32_i32_Intrinsic<"HEXAGON_V6_lvsplatw">;
+
+def int_hexagon_V6_lvsplatw_128B :
+Hexagon_v32i32_i32_Intrinsic<"HEXAGON_V6_lvsplatw_128B">;
+
+def int_hexagon_V6_vaddhnq :
+Hexagon_v16i32_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddhnq">;
+
+def int_hexagon_V6_vaddhnq_128B :
+Hexagon_v32i32_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddhnq_128B">;
+
+def int_hexagon_V6_vdmpyhsusat :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vdmpyhsusat">;
+
+def int_hexagon_V6_vdmpyhsusat_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vdmpyhsusat_128B">;
+
+def int_hexagon_V6_pred_not :
+Hexagon_v512i1_v512i1_Intrinsic<"HEXAGON_V6_pred_not">;
+
+def int_hexagon_V6_pred_not_128B :
+Hexagon_v1024i1_v1024i1_Intrinsic<"HEXAGON_V6_pred_not_128B">;
+
+def int_hexagon_V6_vlutvwh_oracc :
+Hexagon_v32i32_v32i32v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlutvwh_oracc">;
+
+def int_hexagon_V6_vlutvwh_oracc_128B :
+Hexagon_v64i32_v64i32v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlutvwh_oracc_128B">;
+
+def int_hexagon_V6_vmpyiewh_acc :
+Hexagon_v16i32_v16i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyiewh_acc">;
+
+def int_hexagon_V6_vmpyiewh_acc_128B :
+Hexagon_v32i32_v32i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyiewh_acc_128B">;
+
+def int_hexagon_V6_vdealvdd :
+Hexagon_v32i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vdealvdd">;
+
+def int_hexagon_V6_vdealvdd_128B :
+Hexagon_v64i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vdealvdd_128B">;
+
+def int_hexagon_V6_vavgw :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vavgw">;
+
+def int_hexagon_V6_vavgw_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vavgw_128B">;
+
+def int_hexagon_V6_vdmpyhsusat_acc :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vdmpyhsusat_acc">;
+
+def int_hexagon_V6_vdmpyhsusat_acc_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vdmpyhsusat_acc_128B">;
+
+def int_hexagon_V6_vgtw_xor :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vgtw_xor">;
+
+def int_hexagon_V6_vgtw_xor_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vgtw_xor_128B">;
+
+def int_hexagon_V6_vtmpyhb_acc :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vtmpyhb_acc">;
+
+def int_hexagon_V6_vtmpyhb_acc_128B :
+Hexagon_v64i32_v64i32v64i32i32_Intrinsic<"HEXAGON_V6_vtmpyhb_acc_128B">;
+
+def int_hexagon_V6_vaddhw :
+Hexagon_v32i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddhw">;
+
+def int_hexagon_V6_vaddhw_128B :
+Hexagon_v64i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddhw_128B">;
+
+def int_hexagon_V6_vaddhq :
+Hexagon_v16i32_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddhq">;
+
+def int_hexagon_V6_vaddhq_128B :
+Hexagon_v32i32_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddhq_128B">;
+
+def int_hexagon_V6_vrmpyubv :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vrmpyubv">;
+
+def int_hexagon_V6_vrmpyubv_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vrmpyubv_128B">;
+
+def int_hexagon_V6_vsubh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vsubh">;
+
+def int_hexagon_V6_vsubh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubh_128B">;
+
+def int_hexagon_V6_vrmpyubi :
+Hexagon_v32i32_v32i32i32i32_Intrinsic<"HEXAGON_V6_vrmpyubi">;
+
+def int_hexagon_V6_vrmpyubi_128B :
+Hexagon_v64i32_v64i32i32i32_Intrinsic<"HEXAGON_V6_vrmpyubi_128B">;
+
+def int_hexagon_V6_vminw :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vminw">;
+
+def int_hexagon_V6_vminw_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vminw_128B">;
+
+def int_hexagon_V6_vmpyubv_acc :
+Hexagon_v32i32_v32i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyubv_acc">;
+
+def int_hexagon_V6_vmpyubv_acc_128B :
+Hexagon_v64i32_v64i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyubv_acc_128B">;
+
+def int_hexagon_V6_pred_xor :
+Hexagon_v512i1_v512i1v512i1_Intrinsic<"HEXAGON_V6_pred_xor">;
+
+def int_hexagon_V6_pred_xor_128B :
+Hexagon_v1024i1_v1024i1v1024i1_Intrinsic<"HEXAGON_V6_pred_xor_128B">;
+
+def int_hexagon_V6_veqb_xor :
+Hexagon_v512i1_v512i1v16i32v16i32_Intrinsic<"HEXAGON_V6_veqb_xor">;
+
+def int_hexagon_V6_veqb_xor_128B :
+Hexagon_v1024i1_v1024i1v32i32v32i32_Intrinsic<"HEXAGON_V6_veqb_xor_128B">;
+
+def int_hexagon_V6_vmpyiewuh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyiewuh">;
+
+def int_hexagon_V6_vmpyiewuh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyiewuh_128B">;
+
+def int_hexagon_V6_vmpybusv_acc :
+Hexagon_v32i32_v32i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpybusv_acc">;
+
+def int_hexagon_V6_vmpybusv_acc_128B :
+Hexagon_v64i32_v64i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpybusv_acc_128B">;
+
+def int_hexagon_V6_vavguhrnd :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vavguhrnd">;
+
+def int_hexagon_V6_vavguhrnd_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vavguhrnd_128B">;
+
+def int_hexagon_V6_vmpyowh_rnd :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyowh_rnd">;
+
+def int_hexagon_V6_vmpyowh_rnd_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyowh_rnd_128B">;
+
+def int_hexagon_V6_vsubwsat :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vsubwsat">;
+
+def int_hexagon_V6_vsubwsat_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubwsat_128B">;
+
+def int_hexagon_V6_vsubuhw :
+Hexagon_v32i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vsubuhw">;
+
+def int_hexagon_V6_vsubuhw_128B :
+Hexagon_v64i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubuhw_128B">;
+
+def int_hexagon_V6_vrmpybusi_acc :
+Hexagon_v32i32_v32i32v32i32i32i32_Intrinsic<"HEXAGON_V6_vrmpybusi_acc">;
+
+def int_hexagon_V6_vrmpybusi_acc_128B :
+Hexagon_v64i32_v64i32v64i32i32i32_Intrinsic<"HEXAGON_V6_vrmpybusi_acc_128B">;
+
+def int_hexagon_V6_vasrw :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vasrw">;
+
+def int_hexagon_V6_vasrw_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vasrw_128B">;
+
+def int_hexagon_V6_vasrh :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vasrh">;
+
+def int_hexagon_V6_vasrh_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vasrh_128B">;
+
+def int_hexagon_V6_vmpyuhv :
+Hexagon_v32i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyuhv">;
+
+def int_hexagon_V6_vmpyuhv_128B :
+Hexagon_v64i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyuhv_128B">;
+
+def int_hexagon_V6_vasrhbrndsat :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vasrhbrndsat">;
+
+def int_hexagon_V6_vasrhbrndsat_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vasrhbrndsat_128B">;
+
+def int_hexagon_V6_vsubuhsat_dv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubuhsat_dv">;
+
+def int_hexagon_V6_vsubuhsat_dv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vsubuhsat_dv_128B">;
+
+def int_hexagon_V6_vabsdiffw :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vabsdiffw">;
+
+def int_hexagon_V6_vabsdiffw_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vabsdiffw_128B">;
+
+// V62 HVX Instructions.
+
+def int_hexagon_V6_vandnqrt_acc :
+Hexagon_v16i32_v16i32v512i1i32_Intrinsic<"HEXAGON_V6_vandnqrt_acc">;
+
+def int_hexagon_V6_vandnqrt_acc_128B :
+Hexagon_v32i32_v32i32v1024i1i32_Intrinsic<"HEXAGON_V6_vandnqrt_acc_128B">;
+
+def int_hexagon_V6_vaddclbh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddclbh">;
+
+def int_hexagon_V6_vaddclbh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddclbh_128B">;
+
+def int_hexagon_V6_vmpyowh_64_acc :
+Hexagon_v32i32_v32i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyowh_64_acc">;
+
+def int_hexagon_V6_vmpyowh_64_acc_128B :
+Hexagon_v64i32_v64i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyowh_64_acc_128B">;
+
+def int_hexagon_V6_vmpyewuh_64 :
+Hexagon_v32i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmpyewuh_64">;
+
+def int_hexagon_V6_vmpyewuh_64_128B :
+Hexagon_v64i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmpyewuh_64_128B">;
+
+def int_hexagon_V6_vsatuwuh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vsatuwuh">;
+
+def int_hexagon_V6_vsatuwuh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsatuwuh_128B">;
+
+def int_hexagon_V6_shuffeqh :
+Hexagon_v512i1_v512i1v512i1_Intrinsic<"HEXAGON_V6_shuffeqh">;
+
+def int_hexagon_V6_shuffeqh_128B :
+Hexagon_v1024i1_v1024i1v1024i1_Intrinsic<"HEXAGON_V6_shuffeqh_128B">;
+
+def int_hexagon_V6_shuffeqw :
+Hexagon_v512i1_v512i1v512i1_Intrinsic<"HEXAGON_V6_shuffeqw">;
+
+def int_hexagon_V6_shuffeqw_128B :
+Hexagon_v1024i1_v1024i1v1024i1_Intrinsic<"HEXAGON_V6_shuffeqw_128B">;
+
+def int_hexagon_V6_ldcnpnt0 :
+Hexagon_v16i32_i32i32_Intrinsic<"HEXAGON_V6_ldcnpnt0">;
+
+def int_hexagon_V6_ldcnpnt0_128B :
+Hexagon_v32i32_i32i32_Intrinsic<"HEXAGON_V6_ldcnpnt0_128B">;
+
+def int_hexagon_V6_vsubcarry :
+Hexagon_custom_v16i32v512i1_v16i32v16i32v512i1_Intrinsic;
+
+def int_hexagon_V6_vsubcarry_128B :
+Hexagon_custom_v32i32v1024i1_v32i32v32i32v1024i1_Intrinsic_128B;
+
+def int_hexagon_V6_vasrhbsat :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vasrhbsat">;
+
+def int_hexagon_V6_vasrhbsat_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vasrhbsat_128B">;
+
+def int_hexagon_V6_vminb :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vminb">;
+
+def int_hexagon_V6_vminb_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vminb_128B">;
+
+def int_hexagon_V6_vmpauhb_acc :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vmpauhb_acc">;
+
+def int_hexagon_V6_vmpauhb_acc_128B :
+Hexagon_v64i32_v64i32v64i32i32_Intrinsic<"HEXAGON_V6_vmpauhb_acc_128B">;
+
+def int_hexagon_V6_vaddhw_acc :
+Hexagon_v32i32_v32i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddhw_acc">;
+
+def int_hexagon_V6_vaddhw_acc_128B :
+Hexagon_v64i32_v64i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddhw_acc_128B">;
+
+def int_hexagon_V6_vlsrb :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vlsrb">;
+
+def int_hexagon_V6_vlsrb_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vlsrb_128B">;
+
+def int_hexagon_V6_vlutvwhi :
+Hexagon_v32i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlutvwhi">;
+
+def int_hexagon_V6_vlutvwhi_128B :
+Hexagon_v64i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlutvwhi_128B">;
+
+def int_hexagon_V6_vaddububb_sat :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddububb_sat">;
+
+def int_hexagon_V6_vaddububb_sat_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddububb_sat_128B">;
+
+def int_hexagon_V6_vsubbsat_dv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubbsat_dv">;
+
+def int_hexagon_V6_vsubbsat_dv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vsubbsat_dv_128B">;
+
+def int_hexagon_V6_ldtp0 :
+Hexagon_v16i32_i32i32_Intrinsic<"HEXAGON_V6_ldtp0">;
+
+def int_hexagon_V6_ldtp0_128B :
+Hexagon_v32i32_i32i32_Intrinsic<"HEXAGON_V6_ldtp0_128B">;
+
+def int_hexagon_V6_vlutvvb_oracci :
+Hexagon_v16i32_v16i32v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlutvvb_oracci">;
+
+def int_hexagon_V6_vlutvvb_oracci_128B :
+Hexagon_v32i32_v32i32v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlutvvb_oracci_128B">;
+
+def int_hexagon_V6_vsubuwsat_dv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubuwsat_dv">;
+
+def int_hexagon_V6_vsubuwsat_dv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vsubuwsat_dv_128B">;
+
+def int_hexagon_V6_ldpnt0 :
+Hexagon_v16i32_i32i32_Intrinsic<"HEXAGON_V6_ldpnt0">;
+
+def int_hexagon_V6_ldpnt0_128B :
+Hexagon_v32i32_i32i32_Intrinsic<"HEXAGON_V6_ldpnt0_128B">;
+
+def int_hexagon_V6_vandvnqv :
+Hexagon_v16i32_v512i1v16i32_Intrinsic<"HEXAGON_V6_vandvnqv">;
+
+def int_hexagon_V6_vandvnqv_128B :
+Hexagon_v32i32_v1024i1v32i32_Intrinsic<"HEXAGON_V6_vandvnqv_128B">;
+
+def int_hexagon_V6_lvsplatb :
+Hexagon_v16i32_i32_Intrinsic<"HEXAGON_V6_lvsplatb">;
+
+def int_hexagon_V6_lvsplatb_128B :
+Hexagon_v32i32_i32_Intrinsic<"HEXAGON_V6_lvsplatb_128B">;
+
+def int_hexagon_V6_lvsplath :
+Hexagon_v16i32_i32_Intrinsic<"HEXAGON_V6_lvsplath">;
+
+def int_hexagon_V6_lvsplath_128B :
+Hexagon_v32i32_i32_Intrinsic<"HEXAGON_V6_lvsplath_128B">;
+
+def int_hexagon_V6_ldtpnt0 :
+Hexagon_v16i32_i32i32_Intrinsic<"HEXAGON_V6_ldtpnt0">;
+
+def int_hexagon_V6_ldtpnt0_128B :
+Hexagon_v32i32_i32i32_Intrinsic<"HEXAGON_V6_ldtpnt0_128B">;
+
+def int_hexagon_V6_vlutvwh_nm :
+Hexagon_v32i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlutvwh_nm">;
+
+def int_hexagon_V6_vlutvwh_nm_128B :
+Hexagon_v64i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlutvwh_nm_128B">;
+
+def int_hexagon_V6_ldnpnt0 :
+Hexagon_v16i32_i32i32_Intrinsic<"HEXAGON_V6_ldnpnt0">;
+
+def int_hexagon_V6_ldnpnt0_128B :
+Hexagon_v32i32_i32i32_Intrinsic<"HEXAGON_V6_ldnpnt0_128B">;
+
+def int_hexagon_V6_vmpauhb :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vmpauhb">;
+
+def int_hexagon_V6_vmpauhb_128B :
+Hexagon_v64i32_v64i32i32_Intrinsic<"HEXAGON_V6_vmpauhb_128B">;
+
+def int_hexagon_V6_ldtnp0 :
+Hexagon_v16i32_i32i32_Intrinsic<"HEXAGON_V6_ldtnp0">;
+
+def int_hexagon_V6_ldtnp0_128B :
+Hexagon_v32i32_i32i32_Intrinsic<"HEXAGON_V6_ldtnp0_128B">;
+
+def int_hexagon_V6_vrounduhub :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vrounduhub">;
+
+def int_hexagon_V6_vrounduhub_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vrounduhub_128B">;
+
+def int_hexagon_V6_vadduhw_acc :
+Hexagon_v32i32_v32i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vadduhw_acc">;
+
+def int_hexagon_V6_vadduhw_acc_128B :
+Hexagon_v64i32_v64i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vadduhw_acc_128B">;
+
+def int_hexagon_V6_ldcp0 :
+Hexagon_v16i32_i32i32_Intrinsic<"HEXAGON_V6_ldcp0">;
+
+def int_hexagon_V6_ldcp0_128B :
+Hexagon_v32i32_i32i32_Intrinsic<"HEXAGON_V6_ldcp0_128B">;
+
+def int_hexagon_V6_vadduwsat :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vadduwsat">;
+
+def int_hexagon_V6_vadduwsat_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vadduwsat_128B">;
+
+def int_hexagon_V6_ldtnpnt0 :
+Hexagon_v16i32_i32i32_Intrinsic<"HEXAGON_V6_ldtnpnt0">;
+
+def int_hexagon_V6_ldtnpnt0_128B :
+Hexagon_v32i32_i32i32_Intrinsic<"HEXAGON_V6_ldtnpnt0_128B">;
+
+def int_hexagon_V6_vaddbsat :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddbsat">;
+
+def int_hexagon_V6_vaddbsat_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddbsat_128B">;
+
+def int_hexagon_V6_vandnqrt :
+Hexagon_v16i32_v512i1i32_Intrinsic<"HEXAGON_V6_vandnqrt">;
+
+def int_hexagon_V6_vandnqrt_128B :
+Hexagon_v32i32_v1024i1i32_Intrinsic<"HEXAGON_V6_vandnqrt_128B">;
+
+def int_hexagon_V6_vmpyiwub_acc :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vmpyiwub_acc">;
+
+def int_hexagon_V6_vmpyiwub_acc_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vmpyiwub_acc_128B">;
+
+def int_hexagon_V6_vmaxb :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vmaxb">;
+
+def int_hexagon_V6_vmaxb_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vmaxb_128B">;
+
+def int_hexagon_V6_vandvqv :
+Hexagon_v16i32_v512i1v16i32_Intrinsic<"HEXAGON_V6_vandvqv">;
+
+def int_hexagon_V6_vandvqv_128B :
+Hexagon_v32i32_v1024i1v32i32_Intrinsic<"HEXAGON_V6_vandvqv_128B">;
+
+def int_hexagon_V6_vaddcarry :
+Hexagon_custom_v16i32v512i1_v16i32v16i32v512i1_Intrinsic;
+
+def int_hexagon_V6_vaddcarry_128B :
+Hexagon_custom_v32i32v1024i1_v32i32v32i32v1024i1_Intrinsic_128B;
+
+def int_hexagon_V6_vasrwuhrndsat :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vasrwuhrndsat">;
+
+def int_hexagon_V6_vasrwuhrndsat_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vasrwuhrndsat_128B">;
+
+def int_hexagon_V6_vlutvvbi :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlutvvbi">;
+
+def int_hexagon_V6_vlutvvbi_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlutvvbi_128B">;
+
+def int_hexagon_V6_vsubuwsat :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vsubuwsat">;
+
+def int_hexagon_V6_vsubuwsat_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubuwsat_128B">;
+
+def int_hexagon_V6_vaddbsat_dv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddbsat_dv">;
+
+def int_hexagon_V6_vaddbsat_dv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vaddbsat_dv_128B">;
+
+def int_hexagon_V6_ldnp0 :
+Hexagon_v16i32_i32i32_Intrinsic<"HEXAGON_V6_ldnp0">;
+
+def int_hexagon_V6_ldnp0_128B :
+Hexagon_v32i32_i32i32_Intrinsic<"HEXAGON_V6_ldnp0_128B">;
+
+def int_hexagon_V6_vasruwuhrndsat :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vasruwuhrndsat">;
+
+def int_hexagon_V6_vasruwuhrndsat_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vasruwuhrndsat_128B">;
+
+def int_hexagon_V6_vrounduwuh :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vrounduwuh">;
+
+def int_hexagon_V6_vrounduwuh_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vrounduwuh_128B">;
+
+def int_hexagon_V6_vlutvvb_nm :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlutvvb_nm">;
+
+def int_hexagon_V6_vlutvvb_nm_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlutvvb_nm_128B">;
+
+def int_hexagon_V6_pred_scalar2v2 :
+Hexagon_v512i1_i32_Intrinsic<"HEXAGON_V6_pred_scalar2v2">;
+
+def int_hexagon_V6_pred_scalar2v2_128B :
+Hexagon_v1024i1_i32_Intrinsic<"HEXAGON_V6_pred_scalar2v2_128B">;
+
+def int_hexagon_V6_ldp0 :
+Hexagon_v16i32_i32i32_Intrinsic<"HEXAGON_V6_ldp0">;
+
+def int_hexagon_V6_ldp0_128B :
+Hexagon_v32i32_i32i32_Intrinsic<"HEXAGON_V6_ldp0_128B">;
+
+def int_hexagon_V6_vaddubh_acc :
+Hexagon_v32i32_v32i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddubh_acc">;
+
+def int_hexagon_V6_vaddubh_acc_128B :
+Hexagon_v64i32_v64i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddubh_acc_128B">;
+
+def int_hexagon_V6_vaddclbw :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vaddclbw">;
+
+def int_hexagon_V6_vaddclbw_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddclbw_128B">;
+
+def int_hexagon_V6_ldcpnt0 :
+Hexagon_v16i32_i32i32_Intrinsic<"HEXAGON_V6_ldcpnt0">;
+
+def int_hexagon_V6_ldcpnt0_128B :
+Hexagon_v32i32_i32i32_Intrinsic<"HEXAGON_V6_ldcpnt0_128B">;
+
+def int_hexagon_V6_vadduwsat_dv :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vadduwsat_dv">;
+
+def int_hexagon_V6_vadduwsat_dv_128B :
+Hexagon_v64i32_v64i32v64i32_Intrinsic<"HEXAGON_V6_vadduwsat_dv_128B">;
+
+def int_hexagon_V6_vmpyiwub :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vmpyiwub">;
+
+def int_hexagon_V6_vmpyiwub_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vmpyiwub_128B">;
+
+def int_hexagon_V6_vsubububb_sat :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vsubububb_sat">;
+
+def int_hexagon_V6_vsubububb_sat_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubububb_sat_128B">;
+
+def int_hexagon_V6_ldcnp0 :
+Hexagon_v16i32_i32i32_Intrinsic<"HEXAGON_V6_ldcnp0">;
+
+def int_hexagon_V6_ldcnp0_128B :
+Hexagon_v32i32_i32i32_Intrinsic<"HEXAGON_V6_ldcnp0_128B">;
+
+def int_hexagon_V6_vlutvwh_oracci :
+Hexagon_v32i32_v32i32v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlutvwh_oracci">;
+
+def int_hexagon_V6_vlutvwh_oracci_128B :
+Hexagon_v64i32_v64i32v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlutvwh_oracci_128B">;
+
+def int_hexagon_V6_vsubbsat :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vsubbsat">;
+
+def int_hexagon_V6_vsubbsat_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsubbsat_128B">;
+
+// V65 HVX Instructions.
+
+def int_hexagon_V6_vasruhubrndsat :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vasruhubrndsat">;
+
+def int_hexagon_V6_vasruhubrndsat_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vasruhubrndsat_128B">;
+
+def int_hexagon_V6_vrmpybub_rtt :
+Hexagon_v32i32_v16i32i64_Intrinsic<"HEXAGON_V6_vrmpybub_rtt">;
+
+def int_hexagon_V6_vrmpybub_rtt_128B :
+Hexagon_v64i32_v32i32i64_Intrinsic<"HEXAGON_V6_vrmpybub_rtt_128B">;
+
+def int_hexagon_V6_vmpahhsat :
+Hexagon_v16i32_v16i32v16i32i64_Intrinsic<"HEXAGON_V6_vmpahhsat">;
+
+def int_hexagon_V6_vmpahhsat_128B :
+Hexagon_v32i32_v32i32v32i32i64_Intrinsic<"HEXAGON_V6_vmpahhsat_128B">;
+
+def int_hexagon_V6_vavguwrnd :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vavguwrnd">;
+
+def int_hexagon_V6_vavguwrnd_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vavguwrnd_128B">;
+
+def int_hexagon_V6_vnavgb :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vnavgb">;
+
+def int_hexagon_V6_vnavgb_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vnavgb_128B">;
+
+def int_hexagon_V6_vasrh_acc :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vasrh_acc">;
+
+def int_hexagon_V6_vasrh_acc_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vasrh_acc_128B">;
+
+def int_hexagon_V6_vmpauhuhsat :
+Hexagon_v16i32_v16i32v16i32i64_Intrinsic<"HEXAGON_V6_vmpauhuhsat">;
+
+def int_hexagon_V6_vmpauhuhsat_128B :
+Hexagon_v32i32_v32i32v32i32i64_Intrinsic<"HEXAGON_V6_vmpauhuhsat_128B">;
+
+def int_hexagon_V6_vmpyh_acc :
+Hexagon_v32i32_v32i32v16i32i32_Intrinsic<"HEXAGON_V6_vmpyh_acc">;
+
+def int_hexagon_V6_vmpyh_acc_128B :
+Hexagon_v64i32_v64i32v32i32i32_Intrinsic<"HEXAGON_V6_vmpyh_acc_128B">;
+
+def int_hexagon_V6_vrmpybub_rtt_acc :
+Hexagon_v32i32_v32i32v16i32i64_Intrinsic<"HEXAGON_V6_vrmpybub_rtt_acc">;
+
+def int_hexagon_V6_vrmpybub_rtt_acc_128B :
+Hexagon_v64i32_v64i32v32i32i64_Intrinsic<"HEXAGON_V6_vrmpybub_rtt_acc_128B">;
+
+def int_hexagon_V6_vavgb :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vavgb">;
+
+def int_hexagon_V6_vavgb_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vavgb_128B">;
+
+def int_hexagon_V6_vaslh_acc :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vaslh_acc">;
+
+def int_hexagon_V6_vaslh_acc_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vaslh_acc_128B">;
+
+def int_hexagon_V6_vavguw :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vavguw">;
+
+def int_hexagon_V6_vavguw_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vavguw_128B">;
+
+def int_hexagon_V6_vlut4 :
+Hexagon_v16i32_v16i32i64_Intrinsic<"HEXAGON_V6_vlut4">;
+
+def int_hexagon_V6_vlut4_128B :
+Hexagon_v32i32_v32i32i64_Intrinsic<"HEXAGON_V6_vlut4_128B">;
+
+def int_hexagon_V6_vmpyuhe_acc :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vmpyuhe_acc">;
+
+def int_hexagon_V6_vmpyuhe_acc_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vmpyuhe_acc_128B">;
+
+def int_hexagon_V6_vrmpyub_rtt :
+Hexagon_v32i32_v16i32i64_Intrinsic<"HEXAGON_V6_vrmpyub_rtt">;
+
+def int_hexagon_V6_vrmpyub_rtt_128B :
+Hexagon_v64i32_v32i32i64_Intrinsic<"HEXAGON_V6_vrmpyub_rtt_128B">;
+
+def int_hexagon_V6_vmpsuhuhsat :
+Hexagon_v16i32_v16i32v16i32i64_Intrinsic<"HEXAGON_V6_vmpsuhuhsat">;
+
+def int_hexagon_V6_vmpsuhuhsat_128B :
+Hexagon_v32i32_v32i32v32i32i64_Intrinsic<"HEXAGON_V6_vmpsuhuhsat_128B">;
+
+def int_hexagon_V6_vasruhubsat :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vasruhubsat">;
+
+def int_hexagon_V6_vasruhubsat_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vasruhubsat_128B">;
+
+def int_hexagon_V6_vmpyuhe :
+Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vmpyuhe">;
+
+def int_hexagon_V6_vmpyuhe_128B :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vmpyuhe_128B">;
+
+def int_hexagon_V6_vrmpyub_rtt_acc :
+Hexagon_v32i32_v32i32v16i32i64_Intrinsic<"HEXAGON_V6_vrmpyub_rtt_acc">;
+
+def int_hexagon_V6_vrmpyub_rtt_acc_128B :
+Hexagon_v64i32_v64i32v32i32i64_Intrinsic<"HEXAGON_V6_vrmpyub_rtt_acc_128B">;
+
+def int_hexagon_V6_vasruwuhsat :
+Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vasruwuhsat">;
+
+def int_hexagon_V6_vasruwuhsat_128B :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vasruwuhsat_128B">;
+
+def int_hexagon_V6_vmpabuu_acc :
+Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vmpabuu_acc">;
+
+def int_hexagon_V6_vmpabuu_acc_128B :
+Hexagon_v64i32_v64i32v64i32i32_Intrinsic<"HEXAGON_V6_vmpabuu_acc_128B">;
+
+def int_hexagon_V6_vprefixqw :
+Hexagon_v16i32_v512i1_Intrinsic<"HEXAGON_V6_vprefixqw">;
+
+def int_hexagon_V6_vprefixqw_128B :
+Hexagon_v32i32_v1024i1_Intrinsic<"HEXAGON_V6_vprefixqw_128B">;
+
+def int_hexagon_V6_vprefixqh :
+Hexagon_v16i32_v512i1_Intrinsic<"HEXAGON_V6_vprefixqh">;
+
+def int_hexagon_V6_vprefixqh_128B :
+Hexagon_v32i32_v1024i1_Intrinsic<"HEXAGON_V6_vprefixqh_128B">;
+
+def int_hexagon_V6_vprefixqb :
+Hexagon_v16i32_v512i1_Intrinsic<"HEXAGON_V6_vprefixqb">;
+
+def int_hexagon_V6_vprefixqb_128B :
+Hexagon_v32i32_v1024i1_Intrinsic<"HEXAGON_V6_vprefixqb_128B">;
+
+def int_hexagon_V6_vabsb :
+Hexagon_v16i32_v16i32_Intrinsic<"HEXAGON_V6_vabsb">;
+
+def int_hexagon_V6_vabsb_128B :
+Hexagon_v32i32_v32i32_Intrinsic<"HEXAGON_V6_vabsb_128B">;
+
+def int_hexagon_V6_vavgbrnd :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vavgbrnd">;
+
+def int_hexagon_V6_vavgbrnd_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vavgbrnd_128B">;
+
+def int_hexagon_V6_vdd0 :
+Hexagon_v32i32__Intrinsic<"HEXAGON_V6_vdd0">;
+
def int_hexagon_V6_vdd0_128B :
-Hexagon_V65_v2048_Intrinsic<"HEXAGON_V6_vdd0_128B">;
+Hexagon_v64i32__Intrinsic<"HEXAGON_V6_vdd0_128B">;
+
+def int_hexagon_V6_vmpabuu :
+Hexagon_v32i32_v32i32i32_Intrinsic<"HEXAGON_V6_vmpabuu">;
+
+def int_hexagon_V6_vmpabuu_128B :
+Hexagon_v64i32_v64i32i32_Intrinsic<"HEXAGON_V6_vmpabuu_128B">;
+
+def int_hexagon_V6_vabsb_sat :
+Hexagon_v16i32_v16i32_Intrinsic<"HEXAGON_V6_vabsb_sat">;
+
+def int_hexagon_V6_vabsb_sat_128B :
+Hexagon_v32i32_v32i32_Intrinsic<"HEXAGON_V6_vabsb_sat_128B">;
+
+// V66 HVX Instructions.
+
+def int_hexagon_V6_vaddcarrysat :
+Hexagon_v16i32_v16i32v16i32v512i1_Intrinsic<"HEXAGON_V6_vaddcarrysat">;
+
+def int_hexagon_V6_vaddcarrysat_128B :
+Hexagon_v32i32_v32i32v32i32v1024i1_Intrinsic<"HEXAGON_V6_vaddcarrysat_128B">;
+
+def int_hexagon_V6_vasr_into :
+Hexagon_v32i32_v32i32v16i32v16i32_Intrinsic<"HEXAGON_V6_vasr_into">;
+
+def int_hexagon_V6_vasr_into_128B :
+Hexagon_v64i32_v64i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vasr_into_128B">;
+
+def int_hexagon_V6_vsatdw :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vsatdw">;
+
+def int_hexagon_V6_vsatdw_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vsatdw_128B">;
+
+def int_hexagon_V6_vrotr :
+Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vrotr">;
+
+def int_hexagon_V6_vrotr_128B :
+Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vrotr_128B">;
+
diff --git a/linux-x64/clang/include/llvm/IR/IntrinsicsMips.td b/linux-x64/clang/include/llvm/IR/IntrinsicsMips.td
index 421a79b..26189dc 100644
--- a/linux-x64/clang/include/llvm/IR/IntrinsicsMips.td
+++ b/linux-x64/clang/include/llvm/IR/IntrinsicsMips.td
@@ -1,9 +1,8 @@
//===- IntrinsicsMips.td - Defines Mips intrinsics ---------*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/IntrinsicsNVVM.td b/linux-x64/clang/include/llvm/IR/IntrinsicsNVVM.td
index 7f694f6..cf072c7 100644
--- a/linux-x64/clang/include/llvm/IR/IntrinsicsNVVM.td
+++ b/linux-x64/clang/include/llvm/IR/IntrinsicsNVVM.td
@@ -1,9 +1,8 @@
//===- IntrinsicsNVVM.td - Defines NVVM intrinsics ---------*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -3674,11 +3673,19 @@
class PTXReadSRegIntrinsic_r32<string name>
: Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
GCCBuiltin<"__nvvm_read_ptx_sreg_" # name>;
-
class PTXReadSRegIntrinsic_r64<string name>
: Intrinsic<[llvm_i64_ty], [], [IntrNoMem]>,
GCCBuiltin<"__nvvm_read_ptx_sreg_" # name>;
+// Intrinsics to read registers with non-constant values. E.g. the values that
+// do change over the kernel lifetime. Such reads should not be CSE'd.
+class PTXReadNCSRegIntrinsic_r32<string name>
+ : Intrinsic<[llvm_i32_ty], [], [IntrInaccessibleMemOnly]>,
+ GCCBuiltin<"__nvvm_read_ptx_sreg_" # name>;
+class PTXReadNCSRegIntrinsic_r64<string name>
+ : Intrinsic<[llvm_i64_ty], [], [IntrInaccessibleMemOnly]>,
+ GCCBuiltin<"__nvvm_read_ptx_sreg_" # name>;
+
defm int_nvvm_read_ptx_sreg_tid : PTXReadSRegIntrinsic_v4i32<"tid">;
defm int_nvvm_read_ptx_sreg_ntid : PTXReadSRegIntrinsic_v4i32<"ntid">;
@@ -3704,13 +3711,13 @@
def int_nvvm_read_ptx_sreg_lanemask_gt :
PTXReadSRegIntrinsic_r32<"lanemask_gt">;
-def int_nvvm_read_ptx_sreg_clock : PTXReadSRegIntrinsic_r32<"clock">;
-def int_nvvm_read_ptx_sreg_clock64 : PTXReadSRegIntrinsic_r64<"clock64">;
+def int_nvvm_read_ptx_sreg_clock : PTXReadNCSRegIntrinsic_r32<"clock">;
+def int_nvvm_read_ptx_sreg_clock64 : PTXReadNCSRegIntrinsic_r64<"clock64">;
-def int_nvvm_read_ptx_sreg_pm0 : PTXReadSRegIntrinsic_r32<"pm0">;
-def int_nvvm_read_ptx_sreg_pm1 : PTXReadSRegIntrinsic_r32<"pm1">;
-def int_nvvm_read_ptx_sreg_pm2 : PTXReadSRegIntrinsic_r32<"pm2">;
-def int_nvvm_read_ptx_sreg_pm3 : PTXReadSRegIntrinsic_r32<"pm3">;
+def int_nvvm_read_ptx_sreg_pm0 : PTXReadNCSRegIntrinsic_r32<"pm0">;
+def int_nvvm_read_ptx_sreg_pm1 : PTXReadNCSRegIntrinsic_r32<"pm1">;
+def int_nvvm_read_ptx_sreg_pm2 : PTXReadNCSRegIntrinsic_r32<"pm2">;
+def int_nvvm_read_ptx_sreg_pm3 : PTXReadNCSRegIntrinsic_r32<"pm3">;
def int_nvvm_read_ptx_sreg_warpsize : PTXReadSRegIntrinsic_r32<"warpsize">;
diff --git a/linux-x64/clang/include/llvm/IR/IntrinsicsPowerPC.td b/linux-x64/clang/include/llvm/IR/IntrinsicsPowerPC.td
index 62b2e8f..e6b0884 100644
--- a/linux-x64/clang/include/llvm/IR/IntrinsicsPowerPC.td
+++ b/linux-x64/clang/include/llvm/IR/IntrinsicsPowerPC.td
@@ -1,9 +1,8 @@
//===- IntrinsicsPowerPC.td - Defines PowerPC intrinsics ---*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/IntrinsicsRISCV.td b/linux-x64/clang/include/llvm/IR/IntrinsicsRISCV.td
index b656622..5b13fc4 100644
--- a/linux-x64/clang/include/llvm/IR/IntrinsicsRISCV.td
+++ b/linux-x64/clang/include/llvm/IR/IntrinsicsRISCV.td
@@ -1,9 +1,8 @@
//===- IntrinsicsRISCV.td - Defines RISCV intrinsics -------*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -36,4 +35,34 @@
def int_riscv_masked_atomicrmw_umax_i32 : MaskedAtomicRMW32Intrinsic;
def int_riscv_masked_atomicrmw_umin_i32 : MaskedAtomicRMW32Intrinsic;
+def int_riscv_masked_cmpxchg_i32
+ : Intrinsic<[llvm_i32_ty], [llvm_anyptr_ty, llvm_i32_ty, llvm_i32_ty,
+ llvm_i32_ty, llvm_i32_ty],
+ [IntrArgMemOnly, NoCapture<0>]>;
+
+class MaskedAtomicRMW64Intrinsic
+ : Intrinsic<[llvm_i64_ty],
+ [llvm_anyptr_ty, llvm_i64_ty, llvm_i64_ty, llvm_i64_ty],
+ [IntrArgMemOnly, NoCapture<0>]>;
+
+class MaskedAtomicRMW64WithSextIntrinsic
+ : Intrinsic<[llvm_i64_ty],
+ [llvm_anyptr_ty, llvm_i64_ty, llvm_i64_ty, llvm_i64_ty,
+ llvm_i64_ty],
+ [IntrArgMemOnly, NoCapture<0>]>;
+
+def int_riscv_masked_atomicrmw_xchg_i64 : MaskedAtomicRMW64Intrinsic;
+def int_riscv_masked_atomicrmw_add_i64 : MaskedAtomicRMW64Intrinsic;
+def int_riscv_masked_atomicrmw_sub_i64 : MaskedAtomicRMW64Intrinsic;
+def int_riscv_masked_atomicrmw_nand_i64 : MaskedAtomicRMW64Intrinsic;
+def int_riscv_masked_atomicrmw_max_i64 : MaskedAtomicRMW64WithSextIntrinsic;
+def int_riscv_masked_atomicrmw_min_i64 : MaskedAtomicRMW64WithSextIntrinsic;
+def int_riscv_masked_atomicrmw_umax_i64 : MaskedAtomicRMW64Intrinsic;
+def int_riscv_masked_atomicrmw_umin_i64 : MaskedAtomicRMW64Intrinsic;
+
+def int_riscv_masked_cmpxchg_i64
+ : Intrinsic<[llvm_i64_ty], [llvm_anyptr_ty, llvm_i64_ty, llvm_i64_ty,
+ llvm_i64_ty, llvm_i64_ty],
+ [IntrArgMemOnly, NoCapture<0>]>;
+
} // TargetPrefix = "riscv"
diff --git a/linux-x64/clang/include/llvm/IR/IntrinsicsSystemZ.td b/linux-x64/clang/include/llvm/IR/IntrinsicsSystemZ.td
index caa2ec2..91e66dd 100644
--- a/linux-x64/clang/include/llvm/IR/IntrinsicsSystemZ.td
+++ b/linux-x64/clang/include/llvm/IR/IntrinsicsSystemZ.td
@@ -1,9 +1,8 @@
//===- IntrinsicsSystemZ.td - Defines SystemZ intrinsics ---*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/IntrinsicsWebAssembly.td b/linux-x64/clang/include/llvm/IR/IntrinsicsWebAssembly.td
index 54408d3..bfeb706 100644
--- a/linux-x64/clang/include/llvm/IR/IntrinsicsWebAssembly.td
+++ b/linux-x64/clang/include/llvm/IR/IntrinsicsWebAssembly.td
@@ -1,9 +1,8 @@
//===- IntrinsicsWebAssembly.td - Defines wasm intrinsics --*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -24,17 +23,16 @@
[llvm_i32_ty, LLVMMatchType<0>],
[]>;
-// These are the old names.
-def int_wasm_mem_size : Intrinsic<[llvm_anyint_ty],
- [llvm_i32_ty],
- [IntrReadMem]>;
-def int_wasm_mem_grow : Intrinsic<[llvm_anyint_ty],
- [llvm_i32_ty, LLVMMatchType<0>],
- []>;
+//===----------------------------------------------------------------------===//
+// Saturating float-to-int conversions
+//===----------------------------------------------------------------------===//
-// These are the old old names. They also lack the immediate field.
-def int_wasm_current_memory : Intrinsic<[llvm_anyint_ty], [], [IntrReadMem]>;
-def int_wasm_grow_memory : Intrinsic<[llvm_anyint_ty], [LLVMMatchType<0>], []>;
+def int_wasm_trunc_saturate_signed : Intrinsic<[llvm_anyint_ty],
+ [llvm_anyfloat_ty],
+ [IntrNoMem, IntrSpeculatable]>;
+def int_wasm_trunc_saturate_unsigned : Intrinsic<[llvm_anyint_ty],
+ [llvm_anyfloat_ty],
+ [IntrNoMem, IntrSpeculatable]>;
//===----------------------------------------------------------------------===//
// Exception handling intrinsics
@@ -51,16 +49,16 @@
[IntrHasSideEffects]>;
def int_wasm_get_ehselector : Intrinsic<[llvm_i32_ty], [llvm_token_ty],
[IntrHasSideEffects]>;
-
-// wasm.catch returns the pointer to the exception object caught by wasm 'catch'
-// instruction.
-def int_wasm_catch : Intrinsic<[llvm_ptr_ty], [llvm_i32_ty],
- [IntrHasSideEffects]>;
+// This is the same as llvm.wasm.get.exception except that it does not take a
+// token operand. This is only for instruction selection purpose.
+def int_wasm_extract_exception : Intrinsic<[llvm_ptr_ty], [],
+ [IntrHasSideEffects]>;
// WebAssembly EH must maintain the landingpads in the order assigned to them
// by WasmEHPrepare pass to generate landingpad table in EHStreamer. This is
// used in order to give them the indices in WasmEHPrepare.
-def int_wasm_landingpad_index: Intrinsic<[], [llvm_i32_ty], [IntrNoMem]>;
+def int_wasm_landingpad_index: Intrinsic<[], [llvm_token_ty, llvm_i32_ty],
+ [IntrNoMem]>;
// Returns LSDA address of the current function.
def int_wasm_lsda : Intrinsic<[llvm_ptr_ty], [], [IntrNoMem]>;
@@ -91,14 +89,6 @@
// SIMD intrinsics
//===----------------------------------------------------------------------===//
-def int_wasm_add_saturate_signed :
- Intrinsic<[llvm_anyvector_ty],
- [LLVMMatchType<0>, LLVMMatchType<0>],
- [IntrNoMem, IntrSpeculatable]>;
-def int_wasm_add_saturate_unsigned :
- Intrinsic<[llvm_anyvector_ty],
- [LLVMMatchType<0>, LLVMMatchType<0>],
- [IntrNoMem, IntrSpeculatable]>;
def int_wasm_sub_saturate_signed :
Intrinsic<[llvm_anyvector_ty],
[LLVMMatchType<0>, LLVMMatchType<0>],
@@ -120,4 +110,18 @@
[llvm_anyvector_ty],
[IntrNoMem, IntrSpeculatable]>;
+//===----------------------------------------------------------------------===//
+// Bulk memory intrinsics
+//===----------------------------------------------------------------------===//
+
+def int_wasm_memory_init :
+ Intrinsic<[],
+ [llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty],
+ [IntrWriteMem, IntrInaccessibleMemOrArgMemOnly, WriteOnly<2>,
+ IntrHasSideEffects]>;
+def int_wasm_data_drop :
+ Intrinsic<[],
+ [llvm_i32_ty],
+ [IntrNoDuplicate, IntrHasSideEffects]>;
+
} // TargetPrefix = "wasm"
diff --git a/linux-x64/clang/include/llvm/IR/IntrinsicsX86.td b/linux-x64/clang/include/llvm/IR/IntrinsicsX86.td
index 53a1e21..a8c8cba 100644
--- a/linux-x64/clang/include/llvm/IR/IntrinsicsX86.td
+++ b/linux-x64/clang/include/llvm/IR/IntrinsicsX86.td
@@ -1,9 +1,8 @@
//===- IntrinsicsX86.td - Defines X86 intrinsics -----------*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -27,12 +26,6 @@
// Marks the EH guard slot node created in LLVM IR prior to code generation.
def int_x86_seh_ehguard : Intrinsic<[], [llvm_ptr_ty], []>;
-
- // Given a pointer to the end of an EH registration object, returns the true
- // parent frame address that can be used with llvm.localrecover.
- def int_x86_seh_recoverfp : Intrinsic<[llvm_ptr_ty],
- [llvm_ptr_ty, llvm_ptr_ty],
- [IntrNoMem]>;
}
//===----------------------------------------------------------------------===//
@@ -364,18 +357,6 @@
// Integer arithmetic ops.
let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
- def int_x86_sse2_padds_b : GCCBuiltin<"__builtin_ia32_paddsb128">,
- Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty,
- llvm_v16i8_ty], [IntrNoMem, Commutative]>;
- def int_x86_sse2_padds_w : GCCBuiltin<"__builtin_ia32_paddsw128">,
- Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty,
- llvm_v8i16_ty], [IntrNoMem, Commutative]>;
- def int_x86_sse2_psubs_b : GCCBuiltin<"__builtin_ia32_psubsb128">,
- Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty,
- llvm_v16i8_ty], [IntrNoMem]>;
- def int_x86_sse2_psubs_w : GCCBuiltin<"__builtin_ia32_psubsw128">,
- Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty,
- llvm_v8i16_ty], [IntrNoMem]>;
def int_x86_sse2_pmulhu_w : GCCBuiltin<"__builtin_ia32_pmulhuw128">,
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty,
llvm_v8i16_ty], [IntrNoMem, Commutative]>;
@@ -1324,21 +1305,12 @@
// BITALG bits shuffle
let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
- def int_x86_avx512_mask_vpshufbitqmb_128 :
- GCCBuiltin<"__builtin_ia32_vpshufbitqmb128_mask">,
- Intrinsic<[llvm_i16_ty],
- [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i16_ty],
- [IntrNoMem]>;
- def int_x86_avx512_mask_vpshufbitqmb_256 :
- GCCBuiltin<"__builtin_ia32_vpshufbitqmb256_mask">,
- Intrinsic<[llvm_i32_ty],
- [llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty],
- [IntrNoMem]>;
- def int_x86_avx512_mask_vpshufbitqmb_512 :
- GCCBuiltin<"__builtin_ia32_vpshufbitqmb512_mask">,
- Intrinsic<[llvm_i64_ty],
- [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i64_ty],
- [IntrNoMem]>;
+ def int_x86_avx512_vpshufbitqmb_128 :
+ Intrinsic<[llvm_v16i1_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
+ def int_x86_avx512_vpshufbitqmb_256 :
+ Intrinsic<[llvm_v32i1_ty], [llvm_v32i8_ty, llvm_v32i8_ty], [IntrNoMem]>;
+ def int_x86_avx512_vpshufbitqmb_512 :
+ Intrinsic<[llvm_v64i1_ty], [llvm_v64i8_ty, llvm_v64i8_ty], [IntrNoMem]>;
}
//===----------------------------------------------------------------------===//
@@ -1346,18 +1318,6 @@
// Integer arithmetic ops.
let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
- def int_x86_avx2_padds_b : GCCBuiltin<"__builtin_ia32_paddsb256">,
- Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty,
- llvm_v32i8_ty], [IntrNoMem, Commutative]>;
- def int_x86_avx2_padds_w : GCCBuiltin<"__builtin_ia32_paddsw256">,
- Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty,
- llvm_v16i16_ty], [IntrNoMem, Commutative]>;
- def int_x86_avx2_psubs_b : GCCBuiltin<"__builtin_ia32_psubsb256">,
- Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty,
- llvm_v32i8_ty], [IntrNoMem]>;
- def int_x86_avx2_psubs_w : GCCBuiltin<"__builtin_ia32_psubsw256">,
- Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty,
- llvm_v16i16_ty], [IntrNoMem]>;
def int_x86_avx2_pmulhu_w : GCCBuiltin<"__builtin_ia32_pmulhuw256">,
Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty,
llvm_v16i16_ty], [IntrNoMem, Commutative]>;
@@ -1494,18 +1454,15 @@
Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty,
llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_pmultishift_qb_128:
- GCCBuiltin<"__builtin_ia32_vpmultishiftqb128_mask">,
- Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty,
- llvm_v16i8_ty, llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_pmultishift_qb_256:
- GCCBuiltin<"__builtin_ia32_vpmultishiftqb256_mask">,
- Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty,
- llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_pmultishift_qb_512:
- GCCBuiltin<"__builtin_ia32_vpmultishiftqb512_mask">,
- Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty,
- llvm_v64i8_ty, llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>;
+ def int_x86_avx512_pmultishift_qb_128:
+ GCCBuiltin<"__builtin_ia32_vpmultishiftqb128">,
+ Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
+ def int_x86_avx512_pmultishift_qb_256:
+ GCCBuiltin<"__builtin_ia32_vpmultishiftqb256">,
+ Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty], [IntrNoMem]>;
+ def int_x86_avx512_pmultishift_qb_512:
+ GCCBuiltin<"__builtin_ia32_vpmultishiftqb512">,
+ Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty], [IntrNoMem]>;
}
// Pack ops.
@@ -1715,83 +1672,6 @@
def int_x86_avx512_psrav_w_512 : GCCBuiltin<"__builtin_ia32_psrav32hi">,
Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty],
[IntrNoMem]>;
-
- def int_x86_avx512_prorv_d_128 : GCCBuiltin<"__builtin_ia32_prorvd128">,
- Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty,
- llvm_v4i32_ty], [IntrNoMem]>;
- def int_x86_avx512_prorv_d_256 : GCCBuiltin<"__builtin_ia32_prorvd256">,
- Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty,
- llvm_v8i32_ty], [IntrNoMem]>;
- def int_x86_avx512_prorv_d_512 : GCCBuiltin<"__builtin_ia32_prorvd512">,
- Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty,
- llvm_v16i32_ty], [IntrNoMem]>;
- def int_x86_avx512_prorv_q_128 : GCCBuiltin<"__builtin_ia32_prorvq128">,
- Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty,
- llvm_v2i64_ty], [IntrNoMem]>;
- def int_x86_avx512_prorv_q_256 : GCCBuiltin<"__builtin_ia32_prorvq256">,
- Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty,
- llvm_v4i64_ty], [IntrNoMem]>;
- def int_x86_avx512_prorv_q_512 : GCCBuiltin<"__builtin_ia32_prorvq512">,
- Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty,
- llvm_v8i64_ty], [IntrNoMem]>;
-
- def int_x86_avx512_prol_d_128 : GCCBuiltin<"__builtin_ia32_prold128">,
- Intrinsic<[llvm_v4i32_ty] , [llvm_v4i32_ty,
- llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_prol_d_256 : GCCBuiltin<"__builtin_ia32_prold256">,
- Intrinsic<[llvm_v8i32_ty] , [llvm_v8i32_ty,
- llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_prol_d_512 : GCCBuiltin<"__builtin_ia32_prold512">,
- Intrinsic<[llvm_v16i32_ty] , [llvm_v16i32_ty,
- llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_prol_q_128 : GCCBuiltin<"__builtin_ia32_prolq128">,
- Intrinsic<[llvm_v2i64_ty] , [llvm_v2i64_ty,
- llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_prol_q_256 : GCCBuiltin<"__builtin_ia32_prolq256">,
- Intrinsic<[llvm_v4i64_ty] , [llvm_v4i64_ty,
- llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_prol_q_512 : GCCBuiltin<"__builtin_ia32_prolq512">,
- Intrinsic<[llvm_v8i64_ty] , [llvm_v8i64_ty,
- llvm_i32_ty], [IntrNoMem]>;
-
-
- def int_x86_avx512_prolv_d_128 : GCCBuiltin<"__builtin_ia32_prolvd128">,
- Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty,
- llvm_v4i32_ty], [IntrNoMem]>;
- def int_x86_avx512_prolv_d_256 : GCCBuiltin<"__builtin_ia32_prolvd256">,
- Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty,
- llvm_v8i32_ty], [IntrNoMem]>;
- def int_x86_avx512_prolv_d_512 : GCCBuiltin<"__builtin_ia32_prolvd512">,
- Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty,
- llvm_v16i32_ty], [IntrNoMem]>;
- def int_x86_avx512_prolv_q_128 : GCCBuiltin<"__builtin_ia32_prolvq128">,
- Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty,
- llvm_v2i64_ty], [IntrNoMem]>;
- def int_x86_avx512_prolv_q_256 : GCCBuiltin<"__builtin_ia32_prolvq256">,
- Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty,
- llvm_v4i64_ty], [IntrNoMem]>;
- def int_x86_avx512_prolv_q_512 : GCCBuiltin<"__builtin_ia32_prolvq512">,
- Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty,
- llvm_v8i64_ty], [IntrNoMem]>;
- def int_x86_avx512_pror_d_128 : GCCBuiltin<"__builtin_ia32_prord128">,
- Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty,
- llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_pror_d_256 : GCCBuiltin<"__builtin_ia32_prord256">,
- Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty,
- llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_pror_d_512 : GCCBuiltin<"__builtin_ia32_prord512">,
- Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty,
- llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_pror_q_128 : GCCBuiltin<"__builtin_ia32_prorq128">,
- Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty,
- llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_pror_q_256 : GCCBuiltin<"__builtin_ia32_prorq256">,
- Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty,
- llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_pror_q_512 : GCCBuiltin<"__builtin_ia32_prorq512">,
- Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty,
- llvm_i32_ty], [IntrNoMem]>;
-
}
// Gather ops
@@ -2028,31 +1908,6 @@
def int_x86_xop_vfrcz_ps_256 : GCCBuiltin<"__builtin_ia32_vfrczps256">,
Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty], [IntrNoMem]>;
- def int_x86_xop_vpcomb : GCCBuiltin<"__builtin_ia32_vpcomb">,
- Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_xop_vpcomw : GCCBuiltin<"__builtin_ia32_vpcomw">,
- Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_xop_vpcomd : GCCBuiltin<"__builtin_ia32_vpcomd">,
- Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_xop_vpcomq : GCCBuiltin<"__builtin_ia32_vpcomq">,
- Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_xop_vpcomub : GCCBuiltin<"__builtin_ia32_vpcomub">,
- Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_xop_vpcomuw : GCCBuiltin<"__builtin_ia32_vpcomuw">,
- Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_xop_vpcomud : GCCBuiltin<"__builtin_ia32_vpcomud">,
- Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_xop_vpcomuq : GCCBuiltin<"__builtin_ia32_vpcomuq">,
- Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty,
- llvm_i8_ty], [IntrNoMem]>;
-
def int_x86_xop_vphaddbd :
GCCBuiltin<"__builtin_ia32_vphaddbd">,
Intrinsic<[llvm_v4i32_ty], [llvm_v16i8_ty], [IntrNoMem]>;
@@ -2163,32 +2018,6 @@
Intrinsic<[llvm_v16i8_ty],
[llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
[IntrNoMem]>;
-
- def int_x86_xop_vprotb : GCCBuiltin<"__builtin_ia32_vprotb">,
- Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
- [IntrNoMem]>;
- def int_x86_xop_vprotd : GCCBuiltin<"__builtin_ia32_vprotd">,
- Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
- [IntrNoMem]>;
- def int_x86_xop_vprotq : GCCBuiltin<"__builtin_ia32_vprotq">,
- Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
- [IntrNoMem]>;
- def int_x86_xop_vprotw : GCCBuiltin<"__builtin_ia32_vprotw">,
- Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
- [IntrNoMem]>;
- def int_x86_xop_vprotbi : GCCBuiltin<"__builtin_ia32_vprotbi">,
- Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i8_ty],
- [IntrNoMem]>;
- def int_x86_xop_vprotdi : GCCBuiltin<"__builtin_ia32_vprotdi">,
- Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i8_ty],
- [IntrNoMem]>;
- def int_x86_xop_vprotqi : GCCBuiltin<"__builtin_ia32_vprotqi">,
- Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i8_ty],
- [IntrNoMem]>;
- def int_x86_xop_vprotwi : GCCBuiltin<"__builtin_ia32_vprotwi">,
- Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i8_ty],
- [IntrNoMem]>;
-
def int_x86_xop_vpshab :
GCCBuiltin<"__builtin_ia32_vpshab">,
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
@@ -2726,22 +2555,16 @@
// ADX
let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
- def int_x86_addcarryx_u32:
+ def int_x86_addcarry_32:
Intrinsic<[llvm_i8_ty, llvm_i32_ty],
[llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>;
- def int_x86_addcarryx_u64:
+ def int_x86_addcarry_64:
Intrinsic<[llvm_i8_ty, llvm_i64_ty],
[llvm_i8_ty, llvm_i64_ty, llvm_i64_ty], [IntrNoMem]>;
- def int_x86_addcarry_u32:
+ def int_x86_subborrow_32:
Intrinsic<[llvm_i8_ty, llvm_i32_ty],
[llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>;
- def int_x86_addcarry_u64:
- Intrinsic<[llvm_i8_ty, llvm_i64_ty],
- [llvm_i8_ty, llvm_i64_ty, llvm_i64_ty], [IntrNoMem]>;
- def int_x86_subborrow_u32:
- Intrinsic<[llvm_i8_ty, llvm_i32_ty],
- [llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>;
- def int_x86_subborrow_u64:
+ def int_x86_subborrow_64:
Intrinsic<[llvm_i8_ty, llvm_i64_ty],
[llvm_i8_ty, llvm_i64_ty, llvm_i64_ty], [IntrNoMem]>;
}
@@ -2865,10 +2688,12 @@
// Vector convert
let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
- def int_x86_avx512_mask_cvtdq2ps_512 :
- GCCBuiltin<"__builtin_ia32_cvtdq2ps512_mask">,
- Intrinsic<[llvm_v16f32_ty],
- [llvm_v16i32_ty, llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty],
+ def int_x86_avx512_sitofp_round :
+ Intrinsic<[llvm_anyfloat_ty], [llvm_anyint_ty, llvm_i32_ty],
+ [IntrNoMem]>;
+
+ def int_x86_avx512_uitofp_round :
+ Intrinsic<[llvm_anyfloat_ty], [llvm_anyint_ty, llvm_i32_ty],
[IntrNoMem]>;
def int_x86_avx512_mask_cvtpd2dq_128 :
@@ -3039,30 +2864,12 @@
[llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrNoMem]>;
- def int_x86_avx512_mask_cvtqq2pd_512 :
- GCCBuiltin<"__builtin_ia32_cvtqq2pd512_mask">,
- Intrinsic<[llvm_v8f64_ty],
- [llvm_v8i64_ty, llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty],
- [IntrNoMem]>;
-
def int_x86_avx512_mask_cvtqq2ps_128 :
GCCBuiltin<"__builtin_ia32_cvtqq2ps128_mask">,
Intrinsic<[llvm_v4f32_ty],
[llvm_v2i64_ty, llvm_v4f32_ty, llvm_i8_ty],
[IntrNoMem]>;
- def int_x86_avx512_mask_cvtqq2ps_256 :
- GCCBuiltin<"__builtin_ia32_cvtqq2ps256_mask">,
- Intrinsic<[llvm_v4f32_ty],
- [llvm_v4i64_ty, llvm_v4f32_ty, llvm_i8_ty],
- [IntrNoMem]>;
-
- def int_x86_avx512_mask_cvtqq2ps_512 :
- GCCBuiltin<"__builtin_ia32_cvtqq2ps512_mask">,
- Intrinsic<[llvm_v8f32_ty],
- [llvm_v8i64_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty],
- [IntrNoMem]>;
-
def int_x86_avx512_mask_cvttpd2dq_128 :
GCCBuiltin<"__builtin_ia32_cvttpd2dq128_mask">,
Intrinsic<[llvm_v4i32_ty],
@@ -3189,36 +2996,12 @@
[llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrNoMem]>;
- def int_x86_avx512_mask_cvtudq2ps_512 :
- GCCBuiltin<"__builtin_ia32_cvtudq2ps512_mask">,
- Intrinsic<[llvm_v16f32_ty],
- [llvm_v16i32_ty, llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty],
- [IntrNoMem]>;
-
- def int_x86_avx512_mask_cvtuqq2pd_512 :
- GCCBuiltin<"__builtin_ia32_cvtuqq2pd512_mask">,
- Intrinsic<[llvm_v8f64_ty],
- [llvm_v8i64_ty, llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty],
- [IntrNoMem]>;
-
def int_x86_avx512_mask_cvtuqq2ps_128 :
GCCBuiltin<"__builtin_ia32_cvtuqq2ps128_mask">,
Intrinsic<[llvm_v4f32_ty],
[llvm_v2i64_ty, llvm_v4f32_ty, llvm_i8_ty],
[IntrNoMem]>;
- def int_x86_avx512_mask_cvtuqq2ps_256 :
- GCCBuiltin<"__builtin_ia32_cvtuqq2ps256_mask">,
- Intrinsic<[llvm_v4f32_ty],
- [llvm_v4i64_ty, llvm_v4f32_ty, llvm_i8_ty],
- [IntrNoMem]>;
-
- def int_x86_avx512_mask_cvtuqq2ps_512 :
- GCCBuiltin<"__builtin_ia32_cvtuqq2ps512_mask">,
- Intrinsic<[llvm_v8f32_ty],
- [llvm_v8i64_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty],
- [IntrNoMem]>;
-
def int_x86_avx512_mask_rndscale_pd_128 : GCCBuiltin<"__builtin_ia32_rndscalepd_128_mask">,
Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_i32_ty,
llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>;
@@ -3683,18 +3466,6 @@
}
// Integer arithmetic ops
let TargetPrefix = "x86" in {
- def int_x86_avx512_padds_b_512 : GCCBuiltin<"__builtin_ia32_paddsb512">,
- Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty],
- [IntrNoMem]>;
- def int_x86_avx512_padds_w_512 : GCCBuiltin<"__builtin_ia32_paddsw512">,
- Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty],
- [IntrNoMem]>;
- def int_x86_avx512_psubs_b_512 : GCCBuiltin<"__builtin_ia32_psubsb512">,
- Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty],
- [IntrNoMem]>;
- def int_x86_avx512_psubs_w_512 : GCCBuiltin<"__builtin_ia32_psubsw512">,
- Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty],
- [IntrNoMem]>;
def int_x86_avx512_pmulhu_w_512 : GCCBuiltin<"__builtin_ia32_pmulhuw512">,
Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty,
llvm_v32i16_ty], [IntrNoMem, Commutative]>;
@@ -3726,265 +3497,235 @@
// Gather and Scatter ops
let TargetPrefix = "x86" in {
- def int_x86_avx512_gather_dpd_512 : GCCBuiltin<"__builtin_ia32_gathersiv8df">,
+ // NOTE: These are deprecated in favor of the versions that take a vXi1 mask.
+ def int_x86_avx512_gather_dpd_512 :
Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_ptr_ty,
llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
- def int_x86_avx512_gather_dps_512 : GCCBuiltin<"__builtin_ia32_gathersiv16sf">,
+ def int_x86_avx512_gather_dps_512 :
Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_ptr_ty,
llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
- def int_x86_avx512_gather_qpd_512 : GCCBuiltin<"__builtin_ia32_gatherdiv8df">,
+ def int_x86_avx512_gather_qpd_512 :
Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_ptr_ty,
llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
- def int_x86_avx512_gather_qps_512 : GCCBuiltin<"__builtin_ia32_gatherdiv16sf">,
+ def int_x86_avx512_gather_qps_512 :
Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_ptr_ty,
llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
- def int_x86_avx512_gather_dpq_512 : GCCBuiltin<"__builtin_ia32_gathersiv8di">,
+ def int_x86_avx512_gather_dpq_512 :
Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_ptr_ty,
llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
- def int_x86_avx512_gather_dpi_512 : GCCBuiltin<"__builtin_ia32_gathersiv16si">,
+ def int_x86_avx512_gather_dpi_512 :
Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_ptr_ty,
llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
- def int_x86_avx512_gather_qpq_512 : GCCBuiltin<"__builtin_ia32_gatherdiv8di">,
+ def int_x86_avx512_gather_qpq_512 :
Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_ptr_ty,
llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
- def int_x86_avx512_gather_qpi_512 : GCCBuiltin<"__builtin_ia32_gatherdiv16si">,
+ def int_x86_avx512_gather_qpi_512 :
Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_ptr_ty,
llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
def int_x86_avx512_gather3div2_df :
- GCCBuiltin<"__builtin_ia32_gather3div2df">,
Intrinsic<[llvm_v2f64_ty],
[llvm_v2f64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
def int_x86_avx512_gather3div2_di :
- GCCBuiltin<"__builtin_ia32_gather3div2di">,
Intrinsic<[llvm_v2i64_ty],
[llvm_v2i64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
def int_x86_avx512_gather3div4_df :
- GCCBuiltin<"__builtin_ia32_gather3div4df">,
Intrinsic<[llvm_v4f64_ty],
[llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
def int_x86_avx512_gather3div4_di :
- GCCBuiltin<"__builtin_ia32_gather3div4di">,
Intrinsic<[llvm_v4i64_ty],
[llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
def int_x86_avx512_gather3div4_sf :
- GCCBuiltin<"__builtin_ia32_gather3div4sf">,
Intrinsic<[llvm_v4f32_ty],
[llvm_v4f32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
def int_x86_avx512_gather3div4_si :
- GCCBuiltin<"__builtin_ia32_gather3div4si">,
Intrinsic<[llvm_v4i32_ty],
[llvm_v4i32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
def int_x86_avx512_gather3div8_sf :
- GCCBuiltin<"__builtin_ia32_gather3div8sf">,
Intrinsic<[llvm_v4f32_ty],
[llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
def int_x86_avx512_gather3div8_si :
- GCCBuiltin<"__builtin_ia32_gather3div8si">,
Intrinsic<[llvm_v4i32_ty],
[llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
def int_x86_avx512_gather3siv2_df :
- GCCBuiltin<"__builtin_ia32_gather3siv2df">,
Intrinsic<[llvm_v2f64_ty],
[llvm_v2f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
def int_x86_avx512_gather3siv2_di :
- GCCBuiltin<"__builtin_ia32_gather3siv2di">,
Intrinsic<[llvm_v2i64_ty],
[llvm_v2i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
def int_x86_avx512_gather3siv4_df :
- GCCBuiltin<"__builtin_ia32_gather3siv4df">,
Intrinsic<[llvm_v4f64_ty],
[llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
def int_x86_avx512_gather3siv4_di :
- GCCBuiltin<"__builtin_ia32_gather3siv4di">,
Intrinsic<[llvm_v4i64_ty],
[llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
def int_x86_avx512_gather3siv4_sf :
- GCCBuiltin<"__builtin_ia32_gather3siv4sf">,
Intrinsic<[llvm_v4f32_ty],
[llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
def int_x86_avx512_gather3siv4_si :
- GCCBuiltin<"__builtin_ia32_gather3siv4si">,
Intrinsic<[llvm_v4i32_ty],
[llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
def int_x86_avx512_gather3siv8_sf :
- GCCBuiltin<"__builtin_ia32_gather3siv8sf">,
Intrinsic<[llvm_v8f32_ty],
[llvm_v8f32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
def int_x86_avx512_gather3siv8_si :
- GCCBuiltin<"__builtin_ia32_gather3siv8si">,
Intrinsic<[llvm_v8i32_ty],
[llvm_v8i32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
[IntrReadMem, IntrArgMemOnly]>;
// scatter
- def int_x86_avx512_scatter_dpd_512 : GCCBuiltin<"__builtin_ia32_scattersiv8df">,
+ // NOTE: These are deprecated in favor of the versions that take a vXi1 mask.
+ def int_x86_avx512_scatter_dpd_512 :
Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty,
llvm_v8i32_ty, llvm_v8f64_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
- def int_x86_avx512_scatter_dps_512 : GCCBuiltin<"__builtin_ia32_scattersiv16sf">,
+ def int_x86_avx512_scatter_dps_512 :
Intrinsic<[], [llvm_ptr_ty, llvm_i16_ty,
llvm_v16i32_ty, llvm_v16f32_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
- def int_x86_avx512_scatter_qpd_512 : GCCBuiltin<"__builtin_ia32_scatterdiv8df">,
+ def int_x86_avx512_scatter_qpd_512 :
Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty,
llvm_v8i64_ty, llvm_v8f64_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
- def int_x86_avx512_scatter_qps_512 : GCCBuiltin<"__builtin_ia32_scatterdiv16sf">,
+ def int_x86_avx512_scatter_qps_512 :
Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty,
llvm_v8i64_ty, llvm_v8f32_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
- def int_x86_avx512_scatter_dpq_512 : GCCBuiltin<"__builtin_ia32_scattersiv8di">,
+ def int_x86_avx512_scatter_dpq_512 :
Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty,
llvm_v8i32_ty, llvm_v8i64_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
- def int_x86_avx512_scatter_dpi_512 : GCCBuiltin<"__builtin_ia32_scattersiv16si">,
+ def int_x86_avx512_scatter_dpi_512 :
Intrinsic<[], [llvm_ptr_ty, llvm_i16_ty,
llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
- def int_x86_avx512_scatter_qpq_512 : GCCBuiltin<"__builtin_ia32_scatterdiv8di">,
+ def int_x86_avx512_scatter_qpq_512 :
Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty,llvm_v8i64_ty, llvm_v8i64_ty,
llvm_i32_ty],
[IntrArgMemOnly]>;
- def int_x86_avx512_scatter_qpi_512 : GCCBuiltin<"__builtin_ia32_scatterdiv16si">,
+ def int_x86_avx512_scatter_qpi_512 :
Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty, llvm_v8i64_ty, llvm_v8i32_ty,
llvm_i32_ty],
[IntrArgMemOnly]>;
def int_x86_avx512_scatterdiv2_df :
- GCCBuiltin<"__builtin_ia32_scatterdiv2df">,
Intrinsic<[],
[llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v2f64_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
def int_x86_avx512_scatterdiv2_di :
- GCCBuiltin<"__builtin_ia32_scatterdiv2di">,
Intrinsic<[],
[llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
def int_x86_avx512_scatterdiv4_df :
- GCCBuiltin<"__builtin_ia32_scatterdiv4df">,
Intrinsic<[],
[llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4f64_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
def int_x86_avx512_scatterdiv4_di :
- GCCBuiltin<"__builtin_ia32_scatterdiv4di">,
Intrinsic<[],
[llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
def int_x86_avx512_scatterdiv4_sf :
- GCCBuiltin<"__builtin_ia32_scatterdiv4sf">,
Intrinsic<[],
[llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v4f32_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
def int_x86_avx512_scatterdiv4_si :
- GCCBuiltin<"__builtin_ia32_scatterdiv4si">,
Intrinsic<[],
[llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v4i32_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
def int_x86_avx512_scatterdiv8_sf :
- GCCBuiltin<"__builtin_ia32_scatterdiv8sf">,
Intrinsic<[],
[llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4f32_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
def int_x86_avx512_scatterdiv8_si :
- GCCBuiltin<"__builtin_ia32_scatterdiv8si">,
Intrinsic<[],
[llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4i32_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
def int_x86_avx512_scattersiv2_df :
- GCCBuiltin<"__builtin_ia32_scattersiv2df">,
Intrinsic<[],
[llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v2f64_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
def int_x86_avx512_scattersiv2_di :
- GCCBuiltin<"__builtin_ia32_scattersiv2di">,
Intrinsic<[],
[llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v2i64_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
def int_x86_avx512_scattersiv4_df :
- GCCBuiltin<"__builtin_ia32_scattersiv4df">,
Intrinsic<[],
[llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4f64_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
def int_x86_avx512_scattersiv4_di :
- GCCBuiltin<"__builtin_ia32_scattersiv4di">,
Intrinsic<[],
[llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4i64_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
def int_x86_avx512_scattersiv4_sf :
- GCCBuiltin<"__builtin_ia32_scattersiv4sf">,
Intrinsic<[],
[llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4f32_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
def int_x86_avx512_scattersiv4_si :
- GCCBuiltin<"__builtin_ia32_scattersiv4si">,
Intrinsic<[],
[llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
def int_x86_avx512_scattersiv8_sf :
- GCCBuiltin<"__builtin_ia32_scattersiv8sf">,
Intrinsic<[],
[llvm_ptr_ty, llvm_i8_ty, llvm_v8i32_ty, llvm_v8f32_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
def int_x86_avx512_scattersiv8_si :
- GCCBuiltin<"__builtin_ia32_scattersiv8si">,
Intrinsic<[],
[llvm_ptr_ty, llvm_i8_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty],
[IntrArgMemOnly]>;
@@ -4018,40 +3759,261 @@
llvm_i32_ty, llvm_i32_ty], [IntrArgMemOnly]>;
}
+// AVX512 gather/scatter intrinsics that use vXi1 masks.
+let TargetPrefix = "x86" in {
+ def int_x86_avx512_mask_gather_dpd_512 :
+ Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_ptr_ty,
+ llvm_v8i32_ty, llvm_v8i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+ def int_x86_avx512_mask_gather_dps_512 :
+ Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_ptr_ty,
+ llvm_v16i32_ty, llvm_v16i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+ def int_x86_avx512_mask_gather_qpd_512 :
+ Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_ptr_ty,
+ llvm_v8i64_ty, llvm_v8i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+ def int_x86_avx512_mask_gather_qps_512 :
+ Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_ptr_ty,
+ llvm_v8i64_ty, llvm_v8i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+
+
+ def int_x86_avx512_mask_gather_dpq_512 :
+ Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_ptr_ty,
+ llvm_v8i32_ty, llvm_v8i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+ def int_x86_avx512_mask_gather_dpi_512 :
+ Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_ptr_ty,
+ llvm_v16i32_ty, llvm_v16i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+ def int_x86_avx512_mask_gather_qpq_512 :
+ Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_ptr_ty,
+ llvm_v8i64_ty, llvm_v8i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+ def int_x86_avx512_mask_gather_qpi_512 :
+ Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_ptr_ty,
+ llvm_v8i64_ty, llvm_v8i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_gather3div2_df :
+ Intrinsic<[llvm_v2f64_ty],
+ [llvm_v2f64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_gather3div2_di :
+ Intrinsic<[llvm_v2i64_ty],
+ [llvm_v2i64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_gather3div4_df :
+ Intrinsic<[llvm_v4f64_ty],
+ [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_gather3div4_di :
+ Intrinsic<[llvm_v4i64_ty],
+ [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_gather3div4_sf :
+ Intrinsic<[llvm_v4f32_ty],
+ [llvm_v4f32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_gather3div4_si :
+ Intrinsic<[llvm_v4i32_ty],
+ [llvm_v4i32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_gather3div8_sf :
+ Intrinsic<[llvm_v4f32_ty],
+ [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_gather3div8_si :
+ Intrinsic<[llvm_v4i32_ty],
+ [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_gather3siv2_df :
+ Intrinsic<[llvm_v2f64_ty],
+ [llvm_v2f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v2i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_gather3siv2_di :
+ Intrinsic<[llvm_v2i64_ty],
+ [llvm_v2i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v2i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_gather3siv4_df :
+ Intrinsic<[llvm_v4f64_ty],
+ [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_gather3siv4_di :
+ Intrinsic<[llvm_v4i64_ty],
+ [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_gather3siv4_sf :
+ Intrinsic<[llvm_v4f32_ty],
+ [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_gather3siv4_si :
+ Intrinsic<[llvm_v4i32_ty],
+ [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_gather3siv8_sf :
+ Intrinsic<[llvm_v8f32_ty],
+ [llvm_v8f32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_v8i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_gather3siv8_si :
+ Intrinsic<[llvm_v8i32_ty],
+ [llvm_v8i32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_v8i1_ty, llvm_i32_ty],
+ [IntrReadMem, IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_scatter_dpd_512 :
+ Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty,
+ llvm_v8i32_ty, llvm_v8f64_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+ def int_x86_avx512_mask_scatter_dps_512 :
+ Intrinsic<[], [llvm_ptr_ty, llvm_v16i1_ty,
+ llvm_v16i32_ty, llvm_v16f32_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+ def int_x86_avx512_mask_scatter_qpd_512 :
+ Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty,
+ llvm_v8i64_ty, llvm_v8f64_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+ def int_x86_avx512_mask_scatter_qps_512 :
+ Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty,
+ llvm_v8i64_ty, llvm_v8f32_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+
+
+ def int_x86_avx512_mask_scatter_dpq_512 :
+ Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty,
+ llvm_v8i32_ty, llvm_v8i64_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+ def int_x86_avx512_mask_scatter_dpi_512 :
+ Intrinsic<[], [llvm_ptr_ty, llvm_v16i1_ty,
+ llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+ def int_x86_avx512_mask_scatter_qpq_512 :
+ Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty,llvm_v8i64_ty, llvm_v8i64_ty,
+ llvm_i32_ty],
+ [IntrArgMemOnly]>;
+ def int_x86_avx512_mask_scatter_qpi_512 :
+ Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty, llvm_v8i64_ty, llvm_v8i32_ty,
+ llvm_i32_ty],
+ [IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_scatterdiv2_df :
+ Intrinsic<[],
+ [llvm_ptr_ty, llvm_v2i1_ty, llvm_v2i64_ty, llvm_v2f64_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_scatterdiv2_di :
+ Intrinsic<[],
+ [llvm_ptr_ty, llvm_v2i1_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_scatterdiv4_df :
+ Intrinsic<[],
+ [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i64_ty, llvm_v4f64_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_scatterdiv4_di :
+ Intrinsic<[],
+ [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_scatterdiv4_sf :
+ Intrinsic<[],
+ [llvm_ptr_ty, llvm_v2i1_ty, llvm_v2i64_ty, llvm_v4f32_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_scatterdiv4_si :
+ Intrinsic<[],
+ [llvm_ptr_ty, llvm_v2i1_ty, llvm_v2i64_ty, llvm_v4i32_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_scatterdiv8_sf :
+ Intrinsic<[],
+ [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i64_ty, llvm_v4f32_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_scatterdiv8_si :
+ Intrinsic<[],
+ [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i64_ty, llvm_v4i32_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_scattersiv2_df :
+ Intrinsic<[],
+ [llvm_ptr_ty, llvm_v2i1_ty, llvm_v4i32_ty, llvm_v2f64_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_scattersiv2_di :
+ Intrinsic<[],
+ [llvm_ptr_ty, llvm_v2i1_ty, llvm_v4i32_ty, llvm_v2i64_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_scattersiv4_df :
+ Intrinsic<[],
+ [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i32_ty, llvm_v4f64_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_scattersiv4_di :
+ Intrinsic<[],
+ [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i32_ty, llvm_v4i64_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_scattersiv4_sf :
+ Intrinsic<[],
+ [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i32_ty, llvm_v4f32_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_scattersiv4_si :
+ Intrinsic<[],
+ [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_scattersiv8_sf :
+ Intrinsic<[],
+ [llvm_ptr_ty, llvm_v8i1_ty, llvm_v8i32_ty, llvm_v8f32_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+
+ def int_x86_avx512_mask_scattersiv8_si :
+ Intrinsic<[],
+ [llvm_ptr_ty, llvm_v8i1_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty],
+ [IntrArgMemOnly]>;
+}
+
// AVX-512 conflict detection instruction
// Instructions that count the number of leading zero bits
let TargetPrefix = "x86" in {
- def int_x86_avx512_mask_conflict_d_128 :
- GCCBuiltin<"__builtin_ia32_vpconflictsi_128_mask">,
- Intrinsic<[llvm_v4i32_ty],
- [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty],
- [IntrNoMem]>;
- def int_x86_avx512_mask_conflict_d_256 :
- GCCBuiltin<"__builtin_ia32_vpconflictsi_256_mask">,
- Intrinsic<[llvm_v8i32_ty],
- [llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty],
- [IntrNoMem]>;
- def int_x86_avx512_mask_conflict_d_512 :
- GCCBuiltin<"__builtin_ia32_vpconflictsi_512_mask">,
- Intrinsic<[llvm_v16i32_ty],
- [llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty],
- [IntrNoMem]>;
+ def int_x86_avx512_conflict_d_128 :
+ GCCBuiltin<"__builtin_ia32_vpconflictsi_128">,
+ Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty], [IntrNoMem]>;
+ def int_x86_avx512_conflict_d_256 :
+ GCCBuiltin<"__builtin_ia32_vpconflictsi_256">,
+ Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty], [IntrNoMem]>;
+ def int_x86_avx512_conflict_d_512 :
+ GCCBuiltin<"__builtin_ia32_vpconflictsi_512">,
+ Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_conflict_q_128 :
- GCCBuiltin<"__builtin_ia32_vpconflictdi_128_mask">,
- Intrinsic<[llvm_v2i64_ty],
- [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty],
- [IntrNoMem]>;
- def int_x86_avx512_mask_conflict_q_256 :
- GCCBuiltin<"__builtin_ia32_vpconflictdi_256_mask">,
- Intrinsic<[llvm_v4i64_ty],
- [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty],
- [IntrNoMem]>;
- def int_x86_avx512_mask_conflict_q_512 :
- GCCBuiltin<"__builtin_ia32_vpconflictdi_512_mask">,
- Intrinsic<[llvm_v8i64_ty],
- [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty],
- [IntrNoMem]>;
+ def int_x86_avx512_conflict_q_128 :
+ GCCBuiltin<"__builtin_ia32_vpconflictdi_128">,
+ Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty], [IntrNoMem]>;
+ def int_x86_avx512_conflict_q_256 :
+ GCCBuiltin<"__builtin_ia32_vpconflictdi_256">,
+ Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty], [IntrNoMem]>;
+ def int_x86_avx512_conflict_q_512 :
+ GCCBuiltin<"__builtin_ia32_vpconflictdi_512">,
+ Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty], [IntrNoMem]>;
}
// Compares
@@ -4067,387 +4029,16 @@
// Compress, Expand
let TargetPrefix = "x86" in {
- def int_x86_avx512_mask_compress_ps_512 :
- GCCBuiltin<"__builtin_ia32_compresssf512_mask">,
- Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty,
- llvm_i16_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_compress_pd_512 :
- GCCBuiltin<"__builtin_ia32_compressdf512_mask">,
- Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_compress_ps_256 :
- GCCBuiltin<"__builtin_ia32_compresssf256_mask">,
- Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_compress_pd_256 :
- GCCBuiltin<"__builtin_ia32_compressdf256_mask">,
- Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_compress_ps_128 :
- GCCBuiltin<"__builtin_ia32_compresssf128_mask">,
- Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_compress_pd_128 :
- GCCBuiltin<"__builtin_ia32_compressdf128_mask">,
- Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty,
- llvm_i8_ty], [IntrNoMem]>;
-
- def int_x86_avx512_mask_compress_d_512 :
- GCCBuiltin<"__builtin_ia32_compresssi512_mask">,
- Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty,
- llvm_i16_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_compress_q_512 :
- GCCBuiltin<"__builtin_ia32_compressdi512_mask">,
- Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_compress_d_256 :
- GCCBuiltin<"__builtin_ia32_compresssi256_mask">,
- Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_compress_q_256 :
- GCCBuiltin<"__builtin_ia32_compressdi256_mask">,
- Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_compress_d_128 :
- GCCBuiltin<"__builtin_ia32_compresssi128_mask">,
- Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_compress_q_128 :
- GCCBuiltin<"__builtin_ia32_compressdi128_mask">,
- Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty,
- llvm_i8_ty], [IntrNoMem]>;
-
- def int_x86_avx512_mask_compress_b_512 :
- GCCBuiltin<"__builtin_ia32_compressqi512_mask">,
- Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty,
- llvm_i64_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_compress_w_512 :
- GCCBuiltin<"__builtin_ia32_compresshi512_mask">,
- Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty,
- llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_compress_b_256 :
- GCCBuiltin<"__builtin_ia32_compressqi256_mask">,
- Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty,
- llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_compress_w_256 :
- GCCBuiltin<"__builtin_ia32_compresshi256_mask">,
- Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty,
- llvm_i16_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_compress_b_128 :
- GCCBuiltin<"__builtin_ia32_compressqi128_mask">,
- Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty,
- llvm_i16_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_compress_w_128 :
- GCCBuiltin<"__builtin_ia32_compresshi128_mask">,
- Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty,
- llvm_i8_ty], [IntrNoMem]>;
-
-// expand
- def int_x86_avx512_mask_expand_ps_512 :
- GCCBuiltin<"__builtin_ia32_expandsf512_mask">,
- Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty,
- llvm_i16_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_expand_pd_512 :
- GCCBuiltin<"__builtin_ia32_expanddf512_mask">,
- Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_expand_ps_256 :
- GCCBuiltin<"__builtin_ia32_expandsf256_mask">,
- Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_expand_pd_256 :
- GCCBuiltin<"__builtin_ia32_expanddf256_mask">,
- Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_expand_ps_128 :
- GCCBuiltin<"__builtin_ia32_expandsf128_mask">,
- Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_expand_pd_128 :
- GCCBuiltin<"__builtin_ia32_expanddf128_mask">,
- Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty,
- llvm_i8_ty], [IntrNoMem]>;
-
- def int_x86_avx512_mask_expand_d_512 :
- GCCBuiltin<"__builtin_ia32_expandsi512_mask">,
- Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty,
- llvm_i16_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_expand_q_512 :
- GCCBuiltin<"__builtin_ia32_expanddi512_mask">,
- Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_expand_d_256 :
- GCCBuiltin<"__builtin_ia32_expandsi256_mask">,
- Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_expand_q_256 :
- GCCBuiltin<"__builtin_ia32_expanddi256_mask">,
- Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_expand_d_128 :
- GCCBuiltin<"__builtin_ia32_expandsi128_mask">,
- Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_expand_q_128 :
- GCCBuiltin<"__builtin_ia32_expanddi128_mask">,
- Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty,
- llvm_i8_ty], [IntrNoMem]>;
-
- def int_x86_avx512_mask_expand_b_512 :
- GCCBuiltin<"__builtin_ia32_expandqi512_mask">,
- Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty,
- llvm_i64_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_expand_w_512 :
- GCCBuiltin<"__builtin_ia32_expandhi512_mask">,
- Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty,
- llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_expand_b_256 :
- GCCBuiltin<"__builtin_ia32_expandqi256_mask">,
- Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty,
- llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_expand_w_256 :
- GCCBuiltin<"__builtin_ia32_expandhi256_mask">,
- Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty,
- llvm_i16_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_expand_b_128 :
- GCCBuiltin<"__builtin_ia32_expandqi128_mask">,
- Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty,
- llvm_i16_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_expand_w_128 :
- GCCBuiltin<"__builtin_ia32_expandhi128_mask">,
- Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty,
- llvm_i8_ty], [IntrNoMem]>;
-}
-
-// VBMI2 Concat & Shift
-let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
- def int_x86_avx512_vpshld_q_512 :
- GCCBuiltin<"__builtin_ia32_vpshldq512">,
- Intrinsic<[llvm_v8i64_ty],
- [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_vpshld_q_256 :
- GCCBuiltin<"__builtin_ia32_vpshldq256">,
- Intrinsic<[llvm_v4i64_ty],
- [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_vpshld_q_128 :
- GCCBuiltin<"__builtin_ia32_vpshldq128">,
- Intrinsic<[llvm_v2i64_ty],
- [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
-
- def int_x86_avx512_vpshld_d_512 :
- GCCBuiltin<"__builtin_ia32_vpshldd512">,
- Intrinsic<[llvm_v16i32_ty],
- [llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_vpshld_d_256 :
- GCCBuiltin<"__builtin_ia32_vpshldd256">,
- Intrinsic<[llvm_v8i32_ty],
- [llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_vpshld_d_128 :
- GCCBuiltin<"__builtin_ia32_vpshldd128">,
- Intrinsic<[llvm_v4i32_ty],
- [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
-
- def int_x86_avx512_vpshld_w_512 :
- GCCBuiltin<"__builtin_ia32_vpshldw512">,
- Intrinsic<[llvm_v32i16_ty],
- [llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_vpshld_w_256 :
- GCCBuiltin<"__builtin_ia32_vpshldw256">,
- Intrinsic<[llvm_v16i16_ty],
- [llvm_v16i16_ty, llvm_v16i16_ty, llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_vpshld_w_128 :
- GCCBuiltin<"__builtin_ia32_vpshldw128">,
- Intrinsic<[llvm_v8i16_ty],
- [llvm_v8i16_ty, llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
-
- def int_x86_avx512_vpshrd_q_512 :
- GCCBuiltin<"__builtin_ia32_vpshrdq512">,
- Intrinsic<[llvm_v8i64_ty],
- [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_vpshrd_q_256 :
- GCCBuiltin<"__builtin_ia32_vpshrdq256">,
- Intrinsic<[llvm_v4i64_ty],
- [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_vpshrd_q_128 :
- GCCBuiltin<"__builtin_ia32_vpshrdq128">,
- Intrinsic<[llvm_v2i64_ty],
- [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
-
- def int_x86_avx512_vpshrd_d_512 :
- GCCBuiltin<"__builtin_ia32_vpshrdd512">,
- Intrinsic<[llvm_v16i32_ty],
- [llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_vpshrd_d_256 :
- GCCBuiltin<"__builtin_ia32_vpshrdd256">,
- Intrinsic<[llvm_v8i32_ty],
- [llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_vpshrd_d_128 :
- GCCBuiltin<"__builtin_ia32_vpshrdd128">,
- Intrinsic<[llvm_v4i32_ty],
- [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
-
- def int_x86_avx512_vpshrd_w_512 :
- GCCBuiltin<"__builtin_ia32_vpshrdw512">,
- Intrinsic<[llvm_v32i16_ty],
- [llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_vpshrd_w_256 :
- GCCBuiltin<"__builtin_ia32_vpshrdw256">,
- Intrinsic<[llvm_v16i16_ty],
- [llvm_v16i16_ty, llvm_v16i16_ty, llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_vpshrd_w_128 :
- GCCBuiltin<"__builtin_ia32_vpshrdw128">,
- Intrinsic<[llvm_v8i16_ty],
- [llvm_v8i16_ty, llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
-
- def int_x86_avx512_mask_vpshldv_w_128 :
- GCCBuiltin<"__builtin_ia32_vpshldvw128_mask">,
- Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty,
- llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_maskz_vpshldv_w_128 :
- GCCBuiltin<"__builtin_ia32_vpshldvw128_maskz">,
- Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty,
- llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_vpshldv_w_256 :
- GCCBuiltin<"__builtin_ia32_vpshldvw256_mask">,
- Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty,
- llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>;
- def int_x86_avx512_maskz_vpshldv_w_256 :
- GCCBuiltin<"__builtin_ia32_vpshldvw256_maskz">,
- Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty,
- llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_vpshldv_w_512 :
- GCCBuiltin<"__builtin_ia32_vpshldvw512_mask">,
- Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty,
- llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_maskz_vpshldv_w_512 :
- GCCBuiltin<"__builtin_ia32_vpshldvw512_maskz">,
- Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty,
- llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>;
-
- def int_x86_avx512_mask_vpshldv_q_128 :
- GCCBuiltin<"__builtin_ia32_vpshldvq128_mask">,
- Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty,
- llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_maskz_vpshldv_q_128 :
- GCCBuiltin<"__builtin_ia32_vpshldvq128_maskz">,
- Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty,
- llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_vpshldv_q_256 :
- GCCBuiltin<"__builtin_ia32_vpshldvq256_mask">,
- Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty,
- llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_maskz_vpshldv_q_256 :
- GCCBuiltin<"__builtin_ia32_vpshldvq256_maskz">,
- Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty,
- llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_vpshldv_q_512 :
- GCCBuiltin<"__builtin_ia32_vpshldvq512_mask">,
- Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty,
- llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_maskz_vpshldv_q_512 :
- GCCBuiltin<"__builtin_ia32_vpshldvq512_maskz">,
- Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty,
- llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>;
-
- def int_x86_avx512_mask_vpshldv_d_128 :
- GCCBuiltin<"__builtin_ia32_vpshldvd128_mask">,
- Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty,
- llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_maskz_vpshldv_d_128 :
- GCCBuiltin<"__builtin_ia32_vpshldvd128_maskz">,
- Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty,
- llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_vpshldv_d_256 :
- GCCBuiltin<"__builtin_ia32_vpshldvd256_mask">,
- Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty,
- llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_maskz_vpshldv_d_256 :
- GCCBuiltin<"__builtin_ia32_vpshldvd256_maskz">,
- Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty,
- llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_vpshldv_d_512 :
- GCCBuiltin<"__builtin_ia32_vpshldvd512_mask">,
- Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty,
- llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>;
- def int_x86_avx512_maskz_vpshldv_d_512 :
- GCCBuiltin<"__builtin_ia32_vpshldvd512_maskz">,
- Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty,
- llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>;
-
- def int_x86_avx512_mask_vpshrdv_w_128 :
- GCCBuiltin<"__builtin_ia32_vpshrdvw128_mask">,
- Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty,
- llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_maskz_vpshrdv_w_128 :
- GCCBuiltin<"__builtin_ia32_vpshrdvw128_maskz">,
- Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty,
- llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_vpshrdv_w_256 :
- GCCBuiltin<"__builtin_ia32_vpshrdvw256_mask">,
- Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty,
- llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>;
- def int_x86_avx512_maskz_vpshrdv_w_256 :
- GCCBuiltin<"__builtin_ia32_vpshrdvw256_maskz">,
- Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty,
- llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_vpshrdv_w_512 :
- GCCBuiltin<"__builtin_ia32_vpshrdvw512_mask">,
- Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty,
- llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>;
- def int_x86_avx512_maskz_vpshrdv_w_512 :
- GCCBuiltin<"__builtin_ia32_vpshrdvw512_maskz">,
- Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty,
- llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>;
-
- def int_x86_avx512_mask_vpshrdv_q_128 :
- GCCBuiltin<"__builtin_ia32_vpshrdvq128_mask">,
- Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty,
- llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_maskz_vpshrdv_q_128 :
- GCCBuiltin<"__builtin_ia32_vpshrdvq128_maskz">,
- Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty,
- llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_vpshrdv_q_256 :
- GCCBuiltin<"__builtin_ia32_vpshrdvq256_mask">,
- Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty,
- llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_maskz_vpshrdv_q_256 :
- GCCBuiltin<"__builtin_ia32_vpshrdvq256_maskz">,
- Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty,
- llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_vpshrdv_q_512 :
- GCCBuiltin<"__builtin_ia32_vpshrdvq512_mask">,
- Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty,
- llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_maskz_vpshrdv_q_512 :
- GCCBuiltin<"__builtin_ia32_vpshrdvq512_maskz">,
- Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty,
- llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>;
-
- def int_x86_avx512_mask_vpshrdv_d_128 :
- GCCBuiltin<"__builtin_ia32_vpshrdvd128_mask">,
- Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty,
- llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_maskz_vpshrdv_d_128 :
- GCCBuiltin<"__builtin_ia32_vpshrdvd128_maskz">,
- Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty,
- llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_vpshrdv_d_256 :
- GCCBuiltin<"__builtin_ia32_vpshrdvd256_mask">,
- Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty,
- llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_maskz_vpshrdv_d_256 :
- GCCBuiltin<"__builtin_ia32_vpshrdvd256_maskz">,
- Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty,
- llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx512_mask_vpshrdv_d_512 :
- GCCBuiltin<"__builtin_ia32_vpshrdvd512_mask">,
- Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty,
- llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>;
- def int_x86_avx512_maskz_vpshrdv_d_512 :
- GCCBuiltin<"__builtin_ia32_vpshrdvd512_maskz">,
- Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty,
- llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>;
+ def int_x86_avx512_mask_compress :
+ Intrinsic<[llvm_anyvector_ty],
+ [LLVMMatchType<0>, LLVMMatchType<0>,
+ LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>],
+ [IntrNoMem]>;
+ def int_x86_avx512_mask_expand :
+ Intrinsic<[llvm_anyvector_ty],
+ [LLVMMatchType<0>, LLVMMatchType<0>,
+ LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>],
+ [IntrNoMem]>;
}
// truncate
@@ -4661,10 +4252,6 @@
Intrinsic<[],
[llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty],
[IntrArgMemOnly]>;
- def int_x86_avx512_mask_pmov_qd_256 : // FIXME: Replace with trunc+select.
- Intrinsic<[llvm_v4i32_ty],
- [llvm_v4i64_ty, llvm_v4i32_ty, llvm_i8_ty],
- [IntrNoMem]>;
def int_x86_avx512_mask_pmov_qd_mem_256 :
GCCBuiltin<"__builtin_ia32_pmovqd256mem_mask">,
Intrinsic<[],
@@ -4690,10 +4277,6 @@
Intrinsic<[],
[llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty],
[IntrArgMemOnly]>;
- def int_x86_avx512_mask_pmov_qd_512 : // FIXME: Replace with trunc+select.
- Intrinsic<[llvm_v8i32_ty],
- [llvm_v8i64_ty, llvm_v8i32_ty, llvm_i8_ty],
- [IntrNoMem]>;
def int_x86_avx512_mask_pmov_qd_mem_512 :
GCCBuiltin<"__builtin_ia32_pmovqd512mem_mask">,
Intrinsic<[],
@@ -4927,10 +4510,6 @@
Intrinsic<[],
[llvm_ptr_ty, llvm_v8i16_ty, llvm_i8_ty],
[IntrArgMemOnly]>;
- def int_x86_avx512_mask_pmov_wb_256 : // FIXME: Replace with trunc+select.
- Intrinsic<[llvm_v16i8_ty],
- [llvm_v16i16_ty, llvm_v16i8_ty, llvm_i16_ty],
- [IntrNoMem]>;
def int_x86_avx512_mask_pmov_wb_mem_256 :
GCCBuiltin<"__builtin_ia32_pmovwb256mem_mask">,
Intrinsic<[],
@@ -4956,10 +4535,6 @@
Intrinsic<[],
[llvm_ptr_ty, llvm_v16i16_ty, llvm_i16_ty],
[IntrArgMemOnly]>;
- def int_x86_avx512_mask_pmov_wb_512 : // FIXME: Replace with trunc+select.
- Intrinsic<[llvm_v32i8_ty],
- [llvm_v32i16_ty, llvm_v32i8_ty, llvm_i32_ty],
- [IntrNoMem]>;
def int_x86_avx512_mask_pmov_wb_mem_512 :
GCCBuiltin<"__builtin_ia32_pmovwb512mem_mask">,
Intrinsic<[],
diff --git a/linux-x64/clang/include/llvm/IR/IntrinsicsXCore.td b/linux-x64/clang/include/llvm/IR/IntrinsicsXCore.td
index b614e1e..7fe8bdf 100644
--- a/linux-x64/clang/include/llvm/IR/IntrinsicsXCore.td
+++ b/linux-x64/clang/include/llvm/IR/IntrinsicsXCore.td
@@ -1,9 +1,8 @@
//==- IntrinsicsXCore.td - XCore intrinsics -*- tablegen -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/LLVMContext.h b/linux-x64/clang/include/llvm/IR/LLVMContext.h
index ebd4455..f28480e 100644
--- a/linux-x64/clang/include/llvm/IR/LLVMContext.h
+++ b/linux-x64/clang/include/llvm/IR/LLVMContext.h
@@ -1,9 +1,8 @@
//===- llvm/LLVMContext.h - Class for managing "global" state ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -102,6 +101,8 @@
MD_associated = 22, // "associated"
MD_callees = 23, // "callees"
MD_irr_loop = 24, // "irr_loop"
+ MD_access_group = 25, // "llvm.access.group"
+ MD_callback = 26, // "callback"
};
/// Known operand bundle tag IDs, which always have the same value. All
diff --git a/linux-x64/clang/include/llvm/IR/LegacyPassManager.h b/linux-x64/clang/include/llvm/IR/LegacyPassManager.h
index 5257a0e..d6bb79a 100644
--- a/linux-x64/clang/include/llvm/IR/LegacyPassManager.h
+++ b/linux-x64/clang/include/llvm/IR/LegacyPassManager.h
@@ -1,9 +1,8 @@
//===- LegacyPassManager.h - Legacy Container for Passes --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/LegacyPassManagers.h b/linux-x64/clang/include/llvm/IR/LegacyPassManagers.h
index 51a2eb2..72bc80f 100644
--- a/linux-x64/clang/include/llvm/IR/LegacyPassManagers.h
+++ b/linux-x64/clang/include/llvm/IR/LegacyPassManagers.h
@@ -1,9 +1,8 @@
//===- LegacyPassManagers.h - Legacy Pass Infrastructure --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/LegacyPassNameParser.h b/linux-x64/clang/include/llvm/IR/LegacyPassNameParser.h
index 4cec081..30820e7 100644
--- a/linux-x64/clang/include/llvm/IR/LegacyPassNameParser.h
+++ b/linux-x64/clang/include/llvm/IR/LegacyPassNameParser.h
@@ -1,9 +1,8 @@
//===- LegacyPassNameParser.h -----------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/MDBuilder.h b/linux-x64/clang/include/llvm/IR/MDBuilder.h
index 174616c..3a2b1bd 100644
--- a/linux-x64/clang/include/llvm/IR/MDBuilder.h
+++ b/linux-x64/clang/include/llvm/IR/MDBuilder.h
@@ -1,9 +1,8 @@
//===---- llvm/MDBuilder.h - Builder for LLVM metadata ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -95,6 +94,17 @@
MDNode *createCallees(ArrayRef<Function *> Callees);
//===------------------------------------------------------------------===//
+ // Callback metadata.
+ //===------------------------------------------------------------------===//
+
+ /// Return metadata describing a callback (see llvm::AbstractCallSite).
+ MDNode *createCallbackEncoding(unsigned CalleeArgNo, ArrayRef<int> Arguments,
+ bool VarArgsArePassed);
+
+ /// Merge the new callback encoding \p NewCB into \p ExistingCallbacks.
+ MDNode *mergeCallbackEncodings(MDNode *ExistingCallbacks, MDNode *NewCB);
+
+ //===------------------------------------------------------------------===//
// AA metadata.
//===------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/IR/Mangler.h b/linux-x64/clang/include/llvm/IR/Mangler.h
index 0261c00..e4a05ab 100644
--- a/linux-x64/clang/include/llvm/IR/Mangler.h
+++ b/linux-x64/clang/include/llvm/IR/Mangler.h
@@ -1,9 +1,8 @@
//===-- llvm/IR/Mangler.h - Self-contained name mangler ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/Metadata.def b/linux-x64/clang/include/llvm/IR/Metadata.def
index 70a03f2..d544013 100644
--- a/linux-x64/clang/include/llvm/IR/Metadata.def
+++ b/linux-x64/clang/include/llvm/IR/Metadata.def
@@ -1,9 +1,8 @@
//===- llvm/IR/Metadata.def - Metadata definitions --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/Metadata.h b/linux-x64/clang/include/llvm/IR/Metadata.h
index be82c4e..7ca2540 100644
--- a/linux-x64/clang/include/llvm/IR/Metadata.h
+++ b/linux-x64/clang/include/llvm/IR/Metadata.h
@@ -1,9 +1,8 @@
//===- llvm/IR/Metadata.h - Metadata definitions ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/Module.h b/linux-x64/clang/include/llvm/IR/Module.h
index 91e44ad..7373b84 100644
--- a/linux-x64/clang/include/llvm/IR/Module.h
+++ b/linux-x64/clang/include/llvm/IR/Module.h
@@ -1,9 +1,8 @@
//===- llvm/Module.h - C++ class to represent a VM module -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -49,6 +48,7 @@
class RandomNumberGenerator;
template <class PtrType> class SmallPtrSetImpl;
class StructType;
+class VersionTuple;
/// A Module instance is used to store all the information related to an
/// LLVM module. Modules are the top level container of all other LLVM
@@ -332,16 +332,18 @@
/// Look up the specified function in the module symbol table. Four
/// possibilities:
/// 1. If it does not exist, add a prototype for the function and return it.
- /// 2. If it exists, and has a local linkage, the existing function is
- /// renamed and a new one is inserted.
- /// 3. Otherwise, if the existing function has the correct prototype, return
+ /// 2. Otherwise, if the existing function has the correct prototype, return
/// the existing function.
- /// 4. Finally, the function exists but has the wrong prototype: return the
+ /// 3. Finally, the function exists but has the wrong prototype: return the
/// function with a constantexpr cast to the right prototype.
- Constant *getOrInsertFunction(StringRef Name, FunctionType *T,
- AttributeList AttributeList);
+ ///
+ /// In all cases, the returned value is a FunctionCallee wrapper around the
+ /// 'FunctionType *T' passed in, as well as a 'Value*' either of the Function or
+ /// the bitcast to the function.
+ FunctionCallee getOrInsertFunction(StringRef Name, FunctionType *T,
+ AttributeList AttributeList);
- Constant *getOrInsertFunction(StringRef Name, FunctionType *T);
+ FunctionCallee getOrInsertFunction(StringRef Name, FunctionType *T);
/// Look up the specified function in the module symbol table. If it does not
/// exist, add a prototype for the function and return it. This function
@@ -349,11 +351,10 @@
/// or a ConstantExpr BitCast of that type if the named function has a
/// different type. This version of the method takes a list of
/// function arguments, which makes it easier for clients to use.
- template<typename... ArgsTy>
- Constant *getOrInsertFunction(StringRef Name,
- AttributeList AttributeList,
- Type *RetTy, ArgsTy... Args)
- {
+ template <typename... ArgsTy>
+ FunctionCallee getOrInsertFunction(StringRef Name,
+ AttributeList AttributeList, Type *RetTy,
+ ArgsTy... Args) {
SmallVector<Type*, sizeof...(ArgsTy)> ArgTys{Args...};
return getOrInsertFunction(Name,
FunctionType::get(RetTy, ArgTys, false),
@@ -361,11 +362,18 @@
}
/// Same as above, but without the attributes.
- template<typename... ArgsTy>
- Constant *getOrInsertFunction(StringRef Name, Type *RetTy, ArgsTy... Args) {
+ template <typename... ArgsTy>
+ FunctionCallee getOrInsertFunction(StringRef Name, Type *RetTy,
+ ArgsTy... Args) {
return getOrInsertFunction(Name, AttributeList{}, RetTy, Args...);
}
+ // Avoid an incorrect ordering that'd otherwise compile incorrectly.
+ template <typename... ArgsTy>
+ FunctionCallee
+ getOrInsertFunction(StringRef Name, AttributeList AttributeList,
+ FunctionType *Invalid, ArgsTy... Args) = delete;
+
/// Look up the specified function in the module symbol table. If it does not
/// exist, return null.
Function *getFunction(StringRef Name) const;
@@ -402,11 +410,15 @@
}
/// Look up the specified global in the module symbol table.
- /// 1. If it does not exist, add a declaration of the global and return it.
- /// 2. Else, the global exists but has the wrong type: return the function
- /// with a constantexpr cast to the right type.
- /// 3. Finally, if the existing global is the correct declaration, return
- /// the existing global.
+ /// If it does not exist, invoke a callback to create a declaration of the
+ /// global and return it. The global is constantexpr casted to the expected
+ /// type if necessary.
+ Constant *
+ getOrInsertGlobal(StringRef Name, Type *Ty,
+ function_ref<GlobalVariable *()> CreateGlobalCallback);
+
+ /// Look up the specified global in the module symbol table. If required, this
+ /// overload constructs the global variable using its constructor's defaults.
Constant *getOrInsertGlobal(StringRef Name, Type *Ty);
/// @}
@@ -868,6 +880,17 @@
/// Set that PLT should be avoid for RTLib calls.
void setRtLibUseGOT();
+ /// @name Utility functions for querying and setting the build SDK version
+ /// @{
+
+ /// Attach a build SDK version metadata to this module.
+ void setSDKVersion(const VersionTuple &V);
+
+ /// Get the build SDK version metadata.
+ ///
+ /// An empty version is returned if no such metadata is attached.
+ VersionTuple getSDKVersion() const;
+ /// @}
/// Take ownership of the given memory buffer.
void setOwnedMemoryBuffer(std::unique_ptr<MemoryBuffer> MB);
diff --git a/linux-x64/clang/include/llvm/IR/ModuleSlotTracker.h b/linux-x64/clang/include/llvm/IR/ModuleSlotTracker.h
index eb26fba..85f8ff9 100644
--- a/linux-x64/clang/include/llvm/IR/ModuleSlotTracker.h
+++ b/linux-x64/clang/include/llvm/IR/ModuleSlotTracker.h
@@ -1,9 +1,8 @@
//===-- llvm/IR/ModuleSlotTracker.h -----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/IR/ModuleSummaryIndex.h b/linux-x64/clang/include/llvm/IR/ModuleSummaryIndex.h
index 778907b..bcb3aa0 100644
--- a/linux-x64/clang/include/llvm/IR/ModuleSummaryIndex.h
+++ b/linux-x64/clang/include/llvm/IR/ModuleSummaryIndex.h
@@ -1,9 +1,8 @@
//===- llvm/ModuleSummaryIndex.h - Module Summary Index ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -163,13 +162,13 @@
/// Struct that holds a reference to a particular GUID in a global value
/// summary.
struct ValueInfo {
- PointerIntPair<const GlobalValueSummaryMapTy::value_type *, 1, bool>
- RefAndFlag;
+ PointerIntPair<const GlobalValueSummaryMapTy::value_type *, 2, int>
+ RefAndFlags;
ValueInfo() = default;
ValueInfo(bool HaveGVs, const GlobalValueSummaryMapTy::value_type *R) {
- RefAndFlag.setPointer(R);
- RefAndFlag.setInt(HaveGVs);
+ RefAndFlags.setPointer(R);
+ RefAndFlags.setInt(HaveGVs);
}
operator bool() const { return getRef(); }
@@ -189,10 +188,12 @@
: getRef()->second.U.Name;
}
- bool haveGVs() const { return RefAndFlag.getInt(); }
+ bool haveGVs() const { return RefAndFlags.getInt() & 0x1; }
+ bool isReadOnly() const { return RefAndFlags.getInt() & 0x2; }
+ void setReadOnly() { RefAndFlags.setInt(RefAndFlags.getInt() | 0x2); }
const GlobalValueSummaryMapTy::value_type *getRef() const {
- return RefAndFlag.getPointer();
+ return RefAndFlags.getPointer();
}
bool isDSOLocal() const;
@@ -408,6 +409,7 @@
return const_cast<GlobalValueSummary &>(
static_cast<const AliasSummary *>(this)->getAliasee());
}
+ bool hasAliaseeGUID() const { return AliaseeGUID != 0; }
const GlobalValue::GUID &getAliaseeGUID() const {
assert(AliaseeGUID && "Unexpected missing aliasee GUID");
return AliaseeGUID;
@@ -477,13 +479,17 @@
TypeCheckedLoadConstVCalls;
};
- /// Function attribute flags. Used to track if a function accesses memory,
- /// recurses or aliases.
+ /// Flags specific to function summaries.
struct FFlags {
+ // Function attribute flags. Used to track if a function accesses memory,
+ // recurses or aliases.
unsigned ReadNone : 1;
unsigned ReadOnly : 1;
unsigned NoRecurse : 1;
unsigned ReturnDoesNotAlias : 1;
+
+ // Indicate if the global value cannot be inlined.
+ unsigned NoInline : 1;
};
/// Create an empty FunctionSummary (with specified call edges).
@@ -494,8 +500,9 @@
FunctionSummary::GVFlags(
GlobalValue::LinkageTypes::AvailableExternallyLinkage,
/*NotEligibleToImport=*/true, /*Live=*/true, /*IsLocal=*/false),
- 0, FunctionSummary::FFlags{}, std::vector<ValueInfo>(),
- std::move(Edges), std::vector<GlobalValue::GUID>(),
+ /*InsCount=*/0, FunctionSummary::FFlags{}, /*EntryCount=*/0,
+ std::vector<ValueInfo>(), std::move(Edges),
+ std::vector<GlobalValue::GUID>(),
std::vector<FunctionSummary::VFuncId>(),
std::vector<FunctionSummary::VFuncId>(),
std::vector<FunctionSummary::ConstVCall>(),
@@ -510,10 +517,14 @@
/// during the initial compile step when the summary index is first built.
unsigned InstCount;
- /// Function attribute flags. Used to track if a function accesses memory,
- /// recurses or aliases.
+ /// Function summary specific flags.
FFlags FunFlags;
+ /// The synthesized entry count of the function.
+ /// This is only populated during ThinLink phase and remains unused while
+ /// generating per-module summaries.
+ uint64_t EntryCount = 0;
+
/// List of <CalleeValueInfo, CalleeInfo> call edge pairs from this function.
std::vector<EdgeTy> CallGraphEdgeList;
@@ -521,14 +532,15 @@
public:
FunctionSummary(GVFlags Flags, unsigned NumInsts, FFlags FunFlags,
- std::vector<ValueInfo> Refs, std::vector<EdgeTy> CGEdges,
+ uint64_t EntryCount, std::vector<ValueInfo> Refs,
+ std::vector<EdgeTy> CGEdges,
std::vector<GlobalValue::GUID> TypeTests,
std::vector<VFuncId> TypeTestAssumeVCalls,
std::vector<VFuncId> TypeCheckedLoadVCalls,
std::vector<ConstVCall> TypeTestAssumeConstVCalls,
std::vector<ConstVCall> TypeCheckedLoadConstVCalls)
: GlobalValueSummary(FunctionKind, Flags, std::move(Refs)),
- InstCount(NumInsts), FunFlags(FunFlags),
+ InstCount(NumInsts), FunFlags(FunFlags), EntryCount(EntryCount),
CallGraphEdgeList(std::move(CGEdges)) {
if (!TypeTests.empty() || !TypeTestAssumeVCalls.empty() ||
!TypeCheckedLoadVCalls.empty() || !TypeTestAssumeConstVCalls.empty() ||
@@ -539,18 +551,26 @@
std::move(TypeTestAssumeConstVCalls),
std::move(TypeCheckedLoadConstVCalls)});
}
+ // Gets the number of immutable refs in RefEdgeList
+ unsigned immutableRefCount() const;
/// Check if this is a function summary.
static bool classof(const GlobalValueSummary *GVS) {
return GVS->getSummaryKind() == FunctionKind;
}
- /// Get function attribute flags.
+ /// Get function summary flags.
FFlags fflags() const { return FunFlags; }
/// Get the instruction count recorded for this function.
unsigned instCount() const { return InstCount; }
+ /// Get the synthetic entry count for this function.
+ uint64_t entryCount() const { return EntryCount; }
+
+ /// Set the synthetic entry count for this function.
+ void setEntryCount(uint64_t EC) { EntryCount = EC; }
+
/// Return the list of <CalleeValueInfo, CalleeInfo> pairs.
ArrayRef<EdgeTy> calls() const { return CallGraphEdgeList; }
@@ -648,19 +668,30 @@
/// Global variable summary information to aid decisions and
/// implementation of importing.
///
-/// Currently this doesn't add anything to the base \p GlobalValueSummary,
-/// but is a placeholder as additional info may be added to the summary
-/// for variables.
+/// Global variable summary has extra flag, telling if it is
+/// modified during the program run or not. This affects ThinLTO
+/// internalization
class GlobalVarSummary : public GlobalValueSummary {
-
public:
- GlobalVarSummary(GVFlags Flags, std::vector<ValueInfo> Refs)
- : GlobalValueSummary(GlobalVarKind, Flags, std::move(Refs)) {}
+ struct GVarFlags {
+ GVarFlags(bool ReadOnly = false) : ReadOnly(ReadOnly) {}
+
+ unsigned ReadOnly : 1;
+ } VarFlags;
+
+ GlobalVarSummary(GVFlags Flags, GVarFlags VarFlags,
+ std::vector<ValueInfo> Refs)
+ : GlobalValueSummary(GlobalVarKind, Flags, std::move(Refs)),
+ VarFlags(VarFlags) {}
/// Check if this is a global variable summary.
static bool classof(const GlobalValueSummary *GVS) {
return GVS->getSummaryKind() == GlobalVarKind;
}
+
+ GVarFlags varflags() const { return VarFlags; }
+ void setReadOnly(bool RO) { VarFlags.ReadOnly = RO; }
+ bool isReadOnly() const { return VarFlags.ReadOnly; }
};
struct TypeTestResolution {
@@ -783,6 +814,9 @@
/// considered live.
bool WithGlobalValueDeadStripping = false;
+ /// Indicates that summary-based synthetic entry count propagation has run
+ bool HasSyntheticEntryCounts = false;
+
/// Indicates that distributed backend should skip compilation of the
/// module. Flag is suppose to be set by distributed ThinLTO indexing
/// when it detected that the module is not needed during the final
@@ -796,6 +830,13 @@
/// union.
bool HaveGVs;
+ // True if the index was created for a module compiled with -fsplit-lto-unit.
+ bool EnableSplitLTOUnit;
+
+ // True if some of the modules were compiled with -fsplit-lto-unit and
+ // some were not. Set when the combined index is created during the thin link.
+ bool PartiallySplitLTOUnits = false;
+
std::set<std::string> CfiFunctionDefs;
std::set<std::string> CfiFunctionDecls;
@@ -815,7 +856,9 @@
public:
// See HaveGVs variable comment.
- ModuleSummaryIndex(bool HaveGVs) : HaveGVs(HaveGVs), Saver(Alloc) {}
+ ModuleSummaryIndex(bool HaveGVs, bool EnableSplitLTOUnit = false)
+ : HaveGVs(HaveGVs), EnableSplitLTOUnit(EnableSplitLTOUnit), Saver(Alloc) {
+ }
bool haveGVs() const { return HaveGVs; }
@@ -895,6 +938,9 @@
WithGlobalValueDeadStripping = true;
}
+ bool hasSyntheticEntryCounts() const { return HasSyntheticEntryCounts; }
+ void setHasSyntheticEntryCounts() { HasSyntheticEntryCounts = true; }
+
bool skipModuleByDistributedBackend() const {
return SkipModuleByDistributedBackend;
}
@@ -902,6 +948,12 @@
SkipModuleByDistributedBackend = true;
}
+ bool enableSplitLTOUnit() const { return EnableSplitLTOUnit; }
+ void setEnableSplitLTOUnit() { EnableSplitLTOUnit = true; }
+
+ bool partiallySplitLTOUnits() const { return PartiallySplitLTOUnits; }
+ void setPartiallySplitLTOUnits() { PartiallySplitLTOUnits = true; }
+
bool isGlobalValueLive(const GlobalValueSummary *GVS) const {
return !WithGlobalValueDeadStripping || GVS->isLive();
}
@@ -927,7 +979,7 @@
// Save a string in the Index. Use before passing Name to
// getOrInsertValueInfo when the string isn't owned elsewhere (e.g. on the
// module's Strtab).
- StringRef saveString(std::string String) { return Saver.save(String); }
+ StringRef saveString(StringRef String) { return Saver.save(String); }
/// Return a ValueInfo for \p GUID setting value \p Name.
ValueInfo getOrInsertValueInfo(GlobalValue::GUID GUID, StringRef Name) {
@@ -1131,11 +1183,15 @@
/// Print out strongly connected components for debugging.
void dumpSCCs(raw_ostream &OS);
+
+ /// Analyze index and detect unmodified globals
+ void propagateConstants(const DenseSet<GlobalValue::GUID> &PreservedSymbols);
};
/// GraphTraits definition to build SCC for the index
template <> struct GraphTraits<ValueInfo> {
typedef ValueInfo NodeRef;
+ using EdgeRef = FunctionSummary::EdgeTy &;
static NodeRef valueInfoFromEdge(FunctionSummary::EdgeTy &P) {
return P.first;
@@ -1144,6 +1200,8 @@
mapped_iterator<std::vector<FunctionSummary::EdgeTy>::iterator,
decltype(&valueInfoFromEdge)>;
+ using ChildEdgeIteratorType = std::vector<FunctionSummary::EdgeTy>::iterator;
+
static NodeRef getEntryNode(ValueInfo V) { return V; }
static ChildIteratorType child_begin(NodeRef N) {
@@ -1165,6 +1223,26 @@
cast<FunctionSummary>(N.getSummaryList().front()->getBaseObject());
return ChildIteratorType(F->CallGraphEdgeList.end(), &valueInfoFromEdge);
}
+
+ static ChildEdgeIteratorType child_edge_begin(NodeRef N) {
+ if (!N.getSummaryList().size()) // handle external function
+ return FunctionSummary::ExternalNode.CallGraphEdgeList.begin();
+
+ FunctionSummary *F =
+ cast<FunctionSummary>(N.getSummaryList().front()->getBaseObject());
+ return F->CallGraphEdgeList.begin();
+ }
+
+ static ChildEdgeIteratorType child_edge_end(NodeRef N) {
+ if (!N.getSummaryList().size()) // handle external function
+ return FunctionSummary::ExternalNode.CallGraphEdgeList.end();
+
+ FunctionSummary *F =
+ cast<FunctionSummary>(N.getSummaryList().front()->getBaseObject());
+ return F->CallGraphEdgeList.end();
+ }
+
+ static NodeRef edge_dest(EdgeRef E) { return E.first; }
};
template <>
@@ -1180,6 +1258,14 @@
}
};
+static inline bool canImportGlobalVar(GlobalValueSummary *S) {
+ assert(isa<GlobalVarSummary>(S->getBaseObject()));
+
+ // We don't import GV with references, because it can result
+ // in promotion of local variables in the source module.
+ return !GlobalValue::isInterposableLinkage(S->linkage()) &&
+ !S->notEligibleToImport() && S->refs().empty();
+}
} // end namespace llvm
#endif // LLVM_IR_MODULESUMMARYINDEX_H
diff --git a/linux-x64/clang/include/llvm/IR/ModuleSummaryIndexYAML.h b/linux-x64/clang/include/llvm/IR/ModuleSummaryIndexYAML.h
index 56f56b4..c3feeee 100644
--- a/linux-x64/clang/include/llvm/IR/ModuleSummaryIndexYAML.h
+++ b/linux-x64/clang/include/llvm/IR/ModuleSummaryIndexYAML.h
@@ -1,9 +1,8 @@
//===-- llvm/ModuleSummaryIndexYAML.h - YAML I/O for summary ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -224,7 +223,7 @@
GlobalValueSummary::GVFlags(
static_cast<GlobalValue::LinkageTypes>(FSum.Linkage),
FSum.NotEligibleToImport, FSum.Live, FSum.IsLocal),
- 0, FunctionSummary::FFlags{}, Refs,
+ /*NumInsts=*/0, FunctionSummary::FFlags{}, /*EntryCount=*/0, Refs,
ArrayRef<FunctionSummary::EdgeTy>{}, std::move(FSum.TypeTests),
std::move(FSum.TypeTestAssumeVCalls),
std::move(FSum.TypeCheckedLoadVCalls),
diff --git a/linux-x64/clang/include/llvm/IR/NoFolder.h b/linux-x64/clang/include/llvm/IR/NoFolder.h
index def07ff..7fd3039 100644
--- a/linux-x64/clang/include/llvm/IR/NoFolder.h
+++ b/linux-x64/clang/include/llvm/IR/NoFolder.h
@@ -1,9 +1,8 @@
//===- NoFolder.h - Constant folding helper ---------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/OperandTraits.h b/linux-x64/clang/include/llvm/IR/OperandTraits.h
index c618aff..979ad35 100644
--- a/linux-x64/clang/include/llvm/IR/OperandTraits.h
+++ b/linux-x64/clang/include/llvm/IR/OperandTraits.h
@@ -1,9 +1,8 @@
//===-- llvm/OperandTraits.h - OperandTraits class definition ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/Operator.h b/linux-x64/clang/include/llvm/IR/Operator.h
index 6b387bb..613d434 100644
--- a/linux-x64/clang/include/llvm/IR/Operator.h
+++ b/linux-x64/clang/include/llvm/IR/Operator.h
@@ -1,9 +1,8 @@
//===-- llvm/Operator.h - Operator utility subclass -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/OptBisect.h b/linux-x64/clang/include/llvm/IR/OptBisect.h
index aa24c94..8d51b68 100644
--- a/linux-x64/clang/include/llvm/IR/OptBisect.h
+++ b/linux-x64/clang/include/llvm/IR/OptBisect.h
@@ -1,9 +1,8 @@
//===- llvm/IR/OptBisect.h - LLVM Bisect support ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/IR/PassInstrumentation.h b/linux-x64/clang/include/llvm/IR/PassInstrumentation.h
index 3718b53..f8a1196 100644
--- a/linux-x64/clang/include/llvm/IR/PassInstrumentation.h
+++ b/linux-x64/clang/include/llvm/IR/PassInstrumentation.h
@@ -1,9 +1,8 @@
//===- llvm/IR/PassInstrumentation.h ----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -68,10 +67,17 @@
/// PassInstrumentation to pass control to the registered callbacks.
class PassInstrumentationCallbacks {
public:
- // Before/After callbacks accept IRUnits, so they need to take them
- // as pointers, wrapped with llvm::Any
+ // Before/After callbacks accept IRUnits whenever appropriate, so they need
+ // to take them as constant pointers, wrapped with llvm::Any.
+ // For the case when IRUnit has been invalidated there is a different
+ // callback to use - AfterPassInvalidated.
+ // TODO: currently AfterPassInvalidated does not accept IRUnit, since passing
+ // already invalidated IRUnit is unsafe. There are ways to handle invalidated IRUnits
+ // in a safe way, and we might pursue that as soon as there is a useful instrumentation
+ // that needs it.
using BeforePassFunc = bool(StringRef, Any);
using AfterPassFunc = void(StringRef, Any);
+ using AfterPassInvalidatedFunc = void(StringRef);
using BeforeAnalysisFunc = void(StringRef, Any);
using AfterAnalysisFunc = void(StringRef, Any);
@@ -91,6 +97,11 @@
}
template <typename CallableT>
+ void registerAfterPassInvalidatedCallback(CallableT C) {
+ AfterPassInvalidatedCallbacks.emplace_back(std::move(C));
+ }
+
+ template <typename CallableT>
void registerBeforeAnalysisCallback(CallableT C) {
BeforeAnalysisCallbacks.emplace_back(std::move(C));
}
@@ -105,6 +116,8 @@
SmallVector<llvm::unique_function<BeforePassFunc>, 4> BeforePassCallbacks;
SmallVector<llvm::unique_function<AfterPassFunc>, 4> AfterPassCallbacks;
+ SmallVector<llvm::unique_function<AfterPassInvalidatedFunc>, 4>
+ AfterPassInvalidatedCallbacks;
SmallVector<llvm::unique_function<BeforeAnalysisFunc>, 4>
BeforeAnalysisCallbacks;
SmallVector<llvm::unique_function<AfterAnalysisFunc>, 4>
@@ -139,7 +152,8 @@
}
/// AfterPass instrumentation point - takes \p Pass instance that has
- /// just been executed and constant reference to IR it operates on.
+ /// just been executed and constant reference to \p IR it operates on.
+ /// \p IR is guaranteed to be valid at this point.
template <typename IRUnitT, typename PassT>
void runAfterPass(const PassT &Pass, const IRUnitT &IR) const {
if (Callbacks)
@@ -147,6 +161,16 @@
C(Pass.name(), llvm::Any(&IR));
}
+ /// AfterPassInvalidated instrumentation point - takes \p Pass instance
+ /// that has just been executed. For use when IR has been invalidated
+ /// by \p Pass execution.
+ template <typename IRUnitT, typename PassT>
+ void runAfterPassInvalidated(const PassT &Pass) const {
+ if (Callbacks)
+ for (auto &C : Callbacks->AfterPassInvalidatedCallbacks)
+ C(Pass.name());
+ }
+
/// BeforeAnalysis instrumentation point - takes \p Analysis instance
/// to be executed and constant reference to IR it operates on.
template <typename IRUnitT, typename PassT>
diff --git a/linux-x64/clang/include/llvm/IR/PassManager.h b/linux-x64/clang/include/llvm/IR/PassManager.h
index 738a224..47bad5b 100644
--- a/linux-x64/clang/include/llvm/IR/PassManager.h
+++ b/linux-x64/clang/include/llvm/IR/PassManager.h
@@ -1,9 +1,8 @@
//===- PassManager.h - Pass management infrastructure -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/IR/PassManagerInternal.h b/linux-x64/clang/include/llvm/IR/PassManagerInternal.h
index 5ad68be..58198bf 100644
--- a/linux-x64/clang/include/llvm/IR/PassManagerInternal.h
+++ b/linux-x64/clang/include/llvm/IR/PassManagerInternal.h
@@ -1,9 +1,8 @@
//===- PassManager internal APIs and implementation details -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/IR/PassTimingInfo.h b/linux-x64/clang/include/llvm/IR/PassTimingInfo.h
index 2c6a0e0..ddddbdf 100644
--- a/linux-x64/clang/include/llvm/IR/PassTimingInfo.h
+++ b/linux-x64/clang/include/llvm/IR/PassTimingInfo.h
@@ -1,9 +1,8 @@
//===- PassTimingInfo.h - pass execution timing -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -99,8 +98,8 @@
void stopTimer(StringRef PassID);
// Implementation of pass instrumentation callbacks.
- bool runBeforePass(StringRef PassID, Any IR);
- void runAfterPass(StringRef PassID, Any IR);
+ bool runBeforePass(StringRef PassID);
+ void runAfterPass(StringRef PassID);
};
} // namespace llvm
diff --git a/linux-x64/clang/include/llvm/IR/PatternMatch.h b/linux-x64/clang/include/llvm/IR/PatternMatch.h
index 7c05834..6c51d48 100644
--- a/linux-x64/clang/include/llvm/IR/PatternMatch.h
+++ b/linux-x64/clang/include/llvm/IR/PatternMatch.h
@@ -1,9 +1,8 @@
//===- PatternMatch.h - Match on the LLVM IR --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -31,7 +30,6 @@
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/APInt.h"
-#include "llvm/IR/CallSite.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/InstrTypes.h"
@@ -215,6 +213,7 @@
// Non-splat vector constant: check each element for a match.
unsigned NumElts = V->getType()->getVectorNumElements();
assert(NumElts != 0 && "Constant vector with no elements?");
+ bool HasNonUndefElements = false;
for (unsigned i = 0; i != NumElts; ++i) {
Constant *Elt = C->getAggregateElement(i);
if (!Elt)
@@ -224,8 +223,9 @@
auto *CI = dyn_cast<ConstantInt>(Elt);
if (!CI || !this->isValue(CI->getValue()))
return false;
+ HasNonUndefElements = true;
}
- return true;
+ return HasNonUndefElements;
}
}
return false;
@@ -272,6 +272,7 @@
// Non-splat vector constant: check each element for a match.
unsigned NumElts = V->getType()->getVectorNumElements();
assert(NumElts != 0 && "Constant vector with no elements?");
+ bool HasNonUndefElements = false;
for (unsigned i = 0; i != NumElts; ++i) {
Constant *Elt = C->getAggregateElement(i);
if (!Elt)
@@ -281,8 +282,9 @@
auto *CF = dyn_cast<ConstantFP>(Elt);
if (!CF || !this->isValue(CF->getValueAPF()))
return false;
+ HasNonUndefElements = true;
}
- return true;
+ return HasNonUndefElements;
}
}
return false;
@@ -659,11 +661,32 @@
return BinaryOp_match<LHS, RHS, Instruction::FSub>(L, R);
}
+template <typename Op_t> struct FNeg_match {
+ Op_t X;
+
+ FNeg_match(const Op_t &Op) : X(Op) {}
+ template <typename OpTy> bool match(OpTy *V) {
+ auto *FPMO = dyn_cast<FPMathOperator>(V);
+ if (!FPMO || FPMO->getOpcode() != Instruction::FSub)
+ return false;
+ if (FPMO->hasNoSignedZeros()) {
+ // With 'nsz', any zero goes.
+ if (!cstfp_pred_ty<is_any_zero_fp>().match(FPMO->getOperand(0)))
+ return false;
+ } else {
+ // Without 'nsz', we need fsub -0.0, X exactly.
+ if (!cstfp_pred_ty<is_neg_zero_fp>().match(FPMO->getOperand(0)))
+ return false;
+ }
+ return X.match(FPMO->getOperand(1));
+ }
+};
+
/// Match 'fneg X' as 'fsub -0.0, X'.
-template <typename RHS>
-inline BinaryOp_match<cstfp_pred_ty<is_neg_zero_fp>, RHS, Instruction::FSub>
-m_FNeg(const RHS &X) {
- return m_FSub(m_NegZeroFP(), X);
+template <typename OpTy>
+inline FNeg_match<OpTy>
+m_FNeg(const OpTy &X) {
+ return FNeg_match<OpTy>(X);
}
/// Match 'fneg X' as 'fsub +-0.0, X'.
@@ -1440,6 +1463,20 @@
if (AddExpr.match(ICmpRHS) && (ICmpLHS == AddLHS || ICmpLHS == AddRHS))
return L.match(AddLHS) && R.match(AddRHS) && S.match(ICmpRHS);
+ // Match special-case for increment-by-1.
+ if (Pred == ICmpInst::ICMP_EQ) {
+ // (a + 1) == 0
+ // (1 + a) == 0
+ if (AddExpr.match(ICmpLHS) && m_ZeroInt().match(ICmpRHS) &&
+ (m_One().match(AddLHS) || m_One().match(AddRHS)))
+ return L.match(AddLHS) && R.match(AddRHS) && S.match(ICmpLHS);
+ // 0 == (a + 1)
+ // 0 == (1 + a)
+ if (m_ZeroInt().match(ICmpLHS) && AddExpr.match(ICmpRHS) &&
+ (m_One().match(AddLHS) || m_One().match(AddRHS)))
+ return L.match(AddLHS) && R.match(AddRHS) && S.match(ICmpRHS);
+ }
+
return false;
}
};
@@ -1461,8 +1498,10 @@
Argument_match(unsigned OpIdx, const Opnd_t &V) : OpI(OpIdx), Val(V) {}
template <typename OpTy> bool match(OpTy *V) {
- CallSite CS(V);
- return CS.isCall() && Val.match(CS.getArgument(OpI));
+ // FIXME: Should likely be switched to use `CallBase`.
+ if (const auto *CI = dyn_cast<CallInst>(V))
+ return Val.match(CI->getArgOperand(OpI));
+ return false;
}
};
diff --git a/linux-x64/clang/include/llvm/IR/PredIteratorCache.h b/linux-x64/clang/include/llvm/IR/PredIteratorCache.h
index 81f5353..cc83527 100644
--- a/linux-x64/clang/include/llvm/IR/PredIteratorCache.h
+++ b/linux-x64/clang/include/llvm/IR/PredIteratorCache.h
@@ -1,9 +1,8 @@
//===- PredIteratorCache.h - pred_iterator Cache ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/ProfileSummary.h b/linux-x64/clang/include/llvm/IR/ProfileSummary.h
index e386637..f1d49cc 100644
--- a/linux-x64/clang/include/llvm/IR/ProfileSummary.h
+++ b/linux-x64/clang/include/llvm/IR/ProfileSummary.h
@@ -1,9 +1,8 @@
//===- ProfileSummary.h - Profile summary data structure. -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/RuntimeLibcalls.def b/linux-x64/clang/include/llvm/IR/RuntimeLibcalls.def
index 8900512..9d7268d 100644
--- a/linux-x64/clang/include/llvm/IR/RuntimeLibcalls.def
+++ b/linux-x64/clang/include/llvm/IR/RuntimeLibcalls.def
@@ -1,9 +1,8 @@
//===-- llvm/RuntimeLibcalls.def - File that describes libcalls -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/SafepointIRVerifier.h b/linux-x64/clang/include/llvm/IR/SafepointIRVerifier.h
index 092050d..cbdb8bd 100644
--- a/linux-x64/clang/include/llvm/IR/SafepointIRVerifier.h
+++ b/linux-x64/clang/include/llvm/IR/SafepointIRVerifier.h
@@ -1,9 +1,8 @@
//===- SafepointIRVerifier.h - Checks for GC relocation problems *- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/Statepoint.h b/linux-x64/clang/include/llvm/IR/Statepoint.h
index 8908e1b..aec0e9b 100644
--- a/linux-x64/clang/include/llvm/IR/Statepoint.h
+++ b/linux-x64/clang/include/llvm/IR/Statepoint.h
@@ -1,14 +1,13 @@
//===- llvm/IR/Statepoint.h - gc.statepoint utilities -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
// This file contains utility functions and a wrapper class analogous to
-// CallSite for accessing the fields of gc.statepoint, gc.relocate,
+// CallBase for accessing the fields of gc.statepoint, gc.relocate,
// gc.result intrinsics; and some general utilities helpful when dealing with
// gc.statepoint.
//
@@ -21,7 +20,6 @@
#include "llvm/ADT/iterator_range.h"
#include "llvm/IR/Attributes.h"
#include "llvm/IR/BasicBlock.h"
-#include "llvm/IR/CallSite.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/Instruction.h"
@@ -57,42 +55,39 @@
class GCRelocateInst;
class GCResultInst;
-bool isStatepoint(ImmutableCallSite CS);
+bool isStatepoint(const CallBase *Call);
bool isStatepoint(const Value *V);
bool isStatepoint(const Value &V);
-bool isGCRelocate(ImmutableCallSite CS);
+bool isGCRelocate(const CallBase *Call);
bool isGCRelocate(const Value *V);
-bool isGCResult(ImmutableCallSite CS);
+bool isGCResult(const CallBase *Call);
bool isGCResult(const Value *V);
-/// Analogous to CallSiteBase, this provides most of the actual
+/// A wrapper around a GC intrinsic call, this provides most of the actual
/// functionality for Statepoint and ImmutableStatepoint. It is
/// templatized to allow easily specializing of const and non-const
-/// concrete subtypes. This is structured analogous to CallSite
-/// rather than the IntrinsicInst.h helpers since we need to support
-/// invokable statepoints.
+/// concrete subtypes.
template <typename FunTy, typename InstructionTy, typename ValueTy,
- typename CallSiteTy>
+ typename CallBaseTy>
class StatepointBase {
- CallSiteTy StatepointCS;
+ CallBaseTy *StatepointCall;
protected:
explicit StatepointBase(InstructionTy *I) {
if (isStatepoint(I)) {
- StatepointCS = CallSiteTy(I);
- assert(StatepointCS && "isStatepoint implies CallSite");
+ StatepointCall = cast<CallBaseTy>(I);
}
}
- explicit StatepointBase(CallSiteTy CS) {
- if (isStatepoint(CS))
- StatepointCS = CS;
+ explicit StatepointBase(CallBaseTy *Call) {
+ if (isStatepoint(Call))
+ StatepointCall = Call;
}
public:
- using arg_iterator = typename CallSiteTy::arg_iterator;
+ using arg_iterator = typename CallBaseTy::const_op_iterator;
enum {
IDPos = 0,
@@ -107,30 +102,30 @@
void *operator new(size_t s) = delete;
explicit operator bool() const {
- // We do not assign non-statepoint CallSites to StatepointCS.
- return (bool)StatepointCS;
+ // We do not assign non-statepoint call instructions to StatepointCall.
+ return (bool)StatepointCall;
}
- /// Return the underlying CallSite.
- CallSiteTy getCallSite() const {
+ /// Return the underlying call instruction.
+ CallBaseTy *getCall() const {
assert(*this && "check validity first!");
- return StatepointCS;
+ return StatepointCall;
}
uint64_t getFlags() const {
- return cast<ConstantInt>(getCallSite().getArgument(FlagsPos))
+ return cast<ConstantInt>(getCall()->getArgOperand(FlagsPos))
->getZExtValue();
}
/// Return the ID associated with this statepoint.
uint64_t getID() const {
- const Value *IDVal = getCallSite().getArgument(IDPos);
+ const Value *IDVal = getCall()->getArgOperand(IDPos);
return cast<ConstantInt>(IDVal)->getZExtValue();
}
/// Return the number of patchable bytes associated with this statepoint.
uint32_t getNumPatchBytes() const {
- const Value *NumPatchBytesVal = getCallSite().getArgument(NumPatchBytesPos);
+ const Value *NumPatchBytesVal = getCall()->getArgOperand(NumPatchBytesPos);
uint64_t NumPatchBytes =
cast<ConstantInt>(NumPatchBytesVal)->getZExtValue();
assert(isInt<32>(NumPatchBytes) && "should fit in 32 bits!");
@@ -139,12 +134,11 @@
/// Return the value actually being called or invoked.
ValueTy *getCalledValue() const {
- return getCallSite().getArgument(CalledFunctionPos);
+ return getCall()->getArgOperand(CalledFunctionPos);
}
- InstructionTy *getInstruction() const {
- return getCallSite().getInstruction();
- }
+ // FIXME: Migrate users of this to `getCall` and remove it.
+ InstructionTy *getInstruction() const { return getCall(); }
/// Return the function being called if this is a direct call, otherwise
/// return null (if it's an indirect call).
@@ -153,12 +147,12 @@
}
/// Return the caller function for this statepoint.
- FunTy *getCaller() const { return getCallSite().getCaller(); }
+ FunTy *getCaller() const { return getCall()->getCaller(); }
/// Determine if the statepoint cannot unwind.
bool doesNotThrow() const {
Function *F = getCalledFunction();
- return getCallSite().doesNotThrow() || (F ? F->doesNotThrow() : false);
+ return getCall()->doesNotThrow() || (F ? F->doesNotThrow() : false);
}
/// Return the type of the value returned by the call underlying the
@@ -171,18 +165,18 @@
/// Number of arguments to be passed to the actual callee.
int getNumCallArgs() const {
- const Value *NumCallArgsVal = getCallSite().getArgument(NumCallArgsPos);
+ const Value *NumCallArgsVal = getCall()->getArgOperand(NumCallArgsPos);
return cast<ConstantInt>(NumCallArgsVal)->getZExtValue();
}
size_t arg_size() const { return getNumCallArgs(); }
- typename CallSiteTy::arg_iterator arg_begin() const {
- assert(CallArgsBeginPos <= (int)getCallSite().arg_size());
- return getCallSite().arg_begin() + CallArgsBeginPos;
+ arg_iterator arg_begin() const {
+ assert(CallArgsBeginPos <= (int)getCall()->arg_size());
+ return getCall()->arg_begin() + CallArgsBeginPos;
}
- typename CallSiteTy::arg_iterator arg_end() const {
+ arg_iterator arg_end() const {
auto I = arg_begin() + arg_size();
- assert((getCallSite().arg_end() - I) >= 0);
+ assert((getCall()->arg_end() - I) >= 0);
return I;
}
@@ -199,8 +193,8 @@
/// Return true if the call or the callee has the given attribute.
bool paramHasAttr(unsigned i, Attribute::AttrKind A) const {
Function *F = getCalledFunction();
- return getCallSite().paramHasAttr(i + CallArgsBeginPos, A) ||
- (F ? F->getAttributes().hasAttribute(i, A) : false);
+ return getCall()->paramHasAttr(i + CallArgsBeginPos, A) ||
+ (F ? F->getAttributes().hasAttribute(i, A) : false);
}
/// Number of GC transition args.
@@ -208,14 +202,14 @@
const Value *NumGCTransitionArgs = *arg_end();
return cast<ConstantInt>(NumGCTransitionArgs)->getZExtValue();
}
- typename CallSiteTy::arg_iterator gc_transition_args_begin() const {
+ arg_iterator gc_transition_args_begin() const {
auto I = arg_end() + 1;
- assert((getCallSite().arg_end() - I) >= 0);
+ assert((getCall()->arg_end() - I) >= 0);
return I;
}
- typename CallSiteTy::arg_iterator gc_transition_args_end() const {
+ arg_iterator gc_transition_args_end() const {
auto I = gc_transition_args_begin() + getNumTotalGCTransitionArgs();
- assert((getCallSite().arg_end() - I) >= 0);
+ assert((getCall()->arg_end() - I) >= 0);
return I;
}
@@ -231,14 +225,14 @@
return cast<ConstantInt>(NumVMSArgs)->getZExtValue();
}
- typename CallSiteTy::arg_iterator deopt_begin() const {
+ arg_iterator deopt_begin() const {
auto I = gc_transition_args_end() + 1;
- assert((getCallSite().arg_end() - I) >= 0);
+ assert((getCall()->arg_end() - I) >= 0);
return I;
}
- typename CallSiteTy::arg_iterator deopt_end() const {
+ arg_iterator deopt_end() const {
auto I = deopt_begin() + getNumTotalVMSArgs();
- assert((getCallSite().arg_end() - I) >= 0);
+ assert((getCall()->arg_end() - I) >= 0);
return I;
}
@@ -247,15 +241,11 @@
return make_range(deopt_begin(), deopt_end());
}
- typename CallSiteTy::arg_iterator gc_args_begin() const {
- return deopt_end();
- }
- typename CallSiteTy::arg_iterator gc_args_end() const {
- return getCallSite().arg_end();
- }
+ arg_iterator gc_args_begin() const { return deopt_end(); }
+ arg_iterator gc_args_end() const { return getCall()->arg_end(); }
unsigned gcArgsStartIdx() const {
- return gc_args_begin() - getInstruction()->op_begin();
+ return gc_args_begin() - getCall()->op_begin();
}
/// range adapter for gc arguments
@@ -304,25 +294,24 @@
/// to a gc.statepoint.
class ImmutableStatepoint
: public StatepointBase<const Function, const Instruction, const Value,
- ImmutableCallSite> {
- using Base =
- StatepointBase<const Function, const Instruction, const Value,
- ImmutableCallSite>;
+ const CallBase> {
+ using Base = StatepointBase<const Function, const Instruction, const Value,
+ const CallBase>;
public:
explicit ImmutableStatepoint(const Instruction *I) : Base(I) {}
- explicit ImmutableStatepoint(ImmutableCallSite CS) : Base(CS) {}
+ explicit ImmutableStatepoint(const CallBase *Call) : Base(Call) {}
};
/// A specialization of it's base class for read-write access
/// to a gc.statepoint.
class Statepoint
- : public StatepointBase<Function, Instruction, Value, CallSite> {
- using Base = StatepointBase<Function, Instruction, Value, CallSite>;
+ : public StatepointBase<Function, Instruction, Value, CallBase> {
+ using Base = StatepointBase<Function, Instruction, Value, CallBase>;
public:
explicit Statepoint(Instruction *I) : Base(I) {}
- explicit Statepoint(CallSite CS) : Base(CS) {}
+ explicit Statepoint(CallBase *Call) : Base(Call) {}
};
/// Common base class for representing values projected from a statepoint.
@@ -347,14 +336,14 @@
}
/// The statepoint with which this gc.relocate is associated.
- const Instruction *getStatepoint() const {
+ const CallBase *getStatepoint() const {
const Value *Token = getArgOperand(0);
// This takes care both of relocates for call statepoints and relocates
// on normal path of invoke statepoint.
if (!isa<LandingPadInst>(Token)) {
assert(isStatepoint(Token));
- return cast<Instruction>(Token);
+ return cast<CallBase>(Token);
}
// This relocate is on exceptional path of an invoke statepoint
@@ -366,7 +355,7 @@
"safepoint block should be well formed");
assert(isStatepoint(InvokeBB->getTerminator()));
- return InvokeBB->getTerminator();
+ return cast<CallBase>(InvokeBB->getTerminator());
}
};
@@ -395,13 +384,11 @@
}
Value *getBasePtr() const {
- ImmutableCallSite CS(getStatepoint());
- return *(CS.arg_begin() + getBasePtrIndex());
+ return *(getStatepoint()->arg_begin() + getBasePtrIndex());
}
Value *getDerivedPtr() const {
- ImmutableCallSite CS(getStatepoint());
- return *(CS.arg_begin() + getDerivedPtrIndex());
+ return *(getStatepoint()->arg_begin() + getDerivedPtrIndex());
}
};
@@ -418,28 +405,25 @@
};
template <typename FunTy, typename InstructionTy, typename ValueTy,
- typename CallSiteTy>
+ typename CallBaseTy>
std::vector<const GCRelocateInst *>
-StatepointBase<FunTy, InstructionTy, ValueTy, CallSiteTy>::getRelocates()
+StatepointBase<FunTy, InstructionTy, ValueTy, CallBaseTy>::getRelocates()
const {
-
std::vector<const GCRelocateInst *> Result;
- CallSiteTy StatepointCS = getCallSite();
-
// Search for relocated pointers. Note that working backwards from the
// gc_relocates ensures that we only get pairs which are actually relocated
// and used after the statepoint.
- for (const User *U : getInstruction()->users())
+ for (const User *U : StatepointCall->users())
if (auto *Relocate = dyn_cast<GCRelocateInst>(U))
Result.push_back(Relocate);
- if (!StatepointCS.isInvoke())
+ auto *StatepointInvoke = dyn_cast<InvokeInst>(StatepointCall);
+ if (!StatepointInvoke)
return Result;
// We need to scan thorough exceptional relocations if it is invoke statepoint
- LandingPadInst *LandingPad =
- cast<InvokeInst>(getInstruction())->getLandingPadInst();
+ LandingPadInst *LandingPad = StatepointInvoke->getLandingPadInst();
// Search for gc relocates that are attached to this landingpad.
for (const User *LandingPadUser : LandingPad->users()) {
diff --git a/linux-x64/clang/include/llvm/IR/SymbolTableListTraits.h b/linux-x64/clang/include/llvm/IR/SymbolTableListTraits.h
index 87ce902..5b793e5 100644
--- a/linux-x64/clang/include/llvm/IR/SymbolTableListTraits.h
+++ b/linux-x64/clang/include/llvm/IR/SymbolTableListTraits.h
@@ -1,9 +1,8 @@
//===- llvm/SymbolTableListTraits.h - Traits for iplist ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/TrackingMDRef.h b/linux-x64/clang/include/llvm/IR/TrackingMDRef.h
index 084efad..d737739 100644
--- a/linux-x64/clang/include/llvm/IR/TrackingMDRef.h
+++ b/linux-x64/clang/include/llvm/IR/TrackingMDRef.h
@@ -1,9 +1,8 @@
//===- llvm/IR/TrackingMDRef.h - Tracking Metadata references ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/Type.h b/linux-x64/clang/include/llvm/IR/Type.h
index 9c1f99d..5f9f44e 100644
--- a/linux-x64/clang/include/llvm/IR/Type.h
+++ b/linux-x64/clang/include/llvm/IR/Type.h
@@ -1,9 +1,8 @@
//===- llvm/Type.h - Classes for handling data types ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -467,28 +466,6 @@
}
};
-//===----------------------------------------------------------------------===//
-// Provide specializations of GraphTraits to be able to treat a type as a
-// graph of sub types.
-
-template <> struct GraphTraits<Type *> {
- using NodeRef = Type *;
- using ChildIteratorType = Type::subtype_iterator;
-
- static NodeRef getEntryNode(Type *T) { return T; }
- static ChildIteratorType child_begin(NodeRef N) { return N->subtype_begin(); }
- static ChildIteratorType child_end(NodeRef N) { return N->subtype_end(); }
-};
-
-template <> struct GraphTraits<const Type*> {
- using NodeRef = const Type *;
- using ChildIteratorType = Type::subtype_iterator;
-
- static NodeRef getEntryNode(NodeRef T) { return T; }
- static ChildIteratorType child_begin(NodeRef N) { return N->subtype_begin(); }
- static ChildIteratorType child_end(NodeRef N) { return N->subtype_end(); }
-};
-
// Create wrappers for C Binding types (see CBindingWrapping.h).
DEFINE_ISA_CONVERSION_FUNCTIONS(Type, LLVMTypeRef)
diff --git a/linux-x64/clang/include/llvm/IR/TypeBuilder.h b/linux-x64/clang/include/llvm/IR/TypeBuilder.h
deleted file mode 100644
index d2c6f00..0000000
--- a/linux-x64/clang/include/llvm/IR/TypeBuilder.h
+++ /dev/null
@@ -1,407 +0,0 @@
-//===---- llvm/TypeBuilder.h - Builder for LLVM types -----------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines the TypeBuilder class, which is used as a convenient way to
-// create LLVM types with a consistent and simplified interface.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_IR_TYPEBUILDER_H
-#define LLVM_IR_TYPEBUILDER_H
-
-#include "llvm/IR/DerivedTypes.h"
-#include "llvm/IR/LLVMContext.h"
-#include <climits>
-
-namespace llvm {
-
-/// TypeBuilder - This provides a uniform API for looking up types
-/// known at compile time. To support cross-compilation, we define a
-/// series of tag types in the llvm::types namespace, like i<N>,
-/// ieee_float, ppc_fp128, etc. TypeBuilder<T, false> allows T to be
-/// any of these, a native C type (whose size may depend on the host
-/// compiler), or a pointer, function, or struct type built out of
-/// these. TypeBuilder<T, true> removes native C types from this set
-/// to guarantee that its result is suitable for cross-compilation.
-/// We define the primitive types, pointer types, and functions up to
-/// 5 arguments here, but to use this class with your own types,
-/// you'll need to specialize it. For example, say you want to call a
-/// function defined externally as:
-///
-/// \code{.cpp}
-///
-/// struct MyType {
-/// int32 a;
-/// int32 *b;
-/// void *array[1]; // Intended as a flexible array.
-/// };
-/// int8 AFunction(struct MyType *value);
-///
-/// \endcode
-///
-/// You'll want to use
-/// Function::Create(TypeBuilder<types::i<8>(MyType*), true>::get(), ...)
-/// to declare the function, but when you first try this, your compiler will
-/// complain that TypeBuilder<MyType, true>::get() doesn't exist. To fix this,
-/// write:
-///
-/// \code{.cpp}
-///
-/// namespace llvm {
-/// template<bool xcompile> class TypeBuilder<MyType, xcompile> {
-/// public:
-/// static StructType *get(LLVMContext &Context) {
-/// // If you cache this result, be sure to cache it separately
-/// // for each LLVMContext.
-/// return StructType::get(
-/// TypeBuilder<types::i<32>, xcompile>::get(Context),
-/// TypeBuilder<types::i<32>*, xcompile>::get(Context),
-/// TypeBuilder<types::i<8>*[], xcompile>::get(Context),
-/// nullptr);
-/// }
-///
-/// // You may find this a convenient place to put some constants
-/// // to help with getelementptr. They don't have any effect on
-/// // the operation of TypeBuilder.
-/// enum Fields {
-/// FIELD_A,
-/// FIELD_B,
-/// FIELD_ARRAY
-/// };
-/// }
-/// } // namespace llvm
-///
-/// \endcode
-///
-/// TypeBuilder cannot handle recursive types or types you only know at runtime.
-/// If you try to give it a recursive type, it will deadlock, infinitely
-/// recurse, or do something similarly undesirable.
-template<typename T, bool cross_compilable> class TypeBuilder {};
-
-// Types for use with cross-compilable TypeBuilders. These correspond
-// exactly with an LLVM-native type.
-namespace types {
-/// i<N> corresponds to the LLVM IntegerType with N bits.
-template<uint32_t num_bits> class i {};
-
-// The following classes represent the LLVM floating types.
-class ieee_float {};
-class ieee_double {};
-class x86_fp80 {};
-class fp128 {};
-class ppc_fp128 {};
-// X86 MMX.
-class x86_mmx {};
-} // namespace types
-
-// LLVM doesn't have const or volatile types.
-template<typename T, bool cross> class TypeBuilder<const T, cross>
- : public TypeBuilder<T, cross> {};
-template<typename T, bool cross> class TypeBuilder<volatile T, cross>
- : public TypeBuilder<T, cross> {};
-template<typename T, bool cross> class TypeBuilder<const volatile T, cross>
- : public TypeBuilder<T, cross> {};
-
-// Pointers
-template<typename T, bool cross> class TypeBuilder<T*, cross> {
-public:
- static PointerType *get(LLVMContext &Context) {
- return PointerType::getUnqual(TypeBuilder<T,cross>::get(Context));
- }
-};
-
-/// There is no support for references
-template<typename T, bool cross> class TypeBuilder<T&, cross> {};
-
-// Arrays
-template<typename T, size_t N, bool cross> class TypeBuilder<T[N], cross> {
-public:
- static ArrayType *get(LLVMContext &Context) {
- return ArrayType::get(TypeBuilder<T, cross>::get(Context), N);
- }
-};
-/// LLVM uses an array of length 0 to represent an unknown-length array.
-template<typename T, bool cross> class TypeBuilder<T[], cross> {
-public:
- static ArrayType *get(LLVMContext &Context) {
- return ArrayType::get(TypeBuilder<T, cross>::get(Context), 0);
- }
-};
-
-// Define the C integral types only for TypeBuilder<T, false>.
-//
-// C integral types do not have a defined size. It would be nice to use the
-// stdint.h-defined typedefs that do have defined sizes, but we'd run into the
-// following problem:
-//
-// On an ILP32 machine, stdint.h might define:
-//
-// typedef int int32_t;
-// typedef long long int64_t;
-// typedef long size_t;
-//
-// If we defined TypeBuilder<int32_t> and TypeBuilder<int64_t>, then any use of
-// TypeBuilder<size_t> would fail. We couldn't define TypeBuilder<size_t> in
-// addition to the defined-size types because we'd get duplicate definitions on
-// platforms where stdint.h instead defines:
-//
-// typedef int int32_t;
-// typedef long long int64_t;
-// typedef int size_t;
-//
-// So we define all the primitive C types and nothing else.
-#define DEFINE_INTEGRAL_TYPEBUILDER(T) \
-template<> class TypeBuilder<T, false> { \
-public: \
- static IntegerType *get(LLVMContext &Context) { \
- return IntegerType::get(Context, sizeof(T) * CHAR_BIT); \
- } \
-}; \
-template<> class TypeBuilder<T, true> { \
- /* We provide a definition here so users don't accidentally */ \
- /* define these types to work. */ \
-}
-DEFINE_INTEGRAL_TYPEBUILDER(char);
-DEFINE_INTEGRAL_TYPEBUILDER(signed char);
-DEFINE_INTEGRAL_TYPEBUILDER(unsigned char);
-DEFINE_INTEGRAL_TYPEBUILDER(short);
-DEFINE_INTEGRAL_TYPEBUILDER(unsigned short);
-DEFINE_INTEGRAL_TYPEBUILDER(int);
-DEFINE_INTEGRAL_TYPEBUILDER(unsigned int);
-DEFINE_INTEGRAL_TYPEBUILDER(long);
-DEFINE_INTEGRAL_TYPEBUILDER(unsigned long);
-#ifdef _MSC_VER
-DEFINE_INTEGRAL_TYPEBUILDER(__int64);
-DEFINE_INTEGRAL_TYPEBUILDER(unsigned __int64);
-#else /* _MSC_VER */
-DEFINE_INTEGRAL_TYPEBUILDER(long long);
-DEFINE_INTEGRAL_TYPEBUILDER(unsigned long long);
-#endif /* _MSC_VER */
-#undef DEFINE_INTEGRAL_TYPEBUILDER
-
-template<uint32_t num_bits, bool cross>
-class TypeBuilder<types::i<num_bits>, cross> {
-public:
- static IntegerType *get(LLVMContext &C) {
- return IntegerType::get(C, num_bits);
- }
-};
-
-template<> class TypeBuilder<float, false> {
-public:
- static Type *get(LLVMContext& C) {
- return Type::getFloatTy(C);
- }
-};
-template<> class TypeBuilder<float, true> {};
-
-template<> class TypeBuilder<double, false> {
-public:
- static Type *get(LLVMContext& C) {
- return Type::getDoubleTy(C);
- }
-};
-template<> class TypeBuilder<double, true> {};
-
-template<bool cross> class TypeBuilder<types::ieee_float, cross> {
-public:
- static Type *get(LLVMContext& C) { return Type::getFloatTy(C); }
-};
-template<bool cross> class TypeBuilder<types::ieee_double, cross> {
-public:
- static Type *get(LLVMContext& C) { return Type::getDoubleTy(C); }
-};
-template<bool cross> class TypeBuilder<types::x86_fp80, cross> {
-public:
- static Type *get(LLVMContext& C) { return Type::getX86_FP80Ty(C); }
-};
-template<bool cross> class TypeBuilder<types::fp128, cross> {
-public:
- static Type *get(LLVMContext& C) { return Type::getFP128Ty(C); }
-};
-template<bool cross> class TypeBuilder<types::ppc_fp128, cross> {
-public:
- static Type *get(LLVMContext& C) { return Type::getPPC_FP128Ty(C); }
-};
-template<bool cross> class TypeBuilder<types::x86_mmx, cross> {
-public:
- static Type *get(LLVMContext& C) { return Type::getX86_MMXTy(C); }
-};
-
-template<bool cross> class TypeBuilder<void, cross> {
-public:
- static Type *get(LLVMContext &C) {
- return Type::getVoidTy(C);
- }
-};
-
-/// void* is disallowed in LLVM types, but it occurs often enough in C code that
-/// we special case it.
-template<> class TypeBuilder<void*, false>
- : public TypeBuilder<types::i<8>*, false> {};
-template<> class TypeBuilder<const void*, false>
- : public TypeBuilder<types::i<8>*, false> {};
-template<> class TypeBuilder<volatile void*, false>
- : public TypeBuilder<types::i<8>*, false> {};
-template<> class TypeBuilder<const volatile void*, false>
- : public TypeBuilder<types::i<8>*, false> {};
-
-template<typename R, bool cross> class TypeBuilder<R(), cross> {
-public:
- static FunctionType *get(LLVMContext &Context) {
- return FunctionType::get(TypeBuilder<R, cross>::get(Context), false);
- }
-};
-template<typename R, typename A1, bool cross> class TypeBuilder<R(A1), cross> {
-public:
- static FunctionType *get(LLVMContext &Context) {
- Type *params[] = {
- TypeBuilder<A1, cross>::get(Context),
- };
- return FunctionType::get(TypeBuilder<R, cross>::get(Context),
- params, false);
- }
-};
-template<typename R, typename A1, typename A2, bool cross>
-class TypeBuilder<R(A1, A2), cross> {
-public:
- static FunctionType *get(LLVMContext &Context) {
- Type *params[] = {
- TypeBuilder<A1, cross>::get(Context),
- TypeBuilder<A2, cross>::get(Context),
- };
- return FunctionType::get(TypeBuilder<R, cross>::get(Context),
- params, false);
- }
-};
-template<typename R, typename A1, typename A2, typename A3, bool cross>
-class TypeBuilder<R(A1, A2, A3), cross> {
-public:
- static FunctionType *get(LLVMContext &Context) {
- Type *params[] = {
- TypeBuilder<A1, cross>::get(Context),
- TypeBuilder<A2, cross>::get(Context),
- TypeBuilder<A3, cross>::get(Context),
- };
- return FunctionType::get(TypeBuilder<R, cross>::get(Context),
- params, false);
- }
-};
-
-template<typename R, typename A1, typename A2, typename A3, typename A4,
- bool cross>
-class TypeBuilder<R(A1, A2, A3, A4), cross> {
-public:
- static FunctionType *get(LLVMContext &Context) {
- Type *params[] = {
- TypeBuilder<A1, cross>::get(Context),
- TypeBuilder<A2, cross>::get(Context),
- TypeBuilder<A3, cross>::get(Context),
- TypeBuilder<A4, cross>::get(Context),
- };
- return FunctionType::get(TypeBuilder<R, cross>::get(Context),
- params, false);
- }
-};
-
-template<typename R, typename A1, typename A2, typename A3, typename A4,
- typename A5, bool cross>
-class TypeBuilder<R(A1, A2, A3, A4, A5), cross> {
-public:
- static FunctionType *get(LLVMContext &Context) {
- Type *params[] = {
- TypeBuilder<A1, cross>::get(Context),
- TypeBuilder<A2, cross>::get(Context),
- TypeBuilder<A3, cross>::get(Context),
- TypeBuilder<A4, cross>::get(Context),
- TypeBuilder<A5, cross>::get(Context),
- };
- return FunctionType::get(TypeBuilder<R, cross>::get(Context),
- params, false);
- }
-};
-
-template<typename R, bool cross> class TypeBuilder<R(...), cross> {
-public:
- static FunctionType *get(LLVMContext &Context) {
- return FunctionType::get(TypeBuilder<R, cross>::get(Context), true);
- }
-};
-template<typename R, typename A1, bool cross>
-class TypeBuilder<R(A1, ...), cross> {
-public:
- static FunctionType *get(LLVMContext &Context) {
- Type *params[] = {
- TypeBuilder<A1, cross>::get(Context),
- };
- return FunctionType::get(TypeBuilder<R, cross>::get(Context), params, true);
- }
-};
-template<typename R, typename A1, typename A2, bool cross>
-class TypeBuilder<R(A1, A2, ...), cross> {
-public:
- static FunctionType *get(LLVMContext &Context) {
- Type *params[] = {
- TypeBuilder<A1, cross>::get(Context),
- TypeBuilder<A2, cross>::get(Context),
- };
- return FunctionType::get(TypeBuilder<R, cross>::get(Context),
- params, true);
- }
-};
-template<typename R, typename A1, typename A2, typename A3, bool cross>
-class TypeBuilder<R(A1, A2, A3, ...), cross> {
-public:
- static FunctionType *get(LLVMContext &Context) {
- Type *params[] = {
- TypeBuilder<A1, cross>::get(Context),
- TypeBuilder<A2, cross>::get(Context),
- TypeBuilder<A3, cross>::get(Context),
- };
- return FunctionType::get(TypeBuilder<R, cross>::get(Context),
- params, true);
- }
-};
-
-template<typename R, typename A1, typename A2, typename A3, typename A4,
- bool cross>
-class TypeBuilder<R(A1, A2, A3, A4, ...), cross> {
-public:
- static FunctionType *get(LLVMContext &Context) {
- Type *params[] = {
- TypeBuilder<A1, cross>::get(Context),
- TypeBuilder<A2, cross>::get(Context),
- TypeBuilder<A3, cross>::get(Context),
- TypeBuilder<A4, cross>::get(Context),
- };
- return FunctionType::get(TypeBuilder<R, cross>::get(Context),
- params, true);
- }
-};
-
-template<typename R, typename A1, typename A2, typename A3, typename A4,
- typename A5, bool cross>
-class TypeBuilder<R(A1, A2, A3, A4, A5, ...), cross> {
-public:
- static FunctionType *get(LLVMContext &Context) {
- Type *params[] = {
- TypeBuilder<A1, cross>::get(Context),
- TypeBuilder<A2, cross>::get(Context),
- TypeBuilder<A3, cross>::get(Context),
- TypeBuilder<A4, cross>::get(Context),
- TypeBuilder<A5, cross>::get(Context),
- };
- return FunctionType::get(TypeBuilder<R, cross>::get(Context),
- params, true);
- }
-};
-
-} // namespace llvm
-
-#endif
diff --git a/linux-x64/clang/include/llvm/IR/TypeFinder.h b/linux-x64/clang/include/llvm/IR/TypeFinder.h
index c050c38..a83f85e 100644
--- a/linux-x64/clang/include/llvm/IR/TypeFinder.h
+++ b/linux-x64/clang/include/llvm/IR/TypeFinder.h
@@ -1,9 +1,8 @@
//===- llvm/IR/TypeFinder.h - Class to find used struct types ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/Use.h b/linux-x64/clang/include/llvm/IR/Use.h
index 25c44e0..6d29d47 100644
--- a/linux-x64/clang/include/llvm/IR/Use.h
+++ b/linux-x64/clang/include/llvm/IR/Use.h
@@ -1,9 +1,8 @@
//===- llvm/Use.h - Definition of the Use class -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/IR/UseListOrder.h b/linux-x64/clang/include/llvm/IR/UseListOrder.h
index b6bb0f1..a1f313e 100644
--- a/linux-x64/clang/include/llvm/IR/UseListOrder.h
+++ b/linux-x64/clang/include/llvm/IR/UseListOrder.h
@@ -1,9 +1,8 @@
//===- llvm/IR/UseListOrder.h - LLVM Use List Order -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/User.h b/linux-x64/clang/include/llvm/IR/User.h
index aea3146..19d87c5 100644
--- a/linux-x64/clang/include/llvm/IR/User.h
+++ b/linux-x64/clang/include/llvm/IR/User.h
@@ -1,9 +1,8 @@
//===- llvm/User.h - User class definition ----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/Value.def b/linux-x64/clang/include/llvm/IR/Value.def
index e2ddba0..aaf1651 100644
--- a/linux-x64/clang/include/llvm/IR/Value.def
+++ b/linux-x64/clang/include/llvm/IR/Value.def
@@ -1,9 +1,8 @@
//===-------- llvm/IR/Value.def - File that describes Values ---v-*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/Value.h b/linux-x64/clang/include/llvm/IR/Value.h
index 4f3a45c..d0de008 100644
--- a/linux-x64/clang/include/llvm/IR/Value.h
+++ b/linux-x64/clang/include/llvm/IR/Value.h
@@ -1,9 +1,8 @@
//===- llvm/Value.h - Definition of the Value class -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/ValueHandle.h b/linux-x64/clang/include/llvm/IR/ValueHandle.h
index d94472c..1135d79 100644
--- a/linux-x64/clang/include/llvm/IR/ValueHandle.h
+++ b/linux-x64/clang/include/llvm/IR/ValueHandle.h
@@ -1,9 +1,8 @@
//===- ValueHandle.h - Value Smart Pointer classes --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -309,15 +308,6 @@
}
};
-template <typename T>
-struct isPodLike<AssertingVH<T>> {
-#ifdef NDEBUG
- static const bool value = true;
-#else
- static const bool value = false;
-#endif
-};
-
/// Value handle that tracks a Value across RAUW.
///
/// TrackingVH is designed for situations where a client needs to hold a handle
@@ -549,14 +539,6 @@
}
};
-template <typename T> struct isPodLike<PoisoningVH<T>> {
-#ifdef NDEBUG
- static const bool value = true;
-#else
- static const bool value = false;
-#endif
-};
-
} // end namespace llvm
#endif // LLVM_IR_VALUEHANDLE_H
diff --git a/linux-x64/clang/include/llvm/IR/ValueMap.h b/linux-x64/clang/include/llvm/IR/ValueMap.h
index e7e3391..6a79b1d 100644
--- a/linux-x64/clang/include/llvm/IR/ValueMap.h
+++ b/linux-x64/clang/include/llvm/IR/ValueMap.h
@@ -1,9 +1,8 @@
//===- ValueMap.h - Safe map from Values to data ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/ValueSymbolTable.h b/linux-x64/clang/include/llvm/IR/ValueSymbolTable.h
index 012e717..105ea73 100644
--- a/linux-x64/clang/include/llvm/IR/ValueSymbolTable.h
+++ b/linux-x64/clang/include/llvm/IR/ValueSymbolTable.h
@@ -1,9 +1,8 @@
//===- llvm/ValueSymbolTable.h - Implement a Value Symtab -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IR/Verifier.h b/linux-x64/clang/include/llvm/IR/Verifier.h
index 7255132..62c33c8 100644
--- a/linux-x64/clang/include/llvm/IR/Verifier.h
+++ b/linux-x64/clang/include/llvm/IR/Verifier.h
@@ -1,9 +1,8 @@
//===- Verifier.h - LLVM IR Verifier ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/IRReader/IRReader.h b/linux-x64/clang/include/llvm/IRReader/IRReader.h
index bedde89..0517130 100644
--- a/linux-x64/clang/include/llvm/IRReader/IRReader.h
+++ b/linux-x64/clang/include/llvm/IRReader/IRReader.h
@@ -1,9 +1,8 @@
//===---- llvm/IRReader/IRReader.h - Reader for LLVM IR files ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -21,11 +20,22 @@
namespace llvm {
class StringRef;
+class MemoryBuffer;
class MemoryBufferRef;
class Module;
class SMDiagnostic;
class LLVMContext;
+/// If the given MemoryBuffer holds a bitcode image, return a Module
+/// for it which does lazy deserialization of function bodies. Otherwise,
+/// attempt to parse it as LLVM Assembly and return a fully populated
+/// Module. The ShouldLazyLoadMetadata flag is passed down to the bitcode
+/// reader to optionally enable lazy metadata loading. This takes ownership
+/// of \p Buffer.
+std::unique_ptr<Module> getLazyIRModule(std::unique_ptr<MemoryBuffer> Buffer,
+ SMDiagnostic &Err, LLVMContext &Context,
+ bool ShouldLazyLoadMetadata = false);
+
/// If the given file holds a bitcode image, return a Module
/// for it which does lazy deserialization of function bodies. Otherwise,
/// attempt to parse it as LLVM Assembly and return a fully populated
diff --git a/linux-x64/clang/include/llvm/InitializePasses.h b/linux-x64/clang/include/llvm/InitializePasses.h
index 1a9c6f8..fe6c171 100644
--- a/linux-x64/clang/include/llvm/InitializePasses.h
+++ b/linux-x64/clang/include/llvm/InitializePasses.h
@@ -1,9 +1,8 @@
//===- llvm/InitializePasses.h - Initialize All Passes ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -85,6 +84,7 @@
void initializeBranchRelaxationPass(PassRegistry&);
void initializeBreakCriticalEdgesPass(PassRegistry&);
void initializeBreakFalseDepsPass(PassRegistry&);
+void initializeCanonicalizeAliasesLegacyPassPass(PassRegistry &);
void initializeCFGOnlyPrinterLegacyPassPass(PassRegistry&);
void initializeCFGOnlyViewerLegacyPassPass(PassRegistry&);
void initializeCFGPrinterLegacyPassPass(PassRegistry&);
@@ -140,6 +140,7 @@
void initializeExpandMemCmpPassPass(PassRegistry&);
void initializeExpandPostRAPass(PassRegistry&);
void initializeExpandReductionsPass(PassRegistry&);
+void initializeMakeGuardsExplicitLegacyPassPass(PassRegistry&);
void initializeExternalAAWrapperPassPass(PassRegistry&);
void initializeFEntryInserterPass(PassRegistry&);
void initializeFinalizeMachineBundlesPass(PassRegistry&);
@@ -182,6 +183,7 @@
void initializeInstructionCombiningPassPass(PassRegistry&);
void initializeInstructionSelectPass(PassRegistry&);
void initializeInterleavedAccessPass(PassRegistry&);
+void initializeInterleavedLoadCombinePass(PassRegistry &);
void initializeInternalizeLegacyPassPass(PassRegistry&);
void initializeIntervalPartitionPass(PassRegistry&);
void initializeJumpThreadingPass(PassRegistry&);
@@ -196,6 +198,7 @@
void initializeLegacyLICMPassPass(PassRegistry&);
void initializeLegacyLoopSinkPassPass(PassRegistry&);
void initializeLegalizerPass(PassRegistry&);
+void initializeGISelCSEAnalysisWrapperPassPass(PassRegistry &);
void initializeLibCallsShrinkWrapLegacyPassPass(PassRegistry&);
void initializeLintPass(PassRegistry&);
void initializeLiveDebugValuesPass(PassRegistry&);
@@ -205,7 +208,7 @@
void initializeLiveRegMatrixPass(PassRegistry&);
void initializeLiveStacksPass(PassRegistry&);
void initializeLiveVariablesPass(PassRegistry&);
-void initializeLoadStoreVectorizerPass(PassRegistry&);
+void initializeLoadStoreVectorizerLegacyPassPass(PassRegistry&);
void initializeLoaderPassPass(PassRegistry&);
void initializeLocalStackSlotPassPass(PassRegistry&);
void initializeLocalizerPass(PassRegistry&);
@@ -237,6 +240,7 @@
void initializeLowerEmuTLSPass(PassRegistry&);
void initializeLowerExpectIntrinsicPass(PassRegistry&);
void initializeLowerGuardIntrinsicLegacyPassPass(PassRegistry&);
+void initializeLowerWidenableConditionLegacyPassPass(PassRegistry&);
void initializeLowerIntrinsicsPass(PassRegistry&);
void initializeLowerInvokeLegacyPassPass(PassRegistry&);
void initializeLowerSwitchPass(PassRegistry&);
@@ -271,7 +275,7 @@
void initializeMemoryDependenceWrapperPassPass(PassRegistry&);
void initializeMemorySSAPrinterLegacyPassPass(PassRegistry&);
void initializeMemorySSAWrapperPassPass(PassRegistry&);
-void initializeMemorySanitizerPass(PassRegistry&);
+void initializeMemorySanitizerLegacyPassPass(PassRegistry&);
void initializeMergeFunctionsPass(PassRegistry&);
void initializeMergeICmpsPass(PassRegistry&);
void initializeMergedLoadStoreMotionLegacyPassPass(PassRegistry&);
@@ -354,7 +358,7 @@
void initializeSanitizerCoverageModulePass(PassRegistry&);
void initializeScalarEvolutionWrapperPassPass(PassRegistry&);
void initializeScalarizeMaskedMemIntrinPass(PassRegistry&);
-void initializeScalarizerPass(PassRegistry&);
+void initializeScalarizerLegacyPassPass(PassRegistry&);
void initializeScavengerTestPass(PassRegistry&);
void initializeScopedNoAliasAAWrapperPassPass(PassRegistry&);
void initializeSeparateConstOffsetFromGEPPass(PassRegistry&);
@@ -371,6 +375,8 @@
void initializeStackColoringPass(PassRegistry&);
void initializeStackMapLivenessPass(PassRegistry&);
void initializeStackProtectorPass(PassRegistry&);
+void initializeStackSafetyGlobalInfoWrapperPassPass(PassRegistry &);
+void initializeStackSafetyInfoWrapperPassPass(PassRegistry &);
void initializeStackSlotColoringPass(PassRegistry&);
void initializeStraightLineStrengthReducePass(PassRegistry&);
void initializeStripDeadDebugInfoPass(PassRegistry&);
@@ -386,7 +392,7 @@
void initializeTargetLibraryInfoWrapperPassPass(PassRegistry&);
void initializeTargetPassConfigPass(PassRegistry&);
void initializeTargetTransformInfoWrapperPassPass(PassRegistry&);
-void initializeThreadSanitizerPass(PassRegistry&);
+void initializeThreadSanitizerLegacyPassPass(PassRegistry&);
void initializeTwoAddressInstructionPassPass(PassRegistry&);
void initializeTypeBasedAAWrapperPassPass(PassRegistry&);
void initializeUnifyFunctionExitNodesPass(PassRegistry&);
@@ -396,6 +402,7 @@
void initializeVerifierLegacyPassPass(PassRegistry&);
void initializeVirtRegMapPass(PassRegistry&);
void initializeVirtRegRewriterPass(PassRegistry&);
+void initializeWarnMissedTransformationsLegacyPass(PassRegistry &);
void initializeWasmEHPreparePass(PassRegistry&);
void initializeWholeProgramDevirtPass(PassRegistry&);
void initializeWinEHPreparePass(PassRegistry&);
diff --git a/linux-x64/clang/include/llvm/LTO/Caching.h b/linux-x64/clang/include/llvm/LTO/Caching.h
index 7201ab3..c20d819 100644
--- a/linux-x64/clang/include/llvm/LTO/Caching.h
+++ b/linux-x64/clang/include/llvm/LTO/Caching.h
@@ -1,9 +1,8 @@
//===- Caching.h - LLVM Link Time Optimizer Configuration -----------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/LTO/Config.h b/linux-x64/clang/include/llvm/LTO/Config.h
index 57bba5e..f0e1b1d 100644
--- a/linux-x64/clang/include/llvm/LTO/Config.h
+++ b/linux-x64/clang/include/llvm/LTO/Config.h
@@ -1,9 +1,8 @@
//===-Config.h - LLVM Link Time Optimizer Configuration -------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -49,6 +48,10 @@
/// Use the new pass manager
bool UseNewPM = false;
+ /// Flag to indicate that the optimizer should not assume builtins are present
+ /// on the target.
+ bool Freestanding = false;
+
/// Disable entirely the optimizer, including importing for ThinLTO
bool CodeGenOnly = false;
@@ -73,6 +76,9 @@
/// Sample PGO profile path.
std::string SampleProfile;
+ /// Name remapping file for profile data.
+ std::string ProfileRemapping;
+
/// The directory to store .dwo files.
std::string DwoDir;
diff --git a/linux-x64/clang/include/llvm/LTO/LTO.h b/linux-x64/clang/include/llvm/LTO/LTO.h
index 2a3bc91..1f9d764 100644
--- a/linux-x64/clang/include/llvm/LTO/LTO.h
+++ b/linux-x64/clang/include/llvm/LTO/LTO.h
@@ -1,9 +1,8 @@
//===-LTO.h - LLVM Link Time Optimizer ------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -60,6 +59,19 @@
ModuleSummaryIndex &Index,
function_ref<bool(StringRef, GlobalValue::GUID)> isExported);
+/// Computes a unique hash for the Module considering the current list of
+/// export/import and other global analysis results.
+/// The hash is produced in \p Key.
+void computeLTOCacheKey(
+ SmallString<40> &Key, const lto::Config &Conf,
+ const ModuleSummaryIndex &Index, StringRef ModuleID,
+ const FunctionImporter::ImportMapTy &ImportList,
+ const FunctionImporter::ExportSetTy &ExportList,
+ const std::map<GlobalValue::GUID, GlobalValue::LinkageTypes> &ResolvedODR,
+ const GVSummaryMapTy &DefinedGlobals,
+ const std::set<GlobalValue::GUID> &CfiFunctionDefs = {},
+ const std::set<GlobalValue::GUID> &CfiFunctionDecls = {});
+
namespace lto {
/// Given the original \p Path to an output file, replace any path
@@ -386,7 +398,12 @@
Error runRegularLTO(AddStreamFn AddStream);
Error runThinLTO(AddStreamFn AddStream, NativeObjectCache Cache);
+ Error checkPartiallySplit();
+
mutable bool CalledGetMaxTasks = false;
+
+ // Use Optional to distinguish false from not yet initialized.
+ Optional<bool> EnableSplitLTOUnit;
};
/// The resolution for a symbol. The linker must provide a SymbolResolution for
diff --git a/linux-x64/clang/include/llvm/LTO/LTOBackend.h b/linux-x64/clang/include/llvm/LTO/LTOBackend.h
index d4743f6..4ff8a19 100644
--- a/linux-x64/clang/include/llvm/LTO/LTOBackend.h
+++ b/linux-x64/clang/include/llvm/LTO/LTOBackend.h
@@ -1,9 +1,8 @@
//===-LTOBackend.h - LLVM Link Time Optimizer Backend ---------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/LTO/SummaryBasedOptimizations.h b/linux-x64/clang/include/llvm/LTO/SummaryBasedOptimizations.h
new file mode 100644
index 0000000..6697c82
--- /dev/null
+++ b/linux-x64/clang/include/llvm/LTO/SummaryBasedOptimizations.h
@@ -0,0 +1,16 @@
+//=- llvm/LTO/SummaryBasedOptimizations.h -Link time optimizations-*- C++ -*-=//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LTO_SUMMARYBASEDOPTIMIZATIONS_H
+#define LLVM_LTO_SUMMARYBASEDOPTIMIZATIONS_H
+namespace llvm {
+class ModuleSummaryIndex;
+void computeSyntheticCounts(ModuleSummaryIndex &Index);
+
+} // namespace llvm
+#endif
diff --git a/linux-x64/clang/include/llvm/LTO/legacy/LTOCodeGenerator.h b/linux-x64/clang/include/llvm/LTO/legacy/LTOCodeGenerator.h
index f48ab02..37fef19 100644
--- a/linux-x64/clang/include/llvm/LTO/legacy/LTOCodeGenerator.h
+++ b/linux-x64/clang/include/llvm/LTO/legacy/LTOCodeGenerator.h
@@ -1,9 +1,8 @@
//===-LTOCodeGenerator.h - LLVM Link Time Optimizer -----------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -48,6 +47,9 @@
#include <string>
#include <vector>
+/// Enable global value internalization in LTO.
+extern llvm::cl::opt<bool> EnableLTOInternalization;
+
namespace llvm {
template <typename T> class ArrayRef;
class LLVMContext;
@@ -233,7 +235,7 @@
unsigned OptLevel = 2;
lto_diagnostic_handler_t DiagHandler = nullptr;
void *DiagContext = nullptr;
- bool ShouldInternalize = true;
+ bool ShouldInternalize = EnableLTOInternalization;
bool ShouldEmbedUselists = false;
bool ShouldRestoreGlobalsLinkage = false;
TargetMachine::CodeGenFileType FileType = TargetMachine::CGFT_ObjectFile;
diff --git a/linux-x64/clang/include/llvm/LTO/legacy/LTOModule.h b/linux-x64/clang/include/llvm/LTO/legacy/LTOModule.h
index 017e223..006521b 100644
--- a/linux-x64/clang/include/llvm/LTO/legacy/LTOModule.h
+++ b/linux-x64/clang/include/llvm/LTO/legacy/LTOModule.h
@@ -1,9 +1,8 @@
//===-LTOModule.h - LLVM Link Time Optimizer ------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h b/linux-x64/clang/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h
index 2ff317a..1730e83 100644
--- a/linux-x64/clang/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h
+++ b/linux-x64/clang/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h
@@ -1,9 +1,8 @@
//===-ThinLTOCodeGenerator.h - LLVM Link Time Optimizer -------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -273,8 +272,8 @@
/**
* Compute and emit the imported files for module at \p ModulePath.
*/
- static void emitImports(StringRef ModulePath, StringRef OutputName,
- ModuleSummaryIndex &Index);
+ void emitImports(Module &Module, StringRef OutputName,
+ ModuleSummaryIndex &Index);
/**
* Perform cross-module importing for the module identified by
@@ -285,8 +284,8 @@
/**
* Compute the list of summaries needed for importing into module.
*/
- static void gatherImportedSummariesForModule(
- StringRef ModulePath, ModuleSummaryIndex &Index,
+ void gatherImportedSummariesForModule(
+ Module &Module, ModuleSummaryIndex &Index,
std::map<std::string, GVSummaryMapTy> &ModuleToSummariesForIndex);
/**
diff --git a/linux-x64/clang/include/llvm/LTO/legacy/UpdateCompilerUsed.h b/linux-x64/clang/include/llvm/LTO/legacy/UpdateCompilerUsed.h
index 4be0027..af9d62b 100644
--- a/linux-x64/clang/include/llvm/LTO/legacy/UpdateCompilerUsed.h
+++ b/linux-x64/clang/include/llvm/LTO/legacy/UpdateCompilerUsed.h
@@ -1,9 +1,8 @@
//==------ UpdateCompilerUsed.h - LLVM Link Time Optimizer Utility --------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/LineEditor/LineEditor.h b/linux-x64/clang/include/llvm/LineEditor/LineEditor.h
index 68995d0..0beaf1b 100644
--- a/linux-x64/clang/include/llvm/LineEditor/LineEditor.h
+++ b/linux-x64/clang/include/llvm/LineEditor/LineEditor.h
@@ -1,9 +1,8 @@
//===-- llvm/LineEditor/LineEditor.h - line editor --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/LinkAllIR.h b/linux-x64/clang/include/llvm/LinkAllIR.h
index 4f4af71..4b0aabe 100644
--- a/linux-x64/clang/include/llvm/LinkAllIR.h
+++ b/linux-x64/clang/include/llvm/LinkAllIR.h
@@ -1,9 +1,8 @@
//===----- LinkAllIR.h - Reference All VMCore Code --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/LinkAllPasses.h b/linux-x64/clang/include/llvm/LinkAllPasses.h
index e2378ce..ec81b16 100644
--- a/linux-x64/clang/include/llvm/LinkAllPasses.h
+++ b/linux-x64/clang/include/llvm/LinkAllPasses.h
@@ -1,9 +1,8 @@
//===- llvm/LinkAllPasses.h ------------ Reference All Passes ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -50,6 +49,7 @@
#include "llvm/Transforms/Scalar.h"
#include "llvm/Transforms/Scalar/GVN.h"
#include "llvm/Transforms/Scalar/InstSimplifyPass.h"
+#include "llvm/Transforms/Scalar/Scalarizer.h"
#include "llvm/Transforms/Utils.h"
#include "llvm/Transforms/Utils/SymbolRewriter.h"
#include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h"
@@ -219,6 +219,7 @@
(void) llvm::createFloat2IntPass();
(void) llvm::createEliminateAvailableExternallyPass();
(void) llvm::createScalarizeMaskedMemIntrinPass();
+ (void) llvm::createWarnMissedTransformationsPass();
(void)new llvm::IntervalPartition();
(void)new llvm::ScalarEvolutionWrapperPass();
@@ -228,7 +229,8 @@
llvm::TargetLibraryInfo TLI(TLII);
llvm::AliasAnalysis AA(TLI);
llvm::AliasSetTracker X(AA);
- X.add(nullptr, 0, llvm::AAMDNodes()); // for -print-alias-sets
+ X.add(nullptr, llvm::LocationSize::unknown(),
+ llvm::AAMDNodes()); // for -print-alias-sets
(void) llvm::AreStatisticsEnabled();
(void) llvm::sys::RunningOnValgrind();
}
diff --git a/linux-x64/clang/include/llvm/Linker/IRMover.h b/linux-x64/clang/include/llvm/Linker/IRMover.h
index 235ada4..e5df83f 100644
--- a/linux-x64/clang/include/llvm/Linker/IRMover.h
+++ b/linux-x64/clang/include/llvm/Linker/IRMover.h
@@ -1,9 +1,8 @@
//===- IRMover.h ------------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Linker/Linker.h b/linux-x64/clang/include/llvm/Linker/Linker.h
index 7776c72..c9b1d42 100644
--- a/linux-x64/clang/include/llvm/Linker/Linker.h
+++ b/linux-x64/clang/include/llvm/Linker/Linker.h
@@ -1,9 +1,8 @@
//===- Linker.h - Module Linker Interface -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/ConstantPools.h b/linux-x64/clang/include/llvm/MC/ConstantPools.h
index ef33250..2fe5ce2 100644
--- a/linux-x64/clang/include/llvm/MC/ConstantPools.h
+++ b/linux-x64/clang/include/llvm/MC/ConstantPools.h
@@ -1,9 +1,8 @@
-//===- ConstantPool.h - Keep track of assembler-generated ------*- C++ -*-===//
+//===- ConstantPools.h - Keep track of assembler-generated ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/MC/LaneBitmask.h b/linux-x64/clang/include/llvm/MC/LaneBitmask.h
index 8c0b4ec..d5f6928 100644
--- a/linux-x64/clang/include/llvm/MC/LaneBitmask.h
+++ b/linux-x64/clang/include/llvm/MC/LaneBitmask.h
@@ -1,9 +1,8 @@
//===- llvm/MC/LaneBitmask.h ------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/MC/MCAsmBackend.h b/linux-x64/clang/include/llvm/MC/MCAsmBackend.h
index 030d3c0..1f3ad6c 100644
--- a/linux-x64/clang/include/llvm/MC/MCAsmBackend.h
+++ b/linux-x64/clang/include/llvm/MC/MCAsmBackend.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCAsmBackend.h - MC Asm Backend ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -88,6 +87,22 @@
return false;
}
+ /// Hook to check if extra nop bytes must be inserted for alignment directive.
+ /// For some targets this may be necessary in order to support linker
+ /// relaxation. The number of bytes to insert are returned in Size.
+ virtual bool shouldInsertExtraNopBytesForCodeAlign(const MCAlignFragment &AF,
+ unsigned &Size) {
+ return false;
+ }
+
+ /// Hook which indicates if the target requires a fixup to be generated when
+ /// handling an align directive in an executable section
+ virtual bool shouldInsertFixupForCodeAlign(MCAssembler &Asm,
+ const MCAsmLayout &Layout,
+ MCAlignFragment &AF) {
+ return false;
+ }
+
/// Apply the \p Value for given \p Fixup into the provided data fragment, at
/// the offset specified by the fixup and following the fixup kind as
/// appropriate. Errors (such as an out of range fixup value) should be
@@ -165,6 +180,11 @@
return 0;
}
+ /// Check whether a given symbol has been flagged with MICROMIPS flag.
+ virtual bool isMicroMips(const MCSymbol *Sym) const {
+ return false;
+ }
+
/// Handles all target related code padding when starting to write a new
/// basic block to an object file.
///
diff --git a/linux-x64/clang/include/llvm/MC/MCAsmInfo.h b/linux-x64/clang/include/llvm/MC/MCAsmInfo.h
index 120fb8f..e861df5 100644
--- a/linux-x64/clang/include/llvm/MC/MCAsmInfo.h
+++ b/linux-x64/clang/include/llvm/MC/MCAsmInfo.h
@@ -1,9 +1,8 @@
//===-- llvm/MC/MCAsmInfo.h - Asm info --------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -492,7 +491,7 @@
StringRef getPrivateLabelPrefix() const { return PrivateLabelPrefix; }
bool hasLinkerPrivateGlobalPrefix() const {
- return LinkerPrivateGlobalPrefix[0] != '\0';
+ return !LinkerPrivateGlobalPrefix.empty();
}
StringRef getLinkerPrivateGlobalPrefix() const {
diff --git a/linux-x64/clang/include/llvm/MC/MCAsmInfoCOFF.h b/linux-x64/clang/include/llvm/MC/MCAsmInfoCOFF.h
index 01c8ae4..1dfb475 100644
--- a/linux-x64/clang/include/llvm/MC/MCAsmInfoCOFF.h
+++ b/linux-x64/clang/include/llvm/MC/MCAsmInfoCOFF.h
@@ -1,9 +1,8 @@
//===- MCAsmInfoCOFF.h - COFF asm properties --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCAsmInfoDarwin.h b/linux-x64/clang/include/llvm/MC/MCAsmInfoDarwin.h
index a533d60..c889ce9 100644
--- a/linux-x64/clang/include/llvm/MC/MCAsmInfoDarwin.h
+++ b/linux-x64/clang/include/llvm/MC/MCAsmInfoDarwin.h
@@ -1,9 +1,8 @@
//===- MCAsmInfoDarwin.h - Darwin asm properties ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/MC/MCAsmInfoELF.h b/linux-x64/clang/include/llvm/MC/MCAsmInfoELF.h
index f113afc..aa2e587 100644
--- a/linux-x64/clang/include/llvm/MC/MCAsmInfoELF.h
+++ b/linux-x64/clang/include/llvm/MC/MCAsmInfoELF.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCAsmInfoELF.h - ELF Asm info --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCAsmInfoWasm.h b/linux-x64/clang/include/llvm/MC/MCAsmInfoWasm.h
index 71c6ee2..3afc610 100644
--- a/linux-x64/clang/include/llvm/MC/MCAsmInfoWasm.h
+++ b/linux-x64/clang/include/llvm/MC/MCAsmInfoWasm.h
@@ -1,9 +1,8 @@
//===-- llvm/MC/MCAsmInfoWasm.h - Wasm Asm info -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCAsmLayout.h b/linux-x64/clang/include/llvm/MC/MCAsmLayout.h
index b711db3..45ac96f 100644
--- a/linux-x64/clang/include/llvm/MC/MCAsmLayout.h
+++ b/linux-x64/clang/include/llvm/MC/MCAsmLayout.h
@@ -1,9 +1,8 @@
//===- MCAsmLayout.h - Assembly Layout Object -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCAsmMacro.h b/linux-x64/clang/include/llvm/MC/MCAsmMacro.h
index 09b32c7..364d3b5 100644
--- a/linux-x64/clang/include/llvm/MC/MCAsmMacro.h
+++ b/linux-x64/clang/include/llvm/MC/MCAsmMacro.h
@@ -1,9 +1,8 @@
//===- MCAsmMacro.h - Assembly Macros ---------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -52,7 +51,7 @@
Pipe, PipePipe, Caret,
Amp, AmpAmp, Exclaim, ExclaimEqual, Percent, Hash,
Less, LessEqual, LessLess, LessGreater,
- Greater, GreaterEqual, GreaterGreater, At,
+ Greater, GreaterEqual, GreaterGreater, At, MinusGreater,
// MIPS unary expression operators such as %neg.
PercentCall16, PercentCall_Hi, PercentCall_Lo, PercentDtprel_Hi,
diff --git a/linux-x64/clang/include/llvm/MC/MCAssembler.h b/linux-x64/clang/include/llvm/MC/MCAssembler.h
index 0f9499d..4543018 100644
--- a/linux-x64/clang/include/llvm/MC/MCAssembler.h
+++ b/linux-x64/clang/include/llvm/MC/MCAssembler.h
@@ -1,9 +1,8 @@
//===- MCAssembler.h - Object File Generation -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -23,6 +22,7 @@
#include "llvm/MC/MCFragment.h"
#include "llvm/MC/MCLinkerOptimizationHint.h"
#include "llvm/MC/MCSymbol.h"
+#include "llvm/Support/VersionTuple.h"
#include <cassert>
#include <cstddef>
#include <cstdint>
@@ -94,6 +94,8 @@
unsigned Major;
unsigned Minor;
unsigned Update;
+ /// An optional version of the SDK that was used to build the source.
+ VersionTuple SDKVersion;
};
private:
@@ -255,20 +257,24 @@
/// MachO deployment target version information.
const VersionInfoType &getVersionInfo() const { return VersionInfo; }
void setVersionMin(MCVersionMinType Type, unsigned Major, unsigned Minor,
- unsigned Update) {
+ unsigned Update,
+ VersionTuple SDKVersion = VersionTuple()) {
VersionInfo.EmitBuildVersion = false;
VersionInfo.TypeOrPlatform.Type = Type;
VersionInfo.Major = Major;
VersionInfo.Minor = Minor;
VersionInfo.Update = Update;
+ VersionInfo.SDKVersion = SDKVersion;
}
void setBuildVersion(MachO::PlatformType Platform, unsigned Major,
- unsigned Minor, unsigned Update) {
+ unsigned Minor, unsigned Update,
+ VersionTuple SDKVersion = VersionTuple()) {
VersionInfo.EmitBuildVersion = true;
VersionInfo.TypeOrPlatform.Platform = Platform;
VersionInfo.Major = Major;
VersionInfo.Minor = Minor;
VersionInfo.Update = Update;
+ VersionInfo.SDKVersion = SDKVersion;
}
/// Reuse an assembler instance
diff --git a/linux-x64/clang/include/llvm/MC/MCCodeEmitter.h b/linux-x64/clang/include/llvm/MC/MCCodeEmitter.h
index f1b0b78..04b4367 100644
--- a/linux-x64/clang/include/llvm/MC/MCCodeEmitter.h
+++ b/linux-x64/clang/include/llvm/MC/MCCodeEmitter.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCCodeEmitter.h - Instruction Encoding -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCCodePadder.h b/linux-x64/clang/include/llvm/MC/MCCodePadder.h
index 4dde6bf..f7b1a21 100644
--- a/linux-x64/clang/include/llvm/MC/MCCodePadder.h
+++ b/linux-x64/clang/include/llvm/MC/MCCodePadder.h
@@ -1,9 +1,8 @@
-//===- llvm/MC/CodePadder.h - MC Code Padder --------------------*- C++ -*-===//
+//===- llvm/MC/MCCodePadder.h - MC Code Padder ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCCodeView.h b/linux-x64/clang/include/llvm/MC/MCCodeView.h
index 2678cf4..2126354 100644
--- a/linux-x64/clang/include/llvm/MC/MCCodeView.h
+++ b/linux-x64/clang/include/llvm/MC/MCCodeView.h
@@ -1,9 +1,8 @@
//===- MCCodeView.h - Machine Code CodeView support -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -194,7 +193,7 @@
void encodeInlineLineTable(MCAsmLayout &Layout,
MCCVInlineLineTableFragment &F);
- void
+ MCFragment *
emitDefRange(MCObjectStreamer &OS,
ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
StringRef FixedSizePortion);
diff --git a/linux-x64/clang/include/llvm/MC/MCContext.h b/linux-x64/clang/include/llvm/MC/MCContext.h
index 3b8ac8b..b964965 100644
--- a/linux-x64/clang/include/llvm/MC/MCContext.h
+++ b/linux-x64/clang/include/llvm/MC/MCContext.h
@@ -1,9 +1,8 @@
//===- MCContext.h - Machine Code Context -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCDirectives.h b/linux-x64/clang/include/llvm/MC/MCDirectives.h
index 8c74b16..4029264 100644
--- a/linux-x64/clang/include/llvm/MC/MCDirectives.h
+++ b/linux-x64/clang/include/llvm/MC/MCDirectives.h
@@ -1,9 +1,8 @@
//===- MCDirectives.h - Enums for directives on various targets -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -20,6 +19,7 @@
MCSA_Invalid = 0, ///< Not a valid directive.
// Various directives in alphabetical order.
+ MCSA_Cold, ///< .cold (MachO)
MCSA_ELF_TypeFunction, ///< .type _foo, STT_FUNC # aka @function
MCSA_ELF_TypeIndFunction, ///< .type _foo, STT_GNU_IFUNC
MCSA_ELF_TypeObject, ///< .type _foo, STT_OBJECT # aka @object
diff --git a/linux-x64/clang/include/llvm/MC/MCDisassembler/MCDisassembler.h b/linux-x64/clang/include/llvm/MC/MCDisassembler/MCDisassembler.h
index 7f09c05..268f3cc 100644
--- a/linux-x64/clang/include/llvm/MC/MCDisassembler/MCDisassembler.h
+++ b/linux-x64/clang/include/llvm/MC/MCDisassembler/MCDisassembler.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCDisassembler.h - Disassembler interface --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -17,6 +16,7 @@
namespace llvm {
template <typename T> class ArrayRef;
+class StringRef;
class MCContext;
class MCInst;
class MCSubtargetInfo;
@@ -80,6 +80,23 @@
raw_ostream &VStream,
raw_ostream &CStream) const = 0;
+ /// May parse any prelude that precedes instructions after the start of a
+ /// symbol. Needed for some targets, e.g. WebAssembly.
+ ///
+ /// \param Name - The name of the symbol.
+ /// \param Size - The number of bytes consumed.
+ /// \param Address - The address, in the memory space of region, of the first
+ /// byte of the symbol.
+ /// \param Bytes - A reference to the actual bytes at the symbol location.
+ /// \param VStream - The stream to print warnings and diagnostic messages on.
+ /// \param CStream - The stream to print comments and annotations on.
+ /// \return - MCDisassembler::Success if the bytes are valid,
+ /// MCDisassembler::Fail if the bytes were invalid.
+ virtual DecodeStatus onSymbolStart(StringRef Name, uint64_t &Size,
+ ArrayRef<uint8_t> Bytes, uint64_t Address,
+ raw_ostream &VStream,
+ raw_ostream &CStream) const;
+
private:
MCContext &Ctx;
diff --git a/linux-x64/clang/include/llvm/MC/MCDisassembler/MCExternalSymbolizer.h b/linux-x64/clang/include/llvm/MC/MCDisassembler/MCExternalSymbolizer.h
index df909a0..ffac5ee 100644
--- a/linux-x64/clang/include/llvm/MC/MCDisassembler/MCExternalSymbolizer.h
+++ b/linux-x64/clang/include/llvm/MC/MCDisassembler/MCExternalSymbolizer.h
@@ -1,9 +1,8 @@
//===-- llvm/MC/MCExternalSymbolizer.h - ------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/MC/MCDisassembler/MCRelocationInfo.h b/linux-x64/clang/include/llvm/MC/MCDisassembler/MCRelocationInfo.h
index 6030ae6..efc59da 100644
--- a/linux-x64/clang/include/llvm/MC/MCDisassembler/MCRelocationInfo.h
+++ b/linux-x64/clang/include/llvm/MC/MCDisassembler/MCRelocationInfo.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCRelocationInfo.h -------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/MC/MCDisassembler/MCSymbolizer.h b/linux-x64/clang/include/llvm/MC/MCDisassembler/MCSymbolizer.h
index 0bfa569..b7ca83a 100644
--- a/linux-x64/clang/include/llvm/MC/MCDisassembler/MCSymbolizer.h
+++ b/linux-x64/clang/include/llvm/MC/MCDisassembler/MCSymbolizer.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCSymbolizer.h - MCSymbolizer class --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/MC/MCDwarf.h b/linux-x64/clang/include/llvm/MC/MCDwarf.h
index 2bfaf19..8eaa152 100644
--- a/linux-x64/clang/include/llvm/MC/MCDwarf.h
+++ b/linux-x64/clang/include/llvm/MC/MCDwarf.h
@@ -1,9 +1,8 @@
//===- MCDwarf.h - Machine Code Dwarf support -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -430,6 +429,7 @@
OpUndefined,
OpRegister,
OpWindowSave,
+ OpNegateRAState,
OpGnuArgsSize
};
@@ -509,6 +509,11 @@
return MCCFIInstruction(OpWindowSave, L, 0, 0, "");
}
+ /// .cfi_negate_ra_state AArch64 negate RA state.
+ static MCCFIInstruction createNegateRAState(MCSymbol *L) {
+ return MCCFIInstruction(OpNegateRAState, L, 0, 0, "");
+ }
+
/// .cfi_restore says that the rule for Register is now the same as it
/// was at the beginning of the function, after all initial instructions added
/// by .cfi_startproc were executed.
@@ -593,6 +598,7 @@
bool IsSignalFrame = false;
bool IsSimple = false;
unsigned RAReg = static_cast<unsigned>(INT_MAX);
+ bool IsBKeyFrame = false;
};
class MCDwarfFrameEmitter {
diff --git a/linux-x64/clang/include/llvm/MC/MCELFObjectWriter.h b/linux-x64/clang/include/llvm/MC/MCELFObjectWriter.h
index f226d6a..9ff7011 100644
--- a/linux-x64/clang/include/llvm/MC/MCELFObjectWriter.h
+++ b/linux-x64/clang/include/llvm/MC/MCELFObjectWriter.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCELFObjectWriter.h - ELF Object Writer ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCELFStreamer.h b/linux-x64/clang/include/llvm/MC/MCELFStreamer.h
index 3797079..8838d53 100644
--- a/linux-x64/clang/include/llvm/MC/MCELFStreamer.h
+++ b/linux-x64/clang/include/llvm/MC/MCELFStreamer.h
@@ -1,9 +1,8 @@
//===- MCELFStreamer.h - MCStreamer ELF Object File Interface ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCExpr.h b/linux-x64/clang/include/llvm/MC/MCExpr.h
index 23dde10..8531630 100644
--- a/linux-x64/clang/include/llvm/MC/MCExpr.h
+++ b/linux-x64/clang/include/llvm/MC/MCExpr.h
@@ -1,9 +1,8 @@
//===- MCExpr.h - Assembly Level Expressions --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -288,6 +287,7 @@
VK_WebAssembly_FUNCTION, // Function table index, rather than virtual addr
VK_WebAssembly_GLOBAL, // Global object index
VK_WebAssembly_TYPEINDEX,// Type table index
+ VK_WebAssembly_EVENT, // Event index
VK_AMDGPU_GOTPCREL32_LO, // symbol@gotpcrel32@lo
VK_AMDGPU_GOTPCREL32_HI, // symbol@gotpcrel32@hi
diff --git a/linux-x64/clang/include/llvm/MC/MCFixedLenDisassembler.h b/linux-x64/clang/include/llvm/MC/MCFixedLenDisassembler.h
index ad34d94..218ae0d 100644
--- a/linux-x64/clang/include/llvm/MC/MCFixedLenDisassembler.h
+++ b/linux-x64/clang/include/llvm/MC/MCFixedLenDisassembler.h
@@ -1,9 +1,8 @@
//===-- llvm/MC/MCFixedLenDisassembler.h - Decoder driver -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// Fixed length disassembler decoder state machine driver.
diff --git a/linux-x64/clang/include/llvm/MC/MCFixup.h b/linux-x64/clang/include/llvm/MC/MCFixup.h
index 5f301ea..559a19e 100644
--- a/linux-x64/clang/include/llvm/MC/MCFixup.h
+++ b/linux-x64/clang/include/llvm/MC/MCFixup.h
@@ -1,9 +1,8 @@
//===-- llvm/MC/MCFixup.h - Instruction Relocation and Patching -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCFixupKindInfo.h b/linux-x64/clang/include/llvm/MC/MCFixupKindInfo.h
index 483abb3..0ea3486 100644
--- a/linux-x64/clang/include/llvm/MC/MCFixupKindInfo.h
+++ b/linux-x64/clang/include/llvm/MC/MCFixupKindInfo.h
@@ -1,9 +1,8 @@
//===-- llvm/MC/MCFixupKindInfo.h - Fixup Descriptors -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCFragment.h b/linux-x64/clang/include/llvm/MC/MCFragment.h
index c999c9f..aadf2ce 100644
--- a/linux-x64/clang/include/llvm/MC/MCFragment.h
+++ b/linux-x64/clang/include/llvm/MC/MCFragment.h
@@ -1,9 +1,8 @@
//===- MCFragment.h - Fragment type hierarchy -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCInst.h b/linux-x64/clang/include/llvm/MC/MCInst.h
index 67bb11a..9675b78 100644
--- a/linux-x64/clang/include/llvm/MC/MCInst.h
+++ b/linux-x64/clang/include/llvm/MC/MCInst.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCInst.h - MCInst class --------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -154,8 +153,6 @@
bool evaluateAsConstantImm(int64_t &Imm) const;
};
-template <> struct isPodLike<MCOperand> { static const bool value = true; };
-
/// Instances of this class represent a single low-level machine
/// instruction.
class MCInst {
@@ -208,6 +205,8 @@
/// string.
void dump_pretty(raw_ostream &OS, const MCInstPrinter *Printer = nullptr,
StringRef Separator = " ") const;
+ void dump_pretty(raw_ostream &OS, StringRef Name,
+ StringRef Separator = " ") const;
};
inline raw_ostream& operator<<(raw_ostream &OS, const MCOperand &MO) {
diff --git a/linux-x64/clang/include/llvm/MC/MCInstBuilder.h b/linux-x64/clang/include/llvm/MC/MCInstBuilder.h
index c5c4f48..0c8e01f 100644
--- a/linux-x64/clang/include/llvm/MC/MCInstBuilder.h
+++ b/linux-x64/clang/include/llvm/MC/MCInstBuilder.h
@@ -1,9 +1,8 @@
//===-- llvm/MC/MCInstBuilder.h - Simplify creation of MCInsts --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/MC/MCInstPrinter.h b/linux-x64/clang/include/llvm/MC/MCInstPrinter.h
index df221e1..916aa89 100644
--- a/linux-x64/clang/include/llvm/MC/MCInstPrinter.h
+++ b/linux-x64/clang/include/llvm/MC/MCInstPrinter.h
@@ -1,9 +1,8 @@
//===- MCInstPrinter.h - MCInst to target assembly syntax -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCInstrAnalysis.h b/linux-x64/clang/include/llvm/MC/MCInstrAnalysis.h
index 950a1af..dfefd7e 100644
--- a/linux-x64/clang/include/llvm/MC/MCInstrAnalysis.h
+++ b/linux-x64/clang/include/llvm/MC/MCInstrAnalysis.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCInstrAnalysis.h - InstrDesc target hooks -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -136,6 +135,17 @@
return isZeroIdiom(MI, Mask, CPUID);
}
+ /// Returns true if MI is a candidate for move elimination.
+ ///
+ /// Different subtargets may apply different constraints to optimizable
+ /// register moves. For example, on most X86 subtargets, a candidate for move
+ /// elimination cannot specify the same register for both source and
+ /// destination.
+ virtual bool isOptimizableRegisterMove(const MCInst &MI,
+ unsigned CPUID) const {
+ return false;
+ }
+
/// Given a branch instruction try to get the address the branch
/// targets. Return true on success, and the address in Target.
virtual bool
diff --git a/linux-x64/clang/include/llvm/MC/MCInstrDesc.h b/linux-x64/clang/include/llvm/MC/MCInstrDesc.h
index ba97aeb..ad5a3e9 100644
--- a/linux-x64/clang/include/llvm/MC/MCInstrDesc.h
+++ b/linux-x64/clang/include/llvm/MC/MCInstrDesc.h
@@ -1,9 +1,8 @@
//===-- llvm/MC/MCInstrDesc.h - Instruction Descriptors -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -151,7 +150,8 @@
InsertSubreg,
Convergent,
Add,
- Trap
+ Trap,
+ VariadicOpsAreDefs,
};
}
@@ -383,6 +383,11 @@
/// additional values.
bool isConvergent() const { return Flags & (1ULL << MCID::Convergent); }
+ /// Return true if variadic operands of this instruction are definitions.
+ bool variadicOpsAreDefs() const {
+ return Flags & (1ULL << MCID::VariadicOpsAreDefs);
+ }
+
//===--------------------------------------------------------------------===//
// Side Effect Analysis
//===--------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCInstrInfo.h b/linux-x64/clang/include/llvm/MC/MCInstrInfo.h
index 18da87c..874b1e4 100644
--- a/linux-x64/clang/include/llvm/MC/MCInstrInfo.h
+++ b/linux-x64/clang/include/llvm/MC/MCInstrInfo.h
@@ -1,9 +1,8 @@
//===-- llvm/MC/MCInstrInfo.h - Target Instruction Info ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/MC/MCInstrItineraries.h b/linux-x64/clang/include/llvm/MC/MCInstrItineraries.h
index fe81376..485aa66 100644
--- a/linux-x64/clang/include/llvm/MC/MCInstrItineraries.h
+++ b/linux-x64/clang/include/llvm/MC/MCInstrItineraries.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCInstrItineraries.h - Scheduling ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/MC/MCLabel.h b/linux-x64/clang/include/llvm/MC/MCLabel.h
index aaf7069..0b8afac 100644
--- a/linux-x64/clang/include/llvm/MC/MCLabel.h
+++ b/linux-x64/clang/include/llvm/MC/MCLabel.h
@@ -1,9 +1,8 @@
//===- MCLabel.h - Machine Code Directional Local Labels --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/MC/MCLinkerOptimizationHint.h b/linux-x64/clang/include/llvm/MC/MCLinkerOptimizationHint.h
index f0fd07f..f2a1364 100644
--- a/linux-x64/clang/include/llvm/MC/MCLinkerOptimizationHint.h
+++ b/linux-x64/clang/include/llvm/MC/MCLinkerOptimizationHint.h
@@ -1,10 +1,9 @@
//===- MCLinkerOptimizationHint.h - LOH interface ---------------*- C++ -*-===//
//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/MC/MCMachObjectWriter.h b/linux-x64/clang/include/llvm/MC/MCMachObjectWriter.h
index 22fbeb7..278aebe 100644
--- a/linux-x64/clang/include/llvm/MC/MCMachObjectWriter.h
+++ b/linux-x64/clang/include/llvm/MC/MCMachObjectWriter.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCMachObjectWriter.h - Mach Object Writer --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCObjectFileInfo.h b/linux-x64/clang/include/llvm/MC/MCObjectFileInfo.h
index 8cf9e1c..0c1ade4 100644
--- a/linux-x64/clang/include/llvm/MC/MCObjectFileInfo.h
+++ b/linux-x64/clang/include/llvm/MC/MCObjectFileInfo.h
@@ -1,9 +1,8 @@
//===-- llvm/MC/MCObjectFileInfo.h - Object File Info -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -18,6 +17,7 @@
#include "llvm/ADT/Triple.h"
#include "llvm/MC/MCSymbol.h"
#include "llvm/Support/CodeGen.h"
+#include "llvm/Support/VersionTuple.h"
namespace llvm {
class MCContext;
@@ -117,6 +117,8 @@
MCSection *DwarfAddrSection;
/// The DWARF v5 range list section.
MCSection *DwarfRnglistsSection;
+ /// The DWARF v5 locations list section.
+ MCSection *DwarfLoclistsSection;
/// The DWARF v5 range list section for fission.
MCSection *DwarfRnglistsDWOSection;
@@ -239,6 +241,9 @@
MCSection *getCompactUnwindSection() const { return CompactUnwindSection; }
MCSection *getDwarfAbbrevSection() const { return DwarfAbbrevSection; }
MCSection *getDwarfInfoSection() const { return DwarfInfoSection; }
+ MCSection *getDwarfInfoSection(uint64_t Hash) const {
+ return getDwarfComdatSection(".debug_info", Hash);
+ }
MCSection *getDwarfLineSection() const { return DwarfLineSection; }
MCSection *getDwarfLineStrSection() const { return DwarfLineStrSection; }
MCSection *getDwarfFrameSection() const { return DwarfFrameSection; }
@@ -258,6 +263,7 @@
MCSection *getDwarfARangesSection() const { return DwarfARangesSection; }
MCSection *getDwarfRangesSection() const { return DwarfRangesSection; }
MCSection *getDwarfRnglistsSection() const { return DwarfRnglistsSection; }
+ MCSection *getDwarfLoclistsSection() const { return DwarfLoclistsSection; }
MCSection *getDwarfMacinfoSection() const { return DwarfMacinfoSection; }
MCSection *getDwarfDebugNamesSection() const {
@@ -274,7 +280,9 @@
return DwarfAccelTypesSection;
}
MCSection *getDwarfInfoDWOSection() const { return DwarfInfoDWOSection; }
- MCSection *getDwarfTypesSection(uint64_t Hash) const;
+ MCSection *getDwarfTypesSection(uint64_t Hash) const {
+ return getDwarfComdatSection(".debug_types", Hash);
+ }
MCSection *getDwarfTypesDWOSection() const { return DwarfTypesDWOSection; }
MCSection *getDwarfAbbrevDWOSection() const { return DwarfAbbrevDWOSection; }
MCSection *getDwarfStrDWOSection() const { return DwarfStrDWOSection; }
@@ -382,14 +390,22 @@
bool PositionIndependent;
MCContext *Ctx;
Triple TT;
+ VersionTuple SDKVersion;
void initMachOMCObjectFileInfo(const Triple &T);
void initELFMCObjectFileInfo(const Triple &T, bool Large);
void initCOFFMCObjectFileInfo(const Triple &T);
void initWasmMCObjectFileInfo(const Triple &T);
+ MCSection *getDwarfComdatSection(const char *Name, uint64_t Hash) const;
public:
const Triple &getTargetTriple() const { return TT; }
+
+ void setSDKVersion(const VersionTuple &TheSDKVersion) {
+ SDKVersion = TheSDKVersion;
+ }
+
+ const VersionTuple &getSDKVersion() const { return SDKVersion; }
};
} // end namespace llvm
diff --git a/linux-x64/clang/include/llvm/MC/MCObjectStreamer.h b/linux-x64/clang/include/llvm/MC/MCObjectStreamer.h
index c9e577b..8affca4 100644
--- a/linux-x64/clang/include/llvm/MC/MCObjectStreamer.h
+++ b/linux-x64/clang/include/llvm/MC/MCObjectStreamer.h
@@ -1,9 +1,8 @@
//===- MCObjectStreamer.h - MCStreamer Object File Interface ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -39,12 +38,21 @@
bool EmitEHFrame;
bool EmitDebugFrame;
SmallVector<MCSymbol *, 2> PendingLabels;
+ struct PendingMCFixup {
+ const MCSymbol *Sym;
+ MCFixup Fixup;
+ MCDataFragment *DF;
+ PendingMCFixup(const MCSymbol *McSym, MCDataFragment *F, MCFixup McFixup)
+ : Sym(McSym), Fixup(McFixup), DF(F) {}
+ };
+ SmallVector<PendingMCFixup, 2> PendingFixups;
virtual void EmitInstToData(const MCInst &Inst, const MCSubtargetInfo&) = 0;
void EmitCFIStartProcImpl(MCDwarfFrameInfo &Frame) override;
void EmitCFIEndProcImpl(MCDwarfFrameInfo &Frame) override;
MCSymbol *EmitCFILabel() override;
void EmitInstructionImpl(const MCInst &Inst, const MCSubtargetInfo &STI);
+ void resolvePendingFixups();
protected:
MCObjectStreamer(MCContext &Context, std::unique_ptr<MCAsmBackend> TAB,
@@ -107,8 +115,7 @@
void EmitSLEB128Value(const MCExpr *Value) override;
void EmitWeakReference(MCSymbol *Alias, const MCSymbol *Symbol) override;
void ChangeSection(MCSection *Section, const MCExpr *Subsection) override;
- void EmitInstruction(const MCInst &Inst, const MCSubtargetInfo &STI,
- bool = false) override;
+ void EmitInstruction(const MCInst &Inst, const MCSubtargetInfo &STI) override;
/// Emit an instruction to a special fragment, because this instruction
/// can change its size during relaxation.
diff --git a/linux-x64/clang/include/llvm/MC/MCObjectWriter.h b/linux-x64/clang/include/llvm/MC/MCObjectWriter.h
index 8bae2bf..2547b2b 100644
--- a/linux-x64/clang/include/llvm/MC/MCObjectWriter.h
+++ b/linux-x64/clang/include/llvm/MC/MCObjectWriter.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCObjectWriter.h - Object File Writer Interface --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCParser/AsmCond.h b/linux-x64/clang/include/llvm/MC/MCParser/AsmCond.h
index a6e0fbd..ea21550 100644
--- a/linux-x64/clang/include/llvm/MC/MCParser/AsmCond.h
+++ b/linux-x64/clang/include/llvm/MC/MCParser/AsmCond.h
@@ -1,9 +1,8 @@
//===- AsmCond.h - Assembly file conditional assembly ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCParser/AsmLexer.h b/linux-x64/clang/include/llvm/MC/MCParser/AsmLexer.h
index 207183a..b729449 100644
--- a/linux-x64/clang/include/llvm/MC/MCParser/AsmLexer.h
+++ b/linux-x64/clang/include/llvm/MC/MCParser/AsmLexer.h
@@ -1,9 +1,8 @@
//===- AsmLexer.h - Lexer for Assembly Files --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -30,7 +29,6 @@
StringRef CurBuf;
bool IsAtStartOfLine = true;
bool IsAtStartOfStatement = true;
- bool IsParsingMSInlineAsm = false;
bool IsPeeking = false;
protected:
@@ -44,7 +42,6 @@
~AsmLexer() override;
void setBuffer(StringRef Buf, const char *ptr = nullptr);
- void setParsingMSInlineAsm(bool V) { IsParsingMSInlineAsm = V; }
StringRef LexUntilEndOfStatement() override;
diff --git a/linux-x64/clang/include/llvm/MC/MCParser/MCAsmLexer.h b/linux-x64/clang/include/llvm/MC/MCParser/MCAsmLexer.h
index 8ff0df2..e89abea 100644
--- a/linux-x64/clang/include/llvm/MC/MCParser/MCAsmLexer.h
+++ b/linux-x64/clang/include/llvm/MC/MCParser/MCAsmLexer.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCAsmLexer.h - Abstract Asm Lexer Interface ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -50,6 +49,7 @@
bool SkipSpace = true;
bool AllowAtInIdentifier;
bool IsAtStartOfStatement = true;
+ bool LexMasmIntegers = false;
AsmCommentConsumer *CommentConsumer = nullptr;
MCAsmLexer();
@@ -146,6 +146,10 @@
void setCommentConsumer(AsmCommentConsumer *CommentConsumer) {
this->CommentConsumer = CommentConsumer;
}
+
+ /// Set whether to lex masm-style binary and hex literals. They look like
+ /// 0b1101 and 0ABCh respectively.
+ void setLexMasmIntegers(bool V) { LexMasmIntegers = V; }
};
} // end namespace llvm
diff --git a/linux-x64/clang/include/llvm/MC/MCParser/MCAsmParser.h b/linux-x64/clang/include/llvm/MC/MCParser/MCAsmParser.h
index 0d56f36..da5653e 100644
--- a/linux-x64/clang/include/llvm/MC/MCParser/MCAsmParser.h
+++ b/linux-x64/clang/include/llvm/MC/MCParser/MCAsmParser.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCAsmParser.h - Abstract Asm Parser Interface ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -122,17 +121,15 @@
private:
MCTargetAsmParser *TargetParser = nullptr;
- unsigned ShowParsedOperands : 1;
-
protected: // Can only create subclasses.
MCAsmParser();
+ SmallVector<MCPendingError, 0> PendingErrors;
+
/// Flag tracking whether any errors have been encountered.
bool HadError = false;
- /// Enable print [latency:throughput] in output file.
- bool EnablePrintSchedInfo = false;
- SmallVector<MCPendingError, 1> PendingErrors;
+ bool ShowParsedOperands = false;
public:
MCAsmParser(const MCAsmParser &) = delete;
@@ -165,9 +162,6 @@
bool getShowParsedOperands() const { return ShowParsedOperands; }
void setShowParsedOperands(bool Value) { ShowParsedOperands = Value; }
- void setEnablePrintSchedInfo(bool Value) { EnablePrintSchedInfo = Value; }
- bool shouldPrintSchedInfo() { return EnablePrintSchedInfo; }
-
/// Run the parser on the input source buffer.
virtual bool Run(bool NoInitialTextSection, bool NoFinalize = false) = 0;
diff --git a/linux-x64/clang/include/llvm/MC/MCParser/MCAsmParserExtension.h b/linux-x64/clang/include/llvm/MC/MCParser/MCAsmParserExtension.h
index 1a132bc..5d2afe8 100644
--- a/linux-x64/clang/include/llvm/MC/MCParser/MCAsmParserExtension.h
+++ b/linux-x64/clang/include/llvm/MC/MCParser/MCAsmParserExtension.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCAsmParserExtension.h - Asm Parser Hooks --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCParser/MCAsmParserUtils.h b/linux-x64/clang/include/llvm/MC/MCParser/MCAsmParserUtils.h
index 84173bb..d692da7 100644
--- a/linux-x64/clang/include/llvm/MC/MCParser/MCAsmParserUtils.h
+++ b/linux-x64/clang/include/llvm/MC/MCParser/MCAsmParserUtils.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCAsmParserUtils.h - Asm Parser Utilities --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCParser/MCParsedAsmOperand.h b/linux-x64/clang/include/llvm/MC/MCParser/MCParsedAsmOperand.h
index 4af76ac..2b6e2aa 100644
--- a/linux-x64/clang/include/llvm/MC/MCParser/MCParsedAsmOperand.h
+++ b/linux-x64/clang/include/llvm/MC/MCParser/MCParsedAsmOperand.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCParsedAsmOperand.h - Asm Parser Operand --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCParser/MCTargetAsmParser.h b/linux-x64/clang/include/llvm/MC/MCParser/MCTargetAsmParser.h
index bb97942..c5683b7 100644
--- a/linux-x64/clang/include/llvm/MC/MCParser/MCTargetAsmParser.h
+++ b/linux-x64/clang/include/llvm/MC/MCParser/MCTargetAsmParser.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCTargetAsmParser.h - Target Assembly Parser -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -490,6 +489,9 @@
MCContext &Ctx) {
return nullptr;
}
+
+ // For any checks or cleanups at the end of parsing.
+ virtual void onEndOfFile() {}
};
} // end namespace llvm
diff --git a/linux-x64/clang/include/llvm/MC/MCRegisterInfo.h b/linux-x64/clang/include/llvm/MC/MCRegisterInfo.h
index 8d8c677..92d39c3 100644
--- a/linux-x64/clang/include/llvm/MC/MCRegisterInfo.h
+++ b/linux-x64/clang/include/llvm/MC/MCRegisterInfo.h
@@ -1,9 +1,8 @@
//===- MC/MCRegisterInfo.h - Target Register Description --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/MC/MCSchedule.h b/linux-x64/clang/include/llvm/MC/MCSchedule.h
index 9f53a46..df3248e 100644
--- a/linux-x64/clang/include/llvm/MC/MCSchedule.h
+++ b/linux-x64/clang/include/llvm/MC/MCSchedule.h
@@ -1,9 +1,8 @@
//===-- llvm/MC/MCSchedule.h - Scheduling -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -15,6 +14,7 @@
#ifndef LLVM_MC_MCSCHEDULE_H
#define LLVM_MC_MCSCHEDULE_H
+#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/Optional.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/Support/DataTypes.h"
@@ -142,6 +142,7 @@
struct MCRegisterCostEntry {
unsigned RegisterClassID;
unsigned Cost;
+ bool AllowMoveElimination;
};
/// A register file descriptor.
@@ -159,6 +160,12 @@
uint16_t NumRegisterCostEntries;
// Index of the first cost entry in MCExtraProcessorInfo::RegisterCostTable.
uint16_t RegisterCostEntryIdx;
+ // A value of zero means: there is no limit in the number of moves that can be
+ // eliminated every cycle.
+ uint16_t MaxMovesEliminatedPerCycle;
+ // Ture if this register file only knows how to optimize register moves from
+ // known zero registers.
+ bool AllowZeroMoveEliminationOnly;
};
/// Provide extra details about the machine processor.
@@ -176,22 +183,8 @@
unsigned NumRegisterFiles;
const MCRegisterCostEntry *RegisterCostTable;
unsigned NumRegisterCostEntries;
-
- struct PfmCountersInfo {
- // An optional name of a performance counter that can be used to measure
- // cycles.
- const char *CycleCounter;
-
- // An optional name of a performance counter that can be used to measure
- // uops.
- const char *UopsCounter;
-
- // For each MCProcResourceDesc defined by the processor, an optional list of
- // names of performance counters that can be used to measure the resource
- // utilization.
- const char **IssueCounters;
- };
- PfmCountersInfo PfmCounters;
+ unsigned LoadQueueID;
+ unsigned StoreQueueID;
};
/// Machine model for scheduling, bundling, and heuristics.
@@ -377,6 +370,11 @@
getReciprocalThroughput(const MCSubtargetInfo &STI, const MCInstrInfo &MCII,
const MCInst &Inst) const;
+ /// Returns the maximum forwarding delay for register reads dependent on
+ /// writes of scheduling class WriteResourceIdx.
+ static unsigned getForwardingDelayCycles(ArrayRef<MCReadAdvanceEntry> Entries,
+ unsigned WriteResourceIdx = 0);
+
/// Returns the default initialized model.
static const MCSchedModel &GetDefaultSchedModel() { return Default; }
static const MCSchedModel Default;
diff --git a/linux-x64/clang/include/llvm/MC/MCSection.h b/linux-x64/clang/include/llvm/MC/MCSection.h
index eb210b4..27490dc 100644
--- a/linux-x64/clang/include/llvm/MC/MCSection.h
+++ b/linux-x64/clang/include/llvm/MC/MCSection.h
@@ -1,9 +1,8 @@
//===- MCSection.h - Machine Code Sections ----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/MC/MCSectionCOFF.h b/linux-x64/clang/include/llvm/MC/MCSectionCOFF.h
index 24b9f88..8be95e0 100644
--- a/linux-x64/clang/include/llvm/MC/MCSectionCOFF.h
+++ b/linux-x64/clang/include/llvm/MC/MCSectionCOFF.h
@@ -1,9 +1,8 @@
//===- MCSectionCOFF.h - COFF Machine Code Sections -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -63,8 +62,6 @@
}
public:
- ~MCSectionCOFF();
-
/// Decides whether a '.section' directive should be printed before the
/// section name
bool ShouldOmitSectionDirective(StringRef Name, const MCAsmInfo &MAI) const;
diff --git a/linux-x64/clang/include/llvm/MC/MCSectionELF.h b/linux-x64/clang/include/llvm/MC/MCSectionELF.h
index 00c289c..fe6b2d7 100644
--- a/linux-x64/clang/include/llvm/MC/MCSectionELF.h
+++ b/linux-x64/clang/include/llvm/MC/MCSectionELF.h
@@ -1,9 +1,8 @@
//===- MCSectionELF.h - ELF Machine Code Sections ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -64,8 +63,6 @@
void setSectionName(StringRef Name) { SectionName = Name; }
public:
- ~MCSectionELF();
-
/// Decides whether a '.section' directive should be printed before the
/// section name
bool ShouldOmitSectionDirective(StringRef Name, const MCAsmInfo &MAI) const;
diff --git a/linux-x64/clang/include/llvm/MC/MCSectionMachO.h b/linux-x64/clang/include/llvm/MC/MCSectionMachO.h
index 89db09c..2c73661 100644
--- a/linux-x64/clang/include/llvm/MC/MCSectionMachO.h
+++ b/linux-x64/clang/include/llvm/MC/MCSectionMachO.h
@@ -1,9 +1,8 @@
//===- MCSectionMachO.h - MachO Machine Code Sections -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/MC/MCSectionWasm.h b/linux-x64/clang/include/llvm/MC/MCSectionWasm.h
index ab4cd7b..0e576b7 100644
--- a/linux-x64/clang/include/llvm/MC/MCSectionWasm.h
+++ b/linux-x64/clang/include/llvm/MC/MCSectionWasm.h
@@ -1,9 +1,8 @@
//===- MCSectionWasm.h - Wasm Machine Code Sections -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -49,14 +48,10 @@
: MCSection(SV_Wasm, K, Begin), SectionName(Section), UniqueID(UniqueID),
Group(group) {}
- void setSectionName(StringRef Name) { SectionName = Name; }
-
public:
- ~MCSectionWasm();
-
/// Decides whether a '.section' directive should be printed before the
/// section name
- bool ShouldOmitSectionDirective(StringRef Name, const MCAsmInfo &MAI) const;
+ bool shouldOmitSectionDirective(StringRef Name, const MCAsmInfo &MAI) const;
StringRef getSectionName() const { return SectionName; }
const MCSymbolWasm *getGroup() const { return Group; }
diff --git a/linux-x64/clang/include/llvm/MC/MCStreamer.h b/linux-x64/clang/include/llvm/MC/MCStreamer.h
index 91fb4e5..dc2386f 100644
--- a/linux-x64/clang/include/llvm/MC/MCStreamer.h
+++ b/linux-x64/clang/include/llvm/MC/MCStreamer.h
@@ -1,9 +1,8 @@
//===- MCStreamer.h - High-level Streaming Machine Code Output --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -28,6 +27,7 @@
#include "llvm/Support/MD5.h"
#include "llvm/Support/SMLoc.h"
#include "llvm/Support/TargetParser.h"
+#include "llvm/Support/VersionTuple.h"
#include <cassert>
#include <cstdint>
#include <memory>
@@ -109,6 +109,11 @@
virtual void emitValue(const MCExpr *Value);
+ /// Emit the bytes in \p Data into the output.
+ ///
+ /// This is used to emit bytes in \p Data as sequence of .byte directives.
+ virtual void emitRawBytes(StringRef Data);
+
virtual void finish();
};
@@ -193,10 +198,6 @@
WinEH::FrameInfo *CurrentWinFrameInfo;
- /// Retreive the current frame info if one is available and it is not yet
- /// closed. Otherwise, issue an error and return null.
- WinEH::FrameInfo *EnsureValidWinFrameInfo(SMLoc Loc);
-
/// Tracks an index to represent the order a symbol was emitted in.
/// Zero means we did not emit that symbol.
DenseMap<const MCSymbol *, unsigned> SymbolOrdering;
@@ -219,10 +220,6 @@
virtual void EmitCFIStartProcImpl(MCDwarfFrameInfo &Frame);
virtual void EmitCFIEndProcImpl(MCDwarfFrameInfo &CurFrame);
- /// When emitting an object file, create and emit a real label. When emitting
- /// textual assembly, this should do nothing to avoid polluting our output.
- virtual MCSymbol *EmitCFILabel();
-
WinEH::FrameInfo *getCurrentWinFrameInfo() {
return CurrentWinFrameInfo;
}
@@ -261,6 +258,14 @@
return TargetStreamer.get();
}
+ /// When emitting an object file, create and emit a real label. When emitting
+ /// textual assembly, this should do nothing to avoid polluting our output.
+ virtual MCSymbol *EmitCFILabel();
+
+ /// Retreive the current frame info if one is available and it is not yet
+ /// closed. Otherwise, issue an error and return null.
+ WinEH::FrameInfo *EnsureValidWinFrameInfo(SMLoc Loc);
+
unsigned getNumFrameInfos() { return DwarfFrameInfos.size(); }
ArrayRef<MCDwarfFrameInfo> getDwarfFrameInfos() const {
return DwarfFrameInfos;
@@ -447,14 +452,17 @@
/// Specify the Mach-O minimum deployment target version.
virtual void EmitVersionMin(MCVersionMinType Type, unsigned Major,
- unsigned Minor, unsigned Update) {}
+ unsigned Minor, unsigned Update,
+ VersionTuple SDKVersion) {}
/// Emit/Specify Mach-O build version command.
/// \p Platform should be one of MachO::PlatformType.
virtual void EmitBuildVersion(unsigned Platform, unsigned Major,
- unsigned Minor, unsigned Update) {}
+ unsigned Minor, unsigned Update,
+ VersionTuple SDKVersion) {}
- void EmitVersionForTarget(const Triple &Target);
+ void EmitVersionForTarget(const Triple &Target,
+ const VersionTuple &SDKVersion);
/// Note in the output that the specified \p Func is a Thumb mode
/// function (ARM target only).
@@ -797,6 +805,8 @@
Optional<StringRef> Source,
unsigned CUID = 0);
+ virtual void EmitCFIBKeyFrame();
+
/// This implements the DWARF2 '.loc fileno lineno ...' assembler
/// directive.
virtual void EmitDwarfLocDirective(unsigned FileNo, unsigned Line,
@@ -870,7 +880,7 @@
virtual MCSymbol *getDwarfLineTableSymbol(unsigned CUID);
virtual void EmitCFISections(bool EH, bool Debug);
- void EmitCFIStartProc(bool IsSimple);
+ void EmitCFIStartProc(bool IsSimple, SMLoc Loc = SMLoc());
void EmitCFIEndProc();
virtual void EmitCFIDefCfa(int64_t Register, int64_t Offset);
virtual void EmitCFIDefCfaOffset(int64_t Offset);
@@ -891,9 +901,15 @@
virtual void EmitCFIUndefined(int64_t Register);
virtual void EmitCFIRegister(int64_t Register1, int64_t Register2);
virtual void EmitCFIWindowSave();
+ virtual void EmitCFINegateRAState();
virtual void EmitWinCFIStartProc(const MCSymbol *Symbol, SMLoc Loc = SMLoc());
virtual void EmitWinCFIEndProc(SMLoc Loc = SMLoc());
+ /// This is used on platforms, such as Windows on ARM64, that require function
+ /// or funclet sizes to be emitted in .xdata before the End marker is emitted
+ /// for the frame. We cannot use the End marker, as it is not set at the
+ /// point of emitting .xdata, in order to indicate that the frame is active.
+ virtual void EmitWinCFIFuncletOrFuncEnd(SMLoc Loc = SMLoc());
virtual void EmitWinCFIStartChained(SMLoc Loc = SMLoc());
virtual void EmitWinCFIEndChained(SMLoc Loc = SMLoc());
virtual void EmitWinCFIPushReg(unsigned Register, SMLoc Loc = SMLoc());
@@ -936,9 +952,7 @@
virtual void EmitAddrsigSym(const MCSymbol *Sym) {}
/// Emit the given \p Instruction into the current section.
- /// PrintSchedInfo == true then schedul comment should be added to output
- virtual void EmitInstruction(const MCInst &Inst, const MCSubtargetInfo &STI,
- bool PrintSchedInfo = false);
+ virtual void EmitInstruction(const MCInst &Inst, const MCSubtargetInfo &STI);
/// Set the bundle alignment mode from now on in the section.
/// The argument is the power of 2 to which the alignment is set. The
diff --git a/linux-x64/clang/include/llvm/MC/MCSubtargetInfo.h b/linux-x64/clang/include/llvm/MC/MCSubtargetInfo.h
index b3ce523..c7472a2 100644
--- a/linux-x64/clang/include/llvm/MC/MCSubtargetInfo.h
+++ b/linux-x64/clang/include/llvm/MC/MCSubtargetInfo.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCSubtargetInfo.h - Subtarget Information --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -153,6 +152,16 @@
return 0;
}
+ /// Return the set of ReadAdvance entries declared by the scheduling class
+ /// descriptor in input.
+ ArrayRef<MCReadAdvanceEntry>
+ getReadAdvanceEntries(const MCSchedClassDesc &SC) const {
+ if (!SC.NumReadAdvanceEntries)
+ return ArrayRef<MCReadAdvanceEntry>();
+ return ArrayRef<MCReadAdvanceEntry>(&ReadAdvanceTable[SC.ReadAdvanceIdx],
+ SC.NumReadAdvanceEntries);
+ }
+
/// Get scheduling itinerary of a CPU.
InstrItineraryData getInstrItineraryForCPU(StringRef CPU) const;
@@ -171,11 +180,6 @@
auto Found = std::lower_bound(ProcDesc.begin(), ProcDesc.end(), CPU);
return Found != ProcDesc.end() && StringRef(Found->Key) == CPU;
}
-
- /// Returns string representation of scheduler comment
- virtual std::string getSchedInfoStr(MCInst const &MCI) const {
- return {};
- }
};
} // end namespace llvm
diff --git a/linux-x64/clang/include/llvm/MC/MCSymbol.h b/linux-x64/clang/include/llvm/MC/MCSymbol.h
index 4681a1b..273e5a3 100644
--- a/linux-x64/clang/include/llvm/MC/MCSymbol.h
+++ b/linux-x64/clang/include/llvm/MC/MCSymbol.h
@@ -1,9 +1,8 @@
//===- MCSymbol.h - Machine Code Symbols ------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/MC/MCSymbolCOFF.h b/linux-x64/clang/include/llvm/MC/MCSymbolCOFF.h
index 7918c35..94087ce 100644
--- a/linux-x64/clang/include/llvm/MC/MCSymbolCOFF.h
+++ b/linux-x64/clang/include/llvm/MC/MCSymbolCOFF.h
@@ -1,9 +1,8 @@
//===- MCSymbolCOFF.h - ----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCSymbolELF.h b/linux-x64/clang/include/llvm/MC/MCSymbolELF.h
index bbcd22e..34e5c43 100644
--- a/linux-x64/clang/include/llvm/MC/MCSymbolELF.h
+++ b/linux-x64/clang/include/llvm/MC/MCSymbolELF.h
@@ -1,9 +1,8 @@
//===- MCSymbolELF.h - -----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_MC_MCSYMBOLELF_H
diff --git a/linux-x64/clang/include/llvm/MC/MCSymbolMachO.h b/linux-x64/clang/include/llvm/MC/MCSymbolMachO.h
index 6125c20..8f9ff56 100644
--- a/linux-x64/clang/include/llvm/MC/MCSymbolMachO.h
+++ b/linux-x64/clang/include/llvm/MC/MCSymbolMachO.h
@@ -1,9 +1,8 @@
//===- MCSymbolMachO.h - ---------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_MC_MCSYMBOLMACHO_H
@@ -35,6 +34,7 @@
SF_WeakDefinition = 0x0080,
SF_SymbolResolver = 0x0100,
SF_AltEntry = 0x0200,
+ SF_Cold = 0x0400,
// Common alignment
SF_CommonAlignmentMask = 0xF0FF,
@@ -98,6 +98,10 @@
return getFlags() & SF_AltEntry;
}
+ void setCold() const { modifyFlags(SF_Cold, SF_Cold); }
+
+ bool isCold() const { return getFlags() & SF_Cold; }
+
void setDesc(unsigned Value) const {
assert(Value == (Value & SF_DescFlagsMask) &&
"Invalid .desc value!");
diff --git a/linux-x64/clang/include/llvm/MC/MCSymbolWasm.h b/linux-x64/clang/include/llvm/MC/MCSymbolWasm.h
index 281178a..88759fe 100644
--- a/linux-x64/clang/include/llvm/MC/MCSymbolWasm.h
+++ b/linux-x64/clang/include/llvm/MC/MCSymbolWasm.h
@@ -1,9 +1,8 @@
//===- MCSymbolWasm.h - ----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_MC_MCSYMBOLWASM_H
@@ -19,10 +18,11 @@
bool IsWeak = false;
bool IsHidden = false;
bool IsComdat = false;
- std::string ModuleName;
+ Optional<std::string> ImportModule;
+ Optional<std::string> ImportName;
wasm::WasmSignature *Signature = nullptr;
- wasm::WasmGlobalType GlobalType;
- bool GlobalTypeSet = false;
+ Optional<wasm::WasmGlobalType> GlobalType;
+ Optional<wasm::WasmEventType> EventType;
/// An expression describing how to calculate the size of a symbol. If a
/// symbol has no size this field will be NULL.
@@ -32,7 +32,7 @@
// Use a module name of "env" for now, for compatibility with existing tools.
// This is temporary, and may change, as the ABI is not yet stable.
MCSymbolWasm(const StringMapEntry<bool> *Name, bool isTemporary)
- : MCSymbol(SymbolKindWasm, Name, isTemporary), ModuleName("env") {}
+ : MCSymbol(SymbolKindWasm, Name, isTemporary) {}
static bool classof(const MCSymbol *S) { return S->isWasm(); }
const MCExpr *getSize() const { return SymbolSize; }
@@ -42,9 +42,17 @@
bool isData() const { return Type == wasm::WASM_SYMBOL_TYPE_DATA; }
bool isGlobal() const { return Type == wasm::WASM_SYMBOL_TYPE_GLOBAL; }
bool isSection() const { return Type == wasm::WASM_SYMBOL_TYPE_SECTION; }
+ bool isEvent() const { return Type == wasm::WASM_SYMBOL_TYPE_EVENT; }
wasm::WasmSymbolType getType() const { return Type; }
void setType(wasm::WasmSymbolType type) { Type = type; }
+ bool isExported() const {
+ return getFlags() & wasm::WASM_SYMBOL_EXPORTED;
+ }
+ void setExported() const {
+ modifyFlags(wasm::WASM_SYMBOL_EXPORTED, wasm::WASM_SYMBOL_EXPORTED);
+ }
+
bool isWeak() const { return IsWeak; }
void setWeak(bool isWeak) { IsWeak = isWeak; }
@@ -54,21 +62,36 @@
bool isComdat() const { return IsComdat; }
void setComdat(bool isComdat) { IsComdat = isComdat; }
- const StringRef getModuleName() const { return ModuleName; }
- void setModuleName(StringRef Name) { ModuleName = Name; }
+ const StringRef getImportModule() const {
+ if (ImportModule.hasValue()) {
+ return ImportModule.getValue();
+ }
+ return "env";
+ }
+ void setImportModule(StringRef Name) { ImportModule = Name; }
+
+ const StringRef getImportName() const {
+ if (ImportName.hasValue()) {
+ return ImportName.getValue();
+ }
+ return getName();
+ }
+ void setImportName(StringRef Name) { ImportName = Name; }
const wasm::WasmSignature *getSignature() const { return Signature; }
void setSignature(wasm::WasmSignature *Sig) { Signature = Sig; }
const wasm::WasmGlobalType &getGlobalType() const {
- assert(GlobalTypeSet);
- return GlobalType;
+ assert(GlobalType.hasValue());
+ return GlobalType.getValue();
}
+ void setGlobalType(wasm::WasmGlobalType GT) { GlobalType = GT; }
- void setGlobalType(wasm::WasmGlobalType GT) {
- GlobalTypeSet = true;
- GlobalType = GT;
+ const wasm::WasmEventType &getEventType() const {
+ assert(EventType.hasValue());
+ return EventType.getValue();
}
+ void setEventType(wasm::WasmEventType ET) { EventType = ET; }
};
} // end namespace llvm
diff --git a/linux-x64/clang/include/llvm/MC/MCTargetOptions.h b/linux-x64/clang/include/llvm/MC/MCTargetOptions.h
index f5d330f..087d155 100644
--- a/linux-x64/clang/include/llvm/MC/MCTargetOptions.h
+++ b/linux-x64/clang/include/llvm/MC/MCTargetOptions.h
@@ -1,9 +1,8 @@
//===- MCTargetOptions.h - MC Target Options --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCTargetOptionsCommandFlags.inc b/linux-x64/clang/include/llvm/MC/MCTargetOptionsCommandFlags.inc
index 5172fa4..f812946 100644
--- a/linux-x64/clang/include/llvm/MC/MCTargetOptionsCommandFlags.inc
+++ b/linux-x64/clang/include/llvm/MC/MCTargetOptionsCommandFlags.inc
@@ -1,9 +1,8 @@
//===-- MCTargetOptionsCommandFlags.h --------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/MC/MCValue.h b/linux-x64/clang/include/llvm/MC/MCValue.h
index 11f5082..0be7ce7 100644
--- a/linux-x64/clang/include/llvm/MC/MCValue.h
+++ b/linux-x64/clang/include/llvm/MC/MCValue.h
@@ -1,9 +1,8 @@
//===-- llvm/MC/MCValue.h - MCValue class -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/MC/MCWasmObjectWriter.h b/linux-x64/clang/include/llvm/MC/MCWasmObjectWriter.h
index 6b788cf..4adbca2 100644
--- a/linux-x64/clang/include/llvm/MC/MCWasmObjectWriter.h
+++ b/linux-x64/clang/include/llvm/MC/MCWasmObjectWriter.h
@@ -1,9 +1,8 @@
//===-- llvm/MC/MCWasmObjectWriter.h - Wasm Object Writer -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCWasmStreamer.h b/linux-x64/clang/include/llvm/MC/MCWasmStreamer.h
index 01e6a43..2d7f2b9 100644
--- a/linux-x64/clang/include/llvm/MC/MCWasmStreamer.h
+++ b/linux-x64/clang/include/llvm/MC/MCWasmStreamer.h
@@ -1,9 +1,8 @@
//===- MCWasmStreamer.h - MCStreamer Wasm Object File Interface -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCWin64EH.h b/linux-x64/clang/include/llvm/MC/MCWin64EH.h
index 83ea738..60ec06e 100644
--- a/linux-x64/clang/include/llvm/MC/MCWin64EH.h
+++ b/linux-x64/clang/include/llvm/MC/MCWin64EH.h
@@ -1,9 +1,8 @@
//===- MCWin64EH.h - Machine Code Win64 EH support --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -56,6 +55,14 @@
void Emit(MCStreamer &Streamer) const override;
void EmitUnwindInfo(MCStreamer &Streamer, WinEH::FrameInfo *FI) const override;
};
+
+class ARM64UnwindEmitter : public WinEH::UnwindEmitter {
+public:
+ void Emit(MCStreamer &Streamer) const override;
+ void EmitUnwindInfo(MCStreamer &Streamer,
+ WinEH::FrameInfo *FI) const override;
+};
+
}
} // end namespace llvm
diff --git a/linux-x64/clang/include/llvm/MC/MCWinCOFFObjectWriter.h b/linux-x64/clang/include/llvm/MC/MCWinCOFFObjectWriter.h
index c1d35ea..3fe124f 100644
--- a/linux-x64/clang/include/llvm/MC/MCWinCOFFObjectWriter.h
+++ b/linux-x64/clang/include/llvm/MC/MCWinCOFFObjectWriter.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MCWinCOFFObjectWriter.h - Win COFF Object Writer -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCWinCOFFStreamer.h b/linux-x64/clang/include/llvm/MC/MCWinCOFFStreamer.h
index 0049d04..c1c1ec5 100644
--- a/linux-x64/clang/include/llvm/MC/MCWinCOFFStreamer.h
+++ b/linux-x64/clang/include/llvm/MC/MCWinCOFFStreamer.h
@@ -1,9 +1,8 @@
//===- MCWinCOFFStreamer.h - COFF Object File Interface ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/MCWinEH.h b/linux-x64/clang/include/llvm/MC/MCWinEH.h
index 4ca52a6..b1c28c0 100644
--- a/linux-x64/clang/include/llvm/MC/MCWinEH.h
+++ b/linux-x64/clang/include/llvm/MC/MCWinEH.h
@@ -1,15 +1,15 @@
//===- MCWinEH.h - Windows Unwinding Support --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_MC_MCWINEH_H
#define LLVM_MC_MCWINEH_H
+#include "llvm/ADT/MapVector.h"
#include <vector>
namespace llvm {
@@ -20,9 +20,9 @@
namespace WinEH {
struct Instruction {
const MCSymbol *Label;
- const unsigned Offset;
- const unsigned Register;
- const unsigned Operation;
+ unsigned Offset;
+ unsigned Register;
+ unsigned Operation;
Instruction(unsigned Op, MCSymbol *L, unsigned Reg, unsigned Off)
: Label(L), Offset(Off), Register(Reg), Operation(Op) {}
@@ -31,6 +31,7 @@
struct FrameInfo {
const MCSymbol *Begin = nullptr;
const MCSymbol *End = nullptr;
+ const MCSymbol *FuncletOrFuncEnd = nullptr;
const MCSymbol *ExceptionHandler = nullptr;
const MCSymbol *Function = nullptr;
const MCSymbol *PrologEnd = nullptr;
@@ -43,6 +44,7 @@
int LastFrameInst = -1;
const FrameInfo *ChainedParent = nullptr;
std::vector<Instruction> Instructions;
+ MapVector<MCSymbol*, std::vector<Instruction>> EpilogMap;
FrameInfo() = default;
FrameInfo(const MCSymbol *Function, const MCSymbol *BeginFuncEHLabel)
diff --git a/linux-x64/clang/include/llvm/MC/MachineLocation.h b/linux-x64/clang/include/llvm/MC/MachineLocation.h
index 91ed661..5872540 100644
--- a/linux-x64/clang/include/llvm/MC/MachineLocation.h
+++ b/linux-x64/clang/include/llvm/MC/MachineLocation.h
@@ -1,9 +1,8 @@
//===- llvm/MC/MachineLocation.h --------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// The MachineLocation class is used to represent a simple location in a machine
diff --git a/linux-x64/clang/include/llvm/MC/SectionKind.h b/linux-x64/clang/include/llvm/MC/SectionKind.h
index 66eb9ec..0342c4c 100644
--- a/linux-x64/clang/include/llvm/MC/SectionKind.h
+++ b/linux-x64/clang/include/llvm/MC/SectionKind.h
@@ -1,9 +1,8 @@
//===-- llvm/MC/SectionKind.h - Classification of sections ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/StringTableBuilder.h b/linux-x64/clang/include/llvm/MC/StringTableBuilder.h
index 265260f..c83eca4 100644
--- a/linux-x64/clang/include/llvm/MC/StringTableBuilder.h
+++ b/linux-x64/clang/include/llvm/MC/StringTableBuilder.h
@@ -1,9 +1,8 @@
//===- StringTableBuilder.h - String table building utility -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/MC/SubtargetFeature.h b/linux-x64/clang/include/llvm/MC/SubtargetFeature.h
index 76c7dd5..5f49d38 100644
--- a/linux-x64/clang/include/llvm/MC/SubtargetFeature.h
+++ b/linux-x64/clang/include/llvm/MC/SubtargetFeature.h
@@ -1,9 +1,8 @@
//===- llvm/MC/SubtargetFeature.h - CPU characteristics ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/MCA/Context.h b/linux-x64/clang/include/llvm/MCA/Context.h
new file mode 100644
index 0000000..a9f3e05
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MCA/Context.h
@@ -0,0 +1,68 @@
+//===---------------------------- Context.h ---------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// This file defines a class for holding ownership of various simulated
+/// hardware units. A Context also provides a utility routine for constructing
+/// a default out-of-order pipeline with fetch, dispatch, execute, and retire
+/// stages.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MCA_CONTEXT_H
+#define LLVM_MCA_CONTEXT_H
+
+#include "llvm/MC/MCRegisterInfo.h"
+#include "llvm/MC/MCSubtargetInfo.h"
+#include "llvm/MCA/HardwareUnits/HardwareUnit.h"
+#include "llvm/MCA/InstrBuilder.h"
+#include "llvm/MCA/Pipeline.h"
+#include "llvm/MCA/SourceMgr.h"
+#include <memory>
+
+namespace llvm {
+namespace mca {
+
+/// This is a convenience struct to hold the parameters necessary for creating
+/// the pre-built "default" out-of-order pipeline.
+struct PipelineOptions {
+ PipelineOptions(unsigned DW, unsigned RFS, unsigned LQS, unsigned SQS,
+ bool NoAlias)
+ : DispatchWidth(DW), RegisterFileSize(RFS), LoadQueueSize(LQS),
+ StoreQueueSize(SQS), AssumeNoAlias(NoAlias) {}
+ unsigned DispatchWidth;
+ unsigned RegisterFileSize;
+ unsigned LoadQueueSize;
+ unsigned StoreQueueSize;
+ bool AssumeNoAlias;
+};
+
+class Context {
+ SmallVector<std::unique_ptr<HardwareUnit>, 4> Hardware;
+ const MCRegisterInfo &MRI;
+ const MCSubtargetInfo &STI;
+
+public:
+ Context(const MCRegisterInfo &R, const MCSubtargetInfo &S) : MRI(R), STI(S) {}
+ Context(const Context &C) = delete;
+ Context &operator=(const Context &C) = delete;
+
+ void addHardwareUnit(std::unique_ptr<HardwareUnit> H) {
+ Hardware.push_back(std::move(H));
+ }
+
+ /// Construct a basic pipeline for simulating an out-of-order pipeline.
+ /// This pipeline consists of Fetch, Dispatch, Execute, and Retire stages.
+ std::unique_ptr<Pipeline> createDefaultPipeline(const PipelineOptions &Opts,
+ InstrBuilder &IB,
+ SourceMgr &SrcMgr);
+};
+
+} // namespace mca
+} // namespace llvm
+#endif // LLVM_MCA_CONTEXT_H
diff --git a/linux-x64/clang/include/llvm/MCA/HWEventListener.h b/linux-x64/clang/include/llvm/MCA/HWEventListener.h
new file mode 100644
index 0000000..1857ad2
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MCA/HWEventListener.h
@@ -0,0 +1,155 @@
+//===----------------------- HWEventListener.h ------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// This file defines the main interface for hardware event listeners.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MCA_HWEVENTLISTENER_H
+#define LLVM_MCA_HWEVENTLISTENER_H
+
+#include "llvm/ADT/ArrayRef.h"
+#include "llvm/MCA/Instruction.h"
+#include "llvm/MCA/Support.h"
+
+namespace llvm {
+namespace mca {
+
+// An HWInstructionEvent represents state changes of instructions that
+// listeners might be interested in. Listeners can choose to ignore any event
+// they are not interested in.
+class HWInstructionEvent {
+public:
+ // This is the list of event types that are shared by all targets, that
+ // generic subtarget-agnostic classes (e.g., Pipeline, HWInstructionEvent,
+ // ...) and generic Views can manipulate.
+ // Subtargets are free to define additional event types, that are goin to be
+ // handled by generic components as opaque values, but can still be
+ // emitted by subtarget-specific pipeline stages (e.g., ExecuteStage,
+ // DispatchStage, ...) and interpreted by subtarget-specific EventListener
+ // implementations.
+ enum GenericEventType {
+ Invalid = 0,
+ // Events generated by the Retire Control Unit.
+ Retired,
+ // Events generated by the Scheduler.
+ Ready,
+ Issued,
+ Executed,
+ // Events generated by the Dispatch logic.
+ Dispatched,
+
+ LastGenericEventType,
+ };
+
+ HWInstructionEvent(unsigned type, const InstRef &Inst)
+ : Type(type), IR(Inst) {}
+
+ // The event type. The exact meaning depends on the subtarget.
+ const unsigned Type;
+
+ // The instruction this event was generated for.
+ const InstRef &IR;
+};
+
+class HWInstructionIssuedEvent : public HWInstructionEvent {
+public:
+ using ResourceRef = std::pair<uint64_t, uint64_t>;
+ HWInstructionIssuedEvent(const InstRef &IR,
+ ArrayRef<std::pair<ResourceRef, ResourceCycles>> UR)
+ : HWInstructionEvent(HWInstructionEvent::Issued, IR), UsedResources(UR) {}
+
+ ArrayRef<std::pair<ResourceRef, ResourceCycles>> UsedResources;
+};
+
+class HWInstructionDispatchedEvent : public HWInstructionEvent {
+public:
+ HWInstructionDispatchedEvent(const InstRef &IR, ArrayRef<unsigned> Regs,
+ unsigned UOps)
+ : HWInstructionEvent(HWInstructionEvent::Dispatched, IR),
+ UsedPhysRegs(Regs), MicroOpcodes(UOps) {}
+ // Number of physical register allocated for this instruction. There is one
+ // entry per register file.
+ ArrayRef<unsigned> UsedPhysRegs;
+ // Number of micro opcodes dispatched.
+ // This field is often set to the total number of micro-opcodes specified by
+ // the instruction descriptor of IR.
+ // The only exception is when IR declares a number of micro opcodes
+ // which exceeds the processor DispatchWidth, and - by construction - it
+ // requires multiple cycles to be fully dispatched. In that particular case,
+ // the dispatch logic would generate more than one dispatch event (one per
+ // cycle), and each event would declare how many micro opcodes are effectively
+ // been dispatched to the schedulers.
+ unsigned MicroOpcodes;
+};
+
+class HWInstructionRetiredEvent : public HWInstructionEvent {
+public:
+ HWInstructionRetiredEvent(const InstRef &IR, ArrayRef<unsigned> Regs)
+ : HWInstructionEvent(HWInstructionEvent::Retired, IR),
+ FreedPhysRegs(Regs) {}
+ // Number of register writes that have been architecturally committed. There
+ // is one entry per register file.
+ ArrayRef<unsigned> FreedPhysRegs;
+};
+
+// A HWStallEvent represents a pipeline stall caused by the lack of hardware
+// resources.
+class HWStallEvent {
+public:
+ enum GenericEventType {
+ Invalid = 0,
+ // Generic stall events generated by the DispatchStage.
+ RegisterFileStall,
+ RetireControlUnitStall,
+ // Generic stall events generated by the Scheduler.
+ DispatchGroupStall,
+ SchedulerQueueFull,
+ LoadQueueFull,
+ StoreQueueFull,
+ LastGenericEvent
+ };
+
+ HWStallEvent(unsigned type, const InstRef &Inst) : Type(type), IR(Inst) {}
+
+ // The exact meaning of the stall event type depends on the subtarget.
+ const unsigned Type;
+
+ // The instruction this event was generated for.
+ const InstRef &IR;
+};
+
+class HWEventListener {
+public:
+ // Generic events generated by the pipeline.
+ virtual void onCycleBegin() {}
+ virtual void onCycleEnd() {}
+
+ virtual void onEvent(const HWInstructionEvent &Event) {}
+ virtual void onEvent(const HWStallEvent &Event) {}
+
+ using ResourceRef = std::pair<uint64_t, uint64_t>;
+ virtual void onResourceAvailable(const ResourceRef &RRef) {}
+
+ // Events generated by the Scheduler when buffered resources are
+ // consumed/freed for an instruction.
+ virtual void onReservedBuffers(const InstRef &Inst,
+ ArrayRef<unsigned> Buffers) {}
+ virtual void onReleasedBuffers(const InstRef &Inst,
+ ArrayRef<unsigned> Buffers) {}
+
+ virtual ~HWEventListener() {}
+
+private:
+ virtual void anchor();
+};
+} // namespace mca
+} // namespace llvm
+
+#endif // LLVM_MCA_HWEVENTLISTENER_H
diff --git a/linux-x64/clang/include/llvm/MCA/HardwareUnits/HardwareUnit.h b/linux-x64/clang/include/llvm/MCA/HardwareUnits/HardwareUnit.h
new file mode 100644
index 0000000..f6e178b
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MCA/HardwareUnits/HardwareUnit.h
@@ -0,0 +1,32 @@
+//===-------------------------- HardwareUnit.h ------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// This file defines a base class for describing a simulated hardware
+/// unit. These units are used to construct a simulated backend.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MCA_HARDWAREUNIT_H
+#define LLVM_MCA_HARDWAREUNIT_H
+
+namespace llvm {
+namespace mca {
+
+class HardwareUnit {
+ HardwareUnit(const HardwareUnit &H) = delete;
+ HardwareUnit &operator=(const HardwareUnit &H) = delete;
+
+public:
+ HardwareUnit() = default;
+ virtual ~HardwareUnit();
+};
+
+} // namespace mca
+} // namespace llvm
+#endif // LLVM_MCA_HARDWAREUNIT_H
diff --git a/linux-x64/clang/include/llvm/MCA/HardwareUnits/LSUnit.h b/linux-x64/clang/include/llvm/MCA/HardwareUnits/LSUnit.h
new file mode 100644
index 0000000..b8a9f27
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MCA/HardwareUnits/LSUnit.h
@@ -0,0 +1,206 @@
+//===------------------------- LSUnit.h --------------------------*- C++-*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// A Load/Store unit class that models load/store queues and that implements
+/// a simple weak memory consistency model.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MCA_LSUNIT_H
+#define LLVM_MCA_LSUNIT_H
+
+#include "llvm/ADT/SmallSet.h"
+#include "llvm/MC/MCSchedule.h"
+#include "llvm/MCA/HardwareUnits/HardwareUnit.h"
+
+namespace llvm {
+namespace mca {
+
+class InstRef;
+class Scheduler;
+
+/// A Load/Store Unit implementing a load and store queues.
+///
+/// This class implements a load queue and a store queue to emulate the
+/// out-of-order execution of memory operations.
+/// Each load (or store) consumes an entry in the load (or store) queue.
+///
+/// Rules are:
+/// 1) A younger load is allowed to pass an older load only if there are no
+/// stores nor barriers in between the two loads.
+/// 2) An younger store is not allowed to pass an older store.
+/// 3) A younger store is not allowed to pass an older load.
+/// 4) A younger load is allowed to pass an older store only if the load does
+/// not alias with the store.
+///
+/// This class optimistically assumes that loads don't alias store operations.
+/// Under this assumption, younger loads are always allowed to pass older
+/// stores (this would only affects rule 4).
+/// Essentially, this class doesn't perform any sort alias analysis to
+/// identify aliasing loads and stores.
+///
+/// To enforce aliasing between loads and stores, flag `AssumeNoAlias` must be
+/// set to `false` by the constructor of LSUnit.
+///
+/// Note that this class doesn't know about the existence of different memory
+/// types for memory operations (example: write-through, write-combining, etc.).
+/// Derived classes are responsible for implementing that extra knowledge, and
+/// provide different sets of rules for loads and stores by overriding method
+/// `isReady()`.
+/// To emulate a write-combining memory type, rule 2. must be relaxed in a
+/// derived class to enable the reordering of non-aliasing store operations.
+///
+/// No assumptions are made by this class on the size of the store buffer. This
+/// class doesn't know how to identify cases where store-to-load forwarding may
+/// occur.
+///
+/// LSUnit doesn't attempt to predict whether a load or store hits or misses
+/// the L1 cache. To be more specific, LSUnit doesn't know anything about
+/// cache hierarchy and memory types.
+/// It only knows if an instruction "mayLoad" and/or "mayStore". For loads, the
+/// scheduling model provides an "optimistic" load-to-use latency (which usually
+/// matches the load-to-use latency for when there is a hit in the L1D).
+/// Derived classes may expand this knowledge.
+///
+/// Class MCInstrDesc in LLVM doesn't know about serializing operations, nor
+/// memory-barrier like instructions.
+/// LSUnit conservatively assumes that an instruction which `mayLoad` and has
+/// `unmodeled side effects` behave like a "soft" load-barrier. That means, it
+/// serializes loads without forcing a flush of the load queue.
+/// Similarly, instructions that both `mayStore` and have `unmodeled side
+/// effects` are treated like store barriers. A full memory
+/// barrier is a 'mayLoad' and 'mayStore' instruction with unmodeled side
+/// effects. This is obviously inaccurate, but this is the best that we can do
+/// at the moment.
+///
+/// Each load/store barrier consumes one entry in the load/store queue. A
+/// load/store barrier enforces ordering of loads/stores:
+/// - A younger load cannot pass a load barrier.
+/// - A younger store cannot pass a store barrier.
+///
+/// A younger load has to wait for the memory load barrier to execute.
+/// A load/store barrier is "executed" when it becomes the oldest entry in
+/// the load/store queue(s). That also means, all the older loads/stores have
+/// already been executed.
+class LSUnit : public HardwareUnit {
+ // Load queue size.
+ // LQ_Size == 0 means that there are infinite slots in the load queue.
+ unsigned LQ_Size;
+
+ // Store queue size.
+ // SQ_Size == 0 means that there are infinite slots in the store queue.
+ unsigned SQ_Size;
+
+ // If true, loads will never alias with stores. This is the default.
+ bool NoAlias;
+
+ // When a `MayLoad` instruction is dispatched to the schedulers for execution,
+ // the LSUnit reserves an entry in the `LoadQueue` for it.
+ //
+ // LoadQueue keeps track of all the loads that are in-flight. A load
+ // instruction is eventually removed from the LoadQueue when it reaches
+ // completion stage. That means, a load leaves the queue whe it is 'executed',
+ // and its value can be forwarded on the data path to outside units.
+ //
+ // This class doesn't know about the latency of a load instruction. So, it
+ // conservatively/pessimistically assumes that the latency of a load opcode
+ // matches the instruction latency.
+ //
+ // FIXME: In the absence of cache misses (i.e. L1I/L1D/iTLB/dTLB hits/misses),
+ // and load/store conflicts, the latency of a load is determined by the depth
+ // of the load pipeline. So, we could use field `LoadLatency` in the
+ // MCSchedModel to model that latency.
+ // Field `LoadLatency` often matches the so-called 'load-to-use' latency from
+ // L1D, and it usually already accounts for any extra latency due to data
+ // forwarding.
+ // When doing throughput analysis, `LoadLatency` is likely to
+ // be a better predictor of load latency than instruction latency. This is
+ // particularly true when simulating code with temporal/spatial locality of
+ // memory accesses.
+ // Using `LoadLatency` (instead of the instruction latency) is also expected
+ // to improve the load queue allocation for long latency instructions with
+ // folded memory operands (See PR39829).
+ //
+ // FIXME: On some processors, load/store operations are split into multiple
+ // uOps. For example, X86 AMD Jaguar natively supports 128-bit data types, but
+ // not 256-bit data types. So, a 256-bit load is effectively split into two
+ // 128-bit loads, and each split load consumes one 'LoadQueue' entry. For
+ // simplicity, this class optimistically assumes that a load instruction only
+ // consumes one entry in the LoadQueue. Similarly, store instructions only
+ // consume a single entry in the StoreQueue.
+ // In future, we should reassess the quality of this design, and consider
+ // alternative approaches that let instructions specify the number of
+ // load/store queue entries which they consume at dispatch stage (See
+ // PR39830).
+ SmallSet<unsigned, 16> LoadQueue;
+ SmallSet<unsigned, 16> StoreQueue;
+
+ void assignLQSlot(unsigned Index);
+ void assignSQSlot(unsigned Index);
+ bool isReadyNoAlias(unsigned Index) const;
+
+ // An instruction that both 'mayStore' and 'HasUnmodeledSideEffects' is
+ // conservatively treated as a store barrier. It forces older store to be
+ // executed before newer stores are issued.
+ SmallSet<unsigned, 8> StoreBarriers;
+
+ // An instruction that both 'MayLoad' and 'HasUnmodeledSideEffects' is
+ // conservatively treated as a load barrier. It forces older loads to execute
+ // before newer loads are issued.
+ SmallSet<unsigned, 8> LoadBarriers;
+
+ bool isSQEmpty() const { return StoreQueue.empty(); }
+ bool isLQEmpty() const { return LoadQueue.empty(); }
+ bool isSQFull() const { return SQ_Size != 0 && StoreQueue.size() == SQ_Size; }
+ bool isLQFull() const { return LQ_Size != 0 && LoadQueue.size() == LQ_Size; }
+
+public:
+ LSUnit(const MCSchedModel &SM, unsigned LQ = 0, unsigned SQ = 0,
+ bool AssumeNoAlias = false);
+
+#ifndef NDEBUG
+ void dump() const;
+#endif
+
+ enum Status { LSU_AVAILABLE = 0, LSU_LQUEUE_FULL, LSU_SQUEUE_FULL };
+
+ // Returns LSU_AVAILABLE if there are enough load/store queue entries to serve
+ // IR. It also returns LSU_AVAILABLE if IR is not a memory operation.
+ Status isAvailable(const InstRef &IR) const;
+
+ // Allocates load/store queue resources for IR.
+ //
+ // This method assumes that a previous call to `isAvailable(IR)` returned
+ // LSU_AVAILABLE, and that IR is a memory operation.
+ void dispatch(const InstRef &IR);
+
+ // By default, rules are:
+ // 1. A store may not pass a previous store.
+ // 2. A load may not pass a previous store unless flag 'NoAlias' is set.
+ // 3. A load may pass a previous load.
+ // 4. A store may not pass a previous load (regardless of flag 'NoAlias').
+ // 5. A load has to wait until an older load barrier is fully executed.
+ // 6. A store has to wait until an older store barrier is fully executed.
+ virtual bool isReady(const InstRef &IR) const;
+
+ // Load and store instructions are tracked by their corresponding queues from
+ // dispatch until the "instruction executed" event.
+ // Only when a load instruction reaches the 'Executed' stage, its value
+ // becomes available to the users. At that point, the load no longer needs to
+ // be tracked by the load queue.
+ // FIXME: For simplicity, we optimistically assume a similar behavior for
+ // store instructions. In practice, store operations don't tend to leave the
+ // store queue until they reach the 'Retired' stage (See PR39830).
+ void onInstructionExecuted(const InstRef &IR);
+};
+
+} // namespace mca
+} // namespace llvm
+
+#endif // LLVM_MCA_LSUNIT_H
diff --git a/linux-x64/clang/include/llvm/MCA/HardwareUnits/RegisterFile.h b/linux-x64/clang/include/llvm/MCA/HardwareUnits/RegisterFile.h
new file mode 100644
index 0000000..3650632
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MCA/HardwareUnits/RegisterFile.h
@@ -0,0 +1,239 @@
+//===--------------------- RegisterFile.h -----------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// This file defines a register mapping file class. This class is responsible
+/// for managing hardware register files and the tracking of data dependencies
+/// between registers.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MCA_REGISTER_FILE_H
+#define LLVM_MCA_REGISTER_FILE_H
+
+#include "llvm/ADT/APInt.h"
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/MC/MCRegisterInfo.h"
+#include "llvm/MC/MCSchedule.h"
+#include "llvm/MC/MCSubtargetInfo.h"
+#include "llvm/MCA/HardwareUnits/HardwareUnit.h"
+#include "llvm/Support/Error.h"
+
+namespace llvm {
+namespace mca {
+
+class ReadState;
+class WriteState;
+class WriteRef;
+
+/// Manages hardware register files, and tracks register definitions for
+/// register renaming purposes.
+class RegisterFile : public HardwareUnit {
+ const MCRegisterInfo &MRI;
+
+ // class RegisterMappingTracker is a physical register file (PRF) descriptor.
+ // There is one RegisterMappingTracker for every PRF definition in the
+ // scheduling model.
+ //
+ // An instance of RegisterMappingTracker tracks the number of physical
+ // registers available for renaming. It also tracks the number of register
+ // moves eliminated per cycle.
+ struct RegisterMappingTracker {
+ // The total number of physical registers that are available in this
+ // register file for register renaming purpouses. A value of zero for this
+ // field means: this register file has an unbounded number of physical
+ // registers.
+ const unsigned NumPhysRegs;
+ // Number of physical registers that are currently in use.
+ unsigned NumUsedPhysRegs;
+
+ // Maximum number of register moves that can be eliminated by this PRF every
+ // cycle. A value of zero means that there is no limit in the number of
+ // moves which can be eliminated every cycle.
+ const unsigned MaxMoveEliminatedPerCycle;
+
+ // Number of register moves eliminated during this cycle.
+ //
+ // This value is increased by one every time a register move is eliminated.
+ // Every new cycle, this value is reset to zero.
+ // A move can be eliminated only if MaxMoveEliminatedPerCycle is zero, or if
+ // NumMoveEliminated is less than MaxMoveEliminatedPerCycle.
+ unsigned NumMoveEliminated;
+
+ // If set, move elimination is restricted to zero-register moves only.
+ bool AllowZeroMoveEliminationOnly;
+
+ RegisterMappingTracker(unsigned NumPhysRegisters,
+ unsigned MaxMoveEliminated = 0U,
+ bool AllowZeroMoveElimOnly = false)
+ : NumPhysRegs(NumPhysRegisters), NumUsedPhysRegs(0),
+ MaxMoveEliminatedPerCycle(MaxMoveEliminated), NumMoveEliminated(0U),
+ AllowZeroMoveEliminationOnly(AllowZeroMoveElimOnly) {}
+ };
+
+ // A vector of register file descriptors. This set always contains at least
+ // one entry. Entry at index #0 is reserved. That entry describes a register
+ // file with an unbounded number of physical registers that "sees" all the
+ // hardware registers declared by the target (i.e. all the register
+ // definitions in the target specific `XYZRegisterInfo.td` - where `XYZ` is
+ // the target name).
+ //
+ // Users can limit the number of physical registers that are available in
+ // regsiter file #0 specifying command line flag `-register-file-size=<uint>`.
+ SmallVector<RegisterMappingTracker, 4> RegisterFiles;
+
+ // This type is used to propagate information about the owner of a register,
+ // and the cost of allocating it in the PRF. Register cost is defined as the
+ // number of physical registers consumed by the PRF to allocate a user
+ // register.
+ //
+ // For example: on X86 BtVer2, a YMM register consumes 2 128-bit physical
+ // registers. So, the cost of allocating a YMM register in BtVer2 is 2.
+ using IndexPlusCostPairTy = std::pair<unsigned, unsigned>;
+
+ // Struct RegisterRenamingInfo is used to map logical registers to register
+ // files.
+ //
+ // There is a RegisterRenamingInfo object for every logical register defined
+ // by the target. RegisteRenamingInfo objects are stored into vector
+ // `RegisterMappings`, and MCPhysReg IDs can be used to reference
+ // elements in that vector.
+ //
+ // Each RegisterRenamingInfo is owned by a PRF, and field `IndexPlusCost`
+ // specifies both the owning PRF, as well as the number of physical registers
+ // consumed at register renaming stage.
+ //
+ // Field `AllowMoveElimination` is set for registers that are used as
+ // destination by optimizable register moves.
+ //
+ // Field `AliasRegID` is set by writes from register moves that have been
+ // eliminated at register renaming stage. A move eliminated at register
+ // renaming stage is effectively bypassed, and its write aliases the source
+ // register definition.
+ struct RegisterRenamingInfo {
+ IndexPlusCostPairTy IndexPlusCost;
+ MCPhysReg RenameAs;
+ MCPhysReg AliasRegID;
+ bool AllowMoveElimination;
+ RegisterRenamingInfo()
+ : IndexPlusCost(std::make_pair(0U, 1U)), RenameAs(0U), AliasRegID(0U),
+ AllowMoveElimination(false) {}
+ };
+
+ // RegisterMapping objects are mainly used to track physical register
+ // definitions and resolve data dependencies.
+ //
+ // Every register declared by the Target is associated with an instance of
+ // RegisterMapping. RegisterMapping objects keep track of writes to a logical
+ // register. That information is used by class RegisterFile to resolve data
+ // dependencies, and correctly set latencies for register uses.
+ //
+ // This implementation does not allow overlapping register files. The only
+ // register file that is allowed to overlap with other register files is
+ // register file #0. If we exclude register #0, every register is "owned" by
+ // at most one register file.
+ using RegisterMapping = std::pair<WriteRef, RegisterRenamingInfo>;
+
+ // There is one entry per each register defined by the target.
+ std::vector<RegisterMapping> RegisterMappings;
+
+ // Used to track zero registers. There is one bit for each register defined by
+ // the target. Bits are set for registers that are known to be zero.
+ APInt ZeroRegisters;
+
+ // This method creates a new register file descriptor.
+ // The new register file owns all of the registers declared by register
+ // classes in the 'RegisterClasses' set.
+ //
+ // Processor models allow the definition of RegisterFile(s) via tablegen. For
+ // example, this is a tablegen definition for a x86 register file for
+ // XMM[0-15] and YMM[0-15], that allows up to 60 renames (each rename costs 1
+ // physical register).
+ //
+ // def FPRegisterFile : RegisterFile<60, [VR128RegClass, VR256RegClass]>
+ //
+ // Here FPRegisterFile contains all the registers defined by register class
+ // VR128RegClass and VR256RegClass. FPRegisterFile implements 60
+ // registers which can be used for register renaming purpose.
+ void addRegisterFile(const MCRegisterFileDesc &RF,
+ ArrayRef<MCRegisterCostEntry> Entries);
+
+ // Consumes physical registers in each register file specified by the
+ // `IndexPlusCostPairTy`. This method is called from `addRegisterMapping()`.
+ void allocatePhysRegs(const RegisterRenamingInfo &Entry,
+ MutableArrayRef<unsigned> UsedPhysRegs);
+
+ // Releases previously allocated physical registers from the register file(s).
+ // This method is called from `invalidateRegisterMapping()`.
+ void freePhysRegs(const RegisterRenamingInfo &Entry,
+ MutableArrayRef<unsigned> FreedPhysRegs);
+
+ // Collects writes that are in a RAW dependency with RS.
+ // This method is called from `addRegisterRead()`.
+ void collectWrites(const ReadState &RS,
+ SmallVectorImpl<WriteRef> &Writes) const;
+
+ // Create an instance of RegisterMappingTracker for every register file
+ // specified by the processor model.
+ // If no register file is specified, then this method creates a default
+ // register file with an unbounded number of physical registers.
+ void initialize(const MCSchedModel &SM, unsigned NumRegs);
+
+public:
+ RegisterFile(const MCSchedModel &SM, const MCRegisterInfo &mri,
+ unsigned NumRegs = 0);
+
+ // This method updates the register mappings inserting a new register
+ // definition. This method is also responsible for updating the number of
+ // allocated physical registers in each register file modified by the write.
+ // No physical regiser is allocated if this write is from a zero-idiom.
+ void addRegisterWrite(WriteRef Write, MutableArrayRef<unsigned> UsedPhysRegs);
+
+ // Collect writes that are in a data dependency with RS, and update RS
+ // internal state.
+ void addRegisterRead(ReadState &RS, const MCSubtargetInfo &STI) const;
+
+ // Removes write \param WS from the register mappings.
+ // Physical registers may be released to reflect this update.
+ // No registers are released if this write is from a zero-idiom.
+ void removeRegisterWrite(const WriteState &WS,
+ MutableArrayRef<unsigned> FreedPhysRegs);
+
+ // Returns true if a move from RS to WS can be eliminated.
+ // On success, it updates WriteState by setting flag `WS.isEliminated`.
+ // If RS is a read from a zero register, and WS is eliminated, then
+ // `WS.WritesZero` is also set, so that method addRegisterWrite() would not
+ // reserve a physical register for it.
+ bool tryEliminateMove(WriteState &WS, ReadState &RS);
+
+ // Checks if there are enough physical registers in the register files.
+ // Returns a "response mask" where each bit represents the response from a
+ // different register file. A mask of all zeroes means that all register
+ // files are available. Otherwise, the mask can be used to identify which
+ // register file was busy. This sematic allows us to classify dispatch
+ // stalls caused by the lack of register file resources.
+ //
+ // Current implementation can simulate up to 32 register files (including the
+ // special register file at index #0).
+ unsigned isAvailable(ArrayRef<unsigned> Regs) const;
+
+ // Returns the number of PRFs implemented by this processor.
+ unsigned getNumRegisterFiles() const { return RegisterFiles.size(); }
+
+ // Notify each PRF that a new cycle just started.
+ void cycleStart();
+
+#ifndef NDEBUG
+ void dump() const;
+#endif
+};
+
+} // namespace mca
+} // namespace llvm
+
+#endif // LLVM_MCA_REGISTER_FILE_H
diff --git a/linux-x64/clang/include/llvm/MCA/HardwareUnits/ResourceManager.h b/linux-x64/clang/include/llvm/MCA/HardwareUnits/ResourceManager.h
new file mode 100644
index 0000000..3addaaf
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MCA/HardwareUnits/ResourceManager.h
@@ -0,0 +1,425 @@
+//===--------------------- ResourceManager.h --------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// The classes here represent processor resource units and their management
+/// strategy. These classes are managed by the Scheduler.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MCA_RESOURCE_MANAGER_H
+#define LLVM_MCA_RESOURCE_MANAGER_H
+
+#include "llvm/ADT/ArrayRef.h"
+#include "llvm/ADT/DenseMap.h"
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/MC/MCSchedule.h"
+#include "llvm/MCA/Instruction.h"
+#include "llvm/MCA/Support.h"
+
+namespace llvm {
+namespace mca {
+
+/// Used to notify the internal state of a processor resource.
+///
+/// A processor resource is available if it is not reserved, and there are
+/// available slots in the buffer. A processor resource is unavailable if it
+/// is either reserved, or the associated buffer is full. A processor resource
+/// with a buffer size of -1 is always available if it is not reserved.
+///
+/// Values of type ResourceStateEvent are returned by method
+/// ResourceState::isBufferAvailable(), which is used to query the internal
+/// state of a resource.
+///
+/// The naming convention for resource state events is:
+/// * Event names start with prefix RS_
+/// * Prefix RS_ is followed by a string describing the actual resource state.
+enum ResourceStateEvent {
+ RS_BUFFER_AVAILABLE,
+ RS_BUFFER_UNAVAILABLE,
+ RS_RESERVED
+};
+
+/// Resource allocation strategy used by hardware scheduler resources.
+class ResourceStrategy {
+ ResourceStrategy(const ResourceStrategy &) = delete;
+ ResourceStrategy &operator=(const ResourceStrategy &) = delete;
+
+public:
+ ResourceStrategy() {}
+ virtual ~ResourceStrategy();
+
+ /// Selects a processor resource unit from a ReadyMask.
+ virtual uint64_t select(uint64_t ReadyMask) = 0;
+
+ /// Called by the ResourceManager when a processor resource group, or a
+ /// processor resource with multiple units has become unavailable.
+ ///
+ /// The default strategy uses this information to bias its selection logic.
+ virtual void used(uint64_t ResourceMask) {}
+};
+
+/// Default resource allocation strategy used by processor resource groups and
+/// processor resources with multiple units.
+class DefaultResourceStrategy final : public ResourceStrategy {
+ /// A Mask of resource unit identifiers.
+ ///
+ /// There is one bit set for every available resource unit.
+ /// It defaults to the value of field ResourceSizeMask in ResourceState.
+ const uint64_t ResourceUnitMask;
+
+ /// A simple round-robin selector for processor resource units.
+ /// Each bit of this mask identifies a sub resource within a group.
+ ///
+ /// As an example, lets assume that this is a default policy for a
+ /// processor resource group composed by the following three units:
+ /// ResourceA -- 0b001
+ /// ResourceB -- 0b010
+ /// ResourceC -- 0b100
+ ///
+ /// Field NextInSequenceMask is used to select the next unit from the set of
+ /// resource units. It defaults to the value of field `ResourceUnitMasks` (in
+ /// this example, it defaults to mask '0b111').
+ ///
+ /// The round-robin selector would firstly select 'ResourceC', then
+ /// 'ResourceB', and eventually 'ResourceA'. When a resource R is used, the
+ /// corresponding bit in NextInSequenceMask is cleared. For example, if
+ /// 'ResourceC' is selected, then the new value of NextInSequenceMask becomes
+ /// 0xb011.
+ ///
+ /// When NextInSequenceMask becomes zero, it is automatically reset to the
+ /// default value (i.e. ResourceUnitMask).
+ uint64_t NextInSequenceMask;
+
+ /// This field is used to track resource units that are used (i.e. selected)
+ /// by other groups other than the one associated with this strategy object.
+ ///
+ /// In LLVM processor resource groups are allowed to partially (or fully)
+ /// overlap. That means, a same unit may be visible to multiple groups.
+ /// This field keeps track of uses that have originated from outside of
+ /// this group. The idea is to bias the selection strategy, so that resources
+ /// that haven't been used by other groups get prioritized.
+ ///
+ /// The end goal is to (try to) keep the resource distribution as much uniform
+ /// as possible. By construction, this mask only tracks one-level of resource
+ /// usage. Therefore, this strategy is expected to be less accurate when same
+ /// units are used multiple times by other groups within a single round of
+ /// select.
+ ///
+ /// Note: an LRU selector would have a better accuracy at the cost of being
+ /// slightly more expensive (mostly in terms of runtime cost). Methods
+ /// 'select' and 'used', are always in the hot execution path of llvm-mca.
+ /// Therefore, a slow implementation of 'select' would have a negative impact
+ /// on the overall performance of the tool.
+ uint64_t RemovedFromNextInSequence;
+
+public:
+ DefaultResourceStrategy(uint64_t UnitMask)
+ : ResourceStrategy(), ResourceUnitMask(UnitMask),
+ NextInSequenceMask(UnitMask), RemovedFromNextInSequence(0) {}
+ virtual ~DefaultResourceStrategy() = default;
+
+ uint64_t select(uint64_t ReadyMask) override;
+ void used(uint64_t Mask) override;
+};
+
+/// A processor resource descriptor.
+///
+/// There is an instance of this class for every processor resource defined by
+/// the machine scheduling model.
+/// Objects of class ResourceState dynamically track the usage of processor
+/// resource units.
+class ResourceState {
+ /// An index to the MCProcResourceDesc entry in the processor model.
+ const unsigned ProcResourceDescIndex;
+ /// A resource mask. This is generated by the tool with the help of
+ /// function `mca::computeProcResourceMasks' (see Support.h).
+ ///
+ /// Field ResourceMask only has one bit set if this resource state describes a
+ /// processor resource unit (i.e. this is not a group). That means, we can
+ /// quickly check if a resource is a group by simply counting the number of
+ /// bits that are set in the mask.
+ ///
+ /// The most significant bit of a mask (MSB) uniquely identifies a resource.
+ /// Remaining bits are used to describe the composition of a group (Group).
+ ///
+ /// Example (little endian):
+ /// Resource | Mask | MSB | Group
+ /// ---------+------------+------------+------------
+ /// A | 0b000001 | 0b000001 | 0b000000
+ /// | | |
+ /// B | 0b000010 | 0b000010 | 0b000000
+ /// | | |
+ /// C | 0b010000 | 0b010000 | 0b000000
+ /// | | |
+ /// D | 0b110010 | 0b100000 | 0b010010
+ ///
+ /// In this example, resources A, B and C are processor resource units.
+ /// Only resource D is a group resource, and it contains resources B and C.
+ /// That is because MSB(B) and MSB(C) are both contained within Group(D).
+ const uint64_t ResourceMask;
+
+ /// A ProcResource can have multiple units.
+ ///
+ /// For processor resource groups this field is a mask of contained resource
+ /// units. It is obtained from ResourceMask by clearing the highest set bit.
+ /// The number of resource units in a group can be simply computed as the
+ /// population count of this field.
+ ///
+ /// For normal (i.e. non-group) resources, the number of bits set in this mask
+ /// is equivalent to the number of units declared by the processor model (see
+ /// field 'NumUnits' in 'ProcResourceUnits').
+ uint64_t ResourceSizeMask;
+
+ /// A mask of ready units.
+ uint64_t ReadyMask;
+
+ /// Buffered resources will have this field set to a positive number different
+ /// than zero. A buffered resource behaves like a reservation station
+ /// implementing its own buffer for out-of-order execution.
+ ///
+ /// A BufferSize of 1 is used by scheduler resources that force in-order
+ /// execution.
+ ///
+ /// A BufferSize of 0 is used to model in-order issue/dispatch resources.
+ /// Since in-order issue/dispatch resources don't implement buffers, dispatch
+ /// events coincide with issue events.
+ /// Also, no other instruction ca be dispatched/issue while this resource is
+ /// in use. Only when all the "resource cycles" are consumed (after the issue
+ /// event), a new instruction ca be dispatched.
+ const int BufferSize;
+
+ /// Available slots in the buffer (zero, if this is not a buffered resource).
+ unsigned AvailableSlots;
+
+ /// This field is set if this resource is currently reserved.
+ ///
+ /// Resources can be reserved for a number of cycles.
+ /// Instructions can still be dispatched to reserved resources. However,
+ /// istructions dispatched to a reserved resource cannot be issued to the
+ /// underlying units (i.e. pipelines) until the resource is released.
+ bool Unavailable;
+
+ const bool IsAGroup;
+
+ /// Checks for the availability of unit 'SubResMask' in the group.
+ bool isSubResourceReady(uint64_t SubResMask) const {
+ return ReadyMask & SubResMask;
+ }
+
+public:
+ ResourceState(const MCProcResourceDesc &Desc, unsigned Index, uint64_t Mask);
+
+ unsigned getProcResourceID() const { return ProcResourceDescIndex; }
+ uint64_t getResourceMask() const { return ResourceMask; }
+ uint64_t getReadyMask() const { return ReadyMask; }
+ int getBufferSize() const { return BufferSize; }
+
+ bool isBuffered() const { return BufferSize > 0; }
+ bool isInOrder() const { return BufferSize == 1; }
+
+ /// Returns true if this is an in-order dispatch/issue resource.
+ bool isADispatchHazard() const { return BufferSize == 0; }
+ bool isReserved() const { return Unavailable; }
+
+ void setReserved() { Unavailable = true; }
+ void clearReserved() { Unavailable = false; }
+
+ /// Returs true if this resource is not reserved, and if there are at least
+ /// `NumUnits` available units.
+ bool isReady(unsigned NumUnits = 1) const;
+
+ bool isAResourceGroup() const { return IsAGroup; }
+
+ bool containsResource(uint64_t ID) const { return ResourceMask & ID; }
+
+ void markSubResourceAsUsed(uint64_t ID) {
+ assert(isSubResourceReady(ID));
+ ReadyMask ^= ID;
+ }
+
+ void releaseSubResource(uint64_t ID) {
+ assert(!isSubResourceReady(ID));
+ ReadyMask ^= ID;
+ }
+
+ unsigned getNumUnits() const {
+ return isAResourceGroup() ? 1U : countPopulation(ResourceSizeMask);
+ }
+
+ /// Checks if there is an available slot in the resource buffer.
+ ///
+ /// Returns RS_BUFFER_AVAILABLE if this is not a buffered resource, or if
+ /// there is a slot available.
+ ///
+ /// Returns RS_RESERVED if this buffered resource is a dispatch hazard, and it
+ /// is reserved.
+ ///
+ /// Returns RS_BUFFER_UNAVAILABLE if there are no available slots.
+ ResourceStateEvent isBufferAvailable() const;
+
+ /// Reserve a slot in the buffer.
+ void reserveBuffer() {
+ if (AvailableSlots)
+ AvailableSlots--;
+ }
+
+ /// Release a slot in the buffer.
+ void releaseBuffer() {
+ if (BufferSize > 0)
+ AvailableSlots++;
+ assert(AvailableSlots <= static_cast<unsigned>(BufferSize));
+ }
+
+#ifndef NDEBUG
+ void dump() const;
+#endif
+};
+
+/// A resource unit identifier.
+///
+/// This is used to identify a specific processor resource unit using a pair
+/// of indices where the 'first' index is a processor resource mask, and the
+/// 'second' index is an index for a "sub-resource" (i.e. unit).
+typedef std::pair<uint64_t, uint64_t> ResourceRef;
+
+// First: a MCProcResourceDesc index identifying a buffered resource.
+// Second: max number of buffer entries used in this resource.
+typedef std::pair<unsigned, unsigned> BufferUsageEntry;
+
+/// A resource manager for processor resource units and groups.
+///
+/// This class owns all the ResourceState objects, and it is responsible for
+/// acting on requests from a Scheduler by updating the internal state of
+/// ResourceState objects.
+/// This class doesn't know about instruction itineraries and functional units.
+/// In future, it can be extended to support itineraries too through the same
+/// public interface.
+class ResourceManager {
+ // Set of resources available on the subtarget.
+ //
+ // There is an instance of ResourceState for every resource declared by the
+ // target scheduling model.
+ //
+ // Elements of this vector are ordered by resource kind. In particular,
+ // resource units take precedence over resource groups.
+ //
+ // The index of a processor resource in this vector depends on the value of
+ // its mask (see the description of field ResourceState::ResourceMask). In
+ // particular, it is computed as the position of the most significant bit set
+ // (MSB) in the mask plus one (since we want to ignore the invalid resource
+ // descriptor at index zero).
+ //
+ // Example (little endian):
+ //
+ // Resource | Mask | MSB | Index
+ // ---------+---------+---------+-------
+ // A | 0b00001 | 0b00001 | 1
+ // | | |
+ // B | 0b00100 | 0b00100 | 3
+ // | | |
+ // C | 0b10010 | 0b10000 | 5
+ //
+ //
+ // The same index is also used to address elements within vector `Strategies`
+ // and vector `Resource2Groups`.
+ std::vector<std::unique_ptr<ResourceState>> Resources;
+ std::vector<std::unique_ptr<ResourceStrategy>> Strategies;
+
+ // Used to quickly identify groups that own a particular resource unit.
+ std::vector<uint64_t> Resource2Groups;
+
+ // A table to map processor resource IDs to processor resource masks.
+ SmallVector<uint64_t, 8> ProcResID2Mask;
+
+ // Keeps track of which resources are busy, and how many cycles are left
+ // before those become usable again.
+ SmallDenseMap<ResourceRef, unsigned> BusyResources;
+
+ // Set of processor resource units available on the target.
+ uint64_t ProcResUnitMask;
+
+ // Set of processor resource units that are available during this cycle.
+ uint64_t AvailableProcResUnits;
+
+ // Set of processor resource groups that are currently reserved.
+ uint64_t ReservedResourceGroups;
+
+ // Returns the actual resource unit that will be used.
+ ResourceRef selectPipe(uint64_t ResourceID);
+
+ void use(const ResourceRef &RR);
+ void release(const ResourceRef &RR);
+
+ unsigned getNumUnits(uint64_t ResourceID) const;
+
+ // Overrides the selection strategy for the processor resource with the given
+ // mask.
+ void setCustomStrategyImpl(std::unique_ptr<ResourceStrategy> S,
+ uint64_t ResourceMask);
+
+public:
+ ResourceManager(const MCSchedModel &SM);
+ virtual ~ResourceManager() = default;
+
+ // Overrides the selection strategy for the resource at index ResourceID in
+ // the MCProcResourceDesc table.
+ void setCustomStrategy(std::unique_ptr<ResourceStrategy> S,
+ unsigned ResourceID) {
+ assert(ResourceID < ProcResID2Mask.size() &&
+ "Invalid resource index in input!");
+ return setCustomStrategyImpl(std::move(S), ProcResID2Mask[ResourceID]);
+ }
+
+ // Returns RS_BUFFER_AVAILABLE if buffered resources are not reserved, and if
+ // there are enough available slots in the buffers.
+ ResourceStateEvent canBeDispatched(ArrayRef<uint64_t> Buffers) const;
+
+ // Return the processor resource identifier associated to this Mask.
+ unsigned resolveResourceMask(uint64_t Mask) const;
+
+ // Consume a slot in every buffered resource from array 'Buffers'. Resource
+ // units that are dispatch hazards (i.e. BufferSize=0) are marked as reserved.
+ void reserveBuffers(ArrayRef<uint64_t> Buffers);
+
+ // Release buffer entries previously allocated by method reserveBuffers.
+ void releaseBuffers(ArrayRef<uint64_t> Buffers);
+
+ // Reserve a processor resource. A reserved resource is not available for
+ // instruction issue until it is released.
+ void reserveResource(uint64_t ResourceID);
+
+ // Release a previously reserved processor resource.
+ void releaseResource(uint64_t ResourceID);
+
+ // Returns a zero mask if resources requested by Desc are all available during
+ // this cycle. It returns a non-zero mask value only if there are unavailable
+ // processor resources; each bit set in the mask represents a busy processor
+ // resource unit or a reserved processor resource group.
+ uint64_t checkAvailability(const InstrDesc &Desc) const;
+
+ uint64_t getProcResUnitMask() const { return ProcResUnitMask; }
+ uint64_t getAvailableProcResUnits() const { return AvailableProcResUnits; }
+
+ void issueInstruction(
+ const InstrDesc &Desc,
+ SmallVectorImpl<std::pair<ResourceRef, ResourceCycles>> &Pipes);
+
+ void cycleEvent(SmallVectorImpl<ResourceRef> &ResourcesFreed);
+
+#ifndef NDEBUG
+ void dump() const {
+ for (const std::unique_ptr<ResourceState> &Resource : Resources)
+ Resource->dump();
+ }
+#endif
+};
+} // namespace mca
+} // namespace llvm
+
+#endif // LLVM_MCA_RESOURCE_MANAGER_H
diff --git a/linux-x64/clang/include/llvm/MCA/HardwareUnits/RetireControlUnit.h b/linux-x64/clang/include/llvm/MCA/HardwareUnits/RetireControlUnit.h
new file mode 100644
index 0000000..0629014
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MCA/HardwareUnits/RetireControlUnit.h
@@ -0,0 +1,103 @@
+//===---------------------- RetireControlUnit.h -----------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// This file simulates the hardware responsible for retiring instructions.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MCA_RETIRE_CONTROL_UNIT_H
+#define LLVM_MCA_RETIRE_CONTROL_UNIT_H
+
+#include "llvm/MC/MCSchedule.h"
+#include "llvm/MCA/HardwareUnits/HardwareUnit.h"
+#include "llvm/MCA/Instruction.h"
+#include <vector>
+
+namespace llvm {
+namespace mca {
+
+/// This class tracks which instructions are in-flight (i.e., dispatched but not
+/// retired) in the OoO backend.
+//
+/// This class checks on every cycle if/which instructions can be retired.
+/// Instructions are retired in program order.
+/// In the event of an instruction being retired, the pipeline that owns
+/// this RetireControlUnit (RCU) gets notified.
+///
+/// On instruction retired, register updates are all architecturally
+/// committed, and any physicall registers previously allocated for the
+/// retired instruction are freed.
+struct RetireControlUnit : public HardwareUnit {
+ // A RUToken is created by the RCU for every instruction dispatched to the
+ // schedulers. These "tokens" are managed by the RCU in its token Queue.
+ //
+ // On every cycle ('cycleEvent'), the RCU iterates through the token queue
+ // looking for any token with its 'Executed' flag set. If a token has that
+ // flag set, then the instruction has reached the write-back stage and will
+ // be retired by the RCU.
+ //
+ // 'NumSlots' represents the number of entries consumed by the instruction in
+ // the reorder buffer. Those entries will become available again once the
+ // instruction is retired.
+ //
+ // Note that the size of the reorder buffer is defined by the scheduling
+ // model via field 'NumMicroOpBufferSize'.
+ struct RUToken {
+ InstRef IR;
+ unsigned NumSlots; // Slots reserved to this instruction.
+ bool Executed; // True if the instruction is past the WB stage.
+ };
+
+private:
+ unsigned NextAvailableSlotIdx;
+ unsigned CurrentInstructionSlotIdx;
+ unsigned AvailableSlots;
+ unsigned MaxRetirePerCycle; // 0 means no limit.
+ std::vector<RUToken> Queue;
+
+public:
+ RetireControlUnit(const MCSchedModel &SM);
+
+ bool isEmpty() const { return AvailableSlots == Queue.size(); }
+ bool isAvailable(unsigned Quantity = 1) const {
+ // Some instructions may declare a number of uOps which exceeds the size
+ // of the reorder buffer. To avoid problems, cap the amount of slots to
+ // the size of the reorder buffer.
+ Quantity = std::min(Quantity, static_cast<unsigned>(Queue.size()));
+
+ // Further normalize the number of micro opcodes for instructions that
+ // declare zero opcodes. This should match the behavior of method
+ // reserveSlot().
+ Quantity = std::max(Quantity, 1U);
+ return AvailableSlots >= Quantity;
+ }
+
+ unsigned getMaxRetirePerCycle() const { return MaxRetirePerCycle; }
+
+ // Reserves a number of slots, and returns a new token.
+ unsigned reserveSlot(const InstRef &IS, unsigned NumMicroOps);
+
+ // Return the current token from the RCU's circular token queue.
+ const RUToken &peekCurrentToken() const;
+
+ // Advance the pointer to the next token in the circular token queue.
+ void consumeCurrentToken();
+
+ // Update the RCU token to represent the executed state.
+ void onInstructionExecuted(unsigned TokenID);
+
+#ifndef NDEBUG
+ void dump() const;
+#endif
+};
+
+} // namespace mca
+} // namespace llvm
+
+#endif // LLVM_MCA_RETIRE_CONTROL_UNIT_H
diff --git a/linux-x64/clang/include/llvm/MCA/HardwareUnits/Scheduler.h b/linux-x64/clang/include/llvm/MCA/HardwareUnits/Scheduler.h
new file mode 100644
index 0000000..f1cfcbe
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MCA/HardwareUnits/Scheduler.h
@@ -0,0 +1,250 @@
+//===--------------------- Scheduler.h ------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// A scheduler for Processor Resource Units and Processor Resource Groups.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MCA_SCHEDULER_H
+#define LLVM_MCA_SCHEDULER_H
+
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/MC/MCSchedule.h"
+#include "llvm/MCA/HardwareUnits/HardwareUnit.h"
+#include "llvm/MCA/HardwareUnits/LSUnit.h"
+#include "llvm/MCA/HardwareUnits/ResourceManager.h"
+#include "llvm/MCA/Support.h"
+
+namespace llvm {
+namespace mca {
+
+class SchedulerStrategy {
+public:
+ SchedulerStrategy() = default;
+ virtual ~SchedulerStrategy();
+
+ /// Returns true if Lhs should take priority over Rhs.
+ ///
+ /// This method is used by class Scheduler to select the "best" ready
+ /// instruction to issue to the underlying pipelines.
+ virtual bool compare(const InstRef &Lhs, const InstRef &Rhs) const = 0;
+};
+
+/// Default instruction selection strategy used by class Scheduler.
+class DefaultSchedulerStrategy : public SchedulerStrategy {
+ /// This method ranks instructions based on their age, and the number of known
+ /// users. The lower the rank value, the better.
+ int computeRank(const InstRef &Lhs) const {
+ return Lhs.getSourceIndex() - Lhs.getInstruction()->getNumUsers();
+ }
+
+public:
+ DefaultSchedulerStrategy() = default;
+ virtual ~DefaultSchedulerStrategy();
+
+ bool compare(const InstRef &Lhs, const InstRef &Rhs) const override {
+ int LhsRank = computeRank(Lhs);
+ int RhsRank = computeRank(Rhs);
+
+ /// Prioritize older instructions over younger instructions to minimize the
+ /// pressure on the reorder buffer.
+ if (LhsRank == RhsRank)
+ return Lhs.getSourceIndex() < Rhs.getSourceIndex();
+ return LhsRank < RhsRank;
+ }
+};
+
+/// Class Scheduler is responsible for issuing instructions to pipeline
+/// resources.
+///
+/// Internally, it delegates to a ResourceManager the management of processor
+/// resources. This class is also responsible for tracking the progress of
+/// instructions from the dispatch stage, until the write-back stage.
+///
+class Scheduler : public HardwareUnit {
+ LSUnit &LSU;
+
+ // Instruction selection strategy for this Scheduler.
+ std::unique_ptr<SchedulerStrategy> Strategy;
+
+ // Hardware resources that are managed by this scheduler.
+ std::unique_ptr<ResourceManager> Resources;
+
+ // Instructions dispatched to the Scheduler are internally classified based on
+ // the instruction stage (see Instruction::InstrStage).
+ //
+ // An Instruction dispatched to the Scheduler is added to the WaitSet if not
+ // all its register operands are available, and at least one latency is unknown.
+ // By construction, the WaitSet only contains instructions that are in the
+ // IS_DISPATCHED stage.
+ //
+ // An Instruction transitions from the WaitSet to the PendingSet if the
+ // instruction is not ready yet, but the latency of every register read is known.
+ // Instructions in the PendingSet are expected to be in the IS_PENDING stage.
+ //
+ // Instructions in the PendingSet are immediately dominated only by
+ // instructions that have already been issued to the underlying pipelines.
+ // In the presence of bottlenecks caused by data dependencies, the PendingSet
+ // can be inspected to identify problematic data dependencies between
+ // instructions.
+ //
+ // An instruction is moved to the ReadySet when all register operands become
+ // available, and all memory dependencies are met. Instructions that are
+ // moved from the PendingSet to the ReadySet transition in state from
+ // 'IS_PENDING' to 'IS_READY'.
+ //
+ // On every cycle, the Scheduler checks if it can promote instructions from the
+ // PendingSet to the ReadySet.
+ //
+ // An Instruction is moved from the ReadySet to the `IssuedSet` when it starts
+ // exection. This event also causes an instruction state transition (i.e. from
+ // state IS_READY, to state IS_EXECUTING). An Instruction leaves the IssuedSet
+ // only when it reaches the write-back stage.
+ std::vector<InstRef> WaitSet;
+ std::vector<InstRef> PendingSet;
+ std::vector<InstRef> ReadySet;
+ std::vector<InstRef> IssuedSet;
+
+ // A mask of busy resource units. It defaults to the empty set (i.e. a zero
+ // mask), and it is cleared at the beginning of every cycle.
+ // It is updated every time the scheduler fails to issue an instruction from
+ // the ready set due to unavailable pipeline resources.
+ // Each bit of the mask represents an unavailable resource.
+ uint64_t BusyResourceUnits;
+
+ /// Verify the given selection strategy and set the Strategy member
+ /// accordingly. If no strategy is provided, the DefaultSchedulerStrategy is
+ /// used.
+ void initializeStrategy(std::unique_ptr<SchedulerStrategy> S);
+
+ /// Issue an instruction without updating the ready queue.
+ void issueInstructionImpl(
+ InstRef &IR,
+ SmallVectorImpl<std::pair<ResourceRef, ResourceCycles>> &Pipes);
+
+ // Identify instructions that have finished executing, and remove them from
+ // the IssuedSet. References to executed instructions are added to input
+ // vector 'Executed'.
+ void updateIssuedSet(SmallVectorImpl<InstRef> &Executed);
+
+ // Try to promote instructions from the PendingSet to the ReadySet.
+ // Add promoted instructions to the 'Ready' vector in input.
+ // Returns true if at least one instruction was promoted.
+ bool promoteToReadySet(SmallVectorImpl<InstRef> &Ready);
+
+ // Try to promote instructions from the WaitSet to the PendingSet.
+ // Returns true if at least one instruction was promoted.
+ bool promoteToPendingSet();
+
+public:
+ Scheduler(const MCSchedModel &Model, LSUnit &Lsu)
+ : Scheduler(Model, Lsu, nullptr) {}
+
+ Scheduler(const MCSchedModel &Model, LSUnit &Lsu,
+ std::unique_ptr<SchedulerStrategy> SelectStrategy)
+ : Scheduler(make_unique<ResourceManager>(Model), Lsu,
+ std::move(SelectStrategy)) {}
+
+ Scheduler(std::unique_ptr<ResourceManager> RM, LSUnit &Lsu,
+ std::unique_ptr<SchedulerStrategy> SelectStrategy)
+ : LSU(Lsu), Resources(std::move(RM)), BusyResourceUnits(0) {
+ initializeStrategy(std::move(SelectStrategy));
+ }
+
+ // Stalls generated by the scheduler.
+ enum Status {
+ SC_AVAILABLE,
+ SC_LOAD_QUEUE_FULL,
+ SC_STORE_QUEUE_FULL,
+ SC_BUFFERS_FULL,
+ SC_DISPATCH_GROUP_STALL,
+ };
+
+ /// Check if the instruction in 'IR' can be dispatched and returns an answer
+ /// in the form of a Status value.
+ ///
+ /// The DispatchStage is responsible for querying the Scheduler before
+ /// dispatching new instructions. This routine is used for performing such
+ /// a query. If the instruction 'IR' can be dispatched, then true is
+ /// returned, otherwise false is returned with Event set to the stall type.
+ /// Internally, it also checks if the load/store unit is available.
+ Status isAvailable(const InstRef &IR) const;
+
+ /// Reserves buffer and LSUnit queue resources that are necessary to issue
+ /// this instruction.
+ ///
+ /// Returns true if instruction IR is ready to be issued to the underlying
+ /// pipelines. Note that this operation cannot fail; it assumes that a
+ /// previous call to method `isAvailable(IR)` returned `SC_AVAILABLE`.
+ void dispatch(const InstRef &IR);
+
+ /// Returns true if IR is ready to be executed by the underlying pipelines.
+ /// This method assumes that IR has been previously dispatched.
+ bool isReady(const InstRef &IR) const;
+
+ /// Issue an instruction and populates a vector of used pipeline resources,
+ /// and a vector of instructions that transitioned to the ready state as a
+ /// result of this event.
+ void issueInstruction(
+ InstRef &IR,
+ SmallVectorImpl<std::pair<ResourceRef, ResourceCycles>> &Used,
+ SmallVectorImpl<InstRef> &Ready);
+
+ /// Returns true if IR has to be issued immediately, or if IR is a zero
+ /// latency instruction.
+ bool mustIssueImmediately(const InstRef &IR) const;
+
+ /// This routine notifies the Scheduler that a new cycle just started.
+ ///
+ /// It notifies the underlying ResourceManager that a new cycle just started.
+ /// Vector `Freed` is populated with resourceRef related to resources that
+ /// have changed in state, and that are now available to new instructions.
+ /// Instructions executed are added to vector Executed, while vector Ready is
+ /// populated with instructions that have become ready in this new cycle.
+ void cycleEvent(SmallVectorImpl<ResourceRef> &Freed,
+ SmallVectorImpl<InstRef> &Ready,
+ SmallVectorImpl<InstRef> &Executed);
+
+ /// Convert a resource mask into a valid llvm processor resource identifier.
+ unsigned getResourceID(uint64_t Mask) const {
+ return Resources->resolveResourceMask(Mask);
+ }
+
+ /// Select the next instruction to issue from the ReadySet. Returns an invalid
+ /// instruction reference if there are no ready instructions, or if processor
+ /// resources are not available.
+ InstRef select();
+
+ /// Returns a mask of busy resources. Each bit of the mask identifies a unique
+ /// processor resource unit. In the absence of bottlenecks caused by resource
+ /// pressure, the mask value returned by this method is always zero.
+ uint64_t getBusyResourceUnits() const { return BusyResourceUnits; }
+ bool arePipelinesFullyUsed() const {
+ return !Resources->getAvailableProcResUnits();
+ }
+ bool isReadySetEmpty() const { return ReadySet.empty(); }
+ bool isWaitSetEmpty() const { return WaitSet.empty(); }
+
+#ifndef NDEBUG
+ // Update the ready queues.
+ void dump() const;
+
+ // This routine performs a sanity check. This routine should only be called
+ // when we know that 'IR' is not in the scheduler's instruction queues.
+ void sanityCheck(const InstRef &IR) const {
+ assert(find(WaitSet, IR) == WaitSet.end() && "Already in the wait set!");
+ assert(find(ReadySet, IR) == ReadySet.end() && "Already in the ready set!");
+ assert(find(IssuedSet, IR) == IssuedSet.end() && "Already executing!");
+ }
+#endif // !NDEBUG
+};
+} // namespace mca
+} // namespace llvm
+
+#endif // LLVM_MCA_SCHEDULER_H
diff --git a/linux-x64/clang/include/llvm/MCA/InstrBuilder.h b/linux-x64/clang/include/llvm/MCA/InstrBuilder.h
new file mode 100644
index 0000000..6900163
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MCA/InstrBuilder.h
@@ -0,0 +1,76 @@
+//===--------------------- InstrBuilder.h -----------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// A builder class for instructions that are statically analyzed by llvm-mca.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MCA_INSTRBUILDER_H
+#define LLVM_MCA_INSTRBUILDER_H
+
+#include "llvm/MC/MCInstrAnalysis.h"
+#include "llvm/MC/MCInstrInfo.h"
+#include "llvm/MC/MCRegisterInfo.h"
+#include "llvm/MC/MCSubtargetInfo.h"
+#include "llvm/MCA/Instruction.h"
+#include "llvm/MCA/Support.h"
+#include "llvm/Support/Error.h"
+
+namespace llvm {
+namespace mca {
+
+/// A builder class that knows how to construct Instruction objects.
+///
+/// Every llvm-mca Instruction is described by an object of class InstrDesc.
+/// An InstrDesc describes which registers are read/written by the instruction,
+/// as well as the instruction latency and hardware resources consumed.
+///
+/// This class is used by the tool to construct Instructions and instruction
+/// descriptors (i.e. InstrDesc objects).
+/// Information from the machine scheduling model is used to identify processor
+/// resources that are consumed by an instruction.
+class InstrBuilder {
+ const MCSubtargetInfo &STI;
+ const MCInstrInfo &MCII;
+ const MCRegisterInfo &MRI;
+ const MCInstrAnalysis *MCIA;
+ SmallVector<uint64_t, 8> ProcResourceMasks;
+
+ DenseMap<unsigned short, std::unique_ptr<const InstrDesc>> Descriptors;
+ DenseMap<const MCInst *, std::unique_ptr<const InstrDesc>> VariantDescriptors;
+
+ bool FirstCallInst;
+ bool FirstReturnInst;
+
+ Expected<const InstrDesc &> createInstrDescImpl(const MCInst &MCI);
+ Expected<const InstrDesc &> getOrCreateInstrDesc(const MCInst &MCI);
+
+ InstrBuilder(const InstrBuilder &) = delete;
+ InstrBuilder &operator=(const InstrBuilder &) = delete;
+
+ void populateWrites(InstrDesc &ID, const MCInst &MCI, unsigned SchedClassID);
+ void populateReads(InstrDesc &ID, const MCInst &MCI, unsigned SchedClassID);
+ Error verifyInstrDesc(const InstrDesc &ID, const MCInst &MCI) const;
+
+public:
+ InstrBuilder(const MCSubtargetInfo &STI, const MCInstrInfo &MCII,
+ const MCRegisterInfo &RI, const MCInstrAnalysis *IA);
+
+ void clear() {
+ VariantDescriptors.shrink_and_clear();
+ FirstCallInst = true;
+ FirstReturnInst = true;
+ }
+
+ Expected<std::unique_ptr<Instruction>> createInstruction(const MCInst &MCI);
+};
+} // namespace mca
+} // namespace llvm
+
+#endif // LLVM_MCA_INSTRBUILDER_H
diff --git a/linux-x64/clang/include/llvm/MCA/Instruction.h b/linux-x64/clang/include/llvm/MCA/Instruction.h
new file mode 100644
index 0000000..658b7fe
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MCA/Instruction.h
@@ -0,0 +1,570 @@
+//===--------------------- Instruction.h ------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// This file defines abstractions used by the Pipeline to model register reads,
+/// register writes and instructions.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MCA_INSTRUCTION_H
+#define LLVM_MCA_INSTRUCTION_H
+
+#include "llvm/ADT/ArrayRef.h"
+#include "llvm/ADT/STLExtras.h"
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/Support/MathExtras.h"
+
+#ifndef NDEBUG
+#include "llvm/Support/raw_ostream.h"
+#endif
+
+#include <memory>
+
+namespace llvm {
+
+namespace mca {
+
+constexpr int UNKNOWN_CYCLES = -512;
+
+/// A register write descriptor.
+struct WriteDescriptor {
+ // Operand index. The index is negative for implicit writes only.
+ // For implicit writes, the actual operand index is computed performing
+ // a bitwise not of the OpIndex.
+ int OpIndex;
+ // Write latency. Number of cycles before write-back stage.
+ unsigned Latency;
+ // This field is set to a value different than zero only if this
+ // is an implicit definition.
+ unsigned RegisterID;
+ // Instruction itineraries would set this field to the SchedClass ID.
+ // Otherwise, it defaults to the WriteResourceID from the MCWriteLatencyEntry
+ // element associated to this write.
+ // When computing read latencies, this value is matched against the
+ // "ReadAdvance" information. The hardware backend may implement
+ // dedicated forwarding paths to quickly propagate write results to dependent
+ // instructions waiting in the reservation station (effectively bypassing the
+ // write-back stage).
+ unsigned SClassOrWriteResourceID;
+ // True only if this is a write obtained from an optional definition.
+ // Optional definitions are allowed to reference regID zero (i.e. "no
+ // register").
+ bool IsOptionalDef;
+
+ bool isImplicitWrite() const { return OpIndex < 0; };
+};
+
+/// A register read descriptor.
+struct ReadDescriptor {
+ // A MCOperand index. This is used by the Dispatch logic to identify register
+ // reads. Implicit reads have negative indices. The actual operand index of an
+ // implicit read is the bitwise not of field OpIndex.
+ int OpIndex;
+ // The actual "UseIdx". This is used to query the ReadAdvance table. Explicit
+ // uses always come first in the sequence of uses.
+ unsigned UseIndex;
+ // This field is only set if this is an implicit read.
+ unsigned RegisterID;
+ // Scheduling Class Index. It is used to query the scheduling model for the
+ // MCSchedClassDesc object.
+ unsigned SchedClassID;
+
+ bool isImplicitRead() const { return OpIndex < 0; };
+};
+
+class ReadState;
+
+/// Tracks uses of a register definition (e.g. register write).
+///
+/// Each implicit/explicit register write is associated with an instance of
+/// this class. A WriteState object tracks the dependent users of a
+/// register write. It also tracks how many cycles are left before the write
+/// back stage.
+class WriteState {
+ const WriteDescriptor *WD;
+ // On instruction issue, this field is set equal to the write latency.
+ // Before instruction issue, this field defaults to -512, a special
+ // value that represents an "unknown" number of cycles.
+ int CyclesLeft;
+
+ // Actual register defined by this write. This field is only used
+ // to speedup queries on the register file.
+ // For implicit writes, this field always matches the value of
+ // field RegisterID from WD.
+ unsigned RegisterID;
+
+ // Physical register file that serves register RegisterID.
+ unsigned PRFID;
+
+ // True if this write implicitly clears the upper portion of RegisterID's
+ // super-registers.
+ bool ClearsSuperRegs;
+
+ // True if this write is from a dependency breaking zero-idiom instruction.
+ bool WritesZero;
+
+ // True if this write has been eliminated at register renaming stage.
+ // Example: a register move doesn't consume scheduler/pipleline resources if
+ // it is eliminated at register renaming stage. It still consumes
+ // decode bandwidth, and ROB entries.
+ bool IsEliminated;
+
+ // This field is set if this is a partial register write, and it has a false
+ // dependency on any previous write of the same register (or a portion of it).
+ // DependentWrite must be able to complete before this write completes, so
+ // that we don't break the WAW, and the two writes can be merged together.
+ const WriteState *DependentWrite;
+
+ // A partial write that is in a false dependency with this write.
+ WriteState *PartialWrite;
+
+ unsigned DependentWriteCyclesLeft;
+
+ // A list of dependent reads. Users is a set of dependent
+ // reads. A dependent read is added to the set only if CyclesLeft
+ // is "unknown". As soon as CyclesLeft is 'known', each user in the set
+ // gets notified with the actual CyclesLeft.
+
+ // The 'second' element of a pair is a "ReadAdvance" number of cycles.
+ SmallVector<std::pair<ReadState *, int>, 4> Users;
+
+public:
+ WriteState(const WriteDescriptor &Desc, unsigned RegID,
+ bool clearsSuperRegs = false, bool writesZero = false)
+ : WD(&Desc), CyclesLeft(UNKNOWN_CYCLES), RegisterID(RegID), PRFID(0),
+ ClearsSuperRegs(clearsSuperRegs), WritesZero(writesZero),
+ IsEliminated(false), DependentWrite(nullptr), PartialWrite(nullptr),
+ DependentWriteCyclesLeft(0) {}
+
+ WriteState(const WriteState &Other) = default;
+ WriteState &operator=(const WriteState &Other) = default;
+
+ int getCyclesLeft() const { return CyclesLeft; }
+ unsigned getWriteResourceID() const { return WD->SClassOrWriteResourceID; }
+ unsigned getRegisterID() const { return RegisterID; }
+ unsigned getRegisterFileID() const { return PRFID; }
+ unsigned getLatency() const { return WD->Latency; }
+
+ void addUser(ReadState *Use, int ReadAdvance);
+ void addUser(WriteState *Use);
+
+ unsigned getDependentWriteCyclesLeft() const {
+ return DependentWriteCyclesLeft;
+ }
+
+ unsigned getNumUsers() const {
+ unsigned NumUsers = Users.size();
+ if (PartialWrite)
+ ++NumUsers;
+ return NumUsers;
+ }
+
+ bool clearsSuperRegisters() const { return ClearsSuperRegs; }
+ bool isWriteZero() const { return WritesZero; }
+ bool isEliminated() const { return IsEliminated; }
+
+ bool isReady() const {
+ if (getDependentWrite())
+ return false;
+ unsigned CyclesLeft = getDependentWriteCyclesLeft();
+ return !CyclesLeft || CyclesLeft < getLatency();
+ }
+
+ bool isExecuted() const {
+ return CyclesLeft != UNKNOWN_CYCLES && CyclesLeft <= 0;
+ }
+
+ const WriteState *getDependentWrite() const { return DependentWrite; }
+ void setDependentWrite(WriteState *Other) { DependentWrite = Other; }
+ void writeStartEvent(unsigned Cycles) {
+ DependentWriteCyclesLeft = Cycles;
+ DependentWrite = nullptr;
+ }
+
+ void setWriteZero() { WritesZero = true; }
+ void setEliminated() {
+ assert(Users.empty() && "Write is in an inconsistent state.");
+ CyclesLeft = 0;
+ IsEliminated = true;
+ }
+
+ void setPRF(unsigned PRF) { PRFID = PRF; }
+
+ // On every cycle, update CyclesLeft and notify dependent users.
+ void cycleEvent();
+ void onInstructionIssued();
+
+#ifndef NDEBUG
+ void dump() const;
+#endif
+};
+
+/// Tracks register operand latency in cycles.
+///
+/// A read may be dependent on more than one write. This occurs when some
+/// writes only partially update the register associated to this read.
+class ReadState {
+ const ReadDescriptor *RD;
+ // Physical register identified associated to this read.
+ unsigned RegisterID;
+ // Physical register file that serves register RegisterID.
+ unsigned PRFID;
+ // Number of writes that contribute to the definition of RegisterID.
+ // In the absence of partial register updates, the number of DependentWrites
+ // cannot be more than one.
+ unsigned DependentWrites;
+ // Number of cycles left before RegisterID can be read. This value depends on
+ // the latency of all the dependent writes. It defaults to UNKNOWN_CYCLES.
+ // It gets set to the value of field TotalCycles only when the 'CyclesLeft' of
+ // every dependent write is known.
+ int CyclesLeft;
+ // This field is updated on every writeStartEvent(). When the number of
+ // dependent writes (i.e. field DependentWrite) is zero, this value is
+ // propagated to field CyclesLeft.
+ unsigned TotalCycles;
+ // This field is set to true only if there are no dependent writes, and
+ // there are no `CyclesLeft' to wait.
+ bool IsReady;
+ // True if this is a read from a known zero register.
+ bool IsZero;
+ // True if this register read is from a dependency-breaking instruction.
+ bool IndependentFromDef;
+
+public:
+ ReadState(const ReadDescriptor &Desc, unsigned RegID)
+ : RD(&Desc), RegisterID(RegID), PRFID(0), DependentWrites(0),
+ CyclesLeft(UNKNOWN_CYCLES), TotalCycles(0), IsReady(true),
+ IsZero(false), IndependentFromDef(false) {}
+
+ const ReadDescriptor &getDescriptor() const { return *RD; }
+ unsigned getSchedClass() const { return RD->SchedClassID; }
+ unsigned getRegisterID() const { return RegisterID; }
+ unsigned getRegisterFileID() const { return PRFID; }
+
+ bool isPending() const { return !IndependentFromDef && CyclesLeft > 0; }
+ bool isReady() const { return IsReady; }
+ bool isImplicitRead() const { return RD->isImplicitRead(); }
+
+ bool isIndependentFromDef() const { return IndependentFromDef; }
+ void setIndependentFromDef() { IndependentFromDef = true; }
+
+ void cycleEvent();
+ void writeStartEvent(unsigned Cycles);
+ void setDependentWrites(unsigned Writes) {
+ DependentWrites = Writes;
+ IsReady = !Writes;
+ }
+
+ bool isReadZero() const { return IsZero; }
+ void setReadZero() { IsZero = true; }
+ void setPRF(unsigned ID) { PRFID = ID; }
+};
+
+/// A sequence of cycles.
+///
+/// This class can be used as a building block to construct ranges of cycles.
+class CycleSegment {
+ unsigned Begin; // Inclusive.
+ unsigned End; // Exclusive.
+ bool Reserved; // Resources associated to this segment must be reserved.
+
+public:
+ CycleSegment(unsigned StartCycle, unsigned EndCycle, bool IsReserved = false)
+ : Begin(StartCycle), End(EndCycle), Reserved(IsReserved) {}
+
+ bool contains(unsigned Cycle) const { return Cycle >= Begin && Cycle < End; }
+ bool startsAfter(const CycleSegment &CS) const { return End <= CS.Begin; }
+ bool endsBefore(const CycleSegment &CS) const { return Begin >= CS.End; }
+ bool overlaps(const CycleSegment &CS) const {
+ return !startsAfter(CS) && !endsBefore(CS);
+ }
+ bool isExecuting() const { return Begin == 0 && End != 0; }
+ bool isExecuted() const { return End == 0; }
+ bool operator<(const CycleSegment &Other) const {
+ return Begin < Other.Begin;
+ }
+ CycleSegment &operator--(void) {
+ if (Begin)
+ Begin--;
+ if (End)
+ End--;
+ return *this;
+ }
+
+ bool isValid() const { return Begin <= End; }
+ unsigned size() const { return End - Begin; };
+ void subtract(unsigned Cycles) {
+ assert(End >= Cycles);
+ End -= Cycles;
+ }
+
+ unsigned begin() const { return Begin; }
+ unsigned end() const { return End; }
+ void setEnd(unsigned NewEnd) { End = NewEnd; }
+ bool isReserved() const { return Reserved; }
+ void setReserved() { Reserved = true; }
+};
+
+/// Helper used by class InstrDesc to describe how hardware resources
+/// are used.
+///
+/// This class describes how many resource units of a specific resource kind
+/// (and how many cycles) are "used" by an instruction.
+struct ResourceUsage {
+ CycleSegment CS;
+ unsigned NumUnits;
+ ResourceUsage(CycleSegment Cycles, unsigned Units = 1)
+ : CS(Cycles), NumUnits(Units) {}
+ unsigned size() const { return CS.size(); }
+ bool isReserved() const { return CS.isReserved(); }
+ void setReserved() { CS.setReserved(); }
+};
+
+/// An instruction descriptor
+struct InstrDesc {
+ SmallVector<WriteDescriptor, 4> Writes; // Implicit writes are at the end.
+ SmallVector<ReadDescriptor, 4> Reads; // Implicit reads are at the end.
+
+ // For every resource used by an instruction of this kind, this vector
+ // reports the number of "consumed cycles".
+ SmallVector<std::pair<uint64_t, ResourceUsage>, 4> Resources;
+
+ // A list of buffered resources consumed by this instruction.
+ SmallVector<uint64_t, 4> Buffers;
+
+ unsigned UsedProcResUnits;
+ unsigned UsedProcResGroups;
+
+ unsigned MaxLatency;
+ // Number of MicroOps for this instruction.
+ unsigned NumMicroOps;
+ // SchedClassID used to construct this InstrDesc.
+ // This information is currently used by views to do fast queries on the
+ // subtarget when computing the reciprocal throughput.
+ unsigned SchedClassID;
+
+ bool MayLoad;
+ bool MayStore;
+ bool HasSideEffects;
+ bool BeginGroup;
+ bool EndGroup;
+
+ // True if all buffered resources are in-order, and there is at least one
+ // buffer which is a dispatch hazard (BufferSize = 0).
+ bool MustIssueImmediately;
+
+ // A zero latency instruction doesn't consume any scheduler resources.
+ bool isZeroLatency() const { return !MaxLatency && Resources.empty(); }
+
+ InstrDesc() = default;
+ InstrDesc(const InstrDesc &Other) = delete;
+ InstrDesc &operator=(const InstrDesc &Other) = delete;
+};
+
+/// Base class for instructions consumed by the simulation pipeline.
+///
+/// This class tracks data dependencies as well as generic properties
+/// of the instruction.
+class InstructionBase {
+ const InstrDesc &Desc;
+
+ // This field is set for instructions that are candidates for move
+ // elimination. For more information about move elimination, see the
+ // definition of RegisterMappingTracker in RegisterFile.h
+ bool IsOptimizableMove;
+
+ // Output dependencies.
+ // One entry per each implicit and explicit register definition.
+ SmallVector<WriteState, 4> Defs;
+
+ // Input dependencies.
+ // One entry per each implicit and explicit register use.
+ SmallVector<ReadState, 4> Uses;
+
+public:
+ InstructionBase(const InstrDesc &D) : Desc(D), IsOptimizableMove(false) {}
+
+ SmallVectorImpl<WriteState> &getDefs() { return Defs; }
+ const ArrayRef<WriteState> getDefs() const { return Defs; }
+ SmallVectorImpl<ReadState> &getUses() { return Uses; }
+ const ArrayRef<ReadState> getUses() const { return Uses; }
+ const InstrDesc &getDesc() const { return Desc; }
+
+ unsigned getLatency() const { return Desc.MaxLatency; }
+
+ bool hasDependentUsers() const {
+ return any_of(Defs,
+ [](const WriteState &Def) { return Def.getNumUsers() > 0; });
+ }
+
+ unsigned getNumUsers() const {
+ unsigned NumUsers = 0;
+ for (const WriteState &Def : Defs)
+ NumUsers += Def.getNumUsers();
+ return NumUsers;
+ }
+
+ // Returns true if this instruction is a candidate for move elimination.
+ bool isOptimizableMove() const { return IsOptimizableMove; }
+ void setOptimizableMove() { IsOptimizableMove = true; }
+};
+
+/// An instruction propagated through the simulated instruction pipeline.
+///
+/// This class is used to monitor changes to the internal state of instructions
+/// that are sent to the various components of the simulated hardware pipeline.
+class Instruction : public InstructionBase {
+ enum InstrStage {
+ IS_INVALID, // Instruction in an invalid state.
+ IS_DISPATCHED, // Instruction dispatched but operands are not ready.
+ IS_PENDING, // Instruction is not ready, but operand latency is known.
+ IS_READY, // Instruction dispatched and operands ready.
+ IS_EXECUTING, // Instruction issued.
+ IS_EXECUTED, // Instruction executed. Values are written back.
+ IS_RETIRED // Instruction retired.
+ };
+
+ // The current instruction stage.
+ enum InstrStage Stage;
+
+ // This value defaults to the instruction latency. This instruction is
+ // considered executed when field CyclesLeft goes to zero.
+ int CyclesLeft;
+
+ // Retire Unit token ID for this instruction.
+ unsigned RCUTokenID;
+
+public:
+ Instruction(const InstrDesc &D)
+ : InstructionBase(D), Stage(IS_INVALID), CyclesLeft(UNKNOWN_CYCLES),
+ RCUTokenID(0) {}
+
+ unsigned getRCUTokenID() const { return RCUTokenID; }
+ int getCyclesLeft() const { return CyclesLeft; }
+
+ // Transition to the dispatch stage, and assign a RCUToken to this
+ // instruction. The RCUToken is used to track the completion of every
+ // register write performed by this instruction.
+ void dispatch(unsigned RCUTokenID);
+
+ // Instruction issued. Transition to the IS_EXECUTING state, and update
+ // all the definitions.
+ void execute();
+
+ // Force a transition from the IS_DISPATCHED state to the IS_READY or
+ // IS_PENDING state. State transitions normally occur either at the beginning
+ // of a new cycle (see method cycleEvent()), or as a result of another issue
+ // event. This method is called every time the instruction might have changed
+ // in state. It internally delegates to method updateDispatched() and
+ // updateWaiting().
+ void update();
+ bool updateDispatched();
+ bool updatePending();
+
+ bool isDispatched() const { return Stage == IS_DISPATCHED; }
+ bool isPending() const { return Stage == IS_PENDING; }
+ bool isReady() const { return Stage == IS_READY; }
+ bool isExecuting() const { return Stage == IS_EXECUTING; }
+ bool isExecuted() const { return Stage == IS_EXECUTED; }
+ bool isRetired() const { return Stage == IS_RETIRED; }
+
+ bool isEliminated() const {
+ return isReady() && getDefs().size() &&
+ all_of(getDefs(),
+ [](const WriteState &W) { return W.isEliminated(); });
+ }
+
+ // Forces a transition from state IS_DISPATCHED to state IS_EXECUTED.
+ void forceExecuted();
+
+ void retire() {
+ assert(isExecuted() && "Instruction is in an invalid state!");
+ Stage = IS_RETIRED;
+ }
+
+ void cycleEvent();
+};
+
+/// An InstRef contains both a SourceMgr index and Instruction pair. The index
+/// is used as a unique identifier for the instruction. MCA will make use of
+/// this index as a key throughout MCA.
+class InstRef {
+ std::pair<unsigned, Instruction *> Data;
+
+public:
+ InstRef() : Data(std::make_pair(0, nullptr)) {}
+ InstRef(unsigned Index, Instruction *I) : Data(std::make_pair(Index, I)) {}
+
+ bool operator==(const InstRef &Other) const { return Data == Other.Data; }
+
+ unsigned getSourceIndex() const { return Data.first; }
+ Instruction *getInstruction() { return Data.second; }
+ const Instruction *getInstruction() const { return Data.second; }
+
+ /// Returns true if this references a valid instruction.
+ operator bool() const { return Data.second != nullptr; }
+
+ /// Invalidate this reference.
+ void invalidate() { Data.second = nullptr; }
+
+#ifndef NDEBUG
+ void print(raw_ostream &OS) const { OS << getSourceIndex(); }
+#endif
+};
+
+#ifndef NDEBUG
+inline raw_ostream &operator<<(raw_ostream &OS, const InstRef &IR) {
+ IR.print(OS);
+ return OS;
+}
+#endif
+
+/// A reference to a register write.
+///
+/// This class is mainly used by the register file to describe register
+/// mappings. It correlates a register write to the source index of the
+/// defining instruction.
+class WriteRef {
+ std::pair<unsigned, WriteState *> Data;
+ static const unsigned INVALID_IID;
+
+public:
+ WriteRef() : Data(INVALID_IID, nullptr) {}
+ WriteRef(unsigned SourceIndex, WriteState *WS) : Data(SourceIndex, WS) {}
+
+ unsigned getSourceIndex() const { return Data.first; }
+ const WriteState *getWriteState() const { return Data.second; }
+ WriteState *getWriteState() { return Data.second; }
+ void invalidate() { Data.second = nullptr; }
+ bool isWriteZero() const {
+ assert(isValid() && "Invalid null WriteState found!");
+ return getWriteState()->isWriteZero();
+ }
+
+ /// Returns true if this register write has been executed, and the new
+ /// register value is therefore available to users.
+ bool isAvailable() const {
+ if (getSourceIndex() == INVALID_IID)
+ return false;
+ const WriteState *WS = getWriteState();
+ return !WS || WS->isExecuted();
+ }
+
+ bool isValid() const { return Data.first != INVALID_IID && Data.second; }
+ bool operator==(const WriteRef &Other) const { return Data == Other.Data; }
+
+#ifndef NDEBUG
+ void dump() const;
+#endif
+};
+
+} // namespace mca
+} // namespace llvm
+
+#endif // LLVM_MCA_INSTRUCTION_H
diff --git a/linux-x64/clang/include/llvm/MCA/Pipeline.h b/linux-x64/clang/include/llvm/MCA/Pipeline.h
new file mode 100644
index 0000000..935033f
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MCA/Pipeline.h
@@ -0,0 +1,78 @@
+//===--------------------- Pipeline.h ---------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// This file implements an ordered container of stages that simulate the
+/// pipeline of a hardware backend.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MCA_PIPELINE_H
+#define LLVM_MCA_PIPELINE_H
+
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/MCA/HardwareUnits/Scheduler.h"
+#include "llvm/MCA/Stages/Stage.h"
+#include "llvm/Support/Error.h"
+
+namespace llvm {
+namespace mca {
+
+class HWEventListener;
+
+/// A pipeline for a specific subtarget.
+///
+/// It emulates an out-of-order execution of instructions. Instructions are
+/// fetched from a MCInst sequence managed by an initial 'Fetch' stage.
+/// Instructions are firstly fetched, then dispatched to the schedulers, and
+/// then executed.
+///
+/// This class tracks the lifetime of an instruction from the moment where
+/// it gets dispatched to the schedulers, to the moment where it finishes
+/// executing and register writes are architecturally committed.
+/// In particular, it monitors changes in the state of every instruction
+/// in flight.
+///
+/// Instructions are executed in a loop of iterations. The number of iterations
+/// is defined by the SourceMgr object, which is managed by the initial stage
+/// of the instruction pipeline.
+///
+/// The Pipeline entry point is method 'run()' which executes cycles in a loop
+/// until there are new instructions to dispatch, and not every instruction
+/// has been retired.
+///
+/// Internally, the Pipeline collects statistical information in the form of
+/// histograms. For example, it tracks how the dispatch group size changes
+/// over time.
+class Pipeline {
+ Pipeline(const Pipeline &P) = delete;
+ Pipeline &operator=(const Pipeline &P) = delete;
+
+ /// An ordered list of stages that define this instruction pipeline.
+ SmallVector<std::unique_ptr<Stage>, 8> Stages;
+ std::set<HWEventListener *> Listeners;
+ unsigned Cycles;
+
+ Error runCycle();
+ bool hasWorkToProcess();
+ void notifyCycleBegin();
+ void notifyCycleEnd();
+
+public:
+ Pipeline() : Cycles(0) {}
+ void appendStage(std::unique_ptr<Stage> S);
+
+ /// Returns the total number of simulated cycles.
+ Expected<unsigned> run();
+
+ void addEventListener(HWEventListener *Listener);
+};
+} // namespace mca
+} // namespace llvm
+
+#endif // LLVM_MCA_PIPELINE_H
diff --git a/linux-x64/clang/include/llvm/MCA/SourceMgr.h b/linux-x64/clang/include/llvm/MCA/SourceMgr.h
new file mode 100644
index 0000000..dbe31db
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MCA/SourceMgr.h
@@ -0,0 +1,56 @@
+//===--------------------- SourceMgr.h --------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+/// This file implements class SourceMgr. Class SourceMgr abstracts the input
+/// code sequence (a sequence of MCInst), and assings unique identifiers to
+/// every instruction in the sequence.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MCA_SOURCEMGR_H
+#define LLVM_MCA_SOURCEMGR_H
+
+#include "llvm/ADT/ArrayRef.h"
+
+namespace llvm {
+namespace mca {
+
+class Instruction;
+
+typedef std::pair<unsigned, const Instruction &> SourceRef;
+
+class SourceMgr {
+ using UniqueInst = std::unique_ptr<Instruction>;
+ ArrayRef<UniqueInst> Sequence;
+ unsigned Current;
+ const unsigned Iterations;
+ static const unsigned DefaultIterations = 100;
+
+public:
+ SourceMgr(ArrayRef<UniqueInst> S, unsigned Iter)
+ : Sequence(S), Current(0), Iterations(Iter ? Iter : DefaultIterations) {}
+
+ unsigned getNumIterations() const { return Iterations; }
+ unsigned size() const { return Sequence.size(); }
+ bool hasNext() const { return Current < (Iterations * Sequence.size()); }
+ void updateNext() { ++Current; }
+
+ SourceRef peekNext() const {
+ assert(hasNext() && "Already at end of sequence!");
+ return SourceRef(Current, *Sequence[Current % Sequence.size()]);
+ }
+
+ using const_iterator = ArrayRef<UniqueInst>::const_iterator;
+ const_iterator begin() const { return Sequence.begin(); }
+ const_iterator end() const { return Sequence.end(); }
+};
+
+} // namespace mca
+} // namespace llvm
+
+#endif // LLVM_MCA_SOURCEMGR_H
diff --git a/linux-x64/clang/include/llvm/MCA/Stages/DispatchStage.h b/linux-x64/clang/include/llvm/MCA/Stages/DispatchStage.h
new file mode 100644
index 0000000..e39f03e
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MCA/Stages/DispatchStage.h
@@ -0,0 +1,90 @@
+//===----------------------- DispatchStage.h --------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// This file models the dispatch component of an instruction pipeline.
+///
+/// The DispatchStage is responsible for updating instruction dependencies
+/// and communicating to the simulated instruction scheduler that an instruction
+/// is ready to be scheduled for execution.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MCA_DISPATCH_STAGE_H
+#define LLVM_MCA_DISPATCH_STAGE_H
+
+#include "llvm/MC/MCRegisterInfo.h"
+#include "llvm/MC/MCSubtargetInfo.h"
+#include "llvm/MCA/HWEventListener.h"
+#include "llvm/MCA/HardwareUnits/RegisterFile.h"
+#include "llvm/MCA/HardwareUnits/RetireControlUnit.h"
+#include "llvm/MCA/Instruction.h"
+#include "llvm/MCA/Stages/Stage.h"
+
+namespace llvm {
+namespace mca {
+
+// Implements the hardware dispatch logic.
+//
+// This class is responsible for the dispatch stage, in which instructions are
+// dispatched in groups to the Scheduler. An instruction can be dispatched if
+// the following conditions are met:
+// 1) There are enough entries in the reorder buffer (see class
+// RetireControlUnit) to write the opcodes associated with the instruction.
+// 2) There are enough physical registers to rename output register operands.
+// 3) There are enough entries available in the used buffered resource(s).
+//
+// The number of micro opcodes that can be dispatched in one cycle is limited by
+// the value of field 'DispatchWidth'. A "dynamic dispatch stall" occurs when
+// processor resources are not available. Dispatch stall events are counted
+// during the entire execution of the code, and displayed by the performance
+// report when flag '-dispatch-stats' is specified.
+//
+// If the number of micro opcodes exceedes DispatchWidth, then the instruction
+// is dispatched in multiple cycles.
+class DispatchStage final : public Stage {
+ unsigned DispatchWidth;
+ unsigned AvailableEntries;
+ unsigned CarryOver;
+ InstRef CarriedOver;
+ const MCSubtargetInfo &STI;
+ RetireControlUnit &RCU;
+ RegisterFile &PRF;
+
+ bool checkRCU(const InstRef &IR) const;
+ bool checkPRF(const InstRef &IR) const;
+ bool canDispatch(const InstRef &IR) const;
+ Error dispatch(InstRef IR);
+
+ void notifyInstructionDispatched(const InstRef &IR,
+ ArrayRef<unsigned> UsedPhysRegs,
+ unsigned uOps) const;
+
+public:
+ DispatchStage(const MCSubtargetInfo &Subtarget, const MCRegisterInfo &MRI,
+ unsigned MaxDispatchWidth, RetireControlUnit &R,
+ RegisterFile &F)
+ : DispatchWidth(MaxDispatchWidth), AvailableEntries(MaxDispatchWidth),
+ CarryOver(0U), CarriedOver(), STI(Subtarget), RCU(R), PRF(F) {}
+
+ bool isAvailable(const InstRef &IR) const override;
+
+ // The dispatch logic internally doesn't buffer instructions. So there is
+ // never work to do at the beginning of every cycle.
+ bool hasWorkToComplete() const override { return false; }
+ Error cycleStart() override;
+ Error execute(InstRef &IR) override;
+
+#ifndef NDEBUG
+ void dump() const;
+#endif
+};
+} // namespace mca
+} // namespace llvm
+
+#endif // LLVM_MCA_DISPATCH_STAGE_H
diff --git a/linux-x64/clang/include/llvm/MCA/Stages/EntryStage.h b/linux-x64/clang/include/llvm/MCA/Stages/EntryStage.h
new file mode 100644
index 0000000..59a2daf
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MCA/Stages/EntryStage.h
@@ -0,0 +1,51 @@
+//===---------------------- EntryStage.h ------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// This file defines the Entry stage of an instruction pipeline. Its sole
+/// purpose in life is to pick instructions in sequence and move them to the
+/// next pipeline stage.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MCA_ENTRY_STAGE_H
+#define LLVM_MCA_ENTRY_STAGE_H
+
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/MCA/SourceMgr.h"
+#include "llvm/MCA/Stages/Stage.h"
+
+namespace llvm {
+namespace mca {
+
+class EntryStage final : public Stage {
+ InstRef CurrentInstruction;
+ SmallVector<std::unique_ptr<Instruction>, 16> Instructions;
+ SourceMgr &SM;
+ unsigned NumRetired;
+
+ // Updates the program counter, and sets 'CurrentInstruction'.
+ void getNextInstruction();
+
+ EntryStage(const EntryStage &Other) = delete;
+ EntryStage &operator=(const EntryStage &Other) = delete;
+
+public:
+ EntryStage(SourceMgr &SM) : CurrentInstruction(), SM(SM), NumRetired(0) { }
+
+ bool isAvailable(const InstRef &IR) const override;
+ bool hasWorkToComplete() const override;
+ Error execute(InstRef &IR) override;
+ Error cycleStart() override;
+ Error cycleEnd() override;
+};
+
+} // namespace mca
+} // namespace llvm
+
+#endif // LLVM_MCA_FETCH_STAGE_H
diff --git a/linux-x64/clang/include/llvm/MCA/Stages/ExecuteStage.h b/linux-x64/clang/include/llvm/MCA/Stages/ExecuteStage.h
new file mode 100644
index 0000000..ec9eae0
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MCA/Stages/ExecuteStage.h
@@ -0,0 +1,79 @@
+//===---------------------- ExecuteStage.h ----------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// This file defines the execution stage of a default instruction pipeline.
+///
+/// The ExecuteStage is responsible for managing the hardware scheduler
+/// and issuing notifications that an instruction has been executed.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MCA_EXECUTE_STAGE_H
+#define LLVM_MCA_EXECUTE_STAGE_H
+
+#include "llvm/ADT/ArrayRef.h"
+#include "llvm/MCA/HardwareUnits/Scheduler.h"
+#include "llvm/MCA/Instruction.h"
+#include "llvm/MCA/Stages/Stage.h"
+
+namespace llvm {
+namespace mca {
+
+class ExecuteStage final : public Stage {
+ Scheduler &HWS;
+
+ Error issueInstruction(InstRef &IR);
+
+ // Called at the beginning of each cycle to issue already dispatched
+ // instructions to the underlying pipelines.
+ Error issueReadyInstructions();
+
+ // Used to notify instructions eliminated at register renaming stage.
+ Error handleInstructionEliminated(InstRef &IR);
+
+ ExecuteStage(const ExecuteStage &Other) = delete;
+ ExecuteStage &operator=(const ExecuteStage &Other) = delete;
+
+public:
+ ExecuteStage(Scheduler &S) : Stage(), HWS(S) {}
+
+ // This stage works under the assumption that the Pipeline will eventually
+ // execute a retire stage. We don't need to check if pipelines and/or
+ // schedulers have instructions to process, because those instructions are
+ // also tracked by the retire control unit. That means,
+ // RetireControlUnit::hasWorkToComplete() is responsible for checking if there
+ // are still instructions in-flight in the out-of-order backend.
+ bool hasWorkToComplete() const override { return false; }
+ bool isAvailable(const InstRef &IR) const override;
+
+ // Notifies the scheduler that a new cycle just started.
+ //
+ // This method notifies the scheduler that a new cycle started.
+ // This method is also responsible for notifying listeners about instructions
+ // state changes, and processor resources freed by the scheduler.
+ // Instructions that transitioned to the 'Executed' state are automatically
+ // moved to the next stage (i.e. RetireStage).
+ Error cycleStart() override;
+ Error execute(InstRef &IR) override;
+
+ void notifyInstructionIssued(
+ const InstRef &IR,
+ MutableArrayRef<std::pair<ResourceRef, ResourceCycles>> Used) const;
+ void notifyInstructionExecuted(const InstRef &IR) const;
+ void notifyInstructionReady(const InstRef &IR) const;
+ void notifyResourceAvailable(const ResourceRef &RR) const;
+
+ // Notify listeners that buffered resources have been consumed or freed.
+ void notifyReservedOrReleasedBuffers(const InstRef &IR, bool Reserved) const;
+};
+
+} // namespace mca
+} // namespace llvm
+
+#endif // LLVM_MCA_EXECUTE_STAGE_H
diff --git a/linux-x64/clang/include/llvm/MCA/Stages/InstructionTables.h b/linux-x64/clang/include/llvm/MCA/Stages/InstructionTables.h
new file mode 100644
index 0000000..4b463c9
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MCA/Stages/InstructionTables.h
@@ -0,0 +1,45 @@
+//===--------------------- InstructionTables.h ------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// This file implements a custom stage to generate instruction tables.
+/// See the description of command-line flag -instruction-tables in
+/// docs/CommandGuide/lvm-mca.rst
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MCA_INSTRUCTIONTABLES_H
+#define LLVM_MCA_INSTRUCTIONTABLES_H
+
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/MC/MCSchedule.h"
+#include "llvm/MCA/HardwareUnits/Scheduler.h"
+#include "llvm/MCA/Stages/Stage.h"
+#include "llvm/MCA/Support.h"
+
+namespace llvm {
+namespace mca {
+
+class InstructionTables final : public Stage {
+ const MCSchedModel &SM;
+ SmallVector<std::pair<ResourceRef, ResourceCycles>, 4> UsedResources;
+ SmallVector<uint64_t, 8> Masks;
+
+public:
+ InstructionTables(const MCSchedModel &Model)
+ : Stage(), SM(Model), Masks(Model.getNumProcResourceKinds()) {
+ computeProcResourceMasks(Model, Masks);
+ }
+
+ bool hasWorkToComplete() const override { return false; }
+ Error execute(InstRef &IR) override;
+};
+} // namespace mca
+} // namespace llvm
+
+#endif // LLVM_MCA_INSTRUCTIONTABLES_H
diff --git a/linux-x64/clang/include/llvm/MCA/Stages/RetireStage.h b/linux-x64/clang/include/llvm/MCA/Stages/RetireStage.h
new file mode 100644
index 0000000..08c216a
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MCA/Stages/RetireStage.h
@@ -0,0 +1,47 @@
+//===---------------------- RetireStage.h -----------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// This file defines the retire stage of a default instruction pipeline.
+/// The RetireStage represents the process logic that interacts with the
+/// simulated RetireControlUnit hardware.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MCA_RETIRE_STAGE_H
+#define LLVM_MCA_RETIRE_STAGE_H
+
+#include "llvm/MCA/HardwareUnits/RegisterFile.h"
+#include "llvm/MCA/HardwareUnits/RetireControlUnit.h"
+#include "llvm/MCA/Stages/Stage.h"
+
+namespace llvm {
+namespace mca {
+
+class RetireStage final : public Stage {
+ // Owner will go away when we move listeners/eventing to the stages.
+ RetireControlUnit &RCU;
+ RegisterFile &PRF;
+
+ RetireStage(const RetireStage &Other) = delete;
+ RetireStage &operator=(const RetireStage &Other) = delete;
+
+public:
+ RetireStage(RetireControlUnit &R, RegisterFile &F)
+ : Stage(), RCU(R), PRF(F) {}
+
+ bool hasWorkToComplete() const override { return !RCU.isEmpty(); }
+ Error cycleStart() override;
+ Error execute(InstRef &IR) override;
+ void notifyInstructionRetired(const InstRef &IR) const;
+};
+
+} // namespace mca
+} // namespace llvm
+
+#endif // LLVM_MCA_RETIRE_STAGE_H
diff --git a/linux-x64/clang/include/llvm/MCA/Stages/Stage.h b/linux-x64/clang/include/llvm/MCA/Stages/Stage.h
new file mode 100644
index 0000000..46b242c
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MCA/Stages/Stage.h
@@ -0,0 +1,87 @@
+//===---------------------- Stage.h -----------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// This file defines a stage.
+/// A chain of stages compose an instruction pipeline.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MCA_STAGE_H
+#define LLVM_MCA_STAGE_H
+
+#include "llvm/MCA/HWEventListener.h"
+#include "llvm/Support/Error.h"
+#include <set>
+
+namespace llvm {
+namespace mca {
+
+class InstRef;
+
+class Stage {
+ Stage *NextInSequence;
+ std::set<HWEventListener *> Listeners;
+
+ Stage(const Stage &Other) = delete;
+ Stage &operator=(const Stage &Other) = delete;
+
+protected:
+ const std::set<HWEventListener *> &getListeners() const { return Listeners; }
+
+public:
+ Stage() : NextInSequence(nullptr) {}
+ virtual ~Stage();
+
+ /// Returns true if it can execute IR during this cycle.
+ virtual bool isAvailable(const InstRef &IR) const { return true; }
+
+ /// Returns true if some instructions are still executing this stage.
+ virtual bool hasWorkToComplete() const = 0;
+
+ /// Called once at the start of each cycle. This can be used as a setup
+ /// phase to prepare for the executions during the cycle.
+ virtual Error cycleStart() { return ErrorSuccess(); }
+
+ /// Called once at the end of each cycle.
+ virtual Error cycleEnd() { return ErrorSuccess(); }
+
+ /// The primary action that this stage performs on instruction IR.
+ virtual Error execute(InstRef &IR) = 0;
+
+ void setNextInSequence(Stage *NextStage) {
+ assert(!NextInSequence && "This stage already has a NextInSequence!");
+ NextInSequence = NextStage;
+ }
+
+ bool checkNextStage(const InstRef &IR) const {
+ return NextInSequence && NextInSequence->isAvailable(IR);
+ }
+
+ /// Called when an instruction is ready to move the next pipeline stage.
+ ///
+ /// Stages are responsible for moving instructions to their immediate
+ /// successor stages.
+ Error moveToTheNextStage(InstRef &IR) {
+ assert(checkNextStage(IR) && "Next stage is not ready!");
+ return NextInSequence->execute(IR);
+ }
+
+ /// Add a listener to receive callbacks during the execution of this stage.
+ void addListener(HWEventListener *Listener);
+
+ /// Notify listeners of a particular hardware event.
+ template <typename EventT> void notifyEvent(const EventT &Event) const {
+ for (HWEventListener *Listener : Listeners)
+ Listener->onEvent(Event);
+ }
+};
+
+} // namespace mca
+} // namespace llvm
+#endif // LLVM_MCA_STAGE_H
diff --git a/linux-x64/clang/include/llvm/MCA/Support.h b/linux-x64/clang/include/llvm/MCA/Support.h
new file mode 100644
index 0000000..fc36ed4
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MCA/Support.h
@@ -0,0 +1,107 @@
+//===--------------------- Support.h ----------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// Helper functions used by various pipeline components.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MCA_SUPPORT_H
+#define LLVM_MCA_SUPPORT_H
+
+#include "llvm/ADT/ArrayRef.h"
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/MC/MCSchedule.h"
+#include "llvm/Support/Error.h"
+
+namespace llvm {
+namespace mca {
+
+template <typename T>
+class InstructionError : public ErrorInfo<InstructionError<T>> {
+public:
+ static char ID;
+ std::string Message;
+ const T &Inst;
+
+ InstructionError(std::string M, const T &MCI)
+ : Message(std::move(M)), Inst(MCI) {}
+
+ void log(raw_ostream &OS) const override { OS << Message; }
+
+ std::error_code convertToErrorCode() const override {
+ return inconvertibleErrorCode();
+ }
+};
+
+template <typename T> char InstructionError<T>::ID;
+
+/// This class represents the number of cycles per resource (fractions of
+/// cycles). That quantity is managed here as a ratio, and accessed via the
+/// double cast-operator below. The two quantities, number of cycles and
+/// number of resources, are kept separate. This is used by the
+/// ResourcePressureView to calculate the average resource cycles
+/// per instruction/iteration.
+class ResourceCycles {
+ unsigned Numerator, Denominator;
+
+public:
+ ResourceCycles() : Numerator(0), Denominator(1) {}
+ ResourceCycles(unsigned Cycles, unsigned ResourceUnits = 1)
+ : Numerator(Cycles), Denominator(ResourceUnits) {}
+
+ operator double() const {
+ assert(Denominator && "Invalid denominator (must be non-zero).");
+ return (Denominator == 1) ? Numerator : (double)Numerator / Denominator;
+ }
+
+ unsigned getNumerator() const { return Numerator; }
+ unsigned getDenominator() const { return Denominator; }
+
+ // Add the components of RHS to this instance. Instead of calculating
+ // the final value here, we keep track of the numerator and denominator
+ // separately, to reduce floating point error.
+ ResourceCycles &operator+=(const ResourceCycles &RHS);
+};
+
+/// Populates vector Masks with processor resource masks.
+///
+/// The number of bits set in a mask depends on the processor resource type.
+/// Each processor resource mask has at least one bit set. For groups, the
+/// number of bits set in the mask is equal to the cardinality of the group plus
+/// one. Excluding the most significant bit, the remaining bits in the mask
+/// identify processor resources that are part of the group.
+///
+/// Example:
+///
+/// ResourceA -- Mask: 0b001
+/// ResourceB -- Mask: 0b010
+/// ResourceAB -- Mask: 0b100 U (ResourceA::Mask | ResourceB::Mask) == 0b111
+///
+/// ResourceAB is a processor resource group containing ResourceA and ResourceB.
+/// Each resource mask uniquely identifies a resource; both ResourceA and
+/// ResourceB only have one bit set.
+/// ResourceAB is a group; excluding the most significant bit in the mask, the
+/// remaining bits identify the composition of the group.
+///
+/// Resource masks are used by the ResourceManager to solve set membership
+/// problems with simple bit manipulation operations.
+void computeProcResourceMasks(const MCSchedModel &SM,
+ MutableArrayRef<uint64_t> Masks);
+
+/// Compute the reciprocal block throughput from a set of processor resource
+/// cycles. The reciprocal block throughput is computed as the MAX between:
+/// - NumMicroOps / DispatchWidth
+/// - ProcResourceCycles / #ProcResourceUnits (for every consumed resource).
+double computeBlockRThroughput(const MCSchedModel &SM, unsigned DispatchWidth,
+ unsigned NumMicroOps,
+ ArrayRef<unsigned> ProcResourceUsage);
+} // namespace mca
+} // namespace llvm
+
+#endif // LLVM_MCA_SUPPORT_H
diff --git a/linux-x64/clang/include/llvm/Object/Archive.h b/linux-x64/clang/include/llvm/Object/Archive.h
index 9ef1e48..c40278a 100644
--- a/linux-x64/clang/include/llvm/Object/Archive.h
+++ b/linux-x64/clang/include/llvm/Object/Archive.h
@@ -1,9 +1,8 @@
//===- Archive.h - ar archive file format -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -16,6 +15,7 @@
#include "llvm/ADT/Optional.h"
#include "llvm/ADT/StringRef.h"
+#include "llvm/ADT/fallible_iterator.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/Object/Binary.h"
#include "llvm/Support/Chrono.h"
@@ -143,44 +143,38 @@
getAsBinary(LLVMContext *Context = nullptr) const;
};
- class child_iterator {
+ class ChildFallibleIterator {
Child C;
- Error *E = nullptr;
public:
- child_iterator() : C(Child(nullptr, nullptr, nullptr)) {}
- child_iterator(const Child &C, Error *E) : C(C), E(E) {}
+ ChildFallibleIterator() : C(Child(nullptr, nullptr, nullptr)) {}
+ ChildFallibleIterator(const Child &C) : C(C) {}
const Child *operator->() const { return &C; }
const Child &operator*() const { return C; }
- bool operator==(const child_iterator &other) const {
+ bool operator==(const ChildFallibleIterator &other) const {
// Ignore errors here: If an error occurred during increment then getNext
// will have been set to child_end(), and the following comparison should
// do the right thing.
return C == other.C;
}
- bool operator!=(const child_iterator &other) const {
+ bool operator!=(const ChildFallibleIterator &other) const {
return !(*this == other);
}
- // Code in loops with child_iterators must check for errors on each loop
- // iteration. And if there is an error break out of the loop.
- child_iterator &operator++() { // Preincrement
- assert(E && "Can't increment iterator with no Error attached");
- ErrorAsOutParameter ErrAsOutParam(E);
- if (auto ChildOrErr = C.getNext())
- C = *ChildOrErr;
- else {
- C = C.getParent()->child_end().C;
- *E = ChildOrErr.takeError();
- E = nullptr;
- }
- return *this;
+ Error inc() {
+ auto NextChild = C.getNext();
+ if (!NextChild)
+ return NextChild.takeError();
+ C = std::move(*NextChild);
+ return Error::success();
}
};
+ using child_iterator = fallible_iterator<ChildFallibleIterator>;
+
class Symbol {
const Archive *Parent;
uint32_t SymbolIndex;
diff --git a/linux-x64/clang/include/llvm/Object/ArchiveWriter.h b/linux-x64/clang/include/llvm/Object/ArchiveWriter.h
index 495b943..4e796eb 100644
--- a/linux-x64/clang/include/llvm/Object/ArchiveWriter.h
+++ b/linux-x64/clang/include/llvm/Object/ArchiveWriter.h
@@ -1,9 +1,8 @@
//===- ArchiveWriter.h - ar archive file format writer ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Object/Binary.h b/linux-x64/clang/include/llvm/Object/Binary.h
index 99745e2..8ce2d5a 100644
--- a/linux-x64/clang/include/llvm/Object/Binary.h
+++ b/linux-x64/clang/include/llvm/Object/Binary.h
@@ -1,9 +1,8 @@
//===- Binary.h - A generic binary file -------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Object/COFF.h b/linux-x64/clang/include/llvm/Object/COFF.h
index e39a9b2..c22a482 100644
--- a/linux-x64/clang/include/llvm/Object/COFF.h
+++ b/linux-x64/clang/include/llvm/Object/COFF.h
@@ -1,9 +1,8 @@
//===- COFF.h - COFF object file implementation -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -971,6 +970,9 @@
return nullptr;
return reinterpret_cast<const dos_header *>(base());
}
+ std::error_code getCOFFHeader(const coff_file_header *&Res) const;
+ std::error_code
+ getCOFFBigObjHeader(const coff_bigobj_file_header *&Res) const;
std::error_code getPE32Header(const pe32_header *&Res) const;
std::error_code getPE32PlusHeader(const pe32plus_header *&Res) const;
std::error_code getDataDirectory(uint32_t index,
@@ -1019,6 +1021,8 @@
ArrayRef<uint8_t> getSymbolAuxData(COFFSymbolRef Symbol) const;
+ uint32_t getSymbolIndex(COFFSymbolRef Symbol) const;
+
size_t getSymbolTableEntrySize() const {
if (COFFHeader)
return sizeof(coff_symbol16);
@@ -1062,6 +1066,8 @@
bool isRelocatableObject() const override;
bool is64() const { return PE32PlusHeader; }
+ StringRef mapDebugSectionName(StringRef Name) const override;
+
static bool classof(const Binary *v) { return v->isCOFF(); }
};
diff --git a/linux-x64/clang/include/llvm/Object/COFFImportFile.h b/linux-x64/clang/include/llvm/Object/COFFImportFile.h
index 0a4556a..d051d7f 100644
--- a/linux-x64/clang/include/llvm/Object/COFFImportFile.h
+++ b/linux-x64/clang/include/llvm/Object/COFFImportFile.h
@@ -1,9 +1,8 @@
//===- COFFImportFile.h - COFF short import file implementation -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Object/COFFModuleDefinition.h b/linux-x64/clang/include/llvm/Object/COFFModuleDefinition.h
index be139a2..ab52259 100644
--- a/linux-x64/clang/include/llvm/Object/COFFModuleDefinition.h
+++ b/linux-x64/clang/include/llvm/Object/COFFModuleDefinition.h
@@ -1,9 +1,8 @@
//===--- COFFModuleDefinition.h ---------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Object/CVDebugRecord.h b/linux-x64/clang/include/llvm/Object/CVDebugRecord.h
index faad72c..d41c739 100644
--- a/linux-x64/clang/include/llvm/Object/CVDebugRecord.h
+++ b/linux-x64/clang/include/llvm/Object/CVDebugRecord.h
@@ -1,9 +1,8 @@
//===- CVDebugRecord.h ------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Object/Decompressor.h b/linux-x64/clang/include/llvm/Object/Decompressor.h
index 2a77d2f..cc91848 100644
--- a/linux-x64/clang/include/llvm/Object/Decompressor.h
+++ b/linux-x64/clang/include/llvm/Object/Decompressor.h
@@ -1,9 +1,8 @@
//===-- Decompressor.h ------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===/
diff --git a/linux-x64/clang/include/llvm/Object/ELF.h b/linux-x64/clang/include/llvm/Object/ELF.h
index 752d468..1ba32b4 100644
--- a/linux-x64/clang/include/llvm/Object/ELF.h
+++ b/linux-x64/clang/include/llvm/Object/ELF.h
@@ -1,9 +1,8 @@
//===- ELF.h - ELF object file implementation -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -32,7 +31,7 @@
namespace object {
StringRef getELFRelocationTypeName(uint32_t Machine, uint32_t Type);
-uint32_t getELFRelrRelocationType(uint32_t Machine);
+uint32_t getELFRelativeRelocationType(uint32_t Machine);
StringRef getELFSectionTypeName(uint32_t Machine, uint32_t Type);
// Subclasses of ELFFile may need this for template instantiation
@@ -113,7 +112,7 @@
StringRef getRelocationTypeName(uint32_t Type) const;
void getRelocationTypeName(uint32_t Type,
SmallVectorImpl<char> &Result) const;
- uint32_t getRelrRelocationType() const;
+ uint32_t getRelativeRelocationType() const;
const char *getDynamicTagAsString(unsigned Arch, uint64_t Type) const;
const char *getDynamicTagAsString(uint64_t Type) const;
@@ -415,8 +414,8 @@
}
template <class ELFT>
-uint32_t ELFFile<ELFT>::getRelrRelocationType() const {
- return getELFRelrRelocationType(getHeader()->e_machine);
+uint32_t ELFFile<ELFT>::getRelativeRelocationType() const {
+ return getELFRelativeRelocationType(getHeader()->e_machine);
}
template <class ELFT>
diff --git a/linux-x64/clang/include/llvm/Object/ELFObjectFile.h b/linux-x64/clang/include/llvm/Object/ELFObjectFile.h
index 54907cb..aab7340 100644
--- a/linux-x64/clang/include/llvm/Object/ELFObjectFile.h
+++ b/linux-x64/clang/include/llvm/Object/ELFObjectFile.h
@@ -1,9 +1,8 @@
//===- ELFObjectFile.h - ELF object file implementation ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -260,6 +259,8 @@
bool isSectionData(DataRefImpl Sec) const override;
bool isSectionBSS(DataRefImpl Sec) const override;
bool isSectionVirtual(DataRefImpl Sec) const override;
+ bool isBerkeleyText(DataRefImpl Sec) const override;
+ bool isBerkeleyData(DataRefImpl Sec) const override;
relocation_iterator section_rel_begin(DataRefImpl Sec) const override;
relocation_iterator section_rel_end(DataRefImpl Sec) const override;
std::vector<SectionRef> dynamic_relocation_sections() const override;
@@ -333,9 +334,10 @@
// A symbol is exported if its binding is either GLOBAL or WEAK, and its
// visibility is either DEFAULT or PROTECTED. All other symbols are not
// exported.
- return ((Binding == ELF::STB_GLOBAL || Binding == ELF::STB_WEAK) &&
- (Visibility == ELF::STV_DEFAULT ||
- Visibility == ELF::STV_PROTECTED));
+ return (
+ (Binding == ELF::STB_GLOBAL || Binding == ELF::STB_WEAK ||
+ Binding == ELF::STB_GNU_UNIQUE) &&
+ (Visibility == ELF::STV_DEFAULT || Visibility == ELF::STV_PROTECTED));
}
// This flag is used for classof, to distinguish ELFObjectFile from
@@ -438,7 +440,16 @@
auto SymStrTabOrErr = EF.getStringTable(StringTableSec);
if (!SymStrTabOrErr)
return SymStrTabOrErr.takeError();
- return ESym->getName(*SymStrTabOrErr);
+ Expected<StringRef> Name = ESym->getName(*SymStrTabOrErr);
+
+ // If the symbol name is empty use the section name.
+ if ((!Name || Name->empty()) && ESym->getType() == ELF::STT_SECTION) {
+ StringRef SecName;
+ Expected<section_iterator> Sec = getSymbolSection(Sym);
+ if (Sec && !(*Sec)->getName(SecName))
+ return SecName;
+ }
+ return Name;
}
template <class ELFT>
@@ -759,6 +770,20 @@
}
template <class ELFT>
+bool ELFObjectFile<ELFT>::isBerkeleyText(DataRefImpl Sec) const {
+ return getSection(Sec)->sh_flags & ELF::SHF_ALLOC &&
+ (getSection(Sec)->sh_flags & ELF::SHF_EXECINSTR ||
+ !(getSection(Sec)->sh_flags & ELF::SHF_WRITE));
+}
+
+template <class ELFT>
+bool ELFObjectFile<ELFT>::isBerkeleyData(DataRefImpl Sec) const {
+ const Elf_Shdr *EShdr = getSection(Sec);
+ return !isBerkeleyText(Sec) && EShdr->sh_type != ELF::SHT_NOBITS &&
+ EShdr->sh_flags & ELF::SHF_ALLOC;
+}
+
+template <class ELFT>
relocation_iterator
ELFObjectFile<ELFT>::section_rel_begin(DataRefImpl Sec) const {
DataRefImpl RelData;
@@ -1021,6 +1046,8 @@
return "ELF32-lanai";
case ELF::EM_MIPS:
return "ELF32-mips";
+ case ELF::EM_MSP430:
+ return "ELF32-msp430";
case ELF::EM_PPC:
return "ELF32-ppc";
case ELF::EM_RISCV:
@@ -1091,6 +1118,8 @@
default:
report_fatal_error("Invalid ELFCLASS!");
}
+ case ELF::EM_MSP430:
+ return Triple::msp430;
case ELF::EM_PPC:
return Triple::ppc;
case ELF::EM_PPC64:
diff --git a/linux-x64/clang/include/llvm/Object/ELFTypes.h b/linux-x64/clang/include/llvm/Object/ELFTypes.h
index fb38612..45bbd6c 100644
--- a/linux-x64/clang/include/llvm/Object/ELFTypes.h
+++ b/linux-x64/clang/include/llvm/Object/ELFTypes.h
@@ -1,9 +1,8 @@
//===- ELFTypes.h - Endian specific types for ELF ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -605,13 +604,12 @@
}
/// Get the note's descriptor.
- ArrayRef<Elf_Word> getDesc() const {
+ ArrayRef<uint8_t> getDesc() const {
if (!Nhdr.n_descsz)
- return ArrayRef<Elf_Word>();
- return ArrayRef<Elf_Word>(
- reinterpret_cast<const Elf_Word *>(
- reinterpret_cast<const uint8_t *>(&Nhdr) + sizeof(Nhdr) +
- alignTo<Elf_Nhdr_Impl<ELFT>::Align>(Nhdr.n_namesz)),
+ return ArrayRef<uint8_t>();
+ return ArrayRef<uint8_t>(
+ reinterpret_cast<const uint8_t *>(&Nhdr) + sizeof(Nhdr) +
+ alignTo<Elf_Nhdr_Impl<ELFT>::Align>(Nhdr.n_namesz),
Nhdr.n_descsz);
}
@@ -643,14 +641,19 @@
// container, either cleanly or with an overflow error.
void advanceNhdr(const uint8_t *NhdrPos, size_t NoteSize) {
RemainingSize -= NoteSize;
- if (RemainingSize == 0u)
+ if (RemainingSize == 0u) {
+ // Ensure that if the iterator walks to the end, the error is checked
+ // afterwards.
+ *Err = Error::success();
Nhdr = nullptr;
- else if (sizeof(*Nhdr) > RemainingSize)
+ } else if (sizeof(*Nhdr) > RemainingSize)
stopWithOverflowError();
else {
Nhdr = reinterpret_cast<const Elf_Nhdr_Impl<ELFT> *>(NhdrPos + NoteSize);
if (Nhdr->getSize() > RemainingSize)
stopWithOverflowError();
+ else
+ *Err = Error::success();
}
}
@@ -658,6 +661,7 @@
explicit Elf_Note_Iterator_Impl(Error &Err) : Err(&Err) {}
Elf_Note_Iterator_Impl(const uint8_t *Start, size_t Size, Error &Err)
: RemainingSize(Size), Err(&Err) {
+ consumeError(std::move(Err));
assert(Start && "ELF note iterator starting at NULL");
advanceNhdr(Start, 0u);
}
@@ -671,6 +675,10 @@
return *this;
}
bool operator==(Elf_Note_Iterator_Impl Other) const {
+ if (!Nhdr && Other.Err)
+ (void)(bool)(*Other.Err);
+ if (!Other.Nhdr && Err)
+ (void)(bool)(*Err);
return Nhdr == Other.Nhdr;
}
bool operator!=(Elf_Note_Iterator_Impl Other) const {
diff --git a/linux-x64/clang/include/llvm/Object/Error.h b/linux-x64/clang/include/llvm/Object/Error.h
index eb93833..b7bbf06 100644
--- a/linux-x64/clang/include/llvm/Object/Error.h
+++ b/linux-x64/clang/include/llvm/Object/Error.h
@@ -1,9 +1,8 @@
//===- Error.h - system_error extensions for Object -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -50,6 +49,7 @@
/// Currently inherits from ECError for easy interoperability with
/// std::error_code, but this will be removed in the future.
class BinaryError : public ErrorInfo<BinaryError, ECError> {
+ virtual void anchor();
public:
static char ID;
BinaryError() {
diff --git a/linux-x64/clang/include/llvm/Object/IRObjectFile.h b/linux-x64/clang/include/llvm/Object/IRObjectFile.h
index 993359b..39454b0 100644
--- a/linux-x64/clang/include/llvm/Object/IRObjectFile.h
+++ b/linux-x64/clang/include/llvm/Object/IRObjectFile.h
@@ -1,9 +1,8 @@
//===- IRObjectFile.h - LLVM IR object file implementation ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Object/IRSymtab.h b/linux-x64/clang/include/llvm/Object/IRSymtab.h
index 5f6a024..0601d99 100644
--- a/linux-x64/clang/include/llvm/Object/IRSymtab.h
+++ b/linux-x64/clang/include/llvm/Object/IRSymtab.h
@@ -1,9 +1,8 @@
//===- IRSymtab.h - data definitions for IR symbol tables -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Object/MachO.h b/linux-x64/clang/include/llvm/Object/MachO.h
index 159c176..79ec8bb 100644
--- a/linux-x64/clang/include/llvm/Object/MachO.h
+++ b/linux-x64/clang/include/llvm/Object/MachO.h
@@ -1,9 +1,8 @@
//===- MachO.h - MachO object file implementation ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -356,7 +355,7 @@
basic_symbol_iterator symbol_end() const override;
// MachO specific.
- basic_symbol_iterator getSymbolByIndex(unsigned Index) const;
+ symbol_iterator getSymbolByIndex(unsigned Index) const;
uint64_t getSymbolIndex(DataRefImpl Symb) const;
section_iterator section_begin() const override;
@@ -616,6 +615,9 @@
case MachO::PLATFORM_TVOS: return "tvos";
case MachO::PLATFORM_WATCHOS: return "watchos";
case MachO::PLATFORM_BRIDGEOS: return "bridgeos";
+ case MachO::PLATFORM_IOSSIMULATOR: return "iossimulator";
+ case MachO::PLATFORM_TVOSSIMULATOR: return "tvossimulator";
+ case MachO::PLATFORM_WATCHOSSIMULATOR: return "watchossimulator";
default:
std::string ret;
raw_string_ostream ss(ret);
diff --git a/linux-x64/clang/include/llvm/Object/MachOUniversal.h b/linux-x64/clang/include/llvm/Object/MachOUniversal.h
index 9e70b0b..5bf724f 100644
--- a/linux-x64/clang/include/llvm/Object/MachOUniversal.h
+++ b/linux-x64/clang/include/llvm/Object/MachOUniversal.h
@@ -1,9 +1,8 @@
//===- MachOUniversal.h - Mach-O universal binaries -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Object/ModuleSymbolTable.h b/linux-x64/clang/include/llvm/Object/ModuleSymbolTable.h
index c3cbc27..4c582fb 100644
--- a/linux-x64/clang/include/llvm/Object/ModuleSymbolTable.h
+++ b/linux-x64/clang/include/llvm/Object/ModuleSymbolTable.h
@@ -1,9 +1,8 @@
//===- ModuleSymbolTable.h - symbol table for in-memory IR ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Object/ObjectFile.h b/linux-x64/clang/include/llvm/Object/ObjectFile.h
index 02d62e8..f13775c 100644
--- a/linux-x64/clang/include/llvm/Object/ObjectFile.h
+++ b/linux-x64/clang/include/llvm/Object/ObjectFile.h
@@ -1,9 +1,8 @@
//===- ObjectFile.h - File format independent object file -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -104,13 +103,25 @@
uint64_t getAlignment() const;
bool isCompressed() const;
+ /// Whether this section contains instructions.
bool isText() const;
+ /// Whether this section contains data, not instructions.
bool isData() const;
+ /// Whether this section contains BSS uninitialized data.
bool isBSS() const;
bool isVirtual() const;
bool isBitcode() const;
bool isStripped() const;
+ /// Whether this section will be placed in the text segment, according to the
+ /// Berkeley size format. This is true if the section is allocatable, and
+ /// contains either code or readonly data.
+ bool isBerkeleyText() const;
+ /// Whether this section will be placed in the data segment, according to the
+ /// Berkeley size format. This is true if the section is allocatable and
+ /// contains data (e.g. PROGBITS), but is not text.
+ bool isBerkeleyData() const;
+
bool containsSymbol(SymbolRef S) const;
relocation_iterator relocation_begin() const;
@@ -238,6 +249,8 @@
virtual bool isSectionVirtual(DataRefImpl Sec) const = 0;
virtual bool isSectionBitcode(DataRefImpl Sec) const;
virtual bool isSectionStripped(DataRefImpl Sec) const;
+ virtual bool isBerkeleyText(DataRefImpl Sec) const;
+ virtual bool isBerkeleyData(DataRefImpl Sec) const;
virtual relocation_iterator section_rel_begin(DataRefImpl Sec) const = 0;
virtual relocation_iterator section_rel_end(DataRefImpl Sec) const = 0;
virtual section_iterator getRelocatedSection(DataRefImpl Sec) const;
@@ -449,6 +462,14 @@
return OwningObject->isSectionStripped(SectionPimpl);
}
+inline bool SectionRef::isBerkeleyText() const {
+ return OwningObject->isBerkeleyText(SectionPimpl);
+}
+
+inline bool SectionRef::isBerkeleyData() const {
+ return OwningObject->isBerkeleyData(SectionPimpl);
+}
+
inline relocation_iterator SectionRef::relocation_begin() const {
return OwningObject->section_rel_begin(SectionPimpl);
}
diff --git a/linux-x64/clang/include/llvm/Object/RelocVisitor.h b/linux-x64/clang/include/llvm/Object/RelocVisitor.h
index 008e109..76f3fab 100644
--- a/linux-x64/clang/include/llvm/Object/RelocVisitor.h
+++ b/linux-x64/clang/include/llvm/Object/RelocVisitor.h
@@ -1,9 +1,8 @@
//===- RelocVisitor.h - Visitor for object file relocations -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -101,6 +100,8 @@
case Triple::arm:
case Triple::armeb:
return visitARM(Rel, R, Value);
+ case Triple::avr:
+ return visitAVR(Rel, R, Value);
case Triple::lanai:
return visitLanai(Rel, R, Value);
case Triple::mipsel:
@@ -129,6 +130,8 @@
case ELF::R_X86_64_NONE:
return 0;
case ELF::R_X86_64_64:
+ case ELF::R_X86_64_DTPOFF32:
+ case ELF::R_X86_64_DTPOFF64:
return Value + getELFAddend(R);
case ELF::R_X86_64_PC32:
return Value + getELFAddend(R) - R.getOffset();
@@ -257,6 +260,16 @@
return 0;
}
+ uint64_t visitAVR(uint32_t Rel, RelocationRef R, uint64_t Value) {
+ if (Rel == ELF::R_AVR_16) {
+ return (Value + getELFAddend(R)) & 0xFFFF;
+ } else if (Rel == ELF::R_AVR_32) {
+ return (Value + getELFAddend(R)) & 0xFFFFFFFF;
+ }
+ HasError = true;
+ return 0;
+ }
+
uint64_t visitLanai(uint32_t Rel, RelocationRef R, uint64_t Value) {
if (Rel == ELF::R_LANAI_32)
return (Value + getELFAddend(R)) & 0xFFFFFFFF;
@@ -323,16 +336,17 @@
uint64_t visitWasm(uint32_t Rel, RelocationRef R, uint64_t Value) {
if (ObjToVisit.getArch() == Triple::wasm32) {
switch (Rel) {
- case wasm::R_WEBASSEMBLY_FUNCTION_INDEX_LEB:
- case wasm::R_WEBASSEMBLY_TABLE_INDEX_SLEB:
- case wasm::R_WEBASSEMBLY_TABLE_INDEX_I32:
- case wasm::R_WEBASSEMBLY_MEMORY_ADDR_LEB:
- case wasm::R_WEBASSEMBLY_MEMORY_ADDR_SLEB:
- case wasm::R_WEBASSEMBLY_MEMORY_ADDR_I32:
- case wasm::R_WEBASSEMBLY_TYPE_INDEX_LEB:
- case wasm::R_WEBASSEMBLY_GLOBAL_INDEX_LEB:
- case wasm::R_WEBASSEMBLY_FUNCTION_OFFSET_I32:
- case wasm::R_WEBASSEMBLY_SECTION_OFFSET_I32:
+ case wasm::R_WASM_FUNCTION_INDEX_LEB:
+ case wasm::R_WASM_TABLE_INDEX_SLEB:
+ case wasm::R_WASM_TABLE_INDEX_I32:
+ case wasm::R_WASM_MEMORY_ADDR_LEB:
+ case wasm::R_WASM_MEMORY_ADDR_SLEB:
+ case wasm::R_WASM_MEMORY_ADDR_I32:
+ case wasm::R_WASM_TYPE_INDEX_LEB:
+ case wasm::R_WASM_GLOBAL_INDEX_LEB:
+ case wasm::R_WASM_FUNCTION_OFFSET_I32:
+ case wasm::R_WASM_SECTION_OFFSET_I32:
+ case wasm::R_WASM_EVENT_INDEX_LEB:
// For wasm section, its offset at 0 -- ignoring Value
return 0;
}
diff --git a/linux-x64/clang/include/llvm/Object/StackMapParser.h b/linux-x64/clang/include/llvm/Object/StackMapParser.h
index 557db5a..8817516 100644
--- a/linux-x64/clang/include/llvm/Object/StackMapParser.h
+++ b/linux-x64/clang/include/llvm/Object/StackMapParser.h
@@ -1,9 +1,8 @@
//===- StackMapParser.h - StackMap Parsing Support --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Object/SymbolSize.h b/linux-x64/clang/include/llvm/Object/SymbolSize.h
index 1a1dc87..085623e 100644
--- a/linux-x64/clang/include/llvm/Object/SymbolSize.h
+++ b/linux-x64/clang/include/llvm/Object/SymbolSize.h
@@ -1,9 +1,8 @@
//===- SymbolSize.h ---------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Object/SymbolicFile.h b/linux-x64/clang/include/llvm/Object/SymbolicFile.h
index 5b9549b..6d95d7a 100644
--- a/linux-x64/clang/include/llvm/Object/SymbolicFile.h
+++ b/linux-x64/clang/include/llvm/Object/SymbolicFile.h
@@ -1,9 +1,8 @@
//===- SymbolicFile.h - Interface that only provides symbols ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Object/Wasm.h b/linux-x64/clang/include/llvm/Object/Wasm.h
index 25903fc..a0a2c4b 100644
--- a/linux-x64/clang/include/llvm/Object/Wasm.h
+++ b/linux-x64/clang/include/llvm/Object/Wasm.h
@@ -1,9 +1,8 @@
-//===- WasmObjectFile.h - Wasm object file implementation -------*- C++ -*-===//
+//===- Wasm.h - Wasm object file implementation -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -37,13 +36,16 @@
class WasmSymbol {
public:
WasmSymbol(const wasm::WasmSymbolInfo &Info,
- const wasm::WasmSignature *FunctionType,
- const wasm::WasmGlobalType *GlobalType)
- : Info(Info), FunctionType(FunctionType), GlobalType(GlobalType) {}
+ const wasm::WasmGlobalType *GlobalType,
+ const wasm::WasmEventType *EventType,
+ const wasm::WasmSignature *Signature)
+ : Info(Info), GlobalType(GlobalType), EventType(EventType),
+ Signature(Signature) {}
const wasm::WasmSymbolInfo &Info;
- const wasm::WasmSignature *FunctionType;
const wasm::WasmGlobalType *GlobalType;
+ const wasm::WasmEventType *EventType;
+ const wasm::WasmSignature *Signature;
bool isTypeFunction() const {
return Info.Kind == wasm::WASM_SYMBOL_TYPE_FUNCTION;
@@ -59,6 +61,8 @@
return Info.Kind == wasm::WASM_SYMBOL_TYPE_SECTION;
}
+ bool isTypeEvent() const { return Info.Kind == wasm::WASM_SYMBOL_TYPE_EVENT; }
+
bool isDefined() const { return !isUndefined(); }
bool isUndefined() const {
@@ -124,12 +128,15 @@
static bool classof(const Binary *v) { return v->isWasm(); }
+ const wasm::WasmDylinkInfo &dylinkInfo() const { return DylinkInfo; }
+ const wasm::WasmProducerInfo &getProducerInfo() const { return ProducerInfo; }
ArrayRef<wasm::WasmSignature> types() const { return Signatures; }
ArrayRef<uint32_t> functionTypes() const { return FunctionTypes; }
ArrayRef<wasm::WasmImport> imports() const { return Imports; }
ArrayRef<wasm::WasmTable> tables() const { return Tables; }
ArrayRef<wasm::WasmLimits> memories() const { return Memories; }
ArrayRef<wasm::WasmGlobal> globals() const { return Globals; }
+ ArrayRef<wasm::WasmEvent> events() const { return Events; }
ArrayRef<wasm::WasmExport> exports() const { return Exports; }
ArrayRef<WasmSymbol> syms() const { return Symbols; }
const wasm::WasmLinkingData &linkingData() const { return LinkingData; }
@@ -141,7 +148,7 @@
uint32_t startFunction() const { return StartFunction; }
uint32_t getNumImportedGlobals() const { return NumImportedGlobals; }
uint32_t getNumImportedFunctions() const { return NumImportedFunctions; }
-
+ uint32_t getNumImportedEvents() const { return NumImportedEvents; }
void moveSymbolNext(DataRefImpl &Symb) const override;
uint32_t getSymbolFlags(DataRefImpl Symb) const override;
@@ -193,6 +200,7 @@
Triple::ArchType getArch() const override;
SubtargetFeatures getFeatures() const override;
bool isRelocatableObject() const override;
+ bool isSharedObject() const;
struct ReadContext {
const uint8_t *Start;
@@ -205,17 +213,21 @@
bool isDefinedFunctionIndex(uint32_t Index) const;
bool isValidGlobalIndex(uint32_t Index) const;
bool isDefinedGlobalIndex(uint32_t Index) const;
+ bool isValidEventIndex(uint32_t Index) const;
+ bool isDefinedEventIndex(uint32_t Index) const;
bool isValidFunctionSymbol(uint32_t Index) const;
bool isValidGlobalSymbol(uint32_t Index) const;
+ bool isValidEventSymbol(uint32_t Index) const;
bool isValidDataSymbol(uint32_t Index) const;
bool isValidSectionSymbol(uint32_t Index) const;
wasm::WasmFunction &getDefinedFunction(uint32_t Index);
+ const wasm::WasmFunction &getDefinedFunction(uint32_t Index) const;
wasm::WasmGlobal &getDefinedGlobal(uint32_t Index);
+ wasm::WasmEvent &getDefinedEvent(uint32_t Index);
const WasmSection &getWasmSection(DataRefImpl Ref) const;
const wasm::WasmRelocation &getWasmRelocation(DataRefImpl Ref) const;
- const uint8_t *getPtr(size_t Offset) const;
Error parseSection(WasmSection &Sec);
Error parseCustomSection(WasmSection &Sec, ReadContext &Ctx);
@@ -226,6 +238,7 @@
Error parseTableSection(ReadContext &Ctx);
Error parseMemorySection(ReadContext &Ctx);
Error parseGlobalSection(ReadContext &Ctx);
+ Error parseEventSection(ReadContext &Ctx);
Error parseExportSection(ReadContext &Ctx);
Error parseStartSection(ReadContext &Ctx);
Error parseElemSection(ReadContext &Ctx);
@@ -233,19 +246,24 @@
Error parseDataSection(ReadContext &Ctx);
// Custom section types
+ Error parseDylinkSection(ReadContext &Ctx);
Error parseNameSection(ReadContext &Ctx);
Error parseLinkingSection(ReadContext &Ctx);
Error parseLinkingSectionSymtab(ReadContext &Ctx);
Error parseLinkingSectionComdat(ReadContext &Ctx);
+ Error parseProducersSection(ReadContext &Ctx);
Error parseRelocSection(StringRef Name, ReadContext &Ctx);
wasm::WasmObjectHeader Header;
std::vector<WasmSection> Sections;
+ wasm::WasmDylinkInfo DylinkInfo;
+ wasm::WasmProducerInfo ProducerInfo;
std::vector<wasm::WasmSignature> Signatures;
std::vector<uint32_t> FunctionTypes;
std::vector<wasm::WasmTable> Tables;
std::vector<wasm::WasmLimits> Memories;
std::vector<wasm::WasmGlobal> Globals;
+ std::vector<wasm::WasmEvent> Events;
std::vector<wasm::WasmImport> Imports;
std::vector<wasm::WasmExport> Exports;
std::vector<wasm::WasmElemSegment> ElemSegments;
@@ -255,12 +273,58 @@
std::vector<wasm::WasmFunctionName> DebugNames;
uint32_t StartFunction = -1;
bool HasLinkingSection = false;
+ bool HasDylinkSection = false;
wasm::WasmLinkingData LinkingData;
uint32_t NumImportedGlobals = 0;
uint32_t NumImportedFunctions = 0;
+ uint32_t NumImportedEvents = 0;
uint32_t CodeSection = 0;
uint32_t DataSection = 0;
uint32_t GlobalSection = 0;
+ uint32_t EventSection = 0;
+};
+
+class WasmSectionOrderChecker {
+public:
+ // We define orders for all core wasm sections and known custom sections.
+ enum : int {
+ // Core sections
+ // The order of standard sections is precisely given by the spec.
+ WASM_SEC_ORDER_TYPE = 1,
+ WASM_SEC_ORDER_IMPORT = 2,
+ WASM_SEC_ORDER_FUNCTION = 3,
+ WASM_SEC_ORDER_TABLE = 4,
+ WASM_SEC_ORDER_MEMORY = 5,
+ WASM_SEC_ORDER_GLOBAL = 6,
+ WASM_SEC_ORDER_EVENT = 7,
+ WASM_SEC_ORDER_EXPORT = 8,
+ WASM_SEC_ORDER_START = 9,
+ WASM_SEC_ORDER_ELEM = 10,
+ WASM_SEC_ORDER_DATACOUNT = 11,
+ WASM_SEC_ORDER_CODE = 12,
+ WASM_SEC_ORDER_DATA = 13,
+
+ // Custom sections
+ // "dylink" should be the very first section in the module
+ WASM_SEC_ORDER_DYLINK = 0,
+ // "linking" section requires DATA section in order to validate data symbols
+ WASM_SEC_ORDER_LINKING = 100,
+ // Must come after "linking" section in order to validate reloc indexes.
+ WASM_SEC_ORDER_RELOC = 101,
+ // "name" section must appear after DATA. Comes after "linking" to allow
+ // symbol table to set default function name.
+ WASM_SEC_ORDER_NAME = 102,
+ // "producers" section must appear after "name" section.
+ WASM_SEC_ORDER_PRODUCERS = 103
+ };
+
+ bool isValidSectionOrder(unsigned ID, StringRef CustomSectionName = "");
+
+private:
+ int LastOrder = -1; // Lastly seen known section's order
+
+ // Returns -1 for unknown sections.
+ int getSectionOrder(unsigned ID, StringRef CustomSectionName = "");
};
} // end namespace object
diff --git a/linux-x64/clang/include/llvm/Object/WasmTraits.h b/linux-x64/clang/include/llvm/Object/WasmTraits.h
index 049d72f..3eee8e7 100644
--- a/linux-x64/clang/include/llvm/Object/WasmTraits.h
+++ b/linux-x64/clang/include/llvm/Object/WasmTraits.h
@@ -1,9 +1,8 @@
//===- WasmTraits.h - DenseMap traits for the Wasm structures ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Object/WindowsResource.h b/linux-x64/clang/include/llvm/Object/WindowsResource.h
index a077c82..fd04e60 100644
--- a/linux-x64/clang/include/llvm/Object/WindowsResource.h
+++ b/linux-x64/clang/include/llvm/Object/WindowsResource.h
@@ -1,9 +1,8 @@
//===-- WindowsResource.h ---------------------------------------*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===---------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ObjectYAML/COFFYAML.h b/linux-x64/clang/include/llvm/ObjectYAML/COFFYAML.h
index 78f021f..eec5af9 100644
--- a/linux-x64/clang/include/llvm/ObjectYAML/COFFYAML.h
+++ b/linux-x64/clang/include/llvm/ObjectYAML/COFFYAML.h
@@ -1,9 +1,8 @@
//===- COFFYAML.h - COFF YAMLIO implementation ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -58,7 +57,13 @@
struct Relocation {
uint32_t VirtualAddress;
uint16_t Type;
+
+ // Normally a Relocation can refer to the symbol via its name.
+ // It can also use a direct symbol table index instead (with no name
+ // specified), allowing disambiguating between multiple symbols with the
+ // same name or crafting intentionally broken files for testing.
StringRef SymbolName;
+ Optional<uint32_t> SymbolTableIndex;
};
struct Section {
diff --git a/linux-x64/clang/include/llvm/ObjectYAML/CodeViewYAMLDebugSections.h b/linux-x64/clang/include/llvm/ObjectYAML/CodeViewYAMLDebugSections.h
index d620008..9cbacb8 100644
--- a/linux-x64/clang/include/llvm/ObjectYAML/CodeViewYAMLDebugSections.h
+++ b/linux-x64/clang/include/llvm/ObjectYAML/CodeViewYAMLDebugSections.h
@@ -1,9 +1,8 @@
//=- CodeViewYAMLDebugSections.h - CodeView YAMLIO debug sections -*- C++ -*-=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ObjectYAML/CodeViewYAMLSymbols.h b/linux-x64/clang/include/llvm/ObjectYAML/CodeViewYAMLSymbols.h
index 791193c..7c05c9e 100644
--- a/linux-x64/clang/include/llvm/ObjectYAML/CodeViewYAMLSymbols.h
+++ b/linux-x64/clang/include/llvm/ObjectYAML/CodeViewYAMLSymbols.h
@@ -1,9 +1,8 @@
//===- CodeViewYAMLSymbols.h - CodeView YAMLIO Symbol implementation ------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ObjectYAML/CodeViewYAMLTypeHashing.h b/linux-x64/clang/include/llvm/ObjectYAML/CodeViewYAMLTypeHashing.h
index 344966f..d6cec8d 100644
--- a/linux-x64/clang/include/llvm/ObjectYAML/CodeViewYAMLTypeHashing.h
+++ b/linux-x64/clang/include/llvm/ObjectYAML/CodeViewYAMLTypeHashing.h
@@ -1,9 +1,8 @@
//==- CodeViewYAMLTypeHashing.h - CodeView YAMLIO Type hashing ----*- C++-*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ObjectYAML/CodeViewYAMLTypes.h b/linux-x64/clang/include/llvm/ObjectYAML/CodeViewYAMLTypes.h
index 1b1306d..04b5e0b 100644
--- a/linux-x64/clang/include/llvm/ObjectYAML/CodeViewYAMLTypes.h
+++ b/linux-x64/clang/include/llvm/ObjectYAML/CodeViewYAMLTypes.h
@@ -1,9 +1,8 @@
//==- CodeViewYAMLTypes.h - CodeView YAMLIO Type implementation --*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ObjectYAML/DWARFEmitter.h b/linux-x64/clang/include/llvm/ObjectYAML/DWARFEmitter.h
index ce32274..2ccc876 100644
--- a/linux-x64/clang/include/llvm/ObjectYAML/DWARFEmitter.h
+++ b/linux-x64/clang/include/llvm/ObjectYAML/DWARFEmitter.h
@@ -1,9 +1,8 @@
//===--- DWARFEmitter.h - ---------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/ObjectYAML/DWARFYAML.h b/linux-x64/clang/include/llvm/ObjectYAML/DWARFYAML.h
index 705c887..78d736c 100644
--- a/linux-x64/clang/include/llvm/ObjectYAML/DWARFYAML.h
+++ b/linux-x64/clang/include/llvm/ObjectYAML/DWARFYAML.h
@@ -1,9 +1,8 @@
//===- DWARFYAML.h - DWARF YAMLIO implementation ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/ObjectYAML/ELFYAML.h b/linux-x64/clang/include/llvm/ObjectYAML/ELFYAML.h
index 92081f0..e194e59 100644
--- a/linux-x64/clang/include/llvm/ObjectYAML/ELFYAML.h
+++ b/linux-x64/clang/include/llvm/ObjectYAML/ELFYAML.h
@@ -1,9 +1,8 @@
//===- ELFYAML.h - ELF YAMLIO implementation --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -44,6 +43,8 @@
LLVM_YAML_STRONG_TYPEDEF(uint8_t, ELF_ELFOSABI)
// Just use 64, since it can hold 32-bit values too.
LLVM_YAML_STRONG_TYPEDEF(uint64_t, ELF_EF)
+// Just use 64, since it can hold 32-bit values too.
+LLVM_YAML_STRONG_TYPEDEF(uint64_t, ELF_DYNTAG)
LLVM_YAML_STRONG_TYPEDEF(uint32_t, ELF_PF)
LLVM_YAML_STRONG_TYPEDEF(uint32_t, ELF_SHT)
LLVM_YAML_STRONG_TYPEDEF(uint32_t, ELF_REL)
@@ -68,6 +69,7 @@
ELF_ELFCLASS Class;
ELF_ELFDATA Data;
ELF_ELFOSABI OSABI;
+ llvm::yaml::Hex8 ABIVersion;
ELF_ET Type;
ELF_EM Machine;
ELF_EF Flags;
@@ -107,8 +109,14 @@
StringRef sectionNameOrType;
};
+struct DynamicEntry {
+ ELF_DYNTAG Tag;
+ llvm::yaml::Hex64 Val;
+};
+
struct Section {
enum class SectionKind {
+ Dynamic,
Group,
RawContent,
Relocation,
@@ -121,13 +129,23 @@
ELF_SHF Flags;
llvm::yaml::Hex64 Address;
StringRef Link;
- StringRef Info;
llvm::yaml::Hex64 AddressAlign;
Optional<llvm::yaml::Hex64> EntSize;
Section(SectionKind Kind) : Kind(Kind) {}
virtual ~Section();
};
+
+struct DynamicSection : Section {
+ std::vector<DynamicEntry> Entries;
+
+ DynamicSection() : Section(SectionKind::Dynamic) {}
+
+ static bool classof(const Section *S) {
+ return S->Kind == SectionKind::Dynamic;
+ }
+};
+
struct RawContentSection : Section {
yaml::BinaryRef Content;
llvm::yaml::Hex64 Size;
@@ -153,6 +171,7 @@
// Members of a group contain a flag and a list of section indices
// that are part of the group.
std::vector<SectionOrType> Members;
+ StringRef Signature; /* Info */
Group() : Section(SectionKind::Group) {}
@@ -170,6 +189,7 @@
struct RelocationSection : Section {
std::vector<Relocation> Relocations;
+ StringRef RelocatableSec; /* Info */
RelocationSection() : Section(SectionKind::Relocation) {}
@@ -214,6 +234,7 @@
} // end namespace ELFYAML
} // end namespace llvm
+LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::ELFYAML::DynamicEntry)
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::ELFYAML::ProgramHeader)
LLVM_YAML_IS_SEQUENCE_VECTOR(std::unique_ptr<llvm::ELFYAML::Section>)
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::ELFYAML::Symbol)
@@ -297,6 +318,11 @@
};
template <>
+struct ScalarEnumerationTraits<ELFYAML::ELF_DYNTAG> {
+ static void enumeration(IO &IO, ELFYAML::ELF_DYNTAG &Value);
+};
+
+template <>
struct ScalarEnumerationTraits<ELFYAML::ELF_RSS> {
static void enumeration(IO &IO, ELFYAML::ELF_RSS &Value);
};
@@ -351,6 +377,10 @@
static void mapping(IO &IO, ELFYAML::LocalGlobalWeakSymbols &Symbols);
};
+template <> struct MappingTraits<ELFYAML::DynamicEntry> {
+ static void mapping(IO &IO, ELFYAML::DynamicEntry &Rel);
+};
+
template <> struct MappingTraits<ELFYAML::Relocation> {
static void mapping(IO &IO, ELFYAML::Relocation &Rel);
};
diff --git a/linux-x64/clang/include/llvm/ObjectYAML/MachOYAML.h b/linux-x64/clang/include/llvm/ObjectYAML/MachOYAML.h
index cec4f86..d7e1c03 100644
--- a/linux-x64/clang/include/llvm/ObjectYAML/MachOYAML.h
+++ b/linux-x64/clang/include/llvm/ObjectYAML/MachOYAML.h
@@ -1,9 +1,8 @@
//===- MachOYAML.h - Mach-O YAMLIO implementation ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/ObjectYAML/ObjectYAML.h b/linux-x64/clang/include/llvm/ObjectYAML/ObjectYAML.h
index 00ce864..56f5f39 100644
--- a/linux-x64/clang/include/llvm/ObjectYAML/ObjectYAML.h
+++ b/linux-x64/clang/include/llvm/ObjectYAML/ObjectYAML.h
@@ -1,9 +1,8 @@
//===- ObjectYAML.h ---------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/ObjectYAML/WasmYAML.h b/linux-x64/clang/include/llvm/ObjectYAML/WasmYAML.h
index 8cd08e5..f5260bb 100644
--- a/linux-x64/clang/include/llvm/ObjectYAML/WasmYAML.h
+++ b/linux-x64/clang/include/llvm/ObjectYAML/WasmYAML.h
@@ -1,9 +1,8 @@
//===- WasmYAML.h - Wasm YAMLIO implementation ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
@@ -74,6 +73,12 @@
wasm::WasmInitExpr InitExpr;
};
+struct Event {
+ uint32_t Index;
+ uint32_t Attribute;
+ uint32_t SigIndex;
+};
+
struct Import {
StringRef Module;
StringRef Field;
@@ -83,6 +88,7 @@
Global GlobalImport;
Table TableImport;
Limits Memory;
+ Event EventImport;
};
};
@@ -116,6 +122,11 @@
StringRef Name;
};
+struct ProducerEntry {
+ std::string Name;
+ std::string Version;
+};
+
struct SegmentInfo {
uint32_t Index;
StringRef Name;
@@ -176,6 +187,21 @@
yaml::BinaryRef Payload;
};
+struct DylinkSection : CustomSection {
+ DylinkSection() : CustomSection("dylink") {}
+
+ static bool classof(const Section *S) {
+ auto C = dyn_cast<CustomSection>(S);
+ return C && C->Name == "dylink";
+ }
+
+ uint32_t MemorySize;
+ uint32_t MemoryAlignment;
+ uint32_t TableSize;
+ uint32_t TableAlignment;
+ std::vector<StringRef> Needed;
+};
+
struct NameSection : CustomSection {
NameSection() : CustomSection("name") {}
@@ -202,6 +228,19 @@
std::vector<Comdat> Comdats;
};
+struct ProducersSection : CustomSection {
+ ProducersSection() : CustomSection("producers") {}
+
+ static bool classof(const Section *S) {
+ auto C = dyn_cast<CustomSection>(S);
+ return C && C->Name == "producers";
+ }
+
+ std::vector<ProducerEntry> Languages;
+ std::vector<ProducerEntry> Tools;
+ std::vector<ProducerEntry> SDKs;
+};
+
struct TypeSection : Section {
TypeSection() : Section(wasm::WASM_SEC_TYPE) {}
@@ -262,6 +301,16 @@
std::vector<Global> Globals;
};
+struct EventSection : Section {
+ EventSection() : Section(wasm::WASM_SEC_EVENT) {}
+
+ static bool classof(const Section *S) {
+ return S->Type == wasm::WASM_SEC_EVENT;
+ }
+
+ std::vector<Event> Events;
+};
+
struct ExportSection : Section {
ExportSection() : Section(wasm::WASM_SEC_EXPORT) {}
@@ -334,11 +383,13 @@
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::WasmYAML::LocalDecl)
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::WasmYAML::Relocation)
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::WasmYAML::NameEntry)
+LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::WasmYAML::ProducerEntry)
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::WasmYAML::SegmentInfo)
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::WasmYAML::SymbolInfo)
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::WasmYAML::InitFunction)
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::WasmYAML::ComdatEntry)
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::WasmYAML::Comdat)
+LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::WasmYAML::Event)
namespace llvm {
namespace yaml {
@@ -411,6 +462,10 @@
static void mapping(IO &IO, WasmYAML::NameEntry &NameEntry);
};
+template <> struct MappingTraits<WasmYAML::ProducerEntry> {
+ static void mapping(IO &IO, WasmYAML::ProducerEntry &ProducerEntry);
+};
+
template <> struct MappingTraits<WasmYAML::SegmentInfo> {
static void mapping(IO &IO, WasmYAML::SegmentInfo &SegmentInfo);
};
@@ -471,6 +526,10 @@
static void enumeration(IO &IO, WasmYAML::RelocType &Kind);
};
+template <> struct MappingTraits<WasmYAML::Event> {
+ static void mapping(IO &IO, WasmYAML::Event &Event);
+};
+
} // end namespace yaml
} // end namespace llvm
diff --git a/linux-x64/clang/include/llvm/ObjectYAML/YAML.h b/linux-x64/clang/include/llvm/ObjectYAML/YAML.h
index 163cd8d..a14bfbc 100644
--- a/linux-x64/clang/include/llvm/ObjectYAML/YAML.h
+++ b/linux-x64/clang/include/llvm/ObjectYAML/YAML.h
@@ -1,9 +1,8 @@
//===- YAML.h ---------------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Option/Arg.h b/linux-x64/clang/include/llvm/Option/Arg.h
index d0086bb..d3623a0 100644
--- a/linux-x64/clang/include/llvm/Option/Arg.h
+++ b/linux-x64/clang/include/llvm/Option/Arg.h
@@ -1,9 +1,8 @@
//===- Arg.h - Parsed Argument Classes --------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/Option/ArgList.h b/linux-x64/clang/include/llvm/Option/ArgList.h
index 687c8cb..a0cd2b8 100644
--- a/linux-x64/clang/include/llvm/Option/ArgList.h
+++ b/linux-x64/clang/include/llvm/Option/ArgList.h
@@ -1,9 +1,8 @@
//===- ArgList.h - Argument List Management ---------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Option/OptParser.td b/linux-x64/clang/include/llvm/Option/OptParser.td
index 9c37374..a68f17a 100644
--- a/linux-x64/clang/include/llvm/Option/OptParser.td
+++ b/linux-x64/clang/include/llvm/Option/OptParser.td
@@ -1,9 +1,8 @@
//===--- OptParser.td - Common Option Parsing Interfaces ------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Option/OptSpecifier.h b/linux-x64/clang/include/llvm/Option/OptSpecifier.h
index 84c3cf8..7a5fcfb 100644
--- a/linux-x64/clang/include/llvm/Option/OptSpecifier.h
+++ b/linux-x64/clang/include/llvm/Option/OptSpecifier.h
@@ -1,9 +1,8 @@
//===- OptSpecifier.h - Option Specifiers -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Option/OptTable.h b/linux-x64/clang/include/llvm/Option/OptTable.h
index fdb05d8..5db3043 100644
--- a/linux-x64/clang/include/llvm/Option/OptTable.h
+++ b/linux-x64/clang/include/llvm/Option/OptTable.h
@@ -1,9 +1,8 @@
//===- OptTable.h - Option Table --------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Option/Option.h b/linux-x64/clang/include/llvm/Option/Option.h
index b09f604..c11487e 100644
--- a/linux-x64/clang/include/llvm/Option/Option.h
+++ b/linux-x64/clang/include/llvm/Option/Option.h
@@ -1,9 +1,8 @@
//===- Option.h - Abstract Driver Options -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Pass.h b/linux-x64/clang/include/llvm/Pass.h
index 5935a08..329f7ea 100644
--- a/linux-x64/clang/include/llvm/Pass.h
+++ b/linux-x64/clang/include/llvm/Pass.h
@@ -1,9 +1,8 @@
//===- llvm/Pass.h - Base class for Passes ----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/PassAnalysisSupport.h b/linux-x64/clang/include/llvm/PassAnalysisSupport.h
index a075eb5..1228534 100644
--- a/linux-x64/clang/include/llvm/PassAnalysisSupport.h
+++ b/linux-x64/clang/include/llvm/PassAnalysisSupport.h
@@ -1,9 +1,8 @@
//===- llvm/PassAnalysisSupport.h - Analysis Pass Support code --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/PassInfo.h b/linux-x64/clang/include/llvm/PassInfo.h
index 2f1ab4d..686fc04 100644
--- a/linux-x64/clang/include/llvm/PassInfo.h
+++ b/linux-x64/clang/include/llvm/PassInfo.h
@@ -1,9 +1,8 @@
//===- llvm/PassInfo.h - Pass Info class ------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/PassRegistry.h b/linux-x64/clang/include/llvm/PassRegistry.h
index 5746213..b9a0154 100644
--- a/linux-x64/clang/include/llvm/PassRegistry.h
+++ b/linux-x64/clang/include/llvm/PassRegistry.h
@@ -1,9 +1,8 @@
//===- llvm/PassRegistry.h - Pass Information Registry ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/PassSupport.h b/linux-x64/clang/include/llvm/PassSupport.h
index 1bf23dc..ab90217 100644
--- a/linux-x64/clang/include/llvm/PassSupport.h
+++ b/linux-x64/clang/include/llvm/PassSupport.h
@@ -1,9 +1,8 @@
//===- llvm/PassSupport.h - Pass Support code -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Passes/PassBuilder.h b/linux-x64/clang/include/llvm/Passes/PassBuilder.h
index 02d3dc3..9c915c6 100644
--- a/linux-x64/clang/include/llvm/Passes/PassBuilder.h
+++ b/linux-x64/clang/include/llvm/Passes/PassBuilder.h
@@ -1,9 +1,8 @@
//===- Parsing, selection, and construction of pass pipelines --*- C++ -*--===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -19,6 +18,7 @@
#include "llvm/ADT/Optional.h"
#include "llvm/Analysis/CGSCCPassManager.h"
#include "llvm/IR/PassManager.h"
+#include "llvm/Support/Error.h"
#include "llvm/Transforms/Instrumentation.h"
#include "llvm/Transforms/Scalar/LoopPassManager.h"
#include <vector>
@@ -32,10 +32,13 @@
/// A struct capturing PGO tunables.
struct PGOOptions {
PGOOptions(std::string ProfileGenFile = "", std::string ProfileUseFile = "",
- std::string SampleProfileFile = "", bool RunProfileGen = false,
- bool SamplePGOSupport = false)
+ std::string SampleProfileFile = "",
+ std::string ProfileRemappingFile = "",
+ bool RunProfileGen = false, bool SamplePGOSupport = false)
: ProfileGenFile(ProfileGenFile), ProfileUseFile(ProfileUseFile),
- SampleProfileFile(SampleProfileFile), RunProfileGen(RunProfileGen),
+ SampleProfileFile(SampleProfileFile),
+ ProfileRemappingFile(ProfileRemappingFile),
+ RunProfileGen(RunProfileGen),
SamplePGOSupport(SamplePGOSupport || !SampleProfileFile.empty()) {
assert((RunProfileGen ||
!SampleProfileFile.empty() ||
@@ -45,13 +48,14 @@
std::string ProfileGenFile;
std::string ProfileUseFile;
std::string SampleProfileFile;
+ std::string ProfileRemappingFile;
bool RunProfileGen;
bool SamplePGOSupport;
};
/// This class provides access to building LLVM's passes.
///
-/// It's members provide the baseline state available to passes during their
+/// Its members provide the baseline state available to passes during their
/// construction. The \c PassRegistry.def file specifies how to construct all
/// of the built-in passes, and those may reference these members during
/// construction.
@@ -380,8 +384,9 @@
/// If the sequence of passes aren't all the exact same kind of pass, it will
/// be an error. You cannot mix different levels implicitly, you must
/// explicitly form a pass manager in which to nest passes.
- bool parsePassPipeline(ModulePassManager &MPM, StringRef PipelineText,
- bool VerifyEachPass = true, bool DebugLogging = false);
+ Error parsePassPipeline(ModulePassManager &MPM, StringRef PipelineText,
+ bool VerifyEachPass = true,
+ bool DebugLogging = false);
/// {{@ Parse a textual pass pipeline description into a specific PassManager
///
@@ -390,12 +395,15 @@
/// this is the valid pipeline text:
///
/// function(lpass)
- bool parsePassPipeline(CGSCCPassManager &CGPM, StringRef PipelineText,
- bool VerifyEachPass = true, bool DebugLogging = false);
- bool parsePassPipeline(FunctionPassManager &FPM, StringRef PipelineText,
- bool VerifyEachPass = true, bool DebugLogging = false);
- bool parsePassPipeline(LoopPassManager &LPM, StringRef PipelineText,
- bool VerifyEachPass = true, bool DebugLogging = false);
+ Error parsePassPipeline(CGSCCPassManager &CGPM, StringRef PipelineText,
+ bool VerifyEachPass = true,
+ bool DebugLogging = false);
+ Error parsePassPipeline(FunctionPassManager &FPM, StringRef PipelineText,
+ bool VerifyEachPass = true,
+ bool DebugLogging = false);
+ Error parsePassPipeline(LoopPassManager &LPM, StringRef PipelineText,
+ bool VerifyEachPass = true,
+ bool DebugLogging = false);
/// @}}
/// Parse a textual alias analysis pipeline into the provided AA manager.
@@ -413,7 +421,7 @@
/// Returns false if the text cannot be parsed cleanly. The specific state of
/// the \p AA manager is unspecified if such an error is encountered and this
/// returns false.
- bool parseAAPipeline(AAManager &AA, StringRef PipelineText);
+ Error parseAAPipeline(AAManager &AA, StringRef PipelineText);
/// Register a callback for a default optimizer pipeline extension
/// point
@@ -492,6 +500,18 @@
PipelineStartEPCallbacks.push_back(C);
}
+ /// Register a callback for a default optimizer pipeline extension point
+ ///
+ /// This extension point allows adding optimizations at the very end of the
+ /// function optimization pipeline. A key difference between this and the
+ /// legacy PassManager's OptimizerLast callback is that this extension point
+ /// is not triggered at O0. Extensions to the O0 pipeline should append their
+ /// passes to the end of the overall pipeline.
+ void registerOptimizerLastEPCallback(
+ const std::function<void(FunctionPassManager &, OptimizationLevel)> &C) {
+ OptimizerLastEPCallbacks.push_back(C);
+ }
+
/// Register a callback for parsing an AliasAnalysis Name to populate
/// the given AAManager \p AA
void registerParseAACallback(
@@ -561,33 +581,34 @@
static Optional<std::vector<PipelineElement>>
parsePipelineText(StringRef Text);
- bool parseModulePass(ModulePassManager &MPM, const PipelineElement &E,
+ Error parseModulePass(ModulePassManager &MPM, const PipelineElement &E,
+ bool VerifyEachPass, bool DebugLogging);
+ Error parseCGSCCPass(CGSCCPassManager &CGPM, const PipelineElement &E,
bool VerifyEachPass, bool DebugLogging);
- bool parseCGSCCPass(CGSCCPassManager &CGPM, const PipelineElement &E,
+ Error parseFunctionPass(FunctionPassManager &FPM, const PipelineElement &E,
+ bool VerifyEachPass, bool DebugLogging);
+ Error parseLoopPass(LoopPassManager &LPM, const PipelineElement &E,
bool VerifyEachPass, bool DebugLogging);
- bool parseFunctionPass(FunctionPassManager &FPM, const PipelineElement &E,
- bool VerifyEachPass, bool DebugLogging);
- bool parseLoopPass(LoopPassManager &LPM, const PipelineElement &E,
- bool VerifyEachPass, bool DebugLogging);
bool parseAAPassName(AAManager &AA, StringRef Name);
- bool parseLoopPassPipeline(LoopPassManager &LPM,
- ArrayRef<PipelineElement> Pipeline,
- bool VerifyEachPass, bool DebugLogging);
- bool parseFunctionPassPipeline(FunctionPassManager &FPM,
- ArrayRef<PipelineElement> Pipeline,
- bool VerifyEachPass, bool DebugLogging);
- bool parseCGSCCPassPipeline(CGSCCPassManager &CGPM,
+ Error parseLoopPassPipeline(LoopPassManager &LPM,
ArrayRef<PipelineElement> Pipeline,
bool VerifyEachPass, bool DebugLogging);
- bool parseModulePassPipeline(ModulePassManager &MPM,
+ Error parseFunctionPassPipeline(FunctionPassManager &FPM,
+ ArrayRef<PipelineElement> Pipeline,
+ bool VerifyEachPass, bool DebugLogging);
+ Error parseCGSCCPassPipeline(CGSCCPassManager &CGPM,
ArrayRef<PipelineElement> Pipeline,
bool VerifyEachPass, bool DebugLogging);
+ Error parseModulePassPipeline(ModulePassManager &MPM,
+ ArrayRef<PipelineElement> Pipeline,
+ bool VerifyEachPass, bool DebugLogging);
void addPGOInstrPasses(ModulePassManager &MPM, bool DebugLogging,
OptimizationLevel Level, bool RunProfileGen,
std::string ProfileGenFile,
- std::string ProfileUseFile);
+ std::string ProfileUseFile,
+ std::string ProfileRemappingFile);
void invokePeepholeEPCallbacks(FunctionPassManager &, OptimizationLevel);
@@ -604,6 +625,8 @@
CGSCCOptimizerLateEPCallbacks;
SmallVector<std::function<void(FunctionPassManager &, OptimizationLevel)>, 2>
VectorizerStartEPCallbacks;
+ SmallVector<std::function<void(FunctionPassManager &, OptimizationLevel)>, 2>
+ OptimizerLastEPCallbacks;
// Module callbacks
SmallVector<std::function<void(ModulePassManager &)>, 2>
PipelineStartEPCallbacks;
diff --git a/linux-x64/clang/include/llvm/Passes/PassPlugin.h b/linux-x64/clang/include/llvm/Passes/PassPlugin.h
index af8f11a..013b7a8 100644
--- a/linux-x64/clang/include/llvm/Passes/PassPlugin.h
+++ b/linux-x64/clang/include/llvm/Passes/PassPlugin.h
@@ -1,9 +1,8 @@
//===- llvm/Passes/PassPlugin.h - Public Plugin API -----------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Passes/StandardInstrumentations.h b/linux-x64/clang/include/llvm/Passes/StandardInstrumentations.h
index b6a73b0..5672543 100644
--- a/linux-x64/clang/include/llvm/Passes/StandardInstrumentations.h
+++ b/linux-x64/clang/include/llvm/Passes/StandardInstrumentations.h
@@ -1,9 +1,8 @@
//===- StandardInstrumentations.h ------------------------------*- C++ -*--===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -16,14 +15,48 @@
#ifndef LLVM_PASSES_STANDARDINSTRUMENTATIONS_H
#define LLVM_PASSES_STANDARDINSTRUMENTATIONS_H
+#include "llvm/ADT/SmallVector.h"
#include "llvm/IR/PassInstrumentation.h"
#include "llvm/IR/PassTimingInfo.h"
+#include <string>
+#include <utility>
+
namespace llvm {
+class Module;
+
+/// Instrumentation to print IR before/after passes.
+///
+/// Needs state to be able to print module after pass that invalidates IR unit
+/// (typically Loop or SCC).
+class PrintIRInstrumentation {
+public:
+ PrintIRInstrumentation() = default;
+ ~PrintIRInstrumentation();
+
+ void registerCallbacks(PassInstrumentationCallbacks &PIC);
+
+private:
+ bool printBeforePass(StringRef PassID, Any IR);
+ void printAfterPass(StringRef PassID, Any IR);
+ void printAfterPassInvalidated(StringRef PassID);
+
+ using PrintModuleDesc = std::tuple<const Module *, std::string, StringRef>;
+
+ void pushModuleDesc(StringRef PassID, Any IR);
+ PrintModuleDesc popModuleDesc(StringRef PassID);
+
+ /// Stack of Module description, enough to print the module after a given
+ /// pass.
+ SmallVector<PrintModuleDesc, 2> ModuleDescStack;
+ bool StoreModuleDesc = false;
+};
+
/// This class provides an interface to register all the standard pass
/// instrumentations and manages their state (if any).
class StandardInstrumentations {
+ PrintIRInstrumentation PrintIR;
TimePassesHandler TimePasses;
public:
diff --git a/linux-x64/clang/include/llvm/ProfileData/Coverage/CoverageMapping.h b/linux-x64/clang/include/llvm/ProfileData/Coverage/CoverageMapping.h
index beaa365..11758ac 100644
--- a/linux-x64/clang/include/llvm/ProfileData/Coverage/CoverageMapping.h
+++ b/linux-x64/clang/include/llvm/ProfileData/Coverage/CoverageMapping.h
@@ -1,9 +1,8 @@
//===- CoverageMapping.h - Code coverage mapping support --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ProfileData/Coverage/CoverageMappingReader.h b/linux-x64/clang/include/llvm/ProfileData/Coverage/CoverageMappingReader.h
index c88c71a..dbb1976 100644
--- a/linux-x64/clang/include/llvm/ProfileData/Coverage/CoverageMappingReader.h
+++ b/linux-x64/clang/include/llvm/ProfileData/Coverage/CoverageMappingReader.h
@@ -1,9 +1,8 @@
//===- CoverageMappingReader.h - Code coverage mapping reader ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ProfileData/Coverage/CoverageMappingWriter.h b/linux-x64/clang/include/llvm/ProfileData/Coverage/CoverageMappingWriter.h
index 86fb1bd..5f88cac 100644
--- a/linux-x64/clang/include/llvm/ProfileData/Coverage/CoverageMappingWriter.h
+++ b/linux-x64/clang/include/llvm/ProfileData/Coverage/CoverageMappingWriter.h
@@ -1,9 +1,8 @@
//===- CoverageMappingWriter.h - Code coverage mapping writer ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ProfileData/GCOV.h b/linux-x64/clang/include/llvm/ProfileData/GCOV.h
index a088f63..27b76b5 100644
--- a/linux-x64/clang/include/llvm/ProfileData/GCOV.h
+++ b/linux-x64/clang/include/llvm/ProfileData/GCOV.h
@@ -1,9 +1,8 @@
//===- GCOV.h - LLVM coverage tool ------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ProfileData/InstrProf.h b/linux-x64/clang/include/llvm/ProfileData/InstrProf.h
index dc45021..9ea1b9b 100644
--- a/linux-x64/clang/include/llvm/ProfileData/InstrProf.h
+++ b/linux-x64/clang/include/llvm/ProfileData/InstrProf.h
@@ -1,9 +1,8 @@
//===- InstrProf.h - Instrumented profiling format support ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -1041,6 +1040,9 @@
void getMemOPSizeRangeFromOption(StringRef Str, int64_t &RangeStart,
int64_t &RangeLast);
+// Create the variable for the profile file name.
+void createProfileFileNameVar(Module &M, StringRef InstrProfileOutput);
+
} // end namespace llvm
#endif // LLVM_PROFILEDATA_INSTRPROF_H
diff --git a/linux-x64/clang/include/llvm/ProfileData/InstrProfData.inc b/linux-x64/clang/include/llvm/ProfileData/InstrProfData.inc
index 454620e..e1e2df5 100644
--- a/linux-x64/clang/include/llvm/ProfileData/InstrProfData.inc
+++ b/linux-x64/clang/include/llvm/ProfileData/InstrProfData.inc
@@ -1,9 +1,8 @@
/*===-- InstrProfData.inc - instr profiling runtime structures -*- C++ -*-=== *\
|*
-|* The LLVM Compiler Infrastructure
-|*
-|* This file is distributed under the University of Illinois Open Source
-|* License. See LICENSE.TXT for details.
+|* 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
|*
\*===----------------------------------------------------------------------===*/
/*
@@ -250,22 +249,22 @@
#define INSTR_PROF_DATA_DEFINED
INSTR_PROF_SECT_ENTRY(IPSK_data, \
INSTR_PROF_QUOTE(INSTR_PROF_DATA_COMMON), \
- INSTR_PROF_QUOTE(INSTR_PROF_DATA_COFF), "__DATA,")
+ INSTR_PROF_DATA_COFF, "__DATA,")
INSTR_PROF_SECT_ENTRY(IPSK_cnts, \
INSTR_PROF_QUOTE(INSTR_PROF_CNTS_COMMON), \
- INSTR_PROF_QUOTE(INSTR_PROF_CNTS_COFF), "__DATA,")
+ INSTR_PROF_CNTS_COFF, "__DATA,")
INSTR_PROF_SECT_ENTRY(IPSK_name, \
INSTR_PROF_QUOTE(INSTR_PROF_NAME_COMMON), \
- INSTR_PROF_QUOTE(INSTR_PROF_NAME_COFF), "__DATA,")
+ INSTR_PROF_NAME_COFF, "__DATA,")
INSTR_PROF_SECT_ENTRY(IPSK_vals, \
INSTR_PROF_QUOTE(INSTR_PROF_VALS_COMMON), \
- INSTR_PROF_QUOTE(INSTR_PROF_VALS_COFF), "__DATA,")
+ INSTR_PROF_VALS_COFF, "__DATA,")
INSTR_PROF_SECT_ENTRY(IPSK_vnodes, \
INSTR_PROF_QUOTE(INSTR_PROF_VNODES_COMMON), \
- INSTR_PROF_QUOTE(INSTR_PROF_VNODES_COFF), "__DATA,")
+ INSTR_PROF_VNODES_COFF, "__DATA,")
INSTR_PROF_SECT_ENTRY(IPSK_covmap, \
INSTR_PROF_QUOTE(INSTR_PROF_COVMAP_COMMON), \
- INSTR_PROF_QUOTE(INSTR_PROF_COVMAP_COFF), "__LLVM_COV,")
+ INSTR_PROF_COVMAP_COFF, "__LLVM_COV,")
#undef INSTR_PROF_SECT_ENTRY
#endif
@@ -655,13 +654,15 @@
#define INSTR_PROF_VALS_COMMON __llvm_prf_vals
#define INSTR_PROF_VNODES_COMMON __llvm_prf_vnds
#define INSTR_PROF_COVMAP_COMMON __llvm_covmap
-/* Win32 */
-#define INSTR_PROF_DATA_COFF .lprfd
-#define INSTR_PROF_NAME_COFF .lprfn
-#define INSTR_PROF_CNTS_COFF .lprfc
-#define INSTR_PROF_VALS_COFF .lprfv
-#define INSTR_PROF_VNODES_COFF .lprfnd
-#define INSTR_PROF_COVMAP_COFF .lcovmap
+/* Windows section names. Because these section names contain dollar characters,
+ * they must be quoted.
+ */
+#define INSTR_PROF_DATA_COFF ".lprfd$M"
+#define INSTR_PROF_NAME_COFF ".lprfn$M"
+#define INSTR_PROF_CNTS_COFF ".lprfc$M"
+#define INSTR_PROF_VALS_COFF ".lprfv$M"
+#define INSTR_PROF_VNODES_COFF ".lprfnd$M"
+#define INSTR_PROF_COVMAP_COFF ".lcovmap$M"
#ifdef _WIN32
/* Runtime section names and name strings. */
@@ -677,31 +678,18 @@
#define INSTR_PROF_COVMAP_SECT_NAME INSTR_PROF_COVMAP_COFF
#else
/* Runtime section names and name strings. */
-#define INSTR_PROF_DATA_SECT_NAME INSTR_PROF_DATA_COMMON
-#define INSTR_PROF_NAME_SECT_NAME INSTR_PROF_NAME_COMMON
-#define INSTR_PROF_CNTS_SECT_NAME INSTR_PROF_CNTS_COMMON
+#define INSTR_PROF_DATA_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_DATA_COMMON)
+#define INSTR_PROF_NAME_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_NAME_COMMON)
+#define INSTR_PROF_CNTS_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_CNTS_COMMON)
/* Array of pointers. Each pointer points to a list
* of value nodes associated with one value site.
*/
-#define INSTR_PROF_VALS_SECT_NAME INSTR_PROF_VALS_COMMON
+#define INSTR_PROF_VALS_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_VALS_COMMON)
/* Value profile nodes section. */
-#define INSTR_PROF_VNODES_SECT_NAME INSTR_PROF_VNODES_COMMON
-#define INSTR_PROF_COVMAP_SECT_NAME INSTR_PROF_COVMAP_COMMON
+#define INSTR_PROF_VNODES_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_VNODES_COMMON)
+#define INSTR_PROF_COVMAP_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_COVMAP_COMMON)
#endif
-#define INSTR_PROF_DATA_SECT_NAME_STR \
- INSTR_PROF_QUOTE(INSTR_PROF_DATA_SECT_NAME)
-#define INSTR_PROF_NAME_SECT_NAME_STR \
- INSTR_PROF_QUOTE(INSTR_PROF_NAME_SECT_NAME)
-#define INSTR_PROF_CNTS_SECT_NAME_STR \
- INSTR_PROF_QUOTE(INSTR_PROF_CNTS_SECT_NAME)
-#define INSTR_PROF_COVMAP_SECT_NAME_STR \
- INSTR_PROF_QUOTE(INSTR_PROF_COVMAP_SECT_NAME)
-#define INSTR_PROF_VALS_SECT_NAME_STR \
- INSTR_PROF_QUOTE(INSTR_PROF_VALS_SECT_NAME)
-#define INSTR_PROF_VNODES_SECT_NAME_STR \
- INSTR_PROF_QUOTE(INSTR_PROF_VNODES_SECT_NAME)
-
/* Macros to define start/stop section symbol for a given
* section on Linux. For instance
* INSTR_PROF_SECT_START(INSTR_PROF_DATA_SECT_NAME) will
diff --git a/linux-x64/clang/include/llvm/ProfileData/InstrProfReader.h b/linux-x64/clang/include/llvm/ProfileData/InstrProfReader.h
index efc22dc..d465420 100644
--- a/linux-x64/clang/include/llvm/ProfileData/InstrProfReader.h
+++ b/linux-x64/clang/include/llvm/ProfileData/InstrProfReader.h
@@ -1,9 +1,8 @@
//===- InstrProfReader.h - Instrumented profiling readers -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -349,12 +348,17 @@
OnDiskIterableChainedHashTable<InstrProfLookupTrait>;
template <typename HashTableImpl>
+class InstrProfReaderItaniumRemapper;
+
+template <typename HashTableImpl>
class InstrProfReaderIndex : public InstrProfReaderIndexBase {
private:
std::unique_ptr<HashTableImpl> HashTable;
typename HashTableImpl::data_iterator RecordIterator;
uint64_t FormatVersion;
+ friend class InstrProfReaderItaniumRemapper<HashTableImpl>;
+
public:
InstrProfReaderIndex(const unsigned char *Buckets,
const unsigned char *const Payload,
@@ -386,13 +390,26 @@
}
};
+/// Name matcher supporting fuzzy matching of symbol names to names in profiles.
+class InstrProfReaderRemapper {
+public:
+ virtual ~InstrProfReaderRemapper() {}
+ virtual Error populateRemappings() { return Error::success(); }
+ virtual Error getRecords(StringRef FuncName,
+ ArrayRef<NamedInstrProfRecord> &Data) = 0;
+};
+
/// Reader for the indexed binary instrprof format.
class IndexedInstrProfReader : public InstrProfReader {
private:
/// The profile data file contents.
std::unique_ptr<MemoryBuffer> DataBuffer;
+ /// The profile remapping file contents.
+ std::unique_ptr<MemoryBuffer> RemappingBuffer;
/// The index into the profile data.
std::unique_ptr<InstrProfReaderIndexBase> Index;
+ /// The profile remapping file contents.
+ std::unique_ptr<InstrProfReaderRemapper> Remapper;
/// Profile summary data.
std::unique_ptr<ProfileSummary> Summary;
// Index to the current record in the record array.
@@ -404,8 +421,11 @@
const unsigned char *Cur);
public:
- IndexedInstrProfReader(std::unique_ptr<MemoryBuffer> DataBuffer)
- : DataBuffer(std::move(DataBuffer)), RecordIndex(0) {}
+ IndexedInstrProfReader(
+ std::unique_ptr<MemoryBuffer> DataBuffer,
+ std::unique_ptr<MemoryBuffer> RemappingBuffer = nullptr)
+ : DataBuffer(std::move(DataBuffer)),
+ RemappingBuffer(std::move(RemappingBuffer)), RecordIndex(0) {}
IndexedInstrProfReader(const IndexedInstrProfReader &) = delete;
IndexedInstrProfReader &operator=(const IndexedInstrProfReader &) = delete;
@@ -434,10 +454,11 @@
/// Factory method to create an indexed reader.
static Expected<std::unique_ptr<IndexedInstrProfReader>>
- create(const Twine &Path);
+ create(const Twine &Path, const Twine &RemappingPath = "");
static Expected<std::unique_ptr<IndexedInstrProfReader>>
- create(std::unique_ptr<MemoryBuffer> Buffer);
+ create(std::unique_ptr<MemoryBuffer> Buffer,
+ std::unique_ptr<MemoryBuffer> RemappingBuffer = nullptr);
// Used for testing purpose only.
void setValueProfDataEndianness(support::endianness Endianness) {
diff --git a/linux-x64/clang/include/llvm/ProfileData/InstrProfWriter.h b/linux-x64/clang/include/llvm/ProfileData/InstrProfWriter.h
index 8107ab3..b0ab31d 100644
--- a/linux-x64/clang/include/llvm/ProfileData/InstrProfWriter.h
+++ b/linux-x64/clang/include/llvm/ProfileData/InstrProfWriter.h
@@ -1,9 +1,8 @@
//===- InstrProfWriter.h - Instrumented profiling writer --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ProfileData/ProfileCommon.h b/linux-x64/clang/include/llvm/ProfileData/ProfileCommon.h
index 087588f..b52f886 100644
--- a/linux-x64/clang/include/llvm/ProfileData/ProfileCommon.h
+++ b/linux-x64/clang/include/llvm/ProfileData/ProfileCommon.h
@@ -1,9 +1,8 @@
//===- ProfileCommon.h - Common profiling APIs. -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ProfileData/SampleProf.h b/linux-x64/clang/include/llvm/ProfileData/SampleProf.h
index e632a1c..ca3e2de 100644
--- a/linux-x64/clang/include/llvm/ProfileData/SampleProf.h
+++ b/linux-x64/clang/include/llvm/ProfileData/SampleProf.h
@@ -1,9 +1,8 @@
//===- SampleProf.h - Sampling profiling format support ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -488,8 +487,6 @@
// If the format is SPF_Compact_Binary, the name is already a GUID and we
// don't want to return the GUID of GUID.
static uint64_t getGUID(StringRef Name) {
- if (Format == SPF_Compact_Binary)
- errs() << Name << '\n';
return (Format == SPF_Compact_Binary) ? std::stoull(Name.data())
: Function::getGUID(Name);
}
diff --git a/linux-x64/clang/include/llvm/ProfileData/SampleProfReader.h b/linux-x64/clang/include/llvm/ProfileData/SampleProfReader.h
index c100e80..32b8f91 100644
--- a/linux-x64/clang/include/llvm/ProfileData/SampleProfReader.h
+++ b/linux-x64/clang/include/llvm/ProfileData/SampleProfReader.h
@@ -1,9 +1,8 @@
//===- SampleProfReader.h - Read LLVM sample profile data -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -222,6 +221,7 @@
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorOr.h"
#include "llvm/Support/MemoryBuffer.h"
+#include "llvm/Support/SymbolRemappingReader.h"
#include <algorithm>
#include <cstdint>
#include <memory>
@@ -289,11 +289,16 @@
// The function name may have been updated by adding suffix. In sample
// profile, the function names are all stripped, so we need to strip
// the function name suffix before matching with profile.
- StringRef Fname = F.getName().split('.').first;
+ return getSamplesFor(F.getName().split('.').first);
+ }
+
+ /// Return the samples collected for function \p F.
+ virtual FunctionSamples *getSamplesFor(StringRef Fname) {
std::string FGUID;
Fname = getRepInFormat(Fname, getFormat(), FGUID);
- if (Profiles.count(Fname))
- return &Profiles[Fname];
+ auto It = Profiles.find(Fname);
+ if (It != Profiles.end())
+ return &It->second;
return nullptr;
}
@@ -337,6 +342,12 @@
/// Profile summary information.
std::unique_ptr<ProfileSummary> Summary;
+ /// Take ownership of the summary of this reader.
+ static std::unique_ptr<ProfileSummary>
+ takeSummary(SampleProfileReader &Reader) {
+ return std::move(Reader.Summary);
+ }
+
/// Compute summary for this profile.
void computeSummary();
@@ -525,6 +536,44 @@
static const uint32_t GCOVTagAFDOFunction = 0xac000000;
};
+/// A profile data reader proxy that remaps the profile data from another
+/// sample profile data reader, by applying a provided set of equivalences
+/// between components of the symbol names in the profile.
+class SampleProfileReaderItaniumRemapper : public SampleProfileReader {
+public:
+ SampleProfileReaderItaniumRemapper(
+ std::unique_ptr<MemoryBuffer> B, LLVMContext &C,
+ std::unique_ptr<SampleProfileReader> Underlying)
+ : SampleProfileReader(std::move(B), C, Underlying->getFormat()) {
+ Profiles = std::move(Underlying->getProfiles());
+ Summary = takeSummary(*Underlying);
+ // Keep the underlying reader alive; the profile data may contain
+ // StringRefs referencing names in its name table.
+ UnderlyingReader = std::move(Underlying);
+ }
+
+ /// Create a remapped sample profile from the given remapping file and
+ /// underlying samples.
+ static ErrorOr<std::unique_ptr<SampleProfileReader>>
+ create(const Twine &Filename, LLVMContext &C,
+ std::unique_ptr<SampleProfileReader> Underlying);
+
+ /// Read and validate the file header.
+ std::error_code readHeader() override { return sampleprof_error::success; }
+
+ /// Read remapping file and apply it to the sample profile.
+ std::error_code read() override;
+
+ /// Return the samples collected for function \p F.
+ FunctionSamples *getSamplesFor(StringRef FunctionName) override;
+ using SampleProfileReader::getSamplesFor;
+
+private:
+ SymbolRemappingReader Remappings;
+ DenseMap<SymbolRemappingReader::Key, FunctionSamples*> SampleMap;
+ std::unique_ptr<SampleProfileReader> UnderlyingReader;
+};
+
} // end namespace sampleprof
} // end namespace llvm
diff --git a/linux-x64/clang/include/llvm/ProfileData/SampleProfWriter.h b/linux-x64/clang/include/llvm/ProfileData/SampleProfWriter.h
index d5ac6e5..81e6e3a 100644
--- a/linux-x64/clang/include/llvm/ProfileData/SampleProfWriter.h
+++ b/linux-x64/clang/include/llvm/ProfileData/SampleProfWriter.h
@@ -1,9 +1,8 @@
//===- SampleProfWriter.h - Write LLVM sample profile data ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/AArch64TargetParser.def b/linux-x64/clang/include/llvm/Support/AArch64TargetParser.def
index 65bfee8..d8c69c2 100644
--- a/linux-x64/clang/include/llvm/Support/AArch64TargetParser.def
+++ b/linux-x64/clang/include/llvm/Support/AArch64TargetParser.def
@@ -1,9 +1,8 @@
//===- AARCH64TargetParser.def - AARCH64 target parsing defines ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -72,6 +71,9 @@
AARCH64_ARCH_EXT_NAME("rcpc", AArch64::AEK_RCPC, "+rcpc", "-rcpc")
AARCH64_ARCH_EXT_NAME("rng", AArch64::AEK_RAND, "+rand", "-rand")
AARCH64_ARCH_EXT_NAME("memtag", AArch64::AEK_MTE, "+mte", "-mte")
+AARCH64_ARCH_EXT_NAME("ssbs", AArch64::AEK_SSBS, "+ssbs", "-ssbs")
+AARCH64_ARCH_EXT_NAME("sb", AArch64::AEK_SB, "+sb", "-sb")
+AARCH64_ARCH_EXT_NAME("predres", AArch64::AEK_PREDRES, "+predres", "-predres")
#undef AARCH64_ARCH_EXT_NAME
#ifndef AARCH64_CPU_NAME
@@ -99,8 +101,8 @@
(AArch64::AEK_CRC))
AARCH64_CPU_NAME("exynos-m3", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
(AArch64::AEK_CRC))
-AARCH64_CPU_NAME("exynos-m4", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
- (AArch64::AEK_CRC))
+AARCH64_CPU_NAME("exynos-m4", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
+ (AArch64::AEK_FP16 | AArch64::AEK_DOTPROD))
AARCH64_CPU_NAME("falkor", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
(AArch64::AEK_CRC | AArch64::AEK_RDM))
AARCH64_CPU_NAME("saphira", ARMV8_3A, FK_CRYPTO_NEON_FP_ARMV8, false,
@@ -117,6 +119,9 @@
(AArch64::AEK_CRC | AArch64::AEK_PROFILE))
AARCH64_CPU_NAME("thunderxt83", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
(AArch64::AEK_CRC | AArch64::AEK_PROFILE))
+AARCH64_CPU_NAME("tsv110", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
+ (AArch64::AEK_PROFILE | AArch64::AEK_FP16 | AArch64::AEK_FP16FML |
+ AArch64::AEK_DOTPROD))
// Invalid CPU
AARCH64_CPU_NAME("invalid", INVALID, FK_INVALID, true, AArch64::AEK_INVALID)
#undef AARCH64_CPU_NAME
diff --git a/linux-x64/clang/include/llvm/Support/AArch64TargetParser.h b/linux-x64/clang/include/llvm/Support/AArch64TargetParser.h
new file mode 100644
index 0000000..faf1c5c
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Support/AArch64TargetParser.h
@@ -0,0 +1,123 @@
+//===-- AArch64TargetParser - Parser for AArch64 features -------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements a target parser to recognise AArch64 hardware features
+// such as FPU/CPU/ARCH and extension names.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_SUPPORT_AARCH64TARGETPARSERCOMMON_H
+#define LLVM_SUPPORT_AARCH64TARGETPARSERCOMMON_H
+
+#include "llvm/ADT/StringRef.h"
+#include "llvm/ADT/Triple.h"
+#include "llvm/Support/ARMTargetParser.h"
+#include <vector>
+
+// FIXME:This should be made into class design,to avoid dupplication.
+namespace llvm {
+namespace AArch64 {
+
+// Arch extension modifiers for CPUs.
+enum ArchExtKind : unsigned {
+ AEK_INVALID = 0,
+ AEK_NONE = 1,
+ AEK_CRC = 1 << 1,
+ AEK_CRYPTO = 1 << 2,
+ AEK_FP = 1 << 3,
+ AEK_SIMD = 1 << 4,
+ AEK_FP16 = 1 << 5,
+ AEK_PROFILE = 1 << 6,
+ AEK_RAS = 1 << 7,
+ AEK_LSE = 1 << 8,
+ AEK_SVE = 1 << 9,
+ AEK_DOTPROD = 1 << 10,
+ AEK_RCPC = 1 << 11,
+ AEK_RDM = 1 << 12,
+ AEK_SM4 = 1 << 13,
+ AEK_SHA3 = 1 << 14,
+ AEK_SHA2 = 1 << 15,
+ AEK_AES = 1 << 16,
+ AEK_FP16FML = 1 << 17,
+ AEK_RAND = 1 << 18,
+ AEK_MTE = 1 << 19,
+ AEK_SSBS = 1 << 20,
+ AEK_SB = 1 << 21,
+ AEK_PREDRES = 1 << 22,
+};
+
+enum class ArchKind {
+#define AARCH64_ARCH(NAME, ID, CPU_ATTR, SUB_ARCH, ARCH_ATTR, ARCH_FPU, ARCH_BASE_EXT) ID,
+#include "AArch64TargetParser.def"
+};
+
+const ARM::ArchNames<ArchKind> AArch64ARCHNames[] = {
+#define AARCH64_ARCH(NAME, ID, CPU_ATTR, SUB_ARCH, ARCH_ATTR, ARCH_FPU, \
+ ARCH_BASE_EXT) \
+ {NAME, \
+ sizeof(NAME) - 1, \
+ CPU_ATTR, \
+ sizeof(CPU_ATTR) - 1, \
+ SUB_ARCH, \
+ sizeof(SUB_ARCH) - 1, \
+ ARM::FPUKind::ARCH_FPU, \
+ ARCH_BASE_EXT, \
+ AArch64::ArchKind::ID, \
+ ARCH_ATTR},
+#include "AArch64TargetParser.def"
+};
+
+const ARM::ExtName AArch64ARCHExtNames[] = {
+#define AARCH64_ARCH_EXT_NAME(NAME, ID, FEATURE, NEGFEATURE) \
+ {NAME, sizeof(NAME) - 1, ID, FEATURE, NEGFEATURE},
+#include "AArch64TargetParser.def"
+};
+
+const ARM::CpuNames<ArchKind> AArch64CPUNames[] = {
+#define AARCH64_CPU_NAME(NAME, ID, DEFAULT_FPU, IS_DEFAULT, DEFAULT_EXT) \
+ {NAME, sizeof(NAME) - 1, AArch64::ArchKind::ID, IS_DEFAULT, DEFAULT_EXT},
+#include "AArch64TargetParser.def"
+};
+
+const ArchKind ArchKinds[] = {
+#define AARCH64_ARCH(NAME, ID, CPU_ATTR, SUB_ARCH, ARCH_ATTR, ARCH_FPU, ARCH_BASE_EXT) \
+ ArchKind::ID,
+#include "AArch64TargetParser.def"
+};
+
+// FIXME: These should be moved to TargetTuple once it exists
+bool getExtensionFeatures(unsigned Extensions,
+ std::vector<StringRef> &Features);
+bool getArchFeatures(ArchKind AK, std::vector<StringRef> &Features);
+
+StringRef getArchName(ArchKind AK);
+unsigned getArchAttr(ArchKind AK);
+StringRef getCPUAttr(ArchKind AK);
+StringRef getSubArch(ArchKind AK);
+StringRef getArchExtName(unsigned ArchExtKind);
+StringRef getArchExtFeature(StringRef ArchExt);
+
+// Information by Name
+unsigned getDefaultFPU(StringRef CPU, ArchKind AK);
+unsigned getDefaultExtensions(StringRef CPU, ArchKind AK);
+StringRef getDefaultCPU(StringRef Arch);
+ArchKind getCPUArchKind(StringRef CPU);
+
+// Parser
+ArchKind parseArch(StringRef Arch);
+ArchExtKind parseArchExt(StringRef ArchExt);
+ArchKind parseCPUArch(StringRef CPU);
+// Used by target parser tests
+void fillValidCPUArchList(SmallVectorImpl<StringRef> &Values);
+
+bool isX18ReservedByDefault(const Triple &TT);
+
+} // namespace AArch64
+} // namespace llvm
+
+#endif
diff --git a/linux-x64/clang/include/llvm/Support/AMDGPUMetadata.h b/linux-x64/clang/include/llvm/Support/AMDGPUMetadata.h
index 667fb3f..f43be51 100644
--- a/linux-x64/clang/include/llvm/Support/AMDGPUMetadata.h
+++ b/linux-x64/clang/include/llvm/Support/AMDGPUMetadata.h
@@ -1,9 +1,8 @@
//===--- AMDGPUMetadata.h ---------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -431,6 +430,21 @@
/// Converts \p HSAMetadata to \p String.
std::error_code toString(Metadata HSAMetadata, std::string &String);
+//===----------------------------------------------------------------------===//
+// HSA metadata for v3 code object.
+//===----------------------------------------------------------------------===//
+namespace V3 {
+/// HSA metadata major version.
+constexpr uint32_t VersionMajor = 1;
+/// HSA metadata minor version.
+constexpr uint32_t VersionMinor = 0;
+
+/// HSA metadata beginning assembler directive.
+constexpr char AssemblerDirectiveBegin[] = ".amdgpu_metadata";
+/// HSA metadata ending assembler directive.
+constexpr char AssemblerDirectiveEnd[] = ".end_amdgpu_metadata";
+} // end namespace V3
+
} // end namespace HSAMD
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/AMDHSAKernelDescriptor.h b/linux-x64/clang/include/llvm/Support/AMDHSAKernelDescriptor.h
index 751699e..dca1a31 100644
--- a/linux-x64/clang/include/llvm/Support/AMDHSAKernelDescriptor.h
+++ b/linux-x64/clang/include/llvm/Support/AMDHSAKernelDescriptor.h
@@ -1,9 +1,8 @@
//===--- AMDHSAKernelDescriptor.h -----------------------------*- C++ -*---===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/ARMAttributeParser.h b/linux-x64/clang/include/llvm/Support/ARMAttributeParser.h
index 919f397..c7aeaf9 100644
--- a/linux-x64/clang/include/llvm/Support/ARMAttributeParser.h
+++ b/linux-x64/clang/include/llvm/Support/ARMAttributeParser.h
@@ -1,9 +1,8 @@
//===--- ARMAttributeParser.h - ARM Attribute Information Printer ---------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/ARMBuildAttributes.h b/linux-x64/clang/include/llvm/Support/ARMBuildAttributes.h
index b8a0376..1299c0b 100644
--- a/linux-x64/clang/include/llvm/Support/ARMBuildAttributes.h
+++ b/linux-x64/clang/include/llvm/Support/ARMBuildAttributes.h
@@ -1,9 +1,8 @@
//===-- ARMBuildAttributes.h - ARM Build Attributes -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/ARMEHABI.h b/linux-x64/clang/include/llvm/Support/ARMEHABI.h
index 9b052df..3fbb56d 100644
--- a/linux-x64/clang/include/llvm/Support/ARMEHABI.h
+++ b/linux-x64/clang/include/llvm/Support/ARMEHABI.h
@@ -1,9 +1,8 @@
//===--- ARMEHABI.h - ARM Exception Handling ABI ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/ARMTargetParser.def b/linux-x64/clang/include/llvm/Support/ARMTargetParser.def
index adf6439..35f8333 100644
--- a/linux-x64/clang/include/llvm/Support/ARMTargetParser.def
+++ b/linux-x64/clang/include/llvm/Support/ARMTargetParser.def
@@ -1,9 +1,8 @@
//===- ARMTargetParser.def - ARM target parsing defines ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -158,6 +157,7 @@
ARM_ARCH_EXT_NAME("maverick", ARM::AEK_MAVERICK, nullptr, nullptr)
ARM_ARCH_EXT_NAME("xscale", ARM::AEK_XSCALE, nullptr, nullptr)
ARM_ARCH_EXT_NAME("fp16fml", ARM::AEK_FP16FML, "+fp16fml", "-fp16fml")
+ARM_ARCH_EXT_NAME("sb", ARM::AEK_SB, "+sb", "-sb")
#undef ARM_ARCH_EXT_NAME
#ifndef ARM_HW_DIV_NAME
@@ -265,7 +265,8 @@
ARM_CPU_NAME("exynos-m1", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
ARM_CPU_NAME("exynos-m2", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
ARM_CPU_NAME("exynos-m3", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
-ARM_CPU_NAME("exynos-m4", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
+ARM_CPU_NAME("exynos-m4", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
+ (ARM::AEK_FP16 | ARM::AEK_DOTPROD))
ARM_CPU_NAME("kryo", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
// Non-standard Arch names.
ARM_CPU_NAME("iwmmxt", IWMMXT, FK_NONE, true, ARM::AEK_NONE)
diff --git a/linux-x64/clang/include/llvm/Support/ARMTargetParser.h b/linux-x64/clang/include/llvm/Support/ARMTargetParser.h
new file mode 100644
index 0000000..edd47ef
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Support/ARMTargetParser.h
@@ -0,0 +1,263 @@
+//===-- ARMTargetParser - Parser for ARM target features --------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements a target parser to recognise ARM hardware features
+// such as FPU/CPU/ARCH/extensions and specific support such as HWDIV.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_SUPPORT_ARMTARGETPARSER_H
+#define LLVM_SUPPORT_ARMTARGETPARSER_H
+
+#include "llvm/ADT/StringRef.h"
+#include "llvm/ADT/Triple.h"
+#include "llvm/Support/ARMBuildAttributes.h"
+#include <vector>
+
+namespace llvm {
+namespace ARM {
+
+// Arch extension modifiers for CPUs.
+// Note that this is not the same as the AArch64 list
+enum ArchExtKind : unsigned {
+ AEK_INVALID = 0,
+ AEK_NONE = 1,
+ AEK_CRC = 1 << 1,
+ AEK_CRYPTO = 1 << 2,
+ AEK_FP = 1 << 3,
+ AEK_HWDIVTHUMB = 1 << 4,
+ AEK_HWDIVARM = 1 << 5,
+ AEK_MP = 1 << 6,
+ AEK_SIMD = 1 << 7,
+ AEK_SEC = 1 << 8,
+ AEK_VIRT = 1 << 9,
+ AEK_DSP = 1 << 10,
+ AEK_FP16 = 1 << 11,
+ AEK_RAS = 1 << 12,
+ AEK_SVE = 1 << 13,
+ AEK_DOTPROD = 1 << 14,
+ AEK_SHA2 = 1 << 15,
+ AEK_AES = 1 << 16,
+ AEK_FP16FML = 1 << 17,
+ AEK_SB = 1 << 18,
+ // Unsupported extensions.
+ AEK_OS = 0x8000000,
+ AEK_IWMMXT = 0x10000000,
+ AEK_IWMMXT2 = 0x20000000,
+ AEK_MAVERICK = 0x40000000,
+ AEK_XSCALE = 0x80000000,
+};
+
+// List of Arch Extension names.
+// FIXME: TableGen this.
+struct ExtName {
+ const char *NameCStr;
+ size_t NameLength;
+ unsigned ID;
+ const char *Feature;
+ const char *NegFeature;
+
+ StringRef getName() const { return StringRef(NameCStr, NameLength); }
+};
+
+const ExtName ARCHExtNames[] = {
+#define ARM_ARCH_EXT_NAME(NAME, ID, FEATURE, NEGFEATURE) \
+ {NAME, sizeof(NAME) - 1, ID, FEATURE, NEGFEATURE},
+#include "ARMTargetParser.def"
+};
+
+// List of HWDiv names (use getHWDivSynonym) and which architectural
+// features they correspond to (use getHWDivFeatures).
+// FIXME: TableGen this.
+const struct {
+ const char *NameCStr;
+ size_t NameLength;
+ unsigned ID;
+
+ StringRef getName() const { return StringRef(NameCStr, NameLength); }
+} HWDivNames[] = {
+#define ARM_HW_DIV_NAME(NAME, ID) {NAME, sizeof(NAME) - 1, ID},
+#include "ARMTargetParser.def"
+};
+
+// Arch names.
+enum class ArchKind {
+#define ARM_ARCH(NAME, ID, CPU_ATTR, SUB_ARCH, ARCH_ATTR, ARCH_FPU, ARCH_BASE_EXT) ID,
+#include "ARMTargetParser.def"
+};
+
+// List of CPU names and their arches.
+// The same CPU can have multiple arches and can be default on multiple arches.
+// When finding the Arch for a CPU, first-found prevails. Sort them accordingly.
+// When this becomes table-generated, we'd probably need two tables.
+// FIXME: TableGen this.
+template <typename T> struct CpuNames {
+ const char *NameCStr;
+ size_t NameLength;
+ T ArchID;
+ bool Default; // is $Name the default CPU for $ArchID ?
+ unsigned DefaultExtensions;
+
+ StringRef getName() const { return StringRef(NameCStr, NameLength); }
+};
+
+const CpuNames<ArchKind> CPUNames[] = {
+#define ARM_CPU_NAME(NAME, ID, DEFAULT_FPU, IS_DEFAULT, DEFAULT_EXT) \
+ {NAME, sizeof(NAME) - 1, ARM::ArchKind::ID, IS_DEFAULT, DEFAULT_EXT},
+#include "ARMTargetParser.def"
+};
+
+// FPU names.
+enum FPUKind {
+#define ARM_FPU(NAME, KIND, VERSION, NEON_SUPPORT, RESTRICTION) KIND,
+#include "ARMTargetParser.def"
+ FK_LAST
+};
+
+// FPU Version
+enum class FPUVersion {
+ NONE,
+ VFPV2,
+ VFPV3,
+ VFPV3_FP16,
+ VFPV4,
+ VFPV5
+};
+
+// An FPU name restricts the FPU in one of three ways:
+enum class FPURestriction {
+ None = 0, ///< No restriction
+ D16, ///< Only 16 D registers
+ SP_D16 ///< Only single-precision instructions, with 16 D registers
+};
+
+// An FPU name implies one of three levels of Neon support:
+enum class NeonSupportLevel {
+ None = 0, ///< No Neon
+ Neon, ///< Neon
+ Crypto ///< Neon with Crypto
+};
+
+// ISA kinds.
+enum class ISAKind { INVALID = 0, ARM, THUMB, AARCH64 };
+
+// Endianness
+// FIXME: BE8 vs. BE32?
+enum class EndianKind { INVALID = 0, LITTLE, BIG };
+
+// v6/v7/v8 Profile
+enum class ProfileKind { INVALID = 0, A, R, M };
+
+// List of canonical FPU names (use getFPUSynonym) and which architectural
+// features they correspond to (use getFPUFeatures).
+// FIXME: TableGen this.
+// The entries must appear in the order listed in ARM::FPUKind for correct
+// indexing
+struct FPUName {
+ const char *NameCStr;
+ size_t NameLength;
+ FPUKind ID;
+ FPUVersion FPUVer;
+ NeonSupportLevel NeonSupport;
+ FPURestriction Restriction;
+
+ StringRef getName() const { return StringRef(NameCStr, NameLength); }
+};
+
+static const FPUName FPUNames[] = {
+#define ARM_FPU(NAME, KIND, VERSION, NEON_SUPPORT, RESTRICTION) \
+ {NAME, sizeof(NAME) - 1, KIND, VERSION, NEON_SUPPORT, RESTRICTION},
+#include "llvm/Support/ARMTargetParser.def"
+};
+
+// List of canonical arch names (use getArchSynonym).
+// This table also provides the build attribute fields for CPU arch
+// and Arch ID, according to the Addenda to the ARM ABI, chapters
+// 2.4 and 2.3.5.2 respectively.
+// FIXME: SubArch values were simplified to fit into the expectations
+// of the triples and are not conforming with their official names.
+// Check to see if the expectation should be changed.
+// FIXME: TableGen this.
+template <typename T> struct ArchNames {
+ const char *NameCStr;
+ size_t NameLength;
+ const char *CPUAttrCStr;
+ size_t CPUAttrLength;
+ const char *SubArchCStr;
+ size_t SubArchLength;
+ unsigned DefaultFPU;
+ unsigned ArchBaseExtensions;
+ T ID;
+ ARMBuildAttrs::CPUArch ArchAttr; // Arch ID in build attributes.
+
+ StringRef getName() const { return StringRef(NameCStr, NameLength); }
+
+ // CPU class in build attributes.
+ StringRef getCPUAttr() const { return StringRef(CPUAttrCStr, CPUAttrLength); }
+
+ // Sub-Arch name.
+ StringRef getSubArch() const { return StringRef(SubArchCStr, SubArchLength); }
+};
+
+static const ArchNames<ArchKind> ARCHNames[] = {
+#define ARM_ARCH(NAME, ID, CPU_ATTR, SUB_ARCH, ARCH_ATTR, ARCH_FPU, \
+ ARCH_BASE_EXT) \
+ {NAME, sizeof(NAME) - 1, \
+ CPU_ATTR, sizeof(CPU_ATTR) - 1, \
+ SUB_ARCH, sizeof(SUB_ARCH) - 1, \
+ ARCH_FPU, ARCH_BASE_EXT, \
+ ArchKind::ID, ARCH_ATTR},
+#include "llvm/Support/ARMTargetParser.def"
+};
+
+// Information by ID
+StringRef getFPUName(unsigned FPUKind);
+FPUVersion getFPUVersion(unsigned FPUKind);
+NeonSupportLevel getFPUNeonSupportLevel(unsigned FPUKind);
+FPURestriction getFPURestriction(unsigned FPUKind);
+
+// FIXME: These should be moved to TargetTuple once it exists
+bool getFPUFeatures(unsigned FPUKind, std::vector<StringRef> &Features);
+bool getHWDivFeatures(unsigned HWDivKind, std::vector<StringRef> &Features);
+bool getExtensionFeatures(unsigned Extensions,
+ std::vector<StringRef> &Features);
+
+StringRef getArchName(ArchKind AK);
+unsigned getArchAttr(ArchKind AK);
+StringRef getCPUAttr(ArchKind AK);
+StringRef getSubArch(ArchKind AK);
+StringRef getArchExtName(unsigned ArchExtKind);
+StringRef getArchExtFeature(StringRef ArchExt);
+StringRef getHWDivName(unsigned HWDivKind);
+
+// Information by Name
+unsigned getDefaultFPU(StringRef CPU, ArchKind AK);
+unsigned getDefaultExtensions(StringRef CPU, ArchKind AK);
+StringRef getDefaultCPU(StringRef Arch);
+StringRef getCanonicalArchName(StringRef Arch);
+StringRef getFPUSynonym(StringRef FPU);
+StringRef getArchSynonym(StringRef Arch);
+
+// Parser
+unsigned parseHWDiv(StringRef HWDiv);
+unsigned parseFPU(StringRef FPU);
+ArchKind parseArch(StringRef Arch);
+unsigned parseArchExt(StringRef ArchExt);
+ArchKind parseCPUArch(StringRef CPU);
+ISAKind parseArchISA(StringRef Arch);
+EndianKind parseArchEndian(StringRef Arch);
+ProfileKind parseArchProfile(StringRef Arch);
+unsigned parseArchVersion(StringRef Arch);
+
+void fillValidCPUArchList(SmallVectorImpl<StringRef> &Values);
+StringRef computeDefaultTargetABI(const Triple &TT, StringRef CPU);
+
+} // namespace ARM
+} // namespace llvm
+
+#endif
diff --git a/linux-x64/clang/include/llvm/Support/ARMWinEH.h b/linux-x64/clang/include/llvm/Support/ARMWinEH.h
index 1463629..b1b821b 100644
--- a/linux-x64/clang/include/llvm/Support/ARMWinEH.h
+++ b/linux-x64/clang/include/llvm/Support/ARMWinEH.h
@@ -1,9 +1,8 @@
-//===-- llvm/Support/WinARMEH.h - Windows on ARM EH Constants ---*- C++ -*-===//
+//===-- llvm/Support/ARMWinEH.h - Windows on ARM EH Constants ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -207,6 +206,8 @@
/// ExceptionDataRecord - An entry in the table of exception data (.xdata)
///
+/// The format on ARM is:
+///
/// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
/// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
/// +-------+---------+-+-+-+---+-----------------------------------+
@@ -215,6 +216,16 @@
/// | Reserved |Ex. Code Words| (Extended Epilogue Count) |
/// +-------+--------+--------------+-------------------------------+
///
+/// The format on ARM64 is:
+///
+/// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
+/// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+/// +---------+---------+-+-+---+-----------------------------------+
+/// | C Wrd | Epi Cnt |E|X|Ver| Function Length |
+/// +---------+------+--'-'-'---'---+-------------------------------+
+/// | Reserved |Ex. Code Words| (Extended Epilogue Count) |
+/// +-------+--------+--------------+-------------------------------+
+///
/// Function Length : 18-bit field indicating the total length of the function
/// in bytes divided by 2. If a function is larger than
/// 512KB, then multiple pdata and xdata records must be used.
@@ -225,7 +236,7 @@
/// header
/// F : 1-bit field indicating that the record describes a function fragment
/// (implies that no prologue is present, and prologue processing should be
-/// skipped)
+/// skipped) (ARM only)
/// Epilogue Count : 5-bit field that differs in meaning based on the E field.
///
/// If E is set, then this field specifies the index of the
@@ -235,33 +246,43 @@
/// scopes. If more than 31 scopes exist, then this field and
/// the Code Words field must both be set to 0 to indicate that
/// an extension word is required.
-/// Code Words : 4-bit field that species the number of 32-bit words needed to
-/// contain all the unwind codes. If more than 15 words (63 code
-/// bytes) are required, then this field and the Epilogue Count
-/// field must both be set to 0 to indicate that an extension word
-/// is required.
+/// Code Words : 4-bit (5-bit on ARM64) field that specifies the number of
+/// 32-bit words needed to contain all the unwind codes. If more
+/// than 15 words (31 words on ARM64) are required, then this field
+/// and the Epilogue Count field must both be set to 0 to indicate
+/// that an extension word is required.
/// Extended Epilogue Count, Extended Code Words :
/// Valid only if Epilog Count and Code Words are both
/// set to 0. Provides an 8-bit extended code word
/// count and 16-bits for epilogue count
///
+/// The epilogue scope format on ARM is:
+///
/// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
/// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
/// +----------------+------+---+---+-------------------------------+
/// | Ep Start Idx | Cond |Res| Epilogue Start Offset |
/// +----------------+------+---+-----------------------------------+
///
+/// The epilogue scope format on ARM64 is:
+///
+/// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
+/// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+/// +-------------------+-------+---+-------------------------------+
+/// | Ep Start Idx | Res | Epilogue Start Offset |
+/// +-------------------+-------+-----------------------------------+
+///
/// If the E bit is unset in the header, the header is followed by a series of
/// epilogue scopes, which are sorted by their offset.
///
/// Epilogue Start Offset: 18-bit field encoding the offset of epilogue relative
/// to the start of the function in bytes divided by two
/// Res : 2-bit field reserved for future expansion (must be set to 0)
-/// Condition : 4-bit field providing the condition under which the epilogue is
-/// executed. Unconditional epilogues should set this field to 0xe.
-/// Epilogues must be entirely conditional or unconditional, and in
-/// Thumb-2 mode. The epilogue beings with the first instruction
-/// after the IT opcode.
+/// Condition : (ARM only) 4-bit field providing the condition under which the
+/// epilogue is executed. Unconditional epilogues should set this
+/// field to 0xe. Epilogues must be entirely conditional or
+/// unconditional, and in Thumb-2 mode. The epilogue begins with
+/// the first instruction after the IT opcode.
/// Epilogue Start Index : 8-bit field indicating the byte index of the first
/// unwind code describing the epilogue
///
@@ -293,18 +314,33 @@
const support::ulittle32_t ES;
EpilogueScope(const support::ulittle32_t Data) : ES(Data) {}
+ // Same for both ARM and AArch64.
uint32_t EpilogueStartOffset() const {
return (ES & 0x0003ffff);
}
- uint8_t Res() const {
+
+ // Different implementations for ARM and AArch64.
+ uint8_t ResARM() const {
return ((ES & 0x000c0000) >> 18);
}
+
+ uint8_t ResAArch64() const {
+ return ((ES & 0x000f0000) >> 18);
+ }
+
+ // Condition is only applicable to ARM.
uint8_t Condition() const {
return ((ES & 0x00f00000) >> 20);
}
- uint8_t EpilogueStartIndex() const {
+
+ // Different implementations for ARM and AArch64.
+ uint8_t EpilogueStartIndexARM() const {
return ((ES & 0xff000000) >> 24);
}
+
+ uint16_t EpilogueStartIndexAArch64() const {
+ return ((ES & 0xffc00000) >> 22);
+ }
};
struct ExceptionDataRecord;
@@ -312,13 +348,23 @@
struct ExceptionDataRecord {
const support::ulittle32_t *Data;
+ bool isAArch64;
- ExceptionDataRecord(const support::ulittle32_t *Data) : Data(Data) {}
+ ExceptionDataRecord(const support::ulittle32_t *Data, bool isAArch64) :
+ Data(Data), isAArch64(isAArch64) {}
uint32_t FunctionLength() const {
return (Data[0] & 0x0003ffff);
}
+ uint32_t FunctionLengthInBytesARM() const {
+ return FunctionLength() << 1;
+ }
+
+ uint32_t FunctionLengthInBytesAArch64() const {
+ return FunctionLength() << 2;
+ }
+
uint8_t Vers() const {
return (Data[0] & 0x000C0000) >> 18;
}
@@ -332,18 +378,25 @@
}
bool F() const {
+ assert(!isAArch64 && "Fragments are only supported on ARMv7 WinEH");
return ((Data[0] & 0x00400000) >> 22);
}
uint8_t EpilogueCount() const {
- if (HeaderWords(*this) == 1)
+ if (HeaderWords(*this) == 1) {
+ if (isAArch64)
+ return (Data[0] & 0x07C00000) >> 22;
return (Data[0] & 0x0f800000) >> 23;
+ }
return Data[1] & 0x0000ffff;
}
uint8_t CodeWords() const {
- if (HeaderWords(*this) == 1)
+ if (HeaderWords(*this) == 1) {
+ if (isAArch64)
+ return (Data[0] & 0xf8000000) >> 27;
return (Data[0] & 0xf0000000) >> 28;
+ }
return (Data[1] & 0x00ff0000) >> 16;
}
@@ -373,6 +426,8 @@
};
inline size_t HeaderWords(const ExceptionDataRecord &XR) {
+ if (XR.isAArch64)
+ return (XR.Data[0] & 0xffc00000) ? 1 : 2;
return (XR.Data[0] & 0xff800000) ? 1 : 2;
}
}
diff --git a/linux-x64/clang/include/llvm/Support/AlignOf.h b/linux-x64/clang/include/llvm/Support/AlignOf.h
index 9e7a62b..d12401f 100644
--- a/linux-x64/clang/include/llvm/Support/AlignOf.h
+++ b/linux-x64/clang/include/llvm/Support/AlignOf.h
@@ -1,9 +1,8 @@
//===--- AlignOf.h - Portable calculation of type alignment -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Allocator.h b/linux-x64/clang/include/llvm/Support/Allocator.h
index b1b3518..09e967b 100644
--- a/linux-x64/clang/include/llvm/Support/Allocator.h
+++ b/linux-x64/clang/include/llvm/Support/Allocator.h
@@ -1,9 +1,8 @@
//===- Allocator.h - Simple memory allocation abstraction -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -311,6 +310,33 @@
return None;
}
+ /// A wrapper around identifyObject that additionally asserts that
+ /// the object is indeed within the allocator.
+ /// \return An index uniquely and reproducibly identifying
+ /// an input pointer \p Ptr in the given allocator.
+ int64_t identifyKnownObject(const void *Ptr) {
+ Optional<int64_t> Out = identifyObject(Ptr);
+ assert(Out && "Wrong allocator used");
+ return *Out;
+ }
+
+ /// A wrapper around identifyKnownObject. Accepts type information
+ /// about the object and produces a smaller identifier by relying on
+ /// the alignment information. Note that sub-classes may have different
+ /// alignment, so the most base class should be passed as template parameter
+ /// in order to obtain correct results. For that reason automatic template
+ /// parameter deduction is disabled.
+ /// \return An index uniquely and reproducibly identifying
+ /// an input pointer \p Ptr in the given allocator. This identifier is
+ /// different from the ones produced by identifyObject and
+ /// identifyAlignedObject.
+ template <typename T>
+ int64_t identifyKnownAlignedObject(const void *Ptr) {
+ int64_t Out = identifyKnownObject(Ptr);
+ assert(Out % alignof(T) == 0 && "Wrong alignment information");
+ return Out / alignof(T);
+ }
+
size_t getTotalMemory() const {
size_t TotalMemory = 0;
for (auto I = Slabs.begin(), E = Slabs.end(); I != E; ++I)
diff --git a/linux-x64/clang/include/llvm/Support/ArrayRecycler.h b/linux-x64/clang/include/llvm/Support/ArrayRecycler.h
index 68696be..5256ce8 100644
--- a/linux-x64/clang/include/llvm/Support/ArrayRecycler.h
+++ b/linux-x64/clang/include/llvm/Support/ArrayRecycler.h
@@ -1,9 +1,8 @@
//==- llvm/Support/ArrayRecycler.h - Recycling of Arrays ---------*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Atomic.h b/linux-x64/clang/include/llvm/Support/Atomic.h
index 552313f..a8445fd 100644
--- a/linux-x64/clang/include/llvm/Support/Atomic.h
+++ b/linux-x64/clang/include/llvm/Support/Atomic.h
@@ -1,9 +1,8 @@
//===- llvm/Support/Atomic.h - Atomic Operations -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/AtomicOrdering.h b/linux-x64/clang/include/llvm/Support/AtomicOrdering.h
index a679ab3..763bc3e 100644
--- a/linux-x64/clang/include/llvm/Support/AtomicOrdering.h
+++ b/linux-x64/clang/include/llvm/Support/AtomicOrdering.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/AtomicOrdering.h ---Atomic Ordering---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/Support/BinaryByteStream.h b/linux-x64/clang/include/llvm/Support/BinaryByteStream.h
index 9808d3b..7acce9a 100644
--- a/linux-x64/clang/include/llvm/Support/BinaryByteStream.h
+++ b/linux-x64/clang/include/llvm/Support/BinaryByteStream.h
@@ -1,9 +1,8 @@
//===- BinaryByteStream.h ---------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//===----------------------------------------------------------------------===//
// A BinaryStream which stores data in a single continguous memory buffer.
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/BinaryItemStream.h b/linux-x64/clang/include/llvm/Support/BinaryItemStream.h
index 278723d..4cd66ad 100644
--- a/linux-x64/clang/include/llvm/Support/BinaryItemStream.h
+++ b/linux-x64/clang/include/llvm/Support/BinaryItemStream.h
@@ -1,9 +1,8 @@
//===- BinaryItemStream.h ---------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/BinaryStream.h b/linux-x64/clang/include/llvm/Support/BinaryStream.h
index 7677214..fcf4398 100644
--- a/linux-x64/clang/include/llvm/Support/BinaryStream.h
+++ b/linux-x64/clang/include/llvm/Support/BinaryStream.h
@@ -1,9 +1,8 @@
//===- BinaryStream.h - Base interface for a stream of data -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/BinaryStreamArray.h b/linux-x64/clang/include/llvm/Support/BinaryStreamArray.h
index d1571cb..96d09db 100644
--- a/linux-x64/clang/include/llvm/Support/BinaryStreamArray.h
+++ b/linux-x64/clang/include/llvm/Support/BinaryStreamArray.h
@@ -1,9 +1,8 @@
//===- BinaryStreamArray.h - Array backed by an arbitrary stream *- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -96,21 +95,32 @@
explicit VarStreamArray(const Extractor &E) : E(E) {}
- explicit VarStreamArray(BinaryStreamRef Stream) : Stream(Stream) {}
+ explicit VarStreamArray(BinaryStreamRef Stream, uint32_t Skew = 0)
+ : Stream(Stream), Skew(Skew) {}
- VarStreamArray(BinaryStreamRef Stream, const Extractor &E)
- : Stream(Stream), E(E) {}
+ VarStreamArray(BinaryStreamRef Stream, const Extractor &E, uint32_t Skew = 0)
+ : Stream(Stream), E(E), Skew(Skew) {}
Iterator begin(bool *HadError = nullptr) const {
- return Iterator(*this, E, HadError);
+ return Iterator(*this, E, Skew, nullptr);
}
bool valid() const { return Stream.valid(); }
+ uint32_t skew() const { return Skew; }
Iterator end() const { return Iterator(E); }
bool empty() const { return Stream.getLength() == 0; }
+ VarStreamArray<ValueType, Extractor> substream(uint32_t Begin,
+ uint32_t End) const {
+ assert(Begin >= Skew);
+ // We should never cut off the beginning of the stream since it might be
+ // skewed, meaning the initial bytes are important.
+ BinaryStreamRef NewStream = Stream.slice(0, End);
+ return {NewStream, E, Begin};
+ }
+
/// given an offset into the array's underlying stream, return an
/// iterator to the record at that offset. This is considered unsafe
/// since the behavior is undefined if \p Offset does not refer to the
@@ -123,11 +133,17 @@
Extractor &getExtractor() { return E; }
BinaryStreamRef getUnderlyingStream() const { return Stream; }
- void setUnderlyingStream(BinaryStreamRef S) { Stream = S; }
+ void setUnderlyingStream(BinaryStreamRef S, uint32_t Skew = 0) {
+ Stream = S;
+ this->Skew = Skew;
+ }
+
+ void drop_front() { Skew += begin()->length(); }
private:
BinaryStreamRef Stream;
Extractor E;
+ uint32_t Skew;
};
template <typename ValueType, typename Extractor>
@@ -139,10 +155,6 @@
public:
VarStreamArrayIterator(const ArrayType &Array, const Extractor &E,
- bool *HadError)
- : VarStreamArrayIterator(Array, E, 0, HadError) {}
-
- VarStreamArrayIterator(const ArrayType &Array, const Extractor &E,
uint32_t Offset, bool *HadError)
: IterRef(Array.Stream.drop_front(Offset)), Extract(E),
Array(&Array), AbsOffset(Offset), HadError(HadError) {
diff --git a/linux-x64/clang/include/llvm/Support/BinaryStreamError.h b/linux-x64/clang/include/llvm/Support/BinaryStreamError.h
index 7d9699d..cf6e034 100644
--- a/linux-x64/clang/include/llvm/Support/BinaryStreamError.h
+++ b/linux-x64/clang/include/llvm/Support/BinaryStreamError.h
@@ -1,9 +1,8 @@
//===- BinaryStreamError.h - Error extensions for Binary Streams *- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/BinaryStreamReader.h b/linux-x64/clang/include/llvm/Support/BinaryStreamReader.h
index fe77b55..32e5728 100644
--- a/linux-x64/clang/include/llvm/Support/BinaryStreamReader.h
+++ b/linux-x64/clang/include/llvm/Support/BinaryStreamReader.h
@@ -1,9 +1,8 @@
//===- BinaryStreamReader.h - Reads objects from a binary stream *- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -203,11 +202,12 @@
/// \returns a success error code if the data was successfully read, otherwise
/// returns an appropriate error code.
template <typename T, typename U>
- Error readArray(VarStreamArray<T, U> &Array, uint32_t Size) {
+ Error readArray(VarStreamArray<T, U> &Array, uint32_t Size,
+ uint32_t Skew = 0) {
BinaryStreamRef S;
if (auto EC = readStreamRef(S, Size))
return EC;
- Array.setUnderlyingStream(S);
+ Array.setUnderlyingStream(S, Skew);
return Error::success();
}
diff --git a/linux-x64/clang/include/llvm/Support/BinaryStreamRef.h b/linux-x64/clang/include/llvm/Support/BinaryStreamRef.h
index d8dc139..7427b8d 100644
--- a/linux-x64/clang/include/llvm/Support/BinaryStreamRef.h
+++ b/linux-x64/clang/include/llvm/Support/BinaryStreamRef.h
@@ -1,9 +1,8 @@
//===- BinaryStreamRef.h - A copyable reference to a stream -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/BinaryStreamWriter.h b/linux-x64/clang/include/llvm/Support/BinaryStreamWriter.h
index 6e8a68a..ae019c8 100644
--- a/linux-x64/clang/include/llvm/Support/BinaryStreamWriter.h
+++ b/linux-x64/clang/include/llvm/Support/BinaryStreamWriter.h
@@ -1,9 +1,8 @@
//===- BinaryStreamWriter.h - Writes objects to a BinaryStream ---*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/BlockFrequency.h b/linux-x64/clang/include/llvm/Support/BlockFrequency.h
index 4b468f7..18fb60e 100644
--- a/linux-x64/clang/include/llvm/Support/BlockFrequency.h
+++ b/linux-x64/clang/include/llvm/Support/BlockFrequency.h
@@ -1,9 +1,8 @@
//===-------- BlockFrequency.h - Block Frequency Wrapper --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/BranchProbability.h b/linux-x64/clang/include/llvm/Support/BranchProbability.h
index 3a88e71..dd0aba0 100644
--- a/linux-x64/clang/include/llvm/Support/BranchProbability.h
+++ b/linux-x64/clang/include/llvm/Support/BranchProbability.h
@@ -1,9 +1,8 @@
//===- BranchProbability.h - Branch Probability Wrapper ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/BuryPointer.h b/linux-x64/clang/include/llvm/Support/BuryPointer.h
new file mode 100644
index 0000000..276a5b7
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Support/BuryPointer.h
@@ -0,0 +1,29 @@
+//===- llvm/Support/BuryPointer.h - Memory Manipulation/Leak ----*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_SUPPORT_BURYPOINTER_H
+#define LLVM_SUPPORT_BURYPOINTER_H
+
+#include <memory>
+
+namespace llvm {
+
+// In tools that will exit soon anyway, going through the process of explicitly
+// deallocating resources can be unnecessary - better to leak the resources and
+// let the OS clean them up when the process ends. Use this function to ensure
+// the memory is not misdiagnosed as an unintentional leak by leak detection
+// tools (this is achieved by preserving pointers to the object in a globally
+// visible array).
+void BuryPointer(const void *Ptr);
+template <typename T> void BuryPointer(std::unique_ptr<T> Ptr) {
+ BuryPointer(Ptr.release());
+}
+
+} // namespace llvm
+
+#endif
diff --git a/linux-x64/clang/include/llvm/Support/CBindingWrapping.h b/linux-x64/clang/include/llvm/Support/CBindingWrapping.h
index f60f99d..46d6b4e 100644
--- a/linux-x64/clang/include/llvm/Support/CBindingWrapping.h
+++ b/linux-x64/clang/include/llvm/Support/CBindingWrapping.h
@@ -1,9 +1,8 @@
-//===- llvm/Support/CBindingWrapph.h - C Interface Wrapping -----*- C++ -*-===//
+//===- llvm/Support/CBindingWrapping.h - C Interface Wrapping ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/CFGUpdate.h b/linux-x64/clang/include/llvm/Support/CFGUpdate.h
index 63c24a3..eeaf5d0 100644
--- a/linux-x64/clang/include/llvm/Support/CFGUpdate.h
+++ b/linux-x64/clang/include/llvm/Support/CFGUpdate.h
@@ -1,9 +1,8 @@
//===- CFGUpdate.h - Encode a CFG Edge Update. ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/COM.h b/linux-x64/clang/include/llvm/Support/COM.h
index a2d5a7a..d59966f 100644
--- a/linux-x64/clang/include/llvm/Support/COM.h
+++ b/linux-x64/clang/include/llvm/Support/COM.h
@@ -1,9 +1,8 @@
//===- llvm/Support/COM.h ---------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Support/CachePruning.h b/linux-x64/clang/include/llvm/Support/CachePruning.h
index cf3f8ec..a72a864 100644
--- a/linux-x64/clang/include/llvm/Support/CachePruning.h
+++ b/linux-x64/clang/include/llvm/Support/CachePruning.h
@@ -1,9 +1,8 @@
//=- CachePruning.h - Helper to manage the pruning of a cache dir -*- C++ -*-=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Capacity.h b/linux-x64/clang/include/llvm/Support/Capacity.h
index 7460f98..6b99e0a 100644
--- a/linux-x64/clang/include/llvm/Support/Capacity.h
+++ b/linux-x64/clang/include/llvm/Support/Capacity.h
@@ -1,9 +1,8 @@
//===--- Capacity.h - Generic computation of ADT memory use -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Casting.h b/linux-x64/clang/include/llvm/Support/Casting.h
index 3f21e0f..cddee36 100644
--- a/linux-x64/clang/include/llvm/Support/Casting.h
+++ b/linux-x64/clang/include/llvm/Support/Casting.h
@@ -1,9 +1,8 @@
//===- llvm/Support/Casting.h - Allow flexible, checked, casts --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/CheckedArithmetic.h b/linux-x64/clang/include/llvm/Support/CheckedArithmetic.h
index 039c374..8f7fbde 100644
--- a/linux-x64/clang/include/llvm/Support/CheckedArithmetic.h
+++ b/linux-x64/clang/include/llvm/Support/CheckedArithmetic.h
@@ -1,9 +1,8 @@
//==-- llvm/Support/CheckedArithmetic.h - Safe arithmetical operations *- C++ //
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Chrono.h b/linux-x64/clang/include/llvm/Support/Chrono.h
index 994068a..334ab60 100644
--- a/linux-x64/clang/include/llvm/Support/Chrono.h
+++ b/linux-x64/clang/include/llvm/Support/Chrono.h
@@ -1,9 +1,8 @@
//===- llvm/Support/Chrono.h - Utilities for Timing Manipulation-*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -34,19 +33,27 @@
using TimePoint = std::chrono::time_point<std::chrono::system_clock, D>;
/// Convert a TimePoint to std::time_t
-LLVM_ATTRIBUTE_ALWAYS_INLINE inline std::time_t toTimeT(TimePoint<> TP) {
+inline std::time_t toTimeT(TimePoint<> TP) {
using namespace std::chrono;
return system_clock::to_time_t(
time_point_cast<system_clock::time_point::duration>(TP));
}
/// Convert a std::time_t to a TimePoint
-LLVM_ATTRIBUTE_ALWAYS_INLINE inline TimePoint<std::chrono::seconds>
+inline TimePoint<std::chrono::seconds>
toTimePoint(std::time_t T) {
using namespace std::chrono;
return time_point_cast<seconds>(system_clock::from_time_t(T));
}
+/// Convert a std::time_t + nanoseconds to a TimePoint
+inline TimePoint<>
+toTimePoint(std::time_t T, uint32_t nsec) {
+ using namespace std::chrono;
+ return time_point_cast<nanoseconds>(system_clock::from_time_t(T))
+ + nanoseconds(nsec);
+}
+
} // namespace sys
raw_ostream &operator<<(raw_ostream &OS, sys::TimePoint<> TP);
diff --git a/linux-x64/clang/include/llvm/Support/CodeGen.h b/linux-x64/clang/include/llvm/Support/CodeGen.h
index ce3a623..3175b29 100644
--- a/linux-x64/clang/include/llvm/Support/CodeGen.h
+++ b/linux-x64/clang/include/llvm/Support/CodeGen.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/CodeGen.h - CodeGen Concepts ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -50,13 +49,18 @@
// Code generation optimization level.
namespace CodeGenOpt {
enum Level {
- None, // -O0
- Less, // -O1
- Default, // -O2, -Os
- Aggressive // -O3
+ None = 0, // -O0
+ Less = 1, // -O1
+ Default = 2, // -O2, -Os
+ Aggressive = 3 // -O3
};
}
+ // Specify effect of frame pointer elimination optimization.
+ namespace FramePointer {
+ enum FP {All, NonLeaf, None};
+ }
+
} // end llvm namespace
#endif
diff --git a/linux-x64/clang/include/llvm/Support/CodeGenCoverage.h b/linux-x64/clang/include/llvm/Support/CodeGenCoverage.h
index c863be3..0b1af77 100644
--- a/linux-x64/clang/include/llvm/Support/CodeGenCoverage.h
+++ b/linux-x64/clang/include/llvm/Support/CodeGenCoverage.h
@@ -1,9 +1,8 @@
//== llvm/Support/CodeGenCoverage.h ------------------------------*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file This file provides rule coverage tracking for tablegen-erated CodeGen.
diff --git a/linux-x64/clang/include/llvm/Support/CommandLine.h b/linux-x64/clang/include/llvm/Support/CommandLine.h
index 799b41f..a78020f 100644
--- a/linux-x64/clang/include/llvm/Support/CommandLine.h
+++ b/linux-x64/clang/include/llvm/Support/CommandLine.h
@@ -1,9 +1,8 @@
//===- llvm/Support/CommandLine.h - Command line handler --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -56,9 +55,18 @@
// Returns true on success. Otherwise, this will print the error message to
// stderr and exit if \p Errs is not set (nullptr by default), or print the
// error message to \p Errs and return false if \p Errs is provided.
+//
+// If EnvVar is not nullptr, command-line options are also parsed from the
+// environment variable named by EnvVar. Precedence is given to occurrences
+// from argv. This precedence is currently implemented by parsing argv after
+// the environment variable, so it is only implemented correctly for options
+// that give precedence to later occurrences. If your program supports options
+// that give precedence to earlier occurrences, you will need to extend this
+// function to support it correctly.
bool ParseCommandLineOptions(int argc, const char *const *argv,
StringRef Overview = "",
- raw_ostream *Errs = nullptr);
+ raw_ostream *Errs = nullptr,
+ const char *EnvVar = nullptr);
//===----------------------------------------------------------------------===//
// ParseEnvironmentOptions - Environment variable option processing alternate
@@ -147,6 +155,9 @@
// enabled, and used, the value for the flag comes from the suffix of the
// argument.
//
+// AlwaysPrefix - Only allow the behavior enabled by the Prefix flag and reject
+// the Option=Value form.
+//
// Grouping - With this option enabled, multiple letter options are allowed to
// bunch together with only a single hyphen for the whole group. This allows
// emulation of the behavior that ls uses for example: ls -la === ls -l -a
@@ -156,7 +167,8 @@
NormalFormatting = 0x00, // Nothing special
Positional = 0x01, // Is a positional argument, no '-' required
Prefix = 0x02, // Can this option directly prefix its value?
- Grouping = 0x03 // Can this option group with other options?
+ AlwaysPrefix = 0x03, // Can this option only directly prefix its value?
+ Grouping = 0x04 // Can this option group with other options?
};
enum MiscFlags { // Miscellaneous flags to adjust argument
@@ -256,7 +268,7 @@
// detail representing the non-value
unsigned Value : 2;
unsigned HiddenFlag : 2; // enum OptionHidden
- unsigned Formatting : 2; // enum FormattingFlags
+ unsigned Formatting : 3; // enum FormattingFlags
unsigned Misc : 3;
unsigned Position = 0; // Position of last occurrence of the option
unsigned AdditionalVals = 0; // Greater than 0 for multi-valued option.
diff --git a/linux-x64/clang/include/llvm/Support/Compiler.h b/linux-x64/clang/include/llvm/Support/Compiler.h
index 14e4d6e..a81488a 100644
--- a/linux-x64/clang/include/llvm/Support/Compiler.h
+++ b/linux-x64/clang/include/llvm/Support/Compiler.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/Compiler.h - Compiler abstraction support --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Compression.h b/linux-x64/clang/include/llvm/Support/Compression.h
index f7258f4..5bc0e56 100644
--- a/linux-x64/clang/include/llvm/Support/Compression.h
+++ b/linux-x64/clang/include/llvm/Support/Compression.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/Compression.h ---Compression----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/ConvertUTF.h b/linux-x64/clang/include/llvm/Support/ConvertUTF.h
index 6ae56c2..1add185 100644
--- a/linux-x64/clang/include/llvm/Support/ConvertUTF.h
+++ b/linux-x64/clang/include/llvm/Support/ConvertUTF.h
@@ -1,9 +1,8 @@
/*===--- ConvertUTF.h - Universal Character Names conversions ---------------===
*
- * The LLVM Compiler Infrastructure
- *
- * This file is distributed under the University of Illinois Open Source
- * License. See LICENSE.TXT for details.
+ * 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
*
*==------------------------------------------------------------------------==*/
/*
diff --git a/linux-x64/clang/include/llvm/Support/CrashRecoveryContext.h b/linux-x64/clang/include/llvm/Support/CrashRecoveryContext.h
index 7b3fd4f..feb449e 100644
--- a/linux-x64/clang/include/llvm/Support/CrashRecoveryContext.h
+++ b/linux-x64/clang/include/llvm/Support/CrashRecoveryContext.h
@@ -1,9 +1,8 @@
//===--- CrashRecoveryContext.h - Crash Recovery ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/DJB.h b/linux-x64/clang/include/llvm/Support/DJB.h
index e031114..8a04a32 100644
--- a/linux-x64/clang/include/llvm/Support/DJB.h
+++ b/linux-x64/clang/include/llvm/Support/DJB.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/DJB.h ---DJB Hash --------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/DOTGraphTraits.h b/linux-x64/clang/include/llvm/Support/DOTGraphTraits.h
index 4381b5b..ec01b7d 100644
--- a/linux-x64/clang/include/llvm/Support/DOTGraphTraits.h
+++ b/linux-x64/clang/include/llvm/Support/DOTGraphTraits.h
@@ -1,9 +1,8 @@
-//===-- llvm/Support/DotGraphTraits.h - Customize .dot output ---*- C++ -*-===//
+//===-- llvm/Support/DOTGraphTraits.h - Customize .dot output ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/DataExtractor.h b/linux-x64/clang/include/llvm/Support/DataExtractor.h
index 2b16398..6b08a2a 100644
--- a/linux-x64/clang/include/llvm/Support/DataExtractor.h
+++ b/linux-x64/clang/include/llvm/Support/DataExtractor.h
@@ -1,9 +1,8 @@
//===-- DataExtractor.h -----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/DataTypes.h b/linux-x64/clang/include/llvm/Support/DataTypes.h
index ad60a5b..a3fcc82 100644
--- a/linux-x64/clang/include/llvm/Support/DataTypes.h
+++ b/linux-x64/clang/include/llvm/Support/DataTypes.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/DataTypes.h - Define fixed size types ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Debug.h b/linux-x64/clang/include/llvm/Support/Debug.h
index df86dbb..64b7309 100644
--- a/linux-x64/clang/include/llvm/Support/Debug.h
+++ b/linux-x64/clang/include/llvm/Support/Debug.h
@@ -1,9 +1,8 @@
//===- llvm/Support/Debug.h - Easy way to add debug output ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/DebugCounter.h b/linux-x64/clang/include/llvm/Support/DebugCounter.h
index 83bd5a0..e7d1fa6 100644
--- a/linux-x64/clang/include/llvm/Support/DebugCounter.h
+++ b/linux-x64/clang/include/llvm/Support/DebugCounter.h
@@ -1,9 +1,8 @@
//===- llvm/Support/DebugCounter.h - Debug counter support ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -55,6 +54,8 @@
class DebugCounter {
public:
+ ~DebugCounter();
+
/// Returns a reference to the singleton instance.
static DebugCounter &instance();
diff --git a/linux-x64/clang/include/llvm/Support/DynamicLibrary.h b/linux-x64/clang/include/llvm/Support/DynamicLibrary.h
index 9563b48..95d5ba2 100644
--- a/linux-x64/clang/include/llvm/Support/DynamicLibrary.h
+++ b/linux-x64/clang/include/llvm/Support/DynamicLibrary.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/DynamicLibrary.h - Portable Dynamic Library -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Endian.h b/linux-x64/clang/include/llvm/Support/Endian.h
index a4d3f4f..a0632bb 100644
--- a/linux-x64/clang/include/llvm/Support/Endian.h
+++ b/linux-x64/clang/include/llvm/Support/Endian.h
@@ -1,9 +1,8 @@
//===- Endian.h - Utilities for IO with endian specific data ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/EndianStream.h b/linux-x64/clang/include/llvm/Support/EndianStream.h
index 9742e25..8789803 100644
--- a/linux-x64/clang/include/llvm/Support/EndianStream.h
+++ b/linux-x64/clang/include/llvm/Support/EndianStream.h
@@ -1,9 +1,8 @@
//===- EndianStream.h - Stream ops with endian specific data ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Errc.h b/linux-x64/clang/include/llvm/Support/Errc.h
index dce4278..9be8e57 100644
--- a/linux-x64/clang/include/llvm/Support/Errc.h
+++ b/linux-x64/clang/include/llvm/Support/Errc.h
@@ -1,9 +1,8 @@
//===- llvm/Support/Errc.h - Defines the llvm::errc enum --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Errno.h b/linux-x64/clang/include/llvm/Support/Errno.h
index 8069c36..aedb5fb 100644
--- a/linux-x64/clang/include/llvm/Support/Errno.h
+++ b/linux-x64/clang/include/llvm/Support/Errno.h
@@ -1,9 +1,8 @@
//===- llvm/Support/Errno.h - Portable+convenient errno handling -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Error.h b/linux-x64/clang/include/llvm/Support/Error.h
index 4e16190..23a48ed 100644
--- a/linux-x64/clang/include/llvm/Support/Error.h
+++ b/linux-x64/clang/include/llvm/Support/Error.h
@@ -1,9 +1,8 @@
//===- llvm/Support/Error.h - Recoverable error handling --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -953,10 +952,14 @@
/// will be printed before the first one is logged. A newline will be printed
/// after each error.
///
+/// This function is compatible with the helpers from Support/WithColor.h. You
+/// can pass any of them as the OS. Please consider using them instead of
+/// including 'error: ' in the ErrorBanner.
+///
/// This is useful in the base level of your program to allow clean termination
/// (allowing clean deallocation of resources, etc.), while reporting error
/// information to the user.
-void logAllUnhandledErrors(Error E, raw_ostream &OS, Twine ErrorBanner);
+void logAllUnhandledErrors(Error E, raw_ostream &OS, Twine ErrorBanner = {});
/// Write all error messages (if any) in E to a string. The newline character
/// is used to separate error messages.
@@ -1062,6 +1065,8 @@
class ECError : public ErrorInfo<ECError> {
friend Error errorCodeToError(std::error_code);
+ virtual void anchor() override;
+
public:
void setErrorCode(std::error_code EC) { this->EC = EC; }
std::error_code convertToErrorCode() const override { return EC; }
@@ -1171,7 +1176,7 @@
/// show more detailed information to the user.
class FileError final : public ErrorInfo<FileError> {
- friend Error createFileError(std::string, Error);
+ friend Error createFileError(const Twine &, Error);
public:
void log(raw_ostream &OS) const override {
@@ -1188,15 +1193,15 @@
static char ID;
private:
- FileError(std::string F, std::unique_ptr<ErrorInfoBase> E) {
+ FileError(const Twine &F, std::unique_ptr<ErrorInfoBase> E) {
assert(E && "Cannot create FileError from Error success value.");
- assert(!F.empty() &&
+ assert(!F.isTriviallyEmpty() &&
"The file name provided to FileError must not be empty.");
- FileName = F;
+ FileName = F.str();
Err = std::move(E);
}
- static Error build(std::string F, Error E) {
+ static Error build(const Twine &F, Error E) {
return Error(std::unique_ptr<FileError>(new FileError(F, E.takePayload())));
}
@@ -1206,11 +1211,17 @@
/// Concatenate a source file path and/or name with an Error. The resulting
/// Error is unchecked.
-inline Error createFileError(std::string F, Error E) {
+inline Error createFileError(const Twine &F, Error E) {
return FileError::build(F, std::move(E));
}
-Error createFileError(std::string F, ErrorSuccess) = delete;
+/// Concatenate a source file path and/or name with a std::error_code
+/// to form an Error object.
+inline Error createFileError(const Twine &F, std::error_code EC) {
+ return createFileError(F, errorCodeToError(EC));
+}
+
+Error createFileError(const Twine &F, ErrorSuccess) = delete;
/// Helper for check-and-exit error handling.
///
diff --git a/linux-x64/clang/include/llvm/Support/ErrorHandling.h b/linux-x64/clang/include/llvm/Support/ErrorHandling.h
index 39cbfed..f75c298 100644
--- a/linux-x64/clang/include/llvm/Support/ErrorHandling.h
+++ b/linux-x64/clang/include/llvm/Support/ErrorHandling.h
@@ -1,9 +1,8 @@
//===- llvm/Support/ErrorHandling.h - Fatal error handling ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -112,8 +111,8 @@
/// in the unwind chain.
///
/// If no error handler is installed (default), then a bad_alloc exception
-/// is thrown, if LLVM is compiled with exception support, otherwise an assertion
-/// is called.
+/// is thrown, if LLVM is compiled with exception support, otherwise an
+/// assertion is called.
void report_bad_alloc_error(const char *Reason, bool GenCrashDiag = true);
/// This function calls abort(), and prints the optional message to stderr.
diff --git a/linux-x64/clang/include/llvm/Support/ErrorOr.h b/linux-x64/clang/include/llvm/Support/ErrorOr.h
index e6ce764..8211f4d 100644
--- a/linux-x64/clang/include/llvm/Support/ErrorOr.h
+++ b/linux-x64/clang/include/llvm/Support/ErrorOr.h
@@ -1,9 +1,8 @@
//===- llvm/Support/ErrorOr.h - Error Smart Pointer -------------*- C++ -*-===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/Support/FileCheck.h b/linux-x64/clang/include/llvm/Support/FileCheck.h
index de8d46b..01e9362 100644
--- a/linux-x64/clang/include/llvm/Support/FileCheck.h
+++ b/linux-x64/clang/include/llvm/Support/FileCheck.h
@@ -1,9 +1,8 @@
//==-- llvm/Support/FileCheck.h ---------------------------*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -43,7 +42,8 @@
//===----------------------------------------------------------------------===//
namespace Check {
-enum FileCheckType {
+
+enum FileCheckKind {
CheckNone = 0,
CheckPlain,
CheckNext,
@@ -58,10 +58,31 @@
CheckEOF,
/// Marks when parsing found a -NOT check combined with another CHECK suffix.
- CheckBadNot
+ CheckBadNot,
+
+ /// Marks when parsing found a -COUNT directive with invalid count value.
+ CheckBadCount
+};
+
+class FileCheckType {
+ FileCheckKind Kind;
+ int Count; ///< optional Count for some checks
+
+public:
+ FileCheckType(FileCheckKind Kind = CheckNone) : Kind(Kind), Count(1) {}
+ FileCheckType(const FileCheckType &) = default;
+
+ operator FileCheckKind() const { return Kind; }
+
+ int getCount() const { return Count; }
+ FileCheckType &setCount(int C);
+
+ std::string getDescription(StringRef Prefix) const;
};
}
+struct FileCheckDiag;
+
class FileCheckPattern {
SMLoc PatternLoc;
@@ -105,7 +126,8 @@
const StringMap<StringRef> &VariableTable,
SMRange MatchRange = None) const;
void PrintFuzzyMatch(const SourceMgr &SM, StringRef Buffer,
- const StringMap<StringRef> &VariableTable) const;
+ const StringMap<StringRef> &VariableTable,
+ std::vector<FileCheckDiag> *Diags) const;
bool hasVariable() const {
return !(VariableUses.empty() && VariableDefs.empty());
@@ -113,6 +135,8 @@
Check::FileCheckType getCheckTy() const { return CheckTy; }
+ int getCount() const { return CheckTy.getCount(); }
+
private:
bool AddRegExToRegEx(StringRef RS, unsigned &CurParen, SourceMgr &SM);
void AddBackrefToRegEx(unsigned BackrefNum);
@@ -124,6 +148,59 @@
};
//===----------------------------------------------------------------------===//
+/// Summary of a FileCheck diagnostic.
+//===----------------------------------------------------------------------===//
+
+struct FileCheckDiag {
+ /// What is the FileCheck directive for this diagnostic?
+ Check::FileCheckType CheckTy;
+ /// Where is the FileCheck directive for this diagnostic?
+ unsigned CheckLine, CheckCol;
+ /// What type of match result does this diagnostic describe?
+ ///
+ /// A directive's supplied pattern is said to be either expected or excluded
+ /// depending on whether the pattern must have or must not have a match in
+ /// order for the directive to succeed. For example, a CHECK directive's
+ /// pattern is expected, and a CHECK-NOT directive's pattern is excluded.
+ /// All match result types whose names end with "Excluded" are for excluded
+ /// patterns, and all others are for expected patterns.
+ ///
+ /// There might be more than one match result for a single pattern. For
+ /// example, there might be several discarded matches
+ /// (MatchFoundButDiscarded) before either a good match
+ /// (MatchFoundAndExpected) or a failure to match (MatchNoneButExpected),
+ /// and there might be a fuzzy match (MatchFuzzy) after the latter.
+ enum MatchType {
+ /// Indicates a good match for an expected pattern.
+ MatchFoundAndExpected,
+ /// Indicates a match for an excluded pattern.
+ MatchFoundButExcluded,
+ /// Indicates a match for an expected pattern, but the match is on the
+ /// wrong line.
+ MatchFoundButWrongLine,
+ /// Indicates a discarded match for an expected pattern.
+ MatchFoundButDiscarded,
+ /// Indicates no match for an excluded pattern.
+ MatchNoneAndExcluded,
+ /// Indicates no match for an expected pattern, but this might follow good
+ /// matches when multiple matches are expected for the pattern, or it might
+ /// follow discarded matches for the pattern.
+ MatchNoneButExpected,
+ /// Indicates a fuzzy match that serves as a suggestion for the next
+ /// intended match for an expected pattern with too few or no good matches.
+ MatchFuzzy,
+ } MatchTy;
+ /// The search range if MatchTy is MatchNoneAndExcluded or
+ /// MatchNoneButExpected, or the match range otherwise.
+ unsigned InputStartLine;
+ unsigned InputStartCol;
+ unsigned InputEndLine;
+ unsigned InputEndCol;
+ FileCheckDiag(const SourceMgr &SM, const Check::FileCheckType &CheckTy,
+ SMLoc CheckLoc, MatchType MatchTy, SMRange InputRange);
+};
+
+//===----------------------------------------------------------------------===//
// Check Strings.
//===----------------------------------------------------------------------===//
@@ -147,18 +224,20 @@
size_t Check(const SourceMgr &SM, StringRef Buffer, bool IsLabelScanMode,
size_t &MatchLen, StringMap<StringRef> &VariableTable,
- FileCheckRequest &Req) const;
+ FileCheckRequest &Req, std::vector<FileCheckDiag> *Diags) const;
bool CheckNext(const SourceMgr &SM, StringRef Buffer) const;
bool CheckSame(const SourceMgr &SM, StringRef Buffer) const;
bool CheckNot(const SourceMgr &SM, StringRef Buffer,
const std::vector<const FileCheckPattern *> &NotStrings,
StringMap<StringRef> &VariableTable,
- const FileCheckRequest &Req) const;
+ const FileCheckRequest &Req,
+ std::vector<FileCheckDiag> *Diags) const;
size_t CheckDag(const SourceMgr &SM, StringRef Buffer,
std::vector<const FileCheckPattern *> &NotStrings,
StringMap<StringRef> &VariableTable,
- const FileCheckRequest &Req) const;
+ const FileCheckRequest &Req,
+ std::vector<FileCheckDiag> *Diags) const;
};
/// FileCheck class takes the request and exposes various methods that
@@ -195,7 +274,8 @@
///
/// Returns false if the input fails to satisfy the checks.
bool CheckInput(SourceMgr &SM, StringRef Buffer,
- ArrayRef<FileCheckString> CheckStrings);
+ ArrayRef<FileCheckString> CheckStrings,
+ std::vector<FileCheckDiag> *Diags = nullptr);
};
} // namespace llvm
#endif
diff --git a/linux-x64/clang/include/llvm/Support/FileOutputBuffer.h b/linux-x64/clang/include/llvm/Support/FileOutputBuffer.h
index 68226ca..999f551 100644
--- a/linux-x64/clang/include/llvm/Support/FileOutputBuffer.h
+++ b/linux-x64/clang/include/llvm/Support/FileOutputBuffer.h
@@ -1,9 +1,8 @@
//=== FileOutputBuffer.h - File Output Buffer -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -33,11 +32,6 @@
enum {
/// set the 'x' bit on the resulting file
F_executable = 1,
-
- /// the contents of the new file are initialized from the file that exists
- /// at the location (if present). This allows in-place modification of an
- /// existing file.
- F_modify = 2
};
/// Factory method to create an OutputBuffer object which manages a read/write
diff --git a/linux-x64/clang/include/llvm/Support/FileSystem.h b/linux-x64/clang/include/llvm/Support/FileSystem.h
index a76eab6..156250f 100644
--- a/linux-x64/clang/include/llvm/Support/FileSystem.h
+++ b/linux-x64/clang/include/llvm/Support/FileSystem.h
@@ -1,9 +1,8 @@
//===- llvm/Support/FileSystem.h - File System OS Concept -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -160,6 +159,8 @@
#if defined(LLVM_ON_UNIX)
time_t fs_st_atime = 0;
time_t fs_st_mtime = 0;
+ uint32_t fs_st_atime_nsec = 0;
+ uint32_t fs_st_mtime_nsec = 0;
uid_t fs_st_uid = 0;
gid_t fs_st_gid = 0;
off_t fs_st_size = 0;
@@ -180,9 +181,12 @@
explicit basic_file_status(file_type Type) : Type(Type) {}
#if defined(LLVM_ON_UNIX)
- basic_file_status(file_type Type, perms Perms, time_t ATime, time_t MTime,
+ basic_file_status(file_type Type, perms Perms, time_t ATime,
+ uint32_t ATimeNSec, time_t MTime, uint32_t MTimeNSec,
uid_t UID, gid_t GID, off_t Size)
- : fs_st_atime(ATime), fs_st_mtime(MTime), fs_st_uid(UID), fs_st_gid(GID),
+ : fs_st_atime(ATime), fs_st_mtime(MTime),
+ fs_st_atime_nsec(ATimeNSec), fs_st_mtime_nsec(MTimeNSec),
+ fs_st_uid(UID), fs_st_gid(GID),
fs_st_size(Size), Type(Type), Perms(Perms) {}
#elif defined(_WIN32)
basic_file_status(file_type Type, perms Perms, uint32_t LastAccessTimeHigh,
@@ -199,7 +203,20 @@
// getters
file_type type() const { return Type; }
perms permissions() const { return Perms; }
+
+ /// The file access time as reported from the underlying file system.
+ ///
+ /// Also see comments on \c getLastModificationTime() related to the precision
+ /// of the returned value.
TimePoint<> getLastAccessedTime() const;
+
+ /// The file modification time as reported from the underlying file system.
+ ///
+ /// The returned value allows for nanosecond precision but the actual
+ /// resolution is an implementation detail of the underlying file system.
+ /// There is no guarantee for what kind of resolution you can expect, the
+ /// resolution can differ across platforms and even across mountpoints on the
+ /// same machine.
TimePoint<> getLastModificationTime() const;
#if defined(LLVM_ON_UNIX)
@@ -247,8 +264,11 @@
#if defined(LLVM_ON_UNIX)
file_status(file_type Type, perms Perms, dev_t Dev, nlink_t Links, ino_t Ino,
- time_t ATime, time_t MTime, uid_t UID, gid_t GID, off_t Size)
- : basic_file_status(Type, Perms, ATime, MTime, UID, GID, Size),
+ time_t ATime, uint32_t ATimeNSec,
+ time_t MTime, uint32_t MTimeNSec,
+ uid_t UID, gid_t GID, off_t Size)
+ : basic_file_status(Type, Perms, ATime, ATimeNSec, MTime, MTimeNSec,
+ UID, GID, Size),
fs_st_dev(Dev), fs_st_nlinks(Links), fs_st_ino(Ino) {}
#elif defined(_WIN32)
file_status(file_type Type, perms Perms, uint32_t LinkCount,
@@ -281,10 +301,7 @@
/// relative/../path => <current-directory>/relative/../path
///
/// @param path A path that is modified to be an absolute path.
-/// @returns errc::success if \a path has been made absolute, otherwise a
-/// platform-specific error_code.
-std::error_code make_absolute(const Twine ¤t_directory,
- SmallVectorImpl<char> &path);
+void make_absolute(const Twine ¤t_directory, SmallVectorImpl<char> &path);
/// Make \a path an absolute path.
///
@@ -349,6 +366,12 @@
std::error_code real_path(const Twine &path, SmallVectorImpl<char> &output,
bool expand_tilde = false);
+/// Expands ~ expressions to the user's home directory. On Unix ~user
+/// directories are resolved as well.
+///
+/// @param path The path to resolve.
+void expand_tilde(const Twine &path, SmallVectorImpl<char> &output);
+
/// Get the current path.
///
/// @param result Holds the current path on return.
diff --git a/linux-x64/clang/include/llvm/Support/FileUtilities.h b/linux-x64/clang/include/llvm/Support/FileUtilities.h
index 2ee2c60..16b2206 100644
--- a/linux-x64/clang/include/llvm/Support/FileUtilities.h
+++ b/linux-x64/clang/include/llvm/Support/FileUtilities.h
@@ -1,9 +1,8 @@
//===- llvm/Support/FileUtilities.h - File System Utilities -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Format.h b/linux-x64/clang/include/llvm/Support/Format.h
index bcbd2be..77dcbae 100644
--- a/linux-x64/clang/include/llvm/Support/Format.h
+++ b/linux-x64/clang/include/llvm/Support/Format.h
@@ -1,9 +1,8 @@
//===- Format.h - Efficient printf-style formatting for streams -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/FormatAdapters.h b/linux-x64/clang/include/llvm/Support/FormatAdapters.h
index 8320eaa..a0e8cc4 100644
--- a/linux-x64/clang/include/llvm/Support/FormatAdapters.h
+++ b/linux-x64/clang/include/llvm/Support/FormatAdapters.h
@@ -1,9 +1,8 @@
//===- FormatAdapters.h - Formatters for common LLVM types -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/FormatCommon.h b/linux-x64/clang/include/llvm/Support/FormatCommon.h
index 36fbad2..3c119d1 100644
--- a/linux-x64/clang/include/llvm/Support/FormatCommon.h
+++ b/linux-x64/clang/include/llvm/Support/FormatCommon.h
@@ -1,9 +1,8 @@
-//===- FormatAdapters.h - Formatters for common LLVM types -----*- C++ -*-===//
+//===- FormatCommon.h - Formatters for common LLVM types --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/FormatProviders.h b/linux-x64/clang/include/llvm/Support/FormatProviders.h
index 4e57034..629a484 100644
--- a/linux-x64/clang/include/llvm/Support/FormatProviders.h
+++ b/linux-x64/clang/include/llvm/Support/FormatProviders.h
@@ -1,9 +1,8 @@
//===- FormatProviders.h - Formatters for common LLVM types -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/FormatVariadic.h b/linux-x64/clang/include/llvm/Support/FormatVariadic.h
index b0f5825..5bbda9d 100644
--- a/linux-x64/clang/include/llvm/Support/FormatVariadic.h
+++ b/linux-x64/clang/include/llvm/Support/FormatVariadic.h
@@ -1,9 +1,8 @@
//===- FormatVariadic.h - Efficient type-safe string formatting --*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/FormatVariadicDetails.h b/linux-x64/clang/include/llvm/Support/FormatVariadicDetails.h
index 56dda43..e3c1851 100644
--- a/linux-x64/clang/include/llvm/Support/FormatVariadicDetails.h
+++ b/linux-x64/clang/include/llvm/Support/FormatVariadicDetails.h
@@ -1,9 +1,8 @@
//===- FormatVariadicDetails.h - Helpers for FormatVariadic.h ----*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -21,6 +20,8 @@
namespace detail {
class format_adapter {
+ virtual void anchor();
+
protected:
virtual ~format_adapter() {}
diff --git a/linux-x64/clang/include/llvm/Support/FormattedStream.h b/linux-x64/clang/include/llvm/Support/FormattedStream.h
index 4a135cd..b49c8d8 100644
--- a/linux-x64/clang/include/llvm/Support/FormattedStream.h
+++ b/linux-x64/clang/include/llvm/Support/FormattedStream.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/FormattedStream.h - Formatted streams ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/GenericDomTree.h b/linux-x64/clang/include/llvm/Support/GenericDomTree.h
index b3018ba..53a613e 100644
--- a/linux-x64/clang/include/llvm/Support/GenericDomTree.h
+++ b/linux-x64/clang/include/llvm/Support/GenericDomTree.h
@@ -1,9 +1,8 @@
//===- GenericDomTree.h - Generic dominator trees for graphs ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Support/GenericDomTreeConstruction.h b/linux-x64/clang/include/llvm/Support/GenericDomTreeConstruction.h
index 344484b..69cc721 100644
--- a/linux-x64/clang/include/llvm/Support/GenericDomTreeConstruction.h
+++ b/linux-x64/clang/include/llvm/Support/GenericDomTreeConstruction.h
@@ -1,9 +1,8 @@
//===- GenericDomTreeConstruction.h - Dominator Calculation ------*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -1191,6 +1190,20 @@
});
LLVM_DEBUG(dbgs() << "\n");
+ // Recalculate the DominatorTree when the number of updates
+ // exceeds a threshold, which usually makes direct updating slower than
+ // recalculation. We select this threshold proportional to the
+ // size of the DominatorTree. The constant is selected
+ // by choosing the one with an acceptable performance on some real-world
+ // inputs.
+
+ // Make unittests of the incremental algorithm work
+ if (DT.DomTreeNodes.size() <= 100) {
+ if (NumLegalized > DT.DomTreeNodes.size())
+ CalculateFromScratch(DT, &BUI);
+ } else if (NumLegalized > DT.DomTreeNodes.size() / 40)
+ CalculateFromScratch(DT, &BUI);
+
// If the DominatorTree was recalculated at some point, stop the batch
// updates. Full recalculations ignore batch updates and look at the actual
// CFG.
diff --git a/linux-x64/clang/include/llvm/Support/GlobPattern.h b/linux-x64/clang/include/llvm/Support/GlobPattern.h
index c9436a1..66a4cd9 100644
--- a/linux-x64/clang/include/llvm/Support/GlobPattern.h
+++ b/linux-x64/clang/include/llvm/Support/GlobPattern.h
@@ -1,9 +1,8 @@
//===-- GlobPattern.h - glob pattern matcher implementation -*- C++ -*-----===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/GraphWriter.h b/linux-x64/clang/include/llvm/Support/GraphWriter.h
index 02d98be..466a044 100644
--- a/linux-x64/clang/include/llvm/Support/GraphWriter.h
+++ b/linux-x64/clang/include/llvm/Support/GraphWriter.h
@@ -1,9 +1,8 @@
//===- llvm/Support/GraphWriter.h - Write graph to a .dot file --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Host.h b/linux-x64/clang/include/llvm/Support/Host.h
index 57c79c0..b37cc51 100644
--- a/linux-x64/clang/include/llvm/Support/Host.h
+++ b/linux-x64/clang/include/llvm/Support/Host.h
@@ -1,9 +1,8 @@
//===- llvm/Support/Host.h - Host machine characteristics --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/InitLLVM.h b/linux-x64/clang/include/llvm/Support/InitLLVM.h
index 0f629c9..57a0ebc 100644
--- a/linux-x64/clang/include/llvm/Support/InitLLVM.h
+++ b/linux-x64/clang/include/llvm/Support/InitLLVM.h
@@ -1,9 +1,8 @@
//===- InitLLVM.h -----------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/ItaniumManglingCanonicalizer.h b/linux-x64/clang/include/llvm/Support/ItaniumManglingCanonicalizer.h
index 34eb9f7..6920000 100644
--- a/linux-x64/clang/include/llvm/Support/ItaniumManglingCanonicalizer.h
+++ b/linux-x64/clang/include/llvm/Support/ItaniumManglingCanonicalizer.h
@@ -1,9 +1,8 @@
//===--- ItaniumManglingCanonicalizer.h -------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/JSON.h b/linux-x64/clang/include/llvm/Support/JSON.h
index 2fc0e7d..e3cb950 100644
--- a/linux-x64/clang/include/llvm/Support/JSON.h
+++ b/linux-x64/clang/include/llvm/Support/JSON.h
@@ -1,9 +1,8 @@
//===--- JSON.h - JSON values, parsing and serialization -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===---------------------------------------------------------------------===//
///
@@ -294,9 +293,13 @@
Value(json::Array &&Elements) : Type(T_Array) {
create<json::Array>(std::move(Elements));
}
+ template <typename Elt>
+ Value(const std::vector<Elt> &C) : Value(json::Array(C)) {}
Value(json::Object &&Properties) : Type(T_Object) {
create<json::Object>(std::move(Properties));
}
+ template <typename Elt>
+ Value(const std::map<std::string, Elt> &C) : Value(json::Object(C)) {}
// Strings: types with value semantics. Must be valid UTF-8.
Value(std::string V) : Type(T_String) {
if (LLVM_UNLIKELY(!isUTF8(V))) {
@@ -477,6 +480,7 @@
mutable llvm::AlignedCharArrayUnion<bool, double, int64_t, llvm::StringRef,
std::string, json::Array, json::Object>
Union;
+ friend bool operator==(const Value &, const Value &);
};
bool operator==(const Value &, const Value &);
diff --git a/linux-x64/clang/include/llvm/Support/JamCRC.h b/linux-x64/clang/include/llvm/Support/JamCRC.h
index 846d6ce..b6fc4e7 100644
--- a/linux-x64/clang/include/llvm/Support/JamCRC.h
+++ b/linux-x64/clang/include/llvm/Support/JamCRC.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/JamCRC.h - Cyclic Redundancy Check ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/KnownBits.h b/linux-x64/clang/include/llvm/Support/KnownBits.h
index 259df95..8983a06 100644
--- a/linux-x64/clang/include/llvm/Support/KnownBits.h
+++ b/linux-x64/clang/include/llvm/Support/KnownBits.h
@@ -1,9 +1,8 @@
//===- llvm/Support/KnownBits.h - Stores known zeros/ones -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/LEB128.h b/linux-x64/clang/include/llvm/Support/LEB128.h
index 9feb072..eb43c85 100644
--- a/linux-x64/clang/include/llvm/Support/LEB128.h
+++ b/linux-x64/clang/include/llvm/Support/LEB128.h
@@ -1,9 +1,8 @@
//===- llvm/Support/LEB128.h - [SU]LEB128 utility functions -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/LineIterator.h b/linux-x64/clang/include/llvm/Support/LineIterator.h
index 892d289..c9f10ca 100644
--- a/linux-x64/clang/include/llvm/Support/LineIterator.h
+++ b/linux-x64/clang/include/llvm/Support/LineIterator.h
@@ -1,9 +1,8 @@
//===- LineIterator.h - Iterator to read a text buffer's lines --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/LockFileManager.h b/linux-x64/clang/include/llvm/Support/LockFileManager.h
index 86db0b2..57e4fbd 100644
--- a/linux-x64/clang/include/llvm/Support/LockFileManager.h
+++ b/linux-x64/clang/include/llvm/Support/LockFileManager.h
@@ -1,9 +1,8 @@
//===--- LockFileManager.h - File-level locking utility ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_SUPPORT_LOCKFILEMANAGER_H
diff --git a/linux-x64/clang/include/llvm/Support/LowLevelTypeImpl.h b/linux-x64/clang/include/llvm/Support/LowLevelTypeImpl.h
index a0a5a52..efe5c51 100644
--- a/linux-x64/clang/include/llvm/Support/LowLevelTypeImpl.h
+++ b/linux-x64/clang/include/llvm/Support/LowLevelTypeImpl.h
@@ -1,9 +1,8 @@
//== llvm/Support/LowLevelTypeImpl.h --------------------------- -*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -46,8 +45,8 @@
SizeInBits, /*AddressSpace=*/0};
}
- /// Get a low-level pointer in the given address space (defaulting to 0).
- static LLT pointer(uint16_t AddressSpace, unsigned SizeInBits) {
+ /// Get a low-level pointer in the given address space.
+ static LLT pointer(unsigned AddressSpace, unsigned SizeInBits) {
assert(SizeInBits > 0 && "invalid pointer size");
return LLT{/*isPointer=*/true, /*isVector=*/false, /*NumElements=*/0,
SizeInBits, AddressSpace};
@@ -71,6 +70,14 @@
ScalarTy.isPointer() ? ScalarTy.getAddressSpace() : 0};
}
+ static LLT scalarOrVector(uint16_t NumElements, LLT ScalarTy) {
+ return NumElements == 1 ? ScalarTy : LLT::vector(NumElements, ScalarTy);
+ }
+
+ static LLT scalarOrVector(uint16_t NumElements, unsigned ScalarSize) {
+ return scalarOrVector(NumElements, LLT::scalar(ScalarSize));
+ }
+
explicit LLT(bool isPointer, bool isVector, uint16_t NumElements,
unsigned SizeInBits, unsigned AddressSpace) {
init(isPointer, isVector, NumElements, SizeInBits, AddressSpace);
@@ -104,6 +111,26 @@
return getScalarSizeInBits() * getNumElements();
}
+ LLT getScalarType() const {
+ return isVector() ? getElementType() : *this;
+ }
+
+ /// If this type is a vector, return a vector with the same number of elements
+ /// but the new element type. Otherwise, return the new element type.
+ LLT changeElementType(LLT NewEltTy) const {
+ return isVector() ? LLT::vector(getNumElements(), NewEltTy) : NewEltTy;
+ }
+
+ /// If this type is a vector, return a vector with the same number of elements
+ /// but the new element size. Otherwise, return the new element type. Invalid
+ /// for pointer types. For pointer types, use changeElementType.
+ LLT changeElementSize(unsigned NewEltSize) const {
+ assert(!getScalarType().isPointer() &&
+ "invalid to directly change element size for pointers");
+ return isVector() ? LLT::vector(getNumElements(), NewEltSize)
+ : LLT::scalar(NewEltSize);
+ }
+
unsigned getScalarSizeInBits() const {
assert(RawData != 0 && "Invalid Type");
if (!IsVector) {
@@ -147,6 +174,7 @@
bool operator!=(const LLT &RHS) const { return !(*this == RHS); }
friend struct DenseMapInfo<LLT>;
+ friend class GISelInstProfileBuilder;
private:
/// LLT is packed into 64 bits as follows:
@@ -169,10 +197,10 @@
static const constexpr BitFieldInfo ScalarSizeFieldInfo{32, 0};
/// * Pointer (isPointer == 1 && isVector == 0):
/// SizeInBits: 16;
- /// AddressSpace: 23;
+ /// AddressSpace: 24;
static const constexpr BitFieldInfo PointerSizeFieldInfo{16, 0};
static const constexpr BitFieldInfo PointerAddressSpaceFieldInfo{
- 23, PointerSizeFieldInfo[0] + PointerSizeFieldInfo[1]};
+ 24, PointerSizeFieldInfo[0] + PointerSizeFieldInfo[1]};
/// * Vector-of-non-pointer (isPointer == 0 && isVector == 1):
/// NumElements: 16;
/// SizeOfElement: 32;
@@ -182,13 +210,13 @@
/// * Vector-of-pointer (isPointer == 1 && isVector == 1):
/// NumElements: 16;
/// SizeOfElement: 16;
- /// AddressSpace: 23;
+ /// AddressSpace: 24;
static const constexpr BitFieldInfo PointerVectorElementsFieldInfo{16, 0};
static const constexpr BitFieldInfo PointerVectorSizeFieldInfo{
16,
PointerVectorElementsFieldInfo[1] + PointerVectorElementsFieldInfo[0]};
static const constexpr BitFieldInfo PointerVectorAddressSpaceFieldInfo{
- 23, PointerVectorSizeFieldInfo[1] + PointerVectorSizeFieldInfo[0]};
+ 24, PointerVectorSizeFieldInfo[1] + PointerVectorSizeFieldInfo[0]};
uint64_t IsPointer : 1;
uint64_t IsVector : 1;
@@ -231,6 +259,11 @@
maskAndShift(AddressSpace, PointerVectorAddressSpaceFieldInfo);
}
}
+
+ uint64_t getUniqueRAWLLTData() const {
+ return ((uint64_t)RawData) << 2 | ((uint64_t)IsPointer) << 1 |
+ ((uint64_t)IsVector);
+ }
};
inline raw_ostream& operator<<(raw_ostream &OS, const LLT &Ty) {
@@ -250,8 +283,7 @@
return Invalid;
}
static inline unsigned getHashValue(const LLT &Ty) {
- uint64_t Val = ((uint64_t)Ty.RawData) << 2 | ((uint64_t)Ty.IsPointer) << 1 |
- ((uint64_t)Ty.IsVector);
+ uint64_t Val = Ty.getUniqueRAWLLTData();
return DenseMapInfo<uint64_t>::getHashValue(Val);
}
static bool isEqual(const LLT &LHS, const LLT &RHS) {
diff --git a/linux-x64/clang/include/llvm/Support/MSVCErrorWorkarounds.h b/linux-x64/clang/include/llvm/Support/MSVCErrorWorkarounds.h
index 053ecf6..30e8feb 100644
--- a/linux-x64/clang/include/llvm/Support/MSVCErrorWorkarounds.h
+++ b/linux-x64/clang/include/llvm/Support/MSVCErrorWorkarounds.h
@@ -1,9 +1,8 @@
//===--- MSVCErrorWorkarounds.h - Enable future<Error> in MSVC --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/MachineValueType.h b/linux-x64/clang/include/llvm/Support/MachineValueType.h
index 552dea0..7651b28 100644
--- a/linux-x64/clang/include/llvm/Support/MachineValueType.h
+++ b/linux-x64/clang/include/llvm/Support/MachineValueType.h
@@ -1,9 +1,8 @@
//===- Support/MachineValueType.h - Machine-Level types ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/ManagedStatic.h b/linux-x64/clang/include/llvm/Support/ManagedStatic.h
index b4bf321..441f24e 100644
--- a/linux-x64/clang/include/llvm/Support/ManagedStatic.h
+++ b/linux-x64/clang/include/llvm/Support/ManagedStatic.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/ManagedStatic.h - Static Global wrapper ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/MathExtras.h b/linux-x64/clang/include/llvm/Support/MathExtras.h
index b59f21b..e902a72 100644
--- a/linux-x64/clang/include/llvm/Support/MathExtras.h
+++ b/linux-x64/clang/include/llvm/Support/MathExtras.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/MathExtras.h - Useful math functions -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/MemAlloc.h b/linux-x64/clang/include/llvm/Support/MemAlloc.h
index d06c659..ed076ff 100644
--- a/linux-x64/clang/include/llvm/Support/MemAlloc.h
+++ b/linux-x64/clang/include/llvm/Support/MemAlloc.h
@@ -1,9 +1,8 @@
//===- MemAlloc.h - Memory allocation functions -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Support/Memory.h b/linux-x64/clang/include/llvm/Support/Memory.h
index fa026d4..2f4cafe 100644
--- a/linux-x64/clang/include/llvm/Support/Memory.h
+++ b/linux-x64/clang/include/llvm/Support/Memory.h
@@ -1,9 +1,8 @@
//===- llvm/Support/Memory.h - Memory Support -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/MemoryBuffer.h b/linux-x64/clang/include/llvm/Support/MemoryBuffer.h
index 8933295..4405269 100644
--- a/linux-x64/clang/include/llvm/Support/MemoryBuffer.h
+++ b/linux-x64/clang/include/llvm/Support/MemoryBuffer.h
@@ -1,9 +1,8 @@
//===--- MemoryBuffer.h - Memory Buffer Interface ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/MipsABIFlags.h b/linux-x64/clang/include/llvm/Support/MipsABIFlags.h
index 12c3500..d3233f6 100644
--- a/linux-x64/clang/include/llvm/Support/MipsABIFlags.h
+++ b/linux-x64/clang/include/llvm/Support/MipsABIFlags.h
@@ -1,9 +1,8 @@
//===--- MipsABIFlags.h - MIPS ABI flags ----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Mutex.h b/linux-x64/clang/include/llvm/Support/Mutex.h
index 680d94b..c3abfc7 100644
--- a/linux-x64/clang/include/llvm/Support/Mutex.h
+++ b/linux-x64/clang/include/llvm/Support/Mutex.h
@@ -1,9 +1,8 @@
//===- llvm/Support/Mutex.h - Mutex Operating System Concept -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/MutexGuard.h b/linux-x64/clang/include/llvm/Support/MutexGuard.h
index 641d64d..d86ced1 100644
--- a/linux-x64/clang/include/llvm/Support/MutexGuard.h
+++ b/linux-x64/clang/include/llvm/Support/MutexGuard.h
@@ -1,9 +1,8 @@
//===-- Support/MutexGuard.h - Acquire/Release Mutex In Scope ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/NativeFormatting.h b/linux-x64/clang/include/llvm/Support/NativeFormatting.h
index 6d1dd7b..825a44c 100644
--- a/linux-x64/clang/include/llvm/Support/NativeFormatting.h
+++ b/linux-x64/clang/include/llvm/Support/NativeFormatting.h
@@ -1,9 +1,8 @@
//===- NativeFormatting.h - Low level formatting helpers ---------*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/OnDiskHashTable.h b/linux-x64/clang/include/llvm/Support/OnDiskHashTable.h
index 912e270..d84da92 100644
--- a/linux-x64/clang/include/llvm/Support/OnDiskHashTable.h
+++ b/linux-x64/clang/include/llvm/Support/OnDiskHashTable.h
@@ -1,9 +1,8 @@
//===--- OnDiskHashTable.h - On-Disk Hash Table Implementation --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/Support/Options.h b/linux-x64/clang/include/llvm/Support/Options.h
index dd321c6..d02ef85 100644
--- a/linux-x64/clang/include/llvm/Support/Options.h
+++ b/linux-x64/clang/include/llvm/Support/Options.h
@@ -1,9 +1,8 @@
//===- llvm/Support/Options.h - Debug options support -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Support/Parallel.h b/linux-x64/clang/include/llvm/Support/Parallel.h
index 1462265..9843b95 100644
--- a/linux-x64/clang/include/llvm/Support/Parallel.h
+++ b/linux-x64/clang/include/llvm/Support/Parallel.h
@@ -1,9 +1,8 @@
//===- llvm/Support/Parallel.h - Parallel algorithms ----------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/Path.h b/linux-x64/clang/include/llvm/Support/Path.h
index 76de887..5c0bee5 100644
--- a/linux-x64/clang/include/llvm/Support/Path.h
+++ b/linux-x64/clang/include/llvm/Support/Path.h
@@ -1,9 +1,8 @@
//===- llvm/Support/Path.h - Path Operating System Concept ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/PluginLoader.h b/linux-x64/clang/include/llvm/Support/PluginLoader.h
index bdbb134..c0c516b 100644
--- a/linux-x64/clang/include/llvm/Support/PluginLoader.h
+++ b/linux-x64/clang/include/llvm/Support/PluginLoader.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/PluginLoader.h - Plugin Loader for Tools ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/PointerLikeTypeTraits.h b/linux-x64/clang/include/llvm/Support/PointerLikeTypeTraits.h
index 1710b57..1e7e5b5 100644
--- a/linux-x64/clang/include/llvm/Support/PointerLikeTypeTraits.h
+++ b/linux-x64/clang/include/llvm/Support/PointerLikeTypeTraits.h
@@ -1,9 +1,8 @@
//===- llvm/Support/PointerLikeTypeTraits.h - Pointer Traits ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/PrettyStackTrace.h b/linux-x64/clang/include/llvm/Support/PrettyStackTrace.h
index 4d64fe4..f6ed7c9 100644
--- a/linux-x64/clang/include/llvm/Support/PrettyStackTrace.h
+++ b/linux-x64/clang/include/llvm/Support/PrettyStackTrace.h
@@ -1,9 +1,8 @@
//===- llvm/Support/PrettyStackTrace.h - Pretty Crash Handling --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Printable.h b/linux-x64/clang/include/llvm/Support/Printable.h
index cb55d41..0f8670d 100644
--- a/linux-x64/clang/include/llvm/Support/Printable.h
+++ b/linux-x64/clang/include/llvm/Support/Printable.h
@@ -1,9 +1,8 @@
//===--- Printable.h - Print function helpers -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Process.h b/linux-x64/clang/include/llvm/Support/Process.h
index f9f1cac..9a70304 100644
--- a/linux-x64/clang/include/llvm/Support/Process.h
+++ b/linux-x64/clang/include/llvm/Support/Process.h
@@ -1,9 +1,8 @@
//===- llvm/Support/Process.h -----------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Support/Program.h b/linux-x64/clang/include/llvm/Support/Program.h
index 1f4dbdc..6b2315c 100644
--- a/linux-x64/clang/include/llvm/Support/Program.h
+++ b/linux-x64/clang/include/llvm/Support/Program.h
@@ -1,9 +1,8 @@
//===- llvm/Support/Program.h ------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/RWMutex.h b/linux-x64/clang/include/llvm/Support/RWMutex.h
index 5ac3e55..9cd57cb 100644
--- a/linux-x64/clang/include/llvm/Support/RWMutex.h
+++ b/linux-x64/clang/include/llvm/Support/RWMutex.h
@@ -1,9 +1,8 @@
//===- RWMutex.h - Reader/Writer Mutual Exclusion Lock ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/RandomNumberGenerator.h b/linux-x64/clang/include/llvm/Support/RandomNumberGenerator.h
index 1399dab..55d6876 100644
--- a/linux-x64/clang/include/llvm/Support/RandomNumberGenerator.h
+++ b/linux-x64/clang/include/llvm/Support/RandomNumberGenerator.h
@@ -1,9 +1,8 @@
//==- llvm/Support/RandomNumberGenerator.h - RNG for diversity ---*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Recycler.h b/linux-x64/clang/include/llvm/Support/Recycler.h
index 53db2e8..bbd9ae3 100644
--- a/linux-x64/clang/include/llvm/Support/Recycler.h
+++ b/linux-x64/clang/include/llvm/Support/Recycler.h
@@ -1,9 +1,8 @@
//==- llvm/Support/Recycler.h - Recycling Allocator --------------*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/RecyclingAllocator.h b/linux-x64/clang/include/llvm/Support/RecyclingAllocator.h
index 32b033b..2c29dac 100644
--- a/linux-x64/clang/include/llvm/Support/RecyclingAllocator.h
+++ b/linux-x64/clang/include/llvm/Support/RecyclingAllocator.h
@@ -1,9 +1,8 @@
//==- llvm/Support/RecyclingAllocator.h - Recycling Allocator ----*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Regex.h b/linux-x64/clang/include/llvm/Support/Regex.h
index d901eb1..2d19b10 100644
--- a/linux-x64/clang/include/llvm/Support/Regex.h
+++ b/linux-x64/clang/include/llvm/Support/Regex.h
@@ -1,9 +1,8 @@
//===-- Regex.h - Regular Expression matcher implementation -*- C++ -*-----===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Registry.h b/linux-x64/clang/include/llvm/Support/Registry.h
index 02fd5b9..4d8aa5f 100644
--- a/linux-x64/clang/include/llvm/Support/Registry.h
+++ b/linux-x64/clang/include/llvm/Support/Registry.h
@@ -1,9 +1,8 @@
//=== Registry.h - Linker-supported plugin registries -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -81,17 +80,17 @@
/// Iterators for registry entries.
///
- class iterator {
+ class iterator
+ : public llvm::iterator_facade_base<iterator, std::forward_iterator_tag,
+ const entry> {
const node *Cur;
public:
explicit iterator(const node *N) : Cur(N) {}
bool operator==(const iterator &That) const { return Cur == That.Cur; }
- bool operator!=(const iterator &That) const { return Cur != That.Cur; }
iterator &operator++() { Cur = Cur->Next; return *this; }
const entry &operator*() const { return Cur->Val; }
- const entry *operator->() const { return &Cur->Val; }
};
// begin is not defined here in order to avoid usage of an undefined static
diff --git a/linux-x64/clang/include/llvm/Support/SHA1.h b/linux-x64/clang/include/llvm/Support/SHA1.h
index 1fc60a8..87fe94b 100644
--- a/linux-x64/clang/include/llvm/Support/SHA1.h
+++ b/linux-x64/clang/include/llvm/Support/SHA1.h
@@ -1,9 +1,8 @@
//==- SHA1.h - SHA1 implementation for LLVM --*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// This code is taken from public domain
diff --git a/linux-x64/clang/include/llvm/Support/SMLoc.h b/linux-x64/clang/include/llvm/Support/SMLoc.h
index c74feff..d860703 100644
--- a/linux-x64/clang/include/llvm/Support/SMLoc.h
+++ b/linux-x64/clang/include/llvm/Support/SMLoc.h
@@ -1,9 +1,8 @@
//===- SMLoc.h - Source location for use with diagnostics -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/SaveAndRestore.h b/linux-x64/clang/include/llvm/Support/SaveAndRestore.h
index 8e11789..3c0333b 100644
--- a/linux-x64/clang/include/llvm/Support/SaveAndRestore.h
+++ b/linux-x64/clang/include/llvm/Support/SaveAndRestore.h
@@ -1,9 +1,8 @@
//===-- SaveAndRestore.h - Utility -------------------------------*- C++ -*-=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/Support/ScaledNumber.h b/linux-x64/clang/include/llvm/Support/ScaledNumber.h
index 3bd3cce..552da34 100644
--- a/linux-x64/clang/include/llvm/Support/ScaledNumber.h
+++ b/linux-x64/clang/include/llvm/Support/ScaledNumber.h
@@ -1,9 +1,8 @@
//===- llvm/Support/ScaledNumber.h - Support for scaled numbers -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -887,10 +886,6 @@
Digits >>= Shift;
}
-template <typename T> struct isPodLike;
-template <typename T> struct isPodLike<ScaledNumber<T>> {
- static const bool value = true;
-};
} // end namespace llvm
diff --git a/linux-x64/clang/include/llvm/Support/ScopedPrinter.h b/linux-x64/clang/include/llvm/Support/ScopedPrinter.h
index 34c1a28..1699655 100644
--- a/linux-x64/clang/include/llvm/Support/ScopedPrinter.h
+++ b/linux-x64/clang/include/llvm/Support/ScopedPrinter.h
@@ -1,9 +1,8 @@
//===-- ScopedPrinter.h ---------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/Signals.h b/linux-x64/clang/include/llvm/Support/Signals.h
index f25a049..9f2cb85 100644
--- a/linux-x64/clang/include/llvm/Support/Signals.h
+++ b/linux-x64/clang/include/llvm/Support/Signals.h
@@ -1,9 +1,8 @@
//===- llvm/Support/Signals.h - Signal Handling support ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/SmallVectorMemoryBuffer.h b/linux-x64/clang/include/llvm/Support/SmallVectorMemoryBuffer.h
index c4a600e..b63b58e 100644
--- a/linux-x64/clang/include/llvm/Support/SmallVectorMemoryBuffer.h
+++ b/linux-x64/clang/include/llvm/Support/SmallVectorMemoryBuffer.h
@@ -1,9 +1,8 @@
//===- SmallVectorMemoryBuffer.h --------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Solaris/sys/regset.h b/linux-x64/clang/include/llvm/Support/Solaris/sys/regset.h
index 6a69ebe..6bd98fa 100644
--- a/linux-x64/clang/include/llvm/Support/Solaris/sys/regset.h
+++ b/linux-x64/clang/include/llvm/Support/Solaris/sys/regset.h
@@ -1,9 +1,8 @@
/*===- llvm/Support/Solaris/sys/regset.h ------------------------*- C++ -*-===*
*
- * The LLVM Compiler Infrastructure
- *
- * This file is distributed under the University of Illinois Open Source
- * License. See LICENSE.TXT for details.
+ * 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
*
*===----------------------------------------------------------------------===*
*
diff --git a/linux-x64/clang/include/llvm/Support/SourceMgr.h b/linux-x64/clang/include/llvm/Support/SourceMgr.h
index 63ac893..7b081d3 100644
--- a/linux-x64/clang/include/llvm/Support/SourceMgr.h
+++ b/linux-x64/clang/include/llvm/Support/SourceMgr.h
@@ -1,9 +1,8 @@
//===- SourceMgr.h - Manager for Source Buffers & Diagnostics ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/SpecialCaseList.h b/linux-x64/clang/include/llvm/Support/SpecialCaseList.h
index fd62fc4..b740026 100644
--- a/linux-x64/clang/include/llvm/Support/SpecialCaseList.h
+++ b/linux-x64/clang/include/llvm/Support/SpecialCaseList.h
@@ -1,9 +1,8 @@
//===-- SpecialCaseList.h - special case list for sanitizers ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//===----------------------------------------------------------------------===//
//
// This is a utility class used to parse user-provided text files with
diff --git a/linux-x64/clang/include/llvm/Support/StringPool.h b/linux-x64/clang/include/llvm/Support/StringPool.h
index bb5fd07..a4f4591 100644
--- a/linux-x64/clang/include/llvm/Support/StringPool.h
+++ b/linux-x64/clang/include/llvm/Support/StringPool.h
@@ -1,9 +1,8 @@
//===- StringPool.h - Interned string pool ----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/StringSaver.h b/linux-x64/clang/include/llvm/Support/StringSaver.h
index 6b77d48..c54044e 100644
--- a/linux-x64/clang/include/llvm/Support/StringSaver.h
+++ b/linux-x64/clang/include/llvm/Support/StringSaver.h
@@ -1,9 +1,8 @@
//===- llvm/Support/StringSaver.h -------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/SwapByteOrder.h b/linux-x64/clang/include/llvm/Support/SwapByteOrder.h
index 71d3724..f58b4d9 100644
--- a/linux-x64/clang/include/llvm/Support/SwapByteOrder.h
+++ b/linux-x64/clang/include/llvm/Support/SwapByteOrder.h
@@ -1,9 +1,8 @@
//===- SwapByteOrder.h - Generic and optimized byte swaps -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/SymbolRemappingReader.h b/linux-x64/clang/include/llvm/Support/SymbolRemappingReader.h
index b457b9e..2b9ab57 100644
--- a/linux-x64/clang/include/llvm/Support/SymbolRemappingReader.h
+++ b/linux-x64/clang/include/llvm/Support/SymbolRemappingReader.h
@@ -1,9 +1,8 @@
//===- SymbolRemappingReader.h - Read symbol remapping file -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/SystemUtils.h b/linux-x64/clang/include/llvm/Support/SystemUtils.h
index bd60793..77deddb 100644
--- a/linux-x64/clang/include/llvm/Support/SystemUtils.h
+++ b/linux-x64/clang/include/llvm/Support/SystemUtils.h
@@ -1,9 +1,8 @@
//===- SystemUtils.h - Utilities to do low-level system stuff ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/TarWriter.h b/linux-x64/clang/include/llvm/Support/TarWriter.h
index 639f61b..71164e2 100644
--- a/linux-x64/clang/include/llvm/Support/TarWriter.h
+++ b/linux-x64/clang/include/llvm/Support/TarWriter.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/TarWriter.h - Tar archive file creator -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/TargetOpcodes.def b/linux-x64/clang/include/llvm/Support/TargetOpcodes.def
index a683f05..6612274 100644
--- a/linux-x64/clang/include/llvm/Support/TargetOpcodes.def
+++ b/linux-x64/clang/include/llvm/Support/TargetOpcodes.def
@@ -1,9 +1,8 @@
//===-- llvm/Support/TargetOpcodes.def - Target Indep Opcodes ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -29,6 +28,7 @@
///
HANDLE_TARGET_OPCODE(PHI)
HANDLE_TARGET_OPCODE(INLINEASM)
+HANDLE_TARGET_OPCODE(INLINEASM_BR)
HANDLE_TARGET_OPCODE(CFI_INSTRUCTION)
HANDLE_TARGET_OPCODE(EH_LABEL)
HANDLE_TARGET_OPCODE(GC_LABEL)
@@ -258,6 +258,17 @@
/// larger register.
HANDLE_TARGET_OPCODE(G_MERGE_VALUES)
+/// Generic instruction to create a vector value from a number of scalar
+/// components.
+HANDLE_TARGET_OPCODE(G_BUILD_VECTOR)
+
+/// Generic instruction to create a vector value from a number of scalar
+/// components, which have types larger than the result vector elt type.
+HANDLE_TARGET_OPCODE(G_BUILD_VECTOR_TRUNC)
+
+/// Generic instruction to create a vector by concatenating multiple vectors.
+HANDLE_TARGET_OPCODE(G_CONCAT_VECTORS)
+
/// Generic pointer to int conversion.
HANDLE_TARGET_OPCODE(G_PTRTOINT)
@@ -443,6 +454,9 @@
/// Floating point base-2 logarithm of a value.
HANDLE_TARGET_OPCODE(G_FLOG2)
+/// Floating point base-10 logarithm of a value.
+HANDLE_TARGET_OPCODE(G_FLOG10)
+
/// Generic FP negation.
HANDLE_TARGET_OPCODE(G_FNEG)
@@ -467,6 +481,9 @@
/// Generic FP absolute value.
HANDLE_TARGET_OPCODE(G_FABS)
+/// Generic FP canonicalize value.
+HANDLE_TARGET_OPCODE(G_FCANONICALIZE)
+
/// Generic pointer offset
HANDLE_TARGET_OPCODE(G_GEP)
@@ -504,6 +521,21 @@
/// Generic byte swap.
HANDLE_TARGET_OPCODE(G_BSWAP)
+/// Floating point ceil.
+HANDLE_TARGET_OPCODE(G_FCEIL)
+
+/// Floating point cosine.
+HANDLE_TARGET_OPCODE(G_FCOS)
+
+/// Floating point sine.
+HANDLE_TARGET_OPCODE(G_FSIN)
+
+/// Floating point square root.
+HANDLE_TARGET_OPCODE(G_FSQRT)
+
+/// Floating point floor.
+HANDLE_TARGET_OPCODE(G_FFLOOR)
+
/// Generic AddressSpaceCast.
HANDLE_TARGET_OPCODE(G_ADDRSPACE_CAST)
diff --git a/linux-x64/clang/include/llvm/Support/TargetParser.h b/linux-x64/clang/include/llvm/Support/TargetParser.h
index 01397e8..7efd022 100644
--- a/linux-x64/clang/include/llvm/Support/TargetParser.h
+++ b/linux-x64/clang/include/llvm/Support/TargetParser.h
@@ -1,9 +1,8 @@
//===-- TargetParser - Parser for target features ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -18,215 +17,20 @@
// FIXME: vector is used because that's what clang uses for subtarget feature
// lists, but SmallVector would probably be better
#include "llvm/ADT/Triple.h"
+#include "llvm/Support/ARMTargetParser.h"
+#include "llvm/Support/AArch64TargetParser.h"
#include <vector>
namespace llvm {
class StringRef;
-// Target specific information into their own namespaces. These should be
-// generated from TableGen because the information is already there, and there
-// is where new information about targets will be added.
+// Target specific information in their own namespaces.
+// (ARM/AArch64 are declared in ARM/AArch64TargetParser.h)
+// These should be generated from TableGen because the information is already
+// there, and there is where new information about targets will be added.
// FIXME: To TableGen this we need to make some table generated files available
// even if the back-end is not compiled with LLVM, plus we need to create a new
// back-end to TableGen to create these clean tables.
-namespace ARM {
-
-// FPU Version
-enum class FPUVersion {
- NONE,
- VFPV2,
- VFPV3,
- VFPV3_FP16,
- VFPV4,
- VFPV5
-};
-
-// An FPU name restricts the FPU in one of three ways:
-enum class FPURestriction {
- None = 0, ///< No restriction
- D16, ///< Only 16 D registers
- SP_D16 ///< Only single-precision instructions, with 16 D registers
-};
-
-// An FPU name implies one of three levels of Neon support:
-enum class NeonSupportLevel {
- None = 0, ///< No Neon
- Neon, ///< Neon
- Crypto ///< Neon with Crypto
-};
-
-// FPU names.
-enum FPUKind {
-#define ARM_FPU(NAME, KIND, VERSION, NEON_SUPPORT, RESTRICTION) KIND,
-#include "ARMTargetParser.def"
- FK_LAST
-};
-
-// Arch names.
-enum class ArchKind {
-#define ARM_ARCH(NAME, ID, CPU_ATTR, SUB_ARCH, ARCH_ATTR, ARCH_FPU, ARCH_BASE_EXT) ID,
-#include "ARMTargetParser.def"
-};
-
-// Arch extension modifiers for CPUs.
-enum ArchExtKind : unsigned {
- AEK_INVALID = 0,
- AEK_NONE = 1,
- AEK_CRC = 1 << 1,
- AEK_CRYPTO = 1 << 2,
- AEK_FP = 1 << 3,
- AEK_HWDIVTHUMB = 1 << 4,
- AEK_HWDIVARM = 1 << 5,
- AEK_MP = 1 << 6,
- AEK_SIMD = 1 << 7,
- AEK_SEC = 1 << 8,
- AEK_VIRT = 1 << 9,
- AEK_DSP = 1 << 10,
- AEK_FP16 = 1 << 11,
- AEK_RAS = 1 << 12,
- AEK_SVE = 1 << 13,
- AEK_DOTPROD = 1 << 14,
- AEK_SHA2 = 1 << 15,
- AEK_AES = 1 << 16,
- AEK_FP16FML = 1 << 17,
- // Unsupported extensions.
- AEK_OS = 0x8000000,
- AEK_IWMMXT = 0x10000000,
- AEK_IWMMXT2 = 0x20000000,
- AEK_MAVERICK = 0x40000000,
- AEK_XSCALE = 0x80000000,
-};
-
-// ISA kinds.
-enum class ISAKind { INVALID = 0, ARM, THUMB, AARCH64 };
-
-// Endianness
-// FIXME: BE8 vs. BE32?
-enum class EndianKind { INVALID = 0, LITTLE, BIG };
-
-// v6/v7/v8 Profile
-enum class ProfileKind { INVALID = 0, A, R, M };
-
-StringRef getCanonicalArchName(StringRef Arch);
-
-// Information by ID
-StringRef getFPUName(unsigned FPUKind);
-FPUVersion getFPUVersion(unsigned FPUKind);
-NeonSupportLevel getFPUNeonSupportLevel(unsigned FPUKind);
-FPURestriction getFPURestriction(unsigned FPUKind);
-
-// FIXME: These should be moved to TargetTuple once it exists
-bool getFPUFeatures(unsigned FPUKind, std::vector<StringRef> &Features);
-bool getHWDivFeatures(unsigned HWDivKind, std::vector<StringRef> &Features);
-bool getExtensionFeatures(unsigned Extensions,
- std::vector<StringRef> &Features);
-
-StringRef getArchName(ArchKind AK);
-unsigned getArchAttr(ArchKind AK);
-StringRef getCPUAttr(ArchKind AK);
-StringRef getSubArch(ArchKind AK);
-StringRef getArchExtName(unsigned ArchExtKind);
-StringRef getArchExtFeature(StringRef ArchExt);
-StringRef getHWDivName(unsigned HWDivKind);
-
-// Information by Name
-unsigned getDefaultFPU(StringRef CPU, ArchKind AK);
-unsigned getDefaultExtensions(StringRef CPU, ArchKind AK);
-StringRef getDefaultCPU(StringRef Arch);
-
-// Parser
-unsigned parseHWDiv(StringRef HWDiv);
-unsigned parseFPU(StringRef FPU);
-ArchKind parseArch(StringRef Arch);
-unsigned parseArchExt(StringRef ArchExt);
-ArchKind parseCPUArch(StringRef CPU);
-void fillValidCPUArchList(SmallVectorImpl<StringRef> &Values);
-ISAKind parseArchISA(StringRef Arch);
-EndianKind parseArchEndian(StringRef Arch);
-ProfileKind parseArchProfile(StringRef Arch);
-unsigned parseArchVersion(StringRef Arch);
-
-StringRef computeDefaultTargetABI(const Triple &TT, StringRef CPU);
-
-} // namespace ARM
-
-// FIXME:This should be made into class design,to avoid dupplication.
-namespace AArch64 {
-
-// Arch names.
-enum class ArchKind {
-#define AARCH64_ARCH(NAME, ID, CPU_ATTR, SUB_ARCH, ARCH_ATTR, ARCH_FPU, ARCH_BASE_EXT) ID,
-#include "AArch64TargetParser.def"
-};
-
-// Arch extension modifiers for CPUs.
-enum ArchExtKind : unsigned {
- AEK_INVALID = 0,
- AEK_NONE = 1,
- AEK_CRC = 1 << 1,
- AEK_CRYPTO = 1 << 2,
- AEK_FP = 1 << 3,
- AEK_SIMD = 1 << 4,
- AEK_FP16 = 1 << 5,
- AEK_PROFILE = 1 << 6,
- AEK_RAS = 1 << 7,
- AEK_LSE = 1 << 8,
- AEK_SVE = 1 << 9,
- AEK_DOTPROD = 1 << 10,
- AEK_RCPC = 1 << 11,
- AEK_RDM = 1 << 12,
- AEK_SM4 = 1 << 13,
- AEK_SHA3 = 1 << 14,
- AEK_SHA2 = 1 << 15,
- AEK_AES = 1 << 16,
- AEK_FP16FML = 1 << 17,
- AEK_RAND = 1 << 18,
- AEK_MTE = 1 << 19,
-};
-
-StringRef getCanonicalArchName(StringRef Arch);
-
-// Information by ID
-StringRef getFPUName(unsigned FPUKind);
-ARM::FPUVersion getFPUVersion(unsigned FPUKind);
-ARM::NeonSupportLevel getFPUNeonSupportLevel(unsigned FPUKind);
-ARM::FPURestriction getFPURestriction(unsigned FPUKind);
-
-// FIXME: These should be moved to TargetTuple once it exists
-bool getFPUFeatures(unsigned FPUKind, std::vector<StringRef> &Features);
-bool getExtensionFeatures(unsigned Extensions,
- std::vector<StringRef> &Features);
-bool getArchFeatures(ArchKind AK, std::vector<StringRef> &Features);
-
-StringRef getArchName(ArchKind AK);
-unsigned getArchAttr(ArchKind AK);
-StringRef getCPUAttr(ArchKind AK);
-StringRef getSubArch(ArchKind AK);
-StringRef getArchExtName(unsigned ArchExtKind);
-StringRef getArchExtFeature(StringRef ArchExt);
-unsigned checkArchVersion(StringRef Arch);
-
-// Information by Name
-unsigned getDefaultFPU(StringRef CPU, ArchKind AK);
-unsigned getDefaultExtensions(StringRef CPU, ArchKind AK);
-StringRef getDefaultCPU(StringRef Arch);
-AArch64::ArchKind getCPUArchKind(StringRef CPU);
-
-// Parser
-unsigned parseFPU(StringRef FPU);
-AArch64::ArchKind parseArch(StringRef Arch);
-ArchExtKind parseArchExt(StringRef ArchExt);
-ArchKind parseCPUArch(StringRef CPU);
-void fillValidCPUArchList(SmallVectorImpl<StringRef> &Values);
-ARM::ISAKind parseArchISA(StringRef Arch);
-ARM::EndianKind parseArchEndian(StringRef Arch);
-ARM::ProfileKind parseArchProfile(StringRef Arch);
-unsigned parseArchVersion(StringRef Arch);
-
-bool isX18ReservedByDefault(const Triple &TT);
-
-} // namespace AArch64
-
namespace X86 {
// This should be kept in sync with libcc/compiler-rt as its included by clang
@@ -317,9 +121,10 @@
GK_GFX902 = 61,
GK_GFX904 = 62,
GK_GFX906 = 63,
+ GK_GFX909 = 65,
GK_AMDGCN_FIRST = GK_GFX600,
- GK_AMDGCN_LAST = GK_GFX906,
+ GK_AMDGCN_LAST = GK_GFX909,
};
/// Instruction set architecture version.
diff --git a/linux-x64/clang/include/llvm/Support/TargetRegistry.h b/linux-x64/clang/include/llvm/Support/TargetRegistry.h
index 1bafc4e..5854d57 100644
--- a/linux-x64/clang/include/llvm/Support/TargetRegistry.h
+++ b/linux-x64/clang/include/llvm/Support/TargetRegistry.h
@@ -1,9 +1,8 @@
//===- Support/TargetRegistry.h - Target Registration -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/TargetSelect.h b/linux-x64/clang/include/llvm/Support/TargetSelect.h
index 582785c..9ffb84c 100644
--- a/linux-x64/clang/include/llvm/Support/TargetSelect.h
+++ b/linux-x64/clang/include/llvm/Support/TargetSelect.h
@@ -1,9 +1,8 @@
//===- TargetSelect.h - Target Selection & Registration ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/TaskQueue.h b/linux-x64/clang/include/llvm/Support/TaskQueue.h
index 49981ad..df2ffde 100644
--- a/linux-x64/clang/include/llvm/Support/TaskQueue.h
+++ b/linux-x64/clang/include/llvm/Support/TaskQueue.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/TaskQueue.h - A TaskQueue implementation ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/ThreadLocal.h b/linux-x64/clang/include/llvm/Support/ThreadLocal.h
index 885bd18..d6838c1 100644
--- a/linux-x64/clang/include/llvm/Support/ThreadLocal.h
+++ b/linux-x64/clang/include/llvm/Support/ThreadLocal.h
@@ -1,9 +1,8 @@
//===- llvm/Support/ThreadLocal.h - Thread Local Data ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/ThreadPool.h b/linux-x64/clang/include/llvm/Support/ThreadPool.h
index 4fdbd52..4bcbaa3 100644
--- a/linux-x64/clang/include/llvm/Support/ThreadPool.h
+++ b/linux-x64/clang/include/llvm/Support/ThreadPool.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/ThreadPool.h - A ThreadPool implementation -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Threading.h b/linux-x64/clang/include/llvm/Support/Threading.h
index e8021f6..23b115f 100644
--- a/linux-x64/clang/include/llvm/Support/Threading.h
+++ b/linux-x64/clang/include/llvm/Support/Threading.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/Threading.h - Control multithreading mode --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -27,7 +26,8 @@
#define LLVM_THREADING_USE_STD_CALL_ONCE 1
#elif defined(LLVM_ON_UNIX) && \
(defined(_LIBCPP_VERSION) || \
- !(defined(__NetBSD__) || defined(__OpenBSD__) || defined(__ppc__)))
+ !(defined(__NetBSD__) || defined(__OpenBSD__) || \
+ (defined(__ppc__) || defined(__PPC__))))
// std::call_once from libc++ is used on all Unix platforms. Other
// implementations like libstdc++ are known to have problems on NetBSD,
// OpenBSD and PowerPC.
diff --git a/linux-x64/clang/include/llvm/Support/Timer.h b/linux-x64/clang/include/llvm/Support/Timer.h
index a11c3ce..09f7422 100644
--- a/linux-x64/clang/include/llvm/Support/Timer.h
+++ b/linux-x64/clang/include/llvm/Support/Timer.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/Timer.h - Interval Timing Support ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/ToolOutputFile.h b/linux-x64/clang/include/llvm/Support/ToolOutputFile.h
index cf3bc2f..a99e327 100644
--- a/linux-x64/clang/include/llvm/Support/ToolOutputFile.h
+++ b/linux-x64/clang/include/llvm/Support/ToolOutputFile.h
@@ -1,9 +1,8 @@
//===- ToolOutputFile.h - Output files for compiler-like tools -----------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/TrailingObjects.h b/linux-x64/clang/include/llvm/Support/TrailingObjects.h
index 490bd94..8cf4f7a 100644
--- a/linux-x64/clang/include/llvm/Support/TrailingObjects.h
+++ b/linux-x64/clang/include/llvm/Support/TrailingObjects.h
@@ -1,9 +1,8 @@
//===--- TrailingObjects.h - Variable-length classes ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/Support/TrigramIndex.h b/linux-x64/clang/include/llvm/Support/TrigramIndex.h
index da0b6da..9351c2d 100644
--- a/linux-x64/clang/include/llvm/Support/TrigramIndex.h
+++ b/linux-x64/clang/include/llvm/Support/TrigramIndex.h
@@ -1,9 +1,8 @@
//===-- TrigramIndex.h - a heuristic for SpecialCaseList --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//===----------------------------------------------------------------------===//
//
// TrigramIndex implements a heuristic for SpecialCaseList that allows to
diff --git a/linux-x64/clang/include/llvm/Support/TypeName.h b/linux-x64/clang/include/llvm/Support/TypeName.h
index 0eb7ead..236490a 100644
--- a/linux-x64/clang/include/llvm/Support/TypeName.h
+++ b/linux-x64/clang/include/llvm/Support/TypeName.h
@@ -1,9 +1,8 @@
//===- TypeName.h -----------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/Unicode.h b/linux-x64/clang/include/llvm/Support/Unicode.h
index 983acaf..ca17bba 100644
--- a/linux-x64/clang/include/llvm/Support/Unicode.h
+++ b/linux-x64/clang/include/llvm/Support/Unicode.h
@@ -1,9 +1,8 @@
//===- llvm/Support/Unicode.h - Unicode character properties -*- C++ -*-=====//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/UnicodeCharRanges.h b/linux-x64/clang/include/llvm/Support/UnicodeCharRanges.h
index 3cf4a6d..4b59f8a 100644
--- a/linux-x64/clang/include/llvm/Support/UnicodeCharRanges.h
+++ b/linux-x64/clang/include/llvm/Support/UnicodeCharRanges.h
@@ -1,9 +1,8 @@
//===--- UnicodeCharRanges.h - Types and functions for character ranges ---===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_SUPPORT_UNICODECHARRANGES_H
diff --git a/linux-x64/clang/include/llvm/Support/UniqueLock.h b/linux-x64/clang/include/llvm/Support/UniqueLock.h
index 91dc911..0a887ad 100644
--- a/linux-x64/clang/include/llvm/Support/UniqueLock.h
+++ b/linux-x64/clang/include/llvm/Support/UniqueLock.h
@@ -1,9 +1,8 @@
//===- Support/UniqueLock.h - Acquire/Release Mutex In Scope ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/VCSRevision.h b/linux-x64/clang/include/llvm/Support/VCSRevision.h
index 7e554bb..a6a8b9c 100644
--- a/linux-x64/clang/include/llvm/Support/VCSRevision.h
+++ b/linux-x64/clang/include/llvm/Support/VCSRevision.h
@@ -1 +1,2 @@
-#define LLVM_REVISION "git-e6bbea3a709"
+#define LLVM_REVISION "60cf23e54e46c807513f7a36d0a7b777920b5881"
+#define LLVM_REPOSITORY "/buildbot/tmp/tmpCdFZ_W"
diff --git a/linux-x64/clang/include/llvm/Support/Valgrind.h b/linux-x64/clang/include/llvm/Support/Valgrind.h
index 084b901..1e14dfe 100644
--- a/linux-x64/clang/include/llvm/Support/Valgrind.h
+++ b/linux-x64/clang/include/llvm/Support/Valgrind.h
@@ -1,9 +1,8 @@
//===- llvm/Support/Valgrind.h - Communication with Valgrind ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/VersionTuple.h b/linux-x64/clang/include/llvm/Support/VersionTuple.h
index e85a188..14736d6 100644
--- a/linux-x64/clang/include/llvm/Support/VersionTuple.h
+++ b/linux-x64/clang/include/llvm/Support/VersionTuple.h
@@ -1,9 +1,8 @@
//===- VersionTuple.h - Version Number Handling -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/Support/VirtualFileSystem.h b/linux-x64/clang/include/llvm/Support/VirtualFileSystem.h
index f2f8ffa..7b7c9f8 100644
--- a/linux-x64/clang/include/llvm/Support/VirtualFileSystem.h
+++ b/linux-x64/clang/include/llvm/Support/VirtualFileSystem.h
@@ -1,9 +1,8 @@
//===- VirtualFileSystem.h - Virtual File System Layer ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -24,6 +23,7 @@
#include "llvm/Support/Chrono.h"
#include "llvm/Support/ErrorOr.h"
#include "llvm/Support/FileSystem.h"
+#include "llvm/Support/Path.h"
#include "llvm/Support/SourceMgr.h"
#include <cassert>
#include <cstdint>
@@ -193,14 +193,22 @@
class FileSystem;
+namespace detail {
+
+/// Keeps state for the recursive_directory_iterator.
+struct RecDirIterState {
+ std::stack<directory_iterator, std::vector<directory_iterator>> Stack;
+ bool HasNoPushRequest = false;
+};
+
+} // end namespace detail
+
/// An input iterator over the recursive contents of a virtual path,
/// similar to llvm::sys::fs::recursive_directory_iterator.
class recursive_directory_iterator {
- using IterState =
- std::stack<directory_iterator, std::vector<directory_iterator>>;
-
FileSystem *FS;
- std::shared_ptr<IterState> State; // Input iterator semantics on copy.
+ std::shared_ptr<detail::RecDirIterState>
+ State; // Input iterator semantics on copy.
public:
recursive_directory_iterator(FileSystem &FS, const Twine &Path,
@@ -212,8 +220,8 @@
/// Equivalent to operator++, with an error code.
recursive_directory_iterator &increment(std::error_code &EC);
- const directory_entry &operator*() const { return *State->top(); }
- const directory_entry *operator->() const { return &*State->top(); }
+ const directory_entry &operator*() const { return *State->Stack.top(); }
+ const directory_entry *operator->() const { return &*State->Stack.top(); }
bool operator==(const recursive_directory_iterator &Other) const {
return State == Other.State; // identity
@@ -224,9 +232,12 @@
/// Gets the current level. Starting path is at level 0.
int level() const {
- assert(!State->empty() && "Cannot get level without any iteration state");
- return State->size() - 1;
+ assert(!State->Stack.empty() &&
+ "Cannot get level without any iteration state");
+ return State->Stack.size() - 1;
}
+
+ void no_push() { State->HasNoPushRequest = true; }
};
/// The virtual file system interface.
@@ -268,6 +279,9 @@
/// Check whether a file exists. Provided for convenience.
bool exists(const Twine &Path);
+ /// Is the file mounted on a local filesystem?
+ virtual std::error_code isLocal(const Twine &Path, bool &Result);
+
/// Make \a Path an absolute path.
///
/// Makes \a Path absolute using the current directory if it is not already.
@@ -315,6 +329,7 @@
directory_iterator dir_begin(const Twine &Dir, std::error_code &EC) override;
llvm::ErrorOr<std::string> getCurrentWorkingDirectory() const override;
std::error_code setCurrentWorkingDirectory(const Twine &Path) override;
+ std::error_code isLocal(const Twine &Path, bool &Result) override;
std::error_code getRealPath(const Twine &Path,
SmallVectorImpl<char> &Output) const override;
@@ -359,12 +374,17 @@
SmallVectorImpl<char> &Output) const override {
return FS->getRealPath(Path, Output);
}
+ std::error_code isLocal(const Twine &Path, bool &Result) override {
+ return FS->isLocal(Path, Result);
+ }
protected:
FileSystem &getUnderlyingFS() { return *FS; }
private:
IntrusiveRefCntPtr<FileSystem> FS;
+
+ virtual void anchor();
};
namespace detail {
@@ -452,7 +472,7 @@
/// system.
std::error_code getRealPath(const Twine &Path,
SmallVectorImpl<char> &Output) const override;
-
+ std::error_code isLocal(const Twine &Path, bool &Result) override;
std::error_code setCurrentWorkingDirectory(const Twine &Path) override;
};
@@ -475,6 +495,230 @@
std::string RPath;
};
+class VFSFromYamlDirIterImpl;
+class RedirectingFileSystemParser;
+
+/// A virtual file system parsed from a YAML file.
+///
+/// Currently, this class allows creating virtual directories and mapping
+/// virtual file paths to existing external files, available in \c ExternalFS.
+///
+/// The basic structure of the parsed file is:
+/// \verbatim
+/// {
+/// 'version': <version number>,
+/// <optional configuration>
+/// 'roots': [
+/// <directory entries>
+/// ]
+/// }
+/// \endverbatim
+///
+/// All configuration options are optional.
+/// 'case-sensitive': <boolean, default=true>
+/// 'use-external-names': <boolean, default=true>
+/// 'overlay-relative': <boolean, default=false>
+/// 'fallthrough': <boolean, default=true>
+///
+/// Virtual directories are represented as
+/// \verbatim
+/// {
+/// 'type': 'directory',
+/// 'name': <string>,
+/// 'contents': [ <file or directory entries> ]
+/// }
+/// \endverbatim
+///
+/// The default attributes for virtual directories are:
+/// \verbatim
+/// MTime = now() when created
+/// Perms = 0777
+/// User = Group = 0
+/// Size = 0
+/// UniqueID = unspecified unique value
+/// \endverbatim
+///
+/// Re-mapped files are represented as
+/// \verbatim
+/// {
+/// 'type': 'file',
+/// 'name': <string>,
+/// 'use-external-name': <boolean> # Optional
+/// 'external-contents': <path to external file>
+/// }
+/// \endverbatim
+///
+/// and inherit their attributes from the external contents.
+///
+/// In both cases, the 'name' field may contain multiple path components (e.g.
+/// /path/to/file). However, any directory that contains more than one child
+/// must be uniquely represented by a directory entry.
+class RedirectingFileSystem : public vfs::FileSystem {
+public:
+ enum EntryKind { EK_Directory, EK_File };
+
+ /// A single file or directory in the VFS.
+ class Entry {
+ EntryKind Kind;
+ std::string Name;
+
+ public:
+ Entry(EntryKind K, StringRef Name) : Kind(K), Name(Name) {}
+ virtual ~Entry() = default;
+
+ StringRef getName() const { return Name; }
+ EntryKind getKind() const { return Kind; }
+ };
+
+ class RedirectingDirectoryEntry : public Entry {
+ std::vector<std::unique_ptr<Entry>> Contents;
+ Status S;
+
+ public:
+ RedirectingDirectoryEntry(StringRef Name,
+ std::vector<std::unique_ptr<Entry>> Contents,
+ Status S)
+ : Entry(EK_Directory, Name), Contents(std::move(Contents)),
+ S(std::move(S)) {}
+ RedirectingDirectoryEntry(StringRef Name, Status S)
+ : Entry(EK_Directory, Name), S(std::move(S)) {}
+
+ Status getStatus() { return S; }
+
+ void addContent(std::unique_ptr<Entry> Content) {
+ Contents.push_back(std::move(Content));
+ }
+
+ Entry *getLastContent() const { return Contents.back().get(); }
+
+ using iterator = decltype(Contents)::iterator;
+
+ iterator contents_begin() { return Contents.begin(); }
+ iterator contents_end() { return Contents.end(); }
+
+ static bool classof(const Entry *E) { return E->getKind() == EK_Directory; }
+ };
+
+ class RedirectingFileEntry : public Entry {
+ public:
+ enum NameKind { NK_NotSet, NK_External, NK_Virtual };
+
+ private:
+ std::string ExternalContentsPath;
+ NameKind UseName;
+
+ public:
+ RedirectingFileEntry(StringRef Name, StringRef ExternalContentsPath,
+ NameKind UseName)
+ : Entry(EK_File, Name), ExternalContentsPath(ExternalContentsPath),
+ UseName(UseName) {}
+
+ StringRef getExternalContentsPath() const { return ExternalContentsPath; }
+
+ /// whether to use the external path as the name for this file.
+ bool useExternalName(bool GlobalUseExternalName) const {
+ return UseName == NK_NotSet ? GlobalUseExternalName
+ : (UseName == NK_External);
+ }
+
+ NameKind getUseName() const { return UseName; }
+
+ static bool classof(const Entry *E) { return E->getKind() == EK_File; }
+ };
+
+private:
+ friend class VFSFromYamlDirIterImpl;
+ friend class RedirectingFileSystemParser;
+
+ /// The root(s) of the virtual file system.
+ std::vector<std::unique_ptr<Entry>> Roots;
+
+ /// The file system to use for external references.
+ IntrusiveRefCntPtr<FileSystem> ExternalFS;
+
+ /// If IsRelativeOverlay is set, this represents the directory
+ /// path that should be prefixed to each 'external-contents' entry
+ /// when reading from YAML files.
+ std::string ExternalContentsPrefixDir;
+
+ /// @name Configuration
+ /// @{
+
+ /// Whether to perform case-sensitive comparisons.
+ ///
+ /// Currently, case-insensitive matching only works correctly with ASCII.
+ bool CaseSensitive = true;
+
+ /// IsRelativeOverlay marks whether a ExternalContentsPrefixDir path must
+ /// be prefixed in every 'external-contents' when reading from YAML files.
+ bool IsRelativeOverlay = false;
+
+ /// Whether to use to use the value of 'external-contents' for the
+ /// names of files. This global value is overridable on a per-file basis.
+ bool UseExternalNames = true;
+
+ /// Whether to attempt a file lookup in external file system after it wasn't
+ /// found in VFS.
+ bool IsFallthrough = true;
+ /// @}
+
+ /// Virtual file paths and external files could be canonicalized without "..",
+ /// "." and "./" in their paths. FIXME: some unittests currently fail on
+ /// win32 when using remove_dots and remove_leading_dotslash on paths.
+ bool UseCanonicalizedPaths =
+#ifdef _WIN32
+ false;
+#else
+ true;
+#endif
+
+ RedirectingFileSystem(IntrusiveRefCntPtr<FileSystem> ExternalFS)
+ : ExternalFS(std::move(ExternalFS)) {}
+
+ /// Looks up the path <tt>[Start, End)</tt> in \p From, possibly
+ /// recursing into the contents of \p From if it is a directory.
+ ErrorOr<Entry *> lookupPath(llvm::sys::path::const_iterator Start,
+ llvm::sys::path::const_iterator End,
+ Entry *From) const;
+
+ /// Get the status of a given an \c Entry.
+ ErrorOr<Status> status(const Twine &Path, Entry *E);
+
+public:
+ /// Looks up \p Path in \c Roots.
+ ErrorOr<Entry *> lookupPath(const Twine &Path) const;
+
+ /// Parses \p Buffer, which is expected to be in YAML format and
+ /// returns a virtual file system representing its contents.
+ static RedirectingFileSystem *
+ create(std::unique_ptr<MemoryBuffer> Buffer,
+ SourceMgr::DiagHandlerTy DiagHandler, StringRef YAMLFilePath,
+ void *DiagContext, IntrusiveRefCntPtr<FileSystem> ExternalFS);
+
+ ErrorOr<Status> status(const Twine &Path) override;
+ ErrorOr<std::unique_ptr<File>> openFileForRead(const Twine &Path) override;
+
+ std::error_code getRealPath(const Twine &Path,
+ SmallVectorImpl<char> &Output) const override;
+
+ llvm::ErrorOr<std::string> getCurrentWorkingDirectory() const override;
+
+ std::error_code setCurrentWorkingDirectory(const Twine &Path) override;
+
+ std::error_code isLocal(const Twine &Path, bool &Result) override;
+
+ directory_iterator dir_begin(const Twine &Dir, std::error_code &EC) override;
+
+ void setExternalContentsPrefixDir(StringRef PrefixDir);
+
+ StringRef getExternalContentsPrefixDir() const;
+
+#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
+ LLVM_DUMP_METHOD void dump() const;
+ LLVM_DUMP_METHOD void dumpEntry(Entry *E, int NumSpaces = 0) const;
+#endif
+};
+
/// Collect all pairs of <virtual path, real path> entries from the
/// \p YAMLFilePath. This is used by the module dependency collector to forward
/// the entries into the reproducer output VFS YAML file.
@@ -490,7 +734,6 @@
Optional<bool> IsCaseSensitive;
Optional<bool> IsOverlayRelative;
Optional<bool> UseExternalNames;
- Optional<bool> IgnoreNonExistentContents;
std::string OverlayDir;
public:
@@ -504,15 +747,13 @@
void setUseExternalNames(bool UseExtNames) { UseExternalNames = UseExtNames; }
- void setIgnoreNonExistentContents(bool IgnoreContents) {
- IgnoreNonExistentContents = IgnoreContents;
- }
-
void setOverlayDir(StringRef OverlayDirectory) {
IsOverlayRelative = true;
OverlayDir.assign(OverlayDirectory.str());
}
+ const std::vector<YAMLVFSEntry> &getMappings() const { return Mappings; }
+
void write(llvm::raw_ostream &OS);
};
diff --git a/linux-x64/clang/include/llvm/Support/Watchdog.h b/linux-x64/clang/include/llvm/Support/Watchdog.h
index 01e1d92..281595e 100644
--- a/linux-x64/clang/include/llvm/Support/Watchdog.h
+++ b/linux-x64/clang/include/llvm/Support/Watchdog.h
@@ -1,9 +1,8 @@
//===--- Watchdog.h - Watchdog timer ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/Win64EH.h b/linux-x64/clang/include/llvm/Support/Win64EH.h
index 928eb90..bdd23b4 100644
--- a/linux-x64/clang/include/llvm/Support/Win64EH.h
+++ b/linux-x64/clang/include/llvm/Support/Win64EH.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/Win64EH.h ---Win64 EH Constants-------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -33,7 +32,24 @@
UOP_SaveNonVolBig,
UOP_SaveXMM128 = 8,
UOP_SaveXMM128Big,
- UOP_PushMachFrame
+ UOP_PushMachFrame,
+ // The following set of unwind opcodes is for ARM64. They are documented at
+ // https://docs.microsoft.com/en-us/cpp/build/arm64-exception-handling
+ UOP_AllocMedium,
+ UOP_SaveFPLRX,
+ UOP_SaveFPLR,
+ UOP_SaveReg,
+ UOP_SaveRegX,
+ UOP_SaveRegP,
+ UOP_SaveRegPX,
+ UOP_SaveFReg,
+ UOP_SaveFRegX,
+ UOP_SaveFRegP,
+ UOP_SaveFRegPX,
+ UOP_SetFP,
+ UOP_AddFP,
+ UOP_Nop,
+ UOP_End
};
/// UnwindCode - This union describes a single operation in a function prolog,
diff --git a/linux-x64/clang/include/llvm/Support/WindowsError.h b/linux-x64/clang/include/llvm/Support/WindowsError.h
index 63bfe59..1954052 100644
--- a/linux-x64/clang/include/llvm/Support/WindowsError.h
+++ b/linux-x64/clang/include/llvm/Support/WindowsError.h
@@ -1,9 +1,8 @@
//===-- WindowsError.h - Support for mapping windows errors to posix-------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Support/WithColor.h b/linux-x64/clang/include/llvm/Support/WithColor.h
index 85fc5fa..f4e1075 100644
--- a/linux-x64/clang/include/llvm/Support/WithColor.h
+++ b/linux-x64/clang/include/llvm/Support/WithColor.h
@@ -1,9 +1,8 @@
//===- WithColor.h ----------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -29,23 +28,49 @@
Macro,
Error,
Warning,
- Note
+ Note,
+ Remark
};
/// An RAII object that temporarily switches an output stream to a specific
/// color.
class WithColor {
raw_ostream &OS;
- /// Determine whether colors should be displayed.
- bool colorsEnabled(raw_ostream &OS);
+ bool DisableColors;
public:
/// To be used like this: WithColor(OS, HighlightColor::String) << "text";
- WithColor(raw_ostream &OS, HighlightColor S);
+ /// @param OS The output stream
+ /// @param S Symbolic name for syntax element to color
+ /// @param DisableColors Whether to ignore color changes regardless of -color
+ /// and support in OS
+ WithColor(raw_ostream &OS, HighlightColor S, bool DisableColors = false);
+ /// To be used like this: WithColor(OS, raw_ostream::Black) << "text";
+ /// @param OS The output stream
+ /// @param Color ANSI color to use, the special SAVEDCOLOR can be used to
+ /// change only the bold attribute, and keep colors untouched
+ /// @param Bold Bold/brighter text, default false
+ /// @param BG If true, change the background, default: change foreground
+ /// @param DisableColors Whether to ignore color changes regardless of -color
+ /// and support in OS
+ WithColor(raw_ostream &OS,
+ raw_ostream::Colors Color = raw_ostream::SAVEDCOLOR,
+ bool Bold = false, bool BG = false, bool DisableColors = false)
+ : OS(OS), DisableColors(DisableColors) {
+ changeColor(Color, Bold, BG);
+ }
~WithColor();
raw_ostream &get() { return OS; }
operator raw_ostream &() { return OS; }
+ template <typename T> WithColor &operator<<(T &O) {
+ OS << O;
+ return *this;
+ }
+ template <typename T> WithColor &operator<<(const T &O) {
+ OS << O;
+ return *this;
+ }
/// Convenience method for printing "error: " to stderr.
static raw_ostream &error();
@@ -53,13 +78,36 @@
static raw_ostream &warning();
/// Convenience method for printing "note: " to stderr.
static raw_ostream ¬e();
+ /// Convenience method for printing "remark: " to stderr.
+ static raw_ostream &remark();
/// Convenience method for printing "error: " to the given stream.
- static raw_ostream &error(raw_ostream &OS, StringRef Prefix = "");
+ static raw_ostream &error(raw_ostream &OS, StringRef Prefix = "",
+ bool DisableColors = false);
/// Convenience method for printing "warning: " to the given stream.
- static raw_ostream &warning(raw_ostream &OS, StringRef Prefix = "");
+ static raw_ostream &warning(raw_ostream &OS, StringRef Prefix = "",
+ bool DisableColors = false);
/// Convenience method for printing "note: " to the given stream.
- static raw_ostream ¬e(raw_ostream &OS, StringRef Prefix = "");
+ static raw_ostream ¬e(raw_ostream &OS, StringRef Prefix = "",
+ bool DisableColors = false);
+ /// Convenience method for printing "remark: " to the given stream.
+ static raw_ostream &remark(raw_ostream &OS, StringRef Prefix = "",
+ bool DisableColors = false);
+
+ /// Determine whether colors are displayed.
+ bool colorsEnabled();
+
+ /// Change the color of text that will be output from this point forward.
+ /// @param Color ANSI color to use, the special SAVEDCOLOR can be used to
+ /// change only the bold attribute, and keep colors untouched
+ /// @param Bold Bold/brighter text, default false
+ /// @param BG If true, change the background, default: change foreground
+ WithColor &changeColor(raw_ostream::Colors Color, bool Bold = false,
+ bool BG = false);
+
+ /// Reset the colors to terminal defaults. Call this when you are done
+ /// outputting colored text, or before program exit.
+ WithColor &resetColor();
};
} // end namespace llvm
diff --git a/linux-x64/clang/include/llvm/Support/X86DisassemblerDecoderCommon.h b/linux-x64/clang/include/llvm/Support/X86DisassemblerDecoderCommon.h
index 185b357..83c8671 100644
--- a/linux-x64/clang/include/llvm/Support/X86DisassemblerDecoderCommon.h
+++ b/linux-x64/clang/include/llvm/Support/X86DisassemblerDecoderCommon.h
@@ -1,9 +1,8 @@
//===-- X86DisassemblerDecoderCommon.h - Disassembler decoder ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -414,7 +413,7 @@
ENUM_ENTRY(TYPE_R16, "2-byte") \
ENUM_ENTRY(TYPE_R32, "4-byte") \
ENUM_ENTRY(TYPE_R64, "8-byte") \
- ENUM_ENTRY(TYPE_IMM, "immediate operand") \
+ ENUM_ENTRY(TYPE_IMM, "immediate operand") \
ENUM_ENTRY(TYPE_IMM3, "1-byte immediate operand between 0 and 7") \
ENUM_ENTRY(TYPE_IMM5, "1-byte immediate operand between 0 and 31") \
ENUM_ENTRY(TYPE_AVX512ICC, "1-byte immediate operand for AVX512 icmp") \
diff --git a/linux-x64/clang/include/llvm/Support/X86TargetParser.def b/linux-x64/clang/include/llvm/Support/X86TargetParser.def
index e4af065..fb82228 100644
--- a/linux-x64/clang/include/llvm/Support/X86TargetParser.def
+++ b/linux-x64/clang/include/llvm/Support/X86TargetParser.def
@@ -1,9 +1,8 @@
//===- X86TargetParser.def - X86 target parsing defines ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -34,17 +33,20 @@
#ifndef X86_CPU_TYPE
#define X86_CPU_TYPE(ARCHNAME, ENUM)
#endif
-X86_CPU_TYPE_COMPAT_WITH_ALIAS("bonnell", INTEL_BONNELL, "bonnell", "atom")
-X86_CPU_TYPE_COMPAT ("core2", INTEL_CORE2, "core2")
-X86_CPU_TYPE_COMPAT ("nehalem", INTEL_COREI7, "corei7")
-X86_CPU_TYPE_COMPAT_WITH_ALIAS("amdfam10", AMDFAM10H, "amdfam10h", "amdfam10")
-X86_CPU_TYPE_COMPAT_WITH_ALIAS("bdver1", AMDFAM15H, "amdfam15h", "amdfam15")
-X86_CPU_TYPE_COMPAT_WITH_ALIAS("silvermont", INTEL_SILVERMONT, "silvermont", "slm")
-X86_CPU_TYPE_COMPAT ("knl", INTEL_KNL, "knl")
-X86_CPU_TYPE_COMPAT ("btver1", AMD_BTVER1, "btver1")
-X86_CPU_TYPE_COMPAT ("btver2", AMD_BTVER2, "btver2")
-X86_CPU_TYPE_COMPAT ("znver1", AMDFAM17H, "amdfam17h")
-X86_CPU_TYPE_COMPAT ("knm", INTEL_KNM, "knm")
+X86_CPU_TYPE_COMPAT_WITH_ALIAS("bonnell", INTEL_BONNELL, "bonnell", "atom")
+X86_CPU_TYPE_COMPAT ("core2", INTEL_CORE2, "core2")
+X86_CPU_TYPE_COMPAT ("nehalem", INTEL_COREI7, "corei7")
+X86_CPU_TYPE_COMPAT_WITH_ALIAS("amdfam10", AMDFAM10H, "amdfam10h", "amdfam10")
+X86_CPU_TYPE_COMPAT_WITH_ALIAS("bdver1", AMDFAM15H, "amdfam15h", "amdfam15")
+X86_CPU_TYPE_COMPAT_WITH_ALIAS("silvermont", INTEL_SILVERMONT, "silvermont", "slm")
+X86_CPU_TYPE_COMPAT ("knl", INTEL_KNL, "knl")
+X86_CPU_TYPE_COMPAT ("btver1", AMD_BTVER1, "btver1")
+X86_CPU_TYPE_COMPAT ("btver2", AMD_BTVER2, "btver2")
+X86_CPU_TYPE_COMPAT ("znver1", AMDFAM17H, "amdfam17h")
+X86_CPU_TYPE_COMPAT ("knm", INTEL_KNM, "knm")
+X86_CPU_TYPE_COMPAT ("goldmont", INTEL_GOLDMONT, "goldmont")
+X86_CPU_TYPE_COMPAT ("goldmont-plus", INTEL_GOLDMONT_PLUS, "goldmont-plus")
+X86_CPU_TYPE_COMPAT ("tremont", INTEL_TREMONT, "tremont")
// Entries below this are not in libgcc/compiler-rt.
X86_CPU_TYPE ("i386", INTEL_i386)
X86_CPU_TYPE ("i486", INTEL_i486)
@@ -64,9 +66,6 @@
X86_CPU_TYPE ("athlon-xp", AMD_ATHLON_XP)
X86_CPU_TYPE ("k8", AMD_K8)
X86_CPU_TYPE ("k8-sse3", AMD_K8SSE3)
-X86_CPU_TYPE ("goldmont", INTEL_GOLDMONT)
-X86_CPU_TYPE ("goldmont-plus", INTEL_GOLDMONT_PLUS)
-X86_CPU_TYPE ("tremont", INTEL_TREMONT)
#undef X86_CPU_TYPE_COMPAT_WITH_ALIAS
#undef X86_CPU_TYPE_COMPAT
#undef X86_CPU_TYPE
@@ -97,9 +96,12 @@
X86_CPU_SUBTYPE_COMPAT("skylake", INTEL_COREI7_SKYLAKE, "skylake")
X86_CPU_SUBTYPE_COMPAT("skylake-avx512", INTEL_COREI7_SKYLAKE_AVX512, "skylake-avx512")
X86_CPU_SUBTYPE_COMPAT("cannonlake", INTEL_COREI7_CANNONLAKE, "cannonlake")
+X86_CPU_SUBTYPE_COMPAT("icelake-client", INTEL_COREI7_ICELAKE_CLIENT, "icelake-client")
+X86_CPU_SUBTYPE_COMPAT("icelake-server", INTEL_COREI7_ICELAKE_SERVER, "icelake-server")
// Entries below this are not in libgcc/compiler-rt.
X86_CPU_SUBTYPE ("core2", INTEL_CORE2_65)
X86_CPU_SUBTYPE ("penryn", INTEL_CORE2_45)
+X86_CPU_SUBTYPE ("cascadelake", INTEL_COREI7_CASCADELAKE)
X86_CPU_SUBTYPE ("k6", AMDPENTIUM_K6)
X86_CPU_SUBTYPE ("k6-2", AMDPENTIUM_K62)
X86_CPU_SUBTYPE ("k6-3", AMDPENTIUM_K63)
@@ -147,11 +149,16 @@
X86_FEATURE_COMPAT(28, FEATURE_AVX5124VNNIW, "avx5124vnniw")
X86_FEATURE_COMPAT(29, FEATURE_AVX5124FMAPS, "avx5124fmaps")
X86_FEATURE_COMPAT(30, FEATURE_AVX512VPOPCNTDQ, "avx512vpopcntdq")
+X86_FEATURE_COMPAT(31, FEATURE_AVX512VBMI2, "avx512vbmi2")
+X86_FEATURE_COMPAT(32, FEATURE_GFNI, "gfni")
+X86_FEATURE_COMPAT(33, FEATURE_VPCLMULQDQ, "vpclmulqdq")
+X86_FEATURE_COMPAT(34, FEATURE_AVX512VNNI, "avx512vnni")
+X86_FEATURE_COMPAT(35, FEATURE_AVX512BITALG, "avx512bitalg")
// Features below here are not in libgcc/compiler-rt.
-X86_FEATURE (32, FEATURE_MOVBE)
-X86_FEATURE (33, FEATURE_ADX)
-X86_FEATURE (34, FEATURE_EM64T)
-X86_FEATURE (35, FEATURE_CLFLUSHOPT)
-X86_FEATURE (36, FEATURE_SHA)
+X86_FEATURE (64, FEATURE_MOVBE)
+X86_FEATURE (65, FEATURE_ADX)
+X86_FEATURE (66, FEATURE_EM64T)
+X86_FEATURE (67, FEATURE_CLFLUSHOPT)
+X86_FEATURE (68, FEATURE_SHA)
#undef X86_FEATURE_COMPAT
#undef X86_FEATURE
diff --git a/linux-x64/clang/include/llvm/Support/YAMLParser.h b/linux-x64/clang/include/llvm/Support/YAMLParser.h
index 5b031a9..3570119 100644
--- a/linux-x64/clang/include/llvm/Support/YAMLParser.h
+++ b/linux-x64/clang/include/llvm/Support/YAMLParser.h
@@ -1,9 +1,8 @@
//===- YAMLParser.h - Simple YAML parser ------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/YAMLTraits.h b/linux-x64/clang/include/llvm/Support/YAMLTraits.h
index 6836aa2..e991f3b 100644
--- a/linux-x64/clang/include/llvm/Support/YAMLTraits.h
+++ b/linux-x64/clang/include/llvm/Support/YAMLTraits.h
@@ -1,9 +1,8 @@
//===- llvm/Support/YAMLTraits.h --------------------------------*- C++ -*-===//
//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -39,6 +38,12 @@
namespace llvm {
namespace yaml {
+enum class NodeKind : uint8_t {
+ Scalar,
+ Map,
+ Sequence,
+};
+
struct EmptyContext {};
/// This class should be specialized by any type that needs to be converted
@@ -145,14 +150,14 @@
// Must provide:
//
// Function to write the value as a string:
- //static void output(const T &value, void *ctxt, llvm::raw_ostream &out);
+ // static void output(const T &value, void *ctxt, llvm::raw_ostream &out);
//
// Function to convert a string to a value. Returns the empty
// StringRef on success or an error string if string is malformed:
- //static StringRef input(StringRef scalar, void *ctxt, T &value);
+ // static StringRef input(StringRef scalar, void *ctxt, T &value);
//
// Function to determine if the value should be quoted.
- //static QuotingType mustQuote(StringRef);
+ // static QuotingType mustQuote(StringRef);
};
/// This class should be specialized by type that requires custom conversion
@@ -163,7 +168,7 @@
/// static void output(const MyType &Value, void*, llvm::raw_ostream &Out)
/// {
/// // stream out custom formatting
-/// Out << Val;
+/// Out << Value;
/// }
/// static StringRef input(StringRef Scalar, void*, MyType &Value) {
/// // parse scalar and set `value`
@@ -181,6 +186,47 @@
// Function to convert a string to a value. Returns the empty
// StringRef on success or an error string if string is malformed:
// static StringRef input(StringRef Scalar, void *ctxt, T &Value);
+ //
+ // Optional:
+ // static StringRef inputTag(T &Val, std::string Tag)
+ // static void outputTag(const T &Val, raw_ostream &Out)
+};
+
+/// This class should be specialized by type that requires custom conversion
+/// to/from a YAML scalar with optional tags. For example:
+///
+/// template <>
+/// struct TaggedScalarTraits<MyType> {
+/// static void output(const MyType &Value, void*, llvm::raw_ostream
+/// &ScalarOut, llvm::raw_ostream &TagOut)
+/// {
+/// // stream out custom formatting including optional Tag
+/// Out << Value;
+/// }
+/// static StringRef input(StringRef Scalar, StringRef Tag, void*, MyType
+/// &Value) {
+/// // parse scalar and set `value`
+/// // return empty string on success, or error string
+/// return StringRef();
+/// }
+/// static QuotingType mustQuote(const MyType &Value, StringRef) {
+/// return QuotingType::Single;
+/// }
+/// };
+template <typename T> struct TaggedScalarTraits {
+ // Must provide:
+ //
+ // Function to write the value and tag as strings:
+ // static void output(const T &Value, void *ctx, llvm::raw_ostream &ScalarOut,
+ // llvm::raw_ostream &TagOut);
+ //
+ // Function to convert a string to a value. Returns the empty
+ // StringRef on success or an error string if string is malformed:
+ // static StringRef input(StringRef Scalar, StringRef Tag, void *ctxt, T
+ // &Value);
+ //
+ // Function to determine if the value should be quoted.
+ // static QuotingType mustQuote(const T &Value, StringRef Scalar);
};
/// This class should be specialized by any type that needs to be converted
@@ -234,6 +280,31 @@
// static void output(IO &io, T &elem);
};
+/// This class should be specialized by any type that can be represented as
+/// a scalar, map, or sequence, decided dynamically. For example:
+///
+/// typedef std::unique_ptr<MyBase> MyPoly;
+///
+/// template<>
+/// struct PolymorphicTraits<MyPoly> {
+/// static NodeKind getKind(const MyPoly &poly) {
+/// return poly->getKind();
+/// }
+/// static MyScalar& getAsScalar(MyPoly &poly) {
+/// if (!poly || !isa<MyScalar>(poly))
+/// poly.reset(new MyScalar());
+/// return *cast<MyScalar>(poly.get());
+/// }
+/// // ...
+/// };
+template <typename T> struct PolymorphicTraits {
+ // Must provide:
+ // static NodeKind getKind(const T &poly);
+ // static scalar_type &getAsScalar(T &poly);
+ // static map_type &getAsMap(T &poly);
+ // static sequence_type &getAsSequence(T &poly);
+};
+
// Only used for better diagnostics of missing traits
template <typename T>
struct MissingTrait;
@@ -250,7 +321,6 @@
template <typename U>
static double test(...);
-public:
static bool const value =
(sizeof(test<ScalarEnumerationTraits<T>>(nullptr)) == 1);
};
@@ -267,7 +337,6 @@
template <typename U>
static double test(...);
-public:
static bool const value = (sizeof(test<ScalarBitSetTraits<T>>(nullptr)) == 1);
};
@@ -287,7 +356,6 @@
template <typename U>
static double test(...);
-public:
static bool const value =
(sizeof(test<ScalarTraits<T>>(nullptr, nullptr, nullptr)) == 1);
};
@@ -306,11 +374,28 @@
template <typename U>
static double test(...);
-public:
static bool const value =
(sizeof(test<BlockScalarTraits<T>>(nullptr, nullptr)) == 1);
};
+// Test if TaggedScalarTraits<T> is defined on type T.
+template <class T> struct has_TaggedScalarTraits {
+ using Signature_input = StringRef (*)(StringRef, StringRef, void *, T &);
+ using Signature_output = void (*)(const T &, void *, raw_ostream &,
+ raw_ostream &);
+ using Signature_mustQuote = QuotingType (*)(const T &, StringRef);
+
+ template <typename U>
+ static char test(SameType<Signature_input, &U::input> *,
+ SameType<Signature_output, &U::output> *,
+ SameType<Signature_mustQuote, &U::mustQuote> *);
+
+ template <typename U> static double test(...);
+
+ static bool const value =
+ (sizeof(test<TaggedScalarTraits<T>>(nullptr, nullptr, nullptr)) == 1);
+};
+
// Test if MappingContextTraits<T> is defined on type T.
template <class T, class Context> struct has_MappingTraits {
using Signature_mapping = void (*)(class IO &, T &, Context &);
@@ -321,7 +406,6 @@
template <typename U>
static double test(...);
-public:
static bool const value =
(sizeof(test<MappingContextTraits<T, Context>>(nullptr)) == 1);
};
@@ -335,7 +419,6 @@
template <typename U> static double test(...);
-public:
static bool const value = (sizeof(test<MappingTraits<T>>(nullptr)) == 1);
};
@@ -349,7 +432,6 @@
template <typename U>
static double test(...);
-public:
static bool const value =
(sizeof(test<MappingContextTraits<T, Context>>(nullptr)) == 1);
};
@@ -363,7 +445,6 @@
template <typename U> static double test(...);
-public:
static bool const value = (sizeof(test<MappingTraits<T>>(nullptr)) == 1);
};
@@ -379,7 +460,6 @@
template <typename U>
static double test(...);
-public:
static bool const value = (sizeof(test<SequenceTraits<T>>(nullptr)) == 1);
};
@@ -395,7 +475,6 @@
template <typename U>
static double test(...);
-public:
static bool const value =
(sizeof(test<CustomMappingTraits<T>>(nullptr)) == 1);
};
@@ -425,7 +504,6 @@
template<typename C>
static char (&f(...))[2];
-public:
static bool const value = sizeof(f<Derived>(nullptr)) == 2;
};
@@ -446,10 +524,20 @@
template <typename U>
static double test(...);
-public:
static bool const value = (sizeof(test<DocumentListTraits<T>>(nullptr))==1);
};
+template <class T> struct has_PolymorphicTraits {
+ using Signature_getKind = NodeKind (*)(const T &);
+
+ template <typename U>
+ static char test(SameType<Signature_getKind, &U::getKind> *);
+
+ template <typename U> static double test(...);
+
+ static bool const value = (sizeof(test<PolymorphicTraits<T>>(nullptr)) == 1);
+};
+
inline bool isNumeric(StringRef S) {
const static auto skipDigits = [](StringRef Input) {
return Input.drop_front(
@@ -590,7 +678,6 @@
// Safe scalar characters.
case '_':
case '-':
- case '/':
case '^':
case '.':
case ',':
@@ -607,6 +694,12 @@
// DEL (0x7F) are excluded from the allowed character range.
case 0x7F:
return QuotingType::Double;
+ // Forward slash is allowed to be unquoted, but we quote it anyway. We have
+ // many tests that use FileCheck against YAML output, and this output often
+ // contains paths. If we quote backslashes but not forward slashes then
+ // paths will come out either quoted or unquoted depending on which platform
+ // the test is run on, making FileCheck comparisons difficult.
+ case '/':
default: {
// C0 control block (0x0 - 0x1F) is excluded from the allowed character
// range.
@@ -633,10 +726,12 @@
!has_ScalarBitSetTraits<T>::value &&
!has_ScalarTraits<T>::value &&
!has_BlockScalarTraits<T>::value &&
+ !has_TaggedScalarTraits<T>::value &&
!has_MappingTraits<T, Context>::value &&
!has_SequenceTraits<T>::value &&
!has_CustomMappingTraits<T>::value &&
- !has_DocumentListTraits<T>::value> {};
+ !has_DocumentListTraits<T>::value &&
+ !has_PolymorphicTraits<T>::value> {};
template <typename T, typename Context>
struct validatedMappingTraits
@@ -690,6 +785,9 @@
virtual void scalarString(StringRef &, QuotingType) = 0;
virtual void blockScalarString(StringRef &) = 0;
+ virtual void scalarTag(std::string &) = 0;
+
+ virtual NodeKind getNodeKind() = 0;
virtual void setError(const Twine &) = 0;
@@ -924,6 +1022,31 @@
}
}
+template <typename T>
+typename std::enable_if<has_TaggedScalarTraits<T>::value, void>::type
+yamlize(IO &io, T &Val, bool, EmptyContext &Ctx) {
+ if (io.outputting()) {
+ std::string ScalarStorage, TagStorage;
+ raw_string_ostream ScalarBuffer(ScalarStorage), TagBuffer(TagStorage);
+ TaggedScalarTraits<T>::output(Val, io.getContext(), ScalarBuffer,
+ TagBuffer);
+ io.scalarTag(TagBuffer.str());
+ StringRef ScalarStr = ScalarBuffer.str();
+ io.scalarString(ScalarStr,
+ TaggedScalarTraits<T>::mustQuote(Val, ScalarStr));
+ } else {
+ std::string Tag;
+ io.scalarTag(Tag);
+ StringRef Str;
+ io.scalarString(Str, QuotingType::None);
+ StringRef Result =
+ TaggedScalarTraits<T>::input(Str, Tag, io.getContext(), Val);
+ if (!Result.empty()) {
+ io.setError(Twine(Result));
+ }
+ }
+}
+
template <typename T, typename Context>
typename std::enable_if<validatedMappingTraits<T, Context>::value, void>::type
yamlize(IO &io, T &Val, bool, Context &Ctx) {
@@ -980,6 +1103,20 @@
}
template <typename T>
+typename std::enable_if<has_PolymorphicTraits<T>::value, void>::type
+yamlize(IO &io, T &Val, bool, EmptyContext &Ctx) {
+ switch (io.outputting() ? PolymorphicTraits<T>::getKind(Val)
+ : io.getNodeKind()) {
+ case NodeKind::Scalar:
+ return yamlize(io, PolymorphicTraits<T>::getAsScalar(Val), true, Ctx);
+ case NodeKind::Map:
+ return yamlize(io, PolymorphicTraits<T>::getAsMap(Val), true, Ctx);
+ case NodeKind::Sequence:
+ return yamlize(io, PolymorphicTraits<T>::getAsSequence(Val), true, Ctx);
+ }
+}
+
+template <typename T>
typename std::enable_if<missingTraits<T, EmptyContext>::value, void>::type
yamlize(IO &io, T &Val, bool, EmptyContext &Ctx) {
char missing_yaml_trait_for_type[sizeof(MissingTrait<T>)];
@@ -1257,6 +1394,8 @@
void endBitSetScalar() override;
void scalarString(StringRef &, QuotingType) override;
void blockScalarString(StringRef &) override;
+ void scalarTag(std::string &) override;
+ NodeKind getNodeKind() override;
void setError(const Twine &message) override;
bool canElideEmptySequence() override;
@@ -1402,6 +1541,8 @@
void endBitSetScalar() override;
void scalarString(StringRef &, QuotingType) override;
void blockScalarString(StringRef &) override;
+ void scalarTag(std::string &) override;
+ NodeKind getNodeKind() override;
void setError(const Twine &message) override;
bool canElideEmptySequence() override;
@@ -1421,14 +1562,21 @@
void flowKey(StringRef Key);
enum InState {
- inSeq,
- inFlowSeq,
+ inSeqFirstElement,
+ inSeqOtherElement,
+ inFlowSeqFirstElement,
+ inFlowSeqOtherElement,
inMapFirstKey,
inMapOtherKey,
inFlowMapFirstKey,
inFlowMapOtherKey
};
+ static bool inSeqAnyElement(InState State);
+ static bool inFlowSeqAnyElement(InState State);
+ static bool inMapAnyKey(InState State);
+ static bool inFlowMapAnyKey(InState State);
+
raw_ostream &Out;
int WrapColumn;
SmallVector<InState, 8> StateStack;
@@ -1564,6 +1712,16 @@
return In;
}
+// Define non-member operator>> so that Input can stream in a polymorphic type.
+template <typename T>
+inline typename std::enable_if<has_PolymorphicTraits<T>::value, Input &>::type
+operator>>(Input &In, T &Val) {
+ EmptyContext Ctx;
+ if (In.setCurrentDocument())
+ yamlize(In, Val, true, Ctx);
+ return In;
+}
+
// Provide better error message about types missing a trait specialization
template <typename T>
inline typename std::enable_if<missingTraits<T, EmptyContext>::value,
@@ -1652,6 +1810,24 @@
return Out;
}
+// Define non-member operator<< so that Output can stream out a polymorphic
+// type.
+template <typename T>
+inline typename std::enable_if<has_PolymorphicTraits<T>::value, Output &>::type
+operator<<(Output &Out, T &Val) {
+ EmptyContext Ctx;
+ Out.beginDocuments();
+ if (Out.preflightDocument(0)) {
+ // FIXME: The parser does not support explicit documents terminated with a
+ // plain scalar; the end-marker is included as part of the scalar token.
+ assert(PolymorphicTraits<T>::getKind(Val) != NodeKind::Scalar && "plain scalar documents are not supported");
+ yamlize(Out, Val, true, Ctx);
+ Out.postflightDocument();
+ }
+ Out.endDocuments();
+ return Out;
+}
+
// Provide better error message about types missing a trait specialization
template <typename T>
inline typename std::enable_if<missingTraits<T, EmptyContext>::value,
diff --git a/linux-x64/clang/include/llvm/Support/circular_raw_ostream.h b/linux-x64/clang/include/llvm/Support/circular_raw_ostream.h
index b46fd7f..4ecdb17 100644
--- a/linux-x64/clang/include/llvm/Support/circular_raw_ostream.h
+++ b/linux-x64/clang/include/llvm/Support/circular_raw_ostream.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/circular_raw_ostream.h - Buffered streams --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/raw_os_ostream.h b/linux-x64/clang/include/llvm/Support/raw_os_ostream.h
index a983aeb..c51a94d 100644
--- a/linux-x64/clang/include/llvm/Support/raw_os_ostream.h
+++ b/linux-x64/clang/include/llvm/Support/raw_os_ostream.h
@@ -1,9 +1,8 @@
//===- raw_os_ostream.h - std::ostream adaptor for raw_ostream --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/raw_ostream.h b/linux-x64/clang/include/llvm/Support/raw_ostream.h
index 9a86f3a..1eb13c7 100644
--- a/linux-x64/clang/include/llvm/Support/raw_ostream.h
+++ b/linux-x64/clang/include/llvm/Support/raw_ostream.h
@@ -1,9 +1,8 @@
//===--- raw_ostream.h - Raw output stream ----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -554,6 +553,8 @@
raw_ostream &OS;
SmallVector<char, 0> Buffer;
+ virtual void anchor() override;
+
public:
buffer_ostream(raw_ostream &OS) : raw_svector_ostream(Buffer), OS(OS) {}
~buffer_ostream() override { OS << str(); }
diff --git a/linux-x64/clang/include/llvm/Support/raw_sha1_ostream.h b/linux-x64/clang/include/llvm/Support/raw_sha1_ostream.h
index bd55d98..3991691 100644
--- a/linux-x64/clang/include/llvm/Support/raw_sha1_ostream.h
+++ b/linux-x64/clang/include/llvm/Support/raw_sha1_ostream.h
@@ -1,9 +1,8 @@
//==- raw_sha1_ostream.h - raw_ostream that compute SHA1 --*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/thread.h b/linux-x64/clang/include/llvm/Support/thread.h
index 787a513..084ed16 100644
--- a/linux-x64/clang/include/llvm/Support/thread.h
+++ b/linux-x64/clang/include/llvm/Support/thread.h
@@ -1,9 +1,8 @@
//===-- llvm/Support/thread.h - Wrapper for <thread> ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Support/type_traits.h b/linux-x64/clang/include/llvm/Support/type_traits.h
index 55d84f1..c8c6a76 100644
--- a/linux-x64/clang/include/llvm/Support/type_traits.h
+++ b/linux-x64/clang/include/llvm/Support/type_traits.h
@@ -1,9 +1,8 @@
//===- llvm/Support/type_traits.h - Simplfied type traits -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -25,34 +24,6 @@
namespace llvm {
-/// isPodLike - This is a type trait that is used to determine whether a given
-/// type can be copied around with memcpy instead of running ctors etc.
-template <typename T>
-struct isPodLike {
- // std::is_trivially_copyable is available in libc++ with clang, libstdc++
- // that comes with GCC 5.
-#if (__has_feature(is_trivially_copyable) && defined(_LIBCPP_VERSION)) || \
- (defined(__GNUC__) && __GNUC__ >= 5)
- // If the compiler supports the is_trivially_copyable trait use it, as it
- // matches the definition of isPodLike closely.
- static const bool value = std::is_trivially_copyable<T>::value;
-#elif __has_feature(is_trivially_copyable)
- // Use the internal name if the compiler supports is_trivially_copyable but we
- // don't know if the standard library does. This is the case for clang in
- // conjunction with libstdc++ from GCC 4.x.
- static const bool value = __is_trivially_copyable(T);
-#else
- // If we don't know anything else, we can (at least) assume that all non-class
- // types are PODs.
- static const bool value = !std::is_class<T>::value;
-#endif
-};
-
-// std::pair's are pod-like if their elements are.
-template<typename T, typename U>
-struct isPodLike<std::pair<T, U>> {
- static const bool value = isPodLike<T>::value && isPodLike<U>::value;
-};
/// Metafunction that determines whether the given type is either an
/// integral type or an enumeration type, including enum classes.
@@ -119,6 +90,12 @@
move_construction_triviality_helper(move_construction_triviality_helper&&) = default;
~move_construction_triviality_helper() = default;
};
+
+template<class T>
+union trivial_helper {
+ T t;
+};
+
} // end namespace detail
/// An implementation of `std::is_trivially_copy_constructible` since we have
@@ -143,6 +120,78 @@
template <typename T>
struct is_trivially_move_constructible<T &&> : std::true_type {};
+
+template <typename T>
+struct is_copy_assignable {
+ template<class F>
+ static auto get(F*) -> decltype(std::declval<F &>() = std::declval<const F &>(), std::true_type{});
+ static std::false_type get(...);
+ static constexpr bool value = decltype(get((T*)nullptr))::value;
+};
+
+template <typename T>
+struct is_move_assignable {
+ template<class F>
+ static auto get(F*) -> decltype(std::declval<F &>() = std::declval<F &&>(), std::true_type{});
+ static std::false_type get(...);
+ static constexpr bool value = decltype(get((T*)nullptr))::value;
+};
+
+
+// An implementation of `std::is_trivially_copyable` since STL version
+// is not equally supported by all compilers, especially GCC 4.9.
+// Uniform implementation of this trait is important for ABI compatibility
+// as it has an impact on SmallVector's ABI (among others).
+template <typename T>
+class is_trivially_copyable {
+
+ // copy constructors
+ static constexpr bool has_trivial_copy_constructor =
+ std::is_copy_constructible<detail::trivial_helper<T>>::value;
+ static constexpr bool has_deleted_copy_constructor =
+ !std::is_copy_constructible<T>::value;
+
+ // move constructors
+ static constexpr bool has_trivial_move_constructor =
+ std::is_move_constructible<detail::trivial_helper<T>>::value;
+ static constexpr bool has_deleted_move_constructor =
+ !std::is_move_constructible<T>::value;
+
+ // copy assign
+ static constexpr bool has_trivial_copy_assign =
+ is_copy_assignable<detail::trivial_helper<T>>::value;
+ static constexpr bool has_deleted_copy_assign =
+ !is_copy_assignable<T>::value;
+
+ // move assign
+ static constexpr bool has_trivial_move_assign =
+ is_move_assignable<detail::trivial_helper<T>>::value;
+ static constexpr bool has_deleted_move_assign =
+ !is_move_assignable<T>::value;
+
+ // destructor
+ static constexpr bool has_trivial_destructor =
+ std::is_destructible<detail::trivial_helper<T>>::value;
+
+ public:
+
+ static constexpr bool value =
+ has_trivial_destructor &&
+ (has_deleted_move_assign || has_trivial_move_assign) &&
+ (has_deleted_move_constructor || has_trivial_move_constructor) &&
+ (has_deleted_copy_assign || has_trivial_copy_assign) &&
+ (has_deleted_copy_constructor || has_trivial_copy_constructor);
+
+#ifdef HAVE_STD_IS_TRIVIALLY_COPYABLE
+ static_assert(value == std::is_trivially_copyable<T>::value,
+ "inconsistent behavior between llvm:: and std:: implementation of is_trivially_copyable");
+#endif
+};
+template <typename T>
+class is_trivially_copyable<T*> : public std::true_type {
+};
+
+
} // end namespace llvm
// If the compiler supports detecting whether a class is final, define
diff --git a/linux-x64/clang/include/llvm/TableGen/Error.h b/linux-x64/clang/include/llvm/TableGen/Error.h
index de4d3bf..7c83b62 100644
--- a/linux-x64/clang/include/llvm/TableGen/Error.h
+++ b/linux-x64/clang/include/llvm/TableGen/Error.h
@@ -1,9 +1,8 @@
//===- llvm/TableGen/Error.h - tblgen error handling helpers ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/TableGen/Main.h b/linux-x64/clang/include/llvm/TableGen/Main.h
index 670572d..e464cd4 100644
--- a/linux-x64/clang/include/llvm/TableGen/Main.h
+++ b/linux-x64/clang/include/llvm/TableGen/Main.h
@@ -1,9 +1,8 @@
//===- llvm/TableGen/Main.h - tblgen entry point ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/TableGen/Record.h b/linux-x64/clang/include/llvm/TableGen/Record.h
index e022bc8..e4a07bb 100644
--- a/linux-x64/clang/include/llvm/TableGen/Record.h
+++ b/linux-x64/clang/include/llvm/TableGen/Record.h
@@ -1,9 +1,8 @@
//===- llvm/TableGen/Record.h - Classes for Table Records -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -316,6 +315,7 @@
IK_TernOpInit,
IK_UnOpInit,
IK_LastOpInit,
+ IK_CondOpInit,
IK_FoldOpInit,
IK_IsAOpInit,
IK_StringInit,
@@ -912,6 +912,83 @@
std::string getAsString() const override;
};
+/// !cond(condition_1: value1, ... , condition_n: value)
+/// Selects the first value for which condition is true.
+/// Otherwise reports an error.
+class CondOpInit final : public TypedInit, public FoldingSetNode,
+ public TrailingObjects<CondOpInit, Init *> {
+ unsigned NumConds;
+ RecTy *ValType;
+
+ CondOpInit(unsigned NC, RecTy *Type)
+ : TypedInit(IK_CondOpInit, Type),
+ NumConds(NC), ValType(Type) {}
+
+ size_t numTrailingObjects(OverloadToken<Init *>) const {
+ return 2*NumConds;
+ }
+
+public:
+ CondOpInit(const CondOpInit &) = delete;
+ CondOpInit &operator=(const CondOpInit &) = delete;
+
+ static bool classof(const Init *I) {
+ return I->getKind() == IK_CondOpInit;
+ }
+
+ static CondOpInit *get(ArrayRef<Init*> C, ArrayRef<Init*> V,
+ RecTy *Type);
+
+ void Profile(FoldingSetNodeID &ID) const;
+
+ RecTy *getValType() const { return ValType; }
+
+ unsigned getNumConds() const { return NumConds; }
+
+ Init *getCond(unsigned Num) const {
+ assert(Num < NumConds && "Condition number out of range!");
+ return getTrailingObjects<Init *>()[Num];
+ }
+
+ Init *getVal(unsigned Num) const {
+ assert(Num < NumConds && "Val number out of range!");
+ return getTrailingObjects<Init *>()[Num+NumConds];
+ }
+
+ ArrayRef<Init *> getConds() const {
+ return makeArrayRef(getTrailingObjects<Init *>(), NumConds);
+ }
+
+ ArrayRef<Init *> getVals() const {
+ return makeArrayRef(getTrailingObjects<Init *>()+NumConds, NumConds);
+ }
+
+ Init *Fold(Record *CurRec) const;
+
+ Init *resolveReferences(Resolver &R) const override;
+
+ bool isConcrete() const override;
+ bool isComplete() const override;
+ std::string getAsString() const override;
+
+ using const_case_iterator = SmallVectorImpl<Init*>::const_iterator;
+ using const_val_iterator = SmallVectorImpl<Init*>::const_iterator;
+
+ inline const_case_iterator arg_begin() const { return getConds().begin(); }
+ inline const_case_iterator arg_end () const { return getConds().end(); }
+
+ inline size_t case_size () const { return NumConds; }
+ inline bool case_empty() const { return NumConds == 0; }
+
+ inline const_val_iterator name_begin() const { return getVals().begin();}
+ inline const_val_iterator name_end () const { return getVals().end(); }
+
+ inline size_t val_size () const { return NumConds; }
+ inline bool val_empty() const { return NumConds == 0; }
+
+ Init *getBit(unsigned Bit) const override;
+};
+
/// !foldl (a, b, expr, start, lst) - Fold over a list.
class FoldOpInit : public TypedInit, public FoldingSetNode {
private:
diff --git a/linux-x64/clang/include/llvm/TableGen/SearchableTable.td b/linux-x64/clang/include/llvm/TableGen/SearchableTable.td
index 1089d36..2680c71 100644
--- a/linux-x64/clang/include/llvm/TableGen/SearchableTable.td
+++ b/linux-x64/clang/include/llvm/TableGen/SearchableTable.td
@@ -1,9 +1,8 @@
//===- SearchableTable.td ----------------------------------*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/TableGen/SetTheory.h b/linux-x64/clang/include/llvm/TableGen/SetTheory.h
index 4b32f9e..3515642 100644
--- a/linux-x64/clang/include/llvm/TableGen/SetTheory.h
+++ b/linux-x64/clang/include/llvm/TableGen/SetTheory.h
@@ -1,9 +1,8 @@
//===- SetTheory.h - Generate ordered sets from DAG expressions -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/TableGen/StringMatcher.h b/linux-x64/clang/include/llvm/TableGen/StringMatcher.h
index 3aa3540..795b7a6 100644
--- a/linux-x64/clang/include/llvm/TableGen/StringMatcher.h
+++ b/linux-x64/clang/include/llvm/TableGen/StringMatcher.h
@@ -1,9 +1,8 @@
//===- StringMatcher.h - Generate a matcher for input strings ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/TableGen/StringToOffsetTable.h b/linux-x64/clang/include/llvm/TableGen/StringToOffsetTable.h
index 4b11e88..76ce518 100644
--- a/linux-x64/clang/include/llvm/TableGen/StringToOffsetTable.h
+++ b/linux-x64/clang/include/llvm/TableGen/StringToOffsetTable.h
@@ -1,9 +1,8 @@
//===- StringToOffsetTable.h - Emit a big concatenated string ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/TableGen/TableGenBackend.h b/linux-x64/clang/include/llvm/TableGen/TableGenBackend.h
index d226f1f..a426e42 100644
--- a/linux-x64/clang/include/llvm/TableGen/TableGenBackend.h
+++ b/linux-x64/clang/include/llvm/TableGen/TableGenBackend.h
@@ -1,9 +1,8 @@
//===- llvm/TableGen/TableGenBackend.h - Backend utilities ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -23,6 +22,8 @@
/// raw_ostream.
void emitSourceFileHeader(StringRef Desc, raw_ostream &OS);
+extern bool TimeRegions;
+
} // End llvm namespace
#endif
diff --git a/linux-x64/clang/include/llvm/Target/CodeGenCWrappers.h b/linux-x64/clang/include/llvm/Target/CodeGenCWrappers.h
index 3ad77c5..a995463 100644
--- a/linux-x64/clang/include/llvm/Target/CodeGenCWrappers.h
+++ b/linux-x64/clang/include/llvm/Target/CodeGenCWrappers.h
@@ -1,9 +1,8 @@
//===- llvm/Target/CodeGenCWrappers.h - CodeGen C Wrappers ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Target/GenericOpcodes.td b/linux-x64/clang/include/llvm/Target/GenericOpcodes.td
index 399cea9..e4b452e 100644
--- a/linux-x64/clang/include/llvm/Target/GenericOpcodes.td
+++ b/linux-x64/clang/include/llvm/Target/GenericOpcodes.td
@@ -1,9 +1,8 @@
//===-- GenericOpcodes.td - Opcodes used with GlobalISel ---*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -93,12 +92,14 @@
let hasSideEffects = 0;
}
+// Only supports scalar result types
def G_CONSTANT : GenericInstruction {
let OutOperandList = (outs type0:$dst);
let InOperandList = (ins unknown:$imm);
let hasSideEffects = 0;
}
+// Only supports scalar result types
def G_FCONSTANT : GenericInstruction {
let OutOperandList = (outs type0:$dst);
let InOperandList = (ins unknown:$imm);
@@ -122,31 +123,31 @@
def G_CTLZ : GenericInstruction {
let OutOperandList = (outs type0:$dst);
- let InOperandList = (ins type0:$src);
+ let InOperandList = (ins type1:$src);
let hasSideEffects = 0;
}
def G_CTLZ_ZERO_UNDEF : GenericInstruction {
let OutOperandList = (outs type0:$dst);
- let InOperandList = (ins type0:$src);
+ let InOperandList = (ins type1:$src);
let hasSideEffects = 0;
}
def G_CTTZ : GenericInstruction {
let OutOperandList = (outs type0:$dst);
- let InOperandList = (ins type0:$src);
+ let InOperandList = (ins type1:$src);
let hasSideEffects = 0;
}
def G_CTTZ_ZERO_UNDEF : GenericInstruction {
let OutOperandList = (outs type0:$dst);
- let InOperandList = (ins type0:$src);
+ let InOperandList = (ins type1:$src);
let hasSideEffects = 0;
}
def G_CTPOP : GenericInstruction {
let OutOperandList = (outs type0:$dst);
- let InOperandList = (ins type0:$src);
+ let InOperandList = (ins type1:$src);
let hasSideEffects = 0;
}
@@ -255,21 +256,21 @@
// Generic left-shift.
def G_SHL : GenericInstruction {
let OutOperandList = (outs type0:$dst);
- let InOperandList = (ins type0:$src1, type0:$src2);
+ let InOperandList = (ins type0:$src1, type1:$src2);
let hasSideEffects = 0;
}
// Generic logical right-shift.
def G_LSHR : GenericInstruction {
let OutOperandList = (outs type0:$dst);
- let InOperandList = (ins type0:$src1, type0:$src2);
+ let InOperandList = (ins type0:$src1, type1:$src2);
let hasSideEffects = 0;
}
// Generic arithmetic right-shift.
def G_ASHR : GenericInstruction {
let OutOperandList = (outs type0:$dst);
- let InOperandList = (ins type0:$src1, type0:$src2);
+ let InOperandList = (ins type0:$src1, type1:$src2);
let hasSideEffects = 0;
}
@@ -454,6 +455,12 @@
let hasSideEffects = 0;
}
+def G_FCANONICALIZE : GenericInstruction {
+ let OutOperandList = (outs type0:$dst);
+ let InOperandList = (ins type0:$src);
+ let hasSideEffects = 0;
+}
+
//------------------------------------------------------------------------------
// Floating Point Binary ops.
//------------------------------------------------------------------------------
@@ -540,6 +547,51 @@
let hasSideEffects = 0;
}
+// Floating point base-10 logarithm of a value.
+def G_FLOG10 : GenericInstruction {
+ let OutOperandList = (outs type0:$dst);
+ let InOperandList = (ins type0:$src1);
+ let hasSideEffects = 0;
+}
+
+// Floating point ceiling of a value.
+def G_FCEIL : GenericInstruction {
+ let OutOperandList = (outs type0:$dst);
+ let InOperandList = (ins type0:$src1);
+ let hasSideEffects = 0;
+}
+
+// Floating point cosine of a value.
+def G_FCOS : GenericInstruction {
+ let OutOperandList = (outs type0:$dst);
+ let InOperandList = (ins type0:$src1);
+ let hasSideEffects = 0;
+}
+
+// Floating point sine of a value.
+def G_FSIN : GenericInstruction {
+ let OutOperandList = (outs type0:$dst);
+ let InOperandList = (ins type0:$src1);
+ let hasSideEffects = 0;
+}
+
+// Floating point square root of a value.
+// This returns NaN for negative nonzero values.
+// NOTE: Unlike libm sqrt(), this never sets errno. In all other respects it's
+// libm-conformant.
+def G_FSQRT : GenericInstruction {
+ let OutOperandList = (outs type0:$dst);
+ let InOperandList = (ins type0:$src1);
+ let hasSideEffects = 0;
+}
+
+// Floating point floor of a value.
+def G_FFLOOR : GenericInstruction {
+ let OutOperandList = (outs type0:$dst);
+ let InOperandList = (ins type0:$src1);
+ let hasSideEffects = 0;
+}
+
//------------------------------------------------------------------------------
// Opcodes for LLVM Intrinsics
//------------------------------------------------------------------------------
@@ -649,6 +701,9 @@
// Extract multiple registers specified size, starting from blocks given by
// indexes. This will almost certainly be mapped to sub-register COPYs after
// register banks have been selected.
+// The output operands are always ordered from lowest bits to highest:
+// %bits_0_7:(s8), %bits_8_15:(s8),
+// %bits_16_23:(s8), %bits_24_31:(s8) = G_UNMERGE_VALUES %0:(s32)
def G_UNMERGE_VALUES : GenericInstruction {
let OutOperandList = (outs type0:$dst0, variable_ops);
let InOperandList = (ins type1:$src);
@@ -662,13 +717,40 @@
let hasSideEffects = 0;
}
-/// Concatenate multiple registers of the same size into a wider register.
+// Concatenate multiple registers of the same size into a wider register.
+// The input operands are always ordered from lowest bits to highest:
+// %0:(s32) = G_MERGE_VALUES %bits_0_7:(s8), %bits_8_15:(s8),
+// %bits_16_23:(s8), %bits_24_31:(s8)
def G_MERGE_VALUES : GenericInstruction {
let OutOperandList = (outs type0:$dst);
let InOperandList = (ins type1:$src0, variable_ops);
let hasSideEffects = 0;
}
+/// Create a vector from multiple scalar registers. No implicit
+/// conversion is performed (i.e. the result element type must be the
+/// same as all source operands)
+def G_BUILD_VECTOR : GenericInstruction {
+ let OutOperandList = (outs type0:$dst);
+ let InOperandList = (ins type1:$src0, variable_ops);
+ let hasSideEffects = 0;
+}
+
+/// Like G_BUILD_VECTOR, but truncates the larger operand types to fit the
+/// destination vector elt type.
+def G_BUILD_VECTOR_TRUNC : GenericInstruction {
+ let OutOperandList = (outs type0:$dst);
+ let InOperandList = (ins type1:$src0, variable_ops);
+ let hasSideEffects = 0;
+}
+
+/// Create a vector by concatenating vectors together.
+def G_CONCAT_VECTORS : GenericInstruction {
+ let OutOperandList = (outs type0:$dst);
+ let InOperandList = (ins type1:$src0, variable_ops);
+ let hasSideEffects = 0;
+}
+
// Intrinsic without side effects.
def G_INTRINSIC : GenericInstruction {
let OutOperandList = (outs);
diff --git a/linux-x64/clang/include/llvm/Target/GlobalISel/RegisterBank.td b/linux-x64/clang/include/llvm/Target/GlobalISel/RegisterBank.td
index 4dfd139..51578b6 100644
--- a/linux-x64/clang/include/llvm/Target/GlobalISel/RegisterBank.td
+++ b/linux-x64/clang/include/llvm/Target/GlobalISel/RegisterBank.td
@@ -1,9 +1,8 @@
//===- RegisterBank.td - Register bank definitions ---------*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Target/GlobalISel/SelectionDAGCompat.td b/linux-x64/clang/include/llvm/Target/GlobalISel/SelectionDAGCompat.td
index a3d310c..6b0434a 100644
--- a/linux-x64/clang/include/llvm/Target/GlobalISel/SelectionDAGCompat.td
+++ b/linux-x64/clang/include/llvm/Target/GlobalISel/SelectionDAGCompat.td
@@ -1,9 +1,8 @@
//===- TargetGlobalISel.td - Common code for GlobalISel ----*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -88,6 +87,13 @@
def : GINodeEquiv<G_CTLZ_ZERO_UNDEF, ctlz_zero_undef>;
def : GINodeEquiv<G_CTTZ_ZERO_UNDEF, cttz_zero_undef>;
def : GINodeEquiv<G_CTPOP, ctpop>;
+def : GINodeEquiv<G_EXTRACT_VECTOR_ELT, vector_extract>;
+def : GINodeEquiv<G_FCEIL, fceil>;
+def : GINodeEquiv<G_FCOS, fcos>;
+def : GINodeEquiv<G_FSIN, fsin>;
+def : GINodeEquiv<G_FABS, fabs>;
+def : GINodeEquiv<G_FSQRT, fsqrt>;
+def : GINodeEquiv<G_FFLOOR, ffloor>;
// Broadly speaking G_LOAD is equivalent to ISD::LOAD but there are some
// complications that tablegen must take care of. For example, Predicates such
diff --git a/linux-x64/clang/include/llvm/Target/GlobalISel/Target.td b/linux-x64/clang/include/llvm/Target/GlobalISel/Target.td
index 6740f40..538ca65 100644
--- a/linux-x64/clang/include/llvm/Target/GlobalISel/Target.td
+++ b/linux-x64/clang/include/llvm/Target/GlobalISel/Target.td
@@ -1,9 +1,8 @@
//===- Target.td - Define GlobalISel rules -----------------*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Target/Target.td b/linux-x64/clang/include/llvm/Target/Target.td
index 538605a..380e848 100644
--- a/linux-x64/clang/include/llvm/Target/Target.td
+++ b/linux-x64/clang/include/llvm/Target/Target.td
@@ -1,9 +1,8 @@
//===- Target.td - Target Independent TableGen interface ---*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -479,6 +478,7 @@
bit isInsertSubreg = 0; // Is this instruction a kind of insert subreg?
// If so, make sure to override
// TargetInstrInfo::getInsertSubregLikeInputs.
+ bit variadicOpsAreDefs = 0; // Are variadic operands definitions?
// Does the instruction have side effects that are not captured by any
// operands of the instruction or other flags?
@@ -933,6 +933,15 @@
let AsmString = "";
let hasSideEffects = 0; // Note side effect is encoded in an operand.
}
+def INLINEASM_BR : StandardPseudoInstruction {
+ let OutOperandList = (outs);
+ let InOperandList = (ins variable_ops);
+ let AsmString = "";
+ let hasSideEffects = 0; // Note side effect is encoded in an operand.
+ let isTerminator = 1;
+ let isBranch = 1;
+ let isIndirectBranch = 1;
+}
def CFI_INSTRUCTION : StandardPseudoInstruction {
let OutOperandList = (outs);
let InOperandList = (ins i32imm:$id);
@@ -1104,7 +1113,7 @@
let isBranch = 1;
}
def PATCHABLE_OP : StandardPseudoInstruction {
- let OutOperandList = (outs unknown:$dst);
+ let OutOperandList = (outs);
let InOperandList = (ins variable_ops);
let usesCustomInserter = 1;
let mayLoad = 1;
@@ -1164,8 +1173,8 @@
let hasSideEffects = 1;
}
def FENTRY_CALL : StandardPseudoInstruction {
- let OutOperandList = (outs unknown:$dst);
- let InOperandList = (ins variable_ops);
+ let OutOperandList = (outs);
+ let InOperandList = (ins);
let AsmString = "# FEntry call";
let usesCustomInserter = 1;
let mayLoad = 1;
@@ -1555,3 +1564,8 @@
// Pull in the common support for the Global ISel DAG-based selector generation.
//
include "llvm/Target/GlobalISel/SelectionDAGCompat.td"
+
+//===----------------------------------------------------------------------===//
+// Pull in the common support for Pfm Counters generation.
+//
+include "llvm/Target/TargetPfmCounters.td"
diff --git a/linux-x64/clang/include/llvm/Target/TargetCallingConv.td b/linux-x64/clang/include/llvm/Target/TargetCallingConv.td
index 95d2b42..11ed4f5 100644
--- a/linux-x64/clang/include/llvm/Target/TargetCallingConv.td
+++ b/linux-x64/clang/include/llvm/Target/TargetCallingConv.td
@@ -1,9 +1,8 @@
//===- TargetCallingConv.td - Target Calling Conventions ---*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -160,6 +159,11 @@
/// that the target supports.
class CallingConv<list<CCAction> actions> {
list<CCAction> Actions = actions;
+
+ /// If true, this calling convention will be emitted as externally visible in
+ /// the llvm namespaces instead of as a static function.
+ bit Entry = 0;
+
bit Custom = 0;
}
diff --git a/linux-x64/clang/include/llvm/Target/TargetInstrPredicate.td b/linux-x64/clang/include/llvm/Target/TargetInstrPredicate.td
index c4b14eb..5623461 100644
--- a/linux-x64/clang/include/llvm/Target/TargetInstrPredicate.td
+++ b/linux-x64/clang/include/llvm/Target/TargetInstrPredicate.td
@@ -1,35 +1,44 @@
//===- TargetInstrPredicate.td - ---------------------------*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
-// This file defines MCInstPredicate classes and its subclasses.
+// This file defines class MCInstPredicate and its subclasses.
//
-// MCInstPredicate is used to describe constraints on the opcode/operand(s) of
-// an instruction. Each MCInstPredicate class has a well-known semantic, and it
-// is used by a PredicateExpander to generate code for MachineInstr and/or
-// MCInst.
+// MCInstPredicate definitions are used by target scheduling models to describe
+// constraints on instructions.
//
-// MCInstPredicate definitions can be used to construct MCSchedPredicate
-// definitions. An MCSchedPredicate can be used in place of a SchedPredicate
-// when defining SchedReadVariant and SchedWriteVariant used by a processor
-// scheduling model.
-//
-// Here is an example of MCInstPredicate definition:
+// Here is an example of an MCInstPredicate definition in tablegen:
//
// def MCInstPredicateExample : CheckAll<[
// CheckOpcode<[BLR]>,
// CheckIsRegOperand<0>,
// CheckNot<CheckRegOperand<0, LR>>]>;
//
-// Predicate `MCInstPredicateExample` checks that the machine instruction in
-// input is a BLR, and that operand at index 0 is register `LR`.
+// The syntax for MCInstPredicate is declarative, and predicate definitions can
+// be composed together in order to generate more complex constraints.
//
-// That predicate could be used to rewrite the following definition (from
+// The `CheckAll` from the example defines a composition of three different
+// predicates. Definition `MCInstPredicateExample` identifies instructions
+// whose opcode is BLR, and whose first operand is a register different from
+// register `LR`.
+//
+// Every MCInstPredicate class has a well-known semantic in tablegen. For
+// example, `CheckOpcode` is a special type of predicate used to describe a
+// constraint on the value of an instruction opcode.
+//
+// MCInstPredicate definitions are typically used by scheduling models to
+// construct MCSchedPredicate definitions (see the definition of class
+// MCSchedPredicate in llvm/Target/TargetSchedule.td).
+// In particular, an MCSchedPredicate can be used instead of a SchedPredicate
+// when defining the set of SchedReadVariant and SchedWriteVariant of a
+// processor scheduling model.
+//
+// The `MCInstPredicateExample` definition above is equivalent (and therefore
+// could replace) the following definition from a previous ExynosM3 model (see
// AArch64SchedExynosM3.td):
//
// def M3BranchLinkFastPred : SchedPredicate<[{
@@ -37,22 +46,13 @@
// MI->getOperand(0).isReg() &&
// MI->getOperand(0).getReg() != AArch64::LR}]>;
//
-// MCInstPredicate definitions are used to construct MCSchedPredicate (see the
-// definition of class MCSchedPredicate in llvm/Target/TargetSchedule.td). An
-// MCSchedPredicate can be used by a `SchedVar` to associate a predicate with a
-// list of SchedReadWrites. Note that `SchedVar` are used to create SchedVariant
-// definitions.
-//
-// Each MCInstPredicate class has a well known semantic. For example,
-// `CheckOpcode` is only used to check the instruction opcode value.
-//
-// MCInstPredicate classes allow the definition of predicates in a declarative
-// way. These predicates don't require a custom block of C++, and can be used
-// to define conditions on instructions without being bound to a particular
+// The main advantage of using MCInstPredicate instead of SchedPredicate is
+// portability: users don't need to specify predicates in C++. As a consequence
+// of this, MCInstPredicate definitions are not bound to a particular
// representation (i.e. MachineInstr vs MCInst).
//
-// It also means that tablegen backends must know how to parse and expand them
-// into code that works on MCInst (or MachineInst).
+// Tablegen backends know how to expand MCInstPredicate definitions into actual
+// C++ code that works on MachineInstr (and/or MCInst).
//
// Instances of class PredicateExpander (see utils/Tablegen/PredicateExpander.h)
// know how to expand a predicate. For each MCInstPredicate class, there must be
@@ -105,28 +105,50 @@
int SecondIndex = Second;
}
+// Base class for checks on register/immediate operands.
+// It allows users to define checks like:
+// MyFunction(MI->getOperand(Index).getImm()) == Val;
+//
+// In the example above, `MyFunction` is a function that takes as input an
+// immediate operand value, and returns another value. Field `FunctionMapper` is
+// the name of the function to call on the operand value.
+class CheckOperandBase<int Index, string Fn = ""> : MCOperandPredicate<Index> {
+ string FunctionMapper = Fn;
+}
+
// Check that the machine register operand at position `Index` references
// register R. This predicate assumes that we already checked that the machine
// operand at position `Index` is a register operand.
-class CheckRegOperand<int Index, Register R> : MCOperandPredicate<Index> {
+class CheckRegOperand<int Index, Register R> : CheckOperandBase<Index> {
Register Reg = R;
}
// Check if register operand at index `Index` is the invalid register.
-class CheckInvalidRegOperand<int Index> : MCOperandPredicate<Index>;
+class CheckInvalidRegOperand<int Index> : CheckOperandBase<Index>;
// Check that the operand at position `Index` is immediate `Imm`.
-class CheckImmOperand<int Index, int Imm> : MCOperandPredicate<Index> {
+// If field `FunctionMapper` is a non-empty string, then function
+// `FunctionMapper` is applied to the operand value, and the return value is then
+// compared against `Imm`.
+class CheckImmOperand<int Index, int Imm> : CheckOperandBase<Index> {
int ImmVal = Imm;
}
// Similar to CheckImmOperand, however the immediate is not a literal number.
// This is useful when we want to compare the value of an operand against an
// enum value, and we know the actual integer value of that enum.
-class CheckImmOperand_s<int Index, string Value> : MCOperandPredicate<Index> {
+class CheckImmOperand_s<int Index, string Value> : CheckOperandBase<Index> {
string ImmVal = Value;
}
+// Expands to a call to `FunctionMapper` if field `FunctionMapper` is set.
+// Otherwise, it expands to a CheckNot<CheckInvalidRegOperand<Index>>.
+class CheckRegOperandSimple<int Index> : CheckOperandBase<Index>;
+
+// Expands to a call to `FunctionMapper` if field `FunctionMapper` is set.
+// Otherwise, it simply evaluates to TruePred.
+class CheckImmOperandSimple<int Index> : CheckOperandBase<Index>;
+
// Check that the operand at position `Index` is immediate value zero.
class CheckZeroOperand<int Index> : CheckImmOperand<Index, 0>;
@@ -205,13 +227,13 @@
MCStatement Body = body;
}
-// Check that a call to method `Name` in class "XXXGenInstrInfo" (where XXX is
+// Check that a call to method `Name` in class "XXXInstrInfo" (where XXX is
// the name of a target) returns true.
//
// TIIPredicate definitions are used to model calls to the target-specific
// InstrInfo. A TIIPredicate is treated specially by the InstrInfoEmitter
// tablegen backend, which will use it to automatically generate a definition in
-// the target specific `GenInstrInfo` class.
+// the target specific `InstrInfo` class.
//
// There cannot be multiple TIIPredicate definitions with the same name for the
// same target.
@@ -313,7 +335,7 @@
}
// Convenience classes and definitions used by processor scheduling models to
-// describe dependency breaking instructions.
+// describe dependency breaking instructions and move elimination candidates.
let UpdatesOpcodeMask = 1 in {
def IsZeroIdiomDecl : STIPredicateDecl<"isZeroIdiom">;
@@ -323,8 +345,14 @@
} // UpdatesOpcodeMask
+def IsOptimizableRegisterMoveDecl
+ : STIPredicateDecl<"isOptimizableRegisterMove">;
+
class IsZeroIdiomFunction<list<DepBreakingClass> classes>
: STIPredicate<IsZeroIdiomDecl, classes>;
class IsDepBreakingFunction<list<DepBreakingClass> classes>
: STIPredicate<IsDepBreakingDecl, classes>;
+
+class IsOptimizableRegisterMove<list<InstructionEquivalenceClass> classes>
+ : STIPredicate<IsOptimizableRegisterMoveDecl, classes>;
diff --git a/linux-x64/clang/include/llvm/Target/TargetIntrinsicInfo.h b/linux-x64/clang/include/llvm/Target/TargetIntrinsicInfo.h
index 6a92bde..ef571b1 100644
--- a/linux-x64/clang/include/llvm/Target/TargetIntrinsicInfo.h
+++ b/linux-x64/clang/include/llvm/Target/TargetIntrinsicInfo.h
@@ -1,9 +1,8 @@
//===-- llvm/Target/TargetIntrinsicInfo.h - Instruction Info ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Target/TargetItinerary.td b/linux-x64/clang/include/llvm/Target/TargetItinerary.td
index 182054d..b68ed04 100644
--- a/linux-x64/clang/include/llvm/Target/TargetItinerary.td
+++ b/linux-x64/clang/include/llvm/Target/TargetItinerary.td
@@ -1,9 +1,8 @@
//===- TargetItinerary.td - Target Itinierary Description --*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Target/TargetLoweringObjectFile.h b/linux-x64/clang/include/llvm/Target/TargetLoweringObjectFile.h
index 40b77c3..f96e353 100644
--- a/linux-x64/clang/include/llvm/Target/TargetLoweringObjectFile.h
+++ b/linux-x64/clang/include/llvm/Target/TargetLoweringObjectFile.h
@@ -1,9 +1,8 @@
//===-- llvm/Target/TargetLoweringObjectFile.h - Object Info ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -201,6 +200,12 @@
virtual void emitLinkerFlagsForUsed(raw_ostream &OS,
const GlobalValue *GV) const {}
+ /// If supported, return the section to use for the llvm.commandline
+ /// metadata. Otherwise, return nullptr.
+ virtual MCSection *getSectionForCommandLines() const {
+ return nullptr;
+ }
+
protected:
virtual MCSection *SelectSectionForGlobal(const GlobalObject *GO,
SectionKind Kind,
diff --git a/linux-x64/clang/include/llvm/Target/TargetMachine.h b/linux-x64/clang/include/llvm/Target/TargetMachine.h
index e743e9f..7dd9b99 100644
--- a/linux-x64/clang/include/llvm/Target/TargetMachine.h
+++ b/linux-x64/clang/include/llvm/Target/TargetMachine.h
@@ -1,9 +1,8 @@
//===-- llvm/Target/TargetMachine.h - Target Information --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -201,6 +200,9 @@
bool getO0WantsFastISel() { return O0WantsFastISel; }
void setO0WantsFastISel(bool Enable) { O0WantsFastISel = Enable; }
void setGlobalISel(bool Enable) { Options.EnableGlobalISel = Enable; }
+ void setGlobalISelAbort(GlobalISelAbortMode Mode) {
+ Options.GlobalISelAbort = Mode;
+ }
void setMachineOutliner(bool Enable) {
Options.EnableMachineOutliner = Enable;
}
@@ -284,18 +286,6 @@
void getNameWithPrefix(SmallVectorImpl<char> &Name, const GlobalValue *GV,
Mangler &Mang, bool MayAlwaysUsePrivate = false) const;
MCSymbol *getSymbol(const GlobalValue *GV) const;
-
- /// True if the target uses physical regs at Prolog/Epilog insertion
- /// time. If true (most machines), all vregs must be allocated before
- /// PEI. If false (virtual-register machines), then callee-save register
- /// spilling and scavenging are not needed or used.
- virtual bool usesPhysRegsForPEI() const { return true; }
-
- /// True if the target wants to use interprocedural register allocation by
- /// default. The -enable-ipra flag can be used to override this.
- virtual bool useIPRA() const {
- return false;
- }
};
/// This class describes a target machine that is implemented with the LLVM
@@ -349,8 +339,37 @@
bool addAsmPrinter(PassManagerBase &PM, raw_pwrite_stream &Out,
raw_pwrite_stream *DwoOut, CodeGenFileType FileTYpe,
MCContext &Context);
+
+ /// True if the target uses physical regs at Prolog/Epilog insertion
+ /// time. If true (most machines), all vregs must be allocated before
+ /// PEI. If false (virtual-register machines), then callee-save register
+ /// spilling and scavenging are not needed or used.
+ virtual bool usesPhysRegsForPEI() const { return true; }
+
+ /// True if the target wants to use interprocedural register allocation by
+ /// default. The -enable-ipra flag can be used to override this.
+ virtual bool useIPRA() const {
+ return false;
+ }
};
+/// Helper method for getting the code model, returning Default if
+/// CM does not have a value. The tiny and kernel models will produce
+/// an error, so targets that support them or require more complex codemodel
+/// selection logic should implement and call their own getEffectiveCodeModel.
+inline CodeModel::Model getEffectiveCodeModel(Optional<CodeModel::Model> CM,
+ CodeModel::Model Default) {
+ if (CM) {
+ // By default, targets do not support the tiny and kernel models.
+ if (*CM == CodeModel::Tiny)
+ report_fatal_error("Target does not support the tiny CodeModel");
+ if (*CM == CodeModel::Kernel)
+ report_fatal_error("Target does not support the kernel CodeModel");
+ return *CM;
+ }
+ return Default;
+}
+
} // end namespace llvm
#endif // LLVM_TARGET_TARGETMACHINE_H
diff --git a/linux-x64/clang/include/llvm/Target/TargetOptions.h b/linux-x64/clang/include/llvm/Target/TargetOptions.h
index 07ed773..6b76a11 100644
--- a/linux-x64/clang/include/llvm/Target/TargetOptions.h
+++ b/linux-x64/clang/include/llvm/Target/TargetOptions.h
@@ -1,9 +1,8 @@
//===-- llvm/Target/TargetOptions.h - Target Options ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -96,6 +95,14 @@
SCE // Tune debug info for SCE targets (e.g. PS4).
};
+ /// Enable abort calls when global instruction selection fails to lower/select
+ /// an instruction.
+ enum class GlobalISelAbortMode {
+ Disable, // Disable the abort.
+ Enable, // Enable the abort.
+ DisableWithDiag // Disable the abort but emit a diagnostic on failure.
+ };
+
class TargetOptions {
public:
TargetOptions()
@@ -192,6 +199,10 @@
/// EnableGlobalISel - This flag enables global instruction selection.
unsigned EnableGlobalISel : 1;
+ /// EnableGlobalISelAbort - Control abort behaviour when global instruction
+ /// selection fails to lower/select an instruction.
+ GlobalISelAbortMode GlobalISelAbort = GlobalISelAbortMode::Enable;
+
/// UseInitArray - Use .init_array instead of .ctors for static
/// constructors.
unsigned UseInitArray : 1;
diff --git a/linux-x64/clang/include/llvm/Target/TargetPfmCounters.td b/linux-x64/clang/include/llvm/Target/TargetPfmCounters.td
new file mode 100644
index 0000000..e1d5013
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Target/TargetPfmCounters.td
@@ -0,0 +1,49 @@
+//===- TargetPfmCounters.td - Target Pfm Counters -*- tablegen ----------*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines the target-independent interfaces for performance counters.
+
+// Definition of a hardware counters from libpfm identifiers.
+class PfmCounter<string counter> {
+ // The name of the counter that measures events.
+ // The name can be "some_counter + some_other_counter", in which case the
+ // measured value is the sum of events on these counters.
+ string Counter = counter;
+}
+
+// Issue counters can be tied to a ProcResource
+class PfmIssueCounter<string resource_name, string counter>
+ : PfmCounter<counter> {
+ // The name of the ProcResource on which uops are issued. This is used by
+ // llvm-exegesis to compare measurements with values in the SchedModels.
+ // If the CPU has a sched model, this should correspond to the name of a
+ // ProcResource.
+ string ResourceName = resource_name;
+}
+
+def NoPfmCounter : PfmCounter <""> {}
+
+// Set of PfmCounters for measuring sched model characteristics.
+class ProcPfmCounters {
+ // Processors can define how to measure cycles by defining a CycleCounter.
+ PfmCounter CycleCounter = NoPfmCounter;
+ // Processors can define how to measure uops by defining a UopsCounter.
+ PfmCounter UopsCounter = NoPfmCounter;
+ // Processors can define how to measure issued uops by defining IssueCounters.
+ list<PfmIssueCounter> IssueCounters = [];
+}
+
+// A binding of a set of counters to a CPU.
+class PfmCountersBinding<string cpu_name, ProcPfmCounters counters> {
+ string CpuName = cpu_name;
+ ProcPfmCounters Counters = counters;
+}
+
+// Declares the default binding for unbound CPUs for the target.
+class PfmCountersDefaultBinding<ProcPfmCounters counters>
+ : PfmCountersBinding<"", counters> {}
diff --git a/linux-x64/clang/include/llvm/Target/TargetSchedule.td b/linux-x64/clang/include/llvm/Target/TargetSchedule.td
index 7d7ce2d..cbfad5f 100644
--- a/linux-x64/clang/include/llvm/Target/TargetSchedule.td
+++ b/linux-x64/clang/include/llvm/Target/TargetSchedule.td
@@ -1,9 +1,8 @@
//===- TargetSchedule.td - Target Independent Scheduling ---*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -373,6 +372,10 @@
SchedMachineModel SchedModel = ?;
code Predicate = pred;
}
+
+// Define a predicate to be typically used as the default case in a
+// SchedVariant. It the SchedVariant does not use any other predicate based on
+// MCSchedPredicate, this is the default scheduling case used by llvm-mca.
def NoSchedPred : MCSchedPredicate<TruePred>;
// Associate a predicate with a list of SchedReadWrites. By default,
@@ -460,6 +463,10 @@
// - The number of physical registers which can be used for register renaming
// purpose.
// - The cost of a register rename.
+// - The set of registers that allow move elimination.
+// - The maximum number of moves that can be eliminated every cycle.
+// - Whether move elimination is limited to register moves whose input
+// is known to be zero.
//
// The cost of a rename is the number of physical registers allocated by the
// register alias table to map the new definition. By default, register can be
@@ -506,11 +513,35 @@
// partial write is combined with the previous super-register definition. We
// should add support for these cases, and correctly model merge problems with
// partial register accesses.
+//
+// Field MaxMovesEliminatedPerCycle specifies how many moves can be eliminated
+// every cycle. A default value of zero for that field means: there is no limit
+// to the number of moves that can be eliminated by this register file.
+//
+// An instruction MI is a candidate for move elimination if a call to
+// method TargetSubtargetInfo::isOptimizableRegisterMove(MI) returns true (see
+// llvm/CodeGen/TargetSubtargetInfo.h, and llvm/MC/MCInstrAnalysis.h).
+//
+// Subtargets can instantiate tablegen class IsOptimizableRegisterMove (see
+// llvm/Target/TargetInstrPredicate.td) to customize the set of move elimination
+// candidates. By default, no instruction is a valid move elimination candidate.
+//
+// A register move MI is eliminated only if:
+// - MI is a move elimination candidate.
+// - The destination register is from a register class that allows move
+// elimination (see field `AllowMoveElimination` below).
+// - Constraints on the move kind, and the maximum number of moves that can be
+// eliminated per cycle are all met.
+
class RegisterFile<int numPhysRegs, list<RegisterClass> Classes = [],
- list<int> Costs = []> {
+ list<int> Costs = [], list<bit> AllowMoveElim = [],
+ int MaxMoveElimPerCy = 0, bit AllowZeroMoveElimOnly = 0> {
list<RegisterClass> RegClasses = Classes;
list<int> RegCosts = Costs;
+ list<bit> AllowMoveElimination = AllowMoveElim;
int NumPhysRegs = numPhysRegs;
+ int MaxMovesEliminatedPerCycle = MaxMoveElimPerCy;
+ bit AllowZeroMoveEliminationOnly = AllowZeroMoveElimOnly;
SchedMachineModel SchedModel = ?;
}
@@ -530,30 +561,12 @@
SchedMachineModel SchedModel = ?;
}
-// Allow the definition of hardware counters.
-class PfmCounter {
+// Base class for Load/StoreQueue. It is used to identify processor resources
+// which describe load/store queues in the LS unit.
+class MemoryQueue<ProcResource PR> {
+ ProcResource QueueDescriptor = PR;
SchedMachineModel SchedModel = ?;
}
-// Each processor can define how to measure cycles by defining a
-// PfmCycleCounter.
-class PfmCycleCounter<string counter> : PfmCounter {
- string Counter = counter;
-}
-
-// Each ProcResourceUnits can define how to measure issued uops by defining
-// a PfmIssueCounter.
-class PfmIssueCounter<ProcResourceUnits resource, list<string> counters>
- : PfmCounter{
- // The resource units on which uops are issued.
- ProcResourceUnits Resource = resource;
- // The list of counters that measure issue events.
- list<string> Counters = counters;
-}
-
-// Each processor can define how to measure NumMicroOps by defining a
-// PfmUopsCounter.
-class PfmUopsCounter<string counter> : PfmCounter {
- string Counter = counter;
-}
-
+class LoadQueue<ProcResource LDQueue> : MemoryQueue<LDQueue>;
+class StoreQueue<ProcResource STQueue> : MemoryQueue<STQueue>;
diff --git a/linux-x64/clang/include/llvm/Target/TargetSelectionDAG.td b/linux-x64/clang/include/llvm/Target/TargetSelectionDAG.td
index 4e463b9..174d97a 100644
--- a/linux-x64/clang/include/llvm/Target/TargetSelectionDAG.td
+++ b/linux-x64/clang/include/llvm/Target/TargetSelectionDAG.td
@@ -1,9 +1,8 @@
//===- TargetSelectionDAG.td - Common code for DAG isels ---*- tablegen -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -116,12 +115,18 @@
def SDTIntShiftOp : SDTypeProfile<1, 2, [ // shl, sra, srl
SDTCisSameAs<0, 1>, SDTCisInt<0>, SDTCisInt<2>
]>;
+def SDTIntShiftDOp: SDTypeProfile<1, 3, [ // fshl, fshr
+ SDTCisSameAs<0, 1>, SDTCisSameAs<0, 2>, SDTCisInt<0>, SDTCisInt<3>
+]>;
def SDTIntSatNoShOp : SDTypeProfile<1, 2, [ // ssat with no shift
SDTCisSameAs<0, 1>, SDTCisInt<2>
]>;
def SDTIntBinHiLoOp : SDTypeProfile<2, 2, [ // mulhi, mullo, sdivrem, udivrem
SDTCisSameAs<0, 1>, SDTCisSameAs<0, 2>, SDTCisSameAs<0, 3>,SDTCisInt<0>
]>;
+def SDTIntScaledBinOp : SDTypeProfile<1, 3, [ // smulfix, umulfix
+ SDTCisSameAs<0, 1>, SDTCisSameAs<0, 2>, SDTCisInt<0>, SDTCisInt<3>
+]>;
def SDTFPBinOp : SDTypeProfile<1, 2, [ // fadd, fmul, etc.
SDTCisSameAs<0, 1>, SDTCisSameAs<0, 2>, SDTCisFP<0>
@@ -162,7 +167,7 @@
]>;
def SDTExtInvec : SDTypeProfile<1, 1, [ // sext_invec
SDTCisInt<0>, SDTCisVec<0>, SDTCisInt<1>, SDTCisVec<1>,
- SDTCisOpSmallerThanOp<1, 0>, SDTCisSameSizeAs<0,1>
+ SDTCisOpSmallerThanOp<1, 0>
]>;
def SDTSetCC : SDTypeProfile<1, 3, [ // setcc
@@ -259,6 +264,11 @@
def SDTAtomic2 : SDTypeProfile<1, 2, [
SDTCisSameAs<0,2>, SDTCisInt<0>, SDTCisPtrTy<1>
]>;
+
+def SDTFPAtomic2 : SDTypeProfile<1, 2, [
+ SDTCisSameAs<0,2>, SDTCisFP<0>, SDTCisPtrTy<1>
+]>;
+
def SDTAtomicStore : SDTypeProfile<0, 2, [
SDTCisPtrTy<0>, SDTCisInt<1>
]>;
@@ -350,6 +360,8 @@
def shl : SDNode<"ISD::SHL" , SDTIntShiftOp>;
def rotl : SDNode<"ISD::ROTL" , SDTIntShiftOp>;
def rotr : SDNode<"ISD::ROTR" , SDTIntShiftOp>;
+def fshl : SDNode<"ISD::FSHL" , SDTIntShiftDOp>;
+def fshr : SDNode<"ISD::FSHR" , SDTIntShiftDOp>;
def and : SDNode<"ISD::AND" , SDTIntBinOp,
[SDNPCommutative, SDNPAssociative]>;
def or : SDNode<"ISD::OR" , SDTIntBinOp,
@@ -373,6 +385,14 @@
def umax : SDNode<"ISD::UMAX" , SDTIntBinOp,
[SDNPCommutative, SDNPAssociative]>;
+def saddsat : SDNode<"ISD::SADDSAT" , SDTIntBinOp, [SDNPCommutative]>;
+def uaddsat : SDNode<"ISD::UADDSAT" , SDTIntBinOp, [SDNPCommutative]>;
+def ssubsat : SDNode<"ISD::SSUBSAT" , SDTIntBinOp>;
+def usubsat : SDNode<"ISD::USUBSAT" , SDTIntBinOp>;
+
+def smulfix : SDNode<"ISD::SMULFIX" , SDTIntScaledBinOp, [SDNPCommutative]>;
+def umulfix : SDNode<"ISD::UMULFIX" , SDTIntScaledBinOp, [SDNPCommutative]>;
+
def sext_inreg : SDNode<"ISD::SIGN_EXTEND_INREG", SDTExtInreg>;
def sext_invec : SDNode<"ISD::SIGN_EXTEND_VECTOR_INREG", SDTExtInvec>;
def zext_invec : SDNode<"ISD::ZERO_EXTEND_VECTOR_INREG", SDTExtInvec>;
@@ -406,8 +426,14 @@
[SDNPCommutative, SDNPAssociative]>;
def fmaxnum : SDNode<"ISD::FMAXNUM" , SDTFPBinOp,
[SDNPCommutative, SDNPAssociative]>;
-def fminnan : SDNode<"ISD::FMINNAN" , SDTFPBinOp>;
-def fmaxnan : SDNode<"ISD::FMAXNAN" , SDTFPBinOp>;
+def fminnum_ieee : SDNode<"ISD::FMINNUM_IEEE", SDTFPBinOp,
+ [SDNPCommutative]>;
+def fmaxnum_ieee : SDNode<"ISD::FMAXNUM_IEEE", SDTFPBinOp,
+ [SDNPCommutative]>;
+def fminimum : SDNode<"ISD::FMINIMUM" , SDTFPBinOp,
+ [SDNPCommutative, SDNPAssociative]>;
+def fmaximum : SDNode<"ISD::FMAXIMUM" , SDTFPBinOp,
+ [SDNPCommutative, SDNPAssociative]>;
def fgetsign : SDNode<"ISD::FGETSIGN" , SDTFPToIntOp>;
def fcanonicalize : SDNode<"ISD::FCANONICALIZE", SDTFPUnaryOp>;
def fneg : SDNode<"ISD::FNEG" , SDTFPUnaryOp>;
@@ -491,6 +517,11 @@
[SDNPHasChain, SDNPMayStore, SDNPMayLoad, SDNPMemOperand]>;
def atomic_load_umax : SDNode<"ISD::ATOMIC_LOAD_UMAX", SDTAtomic2,
[SDNPHasChain, SDNPMayStore, SDNPMayLoad, SDNPMemOperand]>;
+def atomic_load_fadd : SDNode<"ISD::ATOMIC_LOAD_FADD" , SDTFPAtomic2,
+ [SDNPHasChain, SDNPMayStore, SDNPMayLoad, SDNPMemOperand]>;
+def atomic_load_fsub : SDNode<"ISD::ATOMIC_LOAD_FSUB" , SDTFPAtomic2,
+ [SDNPHasChain, SDNPMayStore, SDNPMayLoad, SDNPMemOperand]>;
+
def atomic_load : SDNode<"ISD::ATOMIC_LOAD", SDTAtomicLoad,
[SDNPHasChain, SDNPMayLoad, SDNPMemOperand]>;
def atomic_store : SDNode<"ISD::ATOMIC_STORE", SDTAtomicStore,
@@ -616,6 +647,15 @@
code ImmediateCode = [{}];
SDNodeXForm OperandTransform = xform;
+ // When this is set, the PredicateCode may refer to a constant Operands
+ // vector which contains the captured nodes of the DAG, in the order listed
+ // by the Operands field above.
+ //
+ // This is useful when Fragments involves associative / commutative
+ // operators: a single piece of code can easily refer to all operands even
+ // when re-associated / commuted variants of the fragment are matched.
+ bit PredicateCodeUsesOperands = 0;
+
// Define a few pre-packaged predicates. This helps GlobalISel import
// existing rules from SelectionDAG for many common cases.
// They will be tested prior to the code in pred and must not be used in
diff --git a/linux-x64/clang/include/llvm/Testing/Support/Error.h b/linux-x64/clang/include/llvm/Testing/Support/Error.h
index 0e5b540..85328f2 100644
--- a/linux-x64/clang/include/llvm/Testing/Support/Error.h
+++ b/linux-x64/clang/include/llvm/Testing/Support/Error.h
@@ -1,9 +1,8 @@
//===- llvm/Testing/Support/Error.h ---------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Testing/Support/SupportHelpers.h b/linux-x64/clang/include/llvm/Testing/Support/SupportHelpers.h
index b2975ec..a0f034d 100644
--- a/linux-x64/clang/include/llvm/Testing/Support/SupportHelpers.h
+++ b/linux-x64/clang/include/llvm/Testing/Support/SupportHelpers.h
@@ -1,9 +1,8 @@
//===- Testing/Support/SupportHelpers.h -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/TextAPI/ELF/ELFStub.h b/linux-x64/clang/include/llvm/TextAPI/ELF/ELFStub.h
new file mode 100644
index 0000000..76b2af1
--- /dev/null
+++ b/linux-x64/clang/include/llvm/TextAPI/ELF/ELFStub.h
@@ -0,0 +1,68 @@
+//===- ELFStub.h ------------------------------------------------*- C++ -*-===//
+//
+// 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
+//
+//===-----------------------------------------------------------------------===/
+///
+/// \file
+/// This file defines an internal representation of an ELF stub.
+///
+//===-----------------------------------------------------------------------===/
+
+#ifndef LLVM_TEXTAPI_ELF_ELFSTUB_H
+#define LLVM_TEXTAPI_ELF_ELFSTUB_H
+
+#include "llvm/BinaryFormat/ELF.h"
+#include "llvm/Support/VersionTuple.h"
+#include <vector>
+#include <set>
+
+namespace llvm {
+namespace elfabi {
+
+typedef uint16_t ELFArch;
+
+enum class ELFSymbolType {
+ NoType = ELF::STT_NOTYPE,
+ Object = ELF::STT_OBJECT,
+ Func = ELF::STT_FUNC,
+ TLS = ELF::STT_TLS,
+
+ // Type information is 4 bits, so 16 is safely out of range.
+ Unknown = 16,
+};
+
+struct ELFSymbol {
+ ELFSymbol(std::string SymbolName) : Name(SymbolName) {}
+ std::string Name;
+ uint64_t Size;
+ ELFSymbolType Type;
+ bool Undefined;
+ bool Weak;
+ Optional<std::string> Warning;
+ bool operator<(const ELFSymbol &RHS) const {
+ return Name < RHS.Name;
+ }
+};
+
+// A cumulative representation of ELF stubs.
+// Both textual and binary stubs will read into and write from this object.
+class ELFStub {
+// TODO: Add support for symbol versioning.
+public:
+ VersionTuple TbeVersion;
+ Optional<std::string> SoName;
+ ELFArch Arch;
+ std::vector<std::string> NeededLibs;
+ std::set<ELFSymbol> Symbols;
+
+ ELFStub() {}
+ ELFStub(const ELFStub &Stub);
+ ELFStub(ELFStub &&Stub);
+};
+} // end namespace elfabi
+} // end namespace llvm
+
+#endif // LLVM_TEXTAPI_ELF_ELFSTUB_H
diff --git a/linux-x64/clang/include/llvm/TextAPI/ELF/TBEHandler.h b/linux-x64/clang/include/llvm/TextAPI/ELF/TBEHandler.h
new file mode 100644
index 0000000..1748fd1
--- /dev/null
+++ b/linux-x64/clang/include/llvm/TextAPI/ELF/TBEHandler.h
@@ -0,0 +1,44 @@
+//===- TBEHandler.h ---------------------------------------------*- C++ -*-===//
+//
+// 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
+//
+//===-----------------------------------------------------------------------===/
+///
+/// \file
+/// This file declares an interface for reading and writing .tbe (text-based
+/// ELF) files.
+///
+//===-----------------------------------------------------------------------===/
+
+#ifndef LLVM_TEXTAPI_ELF_TBEHANDLER_H
+#define LLVM_TEXTAPI_ELF_TBEHANDLER_H
+
+#include "llvm/Support/VersionTuple.h"
+#include "llvm/Support/Error.h"
+#include <memory>
+
+namespace llvm {
+
+class raw_ostream;
+class Error;
+class StringRef;
+class VersionTuple;
+
+namespace elfabi {
+
+class ELFStub;
+
+const VersionTuple TBEVersionCurrent(1, 0);
+
+/// Attempts to read an ELF interface file from a StringRef buffer.
+Expected<std::unique_ptr<ELFStub>> readTBEFromBuffer(StringRef Buf);
+
+/// Attempts to write an ELF interface file to a raw_ostream.
+Error writeTBEToOutputStream(raw_ostream &OS, const ELFStub &Stub);
+
+} // end namespace elfabi
+} // end namespace llvm
+
+#endif // LLVM_TEXTAPI_ELF_TBEHANDLER_H
diff --git a/linux-x64/clang/include/llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h b/linux-x64/clang/include/llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h
index 964b0f7..d144f62 100644
--- a/linux-x64/clang/include/llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h
+++ b/linux-x64/clang/include/llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h
@@ -1,9 +1,8 @@
//===- DlltoolDriver.h - dlltool.exe-compatible driver ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/ToolDrivers/llvm-lib/LibDriver.h b/linux-x64/clang/include/llvm/ToolDrivers/llvm-lib/LibDriver.h
index a4806ac..7d0735f 100644
--- a/linux-x64/clang/include/llvm/ToolDrivers/llvm-lib/LibDriver.h
+++ b/linux-x64/clang/include/llvm/ToolDrivers/llvm-lib/LibDriver.h
@@ -1,9 +1,8 @@
//===- llvm-lib/LibDriver.h - lib.exe-compatible driver ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/AggressiveInstCombine/AggressiveInstCombine.h b/linux-x64/clang/include/llvm/Transforms/AggressiveInstCombine/AggressiveInstCombine.h
index f970acd..887c880 100644
--- a/linux-x64/clang/include/llvm/Transforms/AggressiveInstCombine/AggressiveInstCombine.h
+++ b/linux-x64/clang/include/llvm/Transforms/AggressiveInstCombine/AggressiveInstCombine.h
@@ -1,9 +1,8 @@
//===- AggressiveInstCombine.h - AggressiveInstCombine pass -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Transforms/Coroutines.h b/linux-x64/clang/include/llvm/Transforms/Coroutines.h
index 51beb44..9df3ec0 100644
--- a/linux-x64/clang/include/llvm/Transforms/Coroutines.h
+++ b/linux-x64/clang/include/llvm/Transforms/Coroutines.h
@@ -1,9 +1,8 @@
//===-- Coroutines.h - Coroutine Transformations ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// Declare accessor functions for coroutine lowering passes.
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO.h b/linux-x64/clang/include/llvm/Transforms/IPO.h
index 11d363b..4f7a1ba 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO.h
@@ -1,9 +1,8 @@
//===- llvm/Transforms/IPO.h - Interprocedural Transformations --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/AlwaysInliner.h b/linux-x64/clang/include/llvm/Transforms/IPO/AlwaysInliner.h
index b52c0fd..64e2523 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/AlwaysInliner.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/AlwaysInliner.h
@@ -1,9 +1,8 @@
//===-- AlwaysInliner.h - Pass to inline "always_inline" functions --------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/ArgumentPromotion.h b/linux-x64/clang/include/llvm/Transforms/IPO/ArgumentPromotion.h
index 49ca6cc..c8afb7b 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/ArgumentPromotion.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/ArgumentPromotion.h
@@ -1,9 +1,8 @@
//===- ArgumentPromotion.h - Promote by-reference arguments -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/CalledValuePropagation.h b/linux-x64/clang/include/llvm/Transforms/IPO/CalledValuePropagation.h
index 352bdc7..c2626d0 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/CalledValuePropagation.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/CalledValuePropagation.h
@@ -1,9 +1,8 @@
//===- CalledValuePropagation.h - Propagate called values -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/ConstantMerge.h b/linux-x64/clang/include/llvm/Transforms/IPO/ConstantMerge.h
index e04d3ae..12d38b5 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/ConstantMerge.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/ConstantMerge.h
@@ -1,9 +1,8 @@
//===- ConstantMerge.h - Merge duplicate global constants -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/CrossDSOCFI.h b/linux-x64/clang/include/llvm/Transforms/IPO/CrossDSOCFI.h
index 0979f5b..8440df6 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/CrossDSOCFI.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/CrossDSOCFI.h
@@ -1,9 +1,8 @@
//===-- CrossDSOCFI.cpp - Externalize this module's CFI checks --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/DeadArgumentElimination.h b/linux-x64/clang/include/llvm/Transforms/IPO/DeadArgumentElimination.h
index ba5666f..73797bc 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/DeadArgumentElimination.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/DeadArgumentElimination.h
@@ -1,9 +1,8 @@
//===- DeadArgumentElimination.h - Eliminate Dead Args ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/ElimAvailExtern.h b/linux-x64/clang/include/llvm/Transforms/IPO/ElimAvailExtern.h
index 94cb954..92c319b 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/ElimAvailExtern.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/ElimAvailExtern.h
@@ -1,9 +1,8 @@
//===- ElimAvailExtern.h - Optimize Global Variables ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/ForceFunctionAttrs.h b/linux-x64/clang/include/llvm/Transforms/IPO/ForceFunctionAttrs.h
index ff8a654..7379009 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/ForceFunctionAttrs.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/ForceFunctionAttrs.h
@@ -1,9 +1,8 @@
//===-- ForceFunctionAttrs.h - Force function attrs for debugging ---------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/FunctionAttrs.h b/linux-x64/clang/include/llvm/Transforms/IPO/FunctionAttrs.h
index 901fed7..ce61eea 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/FunctionAttrs.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/FunctionAttrs.h
@@ -1,9 +1,8 @@
//===- FunctionAttrs.h - Compute function attributes ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/FunctionImport.h b/linux-x64/clang/include/llvm/Transforms/IPO/FunctionImport.h
index af1aedd..bbf270c 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/FunctionImport.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/FunctionImport.h
@@ -1,9 +1,8 @@
//===- llvm/Transforms/IPO/FunctionImport.h - ThinLTO importing -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
@@ -56,10 +55,14 @@
// to find at least one summary for the GUID that is global or a local
// in the referenced module for direct calls.
LocalLinkageNotInModule,
- // This corresponse to the NotEligibleToImport being set on the summary,
+ // This corresponds to the NotEligibleToImport being set on the summary,
// which can happen in a few different cases (e.g. local that can't be
// renamed or promoted because it is referenced on a llvm*.used variable).
- NotEligible
+ NotEligible,
+ // This corresponds to NoInline being set on the function summary,
+ // which will happen if it is known that the inliner will not be able
+ // to inline the function (e.g. it is marked with a NoInline attribute).
+ NoInline
};
/// Information optionally tracked for candidates the importer decided
@@ -172,6 +175,14 @@
const DenseSet<GlobalValue::GUID> &GUIDPreservedSymbols,
function_ref<PrevailingType(GlobalValue::GUID)> isPrevailing);
+/// Compute dead symbols and run constant propagation in combined index
+/// after that.
+void computeDeadSymbolsWithConstProp(
+ ModuleSummaryIndex &Index,
+ const DenseSet<GlobalValue::GUID> &GUIDPreservedSymbols,
+ function_ref<PrevailingType(GlobalValue::GUID)> isPrevailing,
+ bool ImportEnabled);
+
/// Converts value \p GV to declaration, or replaces with a declaration if
/// it is an alias. Returns true if converted, false if replaced.
bool convertToDeclaration(GlobalValue &GV);
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/GlobalDCE.h b/linux-x64/clang/include/llvm/Transforms/IPO/GlobalDCE.h
index 7ca241f..c434484 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/GlobalDCE.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/GlobalDCE.h
@@ -1,9 +1,8 @@
//===-- GlobalDCE.h - DCE unreachable internal functions ------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/GlobalOpt.h b/linux-x64/clang/include/llvm/Transforms/IPO/GlobalOpt.h
index 5b48786..48a861f 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/GlobalOpt.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/GlobalOpt.h
@@ -1,9 +1,8 @@
//===- GlobalOpt.h - Optimize Global Variables ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/GlobalSplit.h b/linux-x64/clang/include/llvm/Transforms/IPO/GlobalSplit.h
index 56cefb7..690b23a 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/GlobalSplit.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/GlobalSplit.h
@@ -1,9 +1,8 @@
//===- GlobalSplit.h - global variable splitter -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/HotColdSplitting.h b/linux-x64/clang/include/llvm/Transforms/IPO/HotColdSplitting.h
index 57e9a9e..7366884 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/HotColdSplitting.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/HotColdSplitting.h
@@ -1,9 +1,8 @@
//===- HotColdSplitting.h ---- Outline Cold Regions -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//===----------------------------------------------------------------------===//
//
// This pass outlines cold regions to a separate function.
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/InferFunctionAttrs.h b/linux-x64/clang/include/llvm/Transforms/IPO/InferFunctionAttrs.h
index 54e1c24..bb7907f 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/InferFunctionAttrs.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/InferFunctionAttrs.h
@@ -1,9 +1,8 @@
//===-- InferFunctionAttrs.h - Infer implicit function attributes ---------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/Inliner.h b/linux-x64/clang/include/llvm/Transforms/IPO/Inliner.h
index 610e450..8202b94 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/Inliner.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/Inliner.h
@@ -1,9 +1,8 @@
//===- Inliner.h - Inliner pass and infrastructure --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/Internalize.h b/linux-x64/clang/include/llvm/Transforms/IPO/Internalize.h
index 45d676d..a7efd3e 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/Internalize.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/Internalize.h
@@ -1,9 +1,8 @@
//====- Internalize.h - Internalization API ---------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/LowerTypeTests.h b/linux-x64/clang/include/llvm/Transforms/IPO/LowerTypeTests.h
index bc44838..39b23f5 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/LowerTypeTests.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/LowerTypeTests.h
@@ -1,9 +1,8 @@
//===- LowerTypeTests.h - type metadata lowering pass -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/PartialInlining.h b/linux-x64/clang/include/llvm/Transforms/IPO/PartialInlining.h
index ec6dd36..3b8297d 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/PartialInlining.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/PartialInlining.h
@@ -1,9 +1,8 @@
//===- PartialInlining.h - Inline parts of functions ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/PassManagerBuilder.h b/linux-x64/clang/include/llvm/Transforms/IPO/PassManagerBuilder.h
index 276306f..f82cfdc 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/PassManagerBuilder.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/PassManagerBuilder.h
@@ -1,9 +1,8 @@
// llvm/Transforms/IPO/PassManagerBuilder.h - Build Standard Pass -*- C++ -*-=//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/SCCP.h b/linux-x64/clang/include/llvm/Transforms/IPO/SCCP.h
index fdb7865..3c40d44 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/SCCP.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/SCCP.h
@@ -1,9 +1,8 @@
//===- SCCP.h - Sparse Conditional Constant Propagation ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/SampleProfile.h b/linux-x64/clang/include/llvm/Transforms/IPO/SampleProfile.h
index cd5a056..a5ad445 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/SampleProfile.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/SampleProfile.h
@@ -1,9 +1,8 @@
//===- SampleProfile.h - SamplePGO pass ---------- --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -25,13 +24,16 @@
/// The sample profiler data loader pass.
class SampleProfileLoaderPass : public PassInfoMixin<SampleProfileLoaderPass> {
public:
- SampleProfileLoaderPass(std::string File = "", bool IsThinLTOPreLink = false)
- : ProfileFileName(File), IsThinLTOPreLink(IsThinLTOPreLink) {}
+ SampleProfileLoaderPass(std::string File = "", std::string RemappingFile = "",
+ bool IsThinLTOPreLink = false)
+ : ProfileFileName(File), ProfileRemappingFileName(RemappingFile),
+ IsThinLTOPreLink(IsThinLTOPreLink) {}
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
private:
std::string ProfileFileName;
+ std::string ProfileRemappingFileName;
bool IsThinLTOPreLink;
};
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/StripDeadPrototypes.h b/linux-x64/clang/include/llvm/Transforms/IPO/StripDeadPrototypes.h
index 5a05cd7..f4a15c3 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/StripDeadPrototypes.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/StripDeadPrototypes.h
@@ -1,9 +1,8 @@
//===-- StripDeadPrototypes.h - Remove unused function declarations -------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/ThinLTOBitcodeWriter.h b/linux-x64/clang/include/llvm/Transforms/IPO/ThinLTOBitcodeWriter.h
index bf04bbf..7acb922 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/ThinLTOBitcodeWriter.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/ThinLTOBitcodeWriter.h
@@ -1,9 +1,8 @@
//===- ThinLTOBitcodeWriter.h - Bitcode writing pass for ThinLTO ----------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/IPO/WholeProgramDevirt.h b/linux-x64/clang/include/llvm/Transforms/IPO/WholeProgramDevirt.h
index bf2c79b..509fcc8 100644
--- a/linux-x64/clang/include/llvm/Transforms/IPO/WholeProgramDevirt.h
+++ b/linux-x64/clang/include/llvm/Transforms/IPO/WholeProgramDevirt.h
@@ -1,9 +1,8 @@
//===- WholeProgramDevirt.h - Whole-program devirt pass ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/InstCombine/InstCombine.h b/linux-x64/clang/include/llvm/Transforms/InstCombine/InstCombine.h
index ab25fe0..8894d96 100644
--- a/linux-x64/clang/include/llvm/Transforms/InstCombine/InstCombine.h
+++ b/linux-x64/clang/include/llvm/Transforms/InstCombine/InstCombine.h
@@ -1,9 +1,8 @@
//===- InstCombine.h - InstCombine pass -------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Transforms/InstCombine/InstCombineWorklist.h b/linux-x64/clang/include/llvm/Transforms/InstCombine/InstCombineWorklist.h
index f860b4b..6c33bdb 100644
--- a/linux-x64/clang/include/llvm/Transforms/InstCombine/InstCombineWorklist.h
+++ b/linux-x64/clang/include/llvm/Transforms/InstCombine/InstCombineWorklist.h
@@ -1,9 +1,8 @@
//===- InstCombineWorklist.h - Worklist for InstCombine pass ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Transforms/Instrumentation.h b/linux-x64/clang/include/llvm/Transforms/Instrumentation.h
index d6d9529..29cb281 100644
--- a/linux-x64/clang/include/llvm/Transforms/Instrumentation.h
+++ b/linux-x64/clang/include/llvm/Transforms/Instrumentation.h
@@ -1,9 +1,8 @@
//===- Transforms/Instrumentation.h - Instrumentation passes ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -24,9 +23,11 @@
namespace llvm {
+class Triple;
class FunctionPass;
class ModulePass;
class OptimizationRemarkEmitter;
+class Comdat;
/// Instrumentation passes often insert conditional checks into entry blocks.
/// Call this function before splitting the entry block to move instructions
@@ -36,6 +37,17 @@
BasicBlock::iterator PrepareToSplitEntryBlock(BasicBlock &BB,
BasicBlock::iterator IP);
+// Create a constant for Str so that we can pass it to the run-time lib.
+GlobalVariable *createPrivateGlobalForString(Module &M, StringRef Str,
+ bool AllowMerging,
+ const char *NamePrefix = "");
+
+// Returns F.getComdat() if it exists.
+// Otherwise creates a new comdat, sets F's comdat, and returns it.
+// Returns nullptr on failure.
+Comdat *GetOrCreateFunctionComdat(Function &F, Triple &T,
+ const std::string &ModuleId);
+
// Insert GCOV profiling instrumentation
struct GCOVOptions {
static GCOVOptions getDefault();
@@ -64,6 +76,12 @@
// Emit the exit block immediately after the start block, rather than after
// all of the function body's blocks.
bool ExitBlockBeforeBody;
+
+ // Regexes separated by a semi-colon to filter the files to instrument.
+ std::string Filter;
+
+ // Regexes separated by a semi-colon to filter the files to not instrument.
+ std::string Exclude;
};
ModulePass *createGCOVProfilerPass(const GCOVOptions &Options =
@@ -130,19 +148,12 @@
bool UseAfterScope = false);
ModulePass *createAddressSanitizerModulePass(bool CompileKernel = false,
bool Recover = false,
- bool UseGlobalsGC = true);
-
-// Insert MemorySanitizer instrumentation (detection of uninitialized reads)
-FunctionPass *createMemorySanitizerPass(int TrackOrigins = 0,
- bool Recover = false,
- bool EnableKmsan = false);
+ bool UseGlobalsGC = true,
+ bool UseOdrIndicator = true);
FunctionPass *createHWAddressSanitizerPass(bool CompileKernel = false,
bool Recover = false);
-// Insert ThreadSanitizer (race detection) instrumentation
-FunctionPass *createThreadSanitizerPass();
-
// Insert DataFlowSanitizer (dynamic data flow analysis) instrumentation
ModulePass *createDataFlowSanitizerPass(
const std::vector<std::string> &ABIListFiles = std::vector<std::string>(),
@@ -210,7 +221,6 @@
assert(Scaled <= std::numeric_limits<uint32_t>::max() && "overflow 32-bits");
return Scaled;
}
-
} // end namespace llvm
#endif // LLVM_TRANSFORMS_INSTRUMENTATION_H
diff --git a/linux-x64/clang/include/llvm/Transforms/Instrumentation/BoundsChecking.h b/linux-x64/clang/include/llvm/Transforms/Instrumentation/BoundsChecking.h
index 3d4f62c..120c6a8 100644
--- a/linux-x64/clang/include/llvm/Transforms/Instrumentation/BoundsChecking.h
+++ b/linux-x64/clang/include/llvm/Transforms/Instrumentation/BoundsChecking.h
@@ -1,9 +1,8 @@
//===- BoundsChecking.h - Bounds checking instrumentation -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Transforms/Instrumentation/CGProfile.h b/linux-x64/clang/include/llvm/Transforms/Instrumentation/CGProfile.h
index c06c1a2..28fd380 100644
--- a/linux-x64/clang/include/llvm/Transforms/Instrumentation/CGProfile.h
+++ b/linux-x64/clang/include/llvm/Transforms/Instrumentation/CGProfile.h
@@ -1,9 +1,8 @@
//===- Transforms/Instrumentation/CGProfile.h -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Transforms/Instrumentation/ControlHeightReduction.h b/linux-x64/clang/include/llvm/Transforms/Instrumentation/ControlHeightReduction.h
index 460342d..18b4285 100644
--- a/linux-x64/clang/include/llvm/Transforms/Instrumentation/ControlHeightReduction.h
+++ b/linux-x64/clang/include/llvm/Transforms/Instrumentation/ControlHeightReduction.h
@@ -1,9 +1,8 @@
//===- ControlHeightReduction.h - Control Height Reduction ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Instrumentation/GCOVProfiler.h b/linux-x64/clang/include/llvm/Transforms/Instrumentation/GCOVProfiler.h
index dd55fbe..b3971e4 100644
--- a/linux-x64/clang/include/llvm/Transforms/Instrumentation/GCOVProfiler.h
+++ b/linux-x64/clang/include/llvm/Transforms/Instrumentation/GCOVProfiler.h
@@ -1,9 +1,8 @@
//===- Transforms/Instrumentation/GCOVProfiler.h ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Transforms/Instrumentation/InstrProfiling.h b/linux-x64/clang/include/llvm/Transforms/Instrumentation/InstrProfiling.h
index 13fb3db..4fad650 100644
--- a/linux-x64/clang/include/llvm/Transforms/Instrumentation/InstrProfiling.h
+++ b/linux-x64/clang/include/llvm/Transforms/Instrumentation/InstrProfiling.h
@@ -1,9 +1,8 @@
//===- Transforms/Instrumentation/InstrProfiling.h --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Transforms/Instrumentation/MemorySanitizer.h b/linux-x64/clang/include/llvm/Transforms/Instrumentation/MemorySanitizer.h
new file mode 100644
index 0000000..0739d9e
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Transforms/Instrumentation/MemorySanitizer.h
@@ -0,0 +1,50 @@
+//===- Transforms/Instrumentation/MemorySanitizer.h - MSan Pass -----------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines the memoy sanitizer pass.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TRANSFORMS_INSTRUMENTATION_MEMORYSANITIZER_H
+#define LLVM_TRANSFORMS_INSTRUMENTATION_MEMORYSANITIZER_H
+
+#include "llvm/IR/PassManager.h"
+#include "llvm/Pass.h"
+
+namespace llvm {
+
+struct MemorySanitizerOptions {
+ MemorySanitizerOptions() = default;
+ MemorySanitizerOptions(int TrackOrigins, bool Recover, bool Kernel)
+ : TrackOrigins(TrackOrigins), Recover(Recover), Kernel(Kernel) {}
+ int TrackOrigins = 0;
+ bool Recover = false;
+ bool Kernel = false;
+};
+
+// Insert MemorySanitizer instrumentation (detection of uninitialized reads)
+FunctionPass *
+createMemorySanitizerLegacyPassPass(MemorySanitizerOptions Options = {});
+
+/// A function pass for msan instrumentation.
+///
+/// Instruments functions to detect unitialized reads. This function pass
+/// inserts calls to runtime library functions. If the functions aren't declared
+/// yet, the pass inserts the declarations. Otherwise the existing globals are
+/// used.
+struct MemorySanitizerPass : public PassInfoMixin<MemorySanitizerPass> {
+ MemorySanitizerPass(MemorySanitizerOptions Options) : Options(Options) {}
+
+ PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM);
+
+private:
+ MemorySanitizerOptions Options;
+};
+}
+
+#endif /* LLVM_TRANSFORMS_INSTRUMENTATION_MEMORYSANITIZER_H */
diff --git a/linux-x64/clang/include/llvm/Transforms/Instrumentation/PGOInstrumentation.h b/linux-x64/clang/include/llvm/Transforms/Instrumentation/PGOInstrumentation.h
index c0b37c4..4f22e28 100644
--- a/linux-x64/clang/include/llvm/Transforms/Instrumentation/PGOInstrumentation.h
+++ b/linux-x64/clang/include/llvm/Transforms/Instrumentation/PGOInstrumentation.h
@@ -1,9 +1,8 @@
//===- Transforms/Instrumentation/PGOInstrumentation.h ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -36,12 +35,14 @@
/// The profile annotation (profile-instr-use) pass for IR based PGO.
class PGOInstrumentationUse : public PassInfoMixin<PGOInstrumentationUse> {
public:
- PGOInstrumentationUse(std::string Filename = "");
+ PGOInstrumentationUse(std::string Filename = "",
+ std::string RemappingFilename = "");
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
private:
std::string ProfileFileName;
+ std::string ProfileRemappingFileName;
};
/// The indirect function call promotion pass.
diff --git a/linux-x64/clang/include/llvm/Transforms/Instrumentation/ThreadSanitizer.h b/linux-x64/clang/include/llvm/Transforms/Instrumentation/ThreadSanitizer.h
new file mode 100644
index 0000000..b4e7d99
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Transforms/Instrumentation/ThreadSanitizer.h
@@ -0,0 +1,32 @@
+//===- Transforms/Instrumentation/ThreadSanitizer.h - TSan Pass -----------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines the thread sanitizer pass.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TRANSFORMS_INSTRUMENTATION_THREADSANITIZER_H
+#define LLVM_TRANSFORMS_INSTRUMENTATION_THREADSANITIZER_H
+
+#include "llvm/IR/PassManager.h"
+#include "llvm/Pass.h"
+
+namespace llvm {
+// Insert ThreadSanitizer (race detection) instrumentation
+FunctionPass *createThreadSanitizerLegacyPassPass();
+
+/// A function pass for tsan instrumentation.
+///
+/// Instruments functions to detect race conditions reads. This function pass
+/// inserts calls to runtime library functions. If the functions aren't declared
+/// yet, the pass inserts the declarations. Otherwise the existing globals are
+struct ThreadSanitizerPass : public PassInfoMixin<ThreadSanitizerPass> {
+ PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM);
+};
+} // namespace llvm
+#endif /* LLVM_TRANSFORMS_INSTRUMENTATION_THREADSANITIZER_H */
diff --git a/linux-x64/clang/include/llvm/Transforms/ObjCARC.h b/linux-x64/clang/include/llvm/Transforms/ObjCARC.h
index 1897adc..2f114c7 100644
--- a/linux-x64/clang/include/llvm/Transforms/ObjCARC.h
+++ b/linux-x64/clang/include/llvm/Transforms/ObjCARC.h
@@ -1,9 +1,8 @@
//===-- ObjCARC.h - ObjCARC Scalar Transformations --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar.h b/linux-x64/clang/include/llvm/Transforms/Scalar.h
index 9491e1b..97a4c06 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar.h
@@ -1,9 +1,8 @@
//===-- Scalar.h - Scalar Transformations -----------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -26,7 +25,6 @@
class Pass;
class GetElementPtrInst;
class PassInfo;
-class TerminatorInst;
class TargetLowering;
class TargetMachine;
@@ -184,11 +182,12 @@
//
// LoopUnroll - This pass is a simple loop unrolling pass.
//
-Pass *createLoopUnrollPass(int OptLevel = 2, int Threshold = -1, int Count = -1,
+Pass *createLoopUnrollPass(int OptLevel = 2, bool OnlyWhenForced = false,
+ int Threshold = -1, int Count = -1,
int AllowPartial = -1, int Runtime = -1,
int UpperBound = -1, int AllowPeeling = -1);
// Create an unrolling pass for full unrolling that uses exact trip count only.
-Pass *createSimpleLoopUnrollPass(int OptLevel = 2);
+Pass *createSimpleLoopUnrollPass(int OptLevel = 2, bool OnlyWhenForced = false);
//===----------------------------------------------------------------------===//
//
@@ -360,6 +359,12 @@
//===----------------------------------------------------------------------===//
//
+// LowerWidenableCondition - Lower widenable condition to i1 true.
+//
+Pass *createLowerWidenableConditionPass();
+
+//===----------------------------------------------------------------------===//
+//
// MergeICmps - Merge integer comparison chains into a memcmp
//
Pass *createMergeICmpsPass();
@@ -394,12 +399,6 @@
//===----------------------------------------------------------------------===//
//
-// ScalarizerPass - Converts vector operations into scalar operations
-//
-FunctionPass *createScalarizerPass();
-
-//===----------------------------------------------------------------------===//
-//
// SeparateConstOffsetFromGEP - Split GEPs for better CSE
//
FunctionPass *createSeparateConstOffsetFromGEPPass(bool LowerGEP = false);
@@ -477,6 +476,7 @@
///===---------------------------------------------------------------------===//
ModulePass *createNameAnonGlobalPass();
+ModulePass *createCanonicalizeAliasesPass();
//===----------------------------------------------------------------------===//
//
@@ -491,6 +491,13 @@
// primarily to help other loop passes.
//
Pass *createLoopSimplifyCFGPass();
+
+//===----------------------------------------------------------------------===//
+//
+// WarnMissedTransformations - This pass emits warnings for leftover forced
+// transformations.
+//
+Pass *createWarnMissedTransformationsPass();
} // End llvm namespace
#endif
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/ADCE.h b/linux-x64/clang/include/llvm/Transforms/Scalar/ADCE.h
index f98af62..7d8b7ae 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/ADCE.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/ADCE.h
@@ -1,9 +1,8 @@
//===- ADCE.h - Aggressive dead code elimination ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/AlignmentFromAssumptions.h b/linux-x64/clang/include/llvm/Transforms/Scalar/AlignmentFromAssumptions.h
index 6197503..fb1687e 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/AlignmentFromAssumptions.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/AlignmentFromAssumptions.h
@@ -1,9 +1,8 @@
//===---- AlignmentFromAssumptions.h ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/BDCE.h b/linux-x64/clang/include/llvm/Transforms/Scalar/BDCE.h
index d7d2730..996622b 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/BDCE.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/BDCE.h
@@ -1,9 +1,8 @@
//===---- BDCE.cpp - Bit-tracking dead code elimination ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/CallSiteSplitting.h b/linux-x64/clang/include/llvm/Transforms/Scalar/CallSiteSplitting.h
index b2ca2a1..b605563 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/CallSiteSplitting.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/CallSiteSplitting.h
@@ -1,9 +1,8 @@
//===- CallSiteSplitting..h - Callsite Splitting ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/ConstantHoisting.h b/linux-x64/clang/include/llvm/Transforms/Scalar/ConstantHoisting.h
index ba32e12..29311ca 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/ConstantHoisting.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/ConstantHoisting.h
@@ -1,9 +1,8 @@
//==- ConstantHoisting.h - Prepare code for expensive constants --*- C++ -*-==//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/CorrelatedValuePropagation.h b/linux-x64/clang/include/llvm/Transforms/Scalar/CorrelatedValuePropagation.h
index 2093069..25795de 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/CorrelatedValuePropagation.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/CorrelatedValuePropagation.h
@@ -1,9 +1,8 @@
//===- CorrelatedValuePropagation.h -----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/DCE.h b/linux-x64/clang/include/llvm/Transforms/Scalar/DCE.h
index 273346c..974e4b2 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/DCE.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/DCE.h
@@ -1,9 +1,8 @@
//===- DCE.h - Dead code elimination ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/DeadStoreElimination.h b/linux-x64/clang/include/llvm/Transforms/Scalar/DeadStoreElimination.h
index cfeb218..b66b0de 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/DeadStoreElimination.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/DeadStoreElimination.h
@@ -1,9 +1,8 @@
//===- DeadStoreElimination.h - Fast Dead Store Elimination -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/DivRemPairs.h b/linux-x64/clang/include/llvm/Transforms/Scalar/DivRemPairs.h
index 0a4346f..7401e02 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/DivRemPairs.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/DivRemPairs.h
@@ -1,9 +1,8 @@
//===- DivRemPairs.h - Hoist/decompose integer division and remainder -----===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/EarlyCSE.h b/linux-x64/clang/include/llvm/Transforms/Scalar/EarlyCSE.h
index faf03a4..1e7fd71 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/EarlyCSE.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/EarlyCSE.h
@@ -1,9 +1,8 @@
//===- EarlyCSE.h - Simple and fast CSE pass --------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/Float2Int.h b/linux-x64/clang/include/llvm/Transforms/Scalar/Float2Int.h
index 206ee98..06aeb83 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/Float2Int.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/Float2Int.h
@@ -1,9 +1,8 @@
//===-- Float2Int.h - Demote floating point ops to work on integers -------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/GVN.h b/linux-x64/clang/include/llvm/Transforms/Scalar/GVN.h
index c01a1d7..9fe00a9 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/GVN.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/GVN.h
@@ -1,9 +1,8 @@
//===- GVN.h - Eliminate redundant values and loads -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -27,6 +26,7 @@
#include "llvm/IR/Dominators.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/PassManager.h"
+#include "llvm/IR/ValueHandle.h"
#include "llvm/Support/Allocator.h"
#include "llvm/Support/Compiler.h"
#include <cstdint>
@@ -180,7 +180,12 @@
// Map the block to reversed postorder traversal number. It is used to
// find back edge easily.
- DenseMap<const BasicBlock *, uint32_t> BlockRPONumber;
+ DenseMap<AssertingVH<BasicBlock>, uint32_t> BlockRPONumber;
+
+ // This is set 'true' initially and also when new blocks have been added to
+ // the function being analyzed. This boolean is used to control the updating
+ // of BlockRPONumber prior to accessing the contents of BlockRPONumber.
+ bool InvalidBlockRPONumbers = true;
using LoadDepVect = SmallVector<NonLocalDepResult, 64>;
using AvailValInBlkVect = SmallVector<gvn::AvailableValueInBlock, 64>;
@@ -237,7 +242,7 @@
}
// List of critical edges to be split between iterations.
- SmallVector<std::pair<TerminatorInst *, unsigned>, 4> toSplit;
+ SmallVector<std::pair<Instruction *, unsigned>, 4> toSplit;
// Helper functions of redundant load elimination
bool processLoad(LoadInst *L);
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/GVNExpression.h b/linux-x64/clang/include/llvm/Transforms/Scalar/GVNExpression.h
index 8b34696..3dc4515 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/GVNExpression.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/GVNExpression.h
@@ -1,9 +1,8 @@
//===- GVNExpression.h - GVN Expression classes -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/GuardWidening.h b/linux-x64/clang/include/llvm/Transforms/Scalar/GuardWidening.h
index 2bc0940..3adea05 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/GuardWidening.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/GuardWidening.h
@@ -1,9 +1,8 @@
//===- GuardWidening.h - ----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/IVUsersPrinter.h b/linux-x64/clang/include/llvm/Transforms/Scalar/IVUsersPrinter.h
index fad00d8..a1f20d9 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/IVUsersPrinter.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/IVUsersPrinter.h
@@ -1,9 +1,8 @@
//===- IVUsersPrinter.h - Induction Variable Users Printing -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/IndVarSimplify.h b/linux-x64/clang/include/llvm/Transforms/Scalar/IndVarSimplify.h
index e321c8f..3c20537 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/IndVarSimplify.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/IndVarSimplify.h
@@ -1,9 +1,8 @@
//===- IndVarSimplify.h - Induction Variable Simplification -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/InductiveRangeCheckElimination.h b/linux-x64/clang/include/llvm/Transforms/Scalar/InductiveRangeCheckElimination.h
index 311c549..b1e7007 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/InductiveRangeCheckElimination.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/InductiveRangeCheckElimination.h
@@ -1,9 +1,8 @@
//===- InductiveRangeCheckElimination.h - IRCE ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/InstSimplifyPass.h b/linux-x64/clang/include/llvm/Transforms/Scalar/InstSimplifyPass.h
index da79a13..0c30b62 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/InstSimplifyPass.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/InstSimplifyPass.h
@@ -1,9 +1,8 @@
//===- InstSimplifyPass.h ---------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/JumpThreading.h b/linux-x64/clang/include/llvm/Transforms/Scalar/JumpThreading.h
index c8376dd..0464d40 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/JumpThreading.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/JumpThreading.h
@@ -1,9 +1,8 @@
//===- JumpThreading.h - thread control through conditional BBs -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -23,7 +22,7 @@
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/BlockFrequencyInfo.h"
#include "llvm/Analysis/BranchProbabilityInfo.h"
-#include "llvm/IR/DomTreeUpdater.h"
+#include "llvm/Analysis/DomTreeUpdater.h"
#include "llvm/IR/ValueHandle.h"
#include <memory>
#include <utility>
@@ -89,22 +88,9 @@
#else
SmallSet<AssertingVH<const BasicBlock>, 16> LoopHeaders;
#endif
- DenseSet<std::pair<Value *, BasicBlock *>> RecursionSet;
unsigned BBDupThreshold;
- // RAII helper for updating the recursion stack.
- struct RecursionSetRemover {
- DenseSet<std::pair<Value *, BasicBlock *>> &TheSet;
- std::pair<Value *, BasicBlock *> ThePair;
-
- RecursionSetRemover(DenseSet<std::pair<Value *, BasicBlock *>> &S,
- std::pair<Value *, BasicBlock *> P)
- : TheSet(S), ThePair(P) {}
-
- ~RecursionSetRemover() { TheSet.erase(ThePair); }
- };
-
public:
JumpThreadingPass(int T = -1);
@@ -128,11 +114,21 @@
bool DuplicateCondBranchOnPHIIntoPred(
BasicBlock *BB, const SmallVectorImpl<BasicBlock *> &PredBBs);
+ bool ComputeValueKnownInPredecessorsImpl(
+ Value *V, BasicBlock *BB, jumpthreading::PredValueInfo &Result,
+ jumpthreading::ConstantPreference Preference,
+ DenseSet<std::pair<Value *, BasicBlock *>> &RecursionSet,
+ Instruction *CxtI = nullptr);
bool
ComputeValueKnownInPredecessors(Value *V, BasicBlock *BB,
jumpthreading::PredValueInfo &Result,
jumpthreading::ConstantPreference Preference,
- Instruction *CxtI = nullptr);
+ Instruction *CxtI = nullptr) {
+ DenseSet<std::pair<Value *, BasicBlock *>> RecursionSet;
+ return ComputeValueKnownInPredecessorsImpl(V, BB, Result, Preference,
+ RecursionSet, CxtI);
+ }
+
bool ProcessThreadableEdges(Value *Cond, BasicBlock *BB,
jumpthreading::ConstantPreference Preference,
Instruction *CxtI = nullptr);
@@ -142,7 +138,11 @@
bool ProcessImpliedCondition(BasicBlock *BB);
bool SimplifyPartiallyRedundantLoad(LoadInst *LI);
+ void UnfoldSelectInstr(BasicBlock *Pred, BasicBlock *BB, SelectInst *SI,
+ PHINode *SIUse, unsigned Idx);
+
bool TryToUnfoldSelect(CmpInst *CondCmp, BasicBlock *BB);
+ bool TryToUnfoldSelect(SwitchInst *SI, BasicBlock *BB);
bool TryToUnfoldSelectInCurrBB(BasicBlock *BB);
bool ProcessGuards(BasicBlock *BB);
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LICM.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LICM.h
index 68ad190..ea947ea 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/LICM.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LICM.h
@@ -1,9 +1,8 @@
//===- LICM.h - Loop Invariant Code Motion Pass -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopAccessAnalysisPrinter.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopAccessAnalysisPrinter.h
index e1b3379..3f250fc 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopAccessAnalysisPrinter.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopAccessAnalysisPrinter.h
@@ -1,9 +1,8 @@
//===- llvm/Analysis/LoopAccessAnalysisPrinter.h ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopDataPrefetch.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopDataPrefetch.h
index e1ad67a..9ebd598 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopDataPrefetch.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopDataPrefetch.h
@@ -1,10 +1,9 @@
//===-------- LoopDataPrefetch.h - Loop Data Prefetching Pass ---*- C++ -*-===//
//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopDeletion.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopDeletion.h
index 7b8cb1e..557616e 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopDeletion.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopDeletion.h
@@ -1,9 +1,8 @@
//===- LoopDeletion.h - Loop Deletion ---------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopDistribute.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopDistribute.h
index 2bf1c9d..1a82176 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopDistribute.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopDistribute.h
@@ -1,9 +1,8 @@
//===- LoopDistribute.cpp - Loop Distribution Pass --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopIdiomRecognize.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopIdiomRecognize.h
index 7added8..d2fff8b 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopIdiomRecognize.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopIdiomRecognize.h
@@ -1,9 +1,8 @@
//===- LoopIdiomRecognize.h - Loop Idiom Recognize Pass ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopInstSimplify.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopInstSimplify.h
index 04dc79c..f6e86d1 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopInstSimplify.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopInstSimplify.h
@@ -1,9 +1,8 @@
//===- LoopInstSimplify.h - Loop Inst Simplify Pass -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopLoadElimination.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopLoadElimination.h
index b0514a4..65b9aab 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopLoadElimination.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopLoadElimination.h
@@ -1,9 +1,8 @@
//===- LoopLoadElimination.h ------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopPassManager.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopPassManager.h
index e54960d..61ec585 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopPassManager.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopPassManager.h
@@ -1,9 +1,8 @@
//===- LoopPassManager.h - Loop pass management -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
@@ -352,7 +351,11 @@
continue;
PreservedAnalyses PassPA = Pass.run(*L, LAM, LAR, Updater);
- PI.runAfterPass<Loop>(Pass, *L);
+ // Do not pass deleted Loop into the instrumentation.
+ if (Updater.skipCurrentLoop())
+ PI.runAfterPassInvalidated<Loop>(Pass);
+ else
+ PI.runAfterPass<Loop>(Pass, *L);
// FIXME: We should verify the set of analyses relevant to Loop passes
// are preserved.
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopPredication.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopPredication.h
index 57398bd..252daaf 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopPredication.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopPredication.h
@@ -1,9 +1,8 @@
//===- LoopPredication.h - Guard based loop predication pass ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopRotation.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopRotation.h
index ea8d561..254e607 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopRotation.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopRotation.h
@@ -1,9 +1,8 @@
//===- LoopRotation.h - Loop Rotation -------------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopSimplifyCFG.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopSimplifyCFG.h
index 7628c74..2d71859 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopSimplifyCFG.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopSimplifyCFG.h
@@ -1,9 +1,8 @@
//===- LoopSimplifyCFG.cpp - Loop CFG Simplification Pass -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopSink.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopSink.h
index 371a7c8..234c48c 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopSink.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopSink.h
@@ -1,9 +1,8 @@
//===- LoopSink.h - Loop Sink Pass ------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopStrengthReduce.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopStrengthReduce.h
index 62c038a..5cf805b 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopStrengthReduce.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopStrengthReduce.h
@@ -1,9 +1,8 @@
//===- LoopStrengthReduce.h - Loop Strength Reduce Pass ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopUnrollAndJamPass.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopUnrollAndJamPass.h
index fc69aa3..7920269 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopUnrollAndJamPass.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopUnrollAndJamPass.h
@@ -1,9 +1,8 @@
//===- LoopUnrollAndJamPass.h -----------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopUnrollPass.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopUnrollPass.h
index 9848e0d..1445373 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/LoopUnrollPass.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LoopUnrollPass.h
@@ -1,15 +1,15 @@
//===- LoopUnrollPass.h -----------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_TRANSFORMS_SCALAR_LOOPUNROLLPASS_H
#define LLVM_TRANSFORMS_SCALAR_LOOPUNROLLPASS_H
+#include "llvm/ADT/Optional.h"
#include "llvm/Analysis/LoopAnalysisManager.h"
#include "llvm/IR/PassManager.h"
@@ -23,23 +23,90 @@
class LoopFullUnrollPass : public PassInfoMixin<LoopFullUnrollPass> {
const int OptLevel;
+ /// If false, use a cost model to determine whether unrolling of a loop is
+ /// profitable. If true, only loops that explicitly request unrolling via
+ /// metadata are considered. All other loops are skipped.
+ const bool OnlyWhenForced;
+
public:
- explicit LoopFullUnrollPass(int OptLevel = 2) : OptLevel(OptLevel) {}
+ explicit LoopFullUnrollPass(int OptLevel = 2, bool OnlyWhenForced = false)
+ : OptLevel(OptLevel), OnlyWhenForced(OnlyWhenForced) {}
PreservedAnalyses run(Loop &L, LoopAnalysisManager &AM,
LoopStandardAnalysisResults &AR, LPMUpdater &U);
};
+/// A set of parameters used to control various transforms performed by the
+/// LoopUnroll pass. Each of the boolean parameters can be set to:
+/// true - enabling the transformation.
+/// false - disabling the transformation.
+/// None - relying on a global default.
+///
+/// There is also OptLevel parameter, which is used for additional loop unroll
+/// tuning.
+///
+/// Intended use is to create a default object, modify parameters with
+/// additional setters and then pass it to LoopUnrollPass.
+///
+struct LoopUnrollOptions {
+ Optional<bool> AllowPartial;
+ Optional<bool> AllowPeeling;
+ Optional<bool> AllowRuntime;
+ Optional<bool> AllowUpperBound;
+ int OptLevel;
+
+ /// If false, use a cost model to determine whether unrolling of a loop is
+ /// profitable. If true, only loops that explicitly request unrolling via
+ /// metadata are considered. All other loops are skipped.
+ bool OnlyWhenForced;
+
+ LoopUnrollOptions(int OptLevel = 2, bool OnlyWhenForced = false)
+ : OptLevel(OptLevel), OnlyWhenForced(OnlyWhenForced) {}
+
+ /// Enables or disables partial unrolling. When disabled only full unrolling
+ /// is allowed.
+ LoopUnrollOptions &setPartial(bool Partial) {
+ AllowPartial = Partial;
+ return *this;
+ }
+
+ /// Enables or disables unrolling of loops with runtime trip count.
+ LoopUnrollOptions &setRuntime(bool Runtime) {
+ AllowRuntime = Runtime;
+ return *this;
+ }
+
+ /// Enables or disables loop peeling.
+ LoopUnrollOptions &setPeeling(bool Peeling) {
+ AllowPeeling = Peeling;
+ return *this;
+ }
+
+ /// Enables or disables the use of trip count upper bound
+ /// in loop unrolling.
+ LoopUnrollOptions &setUpperBound(bool UpperBound) {
+ AllowUpperBound = UpperBound;
+ return *this;
+ }
+
+ // Sets "optimization level" tuning parameter for loop unrolling.
+ LoopUnrollOptions &setOptLevel(int O) {
+ OptLevel = O;
+ return *this;
+ }
+};
+
/// Loop unroll pass that will support both full and partial unrolling.
/// It is a function pass to have access to function and module analyses.
/// It will also put loops into canonical form (simplified and LCSSA).
class LoopUnrollPass : public PassInfoMixin<LoopUnrollPass> {
- const int OptLevel;
+ LoopUnrollOptions UnrollOpts;
public:
/// This uses the target information (or flags) to control the thresholds for
/// different unrolling stategies but supports all of them.
- explicit LoopUnrollPass(int OptLevel = 2) : OptLevel(OptLevel) {}
+ explicit LoopUnrollPass(LoopUnrollOptions UnrollOpts = {})
+ : UnrollOpts(UnrollOpts) {}
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
};
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LowerAtomic.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LowerAtomic.h
index a4a2e7a..40f8ca5 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/LowerAtomic.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LowerAtomic.h
@@ -1,9 +1,8 @@
//===- LowerAtomic.cpp - Lower atomic intrinsics ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LowerExpectIntrinsic.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LowerExpectIntrinsic.h
index b6ee652..4e47ff7 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/LowerExpectIntrinsic.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LowerExpectIntrinsic.h
@@ -1,9 +1,8 @@
//===- LowerExpectIntrinsic.h - LowerExpectIntrinsic pass -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LowerGuardIntrinsic.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LowerGuardIntrinsic.h
index a9f19f6..ce97b9e 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/LowerGuardIntrinsic.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LowerGuardIntrinsic.h
@@ -1,9 +1,8 @@
//===--- LowerGuardIntrinsic.h - Lower the guard intrinsic ---------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/LowerWidenableCondition.h b/linux-x64/clang/include/llvm/Transforms/Scalar/LowerWidenableCondition.h
new file mode 100644
index 0000000..7c1e64b
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/LowerWidenableCondition.h
@@ -0,0 +1,26 @@
+//===--- LowerWidenableCondition.h - Lower the guard intrinsic ---------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This pass lowers the llvm.widenable.condition intrinsic to default value
+// which is i1 true.
+//
+//===----------------------------------------------------------------------===//
+#ifndef LLVM_TRANSFORMS_SCALAR_LOWERWIDENABLECONDITION_H
+#define LLVM_TRANSFORMS_SCALAR_LOWERWIDENABLECONDITION_H
+
+#include "llvm/IR/PassManager.h"
+
+namespace llvm {
+
+struct LowerWidenableConditionPass : PassInfoMixin<LowerWidenableConditionPass> {
+ PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
+};
+
+}
+
+#endif //LLVM_TRANSFORMS_SCALAR_LOWERWIDENABLECONDITION_H
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/MakeGuardsExplicit.h b/linux-x64/clang/include/llvm/Transforms/Scalar/MakeGuardsExplicit.h
new file mode 100644
index 0000000..5251747
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/MakeGuardsExplicit.h
@@ -0,0 +1,46 @@
+//===-- MakeGuardsExplicit.h - Turn guard intrinsics into guard branches --===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This pass lowers the @llvm.experimental.guard intrinsic to the new form of
+// guard represented as widenable explicit branch to the deopt block. The
+// difference between this pass and LowerGuardIntrinsic is that after this pass
+// the guard represented as intrinsic:
+//
+// call void(i1, ...) @llvm.experimental.guard(i1 %old_cond) [ "deopt"() ]
+//
+// transforms to a guard represented as widenable explicit branch:
+//
+// %widenable_cond = call i1 @llvm.experimental.widenable.condition()
+// br i1 (%old_cond & %widenable_cond), label %guarded, label %deopt
+//
+// Here:
+// - The semantics of @llvm.experimental.widenable.condition allows to replace
+// %widenable_cond with the construction (%widenable_cond & %any_other_cond)
+// without loss of correctness;
+// - %guarded is the lower part of old guard intrinsic's parent block split by
+// the intrinsic call;
+// - %deopt is a block containing a sole call to @llvm.experimental.deoptimize
+// intrinsic.
+//
+// Therefore, this branch preserves the property of widenability.
+//
+//===----------------------------------------------------------------------===//
+#ifndef LLVM_TRANSFORMS_SCALAR_MAKEGUARDSEXPLICIT_H
+#define LLVM_TRANSFORMS_SCALAR_MAKEGUARDSEXPLICIT_H
+
+#include "llvm/IR/PassManager.h"
+
+namespace llvm {
+
+struct MakeGuardsExplicitPass : public PassInfoMixin<MakeGuardsExplicitPass> {
+ PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
+};
+
+} // namespace llvm
+
+#endif //LLVM_TRANSFORMS_SCALAR_MAKEGUARDSEXPLICIT_H
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/MemCpyOptimizer.h b/linux-x64/clang/include/llvm/Transforms/Scalar/MemCpyOptimizer.h
index 046c808..5386f58 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/MemCpyOptimizer.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/MemCpyOptimizer.h
@@ -1,9 +1,8 @@
//===- MemCpyOptimizer.h - memcpy optimization ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/MergedLoadStoreMotion.h b/linux-x64/clang/include/llvm/Transforms/Scalar/MergedLoadStoreMotion.h
index 48df09c..9071a56 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/MergedLoadStoreMotion.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/MergedLoadStoreMotion.h
@@ -1,9 +1,8 @@
//===- MergedLoadStoreMotion.h - merge and hoist/sink load/stores ---------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/NaryReassociate.h b/linux-x64/clang/include/llvm/Transforms/Scalar/NaryReassociate.h
index e835bd5..26f5fe1 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/NaryReassociate.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/NaryReassociate.h
@@ -1,9 +1,8 @@
//===- NaryReassociate.h - Reassociate n-ary expressions --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/NewGVN.h b/linux-x64/clang/include/llvm/Transforms/Scalar/NewGVN.h
index 3f75418..1f3680f 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/NewGVN.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/NewGVN.h
@@ -1,9 +1,8 @@
//===- NewGVN.h - Global Value Numbering Pass -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/PartiallyInlineLibCalls.h b/linux-x64/clang/include/llvm/Transforms/Scalar/PartiallyInlineLibCalls.h
index 7f73831..fd5a06c 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/PartiallyInlineLibCalls.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/PartiallyInlineLibCalls.h
@@ -1,9 +1,8 @@
//===--- PartiallyInlineLibCalls.h - Partially inline libcalls --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/Reassociate.h b/linux-x64/clang/include/llvm/Transforms/Scalar/Reassociate.h
index ba7586d..487471c 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/Reassociate.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/Reassociate.h
@@ -1,9 +1,8 @@
//===- Reassociate.h - Reassociate binary expressions -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/RewriteStatepointsForGC.h b/linux-x64/clang/include/llvm/Transforms/Scalar/RewriteStatepointsForGC.h
index 128f176..12773c1 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/RewriteStatepointsForGC.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/RewriteStatepointsForGC.h
@@ -1,9 +1,8 @@
//===- RewriteStatepointsForGC.h - ------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/SCCP.h b/linux-x64/clang/include/llvm/Transforms/Scalar/SCCP.h
index e434d41..0ffd983 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/SCCP.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/SCCP.h
@@ -1,9 +1,8 @@
//===- SCCP.cpp - Sparse Conditional Constant Propagation -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -31,7 +30,7 @@
namespace llvm {
-class Function;
+class PostDominatorTree;
/// This pass performs function-level constant propagation and merging.
class SCCPPass : public PassInfoMixin<SCCPPass> {
@@ -39,9 +38,15 @@
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
};
-bool runIPSCCP(
- Module &M, const DataLayout &DL, const TargetLibraryInfo *TLI,
- function_ref<std::unique_ptr<PredicateInfo>(Function &)> getPredicateInfo);
+/// Helper struct for bundling up the analysis results per function for IPSCCP.
+struct AnalysisResultsForFn {
+ std::unique_ptr<PredicateInfo> PredInfo;
+ DominatorTree *DT;
+ PostDominatorTree *PDT;
+};
+
+bool runIPSCCP(Module &M, const DataLayout &DL, const TargetLibraryInfo *TLI,
+ function_ref<AnalysisResultsForFn(Function &)> getAnalysis);
} // end namespace llvm
#endif // LLVM_TRANSFORMS_SCALAR_SCCP_H
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/SROA.h b/linux-x64/clang/include/llvm/Transforms/Scalar/SROA.h
index b36c6f4..bd3a072 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/SROA.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/SROA.h
@@ -1,9 +1,8 @@
//===- SROA.h - Scalar Replacement Of Aggregates ----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/Scalarizer.h b/linux-x64/clang/include/llvm/Transforms/Scalar/Scalarizer.h
new file mode 100644
index 0000000..8136313
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/Scalarizer.h
@@ -0,0 +1,34 @@
+//===- Scalarizer.h --- Scalarize vector operations -----------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+/// \file
+/// This pass converts vector operations into scalar operations, in order
+/// to expose optimization opportunities on the individual scalar operations.
+/// It is mainly intended for targets that do not have vector units, but it
+/// may also be useful for revectorizing code to different vector widths.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TRANSFORMS_SCALAR_SCALARIZER_H
+#define LLVM_TRANSFORMS_SCALAR_SCALARIZER_H
+
+#include "llvm/IR/PassManager.h"
+
+namespace llvm {
+
+class ScalarizerPass : public PassInfoMixin<ScalarizerPass> {
+public:
+ PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
+};
+
+/// Create a legacy pass manager instance of the Scalarizer pass
+FunctionPass *createScalarizerPass();
+
+}
+
+#endif /* LLVM_TRANSFORMS_SCALAR_SCALARIZER_H */
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/SimpleLoopUnswitch.h b/linux-x64/clang/include/llvm/Transforms/Scalar/SimpleLoopUnswitch.h
index eed50ec..33c1faa 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/SimpleLoopUnswitch.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/SimpleLoopUnswitch.h
@@ -1,9 +1,8 @@
//===- SimpleLoopUnswitch.h - Hoist loop-invariant control flow -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/SimplifyCFG.h b/linux-x64/clang/include/llvm/Transforms/Scalar/SimplifyCFG.h
index ce0a35f..f9792d3 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/SimplifyCFG.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/SimplifyCFG.h
@@ -1,9 +1,8 @@
//===- SimplifyCFG.h - Simplify and canonicalize the CFG --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/Sink.h b/linux-x64/clang/include/llvm/Transforms/Scalar/Sink.h
index f9b3cb0..6cbe964 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/Sink.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/Sink.h
@@ -1,9 +1,8 @@
//===-- Sink.h - Code Sinking -----------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/SpeculateAroundPHIs.h b/linux-x64/clang/include/llvm/Transforms/Scalar/SpeculateAroundPHIs.h
index 4a0bfd7..3c7dafe 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/SpeculateAroundPHIs.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/SpeculateAroundPHIs.h
@@ -1,9 +1,8 @@
//===- SpeculateAroundPHIs.h - Speculate around PHIs ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/SpeculativeExecution.h b/linux-x64/clang/include/llvm/Transforms/Scalar/SpeculativeExecution.h
index d00e950..14da864 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/SpeculativeExecution.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/SpeculativeExecution.h
@@ -1,9 +1,8 @@
//===- SpeculativeExecution.h -----------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/TailRecursionElimination.h b/linux-x64/clang/include/llvm/Transforms/Scalar/TailRecursionElimination.h
index 793f9bc..9068676 100644
--- a/linux-x64/clang/include/llvm/Transforms/Scalar/TailRecursionElimination.h
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/TailRecursionElimination.h
@@ -1,9 +1,8 @@
//===---- TailRecursionElimination.h ----------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Scalar/WarnMissedTransforms.h b/linux-x64/clang/include/llvm/Transforms/Scalar/WarnMissedTransforms.h
new file mode 100644
index 0000000..2d5942a
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Transforms/Scalar/WarnMissedTransforms.h
@@ -0,0 +1,37 @@
+//===- WarnMissedTransforms.h -----------------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// Emit warnings if forced code transformations have not been performed.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TRANSFORMS_SCALAR_WARNMISSEDTRANSFORMS_H
+#define LLVM_TRANSFORMS_SCALAR_WARNMISSEDTRANSFORMS_H
+
+#include "llvm/IR/PassManager.h"
+
+namespace llvm {
+class Function;
+class Loop;
+class LPMUpdater;
+
+// New pass manager boilerplate.
+class WarnMissedTransformationsPass
+ : public PassInfoMixin<WarnMissedTransformationsPass> {
+public:
+ explicit WarnMissedTransformationsPass() {}
+
+ PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
+};
+
+// Legacy pass manager boilerplate.
+Pass *createWarnMissedTransformationsPass();
+void initializeWarnMissedTransformationsLegacyPass(PassRegistry &);
+} // end namespace llvm
+
+#endif // LLVM_TRANSFORMS_SCALAR_WARNMISSEDTRANSFORMS_H
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils.h b/linux-x64/clang/include/llvm/Transforms/Utils.h
index 3785527..6e03453 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils.h
@@ -1,9 +1,8 @@
//===- llvm/Transforms/Utils.h - Utility Transformations --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/ASanStackFrameLayout.h b/linux-x64/clang/include/llvm/Transforms/Utils/ASanStackFrameLayout.h
index eaad06a..0b570c0 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/ASanStackFrameLayout.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/ASanStackFrameLayout.h
@@ -1,9 +1,8 @@
//===- ASanStackFrameLayout.h - ComputeASanStackFrameLayout -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/AddDiscriminators.h b/linux-x64/clang/include/llvm/Transforms/Utils/AddDiscriminators.h
index 4dad06e..f512c6c 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/AddDiscriminators.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/AddDiscriminators.h
@@ -1,9 +1,8 @@
//===- AddDiscriminators.h --------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/BasicBlockUtils.h b/linux-x64/clang/include/llvm/Transforms/Utils/BasicBlockUtils.h
index dee1541..4e76328 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/BasicBlockUtils.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/BasicBlockUtils.h
@@ -1,9 +1,8 @@
//===- Transform/Utils/BasicBlockUtils.h - BasicBlock Utils -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -18,9 +17,9 @@
// FIXME: Move to this file: BasicBlock::removePredecessor, BB::splitBasicBlock
#include "llvm/ADT/ArrayRef.h"
+#include "llvm/Analysis/DomTreeUpdater.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/CFG.h"
-#include "llvm/IR/DomTreeUpdater.h"
#include "llvm/IR/InstrTypes.h"
#include <cassert>
@@ -40,8 +39,27 @@
class TargetLibraryInfo;
class Value;
+/// Replace contents of every block in \p BBs with single unreachable
+/// instruction. If \p Updates is specified, collect all necessary DT updates
+/// into this vector. If \p KeepOneInputPHIs is true, one-input Phis in
+/// successors of blocks being deleted will be preserved.
+void DetatchDeadBlocks(ArrayRef <BasicBlock *> BBs,
+ SmallVectorImpl<DominatorTree::UpdateType> *Updates,
+ bool KeepOneInputPHIs = false);
+
/// Delete the specified block, which must have no predecessors.
-void DeleteDeadBlock(BasicBlock *BB, DomTreeUpdater *DTU = nullptr);
+void DeleteDeadBlock(BasicBlock *BB, DomTreeUpdater *DTU = nullptr,
+ bool KeepOneInputPHIs = false);
+
+/// Delete the specified blocks from \p BB. The set of deleted blocks must have
+/// no predecessors that are not being deleted themselves. \p BBs must have no
+/// duplicating blocks. If there are loops among this set of blocks, all
+/// relevant loop info updates should be done before this function is called.
+/// If \p KeepOneInputPHIs is true, one-input Phis in successors of blocks
+/// being deleted will be preserved.
+void DeleteDeadBlocks(ArrayRef <BasicBlock *> BBs,
+ DomTreeUpdater *DTU = nullptr,
+ bool KeepOneInputPHIs = false);
/// We know that BB has one predecessor. If there are any single-entry PHI nodes
/// in it, fold them away. This handles the case when all entries to the PHI
@@ -88,7 +106,7 @@
LoopInfo *LI;
MemorySSAUpdater *MSSAU;
bool MergeIdenticalEdges = false;
- bool DontDeleteUselessPHIs = false;
+ bool KeepOneInputPHIs = false;
bool PreserveLCSSA = false;
CriticalEdgeSplittingOptions(DominatorTree *DT = nullptr,
@@ -101,8 +119,8 @@
return *this;
}
- CriticalEdgeSplittingOptions &setDontDeleteUselessPHIs() {
- DontDeleteUselessPHIs = true;
+ CriticalEdgeSplittingOptions &setKeepOneInputPHIs() {
+ KeepOneInputPHIs = true;
return *this;
}
@@ -128,7 +146,7 @@
/// IndirectBrInst. Splitting these edges will almost always create an invalid
/// program because the address of the new block won't be the one that is jumped
/// to.
-BasicBlock *SplitCriticalEdge(TerminatorInst *TI, unsigned SuccNum,
+BasicBlock *SplitCriticalEdge(Instruction *TI, unsigned SuccNum,
const CriticalEdgeSplittingOptions &Options =
CriticalEdgeSplittingOptions());
@@ -148,7 +166,7 @@
const CriticalEdgeSplittingOptions &Options =
CriticalEdgeSplittingOptions()) {
bool MadeChange = false;
- TerminatorInst *TI = (*PI)->getTerminator();
+ Instruction *TI = (*PI)->getTerminator();
for (unsigned i = 0, e = TI->getNumSuccessors(); i != e; ++i)
if (TI->getSuccessor(i) == Succ)
MadeChange |= !!SplitCriticalEdge(TI, i, Options);
@@ -162,7 +180,7 @@
SplitCriticalEdge(BasicBlock *Src, BasicBlock *Dst,
const CriticalEdgeSplittingOptions &Options =
CriticalEdgeSplittingOptions()) {
- TerminatorInst *TI = Src->getTerminator();
+ Instruction *TI = Src->getTerminator();
unsigned i = 0;
while (true) {
assert(i != TI->getNumSuccessors() && "Edge doesn't exist!");
@@ -257,11 +275,11 @@
/// Returns the NewBasicBlock's terminator.
///
/// Updates DT and LI if given.
-TerminatorInst *SplitBlockAndInsertIfThen(Value *Cond, Instruction *SplitBefore,
- bool Unreachable,
- MDNode *BranchWeights = nullptr,
- DominatorTree *DT = nullptr,
- LoopInfo *LI = nullptr);
+Instruction *SplitBlockAndInsertIfThen(Value *Cond, Instruction *SplitBefore,
+ bool Unreachable,
+ MDNode *BranchWeights = nullptr,
+ DominatorTree *DT = nullptr,
+ LoopInfo *LI = nullptr);
/// SplitBlockAndInsertIfThenElse is similar to SplitBlockAndInsertIfThen,
/// but also creates the ElseBlock.
@@ -278,8 +296,8 @@
/// SplitBefore
/// Tail
void SplitBlockAndInsertIfThenElse(Value *Cond, Instruction *SplitBefore,
- TerminatorInst **ThenTerm,
- TerminatorInst **ElseTerm,
+ Instruction **ThenTerm,
+ Instruction **ElseTerm,
MDNode *BranchWeights = nullptr);
/// Check whether BB is the merge point of a if-region.
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/BreakCriticalEdges.h b/linux-x64/clang/include/llvm/Transforms/Utils/BreakCriticalEdges.h
index 9cc81a1..3644f1e 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/BreakCriticalEdges.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/BreakCriticalEdges.h
@@ -1,9 +1,8 @@
//===- BreakCriticalEdges.h - Critical Edge Elimination Pass --------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/BuildLibCalls.h b/linux-x64/clang/include/llvm/Transforms/Utils/BuildLibCalls.h
index bdcdf6f..6c61cbe 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/BuildLibCalls.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/BuildLibCalls.h
@@ -1,9 +1,8 @@
//===- BuildLibCalls.h - Utility builder for libcalls -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -29,6 +28,7 @@
///
/// Returns true if any attributes were set and false otherwise.
bool inferLibFuncAttributes(Function &F, const TargetLibraryInfo &TLI);
+ bool inferLibFuncAttributes(Module *M, StringRef Name, const TargetLibraryInfo &TLI);
/// Check whether the overloaded unary floating point function
/// corresponding to \a Ty is available.
@@ -36,6 +36,12 @@
LibFunc DoubleFn, LibFunc FloatFn,
LibFunc LongDoubleFn);
+ /// Get the name of the overloaded unary floating point function
+ /// corresponding to \a Ty.
+ StringRef getUnaryFloatFn(const TargetLibraryInfo *TLI, Type *Ty,
+ LibFunc DoubleFn, LibFunc FloatFn,
+ LibFunc LongDoubleFn);
+
/// Return V if it is an i8*, otherwise cast it to i8*.
Value *castToCStr(Value *V, IRBuilder<> &B);
@@ -93,6 +99,13 @@
Value *emitUnaryFloatFnCall(Value *Op, StringRef Name, IRBuilder<> &B,
const AttributeList &Attrs);
+ /// Emit a call to the unary function DoubleFn, FloatFn or LongDoubleFn,
+ /// depending of the type of Op.
+ Value *emitUnaryFloatFnCall(Value *Op, const TargetLibraryInfo *TLI,
+ LibFunc DoubleFn, LibFunc FloatFn,
+ LibFunc LongDoubleFn, IRBuilder<> &B,
+ const AttributeList &Attrs);
+
/// Emit a call to the binary function named 'Name' (e.g. 'fmin'). This
/// function is known to take type matching 'Op1' and 'Op2' and return one
/// value with the same type. If 'Op1/Op2' are long double, 'l' is added as
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/BypassSlowDivision.h b/linux-x64/clang/include/llvm/Transforms/Utils/BypassSlowDivision.h
index 6eca5ed..4710559 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/BypassSlowDivision.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/BypassSlowDivision.h
@@ -1,9 +1,8 @@
//===- llvm/Transforms/Utils/BypassSlowDivision.h ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/CallPromotionUtils.h b/linux-x64/clang/include/llvm/Transforms/Utils/CallPromotionUtils.h
index 6e8ece7..d9d171c 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/CallPromotionUtils.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/CallPromotionUtils.h
@@ -1,9 +1,8 @@
//===- CallPromotionUtils.h - Utilities for call promotion ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/CanonicalizeAliases.h b/linux-x64/clang/include/llvm/Transforms/Utils/CanonicalizeAliases.h
new file mode 100644
index 0000000..8f23a04
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/CanonicalizeAliases.h
@@ -0,0 +1,31 @@
+//===-- CanonicalizeAliases.h - Alias Canonicalization Pass -----*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file canonicalizes aliases.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TRANSFORMS_UTILS_CANONICALIZE_ALIASES_H
+#define LLVM_TRANSFORMS_UTILS_CANONICALIZE_ALIASES_H
+
+#include "llvm/IR/Module.h"
+#include "llvm/IR/PassManager.h"
+
+namespace llvm {
+
+/// Simple pass that canonicalizes aliases.
+class CanonicalizeAliasesPass : public PassInfoMixin<CanonicalizeAliasesPass> {
+public:
+ CanonicalizeAliasesPass() = default;
+
+ PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
+};
+
+} // end namespace llvm
+
+#endif // LLVM_TRANSFORMS_UTILS_CANONICALIZE_ALIASESH
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/Cloning.h b/linux-x64/clang/include/llvm/Transforms/Utils/Cloning.h
index e4d6053..86775b1 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/Cloning.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/Cloning.h
@@ -1,9 +1,8 @@
//===- Cloning.h - Clone various parts of LLVM programs ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -47,9 +46,9 @@
class Module;
class ProfileSummaryInfo;
class ReturnInst;
+class DomTreeUpdater;
/// Return an exact copy of the specified module
-///
std::unique_ptr<Module> CloneModule(const Module &M);
std::unique_ptr<Module> CloneModule(const Module &M, ValueToValueMapTy &VMap);
@@ -61,17 +60,15 @@
CloneModule(const Module &M, ValueToValueMapTy &VMap,
function_ref<bool(const GlobalValue *)> ShouldCloneDefinition);
-/// ClonedCodeInfo - This struct can be used to capture information about code
+/// This struct can be used to capture information about code
/// being cloned, while it is being cloned.
struct ClonedCodeInfo {
- /// ContainsCalls - This is set to true if the cloned code contains a normal
- /// call instruction.
+ /// This is set to true if the cloned code contains a normal call instruction.
bool ContainsCalls = false;
- /// ContainsDynamicAllocas - This is set to true if the cloned code contains
- /// a 'dynamic' alloca. Dynamic allocas are allocas that are either not in
- /// the entry block or they are in the entry block but are not a constant
- /// size.
+ /// This is set to true if the cloned code contains a 'dynamic' alloca.
+ /// Dynamic allocas are allocas that are either not in the entry block or they
+ /// are in the entry block but are not a constant size.
bool ContainsDynamicAllocas = false;
/// All cloned call sites that have operand bundles attached are appended to
@@ -82,7 +79,7 @@
ClonedCodeInfo() = default;
};
-/// CloneBasicBlock - Return a copy of the specified basic block, but without
+/// Return a copy of the specified basic block, but without
/// embedding the block into a particular function. The block returned is an
/// exact copy of the specified basic block, without any remapping having been
/// performed. Because of this, this is only suitable for applications where
@@ -109,13 +106,12 @@
/// If you would like to collect additional information about the cloned
/// function, you can specify a ClonedCodeInfo object with the optional fifth
/// parameter.
-///
BasicBlock *CloneBasicBlock(const BasicBlock *BB, ValueToValueMapTy &VMap,
const Twine &NameSuffix = "", Function *F = nullptr,
ClonedCodeInfo *CodeInfo = nullptr,
DebugInfoFinder *DIFinder = nullptr);
-/// CloneFunction - Return a copy of the specified function and add it to that
+/// Return a copy of the specified function and add it to that
/// function's module. Also, any references specified in the VMap are changed
/// to refer to their mapped value instead of the original one. If any of the
/// arguments to the function are in the VMap, the arguments are deleted from
@@ -154,7 +150,7 @@
const char *NameSuffix = "",
ClonedCodeInfo *CodeInfo = nullptr);
-/// CloneAndPruneFunctionInto - This works exactly like CloneFunctionInto,
+/// This works exactly like CloneFunctionInto,
/// except that it does some simple constant prop and DCE on the fly. The
/// effect of this is to copy significantly less code in cases where (for
/// example) a function call with constant arguments is inlined, and those
@@ -172,8 +168,8 @@
ClonedCodeInfo *CodeInfo = nullptr,
Instruction *TheCall = nullptr);
-/// InlineFunctionInfo - This class captures the data input to the
-/// InlineFunction call, and records the auxiliary results produced by it.
+/// This class captures the data input to the InlineFunction call, and records
+/// the auxiliary results produced by it.
class InlineFunctionInfo {
public:
explicit InlineFunctionInfo(CallGraph *cg = nullptr,
@@ -185,19 +181,19 @@
: CG(cg), GetAssumptionCache(GetAssumptionCache), PSI(PSI),
CallerBFI(CallerBFI), CalleeBFI(CalleeBFI) {}
- /// CG - If non-null, InlineFunction will update the callgraph to reflect the
+ /// If non-null, InlineFunction will update the callgraph to reflect the
/// changes it makes.
CallGraph *CG;
std::function<AssumptionCache &(Function &)> *GetAssumptionCache;
ProfileSummaryInfo *PSI;
BlockFrequencyInfo *CallerBFI, *CalleeBFI;
- /// StaticAllocas - InlineFunction fills this in with all static allocas that
- /// get copied into the caller.
+ /// InlineFunction fills this in with all static allocas that get copied into
+ /// the caller.
SmallVector<AllocaInst *, 4> StaticAllocas;
- /// InlinedCalls - InlineFunction fills this in with callsites that were
- /// inlined from the callee. This is only filled in if CG is non-null.
+ /// InlineFunction fills this in with callsites that were inlined from the
+ /// callee. This is only filled in if CG is non-null.
SmallVector<WeakTrackingVH, 8> InlinedCalls;
/// All of the new call sites inlined into the caller.
@@ -214,7 +210,7 @@
}
};
-/// InlineFunction - This function inlines the called function into the basic
+/// This function inlines the called function into the basic
/// block of the caller. This returns false if it is not possible to inline
/// this call. The program is still in a well defined state if this occurs
/// though.
@@ -266,11 +262,19 @@
/// we replace them with the uses of corresponding Phi inputs. ValueMapping
/// is used to map the original instructions from BB to their newly-created
/// copies. Returns the split block.
-BasicBlock *
-DuplicateInstructionsInSplitBetween(BasicBlock *BB, BasicBlock *PredBB,
- Instruction *StopAt,
- ValueToValueMapTy &ValueMapping,
- DominatorTree *DT = nullptr);
+BasicBlock *DuplicateInstructionsInSplitBetween(BasicBlock *BB,
+ BasicBlock *PredBB,
+ Instruction *StopAt,
+ ValueToValueMapTy &ValueMapping,
+ DomTreeUpdater &DTU);
+
+/// Updates profile information by adjusting the entry count by adding
+/// entryDelta then scaling callsite information by the new count divided by the
+/// old count. VMap is used during inlinng to also update the new clone
+void updateProfileCallee(
+ Function *Callee, int64_t entryDelta,
+ const ValueMap<const Value *, WeakTrackingVH> *VMap = nullptr);
+
} // end namespace llvm
#endif // LLVM_TRANSFORMS_UTILS_CLONING_H
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/CodeExtractor.h b/linux-x64/clang/include/llvm/Transforms/Utils/CodeExtractor.h
index 0e5254a..becbf0e 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/CodeExtractor.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/CodeExtractor.h
@@ -1,9 +1,8 @@
//===- Transform/Utils/CodeExtractor.h - Code extraction util ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -18,6 +17,7 @@
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SetVector.h"
+#include "llvm/ADT/SmallPtrSet.h"
#include <limits>
namespace llvm {
@@ -26,6 +26,8 @@
class BlockFrequency;
class BlockFrequencyInfo;
class BranchProbabilityInfo;
+class AssumptionCache;
+class CallInst;
class DominatorTree;
class Function;
class Instruction;
@@ -55,6 +57,7 @@
const bool AggregateArgs;
BlockFrequencyInfo *BFI;
BranchProbabilityInfo *BPI;
+ AssumptionCache *AC;
// If true, varargs functions can be extracted.
bool AllowVarArgs;
@@ -64,6 +67,11 @@
unsigned NumExitBlocks = std::numeric_limits<unsigned>::max();
Type *RetTy;
+ // Suffix to use when creating extracted function (appended to the original
+ // function name + "."). If empty, the default is to use the entry block
+ // label, if non-empty, otherwise "extracted".
+ std::string Suffix;
+
public:
/// Create a code extractor for a sequence of blocks.
///
@@ -78,7 +86,9 @@
CodeExtractor(ArrayRef<BasicBlock *> BBs, DominatorTree *DT = nullptr,
bool AggregateArgs = false, BlockFrequencyInfo *BFI = nullptr,
BranchProbabilityInfo *BPI = nullptr,
- bool AllowVarArgs = false, bool AllowAlloca = false);
+ AssumptionCache *AC = nullptr,
+ bool AllowVarArgs = false, bool AllowAlloca = false,
+ std::string Suffix = "");
/// Create a code extractor for a loop body.
///
@@ -86,7 +96,9 @@
/// block sequence of the loop.
CodeExtractor(DominatorTree &DT, Loop &L, bool AggregateArgs = false,
BlockFrequencyInfo *BFI = nullptr,
- BranchProbabilityInfo *BPI = nullptr);
+ BranchProbabilityInfo *BPI = nullptr,
+ AssumptionCache *AC = nullptr,
+ std::string Suffix = "");
/// Perform the extraction, returning the new function.
///
@@ -139,7 +151,8 @@
BasicBlock *findOrCreateBlockForHoisting(BasicBlock *CommonExitBlock);
private:
- void severSplitPHINodes(BasicBlock *&Header);
+ void severSplitPHINodesOfEntry(BasicBlock *&Header);
+ void severSplitPHINodesOfExits(const SmallPtrSetImpl<BasicBlock *> &Exits);
void splitReturnBlocks();
Function *constructFunction(const ValueSet &inputs,
@@ -155,10 +168,9 @@
DenseMap<BasicBlock *, BlockFrequency> &ExitWeights,
BranchProbabilityInfo *BPI);
- void emitCallAndSwitchStatement(Function *newFunction,
- BasicBlock *newHeader,
- ValueSet &inputs,
- ValueSet &outputs);
+ CallInst *emitCallAndSwitchStatement(Function *newFunction,
+ BasicBlock *newHeader,
+ ValueSet &inputs, ValueSet &outputs);
};
} // end namespace llvm
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/CtorUtils.h b/linux-x64/clang/include/llvm/Transforms/Utils/CtorUtils.h
index 63e564d..3625ee6 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/CtorUtils.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/CtorUtils.h
@@ -1,9 +1,8 @@
//===- CtorUtils.h - Helpers for working with global_ctors ------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/EntryExitInstrumenter.h b/linux-x64/clang/include/llvm/Transforms/Utils/EntryExitInstrumenter.h
index f50c5c9..3913693 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/EntryExitInstrumenter.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/EntryExitInstrumenter.h
@@ -1,9 +1,8 @@
//===- EntryExitInstrumenter.h - Function Entry/Exit Instrumentation ------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/EscapeEnumerator.h b/linux-x64/clang/include/llvm/Transforms/Utils/EscapeEnumerator.h
index 1256dfd..e667796 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/EscapeEnumerator.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/EscapeEnumerator.h
@@ -1,9 +1,8 @@
//===-- EscapeEnumerator.h --------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/Evaluator.h b/linux-x64/clang/include/llvm/Transforms/Utils/Evaluator.h
index 9908ae6..bffd65f 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/Evaluator.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/Evaluator.h
@@ -1,9 +1,8 @@
//===- Evaluator.h - LLVM IR evaluator --------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/FunctionComparator.h b/linux-x64/clang/include/llvm/Transforms/Utils/FunctionComparator.h
index 35ba095..4e2571b 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/FunctionComparator.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/FunctionComparator.h
@@ -1,9 +1,8 @@
//===- FunctionComparator.h - Function Comparator ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/FunctionImportUtils.h b/linux-x64/clang/include/llvm/Transforms/Utils/FunctionImportUtils.h
index b9fbef0..9c2a9ea 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/FunctionImportUtils.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/FunctionImportUtils.h
@@ -1,9 +1,8 @@
//===- FunctionImportUtils.h - Importing support utilities -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -44,6 +43,11 @@
/// to promote any non-renamable values.
SmallPtrSet<GlobalValue *, 8> Used;
+ /// Keep track of any COMDATs that require renaming (because COMDAT
+ /// leader was promoted and renamed). Maps from original COMDAT to one
+ /// with new name.
+ DenseMap<const Comdat *, Comdat *> RenamedComdats;
+
/// Check if we should promote the given local value to global scope.
bool shouldPromoteLocalToGlobal(const GlobalValue *SGV);
@@ -114,6 +118,9 @@
Module &M, const ModuleSummaryIndex &Index,
SetVector<GlobalValue *> *GlobalsToImport = nullptr);
+/// Compute synthetic function entry counts.
+void computeSyntheticCounts(ModuleSummaryIndex &Index);
+
} // End llvm namespace
#endif
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/GlobalStatus.h b/linux-x64/clang/include/llvm/Transforms/Utils/GlobalStatus.h
index 8cc265b..519593c 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/GlobalStatus.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/GlobalStatus.h
@@ -1,9 +1,8 @@
//===- GlobalStatus.h - Compute status info for globals ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/GuardUtils.h b/linux-x64/clang/include/llvm/Transforms/Utils/GuardUtils.h
index 537045e..3b365c5 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/GuardUtils.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/GuardUtils.h
@@ -1,9 +1,8 @@
//===-- GuardUtils.h - Utils for work with guards ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// Utils that are used to perform transformations related to guards and their
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/ImportedFunctionsInliningStatistics.h b/linux-x64/clang/include/llvm/Transforms/Utils/ImportedFunctionsInliningStatistics.h
index b55a989..033ea05 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/ImportedFunctionsInliningStatistics.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/ImportedFunctionsInliningStatistics.h
@@ -1,9 +1,8 @@
-//===-- ImportedFunctionsInliningStats.h ------------------------*- C++ -*-===//
+//===-- ImportedFunctionsInliningStatistics.h -------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// Generating inliner statistics for imported functions, mostly useful for
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/IntegerDivision.h b/linux-x64/clang/include/llvm/Transforms/Utils/IntegerDivision.h
index 5d9927e..35cae9a 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/IntegerDivision.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/IntegerDivision.h
@@ -1,9 +1,8 @@
//===- llvm/Transforms/Utils/IntegerDivision.h ------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/LCSSA.h b/linux-x64/clang/include/llvm/Transforms/Utils/LCSSA.h
index fe717e5..b01c802 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/LCSSA.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/LCSSA.h
@@ -1,9 +1,8 @@
//===- LCSSA.h - Loop-closed SSA transform Pass -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/LibCallsShrinkWrap.h b/linux-x64/clang/include/llvm/Transforms/Utils/LibCallsShrinkWrap.h
index c9df532..ff1537a 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/LibCallsShrinkWrap.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/LibCallsShrinkWrap.h
@@ -1,9 +1,8 @@
//===- LibCallsShrinkWrap.h - Shrink Wrap Library Calls -------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/Local.h b/linux-x64/clang/include/llvm/Transforms/Utils/Local.h
index f7da696..641b645 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/Local.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/Local.h
@@ -1,9 +1,8 @@
//===- Local.h - Functions to perform local transformations -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -21,12 +20,11 @@
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/TinyPtrVector.h"
#include "llvm/Analysis/AliasAnalysis.h"
+#include "llvm/Analysis/DomTreeUpdater.h"
#include "llvm/Analysis/Utils/Local.h"
-#include "llvm/IR/CallSite.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DataLayout.h"
-#include "llvm/IR/DomTreeUpdater.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/GetElementPtrTypeIterator.h"
#include "llvm/IR/Operator.h"
@@ -174,6 +172,12 @@
bool SimplifyInstructionsInBlock(BasicBlock *BB,
const TargetLibraryInfo *TLI = nullptr);
+/// Replace all the uses of an SSA value in @llvm.dbg intrinsics with
+/// undef. This is useful for signaling that a variable, e.g. has been
+/// found dead and hence it's unavailable at a given program point.
+/// Returns true if the dbg values have been changed.
+bool replaceDbgUsesWithUndef(Instruction *I);
+
//===----------------------------------------------------------------------===//
// Control Flow Graph Restructuring.
//
@@ -336,6 +340,18 @@
/// Returns true if any debug users were updated.
bool salvageDebugInfo(Instruction &I);
+/// Implementation of salvageDebugInfo, applying only to instructions in
+/// \p Insns, rather than all debug users of \p I.
+bool salvageDebugInfoForDbgValues(Instruction &I,
+ ArrayRef<DbgVariableIntrinsic *> Insns);
+
+/// Given an instruction \p I and DIExpression \p DIExpr operating on it, write
+/// the effects of \p I into the returned DIExpression, or return nullptr if
+/// it cannot be salvaged. \p StackVal: whether DW_OP_stack_value should be
+/// appended to the expression.
+DIExpression *salvageDebugInfoImpl(Instruction &I, DIExpression *DIExpr,
+ bool StackVal);
+
/// Point debug users of \p From to \p To or salvage them. Use this function
/// only when replacing all uses of \p From with \p To, with a guarantee that
/// \p From is going to be deleted.
@@ -420,7 +436,7 @@
unsigned replaceDominatedUsesWith(Value *From, Value *To, DominatorTree &DT,
const BasicBlock *BB);
-/// Return true if the CallSite CS calls a gc leaf function.
+/// Return true if this call calls a gc leaf function.
///
/// A leaf function is a function that does not safepoint the thread during its
/// execution. During a call or invoke to such a function, the callers stack
@@ -428,7 +444,7 @@
///
/// Most passes can and should ignore this information, and it is only used
/// during lowering by the GC infrastructure.
-bool callsGCLeafFunction(ImmutableCallSite CS, const TargetLibraryInfo &TLI);
+bool callsGCLeafFunction(const CallBase *Call, const TargetLibraryInfo &TLI);
/// Copy a nonnull metadata node to a new load instruction.
///
@@ -446,6 +462,14 @@
/// Remove the debug intrinsic instructions for the given instruction.
void dropDebugUsers(Instruction &I);
+/// Hoist all of the instructions in the \p IfBlock to the dominant block
+/// \p DomBlock, by moving its instructions to the insertion point \p InsertPt.
+///
+/// The moved instructions receive the insertion point debug location values
+/// (DILocations) and their debug intrinsic instructions are removed.
+void hoistAllInstructionsInto(BasicBlock *DomBlock, Instruction *InsertPt,
+ BasicBlock *BB);
+
//===----------------------------------------------------------------------===//
// Intrinsic pattern matching
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/LoopRotationUtils.h b/linux-x64/clang/include/llvm/Transforms/Utils/LoopRotationUtils.h
index 231e5bb..1e80722 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/LoopRotationUtils.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/LoopRotationUtils.h
@@ -1,9 +1,8 @@
//===- LoopRotationUtils.h - Utilities to perform loop rotation -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -20,6 +19,7 @@
class DominatorTree;
class Loop;
class LoopInfo;
+class MemorySSAUpdater;
class ScalarEvolution;
struct SimplifyQuery;
class TargetTransformInfo;
@@ -32,8 +32,8 @@
/// LoopRotation. If it is true, the profitability heuristic will be ignored.
bool LoopRotation(Loop *L, LoopInfo *LI, const TargetTransformInfo *TTI,
AssumptionCache *AC, DominatorTree *DT, ScalarEvolution *SE,
- const SimplifyQuery &SQ, bool RotationOnly,
- unsigned Threshold, bool IsUtilMode);
+ MemorySSAUpdater *MSSAU, const SimplifyQuery &SQ,
+ bool RotationOnly, unsigned Threshold, bool IsUtilMode);
} // namespace llvm
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/LoopSimplify.h b/linux-x64/clang/include/llvm/Transforms/Utils/LoopSimplify.h
index 166da27..938e46d 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/LoopSimplify.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/LoopSimplify.h
@@ -1,9 +1,8 @@
//===- LoopSimplify.h - Loop Canonicalization Pass --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/LoopUtils.h b/linux-x64/clang/include/llvm/Transforms/Utils/LoopUtils.h
index c75a1de..a5883ac 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/LoopUtils.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/LoopUtils.h
@@ -1,9 +1,8 @@
//===- llvm/Transforms/Utils/LoopUtils.h - Loop utilities -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -41,6 +40,8 @@
class DataLayout;
class Loop;
class LoopInfo;
+class MemoryAccess;
+class MemorySSAUpdater;
class OptimizationRemarkEmitter;
class PredicatedScalarEvolution;
class PredIteratorCache;
@@ -78,7 +79,8 @@
///
/// Looks at all instructions in the loop which have uses outside of the
/// current loop. For each, an LCSSA PHI node is inserted and the uses outside
-/// the loop are rewritten to use this node.
+/// the loop are rewritten to use this node. Sub-loops must be in LCSSA form
+/// already.
///
/// LoopInfo and DominatorTree are required and preserved.
///
@@ -109,8 +111,8 @@
/// arguments. Diagnostics is emitted via \p ORE. It returns changed status.
bool sinkRegion(DomTreeNode *, AliasAnalysis *, LoopInfo *, DominatorTree *,
TargetLibraryInfo *, TargetTransformInfo *, Loop *,
- AliasSetTracker *, LoopSafetyInfo *,
- OptimizationRemarkEmitter *ORE);
+ AliasSetTracker *, MemorySSAUpdater *, ICFLoopSafetyInfo *,
+ bool, int &, OptimizationRemarkEmitter *);
/// Walk the specified region of the CFG (defined by all blocks
/// dominated by the specified block, and that are in the current loop) in depth
@@ -122,7 +124,8 @@
/// ORE. It returns changed status.
bool hoistRegion(DomTreeNode *, AliasAnalysis *, LoopInfo *, DominatorTree *,
TargetLibraryInfo *, Loop *, AliasSetTracker *,
- LoopSafetyInfo *, OptimizationRemarkEmitter *ORE);
+ MemorySSAUpdater *, ICFLoopSafetyInfo *, bool, int &,
+ OptimizationRemarkEmitter *);
/// This function deletes dead loops. The caller of this function needs to
/// guarantee that the loop is infact dead.
@@ -146,13 +149,12 @@
/// LoopInfo, DominatorTree, Loop, AliasSet information for all instructions
/// of the loop and loop safety information as arguments.
/// Diagnostics is emitted via \p ORE. It returns changed status.
-bool promoteLoopAccessesToScalars(const SmallSetVector<Value *, 8> &,
- SmallVectorImpl<BasicBlock *> &,
- SmallVectorImpl<Instruction *> &,
- PredIteratorCache &, LoopInfo *,
- DominatorTree *, const TargetLibraryInfo *,
- Loop *, AliasSetTracker *, LoopSafetyInfo *,
- OptimizationRemarkEmitter *);
+bool promoteLoopAccessesToScalars(
+ const SmallSetVector<Value *, 8> &, SmallVectorImpl<BasicBlock *> &,
+ SmallVectorImpl<Instruction *> &, SmallVectorImpl<MemoryAccess *> &,
+ PredIteratorCache &, LoopInfo *, DominatorTree *, const TargetLibraryInfo *,
+ Loop *, AliasSetTracker *, MemorySSAUpdater *, ICFLoopSafetyInfo *,
+ OptimizationRemarkEmitter *);
/// Does a BFS from a given node to all of its children inside a given loop.
/// The returned vector of nodes includes the starting point.
@@ -167,9 +169,80 @@
/// If it has a value (e.g. {"llvm.distribute", 1} return the value as an
/// operand or null otherwise. If the string metadata is not found return
/// Optional's not-a-value.
-Optional<const MDOperand *> findStringMetadataForLoop(Loop *TheLoop,
+Optional<const MDOperand *> findStringMetadataForLoop(const Loop *TheLoop,
StringRef Name);
+/// Find named metadata for a loop with an integer value.
+llvm::Optional<int> getOptionalIntLoopAttribute(Loop *TheLoop, StringRef Name);
+
+/// Create a new loop identifier for a loop created from a loop transformation.
+///
+/// @param OrigLoopID The loop ID of the loop before the transformation.
+/// @param FollowupAttrs List of attribute names that contain attributes to be
+/// added to the new loop ID.
+/// @param InheritOptionsAttrsPrefix Selects which attributes should be inherited
+/// from the original loop. The following values
+/// are considered:
+/// nullptr : Inherit all attributes from @p OrigLoopID.
+/// "" : Do not inherit any attribute from @p OrigLoopID; only use
+/// those specified by a followup attribute.
+/// "<prefix>": Inherit all attributes except those which start with
+/// <prefix>; commonly used to remove metadata for the
+/// applied transformation.
+/// @param AlwaysNew If true, do not try to reuse OrigLoopID and never return
+/// None.
+///
+/// @return The loop ID for the after-transformation loop. The following values
+/// can be returned:
+/// None : No followup attribute was found; it is up to the
+/// transformation to choose attributes that make sense.
+/// @p OrigLoopID: The original identifier can be reused.
+/// nullptr : The new loop has no attributes.
+/// MDNode* : A new unique loop identifier.
+Optional<MDNode *>
+makeFollowupLoopID(MDNode *OrigLoopID, ArrayRef<StringRef> FollowupAttrs,
+ const char *InheritOptionsAttrsPrefix = "",
+ bool AlwaysNew = false);
+
+/// Look for the loop attribute that disables all transformation heuristic.
+bool hasDisableAllTransformsHint(const Loop *L);
+
+/// The mode sets how eager a transformation should be applied.
+enum TransformationMode {
+ /// The pass can use heuristics to determine whether a transformation should
+ /// be applied.
+ TM_Unspecified,
+
+ /// The transformation should be applied without considering a cost model.
+ TM_Enable,
+
+ /// The transformation should not be applied.
+ TM_Disable,
+
+ /// Force is a flag and should not be used alone.
+ TM_Force = 0x04,
+
+ /// The transformation was directed by the user, e.g. by a #pragma in
+ /// the source code. If the transformation could not be applied, a
+ /// warning should be emitted.
+ TM_ForcedByUser = TM_Enable | TM_Force,
+
+ /// The transformation must not be applied. For instance, `#pragma clang loop
+ /// unroll(disable)` explicitly forbids any unrolling to take place. Unlike
+ /// general loop metadata, it must not be dropped. Most passes should not
+ /// behave differently under TM_Disable and TM_SuppressedByUser.
+ TM_SuppressedByUser = TM_Disable | TM_Force
+};
+
+/// @{
+/// Get the mode for LLVM's supported loop transformations.
+TransformationMode hasUnrollTransformation(Loop *L);
+TransformationMode hasUnrollAndJamTransformation(Loop *L);
+TransformationMode hasVectorizeTransformation(Loop *L);
+TransformationMode hasDistributeTransformation(Loop *L);
+TransformationMode hasLICMVersioningTransformation(Loop *L);
+/// @}
+
/// Set input string into loop metadata by keeping other values intact.
void addStringMetadataToLoop(Loop *TheLoop, const char *MDString,
unsigned V = 0);
@@ -202,7 +275,9 @@
/// If \p ORE is set use it to emit optimization remarks.
bool canSinkOrHoistInst(Instruction &I, AAResults *AA, DominatorTree *DT,
Loop *CurLoop, AliasSetTracker *CurAST,
- bool TargetExecutesOncePerLoop,
+ MemorySSAUpdater *MSSAU, bool TargetExecutesOncePerLoop,
+ bool NoOfMemAccessesTooLarge,
+ int *LicmMssaOptCap = nullptr,
OptimizationRemarkEmitter *ORE = nullptr);
/// Returns a Min/Max operation corresponding to MinMaxRecurrenceKind.
@@ -249,6 +324,23 @@
/// Flag set: NSW, NUW, exact, and all of fast-math.
void propagateIRFlags(Value *I, ArrayRef<Value *> VL, Value *OpValue = nullptr);
+/// Returns true if we can prove that \p S is defined and always negative in
+/// loop \p L.
+bool isKnownNegativeInLoop(const SCEV *S, const Loop *L, ScalarEvolution &SE);
+
+/// Returns true if we can prove that \p S is defined and always non-negative in
+/// loop \p L.
+bool isKnownNonNegativeInLoop(const SCEV *S, const Loop *L,
+ ScalarEvolution &SE);
+
+/// Returns true if \p S is defined and never is equal to signed/unsigned max.
+bool cannotBeMaxInLoop(const SCEV *S, const Loop *L, ScalarEvolution &SE,
+ bool Signed);
+
+/// Returns true if \p S is defined and never is equal to signed/unsigned min.
+bool cannotBeMinInLoop(const SCEV *S, const Loop *L, ScalarEvolution &SE,
+ bool Signed);
+
} // end namespace llvm
#endif // LLVM_TRANSFORMS_UTILS_LOOPUTILS_H
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/LoopVersioning.h b/linux-x64/clang/include/llvm/Transforms/Utils/LoopVersioning.h
index fcd734b..355c4d7 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/LoopVersioning.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/LoopVersioning.h
@@ -1,9 +1,8 @@
//===- LoopVersioning.h - Utility to version a loop -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/LowerInvoke.h b/linux-x64/clang/include/llvm/Transforms/Utils/LowerInvoke.h
index 12774c7..c1198b0 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/LowerInvoke.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/LowerInvoke.h
@@ -1,9 +1,8 @@
//===- LowerInvoke.h - Eliminate Invoke instructions ----------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/LowerMemIntrinsics.h b/linux-x64/clang/include/llvm/Transforms/Utils/LowerMemIntrinsics.h
index 2b7d0f6..8e9d7b5 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/LowerMemIntrinsics.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/LowerMemIntrinsics.h
@@ -1,9 +1,8 @@
-//===- llvm/Transforms/Utils/LowerMemintrinsics.h ---------------*- C++ -*-===//
+//===- llvm/Transforms/Utils/LowerMemIntrinsics.h ---------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/Mem2Reg.h b/linux-x64/clang/include/llvm/Transforms/Utils/Mem2Reg.h
index 4076843..76c1c2c 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/Mem2Reg.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/Mem2Reg.h
@@ -1,9 +1,8 @@
//===- Mem2Reg.h - The -mem2reg pass, a wrapper around the Utils lib ------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/ModuleUtils.h b/linux-x64/clang/include/llvm/Transforms/Utils/ModuleUtils.h
index 14615c2..c69af55 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/ModuleUtils.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/ModuleUtils.h
@@ -1,9 +1,8 @@
//===-- ModuleUtils.h - Functions to manipulate Modules ---------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -22,6 +21,7 @@
template <typename T> class ArrayRef;
class Module;
class Function;
+class FunctionCallee;
class GlobalValue;
class GlobalVariable;
class Constant;
@@ -40,24 +40,36 @@
void appendToGlobalDtors(Module &M, Function *F, int Priority,
Constant *Data = nullptr);
-// Validate the result of Module::getOrInsertFunction called for an interface
-// function of given sanitizer. If the instrumented module defines a function
-// with the same name, their prototypes must match, otherwise
-// getOrInsertFunction returns a bitcast.
-Function *checkSanitizerInterfaceFunction(Constant *FuncOrBitcast);
-
-Function *declareSanitizerInitFunction(Module &M, StringRef InitName,
- ArrayRef<Type *> InitArgTypes);
+FunctionCallee declareSanitizerInitFunction(Module &M, StringRef InitName,
+ ArrayRef<Type *> InitArgTypes);
/// Creates sanitizer constructor function, and calls sanitizer's init
/// function from it.
/// \return Returns pair of pointers to constructor, and init functions
/// respectively.
-std::pair<Function *, Function *> createSanitizerCtorAndInitFunctions(
+std::pair<Function *, FunctionCallee> createSanitizerCtorAndInitFunctions(
Module &M, StringRef CtorName, StringRef InitName,
ArrayRef<Type *> InitArgTypes, ArrayRef<Value *> InitArgs,
StringRef VersionCheckName = StringRef());
+/// Creates sanitizer constructor function lazily. If a constructor and init
+/// function already exist, this function returns it. Otherwise it calls \c
+/// createSanitizerCtorAndInitFunctions. The FunctionsCreatedCallback is invoked
+/// in that case, passing the new Ctor and Init function.
+///
+/// \return Returns pair of pointers to constructor, and init functions
+/// respectively.
+std::pair<Function *, FunctionCallee> getOrCreateSanitizerCtorAndInitFunctions(
+ Module &M, StringRef CtorName, StringRef InitName,
+ ArrayRef<Type *> InitArgTypes, ArrayRef<Value *> InitArgs,
+ function_ref<void(Function *, FunctionCallee)> FunctionsCreatedCallback,
+ StringRef VersionCheckName = StringRef());
+
+// Creates and returns a sanitizer init function without argument if it doesn't
+// exist, and adds it to the global constructors list. Otherwise it returns the
+// existing function.
+Function *getOrCreateInitFunction(Module &M, StringRef Name);
+
/// Rename all the anon globals in the module using a hash computed from
/// the list of public globals in the module.
bool nameUnamedGlobals(Module &M);
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/NameAnonGlobals.h b/linux-x64/clang/include/llvm/Transforms/Utils/NameAnonGlobals.h
index 17fc902..659ebe3 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/NameAnonGlobals.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/NameAnonGlobals.h
@@ -1,9 +1,8 @@
//===-- NameAnonGlobals.h - Anonymous Global Naming Pass --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/PredicateInfo.h b/linux-x64/clang/include/llvm/Transforms/Utils/PredicateInfo.h
index 2fc3808..da4a5dc 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/PredicateInfo.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/PredicateInfo.h
@@ -1,9 +1,8 @@
//===- PredicateInfo.h - Build PredicateInfo ----------------------*-C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
///
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/PromoteMemToReg.h b/linux-x64/clang/include/llvm/Transforms/Utils/PromoteMemToReg.h
index 5ddfbe2..b2b4507 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/PromoteMemToReg.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/PromoteMemToReg.h
@@ -1,9 +1,8 @@
//===- PromoteMemToReg.h - Promote Allocas to Scalars -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/SSAUpdater.h b/linux-x64/clang/include/llvm/Transforms/Utils/SSAUpdater.h
index 4a79116..22b2295 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/SSAUpdater.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/SSAUpdater.h
@@ -1,9 +1,8 @@
//===- SSAUpdater.h - Unstructured SSA Update Tool --------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -76,6 +75,10 @@
/// block.
bool HasValueForBlock(BasicBlock *BB) const;
+ /// Return the value for the specified block if the SSAUpdater has one,
+ /// otherwise return nullptr.
+ Value *FindValueForBlock(BasicBlock *BB) const;
+
/// Construct SSA form, materializing a value that is live at the end
/// of the specified block.
Value *GetValueAtEndOfBlock(BasicBlock *BB);
@@ -144,7 +147,7 @@
/// Insts is a list of loads and stores to promote, and Name is the basename
/// for the PHIs to insert. After this is complete, the loads and stores are
/// removed from the code.
- void run(const SmallVectorImpl<Instruction *> &Insts) const;
+ void run(const SmallVectorImpl<Instruction *> &Insts);
/// Return true if the specified instruction is in the Inst list.
///
@@ -155,7 +158,7 @@
/// This hook is invoked after all the stores are found and inserted as
/// available values.
- virtual void doExtraRewritesBeforeFinalDeletion() const {}
+ virtual void doExtraRewritesBeforeFinalDeletion() {}
/// Clients can choose to implement this to get notified right before
/// a load is RAUW'd another value.
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/SSAUpdaterBulk.h b/linux-x64/clang/include/llvm/Transforms/Utils/SSAUpdaterBulk.h
index 53a608f..5d17d6f 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/SSAUpdaterBulk.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/SSAUpdaterBulk.h
@@ -1,9 +1,8 @@
//===- SSAUpdaterBulk.h - Unstructured SSA Update Tool ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/SSAUpdaterImpl.h b/linux-x64/clang/include/llvm/Transforms/Utils/SSAUpdaterImpl.h
index b7649ba..ee06893 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/SSAUpdaterImpl.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/SSAUpdaterImpl.h
@@ -1,9 +1,8 @@
//===- SSAUpdaterImpl.h - SSA Updater Implementation ------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -357,10 +356,9 @@
BBInfo *Info = *I;
if (Info->DefBB != Info) {
- // Record the available value at join nodes to speed up subsequent
- // uses of this SSAUpdater for the same value.
- if (Info->NumPreds > 1)
- (*AvailableVals)[Info->BB] = Info->DefBB->AvailableVal;
+ // Record the available value to speed up subsequent uses of this
+ // SSAUpdater for the same value.
+ (*AvailableVals)[Info->BB] = Info->DefBB->AvailableVal;
continue;
}
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/SanitizerStats.h b/linux-x64/clang/include/llvm/Transforms/Utils/SanitizerStats.h
index d36e342..14e8ae0 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/SanitizerStats.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/SanitizerStats.h
@@ -1,9 +1,8 @@
//===- SanitizerStats.h - Sanitizer statistics gathering -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/SimplifyIndVar.h b/linux-x64/clang/include/llvm/Transforms/Utils/SimplifyIndVar.h
index a1dfed2..dec73ef 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/SimplifyIndVar.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/SimplifyIndVar.h
@@ -1,9 +1,8 @@
//===-- llvm/Transforms/Utils/SimplifyIndVar.h - Indvar Utils ---*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/SimplifyLibCalls.h b/linux-x64/clang/include/llvm/Transforms/Utils/SimplifyLibCalls.h
index 2b344f4..44eef09 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/SimplifyLibCalls.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/SimplifyLibCalls.h
@@ -1,9 +1,8 @@
//===- SimplifyLibCalls.h - Library call simplifier -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -77,21 +76,34 @@
OptimizationRemarkEmitter &ORE;
bool UnsafeFPShrink;
function_ref<void(Instruction *, Value *)> Replacer;
+ function_ref<void(Instruction *)> Eraser;
/// Internal wrapper for RAUW that is the default implementation.
///
/// Other users may provide an alternate function with this signature instead
/// of this one.
- static void replaceAllUsesWithDefault(Instruction *I, Value *With);
+ static void replaceAllUsesWithDefault(Instruction *I, Value *With) {
+ I->replaceAllUsesWith(With);
+ }
+
+ /// Internal wrapper for eraseFromParent that is the default implementation.
+ static void eraseFromParentDefault(Instruction *I) { I->eraseFromParent(); }
/// Replace an instruction's uses with a value using our replacer.
void replaceAllUsesWith(Instruction *I, Value *With);
+ /// Erase an instruction from its parent with our eraser.
+ void eraseFromParent(Instruction *I);
+
+ Value *foldMallocMemset(CallInst *Memset, IRBuilder<> &B);
+
public:
- LibCallSimplifier(const DataLayout &DL, const TargetLibraryInfo *TLI,
- OptimizationRemarkEmitter &ORE,
- function_ref<void(Instruction *, Value *)> Replacer =
- &replaceAllUsesWithDefault);
+ LibCallSimplifier(
+ const DataLayout &DL, const TargetLibraryInfo *TLI,
+ OptimizationRemarkEmitter &ORE,
+ function_ref<void(Instruction *, Value *)> Replacer =
+ &replaceAllUsesWithDefault,
+ function_ref<void(Instruction *)> Eraser = &eraseFromParentDefault);
/// optimizeCall - Take the given call instruction and return a more
/// optimal value to replace the instruction with or 0 if a more
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/SplitModule.h b/linux-x64/clang/include/llvm/Transforms/Utils/SplitModule.h
index d2c31f2..7839c5d 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/SplitModule.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/SplitModule.h
@@ -1,9 +1,8 @@
//===- SplitModule.h - Split a module into partitions -----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/SymbolRewriter.h b/linux-x64/clang/include/llvm/Transforms/Utils/SymbolRewriter.h
index 5f6488e..ce9dcaf 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/SymbolRewriter.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/SymbolRewriter.h
@@ -1,9 +1,8 @@
//===- SymbolRewriter.h - Symbol Rewriting Pass -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h b/linux-x64/clang/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h
index 222c601..f68534e 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h
@@ -1,9 +1,8 @@
//===-- UnifyFunctionExitNodes.h - Ensure fn's have one return --*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/UnrollLoop.h b/linux-x64/clang/include/llvm/Transforms/Utils/UnrollLoop.h
index a6b84af..8f3824e 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/UnrollLoop.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/UnrollLoop.h
@@ -1,9 +1,8 @@
//===- llvm/Transforms/Utils/UnrollLoop.h - Unrolling utilities -*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -35,6 +34,15 @@
using NewLoopsMap = SmallDenseMap<const Loop *, Loop *, 4>;
+/// @{
+/// Metadata attribute names
+const char *const LLVMLoopUnrollFollowupAll = "llvm.loop.unroll.followup_all";
+const char *const LLVMLoopUnrollFollowupUnrolled =
+ "llvm.loop.unroll.followup_unrolled";
+const char *const LLVMLoopUnrollFollowupRemainder =
+ "llvm.loop.unroll.followup_remainder";
+/// @}
+
const Loop* addClonedBlockToLoopInfo(BasicBlock *OriginalBB,
BasicBlock *ClonedBB, LoopInfo *LI,
NewLoopsMap &NewLoops);
@@ -61,15 +69,16 @@
unsigned PeelCount, bool UnrollRemainder,
LoopInfo *LI, ScalarEvolution *SE,
DominatorTree *DT, AssumptionCache *AC,
- OptimizationRemarkEmitter *ORE, bool PreserveLCSSA);
+ OptimizationRemarkEmitter *ORE, bool PreserveLCSSA,
+ Loop **RemainderLoop = nullptr);
bool UnrollRuntimeLoopRemainder(Loop *L, unsigned Count,
bool AllowExpensiveTripCount,
bool UseEpilogRemainder, bool UnrollRemainder,
- LoopInfo *LI,
- ScalarEvolution *SE, DominatorTree *DT,
- AssumptionCache *AC,
- bool PreserveLCSSA);
+ LoopInfo *LI, ScalarEvolution *SE,
+ DominatorTree *DT, AssumptionCache *AC,
+ bool PreserveLCSSA,
+ Loop **ResultLoop = nullptr);
void computePeelCount(Loop *L, unsigned LoopSize,
TargetTransformInfo::UnrollingPreferences &UP,
@@ -84,7 +93,8 @@
unsigned TripMultiple, bool UnrollRemainder,
LoopInfo *LI, ScalarEvolution *SE,
DominatorTree *DT, AssumptionCache *AC,
- OptimizationRemarkEmitter *ORE);
+ OptimizationRemarkEmitter *ORE,
+ Loop **EpilogueLoop = nullptr);
bool isSafeToUnrollAndJam(Loop *L, ScalarEvolution &SE, DominatorTree &DT,
DependenceInfo &DI);
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/VNCoercion.h b/linux-x64/clang/include/llvm/Transforms/Utils/VNCoercion.h
index 1baa9b6..f67b9ed 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/VNCoercion.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/VNCoercion.h
@@ -1,9 +1,8 @@
//===- VNCoercion.h - Value Numbering Coercion Utilities --------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
/// \file / This file provides routines used by LLVM's value numbering passes to
diff --git a/linux-x64/clang/include/llvm/Transforms/Utils/ValueMapper.h b/linux-x64/clang/include/llvm/Transforms/Utils/ValueMapper.h
index 4ecb23e..1952a21 100644
--- a/linux-x64/clang/include/llvm/Transforms/Utils/ValueMapper.h
+++ b/linux-x64/clang/include/llvm/Transforms/Utils/ValueMapper.h
@@ -1,9 +1,8 @@
//===- ValueMapper.h - Remapping for constants and metadata -----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Vectorize.h b/linux-x64/clang/include/llvm/Transforms/Vectorize.h
index 950af7f..a411b56 100644
--- a/linux-x64/clang/include/llvm/Transforms/Vectorize.h
+++ b/linux-x64/clang/include/llvm/Transforms/Vectorize.h
@@ -1,9 +1,8 @@
//===-- Vectorize.h - Vectorization Transformations -------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -110,8 +109,8 @@
//
// LoopVectorize - Create a loop vectorization pass.
//
-Pass *createLoopVectorizePass(bool NoUnrolling = false,
- bool AlwaysVectorize = true);
+Pass *createLoopVectorizePass(bool InterleaveOnlyWhenForced = false,
+ bool VectorizeOnlyWhenForced = false);
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/Transforms/Vectorize/LoadStoreVectorizer.h b/linux-x64/clang/include/llvm/Transforms/Vectorize/LoadStoreVectorizer.h
new file mode 100644
index 0000000..f72c76c
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Transforms/Vectorize/LoadStoreVectorizer.h
@@ -0,0 +1,26 @@
+//===- LoadStoreVectorizer.cpp - GPU Load & Store Vectorizer --------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TRANSFORMS_VECTORIZE_LOADSTOREVECTORIZER_H
+#define LLVM_TRANSFORMS_VECTORIZE_LOADSTOREVECTORIZER_H
+
+#include "llvm/IR/PassManager.h"
+
+namespace llvm {
+
+class LoadStoreVectorizerPass : public PassInfoMixin<LoadStoreVectorizerPass> {
+public:
+ PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
+};
+
+/// Create a legacy pass manager instance of the LoadStoreVectorizer pass
+Pass *createLoadStoreVectorizerPass();
+
+}
+
+#endif /* LLVM_TRANSFORMS_VECTORIZE_LOADSTOREVECTORIZER_H */
diff --git a/linux-x64/clang/include/llvm/Transforms/Vectorize/LoopVectorizationLegality.h b/linux-x64/clang/include/llvm/Transforms/Vectorize/LoopVectorizationLegality.h
index 2a62420..ea0a1c2 100644
--- a/linux-x64/clang/include/llvm/Transforms/Vectorize/LoopVectorizationLegality.h
+++ b/linux-x64/clang/include/llvm/Transforms/Vectorize/LoopVectorizationLegality.h
@@ -1,9 +1,8 @@
//===- llvm/Transforms/Vectorize/LoopVectorizationLegality.h ----*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -95,17 +94,14 @@
FK_Enabled = 1, ///< Forcing enabled.
};
- LoopVectorizeHints(const Loop *L, bool DisableInterleaving,
+ LoopVectorizeHints(const Loop *L, bool InterleaveOnlyWhenForced,
OptimizationRemarkEmitter &ORE);
/// Mark the loop L as already vectorized by setting the width to 1.
- void setAlreadyVectorized() {
- IsVectorized.Value = 1;
- Hint Hints[] = {IsVectorized};
- writeHintsToMetadata(Hints);
- }
+ void setAlreadyVectorized();
- bool allowVectorization(Function *F, Loop *L, bool AlwaysVectorize) const;
+ bool allowVectorization(Function *F, Loop *L,
+ bool VectorizeOnlyWhenForced) const;
/// Dumps all the hint information.
void emitRemarkWithHints() const;
@@ -113,7 +109,12 @@
unsigned getWidth() const { return Width.Value; }
unsigned getInterleave() const { return Interleave.Value; }
unsigned getIsVectorized() const { return IsVectorized.Value; }
- enum ForceKind getForce() const { return (ForceKind)Force.Value; }
+ enum ForceKind getForce() const {
+ if ((ForceKind)Force.Value == FK_Undefined &&
+ hasDisableAllTransformsHint(TheLoop))
+ return FK_Disabled;
+ return (ForceKind)Force.Value;
+ }
/// If hints are provided that force vectorization, use the AlwaysPrint
/// pass name to force the frontend to print the diagnostic.
@@ -146,15 +147,6 @@
/// Checks string hint with one operand and set value if valid.
void setHint(StringRef Name, Metadata *Arg);
- /// Create a new hint from name / value pair.
- MDNode *createHintMetadata(StringRef Name, unsigned V) const;
-
- /// Matches metadata with hint name.
- bool matchesHintMetadataName(MDNode *Node, ArrayRef<Hint> HintTypes);
-
- /// Sets current hints into loop metadata, keeping other values intact.
- void writeHintsToMetadata(ArrayRef<Hint> HintTypes);
-
/// The loop these hints belong to.
const Loop *TheLoop;
@@ -241,6 +233,10 @@
/// If false, good old LV code.
bool canVectorize(bool UseVPlanNativePath);
+ /// Return true if we can vectorize this loop while folding its tail by
+ /// masking.
+ bool canFoldTailByMasking();
+
/// Returns the primary induction variable.
PHINode *getPrimaryInduction() { return PrimaryInduction; }
diff --git a/linux-x64/clang/include/llvm/Transforms/Vectorize/LoopVectorize.h b/linux-x64/clang/include/llvm/Transforms/Vectorize/LoopVectorize.h
index d79d846..cdbe5f6 100644
--- a/linux-x64/clang/include/llvm/Transforms/Vectorize/LoopVectorize.h
+++ b/linux-x64/clang/include/llvm/Transforms/Vectorize/LoopVectorize.h
@@ -1,9 +1,8 @@
//===- LoopVectorize.h ------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -78,12 +77,13 @@
/// The LoopVectorize Pass.
struct LoopVectorizePass : public PassInfoMixin<LoopVectorizePass> {
- bool DisableUnrolling = false;
+ /// If false, consider all loops for interleaving.
+ /// If true, only loops that explicitly request interleaving are considered.
+ bool InterleaveOnlyWhenForced = false;
- /// If true, consider all loops for vectorization.
- /// If false, only loops that explicitly request vectorization are
- /// considered.
- bool AlwaysVectorize = true;
+ /// If false, consider all loops for vectorization.
+ /// If true, only loops that explicitly request vectorization are considered.
+ bool VectorizeOnlyWhenForced = false;
ScalarEvolution *SE;
LoopInfo *LI;
diff --git a/linux-x64/clang/include/llvm/Transforms/Vectorize/SLPVectorizer.h b/linux-x64/clang/include/llvm/Transforms/Vectorize/SLPVectorizer.h
index 3152e81..9be7055 100644
--- a/linux-x64/clang/include/llvm/Transforms/Vectorize/SLPVectorizer.h
+++ b/linux-x64/clang/include/llvm/Transforms/Vectorize/SLPVectorizer.h
@@ -1,9 +1,8 @@
//===- SLPVectorizer.h ------------------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
// This pass implements the Bottom Up SLP vectorizer. It detects consecutive
diff --git a/linux-x64/clang/include/llvm/WindowsManifest/WindowsManifestMerger.h b/linux-x64/clang/include/llvm/WindowsManifest/WindowsManifestMerger.h
index 302d370..935c930 100644
--- a/linux-x64/clang/include/llvm/WindowsManifest/WindowsManifestMerger.h
+++ b/linux-x64/clang/include/llvm/WindowsManifest/WindowsManifestMerger.h
@@ -1,9 +1,8 @@
//===-- WindowsManifestMerger.h ---------------------------------*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===---------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/WindowsResource/ResourceProcessor.h b/linux-x64/clang/include/llvm/WindowsResource/ResourceProcessor.h
index 4ca0a4b..4e99c05 100644
--- a/linux-x64/clang/include/llvm/WindowsResource/ResourceProcessor.h
+++ b/linux-x64/clang/include/llvm/WindowsResource/ResourceProcessor.h
@@ -1,9 +1,8 @@
//===-- ResourceProcessor.h -------------------------------------*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===---------------------------------------------------------------------===//
diff --git a/linux-x64/clang/include/llvm/WindowsResource/ResourceScriptToken.h b/linux-x64/clang/include/llvm/WindowsResource/ResourceScriptToken.h
index 494ae32..254121c 100644
--- a/linux-x64/clang/include/llvm/WindowsResource/ResourceScriptToken.h
+++ b/linux-x64/clang/include/llvm/WindowsResource/ResourceScriptToken.h
@@ -1,9 +1,8 @@
//===-- ResourceScriptToken.h -----------------------------------*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===---------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/WindowsResource/ResourceScriptTokenList.h b/linux-x64/clang/include/llvm/WindowsResource/ResourceScriptTokenList.h
index 0beed11..6b44dcc 100644
--- a/linux-x64/clang/include/llvm/WindowsResource/ResourceScriptTokenList.h
+++ b/linux-x64/clang/include/llvm/WindowsResource/ResourceScriptTokenList.h
@@ -1,9 +1,8 @@
//===-- ResourceScriptTokenList.h -------------------------------*- C++-*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===---------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/XRay/BlockIndexer.h b/linux-x64/clang/include/llvm/XRay/BlockIndexer.h
index 46a7243..dafd2b5 100644
--- a/linux-x64/clang/include/llvm/XRay/BlockIndexer.h
+++ b/linux-x64/clang/include/llvm/XRay/BlockIndexer.h
@@ -1,9 +1,8 @@
//===- BlockIndexer.h - FDR Block Indexing Visitor ------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -54,6 +53,8 @@
Error visit(NewBufferRecord &) override;
Error visit(EndBufferRecord &) override;
Error visit(FunctionRecord &) override;
+ Error visit(CustomEventRecordV5 &) override;
+ Error visit(TypedEventRecord &) override;
/// The flush() function will clear out the current state of the visitor, to
/// allow for explicitly flushing a block's records to the currently
diff --git a/linux-x64/clang/include/llvm/XRay/BlockPrinter.h b/linux-x64/clang/include/llvm/XRay/BlockPrinter.h
index 3a8f6e0..9492580 100644
--- a/linux-x64/clang/include/llvm/XRay/BlockPrinter.h
+++ b/linux-x64/clang/include/llvm/XRay/BlockPrinter.h
@@ -1,9 +1,8 @@
//===- BlockPrinter.h - FDR Block Pretty Printer -------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -50,6 +49,8 @@
Error visit(NewBufferRecord &) override;
Error visit(EndBufferRecord &) override;
Error visit(FunctionRecord &) override;
+ Error visit(CustomEventRecordV5 &) override;
+ Error visit(TypedEventRecord &) override;
void reset() { CurrentState = State::Start; }
};
diff --git a/linux-x64/clang/include/llvm/XRay/BlockVerifier.h b/linux-x64/clang/include/llvm/XRay/BlockVerifier.h
index b43a435..c848fdf 100644
--- a/linux-x64/clang/include/llvm/XRay/BlockVerifier.h
+++ b/linux-x64/clang/include/llvm/XRay/BlockVerifier.h
@@ -1,9 +1,8 @@
//===- BlockVerifier.h - FDR Block Verifier -------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -33,6 +32,7 @@
NewCPUId,
TSCWrap,
CustomEvent,
+ TypedEvent,
Function,
CallArg,
EndOfBuffer,
@@ -58,6 +58,8 @@
Error visit(NewBufferRecord &) override;
Error visit(EndBufferRecord &) override;
Error visit(FunctionRecord &) override;
+ Error visit(CustomEventRecordV5 &) override;
+ Error visit(TypedEventRecord &) override;
Error verify();
void reset();
diff --git a/linux-x64/clang/include/llvm/XRay/FDRLogBuilder.h b/linux-x64/clang/include/llvm/XRay/FDRLogBuilder.h
index b5e9ed5..3f49dc6 100644
--- a/linux-x64/clang/include/llvm/XRay/FDRLogBuilder.h
+++ b/linux-x64/clang/include/llvm/XRay/FDRLogBuilder.h
@@ -1,9 +1,8 @@
//===- FDRLogBuilder.h - XRay FDR Log Building Utility --------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_INCLUDE_LLVM_XRAY_FDRLOGBUILDER_H_
diff --git a/linux-x64/clang/include/llvm/XRay/FDRRecordConsumer.h b/linux-x64/clang/include/llvm/XRay/FDRRecordConsumer.h
index e856e15..4fbb1d4 100644
--- a/linux-x64/clang/include/llvm/XRay/FDRRecordConsumer.h
+++ b/linux-x64/clang/include/llvm/XRay/FDRRecordConsumer.h
@@ -1,9 +1,8 @@
//===- FDRRecordConsumer.h - XRay Flight Data Recorder Mode Records -------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_INCLUDE_LLVM_XRAY_FDRRECORDCONSUMER_H_
diff --git a/linux-x64/clang/include/llvm/XRay/FDRRecordProducer.h b/linux-x64/clang/include/llvm/XRay/FDRRecordProducer.h
index e67e228..b530a85 100644
--- a/linux-x64/clang/include/llvm/XRay/FDRRecordProducer.h
+++ b/linux-x64/clang/include/llvm/XRay/FDRRecordProducer.h
@@ -1,9 +1,8 @@
//===- FDRRecordProducer.h - XRay FDR Mode Record Producer ----------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_INCLUDE_LLVM_XRAY_FDRRECORDPRODUCER_H_
@@ -29,6 +28,11 @@
const XRayFileHeader &Header;
DataExtractor &E;
uint32_t &OffsetPtr;
+ uint32_t CurrentBufferBytes = 0;
+
+ // Helper function which gets the next record by speculatively reading through
+ // the log, finding a buffer extents record.
+ Expected<std::unique_ptr<Record>> findNextBufferExtent();
public:
FileBasedRecordProducer(const XRayFileHeader &FH, DataExtractor &DE,
diff --git a/linux-x64/clang/include/llvm/XRay/FDRRecords.h b/linux-x64/clang/include/llvm/XRay/FDRRecords.h
index c524dab..a8ce74b 100644
--- a/linux-x64/clang/include/llvm/XRay/FDRRecords.h
+++ b/linux-x64/clang/include/llvm/XRay/FDRRecords.h
@@ -1,9 +1,8 @@
//===- FDRRecords.h - XRay Flight Data Recorder Mode Records --------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -14,10 +13,14 @@
#ifndef LLVM_LIB_XRAY_FDRRECORDS_H_
#define LLVM_LIB_XRAY_FDRRECORDS_H_
+#include <cstdint>
+#include <string>
+
+#include "llvm/ADT/StringRef.h"
+#include "llvm/Support/Casting.h"
#include "llvm/Support/DataExtractor.h"
#include "llvm/Support/Error.h"
#include "llvm/XRay/XRayRecord.h"
-#include <cstdint>
namespace llvm {
namespace xray {
@@ -26,21 +29,37 @@
class RecordInitializer;
class Record {
-protected:
- enum class Type {
- Unknown,
- Function,
- Metadata,
+public:
+ enum class RecordKind {
+ RK_Metadata,
+ RK_Metadata_BufferExtents,
+ RK_Metadata_WallClockTime,
+ RK_Metadata_NewCPUId,
+ RK_Metadata_TSCWrap,
+ RK_Metadata_CustomEvent,
+ RK_Metadata_CustomEventV5,
+ RK_Metadata_CallArg,
+ RK_Metadata_PIDEntry,
+ RK_Metadata_NewBuffer,
+ RK_Metadata_EndOfBuffer,
+ RK_Metadata_TypedEvent,
+ RK_Metadata_LastMetadata,
+ RK_Function,
};
+ static StringRef kindToString(RecordKind K);
+
+private:
+ const RecordKind T;
+
public:
Record(const Record &) = delete;
Record(Record &&) = delete;
Record &operator=(const Record &) = delete;
Record &operator=(Record &&) = delete;
- Record() = default;
+ explicit Record(RecordKind T) : T(T) {}
- virtual Type type() const = 0;
+ RecordKind getRecordType() const { return T; }
// Each Record should be able to apply an abstract visitor, and choose the
// appropriate function in the visitor to invoke, given its own type.
@@ -50,10 +69,6 @@
};
class MetadataRecord : public Record {
-protected:
- static constexpr int kMetadataBodySize = 15;
- friend class RecordInitializer;
-
public:
enum class MetadataType : unsigned {
Unknown,
@@ -66,13 +81,25 @@
PIDEntry,
NewBuffer,
EndOfBuffer,
+ TypedEvent,
};
- Type type() const override { return Type::Metadata; }
+protected:
+ static constexpr int kMetadataBodySize = 15;
+ friend class RecordInitializer;
- // All metadata records must know to provide the type of their open
- // metadata record.
- virtual MetadataType metadataType() const = 0;
+private:
+ const MetadataType MT;
+
+public:
+ explicit MetadataRecord(RecordKind T, MetadataType M) : Record(T), MT(M) {}
+
+ static bool classof(const Record *R) {
+ return R->getRecordType() >= RecordKind::RK_Metadata &&
+ R->getRecordType() <= RecordKind::RK_Metadata_LastMetadata;
+ }
+
+ MetadataType metadataType() const { return MT; }
virtual ~MetadataRecord() = default;
};
@@ -85,16 +112,22 @@
friend class RecordInitializer;
public:
- BufferExtents() = default;
- explicit BufferExtents(uint64_t S) : MetadataRecord(), Size(S) {}
+ BufferExtents()
+ : MetadataRecord(RecordKind::RK_Metadata_BufferExtents,
+ MetadataType::BufferExtents) {}
- MetadataType metadataType() const override {
- return MetadataType::BufferExtents;
- }
+ explicit BufferExtents(uint64_t S)
+ : MetadataRecord(RecordKind::RK_Metadata_BufferExtents,
+ MetadataType::BufferExtents),
+ Size(S) {}
uint64_t size() const { return Size; }
Error apply(RecordVisitor &V) override;
+
+ static bool classof(const Record *R) {
+ return R->getRecordType() == RecordKind::RK_Metadata_BufferExtents;
+ }
};
class WallclockRecord : public MetadataRecord {
@@ -103,18 +136,23 @@
friend class RecordInitializer;
public:
- WallclockRecord() = default;
- explicit WallclockRecord(uint64_t S, uint32_t N)
- : MetadataRecord(), Seconds(S), Nanos(N) {}
+ WallclockRecord()
+ : MetadataRecord(RecordKind::RK_Metadata_WallClockTime,
+ MetadataType::WallClockTime) {}
- MetadataType metadataType() const override {
- return MetadataType::WallClockTime;
- }
+ explicit WallclockRecord(uint64_t S, uint32_t N)
+ : MetadataRecord(RecordKind::RK_Metadata_WallClockTime,
+ MetadataType::WallClockTime),
+ Seconds(S), Nanos(N) {}
uint64_t seconds() const { return Seconds; }
uint32_t nanos() const { return Nanos; }
Error apply(RecordVisitor &V) override;
+
+ static bool classof(const Record *R) {
+ return R->getRecordType() == RecordKind::RK_Metadata_WallClockTime;
+ }
};
class NewCPUIDRecord : public MetadataRecord {
@@ -123,16 +161,24 @@
friend class RecordInitializer;
public:
- NewCPUIDRecord() = default;
- NewCPUIDRecord(uint16_t C, uint64_t T) : MetadataRecord(), CPUId(C), TSC(T) {}
+ NewCPUIDRecord()
+ : MetadataRecord(RecordKind::RK_Metadata_NewCPUId,
+ MetadataType::NewCPUId) {}
- MetadataType metadataType() const override { return MetadataType::NewCPUId; }
+ NewCPUIDRecord(uint16_t C, uint64_t T)
+ : MetadataRecord(RecordKind::RK_Metadata_NewCPUId,
+ MetadataType::NewCPUId),
+ CPUId(C), TSC(T) {}
uint16_t cpuid() const { return CPUId; }
uint64_t tsc() const { return TSC; }
Error apply(RecordVisitor &V) override;
+
+ static bool classof(const Record *R) {
+ return R->getRecordType() == RecordKind::RK_Metadata_NewCPUId;
+ }
};
class TSCWrapRecord : public MetadataRecord {
@@ -140,36 +186,106 @@
friend class RecordInitializer;
public:
- TSCWrapRecord() = default;
- explicit TSCWrapRecord(uint64_t B) : MetadataRecord(), BaseTSC(B) {}
+ TSCWrapRecord()
+ : MetadataRecord(RecordKind::RK_Metadata_TSCWrap, MetadataType::TSCWrap) {
+ }
- MetadataType metadataType() const override { return MetadataType::TSCWrap; }
+ explicit TSCWrapRecord(uint64_t B)
+ : MetadataRecord(RecordKind::RK_Metadata_TSCWrap, MetadataType::TSCWrap),
+ BaseTSC(B) {}
uint64_t tsc() const { return BaseTSC; }
Error apply(RecordVisitor &V) override;
+
+ static bool classof(const Record *R) {
+ return R->getRecordType() == RecordKind::RK_Metadata_TSCWrap;
+ }
};
class CustomEventRecord : public MetadataRecord {
int32_t Size = 0;
uint64_t TSC = 0;
+ uint16_t CPU = 0;
std::string Data{};
friend class RecordInitializer;
public:
- CustomEventRecord() = default;
- explicit CustomEventRecord(uint64_t S, uint64_t T, std::string D)
- : MetadataRecord(), Size(S), TSC(T), Data(std::move(D)) {}
+ CustomEventRecord()
+ : MetadataRecord(RecordKind::RK_Metadata_CustomEvent,
+ MetadataType::CustomEvent) {}
- MetadataType metadataType() const override {
- return MetadataType::CustomEvent;
- }
+ explicit CustomEventRecord(uint64_t S, uint64_t T, uint16_t C, std::string D)
+ : MetadataRecord(RecordKind::RK_Metadata_CustomEvent,
+ MetadataType::CustomEvent),
+ Size(S), TSC(T), CPU(C), Data(std::move(D)) {}
int32_t size() const { return Size; }
uint64_t tsc() const { return TSC; }
+ uint16_t cpu() const { return CPU; }
StringRef data() const { return Data; }
Error apply(RecordVisitor &V) override;
+
+ static bool classof(const Record *R) {
+ return R->getRecordType() == RecordKind::RK_Metadata_CustomEvent;
+ }
+};
+
+class CustomEventRecordV5 : public MetadataRecord {
+ int32_t Size = 0;
+ int32_t Delta = 0;
+ std::string Data{};
+ friend class RecordInitializer;
+
+public:
+ CustomEventRecordV5()
+ : MetadataRecord(RecordKind::RK_Metadata_CustomEventV5,
+ MetadataType::CustomEvent) {}
+
+ explicit CustomEventRecordV5(int32_t S, int32_t D, std::string P)
+ : MetadataRecord(RecordKind::RK_Metadata_CustomEventV5,
+ MetadataType::CustomEvent),
+ Size(S), Delta(D), Data(std::move(P)) {}
+
+ int32_t size() const { return Size; }
+ int32_t delta() const { return Delta; }
+ StringRef data() const { return Data; }
+
+ Error apply(RecordVisitor &V) override;
+
+ static bool classof(const Record *R) {
+ return R->getRecordType() == RecordKind::RK_Metadata_CustomEventV5;
+ }
+};
+
+class TypedEventRecord : public MetadataRecord {
+ int32_t Size = 0;
+ int32_t Delta = 0;
+ uint16_t EventType = 0;
+ std::string Data{};
+ friend class RecordInitializer;
+
+public:
+ TypedEventRecord()
+ : MetadataRecord(RecordKind::RK_Metadata_TypedEvent,
+ MetadataType::TypedEvent) {}
+
+ explicit TypedEventRecord(int32_t S, int32_t D, uint16_t E, std::string P)
+ : MetadataRecord(RecordKind::RK_Metadata_TypedEvent,
+ MetadataType::TypedEvent),
+ Size(S), Delta(D), Data(std::move(P)) {}
+
+ int32_t size() const { return Size; }
+ int32_t delta() const { return Delta; }
+ uint16_t eventType() const { return EventType; }
+ StringRef data() const { return Data; }
+
+ Error apply(RecordVisitor &V) override;
+
+ static bool classof(const Record *R) {
+ return R->getRecordType() == RecordKind::RK_Metadata_TypedEvent;
+ }
};
class CallArgRecord : public MetadataRecord {
@@ -177,14 +293,21 @@
friend class RecordInitializer;
public:
- CallArgRecord() = default;
- explicit CallArgRecord(uint64_t A) : MetadataRecord(), Arg(A) {}
+ CallArgRecord()
+ : MetadataRecord(RecordKind::RK_Metadata_CallArg, MetadataType::CallArg) {
+ }
- MetadataType metadataType() const override { return MetadataType::CallArg; }
+ explicit CallArgRecord(uint64_t A)
+ : MetadataRecord(RecordKind::RK_Metadata_CallArg, MetadataType::CallArg),
+ Arg(A) {}
uint64_t arg() const { return Arg; }
Error apply(RecordVisitor &V) override;
+
+ static bool classof(const Record *R) {
+ return R->getRecordType() == RecordKind::RK_Metadata_CallArg;
+ }
};
class PIDRecord : public MetadataRecord {
@@ -192,14 +315,22 @@
friend class RecordInitializer;
public:
- PIDRecord() = default;
- explicit PIDRecord(int32_t P) : MetadataRecord(), PID(P) {}
+ PIDRecord()
+ : MetadataRecord(RecordKind::RK_Metadata_PIDEntry,
+ MetadataType::PIDEntry) {}
- MetadataType metadataType() const override { return MetadataType::PIDEntry; }
+ explicit PIDRecord(int32_t P)
+ : MetadataRecord(RecordKind::RK_Metadata_PIDEntry,
+ MetadataType::PIDEntry),
+ PID(P) {}
int32_t pid() const { return PID; }
Error apply(RecordVisitor &V) override;
+
+ static bool classof(const Record *R) {
+ return R->getRecordType() == RecordKind::RK_Metadata_PIDEntry;
+ }
};
class NewBufferRecord : public MetadataRecord {
@@ -207,25 +338,35 @@
friend class RecordInitializer;
public:
- NewBufferRecord() = default;
- explicit NewBufferRecord(int32_t T) : MetadataRecord(), TID(T) {}
+ NewBufferRecord()
+ : MetadataRecord(RecordKind::RK_Metadata_NewBuffer,
+ MetadataType::NewBuffer) {}
- MetadataType metadataType() const override { return MetadataType::NewBuffer; }
+ explicit NewBufferRecord(int32_t T)
+ : MetadataRecord(RecordKind::RK_Metadata_NewBuffer,
+ MetadataType::NewBuffer),
+ TID(T) {}
int32_t tid() const { return TID; }
Error apply(RecordVisitor &V) override;
+
+ static bool classof(const Record *R) {
+ return R->getRecordType() == RecordKind::RK_Metadata_NewBuffer;
+ }
};
class EndBufferRecord : public MetadataRecord {
public:
- EndBufferRecord() = default;
-
- MetadataType metadataType() const override {
- return MetadataType::EndOfBuffer;
- }
+ EndBufferRecord()
+ : MetadataRecord(RecordKind::RK_Metadata_EndOfBuffer,
+ MetadataType::EndOfBuffer) {}
Error apply(RecordVisitor &V) override;
+
+ static bool classof(const Record *R) {
+ return R->getRecordType() == RecordKind::RK_Metadata_EndOfBuffer;
+ }
};
class FunctionRecord : public Record {
@@ -237,11 +378,10 @@
static constexpr unsigned kFunctionRecordSize = 8;
public:
- FunctionRecord() = default;
- explicit FunctionRecord(RecordTypes K, int32_t F, uint32_t D)
- : Record(), Kind(K), FuncId(F), Delta(D) {}
+ FunctionRecord() : Record(RecordKind::RK_Function) {}
- Type type() const override { return Type::Function; }
+ explicit FunctionRecord(RecordTypes K, int32_t F, uint32_t D)
+ : Record(RecordKind::RK_Function), Kind(K), FuncId(F), Delta(D) {}
// A function record is a concrete record type which has a number of common
// properties.
@@ -250,6 +390,10 @@
uint32_t delta() const { return Delta; }
Error apply(RecordVisitor &V) override;
+
+ static bool classof(const Record *R) {
+ return R->getRecordType() == RecordKind::RK_Function;
+ }
};
class RecordVisitor {
@@ -267,15 +411,23 @@
virtual Error visit(NewBufferRecord &) = 0;
virtual Error visit(EndBufferRecord &) = 0;
virtual Error visit(FunctionRecord &) = 0;
+ virtual Error visit(CustomEventRecordV5 &) = 0;
+ virtual Error visit(TypedEventRecord &) = 0;
};
class RecordInitializer : public RecordVisitor {
DataExtractor &E;
uint32_t &OffsetPtr;
+ uint16_t Version;
public:
+ static constexpr uint16_t DefaultVersion = 5u;
+
+ explicit RecordInitializer(DataExtractor &DE, uint32_t &OP, uint16_t V)
+ : RecordVisitor(), E(DE), OffsetPtr(OP), Version(V) {}
+
explicit RecordInitializer(DataExtractor &DE, uint32_t &OP)
- : RecordVisitor(), E(DE), OffsetPtr(OP) {}
+ : RecordInitializer(DE, OP, DefaultVersion) {}
Error visit(BufferExtents &) override;
Error visit(WallclockRecord &) override;
@@ -287,6 +439,8 @@
Error visit(NewBufferRecord &) override;
Error visit(EndBufferRecord &) override;
Error visit(FunctionRecord &) override;
+ Error visit(CustomEventRecordV5 &) override;
+ Error visit(TypedEventRecord &) override;
};
} // namespace xray
diff --git a/linux-x64/clang/include/llvm/XRay/FDRTraceExpander.h b/linux-x64/clang/include/llvm/XRay/FDRTraceExpander.h
index 7f8236b..f3c36cf 100644
--- a/linux-x64/clang/include/llvm/XRay/FDRTraceExpander.h
+++ b/linux-x64/clang/include/llvm/XRay/FDRTraceExpander.h
@@ -1,9 +1,8 @@
//===- FDRTraceExpander.h - XRay FDR Mode Log Expander --------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -27,10 +26,10 @@
int32_t PID = 0;
int32_t TID = 0;
uint64_t BaseTSC = 0;
- XRayRecord CurrentRecord{0, 0, RecordTypes::ENTER, 0, 0, 0, 0, {}};
+ XRayRecord CurrentRecord{0, 0, RecordTypes::ENTER, 0, 0, 0, 0, {}, {}};
uint16_t CPUId = 0;
uint16_t LogVersion = 0;
- bool BuildingFunction = false;
+ bool BuildingRecord = false;
bool IgnoringRecords = false;
void resetCurrentRecord();
@@ -49,6 +48,8 @@
Error visit(NewBufferRecord &) override;
Error visit(EndBufferRecord &) override;
Error visit(FunctionRecord &) override;
+ Error visit(CustomEventRecordV5 &) override;
+ Error visit(TypedEventRecord &) override;
// Must be called after all the records have been processed, to handle the
// most recent record generated.
diff --git a/linux-x64/clang/include/llvm/XRay/FDRTraceWriter.h b/linux-x64/clang/include/llvm/XRay/FDRTraceWriter.h
index 91488f8..2498877 100644
--- a/linux-x64/clang/include/llvm/XRay/FDRTraceWriter.h
+++ b/linux-x64/clang/include/llvm/XRay/FDRTraceWriter.h
@@ -1,9 +1,8 @@
//===- FDRTraceWriter.h - XRay FDR Trace Writer -----------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -43,6 +42,8 @@
Error visit(NewBufferRecord &) override;
Error visit(EndBufferRecord &) override;
Error visit(FunctionRecord &) override;
+ Error visit(CustomEventRecordV5 &) override;
+ Error visit(TypedEventRecord &) override;
private:
support::endian::Writer OS;
diff --git a/linux-x64/clang/include/llvm/XRay/FileHeaderReader.h b/linux-x64/clang/include/llvm/XRay/FileHeaderReader.h
index 3b8809b..1c9681c 100644
--- a/linux-x64/clang/include/llvm/XRay/FileHeaderReader.h
+++ b/linux-x64/clang/include/llvm/XRay/FileHeaderReader.h
@@ -1,9 +1,8 @@
//===- FileHeaderReader.h - XRay Trace File Header Reading Function -------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/XRay/Graph.h b/linux-x64/clang/include/llvm/XRay/Graph.h
index a4d34a8..0046815 100644
--- a/linux-x64/clang/include/llvm/XRay/Graph.h
+++ b/linux-x64/clang/include/llvm/XRay/Graph.h
@@ -1,9 +1,8 @@
//===-- Graph.h - XRay Graph Class ------------------------------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/XRay/InstrumentationMap.h b/linux-x64/clang/include/llvm/XRay/InstrumentationMap.h
index 42bfca3..5cbe5c4 100644
--- a/linux-x64/clang/include/llvm/XRay/InstrumentationMap.h
+++ b/linux-x64/clang/include/llvm/XRay/InstrumentationMap.h
@@ -1,9 +1,8 @@
//===- InstrumentationMap.h - XRay Instrumentation Map ----------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/XRay/Profile.h b/linux-x64/clang/include/llvm/XRay/Profile.h
index 9365630..79d9b53 100644
--- a/linux-x64/clang/include/llvm/XRay/Profile.h
+++ b/linux-x64/clang/include/llvm/XRay/Profile.h
@@ -1,9 +1,8 @@
//===- Profile.h - XRay Profile Abstraction -------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/XRay/RecordPrinter.h b/linux-x64/clang/include/llvm/XRay/RecordPrinter.h
index bad1a57..7c7b7a3 100644
--- a/linux-x64/clang/include/llvm/XRay/RecordPrinter.h
+++ b/linux-x64/clang/include/llvm/XRay/RecordPrinter.h
@@ -1,9 +1,8 @@
//===- RecordPrinter.h - FDR Record Printer -------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -40,6 +39,8 @@
Error visit(NewBufferRecord &) override;
Error visit(EndBufferRecord &) override;
Error visit(FunctionRecord &) override;
+ Error visit(CustomEventRecordV5 &) override;
+ Error visit(TypedEventRecord &) override;
};
} // namespace xray
diff --git a/linux-x64/clang/include/llvm/XRay/Trace.h b/linux-x64/clang/include/llvm/XRay/Trace.h
index 924addd..eb1f03b 100644
--- a/linux-x64/clang/include/llvm/XRay/Trace.h
+++ b/linux-x64/clang/include/llvm/XRay/Trace.h
@@ -1,9 +1,8 @@
//===- Trace.h - XRay Trace Abstraction -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
diff --git a/linux-x64/clang/include/llvm/XRay/XRayRecord.h b/linux-x64/clang/include/llvm/XRay/XRayRecord.h
index 7687344..546b023 100644
--- a/linux-x64/clang/include/llvm/XRay/XRayRecord.h
+++ b/linux-x64/clang/include/llvm/XRay/XRayRecord.h
@@ -1,9 +1,8 @@
//===- XRayRecord.h - XRay Trace Record -----------------------------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -17,6 +16,7 @@
#include <cstdint>
#include <vector>
+#include <string>
namespace llvm {
namespace xray {
@@ -54,10 +54,23 @@
/// This may or may not correspond to actual record types in the raw trace (as
/// the loader implementation may synthesize this information in the process of
/// of loading).
-enum class RecordTypes { ENTER, EXIT, TAIL_EXIT, ENTER_ARG };
+enum class RecordTypes {
+ ENTER,
+ EXIT,
+ TAIL_EXIT,
+ ENTER_ARG,
+ CUSTOM_EVENT,
+ TYPED_EVENT
+};
+/// An XRayRecord is the denormalized view of data associated in a trace. These
+/// records may not correspond to actual entries in the raw traces, but they are
+/// the logical representation of records in a higher-level event log.
struct XRayRecord {
- /// The type of record.
+ /// RecordType values are used as "sub-types" which have meaning in the
+ /// context of the `Type` below. For function call and custom event records,
+ /// the RecordType is always 0, while for typed events we store the type in
+ /// the RecordType field.
uint16_t RecordType;
/// The CPU where the thread is running. We assume number of CPUs <= 65536.
@@ -66,7 +79,7 @@
/// Identifies the type of record.
RecordTypes Type;
- /// The function ID for the record.
+ /// The function ID for the record, if this is a function call record.
int32_t FuncId;
/// Get the full 8 bytes of the TSC when we get the log record.
@@ -80,6 +93,9 @@
/// The function call arguments.
std::vector<uint64_t> CallArgs;
+
+ /// For custom and typed events, we provide the raw data from the trace.
+ std::string Data;
};
} // namespace xray
diff --git a/linux-x64/clang/include/llvm/XRay/YAMLXRayRecord.h b/linux-x64/clang/include/llvm/XRay/YAMLXRayRecord.h
index 0de9ea0..bc8b035 100644
--- a/linux-x64/clang/include/llvm/XRay/YAMLXRayRecord.h
+++ b/linux-x64/clang/include/llvm/XRay/YAMLXRayRecord.h
@@ -1,9 +1,8 @@
//===- YAMLXRayRecord.h - XRay Record YAML Support Definitions ------------===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// 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
//
//===----------------------------------------------------------------------===//
//
@@ -39,6 +38,7 @@
uint32_t TId;
uint32_t PId;
std::vector<uint64_t> CallArgs;
+ std::string Data;
};
struct YAMLXRayTrace {
@@ -58,6 +58,8 @@
IO.enumCase(Type, "function-exit", xray::RecordTypes::EXIT);
IO.enumCase(Type, "function-tail-exit", xray::RecordTypes::TAIL_EXIT);
IO.enumCase(Type, "function-enter-arg", xray::RecordTypes::ENTER_ARG);
+ IO.enumCase(Type, "custom-event", xray::RecordTypes::CUSTOM_EVENT);
+ IO.enumCase(Type, "typed-event", xray::RecordTypes::TYPED_EVENT);
}
};
@@ -73,16 +75,16 @@
template <> struct MappingTraits<xray::YAMLXRayRecord> {
static void mapping(IO &IO, xray::YAMLXRayRecord &Record) {
- // FIXME: Make this type actually be descriptive
IO.mapRequired("type", Record.RecordType);
- IO.mapRequired("func-id", Record.FuncId);
+ IO.mapOptional("func-id", Record.FuncId);
IO.mapOptional("function", Record.Function);
IO.mapOptional("args", Record.CallArgs);
IO.mapRequired("cpu", Record.CPU);
- IO.mapRequired("thread", Record.TId);
+ IO.mapOptional("thread", Record.TId, 0U);
IO.mapOptional("process", Record.PId, 0U);
IO.mapRequired("kind", Record.Type);
IO.mapRequired("tsc", Record.TSC);
+ IO.mapOptional("data", Record.Data);
}
static constexpr bool flow = true;