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

📄 arm.md

📁 gcc库的原代码,对编程有很大帮助.
💻 MD
📖 第 1 页 / 共 5 页
字号:
(define_insn ""  [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")	(minus:DI (match_operand:DI 1 "s_register_operand" "?r,0")		  (zero_extend:DI		   (match_operand:SI 2 "s_register_operand" "r,r"))))   (clobber (reg:CC 24))]  ""  "subs\\t%0, %1, %2\;sbc\\t%R0, %R1, #0"[(set_attr "conds" "clob") (set_attr "length" "8")])(define_insn ""  [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")	(minus:DI (match_operand:DI 1 "s_register_operand" "r,0")		  (sign_extend:DI		   (match_operand:SI 2 "s_register_operand" "r,r"))))   (clobber (reg:CC 24))]  ""  "subs\\t%0, %1, %2\;sbc\\t%R0, %R1, %2, asr #31"[(set_attr "conds" "clob") (set_attr "length" "8")])(define_insn ""  [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")	(minus:DI (zero_extend:DI		   (match_operand:SI 2 "s_register_operand" "r,r"))		  (match_operand:DI 1 "s_register_operand" "?r,0")))   (clobber (reg:CC 24))]  ""  "rsbs\\t%0, %1, %2\;rsc\\t%R0, %R1, #0"[(set_attr "conds" "clob") (set_attr "length" "8")])(define_insn ""  [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")	(minus:DI (sign_extend:DI		   (match_operand:SI 2 "s_register_operand" "r,r"))		  (match_operand:DI 1 "s_register_operand" "?r,0")))   (clobber (reg:CC 24))]  ""  "rsbs\\t%0, %1, %2\;rsc\\t%R0, %R1, %2, asr #31"[(set_attr "conds" "clob") (set_attr "length" "8")])(define_insn ""  [(set (match_operand:DI 0 "s_register_operand" "=r")	(minus:DI (zero_extend:DI		   (match_operand:SI 1 "s_register_operand" "r"))		  (zero_extend:DI		   (match_operand:SI 2 "s_register_operand" "r"))))   (clobber (reg:CC 24))]  ""  "subs\\t%0, %1, %2\;rsc\\t%R0, %1, %1"[(set_attr "conds" "clob") (set_attr "length" "8")])(define_expand "subsi3"  [(set (match_operand:SI 0 "s_register_operand" "")	(minus:SI (match_operand:SI 1 "reg_or_int_operand" "")		  (match_operand:SI 2 "s_register_operand" "")))]  ""  "  if (GET_CODE (operands[1]) == CONST_INT)    {      arm_split_constant (MINUS, SImode, INTVAL (operands[1]), operands[0],			  operands[2],			  (reload_in_progress || reload_completed ? 0			   : preserve_subexpressions_p ()));      DONE;    }")(define_insn ""  [(set (match_operand:SI 0 "s_register_operand" "=r,r")	(minus:SI (match_operand:SI 1 "reg_or_int_operand" "rI,?n")		  (match_operand:SI 2 "s_register_operand" "r,r")))]  ""  "@   rsb%?\\t%0, %2, %1   #"[(set_attr "length" "4,16")])(define_split  [(set (match_operand:SI 0 "s_register_operand" "")	(minus:SI (match_operand:SI 1 "const_int_operand" "")		  (match_operand:SI 2 "s_register_operand" "")))]  "! const_ok_for_arm (INTVAL (operands[1]))"  [(clobber (const_int 0))]  "  arm_split_constant (MINUS, SImode, INTVAL (operands[1]), operands[0],		      operands[2], 0);  DONE;")(define_insn ""  [(set (reg:CC_NOOV 24)	(compare:CC_NOOV (minus:SI (match_operand:SI 1 "arm_rhs_operand" "r,I")				 (match_operand:SI 2 "arm_rhs_operand" "rI,r"))			 (const_int 0)))   (set (match_operand:SI 0 "s_register_operand" "=r,r")	(minus:SI (match_dup 1) (match_dup 2)))]  ""  "@   sub%?s\\t%0, %1, %2   rsb%?s\\t%0, %2, %1"[(set_attr "conds" "set")])(define_insn "decscc"  [(set (match_operand:SI 0 "s_register_operand" "=r,r")        (minus:SI (match_operand:SI 1 "s_register_operand" "0,?r")		  (match_operator:SI 2 "comparison_operator"                   [(reg 24) (const_int 0)])))]  ""  "@  sub%d2\\t%0, %1, #1  mov%D2\\t%0, %1\;sub%d2\\t%0, %1, #1"[(set_attr "conds" "use") (set_attr "length" "*,8")])(define_insn "subsf3"  [(set (match_operand:SF 0 "s_register_operand" "=f,f")	(minus:SF (match_operand:SF 1 "fpu_rhs_operand" "f,G")		  (match_operand:SF 2 "fpu_rhs_operand" "fG,f")))]  "TARGET_HARD_FLOAT"  "@   suf%?s\\t%0, %1, %2   rsf%?s\\t%0, %2, %1"[(set_attr "type" "farith")])(define_insn "subdf3"  [(set (match_operand:DF 0 "s_register_operand" "=f,f")	(minus:DF (match_operand:DF 1 "fpu_rhs_operand" "f,G")		  (match_operand:DF 2 "fpu_rhs_operand" "fG,f")))]  "TARGET_HARD_FLOAT"  "@   suf%?d\\t%0, %1, %2   rsf%?d\\t%0, %2, %1"[(set_attr "type" "farith")])(define_insn ""  [(set (match_operand:DF 0 "s_register_operand" "=f")	(minus:DF (float_extend:DF		   (match_operand:SF 1 "s_register_operand" "f"))		  (match_operand:DF 2 "fpu_rhs_operand" "fG")))]  "TARGET_HARD_FLOAT"  "suf%?d\\t%0, %1, %2"[(set_attr "type" "farith")])(define_insn ""  [(set (match_operand:DF 0 "s_register_operand" "=f,f")	(minus:DF (match_operand:DF 1 "fpu_rhs_operand" "f,G")		  (float_extend:DF		   (match_operand:SF 2 "s_register_operand" "f,f"))))]  "TARGET_HARD_FLOAT"  "@   suf%?d\\t%0, %1, %2   rsf%?d\\t%0, %2, %1"[(set_attr "type" "farith")])(define_insn ""  [(set (match_operand:DF 0 "s_register_operand" "=f")	(minus:DF (float_extend:DF		   (match_operand:SF 1 "s_register_operand" "f"))		  (float_extend:DF		   (match_operand:SF 2 "s_register_operand" "f"))))]  "TARGET_HARD_FLOAT"  "suf%?d\\t%0, %1, %2"[(set_attr "type" "farith")])(define_insn "subxf3"  [(set (match_operand:XF 0 "s_register_operand" "=f,f")	(minus:XF (match_operand:XF 1 "fpu_rhs_operand" "f,G")		  (match_operand:XF 2 "fpu_rhs_operand" "fG,f")))]  "ENABLE_XF_PATTERNS && TARGET_HARD_FLOAT"  "@   suf%?e\\t%0, %1, %2   rsf%?e\\t%0, %2, %1"[(set_attr "type" "farith")]);; Multiplication insns;; Use `&' and then `0' to prevent the operands 0 and 1 being the same(define_insn "mulsi3"  [(set (match_operand:SI 0 "s_register_operand" "=&r,&r")	(mult:SI (match_operand:SI 2 "s_register_operand" "r,r")		 (match_operand:SI 1 "s_register_operand" "%?r,0")))]  ""  "mul%?\\t%0, %2, %1")(define_insn ""  [(set (reg:CC_NOOV 24)	(compare:CC_NOOV (mult:SI			  (match_operand:SI 2 "s_register_operand" "r,r")			  (match_operand:SI 1 "s_register_operand" "%?r,0"))			 (const_int 0)))   (set (match_operand:SI 0 "s_register_operand" "=&r,&r")	(mult:SI (match_dup 2) (match_dup 1)))]  ""  "mul%?s\\t%0, %2, %1"[(set_attr "conds" "set")])(define_insn ""  [(set (reg:CC_NOOV 24)	(compare:CC_NOOV (mult:SI			  (match_operand:SI 2 "s_register_operand" "r,r")			  (match_operand:SI 1 "s_register_operand" "%?r,0"))			 (const_int 0)))   (clobber (match_scratch:SI 0 "=&r,&r"))]  ""  "mul%?s\\t%0, %2, %1"[(set_attr "conds" "set")]);; Unnamed templates to match MLA instruction.(define_insn ""  [(set (match_operand:SI 0 "s_register_operand" "=&r,&r,&r,&r")	(plus:SI	  (mult:SI (match_operand:SI 2 "s_register_operand" "r,r,r,r")		   (match_operand:SI 1 "s_register_operand" "%r,0,r,0"))	  (match_operand:SI 3 "s_register_operand" "?r,r,0,0")))]  ""  "mla%?\\t%0, %2, %1, %3")(define_insn ""  [(set (reg:CC_NOOV 24)	(compare:CC_NOOV (plus:SI			  (mult:SI			   (match_operand:SI 2 "s_register_operand" "r,r,r,r")			   (match_operand:SI 1 "s_register_operand" "%r,0,r,0"))			  (match_operand:SI 3 "s_register_operand" "?r,r,0,0"))			 (const_int 0)))   (set (match_operand:SI 0 "s_register_operand" "=&r,&r,&r,&r")	(plus:SI (mult:SI (match_dup 2) (match_dup 1))		 (match_dup 3)))]  ""  "mla%?s\\t%0, %2, %1, %3"[(set_attr "conds" "set")])(define_insn ""  [(set (reg:CC_NOOV 24)	(compare:CC_NOOV (plus:SI			  (mult:SI			   (match_operand:SI 2 "s_register_operand" "r,r,r,r")			   (match_operand:SI 1 "s_register_operand" "%r,0,r,0"))			  (match_operand:SI 3 "s_register_operand" "?r,r,0,0"))			 (const_int 0)))   (clobber (match_scratch:SI 0 "=&r,&r,&r,&r"))]  ""  "mla%?s\\t%0, %2, %1, %3"[(set_attr "conds" "set")])(define_insn "mulsf3"  [(set (match_operand:SF 0 "s_register_operand" "=f")	(mult:SF (match_operand:SF 1 "s_register_operand" "f")		 (match_operand:SF 2 "fpu_rhs_operand" "fG")))]  "TARGET_HARD_FLOAT"  "fml%?s\\t%0, %1, %2"[(set_attr "type" "ffmul")])(define_insn "muldf3"  [(set (match_operand:DF 0 "s_register_operand" "=f")	(mult:DF (match_operand:DF 1 "s_register_operand" "f")		 (match_operand:DF 2 "fpu_rhs_operand" "fG")))]  "TARGET_HARD_FLOAT"  "muf%?d\\t%0, %1, %2"[(set_attr "type" "fmul")])(define_insn ""  [(set (match_operand:DF 0 "s_register_operand" "=f")	(mult:DF (float_extend:DF		  (match_operand:SF 1 "s_register_operand" "f"))		 (match_operand:DF 2 "fpu_rhs_operand" "fG")))]  "TARGET_HARD_FLOAT"  "muf%?d\\t%0, %1, %2"[(set_attr "type" "fmul")])(define_insn ""  [(set (match_operand:DF 0 "s_register_operand" "=f")	(mult:DF (match_operand:DF 1 "s_register_operand" "f")		 (float_extend:DF		  (match_operand:SF 2 "s_register_operand" "f"))))]  "TARGET_HARD_FLOAT"  "muf%?d\\t%0, %1, %2"[(set_attr "type" "fmul")])(define_insn ""  [(set (match_operand:DF 0 "s_register_operand" "=f")	(mult:DF (float_extend:DF		  (match_operand:SF 1 "s_register_operand" "f"))		 (float_extend:DF		  (match_operand:SF 2 "s_register_operand" "f"))))]  "TARGET_HARD_FLOAT"  "muf%?d\\t%0, %1, %2"[(set_attr "type" "fmul")])(define_insn "mulxf3"  [(set (match_operand:XF 0 "s_register_operand" "=f")	(mult:XF (match_operand:XF 1 "s_register_operand" "f")		 (match_operand:XF 2 "fpu_rhs_operand" "fG")))]  "ENABLE_XF_PATTERNS && TARGET_HARD_FLOAT"  "muf%?e\\t%0, %1, %2"[(set_attr "type" "fmul")]);; Division insns(define_insn "divsf3"  [(set (match_operand:SF 0 "s_register_operand" "=f,f")	(div:SF (match_operand:SF 1 "fpu_rhs_operand" "f,G")		(match_operand:SF 2 "fpu_rhs_operand" "fG,f")))]  "TARGET_HARD_FLOAT"  "@   fdv%?s\\t%0, %1, %2   frd%?s\\t%0, %2, %1"[(set_attr "type" "fdivs")])(define_insn "divdf3"  [(set (match_operand:DF 0 "s_register_operand" "=f,f")	(div:DF (match_operand:DF 1 "fpu_rhs_operand" "f,G")		(match_operand:DF 2 "fpu_rhs_operand" "fG,f")))]  "TARGET_HARD_FLOAT"  "@   dvf%?d\\t%0, %1, %2   rdf%?d\\t%0, %2, %1"[(set_attr "type" "fdivd")])(define_insn ""  [(set (match_operand:DF 0 "s_register_operand" "=f")	(div:DF (float_extend:DF		 (match_operand:SF 1 "s_register_operand" "f"))		(match_operand:DF 2 "fpu_rhs_operand" "fG")))]  "TARGET_HARD_FLOAT"  "dvf%?d\\t%0, %1, %2"[(set_attr "type" "fdivd")])(define_insn ""  [(set (match_operand:DF 0 "s_register_operand" "=f")	(div:DF (match_operand:DF 1 "fpu_rhs_operand" "fG")		(float_extend:DF		 (match_operand:SF 2 "s_register_operand" "f"))))]  "TARGET_HARD_FLOAT"  "rdf%?d\\t%0, %2, %1"[(set_attr "type" "fdivd")])(define_insn ""  [(set (match_operand:DF 0 "s_register_operand" "=f")	(div:DF (float_extend:DF		 (match_operand:SF 1 "s_register_operand" "f"))		(float_extend:DF		 (match_operand:SF 2 "s_register_operand" "f"))))]  "TARGET_HARD_FLOAT"  "dvf%?d\\t%0, %1, %2"[(set_attr "type" "fdivd")])(define_insn "divxf3"  [(set (match_operand:XF 0 "s_register_operand" "=f,f")	(div:XF (match_operand:XF 1 "fpu_rhs_operand" "f,G")		(match_operand:XF 2 "fpu_rhs_operand" "fG,f")))]  "ENABLE_XF_PATTERNS && TARGET_HARD_FLOAT"  "@   dvf%?e\\t%0, %1, %2   rdf%?e\\t%0, %2, %1"[(set_attr "type" "fdivx")]);; Modulo insns(define_insn "modsf3"  [(set (match_operand:SF 0 "s_register_operand" "=f")	(mod:SF (match_operand:SF 1 "s_register_operand" "f")		(match_operand:SF 2 "fpu_rhs_operand" "fG")))]  "TARGET_HARD_FLOAT"  "rmf%?s\\t%0, %1, %2"[(set_attr "type" "fdivs")])(define_insn "moddf3"  [(set (match_operand:DF 0 "s_register_operand" "=f")	(mod:DF (match_operand:DF 1 "s_register_operand" "f")		(match_operand:DF 2 "fpu_rhs_operand" "fG")))]  "TARGET_HARD_FLOAT"  "rmf%?d\\t%0, %1, %2"[(set_attr "type" "fdivd")])(define_insn ""  [(set (match_operand:DF 0 "s_register_operand" "=f")	(mod:DF (float_extend:DF		 (match_operand:SF 1 "s_register_operand" "f"))		(match_operand:DF 2 "fpu_rhs_operand" "fG")))]  "TARGET_HARD_FLOAT"  "rmf%?d\\t%0, %1, %2"[(set_attr "type" "fdivd")])(define_insn ""  [(set (match_operand:DF 0 "s_register_operand" "=f")	(mod:DF (match_operand:DF 1 "s_register_operand" "f")		(float_extend:DF		 (match_operand:SF 2 "s_register_operand" "f"))))]  "TARGET_HARD_FLOAT"  "rmf%?d\\t%0, %1, %2"[(set_attr "type" "fdivd")])(define_insn ""  [(set (match_operand:DF 0 "s_register_operand" "=f")	(mod:DF (float_extend:DF		 (match_operand:SF 1 "s_register_operand" "f"))		(float_extend:DF		 (match_operand:SF 2 "s_register_operand" "f"))))]  "TARGET_HARD_FLOAT"  "rmf%?d\\t%0, %1, %2"[(set_attr "type" "fdivd")])(define_insn "modxf3"  [(set (match_operand:XF 0 "s_register_operand" "=f")	(mod:XF (match_operand:XF 1 "s_register_operand" "f")		(match_operand:XF 2 "fpu_rhs_operand" "fG")))]  "ENABLE_XF_PATTERNS && TARGET_HARD_FLOAT"  "rmf%?e\\t%0, %1, %2"[(set_attr "type" "fdivx")]);; Boolean and,ior,xor insns(define_insn "anddi3"  [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")	(and:DI (match_operand:DI 1 "s_register_operand" "%0,0")

⌨️ 快捷键说明

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