static void emit_binop(Node *node) { SAVE; if (node->ty->kind == KIND_PTR) { emit_pointer_arith(node->kind, node->left, node->right); return; } switch (node->kind) { case '<': emit_comp("setl", "setb", node); return; case OP_EQ: emit_comp("sete", "sete", node); return; case OP_LE: emit_comp("setle", "setna", node); return; case OP_NE: emit_comp("setne", "setne", node); return; } if (is_inttype(node->ty)) emit_binop_int_arith(node); else if (is_flotype(node->ty)) emit_binop_float_arith(node); else error("internal error: %s", node2s(node)); }
static void emit_binop(Node *node) { SAVE; if (node->ctype->type == CTYPE_PTR) { emit_pointer_arith(node->type, node->left, node->right); return; } switch (node->type) { case '<': emit_comp("setl", node); return; case '>': emit_comp("setg", node); return; case OP_EQ: emit_comp("sete", node); return; case OP_GE: emit_comp("setge", node); return; case OP_LE: emit_comp("setle", node); return; case OP_NE: emit_comp("setne", node); return; } if (is_inttype(node->ctype)) emit_binop_int_arith(node); else if (is_flotype(node->ctype)) emit_binop_float_arith(node); else error("internal error"); }