Skip to content

Commit 82d2a08

Browse files
committed
switch builtin mechanisms -- make aarch64 specific
update intrin.h
1 parent 1d663df commit 82d2a08

File tree

3 files changed

+25
-72
lines changed

3 files changed

+25
-72
lines changed

clang/include/clang/Basic/Builtins.td

Lines changed: 0 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -2570,84 +2570,12 @@ def InterlockedBittestAndReset : MSLangBuiltin, MSInt32_64Template {
25702570
let Prototype = "unsigned char(T volatile*, T)";
25712571
}
25722572

2573-
def InterlockedBittestAndReset_acq : MSLangBuiltin {
2574-
let Spellings = ["_interlockedbittestandreset_acq"];
2575-
let Attributes = [NoThrow];
2576-
let Prototype = "unsigned char(msint32_t volatile*, msint32_t)";
2577-
}
2578-
2579-
def InterlockedBittestAndReset_nf : MSLangBuiltin {
2580-
let Spellings = ["_interlockedbittestandreset_nf"];
2581-
let Attributes = [NoThrow];
2582-
let Prototype = "unsigned char(msint32_t volatile*, msint32_t)";
2583-
}
2584-
2585-
def InterlockedBittestAndReset_rel : MSLangBuiltin {
2586-
let Spellings = ["_interlockedbittestandreset_rel"];
2587-
let Attributes = [NoThrow];
2588-
let Prototype = "unsigned char(msint32_t volatile*, msint32_t)";
2589-
}
2590-
2591-
def InterlockedBittestAndReset64_acq : MSLangBuiltin {
2592-
let Spellings = ["_interlockedbittestandreset64_acq"];
2593-
let Attributes = [NoThrow];
2594-
let Prototype = "unsigned char(int64_t volatile*, int64_t)";
2595-
}
2596-
2597-
def InterlockedBittestAndReset64_nf : MSLangBuiltin {
2598-
let Spellings = ["_interlockedbittestandreset64_nf"];
2599-
let Attributes = [NoThrow];
2600-
let Prototype = "unsigned char(int64_t volatile*, int64_t)";
2601-
}
2602-
2603-
def InterlockedBittestAndReset64_rel : MSLangBuiltin {
2604-
let Spellings = ["_interlockedbittestandreset64_rel"];
2605-
let Attributes = [NoThrow];
2606-
let Prototype = "unsigned char(int64_t volatile*, int64_t)";
2607-
}
2608-
26092573
def InterlockedBittestAndSet : MSLangBuiltin, MSInt32_64Template {
26102574
let Spellings = ["_interlockedbittestandset"];
26112575
let Attributes = [NoThrow];
26122576
let Prototype = "unsigned char(T volatile*, T)";
26132577
}
26142578

2615-
def InterlockedBittestAndSet_acq : MSLangBuiltin {
2616-
let Spellings = ["_interlockedbittestandset_acq"];
2617-
let Attributes = [NoThrow];
2618-
let Prototype = "unsigned char(msint32_t volatile*, msint32_t)";
2619-
}
2620-
2621-
def InterlockedBittestAndSet_nf : MSLangBuiltin {
2622-
let Spellings = ["_interlockedbittestandset_nf"];
2623-
let Attributes = [NoThrow];
2624-
let Prototype = "unsigned char(msint32_t volatile*, msint32_t)";
2625-
}
2626-
2627-
def InterlockedBittestAndSet_rel : MSLangBuiltin {
2628-
let Spellings = ["_interlockedbittestandset_rel"];
2629-
let Attributes = [NoThrow];
2630-
let Prototype = "unsigned char(msint32_t volatile*, msint32_t)";
2631-
}
2632-
2633-
def InterlockedBittestAndSet64_acq : MSLangBuiltin {
2634-
let Spellings = ["_interlockedbittestandset64_acq"];
2635-
let Attributes = [NoThrow];
2636-
let Prototype = "unsigned char(int64_t volatile*, int64_t)";
2637-
}
2638-
2639-
def InterlockedBittestAndSet64_nf : MSLangBuiltin {
2640-
let Spellings = ["_interlockedbittestandset64_nf"];
2641-
let Attributes = [NoThrow];
2642-
let Prototype = "unsigned char(int64_t volatile*, int64_t)";
2643-
}
2644-
2645-
def InterlockedBittestAndSet64_rel : MSLangBuiltin {
2646-
let Spellings = ["_interlockedbittestandset64_rel"];
2647-
let Attributes = [NoThrow];
2648-
let Prototype = "unsigned char(int64_t volatile*, int64_t)";
2649-
}
2650-
26512579
def IsoVolatileLoad : MSLangBuiltin, Int8_16_32_64Template {
26522580
let Spellings = ["__iso_volatile_load"];
26532581
let Attributes = [NoThrow];

clang/include/clang/Basic/BuiltinsAArch64.def

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,19 @@ TARGET_HEADER_BUILTIN(_InterlockedDecrement64_acq, "LLiLLiD*", "nh", INTRIN_H, A
263263
TARGET_HEADER_BUILTIN(_InterlockedDecrement64_nf, "LLiLLiD*", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
264264
TARGET_HEADER_BUILTIN(_InterlockedDecrement64_rel, "LLiLLiD*", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
265265

266+
TARGET_HEADER_BUILTIN(_interlockedbittestandreset_acq, "UcNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
267+
TARGET_HEADER_BUILTIN(_interlockedbittestandreset_nf, "UcNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
268+
TARGET_HEADER_BUILTIN(_interlockedbittestandreset_rel, "UcNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
269+
TARGET_HEADER_BUILTIN(_interlockedbittestandreset64_acq, "UcWiD*Wi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
270+
TARGET_HEADER_BUILTIN(_interlockedbittestandreset64_nf, "UcWiD*Wi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
271+
TARGET_HEADER_BUILTIN(_interlockedbittestandreset64_rel, "UcWiD*Wi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
272+
TARGET_HEADER_BUILTIN(_interlockedbittestandset_acq, "UcNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
273+
TARGET_HEADER_BUILTIN(_interlockedbittestandset_nf, "UcNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
274+
TARGET_HEADER_BUILTIN(_interlockedbittestandset_rel, "UcNiD*Ni", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
275+
TARGET_HEADER_BUILTIN(_interlockedbittestandset64_acq, "UcWiD*Wi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
276+
TARGET_HEADER_BUILTIN(_interlockedbittestandset64_nf, "UcWiD*Wi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
277+
TARGET_HEADER_BUILTIN(_interlockedbittestandset64_rel, "UcWiD*Wi", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
278+
266279
TARGET_HEADER_BUILTIN(_ReadWriteBarrier, "v", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
267280
TARGET_HEADER_BUILTIN(__getReg, "ULLii", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")
268281
TARGET_HEADER_BUILTIN(_ReadStatusReg, "LLii", "nh", INTRIN_H, ALL_MS_LANGUAGES, "")

clang/lib/Headers/intrin.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,18 @@ static __inline__ void __DEFAULT_FN_ATTRS __nop(void) {
370370
\*----------------------------------------------------------------------------*/
371371
#if defined(__aarch64__) || defined(__arm64ec__)
372372
unsigned __int64 __getReg(int);
373+
unsigned char _interlockedbittestandreset_acq(long volatile *, long);
374+
unsigned char _interlockedbittestandreset_nf(long volatile *, long);
375+
unsigned char _interlockedbittestandreset_rel(long volatile *, long);
376+
unsigned char _interlockedbittestandreset64_acq(__int64 volatile *, __int64);
377+
unsigned char _interlockedbittestandreset64_nf(__int64 volatile *, __int64);
378+
unsigned char _interlockedbittestandreset64_rel(__int64 volatile *, __int64);
379+
unsigned char _interlockedbittestandset_acq(long volatile *, long);
380+
unsigned char _interlockedbittestandset_nf(long volatile *, long);
381+
unsigned char _interlockedbittestandset_rel(long volatile *, long);
382+
unsigned char _interlockedbittestandset64_acq(__int64 volatile *, __int64);
383+
unsigned char _interlockedbittestandset64_nf(__int64 volatile *, __int64);
384+
unsigned char _interlockedbittestandset64_rel(__int64 volatile *, __int64);
373385
long _InterlockedAdd(long volatile *Addend, long Value);
374386
__int64 _InterlockedAdd64(__int64 volatile *Addend, __int64 Value);
375387
__int64 _ReadStatusReg(int);

0 commit comments

Comments
 (0)