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

📄 alpha.md

📁 GCC编译器源代码
💻 MD
📖 第 1 页 / 共 5 页
字号:
  [(set (match_operand:SI 0 "some_operand" "=&r")	(plus:SI (plus:SI (mult:SI (match_operand:SI 1 "some_operand" "rJ")				   (match_operand:SI 2 "const48_operand" "I"))			  (match_operand:SI 3 "some_operand" "r"))		 (match_operand:SI 4 "some_operand" "rIOKL")))]  "reload_in_progress"  "#")(define_split  [(set (match_operand:SI 0 "register_operand" "r")	(plus:SI (plus:SI (mult:SI (match_operand:SI 1 "reg_or_0_operand" "")				   (match_operand:SI 2 "const48_operand" ""))			  (match_operand:SI 3 "register_operand" ""))		 (match_operand:SI 4 "add_operand" "rIOKL")))]  "reload_completed"  [(set (match_dup 0)	(plus:SI (mult:SI (match_dup 1) (match_dup 2)) (match_dup 3)))   (set (match_dup 0) (plus:SI (match_dup 0) (match_dup 4)))]  "")(define_insn ""  [(set (match_operand:DI 0 "some_operand" "=&r")	(sign_extend:DI	 (plus:SI (plus:SI		   (mult:SI (match_operand:SI 1 "some_operand" "rJ")			    (match_operand:SI 2 "const48_operand" "I"))		   (match_operand:SI 3 "some_operand" "r"))		  (match_operand:SI 4 "some_operand" "rIOKL"))))]  "reload_in_progress"  "#")(define_split  [(set (match_operand:DI 0 "register_operand" "")	(sign_extend:DI	 (plus:SI (plus:SI		   (mult:SI (match_operand:SI 1 "reg_or_0_operand" "")			    (match_operand:SI 2 "const48_operand" ""))		   (match_operand:SI 3 "register_operand" ""))		  (match_operand:SI 4 "add_operand" ""))))]  "reload_completed"  [(set (match_dup 5)	(plus:SI (mult:SI (match_dup 1) (match_dup 2)) (match_dup 3)))   (set (match_dup 0) (sign_extend:DI (plus:SI (match_dup 5) (match_dup 4))))]  "{ operands[5] = gen_lowpart (SImode, operands[0]);}")(define_insn ""  [(set (match_operand:DI 0 "some_operand" "=&r")	(plus:DI (plus:DI (mult:DI (match_operand:DI 1 "some_operand" "rJ")				   (match_operand:DI 2 "const48_operand" "I"))			  (match_operand:DI 3 "some_operand" "r"))		 (match_operand:DI 4 "some_operand" "rIOKL")))]  "reload_in_progress"  "#")(define_split  [(set (match_operand:DI 0 "register_operand" "=")	(plus:DI (plus:DI (mult:DI (match_operand:DI 1 "reg_or_0_operand" "")				   (match_operand:DI 2 "const48_operand" ""))			  (match_operand:DI 3 "register_operand" ""))		 (match_operand:DI 4 "add_operand" "")))]  "reload_completed"  [(set (match_dup 0)	(plus:DI (mult:DI (match_dup 1) (match_dup 2)) (match_dup 3)))   (set (match_dup 0) (plus:DI (match_dup 0) (match_dup 4)))]  "")(define_insn "negsi2"  [(set (match_operand:SI 0 "register_operand" "=r")	(neg:SI (match_operand:SI 1 "reg_or_8bit_operand" "rI")))]  ""  "subl $31,%1,%0")(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(sign_extend:DI (neg:SI			 (match_operand:SI 1 "reg_or_8bit_operand" "rI"))))]  ""  "subl $31,%1,%0")(define_insn "negdi2"  [(set (match_operand:DI 0 "register_operand" "=r")	(neg:DI (match_operand:DI 1 "reg_or_8bit_operand" "rI")))]  ""  "subq $31,%1,%0")(define_expand "subsi3"  [(set (match_operand:SI 0 "register_operand" "")	(minus:SI (match_operand:SI 1 "reg_or_0_operand" "")		  (match_operand:SI 2 "reg_or_8bit_operand" "")))]  ""  "{ emit_insn (gen_rtx (SET, VOIDmode, gen_lowpart (DImode, operands[0]),		      gen_rtx (MINUS, DImode,			       gen_lowpart (DImode, operands[1]),			       gen_lowpart (DImode, operands[2]))));  DONE;} ")(define_insn ""  [(set (match_operand:SI 0 "register_operand" "=r")	(minus:SI (match_operand:SI 1 "reg_or_0_operand" "rJ")		  (match_operand:SI 2 "reg_or_8bit_operand" "rI")))]  ""  "subl %r1,%2,%0")(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(sign_extend:DI (minus:SI (match_operand:SI 1 "reg_or_0_operand" "rJ")				  (match_operand:SI 2 "reg_or_8bit_operand" "rI"))))]  ""  "subl %r1,%2,%0")(define_insn "subdi3"  [(set (match_operand:DI 0 "register_operand" "=r")	(minus:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")		  (match_operand:DI 2 "reg_or_8bit_operand" "rI")))]  ""  "subq %r1,%2,%0")(define_insn ""  [(set (match_operand:SI 0 "register_operand" "=r")	(minus:SI (mult:SI (match_operand:SI 1 "reg_or_0_operand" "rJ")			   (match_operand:SI 2 "const48_operand" "I"))		  (match_operand:SI 3 "reg_or_8bit_operand" "rI")))]  ""  "s%2subl %r1,%3,%0")(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(sign_extend:DI	 (minus:SI (mult:SI (match_operand:SI 1 "reg_or_0_operand" "rJ")			    (match_operand:SI 2 "const48_operand" "I"))		   (match_operand:SI 3 "reg_or_8bit_operand" "rI"))))]  ""  "s%2subl %r1,%3,%0")(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(minus:DI (mult:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")			   (match_operand:DI 2 "const48_operand" "I"))		  (match_operand:DI 3 "reg_or_8bit_operand" "rI")))]  ""  "s%2subq %r1,%3,%0")(define_insn "mulsi3"  [(set (match_operand:SI 0 "register_operand" "=r")	(mult:SI (match_operand:SI 1 "reg_or_0_operand" "%rJ")		 (match_operand:SI 2 "reg_or_0_operand" "rJ")))]  ""  "mull %r1,%r2,%0"  [(set_attr "type" "imull")])(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(sign_extend:DI (mult:SI (match_operand:SI 1 "reg_or_0_operand" "%rJ")				 (match_operand:SI 2 "reg_or_0_operand" "rJ"))))]  ""  "mull %r1,%r2,%0"  [(set_attr "type" "imull")])(define_insn "muldi3"  [(set (match_operand:DI 0 "register_operand" "=r")	(mult:DI (match_operand:DI 1 "reg_or_0_operand" "%rJ")		 (match_operand:DI 2 "reg_or_0_operand" "rJ")))]  ""  "mulq %r1,%r2,%0"  [(set_attr "type" "imulq")])(define_insn "umuldi3_highpart"  [(set (match_operand:DI 0 "register_operand" "=r")	(truncate:DI	 (lshiftrt:TI	  (mult:TI (zero_extend:TI (match_operand:DI 1 "register_operand" "r"))		   (zero_extend:TI (match_operand:DI 2 "register_operand" "r")))	  (const_int 64))))]  ""  "umulh %1,%2,%0"  [(set_attr "type" "imulq")])(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(truncate:DI	 (lshiftrt:TI	  (mult:TI (zero_extend:TI (match_operand:DI 1 "register_operand" "r"))		   (match_operand:TI 2 "cint8_operand" "I"))	  (const_int 64))))]  ""  "umulh %1,%2,%0"  [(set_attr "type" "imulq")]);; The divide and remainder operations always take their inputs from;; r24 and r25, put their output in r27, and clobber r23 and r28.;; ??? comment out the divsi routines since the library functions;; don't seem to do the right thing with the high 32-bits of a;; register nonzero.;(define_expand "divsi3";  [(set (reg:SI 24) (match_operand:SI 1 "input_operand" ""));   (set (reg:SI 25) (match_operand:SI 2 "input_operand" ""));   (parallel [(set (reg:SI 27);		   (div:SI (reg:SI 24);			   (reg:SI 25)));	      (clobber (reg:DI 23));	      (clobber (reg:DI 28))]);   (set (match_operand:SI 0 "general_operand" "");	(reg:SI 27))];  "!TARGET_OPEN_VMS";  "");(define_expand "udivsi3";  [(set (reg:SI 24) (match_operand:SI 1 "input_operand" ""));   (set (reg:SI 25) (match_operand:SI 2 "input_operand" ""));   (parallel [(set (reg:SI 27);		   (udiv:SI (reg:SI 24);			    (reg:SI 25)));	      (clobber (reg:DI 23));	      (clobber (reg:DI 28))]);   (set (match_operand:SI 0 "general_operand" "");	(reg:SI 27))];  "!TARGET_OPEN_VMS";  "");(define_expand "modsi3";  [(set (reg:SI 24) (match_operand:SI 1 "input_operand" ""));   (set (reg:SI 25) (match_operand:SI 2 "input_operand" ""));   (parallel [(set (reg:SI 27);		   (mod:SI (reg:SI 24);			   (reg:SI 25)));	      (clobber (reg:DI 23));	      (clobber (reg:DI 28))]);   (set (match_operand:SI 0 "general_operand" "");	(reg:SI 27))];  "!TARGET_OPEN_VMS";  "");(define_expand "umodsi3";  [(set (reg:SI 24) (match_operand:SI 1 "input_operand" ""));   (set (reg:SI 25) (match_operand:SI 2 "input_operand" ""));   (parallel [(set (reg:SI 27);		   (umod:SI (reg:SI 24);			    (reg:SI 25)));	      (clobber (reg:DI 23));	      (clobber (reg:DI 28))]);   (set (match_operand:SI 0 "general_operand" "");	(reg:SI 27))];  "!TARGET_OPEN_VMS";  "")(define_expand "divdi3"  [(set (reg:DI 24) (match_operand:DI 1 "input_operand" ""))   (set (reg:DI 25) (match_operand:DI 2 "input_operand" ""))   (parallel [(set (reg:DI 27)		   (div:DI (reg:DI 24)			   (reg:DI 25)))	      (clobber (reg:DI 23))	      (clobber (reg:DI 28))])   (set (match_operand:DI 0 "general_operand" "")	(reg:DI 27))]  "!TARGET_OPEN_VMS"  "")(define_expand "udivdi3"  [(set (reg:DI 24) (match_operand:DI 1 "input_operand" ""))   (set (reg:DI 25) (match_operand:DI 2 "input_operand" ""))   (parallel [(set (reg:DI 27)		   (udiv:DI (reg:DI 24)			    (reg:DI 25)))	      (clobber (reg:DI 23))	      (clobber (reg:DI 28))])   (set (match_operand:DI 0 "general_operand" "")	(reg:DI 27))]  "!TARGET_OPEN_VMS"  "")(define_expand "moddi3"  [(set (reg:DI 24) (match_operand:DI 1 "input_operand" ""))   (set (reg:DI 25) (match_operand:DI 2 "input_operand" ""))   (parallel [(set (reg:DI 27)		   (mod:DI (reg:DI 24)			   (reg:DI 25)))	      (clobber (reg:DI 23))	      (clobber (reg:DI 28))])   (set (match_operand:DI 0 "general_operand" "")	(reg:DI 27))]  "!TARGET_OPEN_VMS"  "")(define_expand "umoddi3"  [(set (reg:DI 24) (match_operand:DI 1 "input_operand" ""))   (set (reg:DI 25) (match_operand:DI 2 "input_operand" ""))   (parallel [(set (reg:DI 27)		   (umod:DI (reg:DI 24)			    (reg:DI 25)))	      (clobber (reg:DI 23))	      (clobber (reg:DI 28))])   (set (match_operand:DI 0 "general_operand" "")	(reg:DI 27))]  "!TARGET_OPEN_VMS"  "");(define_insn "";  [(set (reg:SI 27);	(match_operator:SI 1 "divmod_operator";			[(reg:SI 24) (reg:SI 25)]));   (clobber (reg:DI 23));   (clobber (reg:DI 28))];  "!TARGET_OPEN_VMS";  "%E1 $24,$25,$27";  [(set_attr "type" "isubr")])(define_insn ""  [(set (reg:DI 27)	(match_operator:DI 1 "divmod_operator"			[(reg:DI 24) (reg:DI 25)]))   (clobber (reg:DI 23))   (clobber (reg:DI 28))]  "!TARGET_OPEN_VMS"  "%E1 $24,$25,$27"  [(set_attr "type" "isubr")]);; Next are the basic logical operations.  These only exist in DImode.(define_insn "anddi3"  [(set (match_operand:DI 0 "register_operand" "=r,r,r")	(and:DI (match_operand:DI 1 "reg_or_0_operand" "%rJ,rJ,rJ")		(match_operand:DI 2 "and_operand" "rI,N,MH")))]  ""  "@   and %r1,%2,%0   bic %r1,%N2,%0   zapnot %r1,%m2,%0"  [(set_attr "type" "ilog,ilog,shift")]);; There are times when we can split an AND into two AND insns.  This occurs;; when we can first clear any bytes and then clear anything else.  For;; example "I & 0xffff07" is "(I & 0xffffff) & 0xffffffffffffff07".;; Only do this when running on 64-bit host since the computations are;; too messy otherwise.(define_split  [(set (match_operand:DI 0 "register_operand" "")	(and:DI (match_operand:DI 1 "register_operand" "")		(match_operand:DI 2 "const_int_operand" "")))]  "HOST_BITS_PER_WIDE_INT == 64 && ! and_operand (operands[2], DImode)"  [(set (match_dup 0) (and:DI (match_dup 1) (match_dup 3)))   (set (match_dup 0) (and:DI (match_dup 0) (match_dup 4)))]  "{  unsigned HOST_WIDE_INT mask1 = INTVAL (operands[2]);  unsigned HOST_WIDE_INT mask2 = mask1;  int i;  /* For each byte that isn't all zeros, make it all ones.  */  for (i = 0; i < 64; i += 8)    if ((mask1 & ((HOST_WIDE_INT) 0xff << i)) != 0)      mask1 |= (HOST_WIDE_INT) 0xff << i;  /* Now turn on any bits we've just turned off.  */  mask2 |= ~ mask1;  operands[3] = GEN_INT (mask1);  operands[4] = GEN_INT (mask2);}")(define_insn "zero_extendqihi2"  [(set (match_operand:HI 0 "register_operand" "=r")	(zero_extend:HI (match_operand:QI 1 "register_operand" "r")))]  ""  "zapnot %1,1,%0"  [(set_attr "type" "shift")])(define_insn ""  [(set (match_operand:SI 0 "register_operand" "=r,r")	(zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "r,m")))]  "TARGET_BWX"  "@   zapnot %1,1,%0   ldbu %0,%1"  [(set_attr "type" "shift,ld")])(define_insn ""  [(set (match_operand:SI 0 "register_operand" "=r")	(zero_extend:SI (match_operand:QI 1 "register_operand" "r")))]  "! TARGET_BWX"  "zapnot %1,1,%0"  [(set_attr "type" "shift")])(define_expand "zero_extendqisi2"  [(set (match_operand:SI 0 "register_operand" "")	(zero_extend:SI (match_operand:QI 1 "register_operand" "")))]  ""  "")(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r,r")	(zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "r,m")))]  "TARGET_BWX"  "@   zapnot %1,1,%0   ldbu %0,%1"  [(set_attr "type" "shift,ld")])(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(zero_extend:DI (match_operand:QI 1 "register_operand" "r")))]  "! TARGET_BWX"  "zapnot %1,1,%0"  [(set_attr "type" "shift")])  (define_expand "zero_extendqidi2"  [(set (match_operand:DI 0 "register_operand" "")	(zero_extend:DI (match_operand:QI 1 "register_operand" "")))]  ""  "")  (define_insn ""  [(set (match_operand:SI 0 "register_operand" "=r,r")	(zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "r,m")))]  "TARGET_BWX"  "@   zapnot %1,3,%0   ldwu %0,%1"  [(set_attr "type" "shift,ld")])(define_insn ""

⌨️ 快捷键说明

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