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

📄 i370.md

📁 linux下的gcc编译器
💻 MD
📖 第 1 页 / 共 5 页
字号:
        emit_move_insn (gen_rtx_SUBREG (SImode, reg2, GET_MODE_SIZE (SImode)), len);        /* Compare! */        emit_insn (gen_cmpmemsi_1 (result, reg1, reg2));    }  DONE;}"); Compare a block that is less than 256 bytes in length.(define_insn ""  [(set (match_operand:SI 0 "register_operand" "=d")	(compare (match_operand:BLK 1 "s_operand" "m")		 (match_operand:BLK 2 "s_operand" "m")))   (use (match_operand:QI 3 "immediate_operand" "I"))]  "((unsigned) INTVAL (operands[3]) < 256)"  "*{  check_label_emit ();  mvs_check_page (0, 22, 0);  return \"LA	%0,%1\;CLC	%O1(%c3,%R1),%2\;BH	*+12\;BL	*+6\;SLR	%0,%0\;LNR	%0,%0\";}"   [(set_attr "length" "22")]); Compare a block that is larger than 255 bytes in length.(define_insn "cmpmemsi_1"  [(set (match_operand:SI 0 "register_operand" "+d")        (compare        (mem:BLK (subreg:SI (match_operand:DI 1 "register_operand" "+d") 0))        (mem:BLK (subreg:SI (match_operand:DI 2 "register_operand" "+d") 0))))   (use (match_dup 1))   (use (match_dup 2))   (clobber (match_dup 1))   (clobber (match_dup 2))]  ""  "*{  check_label_emit ();  mvs_check_page (0, 18, 0);  return \"LA	%0,1(0,0)\;CLCL	%1,%2\;BH	*+12\;BL	*+6\;SLR	%0,%0\;LNR	%0,%0\";}"   [(set_attr "length" "18")]);;;;- Move instructions.;;;; movdi instruction pattern(s).;(define_insn "";;  [(set (match_operand:DI 0 "r_or_s_operand" "=dm");;        (match_operand:DI 1 "r_or_s_operand" "dim*fF"))]  [(set (match_operand:DI 0 "r_or_s_operand" "=dS,m")        (match_operand:DI 1 "r_or_s_operand" "diS*fF,d*fF"))]  "TARGET_CHAR_INSTRUCTIONS"  "*{  check_label_emit ();  if (REG_P (operands[0]))    {      if (FP_REG_P (operands[1]))	{	  mvs_check_page (0, 8, 0);	  return \"STD	%1,140(,13)\;LM	%0,%N0,140(13)\";	}      if (REG_P (operands[1]))	{	  mvs_check_page (0, 4, 0);	  return \"LR	%0,%1\;LR	%N0,%N1\";	}      if (operands[1] == const0_rtx)	{	  CC_STATUS_INIT;	  mvs_check_page (0, 4, 0);	  return \"SLR	%0,%0\;SLR	%N0,%N0\";	}      if (GET_CODE (operands[1]) == CONST_INT  	  && (unsigned) INTVAL (operands[1]) < 4096)	{	  CC_STATUS_INIT;	  mvs_check_page (0, 6, 0);	  return \"SLR	%0,%0\;LA	%N0,%c1(0,0)\";	}      if (GET_CODE (operands[1]) == CONST_INT)	{	  CC_STATUS_SET (operands[0], operands[1]);	  mvs_check_page (0, 8, 0);	  return \"L	%0,%1\;SRDA	%0,32\";	}      mvs_check_page (0, 4, 0);      return \"LM	%0,%N0,%1\";    }  else if (FP_REG_P (operands[1]))    {      mvs_check_page (0, 4, 0);      return \"STD	%1,%0\";    }  else if (REG_P (operands[1]))    {      mvs_check_page (0, 4, 0);      return \"STM	%1,%N1,%0\";     }  mvs_check_page (0, 6, 0);  return \"MVC	%O0(8,%R0),%W1\";}"   [(set_attr "length" "8")])(define_insn "movdi";;  [(set (match_operand:DI 0 "general_operand" "=d,dm");;	(match_operand:DI 1 "general_operand" "dimF,*fd"))]  [(set (match_operand:DI 0 "general_operand" "=d,dm")	(match_operand:DI 1 "r_or_s_operand" "diSF,*fd"))]  ""  "*{  check_label_emit ();  if (REG_P (operands[0]))    {      if (FP_REG_P (operands[1]))	{	  mvs_check_page (0, 8, 0);	  return \"STD	%1,140(,13)\;LM	%0,%N0,140(13)\";	}      if (REG_P (operands[1]))	{	  mvs_check_page (0, 4, 0);	  return \"LR	%0,%1\;LR	%N0,%N1\";	}      if (operands[1] == const0_rtx)	{	  CC_STATUS_INIT;	  mvs_check_page (0, 4, 0);	  return \"SLR	%0,%0\;SLR	%N0,%N0\";	}      if (GET_CODE (operands[1]) == CONST_INT  	  && (unsigned) INTVAL (operands[1]) < 4096)	{	  CC_STATUS_INIT;	  mvs_check_page (0, 6, 0);	  return \"SLR	%0,%0\;LA	%N0,%c1(0,0)\";	}      if (GET_CODE (operands[1]) == CONST_INT)	{	  CC_STATUS_SET (operands[0], operands[1]);	  mvs_check_page (0, 8, 0);	  return \"L	%0,%1\;SRDA	%0,32\";	}      mvs_check_page (0, 4, 0);      return \"LM	%0,%N0,%1\";    }  else if (FP_REG_P (operands[1]))    {      mvs_check_page (0, 4, 0);      return \"STD	%1,%0\";    }  mvs_check_page (0, 4, 0);  return \"STM	%1,%N1,%0\";}"   [(set_attr "length" "8")]);; we have got to provide a movdi alternative that will go from ;; register to memory & back in its full glory.  However, we try to ;; discourage its use by listing this alternative last.;; The problem is that the instructions above only provide ;; S-form style (base + displacement) mem access, while the;; below provvides the full (base+index+displacement) RX-form.;; These are rarely needed, but when needed they're needed.(define_insn ""  [(set (match_operand:DI 0 "general_operand" "=d,???m")        (match_operand:DI 1 "general_operand" "???m,d"))]  ""  "*{  check_label_emit ();  if (REG_P (operands[0]))    {      mvs_check_page (0, 8, 0);      return \"LM	%0,%N0,%1\";    }  else if (REG_P (operands[1]))    {      mvs_check_page (0, 8, 0);      return \"STM	%1,%N1,%0\";    }  mvs_check_page (0, 6, 0);  return \"MVC	%O0(8,%R0),%1\";}"   [(set_attr "length" "8")]);; movsi instruction pattern(s).;(define_insn "";;  [(set (match_operand:SI 0 "r_or_s_operand" "=dm,d,dm");;        (match_operand:SI 1 "r_or_s_operand" "diR,dim,*fF"))]  [(set (match_operand:SI 0 "r_or_s_operand" "=d,dS,dm")        (match_operand:SI 1 "general_operand" "dim,diS,di*fF"))]  "TARGET_CHAR_INSTRUCTIONS"  "*{  check_label_emit ();  if (REG_P (operands[0]))    {      if (FP_REG_P (operands[1]))	{	  mvs_check_page (0, 8, 0);	  return \"STE	%1,140(,13)\;L	%0,140(,13)\";	}      if (REG_P (operands[1]))	{	  mvs_check_page (0, 2, 0);	  return \"LR	%0,%1\";	}      if (operands[1] == const0_rtx)	{	  CC_STATUS_INIT;	  mvs_check_page (0, 2, 0);	  return \"SLR	%0,%0\";	}      if (GET_CODE (operands[1]) == CONST_INT 	  && (unsigned) INTVAL (operands[1]) < 4096)	{	  mvs_check_page (0, 4, 0);	  return \"LA	%0,%c1(0,0)\";	}      mvs_check_page (0, 4, 0);      return \"L	%0,%1\";    }  else if (FP_REG_P (operands[1]))    {      mvs_check_page (0, 4, 0);      return \"STE	%1,%0\";    }  else if (REG_P (operands[1]))    {      mvs_check_page (0, 4, 0);      return \"ST	%1,%0\";    }  mvs_check_page (0, 6, 0);  return \"MVC	%O0(4,%R0),%1\";}"   [(set_attr "length" "8")])(define_insn "movsi"  [(set (match_operand:SI 0 "general_operand" "=d,dm")	(match_operand:SI 1 "general_operand" "dimF,*fd"))]  ""  "*{  check_label_emit ();  if (REG_P (operands[0]))    {      if (FP_REG_P (operands[1]))	{	  mvs_check_page (0, 8, 0);	  return \"STE	%1,140(,13)\;L	%0,140(,13)\";	}      if (REG_P (operands[1]))	{	  mvs_check_page (0, 2, 0);	  return \"LR	%0,%1\";	}      if (operands[1] == const0_rtx)	{	  CC_STATUS_INIT;	  mvs_check_page (0, 2, 0);	  return \"SLR	%0,%0\";	}      if (GET_CODE (operands[1]) == CONST_INT	  && (unsigned) INTVAL (operands[1]) < 4096)	{	  mvs_check_page (0, 4, 0);	  return \"LA	%0,%c1(0,0)\";	}      mvs_check_page (0, 4, 0);      return \"L	%0,%1\";    }  else if (FP_REG_P (operands[1]))    {      mvs_check_page (0, 4, 0);      return \"STE	%1,%0\";    }  mvs_check_page (0, 4, 0);  return \"ST	%1,%0\";}"   [(set_attr "length" "8")]);(define_expand "movsi";  [(set (match_operand:SI 0 "general_operand" "=d,dm");	(match_operand:SI 1 "general_operand" "dimF,*fd"))];  "";  ";{;  rtx op0, op1;;;  op0 = operands[0];;  if (GET_CODE (op0) == CONST;      && GET_CODE (XEXP (XEXP (op0, 0), 0)) == SYMBOL_REF;      && SYMBOL_REF_FLAG (XEXP (XEXP (op0, 0), 0)));    {;      op0 = gen_rtx_MEM (SImode, copy_to_mode_reg (SImode, XEXP (op0, 0)));;    };;  op1 = operands[1];;  if (GET_CODE (op1) == CONST;      && GET_CODE (XEXP (XEXP (op1, 0), 0)) == SYMBOL_REF;      && SYMBOL_REF_FLAG (XEXP (XEXP (op1, 0), 0)));    {;      op1 = gen_rtx_MEM (SImode, copy_to_mode_reg (SImode, XEXP (op1, 0)));;    };;  emit_insn (gen_rtx_SET (VOIDmode, op0, op1));;  DONE;;}");; movhi instruction pattern(s).;(define_insn ""  [(set (match_operand:HI 0 "r_or_s_operand" "=g")        (match_operand:HI 1 "r_or_s_operand" "g"))]  "TARGET_CHAR_INSTRUCTIONS"  "*{  check_label_emit ();  if (REG_P (operands[0]))    {      if (REG_P (operands[1]))	{	  mvs_check_page (0, 2, 0);	  return \"LR	%0,%1\";	}      if (operands[1] == const0_rtx)	{	  CC_STATUS_INIT;	  mvs_check_page (0, 2, 0);	  return \"SLR	%0,%0\";	}      if (GET_CODE (operands[1]) == CONST_INT	  && (unsigned) INTVAL (operands[1]) < 4096)	{	  mvs_check_page (0, 4, 0);	  return \"LA	%0,%c1(0,0)\";	}      if (GET_CODE (operands[1]) == CONST_INT)	{	  mvs_check_page (0, 4, 0);	  return \"LH	%0,%H1\";	}      mvs_check_page (0, 4, 0);      return \"LH	%0,%1\";    }  else if (REG_P (operands[1]))    {      mvs_check_page (0, 4, 0);      return \"STH	%1,%0\";    }  if (GET_CODE (operands[1]) == CONST_INT)    {      mvs_check_page (0, 6, 0);      return \"MVC	%O0(2,%R0),%H1\";    }  mvs_check_page (0, 6, 0);  return \"MVC	%O0(2,%R0),%1\";}"   [(set_attr "length" "6")])(define_insn "movhi"  [(set (match_operand:HI 0 "general_operand" "=d,m")	(match_operand:HI 1 "general_operand" "g,d"))]  ""  "*{  check_label_emit ();  if (REG_P (operands[0]))    {      if (REG_P (operands[1]))	{	  mvs_check_page (0, 2, 0);	  return \"LR	%0,%1\";	}      if (operands[1] == const0_rtx)	{	  CC_STATUS_INIT;	  mvs_check_page (0, 2, 0);	  return \"SLR	%0,%0\";	}      if (GET_CODE (operands[1]) == CONST_INT	  && (unsigned) INTVAL (operands[1]) < 4096)	{	  mvs_check_page (0, 4, 0);	  return \"LA	%0,%c1(0,0)\";	}      if (GET_CODE (operands[1]) == CONST_INT)	{	  mvs_check_page (0, 4, 0);	  return \"LH	%0,%H1\";	}      mvs_check_page (0, 4, 0);      return \"LH	%0,%1\";    }  mvs_check_page (0, 4, 0);  return \"STH	%1,%0\";}"   [(set_attr "length" "4")]);; movqi instruction pattern(s).;(define_insn ""  [(set (match_operand:QI 0 "r_or_s_operand" "=g")	(match_operand:QI 1 "r_or_s_operand" "g"))]  "TARGET_CHAR_INSTRUCTIONS"  "*{  check_label_emit ();  if (REG_P (operands[0]))    {      if (REG_P (operands[1]))	{	  mvs_check_page (0, 2, 0);	  return \"LR	%0,%1\";	}      if (operands[1] == const0_rtx)	{	  CC_STATUS_INIT;	  mvs_check_page (0, 2, 0);	  return \"SLR	%0,%0\";	}      if (GET_CODE (operands[1]) == CONST_INT)	{	  if ((INTVAL (operands[1]) >= 0)  	      && (unsigned) INTVAL (operands[1]) < 4096)	    {	      mvs_check_page (0, 4, 0);	      return \"LA	%0,%c1(0,0)\";	    }	  mvs_check_page (0, 4, 0);	  return \"L	%0,=F'%c1'\";	}      mvs_check_page (0, 4, 0);      return \"IC	%0,%1\";    }  else if (REG_P (operands[1]))    {      mvs_check_page (0, 4, 0);      return \"STC	%1,%0\";    }  else if (GET_CODE (operands[1]) == CONST_INT)    {      mvs_check_page (0, 4, 0);      return \"MVI	%0,%B1\";    }  mvs_check_page (0, 6, 0);  return \"MVC	%O0(1,%R0),%1\";}"   [(set_attr "length" "6")])(define_insn "movqi"  [(set (match_operand:QI 0 "general_operand" "=d,m")	(match_operand:QI 1 "general_operand" "g,d"))]  ""  "*{  check_label_emit ();  if (REG_P (operands[0]))    {      if (REG_P (operands[1]))	{	  mvs_check_page (0, 2, 0);	  return \"LR	%0,%1\";	}      if (operands[1] == const0_rtx)	{	  CC_STATUS_INIT;	  mvs_check_page (0, 2, 0);	  return \"SLR	%0,%0\";	}      if (GET_CODE (operands[1]) == CONST_INT)	{	  if ((INTVAL (operands[1]) >= 0)  	      && (unsigned) INTVAL (operands[1]) < 4096)	    {	      mvs_check_page (0, 4, 0);	      return \"LA	%0,%c1(0,0)\";	    }	  mvs_check_page (0, 4, 0);	  return \"L	%0,=F'%c1'\";	}      mvs_check_page (0, 4, 0);      return \"IC	%0,%1\";    }  mvs_check_page (0, 4, 0);  return \"STC	%1,%0\";}"   [(set_attr "length" "4")]);; movstrictqi instruction pattern(s).;(define_insn "movstrictqi"  [(set (strict_low_part (match_operand:QI 0 "general_operand" "+d"))	(match_operand:QI 1 "general_operand" "g"))]  ""  "*{  check_label_emit ();  if (REG_P (operands[1]))    {      mvs_check_page (0, 8, 0);      return \"STC	%1,140(,13)\;IC	%0,140(,13)\";    }  mvs_check_page (0, 4, 0);  return \"IC	%0,%1\";}"   [(set_attr "length" "8")]);; movstricthi instruction pattern(s).;

⌨️ 快捷键说明

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