📄 pa.md
字号:
(define_expand "bgtu" [(set (pc) (if_then_else (gtu (match_dup 1) (match_dup 2)) (label_ref (match_operand 0 "" "")) (pc)))] "" "{ if (hppa_branch_type != CMP_SI) FAIL; operands[1] = hppa_compare_op0; operands[2] = hppa_compare_op1;}")(define_expand "bltu" [(set (pc) (if_then_else (ltu (match_dup 1) (match_dup 2)) (label_ref (match_operand 0 "" "")) (pc)))] "" "{ if (hppa_branch_type != CMP_SI) FAIL; operands[1] = hppa_compare_op0; operands[2] = hppa_compare_op1;}")(define_expand "bgeu" [(set (pc) (if_then_else (geu (match_dup 1) (match_dup 2)) (label_ref (match_operand 0 "" "")) (pc)))] "" "{ if (hppa_branch_type != CMP_SI) FAIL; operands[1] = hppa_compare_op0; operands[2] = hppa_compare_op1;}")(define_expand "bleu" [(set (pc) (if_then_else (leu (match_dup 1) (match_dup 2)) (label_ref (match_operand 0 "" "")) (pc)))] "" "{ if (hppa_branch_type != CMP_SI) FAIL; operands[1] = hppa_compare_op0; operands[2] = hppa_compare_op1;}")(define_expand "bltgt" [(set (pc) (if_then_else (ltgt (match_dup 1) (match_dup 2)) (label_ref (match_operand 0 "" "")) (pc)))] "" "{ if (hppa_branch_type == CMP_SI) FAIL; emit_insn (gen_cmp_fp (LTGT, hppa_compare_op0, hppa_compare_op1)); emit_bcond_fp (NE, operands[0]); DONE;}")(define_expand "bunle" [(set (pc) (if_then_else (unle (match_dup 1) (match_dup 2)) (label_ref (match_operand 0 "" "")) (pc)))] "" "{ if (hppa_branch_type == CMP_SI) FAIL; emit_insn (gen_cmp_fp (UNLE, hppa_compare_op0, hppa_compare_op1)); emit_bcond_fp (NE, operands[0]); DONE;}")(define_expand "bunlt" [(set (pc) (if_then_else (unlt (match_dup 1) (match_dup 2)) (label_ref (match_operand 0 "" "")) (pc)))] "" "{ if (hppa_branch_type == CMP_SI) FAIL; emit_insn (gen_cmp_fp (UNLT, hppa_compare_op0, hppa_compare_op1)); emit_bcond_fp (NE, operands[0]); DONE;}")(define_expand "bunge" [(set (pc) (if_then_else (unge (match_dup 1) (match_dup 2)) (label_ref (match_operand 0 "" "")) (pc)))] "" "{ if (hppa_branch_type == CMP_SI) FAIL; emit_insn (gen_cmp_fp (UNGE, hppa_compare_op0, hppa_compare_op1)); emit_bcond_fp (NE, operands[0]); DONE;}")(define_expand "bungt" [(set (pc) (if_then_else (ungt (match_dup 1) (match_dup 2)) (label_ref (match_operand 0 "" "")) (pc)))] "" "{ if (hppa_branch_type == CMP_SI) FAIL; emit_insn (gen_cmp_fp (UNGT, hppa_compare_op0, hppa_compare_op1)); emit_bcond_fp (NE, operands[0]); DONE;}")(define_expand "buneq" [(set (pc) (if_then_else (uneq (match_dup 1) (match_dup 2)) (label_ref (match_operand 0 "" "")) (pc)))] "" "{ if (hppa_branch_type == CMP_SI) FAIL; emit_insn (gen_cmp_fp (UNEQ, hppa_compare_op0, hppa_compare_op1)); emit_bcond_fp (NE, operands[0]); DONE;}")(define_expand "bunordered" [(set (pc) (if_then_else (unordered (match_dup 1) (match_dup 2)) (label_ref (match_operand 0 "" "")) (pc)))] "" "{ if (hppa_branch_type == CMP_SI) FAIL; emit_insn (gen_cmp_fp (UNORDERED, hppa_compare_op0, hppa_compare_op1)); emit_bcond_fp (NE, operands[0]); DONE;}")(define_expand "bordered" [(set (pc) (if_then_else (ordered (match_dup 1) (match_dup 2)) (label_ref (match_operand 0 "" "")) (pc)))] "" "{ if (hppa_branch_type == CMP_SI) FAIL; emit_insn (gen_cmp_fp (ORDERED, hppa_compare_op0, hppa_compare_op1)); emit_bcond_fp (NE, operands[0]); DONE;}");; Match the branch patterns.;; Note a long backward conditional branch with an annulled delay slot;; has a length of 12.(define_insn "" [(set (pc) (if_then_else (match_operator 3 "comparison_operator" [(match_operand:SI 1 "reg_or_0_operand" "rM") (match_operand:SI 2 "arith5_operand" "rL")]) (label_ref (match_operand 0 "" "")) (pc)))] "" "*{ return output_cbranch (operands, INSN_ANNULLED_BRANCH_P (insn), get_attr_length (insn), 0, insn);}"[(set_attr "type" "cbranch") (set (attr "length") (cond [(lt (abs (minus (match_dup 0) (plus (pc) (const_int 8)))) (const_int 8184)) (const_int 4) (lt (abs (minus (match_dup 0) (plus (pc) (const_int 8)))) (const_int 262100)) (const_int 8) (eq (symbol_ref "flag_pic") (const_int 0)) (const_int 20)] (const_int 28)))]);; Match the negated branch.(define_insn "" [(set (pc) (if_then_else (match_operator 3 "comparison_operator" [(match_operand:SI 1 "reg_or_0_operand" "rM") (match_operand:SI 2 "arith5_operand" "rL")]) (pc) (label_ref (match_operand 0 "" ""))))] "" "*{ return output_cbranch (operands, INSN_ANNULLED_BRANCH_P (insn), get_attr_length (insn), 1, insn);}"[(set_attr "type" "cbranch") (set (attr "length") (cond [(lt (abs (minus (match_dup 0) (plus (pc) (const_int 8)))) (const_int 8184)) (const_int 4) (lt (abs (minus (match_dup 0) (plus (pc) (const_int 8)))) (const_int 262100)) (const_int 8) (eq (symbol_ref "flag_pic") (const_int 0)) (const_int 20)] (const_int 28)))])(define_insn "" [(set (pc) (if_then_else (match_operator 3 "comparison_operator" [(match_operand:DI 1 "reg_or_0_operand" "rM") (match_operand:DI 2 "reg_or_0_operand" "rM")]) (label_ref (match_operand 0 "" "")) (pc)))] "TARGET_64BIT" "*{ return output_cbranch (operands, INSN_ANNULLED_BRANCH_P (insn), get_attr_length (insn), 0, insn);}"[(set_attr "type" "cbranch") (set (attr "length") (cond [(lt (abs (minus (match_dup 0) (plus (pc) (const_int 8)))) (const_int 8184)) (const_int 4) (lt (abs (minus (match_dup 0) (plus (pc) (const_int 8)))) (const_int 262100)) (const_int 8) (eq (symbol_ref "flag_pic") (const_int 0)) (const_int 20)] (const_int 28)))]);; Match the negated branch.(define_insn "" [(set (pc) (if_then_else (match_operator 3 "comparison_operator" [(match_operand:DI 1 "reg_or_0_operand" "rM") (match_operand:DI 2 "reg_or_0_operand" "rM")]) (pc) (label_ref (match_operand 0 "" ""))))] "TARGET_64BIT" "*{ return output_cbranch (operands, INSN_ANNULLED_BRANCH_P (insn), get_attr_length (insn), 1, insn);}"[(set_attr "type" "cbranch") (set (attr "length") (cond [(lt (abs (minus (match_dup 0) (plus (pc) (const_int 8)))) (const_int 8184)) (const_int 4) (lt (abs (minus (match_dup 0) (plus (pc) (const_int 8)))) (const_int 262100)) (const_int 8) (eq (symbol_ref "flag_pic") (const_int 0)) (const_int 20)] (const_int 28)))])(define_insn "" [(set (pc) (if_then_else (match_operator 3 "cmpib_comparison_operator" [(match_operand:DI 1 "reg_or_0_operand" "rM") (match_operand:DI 2 "arith5_operand" "rL")]) (label_ref (match_operand 0 "" "")) (pc)))] "TARGET_64BIT" "*{ return output_cbranch (operands, INSN_ANNULLED_BRANCH_P (insn), get_attr_length (insn), 0, insn);}"[(set_attr "type" "cbranch") (set (attr "length") (cond [(lt (abs (minus (match_dup 0) (plus (pc) (const_int 8)))) (const_int 8184)) (const_int 4) (lt (abs (minus (match_dup 0) (plus (pc) (const_int 8)))) (const_int 262100)) (const_int 8) (eq (symbol_ref "flag_pic") (const_int 0)) (const_int 20)] (const_int 28)))]);; Match the negated branch.(define_insn "" [(set (pc) (if_then_else (match_operator 3 "cmpib_comparison_operator" [(match_operand:DI 1 "reg_or_0_operand" "rM") (match_operand:DI 2 "arith5_operand" "rL")]) (pc) (label_ref (match_operand 0 "" ""))))] "TARGET_64BIT" "*{ return output_cbranch (operands, INSN_ANNULLED_BRANCH_P (insn), get_attr_length (insn), 1, insn);}"[(set_attr "type" "cbranch") (set (attr "length") (cond [(lt (abs (minus (match_dup 0) (plus (pc) (const_int 8)))) (const_int 8184)) (const_int 4) (lt (abs (minus (match_dup 0) (plus (pc) (const_int 8)))) (const_int 262100)) (const_int 8) (eq (symbol_ref "flag_pic") (const_int 0)) (const_int 20)] (const_int 28)))]);; Branch on Bit patterns.(define_insn "" [(set (pc) (if_then_else (ne (zero_extract:SI (match_operand:SI 0 "register_operand" "r") (const_int 1) (match_operand:SI 1 "uint5_operand" "")) (const_int 0)) (label_ref (match_operand 2 "" "")) (pc)))] "" "*{ return output_bb (operands, INSN_ANNULLED_BRANCH_P (insn), get_attr_length (insn), 0, insn, 0);}"[(set_attr "type" "cbranch") (set (attr "length") (if_then_else (lt (abs (minus (match_dup 2) (plus (pc) (const_int 8)))) (const_int 8184)) (const_int 4) (const_int 8)))])(define_insn "" [(set (pc) (if_then_else (ne (zero_extract:DI (match_operand:DI 0 "register_operand" "r") (const_int 1) (match_operand:DI 1 "uint32_operand" "")) (const_int 0)) (label_ref (match_operand 2 "" "")) (pc)))] "TARGET_64BIT" "*{ return output_bb (operands, INSN_ANNULLED_BRANCH_P (insn), get_attr_length (insn), 0, insn, 0);}"[(set_attr "type" "cbranch") (set (attr "length") (if_then_else (lt (abs (minus (match_dup 2) (plus (pc) (const_int 8)))) (const_int 8184)) (const_int 4) (const_int 8)))])(define_insn "" [(set (pc) (if_then_else (ne (zero_extract:SI (match_operand:SI 0 "register_operand" "r") (const_int 1) (match_operand:SI 1 "uint5_operand" "")) (const_int 0)) (pc) (label_ref (match_operand 2 "" ""))))] "" "*{ return output_bb (operands, INSN_ANNULLED_BRANCH_P (insn), get_attr_length (insn), 1, insn, 0);}"[(set_attr "type" "cbranch") (set (attr "length") (if_then_else (lt (abs (minus (match_dup 2) (plus (pc) (const_int 8)))) (const_int 8184)) (const_int 4) (const_int 8)))])(define_insn "" [(set (pc) (if_then_else (ne (zero_extract:DI (match_operand:DI 0 "register_operand" "r") (const_int 1) (match_operand:DI 1 "uint32_operand" "")) (const_int 0)) (pc) (label_ref (match_operand 2 "" ""))))] "TARGET_64BIT" "*{ return output_bb (operands, INSN_ANNULLED_BRANCH_P (insn), get_attr_length (insn), 1, insn, 0);}"[(set_attr "type" "cbranch") (set (attr "length") (if_then_else (lt (abs (minus (match_dup 2) (plus (pc) (const_int 8)))) (const_int 8184)) (const_int 4) (const_int 8)))])(define_insn "" [(set (pc) (if_then_else (eq (zero_extract:SI (match_operand:SI 0 "register_operand" "r") (const_int 1) (match_operand:SI 1 "uint5_operand" ""))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -