* cgen-ops.h (SUBWORDXFSI): Fix word ordering.
authorDoug Evans <dje@google.com>
Fri, 22 Jan 2010 08:23:26 +0000 (08:23 +0000)
committerDoug Evans <dje@google.com>
Fri, 22 Jan 2010 08:23:26 +0000 (08:23 +0000)
(SUBWORDTFSI, JOINSIDI): Ditto.

sim/common/ChangeLog
sim/common/cgen-ops.h

index 7bf5434..dfe328c 100644 (file)
@@ -1,3 +1,8 @@
+2010-01-22  Doug Evans  <dje@sebabeach.org>
+
+       * cgen-ops.h (SUBWORDXFSI): Fix word ordering.
+       (SUBWORDTFSI, JOINSIDI): Ditto.
+
 2010-01-05  Doug Evans  <dje@sebabeach.org>
 
        * cgen-types.h (SETDI): Delete, unused.
index 64ed737..b6f38cf 100644 (file)
@@ -404,7 +404,10 @@ SUBWORDXFSI (XF in, int word)
   /* Note: typedef struct { SI parts[3]; } XF; */
   union { XF in; SI out[3]; } x;
   x.in = in;
-  return x.out[word];
+  if (CURRENT_TARGET_BYTE_ORDER == BIG_ENDIAN)
+    return x.out[word];
+  else
+    return x.out[2 - word];
 }
 
 SEMOPS_INLINE SI
@@ -413,16 +416,16 @@ SUBWORDTFSI (TF in, int word)
   /* Note: typedef struct { SI parts[4]; } TF; */
   union { TF in; SI out[4]; } x;
   x.in = in;
-  return x.out[word];
+  if (CURRENT_TARGET_BYTE_ORDER == BIG_ENDIAN)
+    return x.out[word];
+  else
+    return x.out[3 - word];
 }
 
 SEMOPS_INLINE DI
 JOINSIDI (SI x0, SI x1)
 {
-  if (CURRENT_TARGET_BYTE_ORDER == BIG_ENDIAN)
-    return MAKEDI (x0, x1);
-  else
-    return MAKEDI (x1, x0);
+  return MAKEDI (x0, x1);
 }
 
 SEMOPS_INLINE DF