[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 54/67] target/arm: Convert T16, extract
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH 54/67] target/arm: Convert T16, extract |
Date: |
Fri, 26 Jul 2019 10:50:19 -0700 |
Signed-off-by: Richard Henderson <address@hidden>
---
target/arm/translate.c | 14 +-------------
target/arm/t16.decode | 10 ++++++++++
2 files changed, 11 insertions(+), 13 deletions(-)
diff --git a/target/arm/translate.c b/target/arm/translate.c
index 8dd88419fe..9c8e11bd3a 100644
--- a/target/arm/translate.c
+++ b/target/arm/translate.c
@@ -10649,21 +10649,9 @@ static void disas_thumb_insn(DisasContext *s, uint32_t
insn)
op = (insn >> 8) & 0xf;
switch (op) {
case 0: /* add/sub (sp, immediate), in decodetree */
+ case 2: /* sign/zero extend, in decodetree */
goto illegal_op;
- case 2: /* sign/zero extend. */
- ARCH(6);
- rd = insn & 7;
- rm = (insn >> 3) & 7;
- tmp = load_reg(s, rm);
- switch ((insn >> 6) & 3) {
- case 0: gen_sxth(tmp); break;
- case 1: gen_sxtb(tmp); break;
- case 2: gen_uxth(tmp); break;
- case 3: gen_uxtb(tmp); break;
- }
- store_reg(s, rd, tmp);
- break;
case 4: case 5: case 0xc: case 0xd:
/*
* 0b1011_x10x_xxxx_xxxx
diff --git a/target/arm/t16.decode b/target/arm/t16.decode
index ddf12ada11..1b47e804bf 100644
--- a/target/arm/t16.decode
+++ b/target/arm/t16.decode
@@ -23,6 +23,7 @@
&s_rrr_shr !extern s rn rd rm rs shty
&s_rri_rot !extern s rn rd imm rot
&s_rrrr !extern s rd rn rm ra
+&rrr_rot !extern rd rn rm rot
&ri !extern rd imm
&r !extern rm
&ldst_rr !extern p w u rn rt rm shimm shtype
@@ -173,3 +174,12 @@ BX 0100 0111 0 .... 000 @branchr
BLX_r 0100 0111 1 .... 000 @branchr
BXNS 0100 0111 0 .... 100 @branchr
BLXNS 0100 0111 1 .... 100 @branchr
+
+# Extend
+
+@extend .... .... .. rm:3 rd:3 &rrr_rot rn=15 rot=0
+
+SXTAH 1011 0010 00 ... ... @extend
+SXTAB 1011 0010 01 ... ... @extend
+UXTAH 1011 0010 10 ... ... @extend
+UXTAB 1011 0010 11 ... ... @extend
--
2.17.1
- [Qemu-devel] [PATCH 55/67] target/arm: Convert T16, Change processor state, (continued)
- [Qemu-devel] [PATCH 55/67] target/arm: Convert T16, Change processor state, Richard Henderson, 2019/07/26
- [Qemu-devel] [PATCH 11/67] target/arm: Add stubs for aa32 decodetree, Richard Henderson, 2019/07/26
- [Qemu-devel] [PATCH 61/67] target/arm: Convert T16, shift immediate, Richard Henderson, 2019/07/26
- [Qemu-devel] [PATCH 64/67] target/arm: Convert T16, long branches, Richard Henderson, 2019/07/26
- [Qemu-devel] [PATCH 67/67] target/arm: Merge gen_bx_im into trans_BLX_i, Richard Henderson, 2019/07/26
- [Qemu-devel] [PATCH 59/67] target/arm: Convert T16, Conditional branches, Supervisor call, Richard Henderson, 2019/07/26
- [Qemu-devel] [PATCH 58/67] target/arm: Convert T16, push and pop, Richard Henderson, 2019/07/26
- [Qemu-devel] [PATCH 57/67] target/arm: Convert T16, nop hints, Richard Henderson, 2019/07/26
- [Qemu-devel] [PATCH 65/67] target/arm: Clean up disas_thumb_insn, Richard Henderson, 2019/07/26
- [Qemu-devel] [PATCH 56/67] target/arm: Convert T16, Reverse bytes, Richard Henderson, 2019/07/26
- [Qemu-devel] [PATCH 54/67] target/arm: Convert T16, extract,
Richard Henderson <=
- [Qemu-devel] [PATCH 52/67] target/arm: Convert T16 add, compare, move (two high registers), Richard Henderson, 2019/07/26
- [Qemu-devel] [PATCH 63/67] target/arm: Convert T16, Unconditional branch, Richard Henderson, 2019/07/26
- [Qemu-devel] [PATCH 60/67] target/arm: Convert T16, Miscellaneous 16-bit instructions, Richard Henderson, 2019/07/26
- [Qemu-devel] [PATCH 62/67] target/arm: Convert T16, load (literal), Richard Henderson, 2019/07/26
- [Qemu-devel] [PATCH 66/67] target/arm: Move singlestep check from gen_jmp to gen_goto_tb, Richard Henderson, 2019/07/26
- Re: [Qemu-devel] [PATCH 00/67] target/arm: Convert aa32 base isa to decodetree, no-reply, 2019/07/26