Use split_double to break apart CONST_DOUBLEs
authorMichael Meissner <meissner@gcc.gnu.org>
Sun, 6 Oct 1996 18:13:02 +0000 (18:13 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Sun, 6 Oct 1996 18:13:02 +0000 (18:13 +0000)
From-SVN: r12907

gcc/config/rs6000/rs6000.md

index 7f9d6a90e21b3a1c4d79aed041a0acca1c60a975..e80f66e686a55811c7e0afd1ac40ca6ac9524234 100644 (file)
 {
   operands[2] = gen_rtx (SUBREG, SImode, operands[0], WORDS_BIG_ENDIAN == 0);
   operands[3] = gen_rtx (SUBREG, SImode, operands[0], WORDS_BIG_ENDIAN != 0);
-  operands[4] = GEN_INT (CONST_DOUBLE_HIGH (operands[1]));
-  operands[5] = GEN_INT (CONST_DOUBLE_LOW  (operands[1]));
+  split_double (operands[1], &operands[4], &operands[5]);
 }")
 
 (define_split
    (set (match_dup 2) (ior:SI (match_dup 2) (match_dup 6)))]
   "
 {
-  HOST_WIDE_INT high = CONST_DOUBLE_HIGH (operands[1]);
-  HOST_WIDE_INT low  = CONST_DOUBLE_LOW  (operands[1]);
+  rtx high_rtx, low_rtx;
+  HOST_WIDE_INT high;
+  HOST_WIDE_INT low;
   rtx high_reg = gen_rtx (SUBREG, SImode, operands[0], WORDS_BIG_ENDIAN == 0);
   rtx low_reg  = gen_rtx (SUBREG, SImode, operands[0], WORDS_BIG_ENDIAN != 0);
 
+  split_double (operands[1], &high_rtx, &low_rtx);
+  high = INTVAL (high_rtx);
+  low  = INTVAL (low_rtx);
+
   if (((unsigned HOST_WIDE_INT) (low + 0x8000) < 0x10000)
       || (low & 0xffff) == 0)
     {
    (set (match_dup 3) (ior:SI (match_dup 3) (match_dup 7)))]
   "
 {
-  HOST_WIDE_INT high = CONST_DOUBLE_HIGH (operands[1]);
-  HOST_WIDE_INT low  = CONST_DOUBLE_LOW  (operands[1]);
+  rtx high_rtx, low_rtx;
+  HOST_WIDE_INT high;
+  HOST_WIDE_INT low;
+
+  split_double (operands[1], &high_rtx, &low_rtx);
+  high = INTVAL (high_rtx);
+  low  = INTVAL (low_rtx);
 
   operands[2] = gen_rtx (SUBREG, SImode, operands[0], WORDS_BIG_ENDIAN == 0);
   operands[3] = gen_rtx (SUBREG, SImode, operands[0], WORDS_BIG_ENDIAN != 0);
 
       if (GET_CODE (operands[1]) == CONST_DOUBLE)
        {
-         low = CONST_DOUBLE_LOW (operands[1]);
-         high = CONST_DOUBLE_HIGH (operands[1]);
+         rtx high_rtx, low_rtx;
+         split_double (operands[1], &high_rtx, &low_rtx);
+         high = INTVAL (high_rtx);
+         low  = INTVAL (low_rtx);
        }
       else
 #if HOST_BITS_PER_WIDE_INT == 32
 {
   operands[2] = gen_rtx (SUBREG, SImode, operands[0], WORDS_BIG_ENDIAN == 0);
   operands[3] = gen_rtx (SUBREG, SImode, operands[0], WORDS_BIG_ENDIAN != 0);
-  operands[4] = GEN_INT (CONST_DOUBLE_HIGH (operands[1]));
-  operands[5] = GEN_INT (CONST_DOUBLE_LOW  (operands[1]));
+  split_double (operands[1], &operands[4], &operands[5]);
 }")
 
 (define_split
    (set (match_dup 2) (ior:SI (match_dup 2) (match_dup 6)))]
   "
 {
-  HOST_WIDE_INT high = CONST_DOUBLE_HIGH (operands[1]);
-  HOST_WIDE_INT low  = CONST_DOUBLE_LOW  (operands[1]);
+  rtx high_rtx, low_rtx;
+  HOST_WIDE_INT high;
+  HOST_WIDE_INT low;
   rtx high_reg = gen_rtx (SUBREG, SImode, operands[0], WORDS_BIG_ENDIAN == 0);
   rtx low_reg  = gen_rtx (SUBREG, SImode, operands[0], WORDS_BIG_ENDIAN != 0);
 
+  split_double (operands[1], &high_rtx, &low_rtx);
+  high = INTVAL (high_rtx);
+  low  = INTVAL (low_rtx);
+
   if (((unsigned HOST_WIDE_INT) (low + 0x8000) < 0x10000)
       || (low & 0xffff) == 0)
     {
    (set (match_dup 3) (ior:SI (match_dup 3) (match_dup 7)))]
   "
 {
-  HOST_WIDE_INT high = CONST_DOUBLE_HIGH (operands[1]);
-  HOST_WIDE_INT low  = CONST_DOUBLE_LOW  (operands[1]);
+  rtx high_rtx, low_rtx;
+  HOST_WIDE_INT high;
+  HOST_WIDE_INT low;
+
+  split_double (operands[1], &high_rtx, &low_rtx);
+  high = INTVAL (high_rtx);
+  low  = INTVAL (low_rtx);
 
   operands[2] = gen_rtx (SUBREG, SImode, operands[0], WORDS_BIG_ENDIAN == 0);
   operands[3] = gen_rtx (SUBREG, SImode, operands[0], WORDS_BIG_ENDIAN != 0);
 
   if (GET_CODE (operands[1]) == CONST_DOUBLE)
     {
-      low = CONST_DOUBLE_LOW (operands[1]);
-      high = CONST_DOUBLE_HIGH (operands[1]);
+      rtx high_rtx, low_rtx;
+      split_double (operands[1], &high_rtx, &low_rtx);
+      high = INTVAL (high_rtx);
+      low  = INTVAL (low_rtx);
     }
   else
 #if HOST_BITS_PER_WIDE_INT == 32