! / 0 0 0 0 8 ` // 72 ` cpufeatures-26ba7571a322b621.cpufeatures.fa01787cfb686f3b-cgu.0.rcgu.o/ lib.rmeta/ 0 0 0 644 44304 ` ELF>�«@@GNUÀrust L©#rustc 1.98.1 (48a229cea 2026-09-01)ÁûÊÆÍRLñ.åSÛAúwjL-df1bddb45adbe94bÁ±ò‰<å%Z‰>¸64‡ËV`-2d2ab9fb0fe1def5ÁІ<Á¶†¼�å\˜¶åÜãã $Œã $�ûÛ__unless_target_featuresÁ__detect_target_featuresÁ__xgetbvÁ__expand_check_macroÁ˜ checkÁûàÄéÿÄ“ žDí˜ ÍÏ(£ ü‹øë$ü &ë$# [RustCrypto]: CPU Feature Detection [![crate][crate-image]][crate-link] [![Docs][docs-image]][docs-link] [![Build Status][build-image]][build-link] ![Apache2/MIT licensed][license-image] ![Rust Version][rustc-image] [![Project Chat][chat-image]][chat-link] Lightweight and efficient runtime CPU feature detection for `aarch64`, `loongarch64`, and `x86`/`x86_64` targets. Supports `no_std` as well as mobile targets including iOS and Android, providing an alternative to the `std`-dependent `is_x86_feature_detected!` macro. This crate is intended as a stopgap until Rust [RFC 2725] adding first-class target feature detection macros to `libcore` is implemented. ## Example ```rust #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] pub mod x86_backend { // This macro creates `cpuid_aes_sha` module cpufeatures::new!(cpuid_aes_sha, "aes", "sha"); pub fn run() { // `token` is a Zero Sized Type (ZST) value, which guarantees // that underlying static storage got properly initialized, // which allows to omit initialization branch let token: cpuid_aes_sha::InitToken = cpuid_aes_sha::init(); if token.get() { println!("CPU supports both SHA and AES extensions"); } else { println!("SHA and AES extensions are not supported"); } // If stored value needed only once you can get stored value // omitting the token let val = cpuid_aes_sha::get(); assert_eq!(val, token.get()); // Additionally you can get both token and value let (token, val) = cpuid_aes_sha::init_get(); assert_eq!(val, token.get()); } } ``` Note that if all tested target features are enabled via compiler options (e.g. by using `RUSTFLAGS`), the `get` method will always return `true` and `init` will not use CPUID instruction. Such behavior allows compiler to completely eliminate fallback code. After first call macro caches result and returns it in subsequent calls, thus runtime overhead for them is minimal. ## Supported target architectures *NOTE: target features with an asterisk are unstable (nightly-only) and subject to change to match upstream name changes in the Rust standard library.* ### `aarch64` Linux, iOS, and macOS/ARM only (ARM64 does not support OS-independent feature detection) Target features: - `aes`* - `sha2`* - `sha3`* ### `loongarch64` Linux only (`loongarch64` does not support OS-independent feature detection) Target features: - `32s`* - `f`* - `d`* - `frecipe`* - `div32`* - `lsx`* - `lasx`* - `lam-bh`* - `lamcas`* - `ld-seq-sa`* - `scq`* - `lbt`* - `lvz`* - `ual`* ### `x86`/`x86_64` OS independent and `no_std`-friendly Target features: - `adx` - `aes` - `avx` - `avx2` - `avx512bw`* - `avx512cd`* - `avx512dq`* - `avx512er`* - `avx512f`* - `avx512ifma`* - `avx512pf`* - `avx512vl`* - `avx512vbmi`* - `avx512vbmi2`* - `bmi1` - `bmi2` - `fma` - `mmx` - `pclmulqdq` - `popcnt` - `rdrand` - `rdseed` - `sgx` - `sha` - `sse` - `sse2` - `sse3` - `sse4.1` - `sse4.2` - `ssse3` - `sha512` - `sm3` - `sm4` If you would like detection support for a target feature which is not on this list, please [open a GitHub issue][github-issue]. ## License Licensed under either of: * [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) * [MIT license](http://opensource.org/licenses/MIT) at your option. ### Contribution Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. [//]: # (badges) [crate-image]: https://img.shields.io/crates/v/cpufeatures.svg [crate-link]: https://crates.io/crates/cpufeatures [docs-image]: https://docs.rs/cpufeatures/badge.svg [docs-link]: https://docs.rs/cpufeatures/ [license-image]: https://img.shields.io/badge/license-Apache2.0/MIT-blue.svg [rustc-image]: https://img.shields.io/badge/rustc-1.85+-blue.svg [chat-image]: https://img.shields.io/badge/zulip-join_chat-blue.svg [chat-link]: https://rustcrypto.zulipchat.com/#narrow/stream/260052-utils [build-image]: https://github.com/RustCrypto/utils/actions/workflows/cpufeatures.yml/badge.svg?branch=master [build-link]: https://github.com/RustCrypto/utils/actions/workflows/cpufeatures.yml?query=branch:master [//]: # (general links) [RustCrypto]: https://github.com/RustCrypto [RustCrypto/utils#378]: https://github.com/RustCrypto/utils/issues/378 [RFC 2725]: https://github.com/rust-lang/rfcs/pull/2725 [github-issue]: https://github.com/RustCrypto/utils/issues/new?title=cpufeatures:%20requesting%20support%20for%20CHANGEME%20target%20feature Áü2ÄDhttps://raw.githubusercontent.com/RustCrypto/media/6ee8e381/logo.svgÁ„šË(l>û[àkÿzž‰˜ ˜Ï§ [[[<ñã $°4¯Œ¦¶ÛœÂ¶Ü´×üÁ-ü¸8õüÜ%ü¨MJ Evaluate the given `$body` expression any of the supplied target featuresÁüö,) are not enabled. Otherwise returns true.Á£�ü§MJ The `$body` expression is not evaluated on SGX targets, and returns falseÁüõGD on these targets unless *all* supplied target features are enabled.Á)|½tÍ4Ók ‚ ž ˆ £ , ‰ Š ‘, ‹8tfÁŒ& Ž8ý�$ ’ “*•, ˜8bodyÁ$™& �8²$ž*¥ ¨ › © š+ ³ ´ Û8ìµ ¸ Ú8Æ ¹ ¼ Ù8ª½ À Ø, Á  Ö8ºtà Ñ, Ò8ñ-Ó$ Õ × å Ù+ ó ô ¾8ìõ ø ½8Æ ù ü ¼8Áý € » 8¸T� Œ7sgxÁ,Ž$ “8ÅL• Ÿ7¾ 4¡$ §8ÅL© ³7uefiÁ4µ, Ì8¬.$Í+ ÷ ø ½8ìù ü ¼8Áý € » 8¸T� Œ7Œ1,Ž$ “8ÅL• Ÿ7¾ 4¡$ §8ÅL© ³7Ù14µ8 ,Ë+ ä å ‡8ìæ é †8ªê í …, î ï ƒ8ºtð þ, ÿ8ñ-€$ ‚ „8 $‘% œü† %ü¡EB Use CPUID to detect the presence of all supplied target features.Á)|çt÷4ýz ¬  ‹ ²  ¾ , ³  ´  » , µ 8ñ-¶ & ¸ 8ý¹ $ ¼  ½ *À  à  ˆ Ä  ‡.+ Î  Ï  è 8ìÐ  Ó  ç 8¶\Ô  à 7Û,â 8#ò 8û$ö 'ú 8archÁ$ü '€ 8Û‚ '…  ‡  « 8__cpuidÁ<ˆ $ � 8 __cpuid_countÁl‘ $ ž 8 CpuidResultÁ\  % ¬ + ¶  ·  Ó 8ì¸  »  Ò 8¶\¼  È 7ÜDÊ 8#Ý 8û$á 'å 8­7$ç 'ë 8Ü4í 'ó  õ  ™ 8â7<ö $ ý 8û7lÿ $ Œ 8š8\Ž % š 8"4¥ 8 ¬ 8cpuidÁ,¯  ´  ¾ 8leafÁ$µ & ¹ 8¥» (À 8š8\à  Ï  ó 8â7<Ý  ä  é 8µ:$å 8"4þ 8 … 8 cpuid_countÁ\ˆ  “  ¬ 8µ:$” & ˜ 8¥š $ � 8sub_leafÁDŸ & § 8¥© (® 8š8\±  ½  ñ 8û7lË  Ø  ç 8µ:$Ù $ Ý 8ó;Dß 8ü 8�€  ƒ 8"4…  Œ  Ó  š  É 8˜:,›     ¢ 7ô ¡ $ £ 8¬;\¥  °  µ 7ú ± $ ² 7ó ´ $ ¶ 8¬;\¸  à  È 7ú Ä $ Å 7ô Ç % Ô , ß  à  û , á 8,â 'ç 8Ï,é  î  ï  ÷ 8�ð $ ò , ô 8ñ-õ  ù  ü 8 $þ % ‰¬àüŽ2/ Check that OS supports required SIMD registersÁ)|ÁtÑ4׉ ö â ü ‘ , ý8�þ& €8²$�$ …, ‡8maskÁ$ˆ& Œ8²$�*“ – ß — Þ/+ ¡ ¢ »8ì£ ¦ º8¶\§ ³7Û,µ8#Å8û$É'Í8­7$Ï'Ó8ÛÕ8Ù8­7$Ü% à+ ê ë ‡8ìì ï †8¶\ð ü7ÜDþ8#‘8û$•'™8­7$›'Ÿ8Ü4¡8¨8­7$«% ¯8Ú8xmaskÁ,Þ ä70b11Á$æë726Áî% ð8ú8xsaveÁ,þ „, †8�‡ ‰ ‹7ó Š Œ8ecxÁ� ‘8žD,“™8žD,œ% ¡8«8ëD,® ´ µ 8Â8xcr0Á$Æ Ë8"4Í Ô †8­7$Ö'Ú8_xgetbvÁ<Ü ã „8­7$ä'è8_XCR_XFEATURE_ENABLED_MASKÁÔê% ‡ • ¢8™F$– ›, �8”A$ž¤, §8”A$¨8$· ¼ Ø8 ,Ê% àüå!¤ò ‡ Ý � Ø, Ž � Ï � Î , ‘8‚ $’& –8ý—$ ™, ›8reg_capÁ<œ& £8ý¤, § ¨ Ì$ ©, «8Ÿ ¬& ­8²$®$ ², ´8© µ& ¸8Ý,¹$ ¾, À8Ñ 4Á& Ç8²$È Í$ Ð Ñ, Ó Ô Ö$ Õ- ×*Ú Ý Ú+ ç è õ8ödé+ ÿ € Œ8å� „ ‹8É4…8?\– ¡8Ï,£ © Ô, · ¸ É Ê Ú, Ë8�Ì& Î8²$Ï$ Ó, Õ8‚ $Ö*Ü ß º à ¹ 8‡8œI<‹ “8,•, ›8œI<œ ¤ �7xmmÁ,ß*å, è8,é'î8žDð ø ù ƒ, ú8�û$ ý70b10Á$ÿ$ „7ymmÁ,Æ*Ì, Ï8,Ð'Õ8žD× ß à ë, á8�â$ ä70b110Á,æ$ ì7zmmÁ,¸*¾, Á8,Â'Ç8žDÉ Ñ Ò ã, Ó8�Ô$ Ö7 0b1110_0110Á\Ø$ ä8 þ*€8 $ƒ$ ‡% ž8œI<´, Ð Ñ ¦ ë í � , î8�ï ñ ô, ò8Ÿ ó õ, ö8© ÷ û ý Š7ô þ€, ƒ8Ñ 4„Œ7ó � §% » Ê% Û„Àüý2/ Create module with CPU feature detection code.Á)|°˜ Ñ Š × ú , Ø8mod_nameÁDÙ& á8Ý,â$ ç, é ê ñ, ë8ñ-ì& î8ýï$ ò ó, õ ö ø$ ÷- ù*ü ÿ ‡8‰, �8ÙSDŽ — �F8#¥8û$©'­8±$¯'³8ƒ4µ'» ½ Ù8AtomicU8ÁD¾$ Æ8²DÈ'Ð8Ï<Ò% Ú8,é8UNINITÁ4ï& õ8™÷ ú8™ü'þ8MAXÁ€% ƒ84‘8STORAGEÁ<˜& Ÿ8÷UD¡ ª8÷UD¬'´8˜ ¶ ¹ À8¿V4º% Á< Initialization tokenÁÄÐ+ õ ö ‘ 8É4÷ ý � 8o$þ$ ‚ 8e,„ $ ‰ 8q,‹ 8Ÿ 84£ 8 InitTokenÁLª  ³ ¶  ´ µ % · 8$Æ 8ŽYLË  Õ ˜<4 Initialize token, performing CPU feature detection.Áüç 78¯ 8 ³ 8initÁ$¶  º » (½ 8$À  Å ò 8ºZ$Û  ß à <M Initialize token and return a `bool` indicating if the feature is supported.Áü… P8æ 8 ê 8init_getÁDí  õ ö (ø  û † 8$ü $ € 8Â$‚  ˆ ¹ 8ú[Dž  ¦ § < Get initialized value.ÁÔÌ + ÷  ø ‡ 8þ4ù  ÿ † 8¸4€ 8™ 8 � 8getÁ   £ ©  ¤ 8$¥ (« 8Â$®  ³ Š, É 8,Ê 'Ï 8àÄÑ  é  ë ø, … † Š, ‡8ñ-ˆ$ ‹ Œ*Ž ‘ â8šW<¯ ¶8Ó$· » Ã8Ï<¼Å7ô È<+ Get stored value and initialization token,Áü§.<+ initializing underlying storage if needed.Áüâ.+ � ž ¥8þ4Ÿ8³8 ·8ú[Dº  Ã(Å È Ø8ŽYLÉ$ Ò8Â$Ô Ú ƒ 8ì8resÁð ô, ö8,÷'ü8àÄþ – ˜ Î, ® ¯ ³, °8ñ-±$ ´ µ*· º ¼+ Ô Õ Ú8§$Ö8 ô8 init_innerÁT÷ � ‚(„8Â$‡ Œ Ø8ª8òa® ², ´8,µ'º8ÿļ Ô Õ Þ, Ö × Û, Ø8ñ-Ù$ Ü Ý% ß8šW<ý „8‘,… Š �8òa‹8�8™’$ ”8Ï<–% ž8òa¼8Ò8ŽÖ Ú8šW<Ü ã8Ó$ä è ð8Ï<é% ñ8Œ8Ž�“8¿V4– � à8¯cT» Å Æ8$â ç ¦8Ž…‰7ô Œ% Ï â õ8ŽYLã ì ï í î$ ð8òaò<F Initialize underlying storage if needed and get initialization token.Áü’I+ è é ð8þ4ê8þ8 ‚8ºZ$… ‰ Š(Œ8ŽYL� ™ Ä8ú[D« ³ ´ µ7ó ¶<> Initialize underlying storage if needed and get stored value.ÁüÓA+ ¡ ¢ ©8þ4£8·8 »8Ý]¾ Á Â(Ä8Â$Ç Ì ÷8ú[DÞ æ ç è7ô é% ˆ�–)xçpÿ0…§©Ô˜ÊÚ,Ë8�Ì&Î8² Ï$Ó7sse3Á4ý*Üߺ๠8‡8œI8‹“8(•7�…¤�7äM(ß*å80è'î8ž@ð øùƒ,ú8�û$ý7ÊN ÿ$„7áN(Æ*Ì80Ï'Õ8ž@× ßàë,á8�â$ä7ÇO(æ$ì7ßO(¸*¾80Á'Ç8ž@É ÑÒã,Ó8�Ô$Ö7ÅPXØ$ä8þ*€8 ƒ$‡%ž8œI8´ëí� ,î8�ïñôò7ó ‰ õ9´EŒ öûýŠ7ôþ€8ƒ7ó ‘Œ7ó�%»=;,98�7&58²3$17 pclmulqdqÁ\š*420., 8*8œI(&8$7�§" 7äM*8'8ž ,8� $ 7ÊN$7áN*8'þ8žü úøö,ô8�ò$ð7ÇOî$ì7ßOê*è8æ'ä8žâ àÞÜ,Ú8�Ø$Ö7ÅPÔ$Ò8Ð*Î8 Ì$Ê%È8œIÆÄÂÀ ,¾8�¼º¸¶¹7ó « µ9´E®³±¯­7ô«©§ª7ô ³¦7ó¤%¢ÝÛ,Ù8�×&Õ8²Ó$Ñ7ssse3Á<¼*ÐÎÌÊÈ 8Æ8œIÄÂ8À7�ž¼7äMº*¸8¶'´8ž² °®¬,ª8�¨$¦7ÊN¤$¢7áN *ž8œ'š8ž˜ –”’,�8�Ž$Œ7ÇOŠ$ˆ7ßO†*„8‚'€8ž~ |zx,v8�t$r7ÅPp$n8l*j8 h$f%d8œIb`^\ ,Z8�XVTRU7ó É Q9´EÌOMKI7ôGECF7ü ÑB7ó@%>yw,u8�s&q8²o$m7fmaÁ,Ú*jhfdb 8`8œI^\8Z7áN,áXV7äMT*R8P'N8žL JHF,D8�B$@7ÊN>$<7áN:*886'48ž2 0.,,*8�($&7ÇO$$"7ßO *8'8ž ,8�$ 7ÅP $8*8 $%þ8œIüúøö ,ô8�òðîìï7ó è ë9´Eëéçåã7ôáßÝà712ÁðÞ7óܧ¥£ ,¡8�Ÿ�›™œ7ó ô ˜9´E÷–”’�7ôŽŒŠ�728Áü‹7ó‰%‡ À ,¾ 8�¼ &º 8²¸ $¶ 7sse4.1ÁD†*¶ ´ ² ° ®  8¬ 8œIª ¨ 8¦ 7��¤ ¢ 7äM  *ž 8œ 'š 8ž˜ – ” ’ ,� 8�Ž $Œ 7ÊNŠ $ˆ 7áN† *„ 8‚ '€ 8ž~ | z x ,v 8�t $r 7ÇOp $n 7ßOl *j 8h 'f 8žd b ` ^ ,\ 8�Z $X 7ÅPV $T 8R *P 8 N $L %J 8œIH F D B  ,@ 8�> < : 8 ; 7ó ” 7 9´E—5 3 1 / 7ô- + ) , 719Áœ* 7ó( %& a_,]8�[&Y8²W$U7sse4.2ÁD¦*USQOM 8K8œIIG8E7�°CA7äM?*=8;'98ž7 531,/8�-$+7ÊN)$'7áN%*#8!'8ž ,8�$7ÇO$ 7ßO * 8'8ž ÿ ý ,û 8�ù $÷ 7ÅPõ $ó 8ñ *ï 8 í $ë %é 8œIç å ã á  ,ß 8�Ý Û Ù × Ú 7ó ´ Ö 9´E·Ô Ò Ð Î 7ôÌ Ê È Ë 720Á¼É 7óÇ %Å þ,ü8�ú&ø8²ö$ô7popcntÁDÆ*ôòðîì 8ê8œIèæ8ä7�Ðâà7äMÞ*Ü8Ú'Ø8žÖ ÔÒÐ,Î8�Ì$Ê7ÊNÈ$Æ7áNÄ*Â8À'¾8ž¼ º¸¶,´8�²$°7ÇO®$¬7ßOª*¨8¦'¤8ž¢  žœ,š8�˜$–7ÅP”$’8�*Ž8 Œ$Š%ˆ8œI†„‚€ ,~8�|zxvy7ó Ô u9´E×sqom7ôkigj723ÁÜh7óf%dŸ�,›8�™&—8²•$“7£,æ*�‹‰‡… 8ƒ8œI�8}7�í{y7äMw*u8s'q8žo mki,g8�e$c7ÊNa$_7áN]*[8Y'W8žU SQO,M8�K$I7ÇOG$E7ßOC*A8?'=8ž; 975,38�1$/7ÅP-$+8)*'8 %$#%!8œI ,8�7ó ñ 9´Eô  7ô725Áù7óÿ%ý86,48�2&08².$,7¦,ƒ*&$"  88œI87áN,Š7äM*8 ' 8ž ,8�þ$ü7ÊNú$ø7áNö*ô8ò'ð8žî ìêè,æ8�ä$â7ÇOà$Þ7ßOÜ*Ú8Ø'Ö8žÔ ÒÐÎ,Ì8�Ê$È7ÅPÆ$Ä8Â*À8 ¾$¼%º8œI¸¶´² ,°8�®¬ª¨«7ó ‘ §9´E”¥£¡Ÿ7ô�›™œ7¼ƒ™™7ó—%•ÐÎ,Ì8�Ê&È8²Æ$Ä7rdrandÁD£*ÄÂÀ¾¼ 8º8œI¸¶8´7�­²°7äM®*¬8ª'¨8ž¦ ¤¢ ,ž8�œ$š7ÊN˜$–7áN”*’8�'Ž8žŒ Šˆ†,„8�‚$€7ÇO~$|7ßOz*x8v't8žr pnl,j8�h$f7ÅPd$b8`*^8 \$Z%X8œIVTRP ,N8�LJHFI7ó ± E9´E´CA?=7ô;97:730Á¹87ó6%4om,k8�i&g8²e$c7mmxÁ,Ä*`^\ZX 8V8œITR8P7�ËNL7äMJ*H8F'D8žB @><,:8�8$67ÊN4$27áN0*.8,'*8ž( &$", 8�$7ÇO$7ßO*8'8ž   ,8�$7ÅP$þ8ü*ú8 ø$ö%ô8œIòðîì ,ê8�èæäâå7ó Ï á9edxÁÒâàÞÜ7ôÚØÖÙ7™“×Ö7óÔ%Ò  , 8�&8²$7ý,á*ûù÷õó 8ñ8œIïí8ë7�èéç7äMå*ã8á'ß8žÝ ÛÙ×,Õ8�Ó$Ñ7ÊNÏ$Í7áNË*É8Ç'Å8žÃ Á¿½,»8�¹$·7ÇOµ$³7ßO±*¯8­'«8ž© §¥£,¡8�Ÿ$�7ÅP›$™8—*•8 “$‘%�8œI�‹‰‡ ,…8�ƒ�}€7ó ì |9ħï{ywu7ôsqor7²˜ôo7óm%k¦ ¤ ,¢ 8�  &ž 8²œ $š 7þ4þ*” ’ � Ž Œ  8Š 8œIˆ † 8„ 7�†‚ € 7äM~ *| 8z 'x 8žv t r p ,n 8�l $j 7ÊNh $f 7áNd *b 8` '^ 8ž\ Z X V ,T 8�R $P 7ÇON $L 7ßOJ *H 8F 'D 8žB @ > < ,: 8�8 $6 7ÅP4 $2 80 *. 8 , $* %( 8œI& $ "   , 8�     7ó Š  9ħ�    7ô    7ÍD’ 7ó % >#<#,:#8�8#&6#8²4#$2#7Œ1,�*,#*#(#&#$# 8"#8œI ##8#7�¤##7äM#*#8#'#8ž#  # ##,#8�#$#7ÊN#$þ"7áNü"*ú"8ø"'ö"8žô" ò"ð"î",ì"8�ê"$è"7ÇOæ"$ä"7ßOâ"*à"8Þ"'Ü"8žÚ" Ø"Ö"Ô",Ò"8�Ð"$Î"7ÅPÌ"$Ê"8È"*Æ"8 Ä"$Â"%À"8œI¾"¼"º"¸" ,¶"8�´"²"°"®"±"7ô ¨ ­"9ebxÁ«®"¬"ª"¨"7ô¦"¤"¢"¥"7õ °¡"7óŸ"%�"Ø%Ö%,Ô%8�Ò%&Ð%8²Î%$Ì%7bmi1Á4¹*Ê%È%Æ%Ä%Â% 8À%8œI¾%¼%8º%7�Á¸%¶%7äM´%*²%8°%'®%8ž¬% ª%¨%¦%,¤%8�¢%$ %7ÊNž%$œ%7áNš%*˜%8–%'”%8ž’% �%Ž%Œ%,Š%8�ˆ%$†%7ÇO„%$‚%7ßO€%*~%8|%'z%8žx% v%t%r%,p%8�n%$l%7ÅPj%$h%8f%*d%8 b%$`%%^%8œI\%Z%X%V% ,T%8�R%P%N%L%O%7ô Å K%9�·ÈJ%H%F%D%7ôB%@%>%A%7ö Í=%7ó;%%9%t(r(,p(8�n(&l(8²j($h(7bmi2Á4Ö*f(d(b(`(^( 8\(8œIZ(X(8V(7�ÞT(R(7äMP(*N(8L('J(8žH( F(D(B(,@(8�>($<(7ÊN:($8(7áN6(*4(82('0(8ž.( ,(*(((,&(8�$($"(7ÇO ($(7ßO(*(8('(8ž( (((, (8� ($(7ÅP($(8(*(8 þ'$ü'%ú'8œIø'ö'ô'ò' ,ð'8�î'ì'ê'è'ë'7ô â ç'9�·åæ'ä'â'à'7ôÞ'Ü'Ú'Ý'7û êÙ'7ó×'%Õ'++, +8� +&+8²+$+7avx2Á4ó*++þ*ü*ú* 8ø*8œIö*ô*8ò*7áN,ûð*î*7äMì**ê*8è*'æ*8žä* â*à*Þ*,Ü*8�Ú*$Ø*7ÊNÖ*$Ô*7áNÒ**Ð*8Î*'Ì*8žÊ* È*Æ*Ä*,Â*8�À*$¾*7ÇO¼*$º*7ßO¸**¶*8´*'²*8ž°* ®*¬*ª*,¨*8�¦*$¤*7ÅP¢*$ *8ž**œ*8 š*$˜*%–*8œI”*’*�*Ž* ,Œ*8�Š*ˆ*†*„*‡*7ô ‚ ƒ*9�·…‚*€*~*|*7ôz*x*v*y*7ø Šu*7ós*>+<+:+ ,8+8�6+4+2+0+3+7ó � /+9´E�-+++)+'+7ô%+#+!+$+7¼ƒ•!+7ó+%+X.V.,T.8�R.&P.8²N.$L.7ªLŸ*F.D.B.@.>. 8<.8œI:.8.86.7ßO,ª4.2.7äM0.*..8,.'*.8ž(. &.$."., .8�.$.7ÊN.$.7áN.*.8.'.8ž.  . ..,.8�.$.7ÇO.$þ-7ßOü-*ú-8ø-'ö-8žô- ò-ð-î-,ì-8�ê-$è-7ÅPæ-$ä-8â-*à-8 Þ-$Ü-%Ú-8œIØ-Ö-Ô-Ò- ,Ð-8�Î-Ì-Ê-È-Ë-7ô ± Ç-9�·´Æ-Ä-Â-À-7ô¾-¼-º-½-716Á¹»-7ó¹-%·-ò0ð0,î08�ì0&ê08²è0$æ07avx512dqÁTÃ*è0æ0ä0â0à0 8Þ08œIÜ0Ú08Ø07ßO,ÏÖ0Ô07äMÒ0*Ð08Î0'Ì08žÊ0 È0Æ0Ä0,Â08�À0$¾07ÊN¼0$º07áN¸0*¶08´0'²08ž°0 ®0¬0ª0,¨08�¦0$¤07ÇO¢0$ 07ßOž0*œ08š0'˜08ž–0 ”0’0�0,Ž08�Œ0$Š07ÅPˆ0$†08„0*‚08 €0$~0%|08œIz0x0v0t0 ,r08�p0n0l0j0m07ô Ö i09�·Ùh0f0d0b07ô`0^0\0_0717ÁÞ]07ó[0%Y0”3’3,�38�Ž3&Œ38²Š3$ˆ37rdseedÁDè*ˆ3†3„3‚3€3 8~38œI|3z38x37�òv3t37äMr3*p38n3'l38žj3 h3f3d3,b38�`3$^37ÊN\3$Z37áNX3*V38T3'R38žP3 N3L3J3,H38�F3$D37ÇOB3$@37ßO>3*<38:3'838ž63 432303,.38�,3$*37ÅP(3$&38$3*"38  3$3%38œI3333 ,38�33 3 3 37ô ö  39�·ù33337ô3þ2ü2ÿ2718Áþý27óû2%ù26!6,,68�.6&,68²*6$(67adxÁ,ˆ *%6#6!666 868œI66867�� 667äM6* 68 6' 68ž6 666,ÿ58�ý5$û57ÊNù5$÷57áNõ5*ó58ñ5'ï58ží5 ë5é5ç5,å58�ã5$á57ÇOß5$Ý57ßOÛ5*Ù58×5'Õ58žÓ5 Ñ5Ï5Í5,Ë58�É5$Ç57ÅPÅ5$Ã58Á5*¿58 ½5$»5%¹58œI·5µ5³5±5 ,¯58�­5«5©5§5ª57ô “  ¦59�·– ¥5£5¡5Ÿ57ô�5›5™5œ57Ûˆ› ™57ó—5%•56!6,,68�86&@68²L6$T67 avx512ifmaÁd¥ *l6s6x6‚6‡6 8•68œI¡6©68´67ßO,³ Ç6Ì67äMÜ6*ä68ï6'÷68ž7  777,"78�.7$677ÊNC7$K77áNX7*`78k7's78ž7 ‡7Ž7“7,ž78�ª7$²77ÇO¿7$Ç77ßOÔ7*Ü78ç7'ï78žû7 8 88,88�&8$.87ÅP;8$C88N8*V88 `8$^8%\88œIZ8X8V8T8 ,R88�P8N8L8J8M87ô º  I89�·½ H8F8D8B87ô@8>8<8?8721Á =87ó;8%986!6,,68�86&@68²L6$T67avx512pfÁTÌ *l6s6x6‚6‡6 8•68œI¡6©68´67ßO,Ø Ç6Ì67äMÜ6*ä68ï6'÷68ž7  777,"78�.7$677ÊNC7$K77áNX7*`78k7's78ž7 ‡7Ž7“7,ž78�ª7$²77ÇO¿7$Ç77ßOÔ7*Ü78ç7'ï78žû7 8 88,88�&8$.87ÅP;8$C88N8*V88 a8$i8%q88œI}8…8Œ8‘8 ,œ88�¨8¯8´8¾8¾87ô ß  Ü89�·â ì8ô8û897ô99997ÍDç =97óJ9%R96!6,,68�86&@68²L6$T67avx512erÁTñ *l6s6x6‚6‡6 8•68œI¡6©68´67ßO,ý Ç6Ì67äMÜ6*ä68ï6'÷68ž7  777,"78�.7$677ÊNC7$K77áNX7*`78k7's78ž7 ‡7Ž7“7,ž78�ª7$²77ÇO¿7$Ç77ßOÔ7*Ü78ç7'ï78žû7 8 88,88�&8$.87ÅP;8$C88N8*V88 a8$i8%q88œI}8…8Œ8‘8 ,œ88�¨8¯8´8¾8¾87ô „! Ü89�·‡!ì8ô8û897ô9999727ÁŒ!=97óJ9%R96!6,,68�86&@68²L6$T67avx512cdÁT–!*l6s6x6‚6‡6 8•68œI¡6©68´67ßO,¢!Ç6Ì67äMÜ6*ä68ï6'÷68ž7  777,"78�.7$677ÊNC7$K77áNX7*`78k7's78ž7 ‡7Ž7“7,ž78�ª7$²77ÇO¿7$Ç77ßOÔ7*Ü78ç7'ï78žû7 8 88,88�&8$.87ÅP;8$C88N8*V88 a8$i8%q88œI}8…8Œ8‘8 ,œ88�¨8¯8´8¾8¾87ô ©! Ü89�·¬!ì8ô8û897ô99997¼ƒ±!=97óJ9%R96!6,,68�86&@68²L6$T67shaÁ,»!*l6s6x6‚6‡6 8•68œI¡6©68´67�Â!Ç6Ì67äMÜ6*ä68ï6'÷68ž7  777,"78�.7$677ÊNC7$K77áNX7*`78k7's78ž7 ‡7Ž7“7,ž78�ª7$²77ÇO¿7$Ç77ßOÔ7*Ü78ç7'ï78žû7 8 88,88�&8$.87ÅP;8$C88N8*V88 a8$i8%q88œI}8…8Œ8‘8 ,œ88�¨8¯8´8¾8¾87ô Æ! Ü89�·É!ì8ô8û897ô9999729ÁÎ!=97óJ9%R96!6,,68�86&@68²L6$T67©TØ!*l6s6x6‚6‡6 8•68œI¡6©68´67ßO,ä!Ç6Ì67äMÜ6*ä68ï6'÷68ž7  777,"78�.7$677ÊNC7$K77áNX7*`78k7's78ž7 ‡7Ž7“7,ž78�ª7$²77ÇO¿7$Ç77ßOÔ7*Ü78ç7'ï78žû7 8 88,88�&8$.87ÅP;8$C88N8*V88 a8$i8%q88œI}8…8Œ8‘8 ,œ88�¨8¯8´8¾8¾87ô ë! Ü89�·î!ì8ô8û897ô99997é¢ó!=97óJ9%R96!6,,68�86&@68²L6$T67avx512vlÁTý!*l6s6x6‚6‡6 8•68œI¡6©68´67ßO,‰"Ç6Ì67äMÜ6*ä68ï6'÷68ž7  777,"78�.7$677ÊNC7$K77áNX7*`78k7's78ž7 ‡7Ž7“7,ž78�ª7$²77ÇO¿7$Ç77ßOÔ7*Ü78ç7'ï78žû7 8 88,88�&8$.87ÅP;8$C88N8*V88 a8$i8%q88œI}8…8Œ8‘8 ,œ88�¨8¯8´8¾8¾87ô �" Ü89�·“"ì8ô8û897ô9999731Á˜"=97óJ9%R96!6,,68�86&@68²L6$T67 avx512vbmiÁd¢"*l6s6x6‚6‡6 8•68œI¡6©68´67ßO,°"Ç6Ì67äMÜ6*ä68ï6'÷68ž7  777,"78�.7$677ÊNC7$K77áNX7*`78k7's78ž7 ‡7Ž7“7,ž78�ª7$²77ÇO¿7$Ç77ßOÔ7*Ü78ç7'ï78žû7 8 88,88�&8$.87ÅP;8$C88N8*V88 a8$i8%q88œI}8…8Œ8‘8 ,œ88�¨8¯8´8¾8¾87ô ·" Ü89´Eº"ì8ô8û897ô99997ô ¿"=97óJ9%R96!6,,68�86&@68²L6$T67 avx512vbmi2ÁlÈ"*l6s6x6‚6‡6 8•68œI¡6©68´67ßO,×"Ç6Ì67äMÜ6*ä68ï6'÷68ž7  777,"78�.7$677ÊNC7$K77áNX7*`78k7's78ž7 ‡7Ž7“7,ž78�ª7$²77ÇO¿7$Ç77ßOÔ7*Ü78ç7'ï78žû7 8 88,88�&8$.87ÅP;8$C88N8*V88 a8$i8%q88œI}8…8Œ8‘8 ,œ88�¨8¯8´8¾8¾87ô Þ" Ü89´Eá"ì8ô8û897ô99997ù æ"=97óJ9%R96!6,,68�86&@68²L6$T67gfniÁ4ï"*l6s6x6‚6‡6 8•68œI¡6©68´67ßO,÷"Ç6Ì67äMÜ6*ä68ï6'÷68ž7  777,"78�.7$677ÊNC7$K77áNX7*`78k7's78ž7 ‡7Ž7“7,ž78�ª7$²77ÇO¿7$Ç77ßOÔ7*Ü78ç7'ï78žû7 8 88,88�&8$.87ÅP;8$C88N8*V88 a8$i8%q88œI}8…8Œ8‘8 ,œ88�¨8¯8´8¾8¾87ô þ" Ü89´E�#ì8ô8û897ô99997û †#=97óJ9%R96!6,,68�86&@68²L6$T67vaesÁ4�#*l6s6x6‚6‡6 8•68œI¡6©68´67ßO,—#Ç6Ì67äMÜ6*ä68ï6'÷68ž7  777,"78�.7$677ÊNC7$K77áNX7*`78k7's78ž7 ‡7Ž7“7,ž78�ª7$²77ÇO¿7$Ç77ßOÔ7*Ü78ç7'ï78žû7 8 88,88�&8$.87ÅP;8$C88N8*V88 a8$i8%q88œI}8…8Œ8‘8 ,œ88�¨8¯8´8¾8¾87ô ž# Ü89´E¡#ì8ô8û897ô99997ü ¦#=97óJ9%R96!6,,68�86&@68²L6$T67 vpclmulqdqÁd¯#*l6s6x6‚6‡6 8•68œI¡6©68´67ßO,½#Ç6Ì67äMÜ6*ä68ï6'÷68ž7  777,"78�.7$677ÊNC7$K77áNX7*`78k7's78ž7 ‡7Ž7“7,ž78�ª7$²77ÇO¿7$Ç77ßOÔ7*Ü78ç7'ï78žû7 8 88,88�&8$.87ÅP;8$C88N8*V88 a8$i8%q88œI}8…8Œ8‘8 ,œ88�¨8¯8´8¾8¾87ô Ä# Ü89´EÇ#ì8ô8û897ô9999710ÁÌ#=97óJ9%R96!6,,68�86&@68²L6$T67 avx512bitalgÁtÖ#*l6s6x6‚6‡6 8•68œI¡6©68´67ßO,æ#Ç6Ì67äMÜ6*ä68ï6'÷68ž7  777,"78�.7$677ÊNC7$K77áNX7*`78k7's78ž7 ‡7Ž7“7,ž78�ª7$²77ÇO¿7$Ç77ßOÔ7*Ü78ç7'ï78žû7 8 88,88�&8$.87ÅP;8$C88N8*V88 a8$i8%q88œI}8…8Œ8‘8 ,œ88�¨8¯8´8¾8¾87ô í# Ü89´Eð#ì8ô8û897ô99997�‚õ#=97óJ9%R96!6,,68�86&@68²L6$T67avx512vpopcntdqÁŒÿ#*l6s6x6‚6‡6 8•68œI¡6©68´67ßO,’$Ç6Ì67äMÜ6*ä68ï6'÷68ž7  777,"78�.7$677ÊNC7$K77áNX7*`78k7's78ž7 ‡7Ž7“7,ž78�ª7$²77ÇO¿7$Ç77ßOÔ7*Ü78ç7'ï78žû7 8 88,88�&8$.87ÅP;8$C88N8*V88 a8$i8%q88œI}8…8Œ8‘8 ,œ88�¨8¯8´8¾8¾87ô ™$ Ü89´Eœ$ì8ô8û897ô9999714Á¡$=97óJ9%R96!6,,68�86&@68²L6$T67sha512ÁD¬$*l6s6x6‚6‡6 8•68œI¡6©68´67áN,¶$Ç6Ì67äMÜ6*ä68ï6'÷68ž7  777,"78�.7$677ÊNC7$K77áNX7*`78k7's78ž7 ‡7Ž7“7,ž78�ª7$²77ÇO¿7$Ç77ßOÔ7*Ü78ç7'ï78žû7 8 88,88�&8$.87ÅP;8$C88N8*V88 a8$i8%q88œI}8…8Œ8‘8 ,œ88�¨8¯8´8¾8¾87õ ½$ Ü89eaxÁÀ$ì8ô8û897ô99997ó Å$=97óJ9%R96!6,,68�86&@68²L6$T67sm3Á,Î$*l6s6x6‚6‡6 8•68œI¡6©68´67äM,Õ$Ç6Ì67äMÜ6*ä68ï6'÷68ž7  777,"78�.7$677ÊNC7$K77áNX7*`78k7's78ž7 ‡7Ž7“7,ž78�ª7$²77ÇO¿7$Ç77ßOÔ7*Ü78ç7'ï78žû7 8 88,88�&8$.87ÅP;8$C88N8*V88 a8$i8%q88œI}8…8Œ8‘8 ,œ88�¨8¯8´8¾8¾87õ Ü$ Ü89ï«ß$ì8ô8û897ô99997ô ä$=97óJ9%R96!6,,68�86&@68²L6$T67sm4Á,í$*l6s6x6‚6‡6 8•68œI¡6©68´67áN,ô$Ç6Ì67äMÜ6*ä68ï6'÷68ž7  777,"78�.7$677ÊNC7$K77áNX7*`78k7's78ž7 ‡7Ž7“7,ž78�ª7$²77ÇO¿7$Ç77ßOÔ7*Ü78ç7'ï78žû7 8 88,88�&8$.87ÅP;8$C88N8*V88 a8$i8%q88œI}8…8Œ8‘8 ,œ88�¨8¯8´8¾8¾87õ û$ Ü89ï«þ$ì8ô8û897ô99997õ ƒ%=97óJ9%R9NDocsÁhttps://docs.rs/cpufeatures/Á Build StatusÁ"http://opensource.org/licenses/MITÁ.https://github.com/RustCrypto/utils/issues/378Á]https://github.com/RustCrypto/utils/actions/workflows/cpufeatures.yml/badge.svg?branch=masterÁRFC 2725Á+https://github.com/rust-lang/rfcs/pull/2725Áopen a GitHub issueÁ�;https://img.shields.io/badge/license-Apache2.0/MIT-blue.svgÁ1https://img.shields.io/badge/rustc-1.85+-blue.svgÁ$https://crates.io/crates/cpufeaturesÁŠ·“· MIT licenseÁÅ·ì·!https://rustcrypto.zulipchat.com/Á�¹޹�%https://docs.rs/cpufeatures/badge.svgÁhttps://github.com/RustCryptoÁÛ¹ѺŠ·›º*http://www.apache.org/licenses/LICENSE-2.0Á†»Å· Project ChatÁ¢»�¹/https://img.shields.io/crates/v/cpufeatures.svgÁÙ» RustCryptoÁƒ¼ѺÛ¹Apache License, Version 2.0Á½¼†»Yhttps://github.com/RustCrypto/utils/actions/workflows/cpufeatures.yml?query=branch:masterÁø¼¢»5https://img.shields.io/badge/zulip-join_chat-blue.svgÁ•½Ù»Ͻƒ¼|https://github.com/RustCrypto/utils/issues/new?title=cpufeatures:%20requesting%20support%20for%20CHANGEME%20target%20featureÁð½½¼´·œ¾ø¼Ÿ¸†¿•½Ͻ¾¹Ü¿ð½“·´·œ¾ì·Ÿ¸†¿޹¾¹Ü¿�›º;ohû|xú¡4†Õÿ%VÆ,ëø!¯ØÌôcøMˆâÖк?tm§jpý Ó±@oh8xo²Ïë‰å”‰ (›=ÃiE¹r§ ¤é�4“·ÎKޤ5§¹ QMâ)$q)á5¦L++++++¥J»ÅG -$·) 6´þLHÞ$$m)Ü5F¸ÂD )$´) 6£DÇÊÑÕÜû)DK¼ÆH /$¸)6ˆ›­üਠüåù;ohû|xú^Ár˜¥“k@RUÜ ;ohû|xúÈÃìLy8]µôäÅŽñ]©œ;ohû|xúó̪¥�jæ«¢þ¡ú¡¢¢W¢|¢'¢¢l¢›¢G¢€ODHT ·Þ,ëø!¯ØÌô Ó±@oh8xcøMˆâÖкE¹r§ ¤é�o²Ïë‰å”?tm§jpý4“·ÎKޤ5 ;ohû|xú‰ (›=Ãi¡4†Õÿ%VÆz<]@ÿÿJÿÿÿ~}ÿcz<]@ÿÿJÿÿÿ~}ÿcW/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cpufeatures-0.3.1/src/lib.rsÁL/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cpufeatures-0.3.1ÁW/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cpufeatures-0.3.1/src/lib.rsÁ u˜ââ% ty´´«ã ŒŒm '\^ $9  !c3.C(>%*&H(a4+",8&7;;5>" 2S? _9+)!%%V)N# 9/­ 'áŸêÌY t0bk�W/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cpufeatures-0.3.1/src/x86.rsÁL/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cpufeatures-0.3.1ÁW/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cpufeatures-0.3.1/src/x86.rsÁ ‹Ÿ?'.qðÞB¤3+Úõ‰%‰%•.N'N-NH('2 YLLT - F($D'G4 I* = ,3!$%'( 1S$ $V(6[3!?(@2F#? ",  ,$% '%%%%%&' '),"”wÍçúÀ‚üÎáÿõ2-]/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cpufeatures-0.3.1/src/../README.mdÁL/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cpufeatures-0.3.1Á]/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cpufeatures-0.3.1/src/../README.mdÁ 5²"}“Iö °0e€ë$ë$«&$!+')ZGKM= 914FD6EBB E(&96&IH@0B2"PHY M   %     I7 M5PQD?34*MADJmh,G8ŒÔ¹ι üÙ?�uš;dË£v¥J§x86_64-unknown-linux-gnuÁúü‡CCË£“_ 3Ü%çÈu cpufeaturesÁ-26ba7571a322b621Á;ohû|xú—ÒRéÀ   P        µ ÷ rust-end-file.note.gnu.property.shstrtab.strtab.symtab.rmeta@ .€`Ùª&@«X«Y«5lib.rmeta-link/ 0 0 0 644 656 ` ELF>@@GNUÀFcpufeatures-26ba7571a322b621.cpufeatures.fa01787cfb686f3b-cgu.0.rcgu.oÁrust-end-file.note.gnu.property.rmeta-link.shstrtab.strtab.symtab@ €`V2¸*Ð Ñ:/0 0 0 0 644 632 ` ELF>ø@@rustc version 1.98.1 (48a229cea 2026-09-01)0ñÿ.text.comment.note.GNU-stack.strtab.symtabcpufeatures.fa01787cfb686f3b-cgu.0  S@0@-m(p0