1e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org// Copyright 2014 the V8 project authors. All rights reserved.
2e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org// Use of this source code is governed by a BSD-style license that can be
3e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org// found in the LICENSE file.
4e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org
5e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org// Flags: --allow-natives-syntax --noopt-safe-uint32-operations
6e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org
7e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org// Check the results of `left >>> right`. The result is always unsigned (and
8e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org// therefore positive).
9e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.orgfunction test_shr(left) {
10e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org  var errors = 0;
11e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org
12e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org  for (var i = 1; i < 1024; i++) {
13e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org    var temp = left >>> i;
14e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org    if (temp < 0) {
15e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org      errors++;
16e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org    }
17e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org  }
18e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org
19e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org  return errors;
20e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org}
21e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org
22e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.orgassertEquals(0, test_shr(1));
23e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org%OptimizeFunctionOnNextCall(test_shr);
24e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.orgfor (var i = 5; i >= -5; i--) {
25e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org  assertEquals(0, test_shr(i));
26e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org}
27