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

📄 alpha.md

📁 GCC编译器源代码
💻 MD
📖 第 1 页 / 共 5 页
字号:
(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"  [(set_attr "type" "shift")])(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(ashift:DI	 (match_operand:DI 1 "reg_or_0_operand" "rJ")	  (minus:DI (const_int 56)		    (ashift:DI		     (and:DI		      (plus:DI (match_operand:DI 2 "reg_or_8bit_operand" "rI")			       (const_int -1))		      (const_int 7))		     (const_int 3)))))]  ""  "extqh %r1,%2,%0"  [(set_attr "type" "shift")])(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(ashift:DI	 (and:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")		 (const_int 2147483647))	 (minus:DI (const_int 56)		    (ashift:DI		     (and:DI		      (plus:DI (match_operand:DI 2 "reg_or_8bit_operand" "rI")			       (const_int -1))		      (const_int 7))		     (const_int 3)))))]  ""  "extlh %r1,%2,%0"  [(set_attr "type" "shift")])(define_insn ""  [(set (match_operand:DI 0 "register_operand" "=r")	(ashift:DI	 (and:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")		 (const_int 65535))	 (minus:DI (const_int 56)		    (ashift:DI		     (and:DI		      (plus:DI (match_operand:DI 2 "reg_or_8bit_operand" "rI")			       (const_int -1))		      (const_int 7))		     (const_int 3)))))]  ""  "extwh %r1,%2,%0"  [(set_attr "type" "shift")]);; 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"  [(set_attr "type" "shift")])(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"  [(set_attr "type" "shift")])(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"  [(set_attr "type" "shift")])(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"  [(set_attr "type" "shift")])(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"  [(set_attr "type" "shift")])(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"  [(set_attr "type" "shift")]);; 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"  [(set_attr "type" "shift")]);; 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" "fcpys")])(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" "fcpys")])(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" "fadd")])(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" "fadd")])(define_insn ""  [(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 && alpha_tp == ALPHA_TP_INSN"  "add%,%)%& %R1,%R2,%0"  [(set_attr "type" "fadd")   (set_attr "trap" "yes")])(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"  "add%,%)%& %R1,%R2,%0"  [(set_attr "type" "fadd")   (set_attr "trap" "yes")])(define_insn ""  [(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 && alpha_tp == ALPHA_TP_INSN"  "add%-%)%& %R1,%R2,%0"  [(set_attr "type" "fadd")   (set_attr "trap" "yes")])(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"  "add%-%)%& %R1,%R2,%0"  [(set_attr "type" "fadd")   (set_attr "trap" "yes")])(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 && alpha_tp != ALPHA_TP_INSN"  "add%-%)%& %R1,%R2,%0"  [(set_attr "type" "fadd")   (set_attr "trap" "yes")])(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 && alpha_tp != ALPHA_TP_INSN"  "add%-%)%& %R1,%R2,%0"  [(set_attr "type" "fadd")   (set_attr "trap" "yes")])(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"  "cvt%-qc %R1,%0"  [(set_attr "type" "fadd")])(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"  "cvt%-qc %R1,%0"  [(set_attr "type" "fadd")])(define_insn "floatdisf2"  [(set (match_operand:SF 0 "register_operand" "=f")	(float:SF (match_operand:DI 1 "register_operand" "f")))]  "TARGET_FP"  "cvtq%,%+%& %1,%0"  [(set_attr "type" "fadd")   (set_attr "trap" "yes")])(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=&f")	(float:DF (match_operand:DI 1 "register_operand" "f")))]  "TARGET_FP && alpha_tp == ALPHA_TP_INSN"  "cvtq%-%+%& %1,%0"  [(set_attr "type" "fadd")   (set_attr "trap" "yes")])(define_insn "floatdidf2"  [(set (match_operand:DF 0 "register_operand" "=f")	(float:DF (match_operand:DI 1 "register_operand" "f")))]  "TARGET_FP"  "cvtq%-%+%& %1,%0"  [(set_attr "type" "fadd")   (set_attr "trap" "yes")])(define_expand "extendsfdf2"  [(use (match_operand:DF 0 "register_operand" ""))   (use (match_operand:SF 1 "nonimmediate_operand" ""))]  "TARGET_FP""{  if (alpha_tp == ALPHA_TP_INSN)    emit_insn (gen_extendsfdf2_tp (operands[0],				   force_reg (SFmode, operands[1])));  else    emit_insn (gen_extendsfdf2_no_tp (operands[0], operands[1]));  DONE;}");; FIXME(define_insn "extendsfdf2_tp"  [(set (match_operand:DF 0 "register_operand" "=&f")	(float_extend:DF (match_operand:SF 1 "register_operand" "f")))]  "TARGET_FP && alpha_tp == ALPHA_TP_INSN"  "cvtsts %1,%0"  [(set_attr "type" "fadd")   (set_attr "trap" "yes")])(define_insn "extendsfdf2_no_tp"  [(set (match_operand:DF 0 "register_operand" "=f,f,m")	(float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "f,m,f")))]  "TARGET_FP && alpha_tp != ALPHA_TP_INSN"  "@   cpys %1,%1,%0   ld%, %0,%1   st%- %1,%0"  [(set_attr "type" "fcpys,ld,st")   (set_attr "trap" "yes")])(define_insn ""  [(set (match_operand:SF 0 "register_operand" "=&f")	(float_truncate:SF (match_operand:DF 1 "reg_or_fp0_operand" "fG")))]  "TARGET_FP && alpha_tp == ALPHA_TP_INSN"  "cvt%-%,%)%& %R1,%0"  [(set_attr "type" "fadd")   (set_attr "trap" "yes")])(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"  "cvt%-%,%)%& %R1,%0"  [(set_attr "type" "fadd")   (set_attr "trap" "yes")])(define_insn ""  [(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 && alpha_tp == ALPHA_TP_INSN"  "div%,%)%& %R1,%R2,%0"  [(set_attr "type" "fdivs")   (set_attr "trap" "yes")])(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"  "div%,%)%& %R1,%R2,%0"  [(set_attr "type" "fdivs")   (set_attr "trap" "yes")])(define_insn ""  [(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 && alpha_tp == ALPHA_TP_INSN"  "div%-%)%& %R1,%R2,%0"  [(set_attr "type" "fdivt")   (set_attr "trap" "yes")])(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"  "div%-%)%& %R1,%R2,%0"  [(set_attr "type" "fdivt")   (set_attr "trap" "yes")])(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 && alpha_tp != ALPHA_TP_INSN"  "div%-%)%& %R1,%R2,%0"  [(set_attr "type" "fdivt")   (set_attr "trap" "yes")])(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 && alpha_tp != ALPHA_TP_INSN"  "div%-%)%& %R1,%R2,%0"  [(set_attr "type" "fdivt")   (set_attr "trap" "yes")])(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 && alpha_tp != ALPHA_TP_INSN"  "div%-%)%& %R1,%R2,%0"  [(set_attr "type" "fdivt")   (set_attr "trap" "yes")])(define_insn ""  [(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 && alpha_tp == ALPHA_TP_INSN"  "mul%,%)%& %R1,%R2,%0"  [(set_attr "type" "fmul")   (set_attr "trap" "yes")])(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"  "mul%,%)%& %R1,%R2,%0"  [(set_attr "type" "fmul")   (set_attr "trap" "yes")])(define_insn ""  [(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 && alpha_tp == ALPHA_TP_INSN"  "mul%-%)%& %R1,%R2,%0"  [(set_attr "type" "fmul")   (set_attr "trap" "yes")])(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"  "mul%-%)%& %R1,%R2,%0"  [(set_attr "type" "fmul")   (set_attr "trap" "yes")])

⌨️ 快捷键说明

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