📄 s390.md
字号:
(match_operand:QI 2 "immediate_operand" "n,n")))] "s390_match_ccmode (insn, s390_tm_ccmode (operands[1], operands[2], false))" "@ tm\t%S0,%b1 tmy\t%S0,%b1" [(set_attr "op_type" "SI,SIY")])(define_insn "*tmdi_reg" [(set (reg CC_REGNUM) (compare (and:DI (match_operand:DI 0 "nonimmediate_operand" "d,d,d,d") (match_operand:DI 1 "immediate_operand" "N0HD0,N1HD0,N2HD0,N3HD0")) (match_operand:DI 2 "immediate_operand" "n,n,n,n")))] "TARGET_64BIT && s390_match_ccmode (insn, s390_tm_ccmode (operands[1], operands[2], true)) && s390_single_part (operands[1], DImode, HImode, 0) >= 0" "@ tmhh\t%0,%i1 tmhl\t%0,%i1 tmlh\t%0,%i1 tmll\t%0,%i1" [(set_attr "op_type" "RI")])(define_insn "*tmsi_reg" [(set (reg CC_REGNUM) (compare (and:SI (match_operand:SI 0 "nonimmediate_operand" "d,d") (match_operand:SI 1 "immediate_operand" "N0HS0,N1HS0")) (match_operand:SI 2 "immediate_operand" "n,n")))] "s390_match_ccmode (insn, s390_tm_ccmode (operands[1], operands[2], true)) && s390_single_part (operands[1], SImode, HImode, 0) >= 0" "@ tmh\t%0,%i1 tml\t%0,%i1" [(set_attr "op_type" "RI")])(define_insn "*tm<mode>_full" [(set (reg CC_REGNUM) (compare (match_operand:HQI 0 "register_operand" "d") (match_operand:HQI 1 "immediate_operand" "n")))] "s390_match_ccmode (insn, s390_tm_ccmode (constm1_rtx, operands[1], true))" "tml\t%0,<max_uint>" [(set_attr "op_type" "RI")]); Load-and-Test instructions(define_insn "*tstdi_sign" [(set (reg CC_REGNUM) (compare (ashiftrt:DI (ashift:DI (subreg:DI (match_operand:SI 0 "register_operand" "d") 0) (const_int 32)) (const_int 32)) (match_operand:DI 1 "const0_operand" ""))) (set (match_operand:DI 2 "register_operand" "=d") (sign_extend:DI (match_dup 0)))] "s390_match_ccmode(insn, CCSmode) && TARGET_64BIT" "ltgfr\t%2,%0" [(set_attr "op_type" "RRE")])(define_insn "*tstdi_extimm" [(set (reg CC_REGNUM) (compare (match_operand:DI 0 "nonimmediate_operand" "d,m") (match_operand:DI 1 "const0_operand" ""))) (set (match_operand:DI 2 "register_operand" "=d,d") (match_dup 0))] "s390_match_ccmode(insn, CCSmode) && TARGET_64BIT && TARGET_EXTIMM" "@ ltgr\t%2,%0 ltg\t%2,%0" [(set_attr "op_type" "RRE,RXY")])(define_insn "*tstdi_cconly_extimm" [(set (reg CC_REGNUM) (compare (match_operand:DI 0 "nonimmediate_operand" "d,m") (match_operand:DI 1 "const0_operand" ""))) (clobber (match_scratch:DI 2 "=X,d"))] "s390_match_ccmode(insn, CCSmode) && TARGET_64BIT && TARGET_EXTIMM" "@ ltgr\t%0,%0 ltg\t%2,%0" [(set_attr "op_type" "RRE,RXY")])(define_insn "*tstdi" [(set (reg CC_REGNUM) (compare (match_operand:DI 0 "register_operand" "d") (match_operand:DI 1 "const0_operand" ""))) (set (match_operand:DI 2 "register_operand" "=d") (match_dup 0))] "s390_match_ccmode(insn, CCSmode) && TARGET_64BIT && !TARGET_EXTIMM" "ltgr\t%2,%0" [(set_attr "op_type" "RRE")])(define_insn "*tstdi_cconly" [(set (reg CC_REGNUM) (compare (match_operand:DI 0 "register_operand" "d") (match_operand:DI 1 "const0_operand" "")))] "s390_match_ccmode(insn, CCSmode) && TARGET_64BIT" "ltgr\t%0,%0" [(set_attr "op_type" "RRE")])(define_insn "*tstdi_cconly_31" [(set (reg CC_REGNUM) (compare (match_operand:DI 0 "register_operand" "d") (match_operand:DI 1 "const0_operand" "")))] "s390_match_ccmode(insn, CCSmode) && !TARGET_64BIT" "srda\t%0,0" [(set_attr "op_type" "RS") (set_attr "atype" "reg")])(define_insn "*tstsi_extimm" [(set (reg CC_REGNUM) (compare (match_operand:SI 0 "nonimmediate_operand" "d,m") (match_operand:SI 1 "const0_operand" ""))) (set (match_operand:SI 2 "register_operand" "=d,d") (match_dup 0))] "s390_match_ccmode(insn, CCSmode) && TARGET_EXTIMM" "@ ltr\t%2,%0 lt\t%2,%0" [(set_attr "op_type" "RR,RXY")])(define_insn "*tstsi_cconly_extimm" [(set (reg CC_REGNUM) (compare (match_operand:SI 0 "nonimmediate_operand" "d,m") (match_operand:SI 1 "const0_operand" ""))) (clobber (match_scratch:SI 2 "=X,d"))] "s390_match_ccmode(insn, CCSmode) && TARGET_EXTIMM" "@ ltr\t%0,%0 lt\t%2,%0" [(set_attr "op_type" "RR,RXY")])(define_insn "*tstsi" [(set (reg CC_REGNUM) (compare (match_operand:SI 0 "nonimmediate_operand" "d,Q,S") (match_operand:SI 1 "const0_operand" ""))) (set (match_operand:SI 2 "register_operand" "=d,d,d") (match_dup 0))] "s390_match_ccmode(insn, CCSmode) && !TARGET_EXTIMM" "@ ltr\t%2,%0 icm\t%2,15,%S0 icmy\t%2,15,%S0" [(set_attr "op_type" "RR,RS,RSY")])(define_insn "*tstsi_cconly" [(set (reg CC_REGNUM) (compare (match_operand:SI 0 "nonimmediate_operand" "d,Q,S") (match_operand:SI 1 "const0_operand" ""))) (clobber (match_scratch:SI 2 "=X,d,d"))] "s390_match_ccmode(insn, CCSmode)" "@ ltr\t%0,%0 icm\t%2,15,%S0 icmy\t%2,15,%S0" [(set_attr "op_type" "RR,RS,RSY")])(define_insn "*tstsi_cconly2" [(set (reg CC_REGNUM) (compare (match_operand:SI 0 "register_operand" "d") (match_operand:SI 1 "const0_operand" "")))] "s390_match_ccmode(insn, CCSmode)" "ltr\t%0,%0" [(set_attr "op_type" "RR")])(define_insn "*tst<mode>CCT" [(set (reg CC_REGNUM) (compare (match_operand:HQI 0 "nonimmediate_operand" "?Q,?S,d") (match_operand:HQI 1 "const0_operand" ""))) (set (match_operand:HQI 2 "register_operand" "=d,d,0") (match_dup 0))] "s390_match_ccmode(insn, CCTmode)" "@ icm\t%2,<icm_lo>,%S0 icmy\t%2,<icm_lo>,%S0 tml\t%0,<max_uint>" [(set_attr "op_type" "RS,RSY,RI")])(define_insn "*tsthiCCT_cconly" [(set (reg CC_REGNUM) (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 "*tstqiCCT_cconly" [(set (reg CC_REGNUM) (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 "*tst<mode>" [(set (reg CC_REGNUM) (compare (match_operand:HQI 0 "s_operand" "Q,S") (match_operand:HQI 1 "const0_operand" ""))) (set (match_operand:HQI 2 "register_operand" "=d,d") (match_dup 0))] "s390_match_ccmode(insn, CCSmode)" "@ icm\t%2,<icm_lo>,%S0 icmy\t%2,<icm_lo>,%S0" [(set_attr "op_type" "RS,RSY")])(define_insn "*tst<mode>_cconly" [(set (reg CC_REGNUM) (compare (match_operand:HQI 0 "s_operand" "Q,S") (match_operand:HQI 1 "const0_operand" ""))) (clobber (match_scratch:HQI 2 "=d,d"))] "s390_match_ccmode(insn, CCSmode)" "@ icm\t%2,<icm_lo>,%S0 icmy\t%2,<icm_lo>,%S0" [(set_attr "op_type" "RS,RSY")]); Compare (equality) instructions(define_insn "*cmpdi_cct" [(set (reg CC_REGNUM) (compare (match_operand:DI 0 "nonimmediate_operand" "%d,d,d,d,Q") (match_operand:DI 1 "general_operand" "d,K,Os,m,BQ")))] "s390_match_ccmode (insn, CCTmode) && TARGET_64BIT" "@ cgr\t%0,%1 cghi\t%0,%h1 cgfi\t%0,%1 cg\t%0,%1 #" [(set_attr "op_type" "RRE,RI,RIL,RXY,SS")])(define_insn "*cmpsi_cct" [(set (reg CC_REGNUM) (compare (match_operand:SI 0 "nonimmediate_operand" "%d,d,d,d,d,Q") (match_operand:SI 1 "general_operand" "d,K,Os,R,T,BQ")))] "s390_match_ccmode (insn, CCTmode)" "@ cr\t%0,%1 chi\t%0,%h1 cfi\t%0,%1 c\t%0,%1 cy\t%0,%1 #" [(set_attr "op_type" "RR,RI,RIL,RX,RXY,SS")]); Compare (signed) instructions(define_insn "*cmpdi_ccs_sign" [(set (reg CC_REGNUM) (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 CC_REGNUM) (compare (match_operand:DI 0 "register_operand" "d,d,d,d") (match_operand:DI 1 "general_operand" "d,K,Os,m")))] "s390_match_ccmode(insn, CCSmode) && TARGET_64BIT" "@ cgr\t%0,%1 cghi\t%0,%h1 cgfi\t%0,%1 cg\t%0,%1" [(set_attr "op_type" "RRE,RI,RIL,RXY")])(define_insn "*cmpsi_ccs_sign" [(set (reg CC_REGNUM) (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 CC_REGNUM) (compare (match_operand:SI 0 "register_operand" "d,d,d,d,d") (match_operand:SI 1 "general_operand" "d,K,Os,R,T")))] "s390_match_ccmode(insn, CCSmode)" "@ cr\t%0,%1 chi\t%0,%h1 cfi\t%0,%1 c\t%0,%1 cy\t%0,%1" [(set_attr "op_type" "RR,RI,RIL,RX,RXY")]); Compare (unsigned) instructions(define_insn "*cmpdi_ccu_zero" [(set (reg CC_REGNUM) (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 CC_REGNUM) (compare (match_operand:DI 0 "nonimmediate_operand" "d,d,d,Q,BQ") (match_operand:DI 1 "general_operand" "d,Op,m,BQ,Q")))] "s390_match_ccmode (insn, CCUmode) && TARGET_64BIT" "@ clgr\t%0,%1 clgfi\t%0,%1 clg\t%0,%1 # #" [(set_attr "op_type" "RRE,RIL,RXY,SS,SS")])(define_insn "*cmpsi_ccu" [(set (reg CC_REGNUM) (compare (match_operand:SI 0 "nonimmediate_operand" "d,d,d,d,Q,BQ") (match_operand:SI 1 "general_operand" "d,Os,R,T,BQ,Q")))] "s390_match_ccmode (insn, CCUmode)" "@ clr\t%0,%1 clfi\t%0,%o1 cl\t%0,%1 cly\t%0,%1 # #" [(set_attr "op_type" "RR,RIL,RX,RXY,SS,SS")])(define_insn "*cmphi_ccu" [(set (reg CC_REGNUM) (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 CC_REGNUM) (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 CC_REGNUM) (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 CC_REGNUM) (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|SF) instructions(define_insn "*cmp<mode>_ccs_0" [(set (reg CC_REGNUM) (compare (match_operand:FPR 0 "register_operand" "f") (match_operand:FPR 1 "const0_operand" "")))] "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" "lt<xde>br\t%0,%0" [(set_attr "op_type" "RRE") (set_attr "type" "fsimp<mode>")])(define_insn "*cmp<mode>_ccs_0_ibm" [(set (reg CC_REGNUM) (compare (match_operand:FPR 0 "register_operand" "f") (match_operand:FPR 1 "const0_operand" "")))]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -