introduce 128bit long long modes
authorMatthias Braun <matze@braunis.de>
Tue, 27 Feb 2007 16:59:01 +0000 (16:59 +0000)
committerMatthias Braun <matze@braunis.de>
Tue, 27 Feb 2007 16:59:01 +0000 (16:59 +0000)
[r8669]

ir/ir/irmode.c
ir/ir/irmode.h

index 77a6a87..a550cab 100644 (file)
@@ -183,6 +183,8 @@ ir_mode *mode_Is;   /* 32 bit */
 ir_mode *mode_Iu;
 ir_mode *mode_Ls;   /* 64 bit */
 ir_mode *mode_Lu;
+ir_mode *mode_LLs;  /* 128 bit */
+ir_mode *mode_LLu;
 
 ir_mode *mode_C;
 ir_mode *mode_U;
@@ -210,6 +212,8 @@ ir_mode *get_modeIs(void) { return mode_Is; }
 ir_mode *get_modeIu(void) { return mode_Iu; }
 ir_mode *get_modeLs(void) { return mode_Ls; }
 ir_mode *get_modeLu(void) { return mode_Lu; }
+ir_mode *get_modeLLs(void){ return mode_LLs; }
+ir_mode *get_modeLLu(void){ return mode_LLu; }
 ir_mode *get_modeC(void) { return mode_C; }
 ir_mode *get_modeU(void) { return mode_U; }
 ir_mode *get_modeb(void) { return mode_b; }
@@ -834,6 +838,24 @@ init_mode (void) {
 
        mode_Lu = register_mode(&newmode);
 
+       /* signed long long integer */
+       newmode.name         = new_id_from_chars("LLs", 3);
+       newmode.code         = irm_LLs;
+       newmode.sign         = 1;
+       newmode.size         = 128;
+       newmode.modulo_shift = 128;
+
+       mode_LLs = register_mode(&newmode);
+
+       /* unsigned long long integer */
+       newmode.name         = new_id_from_chars("LLu", 3);
+       newmode.code         = irm_LLu;
+       newmode.sign         = 0;
+       newmode.size         = 128;
+       newmode.modulo_shift = 128;
+
+       mode_LLu = register_mode(&newmode);
+
        /* Character Modes */
        newmode.sort         = irms_character;
        newmode.arithmetic   = irma_twos_complement;
index cbf2573..882a3b5 100644 (file)
@@ -77,6 +77,8 @@ typedef enum { /* irm is short for `ir mode' */
        irm_Iu,                       /**< unsigned int(32) */
        irm_Ls,                       /**< signed long(64) */
        irm_Lu,                       /**< unsigned long(64) */
+       irm_LLs,                      /**< signed long long(128) */
+       irm_LLu,                      /**< unsigned long long(128) */
        irm_C,                        /**< character */
        irm_P,                        /**< pointer */
        irm_b,                        /**< internal boolean */
@@ -303,22 +305,24 @@ tarval *get_mode_NAN(ir_mode *mode);
 extern ir_mode *mode_M;         /**< memory */
 
 /* -- A set of predefined, numerical modes according to Techreport 1999-44 -- */
-extern ir_mode *mode_F;         /**< signed float(32) */
-extern ir_mode *mode_D;  /**< signed double(64) */
-extern ir_mode *mode_E;  /**< signed extended(80) */
-extern ir_mode *mode_Bs; /**< signed byte (former char) */
-extern ir_mode *mode_Bu; /**< unsigned byte (former char) */
-extern ir_mode *mode_Hs; /**< signed short integer */
-extern ir_mode *mode_Hu; /**< unsigned short integer */
-extern ir_mode *mode_Is; /**< signed integer */
-extern ir_mode *mode_Iu; /**< unsigned integer */
-extern ir_mode *mode_Ls; /**< signed long integer */
-extern ir_mode *mode_Lu; /**< unsigned long integer */
-
-extern ir_mode *mode_C;  /**< 8 bit char */
-extern ir_mode *mode_U;  /**< 16 bit unicode char */
-
-extern ir_mode *mode_P;  /**< pointer */
+extern ir_mode *mode_F;          /**< signed float(32) */
+extern ir_mode *mode_D;   /**< signed double(64) */
+extern ir_mode *mode_E;   /**< signed extended(80) */
+extern ir_mode *mode_Bs;  /**< signed byte (former char) */
+extern ir_mode *mode_Bu;  /**< unsigned byte (former char) */
+extern ir_mode *mode_Hs;  /**< signed short integer */
+extern ir_mode *mode_Hu;  /**< unsigned short integer */
+extern ir_mode *mode_Is;  /**< signed integer */
+extern ir_mode *mode_Iu;  /**< unsigned integer */
+extern ir_mode *mode_Ls;  /**< signed long integer */
+extern ir_mode *mode_Lu;  /**< unsigned long integer */
+extern ir_mode *mode_LLs; /**< signed long long integer */
+extern ir_mode *mode_LLu; /**< unsigned long long integer */
+
+extern ir_mode *mode_C;   /**< 8 bit char */
+extern ir_mode *mode_U;   /**< 16 bit unicode char */
+
+extern ir_mode *mode_P;   /**< pointer */
 extern ir_mode *mode_P_code; /**< A pointer mode that is set by the client of libfirm.  This mode
                                   represents the pointer size of the target machine code addresses. Is initialized
                                   to mode_P. */
@@ -349,6 +353,8 @@ ir_mode *get_modeIs(void);
 ir_mode *get_modeIu(void);
 ir_mode *get_modeLs(void);
 ir_mode *get_modeLu(void);
+ir_mode *get_modeLLs(void);
+ir_mode *get_modeLLu(void);
 ir_mode *get_modeC(void);
 ir_mode *get_modeU(void);
 ir_mode *get_modeP(void);