📄 i370.md
字号:
mvs_check_page (0, 4, 0); return \"STM %1,%N1,%0\"; } mvs_check_page (0, 6, 0); return \"MVC %O0(8,%R0),%1\";}")(define_insn "movdi" [(set (match_operand:DI 0 "general_operand" "=dm") (match_operand:DI 1 "general_operand" "dim*fF"))] "" "*{ check_label_emit (); if (REG_P (operands[0])) { if (FP_REG_P (operands[1])) { mvs_check_page (0, 8, 0); return \"STD %1,140(,13)\;LM %0,%N0,140(13)\"; } if (REG_P (operands[1])) { mvs_check_page (0, 4, 0); return \"LR %0,%1\;LR %N0,%N1\"; } if (operands[1] == const0_rtx) { CC_STATUS_INIT; mvs_check_page (0, 4, 0); return \"SLR %0,%0\;SLR %N0,%N0\"; } if (GET_CODE (operands[1]) == CONST_INT && (unsigned) INTVAL (operands[1]) < 4096) { CC_STATUS_INIT; mvs_check_page (0, 6, 0); return \"SLR %0,%0\;LA %N0,%c1\"; } if (GET_CODE (operands[1]) == CONST_INT) { CC_STATUS_SET (operands[0], operands[1]); mvs_check_page (0, 8, 0); return \"L %0,%1\;SRDA %0,32\"; } mvs_check_page (0, 4, 0); return \"LM %0,%N0,%1\"; } else if (FP_REG_P (operands[1])) { mvs_check_page (0, 4, 0); return \"STD %1,%0\"; } mvs_check_page (0, 4, 0); return \"STM %1,%N1,%0\";}");; movsi instruction pattern(s).;(define_insn "" [(set (match_operand:SI 0 "r_or_s_operand" "=dm,dm") (match_operand:SI 1 "r_or_s_operand" "dim,*fF"))] "TARGET_CHAR_INSTRUCTIONS" "*{ check_label_emit (); if (REG_P (operands[0])) { if (FP_REG_P (operands[1])) { mvs_check_page (0, 8, 0); return \"STE %1,140(,13)\;L %0,140(,13)\"; } if (REG_P (operands[1])) { mvs_check_page (0, 2, 0); return \"LR %0,%1\"; } if (operands[1] == const0_rtx) { CC_STATUS_INIT; mvs_check_page (0, 2, 0); return \"SLR %0,%0\"; } if (GET_CODE (operands[1]) == CONST_INT && (unsigned) INTVAL (operands[1]) < 4096) { mvs_check_page (0, 4, 0); return \"LA %0,%c1\"; } mvs_check_page (0, 4, 0); return \"L %0,%1\"; } else if (FP_REG_P (operands[1])) { mvs_check_page (0, 4, 0); return \"STE %1,%0\"; } else if (REG_P (operands[1])) { mvs_check_page (0, 4, 0); return \"ST %1,%0\"; } mvs_check_page (0, 6, 0); return \"MVC %O0(4,%R0),%1\";}")(define_insn "movsi" [(set (match_operand:SI 0 "general_operand" "=d,dm") (match_operand:SI 1 "general_operand" "dimF,*fd"))] "" "*{ check_label_emit (); if (REG_P (operands[0])) { if (FP_REG_P (operands[1])) { mvs_check_page (0, 8, 0); return \"STE %1,140(,13)\;L %0,140(,13)\"; } if (REG_P (operands[1])) { mvs_check_page (0, 2, 0); return \"LR %0,%1\"; } if (operands[1] == const0_rtx) { CC_STATUS_INIT; mvs_check_page (0, 2, 0); return \"SLR %0,%0\"; } if (GET_CODE (operands[1]) == CONST_INT && (unsigned) INTVAL (operands[1]) < 4096) { mvs_check_page (0, 4, 0); return \"LA %0,%c1\"; } mvs_check_page (0, 4, 0); return \"L %0,%1\"; } else if (FP_REG_P (operands[1])) { mvs_check_page (0, 4, 0); return \"STE %1,%0\"; } mvs_check_page (0, 4, 0); return \"ST %1,%0\";}");(define_expand "movsi"; [(set (match_operand:SI 0 "general_operand" "=d,dm"); (match_operand:SI 1 "general_operand" "dimF,*fd"))]; ""; ";{; rtx op0, op1;;; op0 = operands[0];; if (GET_CODE (op0) == CONST; && GET_CODE (XEXP (XEXP (op0, 0), 0)) == SYMBOL_REF; && SYMBOL_REF_FLAG (XEXP (XEXP (op0, 0), 0))); {; op0 = gen_rtx (MEM, SImode, copy_to_mode_reg (SImode, XEXP (op0, 0)));; };; op1 = operands[1];; if (GET_CODE (op1) == CONST; && GET_CODE (XEXP (XEXP (op1, 0), 0)) == SYMBOL_REF; && SYMBOL_REF_FLAG (XEXP (XEXP (op1, 0), 0))); {; op1 = gen_rtx (MEM, SImode, copy_to_mode_reg (SImode, XEXP (op1, 0)));; };; emit_insn (gen_rtx (SET, VOIDmode, op0, op1));; DONE;;}");; movhi instruction pattern(s).;(define_insn "" [(set (match_operand:HI 0 "r_or_s_operand" "=g") (match_operand:HI 1 "r_or_s_operand" "g"))] "TARGET_CHAR_INSTRUCTIONS" "*{ check_label_emit (); if (REG_P (operands[0])) { if (REG_P (operands[1])) { mvs_check_page (0, 2, 0); return \"LR %0,%1\"; } if (operands[1] == const0_rtx) { CC_STATUS_INIT; mvs_check_page (0, 2, 0); return \"SLR %0,%0\"; } if (GET_CODE (operands[1]) == CONST_INT && (unsigned) INTVAL (operands[1]) < 4096) { mvs_check_page (0, 4, 0); return \"LA %0,%c1\"; } if (GET_CODE (operands[1]) == CONST_INT) { mvs_check_page (0, 4, 0); return \"LH %0,%H1\"; } mvs_check_page (0, 4, 0); return \"LH %0,%1\"; } else if (REG_P (operands[1])) { mvs_check_page (0, 4, 0); return \"STH %1,%0\"; } if (GET_CODE (operands[1]) == CONST_INT) { mvs_check_page (0, 6, 0); return \"MVC %O0(2,%R0),%H1\"; } mvs_check_page (0, 6, 0); return \"MVC %O0(2,%R0),%1\";}")(define_insn "movhi" [(set (match_operand:HI 0 "general_operand" "=d,m") (match_operand:HI 1 "general_operand" "g,d"))] "" "*{ check_label_emit (); if (REG_P (operands[0])) { if (REG_P (operands[1])) { mvs_check_page (0, 2, 0); return \"LR %0,%1\"; } if (operands[1] == const0_rtx) { CC_STATUS_INIT; mvs_check_page (0, 2, 0); return \"SLR %0,%0\"; } if (GET_CODE (operands[1]) == CONST_INT && (unsigned) INTVAL (operands[1]) < 4096) { mvs_check_page (0, 4, 0); return \"LA %0,%c1\"; } if (GET_CODE (operands[1]) == CONST_INT) { mvs_check_page (0, 4, 0); return \"LH %0,%H1\"; } mvs_check_page (0, 4, 0); return \"LH %0,%1\"; } mvs_check_page (0, 4, 0); return \"STH %1,%0\";}");; movqi instruction pattern(s).;(define_insn "" [(set (match_operand:QI 0 "r_or_s_operand" "=g") (match_operand:QI 1 "r_or_s_operand" "g"))] "TARGET_CHAR_INSTRUCTIONS" "*{ check_label_emit (); if (REG_P (operands[0])) { if (REG_P (operands[1])) { mvs_check_page (0, 2, 0); return \"LR %0,%1\"; } if (operands[1] == const0_rtx) { CC_STATUS_INIT; mvs_check_page (0, 2, 0); return \"SLR %0,%0\"; } if (GET_CODE (operands[1]) == CONST_INT) { if (INTVAL (operands[1]) >= 0) { mvs_check_page (0, 4, 0); return \"LA %0,%c1\"; } mvs_check_page (0, 4, 0); return \"L %0,=F'%c1'\"; } mvs_check_page (0, 4, 0); return \"IC %0,%1\"; } else if (REG_P (operands[1])) { mvs_check_page (0, 4, 0); return \"STC %1,%0\"; } else if (GET_CODE (operands[1]) == CONST_INT) { mvs_check_page (0, 4, 0); return \"MVI %0,%B1\"; } mvs_check_page (0, 6, 0); return \"MVC %O0(1,%R0),%1\";}")(define_insn "movqi" [(set (match_operand:QI 0 "general_operand" "=d,m") (match_operand:QI 1 "general_operand" "g,d"))] "" "*{ check_label_emit (); if (REG_P (operands[0])) { if (REG_P (operands[1])) { mvs_check_page (0, 2, 0); return \"LR %0,%1\"; } if (operands[1] == const0_rtx) { CC_STATUS_INIT; mvs_check_page (0, 2, 0); return \"SLR %0,%0\"; } if (GET_CODE (operands[1]) == CONST_INT) { if (INTVAL (operands[1]) >= 0) { mvs_check_page (0, 4, 0); return \"LA %0,%c1\"; } mvs_check_page (0, 4, 0); return \"L %0,=F'%c1'\"; } mvs_check_page (0, 4, 0); return \"IC %0,%1\"; } mvs_check_page (0, 4, 0); return \"STC %1,%0\";}");; movestrictqi instruction pattern(s).;(define_insn "movestrictqi" [(set (strict_low_part (match_operand:QI 0 "general_operand" "=d")) (match_operand:QI 1 "general_operand" "g"))] "" "*{ check_label_emit (); if (REG_P (operands[1])) { mvs_check_page (0, 8, 0); return \"STC %1,140(,13)\;IC %0,140(,13)\"; } mvs_check_page (0, 4, 0); return \"IC %0,%1\";}");; movstricthi instruction pattern(s).;(define_insn "" [(set (strict_low_part (match_operand:HI 0 "register_operand" "=d")) (match_operand:HI 1 "r_or_s_operand" "g"))] "" "*{ check_label_emit (); if (REG_P (operands[1])) { mvs_check_page (0, 8, 0); return \"STH %1,140(,13)\;ICM %0,3,140(13)\"; } else if (GET_CODE (operands[1]) == CONST_INT) { mvs_check_page (0, 4, 0); return \"ICM %0,3,%H1\"; } mvs_check_page (0, 4, 0); return \"ICM %0,3,%1\";}")(define_insn "movestricthi" [(set (strict_low_part (match_operand:HI 0 "general_operand" "=dm")) (match_operand:HI 1 "general_operand" "d"))] "" "*{ check_label_emit (); if (REG_P (operands[0])) { mvs_check_page (0, 8, 0); return \"STH %1,140(,13)\;ICM %0,3,140(13)\"; } mvs_check_page (0, 4, 0); return \"STH %1,%0\";}");; movdf instruction pattern(s).;(define_insn "" [(set (match_operand:DF 0 "r_or_s_operand" "=fm,fm,*dm") (match_operand:DF 1 "r_or_s_operand" "fmF,*dm,fmF"))] "TARGET_CHAR_INSTRUCTIONS" "*{ check_label_emit (); if (FP_REG_P (operands[0])) { if (FP_REG_P (operands[1])) { mvs_check_page (0, 2, 0); return \"LDR %0,%1\"; } if (REG_P (operands[1])) { mvs_check_page (0, 8, 0); return \"STM %1,%N1,140(13)\;LD %0,140(,13)\"; } if (operands[1] == const0_rtx) { CC_STATUS_SET (operands[0], operands[1]); mvs_check_page (0, 2, 0); return \"SDR %0,%0\"; } mvs_check_page (0, 4, 0); return \"LD %0,%1\"; } if (REG_P (operands[0])) { if (FP_REG_P (operands[1])) { mvs_check_page (0, 12, 0); return \"STD %1,140(,13)\;LM %0,%N0,140(13)\"; } mvs_check_page (0, 4, 0); return \"LM %0,%N0,%1\"; } else if (FP_REG_P (operands[1])) { mvs_check_page (0, 4, 0); return \"STD %1,%0\"; } else if (REG_P (operands[1])) { mvs_check_page (0, 4, 0); return \"STM %1,%N1,%0\"; } mvs_check_page (0, 6, 0); return \"MVC %O0(8,%R0),%1\";}")(define_insn "movdf" [(set (match_operand:DF 0 "general_operand" "=f,fm,m,*d") (match_operand:DF 1 "general_operand" "fmF,*d,f,fmF"))] "" "*{ check_label_emit (); if (FP_REG_P (operands[0])) { if (FP_REG_P (operands[1])) { mvs_check_page (0, 2, 0); return \"LDR %0,%1\"; } if (REG_P (operands[1])) { mvs_check_page (0, 8, 0); return \"STM %1,%N1,140(13)\;LD %0,140(,13)\"; } if (operands[1] == const0_rtx) { CC_STATUS_SET (operands[0], operands[1]); mvs_check_page (0, 2, 0); return \"SDR %0,%0\"; } mvs_check_page (0, 4, 0); return \"LD %0,%1\"; } else if (REG_P (operands[0])) { if (FP_REG_P (operands[1])) { mvs_check_page (0, 12, 0); return \"STD %1,140(,13)\;LM %0,%N0,140(13)\"; } mvs_check_page (0, 4, 0); return \"LM %0,%N0,%1\"; } else if (FP_REG_P (operands[1])) { mvs_check_page (0, 4, 0); return \"STD %1,%0\"; } mvs_check_page (0, 4, 0); return \"STM %1,%N1,%0\";}");; movsf instruction pattern(s).;(define_insn "" [(set (match_operand:SF 0 "r_or_s_operand" "=fm,fm,*dm") (match_operand:SF 1 "r_or_s_operand" "fmF,*dm,fmF"))] "TARGET_CHAR_INSTRUCTIONS" "*{ check_label_emit (); if (FP_REG_P (operands[0])) { if (FP_REG_P (operands[1])) { mvs_check_page (0, 2, 0); return \"LER %0,%1\"; } if (REG_P (operands[1])) { mvs_check_page (0, 8, 0); return \"ST %1,140(,13)\;LE %0,140(,13)\"; } if (operands[1] == const0_rtx) { CC_STATUS_SET (operands[0], operands[1]); mvs_check_page (0, 2, 0); return \"SER %0,%0\"; } mvs_check_page (0, 4, 0); return \"LE %0,%1\"; } else if (REG_P (operands[0])) { if (FP_REG_P (operands[1])) { mvs_check_page (0, 8, 0); return \"STE %1,140(,13)\;L %0,140(,13)\"; } mvs_check_page (0, 4, 0); return \"L %0,%1\"; } else if (FP_REG_P (operands[1])) { mvs_check_page (0, 4, 0); return \"STE %1,%0\"; } else if (REG_P (operands[1])) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -