(and:SI (match_operand:SI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "const_int_operand" "")))
(clobber (scratch:CC))]
- "reload_completed"
+ "reload_completed && !mask_constant (INTVAL (operands[2]))"
[(set (match_dup 0)
(match_dup 2))
(parallel [(set (match_dup 0)
#
#"
[(set_attr "type" "compare,compare,compare,delayed_compare,compare,compare,compare,compare,compare,compare")
- (set_attr "length" "4,4,4,4,8,12,12,8,16,16")])
+ (set_attr "length" "4,4,4,4,8,8,8,8,12,12")])
(define_split
[(set (match_operand:CC 0 "cc_reg_not_cr0_operand" "")
#
#
#"
- [(set_attr "type" "compare,compare,compare,delayed_compare,compare,compare,compare,compare,compare,compare")])
+ [(set_attr "type" "compare,compare,compare,delayed_compare,compare,compare,compare,compare,compare,compare")
+ (set_attr "length" "4,4,4,4,8,8,8,8,12,12")])
(define_split
[(set (match_operand:CC 3 "cc_reg_not_cr0_operand" "")
(and:DI (match_operand:DI 1 "gpc_reg_operand" "%r,r,r,r")
(match_operand:DI 2 "and_operand" "?r,L,K,J")))
(clobber (match_scratch:CC 3 "=X,X,x,x"))])]
- ""
+ "TARGET_POWERPC64"
"")
;; If cr0 isn't available, and we want to do an andi, load the register into
(and:DI (match_operand:DI 1 "gpc_reg_operand" "%r,r,r,r,r,r")
(match_operand:DI 2 "and_operand" "?r,L,K,J,K,J")))
(clobber (match_operand:CC 3 "scratch_operand" "=X,X,x,x,X,X"))]
- ""
+ "TARGET_POWERPC64"
"@
and %0,%1,%2
{rlinm|rlwinm} %0,%1,0,%m2,%M2
- {andil.|andi.} %0,%1,%b2
- {andiu.|andis.} %0,%1,%u2
+ andil %0,%1,%b2
+ andis. %0,%1,%u2
#
#"
[(set_attr "length" "4,4,4,4,8,8")])
(and:DI (match_operand:DI 1 "gpc_reg_operand" "")
(match_operand:DI 2 "const_int_operand" "")))
(clobber (scratch:CC))]
- "reload_completed"
+ "TARGET_POWERPC64 && reload_completed && !mask_constant (INTVAL (operands[2]))"
[(set (match_dup 0)
(match_dup 2))
(parallel [(set (match_dup 0)
(const_int 0)))
(clobber (match_scratch:DI 3 "=r,r,r,r,r,r,r,r,&r,&r"))
(clobber (match_scratch:CC 4 "=X,X,X,X,X,x,x,X,X,X"))]
- ""
+ "TARGET_POWERPC64"
"@
and. %3,%1,%2
- {andil.|andi.} %3,%1,%b2
- {andiu.|andis.} %3,%1,%u2
- {rlinm.|rlwinm.} %3,%1,0,%m2,%M2
+ andi. %3,%1,%b2
+ andis. %3,%1,%u2
+ rldic%B2. %3,%1,0,%S2
#
#
#
#
#"
[(set_attr "type" "compare,compare,compare,delayed_compare,compare,compare,compare,compare,compare,compare")
- (set_attr "length" "4,4,4,4,8,12,12,8,16,16")])
+ (set_attr "length" "4,4,4,4,8,8,8,8,12,12")])
(define_split
[(set (match_operand:CC 0 "cc_reg_not_cr0_operand" "")
(const_int 0)))
(clobber (match_scratch:DI 3 ""))
(clobber (match_scratch:CC 4 ""))]
- "reload_completed"
+ "TARGET_POWERPC64 && reload_completed"
[(parallel [(set (match_dup 3)
(and:DI (match_dup 1)
(match_dup 2)))
(and:DI (match_dup 1)
(match_dup 2)))
(clobber (match_scratch:CC 4 "=X,X,X,X,X,x,x,X,X,X"))]
- ""
+ "TARGET_POWERPC64"
"@
and. %0,%1,%2
- {andil.|andi.} %0,%1,%b2
- {andiu.|andis.} %0,%1,%u2
- {rlinm.|rlwinm.} %0,%1,0,%m2,%M2
+ andi. %0,%1,%b2
+ andis. %0,%1,%u2
+ rldic%B2 %0,%1,0,%m2,%M2
#
#
#
#
#
#"
- [(set_attr "type" "compare,compare,compare,delayed_compare,compare,compare,compare,compare,compare,compare")])
+ [(set_attr "type" "compare,compare,compare,delayed_compare,compare,compare,compare,compare,compare,compare")
+ (set_attr "length" "4,4,4,4,8,8,8,8,12,12")])
(define_split
[(set (match_operand:CC 3 "cc_reg_not_cr0_operand" "")
(and:DI (match_dup 1)
(match_dup 2)))
(clobber (match_scratch:CC 4 ""))]
- "reload_completed"
+ "TARGET_POWERPC64 && reload_completed"
[(parallel [(set (match_dup 0)
(and:DI (match_dup 1)
(match_dup 2)))