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

📄 s390.md

📁 Mac OS X 10.4.9 for x86 Source Code gcc 实现源代码
💻 MD
📖 第 1 页 / 共 5 页
字号:
(define_insn "*tsthiCCT_cconly"  [(set (reg 33)        (compare (match_operand:HI 0 "nonimmediate_operand" "Q,S,d")                 (match_operand:HI 1 "const0_operand" "")))   (clobber (match_scratch:HI 2 "=d,d,X"))]  "s390_match_ccmode(insn, CCTmode)"  "@   icm\t%2,3,%S0   icmy\t%2,3,%S0   tml\t%0,65535"  [(set_attr "op_type" "RS,RSY,RI")])(define_insn "*tsthi"  [(set (reg 33)        (compare (match_operand:HI 0 "s_operand" "Q,S")                 (match_operand:HI 1 "const0_operand" "")))   (set (match_operand:HI 2 "register_operand" "=d,d")        (match_dup 0))]  "s390_match_ccmode(insn, CCSmode)"  "@   icm\t%2,3,%S0   icmy\t%2,3,%S0"  [(set_attr "op_type" "RS,RSY")])(define_insn "*tsthi_cconly"  [(set (reg 33)        (compare (match_operand:HI 0 "s_operand" "Q,S")                 (match_operand:HI 1 "const0_operand" "")))   (clobber (match_scratch:HI 2 "=d,d"))]  "s390_match_ccmode(insn, CCSmode)"  "@   icm\t%2,3,%S0   icmy\t%2,3,%S0"  [(set_attr "op_type" "RS,RSY")])(define_insn "*tstqiCCT"  [(set (reg 33)        (compare (match_operand:QI 0 "nonimmediate_operand" "?Q,?S,d")                 (match_operand:QI 1 "const0_operand" "")))   (set (match_operand:QI 2 "register_operand" "=d,d,0")        (match_dup 0))]  "s390_match_ccmode(insn, CCTmode)"  "@   icm\t%2,1,%S0   icmy\t%2,1,%S0   tml\t%0,255"  [(set_attr "op_type" "RS,RSY,RI")])(define_insn "*tstqiCCT_cconly"  [(set (reg 33)        (compare (match_operand:QI 0 "nonimmediate_operand" "?Q,?S,d")                 (match_operand:QI 1 "const0_operand" "")))]  "s390_match_ccmode(insn, CCTmode)"  "@   cli\t%S0,0   cliy\t%S0,0   tml\t%0,255"  [(set_attr "op_type" "SI,SIY,RI")])(define_insn "*tstqi"  [(set (reg 33)        (compare (match_operand:QI 0 "s_operand" "Q,S")                 (match_operand:QI 1 "const0_operand" "")))   (set (match_operand:QI 2 "register_operand" "=d,d")        (match_dup 0))]  "s390_match_ccmode(insn, CCSmode)"  "@   icm\t%2,1,%S0   icmy\t%2,1,%S0"  [(set_attr "op_type" "RS,RSY")])(define_insn "*tstqi_cconly"  [(set (reg 33)        (compare (match_operand:QI 0 "s_operand" "Q,S")                 (match_operand:QI 1 "const0_operand" "")))   (clobber (match_scratch:QI 2 "=d,d"))]  "s390_match_ccmode(insn, CCSmode)"  "@   icm\t%2,1,%S0   icmy\t%2,1,%S0"  [(set_attr "op_type" "RS,RSY")]); Compare (equality) instructions(define_insn "*cmpdi_cct"  [(set (reg 33)        (compare (match_operand:DI 0 "nonimmediate_operand" "%d,d,d,Q")                 (match_operand:DI 1 "general_operand" "d,K,m,BQ")))]  "s390_match_ccmode (insn, CCTmode) && TARGET_64BIT"  "@   cgr\t%0,%1   cghi\t%0,%h1   cg\t%0,%1   #"  [(set_attr "op_type" "RRE,RI,RXY,SS")])(define_insn "*cmpsi_cct"  [(set (reg 33)        (compare (match_operand:SI 0 "nonimmediate_operand" "%d,d,d,d,Q")                 (match_operand:SI 1 "general_operand" "d,K,R,T,BQ")))]  "s390_match_ccmode (insn, CCTmode)"  "@   cr\t%0,%1   chi\t%0,%h1   c\t%0,%1   cy\t%0,%1   #"  [(set_attr "op_type" "RR,RI,RX,RXY,SS")]); Compare (signed) instructions(define_insn "*cmpdi_ccs_sign"  [(set (reg 33)        (compare (sign_extend:DI (match_operand:SI 1 "nonimmediate_operand" "d,m"))                 (match_operand:DI 0 "register_operand" "d,d")))]  "s390_match_ccmode(insn, CCSRmode) && TARGET_64BIT"  "@   cgfr\t%0,%1   cgf\t%0,%1"  [(set_attr "op_type" "RRE,RXY")])(define_insn "*cmpdi_ccs"  [(set (reg 33)        (compare (match_operand:DI 0 "register_operand" "d,d,d")                 (match_operand:DI 1 "general_operand" "d,K,m")))]  "s390_match_ccmode(insn, CCSmode) && TARGET_64BIT"  "@   cgr\t%0,%1   cghi\t%0,%h1   cg\t%0,%1"  [(set_attr "op_type" "RRE,RI,RXY")])(define_insn "*cmpsi_ccs_sign"  [(set (reg 33)        (compare (sign_extend:SI (match_operand:HI 1 "memory_operand" "R,T"))                 (match_operand:SI 0 "register_operand" "d,d")))]  "s390_match_ccmode(insn, CCSRmode)"  "@   ch\t%0,%1   chy\t%0,%1"  [(set_attr "op_type" "RX,RXY")])(define_insn "*cmpsi_ccs"  [(set (reg 33)        (compare (match_operand:SI 0 "register_operand" "d,d,d,d")                 (match_operand:SI 1 "general_operand" "d,K,R,T")))]  "s390_match_ccmode(insn, CCSmode)"  "@   cr\t%0,%1   chi\t%0,%h1   c\t%0,%1   cy\t%0,%1"  [(set_attr "op_type" "RR,RI,RX,RXY")]); Compare (unsigned) instructions(define_insn "*cmpdi_ccu_zero"  [(set (reg 33)        (compare (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "d,m"))                 (match_operand:DI 0 "register_operand" "d,d")))]  "s390_match_ccmode (insn, CCURmode) && TARGET_64BIT"  "@   clgfr\t%0,%1   clgf\t%0,%1"  [(set_attr "op_type" "RRE,RXY")])(define_insn "*cmpdi_ccu"  [(set (reg 33)        (compare (match_operand:DI 0 "nonimmediate_operand" "d,d,Q,BQ")                 (match_operand:DI 1 "general_operand" "d,m,BQ,Q")))]  "s390_match_ccmode (insn, CCUmode) && TARGET_64BIT"  "@   clgr\t%0,%1   clg\t%0,%1   #   #"  [(set_attr "op_type" "RRE,RXY,SS,SS")])(define_insn "*cmpsi_ccu"  [(set (reg 33)        (compare (match_operand:SI 0 "nonimmediate_operand" "d,d,d,Q,BQ")                 (match_operand:SI 1 "general_operand" "d,R,T,BQ,Q")))]  "s390_match_ccmode (insn, CCUmode)"  "@   clr\t%0,%1   cl\t%0,%1   cly\t%0,%1   #   #"  [(set_attr "op_type" "RR,RX,RXY,SS,SS")])(define_insn "*cmphi_ccu"  [(set (reg 33)        (compare (match_operand:HI 0 "nonimmediate_operand" "d,d,Q,BQ")                 (match_operand:HI 1 "general_operand" "Q,S,BQ,Q")))]  "s390_match_ccmode (insn, CCUmode)   && !register_operand (operands[1], HImode)"  "@   clm\t%0,3,%S1   clmy\t%0,3,%S1   #   #"  [(set_attr "op_type" "RS,RSY,SS,SS")])(define_insn "*cmpqi_ccu"  [(set (reg 33)        (compare (match_operand:QI 0 "nonimmediate_operand" "d,d,Q,S,Q,BQ")                 (match_operand:QI 1 "general_operand" "Q,S,n,n,BQ,Q")))]  "s390_match_ccmode (insn, CCUmode)   && !register_operand (operands[1], QImode)"  "@   clm\t%0,1,%S1   clmy\t%0,1,%S1   cli\t%S0,%b1   cliy\t%S0,%b1   #   #"  [(set_attr "op_type" "RS,RSY,SI,SIY,SS,SS")]); Block compare (CLC) instruction patterns.(define_insn "*clc"  [(set (reg 33)        (compare (match_operand:BLK 0 "memory_operand" "Q")                 (match_operand:BLK 1 "memory_operand" "Q")))   (use (match_operand 2 "const_int_operand" "n"))]  "s390_match_ccmode (insn, CCUmode)   && INTVAL (operands[2]) >= 1 && INTVAL (operands[2]) <= 256"  "clc\t%O0(%2,%R0),%S1"  [(set_attr "op_type" "SS")])(define_split  [(set (reg 33)        (compare (match_operand 0 "memory_operand" "")                 (match_operand 1 "memory_operand" "")))]  "reload_completed   && s390_match_ccmode (insn, CCUmode)   && GET_MODE (operands[0]) == GET_MODE (operands[1])   && GET_MODE_SIZE (GET_MODE (operands[0])) > 0"  [(parallel    [(set (match_dup 0) (match_dup 1))     (use (match_dup 2))])]{  operands[2] = GEN_INT (GET_MODE_SIZE (GET_MODE (operands[0])));  operands[0] = adjust_address (operands[0], BLKmode, 0);  operands[1] = adjust_address (operands[1], BLKmode, 0);  operands[1] = gen_rtx_COMPARE (GET_MODE (SET_DEST (PATTERN (curr_insn))),				 operands[0], operands[1]);  operands[0] = SET_DEST (PATTERN (curr_insn));}); DF instructions(define_insn "*cmpdf_ccs_0"  [(set (reg 33)        (compare (match_operand:DF 0 "register_operand" "f")                 (match_operand:DF 1 "const0_operand" "")))]  "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT"  "ltdbr\t%0,%0"   [(set_attr "op_type" "RRE")    (set_attr "type"  "fsimpd")])(define_insn "*cmpdf_ccs_0_ibm"  [(set (reg 33)        (compare (match_operand:DF 0 "register_operand" "f")                 (match_operand:DF 1 "const0_operand" "")))]  "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IBM_FLOAT"  "ltdr\t%0,%0"   [(set_attr "op_type" "RR")    (set_attr "type"  "fsimpd")])(define_insn "*cmpdf_ccs"  [(set (reg 33)        (compare (match_operand:DF 0 "register_operand" "f,f")                 (match_operand:DF 1 "general_operand" "f,R")))]  "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT"  "@   cdbr\t%0,%1   cdb\t%0,%1"   [(set_attr "op_type" "RRE,RXE")    (set_attr "type"  "fsimpd")])(define_insn "*cmpdf_ccs_ibm"  [(set (reg 33)        (compare (match_operand:DF 0 "register_operand" "f,f")                 (match_operand:DF 1 "general_operand" "f,R")))]  "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IBM_FLOAT"  "@   cdr\t%0,%1   cd\t%0,%1"   [(set_attr "op_type" "RR,RX")    (set_attr "type"  "fsimpd")]); SF instructions(define_insn "*cmpsf_ccs_0"  [(set (reg 33)        (compare (match_operand:SF 0 "register_operand" "f")                 (match_operand:SF 1 "const0_operand" "")))]  "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT"  "ltebr\t%0,%0"   [(set_attr "op_type" "RRE")    (set_attr "type"  "fsimps")])(define_insn "*cmpsf_ccs_0_ibm"  [(set (reg 33)        (compare (match_operand:SF 0 "register_operand" "f")                 (match_operand:SF 1 "const0_operand" "")))]  "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IBM_FLOAT"  "lter\t%0,%0"   [(set_attr "op_type" "RR")    (set_attr "type"  "fsimps")])(define_insn "*cmpsf_ccs"  [(set (reg 33)        (compare (match_operand:SF 0 "register_operand" "f,f")                 (match_operand:SF 1 "general_operand" "f,R")))]  "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT"  "@   cebr\t%0,%1   ceb\t%0,%1"   [(set_attr "op_type" "RRE,RXE")    (set_attr "type"  "fsimps")])(define_insn "*cmpsf_ccs"  [(set (reg 33)        (compare (match_operand:SF 0 "register_operand" "f,f")                 (match_operand:SF 1 "general_operand" "f,R")))]  "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IBM_FLOAT"  "@   cer\t%0,%1   ce\t%0,%1"   [(set_attr "op_type" "RR,RX")    (set_attr "type"  "fsimps")]);;;;- 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,dKm,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"

⌨️ 快捷键说明

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