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

📄 fx80.md

📁 gcc-2.95.3 Linux下最常用的C编译器
💻 MD
📖 第 1 页 / 共 5 页
字号:
	  operands[2] = tmp;	}      /* These insns can result from reloads to access	 stack slots over 64k from the frame pointer.  */      if (GET_CODE (operands[2]) == CONST_INT	  && INTVAL (operands[2]) + 0x8000 >= (unsigned) 0x10000)        return \"mov%.l %2,%0\;add%.l %1,%0\";      if (GET_CODE (operands[2]) == REG)	return \"lea %1@[%2:L:B],%0\";      else	return \"lea %1@(%c2),%0\";    }  if (GET_CODE (operands[2]) == CONST_INT)    {      if (INTVAL (operands[2]) > 0	  && INTVAL (operands[2]) <= 8)	return (ADDRESS_REG_P (operands[0])		? \"addq%.w %2,%0\"		: \"addq%.l %2,%0\");      if (INTVAL (operands[2]) < 0	  && INTVAL (operands[2]) >= -8)        {	  operands[2] = GEN_INT (- INTVAL (operands[2]));	  return (ADDRESS_REG_P (operands[0])		  ? \"subq%.w %2,%0\"		  : \"subq%.l %2,%0\");	}      if (ADDRESS_REG_P (operands[0])	  && INTVAL (operands[2]) >= -0x8000	  && INTVAL (operands[2]) < 0x8000)	return \"add%.w %2,%0\";    }  return \"add%.l %2,%0\";}")(define_insn ""  [(set (match_operand:SI 0 "general_operand" "=a")	(plus:SI (match_operand:SI 1 "general_operand" "0")		 (sign_extend:SI (match_operand:HI 2 "nonimmediate_operand" "rmn"))))]  ""  "add%.w %2,%0")(define_insn "addhi3"  [(set (match_operand:HI 0 "general_operand" "=mr,mr,m,r")	(plus:HI (match_operand:HI 1 "general_operand" "%0,0,0,0")		 (match_operand:HI 2 "general_operand" "I,L,dn,rmn")))]  ""  "@   addq%.w %2,%0   subq%.w #%n2,%0   add%.w %2,%0   add%.w %2,%0")(define_insn ""  [(set (strict_low_part (match_operand:HI 0 "general_operand" "+m,d"))	(plus:HI (match_dup 0)		 (match_operand:HI 1 "general_operand" "dn,rmn")))]  ""  "add%.w %1,%0")(define_insn "addqi3"  [(set (match_operand:QI 0 "general_operand" "=md,mr,m,d")	(plus:QI (match_operand:QI 1 "general_operand" "%0,0,0,0")		 (match_operand:QI 2 "general_operand" "I,L,dn,dmn")))]  ""  "@   addq%.b %2,%0   subq%.b #%n2,%0   add%.b %2,%0   add%.b %2,%0")(define_insn ""  [(set (strict_low_part (match_operand:QI 0 "general_operand" "+m,d"))	(plus:QI (match_dup 0)		 (match_operand:QI 1 "general_operand" "dn,dmn")))]  ""  "add%.b %1,%0")(define_insn "adddf3"  [(set (match_operand:DF 0 "register_operand" "=f")	(plus:DF (match_operand:DF 1 "nonimmediate_operand" "%f")		 (match_operand:DF 2 "nonimmediate_operand" "fm")))]  "TARGET_CE"  "fadd%.d %2,%1,%0")(define_insn "addsf3"  [(set (match_operand:SF 0 "register_operand" "=f")	(plus:SF (match_operand:SF 1 "nonimmediate_operand" "%f")		 (match_operand:SF 2 "nonimmediate_operand" "fm")))]  "TARGET_CE"  "fadd%.s %2,%1,%0");; subtract instructions(define_insn "subsi3"  [(set (match_operand:SI 0 "general_operand" "=m,r,!a,?d")	(minus:SI (match_operand:SI 1 "general_operand" "0,0,a,mrIKs")		  (match_operand:SI 2 "general_operand" "dIKs,mrIKs,J,0")))]  ""  "*{  if (! operands_match_p (operands[0], operands[1]))    {      if (operands_match_p (operands[0], operands[2]))	{	  if (GET_CODE (operands[1]) == CONST_INT)	    {	      if (INTVAL (operands[1]) > 0		  && INTVAL (operands[1]) <= 8)		return \"subq%.l %1,%0\;neg%.l %0\";	    }	  return \"sub%.l %1,%0\;neg%.l %0\";	}      /* This case is matched by J, but negating -0x8000         in an lea would give an invalid displacement.	 So do this specially.  */      if (INTVAL (operands[2]) == -0x8000)	return \"mov%.l %1,%0\;sub%.l %2,%0\";      return \"lea %1@(%n2),%0\";    }  if (GET_CODE (operands[2]) == CONST_INT)    {      if (INTVAL (operands[2]) > 0	  && INTVAL (operands[2]) <= 8)	return \"subq%.l %2,%0\";      if (ADDRESS_REG_P (operands[0])	  && INTVAL (operands[2]) >= -0x8000	  && INTVAL (operands[2]) < 0x8000)	return \"sub%.w %2,%0\";    }  return \"sub%.l %2,%0\";}")(define_insn ""  [(set (match_operand:SI 0 "general_operand" "=a")	(minus:SI (match_operand:SI 1 "general_operand" "0")		  (sign_extend:SI (match_operand:HI 2 "nonimmediate_operand" "rmn"))))]  ""  "sub%.w %2,%0")(define_insn "subhi3"  [(set (match_operand:HI 0 "general_operand" "=m,r")	(minus:HI (match_operand:HI 1 "general_operand" "0,0")		  (match_operand:HI 2 "general_operand" "dn,rmn")))]  ""  "sub%.w %2,%0")(define_insn ""  [(set (strict_low_part (match_operand:HI 0 "general_operand" "+m,d"))	(minus:HI (match_dup 0)		  (match_operand:HI 1 "general_operand" "dn,rmn")))]  ""  "sub%.w %1,%0")(define_insn "subqi3"  [(set (match_operand:QI 0 "general_operand" "=m,d")	(minus:QI (match_operand:QI 1 "general_operand" "0,0")		  (match_operand:QI 2 "general_operand" "dn,dmn")))]  ""  "sub%.b %2,%0")(define_insn ""  [(set (strict_low_part (match_operand:QI 0 "general_operand" "+m,d"))	(minus:QI (match_dup 0)		  (match_operand:QI 1 "general_operand" "dn,dmn")))]  ""  "sub%.b %1,%0")(define_insn "subdf3"  [(set (match_operand:DF 0 "register_operand" "=f,f,f")	(minus:DF (match_operand:DF 1 "nonimmediate_operand" "f,f,m")		  (match_operand:DF 2 "nonimmediate_operand" "f,m,f")))]  "TARGET_CE"  "@   fsub%.d %2,%1,%0   fsub%.d %2,%1,%0   frsub%.d %1,%2,%0")(define_insn "subsf3"  [(set (match_operand:SF 0 "register_operand" "=f,f,f")	(minus:SF (match_operand:SF 1 "nonimmediate_operand" "f,f,m")		  (match_operand:SF 2 "nonimmediate_operand" "f,m,f")))]  "TARGET_CE"  "@   fsub%.s %2,%1,%0   fsub%.s %2,%1,%0   frsub%.s %1,%2,%0");; multiply instructions(define_insn "mulhi3"  [(set (match_operand:HI 0 "general_operand" "=d")	(mult:HI (match_operand:HI 1 "general_operand" "%0")		 (match_operand:HI 2 "general_operand" "dmn")))]  ""  "muls %2,%0")(define_insn "mulhisi3"  [(set (match_operand:SI 0 "general_operand" "=d")	(mult:SI (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "%0"))		 (sign_extend:SI (match_operand:HI 2 "nonimmediate_operand" "dm"))))]  ""  "muls %2,%0")(define_insn ""  [(set (match_operand:SI 0 "general_operand" "=d")	(mult:SI (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "%0"))		 (match_operand:SI 2 "const_int_operand" "n")))]  ""  "muls %2,%0")(define_insn "mulsi3"  [(set (match_operand:SI 0 "general_operand" "=d")	(mult:SI (match_operand:SI 1 "general_operand" "%0")		 (match_operand:SI 2 "general_operand" "dmsK")))]  "TARGET_68020"  "muls%.l %2,%0")(define_insn "umulhisi3"  [(set (match_operand:SI 0 "general_operand" "=d")	(mult:SI (zero_extend:SI		  (match_operand:HI 1 "nonimmediate_operand" "%0"))		 (zero_extend:SI		  (match_operand:HI 2 "nonimmediate_operand" "dm"))))]  ""  "mulu %2,%0")(define_insn ""  [(set (match_operand:SI 0 "general_operand" "=d")	(mult:SI (zero_extend:SI		  (match_operand:HI 1 "nonimmediate_operand" "%0"))		 (match_operand:SI 2 "const_int_operand" "n")))]  ""  "mulu %2,%0")(define_insn "muldf3"  [(set (match_operand:DF 0 "register_operand" "=f")	(mult:DF (match_operand:DF 1 "nonimmediate_operand" "%f")		 (match_operand:DF 2 "nonimmediate_operand" "fm")))]  "TARGET_CE"  "fmul%.d %2,%1,%0")(define_insn "mulsf3"  [(set (match_operand:SF 0 "register_operand" "=f")	(mult:SF (match_operand:SF 1 "nonimmediate_operand" "%f")		 (match_operand:SF 2 "nonimmediate_operand" "fm")))]  "TARGET_CE"  "fmul%.s %2,%1,%0");; divide instructions(define_insn "divhi3"  [(set (match_operand:HI 0 "general_operand" "=d")	(div:HI (match_operand:HI 1 "general_operand" "0")		(match_operand:HI 2 "general_operand" "dmn")))]  ""  "extl %0\;divs %2,%0")(define_insn "divhisi3"  [(set (match_operand:HI 0 "general_operand" "=d")	(truncate:HI	 (div:SI	  (match_operand:SI 1 "general_operand" "0")	  (sign_extend:SI (match_operand:HI 2 "nonimmediate_operand" "dm")))))]  ""  "divs %2,%0")(define_insn ""  [(set (match_operand:HI 0 "general_operand" "=d")	(truncate:HI (div:SI (match_operand:SI 1 "general_operand" "0")			     (match_operand:SI 2 "const_int_operand" "n"))))]  ""  "divs %2,%0")(define_insn "divsi3"  [(set (match_operand:SI 0 "general_operand" "=d")	(div:SI (match_operand:SI 1 "general_operand" "0")		(match_operand:SI 2 "general_operand" "dmsK")))]  "TARGET_68020"  "divs%.l %2,%0,%0")(define_insn "udivhi3"  [(set (match_operand:HI 0 "general_operand" "=d")	(udiv:HI (match_operand:HI 1 "general_operand" "0")		 (match_operand:HI 2 "general_operand" "dmn")))]  ""  "and%.l %#0xFFFF,%0\;divu %2,%0")(define_insn "udivhisi3"  [(set (match_operand:HI 0 "general_operand" "=d")	(truncate:HI	 (udiv:SI	  (match_operand:SI 1 "general_operand" "0")	  (zero_extend:SI (match_operand:HI 2 "nonimmediate_operand" "dm")))))]  ""  "divu %2,%0")(define_insn ""  [(set (match_operand:HI 0 "general_operand" "=d")	(truncate:HI (udiv:SI (match_operand:SI 1 "nonimmediate_operand" "0")			      (match_operand:HI 2 "const_int_operand" "n"))))]  ""  "divu %2,%0")(define_insn "udivsi3"  [(set (match_operand:SI 0 "general_operand" "=d")	(udiv:SI (match_operand:SI 1 "general_operand" "0")		 (match_operand:SI 2 "general_operand" "dmsK")))]  "TARGET_68020"  "divu%.l %2,%0,%0")(define_insn "divdf3"  [(set (match_operand:DF 0 "register_operand" "=f,f,f")	(div:DF (match_operand:DF 1 "nonimmediate_operand" "f,f,m")		(match_operand:DF 2 "nonimmediate_operand" "f,m,f")))]  "TARGET_CE"  "@   fdiv%.d %2,%1,%0   fdiv%.d %2,%1,%0   frdiv%.d %1,%2,%0")(define_insn "divsf3"  [(set (match_operand:SF 0 "register_operand" "=f,f,f")	(div:SF (match_operand:SF 1 "nonimmediate_operand" "f,f,m")		(match_operand:SF 2 "nonimmediate_operand" "f,m,f")))]  "TARGET_CE"  "@   fdiv%.s %2,%1,%0   fdiv%.s %2,%1,%0   frdiv%.s %1,%2,%0");; Remainder instructions.(define_insn "modhi3"  [(set (match_operand:HI 0 "general_operand" "=d")	(mod:HI (match_operand:HI 1 "general_operand" "0")		(match_operand:HI 2 "general_operand" "dmn")))]  ""  "extl %0\;divs %2,%0\;swap %0")(define_insn "modhisi3"  [(set (match_operand:HI 0 "general_operand" "=d")	(truncate:HI	 (mod:SI	  (match_operand:SI 1 "general_operand" "0")	  (sign_extend:SI (match_operand:HI 2 "nonimmediate_operand" "dm")))))]  ""  "divs %2,%0\;swap %0")(define_insn ""  [(set (match_operand:HI 0 "general_operand" "=d")	(truncate:HI (mod:SI (match_operand:SI 1 "general_operand" "0")			     (match_operand:SI 2 "const_int_operand" "n"))))]  ""  "divs %2,%0\;swap %0")(define_insn "umodhi3"  [(set (match_operand:HI 0 "general_operand" "=d")	(umod:HI (match_operand:HI 1 "general_operand" "0")		 (match_operand:HI 2 "general_operand" "dmn")))]  ""  "and%.l %#0xFFFF,%0\;divu %2,%0\;swap %0")(define_insn "umodhisi3"  [(set (match_operand:HI 0 "general_operand" "=d")	(truncate:HI	 (umod:SI	  (match_operand:SI 1 "general_operand" "0")	  (zero_extend:SI (match_operand:HI 2 "nonimmediate_operand" "dm")))))]  ""  "divu %2,%0\;swap %0")(define_insn ""  [(set (match_operand:HI 0 "general_operand" "=d")	(truncate:HI (umod:SI (match_operand:SI 1 "general_operand" "0")			      (match_operand:SI 2 "const_int_operand" "n"))))]  ""  "divu %2,%0\;swap %0")(define_insn "divmodsi4"  [(set (match_operand:SI 0 "general_operand" "=d")	(div:SI (match_operand:SI 1 "general_operand" "0")		(match_operand:SI 2 "general_operand" "dmsK")))   (set (match_operand:SI 3 "general_operand" "=d")	(mod:SI (match_dup 1) (match_dup 2)))]  "TARGET_68020"  "divs%.l %2,%0,%3")(define_insn "udivmodsi4"  [(set (match_operand:SI 0 "general_operand" "=d")	(udiv:SI (match_operand:SI 1 "general_operand" "0")		 (match_operand:SI 2 "general_operand" "dmsK")))   (set (match_operand:SI 3 "general_operand" "=d")	(umod:SI (match_dup 1) (match_dup 2)))]  "TARGET_68020"  "divu%.l %2,%0,%3");; logical-and instructions(define_insn "andsi3"  [(set (match_operand:SI 0 "general_operand" "=m,d")	(and:SI (match_operand:SI 1 "general_operand" "%0,0")		(match_operand:SI 2 "general_operand" "dKs,dmKs")))]  ""  "*{  if (GET_CODE (operands[2]) == CONST_INT      && (INTVAL (operands[2]) | 0xffff) == 0xffffffff      && (DATA_REG_P (operands[0])	  || offsettable_memref_p (operands[0])))    {       if (GET_CODE (operands[0]) != REG)        operands[0] = adj_offsettable_operand (operands[0], 2);      operands[2] = GEN_INT (INTVAL (operands[2]) & 0xffff);      /* Do not delete a following tstl %0 insn; that would be incorrect.  */      CC_STATUS_INIT;      if (operands[2] == const0_rtx)        return \"clr%.w %0\";      return \"and%.w %2,%0\";    }  return \"and%.l %2,%0\";}")(define_insn "andhi3"  [(set (match_operand:HI 0 "general_operand" "=m,d")	(and:HI (match_operand:HI 1 "general_operand" "%0,0")		(match_operand:HI 2 "general_operand" "dn,dmn")))]  ""  "and%.w %2,%0")(define_insn "andqi3"  [(set (match_operand:QI 0 "general_operand" "=m,d")	(and:QI (match_operand:QI 1 "general_operand" "%0,0")		(match_operand:QI 2 "general_operand" "dn,dmn")))]  ""  "and%.b %2,%0");; inclusive-or instructions(define_insn "iorsi3"  [(set (match_operand:SI 0 "general_operand" "=m,d")	(ior:SI (match_operand:SI 1 "general_operand" "%0,0")		(match_operand:SI 2 "general_operand" "dKs,dmKs")))]  ""  "*{  register int logval;  if (GET_CODE (operands[2]) == CONST_INT      && INTVAL (operands[2]) >> 16 == 0      && (DATA_REG_P (operands[0])	  || offsettable_memref_p (operands[0])))    {       if (GET_CODE (operands[0]) != REG)        operands[0] = adj_offsettable_operand (operands[0], 2);      /* Do not delete a following tstl %0 insn; that would be incorrect.  */      CC_STATUS_INIT;      return \"or%.w %2,%0\";    }  if (GET_CODE (operands[2]) == CONST_INT      && (logval = exact_log2 (INTVAL (operands[2]))) >= 0      && (DATA_REG_P (operands[0])	  || offsettable_memref_p (operands[0])))

⌨️ 快捷键说明

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