⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m88k.md

📁 这是完整的gcc源代码
💻 MD
📖 第 1 页 / 共 4 页
字号:
  if (REG_P (operands[0]))    return \"extu %0,r25,1<lo>\";  return \"extu r25,r25,1<lo>\;st r25,%0\";}")(define_peephole  [(set (cc0) (match_operand:SI 0 "register_operand" "r"))   (set (match_operand:SI 1 "general_operand" "=g")	(ltu (cc0) (const_int 0)))]  ""  "*{  CC_STATUS_INIT;  if (REG_P (operands[1]))    return \"cmp r25,%0,0\;extu %1,r25,1<lo>\";  return \"cmp r25,%0,0\;extu r25,r25,1<lo>\;st r25,%1\";}")(define_peephole  [(set (cc0)	(compare	 (match_operand:SI 0 "arith_operand" "r")	 (match_operand:SI 1 "arith_operand" "rI")))   (set (match_operand:SI 2 "general_operand" "=g")	(ltu (cc0) (const_int 0)))]  ""  "*{  CC_STATUS_INIT;  if (REG_P (operands[2]))    return \"cmp r25,%0,%1\;extu %2,r25,1<lo>\";  return \"cmp r25,%0,%1\;extu r25,r25,1<lo>\;st r25,%2\";}")(define_insn "sge"  [(set (match_operand:SI 0 "general_operand" "=g")	(ge (cc0) (const_int 0)))]  ""  "*{  CC_STATUS_INIT;  if (REG_P (operands[0]))    return \"extu %0,r25,1<ge>\";  return \"extu r25,r25,1<ge>\;st r25,%0\";}")(define_peephole  [(set (cc0) (match_operand:SI 0 "register_operand" "r"))   (set (match_operand:SI 1 "general_operand" "=g")	(ge (cc0) (const_int 0)))]  ""  "*{  CC_STATUS_INIT;  if (REG_P (operands[1]))    return \"cmp r25,%0,0\;extu %1,r25,1<ge>\";  return \"cmp r25,%0,0\;extu r25,r25,1<ge>\;st r25,%1\";}")(define_peephole  [(set (cc0)	(compare	 (match_operand:SI 0 "arith_operand" "r")	 (match_operand:SI 1 "arith_operand" "rI")))   (set (match_operand:SI 2 "general_operand" "=g")	(ge (cc0) (const_int 0)))]  ""  "*{  CC_STATUS_INIT;  if (REG_P (operands[2]))    return \"cmp r25,%0,%1\;extu %2,r25,1<ge>\";  return \"cmp r25,%0,%1\;extu r25,r25,1<ge>\;st r25,%2\";}")(define_insn "sgeu"  [(set (match_operand:SI 0 "general_operand" "=g")	(geu (cc0) (const_int 0)))]  ""  "*{  CC_STATUS_INIT;  if (REG_P (operands[0]))    return \"extu %0,r25,1<hs>\";  return \"extu r25,r25,1<hs>\;st r25,%0\";}")(define_peephole  [(set (cc0) (match_operand:SI 0 "register_operand" "r"))   (set (match_operand:SI 1 "general_operand" "=g")	(geu (cc0) (const_int 0)))]  ""  "*{  CC_STATUS_INIT;  if (REG_P (operands[1]))    return \"cmp r25,%0,0\;extu %1,r25,1<hs>\";  return \"cmp r25,%0,0\;extu r25,r25,1<hs>\;st r25,%1\";}")(define_peephole  [(set (cc0)	(compare	 (match_operand:SI 0 "arith_operand" "r")	 (match_operand:SI 1 "arith_operand" "rI")))   (set (match_operand:SI 2 "general_operand" "=g")	(geu (cc0) (const_int 0)))]  ""  "*{  CC_STATUS_INIT;  if (REG_P (operands[2]))    return \"cmp r25,%0,%1\;extu %2,r25,1<hs>\";  return \"cmp r25,%0,%1\;extu r25,r25,1<hs>\;st r25,%2\";}")(define_insn "sle"  [(set (match_operand:SI 0 "general_operand" "=g")	(le (cc0) (const_int 0)))]  ""  "*{  CC_STATUS_INIT;  if (REG_P (operands[0]))    return \"extu %0,r25,1<le>\";  return \"extu r25,r25,1<le>\;st r25,%0\";}")(define_peephole  [(set (cc0) (match_operand:SI 0 "register_operand" "r"))   (set (match_operand:SI 1 "general_operand" "=g")	(le (cc0) (const_int 0)))]  ""  "*{  CC_STATUS_INIT;  if (REG_P (operands[1]))    return \"cmp r25,%0,0\;extu %1,r25,1<le>\";  return \"cmp r25,%0,0\;extu r25,r25,1<le>\;st r25,%1\";}")(define_peephole  [(set (cc0)	(compare	 (match_operand:SI 0 "arith_operand" "r")	 (match_operand:SI 1 "arith_operand" "rI")))   (set (match_operand:SI 2 "general_operand" "=g")	(le (cc0) (const_int 0)))]  ""  "*{  CC_STATUS_INIT;  if (REG_P (operands[2]))    return \"cmp r25,%0,%1\;extu %2,r25,1<le>\";  return \"cmp r25,%0,%1\;extu r25,r25,1<le>\;st r25,%2\";}")(define_insn "sleu"  [(set (match_operand:SI 0 "general_operand" "=g")	(leu (cc0) (const_int 0)))]  ""  "*{  CC_STATUS_INIT;  if (REG_P (operands[0]))    return \"extu %0,r25,1<ls>\";  return \"extu r25,r25,1<ls>\;st r25,%0\";}")(define_peephole  [(set (cc0) (match_operand:SI 0 "register_operand" "r"))   (set (match_operand:SI 1 "general_operand" "=g")	(leu (cc0) (const_int 0)))]  ""  "*{  CC_STATUS_INIT;  if (REG_P (operands[1]))    return \"cmp r25,%0,0\;extu %1,r25,1<ls>\";  return \"cmp r25,%0,0\;extu r25,r25,1<ls>\;st r25,%1\";}")(define_peephole  [(set (cc0)	(compare	 (match_operand:SI 0 "arith_operand" "r")	 (match_operand:SI 1 "arith_operand" "rI")))   (set (match_operand:SI 2 "general_operand" "=g")	(leu (cc0) (const_int 0)))]  ""  "*{  CC_STATUS_INIT;  if (REG_P (operands[2]))    return \"cmp r25,%0,%1\;extu %2,r25,1<ls>\";  return \"cmp r25,%0,%1\;extu r25,r25,1<ls>\;st r25,%2\";}");; Unconditional and other jump instructions(define_insn "jump"  [(set (pc)	(label_ref (match_operand 0 "" "")))]  ""  "br %l0")(define_insn ""  [(set (pc)    (label_ref (match_operand 0 "" "")))   (clobber (const_int 1))]  ""  "br.n %l0")(define_insn "tablejump"  [(set (pc) (match_operand:SI 0 "register_operand" "r"))   (use (label_ref (match_operand 1 "" "")))]  ""  "jmp %0");;- jump to subroutine(define_insn "call"  [(call (match_operand:SI 0 "memory_operand" "m")	 (match_operand:SI 1 "general_operand" "g"))   (use (reg:SI 1))]  ;;- Don't use operand 1 for most machines.  ""  "*{  operands[0] = XEXP (operands[0], 0);  if (REG_P (operands[0]))    return \"jsr %0\";  return \"bsr %0\";}")(define_insn ""  [(call (match_operand:SI 0 "memory_operand" "m")	 (match_operand:SI 1 "general_operand" "g"))   (clobber (const_int 1))   (use (reg:SI 1))]  ;;- Don't use operand 1 for most machines.  ""  "*{  operands[0] = XEXP (operands[0], 0);  if (REG_P (operands[0]))    return \"jsr.n %0\";  return \"bsr.n %0\";}");;- jump to subroutine(define_insn "call_value"  [(set (match_operand 0 "" "=r")	(call (match_operand:SI 1 "memory_operand" "m")	      (match_operand:SI 2 "general_operand" "g")))   (use (reg:SI 1))]  ;;- Don't use operand 2 for most machines.  ""  "*{  operands[1] = XEXP (operands[1], 0);  if (REG_P (operands[1]))    return \"jsr %1\";  return \"bsr %1\";}")(define_insn ""  [(set (match_operand 0 "" "=r")	(call (match_operand:SI 1 "memory_operand" "m")	      (match_operand:SI 2 "general_operand" "g")))   (use (reg:SI 1))   (clobber (const_int 2))]  ;;- Don't use operand 2 for most machines.  ""  "*{  operands[1] = XEXP (operands[1], 0);  if (REG_P (operands[1]))    return \"jsr.n %1\";  return \"bsr.n %1\";}");; A memory ref with constant address is not normally valid.;; But it is valid in a call insns.  This pattern allows the;; loading of the address to combine with the call.(define_insn ""  [(call (mem:SI (match_operand:SI 0 "" "i"))	 (match_operand:SI 1 "general_operand" "g"))   (use (reg:SI 1))]  ;;- Don't use operand 1 for most machines.  "GET_CODE (operands[0]) == SYMBOL_REF"  "bsr %0")(define_insn ""  [(call (mem:SI (match_operand:SI 0 "" "i"))	 (match_operand:SI 1 "general_operand" "g"))   (clobber (const_int 1))   (use (reg:SI 1))]  ;;- Don't use operand 1 for most machines.  "GET_CODE (operands[0]) == SYMBOL_REF"  "bsr.n %0")(define_insn "nop"  [(const_int 0)]  ""  "nop");; Recognize jbs and jbc instructions.(define_insn ""  [(set (pc)	(if_then_else	 (ne (sign_extract:SI (match_operand:SI 0 "register_operand" "r")			      (const_int 1)			      (match_operand:SI 1 "int5_operand" "K"))	     (const_int 0))	 (label_ref (match_operand 2 "" ""))	 (pc)))]  ""  "bb1 %1,%0,%l2")(define_insn ""  [(set (pc)	(if_then_else	 (eq (sign_extract:SI (match_operand:SI 0 "register_operand" "r")			      (const_int 1)			      (match_operand:SI 1 "int5_operand" "K"))	     (const_int 0))	 (label_ref (match_operand 2 "" ""))	 (pc)))]  ""  "bb0 %1,%0,%l2")(define_insn ""  [(set (pc)	(if_then_else	 (ne (sign_extract:SI (match_operand:SI 0 "register_operand" "r")			      (const_int 1)			      (match_operand:SI 1 "int5_operand" "K"))	     (const_int 0))	 (pc)	 (label_ref (match_operand 2 "" ""))))]  ""  "bb0 %1,%0,%l2")(define_insn ""  [(set (pc)	(if_then_else	 (eq (sign_extract:SI (match_operand:SI 0 "register_operand" "r")			      (const_int 1)			      (match_operand:SI 1 "int5_operand" "K"))	     (const_int 0))	 (pc)	 (label_ref (match_operand 2 "" ""))))]  ""  "bb1 %1,%0,%l2")(define_insn ""  [(set (pc)	(if_then_else	 (ne (sign_extract:SI (match_operand:SI 0 "general_operand" "r")			      (const_int 1)			      (match_operand:SI 1 "int5_operand" "K"))	     (const_int 0))	 (label_ref (match_operand 2 "" ""))	 (pc)))]  ""  "bb1 %1,%0,%l2")(define_insn ""  [(set (pc)	(if_then_else	 (eq (sign_extract:SI (match_operand:SI 0 "general_operand" "r")			      (const_int 1)			      (match_operand:SI 1 "int5_operand" "K"))	     (const_int 0))	 (label_ref (match_operand 2 "" ""))	 (pc)))]  ""  "bb0 %1,%0,%l2")(define_insn ""  [(set (pc)	(if_then_else	 (eq (and:SI (match_operand:SI 0 "register_operand" "r")		     (match_operand:SI 1 "int5_operand" "K"))	     (const_int 0))	 (pc)	 (label_ref (match_operand 2 "" ""))))]  "exact_log2 (INTVAL (operands[1])) >= 0"  "*{  operands[1]    = gen_rtx (CONST_INT, VOIDmode, exact_log2 (INTVAL (operands[1])));  return \"bb1 %1,%0,%l2\";}")(define_insn ""  [(set (pc)	(if_then_else	 (eq (and:SI (match_operand:SI 0 "register_operand" "r")		     (match_operand:SI 1 "int5_operand" "K"))	     (const_int 0))	 (label_ref (match_operand 2 "" ""))	 (pc)))]  "exact_log2 (INTVAL (operands[1])) >= 0"  "*{  operands[1]    = gen_rtx (CONST_INT, VOIDmode, exact_log2 (INTVAL (operands[1])));  return \"bb0 %1,%0,%l2\";}")(define_insn ""  [(set (pc)	(if_then_else	 (ne (and:SI (match_operand:SI 0 "register_operand" "r")		     (match_operand:SI 1 "int5_operand" "K"))	     (const_int 0))	 (pc)	 (label_ref (match_operand 2 "" ""))))]  "exact_log2 (INTVAL (operands[1])) >= 0"  "*{  operands[1]    = gen_rtx (CONST_INT, VOIDmode, exact_log2 (INTVAL (operands[1])));  return \"bb0 %1,%0,%l2\";}")(define_insn ""  [(set (pc)	(if_then_else	 (ne (and:SI (match_operand:SI 0 "register_operand" "r")		     (match_operand:SI 1 "int5_operand" "K"))	     (const_int 0))	 (label_ref (match_operand 2 "" ""))	 (pc)))]  "exact_log2 (INTVAL (operands[1])) >= 0"  "*{  operands[1]    = gen_rtx (CONST_INT, VOIDmode, exact_log2 (INTVAL (operands[1])));  return \"bb1 %1,%0,%l2\";}")(define_insn ""  [(set (pc)	(if_then_else	 (ne (sign_extract:SI (match_operand:SI 0 "general_operand" "r")			      (const_int 1)			      (match_operand:SI 1 "int5_operand" "K"))	     (const_int 0))	 (pc)	 (label_ref (match_operand 2 "" ""))))]  ""  "bb0 %1,%0,%l2")(define_insn ""  [(set (pc)	(if_then_else	 (eq (sign_extract:SI (match_operand:SI 0 "general_operand" "r")			      (const_int 1)			      (match_operand:SI 1 "int5_operand" "K"))	     (const_int 0))	 (pc)	 (label_ref (match_operand 2 "" ""))))]  ""  "bb1 %1,%0,%l2")(define_insn ""  [(set (pc)	(if_then_else	 (ne (and:SI (match_operand:SI 0 "register_operand" "r")		     (const_int 1))	     (const_int 0))	 (label_ref (match_operand 1 "" ""))	 (pc)))]  ""  "bb1 0,%0,%l1")(define_insn ""  [(set (pc)	(if_then_else	 (eq (and:SI (match_operand:SI 0 "register_operand" "r")		     (const_int 1))	     (const_int 0))	 (label_ref (match_operand 1 "" ""))	 (pc)))]  ""  "bb0 0,%0,%l1")(define_insn ""  [(set (pc)	(if_then_else	 (ne (and:SI (match_operand:SI 0 "register_operand" "r")		     (const_int 1))	     (const_int 0))	 (pc)	 (label_ref (match_operand 1 "" ""))))]  ""  "bb0 0,%0,%l1")(define_insn ""  [(set (pc)	(if_then_else	 (eq (and:SI (match_operand:SI 0 "register_operand" "r")		     (const_int 1))	     (const_int 0))	 (pc)	 (label_ref (match_operand 1 "" ""))))]  ""  "bb1 0,%0,%l1");; These four entries allow a jlbc or jlbs,to be made;; by combination with a bic.(define_insn ""  [(set (pc)	(if_then_else	 (ne (and:SI (match_operand:SI 0 "register_operand" "r")		     (not:SI (const_int -2)))	     (const_int 0))	 (label_ref (match_operand 1 "" ""))	 (pc)))]  ""  "bb1 0,%0,%l1")(define_insn ""  [(set (pc)	(if_then_else	 (eq (and:SI (match_operand:SI 0 "register_operand" "r")		     (not:SI (const_int -2)))	     (const_int 0))	 (label_ref (match_operand 1 "" ""))	 (pc)))]  ""  "bb0 0,%0,%l1")(define_insn ""  [(set (pc)	(if_then_else	 (ne (and:SI (match_operand:SI 0 "register_operand" "r")		     (not:SI (const_int -2)))	     (const_int 0))	 (pc)	 (label_ref (match_operand 1 "" ""))))]  ""  "bb0 0,%0,%l1")(define_insn ""  [(set (pc)	(if_then_else	 (eq (and:SI (match_operand:SI 0 "register_operand" "r")		     (not:SI (const_int -2)))	     (const_int 0))	 (pc)	 (label_ref (match_operand 1 "" ""))))]  ""  "bb1 0,%0,%l1");;- Local variables:;;- mode:emacs-lisp;;- comment-start: ";;- ";;- eval: (set-syntax-table (copy-sequence (syntax-table)));;- eval: (modify-syntax-entry ?[ "(]");;- eval: (modify-syntax-entry ?] ")[");;- eval: (modify-syntax-entry ?{ "(}");;- eval: (modify-syntax-entry ?} "){");;- End:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -