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

📄 a29k.md

📁 gcc编译工具没有什么特别
💻 MD
📖 第 1 页 / 共 5 页
字号:
   (use (match_operand:SI 4 "register_operand" "3"))]  ""  "divide %0,%1,%2");; DIVIDU;;;; Similar to DIVIDE.(define_expand "udivmodsi4"  [(parallel [(set (match_operand:SI 0 "gpc_reg_operand" "")		   (udiv:SI (match_operand:SI 1 "gpc_reg_operand" "")			    (match_operand:SI 2 "gpc_reg_operand" "")))	      (set (match_operand:SI 3 "gpc_reg_operand" "")		   (umod:SI (match_dup 1)			    (match_dup 2)))	      (use (const_int 0))])]  ""  "")(define_insn ""  [(set (match_operand:SI 0 "gpc_reg_operand" "=r")	(udiv:SI (match_operand:SI 1 "gpc_reg_operand" "r")		 (match_operand:SI 2 "gpc_reg_operand" "r")))   (set (match_operand:SI 3 "register_operand" "=q")	(umod:SI (match_dup 1)		 (match_dup 2)))   (use (match_operand:SI 4 "const_int_operand" "3"))]  ""  "dividu %0,%1,%2");; DMAC/DMSM(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=a,*r")	(plus:DF (mult:DF (match_operand:DF 1 "register_operand" "%r,A")			  (match_operand:DF 2 "register_operand" "r,r"))		 (match_operand:DF 3 "register_operand" "0,*r")))]  "TARGET_29050"  "@   dmac 0,%0,%1,%2   dmsm %0,%2,%3"  [(set_attr "type" "dam")])(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=a")	(plus:DF (mult:DF (neg:DF (match_operand:DF 1 "register_operand" "r"))			  (match_operand:DF 2 "register_operand" "r"))		 (match_operand:DF 3 "register_operand" "0")))]  "TARGET_29050"  "dmac 1,%0,%2,%1"  [(set_attr "type" "dam")])(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=a")	(minus:DF (mult:DF (match_operand:DF 1 "register_operand" "%r")			   (match_operand:DF 2 "register_operand" "r"))		  (match_operand:DF 3 "register_operand" "0")))]  "TARGET_29050"  "dmac 2,%0,%1,%2"  [(set_attr "type" "dam")])(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=a")	(minus:DF (mult:DF (match_operand:DF 1 "register_operand" "r")			   (neg:DF (match_operand:DF 2 "register_operand" "r")))		  (match_operand:DF 3 "register_operand" "0")))]  "TARGET_29050"  "dmac 3,%0,%1,%2"  [(set_attr "type" "dam")])(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=a")	(mult:DF (neg:DF (match_operand:DF 1 "register_operand" "r"))		 (match_operand:DF 2 "register_operand" "r")))]  "TARGET_29050"  "dmac 5,%0,%2,%1"  [(set_attr "type" "dam")])(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=a")	(minus:DF (neg:DF (match_operand:DF 1 "register_operand" "r"))		  (match_operand:DF 2 "register_operand" "0")))]  "TARGET_29050"  "dmac 11,%0,%1,%1"  [(set_attr "type" "dam")])(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=a")	(neg:DF (plus:DF (match_operand:DF 1 "register_operand" "%r")			 (match_operand:DF 2 "register_operand" "0"))))]  "TARGET_29050"  "dmac 11,%0,%1,%1"  [(set_attr "type" "dam")])(define_insn "" [(set (match_operand:DF 0 "register_operand" "=r,r,a")       (neg:DF (match_operand:DF 1 "register_operand" "0,r,r")))  (clobber (match_scratch:SI 2 "=&r,&r,X"))] "TARGET_29050" "@  cpeq %2,gr1,gr1\;xor %0,%1,%2  cpeq %2,gr1,gr1\;xor %0,%1,%2\;sll %L0,%L1,0  dmac 13,%0,%1,%1" [(set_attr "type" "multi,multi,dam")]);; DMUL(define_expand "muldf3"  [(set (match_operand:DF 0 "register_operand" "")	(mult:DF (match_operand:DF 1 "register_operand" "")		 (match_operand:DF 2 "register_operand" "")))]  "! TARGET_SOFT_FLOAT"  "")(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=r")	(mult:DF (match_operand:DF 1 "register_operand" "%r")		 (match_operand:DF 2 "register_operand" "r")))]  "! TARGET_29050"  "dmul %0,%1,%2"  [(set_attr "type" "dmul")])(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=r,a")	(mult:DF (match_operand:DF 1 "register_operand" "%r,r")		 (match_operand:DF 2 "register_operand" "r,r")))]  "TARGET_29050"  "@   dmul %0,%1,%2   dmac 4,%0,%1,%2"  [(set_attr "type" "dmul,dam")]);; DSUB(define_expand "subdf3"  [(set (match_operand:DF 0 "register_operand" "=r")	(minus:DF (match_operand:DF 1 "register_operand" "r")		  (match_operand:DF 2 "register_operand" "r")))]  "! TARGET_SOFT_FLOAT"  "")(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=r")	(minus:DF (match_operand:DF 1 "register_operand" "r")		  (match_operand:DF 2 "register_operand" "r")))]  "! TARGET_29050"  "dsub %0,%1,%2"  [(set_attr "type" "fadd")])(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=r,a,a")	(minus:DF (match_operand:DF 1 "register_operand" "r,0,r")		  (match_operand:DF 2 "register_operand" "r,r,0")))]  "TARGET_29050"  "@   dsub %0,%1,%2   dmac 9,%0,%2,%2   dmac 10,%0,%1,%1"  [(set_attr "type" "fadd,dam,dam")]);; EXBYTE(define_insn ""  [(set (match_operand:SI 0 "gpc_reg_operand" "=r")	(ior:SI (and:SI (match_operand:SI 1 "srcb_operand" "rI")			(const_int -256))		(zero_extract:SI (match_operand:SI 2 "gpc_reg_operand" "r")				 (const_int 8)				 (ashift:PSI				  (match_operand:PSI 3 "register_operand" "b")				  (const_int 3)))))]  ""  "exbyte %0,%2,%1")(define_insn ""  [(set (match_operand:SI 0 "gpc_reg_operand" "=r")	(zero_extract:SI (match_operand:SI 1 "gpc_reg_operand" "r")			 (const_int 8)			 (ashift:PSI			  (match_operand:PSI 2 "register_operand" "b")			  (const_int 3))))]  ""  "exbyte %0,%1,0")(define_insn ""  [(set (zero_extract:SI (match_operand:SI 0 "gpc_reg_operand" "+r")			 (const_int 8)			 (match_operand:PSI 1 "const_24_operand" ""))	(zero_extract:SI (match_operand:SI 2 "gpc_reg_operand" "r")			 (const_int 8)			 (ashift:PSI			  (match_operand:PSI 3 "register_operand" "b")			  (const_int 3))))]  ""  "exbyte %0,%2,%0")(define_expand "extzv"  [(set (match_operand:SI 0 "gpc_reg_operand" "")	(zero_extract:SI (match_operand:SI 1 "gpc_reg_operand" "")			 (match_operand:SI 2 "general_operand" "")			 (match_operand:SI 3 "general_operand" "")))]  ""  "{  int size, pos;  if (GET_CODE (operands[2]) != CONST_INT      || GET_CODE (operands[3]) != CONST_INT)    FAIL;  size = INTVAL (operands[2]);  pos = INTVAL (operands[3]);  /* Can't do this unless a byte extraction.  If extracting the high     or low byte, don't do this because a shift or AND is shorter.     Don't do 16-bit extracts, since the only two are the high and low     ends, and it is faster to do them with CONSTH and SRL.  */  if (size != 8 || (pos != 8 && pos != 16))    FAIL;  operands[3] = gen_rtx (ASHIFT, PSImode,			 force_reg (PSImode, GEN_INT (pos / 8)),			 GEN_INT (3));}");; EXHW(define_insn ""  [(set (match_operand:SI 0 "gpc_reg_operand" "=r")	(ior:SI (and:SI (match_operand:SI 1 "srcb_operand" "rI")		(const_int -65536))		(zero_extract:SI (match_operand:SI 2 "gpc_reg_operand" "r")				 (const_int 16)				 (ashift:PSI				  (match_operand:PSI 3 "register_operand" "b")				  (const_int 3)))))]  ""  "exhw %0,%2,%1")(define_insn ""  [(set (match_operand:SI 0 "gpc_reg_operand" "=r")	(zero_extract:SI (match_operand:SI 1 "gpc_reg_operand" "r")			 (const_int 16)			 (ashift:PSI			  (match_operand:PSI 2 "register_operand" "b")			  (const_int 3))))]  ""  "exhw %0,%1,0")(define_insn ""  [(set (zero_extract:SI (match_operand:SI 0 "gpc_reg_operand" "+r")			 (const_int 16)			 (match_operand:PSI 1 "const_16_operand" ""))	(zero_extract:SI (match_operand:SI 2 "gpc_reg_operand" "r")			 (const_int 16)			 (ashift:PSI			  (match_operand:PSI 3 "register_operand" "b")			  (const_int 3))))]  ""  "exhw %0,%2,%0");; EXHWS;;;; This is probably unused.  The high-order 16-bits are obtained with an SRA;; insn.  The low-order 16 bits are a sign-extend, which is a pair of;; shifts.  Setting BP followed by the insn is equivalent, so we don't;; bother going to any trouble to generate this insn.(define_insn ""  [(set (match_operand:SI 0 "gpc_reg_operand" "=r")	(sign_extract:SI (match_operand:SI 1 "gpc_reg_operand" "r")			 (const_int 16)			 (ashift:PSI			  (match_operand:PSI 2 "register_operand" "b")			  (const_int 3))))]  ""  "exhws %0,%1");; EXTRACT(define_insn ""  [(set (match_operand:SI 0 "gpc_reg_operand" "=r")	(rotate:SI (match_operand:SI 1 "gpc_reg_operand" "r")		   (match_operand:PSI 2 "register_operand" "f")))]  ""  "extract %0,%1,%1")(define_expand "rotlsi3"  [(set (match_dup 3)	(match_operand:SI 2 "gpc_reg_or_immediate_operand" ""))   (set (match_operand:SI 0 "gpc_reg_operand" "")	(rotate:SI (match_operand:SI 1 "gpc_reg_operand" "")		   (match_dup 3)))]  ""  "{ operands[2] = gen_lowpart (PSImode, operands[2]);  operands[3] = gen_reg_rtx (PSImode);}");; It would be nice to be able to have a define_split corresponding to the;; above, but there is no way to tell combine we need a PSImode temporary.;; If we put a (clobber (scratch:PSI)) there, combine would merge the above;; two insns.  This is bad because it then thinks only one insn is needed.;; FADD(define_expand "addsf3"  [(set (match_operand:SF 0 "register_operand" "")	(plus:SF (match_operand:SF 1 "register_operand" "")		 (match_operand:SF 2 "register_operand" "")))]  "! TARGET_SOFT_FLOAT"  "")(define_insn ""  [(set (match_operand:SF 0 "register_operand" "=r")	(plus:SF (match_operand:SF 1 "register_operand" "%r")		 (match_operand:SF 2 "register_operand" "r")))]  "! TARGET_29050"  "fadd %0,%1,%2"  [(set_attr "type" "fadd")])(define_insn ""  [(set (match_operand:SF 0 "register_operand" "=r,a")	(plus:SF (match_operand:SF 1 "register_operand" "%r,r")		 (match_operand:SF 2 "register_operand" "r,0")))]  "TARGET_29050"  "@   fadd %0,%1,%2   fmac 8,%0,%1,%1"  [(set_attr "type" "fadd,fam")]);; FDIV(define_insn "divsf3"  [(set (match_operand:SF 0 "register_operand" "=r")	(div:SF (match_operand:SF 1 "register_operand" "=r")		(match_operand:SF 2 "register_operand" "r")))]  "! TARGET_SOFT_FLOAT"  "fdiv %0,%1,%2"  [(set_attr "type" "fdiv")]);; FDMUL(define_insn ""  [(set (match_operand:DF 0 "register_operand" "=r")	(mult:DF (float_extend:DF (match_operand:SF 1 "register_operand" "%r"))		 (float_extend:DF (match_operand:SF 2 "register_operand" "r"))))]  "! TARGET_SOFT_FLOAT"  "fdmul %0,%1,%2");; FMAC/FMSM(define_insn ""  [(set (match_operand:SF 0 "register_operand" "=a,*r")	(plus:SF (mult:SF (match_operand:SF 1 "register_operand" "%r,A")			  (match_operand:SF 2 "register_operand" "r,r"))		 (match_operand:SF 3 "register_operand" "0,*r")))]  "TARGET_29050"  "@   fmac 0,%0,%1,%2   fmsm %0,%2,%3"  [(set_attr "type" "fam")])(define_insn ""  [(set (match_operand:SF 0 "register_operand" "=a")	(plus:SF (mult:SF (neg:SF (match_operand:SF 1 "register_operand" "r"))			  (match_operand:SF 2 "register_operand" "r"))		 (match_operand:SF 3 "register_operand" "0")))]  "TARGET_29050"  "fmac 1,%0,%2,%1"  [(set_attr "type" "fam")])(define_insn ""  [(set (match_operand:SF 0 "register_operand" "=a")	(minus:SF (mult:SF (match_operand:SF 1 "register_operand" "%r")			   (match_operand:SF 2 "register_operand" "r"))		  (match_operand:SF 3 "register_operand" "0")))]  "TARGET_29050"  "fmac 2,%0,%1,%2"  [(set_attr "type" "fam")])(define_insn ""  [(set (match_operand:SF 0 "register_operand" "=a")	(minus:SF (mult:SF (neg:SF (match_operand:SF 1 "register_operand" "r"))			   (match_operand:SF 2 "register_operand" "r"))		  (match_operand:SF 3 "register_operand" "0")))]  "TARGET_29050"  "fmac 3,%0,%2,%1"  [(set_attr "type" "fam")])(define_insn ""  [(set (match_operand:SF 0 "register_operand" "=a")	(mult:SF (neg:SF (match_operand:SF 1 "register_operand" "r"))		 (match_operand:SF 2 "register_operand" "r")))]  "TARGET_29050"  "fmac 5,%0,%2,%1"  [(set_attr "type" "fam")])(define_insn ""  [(set (match_operand:SF 0 "register_operand" "=a")	(minus:SF (neg:SF (match_operand:SF 1 "register_operand" "%r"))		  (match_operand:SF 2 "register_operand" "0")))]  "TARGET_29050"  "fmac 11,%0,%1,%1"  [(set_attr "type" "fam")])(define_insn ""  [(set (match_operand:SF 0 "register_operand" "=a")	(neg:SF (plus:SF (match_operand:SF 1 "register_operand" "%r")			 (match_operand:SF 2 "register_operand" "0"))))]  "TARGET_29050"  "fmac 11,%0,%1,%1"  [(set_attr "type" "fam")])(define_insn ""  [(set (match_operand:SF 0 "register_operand" "=r,a")	(neg:SF (match_operand:SF 1 "register_operand" "r,r")))   (clobber (match_scratch:SI 2 "=&r,X"))]  "TARGET_29050"  "@   cpeq %2,gr1,gr1\;xor %0,%1,%2   fmac 13,%0,%1,%1"  [(set_attr "type" "multi,fam")]);; FMUL(define_expand "mulsf3"  [(set (match_operand:SF 0 "register_operand" "")	(mult:SF (match_operand:SF 1 "register_operand" "")		 (match_operand:SF 2 "register_operand" "")))]  "! TARGET_SOFT_FLOAT"  "")(define_insn ""  [(set (match_operand:SF 0 "register_operand" "=r")	(mult:SF (match_operand:SF 1 "register_operand" "%r")		 (match_operand:SF 2 "register_operand" "r")))]  "! TARGET_29050"  "fmul %0,%1,%2"  [(set_attr "type" "fmul")])

⌨️ 快捷键说明

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