@@ -613,7 +613,7 @@ __jcvt(double __a) {
613613#define __arm_wsr64 (sysreg , v ) __builtin_arm_wsr64(sysreg, v)
614614#define __arm_wsrp (sysreg , v ) __builtin_arm_wsrp(sysreg, v)
615615
616- // Memory Tagging Extensions (MTE) Intrinsics
616+ /* Memory Tagging Extensions (MTE) Intrinsics */
617617#if __ARM_FEATURE_MEMORY_TAGGING
618618#define __arm_mte_create_random_tag (__ptr , __mask ) __builtin_arm_irg(__ptr, __mask)
619619#define __arm_mte_increment_tag (__ptr , __tag_offset ) __builtin_arm_addg(__ptr, __tag_offset)
@@ -623,6 +623,28 @@ __jcvt(double __a) {
623623#define __arm_mte_ptrdiff (__ptra , __ptrb ) __builtin_arm_subp(__ptra, __ptrb)
624624#endif
625625
626+ /* Transactional Memory Extension (TME) Intrinsics */
627+ #if __ARM_FEATURE_TME
628+
629+ #define _TMFAILURE_REASON 0x00007fffu
630+ #define _TMFAILURE_RTRY 0x00008000u
631+ #define _TMFAILURE_CNCL 0x00010000u
632+ #define _TMFAILURE_MEM 0x00020000u
633+ #define _TMFAILURE_IMP 0x00040000u
634+ #define _TMFAILURE_ERR 0x00080000u
635+ #define _TMFAILURE_SIZE 0x00100000u
636+ #define _TMFAILURE_NEST 0x00200000u
637+ #define _TMFAILURE_DBG 0x00400000u
638+ #define _TMFAILURE_INT 0x00800000u
639+ #define _TMFAILURE_TRIVIAL 0x01000000u
640+
641+ #define __tstart () __builtin_arm_tstart()
642+ #define __tcommit () __builtin_arm_tcommit()
643+ #define __tcancel (__arg ) __builtin_arm_tcancel(__arg)
644+ #define __ttest () __builtin_arm_ttest()
645+
646+ #endif /* __ARM_FEATURE_TME */
647+
626648#if defined(__cplusplus )
627649 }
628650#endif
0 commit comments