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

📄 v850.md

📁 gcc-2.95.3 Linux下最常用的C编译器
💻 MD
📖 第 1 页 / 共 3 页
字号:
	(and:SI (match_operand:SI 1 "register_operand" "%0,0,r")		(match_operand:SI 2 "nonmemory_operand" "r,I,M")))]  ""  "@  and %2,%0  and %.,%0  andi %2,%1,%0"  [(set_attr "length" "2,2,4")   (set_attr "cc" "set_znv")]);; ----------------------------------------------------------------------;; OR INSTRUCTIONS;; ----------------------------------------------------------------------(define_insn "*v850_set1_1"  [(set (match_operand:QI 0 "memory_operand" "=m")	(subreg:QI (ior:SI (subreg:SI (match_dup 0) 0)			   (match_operand 1 "power_of_two_operand" "")) 0))]  ""  "set1 %M1,%0"  [(set_attr "length" "4")   (set_attr "cc" "clobber")])(define_insn "*v850_set1_2"  [(set (match_operand:HI 0 "indirect_operand" "=m")	(subreg:HI (ior:SI (subreg:SI (match_dup 0) 0)			   (match_operand 1 "power_of_two_operand" "")) 0))]  ""  "*{  int log2 = exact_log2 (INTVAL (operands[1]));  if (log2 < 8)    return \"set1 %M1,%0\";  else    {      rtx xoperands[2];      xoperands[0] = gen_rtx (MEM, QImode,			      plus_constant (XEXP (operands[0], 0), log2 / 8));      xoperands[1] = GEN_INT (log2 % 8);      output_asm_insn (\"set1 %1,%0\", xoperands);    }  return \"\";}"  [(set_attr "length" "4")   (set_attr "cc" "clobber")])(define_insn "*v850_set1_3"  [(set (match_operand:SI 0 "indirect_operand" "=m")	(ior:SI (match_dup 0)		(match_operand 1 "power_of_two_operand" "")))]  ""  "*{  int log2 = exact_log2 (INTVAL (operands[1]));  if (log2 < 8)    return \"set1 %M1,%0\";  else    {      rtx xoperands[2];      xoperands[0] = gen_rtx (MEM, QImode,			      plus_constant (XEXP (operands[0], 0), log2 / 8));      xoperands[1] = GEN_INT (log2 % 8);      output_asm_insn (\"set1 %1,%0\", xoperands);    }  return \"\";}"  [(set_attr "length" "4")   (set_attr "cc" "clobber")])(define_insn "iorsi3"  [(set (match_operand:SI 0 "register_operand" "=r,r,r")	(ior:SI (match_operand:SI 1 "register_operand" "%0,0,r")		(match_operand:SI 2 "nonmemory_operand" "r,I,M")))]  ""  "@  or %2,%0  or %.,%0  ori %2,%1,%0"  [(set_attr "length" "2,2,4")   (set_attr "cc" "set_znv")]);; ----------------------------------------------------------------------;; XOR INSTRUCTIONS;; ----------------------------------------------------------------------(define_insn "*v850_not1_1"  [(set (match_operand:QI 0 "memory_operand" "=m")	(subreg:QI (xor:SI (subreg:SI (match_dup 0) 0)			   (match_operand 1 "power_of_two_operand" "")) 0))]  ""  "not1 %M1,%0"  [(set_attr "length" "4")   (set_attr "cc" "clobber")])(define_insn "*v850_not1_2"  [(set (match_operand:HI 0 "indirect_operand" "=m")	(subreg:HI (xor:SI (subreg:SI (match_dup 0) 0)			   (match_operand 1 "power_of_two_operand" "")) 0))]  ""  "*{  int log2 = exact_log2 (INTVAL (operands[1]));  if (log2 < 8)    return \"not1 %M1,%0\";  else    {      rtx xoperands[2];      xoperands[0] = gen_rtx (MEM, QImode,			      plus_constant (XEXP (operands[0], 0), log2 / 8));      xoperands[1] = GEN_INT (log2 % 8);      output_asm_insn (\"not1 %1,%0\", xoperands);    }  return \"\";}"  [(set_attr "length" "4")   (set_attr "cc" "clobber")])(define_insn "*v850_not1_3"  [(set (match_operand:SI 0 "indirect_operand" "=m")	(xor:SI (match_dup 0)		(match_operand 1 "power_of_two_operand" "")))]  ""  "*{  int log2 = exact_log2 (INTVAL (operands[1]));  if (log2 < 8)    return \"not1 %M1,%0\";  else    {      rtx xoperands[2];      xoperands[0] = gen_rtx (MEM, QImode,			      plus_constant (XEXP (operands[0], 0), log2 / 8));      xoperands[1] = GEN_INT (log2 % 8);      output_asm_insn (\"not1 %1,%0\", xoperands);    }  return \"\";}"  [(set_attr "length" "4")   (set_attr "cc" "clobber")])(define_insn "xorsi3"  [(set (match_operand:SI 0 "register_operand" "=r,r,r")	(xor:SI (match_operand:SI 1 "register_operand" "%0,0,r")		(match_operand:SI 2 "nonmemory_operand" "r,I,M")))]  ""  "@  xor %2,%0  xor %.,%0  xori %2,%1,%0"  [(set_attr "length" "2,2,4")   (set_attr "cc" "set_znv")]);; ----------------------------------------------------------------------;; NOT INSTRUCTIONS;; ----------------------------------------------------------------------(define_insn "one_cmplsi2"  [(set (match_operand:SI 0 "register_operand" "=r")	(not:SI (match_operand:SI 1 "register_operand" "r")))]  ""  "not %1,%0"  [(set_attr "length" "2")   (set_attr "cc" "set_znv")]);; -----------------------------------------------------------------;; BIT FIELDS;; -----------------------------------------------------------------;; ??? Is it worth defining insv and extv for the V850 series?!?;; An insv pattern would be useful, but does not get used because;; store_bit_field never calls insv when storing a constant value into a;; single-bit bitfield.;; extv/extzv patterns would be useful, but do not get used because;; optimize_bitfield_compare in fold-const usually converts single;; bit extracts into an AND with a mask.;; -----------------------------------------------------------------;; Scc INSTRUCTIONS;; -----------------------------------------------------------------(define_insn "sle"  [(set (match_operand:SI 0 "register_operand" "=r")        (le:SI (cc0) (const_int 0)))]  ""  "*{  if ((cc_status.flags & CC_OVERFLOW_UNUSABLE) != 0)    return 0;  return \"setf le,%0\";}"  [(set_attr "length" "4")   (set_attr "cc" "none_0hit")])(define_insn "sleu"  [(set (match_operand:SI 0 "register_operand" "=r")        (leu:SI (cc0) (const_int 0)))]  ""  "setf nh,%0"  [(set_attr "length" "4")   (set_attr "cc" "none_0hit")])(define_insn "sge"  [(set (match_operand:SI 0 "register_operand" "=r")        (ge:SI (cc0) (const_int 0)))]  ""  "*{  if ((cc_status.flags & CC_OVERFLOW_UNUSABLE) != 0)    return 0;  return \"setf ge,%0\";}"  [(set_attr "length" "4")   (set_attr "cc" "none_0hit")])(define_insn "sgeu"  [(set (match_operand:SI 0 "register_operand" "=r")        (geu:SI (cc0) (const_int 0)))]  ""  "setf nl,%0"  [(set_attr "length" "4")   (set_attr "cc" "none_0hit")])(define_insn "slt"  [(set (match_operand:SI 0 "register_operand" "=r")        (lt:SI (cc0) (const_int 0)))]  ""  "*{  if ((cc_status.flags & CC_OVERFLOW_UNUSABLE) != 0)    return 0;  return \"setf lt,%0\";}"  [(set_attr "length" "4")   (set_attr "cc" "none_0hit")])(define_insn "sltu"  [(set (match_operand:SI 0 "register_operand" "=r")        (ltu:SI (cc0) (const_int 0)))]  ""  "setf l,%0"  [(set_attr "length" "4")   (set_attr "cc" "none_0hit")])(define_insn "sgt"  [(set (match_operand:SI 0 "register_operand" "=r")        (gt:SI (cc0) (const_int 0)))]  ""  "*{  if ((cc_status.flags & CC_OVERFLOW_UNUSABLE) != 0)    return 0;  return \"setf gt,%0\";}"  [(set_attr "length" "4")   (set_attr "cc" "none_0hit")])(define_insn "sgtu"  [(set (match_operand:SI 0 "register_operand" "=r")        (gtu:SI (cc0) (const_int 0)))]  ""  "setf h,%0"  [(set_attr "length" "4")   (set_attr "cc" "none_0hit")])(define_insn "seq"  [(set (match_operand:SI 0 "register_operand" "=r")        (eq:SI (cc0) (const_int 0)))]  ""  "setf z,%0"  [(set_attr "length" "4")   (set_attr "cc" "none_0hit")])(define_insn "sne"  [(set (match_operand:SI 0 "register_operand" "=r")        (ne:SI (cc0) (const_int 0)))]  ""  "setf nz,%0"  [(set_attr "length" "4")   (set_attr "cc" "none_0hit")]);; ----------------------------------------------------------------------;; JUMP INSTRUCTIONS;; ----------------------------------------------------------------------;; Conditional jump instructions(define_expand "ble"  [(set (pc)	(if_then_else (le (cc0)			  (const_int 0))		      (label_ref (match_operand 0 "" ""))		      (pc)))]  ""  "")(define_expand "bleu"  [(set (pc)	(if_then_else (leu (cc0)			   (const_int 0))		      (label_ref (match_operand 0 "" ""))		      (pc)))]  ""  "")(define_expand "bge"  [(set (pc)	(if_then_else (ge (cc0)			  (const_int 0))		      (label_ref (match_operand 0 "" ""))		      (pc)))]  ""  "")(define_expand "bgeu"  [(set (pc)	(if_then_else (geu (cc0)			   (const_int 0))		      (label_ref (match_operand 0 "" ""))		      (pc)))]  ""  "")(define_expand "blt"  [(set (pc)	(if_then_else (lt (cc0)			  (const_int 0))		      (label_ref (match_operand 0 "" ""))		      (pc)))]  ""  "")(define_expand "bltu"  [(set (pc)	(if_then_else (ltu (cc0)			   (const_int 0))		      (label_ref (match_operand 0 "" ""))		      (pc)))]  ""  "")(define_expand "bgt"  [(set (pc)	(if_then_else (gt (cc0)			  (const_int 0))		      (label_ref (match_operand 0 "" ""))		      (pc)))]  ""  "")(define_expand "bgtu"  [(set (pc)	(if_then_else (gtu (cc0)			   (const_int 0))		      (label_ref (match_operand 0 "" ""))		      (pc)))]  ""  "")(define_expand "beq"  [(set (pc)	(if_then_else (eq (cc0)			  (const_int 0))		      (label_ref (match_operand 0 "" ""))		      (pc)))]  ""  "")(define_expand "bne"  [(set (pc)	(if_then_else (ne (cc0)			  (const_int 0))		      (label_ref (match_operand 0 "" ""))		      (pc)))]  ""  "")(define_insn "*branch_normal"  [(set (pc)	(if_then_else (match_operator 1 "comparison_operator"				      [(cc0) (const_int 0)])		      (label_ref (match_operand 0 "" ""))		      (pc)))]  ""  "*{  if ((cc_status.flags & CC_OVERFLOW_UNUSABLE) != 0      && (GET_CODE (operands[1]) == GT	  || GET_CODE (operands[1]) == GE	  || GET_CODE (operands[1]) == LE	  || GET_CODE (operands[1]) == LT))    return 0;  if (get_attr_length (insn) == 2)    return \"b%b1 %l0\";  else    return \"b%B1 .+6\;jr %l0\";}" [(set (attr "length")    (if_then_else (lt (abs (minus (match_dup 0) (pc)))		      (const_int 256))		  (const_int 2)		  (const_int 6)))  (set_attr "cc" "none")])(define_insn "*branch_invert"  [(set (pc)	(if_then_else (match_operator 1 "comparison_operator"				      [(cc0) (const_int 0)])		      (pc)		      (label_ref (match_operand 0 "" ""))))]  ""  "*{  if ((cc_status.flags & CC_OVERFLOW_UNUSABLE) != 0      && (GET_CODE (operands[1]) == GT	  || GET_CODE (operands[1]) == GE	  || GET_CODE (operands[1]) == LE	  || GET_CODE (operands[1]) == LT))    return 0;  if (get_attr_length (insn) == 2)    return \"b%B1 %l0\";  else    return \"b%b1 .+6\;jr %l0\";}" [(set (attr "length")    (if_then_else (lt (abs (minus (match_dup 0) (pc)))		      (const_int 256))		  (const_int 2)		  (const_int 6)))  (set_attr "cc" "none")]);; Unconditional and other jump instructions.

⌨️ 快捷键说明

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