diff -r a337c8af2b4b -r 6982b109eeee hotspot/src/share/vm/adlc/formssel.cpp --- a/hotspot/src/share/vm/adlc/formssel.cpp Tue Dec 15 21:17:50 2015 +0000 +++ b/hotspot/src/share/vm/adlc/formssel.cpp Tue Dec 15 19:18:05 2015 +0000 @@ -1246,7 +1246,8 @@ !is_short_branch() && // Don't match another short branch variant reduce_result() != NULL && strcmp(reduce_result(), short_branch->reduce_result()) == 0 && - _matrule->equivalent(AD.globalNames(), short_branch->_matrule)) { + _matrule->equivalent(AD.globalNames(), short_branch->_matrule) && + equivalent_predicates(this, short_branch)) { // The instructions are equivalent. // Now verify that both instructions have the same parameters and