/*
* Copyright 2010 Google, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
/*
* @test
* @bug 6921969
* @summary Tests shorter long multiply sequences when the high 32 bits of long operands are known to be zero on x86_32
* @run main/othervm -Xbatch -XX:-Inline -XX:CompileOnly=.testNormal,.testLeftOptimized,.testRightOptimized,.testOptimized,.testLeftOptimized_LoadUI2L,.testRightOptimized_LoadUI2L,.testOptimized_LoadUI2L TestMultiplyLongHiZero
*/
// This test must run without any command line arguments.
public class TestMultiplyLongHiZero {
private static void check(long leftFactor, long rightFactor, long optimizedProduct, long constantProduct) {
throw new RuntimeException("Not all three products are equal: " +
}
}
try {
} catch (NumberFormatException e) { }
}
return v;
}
check((long) leftFactor,
(long) rightFactor,
}
(long) rightFactor,
}
check((long) leftFactor,
(rightFactor & mask32),
}
(rightFactor & mask32),
}
private static void testLeftOptimized_LoadUI2L(int leftFactor, int rightFactor, long constantProduct, int[] factors) {
(long) rightFactor,
}
private static void testRightOptimized_LoadUI2L(int leftFactor, int rightFactor, long constantProduct, int[] factors) {
check((long) leftFactor,
(rightFactor & mask32),
}
private static void testOptimized_LoadUI2L(int leftFactor, int rightFactor, long constantProduct, int[] factors) {
(rightFactor & mask32),
}
long normalConstantProduct,
long optimizedConstantProduct) {
int[] factors = new int[2];
}
for (int i = 0; i < 100000; ++i) { // Trigger compilation
0xFFFFFFFF80000001L, 0x7FFFFFFE80000001L);
}
}
}