.html -- Source
Maybe your like
☰
All crates
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 #[cfg(test)] use stdarch_test::assert_instr; #[allow(improper_ctypes)] extern "unadjusted" { #[link_name = "llvm.x86.addcarry.64"] fn llvm_addcarry_u64(a: u8, b: u64, c: u64) -> (u8, u64); #[link_name = "llvm.x86.addcarryx.u64"] fn llvm_addcarryx_u64(a: u8, b: u64, c: u64, d: *mut u8) -> u8; #[link_name = "llvm.x86.subborrow.64"] fn llvm_subborrow_u64(a: u8, b: u64, c: u64) -> (u8, u64); } /// Adds unsigned 64-bit integers `a` and `b` with unsigned 8-bit carry-in `c_in` /// (carry flag), and store the unsigned 64-bit result in `out`, and the carry-out /// is returned (carry or overflow flag). #[inline] #[cfg_attr(test, assert_instr(adc))] #[stable(feature = "simd_x86_adx", since = "1.33.0")] pub unsafe fn _addcarry_u64(c_in: u8, a: u64, b: u64, out: &mut u64) -> u8 { let (a, b) = llvm_addcarry_u64(c_in, a, b); *out = b; a } /// Adds unsigned 64-bit integers `a` and `b` with unsigned 8-bit carry-in `c_in` /// (carry or overflow flag), and store the unsigned 64-bit result in `out`, and /// the carry-out is returned (carry or overflow flag). #[inline] #[target_feature(enable = "adx")] #[cfg_attr(test, assert_instr(adc))] #[stable(feature = "simd_x86_adx", since = "1.33.0")] pub unsafe fn _addcarryx_u64(c_in: u8, a: u64, b: u64, out: &mut u64) -> u8 { llvm_addcarryx_u64(c_in, a, b, out as *mut _ as *mut u8) } /// Adds unsigned 64-bit integers `a` and `b` with unsigned 8-bit carry-in `c_in`. /// (carry or overflow flag), and store the unsigned 64-bit result in `out`, and /// the carry-out is returned (carry or overflow flag). #[inline] #[cfg_attr(test, assert_instr(sbb))] #[stable(feature = "simd_x86_adx", since = "1.33.0")] pub unsafe fn _subborrow_u64(c_in: u8, a: u64, b: u64, out: &mut u64) -> u8 { let (a, b) = llvm_subborrow_u64(c_in, a, b); *out = b; a } #[cfg(test)] mod tests { use stdarch_test::simd_test; use crate::core_arch::x86_64::*; #[test] fn test_addcarry_u64() { unsafe { let a = u64::max_value(); let mut out = 0; let r = _addcarry_u64(0, a, 1, &mut out); assert_eq!(r, 1); assert_eq!(out, 0); let r = _addcarry_u64(0, a, 0, &mut out); assert_eq!(r, 0); assert_eq!(out, a); let r = _addcarry_u64(1, a, 1, &mut out); assert_eq!(r, 1); assert_eq!(out, 1); let r = _addcarry_u64(1, a, 0, &mut out); assert_eq!(r, 1); assert_eq!(out, 0); let r = _addcarry_u64(0, 3, 4, &mut out); assert_eq!(r, 0); assert_eq!(out, 7); let r = _addcarry_u64(1, 3, 4, &mut out); assert_eq!(r, 0); assert_eq!(out, 8); } } #[simd_test(enable = "adx")] unsafe fn test_addcarryx_u64() { let a = u64::max_value(); let mut out = 0; let r = _addcarry_u64(0, a, 1, &mut out); assert_eq!(r, 1); assert_eq!(out, 0); let r = _addcarry_u64(0, a, 0, &mut out); assert_eq!(r, 0); assert_eq!(out, a); let r = _addcarry_u64(1, a, 1, &mut out); assert_eq!(r, 1); assert_eq!(out, 1); let r = _addcarry_u64(1, a, 0, &mut out); assert_eq!(r, 1); assert_eq!(out, 0); let r = _addcarry_u64(0, 3, 4, &mut out); assert_eq!(r, 0); assert_eq!(out, 7); let r = _addcarry_u64(1, 3, 4, &mut out); assert_eq!(r, 0); assert_eq!(out, 8); } #[test] fn test_subborrow_u64() { unsafe { let a = u64::max_value(); let mut out = 0; let r = _subborrow_u64(0, 0, 1, &mut out); assert_eq!(r, 1); assert_eq!(out, a); let r = _subborrow_u64(0, 0, 0, &mut out); assert_eq!(r, 0); assert_eq!(out, 0); let r = _subborrow_u64(1, 0, 1, &mut out); assert_eq!(r, 1); assert_eq!(out, a - 1); let r = _subborrow_u64(1, 0, 0, &mut out); assert_eq!(r, 1); assert_eq!(out, a); let r = _subborrow_u64(0, 7, 3, &mut out); assert_eq!(r, 0); assert_eq!(out, 4); let r = _subborrow_u64(1, 7, 3, &mut out); assert_eq!(r, 0); assert_eq!(out, 3); } } } Help

Keyboard Shortcuts
?Show this help dialogSFocus the search field↑Move up in search results↓Move down in search results↹Switch tab⏎Go to active search result+Expand all sections-Collapse all sectionsSearch Tricks
Prefix searches with a type followed by a colon (e.g., fn:) to restrict the search to a given type.
Accepted types are: fn, mod, struct, enum, trait, type, macro, and const.
Search functions by type signature (e.g., vec -> usize or * -> vec)
Search multiple things at once by splitting your query with comma (e.g., str,u8 or String,struct:Vec,test)
Tag » _addcarry_u64 C
-
_addcarry_u32(), _addcarry_u64() - Intel
-
Undefined Reference To `_addcarry_u64' - Stack Overflow
-
C++ (Cpp) _addcarry_u64 Exemples - HotExamples
-
X64 (amd64) Intrinsics List - Microsoft Docs
-
6.4 X86_64 Incorrect Code Generation With -O3 Around _addcarry_u64
-
67317 – [x86] Silly Code Generation For _addcarry_u32/_addcarry_u64
-
Error When Compiling · Issue #41 · JeanLucPons/VanitySearch
-
Lib/Headers/adxintrin.h Source File - Clang
-
C - Multi-word Addition Using The Carry Flag - Jonic Developer ...
-
_ Git - BearSSL/blob - Src/int/i62_modpow2.c
-
Compile Issues On M1 Mac - Bytemeta
-
[Bug Target/105617] New: Regression In Code Generation For ...
-
C++ Modules Implementation Seems Incompatible With The Intrinsics ...
-
Jdk-updates/jdk11u-dev: 38732020ac87