use ffreep st instead of fstp st on athlon
[libfirm] / ir / ir / ircons.c
index e8a2cc3..ee564ec 100644 (file)
@@ -382,6 +382,7 @@ NEW_BD_BINOP(Add)
 NEW_BD_BINOP(Sub)
 NEW_BD_UNOP(Minus)
 NEW_BD_BINOP(Mul)
+NEW_BD_BINOP(Mulh)
 NEW_BD_DIVOP(Quot)
 NEW_BD_DIVOP(DivMod)
 NEW_BD_DIVOP(Div)
@@ -416,8 +417,8 @@ new_bd_Jmp(dbg_info *db, ir_node *block) {
        ir_node  *res;
        ir_graph *irg = current_ir_graph;
 
-       res = new_ir_node (db, irg, block, op_Jmp, mode_X, 0, NULL);
-       res = optimize_node (res);
+       res = new_ir_node(db, irg, block, op_Jmp, mode_X, 0, NULL);
+       res = optimize_node(res);
        IRN_VRFY_IRG(res, irg);
        return res;
 }  /* new_bd_Jmp */
@@ -427,12 +428,9 @@ new_bd_IJmp(dbg_info *db, ir_node *block, ir_node *tgt) {
        ir_node  *res;
        ir_graph *irg = current_ir_graph;
 
-       res = new_ir_node (db, irg, block, op_IJmp, mode_X, 1, &tgt);
-       res = optimize_node (res);
+       res = new_ir_node(db, irg, block, op_IJmp, mode_X, 1, &tgt);
+       res = optimize_node(res);
        IRN_VRFY_IRG(res, irg);
-
-       if (get_irn_op(res) == op_IJmp) /* still an IJmp */
-               keep_alive(res);
        return res;
 }  /* new_bd_IJmp */
 
@@ -441,11 +439,11 @@ new_bd_Cond(dbg_info *db, ir_node *block, ir_node *c) {
        ir_node  *res;
        ir_graph *irg = current_ir_graph;
 
-       res = new_ir_node (db, irg, block, op_Cond, mode_T, 1, &c);
+       res = new_ir_node(db, irg, block, op_Cond, mode_T, 1, &c);
        res->attr.cond.kind         = dense;
        res->attr.cond.default_proj = 0;
        res->attr.cond.pred         = COND_JMP_PRED_NONE;
-       res = optimize_node (res);
+       res = optimize_node(res);
        IRN_VRFY_IRG(res, irg);
        return res;
 }  /* new_bd_Cond */
@@ -506,6 +504,7 @@ new_bd_Load(dbg_info *db, ir_node *block,
        res->attr.load.exc.pin_state = op_pin_state_pinned;
        res->attr.load.load_mode     = mode;
        res->attr.load.volatility    = volatility_non_volatile;
+       res->attr.load.aligned       = align_is_aligned;
        res = optimize_node(res);
        IRN_VRFY_IRG(res, irg);
        return res;
@@ -524,6 +523,7 @@ new_bd_Store(dbg_info *db, ir_node *block,
        res = new_ir_node(db, irg, block, op_Store, mode_T, 3, in);
        res->attr.store.exc.pin_state = op_pin_state_pinned;
        res->attr.store.volatility    = volatility_non_volatile;
+       res->attr.store.aligned       = align_is_aligned;
        res = optimize_node(res);
        IRN_VRFY_IRG(res, irg);
        return res;
@@ -1025,6 +1025,7 @@ NEW_RD_BINOP(Add)
 NEW_RD_BINOP(Sub)
 NEW_RD_UNOP(Minus)
 NEW_RD_BINOP(Mul)
+NEW_RD_BINOP(Mulh)
 NEW_RD_DIVOP(Quot)
 NEW_RD_DIVOP(DivMod)
 NEW_RD_DIVOP(Div)
@@ -1526,6 +1527,10 @@ ir_node *new_r_Mul(ir_graph *irg, ir_node *block,
                    ir_node *op1, ir_node *op2, ir_mode *mode) {
        return new_rd_Mul(NULL, irg, block, op1, op2, mode);
 }
+ir_node *new_r_Mulh(ir_graph *irg, ir_node *block,
+                   ir_node *op1, ir_node *op2, ir_mode *mode) {
+       return new_rd_Mulh(NULL, irg, block, op1, op2, mode);
+}
 ir_node *new_r_Quot(ir_graph *irg, ir_node *block,
                     ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state) {
        return new_rd_Quot(NULL, irg, block, memop, op1, op2, mode, state);
@@ -2648,6 +2653,7 @@ NEW_D_BINOP(Add)
 NEW_D_BINOP(Sub)
 NEW_D_UNOP(Minus)
 NEW_D_BINOP(Mul)
+NEW_D_BINOP(Mulh)
 
 /**
  * Allocate the frag array.
@@ -3219,6 +3225,9 @@ ir_node *new_Minus(ir_node *op,  ir_mode *mode) {
 ir_node *new_Mul(ir_node *op1, ir_node *op2, ir_mode *mode) {
        return new_d_Mul(NULL, op1, op2, mode);
 }
+ir_node *new_Mulh(ir_node *op1, ir_node *op2, ir_mode *mode) {
+       return new_d_Mulh(NULL, op1, op2, mode);
+}
 ir_node *new_Quot(ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state) {
        return new_d_Quot(NULL, memop, op1, op2, mode, state);
 }