public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/63949] New: Aarch64 instruction combiner does not optimize subsi_sxth function as expected
@ 2014-11-19 10:23 vekumar at gcc dot gnu.org
  2014-11-19 12:05 ` [Bug target/63949] " ktkachov at gcc dot gnu.org
                   ` (11 more replies)
  0 siblings, 12 replies; 13+ messages in thread
From: vekumar at gcc dot gnu.org @ 2014-11-19 10:23 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63949

            Bug ID: 63949
           Summary: Aarch64 instruction combiner does not optimize
                    subsi_sxth function as expected
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: vekumar at gcc dot gnu.org

Reference: https://bugs.linaro.org/show_bug.cgi?id=863

Test case 

int   subsi_sxth (int a, short  i)
{
  /* { dg-final { scan-assembler "sub\tw\[0-9\]+,.*sxth #?1" } } */
  return a - ((int)i << 1);
}

Assembly generated with GCC 5.0.0 20141114

subsi_sxth:
        sbfiz   w1, w1, 1, 16
        sub     w0, w0, w1
        ret

Expected 
       subw    w0,w0,w1,sxth 1


Combiner Says Failed to mismatch 

set (reg/i:SI 0 x0)
    (minus:SI (reg:SI 0 x0 [ a ])
        (subreg:SI (sign_extract:DI (mult:DI (reg:DI 1 x1 [ i ])
                    (const_int 2 [0x2]))
                (const_int 17 [0x11])
                (const_int 0 [0])) 0)))

We have a pattern that would match in aarch64.md file, but it is not
recognized.

(define_insn "*sub_<optab><mode>_multp2"
   [(set (match_operand:GPI 0 "register_operand" "=rk")
         (minus:GPI (match_operand:GPI 4 "register_operand" "r")
                    (ANY_EXTRACT:GPI
                     (mult:GPI (match_operand:GPI 1 "register_operand" "r")
                               (match_operand 2 "aarch64_pwr_imm3" "Up3"))
                     (match_operand 3 "const_int_operand" "n")
                     (const_int 0))))]
   "aarch64_is_extend_from_extract (<MODE>mode, operands[2], operands[3])"
   "sub\\t%<w>0, %<w>4, %<w>1, <su>xt%e3 %p2"
   [(set_attr "type" "alu_ext")]
 )


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/63949] Aarch64 instruction combiner does not optimize subsi_sxth function as expected
  2014-11-19 10:23 [Bug target/63949] New: Aarch64 instruction combiner does not optimize subsi_sxth function as expected vekumar at gcc dot gnu.org
@ 2014-11-19 12:05 ` ktkachov at gcc dot gnu.org
  2014-11-19 17:20 ` pinskia at gcc dot gnu.org
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: ktkachov at gcc dot gnu.org @ 2014-11-19 12:05 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63949

ktkachov at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization
             Target|                            |aarch64*
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2014-11-19
                 CC|                            |ktkachov at gcc dot gnu.org
     Ever confirmed|0                           |1
      Known to fail|                            |4.8.4, 4.9.2, 5.0

--- Comment #1 from ktkachov at gcc dot gnu.org ---
Confirmed. Also, I see it failing on 4.9.2 and 4.8.4 as well. Has this ever
worked?


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/63949] Aarch64 instruction combiner does not optimize subsi_sxth function as expected
  2014-11-19 10:23 [Bug target/63949] New: Aarch64 instruction combiner does not optimize subsi_sxth function as expected vekumar at gcc dot gnu.org
  2014-11-19 12:05 ` [Bug target/63949] " ktkachov at gcc dot gnu.org
@ 2014-11-19 17:20 ` pinskia at gcc dot gnu.org
  2014-11-22 10:27 ` [Bug target/63949] Aarch64 instruction combiner does not optimize subsi_sxth function as expected (gcc.target/aarch64/extend.c fails) rearnsha at gcc dot gnu.org
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: pinskia at gcc dot gnu.org @ 2014-11-19 17:20 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63949

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to ktkachov from comment #1)
> Confirmed. Also, I see it failing on 4.9.2 and 4.8.4 as well. Has this ever
> worked?

No I have never seen it work.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/63949] Aarch64 instruction combiner does not optimize subsi_sxth function as expected (gcc.target/aarch64/extend.c fails)
  2014-11-19 10:23 [Bug target/63949] New: Aarch64 instruction combiner does not optimize subsi_sxth function as expected vekumar at gcc dot gnu.org
  2014-11-19 12:05 ` [Bug target/63949] " ktkachov at gcc dot gnu.org
  2014-11-19 17:20 ` pinskia at gcc dot gnu.org
@ 2014-11-22 10:27 ` rearnsha at gcc dot gnu.org
  2014-12-19 11:28 ` vekumar at gcc dot gnu.org
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: rearnsha at gcc dot gnu.org @ 2014-11-22 10:27 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63949

--- Comment #3 from Richard Earnshaw <rearnsha at gcc dot gnu.org> ---
make_extraction is unable to generate bit-field extractions in more than one
mode.  This causes the extractions that it does generate to be wrapped in
subregs when SImode results are wanted.

Ideally, we should teach make_extraction to be more sensible, but I'm not sure
what the impact of that would be on other ports that really can only support
one mode for bit-field extracts.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/63949] Aarch64 instruction combiner does not optimize subsi_sxth function as expected (gcc.target/aarch64/extend.c fails)
  2014-11-19 10:23 [Bug target/63949] New: Aarch64 instruction combiner does not optimize subsi_sxth function as expected vekumar at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2014-11-22 10:27 ` [Bug target/63949] Aarch64 instruction combiner does not optimize subsi_sxth function as expected (gcc.target/aarch64/extend.c fails) rearnsha at gcc dot gnu.org
@ 2014-12-19 11:28 ` vekumar at gcc dot gnu.org
  2014-12-19 11:52 ` vekumar at gcc dot gnu.org
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: vekumar at gcc dot gnu.org @ 2014-12-19 11:28 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63949

--- Comment #4 from vekumar at gcc dot gnu.org ---
(In reply to Richard Earnshaw from comment #3)
> make_extraction is unable to generate bit-field extractions in more than one
> mode.  This causes the extractions that it does generate to be wrapped in
> subregs when SImode results are wanted.
> 
> Ideally, we should teach make_extraction to be more sensible, but I'm not
> sure what the impact of that would be on other ports that really can only
> support one mode for bit-field extracts.

Yes, make_extraction converts mult to sign extract RTL.

RTL from (mult: SI (reg: SI 1 x1 [i])
              ( constant_int 2 [0x2]))

to 

(subreg: SI (sign_extract: DI (ashift: DI (reg DI 1 x1 [i]) 
                                      (constant_int 1 [0x1]))
                              (constant_int 17 [0x11]))
            (constant_int 0 [0x0]))


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/63949] Aarch64 instruction combiner does not optimize subsi_sxth function as expected (gcc.target/aarch64/extend.c fails)
  2014-11-19 10:23 [Bug target/63949] New: Aarch64 instruction combiner does not optimize subsi_sxth function as expected vekumar at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2014-12-19 11:28 ` vekumar at gcc dot gnu.org
@ 2014-12-19 11:52 ` vekumar at gcc dot gnu.org
  2015-01-01 11:35 ` vekumar at gcc dot gnu.org
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: vekumar at gcc dot gnu.org @ 2014-12-19 11:52 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63949

--- Comment #5 from vekumar at gcc dot gnu.org ---
Richard, what the function get_best_reg_extraction_insn is supposed to do in
make_extraction ?


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/63949] Aarch64 instruction combiner does not optimize subsi_sxth function as expected (gcc.target/aarch64/extend.c fails)
  2014-11-19 10:23 [Bug target/63949] New: Aarch64 instruction combiner does not optimize subsi_sxth function as expected vekumar at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2014-12-19 11:52 ` vekumar at gcc dot gnu.org
@ 2015-01-01 11:35 ` vekumar at gcc dot gnu.org
  2015-01-02 13:38 ` vekumar at gcc dot gnu.org
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: vekumar at gcc dot gnu.org @ 2015-01-01 11:35 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63949

--- Comment #6 from vekumar at gcc dot gnu.org ---
In the function make_compound_operation, there a check 

      /* See if we have operations between an ASHIFTRT and an ASHIFT.
         If so, try to merge the shifts into a SIGN_EXTEND.  We could
         also do this for some cases of SIGN_EXTRACT, but it doesn't
         seem worth the effort; the case checked for occurs on Alpha.          
*/

if (!OBJECT_P (lhs)
          && ! (GET_CODE (lhs) == SUBREG
                && (OBJECT_P (SUBREG_REG (lhs))))
          && CONST_INT_P (rhs)
          && INTVAL (rhs) < HOST_BITS_PER_WIDE_INT
          && INTVAL (rhs) < mode_width
          && (new_rtx = extract_left_shift (lhs, INTVAL (rhs))) != 0)
        new_rtx = make_extraction (mode, make_compound_operation (new_rtx,
next_code),
                               0, NULL_RTX, mode_width - INTVAL (rhs),
                               code == LSHIFTRT, 0, in_code == COMPARE);

      break;



Our input RTL actually matches this case. 

For (int)i << 1  we are getting incomming RTX as 

(ashiftrt:SI (ashift:SI (reg:SI 1 x1 [ i ])
        (const_int 16 [0x10]))
    (const_int 15 [0xf]))


LHS is ashift:SI (reg:SI 1 x1 [ i ])
        (const_int 16 [0x10]) 

RHS is ashiftrt with a value of 15.

So bacially we get (i<<16)>>15, we can merge these shifts to sign_extends.

With extract_left_shift we get 

(ashift:SI (reg:SI 1 x1 [ i ])
    (const_int 1 [0x1]))

or x1<<1

When we do make_extraction with this shift pattern we get 

    (ashift:SI (sign_extend:SI (reg:HI 1 x1 [ i ]))
        (const_int 1 [0x1])))


But instead this we are the shift RTX, we are actually passing MULT RTX to
make_extraction via another make_compound_operation.

p make_compound_operation(new_rtx,MEM)
$3 = (rtx_def *) 0x7ffff77fd420
(gdb) pr
(mult:SI (reg:SI 1 x1 [ i ])
    (const_int 2 [0x2]))

Which results in 

 (subreg:SI (sign_extract:DI (mult:DI (reg:DI 1 x1 [ i ])
                (const_int 2 [0x2]))
            (const_int 17 [0x11])
            (const_int 0 [0])) 0)

When I changed the original check to

--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -7896,7 +7896,7 @@ make_compound_operation (rtx x, enum rtx_code in_code)
          && INTVAL (rhs) < HOST_BITS_PER_WIDE_INT
          && INTVAL (rhs) < mode_width
          && (new_rtx = extract_left_shift (lhs, INTVAL (rhs))) != 0)
-       new_rtx = make_extraction (mode, make_compound_operation (new_rtx,
next_
+       new_rtx = make_extraction (mode, new_rtx,
                               0, NULL_RTX, mode_width - INTVAL (rhs),
                               code == LSHIFTRT, 0, in_code == COMPARE)

Combiner was able to match the pattern successfully.

Trying 8 -> 13:
Successfully matched this instruction:
(set (reg/i:SI 0 x0)
    (minus:SI (reg:SI 0 x0 [ a ])
        (ashift:SI (sign_extend:SI (reg:HI 1 x1 [ i ]))
            (const_int 1 [0x1]))))
(minus:SI (reg:SI 0 x0 [ a ])
    (ashift:SI (sign_extend:SI (reg:HI 1 x1 [ i ]))

Any comments about this change?
        (const_int 1 [0x1])))


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/63949] Aarch64 instruction combiner does not optimize subsi_sxth function as expected (gcc.target/aarch64/extend.c fails)
  2014-11-19 10:23 [Bug target/63949] New: Aarch64 instruction combiner does not optimize subsi_sxth function as expected vekumar at gcc dot gnu.org
                   ` (5 preceding siblings ...)
  2015-01-01 11:35 ` vekumar at gcc dot gnu.org
@ 2015-01-02 13:38 ` vekumar at gcc dot gnu.org
  2015-01-06  8:13 ` vekumar at gcc dot gnu.org
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: vekumar at gcc dot gnu.org @ 2015-01-02 13:38 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63949

--- Comment #7 from vekumar at gcc dot gnu.org ---
I ran GCC tests against the patch found one failure. 

int
adds_shift_ext ( long long a, int b, int c)
{
 long long  d = (a + ((long long)b << 3));

  if (d == 0)
    return a + c;
  else
    return b + d + c;
}


The test expects adds generation and before my fix it is generated .
adds_shift_ext:
        adds    x3, x0, x1, sxtw 3      // 11   *adds_extvdi_multp2     [length
= 4]
        beq     .L5     // 12   *condjump       [length = 4]

But now I am generating sign extends with shifts instead of sign extends with
mul in my patch.

adds_shift_ext:
        add     x3, x0, x1, sxtw 3      // 10   *add_extendsi_shft_di   [length
= 4]
        cbz     x3, .L5 // 12   *cbeqdi1        [length = 4]

We don't have *adds_extendsi_shft_di pattern. We have patterns for
adds_extvdi_multp2 that extends an operation over mult.

Adding one will help optimize this case. But my concern is what if other
targets  hits the same issue?


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/63949] Aarch64 instruction combiner does not optimize subsi_sxth function as expected (gcc.target/aarch64/extend.c fails)
  2014-11-19 10:23 [Bug target/63949] New: Aarch64 instruction combiner does not optimize subsi_sxth function as expected vekumar at gcc dot gnu.org
                   ` (6 preceding siblings ...)
  2015-01-02 13:38 ` vekumar at gcc dot gnu.org
@ 2015-01-06  8:13 ` vekumar at gcc dot gnu.org
  2015-01-08 12:07 ` segher at gcc dot gnu.org
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: vekumar at gcc dot gnu.org @ 2015-01-06  8:13 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63949

--- Comment #8 from vekumar at gcc dot gnu.org ---
This is complete patch for the first approach that I took (comment 6). This
patch fixes issues I faced while testing. But I have added extra patterns to
cater the sign extended operands with left shifts. This might impact other
targets as well :( 

Now I am also exploring other possibilities instead of writing extra patterns. 


diff --git a/gcc/combine.c b/gcc/combine.c
index ee7b3f9..80b345d 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -7896,7 +7896,7 @@ make_compound_operation (rtx x, enum rtx_code in_code)
          && INTVAL (rhs) < HOST_BITS_PER_WIDE_INT
          && INTVAL (rhs) < mode_width
          && (new_rtx = extract_left_shift (lhs, INTVAL (rhs))) != 0)
-       new_rtx = make_extraction (mode, make_compound_operation (new_rtx,
next_
+       new_rtx = make_extraction (mode, new_rtx,
                               0, NULL_RTX, mode_width - INTVAL (rhs),
                               code == LSHIFTRT, 0, in_code == COMPARE);

diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
index 97d7009..f0b9240 100644
--- a/gcc/config/aarch64/aarch64.md
+++ b/gcc/config/aarch64/aarch64.md
@@ -1570,26 +1570,62 @@
   [(set_attr "type" "alus_ext")]
 )

-(define_insn "*adds_<optab><mode>_multp2"
+(define_insn "*adds_<optab><mode>_extend_ashift"
   [(set (reg:CC_NZ CC_REGNUM)
        (compare:CC_NZ
-        (plus:GPI (ANY_EXTRACT:GPI
-                   (mult:GPI (match_operand:GPI 1 "register_operand" "r")
-                             (match_operand 2 "aarch64_pwr_imm3" "Up3"))
-                   (match_operand 3 "const_int_operand" "n")
-                   (const_int 0))
-                  (match_operand:GPI 4 "register_operand" "r"))
+        (plus:GPI (match_operand:GPI 1 "register_operand" "r")
+                  (ashift:GPI (ANY_EXTEND:GPI
+                                (match_operand:ALLX 2 "register_operand" "r"))
+                               (match_operand 3 "aarch64_imm3" "Ui3")))
        (const_int 0)))
    (set (match_operand:GPI 0 "register_operand" "=r")
-       (plus:GPI (ANY_EXTRACT:GPI (mult:GPI (match_dup 1) (match_dup 2))
-                                  (match_dup 3)
-                                  (const_int 0))
-                 (match_dup 4)))]
+       (plus:GPI  (match_dup 1) 
+                   (ashift:GPI (ANY_EXTEND:GPI (match_dup 2))
+                               (match_dup 3))))]
+  ""
+  "adds\\t%<w>0, %<w>1, %<w>2, <su>xt %3"
+  [(set_attr "type" "alus_ext")]
+)
+
+(define_insn "*subs_<optab><mode>_extend_ashift"
+  [(set (reg:CC_NZ CC_REGNUM)
+        (compare:CC_NZ
+         (minus:GPI (match_operand:GPI 1 "register_operand" "r")
+                    (ashift:GPI (ANY_EXTEND:GPI
+                                  (match_operand:ALLX 2 "register_operand"
"r")
+                                 (match_operand 3 "aarch64_imm3" "Ui3")))
+        (const_int 0)))
+   (set (match_operand:GPI 0 "register_operand" "=r")
+        (minus:GPI (match_dup 1)
+                   (ashift:GPI (ANY_EXTEND:GPI (match_dup 2))
+                                (match_dup 3))))]
+  ""
+  "subs\\t%<w>0, %<w>1, %<w>2, <su>xt %3"
+  [(set_attr "type" "alus_ext")]
+)
+
+
+(define_insn "*adds_<optab><mode>_multp2"
+  [(set (reg:CC_NZ CC_REGNUM)
+        (compare:CC_NZ
+         (plus:GPI (ANY_EXTRACT:GPI
+                    (mult:GPI (match_operand:GPI 1 "register_operand" "r")
+                              (match_operand 2 "aarch64_pwr_imm3" "Up3"))
+                    (match_operand 3 "const_int_operand" "n")
+                    (const_int 0))
+                   (match_operand:GPI 4 "register_operand" "r"))
+        (const_int 0)))
+   (set (match_operand:GPI 0 "register_operand" "=r")
+        (plus:GPI (ANY_EXTRACT:GPI (mult:GPI (match_dup 1) (match_dup 2))
+                                   (match_dup 3)
+                                   (const_int 0))
+                  (match_dup 4)))]
   "aarch64_is_extend_from_extract (<MODE>mode, operands[2], operands[3])"
   "adds\\t%<w>0, %<w>4, %<w>1, <su>xt%e3 %p2"
   [(set_attr "type" "alus_ext")]
 )

+
 (define_insn "*subs_<optab><mode>_multp2"
   [(set (reg:CC_NZ CC_REGNUM)
        (compare:CC_NZ


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/63949] Aarch64 instruction combiner does not optimize subsi_sxth function as expected (gcc.target/aarch64/extend.c fails)
  2014-11-19 10:23 [Bug target/63949] New: Aarch64 instruction combiner does not optimize subsi_sxth function as expected vekumar at gcc dot gnu.org
                   ` (7 preceding siblings ...)
  2015-01-06  8:13 ` vekumar at gcc dot gnu.org
@ 2015-01-08 12:07 ` segher at gcc dot gnu.org
  2015-01-15 10:56 ` ramana at gcc dot gnu.org
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: segher at gcc dot gnu.org @ 2015-01-08 12:07 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63949

Segher Boessenkool <segher at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |segher at gcc dot gnu.org

--- Comment #9 from Segher Boessenkool <segher at gcc dot gnu.org> ---
A MULT by a constant power of 2 is not canonical RTL (well, not what
simplify_rtx would give you); combine shouldn't generate this.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/63949] Aarch64 instruction combiner does not optimize subsi_sxth function as expected (gcc.target/aarch64/extend.c fails)
  2014-11-19 10:23 [Bug target/63949] New: Aarch64 instruction combiner does not optimize subsi_sxth function as expected vekumar at gcc dot gnu.org
                   ` (8 preceding siblings ...)
  2015-01-08 12:07 ` segher at gcc dot gnu.org
@ 2015-01-15 10:56 ` ramana at gcc dot gnu.org
  2015-01-15 10:57 ` pinskia at gcc dot gnu.org
  2015-05-26 16:36 ` vekumar at gcc dot gnu.org
  11 siblings, 0 replies; 13+ messages in thread
From: ramana at gcc dot gnu.org @ 2015-01-15 10:56 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63949

Ramana Radhakrishnan <ramana at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
                 CC|                            |ramana at gcc dot gnu.org


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/63949] Aarch64 instruction combiner does not optimize subsi_sxth function as expected (gcc.target/aarch64/extend.c fails)
  2014-11-19 10:23 [Bug target/63949] New: Aarch64 instruction combiner does not optimize subsi_sxth function as expected vekumar at gcc dot gnu.org
                   ` (9 preceding siblings ...)
  2015-01-15 10:56 ` ramana at gcc dot gnu.org
@ 2015-01-15 10:57 ` pinskia at gcc dot gnu.org
  2015-05-26 16:36 ` vekumar at gcc dot gnu.org
  11 siblings, 0 replies; 13+ messages in thread
From: pinskia at gcc dot gnu.org @ 2015-01-15 10:57 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63949

--- Comment #11 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
https://gcc.gnu.org/ml/gcc-patches/2015-01/msg01020.html


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/63949] Aarch64 instruction combiner does not optimize subsi_sxth function as expected (gcc.target/aarch64/extend.c fails)
  2014-11-19 10:23 [Bug target/63949] New: Aarch64 instruction combiner does not optimize subsi_sxth function as expected vekumar at gcc dot gnu.org
                   ` (10 preceding siblings ...)
  2015-01-15 10:57 ` pinskia at gcc dot gnu.org
@ 2015-05-26 16:36 ` vekumar at gcc dot gnu.org
  11 siblings, 0 replies; 13+ messages in thread
From: vekumar at gcc dot gnu.org @ 2015-05-26 16:36 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63949

vekumar at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED

--- Comment #12 from vekumar at gcc dot gnu.org ---
Fixed at r222874

 https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=222874

2015-05-07  Venkataramanan Kumar  <venkataramanan.kumar@amd.com>

        * combine.c (make_compound_operation): Remove checks for PLUS/MINUS
        rtx type.


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2015-05-26 16:36 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-19 10:23 [Bug target/63949] New: Aarch64 instruction combiner does not optimize subsi_sxth function as expected vekumar at gcc dot gnu.org
2014-11-19 12:05 ` [Bug target/63949] " ktkachov at gcc dot gnu.org
2014-11-19 17:20 ` pinskia at gcc dot gnu.org
2014-11-22 10:27 ` [Bug target/63949] Aarch64 instruction combiner does not optimize subsi_sxth function as expected (gcc.target/aarch64/extend.c fails) rearnsha at gcc dot gnu.org
2014-12-19 11:28 ` vekumar at gcc dot gnu.org
2014-12-19 11:52 ` vekumar at gcc dot gnu.org
2015-01-01 11:35 ` vekumar at gcc dot gnu.org
2015-01-02 13:38 ` vekumar at gcc dot gnu.org
2015-01-06  8:13 ` vekumar at gcc dot gnu.org
2015-01-08 12:07 ` segher at gcc dot gnu.org
2015-01-15 10:56 ` ramana at gcc dot gnu.org
2015-01-15 10:57 ` pinskia at gcc dot gnu.org
2015-05-26 16:36 ` vekumar at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).