📄 pj.md
字号:
(label_ref (match_operand 0 "" "")) (pc)))] "" "operands[3] = gen_rtx (EQ, pj_cmp_mode); operands[1] = pj_cmp_op0; operands[2] = pj_cmp_op1;")(define_expand "bne" [(set (pc) (if_then_else (match_op_dup 3 [(match_dup 1) (match_dup 2)]) (label_ref (match_operand 0 "" "")) (pc)))] "" "operands[3] = gen_rtx (NE, pj_cmp_mode); operands[1] = pj_cmp_op0; operands[2] = pj_cmp_op1;")(define_expand "bgt" [(set (pc) (if_then_else (match_op_dup 3 [(match_dup 1) (match_dup 2)]) (label_ref (match_operand 0 "" "")) (pc)))] "" "operands[3] = gen_rtx (GT, pj_cmp_mode); operands[1] = pj_cmp_op0; operands[2] = pj_cmp_op1;")(define_expand "blt" [(set (pc) (if_then_else (match_op_dup 3 [(match_dup 1) (match_dup 2)]) (label_ref (match_operand 0 "" "")) (pc)))] "" "operands[3] = gen_rtx (LT, pj_cmp_mode); operands[1] = pj_cmp_op0; operands[2] = pj_cmp_op1;")(define_expand "bge" [(set (pc) (if_then_else (match_op_dup 3 [(match_dup 1) (match_dup 2)]) (label_ref (match_operand 0 "" "")) (pc)))] "" "operands[3] = gen_rtx (GE, pj_cmp_mode); operands[1] = pj_cmp_op0; operands[2] = pj_cmp_op1;")(define_expand "ble" [(set (pc) (if_then_else (match_op_dup 3 [(match_dup 1) (match_dup 2)]) (label_ref (match_operand 0 "" "")) (pc)))] "" "operands[3] = gen_rtx (LE, pj_cmp_mode); operands[1] = pj_cmp_op0; operands[2] = pj_cmp_op1;")(define_expand "bgtu" [(set (pc) (if_then_else (match_op_dup 3 [(match_dup 1) (match_dup 2)]) (label_ref (match_operand 0 "" "")) (pc)))] "" "operands[3] = gen_rtx (GTU, pj_cmp_mode); operands[1] = pj_cmp_op0; operands[2] = pj_cmp_op1;")(define_expand "bltu" [(set (pc) (if_then_else (match_op_dup 3 [(match_dup 1) (match_dup 2)]) (label_ref (match_operand 0 "" "")) (pc)))] "" "operands[3] = gen_rtx (LTU, pj_cmp_mode); operands[1] = pj_cmp_op0; operands[2] = pj_cmp_op1;")(define_expand "bgeu" [(set (pc) (if_then_else (match_op_dup 3 [(match_dup 1) (match_dup 2)]) (label_ref (match_operand 0 "" "")) (pc)))] "" "operands[3] = gen_rtx (GEU, pj_cmp_mode); operands[1] = pj_cmp_op0; operands[2] = pj_cmp_op1;")(define_expand "bleu" [(set (pc) (if_then_else (match_op_dup 3 [(match_dup 1) (match_dup 2)]) (label_ref (match_operand 0 "" "")) (pc)))] "" "operands[3] = gen_rtx (LEU, pj_cmp_mode); operands[1] = pj_cmp_op0; operands[2] = pj_cmp_op1;")(define_insn "*bop" [(set (pc) (if_then_else (match_operand:SI 0 "pj_source_operand" "gS") (label_ref (match_operand 1 "" "")) (pc)))] "" "%S0%*ifne %1")(define_insn "*rev_bop" [(set (pc) (if_then_else (match_operand:SI 0 "pj_source_operand" "gS") (pc) (label_ref (match_operand 1 "" ""))))] "" "%S0%*ifeq %1")(define_insn "*blopsi" [(set (pc) (if_then_else (match_operator:SI 3 "pj_signed_comparison_operator" [(match_operand:SI 0 "pj_source_operand" "gS,gS") (match_operand:SI 1 "pj_source_operand" "K,gS")]) (label_ref (match_operand 2 "" "")) (pc)))] "" "@ %S0%*if%Y3 %2 %S0%S1%*if_icmp%Y3 %2")(define_insn "*rev_blopsi" [(set (pc) (if_then_else (match_operator:SI 3 "pj_signed_comparison_operator" [(match_operand:SI 0 "pj_source_operand" "gS,gS") (match_operand:SI 1 "pj_source_operand" "K,gS")]) (pc) (label_ref (match_operand 2 "" ""))))] "" "@ %S0%*if%Z3 %2 %S0%S1%*if_icmp%Z3 %2")(define_insn "*bluopsi" [(set (pc) (if_then_else (match_operator:SI 3 "pj_unsigned_comparison_operator" [(match_operand:SI 0 "pj_source_operand" "gS") (match_operand:SI 1 "pj_source_operand" "gS")]) (label_ref (match_operand 2 "" "")) (pc)))] "" "%S0%S1%*iucmp%*if%Y3 %2")(define_insn "*rev_bluopsi" [(set (pc) (if_then_else (match_operator:SI 3 "pj_unsigned_comparison_operator" [(match_operand:SI 0 "pj_source_operand" "gS") (match_operand:SI 1 "pj_source_operand" "gS")]) (pc) (label_ref (match_operand 2 "" ""))))] "" "%S0%S1%*iucmp%*if%Z3 %2")(define_insn "*blopdi" [(set (pc) (if_then_else (match_operator:DI 3 "pj_signed_comparison_operator" [(match_operand:DI 0 "pj_source_operand" "gS") (match_operand:DI 1 "pj_source_operand" "gS")]) (label_ref (match_operand 2 "" "")) (pc)))] "" "%D0%D1%*lcmp%*if%Y3 %2")(define_insn "*rev_blopdi" [(set (pc) (if_then_else (match_operator:DI 3 "pj_signed_comparison_operator" [(match_operand:DI 0 "pj_source_operand" "gS") (match_operand:DI 1 "pj_source_operand" "gS")]) (pc) (label_ref (match_operand 2 "" ""))))] "" "%D0%D1%*lcmp%*if%Z3 %2")(define_insn "*bluopdi" [(set (pc) (if_then_else (match_operator:DI 3 "pj_unsigned_comparison_operator" [(match_operand:DI 0 "pj_source_operand" "gS") (match_operand:DI 1 "pj_source_operand" "gS")]) (label_ref (match_operand 2 "" "")) (pc)))] "" "%D0%D1%*ipush __pjucmpdi2%*bipush 6%*call%*if%Y3 %2")(define_insn "*rev_bluopdi" [(set (pc) (if_then_else (match_operator:DI 3 "pj_unsigned_comparison_operator" [(match_operand:DI 0 "pj_source_operand" "gS") (match_operand:DI 1 "pj_source_operand" "gS")]) (pc) (label_ref (match_operand 2 "" ""))))] "" "%D0%D1%*ipush __pjucmpdi2%*bipush 6%*call%*if%Z3 %2")(define_insn "*blopsf" [(set (pc) (if_then_else (match_operator:SF 3 "comparison_operator" [(match_operand:SF 0 "pj_source_operand" "gS") (match_operand:SF 1 "pj_source_operand" "gS")]) (label_ref (match_operand 2 "" "")) (pc)))] "" "%S0%S1%*fcmp%X3%*if%Y3 %2")(define_insn "*rev_bluopsf" [(set (pc) (if_then_else (match_operator:SF 3 "comparison_operator" [(match_operand:SF 0 "pj_source_operand" "gS") (match_operand:SF 1 "pj_source_operand" "gS")]) (pc) (label_ref (match_operand 2 "" ""))))] "" "%S0%S1%*fcmp%X3%*if%Z3 %2")(define_insn "*blopdf" [(set (pc) (if_then_else (match_operator:DF 3 "comparison_operator" [(match_operand:DF 0 "pj_source_operand" "gS") (match_operand:DF 1 "pj_source_operand" "gS")]) (label_ref (match_operand 2 "" "")) (pc)))] "" "%D0%D1%*dcmp%X3%*if%Y3 %2")(define_insn "*rev_bluopdf" [(set (pc) (if_then_else (match_operator:DF 3 "comparison_operator" [(match_operand:DF 0 "pj_source_operand" "gS") (match_operand:DF 1 "pj_source_operand" "gS")]) (pc) (label_ref (match_operand 2 "" ""))))] "" "%D0%D1%*dcmp%X3%*if%Z3 %2");; call instructions(define_insn "pj_call" [(call (mem:QI (match_operand:SI 0 "pj_source_operand" "gS")) (match_operand:SI 1 "immediate_operand" "i"))] "" "%C0%E1%S0%S1%*call")(define_insn "pj_call_value" [(set (match_operand 0 "nonimmediate_operand" "=gD") (call (mem:QI (match_operand:SI 1 "pj_source_operand" "gS")) (match_operand:SI 2 "immediate_operand" "i")))] "" "%C1%E2%S1%S2%*call")(define_expand "call" [(call (match_operand:SI 0 "pj_source_operand" "gS") (match_operand:SI 1 "immediate_operand" "i")) (use (match_operand:SI 2 "register_operand" "r")) (use (match_operand:SI 3 "" ""))] "" "{ emit_call_insn (gen_pj_call (XEXP (operands[0], 0), pj_workout_arg_words (operands[1], operands[2]))); DONE; }")(define_expand "call_value" [(set (match_operand:SI 0 "nonimmediate_operand" "gS") (call (match_operand:SI 1 "pj_source_operand" "gS") (match_operand:SI 2 "immediate_operand" "i"))) (use (match_operand:SI 3 "register_operand" "r")) (use (match_operand:SI 4 "" ""))] "" "{ emit_call_insn (gen_pj_call_value (operands[0], XEXP (operands[1], 0), pj_workout_arg_words (operands[2], operands[3]))); DONE; }");; No-op instruction.(define_insn "nop" [(const_int 0)] "" "nop");; Jump instructions(define_insn "jump" [(set (pc) (label_ref (match_operand 0 "" "")))] "" "%*goto %l0")(define_insn "indirect_jump" [(set (pc) (match_operand:SI 0 "pj_source_operand" "gS"))] "" "%S0%*write_pc")(define_insn "casesi" [(set (pc) (if_then_else (leu (minus:SI (match_operand:SI 0 "pj_source_operand" "gS") (match_operand:SI 1 "immediate_operand" "i")) (match_operand:SI 2 "immediate_operand" "i")) (plus:SI (sign_extend:SI (mem:SI (plus:SI (pc) (mult:SI (minus:SI (match_dup 0) (match_dup 1)) (const_int 4))))) (label_ref (match_operand 3 "" ""))) (label_ref (match_operand 4 "" ""))))] "" "%S0\\n%3i:%*tableswitch\\n\\t%*.align 2%*.long %4-%3i%*.long %1%*.long %1+%2");; Sign-extend move instructions.(define_insn "extendsfdf2" [(set (match_operand:DF 0 "nonimmediate_operand" "=gD") (float_extend:DF (match_operand:SF 1 "pj_source_operand" "gS")))] "" "%S1%*f2d%R0")(define_insn "extendhisi2" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (sign_extend:SI (match_operand:HI 1 "pj_source_operand" "gS")))] "" "%S1%*bipush 16%*ishl%*bipush 16%*ishr%R0")(define_insn "extendqisi2" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (sign_extend:SI (match_operand:QI 1 "pj_source_operand" "gS")))] "" "%S1%*bipush 24%*ishl%*bipush 24%*ishr%R0")(define_insn "extendqihi2" [(set (match_operand:HI 0 "nonimmediate_operand" "=gD") (sign_extend:HI (match_operand:QI 1 "pj_source_operand" "gS")))] "" "%S1%*bipush 24%*ishl%*bipush 24%*ishr%R0")(define_insn "extendsidi2" [(set (match_operand:DI 0 "nonimmediate_operand" "=gD") (sign_extend:DI (match_operand:SI 1 "pj_source_operand" "gS")))] "" "%S1%*i2l%R0");; non local control flow.(define_expand "save_stack_nonlocal" [(set (match_operand 0 "nonimmediate_operand" "=gD") (match_operand 1 "pj_source_operand" "gS"))] "" "{ rtx reg = force_reg (Pmode, XEXP (operands[0], 0)); rtx addr0 = gen_rtx_MEM (SImode,reg); rtx addr1 = gen_rtx_MEM (SImode, gen_rtx_PRE_INC (SImode, reg)); rtx addr2 = gen_rtx_MEM (SImode, gen_rtx_PRE_INC (SImode, reg)); emit_move_insn (addr0, gen_rtx_REG (SImode, 64)); emit_move_insn (addr1, gen_rtx_REG (SImode, 72)); emit_move_insn (addr2, gen_rtx_REG (SImode, 73)); DONE; }")(define_insn "restore_stack_nonlocal_helper" [(set (reg:SI 64) (mem:SI (match_operand:SI 0 "register_operand" "r"))) (set (reg:SI 72) (mem:SI (pre_inc:SI (match_dup 0)))) (set (reg:SI 73) (mem:SI (pre_inc:SI (match_dup 0))))] "" "%S0%*load_word%*write_global0%*iinc %J0,4%S0%*load_word%*iinc %J0,4%S0%*load_word%*write_vars%*write_optop")(define_expand "restore_stack_nonlocal" [(set (match_operand 0 "nonimmediate_operand" "=gD") (match_operand 1 "pj_source_operand" "gS"))] "" "{ rtx reg = force_reg (Pmode, XEXP (operands[1], 0)); emit_insn (gen_restore_stack_nonlocal_helper (reg)); DONE; }")(define_insn "nonlocal_goto_helper" [(set (reg:SI 64) (mem:SI (match_operand:SI 0 "register_operand" "r"))) (set (reg:SI 72) (mem:SI (pre_inc:SI (match_dup 0)))) (set (reg:SI 73) (mem:SI (pre_inc:SI (match_dup 0)))) (set (pc) (match_operand:SI 1 "pj_source_operand" "gS"))] "" "%S0%*load_word%*write_global0%*iinc %J0,4%*%S0%*load_word%*%S1%*iinc %J0,4%*%S0%*load_word%*iinc %J0,4%*write_vars%*return0")(define_expand "nonlocal_goto" [(match_operand:SI 0 "pj_source_operand" "") (match_operand:SI 1 "pj_source_operand" "") (match_operand:SI 2 "pj_source_operand" "") (match_operand:SI 3 "" "")] "" "{ operands[2] = force_reg (Pmode, XEXP (operands[2], 0)); emit_move_insn (hard_frame_pointer_rtx, operands[0]); emit_insn (gen_rtx_USE (VOIDmode, stack_pointer_rtx)); emit_insn (gen_nonlocal_goto_helper (operands[2], operands[1])); emit_barrier (); DONE; }");; Function overhead.(define_expand "prologue" [(const_int 0)] "" "pj_expand_prologue (); DONE;")(define_expand "epilogue" [(return)] "" "pj_expand_epilogue();")(define_insn "return" [(return)] "reload_completed" "%*return0")(define_insn "tm_frame" [(use (match_operand:SI 0 "pj_source_operand" "gS")) (set (reg:SI 73) (minus:SI (reg:SI 73) (mult:SI (match_operand:SI 1 "pj_source_operand" "gS") (const_int 4))))] "" "%S0%S1%*tm_frame")(define_insn "varargs" [(unspec_volatile [(match_operand:SI 0 "pj_source_operand" "gS")] 10)] "" "%S0%*jsr_w __vhelper")(define_insn "varargs_finish" [(unspec_volatile [(match_operand:SI 0 "pj_source_operand" "gS")] 11)] "" "%*iload %J0%*write_global0");; Extensions to picoJava.(define_insn "strlensi" [(set (match_operand:SI 0 "nonimmediate_operand" "=g") (unspec:SI [(match_operand:BLK 1 "memory_operand" "gS") (match_operand:QI 2 "pj_source_operand" "gS") (match_operand:SI 3 "immediate_operand" "gS")] 0)) (clobber (reg:SI 65))] "TARGET_TM_EXTENSIONS" "%I1%S2%S3%*iconst_0%*write_global1%*tm_strlensi%R0")(define_insn "movstrsi" [(set (match_operand:BLK 0 "memory_operand" "=gS") (match_operand:BLK 1 "memory_operand" "gS")) (use (match_operand:SI 2 "pj_source_operand" "gS")) (use (match_operand:SI 3 "pj_source_operand" "gS")) (clobber (reg:SI 65))] "TARGET_TM_EXTENSIONS" "%I0%I1%S2%S3%*iconst_0%*write_global1%*tm_movstrsi")(define_insn "clrstrsi" [(set (match_operand:BLK 0 "memory_operand" "=gS") (const_int 0)) (use (match_operand:SI 1 "pj_source_operand" "gS")) (use (match_operand:SI 2 "pj_source_operand" "gS")) (clobber (reg:SI 65))] "TARGET_TM_EXTENSIONS" "%I0%*iconst_0%S1%S2%*iconst_0%*write_global1%*tm_memsetsi")(define_insn "cmpstrsi" [(set (match_operand:SI 0 "nonimmediate_operand" "=gD") (compare:SI (match_operand:BLK 1 "memory_operand" "g") (match_operand:BLK 2 "memory_operand" "g"))) (use (match_operand:SI 3 "pj_source_operand" "gS")) (use (match_operand:SI 4 "pj_source_operand" "gS")) (clobber (reg:SI 65))] "TARGET_TM_EXTENSIONS" "%I1%I2%S3%S4%*iconst_0%*write_global1%*tm_cmpstrsi%R0")
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -