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

📄 i370.md

📁 gcc-2.95.3 Linux下最常用的C编译器
💻 MD
📖 第 1 页 / 共 5 页
字号:
		(match_operand:SI 2 "general_operand" "")))]  ""  "*{  check_label_emit ();  if (REG_P (operands[2]))    {      mvs_check_page (0, 2, 0);      return \"DR	%0,%2\";    }  mvs_check_page (0, 4, 0);  return \"D	%0,%2\";}");; divdf3 instruction pattern(s).;(define_insn "divdf3"  [(set (match_operand:DF 0 "general_operand" "=f")        (div:DF (match_operand:DF 1 "general_operand" "0")                (match_operand:DF 2 "general_operand" "fmF")))]  ""  "*{  check_label_emit ();  if (FP_REG_P (operands[2]))    {      mvs_check_page (0, 2, 0);      return \"DDR	%0,%2\";    }  mvs_check_page (0, 4, 0);  return \"DD	%0,%2\";}");; divsf3 instruction pattern(s).;(define_insn "divsf3"  [(set (match_operand:SF 0 "general_operand" "=f")        (div:SF (match_operand:SF 1 "general_operand" "0")                (match_operand:SF 2 "general_operand" "fmF")))]  ""  "*{  check_label_emit ();  if (FP_REG_P (operands[2]))    {      mvs_check_page (0, 2, 0);      return \"DER	%0,%2\";    }  mvs_check_page (0, 4, 0);  return \"DE	%0,%2\";}");;;;- Modulo instructions.;;;; modsi3 instruction pattern(s).;(define_expand "modsi3"  [(set (match_operand:SI 0 "general_operand" "")	(mod:SI (match_operand:SI 1 "general_operand" "")		(match_operand:SI 2 "general_operand" "")))]  ""  "{  rtx r = gen_reg_rtx (DImode);  emit_insn (gen_extendsidi2 (r, operands[1]));  emit_insn (gen_rtx (SET, VOIDmode, r,			gen_rtx (MOD, SImode, r, operands[2])));  emit_insn (gen_rtx (SET, VOIDmode, operands[0],			gen_rtx (SUBREG, SImode, r, 0)));  DONE;}");; umodsi3 instruction pattern(s).;(define_expand "umodsi3"  [(set (match_operand:SI 0 "general_operand" "")	(umod:SI (match_operand:SI 1 "general_operand" "")		 (match_operand:SI 2 "general_operand" "")))]  ""  "{  rtx dr = gen_reg_rtx (DImode);  rtx dr_0 = gen_rtx (SUBREG, SImode, dr, 0);  rtx dr_1 = gen_rtx (SUBREG, SImode, dr, 1);  emit_insn (gen_rtx (SET, VOIDmode, dr_0, operands[1]));  if (GET_CODE (operands[2]) == CONST_INT)    {      if (INTVAL (operands[2]) > 0)	{	  emit_insn (gen_rtx (SET, VOIDmode, dr,			      gen_rtx (LSHIFTRT, DImode, dr,					GEN_INT (32))));	  emit_insn (gen_rtx (SET, VOIDmode, dr,			gen_rtx (MOD, SImode, dr, operands[2])));	}      else	{	  rtx label1 = gen_label_rtx ();	  rtx sr = gen_reg_rtx (SImode);	  emit_insn (gen_rtx (SET, VOIDmode, sr, operands[2]));	  emit_insn (gen_cmpsi (dr_0, sr));	  emit_jump_insn (gen_bltu (label1));	  emit_insn (gen_rtx (SET, VOIDmode, sr, gen_rtx (ABS, SImode, sr)));	  emit_insn (gen_rtx (SET, VOIDmode, dr_0,			      gen_rtx (PLUS, SImode, dr_0, sr)));	  emit_label (label1);	}    }  else    {      rtx label1 = gen_label_rtx ();      rtx label2 = gen_label_rtx ();      rtx label3 = gen_label_rtx ();      rtx sr = gen_reg_rtx (SImode);      emit_insn (gen_rtx (SET, VOIDmode, dr_0, operands[1]));      emit_insn (gen_rtx (SET, VOIDmode, sr, operands[2]));      emit_insn (gen_cmpsi (sr, dr_0));      emit_jump_insn (gen_bgtu (label3));      emit_insn (gen_cmpsi (sr, const1_rtx));      emit_jump_insn (gen_blt (label2));      emit_jump_insn (gen_beq (label1));      emit_insn (gen_rtx (SET, VOIDmode, dr,			  gen_rtx (LSHIFTRT, DImode, dr,				    GEN_INT (32))));      emit_insn (gen_rtx (SET, VOIDmode, dr, gen_rtx (MOD, SImode, dr, sr)));      emit_jump_insn (gen_jump (label3));      emit_label (label1);      emit_insn (gen_rtx (SET, VOIDmode, dr_0, const0_rtx));      emit_jump_insn (gen_jump (label3));      emit_label (label2);      emit_insn (gen_rtx (SET, VOIDmode, dr_0,			  gen_rtx (MINUS, SImode, dr_0, sr)));      emit_label (label3);    }  emit_insn (gen_rtx (SET, VOIDmode, operands[0], dr_0));  DONE;}"); This is used by modsi3 & umodsi3.(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=d")	(mod:DI (match_operand:DI 1 "register_operand" "0")		(match_operand:SI 2 "general_operand" "")))]  ""  "*{  check_label_emit ();  if (REG_P (operands[2]))    {      mvs_check_page (0, 2, 0);      return \"DR	%0,%2\";    }  mvs_check_page (0, 4, 0);  return \"D	%0,%2\";}");;;;- And instructions.;;;; anddi3 instruction pattern(s).;;(define_expand "anddi3";  [(set (match_operand:DI 0 "general_operand" "");	(and:DI (match_operand:DI 1 "general_operand" "");		(match_operand:DI 2 "general_operand" "")))];  "";  ";{;  rtx gen_andsi3();;;  emit_insn (gen_andsi3 (operand_subword (operands[0], 0, 1, DImode),;			 operand_subword (operands[1], 0, 1, DImode),;			 operand_subword (operands[2], 0, 1, DImode)));;  emit_insn (gen_andsi3 (gen_lowpart (SImode, operands[0]),;			 gen_lowpart (SImode, operands[1]),;			 gen_lowpart (SImode, operands[2])));;  DONE;;}");; andsi3 instruction pattern(s).;(define_insn ""  [(set (match_operand:SI 0 "r_or_s_operand" "=d,m")	(and:SI (match_operand:SI 1 "r_or_s_operand" "%0,0")		(match_operand:SI 2 "r_or_s_operand" "g,mi")))]  "TARGET_CHAR_INSTRUCTIONS"  "*{  check_label_emit ();  if (REG_P (operands[2]))    {      mvs_check_page (0, 2, 0);      return \"NR	%0,%2\";    }  if (REG_P (operands[0]))    {      mvs_check_page (0, 4, 0);      return \"N	%0,%2\";    }  CC_STATUS_INIT;  mvs_check_page (0, 6, 0);  return \"NC	%O0(4,%R0),%2\";}")(define_insn "andsi3"  [(set (match_operand:SI 0 "general_operand" "=d")	(and:SI (match_operand:SI 1 "general_operand" "%0")		(match_operand:SI 2 "general_operand" "g")))]  ""  "*{  check_label_emit ();  if (REG_P (operands[2]))    {      mvs_check_page (0, 2, 0);      return \"NR	%0,%2\";    }  mvs_check_page (0, 4, 0);  return \"N	%0,%2\";}");; andhi3 instruction pattern(s).;(define_insn ""  [(set (match_operand:HI 0 "r_or_s_operand" "=d,m")	(and:HI (match_operand:HI 1 "r_or_s_operand" "%0,0")		(match_operand:HI 2 "r_or_s_operand" "di,mi")))]  "TARGET_CHAR_INSTRUCTIONS"  "*{  check_label_emit ();  if (REG_P (operands[2]))    {      mvs_check_page (0, 2, 0);      return \"NR	%0,%2\";    }  if (REG_P (operands[0]))    {      mvs_check_page (0, 4, 0);      return \"N	%0,%2\";    }  CC_STATUS_INIT;  if (GET_CODE (operands[2]) == CONST_INT)    {      mvs_check_page (0, 6, 0);      return \"NC	%O0(2,%R0),%H2\";    }  mvs_check_page (0, 6, 0);  return \"NC	%O0(2,%R0),%2\";}")(define_insn "andhi3"  [(set (match_operand:HI 0 "general_operand" "=d")	(and:HI (match_operand:HI 1 "general_operand" "%0")		(match_operand:HI 2 "general_operand" "di")))]  ""  "*{  check_label_emit ();  if (GET_CODE (operands[2]) == CONST_INT)    {      mvs_check_page (0, 4, 0);      return \"N	%0,%2\";    }  mvs_check_page (0, 2, 0);  return \"NR	%0,%2\";}");; andqi3 instruction pattern(s).;(define_insn ""  [(set (match_operand:QI 0 "r_or_s_operand" "=d,m")	(and:QI (match_operand:QI 1 "r_or_s_operand" "%0,0")		(match_operand:QI 2 "r_or_s_operand" "di,mi")))]  "TARGET_CHAR_INSTRUCTIONS"  "*{  check_label_emit ();  CC_STATUS_INIT;   if (REG_P (operands[2]))    {      mvs_check_page (0, 2, 0);      return \"NR	%0,%2\";    }  if (REG_P (operands[0]))    {      mvs_check_page (0, 4, 0);      return \"N	%0,%2\";    }  if (GET_CODE (operands[2]) == CONST_INT)    {      mvs_check_page (0, 4, 0);      return \"NI	%0,%B2\";    }  mvs_check_page (0, 6, 0);  return \"NC	%O0(1,%R0),%2\";}")(define_insn "andqi3"  [(set (match_operand:QI 0 "general_operand" "=d")	(and:QI (match_operand:QI 1 "general_operand" "%0")		(match_operand:QI 2 "general_operand" "di")))]  ""  "*{  check_label_emit ();  CC_STATUS_INIT;  if (GET_CODE (operands[2]) == CONST_INT)    {      mvs_check_page (0, 4, 0);      return \"N	%0,%2\";    }  mvs_check_page (0, 2, 0);  return \"NR	%0,%2\";}");;;;- Bit set (inclusive or) instructions.;;;; iordi3 instruction pattern(s).;;(define_expand "iordi3";  [(set (match_operand:DI 0 "general_operand" "");	(ior:DI (match_operand:DI 1 "general_operand" "");		(match_operand:DI 2 "general_operand" "")))];  "";  ";{;  rtx gen_iorsi3();;;  emit_insn (gen_iorsi3 (operand_subword (operands[0], 0, 1, DImode),;			 operand_subword (operands[1], 0, 1, DImode),;			 operand_subword (operands[2], 0, 1, DImode)));;  emit_insn (gen_iorsi3 (gen_lowpart (SImode, operands[0]),;			 gen_lowpart (SImode, operands[1]),;			 gen_lowpart (SImode, operands[2])));;  DONE;;}");; iorsi3 instruction pattern(s).;(define_insn ""  [(set (match_operand:SI 0 "r_or_s_operand" "=d,m")	(ior:SI (match_operand:SI 1 "r_or_s_operand" "%0,0")		(match_operand:SI 2 "r_or_s_operand" "g,mi")))]  "TARGET_CHAR_INSTRUCTIONS"  "*{  check_label_emit ();  if (REG_P (operands[2]))    {      mvs_check_page (0, 2, 0);      return \"OR	%0,%2\";    }  if (REG_P (operands[0]))    {      mvs_check_page (0, 4, 0);      return \"O	%0,%2\";    }  CC_STATUS_INIT;  mvs_check_page (0, 6, 0);  return \"OC	%O0(4,%R0),%2\";}")(define_insn "iorsi3"  [(set (match_operand:SI 0 "general_operand" "=d")	(ior:SI (match_operand:SI 1 "general_operand" "%0")		(match_operand:SI 2 "general_operand" "g")))]  ""  "*{  check_label_emit ();  if (REG_P (operands[2]))    {      mvs_check_page (0, 2, 0);      return \"OR	%0,%2\";    }  mvs_check_page (0, 4, 0);  return \"O	%0,%2\";}");; iorhi3 instruction pattern(s).;(define_insn ""  [(set (match_operand:HI 0 "r_or_s_operand" "=d,m")	(ior:HI (match_operand:HI 1 "r_or_s_operand" "%0,0")		(match_operand:HI 2 "r_or_s_operand" "di,mi")))]  "TARGET_CHAR_INSTRUCTIONS"  "*{  check_label_emit ();  if (REG_P (operands[2]))    {      mvs_check_page (0, 2, 0);      return \"OR	%0,%2\";    }  if (REG_P (operands[0]))    {      mvs_check_page (0, 4, 0);      return \"O	%0,%2\";    }  CC_STATUS_INIT;  if (GET_CODE (operands[2]) == CONST_INT)    {      mvs_check_page (0, 6, 0);      return \"OC	%O0(2,%R0),%H2\";    }  mvs_check_page (0, 6, 0);  return \"OC	%O0(2,%R0),%2\";}")(define_insn "iorhi3"  [(set (match_operand:HI 0 "general_operand" "=d")	(ior:HI (match_operand:HI 1 "general_operand" "%0")		(match_operand:HI 2 "general_operand" "di")))]  ""  "*{  check_label_emit ();  if (GET_CODE (operands[2]) == CONST_INT)    {      mvs_check_page (0, 4, 0);      return \"O	%0,%2\";    }  mvs_check_page (0, 2, 0);  return \"OR	%0,%2\";}");; iorqi3 instruction pattern(s).;(define_insn ""  [(set (match_operand:QI 0 "r_or_s_operand" "=d,m")	(ior:QI (match_operand:QI 1 "r_or_s_operand" "%0,0")		(match_operand:QI 2 "r_or_s_operand" "di,mi")))]  "TARGET_CHAR_INSTRUCTIONS"  "*{  check_label_emit ();  CC_STATUS_INIT;  if (REG_P (operands[2]))    {      mvs_check_page (0, 2, 0);      return \"OR	%0,%2\";    }  if (REG_P (operands[0]))    {      mvs_check_page (0, 4, 0);      return \"O	%0,%2\";    }  CC_STATUS_INIT;  if (GET_CODE (operands[2]) == CONST_INT)    {      mvs_check_page (0, 4, 0);      return \"OI	%0,%B2\";    }  mvs_check_page (0, 6, 0);  return \"OC	%O0(1,%R0),%2\";}")(define_insn "iorqi3"  [(set (match_operand:QI 0 "general_operand" "=d")	(ior:QI (match_operand:QI 1 "general_operand" "%0")		(match_operand:QI 2 "general_operand" "di")))]  ""  "*{  check_label_emit ();  CC_STATUS_INIT;  if (GET_CODE (operands[2]) == CONST_INT)    {      mvs_check_page (0, 4, 0);      return \"O	%0,%2\";    }  mvs_check_page (0, 2, 0);  return \"OR	%0,%2\";}");;;;- Xor instructions.;;;; xordi3 instruction pattern(s).;;(define_expand "xordi3";  [(set (match_operand:DI 0 "general_operand" "");	(xor:DI (match_operand:DI 1 "general_operand" "");		(match_operand:DI 2 "general_operand" "")))];  "";  ";{;  rtx gen_xorsi3();;;  emit_insn (gen_xorsi3 (operand_subword (operands[0], 0, 1, DImode),;			 operand_subword (operands[1], 0, 1, DImode),;			 operand_subword (operands[2], 0, 1, DImode)));;  emit_insn (gen_xorsi3 (gen_lowpart (SImode, operands[0]),;			 gen_lowpart (SImode, operands[1]),;			 gen_lowpart (SImode, operands[2])));;  DONE;;}");; xorsi3 instruction pattern(s).;(define_insn ""  [(set (match_operand:SI 0 "r_or_s_operand" "=d,m")	(xor:SI (match_operand:SI 1 "r_or_s_operand" "%0,0")		(match_operand:SI 2 "r_or_s_operand" "g,mi")))]  "TARGET_CHAR_INSTRUCTIONS"  "*{  check_label_emit ();  if (REG_P (operands[2]))    {      mvs_check_page (0, 2, 0);      return \"XR	%0,%2\";    }  if (REG_P (operands[0]))    {      mvs_check_page (0, 4, 0);      return \"X	%0,%2\";    }  CC_STATUS_INIT;  mvs_check_page (0, 6, 0);  return \"XC	%O0(4,%R0),%2\";}")(define_insn "xorsi3"  [(set (match_operand:SI 0 "general_operand" "=d")	(xor:SI (match_ope

⌨️ 快捷键说明

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