📄 m68k.md
字号:
"TARGET_68881" "*{ if (REG_P (operands[2])) return \"fadd%.x %2,%0\"; return \"fadd%.d %f2,%0\";}")(define_expand "addsf3" [(set (match_operand:SF 0 "general_operand" "") (plus:SF (match_operand:SF 1 "general_operand" "") (match_operand:SF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "")(define_insn "" [(set (match_operand:SF 0 "general_operand" "=x,y") (plus:SF (match_operand:SF 1 "general_operand" "%xH,y") (match_operand:SF 2 "general_operand" "xH,rmF")))] "TARGET_FPA" "*{ if (rtx_equal_p (operands[0], operands[1])) return \"fpadd%.s %w2,%0\"; if (rtx_equal_p (operands[0], operands[2])) return \"fpadd%.s %w1,%0\"; if (which_alternative == 0) return \"fpadd3%.s %w2,%w1,%0\"; return \"fpadd3%.s %2,%1,%0\";}")(define_insn "" [(set (match_operand:SF 0 "general_operand" "=f") (plus:SF (match_operand:SF 1 "general_operand" "%0") (match_operand:SF 2 "general_operand" "fdmF")))] "TARGET_68881" "*{ if (REG_P (operands[2]) && ! DATA_REG_P (operands[2])) return \"fadd%.x %2,%0\"; return \"fadd%.s %f2,%0\";}");; subtract instructions(define_insn "subsi3" [(set (match_operand:SI 0 "general_operand" "=m,r,!a,?d") (minus:SI (match_operand:SI 1 "general_operand" "0,0,a,mrIKs") (match_operand:SI 2 "general_operand" "dIKs,mrIKs,J,0")))] "" "*{ if (! operands_match_p (operands[0], operands[1])) { if (operands_match_p (operands[0], operands[2])) {#ifndef NO_ADDSUB_Q if (GET_CODE (operands[1]) == CONST_INT) { if (INTVAL (operands[1]) > 0 && INTVAL (operands[1]) <= 8) return \"subq%.l %1,%0\;neg%.l %0\"; }#endif return \"sub%.l %1,%0\;neg%.l %0\"; } /* This case is matched by J, but negating -0x8000 in an lea would give an invalid displacement. So do this specially. */ if (INTVAL (operands[2]) == -0x8000) return \"move%.l %1,%0\;sub%.l %2,%0\";#ifdef SGS return \"lea %n2(%1),%0\";#else#ifdef MOTOROLA return \"lea (%n2,%1),%0\";#else /* not MOTOROLA (MIT syntax) */ return \"lea %1@(%n2),%0\";#endif /* not MOTOROLA */#endif /* not SGS */ } if (GET_CODE (operands[2]) == CONST_INT) {#ifndef NO_ADDSUB_Q if (INTVAL (operands[2]) > 0 && INTVAL (operands[2]) <= 8) return \"subq%.l %2,%0\";#endif if (ADDRESS_REG_P (operands[0]) && INTVAL (operands[2]) >= -0x8000 && INTVAL (operands[2]) < 0x8000) return \"sub%.w %2,%0\"; } return \"sub%.l %2,%0\";}")(define_insn "" [(set (match_operand:SI 0 "general_operand" "=a") (minus:SI (match_operand:SI 1 "general_operand" "0") (sign_extend:SI (match_operand:HI 2 "general_operand" "rmn"))))] "" "sub%.w %2,%0")(define_insn "subhi3" [(set (match_operand:HI 0 "general_operand" "=m,r") (minus:HI (match_operand:HI 1 "general_operand" "0,0") (match_operand:HI 2 "general_operand" "dn,rmn")))] "" "sub%.w %2,%0")(define_insn "" [(set (strict_low_part (match_operand:HI 0 "general_operand" "+m,d")) (minus:HI (match_dup 0) (match_operand:HI 1 "general_operand" "dn,rmn")))] "" "sub%.w %1,%0")(define_insn "subqi3" [(set (match_operand:QI 0 "general_operand" "=m,d") (minus:QI (match_operand:QI 1 "general_operand" "0,0") (match_operand:QI 2 "general_operand" "dn,dmn")))] "" "sub%.b %2,%0")(define_insn "" [(set (strict_low_part (match_operand:QI 0 "general_operand" "+m,d")) (minus:QI (match_dup 0) (match_operand:QI 1 "general_operand" "dn,dmn")))] "" "sub%.b %1,%0")(define_expand "subdf3" [(set (match_operand:DF 0 "general_operand" "") (minus:DF (match_operand:DF 1 "general_operand" "") (match_operand:DF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "")(define_insn "" [(set (match_operand:DF 0 "general_operand" "=x,y,y") (minus:DF (match_operand:DF 1 "general_operand" "xH,y,dmF") (match_operand:DF 2 "general_operand" "xH,dmF,0")))] "TARGET_FPA" "*{ if (rtx_equal_p (operands[0], operands[2])) return \"fprsub%.d %y1,%0\"; if (rtx_equal_p (operands[0], operands[1])) return \"fpsub%.d %y2,%0\"; if (which_alternative == 0) return \"fpsub3%.d %w2,%w1,%0\"; return \"fpsub3%.d %x2,%x1,%0\";}")(define_insn "" [(set (match_operand:DF 0 "general_operand" "=f") (minus:DF (match_operand:DF 1 "general_operand" "0") (match_operand:DF 2 "general_operand" "fmG")))] "TARGET_68881" "*{ if (REG_P (operands[2])) return \"fsub%.x %2,%0\"; return \"fsub%.d %f2,%0\";}")(define_expand "subsf3" [(set (match_operand:SF 0 "general_operand" "") (minus:SF (match_operand:SF 1 "general_operand" "") (match_operand:SF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "")(define_insn "" [(set (match_operand:SF 0 "general_operand" "=x,y,y") (minus:SF (match_operand:SF 1 "general_operand" "xH,y,rmF") (match_operand:SF 2 "general_operand" "xH,rmF,0")))] "TARGET_FPA" "*{ if (rtx_equal_p (operands[0], operands[2])) return \"fprsub%.s %w1,%0\"; if (rtx_equal_p (operands[0], operands[1])) return \"fpsub%.s %w2,%0\"; if (which_alternative == 0) return \"fpsub3%.s %w2,%w1,%0\"; return \"fpsub3%.s %2,%1,%0\";}")(define_insn "" [(set (match_operand:SF 0 "general_operand" "=f") (minus:SF (match_operand:SF 1 "general_operand" "0") (match_operand:SF 2 "general_operand" "fdmF")))] "TARGET_68881" "*{ if (REG_P (operands[2]) && ! DATA_REG_P (operands[2])) return \"fsub%.x %2,%0\"; return \"fsub%.s %f2,%0\";}");; multiply instructions(define_insn "mulhi3" [(set (match_operand:HI 0 "general_operand" "=d") (mult:HI (match_operand:HI 1 "general_operand" "%0") (match_operand:HI 2 "general_operand" "dmn")))] "" "*{#ifdef MOTOROLA return \"muls.w %2,%0\";#else return \"muls %2,%0\";#endif}")(define_insn "mulhisi3" [(set (match_operand:SI 0 "general_operand" "=d") (mult:SI (match_operand:HI 1 "general_operand" "%0") (match_operand:HI 2 "general_operand" "dmn")))] "" "*{#ifdef MOTOROLA return \"muls.w %2,%0\";#else return \"muls %2,%0\";#endif}")(define_insn "mulsi3" [(set (match_operand:SI 0 "general_operand" "=d") (mult:SI (match_operand:SI 1 "general_operand" "%0") (match_operand:SI 2 "general_operand" "dmsK")))] "TARGET_68020" "muls%.l %2,%0")(define_insn "umulhi3" [(set (match_operand:HI 0 "general_operand" "=d") (umult:HI (match_operand:HI 1 "general_operand" "%0") (match_operand:HI 2 "general_operand" "dmn")))] "" "*{#ifdef MOTOROLA return \"mulu.w %2,%0\";#else return \"mulu %2,%0\";#endif}")(define_insn "umulhisi3" [(set (match_operand:SI 0 "general_operand" "=d") (umult:SI (match_operand:HI 1 "general_operand" "%0") (match_operand:HI 2 "general_operand" "dmn")))] "" "*{#ifdef MOTOROLA return \"mulu.w %2,%0\";#else return \"mulu %2,%0\";#endif}")(define_insn "umulsi3" [(set (match_operand:SI 0 "general_operand" "=d") (umult:SI (match_operand:SI 1 "general_operand" "%0") (match_operand:SI 2 "general_operand" "dmsK")))] "TARGET_68020" "mulu%.l %2,%0")(define_expand "muldf3" [(set (match_operand:DF 0 "general_operand" "") (mult:DF (match_operand:DF 1 "general_operand" "") (match_operand:DF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "")(define_insn "" [(set (match_operand:DF 0 "general_operand" "=x,y") (mult:DF (match_operand:DF 1 "general_operand" "%xH,y") (match_operand:DF 2 "general_operand" "xH,rmF")))] "TARGET_FPA" "*{ if (rtx_equal_p (operands[1], operands[2])) return \"fpsqr%.d %y1,%0\"; if (rtx_equal_p (operands[0], operands[1])) return \"fpmul%.d %y2,%0\"; if (rtx_equal_p (operands[0], operands[2])) return \"fpmul%.d %y1,%0\"; if (which_alternative == 0) return \"fpmul3%.d %w2,%w1,%0\"; return \"fpmul3%.d %x2,%x1,%0\";}")(define_insn "" [(set (match_operand:DF 0 "general_operand" "=f") (mult:DF (match_operand:DF 1 "general_operand" "%0") (match_operand:DF 2 "general_operand" "fmG")))] "TARGET_68881" "*{ if (REG_P (operands[2])) return \"fmul%.x %2,%0\"; return \"fmul%.d %f2,%0\";}")(define_expand "mulsf3" [(set (match_operand:SF 0 "general_operand" "") (mult:SF (match_operand:SF 1 "general_operand" "") (match_operand:SF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "")(define_insn "" [(set (match_operand:SF 0 "general_operand" "=x,y") (mult:SF (match_operand:SF 1 "general_operand" "%xH,y") (match_operand:SF 2 "general_operand" "xH,rmF")))] "TARGET_FPA" "*{ if (rtx_equal_p (operands[1], operands[2])) return \"fpsqr%.s %w1,%0\"; if (rtx_equal_p (operands[0], operands[1])) return \"fpmul%.s %w2,%0\"; if (rtx_equal_p (operands[0], operands[2])) return \"fpmul%.s %w1,%0\"; if (which_alternative == 0) return \"fpmul3%.s %w2,%w1,%0\"; return \"fpmul3%.s %2,%1,%0\";}")(define_insn "" [(set (match_operand:SF 0 "general_operand" "=f") (mult:SF (match_operand:SF 1 "general_operand" "%0") (match_operand:SF 2 "general_operand" "fdmF")))] "TARGET_68881" "*{ if (REG_P (operands[2]) && ! DATA_REG_P (operands[2])) return \"fsglmul%.x %2,%0\"; return \"fsglmul%.s %f2,%0\";}");; divide instructions(define_insn "divhi3" [(set (match_operand:HI 0 "general_operand" "=d") (div:HI (match_operand:HI 1 "general_operand" "0") (match_operand:HI 2 "general_operand" "dmn")))] "" "*{#ifdef MOTOROLA return \"ext.l %0\;divs.w %2,%0\";#else return \"extl %0\;divs %2,%0\";#endif}")(define_insn "divhisi3" [(set (match_operand:HI 0 "general_operand" "=d") (div:HI (match_operand:SI 1 "general_operand" "0") (match_operand:HI 2 "general_operand" "dmn")))] "" "*{#ifdef MOTOROLA return \"divs.w %2,%0\";#else return \"divs %2,%0\";#endif}")(define_insn "divsi3" [(set (match_operand:SI 0 "general_operand" "=d") (div:SI (match_operand:SI 1 "general_operand" "0") (match_operand:SI 2 "general_operand" "dmsK")))] "TARGET_68020" "divs%.l %2,%0")(define_insn "udivhi3" [(set (match_operand:HI 0 "general_operand" "=d") (udiv:HI (match_operand:HI 1 "general_operand" "0") (match_operand:HI 2 "general_operand" "dmn")))] "" "*{#ifdef MOTOROLA return \"and.l %#0xFFFF,%0\;divu.w %2,%0\";#else return \"andl %#0xFFFF,%0\;divu %2,%0\";#endif}")(define_insn "udivhisi3" [(set (match_operand:HI 0 "general_operand" "=d") (udiv:HI (match_operand:SI 1 "general_operand" "0") (match_operand:HI 2 "general_operand" "dmn")))] "" "*{#ifdef MOTOROLA return \"divu.w %2,%0\";#else return \"divu %2,%0\";#endif}")(define_insn "udivsi3" [(set (match_operand:SI 0 "general_operand" "=d") (udiv:SI (match_operand:SI 1 "general_operand" "0") (match_operand:SI 2 "general_operand" "dmsK")))] "TARGET_68020" "divu%.l %2,%0")(define_expand "divdf3" [(set (match_operand:DF 0 "general_operand" "") (div:DF (match_operand:DF 1 "general_operand" "") (match_operand:DF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "")(define_insn "" [(set (match_operand:DF 0 "general_operand" "=x,y,y") (div:DF (match_operand:DF 1 "general_operand" "xH,y,rmF") (match_operand:DF 2 "general_operand" "xH,rmF,0")))] "TARGET_FPA" "*{ if (rtx_equal_p (operands[0], operands[2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -