@@ -14,8 +14,14 @@ mod x86 {
14
14
}
15
15
16
16
pub fn main ( ) {
17
+ assert_eq ! ( adc( 0 , 1 , 1 ) , ( 0 , 2 ) ) ;
17
18
assert_eq ! ( adc( 1 , 1 , 1 ) , ( 0 , 3 ) ) ;
18
- assert_eq ! ( adc( 3 , u32 :: MAX , u32 :: MAX ) , ( 2 , 1 ) ) ;
19
+ assert_eq ! ( adc( 2 , 1 , 1 ) , ( 0 , 3 ) ) ; // any non-zero carry acts as 1!
20
+ assert_eq ! ( adc( u8 :: MAX , 1 , 1 ) , ( 0 , 3 ) ) ;
21
+ assert_eq ! ( adc( 0 , u32 :: MAX , u32 :: MAX ) , ( 1 , u32 :: MAX - 1 ) ) ;
22
+ assert_eq ! ( adc( 1 , u32 :: MAX , u32 :: MAX ) , ( 1 , u32 :: MAX ) ) ;
23
+ assert_eq ! ( adc( 2 , u32 :: MAX , u32 :: MAX ) , ( 1 , u32 :: MAX ) ) ;
24
+ assert_eq ! ( adc( u8 :: MAX , u32 :: MAX , u32 :: MAX ) , ( 1 , u32 :: MAX ) ) ;
19
25
}
20
26
}
21
27
@@ -32,8 +38,14 @@ mod x86_64 {
32
38
}
33
39
34
40
pub fn main ( ) {
41
+ assert_eq ! ( adc( 0 , 1 , 1 ) , ( 0 , 2 ) ) ;
35
42
assert_eq ! ( adc( 1 , 1 , 1 ) , ( 0 , 3 ) ) ;
36
- assert_eq ! ( adc( 3 , u64 :: MAX , u64 :: MAX ) , ( 2 , 1 ) ) ;
43
+ assert_eq ! ( adc( 2 , 1 , 1 ) , ( 0 , 3 ) ) ; // any non-zero carry acts as 1!
44
+ assert_eq ! ( adc( u8 :: MAX , 1 , 1 ) , ( 0 , 3 ) ) ;
45
+ assert_eq ! ( adc( 0 , u64 :: MAX , u64 :: MAX ) , ( 1 , u64 :: MAX - 1 ) ) ;
46
+ assert_eq ! ( adc( 1 , u64 :: MAX , u64 :: MAX ) , ( 1 , u64 :: MAX ) ) ;
47
+ assert_eq ! ( adc( 2 , u64 :: MAX , u64 :: MAX ) , ( 1 , u64 :: MAX ) ) ;
48
+ assert_eq ! ( adc( u8 :: MAX , u64 :: MAX , u64 :: MAX ) , ( 1 , u64 :: MAX ) ) ;
37
49
}
38
50
}
39
51
0 commit comments