Commit e3b4d9d7 by Uros Bizjak Committed by Uros Bizjak

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
parent 871b49af
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> 2019-08-07 Richard Sandiford <richard.sandiford@arm.com>
* config/aarch64/iterators.md (commutative): Remove. * config/aarch64/iterators.md (commutative): Remove.
......
...@@ -9337,13 +9337,10 @@ ...@@ -9337,13 +9337,10 @@
[(set_attr "type" "negnot") [(set_attr "type" "negnot")
(set_attr "mode" "<MODE>")]) (set_attr "mode" "<MODE>")])
;; Combine is quite creative about this pattern.
(define_insn "*negsi2_1_zext" (define_insn "*negsi2_1_zext"
[(set (match_operand:DI 0 "register_operand" "=r") [(set (match_operand:DI 0 "register_operand" "=r")
(lshiftrt:DI (zero_extend:DI
(neg:DI (ashift:DI (match_operand:DI 1 "register_operand" "0") (neg:SI (match_operand:SI 1 "register_operand" "0"))))
(const_int 32)))
(const_int 32)))
(clobber (reg:CC FLAGS_REG))] (clobber (reg:CC FLAGS_REG))]
"TARGET_64BIT && ix86_unary_operator_ok (NEG, SImode, operands)" "TARGET_64BIT && ix86_unary_operator_ok (NEG, SImode, operands)"
"neg{l}\t%k0" "neg{l}\t%k0"
...@@ -9369,16 +9366,11 @@ ...@@ -9369,16 +9366,11 @@
(define_insn "*negsi2_cmpz_zext" (define_insn "*negsi2_cmpz_zext"
[(set (reg:CCZ FLAGS_REG) [(set (reg:CCZ FLAGS_REG)
(compare:CCZ (compare:CCZ
(lshiftrt:DI (neg:SI (match_operand:SI 1 "register_operand" "0"))
(neg:DI (ashift:DI
(match_operand:DI 1 "register_operand" "0")
(const_int 32)))
(const_int 32))
(const_int 0))) (const_int 0)))
(set (match_operand:DI 0 "register_operand" "=r") (set (match_operand:DI 0 "register_operand" "=r")
(lshiftrt:DI (neg:DI (ashift:DI (match_dup 1) (zero_extend:DI
(const_int 32))) (neg:SI (match_dup 1))))]
(const_int 32)))]
"TARGET_64BIT && ix86_unary_operator_ok (NEG, SImode, operands)" "TARGET_64BIT && ix86_unary_operator_ok (NEG, SImode, operands)"
"neg{l}\t%k0" "neg{l}\t%k0"
[(set_attr "type" "negnot") [(set_attr "type" "negnot")
...@@ -9698,7 +9690,6 @@ ...@@ -9698,7 +9690,6 @@
[(set_attr "type" "negnot") [(set_attr "type" "negnot")
(set_attr "mode" "<MODE>")]) (set_attr "mode" "<MODE>")])
;; ??? Currently never generated - xor is used instead.
(define_insn "*one_cmplsi2_1_zext" (define_insn "*one_cmplsi2_1_zext"
[(set (match_operand:DI 0 "register_operand" "=r") [(set (match_operand:DI 0 "register_operand" "=r")
(zero_extend:DI (zero_extend:DI
...@@ -9749,7 +9740,6 @@ ...@@ -9749,7 +9740,6 @@
(set (match_dup 1) (set (match_dup 1)
(xor:SWI (match_dup 3) (const_int -1)))])]) (xor:SWI (match_dup 3) (const_int -1)))])])
;; ??? Currently never generated - xor is used instead.
(define_insn "*one_cmplsi2_2_zext" (define_insn "*one_cmplsi2_2_zext"
[(set (reg FLAGS_REG) [(set (reg FLAGS_REG)
(compare (not:SI (match_operand:SI 1 "register_operand" "0")) (compare (not:SI (match_operand:SI 1 "register_operand" "0"))
......
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> 2019-08-07 Marek Polacek <polacek@redhat.com>
PR c++/81429 - wrong parsing of constructor with C++11 attribute. PR c++/81429 - wrong parsing of constructor with C++11 attribute.
......
/* { 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;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment