https://github.com/moodytongytong created https://github.com/llvm/llvm-project/pull/179692
- Use updated `.td` file instead of the `.def` file for the AArch64 builtin functions. - The change has been tested via `clang-check` which returns no error nor warnings Signed-off-by: moodytongytong >From 8adb4358a4c9ffb94b3c5b130888986a483ab2b0 Mon Sep 17 00:00:00 2001 From: moodytongytong <[email protected]> Date: Tue, 20 Jan 2026 17:10:21 +0000 Subject: [PATCH 1/4] 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 89fe335f3534254da05ababc2f350b64a754beb2 Mon Sep 17 00:00:00 2001 From: moodytongytong <[email protected]> Date: Tue, 3 Feb 2026 14:43:40 +0000 Subject: [PATCH 2/4] 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 2412b021eb80a..bca89ab26bb6f 100644 --- a/clang/include/clang/Basic/CMakeLists.txt +++ b/clang/include/clang/Basic/CMakeLists.txt @@ -90,6 +90,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 d148705a36289..4cfacc9726be5 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 20e5b6c5f7de045a809f9284b8079f896cc3f447 Mon Sep 17 00:00:00 2001 From: moodytongytong <[email protected]> Date: Wed, 4 Feb 2026 15:16:02 +0000 Subject: [PATCH 3/4] add patches --- clang/include/clang/Basic/BuiltinHeaders.def | 2 +- clang/include/clang/Basic/BuiltinsAArch64.def | 324 ------------------ 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(+), 365 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 5ae5affb51fde..0000000000000 --- a/clang/include/clang/Basic/BuiltinsAArch64.def +++ /dev/null @@ -1,324 +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") - -// 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") - -// 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 f7d3b3e4fe9dc..7c2da25f0b39e 100644 --- a/clang/include/module.modulemap +++ b/clang/include/module.modulemap @@ -40,7 +40,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 4cfacc9726be5..5206fe922e4d9 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 06e84a56473ac449ed4de465df9bbd0a0cd4cba8 Mon Sep 17 00:00:00 2001 From: moodytongytong <[email protected]> Date: Wed, 4 Feb 2026 15:27:57 +0000 Subject: [PATCH 4/4] 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 }; _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
