Beispiel #1
0
def do_slt(**kw):
    # if (({subst}){rs} < ({subst}){rt}) {rd} = 1; else {rd} = 0;
    def cast(which):
        return ep_ct.simple_cast(ep_ct.simple_typename([kw['subst']]), which)

    def assign(to):
        return ep_ct.do_assign(rt=kw['rd'], op=c_ast.Constant('int', to))

    br = ep_ct.do_branch(subst='<', rs=cast(kw['rs']), rt=cast(kw['rt']))
    br.iftrue = assign('1')
    br.iffalse = assign('0')

    return br
Beispiel #2
0
def do_fcmp(**kw):
    # if ({rs} {subst} {rt}) fp_cond = 1; else fp_cond = 0
    fragment = ep_ct.do_branch(**kw)
    fragment.iftrue = ep_ct.do_assign(rt=c_ast.ID('%sfp_cond' % utils.decomp_tag), op=c_ast.Constant('int', '1'))
    fragment.iffalse = ep_ct.do_assign(rt=c_ast.ID('%sfp_cond' % utils.decomp_tag), op=c_ast.Constant('int', '0'))
    return fragment