[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH v2 22/39] target/i386: introduce code generators
From: |
Jan Bobek |
Subject: |
[Qemu-devel] [RFC PATCH v2 22/39] target/i386: introduce code generators |
Date: |
Sat, 10 Aug 2019 00:12:38 -0400 |
In this context, "code generators" are functions that receive decoded
instruction operands and emit TCG ops implementing the correct
instruction functionality. Introduce the naming macros first, actual
generator macros will be added later.
Signed-off-by: Jan Bobek <address@hidden>
---
target/i386/translate.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/target/i386/translate.c b/target/i386/translate.c
index ebb68fef0b..30180d1c25 100644
--- a/target/i386/translate.c
+++ b/target/i386/translate.c
@@ -4697,6 +4697,24 @@ static int ck_cpuid(CPUX86State *env, DisasContext *s,
int ck_cpuid_feat)
insnop_finalize(opTrm)(env, s, modrm, &rm); \
} while (0))
+/*
+ * Code generators
+ */
+#define gen_insn(mnem) \
+ gen_ ## mnem
+#define gen_insn_r(mnem, opR1) \
+ gen_ ## mnem ## _ ## opR1
+#define gen_insn_rr(mnem, opR1, opR2) \
+ gen_ ## mnem ## _ ## opR1 ## opR2
+#define gen_insn_w(mnem, opW1) \
+ gen_ ## mnem ## _ ## opW1
+#define gen_insn_wr(mnem, opW1, opR1) \
+ gen_ ## mnem ## _ ## opW1 ## opR1
+#define gen_insn_wrr(mnem, opW1, opR1, opR2) \
+ gen_ ## mnem ## _ ## opW1 ## opR1 ## opR2
+#define gen_insn_wrrr(mnem, opW1, opR1, opR2, opR3) \
+ gen_ ## mnem ## _ ## opW1 ## opR1 ## opR2 ## opR3
+
static void gen_sse_ng(CPUX86State *env, DisasContext *s, int b)
{
enum {
--
2.20.1
- Re: [Qemu-devel] [RFC PATCH v2 12/39] target/i386: introduce gen_sse_ng, (continued)
- [Qemu-devel] [RFC PATCH v2 17/39] target/i386: introduce helpers for decoding modrm fields, Jan Bobek, 2019/08/10
- [Qemu-devel] [RFC PATCH v2 18/39] target/i386: introduce modifier for direct-only operand decoding, Jan Bobek, 2019/08/10
- [Qemu-devel] [RFC PATCH v2 20/39] target/i386: introduce generic load-store operand, Jan Bobek, 2019/08/10
- [Qemu-devel] [RFC PATCH v2 22/39] target/i386: introduce code generators,
Jan Bobek <=
- [Qemu-devel] [RFC PATCH v2 19/39] target/i386: introduce generic operand alias, Jan Bobek, 2019/08/10
- [Qemu-devel] [RFC PATCH v2 21/39] target/i386: introduce insn.h, Jan Bobek, 2019/08/10
- [Qemu-devel] [RFC PATCH v2 24/39] target/i386: introduce Ib (immediate) operand, Jan Bobek, 2019/08/10
- [Qemu-devel] [RFC PATCH v2 25/39] target/i386: introduce M* (memptr) operands, Jan Bobek, 2019/08/10
- [Qemu-devel] [RFC PATCH v2 23/39] target/i386: introduce instruction translator macros, Jan Bobek, 2019/08/10
- [Qemu-devel] [RFC PATCH v2 26/39] target/i386: introduce G*, R*, E* (general register) operands, Jan Bobek, 2019/08/10