@@ -14,8 +14,14 @@ mod x86 {
1414 }
1515
1616 pub fn main ( ) {
17+ assert_eq ! ( adc( 0 , 1 , 1 ) , ( 0 , 2 ) ) ;
1718 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 ) ) ;
1925 }
2026}
2127
@@ -32,8 +38,14 @@ mod x86_64 {
3238 }
3339
3440 pub fn main ( ) {
41+ assert_eq ! ( adc( 0 , 1 , 1 ) , ( 0 , 2 ) ) ;
3542 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 ) ) ;
3749 }
3850}
3951
0 commit comments