diff options
author | Guillaume Emont <guijemont@igalia.com> | 2012-12-21 14:06:15 +0100 |
---|---|---|
committer | Guillaume Emont <guijemont@igalia.com> | 2012-12-28 15:23:39 +0100 |
commit | 6aa95c89f4d9c84d76fae5ae9ee71775ec16bd90 (patch) | |
tree | 9b98421741a2f45a779ea14d968c1530fa66accc | |
parent | 85bbf8a0ee93f4d529fd2fc5a163f6195253ccf8 (diff) |
mips: loadb: with shift 1, use lh if aligned
-rw-r--r-- | orc/orcrules-mips.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/orc/orcrules-mips.c b/orc/orcrules-mips.c index f64b207..cb3b2e6 100644 --- a/orc/orcrules-mips.c +++ b/orc/orcrules-mips.c @@ -60,9 +60,13 @@ mips_rule_load (OrcCompiler *compiler, void *user, OrcInstruction *insn) orc_mips_emit_lbu (compiler, dest, src, offset); break; case 1: - orc_mips_emit_lbu (compiler, ORC_MIPS_T3, src, offset); - orc_mips_emit_lbu (compiler, dest, src, offset+1); - orc_mips_emit_append (compiler, dest, ORC_MIPS_T3, 8); + if (is_aligned) { + orc_mips_emit_lh (compiler, dest, src, offset); + } else { + orc_mips_emit_lbu (compiler, ORC_MIPS_T3, src, offset); + orc_mips_emit_lbu (compiler, dest, src, offset+1); + orc_mips_emit_append (compiler, dest, ORC_MIPS_T3, 8); + } break; case 2: if (is_aligned) { |