kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

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; }