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

📄 s390.md

📁 linux下编程用 编译软件
💻 MD
📖 第 1 页 / 共 5 页
字号:
  "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IBM_FLOAT"  "lt<xde>r\t%0,%0"   [(set_attr "op_type" "<RRe>")    (set_attr "type"  "fsimp<mode>")])(define_insn "*cmp<mode>_ccs"  [(set (reg CC_REGNUM)        (compare (match_operand:FPR 0 "register_operand" "f,f")                 (match_operand:FPR 1 "general_operand" "f,<Rf>")))]  "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT"  "@   c<xde>br\t%0,%1   c<xde>b\t%0,%1"   [(set_attr "op_type" "RRE,RXE")    (set_attr "type"  "fsimp<mode>")])(define_insn "*cmp<mode>_ccs_ibm"  [(set (reg CC_REGNUM)        (compare (match_operand:FPR 0 "register_operand" "f,f")                 (match_operand:FPR 1 "general_operand" "f,<Rf>")))]  "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IBM_FLOAT"  "@   c<xde>r\t%0,%1   c<xde>\t%0,%1"   [(set_attr "op_type" "<RRe>,<RXe>")    (set_attr "type"  "fsimp<mode>")]);;;;- Move instructions.;;;; movti instruction pattern(s).;(define_insn "movti"  [(set (match_operand:TI 0 "nonimmediate_operand" "=d,QS,d,o,Q")        (match_operand:TI 1 "general_operand" "QS,d,dPm,d,Q"))]  "TARGET_64BIT"  "@   lmg\t%0,%N0,%S1   stmg\t%1,%N1,%S0   #   #   #"  [(set_attr "op_type" "RSY,RSY,*,*,SS")   (set_attr "type" "lm,stm,*,*,*")])(define_split  [(set (match_operand:TI 0 "nonimmediate_operand" "")        (match_operand:TI 1 "general_operand" ""))]  "TARGET_64BIT && reload_completed   && s390_split_ok_p (operands[0], operands[1], TImode, 0)"  [(set (match_dup 2) (match_dup 4))   (set (match_dup 3) (match_dup 5))]{  operands[2] = operand_subword (operands[0], 0, 0, TImode);  operands[3] = operand_subword (operands[0], 1, 0, TImode);  operands[4] = operand_subword (operands[1], 0, 0, TImode);  operands[5] = operand_subword (operands[1], 1, 0, TImode);})(define_split  [(set (match_operand:TI 0 "nonimmediate_operand" "")        (match_operand:TI 1 "general_operand" ""))]  "TARGET_64BIT && reload_completed   && s390_split_ok_p (operands[0], operands[1], TImode, 1)"  [(set (match_dup 2) (match_dup 4))   (set (match_dup 3) (match_dup 5))]{  operands[2] = operand_subword (operands[0], 1, 0, TImode);  operands[3] = operand_subword (operands[0], 0, 0, TImode);  operands[4] = operand_subword (operands[1], 1, 0, TImode);  operands[5] = operand_subword (operands[1], 0, 0, TImode);})(define_split  [(set (match_operand:TI 0 "register_operand" "")        (match_operand:TI 1 "memory_operand" ""))]  "TARGET_64BIT && reload_completed   && !s_operand (operands[1], VOIDmode)"  [(set (match_dup 0) (match_dup 1))]{  rtx addr = operand_subword (operands[0], 1, 0, TImode);  s390_load_address (addr, XEXP (operands[1], 0));  operands[1] = replace_equiv_address (operands[1], addr);})(define_expand "reload_outti"  [(parallel [(match_operand:TI 0 "" "")              (match_operand:TI 1 "register_operand" "d")              (match_operand:DI 2 "register_operand" "=&a")])]  "TARGET_64BIT"{  gcc_assert (MEM_P (operands[0]));  s390_load_address (operands[2], find_replacement (&XEXP (operands[0], 0)));  operands[0] = replace_equiv_address (operands[0], operands[2]);  emit_move_insn (operands[0], operands[1]);  DONE;});; movdi instruction pattern(s).;(define_expand "movdi"  [(set (match_operand:DI 0 "general_operand" "")        (match_operand:DI 1 "general_operand" ""))]  ""{  /* Handle symbolic constants.  */  if (TARGET_64BIT && SYMBOLIC_CONST (operands[1]))    emit_symbolic_move (operands);})(define_insn "*movdi_larl"  [(set (match_operand:DI 0 "register_operand" "=d")        (match_operand:DI 1 "larl_operand" "X"))]  "TARGET_64BIT   && !FP_REG_P (operands[0])"  "larl\t%0,%1"   [(set_attr "op_type" "RIL")    (set_attr "type"    "larl")])(define_insn "*movdi_64extimm"  [(set (match_operand:DI 0 "nonimmediate_operand"                            "=d,d,d,d,d,d,d,d,d,d,d,m,!*f,!*f,!*f,!R,!T,d,t,Q,t,?Q")        (match_operand:DI 1 "general_operand"                            "K,N0HD0,N1HD0,N2HD0,N3HD0,Os,N0SD0,N1SD0,L,d,m,d,*f,R,T,*f,*f,t,d,t,Q,?Q"))]  "TARGET_64BIT && TARGET_EXTIMM"  "@   lghi\t%0,%h1   llihh\t%0,%i1   llihl\t%0,%i1   llilh\t%0,%i1   llill\t%0,%i1   lgfi\t%0,%1   llihf\t%0,%k1   llilf\t%0,%k1   lay\t%0,%a1   lgr\t%0,%1   lg\t%0,%1   stg\t%1,%0   ldr\t%0,%1   ld\t%0,%1   ldy\t%0,%1   std\t%1,%0   stdy\t%1,%0   #   #   stam\t%1,%N1,%S0   lam\t%0,%N0,%S1   #"  [(set_attr "op_type" "RI,RI,RI,RI,RI,RIL,RIL,RIL,RXY,RRE,RXY,RXY,                        RR,RX,RXY,RX,RXY,*,*,RS,RS,SS")   (set_attr "type" "*,*,*,*,*,*,*,*,la,lr,load,store,                     floaddf,floaddf,floaddf,fstoredf,fstoredf,*,*,*,*,*")])(define_insn "*movdi_64"  [(set (match_operand:DI 0 "nonimmediate_operand"                            "=d,d,d,d,d,d,d,d,m,!*f,!*f,!*f,!R,!T,d,t,Q,t,?Q")        (match_operand:DI 1 "general_operand"                            "K,N0HD0,N1HD0,N2HD0,N3HD0,L,d,m,d,*f,R,T,*f,*f,t,d,t,Q,?Q"))]  "TARGET_64BIT && !TARGET_EXTIMM"  "@   lghi\t%0,%h1   llihh\t%0,%i1   llihl\t%0,%i1   llilh\t%0,%i1   llill\t%0,%i1   lay\t%0,%a1   lgr\t%0,%1   lg\t%0,%1   stg\t%1,%0   ldr\t%0,%1   ld\t%0,%1   ldy\t%0,%1   std\t%1,%0   stdy\t%1,%0   #   #   stam\t%1,%N1,%S0   lam\t%0,%N0,%S1   #"  [(set_attr "op_type" "RI,RI,RI,RI,RI,RXY,RRE,RXY,RXY,                        RR,RX,RXY,RX,RXY,*,*,RS,RS,SS")   (set_attr "type" "*,*,*,*,*,la,lr,load,store,                     floaddf,floaddf,floaddf,fstoredf,fstoredf,*,*,*,*,*")])(define_split  [(set (match_operand:DI 0 "register_operand" "")        (match_operand:DI 1 "register_operand" ""))]  "TARGET_64BIT && ACCESS_REG_P (operands[1])"  [(set (match_dup 2) (match_dup 3))   (set (match_dup 0) (ashift:DI (match_dup 0) (const_int 32)))   (set (strict_low_part (match_dup 2)) (match_dup 4))]  "operands[2] = gen_lowpart (SImode, operands[0]);   s390_split_access_reg (operands[1], &operands[4], &operands[3]);")(define_split  [(set (match_operand:DI 0 "register_operand" "")        (match_operand:DI 1 "register_operand" ""))]  "TARGET_64BIT && ACCESS_REG_P (operands[0])   && dead_or_set_p (insn, operands[1])"  [(set (match_dup 3) (match_dup 2))   (set (match_dup 1) (lshiftrt:DI (match_dup 1) (const_int 32)))   (set (match_dup 4) (match_dup 2))]  "operands[2] = gen_lowpart (SImode, operands[1]);   s390_split_access_reg (operands[0], &operands[3], &operands[4]);")(define_split  [(set (match_operand:DI 0 "register_operand" "")        (match_operand:DI 1 "register_operand" ""))]  "TARGET_64BIT && ACCESS_REG_P (operands[0])   && !dead_or_set_p (insn, operands[1])"  [(set (match_dup 3) (match_dup 2))   (set (match_dup 1) (rotate:DI (match_dup 1) (const_int 32)))   (set (match_dup 4) (match_dup 2))   (set (match_dup 1) (rotate:DI (match_dup 1) (const_int 32)))]  "operands[2] = gen_lowpart (SImode, operands[1]);   s390_split_access_reg (operands[0], &operands[3], &operands[4]);")(define_insn "*movdi_31"  [(set (match_operand:DI 0 "nonimmediate_operand" "=d,d,Q,S,d,o,!*f,!*f,!*f,!R,!T,Q")        (match_operand:DI 1 "general_operand" "Q,S,d,d,dPm,d,*f,R,T,*f,*f,Q"))]  "!TARGET_64BIT"  "@   lm\t%0,%N0,%S1   lmy\t%0,%N0,%S1   stm\t%1,%N1,%S0   stmy\t%1,%N1,%S0   #   #   ldr\t%0,%1   ld\t%0,%1   ldy\t%0,%1   std\t%1,%0   stdy\t%1,%0   #"  [(set_attr "op_type" "RS,RSY,RS,RSY,*,*,RR,RX,RXY,RX,RXY,SS")   (set_attr "type" "lm,lm,stm,stm,*,*,floaddf,floaddf,floaddf,fstoredf,fstoredf,*")])(define_split  [(set (match_operand:DI 0 "nonimmediate_operand" "")        (match_operand:DI 1 "general_operand" ""))]  "!TARGET_64BIT && reload_completed   && s390_split_ok_p (operands[0], operands[1], DImode, 0)"  [(set (match_dup 2) (match_dup 4))   (set (match_dup 3) (match_dup 5))]{  operands[2] = operand_subword (operands[0], 0, 0, DImode);  operands[3] = operand_subword (operands[0], 1, 0, DImode);  operands[4] = operand_subword (operands[1], 0, 0, DImode);  operands[5] = operand_subword (operands[1], 1, 0, DImode);})(define_split  [(set (match_operand:DI 0 "nonimmediate_operand" "")        (match_operand:DI 1 "general_operand" ""))]  "!TARGET_64BIT && reload_completed   && s390_split_ok_p (operands[0], operands[1], DImode, 1)"  [(set (match_dup 2) (match_dup 4))   (set (match_dup 3) (match_dup 5))]{  operands[2] = operand_subword (operands[0], 1, 0, DImode);  operands[3] = operand_subword (operands[0], 0, 0, DImode);  operands[4] = operand_subword (operands[1], 1, 0, DImode);  operands[5] = operand_subword (operands[1], 0, 0, DImode);})(define_split  [(set (match_operand:DI 0 "register_operand" "")        (match_operand:DI 1 "memory_operand" ""))]  "!TARGET_64BIT && reload_completed   && !FP_REG_P (operands[0])   && !s_operand (operands[1], VOIDmode)"  [(set (match_dup 0) (match_dup 1))]{  rtx addr = operand_subword (operands[0], 1, 0, DImode);  s390_load_address (addr, XEXP (operands[1], 0));  operands[1] = replace_equiv_address (operands[1], addr);})(define_expand "reload_outdi"  [(parallel [(match_operand:DI 0 "" "")              (match_operand:DI 1 "register_operand" "d")              (match_operand:SI 2 "register_operand" "=&a")])]  "!TARGET_64BIT"{  gcc_assert (MEM_P (operands[0]));  s390_load_address (operands[2], find_replacement (&XEXP (operands[0], 0)));  operands[0] = replace_equiv_address (operands[0], operands[2]);  emit_move_insn (operands[0], operands[1]);  DONE;})(define_peephole2  [(set (match_operand:DI 0 "register_operand" "")        (mem:DI (match_operand 1 "address_operand" "")))]  "TARGET_64BIT   && !FP_REG_P (operands[0])   && GET_CODE (operands[1]) == SYMBOL_REF   && CONSTANT_POOL_ADDRESS_P (operands[1])   && get_pool_mode (operands[1]) == DImode   && legitimate_reload_constant_p (get_pool_constant (operands[1]))"  [(set (match_dup 0) (match_dup 2))]  "operands[2] = get_pool_constant (operands[1]);")(define_insn "*la_64"  [(set (match_operand:DI 0 "register_operand" "=d,d")        (match_operand:QI 1 "address_operand" "U,W"))]  "TARGET_64BIT"  "@   la\t%0,%a1   lay\t%0,%a1"  [(set_attr "op_type" "RX,RXY")   (set_attr "type"    "la")])(define_peephole2  [(parallel    [(set (match_operand:DI 0 "register_operand" "")          (match_operand:QI 1 "address_operand" ""))     (clobber (reg:CC CC_REGNUM))])]  "TARGET_64BIT   && preferred_la_operand_p (operands[1], const0_rtx)"  [(set (match_dup 0) (match_dup 1))]  "")(define_peephole2  [(set (match_operand:DI 0 "register_operand" "")        (match_operand:DI 1 "register_operand" ""))   (parallel    [(set (match_dup 0)          (plus:DI (match_dup 0)                   (match_operand:DI 2 "nonmemory_operand" "")))     (clobber (reg:CC CC_REGNUM))])]  "TARGET_64BIT   && !reg_overlap_mentioned_p (operands[0], operands[2])   && preferred_la_operand_p (operands[1], operands[2])"  [(set (match_dup 0) (plus:DI (match_dup 1) (match_dup 2)))]  "")(define_expand "reload_indi"  [(parallel [(match_operand:DI 0 "register_operand" "=a")              (match_operand:DI 1 "s390_plus_operand" "")              (match_operand:DI 2 "register_operand" "=&a")])]  "TARGET_64BIT"{  s390_expand_plus_operand (operands[0], operands[1], operands[2]);  DONE;});; movsi instruction pattern(s).;(define_expand "movsi"  [(set (match_operand:SI 0 "general_operand" "")        (match_operand:SI 1 "general_operand" ""))]  ""{  /* Handle symbolic constants.  */  if (!TARGET_64BIT && SYMBOLIC_CONST (operands[1]))    emit_symbolic_move (operands);})(define_insn "*movsi_larl"  [(set (match_operand:SI 0 "register_operand" "=d")        (match_operand:SI 1 "larl_operand" "X"))]  "!TARGET_64BIT && TARGET_CPU_ZARCH   && !FP_REG_P (operands[0])"  "larl\t%0,%1"   [(set_attr "op_type" "RIL")    (set_attr "type"    "larl")])(define_insn "*movsi_zarch"  [(set (match_operand:SI 0 "nonimmediate_operand"			    "=d,d,d,d,d,d,d,d,R,T,!*f,!*f,!*f,!R,!T,d,t,Q,t,?Q")        (match_operand:SI 1 "general_operand"			    "K,N0HS0,N1HS0,Os,L,d,R,T,d,d,*f,R,T,*f,*f,t,d,t,Q,?Q"))]  "TARGET_ZARCH"  "@   lhi\t%0,%h1   llilh\t%0,%i1   llill\t%0,%i1   iilf\t%0,%o1   lay\t%0,%a1   lr\t%0,%1   l\t%0,%1   ly\t%0,%1   st\t%1,%0   sty\t%1,%0   ler\t%0,%1   le\t%0,%1   ley\t%0,%1   ste\t%1,%0   stey\t%1,%0   ear\t%0,%1   sar\t%0,%1   stam\t%1,%1,%S0   lam\t%0,%0,%S1   #"  [(set_attr "op_type" "RI,RI,RI,RIL,RXY,RR,RX,RXY,RX,RXY,                        RR,RX,RXY,RX,RXY,RRE,RRE,RS,RS,SS")   (set_attr "type" "*,*,*,*,la,lr,load,load,store,store,                     floadsf,floadsf,floadsf,fstoresf,fstoresf,*,*,*,*,*")])(define_insn "*movsi_esa"  [(set (match_operand:SI 0 "nonimmediate_operand" "=d,d,d,R,!*f,!*f,!R,d,t,Q,t,?Q")        (match_operand:SI 1 "general_operand" "K,d,R,d,*f,R,*f,t,d,t,Q,?Q"))]  "!TARGET_ZARCH"  "@   lhi\t%0,%h1   lr\t%0,%1   l\t%0,%1   st\t%1,%0   ler\t%0,%1

⌨️ 快捷键说明

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