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

📄 s390.md

📁 Mac OS X 10.4.9 for x86 Source Code gcc 实现源代码
💻 MD
📖 第 1 页 / 共 5 页
字号:
  [(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_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"  "@   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,                     floadd,floadd,floadd,fstored,fstored,*,*,*,*,*")])(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,Q,d,o,!*f,!*f,!*f,!R,!T,Q")        (match_operand:DI 1 "general_operand" "Q,d,dKm,d,*f,R,T,*f,*f,Q"))]  "!TARGET_64BIT"  "@   lm\t%0,%N0,%S1   stm\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,RS,*,*,RR,RX,RXY,RX,RXY,SS")   (set_attr "type" "lm,stm,*,*,floadd,floadd,floadd,fstored,fstored,*")])(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 33))])]  "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 33))])]  "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,R,T,!*f,!*f,!*f,!R,!T,d,t,Q,t,?Q")        (match_operand:SI 1 "general_operand"                            "K,N0HS0,N1HS0,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   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,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,                     floads,floads,floads,fstores,fstores,*,*,*,*,*")])(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   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,floads,floads,fstores,*,*,*,*,*")])(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 33))])]  "!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 33))])]  "!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 33))]  "!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]);");

⌨️ 快捷键说明

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