From 5200e04e92b487181d4a678231564272730e04a2 Mon Sep 17 00:00:00 2001 From: Steve Reinhardt Date: Sat, 6 Feb 2016 17:21:20 -0800 Subject: arch, x86: add support for arrays as memory operands Although the cache models support wider accesses, the ISA descriptions assume that (for the most part) memory operands are integer types, which makes it difficult to define instructions that do memory accesses larger than 64 bits. This patch adds some generic support for memory operands that are arrays of uint64_t, and specifically a 'u2qw' operand type for x86 that is an array of 2 uint64_ts (128 bits). This support is unused at this point, but will be needed shortly for cmpxchg16b. Ideally the 128-bit SSE memory accesses will also be rewritten to use this support. Support for 128-bit accesses could also have been added using the gcc __int128_t extension, which would have been less disruptive. However, although clang also supports __int128_t, it's still non-standard. Also, more importantly, this approach creates a path to defining 256- and 512-byte operands as well, which will be useful for eventual AVX support. --- src/arch/x86/isa/includes.isa | 1 + 1 file changed, 1 insertion(+) (limited to 'src/arch/x86/isa/includes.isa') diff --git a/src/arch/x86/isa/includes.isa b/src/arch/x86/isa/includes.isa index 43565fda5..0d0c0de3e 100644 --- a/src/arch/x86/isa/includes.isa +++ b/src/arch/x86/isa/includes.isa @@ -49,6 +49,7 @@ let {{ }}; output header {{ +#include #include #include #include -- cgit v1.2.3