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

📄 ns32k.md

📁 GCC编译器源代码
💻 MD
📖 第 1 页 / 共 5 页
字号:
  ""  "*{  if (GET_CODE (operands[1]) == CONST_INT      && INTVAL (operands[1]) >-9 && INTVAL(operands[1]) < 8)    return \"addqb %2,%0\";  return \"addb %2,%0\";}");;- All kinds of subtract instructions.(define_insn "subdf3"  [(set (match_operand:DF 0 "general_operand" "=fm")	(minus:DF (match_operand:DF 1 "general_operand" "0")		  (match_operand:DF 2 "general_operand" "fmF")))]  "TARGET_32081"  "subl %2,%0")(define_insn "subsf3"  [(set (match_operand:SF 0 "general_operand" "=fm")	(minus:SF (match_operand:SF 1 "general_operand" "0")		  (match_operand:SF 2 "general_operand" "fmF")))]  "TARGET_32081"  "subf %2,%0")(define_insn ""  [(set (reg:SI 17)	(minus:SI (reg:SI 17)		  (match_operand:SI 0 "immediate_operand" "i")))]  "GET_CODE (operands[0]) == CONST_INT"  "*{  if (! TARGET_32532 && GET_CODE(operands[0]) == CONST_INT       && INTVAL(operands[0]) < 64 && INTVAL(operands[0]) > -64)    return \"adjspb %$%0\";  return \"adjspd %$%0\";}")(define_insn "subdi3"  [(set (match_operand:DI 0 "general_operand" "=ro")	(minus:DI (match_operand:DI 1 "general_operand" "0")		  (match_operand:DI 2 "general_operand" "ron")))]  ""  "*{  rtx low[3], high[3], xops[4];  split_di (operands, 3, low, high);  xops[0] = low[0];  xops[1] = high[0];  xops[2] = low[2];  xops[3] = high[2];  if (GET_CODE (xops[2]) == CONST_INT)    {      int i = INTVAL (xops[2]);      if (i <= 8 && i >= -7)        {          if (i == 0)	    {	      i = INTVAL (xops[3]);	      if (i <= 8 && i >= -7)                output_asm_insn (\"addqd %$%n3,%1\", xops);	      else                output_asm_insn (\"subd %$%3,%1\", xops);	    }	  else	    {              output_asm_insn (\"addqd %$%n2,%0\", xops);              output_asm_insn (\"subcd %$%3,%1\", xops);	    }	  return \"\";	}    }  output_asm_insn (\"subd %2,%0\", xops);  output_asm_insn (\"subcd %3,%1\", xops);  return \"\";}")(define_insn "subsi3"  [(set (match_operand:SI 0 "general_operand" "=g")	(minus:SI (match_operand:SI 1 "general_operand" "0")		  (match_operand:SI 2 "general_operand" "rmn")))]  ""  "*{ if (GET_CODE (operands[2]) == CONST_INT)    {      int i = INTVAL (operands[2]);      if (i <= 8 && i >= -7)        return \"addqd %$%n2,%0\";    }  return \"subd %2,%0\";}")(define_insn "subhi3"  [(set (match_operand:HI 0 "general_operand" "=g")	(minus:HI (match_operand:HI 1 "general_operand" "0")		  (match_operand:HI 2 "general_operand" "g")))]  ""  "*{ if (GET_CODE (operands[2]) == CONST_INT)    {      int i = INTVAL (operands[2]);      if (i <= 8 && i >= -7)        return \"addqw %$%n2,%0\";    }  return \"subw %2,%0\";}")(define_insn ""  [(set (strict_low_part (match_operand:HI 0 "general_operand" "=r"))	(minus:HI (match_operand:HI 1 "general_operand" "0")		  (match_operand:HI 2 "general_operand" "g")))]  ""  "*{  if (GET_CODE (operands[1]) == CONST_INT      && INTVAL (operands[1]) >-8 && INTVAL(operands[1]) < 9)    return \"addqw %$%n2,%0\";  return \"subw %2,%0\";}")(define_insn "subqi3"  [(set (match_operand:QI 0 "general_operand" "=g")	(minus:QI (match_operand:QI 1 "general_operand" "0")		  (match_operand:QI 2 "general_operand" "g")))]  ""  "*{ if (GET_CODE (operands[2]) == CONST_INT)    {      int i = INTVAL (operands[2]);      if (i <= 8 && i >= -7)	return \"addqb %$%n2,%0\";    }  return \"subb %2,%0\";}")(define_insn ""  [(set (strict_low_part (match_operand:QI 0 "general_operand" "=r"))	(minus:QI (match_operand:QI 1 "general_operand" "0")		  (match_operand:QI 2 "general_operand" "g")))]  ""  "*{  if (GET_CODE (operands[1]) == CONST_INT      && INTVAL (operands[1]) >-8 && INTVAL(operands[1]) < 9)    return \"addqb %$%n2,%0\";  return \"subb %2,%0\";}");;- Multiply instructions.(define_insn "muldf3"  [(set (match_operand:DF 0 "general_operand" "=fm")	(mult:DF (match_operand:DF 1 "general_operand" "%0")		 (match_operand:DF 2 "general_operand" "fmF")))]  "TARGET_32081"  "mull %2,%0")(define_insn "mulsf3"  [(set (match_operand:SF 0 "general_operand" "=fm")	(mult:SF (match_operand:SF 1 "general_operand" "%0")		 (match_operand:SF 2 "general_operand" "fmF")))]  "TARGET_32081"  "mulf %2,%0")(define_insn "mulsi3"  [(set (match_operand:SI 0 "general_operand" "=g")	(mult:SI (match_operand:SI 1 "general_operand" "%0")		 (match_operand:SI 2 "general_operand" "rmn")))]  ""  "muld %2,%0")(define_insn "mulhi3"  [(set (match_operand:HI 0 "general_operand" "=g")	(mult:HI (match_operand:HI 1 "general_operand" "%0")		 (match_operand:HI 2 "general_operand" "g")))]  ""  "mulw %2,%0")(define_insn "mulqi3"  [(set (match_operand:QI 0 "general_operand" "=g")	(mult:QI (match_operand:QI 1 "general_operand" "%0")		 (match_operand:QI 2 "general_operand" "g")))]  ""  "mulb %2,%0")(define_insn "umulsidi3"  [(set (match_operand:DI 0 "general_operand" "=g")	(mult:DI (zero_extend:DI		  (match_operand:SI 1 "nonimmediate_operand" "0"))		 (zero_extend:DI		  (match_operand:SI 2 "nonimmediate_operand" "rmn"))))]  ""  "meid %2,%0");;- Divide instructions.(define_insn "divdf3"  [(set (match_operand:DF 0 "general_operand" "=fm")	(div:DF (match_operand:DF 1 "general_operand" "0")		(match_operand:DF 2 "general_operand" "fmF")))]  "TARGET_32081"  "divl %2,%0")(define_insn "divsf3"  [(set (match_operand:SF 0 "general_operand" "=fm")	(div:SF (match_operand:SF 1 "general_operand" "0")		(match_operand:SF 2 "general_operand" "fmF")))]  "TARGET_32081"  "divf %2,%0")(define_insn "divsi3"  [(set (match_operand:SI 0 "general_operand" "=g")	(div:SI (match_operand:SI 1 "general_operand" "0")		(match_operand:SI 2 "general_operand" "rmn")))]  ""  "quod %2,%0")(define_insn "divhi3"  [(set (match_operand:HI 0 "general_operand" "=g")	(div:HI (match_operand:HI 1 "general_operand" "0")		(match_operand:HI 2 "general_operand" "g")))]  ""  "quow %2,%0")(define_insn "divqi3"  [(set (match_operand:QI 0 "general_operand" "=g")	(div:QI (match_operand:QI 1 "general_operand" "0")		(match_operand:QI 2 "general_operand" "g")))]  ""  "quob %2,%0")(define_insn "udivsi3"  [(set (match_operand:SI 0 "register_operand" "=r")	(udiv:SI (subreg:SI (match_operand:DI 1 "reg_or_mem_operand" "0") 0)		 (match_operand:SI 2 "general_operand" "rmn")))]  ""  "*{  operands[1] = gen_rtx (REG, SImode, REGNO (operands[0]) + 1);  return \"deid %2,%0\;movd %1,%0\";}")(define_insn "udivhi3"  [(set (match_operand:HI 0 "register_operand" "=r")	(udiv:HI (subreg:HI (match_operand:DI 1 "reg_or_mem_operand" "0") 0)		 (match_operand:HI 2 "general_operand" "g")))]  ""  "*{  operands[1] = gen_rtx (REG, HImode, REGNO (operands[0]) + 1);  return \"deiw %2,%0\;movw %1,%0\";}")(define_insn "udivqi3"  [(set (match_operand:QI 0 "register_operand" "=r")	(udiv:QI (subreg:QI (match_operand:DI 1 "reg_or_mem_operand" "0") 0)		 (match_operand:QI 2 "general_operand" "g")))]  ""  "*{  operands[1] = gen_rtx (REG, QImode, REGNO (operands[0]) + 1);  return \"deib %2,%0\;movb %1,%0\";}");; Remainder instructions.(define_insn "modsi3"  [(set (match_operand:SI 0 "general_operand" "=g")	(mod:SI (match_operand:SI 1 "general_operand" "0")		(match_operand:SI 2 "general_operand" "rmn")))]  ""  "remd %2,%0")(define_insn "modhi3"  [(set (match_operand:HI 0 "general_operand" "=g")	(mod:HI (match_operand:HI 1 "general_operand" "0")		(match_operand:HI 2 "general_operand" "g")))]  ""  "remw %2,%0")(define_insn "modqi3"  [(set (match_operand:QI 0 "general_operand" "=g")	(mod:QI (match_operand:QI 1 "general_operand" "0")		(match_operand:QI 2 "general_operand" "g")))]  ""  "remb %2,%0")(define_insn "umodsi3"  [(set (match_operand:SI 0 "register_operand" "=r")	(umod:SI (subreg:SI (match_operand:DI 1 "reg_or_mem_operand" "0") 0)		 (match_operand:SI 2 "general_operand" "rmn")))]  ""  "deid %2,%0")(define_insn "umodhi3"  [(set (match_operand:HI 0 "register_operand" "=r")	(umod:HI (subreg:HI (match_operand:DI 1 "reg_or_mem_operand" "0") 0)		 (match_operand:HI 2 "general_operand" "g")))]  ""  "deiw %2,%0")(define_insn "umodqi3"  [(set (match_operand:QI 0 "register_operand" "=r")	(umod:QI (subreg:QI (match_operand:DI 1 "reg_or_mem_operand" "0") 0)		 (match_operand:QI 2 "general_operand" "g")))]  ""  "deib %2,%0"); This isn't be usable in its current form.;(define_insn "udivmoddisi4";  [(set (subreg:SI (match_operand:DI 0 "general_operand" "=r") 1);	(udiv:SI (match_operand:DI 1 "general_operand" "0");		 (match_operand:SI 2 "general_operand" "rmn")));   (set (subreg:SI (match_dup 0) 0);	(umod:SI (match_dup 1) (match_dup 2)))];  "";  "deid %2,%0");;- Logical Instructions: AND(define_insn "andsi3"  [(set (match_operand:SI 0 "general_operand" "=g")	(and:SI (match_operand:SI 1 "general_operand" "%0")		(match_operand:SI 2 "general_operand" "rmn")))]  ""  "*{  if (GET_CODE (operands[2]) == CONST_INT)    {      if ((INTVAL (operands[2]) | 0xff) == 0xffffffff)	{	  if (INTVAL (operands[2]) == 0xffffff00)	    return \"movqb %$0,%0\";	  else	    {	      operands[2] = gen_rtx (CONST_INT, VOIDmode,				     INTVAL (operands[2]) & 0xff);	      return \"andb %2,%0\";	    }	}      if ((INTVAL (operands[2]) | 0xffff) == 0xffffffff)        {	  if (INTVAL (operands[2]) == 0xffff0000)	    return \"movqw %$0,%0\";	  else	    {	      operands[2] = gen_rtx (CONST_INT, VOIDmode,				     INTVAL (operands[2]) & 0xffff);	      return \"andw %2,%0\";	    }	}    }  return \"andd %2,%0\";}")(define_insn "andhi3"  [(set (match_operand:HI 0 "general_operand" "=g")	(and:HI (match_operand:HI 1 "general_operand" "%0")		(match_operand:HI 2 "general_operand" "g")))]  ""  "*{  if (GET_CODE (operands[2]) == CONST_INT      && (INTVAL (operands[2]) | 0xff) == 0xffffffff)    {      if (INTVAL (operands[2]) == 0xffffff00)	return \"movqb %$0,%0\";      else	{	  operands[2] = gen_rtx (CONST_INT, VOIDmode,				 INTVAL (operands[2]) & 0xff);	  return \"andb %2,%0\";	}    }  return \"andw %2,%0\";}")(define_insn "andqi3"  [(set (match_operand:QI 0 "general_operand" "=g")	(and:QI (match_operand:QI 1 "general_operand" "%0")		(match_operand:QI 2 "general_operand" "g")))]  ""  "andb %2,%0")(define_insn ""  [(set (match_operand:SI 0 "general_operand" "=g")	(and:SI (not:SI (match_operand:SI 1 "general_operand" "rmn"))		(match_operand:SI 2 "general_operand" "0")))]  ""  "bicd %1,%0")(define_insn ""  [(set (match_operand:HI 0 "general_operand" "=g")	(and:HI (not:HI (match_operand:HI 1 "general_operand" "g"))		(match_operand:HI 2 "general_operand" "0")))]  ""  "bicw %1,%0")(define_insn ""  [(set (match_operand:QI 0 "general_operand" "=g")	(and:QI (not:QI (match_operand:QI 1 "general_operand" "g"))		(match_operand:QI 2 "general_operand" "0")))]  ""  "bicb %1,%0");;- Bit set instructions.(define_insn "iorsi3"  [(set (match_operand:SI 0 "general_operand" "=g")	(ior:SI (match_operand:SI 1 "general_operand" "%0")		(match_operand:SI 2 "general_operand" "rmn")))]  ""  "*{  if (GET_CODE (operands[2]) == CONST_INT) {    if ((INTVAL (operands[2]) & 0xffffff00) == 0)      return \"orb %2,%0\";    if ((INTVAL (operands[2]) & 0xffff0000) == 0)      return \"orw %2,%0\";  }  return \"ord %2,%0\";}")(define_insn "iorhi3"  [(set (match_operand:HI 0 "general_operand" "=g")	(ior:HI (match_operand:HI 1 "general_operand" "%0")		(match_operand:HI 2 "general_operand" "g")))]  ""  "*{  if (GET_CODE(operands[2]) == CONST_INT &&      (INTVAL(operands[2]) & 0xffffff00) == 0)    return \"orb %2,%0\";  return \"orw %2,%0\";}")(define_insn "iorqi3"  [(set (match_operand:QI 0 "general_operand" "=g")	(ior:QI (match_operand:QI 1 "general_operand" "%0")		(match_operand:QI 2 "general_operand" "g")))]  ""  "orb %2,%0");;- xor instructions.(define_insn "xorsi3"  [(set (match_operand:SI 0 "general_operand" "=g")	(xor:SI (match_operand:SI 1 "general_operand" "%0")		(match_operand:SI 2 "general_operand" "rmn")))]  ""  "*{  if (GET_CODE (operands[2]) == CONST_INT) {    if ((INTVAL (operands[2]) & 0xffffff00) == 0)      return \"xorb %2,%0\";    if ((INTVAL (operands[2]) & 0xffff0000) == 0)      return \"xorw %2,%0\";  }  return \"xord %2,%0\";}")(define_insn "xorhi3"  [(set (match_operand:HI 0 "general_operand" "=g")	(xor:HI (match_operand:HI 1 "general_operand" "%0")		(match_operand:HI 2 "general_operand" "g")))]  ""  "*{  if (GET_CODE(operands[2]) == CONST_INT &&      (INTVAL(operands[2]) & 0xffffff00) == 0)    return \"xorb %2,%0\";  return \"xorw %2,%0\";}")(define_insn "xorqi3"  [(set (match_operand:QI 0 "general_operand" "=g")	(xor:QI (match_operand:QI 1 "general_operand" "%0")		(match_operand:QI 2 "general_operand" "g")))]  ""  "xorb %2,%0")(define_insn "negdf2"  [(set (match_operand:DF 0 "general_operand" "=fm<")

⌨️ 快捷键说明

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