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

📄 mn10300.md

📁 linux下的gcc编译器
💻 MD
📖 第 1 页 / 共 5 页
字号:
  ""  "")(define_insn ""  [(set (match_operand:QI 0 "nonimmediate_operand" "=R,T,r")	(ior:QI (match_operand:QI 1 "nonimmediate_operand" "%0,0,0")		;; This constraint should really be nonmemory_operand,		;; but making it general_operand, along with the		;; condition that not both input operands are MEMs, it		;; here helps combine do a better job.		(match_operand:QI 2 "general_operand" "i,d,ir")))]  "TARGET_AM33 &&   (GET_CODE (operands[2]) != MEM || GET_CODE (operands[1]) != MEM)"  "@  bset %U2,%A0  bset %2,%0  or %2,%0"  [(set_attr "cc" "clobber,clobber,set_znv")])(define_insn ""  [(set (match_operand:QI 0 "nonimmediate_operand" "=R,T,d")	(ior:QI (match_operand:QI 1 "nonimmediate_operand" "%0,0,0")		;; This constraint should really be nonmemory_operand,		;; but making it general_operand, along with the		;; condition that not both input operands are MEMs, it		;; here helps combine do a better job.		(match_operand:QI 2 "general_operand" "i,d,id")))]  "GET_CODE (operands[2]) != MEM || GET_CODE (operands[1]) != MEM"  "@  bset %U2,%A0  bset %2,%0  or %2,%0"  [(set_attr "cc" "clobber,clobber,set_znv")])(define_insn ""  [(set (cc0)     (zero_extract:SI (match_operand:SI 0 "register_operand" "dx")		      (match_operand 1 "const_int_operand" "")		      (match_operand 2 "const_int_operand" "")))]  ""  "*{  int len = INTVAL (operands[1]);  int bit = INTVAL (operands[2]);  int mask = 0;  rtx xoperands[2];  while (len > 0)    {      mask |= (1 << bit);      bit++;      len--;    }  xoperands[0] = operands[0];  xoperands[1] = GEN_INT (trunc_int_for_mode (mask, SImode));  output_asm_insn (\"btst %1,%0\", xoperands);  return \"\";}"  [(set_attr "cc" "clobber")])(define_insn ""  [(set (cc0)     (zero_extract:SI (match_operand:QI 0 "general_operand" "R,dx")		      (match_operand 1 "const_int_operand" "")		      (match_operand 2 "const_int_operand" "")))]  "mask_ok_for_mem_btst (INTVAL (operands[1]), INTVAL (operands[2]))"  "*{  int len = INTVAL (operands[1]);  int bit = INTVAL (operands[2]);  int mask = 0;  rtx xoperands[2];  while (len > 0)    {      mask |= (1 << bit);      bit++;      len--;    }  /* If the source operand is not a reg (ie it is memory), then extract the     bits from mask that we actually want to test.  Note that the mask will     never cross a byte boundary.  */  if (!REG_P (operands[0]))    {      if (mask & 0xff)	mask = mask & 0xff;      else if (mask & 0xff00)	mask = (mask >> 8) & 0xff;      else if (mask & 0xff0000)	mask = (mask >> 16) & 0xff;      else if (mask & 0xff000000)	mask = (mask >> 24) & 0xff;    }    xoperands[0] = operands[0];  xoperands[1] = GEN_INT (trunc_int_for_mode (mask, SImode));  if (GET_CODE (operands[0]) == REG)    output_asm_insn (\"btst %1,%0\", xoperands);  else    output_asm_insn (\"btst %U1,%A0\", xoperands);  return \"\";}"  [(set_attr "cc" "clobber")])(define_insn ""  [(set (cc0) (and:SI (match_operand:SI 0 "register_operand" "dx")		      (match_operand:SI 1 "const_int_operand" "")))]  ""  "btst %1,%0"  [(set_attr "cc" "clobber")])(define_insn ""  [(set (cc0)     (and:SI       (subreg:SI (match_operand:QI 0 "general_operand" "R,dx") 0)       (match_operand:SI 1 "const_8bit_operand" "")))]  ""  "@  btst %U1,%A0  btst %1,%0"  [(set_attr "cc" "clobber")]);; ----------------------------------------------------------------------;; 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 ""  [(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;  return \"b%b1 %0\";}" [(set_attr "cc" "none")])(define_insn ""  [(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;  return \"b%B1 %0\";}" [(set_attr "cc" "none")]);; Unconditional and other jump instructions.(define_insn "jump"  [(set (pc)	(label_ref (match_operand 0 "" "")))]  ""  "jmp %l0" [(set_attr "cc" "none")])(define_insn "indirect_jump"  [(set (pc) (match_operand:SI 0 "register_operand" "a"))]  ""  "jmp (%0)"  [(set_attr "cc" "none")])(define_insn "tablejump"  [(set (pc) (match_operand:SI 0 "register_operand" "a"))   (use (label_ref (match_operand 1 "" "")))]  ""  "jmp (%0)"  [(set_attr "cc" "none")]);; Call subroutine with no return value.(define_expand "call"  [(call (match_operand:QI 0 "general_operand" "")	 (match_operand:SI 1 "general_operand" ""))]  ""  "{  if (! call_address_operand (XEXP (operands[0], 0), VOIDmode))    XEXP (operands[0], 0) = force_reg (SImode, XEXP (operands[0], 0));  emit_call_insn (gen_call_internal (XEXP (operands[0], 0), operands[1]));  DONE;}")(define_insn "call_internal"  [(call (mem:QI (match_operand:SI 0 "call_address_operand" "aS"))	 (match_operand:SI 1 "general_operand" "g"))]  ""  "*{  if (REG_P (operands[0]))    return \"calls %C0\";  else    return \"call %C0,[],0\";}"  [(set_attr "cc" "clobber")]);; Call subroutine, returning value in operand 0;; (which must be a hard register).(define_expand "call_value"  [(set (match_operand 0 "" "")	(call (match_operand:QI 1 "general_operand" "")	      (match_operand:SI 2 "general_operand" "")))]  ""  "{  if (! call_address_operand (XEXP (operands[1], 0), VOIDmode))    XEXP (operands[1], 0) = force_reg (SImode, XEXP (operands[1], 0));  emit_call_insn (gen_call_value_internal (operands[0],					   XEXP (operands[1], 0),					   operands[2]));  DONE;}")(define_insn "call_value_internal"  [(set (match_operand 0 "" "=dax")	(call (mem:QI (match_operand:SI 1 "call_address_operand" "aS"))	      (match_operand:SI 2 "general_operand" "g")))]  ""  "*{  if (REG_P (operands[1]))    return \"calls %C1\";  else    return \"call %C1,[],0\";}"  [(set_attr "cc" "clobber")])(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));  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));    }  DONE;}")(define_insn "nop"  [(const_int 0)]  ""  "nop"  [(set_attr "cc" "none")]);; ----------------------------------------------------------------------;; EXTEND INSTRUCTIONS;; ----------------------------------------------------------------------(define_expand "zero_extendqisi2"  [(set (match_operand:SI 0 "general_operand" "")	(zero_extend:SI	 (match_operand:QI 1 "general_operand" "")))]  ""  "")(define_insn ""  [(set (match_operand:SI 0 "nonimmediate_operand" "=dx,dx,dx,!dax,!dax,!dax")	(zero_extend:SI	 (match_operand:QI 1 "general_operand" "0,dax,m,0,dax,m")))]  "TARGET_AM33"  "@  extbu %0  mov %1,%0\;extbu %0  movbu %1,%0  extbu %0  mov %1,%0\;extbu %0  movbu %1,%0"  [(set_attr "cc" "none_0hit")])(define_insn ""  [(set (match_operand:SI 0 "nonimmediate_operand" "=dx,dx,dx")	(zero_extend:SI	 (match_operand:QI 1 "general_operand" "0,d,m")))]  ""  "@  extbu %0  mov %1,%0\;extbu %0  movbu %1,%0"  [(set_attr "cc" "none_0hit")])(define_expand "zero_extendhisi2"  [(set (match_operand:SI 0 "general_operand" "")	(zero_extend:SI	 (match_operand:HI 1 "general_operand" "")))]  ""  "")(define_insn ""  [(set (match_operand:SI 0 "nonimmediate_operand" "=dx,dx,dx,!dax,!dax,!dax")	(zero_extend:SI	 (match_operand:HI 1 "general_operand" "0,dax,m,0,dax,m")))]  "TARGET_AM33"  "@  exthu %0  mov %1,%0\;exthu %0  movhu %1,%0  exthu %0  mov %1,%0\;exthu %0  movhu %1,%0"  [(set_attr "cc" "none_0hit")])(define_insn ""  [(set (match_operand:SI 0 "nonimmediate_operand" "=dx,dx,dx")	(zero_extend:SI	 (match_operand:HI 1 "general_operand" "0,dx,m")))]  ""  "@  exthu %0  mov %1,%0\;exthu %0  movhu %1,%0"  [(set_attr "cc" "none_0hit")]);;- sign extension instructions(define_expand "extendqisi2"  [(set (match_operand:SI 0 "general_operand" "")	(sign_extend:SI	 (match_operand:QI 1 "general_operand" "")))]  ""

⌨️ 快捷键说明

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