[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH v3 33/46] target/i386: introduce sse-opcode.inc.
From: |
Jan Bobek |
Subject: |
[Qemu-devel] [RFC PATCH v3 33/46] target/i386: introduce sse-opcode.inc.h |
Date: |
Wed, 14 Aug 2019 22:09:15 -0400 |
This header is intended to eventually list all supported instructions
along with some useful details (e.g. mnemonics, opcode, operands etc.)
It shall be used (along with some preprocessor magic) anytime we need
to automatically generate code for every instruction.
Signed-off-by: Jan Bobek <address@hidden>
---
target/i386/sse-opcode.inc.h | 69 ++++++++++++++++++++++++++++++++++++
1 file changed, 69 insertions(+)
create mode 100644 target/i386/sse-opcode.inc.h
diff --git a/target/i386/sse-opcode.inc.h b/target/i386/sse-opcode.inc.h
new file mode 100644
index 0000000000..c5e81a6a80
--- /dev/null
+++ b/target/i386/sse-opcode.inc.h
@@ -0,0 +1,69 @@
+#define FMTI____ (0, 0, 0, )
+#define FMTI__R__ (1, 1, 0, r)
+#define FMTI__RR__ (2, 2, 0, rr)
+#define FMTI__W__ (1, 0, 1, w)
+#define FMTI__WR__ (2, 1, 1, wr)
+#define FMTI__WRR__ (3, 2, 1, wrr)
+#define FMTI__WRRR__ (4, 3, 1, wrrr)
+
+#define FMTI__(prop, fmti) FMTI_ ## prop ## __ fmti
+
+#define FMTI_ARGC__(argc, argc_rd, argc_wr, lower) argc
+#define FMTI_ARGC_RD__(argc, argc_rd, argc_wr, lower) argc_rd
+#define FMTI_ARGC_WR__(argc, argc_rd, argc_wr, lower) argc_wr
+#define FMTI_LOWER__(argc, argc_rd, argc_wr, lower) lower
+
+#define FMT_ARGC(fmt) FMTI__(ARGC, FMTI__ ## fmt ## __)
+#define FMT_ARGC_RD(fmt) FMTI__(ARGC_RD, FMTI__ ## fmt ## __)
+#define FMT_ARGC_WR(fmt) FMTI__(ARGC_WR, FMTI__ ## fmt ## __)
+#define FMT_LOWER(fmt) FMTI__(LOWER, FMTI__ ## fmt ## __)
+#define FMT_UPPER(fmt) fmt
+
+#ifndef OPCODE
+# define OPCODE(mnem, opcode, feat, fmt, ...)
+#endif /* OPCODE */
+
+#ifndef OPCODE_GRP
+# define OPCODE_GRP(grpname, opcode)
+#endif /* OPCODE_GRP */
+
+#ifndef OPCODE_GRP_BEGIN
+# define OPCODE_GRP_BEGIN(grpname)
+#endif /* OPCODE_GRP_BEGIN */
+
+#ifndef OPCODE_GRPMEMB
+# define OPCODE_GRPMEMB(grpname, mnem, opcode, feat, fmt, ...)
+#endif /* OPCODE_GRPMEMB */
+
+#ifndef OPCODE_GRP_END
+# define OPCODE_GRP_END(grpname)
+#endif /* OPCODE_GRP_END */
+
+#undef FMTI____
+#undef FMTI__R__
+#undef FMTI__RR__
+#undef FMTI__W__
+#undef FMTI__WR__
+#undef FMTI__WRR__
+#undef FMTI__WRRR__
+
+#undef FMTI__
+
+#undef FMTI_ARGC__
+#undef FMTI_ARGC_RD__
+#undef FMTI_ARGC_WR__
+#undef FMTI_LOWER__
+
+#undef FMT_ARGC
+#undef FMT_ARGC_RD
+#undef FMT_ARGC_WR
+#undef FMT_LOWER
+#undef FMT_UPPER
+
+#undef LEG
+#undef VEX
+#undef OPCODE
+#undef OPCODE_GRP
+#undef OPCODE_GRP_BEGIN
+#undef OPCODE_GRPMEMB
+#undef OPCODE_GRP_END
--
2.20.1
- [Qemu-devel] [RFC PATCH v3 18/46] target/i386: introduce generic either-or operand, (continued)
- [Qemu-devel] [RFC PATCH v3 18/46] target/i386: introduce generic either-or operand, Jan Bobek, 2019/08/14
- [Qemu-devel] [RFC PATCH v3 19/46] target/i386: introduce generic load-store operand, Jan Bobek, 2019/08/14
- [Qemu-devel] [RFC PATCH v3 20/46] target/i386: introduce tcg_temp operands, Jan Bobek, 2019/08/14
- [Qemu-devel] [RFC PATCH v3 22/46] target/i386: introduce operands for decoding modrm fields, Jan Bobek, 2019/08/14
- [Qemu-devel] [RFC PATCH v3 23/46] target/i386: introduce operand for direct-only r/m field, Jan Bobek, 2019/08/14
- [Qemu-devel] [RFC PATCH v3 25/46] target/i386: introduce Ib (immediate) operand, Jan Bobek, 2019/08/14
- [Qemu-devel] [RFC PATCH v3 29/46] target/i386: introduce H*, V*, U*, W* (SSE/AVX) operands, Jan Bobek, 2019/08/14
- [Qemu-devel] [RFC PATCH v3 28/46] target/i386: introduce P*, N*, Q* (MMX) operands, Jan Bobek, 2019/08/14
- [Qemu-devel] [RFC PATCH v3 27/46] target/i386: introduce G*, R*, E* (general register) operands, Jan Bobek, 2019/08/14
- [Qemu-devel] [RFC PATCH v3 30/46] target/i386: introduce code generators, Jan Bobek, 2019/08/14
- [Qemu-devel] [RFC PATCH v3 33/46] target/i386: introduce sse-opcode.inc.h,
Jan Bobek <=
- [Qemu-devel] [RFC PATCH v3 32/46] target/i386: introduce gvec-based code generator macros, Jan Bobek, 2019/08/14
- [Qemu-devel] [RFC PATCH v3 34/46] target/i386: introduce instruction translator macros, Jan Bobek, 2019/08/14
- [Qemu-devel] [RFC PATCH v3 24/46] target/i386: introduce operand vex_v, Jan Bobek, 2019/08/14
- [Qemu-devel] [RFC PATCH v3 26/46] target/i386: introduce M* (memptr) operands, Jan Bobek, 2019/08/14
- [Qemu-devel] [RFC PATCH v3 31/46] target/i386: introduce helper-based code generator macros, Jan Bobek, 2019/08/14
- [Qemu-devel] [RFC PATCH v3 35/46] target/i386: introduce MMX translators, Jan Bobek, 2019/08/14
- [Qemu-devel] [RFC PATCH v3 38/46] target/i386: introduce SSE translators, Jan Bobek, 2019/08/14
- [Qemu-devel] [RFC PATCH v3 37/46] target/i386: introduce MMX instructions to sse-opcode.inc.h, Jan Bobek, 2019/08/14
- [Qemu-devel] [RFC PATCH v3 39/46] target/i386: introduce SSE code generators, Jan Bobek, 2019/08/14
- [Qemu-devel] [RFC PATCH v3 44/46] target/i386: introduce SSE3 translators, Jan Bobek, 2019/08/14