-
Enhancement
-
Resolution: Unresolved
-
P4
-
25
if (is_demotable(no_flags, dst_enc, nds_enc)) {
int encode = is_prefixq ? prefixq_and_encode(src_enc, dst_enc, is_map1) : prefix_and_encode(src_enc, dst_enc, is_map1);
The `src_enc` and `dst_enc` seem to be swapped here. prefixq_and_encode is:
int prefixq_and_encode(int dst_enc, int src_enc, bool is_map1 = false);
There are other patterns in the same file, like:
if (swap) {
encode = is_prefixq ? prefixq_and_encode(dst_enc, src_enc, is_map1) : prefix_and_encode(dst_enc, src_enc, is_map1);
} else {
encode = is_prefixq ? prefixq_and_encode(src_enc, dst_enc, is_map1) : prefix_and_encode(src_enc, dst_enc, is_map1);
}
...which are also questionable. The "original" order is `dst_enc, src_enc`, yet we do it when `swap == true`?
Please check if this makes sense.
- caused by
-
JDK-8351994 Enable Extended EVEX to REX2/REX demotion when src and dst are the same
-
- Resolved
-