1//! Run-time feature detection on s390x.
23#[doc = r" Check for the presence of a CPU feature at runtime."]
#[doc = r""]
#[doc =
r" When the feature is known to be enabled at compile time (e.g. via `-Ctarget-feature`)"]
#[doc = r" the macro expands to `true`."]
#[stable(feature = "stdarch_s390x_feature_detection", since = "1.93.0")]
#[macro_export]
macro_rules! is_s390x_feature_detected {
("concurrent-functions") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("deflate-conversion") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("enhanced-sort") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("guarded-storage") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("high-word") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("message-security-assist-extension3") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("message-security-assist-extension4") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("message-security-assist-extension5") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("message-security-assist-extension8") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("message-security-assist-extension9") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("message-security-assist-extension12") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("miscellaneous-extensions-2") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("miscellaneous-extensions-3") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("miscellaneous-extensions-4") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("nnp-assist") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("transactional-execution") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("vector") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("vector-enhancements-1") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("vector-enhancements-2") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("vector-enhancements-3") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("vector-packed-decimal") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("vector-packed-decimal-enhancement") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("vector-packed-decimal-enhancement-2") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ("vector-packed-decimal-enhancement-3") =>
{
compile_error!
(concat!
(r#"This macro cannot be used on the current target.
You can prevent it from being used in other architectures by
guarding it behind a cfg("#,
stringify! (target_arch = "s390x"), ")."))
}; ($t : tt,) => { crate :: is_s390x_feature_detected ! ($t); }; ($t : tt)
=>
{
compile_error!
(concat!
(concat! ("unknown ", stringify! (s390x)), concat!
(" target feature: ", $t)))
};
}
#[deny(unexpected_cfgs)]
#[deny(unfulfilled_lint_expectations)]
const _: () =
{
false;
;
false;
;
false;
;
false;
;
false;
;
false;
;
false;
;
false;
;
false;
;
false;
;
false;
;
false;
;
false;
;
false;
;
false;
;
false;
;
false;
;
false;
;
false;
;
false;
;
false;
;
false;
;
false;
;
false;
;
};features! {
4 @TARGET: s390x;
5 @CFG: target_arch = "s390x";
6 @MACRO_NAME: is_s390x_feature_detected;
7 @MACRO_ATTRS:
8/// Check for the presence of a CPU feature at runtime.
9 ///
10 /// When the feature is known to be enabled at compile time (e.g. via `-Ctarget-feature`)
11 /// the macro expands to `true`.
12#[stable(feature = "stdarch_s390x_feature_detection", since = "1.93.0")]
13@FEATURE: #[unstable(feature = "s390x_target_feature", issue = "150259")] concurrent_functions: "concurrent-functions";
14/// s390x concurrent-functions facility
15@FEATURE: #[unstable(feature = "s390x_target_feature", issue = "150259")] deflate_conversion: "deflate-conversion";
16/// s390x deflate-conversion facility
17@FEATURE: #[unstable(feature = "s390x_target_feature", issue = "150259")] enhanced_sort: "enhanced-sort";
18/// s390x enhanced-sort facility
19@FEATURE: #[unstable(feature = "s390x_target_feature", issue = "150259")] guarded_storage: "guarded-storage";
20/// s390x guarded-storage facility
21@FEATURE: #[unstable(feature = "s390x_target_feature", issue = "150259")] high_word: "high-word";
22/// s390x high-word facility
23@FEATURE: #[unstable(feature = "s390x_target_feature", issue = "150259")] message_security_assist_extension3: "message-security-assist-extension3";
24/// s390x message-security-assist-extension3 facility
25@FEATURE: #[unstable(feature = "s390x_target_feature", issue = "150259")] message_security_assist_extension4: "message-security-assist-extension4";
26/// s390x message-security-assist-extension4 facility
27@FEATURE: #[unstable(feature = "s390x_target_feature", issue = "150259")] message_security_assist_extension5: "message-security-assist-extension5";
28/// s390x message-security-assist-extension5 facility
29@FEATURE: #[unstable(feature = "s390x_target_feature", issue = "150259")] message_security_assist_extension8: "message-security-assist-extension8";
30/// s390x message-security-assist-extension8 facility
31@FEATURE: #[unstable(feature = "s390x_target_feature", issue = "150259")] message_security_assist_extension9: "message-security-assist-extension9";
32/// s390x message-security-assist-extension9 facility
33@FEATURE: #[unstable(feature = "s390x_target_feature", issue = "150259")] message_security_assist_extension12: "message-security-assist-extension12";
34/// s390x message-security-assist-extension12 facility
35@FEATURE: #[stable(feature = "s390x_target_feature_vector", since = "1.93.0")] miscellaneous_extensions_2: "miscellaneous-extensions-2";
36/// s390x miscellaneous-extensions-2 facility
37@FEATURE: #[stable(feature = "s390x_target_feature_vector", since = "1.93.0")] miscellaneous_extensions_3: "miscellaneous-extensions-3";
38/// s390x miscellaneous-extensions-3 facility
39@FEATURE: #[stable(feature = "s390x_target_feature_vector", since = "1.93.0")] miscellaneous_extensions_4: "miscellaneous-extensions-4";
40/// s390x miscellaneous-extensions-4 facility
41@FEATURE: #[stable(feature = "s390x_target_feature_vector", since = "1.93.0")] nnp_assist: "nnp-assist";
42/// s390x nnp-assist facility
43@FEATURE: #[unstable(feature = "s390x_target_feature", issue = "150259")] transactional_execution: "transactional-execution";
44/// s390x transactional-execution facility
45@FEATURE: #[stable(feature = "s390x_target_feature_vector", since = "1.93.0")] vector: "vector";
46/// s390x vector facility
47@FEATURE: #[stable(feature = "s390x_target_feature_vector", since = "1.93.0")] vector_enhancements_1: "vector-enhancements-1";
48/// s390x vector-enhancements-1 facility
49@FEATURE: #[stable(feature = "s390x_target_feature_vector", since = "1.93.0")] vector_enhancements_2: "vector-enhancements-2";
50/// s390x vector-enhancements-2 facility
51@FEATURE: #[stable(feature = "s390x_target_feature_vector", since = "1.93.0")] vector_enhancements_3: "vector-enhancements-3";
52/// s390x vector-enhancements-3 facility
53@FEATURE: #[stable(feature = "s390x_target_feature_vector", since = "1.93.0")] vector_packed_decimal: "vector-packed-decimal";
54/// s390x vector-packed-decimal facility
55@FEATURE: #[stable(feature = "s390x_target_feature_vector", since = "1.93.0")] vector_packed_decimal_enhancement: "vector-packed-decimal-enhancement";
56/// s390x vector-packed-decimal-enhancement facility
57@FEATURE: #[stable(feature = "s390x_target_feature_vector", since = "1.93.0")] vector_packed_decimal_enhancement_2: "vector-packed-decimal-enhancement-2";
58/// s390x vector-packed-decimal-enhancement-2 facility
59@FEATURE: #[stable(feature = "s390x_target_feature_vector", since = "1.93.0")] vector_packed_decimal_enhancement_3: "vector-packed-decimal-enhancement-3";
60/// s390x vector-packed-decimal-enhancement-3 facility
61}