probinson created this revision. probinson added reviewers: RKSimon, pengfei, goldstein.w.n, craig.topper. Herald added a project: All. probinson requested review of this revision.
https://reviews.llvm.org/D148653 Files: clang/lib/Headers/mwaitxintrin.h clang/lib/Headers/pmmintrin.h Index: clang/lib/Headers/pmmintrin.h =================================================================== --- clang/lib/Headers/pmmintrin.h +++ clang/lib/Headers/pmmintrin.h @@ -253,9 +253,12 @@ /// the processor in the monitor event pending state. Data stored in the /// monitored address range causes the processor to exit the pending state. /// +/// The \c MONITOR instruction can be used in kernel mode, and in other modes +/// if MSR <c> C001_0015h[MonMwaitUserEn] </c> is set. +/// /// \headerfile <x86intrin.h> /// -/// This intrinsic corresponds to the <c> MONITOR </c> instruction. +/// This intrinsic corresponds to the \c MONITOR instruction. /// /// \param __p /// The memory range to be monitored. The size of the range is determined by @@ -270,19 +273,22 @@ __builtin_ia32_monitor(__p, __extensions, __hints); } -/// Used with the MONITOR instruction to wait while the processor is in +/// Used with the \c MONITOR instruction to wait while the processor is in /// the monitor event pending state. Data stored in the monitored address /// range causes the processor to exit the pending state. /// +/// The \c MWAIT instruction can be used in kernel mode, and in other modes if +/// MSR <c> C001_0015h[MonMwaitUserEn] </c> is set. +/// /// \headerfile <x86intrin.h> /// -/// This intrinsic corresponds to the <c> MWAIT </c> instruction. +/// This intrinsic corresponds to the \c MWAIT instruction. /// /// \param __extensions -/// Optional extensions for the monitoring state, which may vary by +/// Optional extensions for the monitoring state, which can vary by /// processor. /// \param __hints -/// Optional hints for the monitoring state, which may vary by processor. +/// Optional hints for the monitoring state, which can vary by processor. static __inline__ void __DEFAULT_FN_ATTRS _mm_mwait(unsigned __extensions, unsigned __hints) { Index: clang/lib/Headers/mwaitxintrin.h =================================================================== --- clang/lib/Headers/mwaitxintrin.h +++ clang/lib/Headers/mwaitxintrin.h @@ -16,12 +16,41 @@ /* Define the default attributes for the functions in this file. */ #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("mwaitx"))) + +/// Establishes a linear address memory range to be monitored and puts +/// the processor in the monitor event pending state. Data stored in the +/// monitored address range causes the processor to exit the pending state. +/// +/// \headerfile <x86intrin.h> +/// +/// This intrinsic corresponds to the \c MONITORX instruction. +/// +/// \param __p +/// The memory range to be monitored. The size of the range is determined by +/// CPUID function 0000_0005h. +/// \param __extensions +/// Optional extensions for the monitoring state. +/// \param __hints +/// Optional hints for the monitoring state. static __inline__ void __DEFAULT_FN_ATTRS _mm_monitorx(void * __p, unsigned __extensions, unsigned __hints) { __builtin_ia32_monitorx(__p, __extensions, __hints); } +/// Used with the \c MONITORX instruction to wait while the processor is in +/// the monitor event pending state. Data stored in the monitored address +/// range causes the processor to exit the pending state. +/// +/// \headerfile <x86intrin.h> +/// +/// This intrinsic corresponds to the \c MWAITX instruction. +/// +/// \param __extensions +/// Optional extensions for the monitoring state, which can vary by +/// processor. +/// \param __hints +/// Optional hints for the monitoring state, which can vary by processor. static __inline__ void __DEFAULT_FN_ATTRS _mm_mwaitx(unsigned __extensions, unsigned __hints, unsigned __clock) {
Index: clang/lib/Headers/pmmintrin.h =================================================================== --- clang/lib/Headers/pmmintrin.h +++ clang/lib/Headers/pmmintrin.h @@ -253,9 +253,12 @@ /// the processor in the monitor event pending state. Data stored in the /// monitored address range causes the processor to exit the pending state. /// +/// The \c MONITOR instruction can be used in kernel mode, and in other modes +/// if MSR <c> C001_0015h[MonMwaitUserEn] </c> is set. +/// /// \headerfile <x86intrin.h> /// -/// This intrinsic corresponds to the <c> MONITOR </c> instruction. +/// This intrinsic corresponds to the \c MONITOR instruction. /// /// \param __p /// The memory range to be monitored. The size of the range is determined by @@ -270,19 +273,22 @@ __builtin_ia32_monitor(__p, __extensions, __hints); } -/// Used with the MONITOR instruction to wait while the processor is in +/// Used with the \c MONITOR instruction to wait while the processor is in /// the monitor event pending state. Data stored in the monitored address /// range causes the processor to exit the pending state. /// +/// The \c MWAIT instruction can be used in kernel mode, and in other modes if +/// MSR <c> C001_0015h[MonMwaitUserEn] </c> is set. +/// /// \headerfile <x86intrin.h> /// -/// This intrinsic corresponds to the <c> MWAIT </c> instruction. +/// This intrinsic corresponds to the \c MWAIT instruction. /// /// \param __extensions -/// Optional extensions for the monitoring state, which may vary by +/// Optional extensions for the monitoring state, which can vary by /// processor. /// \param __hints -/// Optional hints for the monitoring state, which may vary by processor. +/// Optional hints for the monitoring state, which can vary by processor. static __inline__ void __DEFAULT_FN_ATTRS _mm_mwait(unsigned __extensions, unsigned __hints) { Index: clang/lib/Headers/mwaitxintrin.h =================================================================== --- clang/lib/Headers/mwaitxintrin.h +++ clang/lib/Headers/mwaitxintrin.h @@ -16,12 +16,41 @@ /* Define the default attributes for the functions in this file. */ #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("mwaitx"))) + +/// Establishes a linear address memory range to be monitored and puts +/// the processor in the monitor event pending state. Data stored in the +/// monitored address range causes the processor to exit the pending state. +/// +/// \headerfile <x86intrin.h> +/// +/// This intrinsic corresponds to the \c MONITORX instruction. +/// +/// \param __p +/// The memory range to be monitored. The size of the range is determined by +/// CPUID function 0000_0005h. +/// \param __extensions +/// Optional extensions for the monitoring state. +/// \param __hints +/// Optional hints for the monitoring state. static __inline__ void __DEFAULT_FN_ATTRS _mm_monitorx(void * __p, unsigned __extensions, unsigned __hints) { __builtin_ia32_monitorx(__p, __extensions, __hints); } +/// Used with the \c MONITORX instruction to wait while the processor is in +/// the monitor event pending state. Data stored in the monitored address +/// range causes the processor to exit the pending state. +/// +/// \headerfile <x86intrin.h> +/// +/// This intrinsic corresponds to the \c MWAITX instruction. +/// +/// \param __extensions +/// Optional extensions for the monitoring state, which can vary by +/// processor. +/// \param __hints +/// Optional hints for the monitoring state, which can vary by processor. static __inline__ void __DEFAULT_FN_ATTRS _mm_mwaitx(unsigned __extensions, unsigned __hints, unsigned __clock) {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits