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

📄 ia64.md

📁 linux下的gcc编译器
💻 MD
📖 第 1 页 / 共 5 页
字号:
	(and:BI (not:BI (match_operator:BI 3 "signed_inequality_operator"			  [(match_operand:DI 2 "gr_register_operand" "r")			   (const_int 0)]))		(match_operand:BI 1 "register_operand" "0")))]  ""  "cmp.%C3.or.andcm %I0, %0 = r0, %2"  [(set_attr "itanium_class" "icmp")])(define_insn "*tbit_and_0"  [(set (match_operand:BI 0 "register_operand" "=c")	(and:BI (ne:BI (and:DI (match_operand:DI 1 "gr_register_operand" "r")			       (const_int 1))		       (const_int 0))		(match_operand:BI 2 "register_operand" "0")))]  ""  "tbit.nz.and.orcm %0, %I0 = %1, 0"  [(set_attr "itanium_class" "tbit")])(define_insn "*tbit_and_1"  [(set (match_operand:BI 0 "register_operand" "=c")	(and:BI (eq:BI (and:DI (match_operand:DI 1 "gr_register_operand" "r")			       (const_int 1))		       (const_int 0))		(match_operand:BI 2 "register_operand" "0")))]  ""  "tbit.z.and.orcm %0, %I0 = %1, 0"  [(set_attr "itanium_class" "tbit")])(define_insn "*tbit_and_2"  [(set (match_operand:BI 0 "register_operand" "=c")	(and:BI (ne:BI (zero_extract:DI			 (match_operand:DI 1 "gr_register_operand" "r")			 (const_int 1)			 (match_operand:DI 2 "const_int_operand" "n"))		       (const_int 0))		(match_operand:BI 3 "register_operand" "0")))]  ""  "tbit.nz.and.orcm %0, %I0 = %1, %2"  [(set_attr "itanium_class" "tbit")])(define_insn "*tbit_and_3"  [(set (match_operand:BI 0 "register_operand" "=c")	(and:BI (eq:BI (zero_extract:DI			 (match_operand:DI 1 "gr_register_operand" "r")			 (const_int 1)			 (match_operand:DI 2 "const_int_operand" "n"))		       (const_int 0))		(match_operand:BI 3 "register_operand" "0")))]  ""  "tbit.z.and.orcm %0, %I0 = %1, %2"  [(set_attr "itanium_class" "tbit")])(define_insn "*cmpsi_or_0"  [(set (match_operand:BI 0 "register_operand" "=c")	(ior:BI (match_operator:BI 4 "predicate_operator"		  [(match_operand:SI 2 "gr_reg_or_0_operand" "rO")		   (match_operand:SI 3 "gr_reg_or_8bit_operand" "rK")])		(match_operand:BI 1 "register_operand" "0")))]  ""  "cmp4.%C4.or.andcm %0, %I0 = %3, %r2"  [(set_attr "itanium_class" "icmp")])(define_insn "*cmpsi_or_1"  [(set (match_operand:BI 0 "register_operand" "=c")	(ior:BI (match_operator:BI 3 "signed_inequality_operator"		  [(match_operand:SI 2 "gr_register_operand" "r")		   (const_int 0)])		(match_operand:BI 1 "register_operand" "0")))]  ""  "cmp4.%C3.or.andcm %0, %I0 = r0, %2"  [(set_attr "itanium_class" "icmp")])(define_insn "*cmpsi_orcm_0"  [(set (match_operand:BI 0 "register_operand" "=c")	(ior:BI (not:BI (match_operator:BI 4 "predicate_operator"			 [(match_operand:SI 2 "gr_reg_or_0_operand" "rO")			  (match_operand:SI 3 "gr_reg_or_8bit_operand" "rK")]))		(match_operand:BI 1 "register_operand" "0")))]  ""  "cmp4.%C4.and.orcm %I0, %0 = %3, %r2"  [(set_attr "itanium_class" "icmp")])(define_insn "*cmpsi_orcm_1"  [(set (match_operand:BI 0 "register_operand" "=c")	(ior:BI (not:BI (match_operator:BI 3 "signed_inequality_operator"			  [(match_operand:SI 2 "gr_register_operand" "r")			   (const_int 0)]))		(match_operand:BI 1 "register_operand" "0")))]  ""  "cmp4.%C3.and.orcm %I0, %0 = r0, %2"  [(set_attr "itanium_class" "icmp")])(define_insn "*cmpdi_or_0"  [(set (match_operand:BI 0 "register_operand" "=c")	(ior:BI (match_operator:BI 4 "predicate_operator"		  [(match_operand:DI 2 "gr_register_operand" "r")		   (match_operand:DI 3 "gr_reg_or_8bit_operand" "rK")])		(match_operand:BI 1 "register_operand" "0")))]  ""  "cmp.%C4.or.andcm %0, %I0 = %3, %2"  [(set_attr "itanium_class" "icmp")])(define_insn "*cmpdi_or_1"  [(set (match_operand:BI 0 "register_operand" "=c")	(ior:BI (match_operator:BI 3 "signed_inequality_operator"		  [(match_operand:DI 2 "gr_register_operand" "r")		   (const_int 0)])		(match_operand:BI 1 "register_operand" "0")))]  ""  "cmp.%C3.or.andcm %0, %I0 = r0, %2"  [(set_attr "itanium_class" "icmp")])(define_insn "*cmpdi_orcm_0"  [(set (match_operand:BI 0 "register_operand" "=c")	(ior:BI (not:BI (match_operator:BI 4 "predicate_operator"			 [(match_operand:DI 2 "gr_register_operand" "r")			  (match_operand:DI 3 "gr_reg_or_8bit_operand" "rK")]))		(match_operand:BI 1 "register_operand" "0")))]  ""  "cmp.%C4.and.orcm %I0, %0 = %3, %2"  [(set_attr "itanium_class" "icmp")])(define_insn "*cmpdi_orcm_1"  [(set (match_operand:BI 0 "register_operand" "=c")	(ior:BI (not:BI (match_operator:BI 3 "signed_inequality_operator"			  [(match_operand:DI 2 "gr_register_operand" "r")			   (const_int 0)]))		(match_operand:BI 1 "register_operand" "0")))]  ""  "cmp.%C3.and.orcm %I0, %0 = r0, %2"  [(set_attr "itanium_class" "icmp")])(define_insn "*tbit_or_0"  [(set (match_operand:BI 0 "register_operand" "=c")	(ior:BI (ne:BI (and:DI (match_operand:DI 1 "gr_register_operand" "r")			       (const_int 1))		       (const_int 0))		(match_operand:BI 2 "register_operand" "0")))]  ""  "tbit.nz.or.andcm %0, %I0 = %1, 0"  [(set_attr "itanium_class" "tbit")])(define_insn "*tbit_or_1"  [(set (match_operand:BI 0 "register_operand" "=c")	(ior:BI (eq:BI (and:DI (match_operand:DI 1 "gr_register_operand" "r")			       (const_int 1))		       (const_int 0))		(match_operand:BI 2 "register_operand" "0")))]  ""  "tbit.z.or.andcm %0, %I0 = %1, 0"  [(set_attr "itanium_class" "tbit")])(define_insn "*tbit_or_2"  [(set (match_operand:BI 0 "register_operand" "=c")	(ior:BI (ne:BI (zero_extract:DI			 (match_operand:DI 1 "gr_register_operand" "r")			 (const_int 1)			 (match_operand:DI 2 "const_int_operand" "n"))		       (const_int 0))		(match_operand:BI 3 "register_operand" "0")))]  ""  "tbit.nz.or.andcm %0, %I0 = %1, %2"  [(set_attr "itanium_class" "tbit")])(define_insn "*tbit_or_3"  [(set (match_operand:BI 0 "register_operand" "=c")	(ior:BI (eq:BI (zero_extract:DI			 (match_operand:DI 1 "gr_register_operand" "r")			 (const_int 1)			 (match_operand:DI 2 "const_int_operand" "n"))		       (const_int 0))		(match_operand:BI 3 "register_operand" "0")))]  ""  "tbit.z.or.andcm %0, %I0 = %1, %2"  [(set_attr "itanium_class" "tbit")]);; Transform test of and/or of setcc into parallel comparisons.(define_split  [(set (match_operand:BI 0 "register_operand" "")	(ne:BI (and:DI (ne:DI (match_operand:BI 2 "register_operand" "")			      (const_int 0))		       (match_operand:DI 3 "register_operand" ""))	       (const_int 0)))]  ""  [(set (match_dup 0)	(and:BI (ne:BI (and:DI (match_dup 3) (const_int 1)) (const_int 0))		(match_dup 2)))]  "")(define_split  [(set (match_operand:BI 0 "register_operand" "")	(eq:BI (and:DI (ne:DI (match_operand:BI 2 "register_operand" "")			      (const_int 0))		       (match_operand:DI 3 "register_operand" ""))	       (const_int 0)))]  ""  [(set (match_dup 0)	(and:BI (ne:BI (and:DI (match_dup 3) (const_int 1)) (const_int 0))		(match_dup 2)))   (parallel [(set (match_dup 0) (not:BI (match_dup 0)))	      (clobber (scratch))])]  "")(define_split  [(set (match_operand:BI 0 "register_operand" "")	(ne:BI (ior:DI (ne:DI (match_operand:BI 2 "register_operand" "")			      (const_int 0))		       (match_operand:DI 3 "register_operand" ""))	       (const_int 0)))]  ""  [(set (match_dup 0) 	(ior:BI (ne:BI (match_dup 3) (const_int 0))		(match_dup 2)))]  "")(define_split  [(set (match_operand:BI 0 "register_operand" "")	(eq:BI (ior:DI (ne:DI (match_operand:BI 2 "register_operand" "")			      (const_int 0))		       (match_operand:DI 3 "register_operand" ""))	       (const_int 0)))]  ""  [(set (match_dup 0) 	(ior:BI (ne:BI (match_dup 3) (const_int 0))		(match_dup 2)))   (parallel [(set (match_dup 0) (not:BI (match_dup 0)))	      (clobber (scratch))])]  "");; ??? Incredibly hackish.  Either need four proper patterns with all;; the alternatives, or rely on sched1 to split the insn and hope that;; nothing bad happens to the comparisons in the meantime.;;;; Alternately, adjust combine to allow 2->2 and 3->3 splits, assuming;; that we're doing height reduction.;;(define_insn_and_split "";  [(set (match_operand:BI 0 "register_operand" "=c");	(and:BI (and:BI (match_operator:BI 1 "comparison_operator";			  [(match_operand 2 "" "");			   (match_operand 3 "" "")]);			(match_operator:BI 4 "comparison_operator";			  [(match_operand 5 "" "");			   (match_operand 6 "" "")]));		(match_dup 0)))];  "flag_schedule_insns";  "#";  "";  [(set (match_dup 0) (and:BI (match_dup 1) (match_dup 0)));   (set (match_dup 0) (and:BI (match_dup 4) (match_dup 0)))];  "");;(define_insn_and_split "";  [(set (match_operand:BI 0 "register_operand" "=c");	(ior:BI (ior:BI (match_operator:BI 1 "comparison_operator";			  [(match_operand 2 "" "");			   (match_operand 3 "" "")]);			(match_operator:BI 4 "comparison_operator";			  [(match_operand 5 "" "");			   (match_operand 6 "" "")]));		(match_dup 0)))];  "flag_schedule_insns";  "#";  "";  [(set (match_dup 0) (ior:BI (match_dup 1) (match_dup 0)));   (set (match_dup 0) (ior:BI (match_dup 4) (match_dup 0)))];  "");;(define_split;  [(set (match_operand:BI 0 "register_operand" "");	(and:BI (and:BI (match_operator:BI 1 "comparison_operator";			  [(match_operand 2 "" "");			   (match_operand 3 "" "")]);			(match_operand:BI 7 "register_operand" ""));		(and:BI (match_operator:BI 4 "comparison_operator";			  [(match_operand 5 "" "");			   (match_operand 6 "" "")]);			(match_operand:BI 8 "register_operand" ""))))];  "";  [(set (match_dup 0) (and:BI (match_dup 7) (match_dup 8)));   (set (match_dup 0) (and:BI (and:BI (match_dup 1) (match_dup 4));			      (match_dup 0)))];  "");;(define_split;  [(set (match_operand:BI 0 "register_operand" "");	(ior:BI (ior:BI (match_operator:BI 1 "comparison_operator";			  [(match_operand 2 "" "");			   (match_operand 3 "" "")]);			(match_operand:BI 7 "register_operand" ""));		(ior:BI (match_operator:BI 4 "comparison_operator";			  [(match_operand 5 "" "");			   (match_operand 6 "" "")]);			(match_operand:BI 8 "register_operand" ""))))];  "";  [(set (match_dup 0) (ior:BI (match_dup 7) (match_dup 8)));   (set (match_dup 0) (ior:BI (ior:BI (match_dup 1) (match_dup 4));			      (match_dup 0)))];  "");; Try harder to avoid predicate copies by duplicating compares.;; Note that we'll have already split the predicate copy, which;; is kind of a pain, but oh well.(define_peephole2  [(set (match_operand:BI 0 "register_operand" "")	(match_operand:BI 1 "comparison_operator" ""))   (set (match_operand:CCI 2 "register_operand" "")	(match_operand:CCI 3 "register_operand" ""))   (set (match_operand:CCI 4 "register_operand" "")	(match_operand:CCI 5 "register_operand" ""))   (set (match_operand:BI 6 "register_operand" "")	(unspec:BI [(match_dup 6)] UNSPEC_PRED_REL_MUTEX))]  "REGNO (operands[3]) == REGNO (operands[0])   && REGNO (operands[4]) == REGNO (operands[0]) + 1   && REGNO (operands[4]) == REGNO (operands[2]) + 1   && REGNO (operands[6]) == REGNO (operands[2])"  [(set (match_dup 0) (match_dup 1))   (set (match_dup 6) (match_dup 7))]  "operands[7] = copy_rtx (operands[1]);");; ::::::::::::::::::::;; ::;; :: 16 bit Integer arithmetic;; ::;; ::::::::::::::::::::(define_insn "mulhi3"  [(set (match_operand:HI 0 "gr_register_operand" "=r")	(mult:HI (match_operand:HI 1 "gr_register_operand" "r")		 (match_operand:HI 2 "gr_register_operand" "r")))]  ""  "pmpy2.r %0 = %1, %2"  [(set_attr "itanium_class" "mmmul")]);; ::::::::::::::::::::;; ::;; :: 32 bit Integer arithmetic;; ::;; ::::::::::::::::::::(define_insn "addsi3"  [(set (match_operand:SI 0 "gr_register_operand" "=r,r,r")	(plus:SI (match_operand:SI 1 "gr_register_operand" "%r,r,a")		 (match_operand:SI 2 "gr_reg_or_22bit_operand" "r,I,J")))]  ""  "@   add %0 = %1, %2   adds %0 = %2, %1   addl %0 = %2, %1"  [(set_attr "itanium_class" "ialu")])(define_insn "*addsi3_plus1"  [(set (match_operand:SI 0 "gr_register_operand" "=r")	(plus:SI (plus:SI (match_operand:SI 1 "gr_register_operand" "r")			  (match_operand:SI 2 "gr_register_operand" "r"))		 (const_int 1)))]  ""  "add %0 = %1, %2, 1"  [(set_attr "itanium_class" "ialu")])(define_insn "*addsi3_plus1_alt"  [(set (match_operand:SI 0 "gr_register_operand" "=r")	(plus:SI (mult:SI (match_operand:SI 1 "gr_register_operand" "r")			  (const_int 2))		 (const_int 1)))]  ""  "add %0 = %1, %1, 1"  [(set_attr "itanium_class" "ialu")])(define_insn "*addsi3_shladd"  [(set (match_operand:SI 0 "gr_register_operand" "=r")	(plus:SI (mult:SI (match_operand:SI 1 "gr_register_operand" "r")			  (match_operand:SI 2 "shladd_operand" "n"))		 (match_operand:SI 3 "gr_register_operand" "r")))]  ""  "shladd %0 = %1, %S2, %3"  [(set_attr "itanium_class" "ialu")])(define_insn "subsi3"  [(set (match_operand:SI 0 "gr_register_operand" "=r")	(minus:SI (match_operand:SI 1 "gr_reg_or_8bit_operand" "rK")		  (match_operand:SI 2 "gr_register_opera

⌨️ 快捷键说明

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