re PR target/91385 (Zero-extended negation (*negsi2_1_zext) is not generated)
PR target/91385 * config/i386/sse.md (*negsi2_1_zext): Simplify insn pattern. (*negsi2_cmpz_zext): Ditto. testsuite/ChangeLog: PR target/91385 * gcc.target/i386/pr91385.c: New test. From-SVN: r274183
This commit is contained in:
parent
871b49afaf
commit
e3b4d9d702
4 changed files with 25 additions and 15 deletions
|
@ -1,3 +1,9 @@
|
|||
2019-08-07 Uroš Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/91385
|
||||
* config/i386/sse.md (*negsi2_1_zext): Simplify insn pattern.
|
||||
(*negsi2_cmpz_zext): Ditto.
|
||||
|
||||
2019-08-07 Richard Sandiford <richard.sandiford@arm.com>
|
||||
|
||||
* config/aarch64/iterators.md (commutative): Remove.
|
||||
|
|
|
@ -9337,13 +9337,10 @@
|
|||
[(set_attr "type" "negnot")
|
||||
(set_attr "mode" "<MODE>")])
|
||||
|
||||
;; Combine is quite creative about this pattern.
|
||||
(define_insn "*negsi2_1_zext"
|
||||
[(set (match_operand:DI 0 "register_operand" "=r")
|
||||
(lshiftrt:DI
|
||||
(neg:DI (ashift:DI (match_operand:DI 1 "register_operand" "0")
|
||||
(const_int 32)))
|
||||
(const_int 32)))
|
||||
(zero_extend:DI
|
||||
(neg:SI (match_operand:SI 1 "register_operand" "0"))))
|
||||
(clobber (reg:CC FLAGS_REG))]
|
||||
"TARGET_64BIT && ix86_unary_operator_ok (NEG, SImode, operands)"
|
||||
"neg{l}\t%k0"
|
||||
|
@ -9369,16 +9366,11 @@
|
|||
(define_insn "*negsi2_cmpz_zext"
|
||||
[(set (reg:CCZ FLAGS_REG)
|
||||
(compare:CCZ
|
||||
(lshiftrt:DI
|
||||
(neg:DI (ashift:DI
|
||||
(match_operand:DI 1 "register_operand" "0")
|
||||
(const_int 32)))
|
||||
(const_int 32))
|
||||
(neg:SI (match_operand:SI 1 "register_operand" "0"))
|
||||
(const_int 0)))
|
||||
(set (match_operand:DI 0 "register_operand" "=r")
|
||||
(lshiftrt:DI (neg:DI (ashift:DI (match_dup 1)
|
||||
(const_int 32)))
|
||||
(const_int 32)))]
|
||||
(zero_extend:DI
|
||||
(neg:SI (match_dup 1))))]
|
||||
"TARGET_64BIT && ix86_unary_operator_ok (NEG, SImode, operands)"
|
||||
"neg{l}\t%k0"
|
||||
[(set_attr "type" "negnot")
|
||||
|
@ -9698,7 +9690,6 @@
|
|||
[(set_attr "type" "negnot")
|
||||
(set_attr "mode" "<MODE>")])
|
||||
|
||||
;; ??? Currently never generated - xor is used instead.
|
||||
(define_insn "*one_cmplsi2_1_zext"
|
||||
[(set (match_operand:DI 0 "register_operand" "=r")
|
||||
(zero_extend:DI
|
||||
|
@ -9749,7 +9740,6 @@
|
|||
(set (match_dup 1)
|
||||
(xor:SWI (match_dup 3) (const_int -1)))])])
|
||||
|
||||
;; ??? Currently never generated - xor is used instead.
|
||||
(define_insn "*one_cmplsi2_2_zext"
|
||||
[(set (reg FLAGS_REG)
|
||||
(compare (not:SI (match_operand:SI 1 "register_operand" "0"))
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2019-08-07 Uroš Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/91385
|
||||
* gcc.target/i386/pr91385.c: New test.
|
||||
|
||||
2019-08-07 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR c++/81429 - wrong parsing of constructor with C++11 attribute.
|
||||
|
|
9
gcc/testsuite/gcc.target/i386/pr91385.c
Normal file
9
gcc/testsuite/gcc.target/i386/pr91385.c
Normal file
|
@ -0,0 +1,9 @@
|
|||
/* { dg-do compile { target { ! ia32 } } } */
|
||||
/* { dg-options "-O2 -dp" } */
|
||||
/* { dg-final { scan-assembler-not "zero_extendsidi" } } */
|
||||
|
||||
unsigned long long
|
||||
foo (unsigned int a)
|
||||
{
|
||||
return -a;
|
||||
}
|
Loading…
Add table
Reference in a new issue