2017-06-05 14:47:39 +00:00
|
|
|
// Copyright 2017 the V8 project authors. All rights reserved.
|
|
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
|
|
// found in the LICENSE file.
|
|
|
|
|
|
|
|
function addBenchmark(name, test) {
|
|
|
|
new BenchmarkSuite(name, [1000],
|
|
|
|
[
|
|
|
|
new Benchmark(name, false, false, 0, test)
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
|
|
|
|
addBenchmark('Smi-Or', orSmi);
|
|
|
|
addBenchmark('Number-Or', orNumber);
|
|
|
|
addBenchmark('Smi-Xor', xorSmi);
|
|
|
|
addBenchmark('Number-Xor', xorNumber);
|
|
|
|
addBenchmark('Smi-And', andSmi);
|
|
|
|
addBenchmark('Number-And', andNumber);
|
|
|
|
addBenchmark('Smi-Constant-Or', orSmiConstant);
|
|
|
|
addBenchmark('Smi-Constant-Xor', xorSmiConstant);
|
|
|
|
addBenchmark('Smi-Constant-And', andSmiConstant);
|
2017-07-17 09:49:47 +00:00
|
|
|
addBenchmark('Smi-ShiftLeft', shiftLeftSmi);
|
|
|
|
addBenchmark('Number-ShiftLeft', shiftLeftNumber);
|
|
|
|
addBenchmark('Smi-ShiftRight', shiftRightSmi);
|
|
|
|
addBenchmark('Number-ShiftRight', shiftRightNumber);
|
|
|
|
addBenchmark('Smi-ShiftRightLogical', shiftRightLogicalSmi);
|
|
|
|
addBenchmark('Number-ShiftRightLogical', shiftRightLogicalNumber);
|
|
|
|
addBenchmark('Smi-Constant-ShiftLeft', shiftLeftSmiConstant);
|
|
|
|
addBenchmark('Smi-Constant-ShiftRight', shiftRightSmiConstant);
|
|
|
|
addBenchmark('Smi-Constant-ShiftRightLogical', shiftRightLogicalSmiConstant);
|
2017-06-05 14:47:39 +00:00
|
|
|
|
|
|
|
|
|
|
|
function bitwiseOr(a, b) {
|
|
|
|
for (var i = 0; i < 1000; ++i) {
|
|
|
|
a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b;
|
|
|
|
a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b;
|
|
|
|
a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b;
|
|
|
|
a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b;
|
|
|
|
a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b;
|
|
|
|
a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b;
|
|
|
|
a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b;
|
|
|
|
a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b;
|
|
|
|
a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b;
|
|
|
|
a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b; a | b;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function bitwiseXor(a, b) {
|
|
|
|
for (var i = 0; i < 1000; ++i) {
|
|
|
|
a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b;
|
|
|
|
a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b;
|
|
|
|
a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b;
|
|
|
|
a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b;
|
|
|
|
a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b;
|
|
|
|
a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b;
|
|
|
|
a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b;
|
|
|
|
a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b;
|
|
|
|
a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b;
|
|
|
|
a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b; a ^ b;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function bitwiseAnd(a, b) {
|
|
|
|
for (var i = 0; i < 1000; ++i) {
|
|
|
|
a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b;
|
|
|
|
a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b;
|
|
|
|
a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b;
|
|
|
|
a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b;
|
|
|
|
a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b;
|
|
|
|
a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b;
|
|
|
|
a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b;
|
|
|
|
a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b;
|
|
|
|
a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b;
|
|
|
|
a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b; a & b;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function shiftLeft(a, b) {
|
|
|
|
for (var i = 0; i < 1000; ++i) {
|
|
|
|
a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b;
|
|
|
|
a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b;
|
|
|
|
a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b;
|
|
|
|
a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b;
|
|
|
|
a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b;
|
|
|
|
a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b;
|
|
|
|
a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b;
|
|
|
|
a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b;
|
|
|
|
a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b;
|
|
|
|
a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b; a << b;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function shiftRight(a, b) {
|
|
|
|
for (var i = 0; i < 1000; ++i) {
|
|
|
|
a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b;
|
|
|
|
a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b;
|
|
|
|
a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b;
|
|
|
|
a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b;
|
|
|
|
a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b;
|
|
|
|
a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b;
|
|
|
|
a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b;
|
|
|
|
a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b;
|
|
|
|
a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b;
|
|
|
|
a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b; a >> b;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function shiftRightLogical(a, b) {
|
|
|
|
for (var i = 0; i < 1000; ++i) {
|
|
|
|
a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b;
|
|
|
|
a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b;
|
|
|
|
a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b;
|
|
|
|
a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b;
|
|
|
|
a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b;
|
|
|
|
a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b;
|
|
|
|
a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b;
|
|
|
|
a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b;
|
|
|
|
a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b;
|
|
|
|
a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b; a >>> b;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function orSmiConstant() {
|
|
|
|
var a = 20;
|
|
|
|
for (var i = 0; i < 1000; ++i) {
|
|
|
|
a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10;
|
|
|
|
a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10;
|
|
|
|
a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10;
|
|
|
|
a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10;
|
|
|
|
a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10;
|
|
|
|
a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10;
|
|
|
|
a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10;
|
|
|
|
a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10;
|
|
|
|
a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10;
|
|
|
|
a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10; a | 10;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function xorSmiConstant() {
|
|
|
|
var a = 20;
|
|
|
|
for (var i = 0; i < 1000; ++i) {
|
|
|
|
a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10;
|
|
|
|
a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10;
|
|
|
|
a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10;
|
|
|
|
a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10;
|
|
|
|
a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10;
|
|
|
|
a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10;
|
|
|
|
a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10;
|
|
|
|
a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10;
|
|
|
|
a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10;
|
|
|
|
a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10; a ^ 10;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function andSmiConstant() {
|
|
|
|
var a = 20;
|
|
|
|
for (var i = 0; i < 1000; ++i) {
|
|
|
|
a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10;
|
|
|
|
a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10;
|
|
|
|
a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10;
|
|
|
|
a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10;
|
|
|
|
a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10;
|
|
|
|
a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10;
|
|
|
|
a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10;
|
|
|
|
a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10;
|
|
|
|
a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10;
|
|
|
|
a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10; a & 10;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function shiftLeftSmiConstant() {
|
|
|
|
var a = 20;
|
|
|
|
for (var i = 0; i < 1000; ++i) {
|
|
|
|
a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10;
|
|
|
|
a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10;
|
|
|
|
a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10;
|
|
|
|
a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10;
|
|
|
|
a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10;
|
|
|
|
a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10;
|
|
|
|
a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10;
|
|
|
|
a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10;
|
|
|
|
a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10;
|
|
|
|
a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10; a << 10;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function shiftRightSmiConstant() {
|
|
|
|
var a = 20;
|
|
|
|
for (var i = 0; i < 1000; ++i) {
|
|
|
|
a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10;
|
|
|
|
a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10;
|
|
|
|
a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10;
|
|
|
|
a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10;
|
|
|
|
a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10;
|
|
|
|
a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10;
|
|
|
|
a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10;
|
|
|
|
a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10;
|
|
|
|
a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10;
|
|
|
|
a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10; a >> 10;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function shiftRightLogicalSmiConstant() {
|
|
|
|
var a = 20;
|
|
|
|
for (var i = 0; i < 1000; ++i) {
|
|
|
|
a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10;
|
|
|
|
a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10;
|
|
|
|
a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10;
|
|
|
|
a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10;
|
|
|
|
a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10;
|
|
|
|
a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10;
|
|
|
|
a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10;
|
|
|
|
a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10;
|
|
|
|
a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10;
|
|
|
|
a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10; a >>> 10;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function orSmi() {
|
|
|
|
bitwiseOr(10, 20);
|
|
|
|
}
|
|
|
|
|
|
|
|
function orNumber() {
|
|
|
|
bitwiseOr(0.33, 0.5);
|
|
|
|
}
|
|
|
|
|
|
|
|
function xorSmi() {
|
|
|
|
bitwiseXor(10, 20);
|
|
|
|
}
|
|
|
|
|
|
|
|
function xorNumber() {
|
|
|
|
bitwiseXor(0.33, 0.5);
|
|
|
|
}
|
|
|
|
|
|
|
|
function andSmi() {
|
|
|
|
bitwiseAnd(10, 20);
|
|
|
|
}
|
|
|
|
|
|
|
|
function andNumber() {
|
|
|
|
bitwiseAnd(0.33, 0.5);
|
|
|
|
}
|
|
|
|
|
|
|
|
function shiftLeftSmi() {
|
|
|
|
shiftLeft(10, 20);
|
|
|
|
}
|
|
|
|
|
|
|
|
function shiftLeftNumber() {
|
|
|
|
shiftLeft(0.333, 0.5);
|
|
|
|
}
|
|
|
|
|
|
|
|
function shiftRightSmi() {
|
|
|
|
shiftRight(10, 20);
|
|
|
|
}
|
|
|
|
|
|
|
|
function shiftRightNumber() {
|
|
|
|
shiftRight(0.333, 0.5);
|
|
|
|
}
|
|
|
|
|
|
|
|
function shiftRightLogicalSmi() {
|
|
|
|
shiftRightLogical(10, 20);
|
|
|
|
}
|
|
|
|
|
|
|
|
function shiftRightLogicalNumber() {
|
|
|
|
shiftRightLogical(0.333, 0.5);
|
|
|
|
}
|