+2009-01-28 Wolfgang Gellerich <gellerich@de.ibm.com>
+
+ * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
+ (*tm<mode>_full): Fixed z10prop attribute.
+ (*tst<mode>_extimm): Fixed z10prop attribute.
+ (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
+ (*tstqiCCT_cconly): Fixed z10prop attribute.
+ (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
+ (*movsi_larl): Fixed z10prop attribute.
+ (*movsi_zarch): Fixed z10prop attribute.
+ (*movsi_eas): Fixed z10prop attribute.
+ (*movhi): Fixed z10prop attribute.
+ (*movqi): Fixed z10prop attribute.
+ (*movstrictqi): Fixed z10prop attribute.
+ (*mov<mode>): Fixed z10prop attribute.
+ (*movcc): Fixed z10prop attribute.
+ (*sethighpartdi_64): Fixed z10prop attribute.
+ (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
+ (*negdi2_sign_cc): Fixed z10prop attribute.
+ (*negdi2_sign): Fixed z10prop attribute.
+ (*absdi2_sign_cc): Fixed z10prop attribute.
+ (*absdi2_sign): Fixed z10prop attribute.
+ (*negabsdi2_sign_cc): Fixed z10prop attribute.
+ (*negabsdi2_sign): Fixed z10prop attribute.
+ (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
+ (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
+ (doloop_si64): Fixed z10prop attribute.
+ (doloop_si31): Fixed z10prop attribute.
+ (doloop_long): Fixed z10prop attribute.
+ (indirect_jump): Fixed z10prop attribute.
+ (nop): Fixed z10prop attribute.
+ (main_base_64): Fixed z10prop attribute.
+ (reload_base_64): Fixed z10prop attribute.
+
2009-01-28 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/38740
"@
tmh\t%0,%i1
tml\t%0,%i1"
- [(set_attr "op_type" "RI")])
+ [(set_attr "op_type" "RI")
+ (set_attr "z10prop" "z10_super,z10_super")])
(define_insn "*tm<mode>_full"
[(set (reg CC_REGNUM)
(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")])
+ [(set_attr "op_type" "RI")
+ (set_attr "z10prop" "z10_super")])
;
lt<g>r\t%2,%0
lt<g>\t%2,%0"
[(set_attr "op_type" "RR<E>,RXY")
- (set_attr "z10prop" "z10_fr_E1,z10_fr_A3") ])
+ (set_attr "z10prop" "z10_fr_E1,z10_fwd_A3") ])
; ltr, lt, ltgr, ltg
(define_insn "*tst<mode>_cconly_extimm"
lt<g>r\t%0,%0
lt<g>\t%2,%0"
[(set_attr "op_type" "RR<E>,RXY")
- (set_attr "z10prop" "z10_fr_E1,z10_fr_A3")])
+ (set_attr "z10prop" "z10_fr_E1,z10_fwd_A3")])
(define_insn "*tstdi"
[(set (reg CC_REGNUM)
cliy\t%S0,0
tml\t%0,255"
[(set_attr "op_type" "SI,SIY,RI")
- (set_attr "z10prop" "z10_super,z10_super,*")])
+ (set_attr "z10prop" "z10_super,z10_super,z10_super")])
(define_insn "*tst<mode>"
[(set (reg CC_REGNUM)
"s390_match_ccmode(insn, CCURmode) && TARGET_Z10"
"clhrl\t%0,%1"
[(set_attr "op_type" "RIL")
- (set_attr "type" "larl")])
+ (set_attr "type" "larl")
+ (set_attr "z10prop" "z10_super")])
; clhrl, clghrl
(define_insn "*cmp<GPR:mode>_ccu_zerohi_rldi"
"larl\t%0,%1"
[(set_attr "op_type" "RIL")
(set_attr "type" "larl")
- (set_attr "z10prop" "z10_super_A1")])
+ (set_attr "z10prop" "z10_fwd_A1")])
(define_insn "*movsi_zarch"
[(set (match_operand:SI 0 "nonimmediate_operand"
z10_fr_E1,
z10_fwd_A3,
z10_fwd_A3,
- z10_super,
+ z10_rec,
z10_rec,
*,
*,
(set_attr "z10prop" "z10_fwd_A1,
z10_fr_E1,
z10_fwd_A3,
- z10_super,
+ z10_rec,
*,
*,
*,
z10_super_E1,
z10_super_E1,
z10_super_E1,
- z10_super,
+ z10_rec,
z10_rec,
z10_rec,
z10_super")])
z10_fwd_A1,
z10_super_E1,
z10_super_E1,
- z10_super,
+ z10_rec,
z10_rec,
z10_super,
z10_super")])
ic\t%0,%1
icy\t%0,%1"
[(set_attr "op_type" "RX,RXY")
- (set_attr "z10prop" "z10_super_E1,z10_super")])
+ (set_attr "z10prop" "z10_super_E1,z10_super_E1")])
;
; movstricthi instruction pattern(s).
z10_fr_E1,
z10_fwd_A3,
z10_fwd_A3,
- z10_super,
+ z10_rec,
z10_rec")])
;
ly\t%1,%0"
[(set_attr "op_type" "RR,RI,RRE,RX,RXY,RX,RXY")
(set_attr "type" "lr,*,*,store,store,load,load")
- (set_attr "z10prop" "z10_fr_E1,*,*,z10_super,z10_rec,z10_fwd_A3,z10_fwd_A3")])
+ (set_attr "z10prop" "z10_fr_E1,z10_super,*,z10_rec,z10_rec,z10_fwd_A3,z10_fwd_A3")])
;
; Block move (MVC) patterns.
(clobber (reg:CC CC_REGNUM))]
"TARGET_64BIT"
"icmh\t%0,%2,%S1"
- [(set_attr "op_type" "RSY")])
+ [(set_attr "op_type" "RSY")
+ (set_attr "z10prop" "z10_super")])
(define_insn "*sethighpartdi_31"
[(set (match_operand:DI 0 "register_operand" "=d,d")
[(set_attr "op_type" "RXY,RRE,RIL")
(set_attr "type" "*,*,larl")
(set_attr "cpu_facility" "*,*,z10")
- (set_attr "z10prop" "z10_fwd_A3")])
+ (set_attr "z10prop" "z10_super_E1,z10_fwd_A3,z10_fwd_A3")])
; llhr, llcr, llghr, llgcr, llh, llc, llgh, llgc
(define_insn "*zero_extend<HQI:mode><GPR:mode>2_extimm"
(neg:DI (sign_extend:DI (match_dup 1))))]
"TARGET_64BIT && s390_match_ccmode (insn, CCAmode)"
"lcgfr\t%0,%1"
- [(set_attr "op_type" "RRE")])
+ [(set_attr "op_type" "RRE")
+ (set_attr "z10prop" "z10_c")])
(define_insn "*negdi2_sign"
[(set (match_operand:DI 0 "register_operand" "=d")
(clobber (reg:CC CC_REGNUM))]
"TARGET_64BIT"
"lcgfr\t%0,%1"
- [(set_attr "op_type" "RRE")])
+ [(set_attr "op_type" "RRE")
+ (set_attr "z10prop" "z10_c")])
; lcr, lcgr
(define_insn "*neg<mode>2_cc"
(abs:DI (sign_extend:DI (match_dup 1))))]
"TARGET_64BIT && s390_match_ccmode (insn, CCAmode)"
"lpgfr\t%0,%1"
- [(set_attr "op_type" "RRE")])
+ [(set_attr "op_type" "RRE")
+ (set_attr "z10prop" "z10_c")])
(define_insn "*absdi2_sign"
[(set (match_operand:DI 0 "register_operand" "=d")
(clobber (reg:CC CC_REGNUM))]
"TARGET_64BIT"
"lpgfr\t%0,%1"
- [(set_attr "op_type" "RRE")])
+ [(set_attr "op_type" "RRE")
+ (set_attr "z10prop" "z10_c")])
; lpr, lpgr
(define_insn "*abs<mode>2_cc"
(neg:DI (abs:DI (sign_extend:DI (match_dup 1)))))]
"TARGET_64BIT && s390_match_ccmode (insn, CCAmode)"
"lngfr\t%0,%1"
- [(set_attr "op_type" "RRE")])
+ [(set_attr "op_type" "RRE")
+ (set_attr "z10prop" "z10_c")])
(define_insn "*negabsdi2_sign"
[(set (match_operand:DI 0 "register_operand" "=d")
(clobber (reg:CC CC_REGNUM))]
"TARGET_64BIT"
"lngfr\t%0,%1"
- [(set_attr "op_type" "RRE")])
+ [(set_attr "op_type" "RRE")
+ (set_attr "z10prop" "z10_c")])
; lnr, lngr
(define_insn "*negabs<mode>2_cc"
c<g>it%C0\t%1,%h2"
[(set_attr "op_type" "RRF,RIE")
(set_attr "type" "branch")
- (set_attr "z10prop" "z10_c,*")])
+ (set_attr "z10prop" "z10_super_c,z10_super")])
; clrt, clgrt, clfit, clgit
(define_insn "*cmp_and_trap_unsigned_int<mode>"
cl<gf>it%C0\t%1,%x2"
[(set_attr "op_type" "RRF,RIE")
(set_attr "type" "branch")
- (set_attr "z10prop" "z10_c,*")])
+ (set_attr "z10prop" "z10_super_c,z10_super")])
;;
;;- Loop instructions.
[(set_attr "op_type" "RI")
; Strictly speaking, the z10 properties are valid for brct only, however, it does not
; hurt us in the (rare) case of ahi.
- (set_attr "z10prop" "z10_super")
+ (set_attr "z10prop" "z10_super_E1")
(set_attr "type" "branch")
(set (attr "length")
(if_then_else (lt (abs (minus (pc) (match_dup 0))) (const_int 60000))
[(set_attr "op_type" "RI")
; Strictly speaking, the z10 properties are valid for brct only, however, it does not
; hurt us in the (rare) case of ahi.
- (set_attr "z10prop" "z10_super")
+ (set_attr "z10prop" "z10_super_E1")
(set_attr "type" "branch")
(set (attr "length")
(if_then_else (eq (symbol_ref "flag_pic") (const_int 0))
(if_then_else (match_operand 0 "register_operand" "")
(const_string "RR") (const_string "RX")))
(set_attr "type" "branch")
- (set_attr "atype" "agen")])
+ (set_attr "atype" "agen")
+ (set_attr "z10prop" "z10_cobra")])
(define_insn_and_split "doloop_di"
[(set (pc)
[(set_attr "op_type" "RI")
; Strictly speaking, the z10 properties are valid for brct only, however, it does not
; hurt us in the (rare) case of ahi.
- (set_attr "z10prop" "z10_super")
+ (set_attr "z10prop" "z10_super_E1")
(set_attr "type" "branch")
(set (attr "length")
(if_then_else (lt (abs (minus (pc) (match_dup 0))) (const_int 60000))
(if_then_else (match_operand 0 "register_operand" "")
(const_string "RR") (const_string "RX")))
(set_attr "type" "branch")
- (set_attr "atype" "agen")
- (set_attr "z10prop" "z10_super")])
+ (set_attr "atype" "agen")])
;
; casesi instruction pattern(s).
[(const_int 0)]
""
"lr\t0,0"
- [(set_attr "op_type" "RR")])
+ [(set_attr "op_type" "RR")
+ (set_attr "z10prop" "z10_fr_E1")])
(define_insn "nop1"
[(const_int 1)]
"larl\t%0,%1"
[(set_attr "op_type" "RIL")
(set_attr "type" "larl")
- (set_attr "z10prop" "z10_super_A1")])
+ (set_attr "z10prop" "z10_fwd_A1")])
(define_insn "main_pool"
[(set (match_operand 0 "register_operand" "=a")
"larl\t%0,%1"
[(set_attr "op_type" "RIL")
(set_attr "type" "larl")
- (set_attr "z10prop" "z10_super_A1")])
+ (set_attr "z10prop" "z10_fwd_A1")])
(define_insn "pool"
[(unspec_volatile [(match_operand 0 "const_int_operand" "n")] UNSPECV_POOL)]