|
8 | 8 | // option. This file may not be copied, modified, or distributed |
9 | 9 | // except according to those terms. |
10 | 10 |
|
11 | | -#![feature(intrinsics)] |
12 | | - |
13 | | -mod rusti { |
14 | | - extern "rust-intrinsic" { |
15 | | - pub fn ctpop<T>(x: T) -> T; |
16 | | - pub fn ctlz<T>(x: T) -> T; |
17 | | - pub fn ctlz_nonzero<T>(x: T) -> T; |
18 | | - pub fn cttz<T>(x: T) -> T; |
19 | | - pub fn cttz_nonzero<T>(x: T) -> T; |
20 | | - pub fn bswap<T>(x: T) -> T; |
21 | | - } |
22 | | -} |
| 11 | +#![feature(core_intrinsics)] |
| 12 | +use std::intrinsics::*; |
23 | 13 |
|
24 | 14 | pub fn main() { |
25 | 15 | unsafe { |
26 | | - use crate::rusti::*; |
27 | | - |
28 | 16 | assert_eq!(ctpop(0u8), 0); assert_eq!(ctpop(0i8), 0); |
29 | 17 | assert_eq!(ctpop(0u16), 0); assert_eq!(ctpop(0i16), 0); |
30 | 18 | assert_eq!(ctpop(0u32), 0); assert_eq!(ctpop(0i32), 0); |
@@ -138,5 +126,29 @@ pub fn main() { |
138 | 126 | assert_eq!(bswap(0x0ABBCC0Di32), 0x0DCCBB0A); |
139 | 127 | assert_eq!(bswap(0x0122334455667708u64), 0x0877665544332201); |
140 | 128 | assert_eq!(bswap(0x0122334455667708i64), 0x0877665544332201); |
| 129 | + |
| 130 | + assert_eq!(exact_div(9*9u32, 3), 27); |
| 131 | + assert_eq!(exact_div(-9*9i32, 3), -27); |
| 132 | + assert_eq!(exact_div(9*9i8, -3), -27); |
| 133 | + assert_eq!(exact_div(-9*9i64, -3), 27); |
| 134 | + |
| 135 | + assert_eq!(unchecked_div(9*9u32, 2), 40); |
| 136 | + assert_eq!(unchecked_div(-9*9i32, 2), -40); |
| 137 | + assert_eq!(unchecked_div(9*9i8, -2), -40); |
| 138 | + assert_eq!(unchecked_div(-9*9i64, -2), 40); |
| 139 | + |
| 140 | + assert_eq!(unchecked_rem(9*9u32, 2), 1); |
| 141 | + assert_eq!(unchecked_rem(-9*9i32, 2), -1); |
| 142 | + assert_eq!(unchecked_rem(9*9i8, -2), 1); |
| 143 | + assert_eq!(unchecked_rem(-9*9i64, -2), -1); |
| 144 | + |
| 145 | + assert_eq!(unchecked_add(23u8, 19), 42); |
| 146 | + assert_eq!(unchecked_add(5, -10), -5); |
| 147 | + |
| 148 | + assert_eq!(unchecked_sub(23u8, 19), 4); |
| 149 | + assert_eq!(unchecked_sub(-17, -27), 10); |
| 150 | + |
| 151 | + assert_eq!(unchecked_mul(6u8, 7), 42); |
| 152 | + assert_eq!(unchecked_mul(13, -5), -65); |
141 | 153 | } |
142 | 154 | } |
0 commit comments