From e61f9f1153552529e0adfebe8817ad113af28a4a Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Tue, 27 Feb 2007 16:59:01 +0000 Subject: [PATCH] introduce 128bit long long modes [r8669] --- ir/ir/irmode.c | 22 ++++++++++++++++++++++ ir/ir/irmode.h | 38 ++++++++++++++++++++++---------------- 2 files changed, 44 insertions(+), 16 deletions(-) diff --git a/ir/ir/irmode.c b/ir/ir/irmode.c index 77a6a8769..a550cab93 100644 --- a/ir/ir/irmode.c +++ b/ir/ir/irmode.c @@ -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; diff --git a/ir/ir/irmode.h b/ir/ir/irmode.h index cbf257355..882a3b519 100644 --- a/ir/ir/irmode.h +++ b/ir/ir/irmode.h @@ -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); -- 2.20.1