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

📄 dsp16xx.md

📁 linux下的gcc编译器
💻 MD
📖 第 1 页 / 共 5 页
字号:
	(umod:QI (match_operand:QI 1 "register_operand" "")		 (match_operand:QI 2 "nonmemory_operand" "")))]  ""  "{  if (!dsp16xx_umodqi3_libcall)    dsp16xx_umodqi3_libcall = gen_rtx_SYMBOL_REF (Pmode, UMODQI3_LIBCALL);    emit_library_call (dsp16xx_umodqi3_libcall, 1, QImode, 2,		     operands[1], QImode,		     operands[2], QImode);  emit_move_insn (operands[0], hard_libcall_value(QImode));  DONE;}")(define_expand "divhf3"  [(set (match_operand:HF 0 "register_operand" "")	(div:HF (match_operand:HF 1 "register_operand" "")		(match_operand:HF 2 "nonmemory_operand" "")))]  ""  "{  if (!dsp16xx_divhf3_libcall)    dsp16xx_divhf3_libcall = gen_rtx_SYMBOL_REF (Pmode, DIVHF3_LIBCALL);    emit_library_call (dsp16xx_divhf3_libcall, 1, HFmode, 2,		     operands[1], HFmode,		     operands[2], HFmode);  emit_move_insn (operands[0], hard_libcall_value(HFmode));  DONE;}");;;; ********************;;;; Logical Instructions;;(define_split  [(set (match_operand:HI 0 "register_operand" "")	(and:HI (match_operand:HI 1 "register_operand" "")		 (match_operand:HI 2 "const_int_operand" "")))]  "reload_completed && !AND_LOW_16(INTVAL(operands[2])) &&    !AND_HIGH_16(INTVAL(operands[2]))    && (REGNO (operands[0]) == REGNO (operands[1]))"  [(parallel [(set (match_dup 3)		   (and:QI (match_dup 4)			   (match_dup 5)))	      (clobber (match_scratch:QI 6 ""))])   (parallel [(set (match_dup 7)		   (and:QI (match_dup 8)			   (match_dup 9)))	      (clobber (match_scratch:QI 10 ""))])]  "{  operands[3] = gen_lowpart(QImode, operands[0]);  operands[4] = gen_lowpart(QImode, operands[1]);  operands[5] = gen_rtx (CONST_INT, VOIDmode, INTVAL (operands[2]) & 0xffff);  operands[7] = gen_highpart(QImode, operands[0]);  operands[8] = gen_highpart(QImode, operands[0]);  operands[9] = gen_rtx (CONST_INT, VOIDmode, (((INTVAL (operands[2]) & 0xffff0000) >> 16) & 0xffff));}")(define_split  [(set (match_operand:HI 0 "register_operand" "")	(and:HI (match_operand:HI 1 "register_operand" "")		(match_operand:HI 2 "const_int_operand" "")))]  "reload_completed && !AND_LOW_16(INTVAL(operands[2])) &&    !AND_HIGH_16(INTVAL(operands[2]))   && (REGNO (operands[0]) != REGNO (operands[1]))"  [(parallel [(set (match_dup 3)		   (and:QI (match_dup 4)			   (match_dup 5)))	      (clobber (match_dup 6))])   (parallel [(set (match_dup 6)		   (and:QI (match_dup 7)			   (match_dup 8)))	      (clobber (match_scratch:QI 9 ""))])]  "{  operands[3] = gen_lowpart(QImode, operands[0]);  operands[4] = gen_lowpart(QImode, operands[1]);  operands[5] = gen_rtx (CONST_INT, VOIDmode, INTVAL (operands[2]) & 0xffff);  operands[6] = gen_highpart(QImode, operands[0]);  operands[7] = gen_highpart(QImode, operands[0]);  operands[8] = gen_rtx (CONST_INT, VOIDmode, (((INTVAL (operands[2]) & 0xffff0000) >> 16) & 0xffff));}")(define_insn "andhi3"  [(set (match_operand:HI 0 "register_operand" "=A,A,A,A,?A")        (and:HI (match_operand:HI 1 "register_operand" "%A,!A,A,A,A")                (match_operand:HI 2 "nonmemory_operand" "Z,A,O,P,i")))]  ""  "@   %0=%1&%2   %0=%1&%2   %0=%w1&%H2   %0=%b1&%U2   %0=%w1&%H2\;%0=%b0&%U2"  [(set_attr "type" "f3_alu,f3_alu,f3_alu_i,f3_alu_i,f3_alu_i_mult")])(define_insn "andqi3"  [(set (match_operand:QI 0 "register_operand" "=k,u,!k,!u,k,u,k,u,j,q,j,q,j,q,!j,!q")	(and:QI (match_operand:QI 1 "register_operand" "%uk,uk,uk,uk,0,0,u,k,jq,jq,0,0,q,j,jq,jq")		(match_operand:QI 2 "nonmemory_operand" "wz,wz,uk,uk,i,i,i,i,yv,yv,i,i,i,i,jq,jq")))   (clobber (match_scratch:QI 3 "=j,q,j,q,X,X,j,q,k,u,X,X,k,u,k,u"))]  ""  "@    %m0=%m1&%m2    %m0=%m1&%m2    %m0=%m1&%m2    %m0=%m1&%m2    %m0=%1&%H2    %m0=%1&%H2    %m0=%1&%H2    %m0=%1&%H2    %m0=%m1&%m2    %m0=%m1&%m2    %m0=%b1&%H2    %m0=%b1&%H2    %m0=%b1&%H2    %m0=%b1&%H2    %m0=%m1&%m2    %m0=%m1&%m2"  [(set_attr "type" "f3_alu,f3_alu,f3_alu,f3_alu,f3_alu_i,f3_alu_i,f3_alu_i,f3_alu_i,f3_alu,f3_alu,f3_alu_i,f3_alu_i,f3_alu_i,f3_alu_i,f3_alu,f3_alu")])(define_split  [(set (match_operand:HI 0 "register_operand" "")	(ior:HI (match_operand:HI 1 "register_operand" "")		(match_operand:HI 2 "const_int_operand" "")))]  "reload_completed && !SMALL_INTVAL(INTVAL(operands[2])) &&    !ADD_HIGH_16(INTVAL(operands[2]))   && (REGNO (operands[0]) == REGNO (operands[1]))"  [(parallel [(set (match_dup 3)		   (ior:QI (match_dup 4)			   (match_dup 5)))	      (clobber (match_scratch:QI 6 ""))])   (parallel [(set (match_dup 7)		   (ior:QI (match_dup 8)			   (match_dup 9)))	      (clobber (match_scratch:QI 10 ""))])]  "{  operands[3] = gen_lowpart(QImode, operands[0]);  operands[4] = gen_lowpart(QImode, operands[1]);  operands[5] = gen_rtx (CONST_INT, VOIDmode, INTVAL (operands[2]) & 0xffff);  operands[7] = gen_highpart(QImode, operands[0]);  operands[8] = gen_highpart(QImode, operands[0]);  operands[9] = gen_rtx (CONST_INT, VOIDmode, (((INTVAL (operands[2]) & 0xffff0000) >> 16) & 0xffff));}")(define_split  [(set (match_operand:HI 0 "register_operand" "")	(ior:HI (match_operand:HI 1 "register_operand" "")		(match_operand:HI 2 "const_int_operand" "")))]  "reload_completed && !SMALL_INTVAL(INTVAL(operands[2])) &&    !ADD_HIGH_16(INTVAL(operands[2]))   && (REGNO (operands[0]) != REGNO (operands[1]))"  [(parallel [(set (match_dup 3)		   (ior:QI (match_dup 4)			   (match_dup 5)))	      (clobber (match_dup 6))])   (parallel [(set (match_dup 6)		   (ior:QI (match_dup 7)			   (match_dup 8)))	      (clobber (match_scratch:QI 9 ""))])]  "{  operands[3] = gen_lowpart(QImode, operands[0]);  operands[4] = gen_lowpart(QImode, operands[1]);  operands[5] = gen_rtx (CONST_INT, VOIDmode, INTVAL (operands[2]) & 0xffff);  operands[6] = gen_highpart(QImode, operands[0]);  operands[7] = gen_highpart(QImode, operands[0]);  operands[8] = gen_rtx (CONST_INT, VOIDmode, (((INTVAL (operands[2]) & 0xffff0000) >> 16) & 0xffff));}")(define_insn "iorhi3"  [(set (match_operand:HI 0 "register_operand" "=A,A,A,A,?A")        (ior:HI (match_operand:HI 1 "register_operand" "%A,!A,A,A,A")                (match_operand:HI 2 "nonmemory_operand" "Z,A,I,M,i")))] "" "@   %0=%u1|%u2   %0=%u1|%u2   %0=%w1|%H2   %0=%b1|%U2   %0=%w1|%H2\;%0=%b0|%U2"  [(set_attr "type" "f3_alu,f3_alu,f3_alu_i,f3_alu_i,f3_alu_i_mult")])(define_insn "iorqi3"  [(set (match_operand:QI 0 "register_operand" "=k,u,!k,!u,k,u,k,u,j,q,j,q,j,q,!j,!q")	(ior:QI (match_operand:QI 1 "register_operand" "%uk,uk,uk,uk,0,0,u,k,jq,jq,0,0,q,j,jq,jq")		(match_operand:QI 2 "nonmemory_operand" "wz,wz,uk,uk,i,i,i,i,yv,yv,i,i,i,i,jq,jq")))   (clobber (match_scratch:QI 3 "=j,q,j,q,X,X,j,q,k,u,X,X,k,u,k,u"))]  ""  "@    %m0=%m1|%m2    %m0=%m1|%m2    %m0=%m1|%m2    %m0=%m1|%m2    %m0=%1|%H2    %m0=%1|%H2    %m0=%1|%H2    %m0=%1|%H2    %m0=%m1|%m2    %m0=%m1|%m2    %m0=%b1|%H2    %m0=%b1|%H2    %m0=%b1|%H2    %m0=%b1|%H2    %m0=%m1|%m2    %m0=%m1|%m2"  [(set_attr "type" "f3_alu,f3_alu,f3_alu,f3_alu,f3_alu_i,f3_alu_i,f3_alu_i,f3_alu_i,f3_alu,f3_alu,f3_alu_i,f3_alu_i,f3_alu_i,f3_alu_i,f3_alu,f3_alu")])(define_split  [(set (match_operand:HI 0 "register_operand" "")	(xor:HI (match_operand:HI 1 "register_operand" "")		(match_operand:HI 2 "const_int_operand" "")))]  "reload_completed && !SMALL_INTVAL(INTVAL(operands[2])) &&    !ADD_HIGH_16(INTVAL(operands[2]))   && (REGNO (operands[0]) == REGNO (operands[1]))"  [(parallel [(set (match_dup 3)		   (xor:QI (match_dup 4)			   (match_dup 5)))	      (clobber (match_scratch:QI 6 ""))])   (parallel [(set (match_dup 7)		   (xor:QI (match_dup 8)			   (match_dup 9)))	      (clobber (match_scratch:QI 10 ""))])]  "{  operands[3] = gen_lowpart(QImode, operands[0]);  operands[4] = gen_lowpart(QImode, operands[1]);  operands[5] = gen_rtx (CONST_INT, VOIDmode, INTVAL (operands[2]) & 0xffff);  operands[7] = gen_highpart(QImode, operands[0]);  operands[8] = gen_highpart(QImode, operands[0]);  operands[9] = gen_rtx (CONST_INT, VOIDmode, (((INTVAL (operands[2]) & 0xffff0000) >> 16) & 0xffff));}")(define_split  [(set (match_operand:HI 0 "register_operand" "")	(xor:HI (match_operand:HI 1 "register_operand" "")		(match_operand:HI 2 "const_int_operand" "")))]  "reload_completed && !SMALL_INTVAL(INTVAL(operands[2])) &&    !ADD_HIGH_16(INTVAL(operands[2]))   && (REGNO (operands[0]) != REGNO (operands[1]))"  [(parallel [(set (match_dup 3)		   (xor:QI (match_dup 4)			   (match_dup 5)))	      (clobber (match_dup 6))])   (parallel [(set (match_dup 6)		   (xor:QI (match_dup 7)			   (match_dup 8)))	      (clobber (match_scratch:QI 9 ""))])]  "{  operands[3] = gen_lowpart(QImode, operands[0]);  operands[4] = gen_lowpart(QImode, operands[1]);  operands[5] = gen_rtx (CONST_INT, VOIDmode, INTVAL (operands[2]) & 0xffff);  operands[6] = gen_highpart(QImode, operands[0]);  operands[7] = gen_highpart(QImode, operands[0]);  operands[8] = gen_rtx (CONST_INT, VOIDmode, (((INTVAL (operands[2]) & 0xffff0000) >> 16) & 0xffff));}")(define_insn "xorhi3"  [(set (match_operand:HI 0 "register_operand" "=A,A,A,A,?A")        (xor:HI (match_operand:HI 1 "register_operand" "%A,!A,A,A,A")                (match_operand:HI 2 "nonmemory_operand" "Z,A,I,M,i")))]  ""  "@   %0=%1^%2   %0=%1^%2   %0=%w1^%H2   %0=%b1^%U2   %0=%w1^%H2\;%0=%b0^%U2"  [(set_attr "type" "f3_alu,f3_alu,f3_alu_i,f3_alu_i,f3_alu_i_mult")])(define_insn "xorqi3"  [(set (match_operand:QI 0 "register_operand" "=k,u,!k,!u,k,u,k,u,j,q,j,q,j,q,!j,!q")	(xor:QI (match_operand:QI 1 "register_operand" "%uk,uk,uk,uk,0,0,u,k,jq,jq,0,0,q,j,jq,jq")		(match_operand:QI 2 "nonmemory_operand" "wz,wz,uk,uk,i,i,i,i,yv,yv,i,i,i,i,jq,jq")))   (clobber (match_scratch:QI 3 "=j,q,j,q,X,X,j,q,k,u,X,X,k,u,k,u"))]  ""  "@    %m0=%m1^%m2    %m0=%m1^%m2    %m0=%m1^%m2    %m0=%m1^%m2    %m0=%1^%H2    %m0=%1^%H2    %m0=%1^%H2    %m0=%1^%H2    %m0=%m1^%m2    %m0=%m1^%m2    %m0=%b1^%H2    %m0=%b1^%H2    %m0=%b1^%H2    %m0=%b1^%H2    %m0=%m1^%m2    %m0=%m1^%m2"  [(set_attr "type" "f3_alu,f3_alu,f3_alu,f3_alu,f3_alu_i,f3_alu_i,f3_alu_i,f3_alu_i,f3_alu,f3_alu,f3_alu_i,f3_alu_i,f3_alu_i,f3_alu_i,f3_alu,f3_alu")])(define_insn "one_cmplhi2"  [(set (match_operand:HI 0 "register_operand" "=A")        (not:HI (match_operand:HI 1 "register_operand" "A")))]  ""  "%0= ~%1"  [(set_attr "type" "special")])(define_insn "one_cmplqi2"  [(set (match_operand:QI 0 "register_operand" "=k,k,u,u,j,j,q,q")        (not:QI (match_operand:QI 1 "register_operand" "0,u,0,q,0,q,0,j")))   (clobber (match_scratch:QI 2 "=X,j,X,q,X,k,X,u"))]  ""  "@   %m0= %1 ^ 0xffff   %m0= %1 ^ 0xffff   %m0= %1 ^ 0xffff   %m0= %1 ^ 0xffff   %m0= %b1 ^ 0xffff   %m0= %b1 ^ 0xffff   %m0= %b1 ^ 0xffff   %m0= %b1 ^ 0xffff"  [(set_attr "type" "f3_alu_i,f3_alu_i,f3_alu_i,f3_alu_i,f3_alu_i,f3_alu_i,f3_alu_i,f3_alu_i")]);;;; MOVE INSTRUCTIONS;;(define_split  [(set (mem:HI (match_operand:QI 0 "register_operand" ""))	(match_operand:HI 1 "register_operand" ""))]  "reload_completed && (operands[0] != stack_pointer_rtx)"  [(set (mem:QI (post_inc:QI (match_dup 0)))	(match_dup 2))   (set (mem:QI (post_dec:QI (match_dup 0)))	(match_dup 3))]  "{  operands[2] = gen_highpart(QImode, operands[1]);  operands[3] = gen_lowpart(QImode, operands[1]);}")(define_split  [(set (match_operand:HI 0 "register_operand" "")	(mem:HI (match_operand:QI 1 "register_operand" "")))]  "reload_completed && (operands[1] != stack_pointer_rtx)"  [(set (match_dup 2)	(mem:QI (post_inc:QI (match_dup 1))))   (set (match_dup 3)	(mem:QI (post_dec:QI (match_dup 1))))]  "{  operands[2] = gen_highpart(QImode, operands[0]);  operands[3] = gen_lowpart(QImode, operands[0]);}")(define_split  [(set (mem:HI (post_inc:HI (match_operand:QI 0 "register_operand" "")))	(match_operand:HI 1 "register_operand" ""))]  "reload_completed"  [(set (mem:QI (post_inc:QI (match_dup 0)))	(match_dup 2))   (set (mem:QI (post_inc:QI (match_dup 0)))	(match_dup 3))]  "{  operands[2] = gen_highpart(QImode, operands[1]);  operands[3] = gen_lowpart(QImode, operands[1]);}")(define_split  [(set (match_operand:HI 0 "register_operand" "")	(mem:HI (post_inc:HI (match_operand:QI 1 "register_operand" ""))))]  "reload_completed"  [(set (match_dup 2)	(mem:QI (post_inc:QI (match_dup 1))))   (set (match_dup 3)	(mem:QI (post_inc:QI (match_dup 1))))]  "{  operands[2] = gen_highpart(QImode, operands[0]);  operands[3] = gen_lowpart(QImode, operands[0]);}")(define_split  [(set (match_operand:HI 0 "register_operand" "")	(match_operand:HI 1 "register_operand" ""))]  "reload_completed &&    !(IS_ACCUM_REG (REGNO(operands[0])) &&     (REGNO(operands[1]) == REG_PROD || REGNO(operands[1]) == REG_Y))"  [(set (match_dup 2)	(match_dup 3))   (set (match_dup 4)	(match_dup 5))]  "{  operands[2] = gen_highpart(QImode, operands[0]);  operands[3] = gen_highpart(QImode, operands[1]);  operands[4] = gen_lowpart(QImode, operands[0]);  operands[5] = gen_lowpart(QImode, operands[1]);}")(define_split  [(set (match_operand:HI 0 "register_operand" "")	(match_operand:HI 1 "const_int_operand" ""))]  "reload_completed"  [(set (match_dup 2)	(match_dup 3))   (set (match_dup 4)	(match_dup 5))]   "{  operands[2] = gen_lowpart(QImode, operands[0]);  operands[3] = gen_rtx (CONST_INT, VOIDmode, INTVAL (operands[1]) & 0xffff);  operands[4] = gen_highpart(QImode, operands[0]);  operands[5] = gen_rtx (CONST_INT, VOIDmode, (((INTVAL (operands[1]) & 0xffff0000) >> 16) & 0xffff));}")(define_expand "movhi"  [(set (match_operand:HI 0 "general_operand" "")	(match_operand:HI 1 "general_operand" ""))]  ""  "{  if (emit_move_sequence (operands, HImode))    DONE;}")(define_insn "match_movhi1"  [(set (match_operand:HI 0 "nonimmediate_operand"  "=A,Z,A,d,d,m,?d,*Y,t,f")	(match_operand:HI 1 "general_operand"        "d,A,K,i,m,d,*Y,?d,t,f"))]  "register_operand(operands[0], HImode)   || register_operand(operands[1], HImode)"  "*{	switch (which_alternative)        {		/* register to accumulator */		case 0: 		   return \"%0=%1\";		case 1:		   return \"%u0=%u1\;%w0=%w1\";	        case 2:	           return \"%0=%0^%0\";		case 3:		     return \"%u0=%U1\;%w0=%H1\";		case 4:		   double_reg_from_memory(operands);		   return \"\";		case 5:		   double_reg_to_memory(operands);		   return \"\";

⌨️ 快捷键说明

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