📄 pj.md
字号:
;; Machine description for GNU compiler, picoJava Version;; Copyright (C) 2000 Free Software Foundation, Inc.;; Contributed by Steve Chamberlain, of Transmeta (sac@pobox.com).;; This file is part of GNU CC.;; GNU CC is free software; you can redistribute it and/or modify;; it under the terms of the GNU General Public License as published by;; the Free Software Foundation; either version 2, or (at your option);; any later version.;; GNU CC is distributed in the hope that it will be useful,;; but WITHOUT ANY WARRANTY; without even the implied warranty of;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the;; GNU General Public License for more details.;; You should have received a copy of the GNU General Public License;; along with GNU CC; see the file COPYING. If not, write to;; the Free Software Foundation, 59 Temple Place - Suite 330,;; Boston, MA 02111-1307, USA.;; Move instructions.(define_insn "movsi" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (match_operand:SI 1 "pj_source_operand" "gS"))] "" "%S1%R0")(define_insn "movhi" [(set (match_operand:HI 0 "nonimmediate_operand" "=gD") (match_operand:HI 1 "pj_source_operand" "gS"))] "" "%S1%R0")(define_insn "movqi" [(set (match_operand:QI 0 "nonimmediate_operand" "=gD") (match_operand:QI 1 "pj_source_operand" "gS"))] "" "%S1%R0")(define_insn "movdi" [(set (match_operand:DI 0 "nonimmediate_operand" "=gD") (match_operand:DI 1 "pj_source_operand" "gS"))] "" "%D1%*%R0")(define_insn "movdf" [(set (match_operand:DF 0 "nonimmediate_operand" "=gD") (match_operand:DF 1 "pj_source_operand" "gS"))] "" "%D1%R0")(define_insn "movsf" [(set (match_operand:SF 0 "nonimmediate_operand" "=gD") (match_operand:SF 1 "pj_source_operand" "gS"))] "" "%S1%R0");; Arithmetic.(define_insn "addsi3" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (plus:SI (match_operand:SI 1 "pj_source_operand" "%gS") (match_operand:SI 2 "pj_source_operand" "gS")))] "" "* return pj_output_addsi3 (operands);")(define_insn "adddi3" [(set (match_operand:DI 0 "nonimmediate_operand" "=gD") (plus:DI (match_operand:DI 1 "pj_source_operand" "%gS") (match_operand:DI 2 "pj_source_operand" "gS")))] "" "%D1%D2%*ladd%R0")(define_insn "addsf3" [(set (match_operand:SF 0 "nonimmediate_operand" "=gD") (plus:SF (match_operand:SF 1 "pj_source_operand" "%gS") (match_operand:SF 2 "pj_source_operand" "gS")))] "" "%S1%S2%*fadd%R0")(define_insn "adddf3" [(set (match_operand:DF 0 "nonimmediate_operand" "=gD") (plus:DF (match_operand:DF 1 "pj_source_operand" "%gS") (match_operand:DF 2 "pj_source_operand" "gS")))] "" "%D1%D2%*dadd%R0")(define_insn "negsi2" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (neg:SI (match_operand:SI 1 "pj_source_operand" "gS")))] "" "%S1%*ineg%R0")(define_insn "negdi2" [(set (match_operand:DI 0 "nonimmediate_operand" "=gD") (neg:DI (match_operand:DI 1 "pj_source_operand" "gS")))] "" "%S1%*lneg%R0")(define_insn "negsf2" [(set (match_operand:SF 0 "nonimmediate_operand" "=gD") (neg:SF (match_operand:SF 1 "pj_source_operand" "gS")))] "" "%S1%*fneg%R0")(define_insn "negdf2" [(set (match_operand:DF 0 "nonimmediate_operand" "=gD") (neg:DF (match_operand:DF 1 "pj_source_operand" "gS")))] "" "%D1%*dneg%R0")(define_insn "subsi3" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (minus:SI (match_operand:SI 1 "pj_source_operand" "gS") (match_operand:SI 2 "pj_source_operand" "gS")))] "" "%S1%S2%*isub%R0")(define_insn "subdi3" [(set (match_operand:DI 0 "nonimmediate_operand" "=gD") (minus:DI (match_operand:DI 1 "pj_source_operand" "gS") (match_operand:DI 2 "pj_source_operand" "gS")))] "" "%D1%D2%*lsub%R0")(define_insn "subsf3" [(set (match_operand:SF 0 "nonimmediate_operand" "=gD") (minus:SF (match_operand:SF 1 "pj_source_operand" "gS") (match_operand:SF 2 "pj_source_operand" "gS")))] "" "%S1%S2%*fsub%R0")(define_insn "subdf3" [(set (match_operand:DF 0 "nonimmediate_operand" "=gD") (minus:DF (match_operand:DF 1 "pj_source_operand" "gS") (match_operand:DF 2 "pj_source_operand" "gS")))] "" "%D1%D2%*dsub%R0")(define_insn "divsi3" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (div:SI (match_operand:SI 1 "pj_source_operand" "gS") (match_operand:SI 2 "pj_source_operand" "gS")))] "" "%S1%S2%*idiv%R0")(define_insn "divdi3" [(set (match_operand:DI 0 "nonimmediate_operand" "=gD") (div:DI (match_operand:DI 1 "pj_source_operand" "gS") (match_operand:DI 2 "pj_source_operand" "gS")))] "" "%D1%D2%*ldiv%R0")(define_insn "divsf3" [(set (match_operand:SF 0 "nonimmediate_operand" "=gD") (div:SF (match_operand:SF 1 "pj_source_operand" "gS") (match_operand:SF 2 "pj_source_operand" "gS")))] "" "%S1%S2%*fdiv%R0")(define_insn "divdf3" [(set (match_operand:DF 0 "nonimmediate_operand" "=gD") (div:DF (match_operand:DF 1 "pj_source_operand" "gS") (match_operand:DF 2 "pj_source_operand" "gS")))] "" "%D1%D2%*ddiv%R0")(define_insn "udivsi3" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (udiv:SI (match_operand:SI 1 "pj_source_operand" "gS") (match_operand:SI 2 "pj_source_operand" "gS")))] "" "%P1%P2%*ldiv%*l2i%R0")(define_insn "mulsi3" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (mult:SI (match_operand:SI 1 "pj_source_operand" "gS") (match_operand:SI 2 "pj_source_operand" "gS")))] "" "%S1%S2%*imul%R0")(define_insn "muldi3" [(set (match_operand:DI 0 "nonimmediate_operand" "=gD") (mult:DI (match_operand:DI 1 "pj_source_operand" "gS") (match_operand:DI 2 "pj_source_operand" "gS")))] "" "%D1%D2%*lmul%R0")(define_insn "muldf3" [(set (match_operand:DF 0 "nonimmediate_operand" "=gD") (mult:DF (match_operand:DF 1 "pj_source_operand" "%gS") (match_operand:DF 2 "pj_source_operand" "gS")))] "" "%D1%D2%*dmul%R0")(define_insn "mulsf3" [(set (match_operand:SF 0 "nonimmediate_operand" "=gD") (mult:SF (match_operand:SF 1 "pj_source_operand" "%gS") (match_operand:SF 2 "pj_source_operand" "gS")))] "" "%S1%S2%*fmul%R0")(define_insn "modsi3" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (mod:SI (match_operand:SI 1 "pj_source_operand" "gS") (match_operand:SI 2 "pj_source_operand" "gS")))] "" "%S1%S2%*irem%R0")(define_insn "moddi3" [(set (match_operand:DI 0 "nonimmediate_operand" "=gD") (mod:DI (match_operand:DI 1 "pj_source_operand" "gS") (match_operand:DI 2 "pj_source_operand" "gS")))] "" "%D1%D2%*lrem%R0")(define_insn "moddf3" [(set (match_operand:DF 0 "nonimmediate_operand" "=gD") (mod:DF (match_operand:DF 1 "pj_source_operand" "gS") (match_operand:DF 2 "pj_source_operand" "gS")))] "" "%D1%D2%*drem%R0")(define_insn "modsf3" [(set (match_operand:SF 0 "nonimmediate_operand" "=gD") (mod:SF (match_operand:SF 1 "pj_source_operand" "gS") (match_operand:SF 2 "pj_source_operand" "gS")))] "" "%S1%S2%*frem%R0")(define_insn "umodsi3" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (umod:SI (match_operand:SI 1 "pj_source_operand" "gS") (match_operand:SI 2 "pj_source_operand" "gS")))] "" "%P1%P2%*lrem%*l2i%R0");; Logical operations.(define_insn "andsi3" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (and:SI (match_operand:SI 1 "pj_source_operand" "%gS") (match_operand:SI 2 "pj_source_operand" "gS")))] "" "%S1%S2%*iand%R0")(define_insn "anddi3" [(set (match_operand:DI 0 "nonimmediate_operand" "=gD") (and:DI (match_operand:DI 1 "pj_source_operand" "%gS") (match_operand:DI 2 "pj_source_operand" "gS")))] "" "%D1%D2%*land%R0")(define_insn "iorsi3" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (ior:SI (match_operand:SI 1 "pj_source_operand" "%gS") (match_operand:SI 2 "pj_source_operand" "gS")))] "" "%S1%S2%*ior%R0")(define_insn "iordi3" [(set (match_operand:DI 0 "nonimmediate_operand" "=gD") (ior:DI (match_operand:DI 1 "pj_source_operand" "%gS") (match_operand:DI 2 "pj_source_operand" "gS")))] "" "%D1%D2%*lor%R0")(define_insn "xorsi3" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (xor:SI (match_operand:SI 1 "pj_source_operand" "%gS") (match_operand:SI 2 "pj_source_operand" "gS")))] "" "%S1%S2%*ixor%R0")(define_insn "xordi3" [(set (match_operand:DI 0 "nonimmediate_operand" "=gD") (xor:DI (match_operand:DI 1 "pj_source_operand" "%gS") (match_operand:DI 2 "pj_source_operand" "gS")))] "" "%D1%D2%*lxor%R0")(define_insn "one_cmplsi2" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (not:SI (match_operand:SI 1 "pj_source_operand" "gS")))] "" "%S1%*iconst_m1%*ixor%R0")(define_insn "one_cmpldi2" [(set (match_operand:DI 0 "nonimmediate_operand" "=gD") (not:DI (match_operand:DI 1 "pj_source_operand" "gS")))] "" "%S1%*iconst_m1%*iconst_m1%*lxor%R0");; Shift instructions.(define_insn "ashlsi3" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (ashift:SI (match_operand:SI 1 "pj_source_operand" "gS") (match_operand:SI 2 "pj_source_operand" "gS")))] "" "%S1%S2%*ishl%R0")(define_insn "ashldi3" [(set (match_operand:DI 0 "nonimmediate_operand" "=gD") (ashift:DI (match_operand:DI 1 "pj_source_operand" "gS") (match_operand:SI 2 "pj_source_operand" "gS")))] "" "%D1%S2%*lshl%R0")(define_insn "ashrsi3" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (ashiftrt:SI (match_operand:SI 1 "pj_source_operand" "gS") (match_operand:SI 2 "pj_source_operand" "gS")))] "" "%S1%S2%*ishr%R0")(define_insn "ashrdi3" [(set (match_operand:DI 0 "nonimmediate_operand" "=gD") (ashiftrt:DI (match_operand:DI 1 "pj_source_operand" "gS") (match_operand:SI 2 "pj_source_operand" "gS")))] "" "%D1%S2%*lshr%R0")(define_insn "lshrsi3" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (lshiftrt:SI (match_operand:SI 1 "pj_source_operand" "gS") (match_operand:SI 2 "pj_source_operand" "gS")))] "" "%S1%S2%*iushr%R0")(define_insn "lshrdi3" [(set (match_operand:DI 0 "nonimmediate_operand" "=gD") (lshiftrt:DI (match_operand:DI 1 "pj_source_operand" "gS") (match_operand:SI 2 "pj_source_operand" "gS")))] "" "%D1%S2%*lushr%R0");; Comparisons.(define_expand "cmpsi" [(set (cc0) (compare (match_operand:SI 0 "pj_source_operand" "gS") (match_operand:SI 1 "pj_source_operand" "gS")))] "" "{ pj_cmp_op0 = operands[0]; pj_cmp_op1 = operands[1]; pj_cmp_mode = SImode; DONE; }")(define_expand "cmpdi" [(set (cc0) (compare (match_operand:DI 0 "pj_source_operand" "gS") (match_operand:DI 1 "pj_source_operand" "gS")))] "" "{ pj_cmp_op0 = operands[0]; pj_cmp_op1 = operands[1]; pj_cmp_mode = DImode; DONE; }")(define_expand "cmpsf" [(set (cc0) (compare (match_operand:SF 0 "pj_source_operand" "gS") (match_operand:SF 1 "pj_source_operand" "gS")))] "" "{ pj_cmp_op0 = operands[0]; pj_cmp_op1 = operands[1]; pj_cmp_mode = SFmode; DONE; }")(define_expand "cmpdf" [(set (cc0) (compare (match_operand:DF 0 "pj_source_operand" "gS") (match_operand:DF 1 "pj_source_operand" "gS")))] "" "{ pj_cmp_op0 = operands[0]; pj_cmp_op1 = operands[1]; pj_cmp_mode = DFmode; DONE; }");; Conversions.(define_insn "truncsiqi2" [(set (match_operand:QI 0 "nonimmediate_operand" "=gD") (truncate:QI (match_operand:SI 1 "pj_source_operand" "gS")))] "" "%S1%*%R0")(define_insn "truncsihi2" [(set (match_operand:HI 0 "nonimmediate_operand" "=gD") (truncate:HI (match_operand:SI 1 "pj_source_operand" "gS")))] "" "%S1%*i2c%R0")(define_insn "truncdisi2" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (truncate:SI (match_operand:DI 1 "pj_source_operand" "gS")))] "" "%D1%*l2i%R0")(define_insn "fix_truncsfsi2" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (fix:SI (match_operand:SF 1 "pj_source_operand" "gS")))] "" "%S1%*f2i%R0")(define_insn "fix_truncsfdi2" [(set (match_operand:DI 0 "nonimmediate_operand" "=gD") (fix:DI (match_operand:SF 1 "pj_source_operand" "gS")))] "" "%S1%*f2l%R0")(define_insn "truncdfsf2" [(set (match_operand:SF 0 "nonimmediate_operand" "=gD") (float_truncate:SF (match_operand:DF 1 "pj_source_operand" "gS")))] "" "%D1%*d2f%R0")(define_insn "fix_truncdfsi2" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (fix:SI (match_operand:DF 1 "pj_source_operand" "gS")))] "" "%D1%*d2i%R0")(define_insn "fix_truncdfdi2" [(set (match_operand:DI 0 "nonimmediate_operand" "=gD") (fix:DI (match_operand:DF 1 "pj_source_operand" "gS")))] "" "%D1%*d2l%R0")(define_insn "floatsisf2" [(set (match_operand:SF 0 "nonimmediate_operand" "=gD") (float:SF (match_operand:SI 1 "pj_source_operand" "gS")))] "" "%S1%*i2f%R0")(define_insn "floatsidf2" [(set (match_operand:DF 0 "nonimmediate_operand" "=gD") (float:DF (match_operand:SI 1 "pj_source_operand" "gS")))] "" "%S1%*i2d%R0")(define_insn "floatdisf2" [(set (match_operand:SF 0 "nonimmediate_operand" "=gD") (float:SF (match_operand:DI 1 "pj_source_operand" "gS")))] "" "%D1%*l2f%R0")(define_insn "floatdidf2" [(set (match_operand:DF 0 "nonimmediate_operand" "=gD") (float:DF (match_operand:DI 1 "pj_source_operand" "gS")))] "" "%D1%*l2d%R0");; Zero-extend move instructions.(define_insn "zero_extendsidi2" [(set (match_operand:DI 0 "nonimmediate_operand" "=gD") (zero_extend:DI (match_operand:SI 1 "pj_source_operand" "gS")))] "" "%P1%R0")(define_insn "zero_extendhisi2" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (zero_extend:SI (match_operand:HI 1 "pj_source_operand" "gS")))] "" "%S1%*i2c%R0")(define_insn "zero_extendqisi2" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (zero_extend:SI (match_operand:QI 1 "pj_source_operand" "gS")))] "" "%S1%*sipush 0xff%*iand%R0");; Conditional branch instructions.(define_expand "beq" [(set (pc) (if_then_else (match_op_dup 3 [(match_dup 1) (match_dup 2)])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -