[PATCH 4/7] s390: Add mode attribute for mode bitsize

Richard Henderson rth@redhat.com
Fri Aug 10 02:32:00 GMT 2012


Constant fold, and less typing than, GET_MODE_BITSIZE with
another mode substitution.
---
 gcc/config/s390/s390.md |   24 ++++++++++++------------
 1 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index 6474023..b6e1535 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -522,6 +522,9 @@
 (define_mode_attr bfstart [(DI "s") (SI "t")])
 (define_mode_attr bfend   [(DI "e") (SI "f")])
 
+;; In place of GET_MODE_BITSIZE (<MODE>mode)
+(define_mode_attr bitsize [(DI "64") (SI "32") (HI "16") (QI "8")])
+
 ;;
 ;;- Compare instructions.
 ;;
@@ -3317,7 +3320,7 @@
 
   operands[1] = adjust_address (operands[1], BLKmode, 0);
   set_mem_size (operands[1], size);
-  operands[2] = GEN_INT (GET_MODE_BITSIZE (<MODE>mode) - bitsize);
+  operands[2] = GEN_INT (<GPR:bitsize> - bitsize);
   operands[3] = GEN_INT (mask);
 })
 
@@ -3344,7 +3347,7 @@
 
   operands[1] = adjust_address (operands[1], BLKmode, 0);
   set_mem_size (operands[1], size);
-  operands[2] = GEN_INT (GET_MODE_BITSIZE (<MODE>mode) - bitsize);
+  operands[2] = GEN_INT (<GPR:bitsize> - bitsize);
   operands[3] = GEN_INT (mask);
 })
 
@@ -3532,8 +3535,7 @@
     }
   else if (!TARGET_EXTIMM)
     {
-      rtx bitcount = GEN_INT (GET_MODE_BITSIZE (<DSI:MODE>mode) -
-			      GET_MODE_BITSIZE (<HQI:MODE>mode));
+      rtx bitcount = GEN_INT (<DSI:bitsize> - <HQI:bitsize>);
 
       operands[1] = gen_lowpart (<DSI:MODE>mode, operands[1]);
       emit_insn (gen_ashl<DSI:mode>3 (operands[0], operands[1], bitcount));
@@ -3635,8 +3637,7 @@
 {
   operands[1] = adjust_address (operands[1], BLKmode, 0);
   set_mem_size (operands[1], GET_MODE_SIZE (QImode));
-  operands[2] = GEN_INT (GET_MODE_BITSIZE (<MODE>mode)
-			 - GET_MODE_BITSIZE (QImode));
+  operands[2] = GEN_INT (<GPR:bitsize> - BITS_PER_UNIT);
 })
 
 ;
@@ -3747,8 +3748,7 @@
     }
   else if (!TARGET_EXTIMM)
     {
-      rtx bitcount = GEN_INT (GET_MODE_BITSIZE(DImode) -
-			      GET_MODE_BITSIZE(<MODE>mode));
+      rtx bitcount = GEN_INT (64 - <HQI:bitsize>);
       operands[1] = gen_lowpart (DImode, operands[1]);
       emit_insn (gen_ashldi3 (operands[0], operands[1], bitcount));
       emit_insn (gen_lshrdi3 (operands[0], operands[0], bitcount));
@@ -3765,7 +3765,7 @@
     {
       operands[1] = gen_lowpart (SImode, operands[1]);
       emit_insn (gen_andsi3 (operands[0], operands[1],
-                   GEN_INT ((1 << GET_MODE_BITSIZE(<MODE>mode)) - 1)));
+			     GEN_INT ((1 << <HQI:bitsize>) - 1)));
       DONE;
     }
 })
@@ -3958,8 +3958,8 @@
       REAL_VALUE_TYPE cmp, sub;
 
       operands[1] = force_reg (<BFP:MODE>mode, operands[1]);
-      real_2expN (&cmp, GET_MODE_BITSIZE(<GPR:MODE>mode) - 1, <BFP:MODE>mode);
-      real_2expN (&sub, GET_MODE_BITSIZE(<GPR:MODE>mode), <BFP:MODE>mode);
+      real_2expN (&cmp, <GPR:bitsize> - 1, <BFP:MODE>mode);
+      real_2expN (&sub, <GPR:bitsize>, <BFP:MODE>mode);
 
       emit_cmp_and_jump_insns (operands[1],
 	    CONST_DOUBLE_FROM_REAL_VALUE (cmp, <BFP:MODE>mode),
@@ -4676,7 +4676,7 @@
    && (CONST_OK_FOR_CONSTRAINT_P (INTVAL (operands[2]), 'K', \"K\")
        || CONST_OK_FOR_CONSTRAINT_P (INTVAL (operands[2]), 'O', \"Os\")
        || CONST_OK_FOR_CONSTRAINT_P (INTVAL (operands[2]), 'C', \"C\"))
-   && INTVAL (operands[2]) != -((HOST_WIDE_INT)1 << (GET_MODE_BITSIZE(<MODE>mode) - 1))"
+   && INTVAL (operands[2]) != -((HOST_WIDE_INT)1 << (<bitsize> - 1))"
   "@
    a<g>hi\t%0,%h2
    a<g>hik\t%0,%1,%h2
-- 
1.7.7.6



More information about the Gcc-patches mailing list