8321712: C2: "failed: Multiple uses of register" in C2_MacroAssembler::vminmax_fp
Co-authored-by: Volodymyr Paprotski <vpaprotski@openjdk.org> Reviewed-by: kvn, thartmann, epeter, jbhateja
This commit is contained in:
parent
c2e77e2f17
commit
e10d14004f
src/hotspot/cpu/x86
test/hotspot/jtreg/compiler/vectorization/runner
@ -1089,7 +1089,8 @@ void C2_MacroAssembler::vminmax_fp(int opcode, BasicType elem_bt,
|
||||
assert(opcode == Op_MinV || opcode == Op_MinReductionV ||
|
||||
opcode == Op_MaxV || opcode == Op_MaxReductionV, "sanity");
|
||||
assert(elem_bt == T_FLOAT || elem_bt == T_DOUBLE, "sanity");
|
||||
assert_different_registers(a, b, tmp, atmp, btmp);
|
||||
assert_different_registers(a, tmp, atmp, btmp);
|
||||
assert_different_registers(b, tmp, atmp, btmp);
|
||||
|
||||
bool is_min = (opcode == Op_MinV || opcode == Op_MinReductionV);
|
||||
bool is_double_word = is_double_word_type(elem_bt);
|
||||
@ -1176,7 +1177,8 @@ void C2_MacroAssembler::evminmax_fp(int opcode, BasicType elem_bt,
|
||||
assert(opcode == Op_MinV || opcode == Op_MinReductionV ||
|
||||
opcode == Op_MaxV || opcode == Op_MaxReductionV, "sanity");
|
||||
assert(elem_bt == T_FLOAT || elem_bt == T_DOUBLE, "sanity");
|
||||
assert_different_registers(dst, a, b, atmp, btmp);
|
||||
assert_different_registers(dst, a, atmp, btmp);
|
||||
assert_different_registers(dst, b, atmp, btmp);
|
||||
|
||||
bool is_min = (opcode == Op_MinV || opcode == Op_MinReductionV);
|
||||
bool is_double_word = is_double_word_type(elem_bt);
|
||||
|
@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2022, 2023, Arm Limited. All rights reserved.
|
||||
* Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -237,6 +238,17 @@ public class BasicDoubleOpTest extends VectorizationTestRunner {
|
||||
return res;
|
||||
}
|
||||
|
||||
@Test
|
||||
@IR(applyIfCPUFeatureOr = {"asimd", "true", "avx", "true"},
|
||||
counts = {IRNode.MAX_VD, ">0"})
|
||||
public double[] vectorMax_8322090() {
|
||||
double[] res = new double[SIZE];
|
||||
for (int i = 0; i < SIZE; i++) {
|
||||
res[i] = Math.max(d[i], d[i]);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
@Test
|
||||
@IR(applyIfCPUFeatureOr = {"asimd", "true", "avx", "true"},
|
||||
counts = {IRNode.MIN_VD, ">0"})
|
||||
|
Loading…
x
Reference in New Issue
Block a user