diff options
author | Mike Pall <mike> | 2021-10-02 17:49:50 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2021-10-02 17:49:50 +0200 |
commit | e4b4d9451402be704d5b47a359f640a29db4977f (patch) | |
tree | 9a8129936f61be1730f322d4e1391b9076a0fca7 | |
parent | 4a70bd71ac18ccd57a335a4f5b8cbdefbbd4931b (diff) | |
download | luajit-e4b4d9451402be704d5b47a359f640a29db4977f.tar.gz luajit-e4b4d9451402be704d5b47a359f640a29db4977f.tar.bz2 luajit-e4b4d9451402be704d5b47a359f640a29db4977f.zip |
ARM64: Fix IR_HREF code generation.
-rw-r--r-- | src/lj_asm_arm64.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/lj_asm_arm64.h b/src/lj_asm_arm64.h index 5decfff4..67c53ee2 100644 --- a/src/lj_asm_arm64.h +++ b/src/lj_asm_arm64.h | |||
@@ -791,7 +791,7 @@ static void asm_href(ASMState *as, IRIns *ir, IROp merge) | |||
791 | } | 791 | } |
792 | } else if (irt_isaddr(kt)) { | 792 | } else if (irt_isaddr(kt)) { |
793 | if (isk) { | 793 | if (isk) { |
794 | int64_t kk = ((int64_t)irt_toitype(irkey->t) << 47) | irkey[1].tv.u64; | 794 | int64_t kk = ((int64_t)irt_toitype(kt) << 47) | irkey[1].tv.u64; |
795 | scr = ra_allock(as, kk, allow); | 795 | scr = ra_allock(as, kk, allow); |
796 | } else { | 796 | } else { |
797 | scr = ra_scratch(as, allow); | 797 | scr = ra_scratch(as, allow); |
@@ -799,7 +799,7 @@ static void asm_href(ASMState *as, IRIns *ir, IROp merge) | |||
799 | rset_clear(allow, scr); | 799 | rset_clear(allow, scr); |
800 | } else { | 800 | } else { |
801 | lj_assertA(irt_ispri(kt) && !irt_isnil(kt), "bad HREF key type"); | 801 | lj_assertA(irt_ispri(kt) && !irt_isnil(kt), "bad HREF key type"); |
802 | type = ra_allock(as, ~((int64_t)~irt_toitype(ir->t) << 47), allow); | 802 | type = ra_allock(as, ~((int64_t)~irt_toitype(kt) << 47), allow); |
803 | scr = ra_scratch(as, rset_clear(allow, type)); | 803 | scr = ra_scratch(as, rset_clear(allow, type)); |
804 | rset_clear(allow, scr); | 804 | rset_clear(allow, scr); |
805 | } | 805 | } |
@@ -848,7 +848,7 @@ static void asm_href(ASMState *as, IRIns *ir, IROp merge) | |||
848 | emit_lso(as, A64I_LDRx, scr, dest, offsetof(Node, key.u64)); | 848 | emit_lso(as, A64I_LDRx, scr, dest, offsetof(Node, key.u64)); |
849 | } | 849 | } |
850 | } else { | 850 | } else { |
851 | emit_nm(as, A64I_CMPw, scr, type); | 851 | emit_nm(as, A64I_CMPx, scr, type); |
852 | emit_lso(as, A64I_LDRx, scr, dest, offsetof(Node, key)); | 852 | emit_lso(as, A64I_LDRx, scr, dest, offsetof(Node, key)); |
853 | } | 853 | } |
854 | 854 | ||