8280457: Duplicate implementation of dprecision_rounding and dstore_rounding

Reviewed-by: vlivanov, shade
This commit is contained in:
Jie Fu 2022-01-24 10:52:15 +00:00
parent d1569111d7
commit 0567a84d49
4 changed files with 11 additions and 28 deletions

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2018, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -96,7 +96,7 @@ Node* BarrierSetC2::store_at_resolved(C2Access& access, C2AccessValue& val) cons
GraphKit* kit = parse_access.kit(); GraphKit* kit = parse_access.kit();
if (access.type() == T_DOUBLE) { if (access.type() == T_DOUBLE) {
Node* new_val = kit->dstore_rounding(val.node()); Node* new_val = kit->dprecision_rounding(val.node());
val.set_node(new_val); val.set_node(new_val);
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2001, 2021, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2001, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -2350,9 +2350,9 @@ void GraphKit::round_double_arguments(ciMethod* dest_method) {
const Type *targ = tf->domain()->field_at(j + TypeFunc::Parms); const Type *targ = tf->domain()->field_at(j + TypeFunc::Parms);
if (targ->basic_type() == T_DOUBLE) { if (targ->basic_type() == T_DOUBLE) {
// If any parameters are doubles, they must be rounded before // If any parameters are doubles, they must be rounded before
// the call, dstore_rounding does gvn.transform // the call, dprecision_rounding does gvn.transform
Node *arg = argument(j); Node *arg = argument(j);
arg = dstore_rounding(arg); arg = dprecision_rounding(arg);
set_argument(j, arg); set_argument(j, arg);
} }
} }
@ -2387,20 +2387,6 @@ Node* GraphKit::dprecision_rounding(Node *n) {
return n; return n;
} }
// rounding for non-strict double stores
Node* GraphKit::dstore_rounding(Node* n) {
if (Matcher::strict_fp_requires_explicit_rounding) {
#ifdef IA32
if (UseSSE < 2) {
return _gvn.transform(new RoundDoubleNode(0, n));
}
#else
Unimplemented();
#endif // IA32
}
return n;
}
//============================================================================= //=============================================================================
// Generate a fast path/slow path idiom. Graph looks like: // Generate a fast path/slow path idiom. Graph looks like:
// [foo] indicates that 'foo' is a parameter // [foo] indicates that 'foo' is a parameter

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2001, 2021, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2001, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -790,9 +790,6 @@ class GraphKit : public Phase {
// rounding for strict double precision conformance // rounding for strict double precision conformance
Node* dprecision_rounding(Node* n); Node* dprecision_rounding(Node* n);
// rounding for non-strict double stores
Node* dstore_rounding(Node* n);
// Helper functions for fast/slow path codes // Helper functions for fast/slow path codes
Node* opt_iff(Node* region, Node* iff); Node* opt_iff(Node* region, Node* iff);
Node* make_runtime_call(int flags, Node* make_runtime_call(int flags,

View File

@ -2004,19 +2004,19 @@ void Parse::do_one_bytecode() {
// double stores // double stores
case Bytecodes::_dstore_0: case Bytecodes::_dstore_0:
set_pair_local( 0, dstore_rounding(pop_pair()) ); set_pair_local( 0, dprecision_rounding(pop_pair()) );
break; break;
case Bytecodes::_dstore_1: case Bytecodes::_dstore_1:
set_pair_local( 1, dstore_rounding(pop_pair()) ); set_pair_local( 1, dprecision_rounding(pop_pair()) );
break; break;
case Bytecodes::_dstore_2: case Bytecodes::_dstore_2:
set_pair_local( 2, dstore_rounding(pop_pair()) ); set_pair_local( 2, dprecision_rounding(pop_pair()) );
break; break;
case Bytecodes::_dstore_3: case Bytecodes::_dstore_3:
set_pair_local( 3, dstore_rounding(pop_pair()) ); set_pair_local( 3, dprecision_rounding(pop_pair()) );
break; break;
case Bytecodes::_dstore: case Bytecodes::_dstore:
set_pair_local( iter().get_index(), dstore_rounding(pop_pair()) ); set_pair_local( iter().get_index(), dprecision_rounding(pop_pair()) );
break; break;
case Bytecodes::_pop: dec_sp(1); break; case Bytecodes::_pop: dec_sp(1); break;