OSDN Git Service

target-i386: Define MMREG_UNION macro
authorEduardo Habkost <ehabkost@redhat.com>
Wed, 2 Dec 2015 15:51:53 +0000 (13:51 -0200)
committerEduardo Habkost <ehabkost@redhat.com>
Thu, 21 Jan 2016 14:47:16 +0000 (12:47 -0200)
This will simplify the definitions of ZMMReg and MMXReg.

Reviewed-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
target-i386/cpu.h

index b41ce82..70cf66d 100644 (file)
@@ -725,23 +725,18 @@ typedef struct SegmentCache {
     uint32_t flags;
 } SegmentCache;
 
-typedef union {
-    uint8_t _b[64];
-    uint16_t _w[32];
-    uint32_t _l[16];
-    uint64_t _q[8];
-    float32 _s[16];
-    float64 _d[8];
-} ZMMReg;
+#define MMREG_UNION(bits)       \
+    union {                     \
+        uint8_t  _b[(bits)/8];  \
+        uint16_t _w[(bits)/16]; \
+        uint32_t _l[(bits)/32]; \
+        uint64_t _q[(bits)/64]; \
+        float32  _s[(bits)/32]; \
+        float64  _d[(bits)/64]; \
+    }
 
-typedef union {
-    uint8_t _b[8];
-    uint16_t _w[4];
-    uint32_t _l[2];
-    uint64_t _q[1];
-    float32 _s[2];
-    float64 _d[1];
-} MMXReg;
+typedef MMREG_UNION(512) ZMMReg;
+typedef MMREG_UNION(64)  MMXReg;
 
 typedef struct BNDReg {
     uint64_t lb;