tcg-op.h revision 8b23a6c7e1aee255004dd19098d4c2462b61b849
18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Tiny Code Generator for QEMU 38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Copyright (c) 2008 Fabrice Bellard 58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Permission is hereby granted, free of charge, to any person obtaining a copy 78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * of this software and associated documentation files (the "Software"), to deal 88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * in the Software without restriction, including without limitation the rights 98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * copies of the Software, and to permit persons to whom the Software is 118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * furnished to do so, subject to the following conditions: 128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The above copyright notice and this permission notice shall be included in 148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * all copies or substantial portions of the Software. 158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * THE SOFTWARE. 238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "tcg.h" 258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef CONFIG_DYNGEN_OP 278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* legacy dyngen operations */ 288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "gen-op.h" 298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint gen_new_label(void); 328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_op1(int opc, TCGv arg1) 348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opc_ptr++ = opc; 368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg1); 378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_op1i(int opc, TCGArg arg1) 408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opc_ptr++ = opc; 428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = arg1; 438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_op2(int opc, TCGv arg1, TCGv arg2) 468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opc_ptr++ = opc; 488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg1); 498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg2); 508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_op2i(int opc, TCGv arg1, TCGArg arg2) 538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opc_ptr++ = opc; 558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg1); 568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = arg2; 578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_op2ii(int opc, TCGArg arg1, TCGArg arg2) 608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opc_ptr++ = opc; 628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = arg1; 638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = arg2; 648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_op3(int opc, TCGv arg1, TCGv arg2, TCGv arg3) 678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opc_ptr++ = opc; 698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg1); 708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg2); 718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg3); 728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_op3i(int opc, TCGv arg1, TCGv arg2, TCGArg arg3) 758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opc_ptr++ = opc; 778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg1); 788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg2); 798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = arg3; 808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_op4(int opc, TCGv arg1, TCGv arg2, TCGv arg3, 838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv arg4) 848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opc_ptr++ = opc; 868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg1); 878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg2); 888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg3); 898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg4); 908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_op4i(int opc, TCGv arg1, TCGv arg2, TCGv arg3, 938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGArg arg4) 948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opc_ptr++ = opc; 968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg1); 978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg2); 988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg3); 998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = arg4; 1008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 1018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_op4ii(int opc, TCGv arg1, TCGv arg2, TCGArg arg3, 1038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGArg arg4) 1048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 1058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opc_ptr++ = opc; 1068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg1); 1078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg2); 1088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = arg3; 1098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = arg4; 1108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 1118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_op5(int opc, TCGv arg1, TCGv arg2, 1138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv arg3, TCGv arg4, 1148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv arg5) 1158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 1168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opc_ptr++ = opc; 1178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg1); 1188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg2); 1198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg3); 1208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg4); 1218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg5); 1228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 1238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_op5i(int opc, TCGv arg1, TCGv arg2, 1258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv arg3, TCGv arg4, 1268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGArg arg5) 1278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 1288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opc_ptr++ = opc; 1298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg1); 1308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg2); 1318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg3); 1328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg4); 1338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = arg5; 1348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 1358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_op6(int opc, TCGv arg1, TCGv arg2, 1378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv arg3, TCGv arg4, 1388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv arg5, TCGv arg6) 1398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 1408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opc_ptr++ = opc; 1418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg1); 1428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg2); 1438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg3); 1448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg4); 1458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg5); 1468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg6); 1478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 1488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_op6ii(int opc, TCGv arg1, TCGv arg2, 1508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv arg3, TCGv arg4, 1518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGArg arg5, TCGArg arg6) 1528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 1538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opc_ptr++ = opc; 1548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg1); 1558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg2); 1568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg3); 1578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = GET_TCGV(arg4); 1588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = arg5; 1598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *gen_opparam_ptr++ = arg6; 1608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 1618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void gen_set_label(int n) 1638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 1648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op1i(INDEX_op_set_label, n); 1658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 1668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_br(int label) 1688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 1698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op1i(INDEX_op_br, label); 1708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 1718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_mov_i32(TCGv ret, TCGv arg) 1738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 1748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (GET_TCGV(ret) != GET_TCGV(arg)) 1758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op2(INDEX_op_mov_i32, ret, arg); 1768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 1778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_movi_i32(TCGv ret, int32_t arg) 1798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 1808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op2i(INDEX_op_movi_i32, ret, arg); 1818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 1828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* helper calls */ 1848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TCG_HELPER_CALL_FLAGS 0 1858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_helper_0_0(void *func) 1878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 1888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0; 1898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_const_ptr((tcg_target_long)func); 1908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_call(&tcg_ctx, 1918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0, TCG_HELPER_CALL_FLAGS, 1928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 0, NULL, 0, NULL); 1938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 1948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 1958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_helper_0_1(void *func, TCGv arg) 1978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 1988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0; 1998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_const_ptr((tcg_target_long)func); 2008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_call(&tcg_ctx, 2018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0, TCG_HELPER_CALL_FLAGS, 2028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 0, NULL, 1, &arg); 2038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 2048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 2058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_helper_0_2(void *func, TCGv arg1, TCGv arg2) 2078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 2088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv args[2]; 2098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0; 2108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project args[0] = arg1; 2118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project args[1] = arg2; 2128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_const_ptr((tcg_target_long)func); 2138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_call(&tcg_ctx, 2148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0, TCG_HELPER_CALL_FLAGS, 2158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 0, NULL, 2, args); 2168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 2178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 2188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_helper_0_3(void *func, 2208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv arg1, TCGv arg2, TCGv arg3) 2218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 2228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv args[3]; 2238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0; 2248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project args[0] = arg1; 2258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project args[1] = arg2; 2268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project args[2] = arg3; 2278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_const_ptr((tcg_target_long)func); 2288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_call(&tcg_ctx, 2298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0, TCG_HELPER_CALL_FLAGS, 2308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 0, NULL, 3, args); 2318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 2328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 2338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_helper_0_4(void *func, TCGv arg1, TCGv arg2, 2358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv arg3, TCGv arg4) 2368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 2378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv args[4]; 2388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0; 2398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project args[0] = arg1; 2408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project args[1] = arg2; 2418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project args[2] = arg3; 2428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project args[3] = arg4; 2438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_const_ptr((tcg_target_long)func); 2448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_call(&tcg_ctx, 2458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0, TCG_HELPER_CALL_FLAGS, 2468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 0, NULL, 4, args); 2478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 2488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 2498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_helper_1_0(void *func, TCGv ret) 2518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 2528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0; 2538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_const_ptr((tcg_target_long)func); 2548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_call(&tcg_ctx, 2558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0, TCG_HELPER_CALL_FLAGS, 2568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1, &ret, 0, NULL); 2578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 2588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 2598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_helper_1_1(void *func, TCGv ret, TCGv arg1) 2618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 2628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0; 2638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_const_ptr((tcg_target_long)func); 2648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_call(&tcg_ctx, 2658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0, TCG_HELPER_CALL_FLAGS, 2668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1, &ret, 1, &arg1); 2678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 2688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 2698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_helper_1_2(void *func, TCGv ret, 2718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv arg1, TCGv arg2) 2728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 2738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv args[2]; 2748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0; 2758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project args[0] = arg1; 2768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project args[1] = arg2; 2778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_const_ptr((tcg_target_long)func); 2788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_call(&tcg_ctx, 2798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0, TCG_HELPER_CALL_FLAGS, 2808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1, &ret, 2, args); 2818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 2828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 2838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_helper_1_3(void *func, TCGv ret, 2858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv arg1, TCGv arg2, TCGv arg3) 2868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 2878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv args[3]; 2888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0; 2898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project args[0] = arg1; 2908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project args[1] = arg2; 2918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project args[2] = arg3; 2928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_const_ptr((tcg_target_long)func); 2938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_call(&tcg_ctx, 2948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0, TCG_HELPER_CALL_FLAGS, 2958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1, &ret, 3, args); 2968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 2978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 2988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_helper_1_4(void *func, TCGv ret, 3008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv arg1, TCGv arg2, TCGv arg3, 3018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv arg4) 3028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 3038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv args[4]; 3048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0; 3058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project args[0] = arg1; 3068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project args[1] = arg2; 3078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project args[2] = arg3; 3088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project args[3] = arg4; 3098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_const_ptr((tcg_target_long)func); 3108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_call(&tcg_ctx, 3118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0, TCG_HELPER_CALL_FLAGS, 3128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1, &ret, 4, args); 3138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 3148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 3158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 32 bit ops */ 3178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ld8u_i32(TCGv ret, TCGv arg2, tcg_target_long offset) 3198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 3208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_ld8u_i32, ret, arg2, offset); 3218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 3228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ld8s_i32(TCGv ret, TCGv arg2, tcg_target_long offset) 3248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 3258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_ld8s_i32, ret, arg2, offset); 3268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 3278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ld16u_i32(TCGv ret, TCGv arg2, tcg_target_long offset) 3298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 3308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_ld16u_i32, ret, arg2, offset); 3318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 3328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ld16s_i32(TCGv ret, TCGv arg2, tcg_target_long offset) 3348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 3358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_ld16s_i32, ret, arg2, offset); 3368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 3378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ld_i32(TCGv ret, TCGv arg2, tcg_target_long offset) 3398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 3408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_ld_i32, ret, arg2, offset); 3418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 3428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_st8_i32(TCGv arg1, TCGv arg2, tcg_target_long offset) 3448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 3458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_st8_i32, arg1, arg2, offset); 3468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 3478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_st16_i32(TCGv arg1, TCGv arg2, tcg_target_long offset) 3498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 3508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_st16_i32, arg1, arg2, offset); 3518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 3528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_st_i32(TCGv arg1, TCGv arg2, tcg_target_long offset) 3548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 3558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_st_i32, arg1, arg2, offset); 3568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 3578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_add_i32(TCGv ret, TCGv arg1, TCGv arg2) 3598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 3608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_add_i32, ret, arg1, arg2); 3618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 3628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_addi_i32(TCGv ret, TCGv arg1, int32_t arg2) 3648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 3658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* some cases can be optimized here */ 3668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (arg2 == 0) { 3678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i32(ret, arg1); 3688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } else { 3698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i32(arg2); 3708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_add_i32(ret, arg1, t0); 3718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 3728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 3738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 3748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_sub_i32(TCGv ret, TCGv arg1, TCGv arg2) 3768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 3778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_sub_i32, ret, arg1, arg2); 3788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 3798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_subi_i32(TCGv ret, TCGv arg1, int32_t arg2) 3818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 3828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* some cases can be optimized here */ 3838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (arg2 == 0) { 3848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i32(ret, arg1); 3858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } else { 3868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i32(arg2); 3878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sub_i32(ret, arg1, t0); 3888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 3898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 3908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 3918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_and_i32(TCGv ret, TCGv arg1, TCGv arg2) 3938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 3948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_and_i32, ret, arg1, arg2); 3958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 3968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_andi_i32(TCGv ret, TCGv arg1, int32_t arg2) 3988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 3998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* some cases can be optimized here */ 4008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (arg2 == 0) { 4018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_movi_i32(ret, 0); 4028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } else if (arg2 == 0xffffffff) { 4038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i32(ret, arg1); 4048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } else { 4058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i32(arg2); 4068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_and_i32(ret, arg1, t0); 4078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 4088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 4098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 4108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_or_i32(TCGv ret, TCGv arg1, TCGv arg2) 4128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 4138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_or_i32, ret, arg1, arg2); 4148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 4158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ori_i32(TCGv ret, TCGv arg1, int32_t arg2) 4178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 4188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* some cases can be optimized here */ 4198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (arg2 == 0xffffffff) { 4208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_movi_i32(ret, 0xffffffff); 4218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } else if (arg2 == 0) { 4228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i32(ret, arg1); 4238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } else { 4248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i32(arg2); 4258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_or_i32(ret, arg1, t0); 4268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 4278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 4288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 4298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_xor_i32(TCGv ret, TCGv arg1, TCGv arg2) 4318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 4328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_xor_i32, ret, arg1, arg2); 4338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 4348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_xori_i32(TCGv ret, TCGv arg1, int32_t arg2) 4368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 4378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* some cases can be optimized here */ 4388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (arg2 == 0) { 4398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i32(ret, arg1); 4408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } else { 4418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i32(arg2); 4428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_xor_i32(ret, arg1, t0); 4438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 4448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 4458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 4468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_shl_i32(TCGv ret, TCGv arg1, TCGv arg2) 4488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 4498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_shl_i32, ret, arg1, arg2); 4508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 4518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_shli_i32(TCGv ret, TCGv arg1, int32_t arg2) 4538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 4548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (arg2 == 0) { 4558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i32(ret, arg1); 4568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } else { 4578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i32(arg2); 4588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shl_i32(ret, arg1, t0); 4598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 4608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 4618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 4628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_shr_i32(TCGv ret, TCGv arg1, TCGv arg2) 4648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 4658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_shr_i32, ret, arg1, arg2); 4668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 4678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_shri_i32(TCGv ret, TCGv arg1, int32_t arg2) 4698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 4708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (arg2 == 0) { 4718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i32(ret, arg1); 4728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } else { 4738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i32(arg2); 4748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shr_i32(ret, arg1, t0); 4758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 4768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 4778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 4788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_sar_i32(TCGv ret, TCGv arg1, TCGv arg2) 4808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 4818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_sar_i32, ret, arg1, arg2); 4828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 4838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_sari_i32(TCGv ret, TCGv arg1, int32_t arg2) 4858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 4868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (arg2 == 0) { 4878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i32(ret, arg1); 4888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } else { 4898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i32(arg2); 4908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sar_i32(ret, arg1, t0); 4918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 4928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 4938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 4948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_brcond_i32(int cond, TCGv arg1, TCGv arg2, 4968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int label_index) 4978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 4988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op4ii(INDEX_op_brcond_i32, arg1, arg2, cond, label_index); 4998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 5008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_brcondi_i32(int cond, TCGv arg1, int32_t arg2, 5028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int label_index) 5038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i32(arg2); 5058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_brcond_i32(cond, arg1, t0, label_index); 5068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 5078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 5088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_mul_i32(TCGv ret, TCGv arg1, TCGv arg2) 5108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_mul_i32, ret, arg1, arg2); 5128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 5138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_muli_i32(TCGv ret, TCGv arg1, int32_t arg2) 5158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i32(arg2); 5178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mul_i32(ret, arg1, t0); 5188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 5198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 5208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef TCG_TARGET_HAS_div_i32 5228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_div_i32(TCGv ret, TCGv arg1, TCGv arg2) 5238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_div_i32, ret, arg1, arg2); 5258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 5268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_rem_i32(TCGv ret, TCGv arg1, TCGv arg2) 5288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_rem_i32, ret, arg1, arg2); 5308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 5318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_divu_i32(TCGv ret, TCGv arg1, TCGv arg2) 5338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_divu_i32, ret, arg1, arg2); 5358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 5368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_remu_i32(TCGv ret, TCGv arg1, TCGv arg2) 5388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_remu_i32, ret, arg1, arg2); 5408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 5418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 5428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_div_i32(TCGv ret, TCGv arg1, TCGv arg2) 5438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0; 5458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_temp_new(TCG_TYPE_I32); 5468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sari_i32(t0, arg1, 31); 5478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op5(INDEX_op_div2_i32, ret, t0, arg1, t0, arg2); 5488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 5498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 5508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_rem_i32(TCGv ret, TCGv arg1, TCGv arg2) 5528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0; 5548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_temp_new(TCG_TYPE_I32); 5558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sari_i32(t0, arg1, 31); 5568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op5(INDEX_op_div2_i32, t0, ret, arg1, t0, arg2); 5578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 5588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 5598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_divu_i32(TCGv ret, TCGv arg1, TCGv arg2) 5618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0; 5638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_temp_new(TCG_TYPE_I32); 5648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_movi_i32(t0, 0); 5658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op5(INDEX_op_divu2_i32, ret, t0, arg1, t0, arg2); 5668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 5678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 5688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_remu_i32(TCGv ret, TCGv arg1, TCGv arg2) 5708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0; 5728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_temp_new(TCG_TYPE_I32); 5738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_movi_i32(t0, 0); 5748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op5(INDEX_op_divu2_i32, t0, ret, arg1, t0, arg2); 5758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 5768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 5778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 5788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TCG_TARGET_REG_BITS == 32 5808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_mov_i64(TCGv ret, TCGv arg) 5828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (GET_TCGV(ret) != GET_TCGV(arg)) { 5848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i32(ret, arg); 5858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i32(TCGV_HIGH(ret), TCGV_HIGH(arg)); 5868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 5878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 5888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_movi_i64(TCGv ret, int64_t arg) 5908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_movi_i32(ret, arg); 5928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_movi_i32(TCGV_HIGH(ret), arg >> 32); 5938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 5948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ld8u_i64(TCGv ret, TCGv arg2, tcg_target_long offset) 5968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_ld8u_i32(ret, arg2, offset); 5988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_movi_i32(TCGV_HIGH(ret), 0); 5998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 6008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ld8s_i64(TCGv ret, TCGv arg2, tcg_target_long offset) 6028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 6038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_ld8s_i32(ret, arg2, offset); 6048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sari_i32(TCGV_HIGH(ret), ret, 31); 6058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 6068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ld16u_i64(TCGv ret, TCGv arg2, tcg_target_long offset) 6088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 6098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_ld16u_i32(ret, arg2, offset); 6108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_movi_i32(TCGV_HIGH(ret), 0); 6118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 6128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ld16s_i64(TCGv ret, TCGv arg2, tcg_target_long offset) 6148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 6158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_ld16s_i32(ret, arg2, offset); 6168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sari_i32(TCGV_HIGH(ret), ret, 31); 6178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 6188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ld32u_i64(TCGv ret, TCGv arg2, tcg_target_long offset) 6208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 6218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_ld_i32(ret, arg2, offset); 6228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_movi_i32(TCGV_HIGH(ret), 0); 6238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 6248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ld32s_i64(TCGv ret, TCGv arg2, tcg_target_long offset) 6268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 6278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_ld_i32(ret, arg2, offset); 6288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sari_i32(TCGV_HIGH(ret), ret, 31); 6298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 6308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ld_i64(TCGv ret, TCGv arg2, tcg_target_long offset) 6328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 6338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* since arg2 and ret have different types, they cannot be the 6348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project same temporary */ 6358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef TCG_TARGET_WORDS_BIGENDIAN 6368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_ld_i32(TCGV_HIGH(ret), arg2, offset); 6378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_ld_i32(ret, arg2, offset + 4); 6388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 6398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_ld_i32(ret, arg2, offset); 6408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_ld_i32(TCGV_HIGH(ret), arg2, offset + 4); 6418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 6428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 6438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_st8_i64(TCGv arg1, TCGv arg2, tcg_target_long offset) 6458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 6468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_st8_i32(arg1, arg2, offset); 6478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 6488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_st16_i64(TCGv arg1, TCGv arg2, tcg_target_long offset) 6508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 6518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_st16_i32(arg1, arg2, offset); 6528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 6538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_st32_i64(TCGv arg1, TCGv arg2, tcg_target_long offset) 6558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 6568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_st_i32(arg1, arg2, offset); 6578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 6588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_st_i64(TCGv arg1, TCGv arg2, tcg_target_long offset) 6608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 6618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef TCG_TARGET_WORDS_BIGENDIAN 6628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_st_i32(TCGV_HIGH(arg1), arg2, offset); 6638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_st_i32(arg1, arg2, offset + 4); 6648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 6658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_st_i32(arg1, arg2, offset); 6668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_st_i32(TCGV_HIGH(arg1), arg2, offset + 4); 6678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 6688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 6698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_add_i64(TCGv ret, TCGv arg1, TCGv arg2) 6718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 6728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op6(INDEX_op_add2_i32, ret, TCGV_HIGH(ret), 6738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project arg1, TCGV_HIGH(arg1), arg2, TCGV_HIGH(arg2)); 6748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 6758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_addi_i64(TCGv ret, TCGv arg1, int64_t arg2) 6778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 6788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i64(arg2); 6798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_add_i64(ret, arg1, t0); 6808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 6818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 6828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_sub_i64(TCGv ret, TCGv arg1, TCGv arg2) 6848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 6858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op6(INDEX_op_sub2_i32, ret, TCGV_HIGH(ret), 6868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project arg1, TCGV_HIGH(arg1), arg2, TCGV_HIGH(arg2)); 6878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 6888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_subi_i64(TCGv ret, TCGv arg1, int64_t arg2) 6908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 6918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i64(arg2); 6928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sub_i64(ret, arg1, t0); 6938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 6948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 6958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_and_i64(TCGv ret, TCGv arg1, TCGv arg2) 6978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 6988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_and_i32(ret, arg1, arg2); 6998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_and_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2)); 7008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 7018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_andi_i64(TCGv ret, TCGv arg1, int64_t arg2) 7038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 7048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_andi_i32(ret, arg1, arg2); 7058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_andi_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), arg2 >> 32); 7068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 7078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_or_i64(TCGv ret, TCGv arg1, TCGv arg2) 7098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 7108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_or_i32(ret, arg1, arg2); 7118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_or_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2)); 7128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 7138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ori_i64(TCGv ret, TCGv arg1, int64_t arg2) 7158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 7168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_ori_i32(ret, arg1, arg2); 7178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_ori_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), arg2 >> 32); 7188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 7198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_xor_i64(TCGv ret, TCGv arg1, TCGv arg2) 7218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 7228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_xor_i32(ret, arg1, arg2); 7238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_xor_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2)); 7248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 7258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_xori_i64(TCGv ret, TCGv arg1, int64_t arg2) 7278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 7288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_xori_i32(ret, arg1, arg2); 7298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_xori_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), arg2 >> 32); 7308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 7318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* XXX: use generic code when basic block handling is OK or CPU 7338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project specific code (x86) */ 7348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_shl_i64(TCGv ret, TCGv arg1, TCGv arg2) 7358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 7368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_helper_1_2(tcg_helper_shl_i64, ret, arg1, arg2); 7378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 7388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_shli_i64(TCGv ret, TCGv arg1, int64_t arg2) 7408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 7418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shifti_i64(ret, arg1, arg2, 0, 0); 7428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 7438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_shr_i64(TCGv ret, TCGv arg1, TCGv arg2) 7458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 7468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_helper_1_2(tcg_helper_shr_i64, ret, arg1, arg2); 7478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 7488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_shri_i64(TCGv ret, TCGv arg1, int64_t arg2) 7508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 7518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shifti_i64(ret, arg1, arg2, 1, 0); 7528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 7538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_sar_i64(TCGv ret, TCGv arg1, TCGv arg2) 7558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 7568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_helper_1_2(tcg_helper_sar_i64, ret, arg1, arg2); 7578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 7588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_sari_i64(TCGv ret, TCGv arg1, int64_t arg2) 7608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 7618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shifti_i64(ret, arg1, arg2, 1, 1); 7628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 7638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_brcond_i64(int cond, TCGv arg1, TCGv arg2, 7658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int label_index) 7668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 7678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op6ii(INDEX_op_brcond2_i32, 7688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project arg1, TCGV_HIGH(arg1), arg2, TCGV_HIGH(arg2), 7698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project cond, label_index); 7708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 7718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_mul_i64(TCGv ret, TCGv arg1, TCGv arg2) 7738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 7748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0, t1; 7758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_temp_new(TCG_TYPE_I64); 7778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t1 = tcg_temp_new(TCG_TYPE_I32); 7788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op4(INDEX_op_mulu2_i32, t0, TCGV_HIGH(t0), arg1, arg2); 7808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mul_i32(t1, arg1, TCGV_HIGH(arg2)); 7828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_add_i32(TCGV_HIGH(t0), TCGV_HIGH(t0), t1); 7838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mul_i32(t1, TCGV_HIGH(arg1), arg2); 7848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_add_i32(TCGV_HIGH(t0), TCGV_HIGH(t0), t1); 7858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i64(ret, t0); 7878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 7888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t1); 7898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 7908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_muli_i64(TCGv ret, TCGv arg1, int64_t arg2) 7928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 7938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i64(arg2); 7948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mul_i64(ret, arg1, t0); 7958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 7968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 7978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_div_i64(TCGv ret, TCGv arg1, TCGv arg2) 7998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 8008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_helper_1_2(tcg_helper_div_i64, ret, arg1, arg2); 8018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 8028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_rem_i64(TCGv ret, TCGv arg1, TCGv arg2) 8048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 8058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_helper_1_2(tcg_helper_rem_i64, ret, arg1, arg2); 8068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 8078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_divu_i64(TCGv ret, TCGv arg1, TCGv arg2) 8098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 8108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_helper_1_2(tcg_helper_divu_i64, ret, arg1, arg2); 8118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 8128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_remu_i64(TCGv ret, TCGv arg1, TCGv arg2) 8148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 8158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_helper_1_2(tcg_helper_remu_i64, ret, arg1, arg2); 8168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 8178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 8198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_mov_i64(TCGv ret, TCGv arg) 8218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 8228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (GET_TCGV(ret) != GET_TCGV(arg)) 8238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op2(INDEX_op_mov_i64, ret, arg); 8248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 8258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_movi_i64(TCGv ret, int64_t arg) 8278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 8288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op2i(INDEX_op_movi_i64, ret, arg); 8298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 8308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ld8u_i64(TCGv ret, TCGv arg2, 8328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_target_long offset) 8338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 8348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_ld8u_i64, ret, arg2, offset); 8358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 8368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ld8s_i64(TCGv ret, TCGv arg2, 8388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_target_long offset) 8398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 8408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_ld8s_i64, ret, arg2, offset); 8418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 8428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ld16u_i64(TCGv ret, TCGv arg2, 8448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_target_long offset) 8458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 8468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_ld16u_i64, ret, arg2, offset); 8478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 8488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ld16s_i64(TCGv ret, TCGv arg2, 8508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_target_long offset) 8518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 8528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_ld16s_i64, ret, arg2, offset); 8538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 8548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ld32u_i64(TCGv ret, TCGv arg2, 8568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_target_long offset) 8578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 8588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_ld32u_i64, ret, arg2, offset); 8598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 8608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ld32s_i64(TCGv ret, TCGv arg2, 8628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_target_long offset) 8638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 8648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_ld32s_i64, ret, arg2, offset); 8658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 8668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ld_i64(TCGv ret, TCGv arg2, tcg_target_long offset) 8688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 8698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_ld_i64, ret, arg2, offset); 8708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 8718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_st8_i64(TCGv arg1, TCGv arg2, 8738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_target_long offset) 8748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 8758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_st8_i64, arg1, arg2, offset); 8768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 8778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_st16_i64(TCGv arg1, TCGv arg2, 8798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_target_long offset) 8808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 8818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_st16_i64, arg1, arg2, offset); 8828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 8838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_st32_i64(TCGv arg1, TCGv arg2, 8858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_target_long offset) 8868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 8878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_st32_i64, arg1, arg2, offset); 8888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 8898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_st_i64(TCGv arg1, TCGv arg2, tcg_target_long offset) 8918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 8928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_st_i64, arg1, arg2, offset); 8938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 8948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_add_i64(TCGv ret, TCGv arg1, TCGv arg2) 8968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 8978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_add_i64, ret, arg1, arg2); 8988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 8998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_addi_i64(TCGv ret, TCGv arg1, int64_t arg2) 9018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 9028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i64(arg2); 9038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_add_i64(ret, arg1, t0); 9048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 9058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 9068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_sub_i64(TCGv ret, TCGv arg1, TCGv arg2) 9088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 9098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_sub_i64, ret, arg1, arg2); 9108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 9118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_subi_i64(TCGv ret, TCGv arg1, int64_t arg2) 9138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 9148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i64(arg2); 9158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sub_i64(ret, arg1, t0); 9168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 9178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 9188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_and_i64(TCGv ret, TCGv arg1, TCGv arg2) 9208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 9218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_and_i64, ret, arg1, arg2); 9228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 9238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_andi_i64(TCGv ret, TCGv arg1, int64_t arg2) 9258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 9268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i64(arg2); 9278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_and_i64(ret, arg1, t0); 9288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 9298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 9308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_or_i64(TCGv ret, TCGv arg1, TCGv arg2) 9328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 9338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_or_i64, ret, arg1, arg2); 9348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 9358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ori_i64(TCGv ret, TCGv arg1, int64_t arg2) 9378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 9388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i64(arg2); 9398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_or_i64(ret, arg1, t0); 9408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 9418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 9428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_xor_i64(TCGv ret, TCGv arg1, TCGv arg2) 9448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 9458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_xor_i64, ret, arg1, arg2); 9468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 9478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_xori_i64(TCGv ret, TCGv arg1, int64_t arg2) 9498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 9508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i64(arg2); 9518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_xor_i64(ret, arg1, t0); 9528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 9538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 9548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_shl_i64(TCGv ret, TCGv arg1, TCGv arg2) 9568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 9578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_shl_i64, ret, arg1, arg2); 9588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 9598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_shli_i64(TCGv ret, TCGv arg1, int64_t arg2) 9618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 9628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (arg2 == 0) { 9638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i64(ret, arg1); 9648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } else { 9658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i64(arg2); 9668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shl_i64(ret, arg1, t0); 9678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 9688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 9698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 9708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_shr_i64(TCGv ret, TCGv arg1, TCGv arg2) 9728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 9738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_shr_i64, ret, arg1, arg2); 9748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 9758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_shri_i64(TCGv ret, TCGv arg1, int64_t arg2) 9778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 9788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (arg2 == 0) { 9798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i64(ret, arg1); 9808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } else { 9818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i64(arg2); 9828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shr_i64(ret, arg1, t0); 9838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 9848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 9858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 9868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_sar_i64(TCGv ret, TCGv arg1, TCGv arg2) 9888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 9898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_sar_i64, ret, arg1, arg2); 9908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 9918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_sari_i64(TCGv ret, TCGv arg1, int64_t arg2) 9938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 9948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (arg2 == 0) { 9958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i64(ret, arg1); 9968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } else { 9978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i64(arg2); 9988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sar_i64(ret, arg1, t0); 9998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 10008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 10018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 10028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_brcond_i64(int cond, TCGv arg1, TCGv arg2, 10048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int label_index) 10058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 10068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op4ii(INDEX_op_brcond_i64, arg1, arg2, cond, label_index); 10078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 10088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_mul_i64(TCGv ret, TCGv arg1, TCGv arg2) 10108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 10118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_mul_i64, ret, arg1, arg2); 10128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 10138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_muli_i64(TCGv ret, TCGv arg1, int64_t arg2) 10158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 10168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i64(arg2); 10178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mul_i64(ret, arg1, t0); 10188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 10198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 10208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef TCG_TARGET_HAS_div_i64 10228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_div_i64(TCGv ret, TCGv arg1, TCGv arg2) 10238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 10248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_div_i64, ret, arg1, arg2); 10258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 10268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_rem_i64(TCGv ret, TCGv arg1, TCGv arg2) 10288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 10298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_rem_i64, ret, arg1, arg2); 10308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 10318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_divu_i64(TCGv ret, TCGv arg1, TCGv arg2) 10338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 10348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_divu_i64, ret, arg1, arg2); 10358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 10368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_remu_i64(TCGv ret, TCGv arg1, TCGv arg2) 10388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 10398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3(INDEX_op_remu_i64, ret, arg1, arg2); 10408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 10418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 10428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_div_i64(TCGv ret, TCGv arg1, TCGv arg2) 10438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 10448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0; 10458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_temp_new(TCG_TYPE_I64); 10468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sari_i64(t0, arg1, 63); 10478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op5(INDEX_op_div2_i64, ret, t0, arg1, t0, arg2); 10488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 10498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 10508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_rem_i64(TCGv ret, TCGv arg1, TCGv arg2) 10528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 10538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0; 10548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_temp_new(TCG_TYPE_I64); 10558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sari_i64(t0, arg1, 63); 10568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op5(INDEX_op_div2_i64, t0, ret, arg1, t0, arg2); 10578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 10588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 10598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_divu_i64(TCGv ret, TCGv arg1, TCGv arg2) 10618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 10628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0; 10638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_temp_new(TCG_TYPE_I64); 10648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_movi_i64(t0, 0); 10658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op5(INDEX_op_divu2_i64, ret, t0, arg1, t0, arg2); 10668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 10678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 10688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_remu_i64(TCGv ret, TCGv arg1, TCGv arg2) 10708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 10718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0; 10728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_temp_new(TCG_TYPE_I64); 10738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_movi_i64(t0, 0); 10748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op5(INDEX_op_divu2_i64, t0, ret, arg1, t0, arg2); 10758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 10768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 10778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 10788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 10808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_brcondi_i64(int cond, TCGv arg1, int64_t arg2, 10828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int label_index) 10838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 10848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i64(arg2); 10858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_brcond_i64(cond, arg1, t0, label_index); 10868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 10878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 10888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/***************************************/ 10908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* optional operations */ 10918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ext8s_i32(TCGv ret, TCGv arg) 10938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 10948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef TCG_TARGET_HAS_ext8s_i32 10958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op2(INDEX_op_ext8s_i32, ret, arg); 10968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 10978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shli_i32(ret, arg, 24); 10988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sari_i32(ret, ret, 24); 10998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 11008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 11018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ext16s_i32(TCGv ret, TCGv arg) 11038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 11048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef TCG_TARGET_HAS_ext16s_i32 11058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op2(INDEX_op_ext16s_i32, ret, arg); 11068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 11078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shli_i32(ret, arg, 16); 11088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sari_i32(ret, ret, 16); 11098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 11108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 11118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These are currently just for convenience. 11138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project We assume a target will recognise these automatically . */ 11148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ext8u_i32(TCGv ret, TCGv arg) 11158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 11168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_andi_i32(ret, arg, 0xffu); 11178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 11188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ext16u_i32(TCGv ret, TCGv arg) 11208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 11218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_andi_i32(ret, arg, 0xffffu); 11228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 11238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Note: we assume the two high bytes are set to zero */ 11258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_bswap16_i32(TCGv ret, TCGv arg) 11268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 11278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef TCG_TARGET_HAS_bswap16_i32 11288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op2(INDEX_op_bswap16_i32, ret, arg); 11298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 11308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0, t1; 11318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_temp_new(TCG_TYPE_I32); 11328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t1 = tcg_temp_new(TCG_TYPE_I32); 11338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shri_i32(t0, arg, 8); 11358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_andi_i32(t1, arg, 0x000000ff); 11368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shli_i32(t1, t1, 8); 11378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_or_i32(ret, t0, t1); 11388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 11398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t1); 11408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 11418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 11428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_bswap_i32(TCGv ret, TCGv arg) 11448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 11458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef TCG_TARGET_HAS_bswap_i32 11468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op2(INDEX_op_bswap_i32, ret, arg); 11478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 11488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0, t1; 11498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_temp_new(TCG_TYPE_I32); 11508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t1 = tcg_temp_new(TCG_TYPE_I32); 11518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shli_i32(t0, arg, 24); 11538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_andi_i32(t1, arg, 0x0000ff00); 11558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shli_i32(t1, t1, 8); 11568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_or_i32(t0, t0, t1); 11578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shri_i32(t1, arg, 8); 11598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_andi_i32(t1, t1, 0x0000ff00); 11608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_or_i32(t0, t0, t1); 11618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shri_i32(t1, arg, 24); 11638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_or_i32(ret, t0, t1); 11648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 11658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t1); 11668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 11678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 11688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TCG_TARGET_REG_BITS == 32 11708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ext8s_i64(TCGv ret, TCGv arg) 11718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 11728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_ext8s_i32(ret, arg); 11738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sari_i32(TCGV_HIGH(ret), ret, 31); 11748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 11758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ext16s_i64(TCGv ret, TCGv arg) 11778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 11788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_ext16s_i32(ret, arg); 11798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sari_i32(TCGV_HIGH(ret), ret, 31); 11808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 11818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ext32s_i64(TCGv ret, TCGv arg) 11838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 11848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i32(ret, arg); 11858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sari_i32(TCGV_HIGH(ret), ret, 31); 11868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 11878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ext8u_i64(TCGv ret, TCGv arg) 11898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 11908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_ext8u_i32(ret, arg); 11918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_movi_i32(TCGV_HIGH(ret), 0); 11928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 11938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ext16u_i64(TCGv ret, TCGv arg) 11958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 11968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_ext16u_i32(ret, arg); 11978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_movi_i32(TCGV_HIGH(ret), 0); 11988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 11998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ext32u_i64(TCGv ret, TCGv arg) 12018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 12028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i32(ret, arg); 12038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_movi_i32(TCGV_HIGH(ret), 0); 12048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 12058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_trunc_i64_i32(TCGv ret, TCGv arg) 12078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 12088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i32(ret, arg); 12098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 12108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_extu_i32_i64(TCGv ret, TCGv arg) 12128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 12138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i32(ret, arg); 12148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_movi_i32(TCGV_HIGH(ret), 0); 12158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 12168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ext_i32_i64(TCGv ret, TCGv arg) 12188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 12198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i32(ret, arg); 12208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sari_i32(TCGV_HIGH(ret), ret, 31); 12218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 12228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_bswap_i64(TCGv ret, TCGv arg) 12248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 12258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0, t1; 12268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_temp_new(TCG_TYPE_I32); 12278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t1 = tcg_temp_new(TCG_TYPE_I32); 12288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_bswap_i32(t0, arg); 12308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_bswap_i32(t1, TCGV_HIGH(arg)); 12318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i32(ret, t1); 12328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i32(TCGV_HIGH(ret), t0); 12338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 12348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t1); 12358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 12368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 12378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ext8s_i64(TCGv ret, TCGv arg) 12398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 12408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef TCG_TARGET_HAS_ext8s_i64 12418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op2(INDEX_op_ext8s_i64, ret, arg); 12428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 12438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shli_i64(ret, arg, 56); 12448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sari_i64(ret, ret, 56); 12458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 12468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 12478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ext16s_i64(TCGv ret, TCGv arg) 12498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 12508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef TCG_TARGET_HAS_ext16s_i64 12518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op2(INDEX_op_ext16s_i64, ret, arg); 12528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 12538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shli_i64(ret, arg, 48); 12548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sari_i64(ret, ret, 48); 12558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 12568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 12578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ext32s_i64(TCGv ret, TCGv arg) 12598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 12608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef TCG_TARGET_HAS_ext32s_i64 12618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op2(INDEX_op_ext32s_i64, ret, arg); 12628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 12638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shli_i64(ret, arg, 32); 12648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sari_i64(ret, ret, 32); 12658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 12668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 12678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ext8u_i64(TCGv ret, TCGv arg) 12698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 12708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_andi_i64(ret, arg, 0xffu); 12718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 12728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ext16u_i64(TCGv ret, TCGv arg) 12748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 12758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_andi_i64(ret, arg, 0xffffu); 12768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 12778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ext32u_i64(TCGv ret, TCGv arg) 12798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 12808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_andi_i64(ret, arg, 0xffffffffu); 12818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 12828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Note: we assume the target supports move between 32 and 64 bit 12848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project registers. This will probably break MIPS64 targets. */ 12858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_trunc_i64_i32(TCGv ret, TCGv arg) 12868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 12878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_mov_i32(ret, arg); 12888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 12898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Note: we assume the target supports move between 32 and 64 bit 12918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project registers */ 12928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_extu_i32_i64(TCGv ret, TCGv arg) 12938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 12948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_andi_i64(ret, arg, 0xffffffffu); 12958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 12968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Note: we assume the target supports move between 32 and 64 bit 12988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project registers */ 12998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_ext_i32_i64(TCGv ret, TCGv arg) 13008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 13018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_ext32s_i64(ret, arg); 13028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 13038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_bswap_i64(TCGv ret, TCGv arg) 13058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 13068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef TCG_TARGET_HAS_bswap_i64 13078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op2(INDEX_op_bswap_i64, ret, arg); 13088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 13098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0, t1; 13108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t0 = tcg_temp_new(TCG_TYPE_I32); 13118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project t1 = tcg_temp_new(TCG_TYPE_I32); 13128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shli_i64(t0, arg, 56); 13148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_andi_i64(t1, arg, 0x0000ff00); 13168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shli_i64(t1, t1, 40); 13178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_or_i64(t0, t0, t1); 13188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_andi_i64(t1, arg, 0x00ff0000); 13208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shli_i64(t1, t1, 24); 13218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_or_i64(t0, t0, t1); 13228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_andi_i64(t1, arg, 0xff000000); 13248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shli_i64(t1, t1, 8); 13258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_or_i64(t0, t0, t1); 13268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shri_i64(t1, arg, 8); 13288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_andi_i64(t1, t1, 0xff000000); 13298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_or_i64(t0, t0, t1); 13308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shri_i64(t1, arg, 24); 13328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_andi_i64(t1, t1, 0x00ff0000); 13338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_or_i64(t0, t0, t1); 13348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shri_i64(t1, arg, 40); 13368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_andi_i64(t1, t1, 0x0000ff00); 13378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_or_i64(t0, t0, t1); 13388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_shri_i64(t1, arg, 56); 13408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_or_i64(ret, t0, t1); 13418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 13428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t1); 13438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 13448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 13458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 13478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_neg_i32(TCGv ret, TCGv arg) 13498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 13508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef TCG_TARGET_HAS_neg_i32 13518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op2(INDEX_op_neg_i32, ret, arg); 13528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 13538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i32(0); 13548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sub_i32(ret, t0, arg); 13558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 13568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 13578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 13588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_neg_i64(TCGv ret, TCGv arg) 13608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 13618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef TCG_TARGET_HAS_neg_i64 13628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op2(INDEX_op_neg_i64, ret, arg); 13638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 13648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TCGv t0 = tcg_const_i64(0); 13658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sub_i64(ret, t0, arg); 13668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_temp_free(t0); 13678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 13688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 13698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_not_i32(TCGv ret, TCGv arg) 13718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 13728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_xori_i32(ret, arg, -1); 13738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 13748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_not_i64(TCGv ret, TCGv arg) 13768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 13778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_xori_i64(ret, arg, -1); 13788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 13798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_discard_i32(TCGv arg) 13818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 13828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op1(INDEX_op_discard, arg); 13838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 13848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TCG_TARGET_REG_BITS == 32 13868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_discard_i64(TCGv arg) 13878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 13888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_discard_i32(arg); 13898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_discard_i32(TCGV_HIGH(arg)); 13908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 13918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 13928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_discard_i64(TCGv arg) 13938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 13948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op1(INDEX_op_discard, arg); 13958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 13968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 13978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/***************************************/ 13998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* QEMU specific operations. Their type depend on the QEMU CPU 14008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project type. */ 14018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef TARGET_LONG_BITS 14028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#error must include QEMU headers 14038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 14048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* debug info: write the PC of the corresponding QEMU CPU instruction */ 14068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_debug_insn_start(uint64_t pc) 14078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 14088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* XXX: must really use a 32 bit size for TCGArg in all cases */ 14098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TARGET_LONG_BITS > TCG_TARGET_REG_BITS 14108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op2ii(INDEX_op_debug_insn_start, 14118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project (uint32_t)(pc), (uint32_t)(pc >> 32)); 14128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 14138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op1i(INDEX_op_debug_insn_start, pc); 14148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 14158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 14168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_exit_tb(tcg_target_long val) 14188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 14198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op1i(INDEX_op_exit_tb, val); 14208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 14218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_goto_tb(int idx) 14238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 14248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op1i(INDEX_op_goto_tb, idx); 14258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 14268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TCG_TARGET_REG_BITS == 32 14288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_ld8u(TCGv ret, TCGv addr, int mem_index) 14298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 14308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TARGET_LONG_BITS == 32 14318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_ld8u, ret, addr, mem_index); 14328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 14338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op4i(INDEX_op_qemu_ld8u, ret, addr, TCGV_HIGH(addr), mem_index); 14348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_movi_i32(TCGV_HIGH(ret), 0); 14358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 14368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 14378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_ld8s(TCGv ret, TCGv addr, int mem_index) 14398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 14408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TARGET_LONG_BITS == 32 14418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_ld8s, ret, addr, mem_index); 14428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 14438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op4i(INDEX_op_qemu_ld8s, ret, addr, TCGV_HIGH(addr), mem_index); 14448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sari_i32(TCGV_HIGH(ret), ret, 31); 14458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 14468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 14478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_ld16u(TCGv ret, TCGv addr, int mem_index) 14498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 14508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TARGET_LONG_BITS == 32 14518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_ld16u, ret, addr, mem_index); 14528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 14538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op4i(INDEX_op_qemu_ld16u, ret, addr, TCGV_HIGH(addr), mem_index); 14548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_movi_i32(TCGV_HIGH(ret), 0); 14558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 14568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 14578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_ld16s(TCGv ret, TCGv addr, int mem_index) 14598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 14608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TARGET_LONG_BITS == 32 14618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_ld16s, ret, addr, mem_index); 14628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 14638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op4i(INDEX_op_qemu_ld16s, ret, addr, TCGV_HIGH(addr), mem_index); 14648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sari_i32(TCGV_HIGH(ret), ret, 31); 14658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 14668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 14678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_ld32u(TCGv ret, TCGv addr, int mem_index) 14698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 14708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TARGET_LONG_BITS == 32 14718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_ld32u, ret, addr, mem_index); 14728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 14738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op4i(INDEX_op_qemu_ld32u, ret, addr, TCGV_HIGH(addr), mem_index); 14748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_movi_i32(TCGV_HIGH(ret), 0); 14758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 14768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 14778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_ld32s(TCGv ret, TCGv addr, int mem_index) 14798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 14808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TARGET_LONG_BITS == 32 14818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_ld32u, ret, addr, mem_index); 14828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 14838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op4i(INDEX_op_qemu_ld32u, ret, addr, TCGV_HIGH(addr), mem_index); 14848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_sari_i32(TCGV_HIGH(ret), ret, 31); 14858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 14868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 14878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_ld64(TCGv ret, TCGv addr, int mem_index) 14898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 14908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TARGET_LONG_BITS == 32 14918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op4i(INDEX_op_qemu_ld64, ret, TCGV_HIGH(ret), addr, mem_index); 14928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 14938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op5i(INDEX_op_qemu_ld64, ret, TCGV_HIGH(ret), 14948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project addr, TCGV_HIGH(addr), mem_index); 14958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 14968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 14978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_st8(TCGv arg, TCGv addr, int mem_index) 14998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 15008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TARGET_LONG_BITS == 32 15018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_st8, arg, addr, mem_index); 15028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 15038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op4i(INDEX_op_qemu_st8, arg, addr, TCGV_HIGH(addr), mem_index); 15048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 15058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 15068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_st16(TCGv arg, TCGv addr, int mem_index) 15088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 15098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TARGET_LONG_BITS == 32 15108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_st16, arg, addr, mem_index); 15118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 15128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op4i(INDEX_op_qemu_st16, arg, addr, TCGV_HIGH(addr), mem_index); 15138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 15148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 15158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_st32(TCGv arg, TCGv addr, int mem_index) 15178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 15188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TARGET_LONG_BITS == 32 15198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_st32, arg, addr, mem_index); 15208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 15218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op4i(INDEX_op_qemu_st32, arg, addr, TCGV_HIGH(addr), mem_index); 15228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 15238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 15248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_st64(TCGv arg, TCGv addr, int mem_index) 15268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 15278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TARGET_LONG_BITS == 32 15288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op4i(INDEX_op_qemu_st64, arg, TCGV_HIGH(arg), addr, mem_index); 15298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 15308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op5i(INDEX_op_qemu_st64, arg, TCGV_HIGH(arg), 15318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project addr, TCGV_HIGH(addr), mem_index); 15328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 15338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 15348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ld_ptr tcg_gen_ld_i32 15368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_discard_ptr tcg_gen_discard_i32 15378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else /* TCG_TARGET_REG_BITS == 32 */ 15398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_ld8u(TCGv ret, TCGv addr, int mem_index) 15418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 15428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_ld8u, ret, addr, mem_index); 15438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 15448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_ld8s(TCGv ret, TCGv addr, int mem_index) 15468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 15478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_ld8s, ret, addr, mem_index); 15488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 15498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_ld16u(TCGv ret, TCGv addr, int mem_index) 15518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 15528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_ld16u, ret, addr, mem_index); 15538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 15548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_ld16s(TCGv ret, TCGv addr, int mem_index) 15568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 15578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_ld16s, ret, addr, mem_index); 15588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 15598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_ld32u(TCGv ret, TCGv addr, int mem_index) 15618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 15628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_ld32u, ret, addr, mem_index); 15638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 15648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_ld32s(TCGv ret, TCGv addr, int mem_index) 15668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 15678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_ld32s, ret, addr, mem_index); 15688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 15698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_ld64(TCGv ret, TCGv addr, int mem_index) 15718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 15728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_ld64, ret, addr, mem_index); 15738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 15748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_st8(TCGv arg, TCGv addr, int mem_index) 15768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 15778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_st8, arg, addr, mem_index); 15788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 15798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_st16(TCGv arg, TCGv addr, int mem_index) 15818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 15828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_st16, arg, addr, mem_index); 15838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 15848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_st32(TCGv arg, TCGv addr, int mem_index) 15868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 15878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_st32, arg, addr, mem_index); 15888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 15898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void tcg_gen_qemu_st64(TCGv arg, TCGv addr, int mem_index) 15918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 15928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project tcg_gen_op3i(INDEX_op_qemu_st64, arg, addr, mem_index); 15938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 15948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ld_ptr tcg_gen_ld_i64 15968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_discard_ptr tcg_gen_discard_i64 15978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* TCG_TARGET_REG_BITS != 32 */ 15998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 16008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TARGET_LONG_BITS == 64 16018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TCG_TYPE_TL TCG_TYPE_I64 16028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_movi_tl tcg_gen_movi_i64 16038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_mov_tl tcg_gen_mov_i64 16048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ld8u_tl tcg_gen_ld8u_i64 16058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ld8s_tl tcg_gen_ld8s_i64 16068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ld16u_tl tcg_gen_ld16u_i64 16078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ld16s_tl tcg_gen_ld16s_i64 16088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ld32u_tl tcg_gen_ld32u_i64 16098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ld32s_tl tcg_gen_ld32s_i64 16108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ld_tl tcg_gen_ld_i64 16118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_st8_tl tcg_gen_st8_i64 16128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_st16_tl tcg_gen_st16_i64 16138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_st32_tl tcg_gen_st32_i64 16148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_st_tl tcg_gen_st_i64 16158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_add_tl tcg_gen_add_i64 16168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_addi_tl tcg_gen_addi_i64 16178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_sub_tl tcg_gen_sub_i64 16188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_neg_tl tcg_gen_neg_i64 16198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_subi_tl tcg_gen_subi_i64 16208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_and_tl tcg_gen_and_i64 16218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_andi_tl tcg_gen_andi_i64 16228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_or_tl tcg_gen_or_i64 16238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ori_tl tcg_gen_ori_i64 16248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_xor_tl tcg_gen_xor_i64 16258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_xori_tl tcg_gen_xori_i64 16268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_not_tl tcg_gen_not_i64 16278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_shl_tl tcg_gen_shl_i64 16288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_shli_tl tcg_gen_shli_i64 16298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_shr_tl tcg_gen_shr_i64 16308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_shri_tl tcg_gen_shri_i64 16318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_sar_tl tcg_gen_sar_i64 16328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_sari_tl tcg_gen_sari_i64 16338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_brcond_tl tcg_gen_brcond_i64 16348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_brcondi_tl tcg_gen_brcondi_i64 16358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_mul_tl tcg_gen_mul_i64 16368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_muli_tl tcg_gen_muli_i64 16378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_discard_tl tcg_gen_discard_i64 16388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_trunc_tl_i32 tcg_gen_trunc_i64_i32 16398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_trunc_i64_tl tcg_gen_mov_i64 16408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_extu_i32_tl tcg_gen_extu_i32_i64 16418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ext_i32_tl tcg_gen_ext_i32_i64 16428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_extu_tl_i64 tcg_gen_mov_i64 16438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ext_tl_i64 tcg_gen_mov_i64 16448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ext8u_tl tcg_gen_ext8u_i64 16458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ext8s_tl tcg_gen_ext8s_i64 16468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ext16u_tl tcg_gen_ext16u_i64 16478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ext16s_tl tcg_gen_ext16s_i64 16488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ext32u_tl tcg_gen_ext32u_i64 16498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ext32s_tl tcg_gen_ext32s_i64 16508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_const_tl tcg_const_i64 16518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 16528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TCG_TYPE_TL TCG_TYPE_I32 16538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_movi_tl tcg_gen_movi_i32 16548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_mov_tl tcg_gen_mov_i32 16558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ld8u_tl tcg_gen_ld8u_i32 16568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ld8s_tl tcg_gen_ld8s_i32 16578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ld16u_tl tcg_gen_ld16u_i32 16588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ld16s_tl tcg_gen_ld16s_i32 16598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ld32u_tl tcg_gen_ld_i32 16608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ld32s_tl tcg_gen_ld_i32 16618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ld_tl tcg_gen_ld_i32 16628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_st8_tl tcg_gen_st8_i32 16638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_st16_tl tcg_gen_st16_i32 16648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_st32_tl tcg_gen_st_i32 16658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_st_tl tcg_gen_st_i32 16668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_add_tl tcg_gen_add_i32 16678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_addi_tl tcg_gen_addi_i32 16688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_sub_tl tcg_gen_sub_i32 16698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_neg_tl tcg_gen_neg_i32 16708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_subi_tl tcg_gen_subi_i32 16718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_and_tl tcg_gen_and_i32 16728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_andi_tl tcg_gen_andi_i32 16738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_or_tl tcg_gen_or_i32 16748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ori_tl tcg_gen_ori_i32 16758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_xor_tl tcg_gen_xor_i32 16768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_xori_tl tcg_gen_xori_i32 16778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_not_tl tcg_gen_not_i32 16788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_shl_tl tcg_gen_shl_i32 16798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_shli_tl tcg_gen_shli_i32 16808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_shr_tl tcg_gen_shr_i32 16818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_shri_tl tcg_gen_shri_i32 16828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_sar_tl tcg_gen_sar_i32 16838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_sari_tl tcg_gen_sari_i32 16848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_brcond_tl tcg_gen_brcond_i32 16858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_brcondi_tl tcg_gen_brcondi_i32 16868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_mul_tl tcg_gen_mul_i32 16878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_muli_tl tcg_gen_muli_i32 16888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_discard_tl tcg_gen_discard_i32 16898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_trunc_tl_i32 tcg_gen_mov_i32 16908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_trunc_i64_tl tcg_gen_trunc_i64_i32 16918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_extu_i32_tl tcg_gen_mov_i32 16928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ext_i32_tl tcg_gen_mov_i32 16938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_extu_tl_i64 tcg_gen_extu_i32_i64 16948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ext_tl_i64 tcg_gen_ext_i32_i64 16958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ext8u_tl tcg_gen_ext8u_i32 16968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ext8s_tl tcg_gen_ext8s_i32 16978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ext16u_tl tcg_gen_ext16u_i32 16988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ext16s_tl tcg_gen_ext16s_i32 16998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ext32u_tl tcg_gen_mov_i32 17008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ext32s_tl tcg_gen_mov_i32 17018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_const_tl tcg_const_i32 17028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 17038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 17048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TCG_TARGET_REG_BITS == 32 17058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_add_ptr tcg_gen_add_i32 17068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_addi_ptr tcg_gen_addi_i32 17078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ext_i32_ptr tcg_gen_mov_i32 17088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else /* TCG_TARGET_REG_BITS == 32 */ 17098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_add_ptr tcg_gen_add_i64 17108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_addi_ptr tcg_gen_addi_i64 17118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define tcg_gen_ext_i32_ptr tcg_gen_ext_i32_i64 17128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* TCG_TARGET_REG_BITS != 32 */ 17138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1714