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

📄 alpha.md

📁 GUN开源阻止下的编译器GCC
💻 MD
📖 第 1 页 / 共 5 页
字号:
(define_expand "extendhidi2"  [(set (match_dup 2)	(ashift:DI (match_operand:HI 1 "register_operand" "")		   (const_int 48)))   (set (match_operand:DI 0 "register_operand" "")	(ashiftrt:DI (match_dup 2)		     (const_int 48)))]  ""  "{ operands[1] = gen_lowpart (DImode, operands[1]);  operands[2] = gen_reg_rtx (DImode);}")(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(zero_extract:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")			 (match_operand:DI 2 "mode_width_operand" "n")			 (match_operand:DI 3 "mul8_operand" "I")))]  ""  "ext%M2l %r1,%s3,%0")(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(zero_extract:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")			 (match_operand:DI 2 "mode_width_operand" "n")			 (ashift:DI (match_operand:DI 3 "reg_or_8bit_operand" "rI")				    (const_int 3))))]  ""  "ext%M2l %r1,%3,%0")(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(ashift:DI	 (zero_extract:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")			  (const_int 8)			  (ashift:DI			   (plus:DI			    (match_operand:DI 2 "reg_or_8bit_operand" "rI")			    (const_int -1))			   (const_int 3)))	 (const_int 56)))]  ""  "extqh %r1,%2,%0")(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(ashift:DI	 (zero_extract:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")			  (const_int 16)			  (ashift:DI			   (plus:DI			    (match_operand:DI 2 "reg_or_8bit_operand" "rI")			    (const_int -2))			   (const_int 3)))	 (const_int 48)))]  ""  "extwh %r1,%2,%0")(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(ashift:DI	 (zero_extract:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")			  (const_int 32)			  (ashift:DI			   (plus:DI			    (match_operand:DI 2 "reg_or_8bit_operand" "rI")			    (const_int -4))			   (const_int 3)))	 (const_int 32)))]  ""  "extlh %r1,%2,%0");; This converts an extXl into an extXh with an appropriate adjustment;; to the address calculation.(define_split  [(set (match_operand:DI 0 "register_operand" "")	(ashift:DI (zero_extract:DI (match_operand:DI 1 "register_operand" "")				    (match_operand:DI 2 "mode_width_operand" "")				    (ashift:DI (match_operand:DI 3 "" "")					       (const_int 3)))		   (match_operand:DI 4 "const_int_operand" "")))   (clobber (match_operand:DI 5 "register_operand" ""))]  "INTVAL (operands[4]) == 64 - INTVAL (operands[2])"  [(set (match_dup 5) (match_dup 6))   (set (match_dup 0)	(ashift:DI (zero_extract:DI (match_dup 1) (match_dup 2)				    (ashift:DI (plus:DI (match_dup 5)							(match_dup 7))					       (const_int 3)))		   (match_dup 4)))]  "{  operands[6] = plus_constant (operands[3], 			       INTVAL (operands[2]) / BITS_PER_UNIT);  operands[7] = GEN_INT (- INTVAL (operands[2]) / BITS_PER_UNIT);}")  (define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(ashift:DI (zero_extend:DI (match_operand:QI 1 "register_operand" "r"))		   (match_operand:DI 2 "mul8_operand" "I")))]  ""  "insbl %1,%s2,%0")(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(ashift:DI (zero_extend:DI (match_operand:HI 1 "register_operand" "r"))		   (match_operand:DI 2 "mul8_operand" "I")))]  ""  "inswl %1,%s2,%0")(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(ashift:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))		   (match_operand:DI 2 "mul8_operand" "I")))]  ""  "insll %1,%s2,%0")(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(ashift:DI (zero_extend:DI (match_operand:QI 1 "register_operand" "r"))		   (ashift:DI (match_operand:DI 2 "reg_or_8bit_operand" "rI")			      (const_int 3))))]  ""  "insbl %1,%2,%0")(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(ashift:DI (zero_extend:DI (match_operand:HI 1 "register_operand" "r"))		   (ashift:DI (match_operand:DI 2 "reg_or_8bit_operand" "rI")			      (const_int 3))))]  ""  "inswl %1,%2,%0")(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(ashift:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))		   (ashift:DI (match_operand:DI 2 "reg_or_8bit_operand" "rI")			      (const_int 3))))]  ""  "insll %1,%2,%0");; We do not include the insXh insns because they are complex to express;; and it does not appear that we would ever want to generate them.(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(and:DI (not:DI (ashift:DI			 (match_operand:DI 2 "mode_mask_operand" "n")			 (ashift:DI			  (match_operand:DI 3 "reg_or_8bit_operand" "rI")			  (const_int 3))))		(match_operand:DI 1 "reg_or_0_operand" "rJ")))]  ""  "msk%U2l %r1,%3,%0");; We do not include the mskXh insns because it does not appear we would ever;; generate one.;; Floating-point operations.  All the double-precision insns can extend;; from single, so indicate that.  The exception are the ones that simply;; play with the sign bits; it's not clear what to do there.(define_insn "abssf2"  [(set (match_operand:SF 0 "register_operand" "=f")	(abs:SF (match_operand:SF 1 "reg_or_fp0_operand" "fG")))]  "TARGET_FP"  "cpys $f31,%R1,%0"  [(set_attr "type" "fpop")])(define_insn "absdf2"  [(set (match_operand:DF 0 "register_operand" "=f")	(abs:DF (match_operand:DF 1 "reg_or_fp0_operand" "fG")))]  "TARGET_FP"  "cpys $f31,%R1,%0"  [(set_attr "type" "fpop")])(define_insn "negsf2"  [(set (match_operand:SF 0 "register_operand" "=f")	(neg:SF (match_operand:SF 1 "reg_or_fp0_operand" "fG")))]  "TARGET_FP"  "cpysn %R1,%R1,%0"  [(set_attr "type" "fpop")])(define_insn "negdf2"  [(set (match_operand:DF 0 "register_operand" "=f")	(neg:DF (match_operand:DF 1 "reg_or_fp0_operand" "fG")))]  "TARGET_FP"  "cpysn %R1,%R1,%0"  [(set_attr "type" "fpop")])(define_insn "addsf3"  [(set (match_operand:SF 0 "register_operand" "=f")	(plus:SF (match_operand:SF 1 "reg_or_fp0_operand" "%fG")		 (match_operand:SF 2 "reg_or_fp0_operand" "fG")))]  "TARGET_FP"  "adds %R1,%R2,%0"  [(set_attr "type" "fpop")])(define_insn "adddf3"  [(set (match_operand:DF 0 "register_operand" "=f")	(plus:DF (match_operand:DF 1 "reg_or_fp0_operand" "%fG")		 (match_operand:DF 2 "reg_or_fp0_operand" "fG")))]  "TARGET_FP"  "addt %R1,%R2,%0"  [(set_attr "type" "fpop")])(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=f")	(plus:DF (float_extend:DF		  (match_operand:SF 1 "reg_or_fp0_operand" "fG"))		 (match_operand:DF 2 "reg_or_fp0_operand" "fG")))]  "TARGET_FP"  "addt %R1,%R2,%0"  [(set_attr "type" "fpop")])(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=f")	(plus:DF (float_extend:DF		  (match_operand:SF 1 "reg_or_fp0_operand" "%fG"))		 (float_extend:DF		  (match_operand:SF 2 "reg_or_fp0_operand" "fG"))))]  "TARGET_FP"  "addt %R1,%R2,%0"  [(set_attr "type" "fpop")])(define_insn "fix_truncdfdi2"  [(set (match_operand:DI 0 "register_operand" "=f")	(fix:DI (match_operand:DF 1 "reg_or_fp0_operand" "fG")))]  "TARGET_FP"  "cvttqc %R1,%0"  [(set_attr "type" "fpop")])(define_insn "fix_truncsfdi2"  [(set (match_operand:DI 0 "register_operand" "=f")	(fix:DI (float_extend:DF		 (match_operand:SF 1 "reg_or_fp0_operand" "fG"))))]  "TARGET_FP"  "cvttqc %R1,%0"  [(set_attr "type" "fpop")])(define_insn "floatdisf2"  [(set (match_operand:SF 0 "register_operand" "=f")	(float:SF (match_operand:DI 1 "register_operand" "f")))]  "TARGET_FP"  "cvtqs %1,%0"  [(set_attr "type" "fpop")])(define_insn "floatdidf2"  [(set (match_operand:DF 0 "register_operand" "=f")	(float:DF (match_operand:DI 1 "register_operand" "f")))]  "TARGET_FP"  "cvtqt %1,%0"  [(set_attr "type" "fpop")])(define_insn "extendsfdf2"  [(set (match_operand:DF 0 "register_operand" "=f,f")	(float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "f,m")))]  "TARGET_FP"  "@   addt $f31,%1,%0   lds %0,%1"  [(set_attr "type" "fpop,ld")])(define_insn "truncdfsf2"  [(set (match_operand:SF 0 "register_operand" "=f")	(float_truncate:SF (match_operand:DF 1 "reg_or_fp0_operand" "fG")))]  "TARGET_FP"  "cvtts %R1,%0"  [(set_attr "type" "fpop")])(define_insn "divsf3"  [(set (match_operand:SF 0 "register_operand" "=f")	(div:SF (match_operand:SF 1 "reg_or_fp0_operand" "fG")		(match_operand:SF 2 "reg_or_fp0_operand" "fG")))]  "TARGET_FP"  "divs %R1,%R2,%0"  [(set_attr "type" "fdivs")])(define_insn "divdf3"  [(set (match_operand:DF 0 "register_operand" "=f")	(div:DF (match_operand:DF 1 "reg_or_fp0_operand" "fG")		(match_operand:DF 2 "reg_or_fp0_operand" "fG")))]  "TARGET_FP"  "divt %R1,%R2,%0"  [(set_attr "type" "fdivt")])(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=f")	(div:DF (float_extend:DF (match_operand:SF 1 "reg_or_fp0_operand" "fG"))		(match_operand:DF 2 "reg_or_fp0_operand" "fG")))]  "TARGET_FP"  "divt %R1,%R2,%0"  [(set_attr "type" "fdivt")])(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=f")	(div:DF (match_operand:DF 1 "reg_or_fp0_operand" "fG")		(float_extend:DF		 (match_operand:SF 2 "reg_or_fp0_operand" "fG"))))]  "TARGET_FP"  "divt %R1,%R2,%0"  [(set_attr "type" "fdivt")])(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=f")	(div:DF (float_extend:DF (match_operand:SF 1 "reg_or_fp0_operand" "fG"))		(float_extend:DF (match_operand:SF 2 "reg_or_fp0_operand" "fG"))))]  "TARGET_FP"  "divt %R1,%R2,%0"  [(set_attr "type" "fdivt")])(define_insn "mulsf3"  [(set (match_operand:SF 0 "register_operand" "=f")	(mult:SF (match_operand:SF 1 "reg_or_fp0_operand" "%fG")		 (match_operand:SF 2 "reg_or_fp0_operand" "fG")))]  "TARGET_FP"  "muls %R1,%R2,%0"  [(set_attr "type" "fpop")])(define_insn "muldf3"  [(set (match_operand:DF 0 "register_operand" "=f")	(mult:DF (match_operand:DF 1 "reg_or_fp0_operand" "%fG")		 (match_operand:DF 2 "reg_or_fp0_operand" "fG")))]  "TARGET_FP"  "mult %R1,%R2,%0"  [(set_attr "type" "fpop")])(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=f")	(mult:DF (float_extend:DF		  (match_operand:SF 1 "reg_or_fp0_operand" "fG"))		 (match_operand:DF 2 "reg_or_fp0_operand" "fG")))]  "TARGET_FP"  "mult %R1,%R2,%0"  [(set_attr "type" "fpop")])(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=f")	(mult:DF (float_extend:DF		  (match_operand:SF 1 "reg_or_fp0_operand" "%fG"))		 (float_extend:DF		  (match_operand:SF 2 "reg_or_fp0_operand" "fG"))))]  "TARGET_FP"  "mult %R1,%R2,%0"  [(set_attr "type" "fpop")])(define_insn "subsf3"  [(set (match_operand:SF 0 "register_operand" "=f")	(minus:SF (match_operand:SF 1 "reg_or_fp0_operand" "fG")		  (match_operand:SF 2 "reg_or_fp0_operand" "fG")))]  "TARGET_FP"  "subs %R1,%R2,%0"  [(set_attr "type" "fpop")])(define_insn "subdf3"  [(set (match_operand:DF 0 "register_operand" "=f")	(minus:DF (match_operand:DF 1 "reg_or_fp0_operand" "fG")		  (match_operand:DF 2 "reg_or_fp0_operand" "fG")))]  "TARGET_FP"  "subt %R1,%R2,%0"  [(set_attr "type" "fpop")])(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=f")	(minus:DF (float_extend:DF		   (match_operand:SF 1 "reg_or_fp0_operand" "fG"))		  (match_operand:DF 2 "reg_or_fp0_operand" "fG")))]  "TARGET_FP"  "subt %R1,%R2,%0"  [(set_attr "type" "fpop")])(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=f")	(minus:DF (match_operand:DF 1 "reg_or_fp0_operand" "fG")		  (float_extend:DF		   (match_operand:SF 2 "reg_or_fp0_operand" "fG"))))]  "TARGET_FP"  "subt %R1,%R2,%0"  [(set_attr "type" "fpop")])(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=f")	(minus:DF (float_extend:DF		   (match_operand:SF 1 "reg_or_fp0_operand" "fG"))		  (float_extend:DF		   (match_operand:SF 2 "reg_or_fp0_operand" "fG"))))]  "TARGET_FP"  "subt %R1,%R2,%0"  [(set_attr "type" "fpop")]);; Next are all the integer comparisons, and conditional moves and branches;; and some of the related define_expand's and define_split's.(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(match_operator:DI 1 "alpha_comparison_operator"			   [(match_operand:DI 2 "reg_or_0_operand" "rJ")			    (match_operand:DI 3 "reg_or_8bit_operand" "rI")]))]  ""  "cmp%C1 %r2,%3,%0"  [(set_attr "type" "icmp")]);; There are three important special-case that don't fit the above pattern;; but which we want to handle here.(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(ne:DI (match_operand:DI 1 "register_operand" "r")	       (const_int 0)))]  ""  "cmpult $31,%1,%0"  [(set_attr "type" "icmp")])(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(gt:DI (match_operand:DI 1 "register_operand" "r")	       (const_int 0)))]  ""  "cmplt $31,%1,%0"  [(set_attr "type" "icmp")])(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(ge:DI (match_operand:DI 1 "register_operand" "r")	       (const_int 0)))]  ""  "cmple $31,%1,%0"  [(set_attr "type" "icmp")]);; This pattern exists so conditional moves of SImode values are handled.;; Comparisons are still done in DImode though.(define_insn ""  [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")	(if_then_else:DI	 (match_operator 2 "signed_comparison_operator"

⌨️ 快捷键说明

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