Commit 0df5bdbe0f5125aa6b8f49ceb9336827975552e3

Authored by aurel32
1 parent cfdcd37a

ppc: Convert op_andi to TCG

Replace op_andi_... with tcg_gen_andi_tl.

Signed-off-by: Andreas Faerber <andreas.faerber@web.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5218 c046a42c-6fe2-441c-8c8c-71466251a162
target-ppc/op.c
@@ -1153,33 +1153,6 @@ void OPPROTO op_andc (void) @@ -1153,33 +1153,6 @@ void OPPROTO op_andc (void)
1153 RETURN(); 1153 RETURN();
1154 } 1154 }
1155 1155
1156 -/* andi. */  
1157 -void OPPROTO op_andi_T0 (void)  
1158 -{  
1159 - T0 &= (uint32_t)PARAM1;  
1160 - RETURN();  
1161 -}  
1162 -  
1163 -void OPPROTO op_andi_T1 (void)  
1164 -{  
1165 - T1 &= (uint32_t)PARAM1;  
1166 - RETURN();  
1167 -}  
1168 -  
1169 -#if defined(TARGET_PPC64)  
1170 -void OPPROTO op_andi_T0_64 (void)  
1171 -{  
1172 - T0 &= ((uint64_t)PARAM1 << 32) | (uint64_t)PARAM2;  
1173 - RETURN();  
1174 -}  
1175 -  
1176 -void OPPROTO op_andi_T1_64 (void)  
1177 -{  
1178 - T1 &= ((uint64_t)PARAM1 << 32) | (uint64_t)PARAM2;  
1179 - RETURN();  
1180 -}  
1181 -#endif  
1182 -  
1183 /* count leading zero */ 1156 /* count leading zero */
1184 void OPPROTO op_cntlzw (void) 1157 void OPPROTO op_cntlzw (void)
1185 { 1158 {
target-ppc/translate.c
@@ -1235,7 +1235,7 @@ GEN_LOGICAL2(andc, 0x01, PPC_INTEGER); @@ -1235,7 +1235,7 @@ GEN_LOGICAL2(andc, 0x01, PPC_INTEGER);
1235 GEN_HANDLER2(andi_, "andi.", 0x1C, 0xFF, 0xFF, 0x00000000, PPC_INTEGER) 1235 GEN_HANDLER2(andi_, "andi.", 0x1C, 0xFF, 0xFF, 0x00000000, PPC_INTEGER)
1236 { 1236 {
1237 tcg_gen_mov_tl(cpu_T[0], cpu_gpr[rS(ctx->opcode)]); 1237 tcg_gen_mov_tl(cpu_T[0], cpu_gpr[rS(ctx->opcode)]);
1238 - gen_op_andi_T0(UIMM(ctx->opcode)); 1238 + tcg_gen_andi_tl(cpu_T[0], cpu_T[0], UIMM(ctx->opcode));
1239 tcg_gen_mov_tl(cpu_gpr[rA(ctx->opcode)], cpu_T[0]); 1239 tcg_gen_mov_tl(cpu_gpr[rA(ctx->opcode)], cpu_T[0]);
1240 gen_set_Rc0(ctx); 1240 gen_set_Rc0(ctx);
1241 } 1241 }
@@ -1243,7 +1243,7 @@ GEN_HANDLER2(andi_, &quot;andi.&quot;, 0x1C, 0xFF, 0xFF, 0x00000000, PPC_INTEGER) @@ -1243,7 +1243,7 @@ GEN_HANDLER2(andi_, &quot;andi.&quot;, 0x1C, 0xFF, 0xFF, 0x00000000, PPC_INTEGER)
1243 GEN_HANDLER2(andis_, "andis.", 0x1D, 0xFF, 0xFF, 0x00000000, PPC_INTEGER) 1243 GEN_HANDLER2(andis_, "andis.", 0x1D, 0xFF, 0xFF, 0x00000000, PPC_INTEGER)
1244 { 1244 {
1245 tcg_gen_mov_tl(cpu_T[0], cpu_gpr[rS(ctx->opcode)]); 1245 tcg_gen_mov_tl(cpu_T[0], cpu_gpr[rS(ctx->opcode)]);
1246 - gen_op_andi_T0(UIMM(ctx->opcode) << 16); 1246 + tcg_gen_andi_tl(cpu_T[0], cpu_T[0], UIMM(ctx->opcode) << 16);
1247 tcg_gen_mov_tl(cpu_gpr[rA(ctx->opcode)], cpu_T[0]); 1247 tcg_gen_mov_tl(cpu_gpr[rA(ctx->opcode)], cpu_T[0]);
1248 gen_set_Rc0(ctx); 1248 gen_set_Rc0(ctx);
1249 } 1249 }
@@ -1458,8 +1458,8 @@ GEN_HANDLER(rlwimi, 0x14, 0xFF, 0xFF, 0x00000000, PPC_INTEGER) @@ -1458,8 +1458,8 @@ GEN_HANDLER(rlwimi, 0x14, 0xFF, 0xFF, 0x00000000, PPC_INTEGER)
1458 me += 32; 1458 me += 32;
1459 #endif 1459 #endif
1460 mask = MASK(mb, me); 1460 mask = MASK(mb, me);
1461 - gen_op_andi_T0(mask);  
1462 - gen_op_andi_T1(~mask); 1461 + tcg_gen_andi_tl(cpu_T[0], cpu_T[0], mask);
  1462 + tcg_gen_andi_tl(cpu_T[1], cpu_T[1], ~mask);
1463 gen_op_or(); 1463 gen_op_or();
1464 do_store: 1464 do_store:
1465 tcg_gen_mov_tl(cpu_gpr[rA(ctx->opcode)], cpu_T[0]); 1465 tcg_gen_mov_tl(cpu_gpr[rA(ctx->opcode)], cpu_T[0]);
@@ -1498,7 +1498,7 @@ GEN_HANDLER(rlwinm, 0x15, 0xFF, 0xFF, 0x00000000, PPC_INTEGER) @@ -1498,7 +1498,7 @@ GEN_HANDLER(rlwinm, 0x15, 0xFF, 0xFF, 0x00000000, PPC_INTEGER)
1498 mb += 32; 1498 mb += 32;
1499 me += 32; 1499 me += 32;
1500 #endif 1500 #endif
1501 - gen_op_andi_T0(MASK(mb, me)); 1501 + tcg_gen_andi_tl(cpu_T[0], cpu_T[0], MASK(mb, me));
1502 do_store: 1502 do_store:
1503 tcg_gen_mov_tl(cpu_gpr[rA(ctx->opcode)], cpu_T[0]); 1503 tcg_gen_mov_tl(cpu_gpr[rA(ctx->opcode)], cpu_T[0]);
1504 if (unlikely(Rc(ctx->opcode) != 0)) 1504 if (unlikely(Rc(ctx->opcode) != 0))
@@ -1519,7 +1519,7 @@ GEN_HANDLER(rlwnm, 0x17, 0xFF, 0xFF, 0x00000000, PPC_INTEGER) @@ -1519,7 +1519,7 @@ GEN_HANDLER(rlwnm, 0x17, 0xFF, 0xFF, 0x00000000, PPC_INTEGER)
1519 mb += 32; 1519 mb += 32;
1520 me += 32; 1520 me += 32;
1521 #endif 1521 #endif
1522 - gen_op_andi_T0(MASK(mb, me)); 1522 + tcg_gen_andi_tl(cpu_T[0], cpu_T[0], MASK(mb, me));
1523 } 1523 }
1524 tcg_gen_mov_tl(cpu_gpr[rA(ctx->opcode)], cpu_T[0]); 1524 tcg_gen_mov_tl(cpu_gpr[rA(ctx->opcode)], cpu_T[0]);
1525 if (unlikely(Rc(ctx->opcode) != 0)) 1525 if (unlikely(Rc(ctx->opcode) != 0))
@@ -1558,22 +1558,6 @@ GEN_HANDLER2(name##3, stringify(name), opc1, opc2 | 0x11, 0xFF, 0x00000000, \ @@ -1558,22 +1558,6 @@ GEN_HANDLER2(name##3, stringify(name), opc1, opc2 | 0x11, 0xFF, 0x00000000, \
1558 gen_##name(ctx, 1, 1); \ 1558 gen_##name(ctx, 1, 1); \
1559 } 1559 }
1560 1560
1561 -static always_inline void gen_andi_T0_64 (DisasContext *ctx, uint64_t mask)  
1562 -{  
1563 - if (mask >> 32)  
1564 - gen_op_andi_T0_64(mask >> 32, mask & 0xFFFFFFFF);  
1565 - else  
1566 - gen_op_andi_T0(mask);  
1567 -}  
1568 -  
1569 -static always_inline void gen_andi_T1_64 (DisasContext *ctx, uint64_t mask)  
1570 -{  
1571 - if (mask >> 32)  
1572 - gen_op_andi_T1_64(mask >> 32, mask & 0xFFFFFFFF);  
1573 - else  
1574 - gen_op_andi_T1(mask);  
1575 -}  
1576 -  
1577 static always_inline void gen_rldinm (DisasContext *ctx, uint32_t mb, 1561 static always_inline void gen_rldinm (DisasContext *ctx, uint32_t mb,
1578 uint32_t me, uint32_t sh) 1562 uint32_t me, uint32_t sh)
1579 { 1563 {
@@ -1597,7 +1581,7 @@ static always_inline void gen_rldinm (DisasContext *ctx, uint32_t mb, @@ -1597,7 +1581,7 @@ static always_inline void gen_rldinm (DisasContext *ctx, uint32_t mb,
1597 } 1581 }
1598 gen_op_rotli64_T0(sh); 1582 gen_op_rotli64_T0(sh);
1599 do_mask: 1583 do_mask:
1600 - gen_andi_T0_64(ctx, MASK(mb, me)); 1584 + tcg_gen_andi_tl(cpu_T[0], cpu_T[0], MASK(mb, me));
1601 do_store: 1585 do_store:
1602 tcg_gen_mov_tl(cpu_gpr[rA(ctx->opcode)], cpu_T[0]); 1586 tcg_gen_mov_tl(cpu_gpr[rA(ctx->opcode)], cpu_T[0]);
1603 if (unlikely(Rc(ctx->opcode) != 0)) 1587 if (unlikely(Rc(ctx->opcode) != 0))
@@ -1641,7 +1625,7 @@ static always_inline void gen_rldnm (DisasContext *ctx, uint32_t mb, @@ -1641,7 +1625,7 @@ static always_inline void gen_rldnm (DisasContext *ctx, uint32_t mb,
1641 tcg_gen_mov_tl(cpu_T[1], cpu_gpr[rB(ctx->opcode)]); 1625 tcg_gen_mov_tl(cpu_T[1], cpu_gpr[rB(ctx->opcode)]);
1642 gen_op_rotl64_T0_T1(); 1626 gen_op_rotl64_T0_T1();
1643 if (unlikely(mb != 0 || me != 63)) { 1627 if (unlikely(mb != 0 || me != 63)) {
1644 - gen_andi_T0_64(ctx, MASK(mb, me)); 1628 + tcg_gen_andi_tl(cpu_T[0], cpu_T[0], MASK(mb, me));
1645 } 1629 }
1646 tcg_gen_mov_tl(cpu_gpr[rA(ctx->opcode)], cpu_T[0]); 1630 tcg_gen_mov_tl(cpu_gpr[rA(ctx->opcode)], cpu_T[0]);
1647 if (unlikely(Rc(ctx->opcode) != 0)) 1631 if (unlikely(Rc(ctx->opcode) != 0))
@@ -1689,8 +1673,8 @@ static always_inline void gen_rldimi (DisasContext *ctx, int mbn, int shn) @@ -1689,8 +1673,8 @@ static always_inline void gen_rldimi (DisasContext *ctx, int mbn, int shn)
1689 gen_op_rotli64_T0(sh); 1673 gen_op_rotli64_T0(sh);
1690 do_mask: 1674 do_mask:
1691 mask = MASK(mb, me); 1675 mask = MASK(mb, me);
1692 - gen_andi_T0_64(ctx, mask);  
1693 - gen_andi_T1_64(ctx, ~mask); 1676 + tcg_gen_andi_tl(cpu_T[0], cpu_T[0], mask);
  1677 + tcg_gen_andi_tl(cpu_T[1], cpu_T[1], ~mask);
1694 gen_op_or(); 1678 gen_op_or();
1695 do_store: 1679 do_store:
1696 tcg_gen_mov_tl(cpu_gpr[rA(ctx->opcode)], cpu_T[0]); 1680 tcg_gen_mov_tl(cpu_gpr[rA(ctx->opcode)], cpu_T[0]);
@@ -3107,7 +3091,7 @@ GEN_HANDLER(cr##op, 0x13, 0x01, opc, 0x00000001, PPC_INTEGER) \ @@ -3107,7 +3091,7 @@ GEN_HANDLER(cr##op, 0x13, 0x01, opc, 0x00000001, PPC_INTEGER) \
3107 gen_op_sli_T1(-sh); \ 3091 gen_op_sli_T1(-sh); \
3108 gen_op_##op(); \ 3092 gen_op_##op(); \
3109 bitmask = 1 << (3 - (crbD(ctx->opcode) & 0x03)); \ 3093 bitmask = 1 << (3 - (crbD(ctx->opcode) & 0x03)); \
3110 - gen_op_andi_T0(bitmask); \ 3094 + tcg_gen_andi_tl(cpu_T[0], cpu_T[0], bitmask); \
3111 tcg_gen_andi_i32(cpu_T[1], cpu_crf[crbD(ctx->opcode) >> 2], ~bitmask); \ 3095 tcg_gen_andi_i32(cpu_T[1], cpu_crf[crbD(ctx->opcode) >> 2], ~bitmask); \
3112 gen_op_or(); \ 3096 gen_op_or(); \
3113 tcg_gen_andi_i32(cpu_crf[crbD(ctx->opcode) >> 2], cpu_T[0], 0xf); \ 3097 tcg_gen_andi_i32(cpu_crf[crbD(ctx->opcode) >> 2], cpu_T[0], 0xf); \