ns32k.md
来自「GUN开源阻止下的编译器GCC」· Markdown 代码 · 共 2,444 行 · 第 1/5 页
MD
2,444 行
else return \"inssd %3,%0,%2,%1\"; return \"insd %2,%3,%0,%1\";}")(define_insn "insv" [(set (zero_extract:SI (match_operand:QI 0 "general_operand" "+g") (match_operand:SI 1 "const_int_operand" "i") (match_operand:SI 2 "general_operand" "rK")) (match_operand:SI 3 "general_operand" "rm"))] "TARGET_BITFIELD" "*{ if (GET_CODE (operands[2]) == CONST_INT) if (INTVAL (operands[1]) <= 8) return \"inssb %3,%0,%2,%1\"; else if (INTVAL (operands[1]) <= 16) return \"inssw %3,%0,%2,%1\"; else return \"inssd %3,%0,%2,%1\"; return \"insd %2,%3,%0,%1\";}")(define_insn "jump" [(set (pc) (label_ref (match_operand 0 "" "")))] "" "br %l0")(define_insn "beq" [(set (pc) (if_then_else (eq (cc0) (const_int 0)) (label_ref (match_operand 0 "" "")) (pc)))] "" "*{ if (cc_prev_status.flags & CC_Z_IN_F) return \"bfc %l0\"; else if (cc_prev_status.flags & CC_Z_IN_NOT_F) return \"bfs %l0\"; else return \"beq %l0\";}")(define_insn "bne" [(set (pc) (if_then_else (ne (cc0) (const_int 0)) (label_ref (match_operand 0 "" "")) (pc)))] "" "*{ if (cc_prev_status.flags & CC_Z_IN_F) return \"bfs %l0\"; else if (cc_prev_status.flags & CC_Z_IN_NOT_F) return \"bfc %l0\"; else return \"bne %l0\";}")(define_insn "bgt" [(set (pc) (if_then_else (gt (cc0) (const_int 0)) (label_ref (match_operand 0 "" "")) (pc)))] "" "bgt %l0")(define_insn "bgtu" [(set (pc) (if_then_else (gtu (cc0) (const_int 0)) (label_ref (match_operand 0 "" "")) (pc)))] "" "bhi %l0")(define_insn "blt" [(set (pc) (if_then_else (lt (cc0) (const_int 0)) (label_ref (match_operand 0 "" "")) (pc)))] "" "blt %l0")(define_insn "bltu" [(set (pc) (if_then_else (ltu (cc0) (const_int 0)) (label_ref (match_operand 0 "" "")) (pc)))] "" "blo %l0")(define_insn "bge" [(set (pc) (if_then_else (ge (cc0) (const_int 0)) (label_ref (match_operand 0 "" "")) (pc)))] "" "bge %l0")(define_insn "bgeu" [(set (pc) (if_then_else (geu (cc0) (const_int 0)) (label_ref (match_operand 0 "" "")) (pc)))] "" "bhs %l0")(define_insn "ble" [(set (pc) (if_then_else (le (cc0) (const_int 0)) (label_ref (match_operand 0 "" "")) (pc)))] "" "ble %l0")(define_insn "bleu" [(set (pc) (if_then_else (leu (cc0) (const_int 0)) (label_ref (match_operand 0 "" "")) (pc)))] "" "bls %l0")(define_insn "" [(set (pc) (if_then_else (eq (cc0) (const_int 0)) (pc) (label_ref (match_operand 0 "" ""))))] "" "*{ if (cc_prev_status.flags & CC_Z_IN_F) return \"bfs %l0\"; else if (cc_prev_status.flags & CC_Z_IN_NOT_F) return \"bfc %l0\"; else return \"bne %l0\";}")(define_insn "" [(set (pc) (if_then_else (ne (cc0) (const_int 0)) (pc) (label_ref (match_operand 0 "" ""))))] "" "*{ if (cc_prev_status.flags & CC_Z_IN_F) return \"bfc %l0\"; else if (cc_prev_status.flags & CC_Z_IN_NOT_F) return \"bfs %l0\"; else return \"beq %l0\";}")(define_insn "" [(set (pc) (if_then_else (gt (cc0) (const_int 0)) (pc) (label_ref (match_operand 0 "" ""))))] "" "ble %l0")(define_insn "" [(set (pc) (if_then_else (gtu (cc0) (const_int 0)) (pc) (label_ref (match_operand 0 "" ""))))] "" "bls %l0")(define_insn "" [(set (pc) (if_then_else (lt (cc0) (const_int 0)) (pc) (label_ref (match_operand 0 "" ""))))] "" "bge %l0")(define_insn "" [(set (pc) (if_then_else (ltu (cc0) (const_int 0)) (pc) (label_ref (match_operand 0 "" ""))))] "" "bhs %l0")(define_insn "" [(set (pc) (if_then_else (ge (cc0) (const_int 0)) (pc) (label_ref (match_operand 0 "" ""))))] "" "blt %l0")(define_insn "" [(set (pc) (if_then_else (geu (cc0) (const_int 0)) (pc) (label_ref (match_operand 0 "" ""))))] "" "blo %l0")(define_insn "" [(set (pc) (if_then_else (le (cc0) (const_int 0)) (pc) (label_ref (match_operand 0 "" ""))))] "" "bgt %l0")(define_insn "" [(set (pc) (if_then_else (leu (cc0) (const_int 0)) (pc) (label_ref (match_operand 0 "" ""))))] "" "bhi %l0");; Subtract-and-jump and Add-and-jump insns.;; These can actually be used for adding numbers in the range -8 to 7(define_insn "" [(set (pc) (if_then_else (ne (match_operand:SI 0 "general_operand" "+g") (match_operand:SI 1 "const_int_operand" "i")) (label_ref (match_operand 2 "" "")) (pc))) (set (match_dup 0) (minus:SI (match_dup 0) (match_dup 1)))] "INTVAL (operands[1]) > -8 && INTVAL (operands[1]) <= 8" "acbd %$%n1,%0,%l2")(define_insn "" [(set (pc) (if_then_else (ne (match_operand:SI 0 "general_operand" "+g") (match_operand:SI 1 "const_int_operand" "i")) (label_ref (match_operand 2 "" "")) (pc))) (set (match_dup 0) (plus:SI (match_dup 0) (match_operand:SI 3 "const_int_operand" "i")))] "INTVAL (operands[1]) == - INTVAL (operands[3]) && INTVAL (operands[3]) >= -8 && INTVAL (operands[3]) < 8" "acbd %3,%0,%l2")(define_insn "call" [(call (match_operand:QI 0 "memory_operand" "m") (match_operand:QI 1 "general_operand" "g"))] "" "*{#ifndef JSR_ALWAYS if (GET_CODE (operands[0]) == MEM) { rtx temp = XEXP (operands[0], 0); if (CONSTANT_ADDRESS_P (temp)) {#ifdef ENCORE_ASM return \"bsr %?%0\";#else#ifdef CALL_MEMREF_IMPLICIT operands[0] = temp; return \"bsr %0\";#else#ifdef GNX_V3 return \"bsr %0\";#else return \"bsr %?%a0\";#endif#endif#endif } if (GET_CODE (XEXP (operands[0], 0)) == REG)#if defined (GNX_V3) || defined (CALL_MEMREF_IMPLICIT) return \"jsr %0\";#else return \"jsr %a0\";#endif }#endif /* not JSR_ALWAYS */ return \"jsr %0\";}")(define_insn "call_value" [(set (match_operand 0 "" "=rf") (call (match_operand:QI 1 "memory_operand" "m") (match_operand:QI 2 "general_operand" "g")))] "" "*{#ifndef JSR_ALWAYS if (GET_CODE (operands[1]) == MEM) { rtx temp = XEXP (operands[1], 0); if (CONSTANT_ADDRESS_P (temp)) {#ifdef ENCORE_ASM return \"bsr %?%1\";#else#ifdef CALL_MEMREF_IMPLICIT operands[1] = temp; return \"bsr %1\";#else#ifdef GNX_V3 return \"bsr %1\";#else return \"bsr %?%a1\";#endif#endif#endif } if (GET_CODE (XEXP (operands[1], 0)) == REG)#if defined (GNX_V3) || defined (CALL_MEMREF_IMPLICIT) return \"jsr %1\";#else return \"jsr %a1\";#endif }#endif /* not JSR_ALWAYS */ return \"jsr %1\";}");; Call subroutine returning any type.(define_expand "untyped_call" [(parallel [(call (match_operand 0 "" "") (const_int 0)) (match_operand 1 "" "") (match_operand 2 "" "")])] "" "{ int i; emit_call_insn (gen_call (operands[0], const0_rtx, NULL, const0_rtx)); for (i = 0; i < XVECLEN (operands[2], 0); i++) { rtx set = XVECEXP (operands[2], 0, i); emit_move_insn (SET_DEST (set), SET_SRC (set)); } /* The optimizer does not know that the call sets the function value registers we stored in the result block. We avoid problems by claiming that all hard registers are used and clobbered at this point. */ emit_insn (gen_blockage ()); DONE;}");; UNSPEC_VOLATILE is considered to use and clobber all hard registers and;; all of memory. This blocks insns from being moved across this point.(define_insn "blockage" [(unspec_volatile [(const_int 0)] 0)] "" "")(define_insn "return" [(return)] "0" "ret 0")(define_insn "abssf2" [(set (match_operand:SF 0 "general_operand" "=fm<") (abs:SF (match_operand:SF 1 "general_operand" "fmF")))] "TARGET_32081" "absf %1,%0")(define_insn "absdf2" [(set (match_operand:DF 0 "general_operand" "=fm<") (abs:DF (match_operand:DF 1 "general_operand" "fmF")))] "TARGET_32081" "absl %1,%0")(define_insn "abssi2" [(set (match_operand:SI 0 "general_operand" "=g<") (abs:SI (match_operand:SI 1 "general_operand" "rmn")))] "" "absd %1,%0")(define_insn "abshi2" [(set (match_operand:HI 0 "general_operand" "=g<") (abs:HI (match_operand:HI 1 "general_operand" "g")))] "" "absw %1,%0")(define_insn "absqi2" [(set (match_operand:QI 0 "general_operand" "=g<") (abs:QI (match_operand:QI 1 "general_operand" "g")))] "" "absb %1,%0")(define_insn "nop" [(const_int 0)] "" "nop")(define_insn "indirect_jump" [(set (pc) (match_operand:SI 0 "register_operand" "r"))] "" "jump %0")(define_insn "tablejump" [(set (pc) (plus:SI (pc) (match_operand:SI 0 "general_operand" "g"))) (use (label_ref (match_operand 1 "" "")))] "" "*{ ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, \"LI\", CODE_LABEL_NUMBER (operands[1])); return \"cased %0\";}");; Scondi instructions(define_insn "seq" [(set (match_operand:SI 0 "general_operand" "=g<") (eq:SI (cc0) (const_int 0)))] "" "*{ if (cc_prev_status.flags & CC_Z_IN_F) return \"sfcd %0\"; else if (cc_prev_status.flags & CC_Z_IN_NOT_F) return \"sfsd %0\"; else return \"seqd %0\";}")(define_insn "" [(set (match_operand:HI 0 "general_operand" "=g<") (eq:HI (cc0) (const_int 0)))] "" "*{ if (cc_prev_status.flags & CC_Z_IN_F) return \"sfcw %0\"; else if (cc_prev_status.flags & CC_Z_IN_NOT_F) return \"sfsw %0\"; else return \"seqw %0\";}")(define_insn "" [(set (match_operand:QI 0 "general_operand" "=g<") (eq:QI (cc0) (const_int 0)))] "" "*{ if (cc_prev_status.flags & CC_Z_IN_F) return \"sfcb %0\"; else if (cc_prev_status.flags & CC_Z_IN_NOT_F) return \"sfsb %0\"; else return \"seqb %0\";}")(define_insn "sne" [(set (match_operand:SI 0 "general_operand" "=g<") (ne:SI (cc0) (const_int 0)))] "" "*{ if (cc_prev_status.flags & CC_Z_IN_F) return \"sfsd %0\"; else if (cc_prev_status.flags & CC_Z_IN_NOT_F) return \"sfcd %0\"; else return \"sned %0\";}")(define_insn "" [(set (match_operand:HI 0 "general_operand" "=g<") (ne:HI (cc0) (const_int 0)))] ""
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?