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
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