Author: petdance
Date: Thu Jul  5 18:10:52 2007
New Revision: 19630

Modified:
   trunk/compilers/imcc/instructions.h
   trunk/compilers/imcc/symreg.h

Log:
bitmasks from macros

Modified: trunk/compilers/imcc/instructions.h
==============================================================================
--- trunk/compilers/imcc/instructions.h (original)
+++ trunk/compilers/imcc/instructions.h Thu Jul  5 18:10:52 2007
@@ -42,29 +42,31 @@
  * int flags_w
  * int flags_jump
  */
+#define INSTRUCTION_BIT(n) ((UINTVAL)1 << (n))
 typedef enum {
     /* Indicate how the instruction affects each of the registers */
-    IF_r0_read  = (1 << 0),
-    IF_r1_read  = (1 << 1),
-    IF_r2_read  = (1 << 2),
-    IF_r3_read  = (1 << 3),
+    IF_r0_read      = INSTRUCTION_BIT(0),
+    IF_r1_read      = INSTRUCTION_BIT(1),
+    IF_r2_read      = INSTRUCTION_BIT(2),
+    IF_r3_read      = INSTRUCTION_BIT(3),
     /* .... */
-    IF_r0_write = (1 << 16),
-    IF_r1_write = (1 << 17),
-    IF_r2_write = (1 << 18),
-    IF_r3_write = (1 << 19),
+    IF_r0_write     = INSTRUCTION_BIT(16),
+    IF_r1_write     = INSTRUCTION_BIT(17),
+    IF_r2_write     = INSTRUCTION_BIT(18),
+    IF_r3_write     = INSTRUCTION_BIT(19),
     /* .... */
-    IF_binary  = (IF_r0_write|IF_r1_read|IF_r2_read), /* templ for binary op */
-    IF_unary   = (IF_r0_write|IF_r1_read),           /* templ for unary  op */
-    IF_inplace = (IF_r0_write|IF_r0_read),    /* templ for inplace unary  op */
+    IF_binary       = (IF_r0_write|IF_r1_read|IF_r2_read), /* templ for binary 
op */
+    IF_unary        = (IF_r0_write|IF_r1_read),           /* templ for unary  
op */
+    IF_inplace      = (IF_r0_write|IF_r0_read),    /* templ for inplace unary  
op */
     /* the branch flags are the low 16 bits of type
      * for upper 16 see ITXX above */
-    IF_r0_branch  = (1 << 0),
-    IF_r1_branch  = (1 << 1),
-    IF_r2_branch  = (1 << 2),
-    IF_r3_branch  = (1 << 3),
-    IF_goto =       (1 << 15)
+    IF_r0_branch    = INSTRUCTION_BIT(0),
+    IF_r1_branch    = INSTRUCTION_BIT(1),
+    IF_r2_branch    = INSTRUCTION_BIT(2),
+    IF_r3_branch    = INSTRUCTION_BIT(3),
+    IF_goto         = INSTRUCTION_BIT(15)
 } Instruction_Flags;
+#undef INSTRUCTION_BIT
 
 
 /* Forward decl */

Modified: trunk/compilers/imcc/symreg.h
==============================================================================
--- trunk/compilers/imcc/symreg.h       (original)
+++ trunk/compilers/imcc/symreg.h       Thu Jul  5 18:10:52 2007
@@ -3,28 +3,30 @@
 
 /* types */
 
+#define VARTYPE_BIT(n) ((UINTVAL)1 << (n))
 enum VARTYPE {              /* variable type can be */
-    VTCONST     = 1 << 0,   /* constant */
-    VTREG       = 1 << 1,   /* register */
-    VTIDENTIFIER= 1 << 2,   /* identifier */
-    VTADDRESS   = 1 << 3,   /* address */
-    VTREGKEY    = 1 << 4,   /* parrot [key;key..], including registers */
-    VTPASM      = 1 << 5,   /* parrot register, colored from .emit */
-    VT_CONSTP   = 1 << 6,   /* pointer to constant value */
-    VT_PCC_SUB  = 1 << 7,   /* PCC subroutine call */
-    VT_FLAT     = 1 << 8,   /* var :flat */
-    VT_OPTIONAL = 1 << 9,   /* var :optional */
+    VTCONST         = VARTYPE_BIT(0),   /* constant */
+    VTREG           = VARTYPE_BIT(1),   /* register */
+    VTIDENTIFIER    = VARTYPE_BIT(2),   /* identifier */
+    VTADDRESS       = VARTYPE_BIT(3),   /* address */
+    VTREGKEY        = VARTYPE_BIT(4),   /* parrot [key;key..]), including 
registers */
+    VTPASM          = VARTYPE_BIT(5),   /* parrot register), colored from 
.emit */
+    VT_CONSTP       = VARTYPE_BIT(6),   /* pointer to constant value */
+    VT_PCC_SUB      = VARTYPE_BIT(7),   /* PCC subroutine call */
+    VT_FLAT         = VARTYPE_BIT(8),   /* var :flat */
+    VT_OPTIONAL     = VARTYPE_BIT(9),   /* var :optional */
     /* include/parrot/packfile.h */
-    VT_START_SLICE = PF_VT_START_SLICE ,   /* x .. y slice range */
-    VT_END_SLICE   = PF_VT_END_SLICE   ,
-    VT_START_ZERO  = PF_VT_START_ZERO  ,   /* .. y 0..start */
-    VT_END_INF     = PF_VT_END_INF     ,   /* x..  start..inf */
-    VT_SLICE_BITS  = PF_VT_SLICE_BITS,
-    VT_ENCODED   = 1 << 16,     /* unicode string constant */
-    VT_OPT_FLAG  = 1 << 17, /* var :opt_flag */
-    VT_NAMED     = 1 << 18, /* var :named(name) */
-    VT_UNIQUE_REG = 1 << 19
+    VT_START_SLICE  = PF_VT_START_SLICE,/* x .. y slice range */
+    VT_END_SLICE    = PF_VT_END_SLICE,
+    VT_START_ZERO   = PF_VT_START_ZERO, /* .. y 0..start */
+    VT_END_INF      = PF_VT_END_INF,    /* x..  start..inf */
+    VT_SLICE_BITS   = PF_VT_SLICE_BITS,
+    VT_ENCODED      = VARTYPE_BIT(16),  /* unicode string constant */
+    VT_OPT_FLAG     = VARTYPE_BIT(17),  /* var :opt_flag */
+    VT_NAMED        = VARTYPE_BIT(18),  /* var :named(name) */
+    VT_UNIQUE_REG   = VARTYPE_BIT(19)
 };
+#undef VARTYPE_BIT
 
 /* this VARTYPE needs register allocation and such */
 #define VTREGISTER (VTREG | VTIDENTIFIER | VTREGKEY | VTPASM)

Reply via email to