mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-20 09:20:42 +08:00
arm.md: New split to transform ((X << y) - 1) into ~(~(X-1) << y) for constant X.
* arm.md: New split to transform ((X << y) - 1) into ~(~(X-1) << y) for constant X. From-SVN: r74417
This commit is contained in:
parent
c41affc725
commit
de9315db9c
@ -1,3 +1,8 @@
|
||||
2003-12-08 Richard Earnshaw <rearnsha@arm.com>
|
||||
|
||||
* arm.md: New split to transform ((X << y) - 1) into ~(~(X-1) << y)
|
||||
for constant X.
|
||||
|
||||
2003-12-08 Richard Sandiford <rsandifo@redhat.com>
|
||||
|
||||
* calls.c (expand_call): Don't try using tail or recursive calls
|
||||
|
@ -847,6 +847,20 @@
|
||||
(set_attr "length" "4,8")]
|
||||
)
|
||||
|
||||
; transform ((x << y) - 1) to ~(~(x-1) << y) Where X is a constant.
|
||||
(define_split
|
||||
[(set (match_operand:SI 0 "s_register_operand" "")
|
||||
(plus:SI (ashift:SI (match_operand:SI 1 "const_int_operand" "")
|
||||
(match_operand:SI 2 "s_register_operand" ""))
|
||||
(const_int -1)))
|
||||
(clobber (match_operand:SI 3 "s_register_operand" ""))]
|
||||
"TARGET_ARM"
|
||||
[(set (match_dup 3) (match_dup 1))
|
||||
(set (match_dup 0) (not:SI (ashift:SI (match_dup 3) (match_dup 2))))]
|
||||
"
|
||||
operands[1] = GEN_INT (~(INTVAL (operands[1]) - 1));
|
||||
")
|
||||
|
||||
(define_expand "addsf3"
|
||||
[(set (match_operand:SF 0 "s_register_operand" "")
|
||||
(plus:SF (match_operand:SF 1 "s_register_operand" "")
|
||||
|
Loading…
x
Reference in New Issue
Block a user