Commit 945ca823b9c5e3f99798d06f84939e610b362310

Authored by blueswir1
1 parent a7ec4229

Add concat32_i64 and concat_tl_i64 ops

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5282 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 2 changed files with 18 additions and 0 deletions
tcg/README
... ... @@ -269,6 +269,10 @@ Truncate t1 (64 bit) to t0 (32 bit)
269 269 Construct t0 (64-bit) taking the low half from t1 (32 bit) and the high half
270 270 from t2 (32 bit).
271 271  
  272 +* concat32_i64 t0, t1, t2
  273 +Construct t0 (64-bit) taking the low half from t1 (64 bit) and the high half
  274 +from t2 (64 bit).
  275 +
272 276 ********* Load/Store
273 277  
274 278 * ld_i32/i64 t0, t1, offset
... ...
tcg/tcg-op.h
... ... @@ -1412,6 +1412,18 @@ static inline void tcg_gen_concat_i32_i64(TCGv dest, TCGv low, TCGv high)
1412 1412 #endif
1413 1413 }
1414 1414  
  1415 +static inline void tcg_gen_concat32_i64(TCGv dest, TCGv low, TCGv high)
  1416 +{
  1417 +#if TCG_TARGET_REG_BITS == 32
  1418 + tcg_gen_concat_i32_i64(dest, low, high);
  1419 +#else
  1420 + TCGv tmp = tcg_temp_new(TCG_TYPE_I64);
  1421 + tcg_gen_shli_i64(tmp, high, 32);
  1422 + tcg_gen_or_i64(dest, low, tmp);
  1423 + tcg_temp_free(tmp);
  1424 +#endif
  1425 +}
  1426 +
1415 1427 /***************************************/
1416 1428 /* QEMU specific operations. Their type depend on the QEMU CPU
1417 1429 type. */
... ... @@ -1664,6 +1676,7 @@ static inline void tcg_gen_qemu_st64(TCGv arg, TCGv addr, int mem_index)
1664 1676 #define tcg_gen_ext16s_tl tcg_gen_ext16s_i64
1665 1677 #define tcg_gen_ext32u_tl tcg_gen_ext32u_i64
1666 1678 #define tcg_gen_ext32s_tl tcg_gen_ext32s_i64
  1679 +#define tcg_gen_concat_tl_i64 tcg_gen_concat32_i64
1667 1680 #define tcg_const_tl tcg_const_i64
1668 1681 #else
1669 1682 #define TCG_TYPE_TL TCG_TYPE_I32
... ... @@ -1715,6 +1728,7 @@ static inline void tcg_gen_qemu_st64(TCGv arg, TCGv addr, int mem_index)
1715 1728 #define tcg_gen_ext16s_tl tcg_gen_ext16s_i32
1716 1729 #define tcg_gen_ext32u_tl tcg_gen_mov_i32
1717 1730 #define tcg_gen_ext32s_tl tcg_gen_mov_i32
  1731 +#define tcg_gen_concat_tl_i64 tcg_gen_concat_i32_i64
1718 1732 #define tcg_const_tl tcg_const_i32
1719 1733 #endif
1720 1734  
... ...