132_intrinsic_bit_and_overflow.toy (1015B)
1 fn __user_main(): i64 { 2 let clz_one: i32 = @clz(1 as i32); 3 let ctz_eight: i32 = @ctz(8 as i32); 4 let pop_seven: i32 = @popcount(7 as i32); 5 let bs32: i32 = @bswap(287454020 as i32); 6 let bs32_round: i32 = @bswap(bs32); 7 let hint: i32 = @expect(7 as i32, 7 as i32); 8 9 let smul = @mul_overflow<i32>(2 as i32, 3 as i32); 10 let smul_big = @mul_overflow<i32>(1000000 as i32, 1000000 as i32); 11 let sadd = @add_overflow<i32>(40 as i32, 2 as i32); 12 let ssub = @sub_overflow<i32>(10 as i32, 7 as i32); 13 14 if clz_one != (31 as i32) { return 1; } 15 if ctz_eight != (3 as i32) { return 2; } 16 if pop_seven != (3 as i32) { return 3; } 17 if bs32_round != (287454020 as i32) { return 4; } 18 if hint != (7 as i32) { return 5; } 19 if (smul.value != (6 as i32)) or smul.overflow { return 6; } 20 if !smul_big.overflow { return 7; } 21 if (sadd.value != (42 as i32)) or sadd.overflow { return 8; } 22 if (ssub.value != (3 as i32)) or ssub.overflow { return 9; } 23 return 42; 24 } 25 26 fn main(): i32 { return __user_main() as i32; }