📄 pa.md
字号:
(const_int 0)) (label_ref (match_operand 2 "" "")) (pc)))] "" "*{ return output_bb (operands, INSN_ANNULLED_BRANCH_P (insn), get_attr_length (insn), 0, insn, 1);}"[(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: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, 1);}"[(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" "")) (const_int 0)) (pc) (label_ref (match_operand 2 "" ""))))] "" "*{ return output_bb (operands, INSN_ANNULLED_BRANCH_P (insn), get_attr_length (insn), 1, insn, 1);}"[(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: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, 1);}"[(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)))]);; Branch on Variable 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 "register_operand" "q")) (const_int 0)) (label_ref (match_operand 2 "" "")) (pc)))] "" "*{ return output_bvb (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 "register_operand" "q")) (const_int 0)) (label_ref (match_operand 2 "" "")) (pc)))] "TARGET_64BIT" "*{ return output_bvb (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 "register_operand" "q")) (const_int 0)) (pc) (label_ref (match_operand 2 "" ""))))] "" "*{ return output_bvb (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 "register_operand" "q")) (const_int 0)) (pc) (label_ref (match_operand 2 "" ""))))] "TARGET_64BIT" "*{ return output_bvb (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 "register_operand" "q")) (const_int 0)) (label_ref (match_operand 2 "" "")) (pc)))] "" "*{ return output_bvb (operands, INSN_ANNULLED_BRANCH_P (insn), get_attr_length (insn), 0, insn, 1);}"[(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:DI (match_operand:DI 0 "register_operand" "r") (const_int 1) (match_operand:DI 1 "register_operand" "q")) (const_int 0)) (label_ref (match_operand 2 "" "")) (pc)))] "TARGET_64BIT" "*{ return output_bvb (operands, INSN_ANNULLED_BRANCH_P (insn), get_attr_length (insn), 0, insn, 1);}"[(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 "register_operand" "q")) (const_int 0)) (pc) (label_ref (match_operand 2 "" ""))))] "" "*{ return output_bvb (operands, INSN_ANNULLED_BRANCH_P (insn), get_attr_length (insn), 1, insn, 1);}"[(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:DI (match_operand:DI 0 "register_operand" "r") (const_int 1) (match_operand:DI 1 "register_operand" "q")) (const_int 0)) (pc) (label_ref (match_operand 2 "" ""))))] "TARGET_64BIT" "*{ return output_bvb (operands, INSN_ANNULLED_BRANCH_P (insn), get_attr_length (insn), 1, insn, 1);}"[(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)))]);; Floating point branches(define_insn "" [(set (pc) (if_then_else (ne (reg:CCFP 0) (const_int 0)) (label_ref (match_operand 0 "" "")) (pc)))] "! TARGET_SOFT_FLOAT" "*{ if (INSN_ANNULLED_BRANCH_P (insn)) return \"ftest\;b,n %0\"; else return \"ftest\;b%* %0\";}" [(set_attr "type" "fbranch") (set_attr "length" "8")])(define_insn "" [(set (pc) (if_then_else (ne (reg:CCFP 0) (const_int 0)) (pc) (label_ref (match_operand 0 "" ""))))] "! TARGET_SOFT_FLOAT" "*{ if (INSN_ANNULLED_BRANCH_P (insn)) return \"ftest\;add,tr %%r0,%%r0,%%r0\;b,n %0\"; else return \"ftest\;add,tr %%r0,%%r0,%%r0\;b%* %0\";}" [(set_attr "type" "fbranch") (set_attr "length" "12")]);; Move instructions(define_expand "movsi" [(set (match_operand:SI 0 "general_operand" "") (match_operand:SI 1 "general_operand" ""))] "" "{ if (emit_move_sequence (operands, SImode, 0)) DONE;}");; Reloading an SImode or DImode value requires a scratch register if;; going in to or out of float point registers.(define_expand "reload_insi" [(set (match_operand:SI 0 "register_operand" "=Z") (match_operand:SI 1 "non_hard_reg_operand" "")) (clobber (match_operand:SI 2 "register_operand" "=&r"))] "" "{ if (emit_move_sequence (operands, SImode, operands[2])) DONE; /* We don't want the clobber emitted, so handle this ourselves. */ emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[1])); DONE;}")(define_expand "reload_outsi" [(set (match_operand:SI 0 "non_hard_reg_operand" "") (match_operand:SI 1 "register_operand" "Z")) (clobber (match_operand:SI 2 "register_operand" "=&r"))] "" "{ if (emit_move_sequence (operands, SImode, operands[2])) DONE; /* We don't want the clobber emitted, so handle this ourselves. */ emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[1])); DONE;}")(define_insn "" [(set (match_operand:SI 0 "reg_or_nonsymb_mem_operand" "=r,r,r,r,r,r,Q,*q,!f,f,*TR") (match_operand:SI 1 "move_operand" "A,r,J,N,K,RQ,rM,rM,!fM,*RT,f"))] "(register_operand (operands[0], SImode) || reg_or_0_operand (operands[1], SImode)) && ! TARGET_SOFT_FLOAT" "@ ldw RT'%A1,%0 copy %1,%0 ldi %1,%0 ldil L'%1,%0 {zdepi|depwi,z} %Z1,%0 ldw%M1 %1,%0 stw%M0 %r1,%0 mtsar %r1 fcpy,sgl %f1,%0 fldw%F1 %1,%0 fstw%F0 %1,%0" [(set_attr "type" "load,move,move,move,shift,load,store,move,fpalu,fpload,fpstore") (set_attr "pa_combine_type" "addmove") (set_attr "length" "4,4,4,4,4,4,4,4,4,4,4")])(define_insn "" [(set (match_operand:SI 0 "reg_or_nonsymb_mem_operand" "=r,r,r,r,r,r,Q,*q") (match_operand:SI 1 "move_operand" "A,r,J,N,K,RQ,rM,rM"))] "(register_operand (operands[0], SImode) || reg_or_0_operand (operands[1], SImode)) && TARGET_SOFT_FLOAT" "@ ldw RT'%A1,%0 copy %1,%0 ldi %1,%0 ldil L'%1,%0 {zdepi|depwi,z} %Z1,%0 ldw%M1 %1,%0 stw%M0 %r1,%0 mtsar %r1" [(set_attr "type" "load,move,move,move,move,load,store,move") (set_attr "pa_combine_type" "addmove") (set_attr "length" "4,4,4,4,4,4,4,4")])(define_insn "" [(set (match_operand:SI 0 "register_operand" "=r") (mem:SI (plus:SI (match_operand:SI 1 "basereg_operand" "r") (match_operand:SI 2 "register_operand" "r"))))] "! TARGET_DISABLE_INDEXING" "{ldwx|ldw} %2(%1),%0" [(set_attr "type" "load") (set_attr "length" "4")])(define_insn "" [(set (match_operand:SI 0 "register_operand" "=r") (mem:SI (plus:SI (match_operand:SI 1 "register_operand" "r") (match_operand:SI 2 "basereg_operand" "r"))))] "! TARGET_DISABLE_INDEXING" "{ldwx|ldw} %1(%2),%0" [(set_attr "type" "load") (set_attr "length" "4")]);; Load or store with base-register modification.(define_expand "pre_load" [(parallel [(set (match_operand:SI 0 "register_operand" "") (mem (plus (match_operand 1 "register_operand" "") (match_operand 2 "pre_cint_operand" "")))) (set (match_dup 1) (plus (match_dup 1) (match_dup 2)))])] "" "{ if (TARGET_64BIT) { emit_insn (gen_pre_ldd (operands[0], operands[1], operands[2])); DONE; } emit_insn (gen_pre_ldw (operands[0], operands[1], operands[2])); DONE;}")(define_insn "pre_ldw" [(set (match_operand:SI 0 "register_operand" "=r") (mem:SI (plus:SI (match_operand:SI 1 "register_operand" "+r") (match_operand:SI 2 "pre_cint_operand" "")))) (set (match_dup 1) (plus:SI (match_dup 1) (match_dup 2)))] "" "*{ if (INTVAL (operands[2]) < 0) return \"{ldwm|ldw,mb} %2(%1),%0\"; return \"{ldws|ldw},mb %2(%1),%0\";}" [(set_attr "type" "load") (set_attr "length" "4")])(define_insn "pre_ldd" [(set (match_operand:DI 0 "register_operand" "=r") (mem:D
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -