8074349: AARCH64: C2 generates poor code for some byte and character stores
Summary: Use iRegIorL2I as src input for char and byte stores.
Reviewed-by: kvn
--- a/hotspot/src/cpu/aarch64/vm/aarch64.ad Tue Mar 03 06:23:49 2015 -0800
+++ b/hotspot/src/cpu/aarch64/vm/aarch64.ad Tue Mar 03 17:56:33 2015 +0000
@@ -5630,7 +5630,7 @@
%}
// Store Byte
-instruct storeB(iRegI src, memory mem)
+instruct storeB(iRegIorL2I src, memory mem)
%{
match(Set mem (StoreB mem src));
predicate(UseBarriersForVolatile || n->as_Store()->is_unordered());
@@ -5658,7 +5658,7 @@
%}
// Store Char/Short
-instruct storeC(iRegI src, memory mem)
+instruct storeC(iRegIorL2I src, memory mem)
%{
match(Set mem (StoreC mem src));
predicate(UseBarriersForVolatile || n->as_Store()->is_unordered());