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

📄 mips.md

📁 这是完整的gcc源代码
💻 MD
📖 第 1 页 / 共 4 页
字号:
      output_asm_insn (\"bc1t\\t%2\\t\\t# bltu\", br_ops);    }  else    {      output_asm_insn (\"bltu\\t%0,%1,%2\\t\\t# bltu\", br_ops);    }  return \"\";}")(define_insn "bge"  [(set (pc)	(if_then_else (ge (cc0)			  (const_int 0))		      (label_ref (match_operand 0 "" ""))		      (pc)))]  ""  "*{  rtx br_ops[3];  enum machine_mode mode;  compare_restore (br_ops,  &mode, insn);  br_ops[2] = operands[0];  if (mode == DFmode)    {      output_asm_insn (\"c.lt.d\\t%0,%1\\t\\t# bge\", br_ops);      output_asm_insn (\"bc1f\\t%2\\t\\t# bge\", br_ops);    }  else if  (mode == SFmode)    {      output_asm_insn (\"c.lt.s\\t%0,%1\\t\\t# bge\", br_ops);      output_asm_insn (\"bc1f\\t%2\\t\\t# bge\", br_ops);    }  else    {      output_asm_insn (\"bge\\t%0,%1,%2\\t\\t# bge\", br_ops);    }  return \"\";}")(define_insn "bgeu"  [(set (pc)	(if_then_else (geu (cc0)			   (const_int 0))		      (label_ref (match_operand 0 "" ""))		      (pc)))]  ""  "*{  rtx br_ops[3];  enum machine_mode mode;  compare_restore (br_ops,  &mode, insn);  br_ops[2] = operands[0];  if (mode == DFmode)    {      output_asm_insn (\"c.lt.d\\t%0,%1\\t\\t# bgeu\", br_ops);      output_asm_insn (\"bc1f\\t%2\\t\\t# bgeu\", br_ops);    }  else if  (mode == SFmode)    {      output_asm_insn (\"c.lt.s\\t%0,%1\\t\\t# bgeu\", br_ops);      output_asm_insn (\"bc1f\\t%2\\t\\t# bgeu\", br_ops);    }  else    {      output_asm_insn (\"bgeu\\t%0,%1,%2\\t\\t# bgeu\", br_ops);    }  return \"\";}")(define_insn "ble"  [(set (pc)	(if_then_else (le (cc0)			  (const_int 0))		      (label_ref (match_operand 0 "" ""))		      (pc)))]  ""  "*{  rtx br_ops[3];  enum machine_mode mode;  compare_restore (br_ops,  &mode, insn);  br_ops[2] = operands[0];  if (mode == DFmode)    {      output_asm_insn (\"c.le.d\\t%0,%1\\t\\t# ble\", br_ops);      output_asm_insn (\"bc1t\\t%2\\t\\t# ble\", br_ops);    }  else if  (mode == SFmode)    {      output_asm_insn (\"c.le.s\\t%0,%1\\t\\t# ble\", br_ops);      output_asm_insn (\"bc1t\\t%2\\t\\t# ble\", br_ops);    }  else    {      output_asm_insn (\"ble\\t%0,%1,%2\\t\\t# ble\", br_ops);    }  return \"\";}")(define_insn "bleu"  [(set (pc)	(if_then_else (leu (cc0)			  (const_int 0))		      (label_ref (match_operand 0 "" ""))		      (pc)))]  ""  "*{  rtx br_ops[3];  enum machine_mode mode;  compare_restore (br_ops,  &mode, insn);  br_ops[2] = operands[0];  if (mode == DFmode)    {      output_asm_insn (\"c.le.d\\t%0,%1\\t\\t# ble\", br_ops);      output_asm_insn (\"bc1t\\t%2\\t\\t# ble\", br_ops);    }  else if  (mode == SFmode)    {      output_asm_insn (\"c.le.s\\t%0,%1\\t\\t# ble\", br_ops);      output_asm_insn (\"bc1t\\t%2\\t\\t# ble\", br_ops);    }  else    {      output_asm_insn (\"bleu\\t%0,%1,%2\\t\\t# bleu\", br_ops);    }  return \" #\\tbleu\\t%l0\\t\\t# bleu\";}")(define_insn ""  [(set (pc)	(if_then_else (ne (cc0)			  (const_int 0))		      (pc)		      (label_ref (match_operand 0 "" ""))))]  ""  "*{  rtx br_ops[3];  enum machine_mode mode;  compare_restore (br_ops,  &mode, insn);  br_ops[2] = operands[0];  if (mode == DFmode)    {      output_asm_insn (\"c.eq.d\\t%0,%1\\t\\t# beq\", br_ops);      output_asm_insn (\"bc1t\\t%2\\t\\t# beq\", br_ops);    }  else if  (mode == SFmode)    {      output_asm_insn (\"c.eq.s\\t%0,%1\\t\\t# beq\", br_ops);      output_asm_insn (\"bc1t\\t%2\\t\\t# beq\", br_ops);    }  else    {      output_asm_insn (\"beq\\t%0,%1,%2\\t\\t# beq Inv.\", br_ops);    }  return \"\";}")(define_insn ""  [(set (pc)	(if_then_else (eq (cc0)			  (const_int 0))		      (pc)		      (label_ref (match_operand 0 "" ""))))]  ""  "*{  rtx br_ops[3];  enum machine_mode mode;  compare_restore (br_ops,  &mode, insn);  br_ops[2] = operands[0];  if (mode == DFmode)    {      output_asm_insn (\"c.eq.d\\t%0,%1\\t\\t# bne\", br_ops);      output_asm_insn (\"bc1f\\t%2\\t\\t# bne\", br_ops);    }  else if  (mode == SFmode)    {      output_asm_insn (\"c.eq.s\\t%0,%1\\t\\t# bne\", br_ops);      output_asm_insn (\"bc1f\\t%2\\t\\t# beq\", br_ops);    }  else    {      output_asm_insn (\"bne\\t%0,%1,%2\\t\\t# bne Inv.\", br_ops);    }  return \"\";}")(define_insn ""  [(set (pc)	(if_then_else (le (cc0)			  (const_int 0))		      (pc)		      (label_ref (match_operand 0 "" ""))))]  ""  "*{  rtx br_ops[3];  enum machine_mode mode;  compare_restore (br_ops,  &mode, insn);  br_ops[2] = operands[0];  if (mode == DFmode)    {      output_asm_insn (\"c.le.d\\t%0,%1\\t\\t# bgt\", br_ops);      output_asm_insn (\"bc1f\\t%2\\t\\t# beq\", br_ops);    }  else if  (mode == SFmode)    {      output_asm_insn (\"c.le.s\\t%0,%1\\t\\t# bgt\", br_ops);      output_asm_insn (\"bc1f\\t%2\\t\\t# beq\", br_ops);    }  else    {      output_asm_insn (\"bgt\\t%0,%1,%2\\t\\t# bgt Inv.\", br_ops);    }  return \"\";}")(define_insn ""  [(set (pc)	(if_then_else (leu (cc0)			   (const_int 0))		      (pc)		      (label_ref (match_operand 0 "" ""))))]  ""  "*{  rtx br_ops[3];  enum machine_mode mode;  compare_restore (br_ops,  &mode, insn);  br_ops[2] = operands[0];  if (mode == DFmode)    {      output_asm_insn (\"c.le.d\\t%0,%1\\t\\t# bgt\", br_ops);      output_asm_insn (\"bc1f\\t%2\\t\\t# beq\", br_ops);    }  else if  (mode == SFmode)    {      output_asm_insn (\"c.le.s\\t%0,%1\\t\\t# bgt\", br_ops);      output_asm_insn (\"bc1f\\t%2\\t\\t# beq\", br_ops);    }  else    {      output_asm_insn (\"bgtu\\t%0,%1,%2\\t\\t# bgtu Inv.\", br_ops);    }  return \" #\\tbgtu\\t%l0\\t\\t# bgtu\";}")(define_insn ""  [(set (pc)	(if_then_else (ge (cc0)			  (const_int 0))		      (pc)		      (label_ref (match_operand 0 "" ""))))]  ""  "*{  rtx br_ops[3];  enum machine_mode mode;  compare_restore (br_ops,  &mode, insn);  br_ops[2] = operands[0];  if (mode == DFmode)    {      output_asm_insn (\"c.lt.d\\t%0,%1\\t\\t# blt\", br_ops);      output_asm_insn (\"bc1t\\t%2\\t\\t# beq\", br_ops);    }  else if  (mode == SFmode)    {      output_asm_insn (\"c.lt.s\\t%0,%1\\t\\t# blt\", br_ops);      output_asm_insn (\"bc1t\\t%2\\t\\t# beq\", br_ops);    }  else    {      output_asm_insn (\"blt\\t%0,%1,%2\\t\\t# blt Inv.\", br_ops);    }  return \"\";}")(define_insn ""  [(set (pc)	(if_then_else (geu (cc0)			   (const_int 0))		      (pc)		      (label_ref (match_operand 0 "" ""))))]  ""  "*{  rtx br_ops[3];  enum machine_mode mode;  compare_restore (br_ops,  &mode, insn);  br_ops[2] = operands[0];  if (mode == DFmode)    {      output_asm_insn (\"c.lt.d\\t%0,%1\\t\\t# bltu\", br_ops);      output_asm_insn (\"bc1t\\t%2\\t\\t# bltu\", br_ops);    }  else if  (mode == SFmode)    {      output_asm_insn (\"c.lt.s\\t%0,%1\\t\\t# bltu\", br_ops);      output_asm_insn (\"bc1t\\t%2\\t\\t# bltu\", br_ops);    }  else    {      output_asm_insn (\"bltu\\t%0,%1,%2\\t\\t# bltu Inv.\", br_ops);    }  return \" #\\tbltu\\t%l0\\t\\t# bltu\";}")(define_insn ""  [(set (pc)	(if_then_else (lt (cc0)			  (const_int 0))		      (pc)		      (label_ref (match_operand 0 "" ""))))]  ""  "*{  rtx br_ops[3];  enum machine_mode mode;  compare_restore (br_ops,  &mode, insn);  br_ops[2] = operands[0];  if (mode == DFmode)    {      output_asm_insn (\"c.lt.d\\t%0,%1\\t\\t# bge\", br_ops);      output_asm_insn (\"bc1f\\t%2\\t\\t# bge (DF) Inv.\", br_ops);    }  else if  (mode == SFmode)    {      output_asm_insn (\"c.lt.s\\t%0,%1\\t\\t# bge\", br_ops);      output_asm_insn (\"bc1f\\t%2\\t\\t# bge (SF) Inv.\", br_ops);    }  else    {      output_asm_insn (\"bge\\t%0,%1,%2\\t\\t# bge Inv.\", br_ops);    }  return \"\";}")(define_insn ""  [(set (pc)	(if_then_else (ltu (cc0)			   (const_int 0))		      (pc)		      (label_ref (match_operand 0 "" ""))))]  ""  "*{  rtx br_ops[3];  enum machine_mode mode;  compare_restore (br_ops,  &mode, insn);  br_ops[2] = operands[0];  if (mode == DFmode)    {      output_asm_insn (\"c.lt.d\\t%0,%1\\t\\t# bge\", br_ops);      output_asm_insn (\"bc1f\\t%2\\t\\t# bgeu (DF)  Inv.\", br_ops);    }  else if  (mode == SFmode)    {      output_asm_insn (\"c.lt.s\\t%0,%1\\t\\t# bge\", br_ops);      output_asm_insn (\"bc1f\\t%2\\t\\t# bgeu (SF )Inv.\", br_ops);    }  else    {      output_asm_insn (\"bgeu\\t%0,%1,%2\\t\\t# bgeu Inv.\", br_ops);    }  return \" #\\tbgeu\\t%l0\\t\\t# bgeu\";}")(define_insn ""  [(set (pc)	(if_then_else (gt (cc0)			  (const_int 0))		      (pc)		      (label_ref (match_operand 0 "" ""))))]  ""  "*{  rtx br_ops[3];  enum machine_mode mode;  compare_restore (br_ops,  &mode, insn);  br_ops[2] = operands[0];  if (mode == DFmode)    {      output_asm_insn (\"c.le.d\\t%0,%1\\t\\t# ble\", br_ops);      output_asm_insn (\"bc1t\\t%2\\t\\t# ble\", br_ops);    }  else if  (mode == SFmode)    {      output_asm_insn (\"c.le.s\\t%0,%1\\t\\t# ble\", br_ops);      output_asm_insn (\"bc1t\\t%2\\t\\t# ble\", br_ops);    }  else    {      output_asm_insn (\"ble\\t%0,%1,%2\\t\\t# ble Inv.\", br_ops);    }  return \"\";}")(define_insn ""  [(set (pc)	(if_then_else (gtu (cc0)			   (const_int 0))		      (pc)		      (label_ref (match_operand 0 "" ""))))]  ""  "*{  rtx br_ops[3];  enum machine_mode mode;  compare_restore (br_ops,  &mode, insn);  br_ops[2] = operands[0];  if (mode == DFmode)    {      output_asm_insn (\"c.le.d\\t%0,%1\\t\\t# bleu\", br_ops);      output_asm_insn (\"bc1t\\t%2\\t\\t# bleu\", br_ops);    }  else if  (mode == SFmode)    {      output_asm_insn (\"c.le.s\\t%0,%1\\t\\t# bleu\", br_ops);      output_asm_insn (\"bc1t\\t%2\\t\\t# bleu\", br_ops);    }  else    {      output_asm_insn (\"bleu\\t%0,%1,%2\\t\\t# bleu Inv.\", br_ops);    }  return \"\";}");;;;  ....................;;;;          LINKAGE;;;;  ....................(define_insn "call"  [(call (match_operand 0 "memory_operand" "m")	 (match_operand 1 "" "i"))   (clobber (reg:SI 31))]  ""  "*{  register rtx target = XEXP (operands[0], 0);  if (GET_CODE (target) == SYMBOL_REF)    return \"jal\\t%0\";  else    {      operands[0] = target;      return \"jal\\t$31,%0\";    }}")(define_insn "call_value"  [(set (match_operand 0 "" "=rf")        (call (match_operand 1 "memory_operand" "m")              (match_operand 2 "" "i")))   (clobber (reg:SI 31))]  ""  "*{  register rtx target = XEXP (operands[1], 0);  if (GET_CODE (target) == SYMBOL_REF)    return \"jal\\t%1\";  else    {      operands[1] = target;      return \"jal\\t$31,%1\";    }}")(define_insn "nop"  [(const_int 0)]  ""  ".set\\tnoreorder\;nop\;.set\\treorder")(define_insn "probe"  [(mem:SI (reg:SI 29))]  ""  "*{  operands[0] = gen_rtx (REG, SImode, 1);  operands[1] = stack_pointer_rtx;  return \".set\\tnoat\;lw\\t%0,0(%1)\\t\\t# stack probe\;.set\\tat\";}");;;;- 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 + -