[clang] AArch64 Tablegen Update (PR #179692)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 25 06:30:33 PDT 2026
https://github.com/moodytongytong updated https://github.com/llvm/llvm-project/pull/179692
>From 45e601f0c3c46aeaf4697207cda6b47898af3865 Mon Sep 17 00:00:00 2001
From: moodytongytong <77366045+moodytongytong at users.noreply.github.com>
Date: Tue, 20 Jan 2026 17:10:21 +0000
Subject: [PATCH 01/12] add updated files
---
clang/include/clang/Basic/BuiltinsAArch64.td | 399 ++++++++++++++++++
.../clang/Basic/BuiltinsAArch64Base.td | 37 ++
2 files changed, 436 insertions(+)
create mode 100644 clang/include/clang/Basic/BuiltinsAArch64.td
create mode 100644 clang/include/clang/Basic/BuiltinsAArch64Base.td
diff --git a/clang/include/clang/Basic/BuiltinsAArch64.td b/clang/include/clang/Basic/BuiltinsAArch64.td
new file mode 100644
index 0000000000000..e9396a6f4e4e6
--- /dev/null
+++ b/clang/include/clang/Basic/BuiltinsAArch64.td
@@ -0,0 +1,399 @@
+//==- BuiltinsAArch64.td - AArch64 Builtin function 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 AArch64-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.
+
+include "clang/Basic/BuiltinsAArch64Base.td"
+
+// In libgcc
+def __clear_cache : AArch64NoPrefixBuiltin<"void (void *, void *)">;
+
+let Attributes = [CustomTypeChecking] in {
+ def ldrex : AArch64Builtin<"void (...)">;
+ def ldaex : AArch64Builtin<"void (...)">;
+ def strex : AArch64Builtin<"int (...)">;
+ def stlex : AArch64Builtin<"int (...)">;
+}
+
+def clrex : AArch64Builtin<"void ()">;
+
+// Bit manipulation
+let Attributes = [NoThrow, Const] in {
+ def rbit : AArch64Builtin<"unsigned int (unsigned int)">;
+ def rbit64 : AArch64Builtin<"uint64_t (uint64_t)">;
+ def cls : AArch64Builtin<"unsigned int (uint32_t)">;
+ def cls64 : AArch64Builtin<"unsigned int (uint64_t)">;
+ def clz : AArch64Builtin<"unsigned int (uint32_t)">;
+ def clz64 : AArch64Builtin<"unsigned int (uint64_t)">;
+}
+
+// HINT
+def nop : AArch64Builtin<"void ()">;
+def yield : AArch64Builtin<"void ()">;
+def wfe : AArch64Builtin<"void ()">;
+def wfi : AArch64Builtin<"void ()">;
+def sev : AArch64Builtin<"void ()">;
+def sevl : AArch64Builtin<"void ()">;
+def chkfeat : AArch64Builtin<"uint64_t (uint64_t)">;
+
+let Attributes = [RequireDeclaration], Languages = "ALL_LANGUAGES", Header = "arm_acle.h" in {
+ def __yield : AArch64NoPrefixTargetLibBuiltin<"void ()">;
+ def __wfe : AArch64NoPrefixTargetLibBuiltin<"void ()">;
+ def __wfi : AArch64NoPrefixTargetLibBuiltin<"void ()">;
+ def __sev : AArch64NoPrefixTargetLibBuiltin<"void ()">;
+ def __sevl : AArch64NoPrefixTargetLibBuiltin<"void ()">;
+}
+
+// Like __builtin_trap but provide an 16-bit immediate reason code (which goes into `brk #N`).
+let Attributes = [NoThrow, NoReturn] in {
+ def trap : AArch64Builtin<"void (unsigned _Constant short)">;
+}
+
+// CRC32
+let Attributes = [NoThrow, Const], Features = "crc" in {
+ def crc32b : AArch64TargetBuiltin<"unsigned int (unsigned int, unsigned char)">;
+ def crc32cb : AArch64TargetBuiltin<"unsigned int (unsigned int, unsigned char)">;
+ def crc32h : AArch64TargetBuiltin<"unsigned int (unsigned int, unsigned short)">;
+ def crc32ch : AArch64TargetBuiltin<"unsigned int (unsigned int, unsigned short)">;
+ def crc32w : AArch64TargetBuiltin<"unsigned int (unsigned int, unsigned int)">;
+ def crc32cw : AArch64TargetBuiltin<"unsigned int (unsigned int, unsigned int)">;
+ def crc32d : AArch64TargetBuiltin<"unsigned int (unsigned int, uint64_t)">;
+ def crc32cd : AArch64TargetBuiltin<"unsigned int (unsigned int, uint64_t)">;
+}
+
+// Memory Tagging Extensions (MTE)
+let Attributes = [CustomTypeChecking], Features = "mte" in {
+ def irg : AArch64TargetBuiltin<"void * (void *, unsigned int)">;
+ def addg : AArch64TargetBuiltin<"void * (void *, unsigned int)">;
+ def gmi : AArch64TargetBuiltin<"unsigned int (void *, unsigned int)">;
+ def ldg : AArch64TargetBuiltin<"void * (void *)">;
+ def stg : AArch64TargetBuiltin<"void (void *)">;
+ def subp : AArch64TargetBuiltin<"unsigned int (void *, void *)">;
+}
+
+// SME state function
+let Attributes = [NoThrow] in {
+ def get_sme_state : AArch64Builtin<"void (uint64_t *, uint64_t *)">;
+}
+
+// Memory Operations
+let Features = "mte,mops" in {
+ def mops_memset_tag : AArch64TargetBuiltin<"void * (void *, int, size_t)">;
+}
+
+// Memory barrier
+let Attributes = [NoThrow, Const] in {
+ def dmb : AArch64Builtin<"void (unsigned int)">;
+ def dsb : AArch64Builtin<"void (unsigned int)">;
+ def isb : AArch64Builtin<"void (unsigned int)">;
+}
+
+let Attributes = [NoThrow, Const, RequireDeclaration], Languages = "ALL_LANGUAGES", Header = "arm_acle.h" in {
+ def __dmb : AArch64NoPrefixTargetLibBuiltin<"void (unsigned int)">;
+ def __dsb : AArch64NoPrefixTargetLibBuiltin<"void (unsigned int)">;
+ def __isb : AArch64NoPrefixTargetLibBuiltin<"void (unsigned int)">;
+}
+
+let Attributes = [NoThrow, Const], Features = "v8.3a" in {
+ def jcvt : AArch64TargetBuiltin<"int32_t (double)">;
+}
+
+// Prefetch
+let Attributes = [NoThrow, Const] in {
+ def prefetch : AArch64Builtin<"void (const void *, unsigned int, unsigned int, unsigned int, unsigned int)">;
+}
+
+// Range Prefetch
+let Attributes = [NoThrow] in {
+ def range_prefetch_x : AArch64Builtin<"void (const void *, unsigned int, unsigned int, int, unsigned int, int, size_t)">;
+ def range_prefetch : AArch64Builtin<"void (const void *, unsigned int, unsigned int, uint64_t)">;
+}
+
+// System Registers
+let Attributes = [NoThrow, Const] in {
+ def rsr : AArch64Builtin<"unsigned int (const char *)">;
+ def rsr64 : AArch64Builtin<"uint64_t (const char *)">;
+ def rsrp : AArch64Builtin<"void * (const char *)">;
+ def wsr : AArch64Builtin<"void (const char *, unsigned int)">;
+ def wsr64 : AArch64Builtin<"void (const char *, uint64_t)">;
+ def wsrp : AArch64Builtin<"void (const char *, const void *)">;
+}
+
+let Attributes = [NoThrow, Const], Features = "d128" in {
+ def rsr128 : AArch64TargetBuiltin<"__uint128_t (const char *)">;
+ def wsr128 : AArch64TargetBuiltin<"void (const char *, __uint128_t)">;
+}
+
+// Misc
+let Attributes = [Const] in {
+ def __builtin_sponentry : AArch64NoPrefixBuiltin<"void * ()">;
+}
+
+// Armv8.5-A FP rounding intrinsics
+let Features = "v8.5a" in {
+ def rint32zf : AArch64TargetBuiltin<"float (float)">;
+ def rint32z : AArch64TargetBuiltin<"double (double)">;
+ def rint64zf : AArch64TargetBuiltin<"float (float)">;
+ def rint64z : AArch64TargetBuiltin<"double (double)">;
+ def rint32xf : AArch64TargetBuiltin<"float (float)">;
+ def rint32x : AArch64TargetBuiltin<"double (double)">;
+ def rint64xf : AArch64TargetBuiltin<"float (float)">;
+ def rint64x : AArch64TargetBuiltin<"double (double)">;
+}
+
+// Armv8.5-A Random number generation intrinsics
+let Attributes = [NoThrow], Features = "rand" in {
+ def rndr : AArch64TargetBuiltin<"int (uint64_t *)">;
+ def rndrrs : AArch64TargetBuiltin<"int (uint64_t *)">;
+}
+
+// Armv8.7-A load/store 64-byte intrinsics
+let Attributes = [NoThrow], Features = "ls64" in {
+ def ld64b : AArch64TargetBuiltin<"void (const void *, uint64_t *)">;
+ def st64b : AArch64TargetBuiltin<"void (void *, const uint64_t *)">;
+ def st64bv : AArch64TargetBuiltin<"uint64_t (void *, const uint64_t *)">;
+ def st64bv0 : AArch64TargetBuiltin<"uint64_t (void *, const uint64_t *)">;
+}
+
+// Armv9.3-A Guarded Control Stack
+let Attributes = [NoThrow], Features = "gcs" in {
+ def gcspopm : AArch64TargetBuiltin<"uint64_t (uint64_t)">;
+ def gcsss : AArch64TargetBuiltin<"void * (void *)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def _BitScanForward : AArch64NoPrefixTargetLibBuiltin<"unsigned char (msuint32_t *, msuint32_t)">;
+ def _BitScanReverse : AArch64NoPrefixTargetLibBuiltin<"unsigned char (msuint32_t *, msuint32_t)">;
+ def _BitScanForward64 : AArch64NoPrefixTargetLibBuiltin<"unsigned char (msuint32_t *, unsigned long long int)">;
+ def _BitScanReverse64 : AArch64NoPrefixTargetLibBuiltin<"unsigned char (msuint32_t *, unsigned long long int)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def _InterlockedAdd : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
+ def _InterlockedAdd64 : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedAnd64 : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedDecrement64 : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *)">;
+ def _InterlockedExchange64 : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedExchangeAdd64 : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedExchangeSub64 : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedIncrement64 : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *)">;
+ def _InterlockedOr64 : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedXor64 : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def _InterlockedAdd_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
+ def _InterlockedAdd_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
+ def _InterlockedAdd_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
+ def _InterlockedAdd64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedAdd64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedAdd64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def _InterlockedExchangeAdd_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
+ def _InterlockedExchangeAdd_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
+ def _InterlockedExchangeAdd_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
+ def _InterlockedExchangeAdd8_acq : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
+ def _InterlockedExchangeAdd8_rel : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
+ def _InterlockedExchangeAdd8_nf : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
+ def _InterlockedExchangeAdd16_acq : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
+ def _InterlockedExchangeAdd16_rel : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
+ def _InterlockedExchangeAdd16_nf : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
+ def _InterlockedExchangeAdd64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedExchangeAdd64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedExchangeAdd64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def _InterlockedExchange8_acq : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
+ def _InterlockedExchange8_nf : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
+ def _InterlockedExchange8_rel : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
+ def _InterlockedExchange16_acq : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
+ def _InterlockedExchange16_nf : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
+ def _InterlockedExchange16_rel : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
+ def _InterlockedExchange_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
+ def _InterlockedExchange_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
+ def _InterlockedExchange_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
+ def _InterlockedExchange64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedExchange64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedExchange64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedExchangePointer_acq : AArch64NoPrefixTargetLibBuiltin<"void * (void * volatile *, void *)">;
+ def _InterlockedExchangePointer_nf : AArch64NoPrefixTargetLibBuiltin<"void * (void * volatile *, void *)">;
+ def _InterlockedExchangePointer_rel : AArch64NoPrefixTargetLibBuiltin<"void * (void * volatile *, void *)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def _InterlockedCompareExchange8_acq : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char, char)">;
+ def _InterlockedCompareExchange8_nf : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char, char)">;
+ def _InterlockedCompareExchange8_rel : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char, char)">;
+ def _InterlockedCompareExchange16_acq : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short, short)">;
+ def _InterlockedCompareExchange16_nf : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short, short)">;
+ def _InterlockedCompareExchange16_rel : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short, short)">;
+ def _InterlockedCompareExchange_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t, msint32_t)">;
+ def _InterlockedCompareExchange_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t, msint32_t)">;
+ def _InterlockedCompareExchange_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t, msint32_t)">;
+ def _InterlockedCompareExchange64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int, long long int)">;
+ def _InterlockedCompareExchange64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int, long long int)">;
+ def _InterlockedCompareExchange64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int, long long int)">;
+ def _InterlockedCompareExchangePointer_acq : AArch64NoPrefixTargetLibBuiltin<"void * (void * volatile *, void *, void *)">;
+ def _InterlockedCompareExchangePointer_rel : AArch64NoPrefixTargetLibBuiltin<"void * (void * volatile *, void *, void *)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def _InterlockedCompareExchange128 : AArch64NoPrefixTargetLibBuiltin<"unsigned char (volatile long long int *, long long int, long long int, long long int *)">;
+ def _InterlockedCompareExchange128_acq : AArch64NoPrefixTargetLibBuiltin<"unsigned char (volatile long long int *, long long int, long long int, long long int *)">;
+ def _InterlockedCompareExchange128_nf : AArch64NoPrefixTargetLibBuiltin<"unsigned char (volatile long long int *, long long int, long long int, long long int *)">;
+ def _InterlockedCompareExchange128_rel : AArch64NoPrefixTargetLibBuiltin<"unsigned char (volatile long long int *, long long int, long long int, long long int *)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def _InterlockedOr8_acq : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
+ def _InterlockedOr8_nf : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
+ def _InterlockedOr8_rel : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
+ def _InterlockedOr16_acq : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
+ def _InterlockedOr16_nf : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
+ def _InterlockedOr16_rel : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
+ def _InterlockedOr_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
+ def _InterlockedOr_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
+ def _InterlockedOr_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
+ def _InterlockedOr64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedOr64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedOr64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def _InterlockedXor8_acq : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
+ def _InterlockedXor8_nf : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
+ def _InterlockedXor8_rel : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
+ def _InterlockedXor16_acq : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
+ def _InterlockedXor16_nf : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
+ def _InterlockedXor16_rel : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
+ def _InterlockedXor_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
+ def _InterlockedXor_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
+ def _InterlockedXor_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
+ def _InterlockedXor64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedXor64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedXor64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def _InterlockedAnd8_acq : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
+ def _InterlockedAnd8_nf : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
+ def _InterlockedAnd8_rel : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
+ def _InterlockedAnd16_acq : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
+ def _InterlockedAnd16_nf : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
+ def _InterlockedAnd16_rel : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
+ def _InterlockedAnd_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
+ def _InterlockedAnd_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
+ def _InterlockedAnd_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
+ def _InterlockedAnd64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedAnd64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedAnd64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def _InterlockedIncrement16_acq : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *)">;
+ def _InterlockedIncrement16_nf : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *)">;
+ def _InterlockedIncrement16_rel : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *)">;
+ def _InterlockedIncrement_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *)">;
+ def _InterlockedIncrement_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *)">;
+ def _InterlockedIncrement_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *)">;
+ def _InterlockedIncrement64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *)">;
+ def _InterlockedIncrement64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *)">;
+ def _InterlockedIncrement64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def _InterlockedDecrement16_acq : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *)">;
+ def _InterlockedDecrement16_nf : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *)">;
+ def _InterlockedDecrement16_rel : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *)">;
+ def _InterlockedDecrement_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *)">;
+ def _InterlockedDecrement_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *)">;
+ def _InterlockedDecrement_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *)">;
+ def _InterlockedDecrement64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *)">;
+ def _InterlockedDecrement64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *)">;
+ def _InterlockedDecrement64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def _ReadWriteBarrier : AArch64NoPrefixTargetLibBuiltin<"void ()">;
+ def __getReg : AArch64NoPrefixTargetLibBuiltin<"unsigned long long int (int)">;
+ def _ReadStatusReg : AArch64NoPrefixTargetLibBuiltin<"long long int (int)">;
+ def _WriteStatusReg : AArch64NoPrefixTargetLibBuiltin<"void (int, long long int)">;
+ def __sys : AArch64NoPrefixTargetLibBuiltin<"unsigned int (int, long long int)">;
+ def _AddressOfReturnAddress : AArch64NoPrefixTargetLibBuiltin<"void * ()">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def __mulh : AArch64NoPrefixTargetLibBuiltin<"signed long long int (signed long long int, signed long long int)">;
+ def __umulh : AArch64NoPrefixTargetLibBuiltin<"unsigned long long int (unsigned long long int, unsigned long long int)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def __break : AArch64NoPrefixTargetLibBuiltin<"void (int)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def __writex18byte : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, unsigned char)">;
+ def __writex18word : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, unsigned short)">;
+ def __writex18dword : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, msuint32_t)">;
+ def __writex18qword : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, unsigned long long int)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def __readx18byte : AArch64NoPrefixTargetLibBuiltin<"unsigned char (msuint32_t)">;
+ def __readx18word : AArch64NoPrefixTargetLibBuiltin<"unsigned short (msuint32_t)">;
+ def __readx18dword : AArch64NoPrefixTargetLibBuiltin<"msuint32_t (msuint32_t)">;
+ def __readx18qword : AArch64NoPrefixTargetLibBuiltin<"unsigned long long int (msuint32_t)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def __addx18byte : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, unsigned char)">;
+ def __addx18word : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, unsigned short)">;
+ def __addx18dword : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, msuint32_t)">;
+ def __addx18qword : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, unsigned long long int)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def __incx18byte : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t)">;
+ def __incx18word : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t)">;
+ def __incx18dword : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t)">;
+ def __incx18qword : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def _CopyDoubleFromInt64 : AArch64NoPrefixTargetLibBuiltin<"double (signed long long int)">;
+ def _CopyFloatFromInt32 : AArch64NoPrefixTargetLibBuiltin<"float (signed int)">;
+ def _CopyInt32FromFloat : AArch64NoPrefixTargetLibBuiltin<"signed int (float)">;
+ def _CopyInt64FromDouble : AArch64NoPrefixTargetLibBuiltin<"signed long long int (double)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def _CountLeadingOnes : AArch64NoPrefixTargetLibBuiltin<"unsigned int (msuint32_t)">;
+ def _CountLeadingOnes64 : AArch64NoPrefixTargetLibBuiltin<"unsigned int (unsigned long long int)">;
+ def _CountLeadingSigns : AArch64NoPrefixTargetLibBuiltin<"unsigned int (signed msint32_t)">;
+ def _CountLeadingSigns64 : AArch64NoPrefixTargetLibBuiltin<"unsigned int (signed long long int)">;
+ def _CountLeadingZeros : AArch64NoPrefixTargetLibBuiltin<"unsigned int (msuint32_t)">;
+ def _CountLeadingZeros64 : AArch64NoPrefixTargetLibBuiltin<"unsigned int (unsigned long long int)">;
+ def _CountOneBits : AArch64NoPrefixTargetLibBuiltin<"unsigned int (msuint32_t)">;
+ def _CountOneBits64 : AArch64NoPrefixTargetLibBuiltin<"unsigned int (unsigned long long int)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def __prefetch : AArch64NoPrefixTargetLibBuiltin<"void (const void *)">;
+}
+
+let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
+ def __hlt : AArch64NoPrefixTargetLibBuiltin<"unsigned int (unsigned int, ...)">;
+}
diff --git a/clang/include/clang/Basic/BuiltinsAArch64Base.td b/clang/include/clang/Basic/BuiltinsAArch64Base.td
new file mode 100644
index 0000000000000..7a0aca7f65b00
--- /dev/null
+++ b/clang/include/clang/Basic/BuiltinsAArch64Base.td
@@ -0,0 +1,37 @@
+//===--- BuiltinsAArch64Base.td - AArch64 Builtin function classes ------*- 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 AArch64-specific builtin function classes.
+//
+//===----------------------------------------------------------------------===//
+
+include "clang/Basic/BuiltinsBase.td"
+
+def AArch64Prefix : NamePrefix<"__builtin_arm_">;
+
+class AArch64Builtin<string prototype> : Builtin {
+ let Spellings = [NAME];
+ let Prototype = prototype;
+ let RequiredNamePrefix = AArch64Prefix;
+}
+
+class AArch64NoPrefixBuiltin<string prototype> : Builtin {
+ let Spellings = [NAME];
+ let Prototype = prototype;
+}
+
+class AArch64TargetBuiltin<string prototype> : TargetBuiltin {
+ let Spellings = [NAME];
+ let Prototype = prototype;
+ let RequiredNamePrefix = AArch64Prefix;
+}
+
+class AArch64NoPrefixTargetLibBuiltin<string prototype> : TargetLibBuiltin {
+ let Spellings = [NAME];
+ let Prototype = prototype;
+}
>From b5242eb44f547e332413252e81e6e2764e53c464 Mon Sep 17 00:00:00 2001
From: Lang Hames <lhames at gmail.com>
Date: Fri, 30 Jan 2026 11:36:39 +1100
Subject: [PATCH 02/12] [orc-rt] Add C API for Errors, plus ORC_RT_C_ABI macro.
(#178794)
This commit introduces a C interface for the ORC runtime's Error
handling system, enabling C clients and language bindings to work with
ORC errors.
The ORC_RT_C_ABI macro applies __attribute__((visibility("default")))
(on platforms that support it), ensuring C API symbols are exported when
building the ORC runtime as a shared library. In the future I expect
that this will be extended to support other platforms (e.g. dllexport on
Windows).
>From 1a1c0f51a380c5faaee884bb3129d8dc7ef76a12 Mon Sep 17 00:00:00 2001
From: Jackson Stogel <jtstogel at gmail.com>
Date: Tue, 17 Feb 2026 09:41:17 -0800
Subject: [PATCH 03/12] Fix Bazel build for dfc5469 (#181868)
Co-authored-by: Pranav Kant <prka at google.com>
>From 4e2e71ed586c229421b9b81f83eee65a0f4cf910 Mon Sep 17 00:00:00 2001
From: moodytongytong <77366045+moodytongytong at users.noreply.github.com>
Date: Tue, 3 Feb 2026 14:43:40 +0000
Subject: [PATCH 04/12] updated build files
---
clang/include/clang/Basic/BuiltinsAArch64.td | 252 +++++++++----------
clang/include/clang/Basic/CMakeLists.txt | 4 +
clang/include/clang/Basic/TargetBuiltins.h | 18 +-
clang/lib/Basic/Targets/AArch64.cpp | 2 +-
4 files changed, 147 insertions(+), 129 deletions(-)
diff --git a/clang/include/clang/Basic/BuiltinsAArch64.td b/clang/include/clang/Basic/BuiltinsAArch64.td
index e9396a6f4e4e6..1c8e2be0173a9 100644
--- a/clang/include/clang/Basic/BuiltinsAArch64.td
+++ b/clang/include/clang/Basic/BuiltinsAArch64.td
@@ -110,28 +110,28 @@ let Attributes = [NoThrow, Const], Features = "v8.3a" in {
// Prefetch
let Attributes = [NoThrow, Const] in {
- def prefetch : AArch64Builtin<"void (const void *, unsigned int, unsigned int, unsigned int, unsigned int)">;
+ def prefetch : AArch64Builtin<"void (void const *, unsigned int, unsigned int, unsigned int, unsigned int)">;
}
// Range Prefetch
let Attributes = [NoThrow] in {
- def range_prefetch_x : AArch64Builtin<"void (const void *, unsigned int, unsigned int, int, unsigned int, int, size_t)">;
- def range_prefetch : AArch64Builtin<"void (const void *, unsigned int, unsigned int, uint64_t)">;
+ def range_prefetch_x : AArch64Builtin<"void (void const *, unsigned int, unsigned int, int, unsigned int, int, size_t)">;
+ def range_prefetch : AArch64Builtin<"void (void const *, unsigned int, unsigned int, uint64_t)">;
}
// System Registers
let Attributes = [NoThrow, Const] in {
- def rsr : AArch64Builtin<"unsigned int (const char *)">;
- def rsr64 : AArch64Builtin<"uint64_t (const char *)">;
- def rsrp : AArch64Builtin<"void * (const char *)">;
- def wsr : AArch64Builtin<"void (const char *, unsigned int)">;
- def wsr64 : AArch64Builtin<"void (const char *, uint64_t)">;
- def wsrp : AArch64Builtin<"void (const char *, const void *)">;
+ def rsr : AArch64Builtin<"unsigned int (char const *)">;
+ def rsr64 : AArch64Builtin<"uint64_t (char const *)">;
+ def rsrp : AArch64Builtin<"void * (char const *)">;
+ def wsr : AArch64Builtin<"void (char const *, unsigned int)">;
+ def wsr64 : AArch64Builtin<"void (char const *, uint64_t)">;
+ def wsrp : AArch64Builtin<"void (char const *, void const *)">;
}
let Attributes = [NoThrow, Const], Features = "d128" in {
- def rsr128 : AArch64TargetBuiltin<"__uint128_t (const char *)">;
- def wsr128 : AArch64TargetBuiltin<"void (const char *, __uint128_t)">;
+ def rsr128 : AArch64TargetBuiltin<"unsigned __int128_t (char const *)">; // __int128_t
+ def wsr128 : AArch64TargetBuiltin<"void (char const *, unsigned__int128_t)">;
}
// Misc
@@ -159,10 +159,10 @@ let Attributes = [NoThrow], Features = "rand" in {
// Armv8.7-A load/store 64-byte intrinsics
let Attributes = [NoThrow], Features = "ls64" in {
- def ld64b : AArch64TargetBuiltin<"void (const void *, uint64_t *)">;
- def st64b : AArch64TargetBuiltin<"void (void *, const uint64_t *)">;
- def st64bv : AArch64TargetBuiltin<"uint64_t (void *, const uint64_t *)">;
- def st64bv0 : AArch64TargetBuiltin<"uint64_t (void *, const uint64_t *)">;
+ def ld64b : AArch64TargetBuiltin<"void (void const *, uint64_t *)">;
+ def st64b : AArch64TargetBuiltin<"void (void *, uint64_t const *)">;
+ def st64bv : AArch64TargetBuiltin<"uint64_t (void *, uint64_t const *)">;
+ def st64bv0 : AArch64TargetBuiltin<"uint64_t (void *, uint64_t const *)">;
}
// Armv9.3-A Guarded Control Stack
@@ -179,151 +179,151 @@ let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES",
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedAdd : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
- def _InterlockedAdd64 : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
- def _InterlockedAnd64 : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
- def _InterlockedDecrement64 : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *)">;
- def _InterlockedExchange64 : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
- def _InterlockedExchangeAdd64 : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
- def _InterlockedExchangeSub64 : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
- def _InterlockedIncrement64 : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *)">;
- def _InterlockedOr64 : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
- def _InterlockedXor64 : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedAdd : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedAdd64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedAnd64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedDecrement64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
+ def _InterlockedExchange64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedExchangeAdd64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedExchangeSub64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedIncrement64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
+ def _InterlockedOr64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedXor64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedAdd_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
- def _InterlockedAdd_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
- def _InterlockedAdd_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
- def _InterlockedAdd64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
- def _InterlockedAdd64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
- def _InterlockedAdd64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedAdd_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedAdd_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedAdd_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedAdd64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedAdd64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedAdd64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedExchangeAdd_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
- def _InterlockedExchangeAdd_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
- def _InterlockedExchangeAdd_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
- def _InterlockedExchangeAdd8_acq : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
- def _InterlockedExchangeAdd8_rel : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
- def _InterlockedExchangeAdd8_nf : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
- def _InterlockedExchangeAdd16_acq : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
- def _InterlockedExchangeAdd16_rel : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
- def _InterlockedExchangeAdd16_nf : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
- def _InterlockedExchangeAdd64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
- def _InterlockedExchangeAdd64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
- def _InterlockedExchangeAdd64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedExchangeAdd_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedExchangeAdd_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedExchangeAdd_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedExchangeAdd8_acq : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedExchangeAdd8_rel : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedExchangeAdd8_nf : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedExchangeAdd16_acq : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedExchangeAdd16_rel : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedExchangeAdd16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedExchangeAdd64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedExchangeAdd64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedExchangeAdd64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedExchange8_acq : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
- def _InterlockedExchange8_nf : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
- def _InterlockedExchange8_rel : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
- def _InterlockedExchange16_acq : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
- def _InterlockedExchange16_nf : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
- def _InterlockedExchange16_rel : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
- def _InterlockedExchange_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
- def _InterlockedExchange_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
- def _InterlockedExchange_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
- def _InterlockedExchange64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
- def _InterlockedExchange64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
- def _InterlockedExchange64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedExchange8_acq : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedExchange8_nf : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedExchange8_rel : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedExchange16_acq : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedExchange16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedExchange16_rel : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedExchange_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedExchange_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedExchange_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedExchange64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedExchange64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedExchange64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
def _InterlockedExchangePointer_acq : AArch64NoPrefixTargetLibBuiltin<"void * (void * volatile *, void *)">;
def _InterlockedExchangePointer_nf : AArch64NoPrefixTargetLibBuiltin<"void * (void * volatile *, void *)">;
def _InterlockedExchangePointer_rel : AArch64NoPrefixTargetLibBuiltin<"void * (void * volatile *, void *)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedCompareExchange8_acq : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char, char)">;
- def _InterlockedCompareExchange8_nf : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char, char)">;
- def _InterlockedCompareExchange8_rel : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char, char)">;
- def _InterlockedCompareExchange16_acq : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short, short)">;
- def _InterlockedCompareExchange16_nf : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short, short)">;
- def _InterlockedCompareExchange16_rel : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short, short)">;
- def _InterlockedCompareExchange_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t, msint32_t)">;
- def _InterlockedCompareExchange_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t, msint32_t)">;
- def _InterlockedCompareExchange_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t, msint32_t)">;
- def _InterlockedCompareExchange64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int, long long int)">;
- def _InterlockedCompareExchange64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int, long long int)">;
- def _InterlockedCompareExchange64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int, long long int)">;
+ def _InterlockedCompareExchange8_acq : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char, char)">;
+ def _InterlockedCompareExchange8_nf : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char, char)">;
+ def _InterlockedCompareExchange8_rel : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char, char)">;
+ def _InterlockedCompareExchange16_acq : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short, short)">;
+ def _InterlockedCompareExchange16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short, short)">;
+ def _InterlockedCompareExchange16_rel : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short, short)">;
+ def _InterlockedCompareExchange_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t, msint32_t)">;
+ def _InterlockedCompareExchange_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t, msint32_t)">;
+ def _InterlockedCompareExchange_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t, msint32_t)">;
+ def _InterlockedCompareExchange64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int, long long int)">;
+ def _InterlockedCompareExchange64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int, long long int)">;
+ def _InterlockedCompareExchange64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int, long long int)">;
def _InterlockedCompareExchangePointer_acq : AArch64NoPrefixTargetLibBuiltin<"void * (void * volatile *, void *, void *)">;
def _InterlockedCompareExchangePointer_rel : AArch64NoPrefixTargetLibBuiltin<"void * (void * volatile *, void *, void *)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedCompareExchange128 : AArch64NoPrefixTargetLibBuiltin<"unsigned char (volatile long long int *, long long int, long long int, long long int *)">;
- def _InterlockedCompareExchange128_acq : AArch64NoPrefixTargetLibBuiltin<"unsigned char (volatile long long int *, long long int, long long int, long long int *)">;
- def _InterlockedCompareExchange128_nf : AArch64NoPrefixTargetLibBuiltin<"unsigned char (volatile long long int *, long long int, long long int, long long int *)">;
- def _InterlockedCompareExchange128_rel : AArch64NoPrefixTargetLibBuiltin<"unsigned char (volatile long long int *, long long int, long long int, long long int *)">;
+ def _InterlockedCompareExchange128 : AArch64NoPrefixTargetLibBuiltin<"unsigned char (long long int volatile *, long long int, long long int, long long int *)">;
+ def _InterlockedCompareExchange128_acq : AArch64NoPrefixTargetLibBuiltin<"unsigned char (long long int volatile *, long long int, long long int, long long int *)">;
+ def _InterlockedCompareExchange128_nf : AArch64NoPrefixTargetLibBuiltin<"unsigned char (long long int volatile *, long long int, long long int, long long int *)">;
+ def _InterlockedCompareExchange128_rel : AArch64NoPrefixTargetLibBuiltin<"unsigned char (long long int volatile *, long long int, long long int, long long int *)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedOr8_acq : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
- def _InterlockedOr8_nf : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
- def _InterlockedOr8_rel : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
- def _InterlockedOr16_acq : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
- def _InterlockedOr16_nf : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
- def _InterlockedOr16_rel : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
- def _InterlockedOr_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
- def _InterlockedOr_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
- def _InterlockedOr_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
- def _InterlockedOr64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
- def _InterlockedOr64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
- def _InterlockedOr64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedOr8_acq : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedOr8_nf : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedOr8_rel : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedOr16_acq : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedOr16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedOr16_rel : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedOr_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedOr_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedOr_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedOr64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedOr64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedOr64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedXor8_acq : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
- def _InterlockedXor8_nf : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
- def _InterlockedXor8_rel : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
- def _InterlockedXor16_acq : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
- def _InterlockedXor16_nf : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
- def _InterlockedXor16_rel : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
- def _InterlockedXor_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
- def _InterlockedXor_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
- def _InterlockedXor_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
- def _InterlockedXor64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
- def _InterlockedXor64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
- def _InterlockedXor64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedXor8_acq : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedXor8_nf : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedXor8_rel : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedXor16_acq : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedXor16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedXor16_rel : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedXor_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedXor_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedXor_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedXor64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedXor64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedXor64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedAnd8_acq : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
- def _InterlockedAnd8_nf : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
- def _InterlockedAnd8_rel : AArch64NoPrefixTargetLibBuiltin<"char (volatile char *, char)">;
- def _InterlockedAnd16_acq : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
- def _InterlockedAnd16_nf : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
- def _InterlockedAnd16_rel : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *, short)">;
- def _InterlockedAnd_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
- def _InterlockedAnd_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
- def _InterlockedAnd_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *, msint32_t)">;
- def _InterlockedAnd64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
- def _InterlockedAnd64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
- def _InterlockedAnd64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *, long long int)">;
+ def _InterlockedAnd8_acq : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedAnd8_nf : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedAnd8_rel : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedAnd16_acq : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedAnd16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedAnd16_rel : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedAnd_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedAnd_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedAnd_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedAnd64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedAnd64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedAnd64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedIncrement16_acq : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *)">;
- def _InterlockedIncrement16_nf : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *)">;
- def _InterlockedIncrement16_rel : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *)">;
- def _InterlockedIncrement_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *)">;
- def _InterlockedIncrement_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *)">;
- def _InterlockedIncrement_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *)">;
- def _InterlockedIncrement64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *)">;
- def _InterlockedIncrement64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *)">;
- def _InterlockedIncrement64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *)">;
+ def _InterlockedIncrement16_acq : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *)">;
+ def _InterlockedIncrement16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *)">;
+ def _InterlockedIncrement16_rel : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *)">;
+ def _InterlockedIncrement_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *)">;
+ def _InterlockedIncrement_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *)">;
+ def _InterlockedIncrement_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *)">;
+ def _InterlockedIncrement64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
+ def _InterlockedIncrement64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
+ def _InterlockedIncrement64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedDecrement16_acq : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *)">;
- def _InterlockedDecrement16_nf : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *)">;
- def _InterlockedDecrement16_rel : AArch64NoPrefixTargetLibBuiltin<"short (volatile short *)">;
- def _InterlockedDecrement_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *)">;
- def _InterlockedDecrement_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *)">;
- def _InterlockedDecrement_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (volatile msint32_t *)">;
- def _InterlockedDecrement64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *)">;
- def _InterlockedDecrement64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *)">;
- def _InterlockedDecrement64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (volatile long long int *)">;
+ def _InterlockedDecrement16_acq : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *)">;
+ def _InterlockedDecrement16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *)">;
+ def _InterlockedDecrement16_rel : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *)">;
+ def _InterlockedDecrement_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *)">;
+ def _InterlockedDecrement_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *)">;
+ def _InterlockedDecrement_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *)">;
+ def _InterlockedDecrement64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
+ def _InterlockedDecrement64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
+ def _InterlockedDecrement64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
@@ -391,7 +391,7 @@ let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES",
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def __prefetch : AArch64NoPrefixTargetLibBuiltin<"void (const void *)">;
+ def __prefetch : AArch64NoPrefixTargetLibBuiltin<"void (void const *)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
diff --git a/clang/include/clang/Basic/CMakeLists.txt b/clang/include/clang/Basic/CMakeLists.txt
index fefddf997fe83..9408277c04fe7 100644
--- a/clang/include/clang/Basic/CMakeLists.txt
+++ b/clang/include/clang/Basic/CMakeLists.txt
@@ -94,6 +94,10 @@ clang_tablegen(Builtins.inc -gen-clang-builtins
SOURCE Builtins.td
TARGET ClangBuiltins)
+clang_tablegen(BuiltinsAArch64.inc -gen-clang-builtins
+ SOURCE BuiltinsAArch64.td
+ TARGET ClangBuiltinsAArch64)
+
clang_tablegen(BuiltinsAMDGPU.inc -gen-clang-builtins
SOURCE BuiltinsAMDGPU.td
TARGET ClangBuiltinsAMDGPU)
diff --git a/clang/include/clang/Basic/TargetBuiltins.h b/clang/include/clang/Basic/TargetBuiltins.h
index 94ae62e80b65b..4729a8e54558e 100644
--- a/clang/include/clang/Basic/TargetBuiltins.h
+++ b/clang/include/clang/Basic/TargetBuiltins.h
@@ -85,6 +85,19 @@ namespace clang {
}
/// AArch64 builtins
+ //namespace AArch64 {
+ //enum {
+ // LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
+ // LastNEONBuiltin = NEON::FirstTSBuiltin - 1,
+ // FirstSVEBuiltin = NEON::FirstTSBuiltin,
+ // LastSVEBuiltin = SVE::FirstTSBuiltin - 1,
+ // FirstSMEBuiltin = SVE::FirstTSBuiltin,
+ // LastSMEBuiltin = SME::FirstTSBuiltin - 1,
+ //#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
+ //#include "clang/Basic/BuiltinsAArch64.def"
+ // LastTSBuiltin
+ //};
+ //}
namespace AArch64 {
enum {
LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
@@ -93,8 +106,9 @@ namespace clang {
LastSVEBuiltin = SVE::FirstTSBuiltin - 1,
FirstSMEBuiltin = SVE::FirstTSBuiltin,
LastSMEBuiltin = SME::FirstTSBuiltin - 1,
- #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
- #include "clang/Basic/BuiltinsAArch64.def"
+#define GET_BUILTIN_ENUMERATORS
+#include "clang/Basic/BuiltinsSPIRVCommon.inc"
+#undef GET_BUILTIN_ENUMERATORS
LastTSBuiltin
};
}
diff --git a/clang/lib/Basic/Targets/AArch64.cpp b/clang/lib/Basic/Targets/AArch64.cpp
index f7ed15be75cd8..cf45a35f8f6bf 100644
--- a/clang/lib/Basic/Targets/AArch64.cpp
+++ b/clang/lib/Basic/Targets/AArch64.cpp
@@ -122,7 +122,7 @@ static constexpr auto BuiltinAArch64Infos =
#define TARGET_BUILTIN CLANG_TARGET_BUILTIN_ENTRY
#define LANGBUILTIN CLANG_LANGBUILTIN_ENTRY
#define TARGET_HEADER_BUILTIN CLANG_TARGET_HEADER_BUILTIN_ENTRY
-#include "clang/Basic/BuiltinsAArch64.def"
+#include "clang/Basic/BuiltinsAArch64.inc"
});
AArch64TargetInfo::AArch64TargetInfo(const llvm::Triple &Triple,
>From 7b948e57858a8eb97cc9cc53885897fa29796e18 Mon Sep 17 00:00:00 2001
From: moodytongytong <moodytongytong at proton.me>
Date: Wed, 4 Mar 2026 10:04:03 +0000
Subject: [PATCH 05/12] resolve merge conflicts
---
clang/include/clang/Basic/BuiltinHeaders.def | 2 +-
clang/include/clang/Basic/BuiltinsAArch64.def | 329 ------------------
clang/include/clang/Basic/BuiltinsARM.def | 16 +-
clang/include/clang/Basic/TargetBuiltins.h | 16 +-
clang/include/module.modulemap | 1 -
clang/lib/Basic/Targets/AArch64.cpp | 38 +-
6 files changed, 32 insertions(+), 370 deletions(-)
delete mode 100644 clang/include/clang/Basic/BuiltinsAArch64.def
diff --git a/clang/include/clang/Basic/BuiltinHeaders.def b/clang/include/clang/Basic/BuiltinHeaders.def
index d6012a896eca9..bca40c0e4deea 100644
--- a/clang/include/clang/Basic/BuiltinHeaders.def
+++ b/clang/include/clang/Basic/BuiltinHeaders.def
@@ -12,7 +12,7 @@
//===----------------------------------------------------------------------===//
HEADER(NO_HEADER, nullptr)
-HEADER(ARMACLE_H, "arm_acle.h")
+HEADER(ARM_ACLE_H, "arm_acle.h")
HEADER(BLOCKS_H, "Blocks.h")
HEADER(COMPLEX_H, "complex.h")
HEADER(CTYPE_H, "ctype.h")
diff --git a/clang/include/clang/Basic/BuiltinsAArch64.def b/clang/include/clang/Basic/BuiltinsAArch64.def
deleted file mode 100644
index 5722b045f1ed1..0000000000000
--- a/clang/include/clang/Basic/BuiltinsAArch64.def
+++ /dev/null
@@ -1,329 +0,0 @@
-//==- BuiltinsAArch64.def - AArch64 Builtin function 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 AArch64-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(LANGBUILTIN)
-# define LANGBUILTIN(ID, TYPE, ATTRS, BUILTIN_LANG) BUILTIN(ID, TYPE, ATTRS)
-#endif
-
-#if defined(BUILTIN) && !defined(TARGET_BUILTIN)
-# define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BUILTIN(ID, TYPE, ATTRS)
-#endif
-
-#if defined(BUILTIN) && !defined(TARGET_HEADER_BUILTIN)
-# define TARGET_HEADER_BUILTIN(ID, TYPE, ATTRS, HEADER, LANG, FEATURE) BUILTIN(ID, TYPE, ATTRS)
-#endif
-
-// In libgcc
-BUILTIN(__clear_cache, "vv*v*", "i")
-
-BUILTIN(__builtin_arm_ldrex, "v.", "t")
-BUILTIN(__builtin_arm_ldaex, "v.", "t")
-BUILTIN(__builtin_arm_strex, "i.", "t")
-BUILTIN(__builtin_arm_stlex, "i.", "t")
-BUILTIN(__builtin_arm_clrex, "v", "")
-
-// Bit manipulation
-BUILTIN(__builtin_arm_rbit, "UiUi", "nc")
-BUILTIN(__builtin_arm_rbit64, "WUiWUi", "nc")
-BUILTIN(__builtin_arm_cls, "UiZUi", "nc")
-BUILTIN(__builtin_arm_cls64, "UiWUi", "nc")
-BUILTIN(__builtin_arm_clz, "UiZUi", "nc")
-BUILTIN(__builtin_arm_clz64, "UiWUi", "nc")
-
-// HINT
-BUILTIN(__builtin_arm_nop, "v", "")
-BUILTIN(__builtin_arm_yield, "v", "")
-BUILTIN(__builtin_arm_wfe, "v", "")
-BUILTIN(__builtin_arm_wfi, "v", "")
-BUILTIN(__builtin_arm_sev, "v", "")
-BUILTIN(__builtin_arm_sevl, "v", "")
-BUILTIN(__builtin_arm_chkfeat, "WUiWUi", "")
-TARGET_HEADER_BUILTIN(__yield, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__wfe, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__wfi, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__sev, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__sevl, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-
-// Like __builtin_trap but provide an 16-bit immediate reason code (which goes into `brk #N`).
-BUILTIN(__builtin_arm_trap, "vUIs", "nr")
-
-// CRC32
-TARGET_BUILTIN(__builtin_arm_crc32b, "UiUiUc", "nc", "crc")
-TARGET_BUILTIN(__builtin_arm_crc32cb, "UiUiUc", "nc", "crc")
-TARGET_BUILTIN(__builtin_arm_crc32h, "UiUiUs", "nc", "crc")
-TARGET_BUILTIN(__builtin_arm_crc32ch, "UiUiUs", "nc", "crc")
-TARGET_BUILTIN(__builtin_arm_crc32w, "UiUiUi", "nc", "crc")
-TARGET_BUILTIN(__builtin_arm_crc32cw, "UiUiUi", "nc", "crc")
-TARGET_BUILTIN(__builtin_arm_crc32d, "UiUiWUi", "nc", "crc")
-TARGET_BUILTIN(__builtin_arm_crc32cd, "UiUiWUi", "nc", "crc")
-
-// Memory Tagging Extensions (MTE)
-TARGET_BUILTIN(__builtin_arm_irg, "v*v*Ui", "t", "mte")
-TARGET_BUILTIN(__builtin_arm_addg, "v*v*Ui", "t", "mte")
-TARGET_BUILTIN(__builtin_arm_gmi, "Uiv*Ui", "t", "mte")
-TARGET_BUILTIN(__builtin_arm_ldg, "v*v*", "t", "mte")
-TARGET_BUILTIN(__builtin_arm_stg, "vv*", "t", "mte")
-TARGET_BUILTIN(__builtin_arm_subp, "Uiv*v*", "t", "mte")
-
-// SME state function
-BUILTIN(__builtin_arm_get_sme_state, "vWUi*WUi*", "n")
-
-// Memory Operations
-TARGET_BUILTIN(__builtin_arm_mops_memset_tag, "v*v*iz", "", "mte,mops")
-
-// Memory barrier
-BUILTIN(__builtin_arm_dmb, "vUi", "nc")
-BUILTIN(__builtin_arm_dsb, "vUi", "nc")
-BUILTIN(__builtin_arm_isb, "vUi", "nc")
-TARGET_HEADER_BUILTIN(__dmb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__dsb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__isb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
-
-TARGET_BUILTIN(__builtin_arm_jcvt, "Zid", "nc", "v8.3a")
-
-// Prefetch
-BUILTIN(__builtin_arm_prefetch, "vvC*UiUiUiUi", "nc")
-
-BUILTIN(__builtin_arm_prefetch_ir, "vvC*", "nc")
-
-// Range Prefetch
-BUILTIN(__builtin_arm_range_prefetch_x, "vvC*UiUiiUiiz", "n")
-BUILTIN(__builtin_arm_range_prefetch, "vvC*UiUiWUi", "n")
-
-// System Registers
-BUILTIN(__builtin_arm_rsr, "UicC*", "nc")
-BUILTIN(__builtin_arm_rsr64, "WUicC*", "nc")
-TARGET_BUILTIN(__builtin_arm_rsr128, "LLLUicC*", "nc", "d128")
-BUILTIN(__builtin_arm_rsrp, "v*cC*", "nc")
-BUILTIN(__builtin_arm_wsr, "vcC*Ui", "nc")
-BUILTIN(__builtin_arm_wsr64, "vcC*WUi", "nc")
-TARGET_BUILTIN(__builtin_arm_wsr128, "vcC*LLLUi", "nc", "d128")
-BUILTIN(__builtin_arm_wsrp, "vcC*vC*", "nc")
-
-// Misc
-BUILTIN(__builtin_sponentry, "v*", "c")
-
-// Armv8.5-A FP rounding intrinsics
-TARGET_BUILTIN(__builtin_arm_rint32zf, "ff", "", "v8.5a")
-TARGET_BUILTIN(__builtin_arm_rint32z, "dd", "", "v8.5a")
-TARGET_BUILTIN(__builtin_arm_rint64zf, "ff", "", "v8.5a")
-TARGET_BUILTIN(__builtin_arm_rint64z, "dd", "", "v8.5a")
-TARGET_BUILTIN(__builtin_arm_rint32xf, "ff", "", "v8.5a")
-TARGET_BUILTIN(__builtin_arm_rint32x, "dd", "", "v8.5a")
-TARGET_BUILTIN(__builtin_arm_rint64xf, "ff", "", "v8.5a")
-TARGET_BUILTIN(__builtin_arm_rint64x, "dd", "", "v8.5a")
-
-// Armv8.5-A Random number generation intrinsics
-TARGET_BUILTIN(__builtin_arm_rndr, "iWUi*", "n", "rand")
-TARGET_BUILTIN(__builtin_arm_rndrrs, "iWUi*", "n", "rand")
-
-// Armv8.7-A load/store 64-byte intrinsics
-TARGET_BUILTIN(__builtin_arm_ld64b, "vvC*WUi*", "n", "ls64")
-TARGET_BUILTIN(__builtin_arm_st64b, "vv*WUiC*", "n", "ls64")
-TARGET_BUILTIN(__builtin_arm_st64bv, "WUiv*WUiC*", "n", "ls64")
-TARGET_BUILTIN(__builtin_arm_st64bv0, "WUiv*WUiC*", "n", "ls64")
-
-// Atomic store with PCDPHINT
-TARGET_BUILTIN(__builtin_arm_atomic_store_with_stshh, "v.", "t", "")
-
-// Armv9.3-A Guarded Control Stack
-TARGET_BUILTIN(__builtin_arm_gcspopm, "WUiWUi", "n", "gcs")
-TARGET_BUILTIN(__builtin_arm_gcsss, "v*v*", "n", "gcs")
-
-TARGET_HEADER_BUILTIN(_BitScanForward, "UcUNi*UNi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_BitScanReverse, "UcUNi*UNi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_BitScanForward64, "UcUNi*ULLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_BitScanReverse64, "UcUNi*ULLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-
-TARGET_HEADER_BUILTIN(_InterlockedAdd, "NiNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedAdd64, "LLiLLiD*LLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedAnd64, "LLiLLiD*LLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedDecrement64, "LLiLLiD*", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedExchange64, "LLiLLiD*LLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64, "LLiLLiD*LLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedExchangeSub64, "LLiLLiD*LLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedIncrement64, "LLiLLiD*", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-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(_InterlockedAdd_acq, "NiNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedAdd_rel, "NiNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedAdd_nf, "NiNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedAdd64_acq, "LLiLLiD*LLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedAdd64_rel, "LLiLLiD*LLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedAdd64_nf, "LLiLLiD*LLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-
-TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd_acq, "NiNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd_rel, "NiNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd_nf, "NiNiD*Ni", "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, "NiNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedExchange_nf, "NiNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedExchange_rel, "NiNiD*Ni", "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(_InterlockedExchangePointer_acq, "v*v*D*v*","nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedExchangePointer_nf, "v*v*D*v*","nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedExchangePointer_rel, "v*v*D*v*","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, "NiNiD*NiNi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_nf, "NiNiD*NiNi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_rel, "NiNiD*NiNi", "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(_InterlockedCompareExchangePointer_acq, "v*v*D*v*v*","nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedCompareExchangePointer_rel, "v*v*D*v*v*","nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-
-TARGET_HEADER_BUILTIN(_InterlockedCompareExchange128, "UcLLiD*LLiLLiLLi*", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedCompareExchange128_acq,"UcLLiD*LLiLLiLLi*", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedCompareExchange128_nf ,"UcLLiD*LLiLLiLLi*", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedCompareExchange128_rel,"UcLLiD*LLiLLiLLi*", "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, "NiNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedOr_nf, "NiNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedOr_rel, "NiNiD*Ni", "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, "NiNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedXor_nf, "NiNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedXor_rel, "NiNiD*Ni", "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, "NiNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedAnd_nf, "NiNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedAnd_rel, "NiNiD*Ni", "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, "NiNiD*", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedIncrement_nf, "NiNiD*", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedIncrement_rel, "NiNiD*", "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, "NiNiD*", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedDecrement_nf, "NiNiD*", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_InterlockedDecrement_rel, "NiNiD*", "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(__sys, "UiiLLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_AddressOfReturnAddress, "v*", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-
-TARGET_HEADER_BUILTIN(__mulh, "SLLiSLLiSLLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__umulh, "ULLiULLiULLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-
-TARGET_HEADER_BUILTIN(__break, "vi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-
-TARGET_HEADER_BUILTIN(__writex18byte, "vUNiUc", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__writex18word, "vUNiUs", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__writex18dword, "vUNiUNi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__writex18qword, "vUNiULLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-
-TARGET_HEADER_BUILTIN(__readx18byte, "UcUNi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__readx18word, "UsUNi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__readx18dword, "UNiUNi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__readx18qword, "ULLiUNi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-
-TARGET_HEADER_BUILTIN(__addx18byte, "vUNiUc", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__addx18word, "vUNiUs", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__addx18dword, "vUNiUNi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__addx18qword, "vUNiULLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-
-TARGET_HEADER_BUILTIN(__incx18byte, "vUNi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__incx18word, "vUNi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__incx18dword, "vUNi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__incx18qword, "vUNi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-
-TARGET_HEADER_BUILTIN(_CopyDoubleFromInt64, "dSLLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_CopyFloatFromInt32, "fSi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_CopyInt32FromFloat, "Sif", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_CopyInt64FromDouble, "SLLid", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-
-TARGET_HEADER_BUILTIN(_CountLeadingOnes, "UiUNi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_CountLeadingOnes64, "UiULLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_CountLeadingSigns, "UiSNi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_CountLeadingSigns64, "UiSLLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_CountLeadingZeros, "UiUNi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_CountLeadingZeros64, "UiULLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_CountOneBits, "UiUNi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_CountOneBits64, "UiULLi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-
-TARGET_HEADER_BUILTIN(__prefetch, "vvC*", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-
-TARGET_HEADER_BUILTIN(__hlt, "UiUi.", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
-
-#undef BUILTIN
-#undef LANGBUILTIN
-#undef TARGET_BUILTIN
-#undef TARGET_HEADER_BUILTIN
diff --git a/clang/include/clang/Basic/BuiltinsARM.def b/clang/include/clang/Basic/BuiltinsARM.def
index cdcc0d0d65e20..15debc7553bfe 100644
--- a/clang/include/clang/Basic/BuiltinsARM.def
+++ b/clang/include/clang/Basic/BuiltinsARM.def
@@ -186,19 +186,19 @@ BUILTIN(__builtin_arm_wfi, "v", "")
BUILTIN(__builtin_arm_sev, "v", "")
BUILTIN(__builtin_arm_sevl, "v", "")
BUILTIN(__builtin_arm_dbg, "vUi", "")
-TARGET_HEADER_BUILTIN(__yield, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__wfe, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__wfi, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__sev, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__sevl, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__yield, "v", "h", ARM_ACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__wfe, "v", "h", ARM_ACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__wfi, "v", "h", ARM_ACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__sev, "v", "h", ARM_ACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__sevl, "v", "h", ARM_ACLE_H, ALL_LANGUAGES, "")
// Data barrier
BUILTIN(__builtin_arm_dmb, "vUi", "nc")
BUILTIN(__builtin_arm_dsb, "vUi", "nc")
BUILTIN(__builtin_arm_isb, "vUi", "nc")
-TARGET_HEADER_BUILTIN(__dmb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__dsb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__isb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__dmb, "vUi", "nch", ARM_ACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__dsb, "vUi", "nch", ARM_ACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__isb, "vUi", "nch", ARM_ACLE_H, ALL_LANGUAGES, "")
// Prefetch
BUILTIN(__builtin_arm_prefetch, "vvC*UiUi", "nc")
diff --git a/clang/include/clang/Basic/TargetBuiltins.h b/clang/include/clang/Basic/TargetBuiltins.h
index 4729a8e54558e..38ff9a41f8c84 100644
--- a/clang/include/clang/Basic/TargetBuiltins.h
+++ b/clang/include/clang/Basic/TargetBuiltins.h
@@ -84,20 +84,6 @@ namespace clang {
};
}
- /// AArch64 builtins
- //namespace AArch64 {
- //enum {
- // LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
- // LastNEONBuiltin = NEON::FirstTSBuiltin - 1,
- // FirstSVEBuiltin = NEON::FirstTSBuiltin,
- // LastSVEBuiltin = SVE::FirstTSBuiltin - 1,
- // FirstSMEBuiltin = SVE::FirstTSBuiltin,
- // LastSMEBuiltin = SME::FirstTSBuiltin - 1,
- //#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
- //#include "clang/Basic/BuiltinsAArch64.def"
- // LastTSBuiltin
- //};
- //}
namespace AArch64 {
enum {
LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
@@ -107,7 +93,7 @@ namespace clang {
FirstSMEBuiltin = SVE::FirstTSBuiltin,
LastSMEBuiltin = SME::FirstTSBuiltin - 1,
#define GET_BUILTIN_ENUMERATORS
-#include "clang/Basic/BuiltinsSPIRVCommon.inc"
+#include "clang/Basic/BuiltinsAARCH64.inc"
#undef GET_BUILTIN_ENUMERATORS
LastTSBuiltin
};
diff --git a/clang/include/module.modulemap b/clang/include/module.modulemap
index 5cff436b61f23..ebc26fffc37f9 100644
--- a/clang/include/module.modulemap
+++ b/clang/include/module.modulemap
@@ -39,7 +39,6 @@ module Clang_Basic {
textual header "clang/Basic/ABIVersions.def"
textual header "clang/Basic/AMDGPUTypes.def"
textual header "clang/Basic/BuiltinHeaders.def"
- textual header "clang/Basic/BuiltinsAArch64.def"
textual header "clang/Basic/BuiltinsAArch64NeonSVEBridge.def"
textual header "clang/Basic/BuiltinsAArch64NeonSVEBridge_cg.def"
textual header "clang/Basic/BuiltinsARM.def"
diff --git a/clang/lib/Basic/Targets/AArch64.cpp b/clang/lib/Basic/Targets/AArch64.cpp
index cf45a35f8f6bf..c2c7db9bb2305 100644
--- a/clang/lib/Basic/Targets/AArch64.cpp
+++ b/clang/lib/Basic/Targets/AArch64.cpp
@@ -43,6 +43,26 @@ static_assert(NumBuiltins ==
NumSVENeonBridgeBuiltins + NumSMEBuiltins + NumAArch64Builtins));
namespace clang {
+namespace AArch64 {
+#define GET_BUILTIN_STR_TABLE
+#include "clang/Basic/BuiltinsAArch64.inc"
+#undef GET_BUILTIN_STR_TABLE
+
+static constexpr Builtin::Info BuiltinInfos[] = {
+#define GET_BUILTIN_INFOS
+#include "clang/Basic/BuiltinsAArch64.inc"
+#undef GET_BUILTIN_INFOS
+};
+
+static constexpr Builtin::Info PrefixedBuiltinInfos[] = {
+#define GET_BUILTIN_PREFIXED_INFOS
+#include "clang/Basic/BuiltinsAArch64.inc"
+#undef GET_BUILTIN_PREFIXED_INFOS
+};
+static_assert((std::size(BuiltinInfos) + std::size(PrefixedBuiltinInfos)) ==
+ NumAArch64Builtins);
+} // namespace AArch64
+
namespace NEON {
#define GET_NEON_BUILTIN_STR_TABLE
#include "clang/Basic/arm_neon.inc"
@@ -100,13 +120,6 @@ static constexpr llvm::StringTable BuiltinSVENeonBridgeStrings =
#undef GET_SVE_BUILTINS
#undef TARGET_BUILTIN
;
-static constexpr llvm::StringTable BuiltinAArch64Strings =
- CLANG_BUILTIN_STR_TABLE_START
-#define BUILTIN CLANG_BUILTIN_STR_TABLE
-#define TARGET_BUILTIN CLANG_TARGET_BUILTIN_STR_TABLE
-#define TARGET_HEADER_BUILTIN CLANG_TARGET_HEADER_BUILTIN_STR_TABLE
-#include "clang/Basic/BuiltinsAArch64.def"
- ;
static constexpr auto BuiltinSVENeonBridgeInfos =
Builtin::MakeInfos<NumSVENeonBridgeBuiltins>({
@@ -116,14 +129,6 @@ static constexpr auto BuiltinSVENeonBridgeInfos =
#undef GET_SVE_BUILTINS
#undef TARGET_BUILTIN
});
-static constexpr auto BuiltinAArch64Infos =
- Builtin::MakeInfos<NumAArch64Builtins>({
-#define BUILTIN CLANG_BUILTIN_ENTRY
-#define TARGET_BUILTIN CLANG_TARGET_BUILTIN_ENTRY
-#define LANGBUILTIN CLANG_LANGBUILTIN_ENTRY
-#define TARGET_HEADER_BUILTIN CLANG_TARGET_HEADER_BUILTIN_ENTRY
-#include "clang/Basic/BuiltinsAArch64.inc"
- });
AArch64TargetInfo::AArch64TargetInfo(const llvm::Triple &Triple,
const TargetOptions &Opts)
@@ -775,7 +780,8 @@ AArch64TargetInfo::getTargetBuiltins() const {
{&SVE::BuiltinStrings, SVE::BuiltinInfos, "__builtin_sve_"},
{&BuiltinSVENeonBridgeStrings, BuiltinSVENeonBridgeInfos},
{&SME::BuiltinStrings, SME::BuiltinInfos, "__builtin_sme_"},
- {&BuiltinAArch64Strings, BuiltinAArch64Infos},
+ {&AArch64::BuiltinStrings, AArch64::PrefixedBuiltinInfos,
+ "__builtin_arm_"},
};
}
>From 450bde76fd1488bfc35b2bf493dbb3309086c02e Mon Sep 17 00:00:00 2001
From: moodytongytong <77366045+moodytongytong at users.noreply.github.com>
Date: Wed, 4 Feb 2026 15:27:57 +0000
Subject: [PATCH 06/12] fix filename
---
clang/include/clang/Basic/TargetBuiltins.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/clang/include/clang/Basic/TargetBuiltins.h b/clang/include/clang/Basic/TargetBuiltins.h
index 38ff9a41f8c84..63fb470ea6a4f 100644
--- a/clang/include/clang/Basic/TargetBuiltins.h
+++ b/clang/include/clang/Basic/TargetBuiltins.h
@@ -93,7 +93,7 @@ namespace clang {
FirstSMEBuiltin = SVE::FirstTSBuiltin,
LastSMEBuiltin = SME::FirstTSBuiltin - 1,
#define GET_BUILTIN_ENUMERATORS
-#include "clang/Basic/BuiltinsAARCH64.inc"
+#include "clang/Basic/BuiltinsAArch64.inc"
#undef GET_BUILTIN_ENUMERATORS
LastTSBuiltin
};
>From 5e85e558b2791d35766104977919d6b1464606a4 Mon Sep 17 00:00:00 2001
From: moodytongytong <moodytongytong at proton.me>
Date: Fri, 27 Feb 2026 19:38:11 +0000
Subject: [PATCH 07/12] Add BuiltinInfos
---
clang/lib/Basic/Targets/AArch64.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/clang/lib/Basic/Targets/AArch64.cpp b/clang/lib/Basic/Targets/AArch64.cpp
index c2c7db9bb2305..9b951e69cce33 100644
--- a/clang/lib/Basic/Targets/AArch64.cpp
+++ b/clang/lib/Basic/Targets/AArch64.cpp
@@ -780,8 +780,9 @@ AArch64TargetInfo::getTargetBuiltins() const {
{&SVE::BuiltinStrings, SVE::BuiltinInfos, "__builtin_sve_"},
{&BuiltinSVENeonBridgeStrings, BuiltinSVENeonBridgeInfos},
{&SME::BuiltinStrings, SME::BuiltinInfos, "__builtin_sme_"},
+ {&AArch64::BuiltinStrings, AArch64::BuiltinInfos},
{&AArch64::BuiltinStrings, AArch64::PrefixedBuiltinInfos,
- "__builtin_arm_"},
+ "__builtin_arm_"},
};
}
>From f7c02bdb149d926269a8bd7b0d248fb7af36f25d Mon Sep 17 00:00:00 2001
From: moodytongytong <moodytongytong at proton.me>
Date: Wed, 4 Mar 2026 11:11:07 +0000
Subject: [PATCH 08/12] add prefetch_ir translation
---
clang/include/clang/Basic/BuiltinsAArch64.td | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/clang/include/clang/Basic/BuiltinsAArch64.td b/clang/include/clang/Basic/BuiltinsAArch64.td
index 1c8e2be0173a9..578e34d986a70 100644
--- a/clang/include/clang/Basic/BuiltinsAArch64.td
+++ b/clang/include/clang/Basic/BuiltinsAArch64.td
@@ -113,6 +113,10 @@ let Attributes = [NoThrow, Const] in {
def prefetch : AArch64Builtin<"void (void const *, unsigned int, unsigned int, unsigned int, unsigned int)">;
}
+let Attributes = [NoThrow, Const] in {
+ def prefetch_ir : AArch64Builtin<"void (void const *)">;
+}
+
// Range Prefetch
let Attributes = [NoThrow] in {
def range_prefetch_x : AArch64Builtin<"void (void const *, unsigned int, unsigned int, int, unsigned int, int, size_t)">;
>From b620df645cd515a69c136eb3d647d2302a24da5d Mon Sep 17 00:00:00 2001
From: moodytongytong <moodytongytong at proton.me>
Date: Wed, 4 Mar 2026 17:14:34 +0000
Subject: [PATCH 09/12] include new attribute
---
clang/include/clang/Basic/BuiltinsAArch64.td | 5 ++++-
clang/include/clang/Basic/BuiltinsBase.td | 4 ++++
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/clang/include/clang/Basic/BuiltinsAArch64.td b/clang/include/clang/Basic/BuiltinsAArch64.td
index 578e34d986a70..b71e504998401 100644
--- a/clang/include/clang/Basic/BuiltinsAArch64.td
+++ b/clang/include/clang/Basic/BuiltinsAArch64.td
@@ -16,7 +16,10 @@
include "clang/Basic/BuiltinsAArch64Base.td"
// In libgcc
-def __clear_cache : AArch64NoPrefixBuiltin<"void (void *, void *)">;
+let Attributes = [RuntimeLibraryFunction] in {
+ def __clear_cache : AArch64NoPrefixBuiltin<"void (void *, void *)">;
+}
+
let Attributes = [CustomTypeChecking] in {
def ldrex : AArch64Builtin<"void (...)">;
diff --git a/clang/include/clang/Basic/BuiltinsBase.td b/clang/include/clang/Basic/BuiltinsBase.td
index af9c0fd7d3cef..1f34374148363 100644
--- a/clang/include/clang/Basic/BuiltinsBase.td
+++ b/clang/include/clang/Basic/BuiltinsBase.td
@@ -75,6 +75,10 @@ def ConstIgnoringExceptions : Attribute<"g">;
// This function requires a specific header or an explicit declaration.
def RequireDeclaration : Attribute<"h">;
+// This is a runtime library implemented function without the
+// '__builtin_' prefix. It will be implemented in compiler-rt or libgcc.
+def RuntimeLibraryFunction : Attribute<"i">;
+
// FIXME: Why is this not simply the min_vector_width attribute?
// Vector has to be at least N bits wide.
class RequiredVectorWidth<int N> : IndexedAttribute<"V", N>;
>From 7db1061ddd2f0f6e058dbf703cafed0262e7ad62 Mon Sep 17 00:00:00 2001
From: moodytongytong <moodytongytong at proton.me>
Date: Wed, 4 Mar 2026 17:42:26 +0000
Subject: [PATCH 10/12] formatting
---
clang/include/clang/Basic/BuiltinsAArch64.td | 1 -
1 file changed, 1 deletion(-)
diff --git a/clang/include/clang/Basic/BuiltinsAArch64.td b/clang/include/clang/Basic/BuiltinsAArch64.td
index b71e504998401..30553cb3428f8 100644
--- a/clang/include/clang/Basic/BuiltinsAArch64.td
+++ b/clang/include/clang/Basic/BuiltinsAArch64.td
@@ -20,7 +20,6 @@ let Attributes = [RuntimeLibraryFunction] in {
def __clear_cache : AArch64NoPrefixBuiltin<"void (void *, void *)">;
}
-
let Attributes = [CustomTypeChecking] in {
def ldrex : AArch64Builtin<"void (...)">;
def ldaex : AArch64Builtin<"void (...)">;
>From 71e532037fdec959f10b162e04648ef2878a54ff Mon Sep 17 00:00:00 2001
From: moodytongytong <moodytongytong at proton.me>
Date: Tue, 24 Mar 2026 15:44:24 +0000
Subject: [PATCH 11/12] add translation for the new lines
---
clang/include/clang/Basic/BuiltinsAArch64.td | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/clang/include/clang/Basic/BuiltinsAArch64.td b/clang/include/clang/Basic/BuiltinsAArch64.td
index 30553cb3428f8..87a06e68a3f7e 100644
--- a/clang/include/clang/Basic/BuiltinsAArch64.td
+++ b/clang/include/clang/Basic/BuiltinsAArch64.td
@@ -171,6 +171,11 @@ let Attributes = [NoThrow], Features = "ls64" in {
def st64bv0 : AArch64TargetBuiltin<"uint64_t (void *, uint64_t const *)">;
}
+// Atomic store with PCDPHINT
+let Attributes = [CustomTypeChecking] in {
+ def atomic_store_with_stshh : AArch64TargetBuiltin<"void (...)">;
+}
+
// Armv9.3-A Guarded Control Stack
let Attributes = [NoThrow], Features = "gcs" in {
def gcspopm : AArch64TargetBuiltin<"uint64_t (uint64_t)">;
>From f918c2864337e1908d76876a8ec7858bb6de33d3 Mon Sep 17 00:00:00 2001
From: moodytongytong <moodytongytong at proton.me>
Date: Wed, 25 Mar 2026 13:30:00 +0000
Subject: [PATCH 12/12] align :'s
---
clang/include/clang/Basic/BuiltinsAArch64.td | 282 +++++++++----------
1 file changed, 141 insertions(+), 141 deletions(-)
diff --git a/clang/include/clang/Basic/BuiltinsAArch64.td b/clang/include/clang/Basic/BuiltinsAArch64.td
index 87a06e68a3f7e..d663b7b1a7757 100644
--- a/clang/include/clang/Basic/BuiltinsAArch64.td
+++ b/clang/include/clang/Basic/BuiltinsAArch64.td
@@ -31,29 +31,29 @@ def clrex : AArch64Builtin<"void ()">;
// Bit manipulation
let Attributes = [NoThrow, Const] in {
- def rbit : AArch64Builtin<"unsigned int (unsigned int)">;
+ def rbit : AArch64Builtin<"unsigned int (unsigned int)">;
def rbit64 : AArch64Builtin<"uint64_t (uint64_t)">;
- def cls : AArch64Builtin<"unsigned int (uint32_t)">;
- def cls64 : AArch64Builtin<"unsigned int (uint64_t)">;
- def clz : AArch64Builtin<"unsigned int (uint32_t)">;
- def clz64 : AArch64Builtin<"unsigned int (uint64_t)">;
+ def cls : AArch64Builtin<"unsigned int (uint32_t)">;
+ def cls64 : AArch64Builtin<"unsigned int (uint64_t)">;
+ def clz : AArch64Builtin<"unsigned int (uint32_t)">;
+ def clz64 : AArch64Builtin<"unsigned int (uint64_t)">;
}
// HINT
-def nop : AArch64Builtin<"void ()">;
-def yield : AArch64Builtin<"void ()">;
-def wfe : AArch64Builtin<"void ()">;
-def wfi : AArch64Builtin<"void ()">;
-def sev : AArch64Builtin<"void ()">;
-def sevl : AArch64Builtin<"void ()">;
+def nop : AArch64Builtin<"void ()">;
+def yield : AArch64Builtin<"void ()">;
+def wfe : AArch64Builtin<"void ()">;
+def wfi : AArch64Builtin<"void ()">;
+def sev : AArch64Builtin<"void ()">;
+def sevl : AArch64Builtin<"void ()">;
def chkfeat : AArch64Builtin<"uint64_t (uint64_t)">;
let Attributes = [RequireDeclaration], Languages = "ALL_LANGUAGES", Header = "arm_acle.h" in {
def __yield : AArch64NoPrefixTargetLibBuiltin<"void ()">;
- def __wfe : AArch64NoPrefixTargetLibBuiltin<"void ()">;
- def __wfi : AArch64NoPrefixTargetLibBuiltin<"void ()">;
- def __sev : AArch64NoPrefixTargetLibBuiltin<"void ()">;
- def __sevl : AArch64NoPrefixTargetLibBuiltin<"void ()">;
+ def __wfe : AArch64NoPrefixTargetLibBuiltin<"void ()">;
+ def __wfi : AArch64NoPrefixTargetLibBuiltin<"void ()">;
+ def __sev : AArch64NoPrefixTargetLibBuiltin<"void ()">;
+ def __sevl : AArch64NoPrefixTargetLibBuiltin<"void ()">;
}
// Like __builtin_trap but provide an 16-bit immediate reason code (which goes into `brk #N`).
@@ -63,23 +63,23 @@ let Attributes = [NoThrow, NoReturn] in {
// CRC32
let Attributes = [NoThrow, Const], Features = "crc" in {
- def crc32b : AArch64TargetBuiltin<"unsigned int (unsigned int, unsigned char)">;
+ def crc32b : AArch64TargetBuiltin<"unsigned int (unsigned int, unsigned char)">;
def crc32cb : AArch64TargetBuiltin<"unsigned int (unsigned int, unsigned char)">;
- def crc32h : AArch64TargetBuiltin<"unsigned int (unsigned int, unsigned short)">;
+ def crc32h : AArch64TargetBuiltin<"unsigned int (unsigned int, unsigned short)">;
def crc32ch : AArch64TargetBuiltin<"unsigned int (unsigned int, unsigned short)">;
- def crc32w : AArch64TargetBuiltin<"unsigned int (unsigned int, unsigned int)">;
+ def crc32w : AArch64TargetBuiltin<"unsigned int (unsigned int, unsigned int)">;
def crc32cw : AArch64TargetBuiltin<"unsigned int (unsigned int, unsigned int)">;
- def crc32d : AArch64TargetBuiltin<"unsigned int (unsigned int, uint64_t)">;
+ def crc32d : AArch64TargetBuiltin<"unsigned int (unsigned int, uint64_t)">;
def crc32cd : AArch64TargetBuiltin<"unsigned int (unsigned int, uint64_t)">;
}
// Memory Tagging Extensions (MTE)
let Attributes = [CustomTypeChecking], Features = "mte" in {
- def irg : AArch64TargetBuiltin<"void * (void *, unsigned int)">;
+ def irg : AArch64TargetBuiltin<"void * (void *, unsigned int)">;
def addg : AArch64TargetBuiltin<"void * (void *, unsigned int)">;
- def gmi : AArch64TargetBuiltin<"unsigned int (void *, unsigned int)">;
- def ldg : AArch64TargetBuiltin<"void * (void *)">;
- def stg : AArch64TargetBuiltin<"void (void *)">;
+ def gmi : AArch64TargetBuiltin<"unsigned int (void *, unsigned int)">;
+ def ldg : AArch64TargetBuiltin<"void * (void *)">;
+ def stg : AArch64TargetBuiltin<"void (void *)">;
def subp : AArch64TargetBuiltin<"unsigned int (void *, void *)">;
}
@@ -122,17 +122,17 @@ let Attributes = [NoThrow, Const] in {
// Range Prefetch
let Attributes = [NoThrow] in {
def range_prefetch_x : AArch64Builtin<"void (void const *, unsigned int, unsigned int, int, unsigned int, int, size_t)">;
- def range_prefetch : AArch64Builtin<"void (void const *, unsigned int, unsigned int, uint64_t)">;
+ def range_prefetch : AArch64Builtin<"void (void const *, unsigned int, unsigned int, uint64_t)">;
}
// System Registers
let Attributes = [NoThrow, Const] in {
- def rsr : AArch64Builtin<"unsigned int (char const *)">;
+ def rsr : AArch64Builtin<"unsigned int (char const *)">;
def rsr64 : AArch64Builtin<"uint64_t (char const *)">;
- def rsrp : AArch64Builtin<"void * (char const *)">;
- def wsr : AArch64Builtin<"void (char const *, unsigned int)">;
+ def rsrp : AArch64Builtin<"void * (char const *)">;
+ def wsr : AArch64Builtin<"void (char const *, unsigned int)">;
def wsr64 : AArch64Builtin<"void (char const *, uint64_t)">;
- def wsrp : AArch64Builtin<"void (char const *, void const *)">;
+ def wsrp : AArch64Builtin<"void (char const *, void const *)">;
}
let Attributes = [NoThrow, Const], Features = "d128" in {
@@ -148,26 +148,26 @@ let Attributes = [Const] in {
// Armv8.5-A FP rounding intrinsics
let Features = "v8.5a" in {
def rint32zf : AArch64TargetBuiltin<"float (float)">;
- def rint32z : AArch64TargetBuiltin<"double (double)">;
+ def rint32z : AArch64TargetBuiltin<"double (double)">;
def rint64zf : AArch64TargetBuiltin<"float (float)">;
- def rint64z : AArch64TargetBuiltin<"double (double)">;
+ def rint64z : AArch64TargetBuiltin<"double (double)">;
def rint32xf : AArch64TargetBuiltin<"float (float)">;
- def rint32x : AArch64TargetBuiltin<"double (double)">;
+ def rint32x : AArch64TargetBuiltin<"double (double)">;
def rint64xf : AArch64TargetBuiltin<"float (float)">;
- def rint64x : AArch64TargetBuiltin<"double (double)">;
+ def rint64x : AArch64TargetBuiltin<"double (double)">;
}
// Armv8.5-A Random number generation intrinsics
let Attributes = [NoThrow], Features = "rand" in {
- def rndr : AArch64TargetBuiltin<"int (uint64_t *)">;
+ def rndr : AArch64TargetBuiltin<"int (uint64_t *)">;
def rndrrs : AArch64TargetBuiltin<"int (uint64_t *)">;
}
// Armv8.7-A load/store 64-byte intrinsics
let Attributes = [NoThrow], Features = "ls64" in {
- def ld64b : AArch64TargetBuiltin<"void (void const *, uint64_t *)">;
- def st64b : AArch64TargetBuiltin<"void (void *, uint64_t const *)">;
- def st64bv : AArch64TargetBuiltin<"uint64_t (void *, uint64_t const *)">;
+ def ld64b : AArch64TargetBuiltin<"void (void const *, uint64_t *)">;
+ def st64b : AArch64TargetBuiltin<"void (void *, uint64_t const *)">;
+ def st64bv : AArch64TargetBuiltin<"uint64_t (void *, uint64_t const *)">;
def st64bv0 : AArch64TargetBuiltin<"uint64_t (void *, uint64_t const *)">;
}
@@ -179,175 +179,175 @@ let Attributes = [CustomTypeChecking] in {
// Armv9.3-A Guarded Control Stack
let Attributes = [NoThrow], Features = "gcs" in {
def gcspopm : AArch64TargetBuiltin<"uint64_t (uint64_t)">;
- def gcsss : AArch64TargetBuiltin<"void * (void *)">;
+ def gcsss : AArch64TargetBuiltin<"void * (void *)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _BitScanForward : AArch64NoPrefixTargetLibBuiltin<"unsigned char (msuint32_t *, msuint32_t)">;
- def _BitScanReverse : AArch64NoPrefixTargetLibBuiltin<"unsigned char (msuint32_t *, msuint32_t)">;
+ def _BitScanForward : AArch64NoPrefixTargetLibBuiltin<"unsigned char (msuint32_t *, msuint32_t)">;
+ def _BitScanReverse : AArch64NoPrefixTargetLibBuiltin<"unsigned char (msuint32_t *, msuint32_t)">;
def _BitScanForward64 : AArch64NoPrefixTargetLibBuiltin<"unsigned char (msuint32_t *, unsigned long long int)">;
def _BitScanReverse64 : AArch64NoPrefixTargetLibBuiltin<"unsigned char (msuint32_t *, unsigned long long int)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedAdd : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
- def _InterlockedAdd64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
- def _InterlockedAnd64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
- def _InterlockedDecrement64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
- def _InterlockedExchange64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedAdd : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedAdd64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedAnd64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedDecrement64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
+ def _InterlockedExchange64 : AArch6 4NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
def _InterlockedExchangeAdd64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
def _InterlockedExchangeSub64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
- def _InterlockedIncrement64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
- def _InterlockedOr64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
- def _InterlockedXor64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedIncrement64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
+ def _InterlockedOr64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedXor64 : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedAdd_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
- def _InterlockedAdd_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
- def _InterlockedAdd_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedAdd_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedAdd_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedAdd_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
def _InterlockedAdd64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
def _InterlockedAdd64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
- def _InterlockedAdd64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedAdd64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedExchangeAdd_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
- def _InterlockedExchangeAdd_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
- def _InterlockedExchangeAdd_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
- def _InterlockedExchangeAdd8_acq : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
- def _InterlockedExchangeAdd8_rel : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
- def _InterlockedExchangeAdd8_nf : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedExchangeAdd_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedExchangeAdd_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedExchangeAdd_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedExchangeAdd8_acq : AArch64NoPrefi xTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedExchangeAdd8_rel : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedExchangeAdd8_nf : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
def _InterlockedExchangeAdd16_acq : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
def _InterlockedExchangeAdd16_rel : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
- def _InterlockedExchangeAdd16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedExchangeAdd16_nf : AArch64NoPrefixT argetLibBuiltin<"short (short volatile *, short)">;
def _InterlockedExchangeAdd64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
def _InterlockedExchangeAdd64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
- def _InterlockedExchangeAdd64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedExchangeAdd64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedExchange8_acq : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
- def _InterlockedExchange8_nf : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
- def _InterlockedExchange8_rel : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
- def _InterlockedExchange16_acq : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
- def _InterlockedExchange16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
- def _InterlockedExchange16_rel : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
- def _InterlockedExchange_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
- def _InterlockedExchange_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
- def _InterlockedExchange_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
- def _InterlockedExchange64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
- def _InterlockedExchange64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
- def _InterlockedExchange64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedExchange8_acq : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedExchange8_nf : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedExchange8_rel : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedExchange16_acq : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedExchange16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedExchange16_rel : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedExchange_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedExchange_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedExchange_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedExchange64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedExchange64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedExchange64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
def _InterlockedExchangePointer_acq : AArch64NoPrefixTargetLibBuiltin<"void * (void * volatile *, void *)">;
- def _InterlockedExchangePointer_nf : AArch64NoPrefixTargetLibBuiltin<"void * (void * volatile *, void *)">;
+ def _InterlockedExchangePointer_nf : AArch64NoPrefixTargetLibBuiltin<"void * (void * volatile *, void *)">;
def _InterlockedExchangePointer_rel : AArch64NoPrefixTargetLibBuiltin<"void * (void * volatile *, void *)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedCompareExchange8_acq : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char, char)">;
- def _InterlockedCompareExchange8_nf : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char, char)">;
- def _InterlockedCompareExchange8_rel : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char, char)">;
- def _InterlockedCompareExchange16_acq : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short, short)">;
- def _InterlockedCompareExchange16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short, short)">;
- def _InterlockedCompareExchange16_rel : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short, short)">;
- def _InterlockedCompareExchange_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t, msint32_t)">;
- def _InterlockedCompareExchange_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t, msint32_t)">;
- def _InterlockedCompareExchange_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t, msint32_t)">;
- def _InterlockedCompareExchange64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int, long long int)">;
- def _InterlockedCompareExchange64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int, long long int)">;
- def _InterlockedCompareExchange64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int, long long int)">;
+ def _InterlockedCompareExchange8_acq : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char, char)">;
+ def _InterlockedCompareExchange8_nf : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char, char)">;
+ def _InterlockedCompareExchange8_rel : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char, char)">;
+ def _InterlockedCompareExchange16_acq : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short, short)">;
+ def _InterlockedCompareExchange16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short, short)">;
+ def _InterlockedCompareExchange16_rel : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short, short)">;
+ def _InterlockedCompareExchange_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t, msint32_t)">;
+ def _InterlockedCompareExchange_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t, msint32_t)">;
+ def _InterlockedCompareExchange_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t, msint32_t)">;
+ def _InterlockedCompareExchange64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int, long long int)">;
+ def _InterlockedCompareExchange64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int, long long int)">;
+ def _InterlockedCompareExchange64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int, long long int)">;
def _InterlockedCompareExchangePointer_acq : AArch64NoPrefixTargetLibBuiltin<"void * (void * volatile *, void *, void *)">;
def _InterlockedCompareExchangePointer_rel : AArch64NoPrefixTargetLibBuiltin<"void * (void * volatile *, void *, void *)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedCompareExchange128 : AArch64NoPrefixTargetLibBuiltin<"unsigned char (long long int volatile *, long long int, long long int, long long int *)">;
+ def _InterlockedCompareExchange128 : AArch64NoPrefixTargetLibBuiltin<"unsigned char (long long int volatile *, long long int, long long int, long long int *)">;
def _InterlockedCompareExchange128_acq : AArch64NoPrefixTargetLibBuiltin<"unsigned char (long long int volatile *, long long int, long long int, long long int *)">;
def _InterlockedCompareExchange128_nf : AArch64NoPrefixTargetLibBuiltin<"unsigned char (long long int volatile *, long long int, long long int, long long int *)">;
def _InterlockedCompareExchange128_rel : AArch64NoPrefixTargetLibBuiltin<"unsigned char (long long int volatile *, long long int, long long int, long long int *)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedOr8_acq : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
- def _InterlockedOr8_nf : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
- def _InterlockedOr8_rel : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedOr8_acq : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedOr8_nf : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedOr8_rel : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
def _InterlockedOr16_acq : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
- def _InterlockedOr16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedOr16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
def _InterlockedOr16_rel : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
- def _InterlockedOr_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
- def _InterlockedOr_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
- def _InterlockedOr_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedOr_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedOr_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedOr_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
def _InterlockedOr64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
- def _InterlockedOr64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedOr64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
def _InterlockedOr64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedXor8_acq : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
- def _InterlockedXor8_nf : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
- def _InterlockedXor8_rel : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedXor8_acq : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedXor8_nf : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedXor8_rel : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
def _InterlockedXor16_acq : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
- def _InterlockedXor16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedXor16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
def _InterlockedXor16_rel : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
- def _InterlockedXor_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
- def _InterlockedXor_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
- def _InterlockedXor_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedXor_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedXor_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedXor_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
def _InterlockedXor64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
- def _InterlockedXor64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedXor64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
def _InterlockedXor64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _InterlockedAnd8_acq : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
- def _InterlockedAnd8_nf : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
- def _InterlockedAnd8_rel : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedAnd8_acq : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedAnd8_nf : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
+ def _InterlockedAnd8_rel : AArch64NoPrefixTargetLibBuiltin<"char (char volatile *, char)">;
def _InterlockedAnd16_acq : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
- def _InterlockedAnd16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
+ def _InterlockedAnd16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
def _InterlockedAnd16_rel : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *, short)">;
- def _InterlockedAnd_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
- def _InterlockedAnd_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
- def _InterlockedAnd_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedAnd_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedAnd_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
+ def _InterlockedAnd_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *, msint32_t)">;
def _InterlockedAnd64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
- def _InterlockedAnd64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
+ def _InterlockedAnd64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
def _InterlockedAnd64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *, long long int)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
def _InterlockedIncrement16_acq : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *)">;
- def _InterlockedIncrement16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *)">;
+ def _InterlockedIncrement16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *)">;
def _InterlockedIncrement16_rel : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *)">;
- def _InterlockedIncrement_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *)">;
- def _InterlockedIncrement_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *)">;
- def _InterlockedIncrement_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *)">;
+ def _InterlockedIncrement_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *)">;
+ def _InterlockedIncrement_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *)">;
+ def _InterlockedIncrement_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *)">;
def _InterlockedIncrement64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
- def _InterlockedIncrement64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
+ def _InterlockedIncrement64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
def _InterlockedIncrement64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
def _InterlockedDecrement16_acq : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *)">;
- def _InterlockedDecrement16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *)">;
+ def _InterlockedDecrement16_nf : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *)">;
def _InterlockedDecrement16_rel : AArch64NoPrefixTargetLibBuiltin<"short (short volatile *)">;
- def _InterlockedDecrement_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *)">;
- def _InterlockedDecrement_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *)">;
- def _InterlockedDecrement_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *)">;
+ def _InterlockedDecrement_acq : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *)">;
+ def _InterlockedDecrement_nf : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *)">;
+ def _InterlockedDecrement_rel : AArch64NoPrefixTargetLibBuiltin<"msint32_t (msint32_t volatile *)">;
def _InterlockedDecrement64_acq : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
- def _InterlockedDecrement64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
+ def _InterlockedDecrement64_nf : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
def _InterlockedDecrement64_rel : AArch64NoPrefixTargetLibBuiltin<"long long int (long long int volatile *)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _ReadWriteBarrier : AArch64NoPrefixTargetLibBuiltin<"void ()">;
- def __getReg : AArch64NoPrefixTargetLibBuiltin<"unsigned long long int (int)">;
- def _ReadStatusReg : AArch64NoPrefixTargetLibBuiltin<"long long int (int)">;
- def _WriteStatusReg : AArch64NoPrefixTargetLibBuiltin<"void (int, long long int)">;
- def __sys : AArch64NoPrefixTargetLibBuiltin<"unsigned int (int, long long int)">;
+ def _ReadWriteBarrier : AArch64NoPrefixTargetLibBuiltin<"void ()">;
+ def __getReg : AArch64NoPrefixTargetLibBuiltin<"unsigned long long int (int)">;
+ def _ReadStatusReg : AArch64NoPrefixTargetLibBuiltin<"long long int (int)">;
+ def _WriteStatusReg : AArch64NoPrefixTargetLibBuiltin<"void (int, long long int)">;
+ def __sys : AArch64NoPrefixTargetLibBuiltin<"unsigned int (int, long long int)">;
def _AddressOfReturnAddress : AArch64NoPrefixTargetLibBuiltin<"void * ()">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def __mulh : AArch64NoPrefixTargetLibBuiltin<"signed long long int (signed long long int, signed long long int)">;
+ def __mulh : AArch64NoPrefixTargetLibBuiltin<"signed long long int (signed long long int, signed long long int)">;
def __umulh : AArch64NoPrefixTargetLibBuiltin<"unsigned long long int (unsigned long long int, unsigned long long int)">;
}
@@ -356,49 +356,49 @@ let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES",
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def __writex18byte : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, unsigned char)">;
- def __writex18word : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, unsigned short)">;
+ def __writex18byte : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, unsigned char)">;
+ def __writex18word : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, unsigned short)">;
def __writex18dword : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, msuint32_t)">;
def __writex18qword : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, unsigned long long int)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def __readx18byte : AArch64NoPrefixTargetLibBuiltin<"unsigned char (msuint32_t)">;
- def __readx18word : AArch64NoPrefixTargetLibBuiltin<"unsigned short (msuint32_t)">;
+ def __readx18byte : AArch64NoPrefixTargetLibBuiltin<"unsigned char (msuint32_t)">;
+ def __readx18word : AArch64NoPrefixTargetLibBuiltin<"unsigned short (msuint32_t)">;
def __readx18dword : AArch64NoPrefixTargetLibBuiltin<"msuint32_t (msuint32_t)">;
def __readx18qword : AArch64NoPrefixTargetLibBuiltin<"unsigned long long int (msuint32_t)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def __addx18byte : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, unsigned char)">;
- def __addx18word : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, unsigned short)">;
+ def __addx18byte : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, unsigned char)">;
+ def __addx18word : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, unsigned short)">;
def __addx18dword : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, msuint32_t)">;
def __addx18qword : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t, unsigned long long int)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def __incx18byte : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t)">;
- def __incx18word : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t)">;
+ def __incx18byte : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t)">;
+ def __incx18word : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t)">;
def __incx18dword : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t)">;
def __incx18qword : AArch64NoPrefixTargetLibBuiltin<"void (msuint32_t)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
def _CopyDoubleFromInt64 : AArch64NoPrefixTargetLibBuiltin<"double (signed long long int)">;
- def _CopyFloatFromInt32 : AArch64NoPrefixTargetLibBuiltin<"float (signed int)">;
- def _CopyInt32FromFloat : AArch64NoPrefixTargetLibBuiltin<"signed int (float)">;
+ def _CopyFloatFromInt32 : AArch64NoPrefixTargetLibBuiltin<"float (signed int)">;
+ def _CopyInt32FromFloat : AArch64NoPrefixTargetLibBuiltin<"signed int (float)">;
def _CopyInt64FromDouble : AArch64NoPrefixTargetLibBuiltin<"signed long long int (double)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
- def _CountLeadingOnes : AArch64NoPrefixTargetLibBuiltin<"unsigned int (msuint32_t)">;
- def _CountLeadingOnes64 : AArch64NoPrefixTargetLibBuiltin<"unsigned int (unsigned long long int)">;
- def _CountLeadingSigns : AArch64NoPrefixTargetLibBuiltin<"unsigned int (signed msint32_t)">;
+ def _CountLeadingOnes : AArch64NoPrefixTargetLibBuiltin<"unsigned int (msuint32_t)">;
+ def _CountLeadingOnes64 : AArch64NoPrefixTargetLibBuiltin<"unsigned int (unsigned long long int)">;
+ def _CountLeadingSigns : AArch64NoPrefixTargetLibBuiltin<"unsigned int (signed msint32_t)">;
def _CountLeadingSigns64 : AArch64NoPrefixTargetLibBuiltin<"unsigned int (signed long long int)">;
- def _CountLeadingZeros : AArch64NoPrefixTargetLibBuiltin<"unsigned int (msuint32_t)">;
+ def _CountLeadingZeros : AArch64NoPrefixTargetLibBuiltin<"unsigned int (msuint32_t)">;
def _CountLeadingZeros64 : AArch64NoPrefixTargetLibBuiltin<"unsigned int (unsigned long long int)">;
- def _CountOneBits : AArch64NoPrefixTargetLibBuiltin<"unsigned int (msuint32_t)">;
- def _CountOneBits64 : AArch64NoPrefixTargetLibBuiltin<"unsigned int (unsigned long long int)">;
+ def _CountOneBits : AArch64NoPrefixTargetLibBuiltin<"unsigned int (msuint32_t)">;
+ def _CountOneBits64 : AArch64NoPrefixTargetLibBuiltin<"unsigned int (unsigned long long int)">;
}
let Attributes = [NoThrow, RequireDeclaration], Languages = "ALL_MS_LANGUAGES", Header = "intrin.h" in {
More information about the cfe-commits
mailing list