📄 s390.md
字号:
[(set_attr "op_type" "RI")])(define_insn "*tmhi_full" [(set (reg 33) (compare (match_operand:HI 0 "register_operand" "d") (match_operand:HI 1 "immediate_operand" "n")))] "s390_match_ccmode (insn, s390_tm_ccmode (GEN_INT (-1), operands[1], 1))" "tml\\t%0,65535" [(set_attr "op_type" "RX")])(define_insn "*tmqi_full" [(set (reg 33) (compare (match_operand:QI 0 "register_operand" "d") (match_operand:QI 1 "immediate_operand" "n")))] "s390_match_ccmode (insn, s390_tm_ccmode (GEN_INT (-1), operands[1], 1))" "tml\\t%0,255" [(set_attr "op_type" "RI")]); Load-and-Test instructions(define_insn "*tstdi_sign" [(set (reg 33) (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" [(set (reg 33) (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" "ltgr\\t%2,%0" [(set_attr "op_type" "RRE")])(define_insn "*tstdi_cconly" [(set (reg 33) (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 33) (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")])(define_insn "*tstsi" [(set (reg 33) (compare (match_operand:SI 0 "nonimmediate_operand" "d,Q") (match_operand:SI 1 "const0_operand" ""))) (set (match_operand:SI 2 "register_operand" "=d,d") (match_dup 0))] "s390_match_ccmode(insn, CCSmode)" "@ ltr\\t%2,%0 icm\\t%2,15,%0" [(set_attr "op_type" "RR,RS") (set_attr "atype" "reg,mem")])(define_insn "*tstsi_cconly" [(set (reg 33) (compare (match_operand:SI 0 "nonimmediate_operand" "d,Q") (match_operand:SI 1 "const0_operand" ""))) (clobber (match_scratch:SI 2 "=X,d"))] "s390_match_ccmode(insn, CCSmode)" "@ ltr\\t%0,%0 icm\\t%2,15,%0" [(set_attr "op_type" "RR,RS") (set_attr "atype" "reg,mem")])(define_insn "*tstsi_cconly2" [(set (reg 33) (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 "*tsthiCCT" [(set (reg 33) (compare (match_operand:HI 0 "nonimmediate_operand" "?Q,d") (match_operand:HI 1 "const0_operand" ""))) (set (match_operand:HI 2 "register_operand" "=d,0") (match_dup 0))] "s390_match_ccmode(insn, CCTmode)" "@ icm\\t%2,3,%0 tml\\t%0,65535" [(set_attr "op_type" "RS,RI") (set_attr "atype" "mem,reg")])(define_insn "*tsthiCCT_cconly" [(set (reg 33) (compare (match_operand:HI 0 "nonimmediate_operand" "Q,d") (match_operand:HI 1 "const0_operand" ""))) (clobber (match_scratch:HI 2 "=d,X"))] "s390_match_ccmode(insn, CCTmode)" "@ icm\\t%2,3,%0 tml\\t%0,65535" [(set_attr "op_type" "RS,RI") (set_attr "atype" "mem,reg")])(define_insn "*tsthi" [(set (reg 33) (compare (match_operand:HI 0 "s_operand" "Q") (match_operand:HI 1 "const0_operand" ""))) (set (match_operand:HI 2 "register_operand" "=d") (match_dup 0))] "s390_match_ccmode(insn, CCSmode)" "icm\\t%2,3,%0" [(set_attr "op_type" "RS") (set_attr "atype" "mem")])(define_insn "*tsthi_cconly" [(set (reg 33) (compare (match_operand:HI 0 "s_operand" "Q") (match_operand:HI 1 "const0_operand" ""))) (clobber (match_scratch:HI 2 "=d"))] "s390_match_ccmode(insn, CCSmode)" "icm\\t%2,3,%0" [(set_attr "op_type" "RS") (set_attr "atype" "mem")])(define_insn "*tstqiCCT" [(set (reg 33) (compare (match_operand:QI 0 "nonimmediate_operand" "?Q,d") (match_operand:QI 1 "const0_operand" ""))) (set (match_operand:QI 2 "register_operand" "=d,0") (match_dup 0))] "s390_match_ccmode(insn, CCTmode)" "@ icm\\t%2,1,%0 tml\\t%0,255" [(set_attr "op_type" "RS,RI") (set_attr "atype" "mem,reg")])(define_insn "*tstqiCCT_cconly" [(set (reg 33) (compare (match_operand:QI 0 "nonimmediate_operand" "?Q,d") (match_operand:QI 1 "const0_operand" "")))] "s390_match_ccmode(insn, CCTmode)" "@ cli\\t%0,0 tml\\t%0,255" [(set_attr "op_type" "SI,RI") (set_attr "atype" "mem,reg")])(define_insn "*tstqi" [(set (reg 33) (compare (match_operand:QI 0 "s_operand" "Q") (match_operand:QI 1 "const0_operand" ""))) (set (match_operand:QI 2 "register_operand" "=d") (match_dup 0))] "s390_match_ccmode(insn, CCSmode)" "icm\\t%2,1,%0" [(set_attr "op_type" "RS") (set_attr "atype" "mem")])(define_insn "*tstqi_cconly" [(set (reg 33) (compare (match_operand:QI 0 "s_operand" "Q") (match_operand:QI 1 "const0_operand" ""))) (clobber (match_scratch:QI 2 "=d"))] "s390_match_ccmode(insn, CCSmode)" "icm\\t%2,1,%0" [(set_attr "op_type" "RS") (set_attr "atype" "mem")]); 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,RXE") (set_attr "atype" "reg,mem")])(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,%c1 cg\\t%0,%1" [(set_attr "op_type" "RRE,RI,RXE") (set_attr "atype" "reg,reg,mem")]) (define_insn "*cmpsi_ccs_sign" [(set (reg 33) (compare (sign_extend:SI (match_operand:HI 1 "memory_operand" "m")) (match_operand:SI 0 "register_operand" "d")))] "s390_match_ccmode(insn, CCSRmode)" "ch\\t%0,%1" [(set_attr "op_type" "RX") (set_attr "atype" "mem")])(define_insn "*cmpsi_ccs" [(set (reg 33) (compare (match_operand:SI 0 "register_operand" "d,d,d") (match_operand:SI 1 "general_operand" "d,K,m")))] "s390_match_ccmode(insn, CCSmode)" "@ cr\\t%0,%1 chi\\t%0,%c1 c\\t%0,%1" [(set_attr "op_type" "RR,RI,RX") (set_attr "atype" "reg,reg,mem")]) ; 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,RXE") (set_attr "atype" "reg,mem")])(define_insn "*cmpdi_ccu" [(set (reg 33) (compare (match_operand:DI 0 "register_operand" "d,d") (match_operand:DI 1 "general_operand" "d,m")))] "s390_match_ccmode(insn, CCUmode) && TARGET_64BIT" "@ clgr\\t%0,%1 clg\\t%0,%1" [(set_attr "op_type" "RRE,RXE") (set_attr "atype" "reg,mem")])(define_insn "*cmpsi_ccu" [(set (reg 33) (compare (match_operand:SI 0 "register_operand" "d,d") (match_operand:SI 1 "general_operand" "d,m")))] "s390_match_ccmode(insn, CCUmode)" "@ clr\\t%0,%1 cl\\t%0,%1" [(set_attr "op_type" "RR,RX") (set_attr "atype" "reg,mem")])(define_insn "*cmphi_ccu" [(set (reg 33) (compare (match_operand:HI 0 "register_operand" "d") (match_operand:HI 1 "s_imm_operand" "Q")))] "s390_match_ccmode(insn, CCUmode)" "clm\\t%0,3,%1" [(set_attr "op_type" "RS") (set_attr "atype" "mem")])(define_insn "*cmpqi_ccu" [(set (reg 33) (compare (match_operand:QI 0 "register_operand" "d") (match_operand:QI 1 "s_imm_operand" "Q")))] "s390_match_ccmode(insn, CCUmode)" "clm\\t%0,1,%1" [(set_attr "op_type" "RS") (set_attr "atype" "mem")])(define_insn "*cli" [(set (reg 33) (compare (match_operand:QI 0 "memory_operand" "Q") (match_operand:QI 1 "immediate_operand" "n")))] "s390_match_ccmode (insn, CCUmode)" "cli\\t%0,%b1" [(set_attr "op_type" "SI") (set_attr "atype" "mem")])(define_insn "*cmpdi_ccu_mem" [(set (reg 33) (compare (match_operand:DI 0 "s_operand" "Q") (match_operand:DI 1 "s_imm_operand" "Q")))] "s390_match_ccmode(insn, CCUmode)" "clc\\t%O0(8,%R0),%1" [(set_attr "op_type" "SS") (set_attr "atype" "mem")])(define_insn "*cmpsi_ccu_mem" [(set (reg 33) (compare (match_operand:SI 0 "s_operand" "Q") (match_operand:SI 1 "s_imm_operand" "Q")))] "s390_match_ccmode(insn, CCUmode)" "clc\\t%O0(4,%R0),%1" [(set_attr "op_type" "SS") (set_attr "atype" "mem")])(define_insn "*cmphi_ccu_mem" [(set (reg 33) (compare (match_operand:HI 0 "s_operand" "Q") (match_operand:HI 1 "s_imm_operand" "Q")))] "s390_match_ccmode(insn, CCUmode)" "clc\\t%O0(2,%R0),%1" [(set_attr "op_type" "SS") (set_attr "atype" "mem")])(define_insn "*cmpqi_ccu_mem" [(set (reg 33) (compare (match_operand:QI 0 "s_operand" "Q") (match_operand:QI 1 "s_imm_operand" "Q")))] "s390_match_ccmode(insn, CCUmode)" "clc\\t%O0(1,%R0),%1" [(set_attr "op_type" "SS") (set_attr "atype" "mem")]); 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")])(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")])(define_insn "*cmpdf_ccs" [(set (reg 33) (compare (match_operand:DF 0 "register_operand" "f,f") (match_operand:DF 1 "general_operand" "f,m")))] "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 "atype" "reg,mem")]) (define_insn "*cmpdf_ccs_ibm" [(set (reg 33) (compare (match_operand:DF 0 "register_operand" "f,f") (match_operand:DF 1 "general_operand" "f,m")))] "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 "atype" "reg,mem")]) ; 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")])(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")])(define_insn "*cmpsf_ccs" [(set (reg 33) (compare (match_operand:SF 0 "register_operand" "f,f") (match_operand:SF 1 "general_operand" "f,m")))] "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 "atype" "reg,mem")])(define_insn "*cmpsf_ccs" [(set (reg 33) (compare (match_operand:SF 0 "register_operand" "f,f") (match_operand:SF 1 "general_operand" "f,m")))] "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 "atype" "reg,mem")]);;;;- Move instructions.;;;; movti instruction pattern(s).;(define_insn "movti" [(set (match_operand:TI 0 "nonimmediate_operand" "=d,Q,d,o,Q") (match_operand:TI 1 "general_operand" "Q,d,dKm,d,Q"))] "TARGET_64BIT" "@ lmg\\t%0,%N0,%1 stmg\\t%1,%N1,%0 # # mvc\\t%O0(16,%R0),%1" [(set_attr "op_type" "RSE,RSE,NN,NN,SS") (set_attr "atype" "mem")])(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))]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -