1// Copyright 2015 the V8 project authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// Flags: --allow-natives-syntax 6 7var stdlib = { Math: Math }; 8 9var f = (function Module(stdlib) { 10 "use asm"; 11 12 var clz32 = stdlib.Math.clz32; 13 14 function f(a) { 15 a = a >>> 0; 16 return clz32(a)|0; 17 } 18 19 return f; 20})(stdlib); 21 22assertEquals(32, f(0)); 23assertEquals(32, f(NaN)); 24assertEquals(32, f(undefined)); 25for (var i = 0; i < 32; ++i) { 26 assertEquals(i, f((-1) >>> i)); 27} 28for (var i = -2147483648; i < 2147483648; i += 3999773) { 29 assertEquals(%MathClz32(i), f(i)); 30 assertEquals(%MathClz32(i), %_MathClz32(i >>> 0)); 31} 32