Mercurial > hg > truffle
changeset 16648:ee2b88c44b43
[SPARC] ld/st for char, byte and boolean
author | Stefan Anzinger <stefan.anzinger@gmail.com> |
---|---|
date | Mon, 28 Jul 2014 10:36:27 -0700 |
parents | e87d16c605d2 |
children | e41e73c7473e |
files | graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java |
diffstat | 1 files changed, 20 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java Fri Jul 25 20:57:11 2014 -0700 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java Mon Jul 28 10:36:27 2014 -0700 @@ -410,6 +410,10 @@ return; } switch (input.getKind()) { + case Boolean: + case Byte: + case Short: + case Char: case Int: case Long: case Object: @@ -451,9 +455,14 @@ SPARCAddress dst = (SPARCAddress) crb.asAddress(result); Register src = asRegister(input); switch (input.getKind()) { - case Char: case Byte: case Boolean: + new Stb(src, dst).emit(masm); + break; + case Char: + case Short: + new Sth(src, dst).emit(masm); + break; case Int: new Stw(src, dst).emit(masm); break; @@ -476,6 +485,16 @@ SPARCAddress src = (SPARCAddress) crb.asAddress(input); Register dst = asRegister(result); switch (input.getKind()) { + case Boolean: + case Byte: + new Ldsb(src, dst).emit(masm); + break; + case Short: + new Ldsh(src, dst).emit(masm); + break; + case Char: + new Lduh(src, dst).emit(masm); + break; case Int: new Ldsw(src, dst).emit(masm); break;