Hello, Who can explains for me about the comparison insns in mips.md. One question, why there is only define_expand patterns but no define_insn. Supposed that I have a comparison instruction say 'cmp %1, %2', should I implement define_insn patterns for comparison insns? Here is a pattern from mips.md, (define_expand "cmpsi" [(set (cc0) (compare:CC (match_operand:SI 0 "register_operand" "") (match_operand:SI 1 "arith_operand" "")))] "" { branch_cmp[0] = operands[0]; branch_cmp[1] = operands[1]; branch_type = CMP_SI; DONE; }) The second question. As for SETTING A REGISTER FROM A COMPARISON, must I implement them? Here is a pattern from mips.md, (define_expand "seq" [(set (match_operand:SI 0 "register_operand" "=d") (lt:SI (match_dup 1) (match_dup 2 )))] "" { /* Set up operands from compare. */ operands[1] = branch_cmp[0]; operands[2] = branch_cmp[1]; }) Why here use match_dup not match_operand? And why to set up operands from compare?
Thanks a lot. Eric.