/ tests / tests / compiler / examples / ntzloops.adl
ntzloops.adl
 1  
 2  program test.alpha {
 3      // The 'ntzloops' main function.
 4      // From Hacker's Delight 2nd ed. figure 5-23
 5      transition main(public x: u32) -> u8 {
 6          x = !x & x.sub_wrapped(1u32);
 7          let n: u8 = 0u8;
 8          for i:u8 in 0u8..32u8 {
 9              if x != 0u32 {
10                  n += 1u8;
11                  x = x >> 1u8;
12              }
13          }
14          return n;
15      }
16  }