Revision f0da3757

b/tcg/hppa/tcg-target.c
912 912
    tcg_out_mov(s, TCG_TYPE_I32, ret, scratch);
913 913
}
914 914

  
915
static void tcg_out_movcond(TCGContext *s, int cond, TCGArg ret,
916
                            TCGArg c1, TCGArg c2, int c2const,
917
                            TCGArg v1, int v1const)
918
{
919
    tcg_out_comclr(s, tcg_invert_cond(cond), TCG_REG_R0, c1, c2, c2const);
920
    if (v1const) {
921
        tcg_out_movi(s, TCG_TYPE_I32, ret, v1);
922
    } else {
923
        tcg_out_mov(s, TCG_TYPE_I32, ret, v1);
924
    }
925
}
926

  
915 927
#if defined(CONFIG_SOFTMMU)
916 928
#include "../../softmmu_defs.h"
917 929

  
......
1520 1532
                         args[3], const_args[3], args[4], const_args[4]);
1521 1533
        break;
1522 1534

  
1535
    case INDEX_op_movcond_i32:
1536
        tcg_out_movcond(s, args[5], args[0], args[1], args[2], const_args[2],
1537
                        args[3], const_args[3]);
1538
        break;
1539

  
1523 1540
    case INDEX_op_add2_i32:
1524 1541
        tcg_out_add2(s, args[0], args[1], args[2], args[3],
1525 1542
                     args[4], args[5], const_args[4]);
......
1628 1645
    { INDEX_op_setcond_i32, { "r", "rZ", "rI" } },
1629 1646
    { INDEX_op_setcond2_i32, { "r", "rZ", "rZ", "rI", "rI" } },
1630 1647

  
1648
    /* ??? We can actually support a signed 14-bit arg3, but we
1649
       only have existing constraints for a signed 11-bit.  */
1650
    { INDEX_op_movcond_i32, { "r", "rZ", "rI", "rI", "0" } },
1651

  
1631 1652
    { INDEX_op_add2_i32, { "r", "r", "rZ", "rZ", "rI", "rZ" } },
1632 1653
    { INDEX_op_sub2_i32, { "r", "r", "rI", "rZ", "rK", "rZ" } },
1633 1654

  
b/tcg/hppa/tcg-target.h
96 96
#define TCG_TARGET_HAS_nand_i32         0
97 97
#define TCG_TARGET_HAS_nor_i32          0
98 98
#define TCG_TARGET_HAS_deposit_i32      1
99
#define TCG_TARGET_HAS_movcond_i32      0
99
#define TCG_TARGET_HAS_movcond_i32      1
100 100

  
101 101
/* optional instructions automatically implemented */
102 102
#define TCG_TARGET_HAS_neg_i32          0 /* sub rd, 0, rs */

Also available in: Unified diff