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

📄 s390.md

📁 linux下编程用 编译软件
💻 MD
📖 第 1 页 / 共 5 页
字号:
   le\t%0,%1   ste\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,RR,RX,RX,RR,RX,RX,RRE,RRE,RS,RS,SS")   (set_attr "type" "*,lr,load,store,floadsf,floadsf,fstoresf,*,*,*,*,*")])(define_peephole2  [(set (match_operand:SI 0 "register_operand" "")        (mem:SI (match_operand 1 "address_operand" "")))]  "!FP_REG_P (operands[0])   && GET_CODE (operands[1]) == SYMBOL_REF   && CONSTANT_POOL_ADDRESS_P (operands[1])   && get_pool_mode (operands[1]) == SImode   && 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_31"  [(set (match_operand:SI 0 "register_operand" "=d,d")        (match_operand:QI 1 "address_operand" "U,W"))]  "!TARGET_64BIT && legitimate_la_operand_p (operands[1])"  "@   la\t%0,%a1   lay\t%0,%a1"  [(set_attr "op_type"  "RX,RXY")   (set_attr "type"     "la")])(define_peephole2  [(parallel    [(set (match_operand:SI 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:SI 0 "register_operand" "")        (match_operand:SI 1 "register_operand" ""))   (parallel    [(set (match_dup 0)          (plus:SI (match_dup 0)                   (match_operand:SI 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:SI (match_dup 1) (match_dup 2)))]  "")(define_insn "*la_31_and"  [(set (match_operand:SI 0 "register_operand" "=d,d")        (and:SI (match_operand:QI 1 "address_operand" "U,W")                (const_int 2147483647)))]  "!TARGET_64BIT"  "@   la\t%0,%a1   lay\t%0,%a1"  [(set_attr "op_type"  "RX,RXY")   (set_attr "type"     "la")])(define_insn_and_split "*la_31_and_cc"  [(set (match_operand:SI 0 "register_operand" "=d")        (and:SI (match_operand:QI 1 "address_operand" "p")                (const_int 2147483647)))   (clobber (reg:CC CC_REGNUM))]  "!TARGET_64BIT"  "#"  "&& reload_completed"  [(set (match_dup 0)        (and:SI (match_dup 1) (const_int 2147483647)))]  ""  [(set_attr "op_type"  "RX")   (set_attr "type"     "la")])(define_insn "force_la_31"  [(set (match_operand:SI 0 "register_operand" "=d,d")        (match_operand:QI 1 "address_operand" "U,W"))   (use (const_int 0))]  "!TARGET_64BIT"  "@   la\t%0,%a1   lay\t%0,%a1"  [(set_attr "op_type"  "RX")   (set_attr "type"     "la")])(define_expand "reload_insi"  [(parallel [(match_operand:SI 0 "register_operand" "=a")              (match_operand:SI 1 "s390_plus_operand" "")              (match_operand:SI 2 "register_operand" "=&a")])]  "!TARGET_64BIT"{  s390_expand_plus_operand (operands[0], operands[1], operands[2]);  DONE;});; movhi instruction pattern(s).;(define_expand "movhi"  [(set (match_operand:HI 0 "nonimmediate_operand" "")        (match_operand:HI 1 "general_operand" ""))]  ""{  /* Make it explicit that loading a register from memory     always sign-extends (at least) to SImode.  */  if (optimize && !no_new_pseudos      && register_operand (operands[0], VOIDmode)      && GET_CODE (operands[1]) == MEM)    {      rtx tmp = gen_reg_rtx (SImode);      rtx ext = gen_rtx_SIGN_EXTEND (SImode, operands[1]);      emit_insn (gen_rtx_SET (VOIDmode, tmp, ext));      operands[1] = gen_lowpart (HImode, tmp);    }})(define_insn "*movhi"  [(set (match_operand:HI 0 "nonimmediate_operand" "=d,d,d,d,R,T,?Q")        (match_operand:HI 1 "general_operand" "d,n,R,T,d,d,?Q"))]  ""  "@   lr\t%0,%1   lhi\t%0,%h1   lh\t%0,%1   lhy\t%0,%1   sth\t%1,%0   sthy\t%1,%0   #"  [(set_attr "op_type" "RR,RI,RX,RXY,RX,RXY,SS")   (set_attr "type" "lr,*,*,*,store,store,*")])(define_peephole2  [(set (match_operand:HI 0 "register_operand" "")        (mem:HI (match_operand 1 "address_operand" "")))]  "GET_CODE (operands[1]) == SYMBOL_REF   && CONSTANT_POOL_ADDRESS_P (operands[1])   && get_pool_mode (operands[1]) == HImode   && GET_CODE (get_pool_constant (operands[1])) == CONST_INT"  [(set (match_dup 0) (match_dup 2))]  "operands[2] = get_pool_constant (operands[1]);");; movqi instruction pattern(s).;(define_expand "movqi"  [(set (match_operand:QI 0 "nonimmediate_operand" "")        (match_operand:QI 1 "general_operand" ""))]  ""{  /* On z/Architecture, zero-extending from memory to register     is just as fast as a QImode load.  */  if (TARGET_ZARCH && optimize && !no_new_pseudos      && register_operand (operands[0], VOIDmode)      && GET_CODE (operands[1]) == MEM)    {      rtx tmp = gen_reg_rtx (word_mode);      rtx ext = gen_rtx_ZERO_EXTEND (word_mode, operands[1]);      emit_insn (gen_rtx_SET (VOIDmode, tmp, ext));      operands[1] = gen_lowpart (QImode, tmp);    }})(define_insn "*movqi"  [(set (match_operand:QI 0 "nonimmediate_operand" "=d,d,d,d,R,T,Q,S,?Q")        (match_operand:QI 1 "general_operand" "d,n,R,T,d,d,n,n,?Q"))]  ""  "@   lr\t%0,%1   lhi\t%0,%b1   ic\t%0,%1   icy\t%0,%1   stc\t%1,%0   stcy\t%1,%0   mvi\t%S0,%b1   mviy\t%S0,%b1   #"  [(set_attr "op_type" "RR,RI,RX,RXY,RX,RXY,SI,SIY,SS")   (set_attr "type" "lr,*,*,*,store,store,store,store,*")])(define_peephole2  [(set (match_operand:QI 0 "nonimmediate_operand" "")        (mem:QI (match_operand 1 "address_operand" "")))]  "GET_CODE (operands[1]) == SYMBOL_REF   && CONSTANT_POOL_ADDRESS_P (operands[1])   && get_pool_mode (operands[1]) == QImode   && GET_CODE (get_pool_constant (operands[1])) == CONST_INT"  [(set (match_dup 0) (match_dup 2))]  "operands[2] = get_pool_constant (operands[1]);");; movstrictqi instruction pattern(s).;(define_insn "*movstrictqi"  [(set (strict_low_part (match_operand:QI 0 "register_operand" "+d,d"))                         (match_operand:QI 1 "memory_operand" "R,T"))]  ""  "@   ic\t%0,%1   icy\t%0,%1"  [(set_attr "op_type"  "RX,RXY")]);; movstricthi instruction pattern(s).;(define_insn "*movstricthi"  [(set (strict_low_part (match_operand:HI 0 "register_operand" "+d,d"))                         (match_operand:HI 1 "memory_operand" "Q,S"))   (clobber (reg:CC CC_REGNUM))]  ""  "@   icm\t%0,3,%S1   icmy\t%0,3,%S1"  [(set_attr "op_type" "RS,RSY")]);; movstrictsi instruction pattern(s).;(define_insn "movstrictsi"  [(set (strict_low_part (match_operand:SI 0 "register_operand" "+d,d,d,d"))                         (match_operand:SI 1 "general_operand" "d,R,T,t"))]  "TARGET_64BIT"  "@   lr\t%0,%1   l\t%0,%1   ly\t%0,%1   ear\t%0,%1"  [(set_attr "op_type" "RR,RX,RXY,RRE")   (set_attr "type" "lr,load,load,*")]);; movtf instruction pattern(s).;(define_expand "movtf"  [(set (match_operand:TF 0 "nonimmediate_operand" "")        (match_operand:TF 1 "general_operand"       ""))]  ""  "")(define_insn "*movtf_64"  [(set (match_operand:TF 0 "nonimmediate_operand" "=f,f,f,o,d,QS,d,o,Q")        (match_operand:TF 1 "general_operand"       "G,f,o,f,QS,d,dm,d,Q"))]  "TARGET_64BIT"  "@   lzxr\t%0   lxr\t%0,%1   #   #   lmg\t%0,%N0,%S1   stmg\t%1,%N1,%S0   #   #   #"  [(set_attr "op_type" "RRE,RRE,*,*,RSY,RSY,*,*,*")   (set_attr "type"    "fsimptf,fsimptf,*,*,lm,stm,*,*,*")])(define_insn "*movtf_31"  [(set (match_operand:TF 0 "nonimmediate_operand" "=f,f,f,o,Q")        (match_operand:TF 1 "general_operand"       "G,f,o,f,Q"))]  "!TARGET_64BIT"  "@   lzxr\t%0   lxr\t%0,%1   #   #   #"  [(set_attr "op_type" "RRE,RRE,*,*,*")   (set_attr "type"    "fsimptf,fsimptf,*,*,*")]); TFmode in GPRs splitters(define_split  [(set (match_operand:TF 0 "nonimmediate_operand" "")        (match_operand:TF 1 "general_operand" ""))]  "TARGET_64BIT && reload_completed   && s390_split_ok_p (operands[0], operands[1], TFmode, 0)"  [(set (match_dup 2) (match_dup 4))   (set (match_dup 3) (match_dup 5))]{  operands[2] = operand_subword (operands[0], 0, 0, TFmode);  operands[3] = operand_subword (operands[0], 1, 0, TFmode);  operands[4] = operand_subword (operands[1], 0, 0, TFmode);  operands[5] = operand_subword (operands[1], 1, 0, TFmode);})(define_split  [(set (match_operand:TF 0 "nonimmediate_operand" "")        (match_operand:TF 1 "general_operand" ""))]  "TARGET_64BIT && reload_completed   && s390_split_ok_p (operands[0], operands[1], TFmode, 1)"  [(set (match_dup 2) (match_dup 4))   (set (match_dup 3) (match_dup 5))]{  operands[2] = operand_subword (operands[0], 1, 0, TFmode);  operands[3] = operand_subword (operands[0], 0, 0, TFmode);  operands[4] = operand_subword (operands[1], 1, 0, TFmode);  operands[5] = operand_subword (operands[1], 0, 0, TFmode);})(define_split  [(set (match_operand:TF 0 "register_operand" "")        (match_operand:TF 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, DFmode);  s390_load_address (addr, XEXP (operands[1], 0));  operands[1] = replace_equiv_address (operands[1], addr);}); TFmode in FPRs splitters(define_split  [(set (match_operand:TF 0 "register_operand" "")        (match_operand:TF 1 "memory_operand" ""))]  "reload_completed && offsettable_memref_p (operands[1])    && FP_REG_P (operands[0])"  [(set (match_dup 2) (match_dup 4))   (set (match_dup 3) (match_dup 5))]{  operands[2] = simplify_gen_subreg (DFmode, operands[0], TFmode, 0);  operands[3] = simplify_gen_subreg (DFmode, operands[0], TFmode, 8);  operands[4] = adjust_address_nv (operands[1], DFmode, 0);  operands[5] = adjust_address_nv (operands[1], DFmode, 8);})(define_split  [(set (match_operand:TF 0 "memory_operand" "")        (match_operand:TF 1 "register_operand" ""))]  "reload_completed && offsettable_memref_p (operands[0])   && FP_REG_P (operands[1])"  [(set (match_dup 2) (match_dup 4))   (set (match_dup 3) (match_dup 5))]{  operands[2] = adjust_address_nv (operands[0], DFmode, 0);  operands[3] = adjust_address_nv (operands[0], DFmode, 8);  operands[4] = simplify_gen_subreg (DFmode, operands[1], TFmode, 0);  operands[5] = simplify_gen_subreg (DFmode, operands[1], TFmode, 8);})(define_expand "reload_outtf"  [(parallel [(match_operand:TF 0 "" "")              (match_operand:TF 1 "register_operand" "f")              (match_operand:SI 2 "register_operand" "=&a")])]  ""{  rtx addr = gen_lowpart (Pmode, operands[2]);  gcc_assert (MEM_P (operands[0]));  s390_load_address (addr, find_replacement (&XEXP (operands[0], 0)));  operands[0] = replace_equiv_address (operands[0], addr);  emit_move_insn (operands[0], operands[1]);  DONE;})(define_expand "reload_intf"  [(parallel [(match_operand:TF 0 "register_operand" "=f")              (match_operand:TF 1 "" "")              (match_operand:SI 2 "register_operand" "=&a")])]  ""{  rtx addr = gen_lowpart (Pmode, operands[2]);   gcc_assert (MEM_P (operands[1]));  s390_load_address (addr, find_replacement (&XEXP (operands[1], 0)));  operands[1] = replace_equiv_address (operands[1], addr);  emit_move_insn (operands[0], operands[1]);  DONE;});; movdf instruction pattern(s).;(define_expand "movdf"  [(set (match_operand:DF 0 "nonimmediate_operand" "")        (match_operand:DF 1 "general_operand"  ""))]  ""  "")(define_insn "*movdf_64"  [(set (match_operand:DF 0 "nonimmediate_operand" "=f,f,f,f,R,T,d,d,m,?Q")        (match_operand:DF 1 "general_operand" "G,f,R,T,f,f,d,m,d,?Q"))]  "TARGET_64BIT"  "@   lzdr\t%0   ldr\t%0,%1   ld\t%0,%1   ldy\t%0,%1   std\t%1,%0   stdy\t%1,%0   lgr\t%0,%1   lg\t%0,%1   stg\t%1,%0   #"  [(set_attr "op_type" "RRE,RR,RX,RXY,RX,RXY,RRE,RXY,RXY,SS")   (set_attr "type" "fsimpdf,floaddf,floaddf,floaddf,fstoredf,fstoredf,lr,load,store,*")])(define_insn "*movdf_31"  [(set (match_operand:DF 0 "nonimmediate_operand" "=f,f,f,f,R,T,d,d,Q,S,d,o,Q")        (match_operand:DF 1 "general_operand" "G,f,R,T,f,f,Q,S,d,d,dPm,d,Q"))]  "!TARGET_64BIT"  "@   lzdr\t%0   ldr\t%0,%1

⌨️ 快捷键说明

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