1 /*
   2  * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 /*
  26  * @test
  27  * @bug 6431242
  28  * @run main Test
  29  */
  30 
  31 public class Test{
  32 
  33   int    _len      = 8;
  34   int[]  _arr_i    = new int[_len];
  35   long[] _arr_l    = new long[_len];
  36 
  37   int[]  _arr_i_cp = new int [_len];
  38   long[] _arr_l_cp = new long [_len];
  39 
  40   int _k     = 0x12345678;
  41   int _j     = 0;
  42   int _ir    = 0x78563412;
  43   int _ir1   = 0x78563413;
  44   int _ir2   = 0x79563412;
  45 
  46   long _m    = 0x123456789abcdef0L;
  47   long _l    = 0L;
  48   long _lr   = 0xf0debc9a78563412L;
  49   long _lr1  = 0xf0debc9a78563413L;
  50   long _lr2  = 0xf1debc9a78563412L;
  51 
  52   void init() {
  53     for (int i=0; i<_arr_i.length; i++) {
  54       _arr_i[i] = _k;
  55       _arr_l[i] = _m;
  56     }
  57   }
  58 
  59   public int test_int_reversed(int i) {
  60     return Integer.reverseBytes(i);
  61   }
  62 
  63   public long test_long_reversed(long i) {
  64     return Long.reverseBytes(i);
  65   }
  66 
  67   public void test_copy_ints(int[] dst, int[] src) {
  68     for(int i=0; i<src.length; i++) {
  69       dst[i] = Integer.reverseBytes(src[i]);
  70     }
  71   }
  72 
  73   public void test_copy_ints_reversed(int[] dst, int[] src) {
  74     for (int i=0; i<src.length; i++) {
  75       dst[i] = 1 + Integer.reverseBytes(src[i]);
  76     }
  77   }
  78 
  79   public void test_copy_ints_store_reversed(int[] dst, int[] src) {
  80     for(int i=0; i<src.length; i++) {
  81       dst[i] = Integer.reverseBytes(1 + src[i]);
  82     }
  83   }
  84 
  85   public void test_copy_longs(long[] dst, long[] src) {
  86     for(int i=0; i<src.length; i++) {
  87       dst[i] = Long.reverseBytes(src[i]);
  88     }
  89   }
  90 
  91   public void test_copy_longs_reversed(long[] dst, long[] src) {
  92     for (int i=0; i<src.length; i++) {
  93       dst[i] = 1 + Long.reverseBytes(src[i]);
  94     }
  95   }
  96 
  97   public void test_copy_longs_store_reversed(long[] dst, long[] src) {
  98     for(int i=0; i<src.length; i++) {
  99       dst[i] = Long.reverseBytes(1 + src[i]);
 100     }
 101   }
 102 
 103   public void test() throws Exception {
 104     int up_limit=90000;
 105 
 106 
 107     //test single
 108 
 109     for (int loop=0; loop<up_limit; loop++) {
 110       _j = test_int_reversed(_k);
 111       if (_j != _ir ) {
 112         throw new Exception("Interger.reverseBytes failed " + _j + " iter " + loop);
 113       }
 114       _l = test_long_reversed(_m);
 115       if (_l != _lr ) {
 116         throw new Exception("Long.reverseBytes failed " + _l + " iter " + loop);
 117       }
 118     }
 119 
 120     // test scalar load/store
 121     for (int loop=0; loop<up_limit; loop++) {
 122 
 123       test_copy_ints(_arr_i_cp, _arr_i);
 124       for (int j=0; j< _arr_i.length; j++) {
 125         if (_arr_i_cp[j] != _ir) {
 126           throw new Exception("Interger.reverseBytes failed test_copy_ints iter " + loop);
 127         }
 128       }
 129 
 130       test_copy_ints_reversed(_arr_i_cp, _arr_i);
 131       for (int j=0; j< _arr_i.length; j++) {
 132         if (_arr_i_cp[j] != _ir1) {
 133           throw new Exception("Interger.reverseBytes failed test_copy_ints_reversed iter " + loop);
 134         }
 135       }
 136       test_copy_ints_store_reversed(_arr_i_cp, _arr_i);
 137       for (int j=0; j< _arr_i.length; j++) {
 138         if (_arr_i_cp[j] != _ir2) {
 139           throw new Exception("Interger.reverseBytes failed test_copy_ints_store_reversed iter " + loop);
 140         }
 141       }
 142 
 143       test_copy_longs(_arr_l_cp, _arr_l);
 144       for (int j=0; j< _arr_i.length; j++) {
 145         if (_arr_l_cp[j] != _lr) {
 146           throw new Exception("Long.reverseBytes failed test_copy_longs iter " + loop);
 147         }
 148       }
 149       test_copy_longs_reversed(_arr_l_cp, _arr_l);
 150       for (int j=0; j< _arr_i.length; j++) {
 151         if (_arr_l_cp[j] != _lr1) {
 152           throw new Exception("Long.reverseBytes failed test_copy_longs_reversed iter " + loop);
 153         }
 154       }
 155       test_copy_longs_store_reversed(_arr_l_cp, _arr_l);
 156       for (int j=0; j< _arr_i.length; j++) {
 157         if (_arr_l_cp[j] != _lr2) {
 158           throw new Exception("Long.reverseBytes failed test_copy_longs_store_reversed iter " + loop);
 159         }
 160       }
 161 
 162     }
 163   }
 164 
 165   public static void main(String args[]) {
 166     try {
 167       Test t = new Test();
 168       t.init();
 169       t.test();
 170       System.out.println("Passed");
 171     }catch (Exception e) {
 172       e.printStackTrace();
 173       System.out.println("Failed");
 174     }
 175   }
 176 }