Merge lp:~ramana/gcc-linaro/47-smin-umin-idiom into lp:gcc-linaro/4.7
Status: | Rejected |
---|---|
Rejected by: | Michael Hope |
Proposed branch: | lp:~ramana/gcc-linaro/47-smin-umin-idiom |
Merge into: | lp:gcc-linaro/4.7 |
To merge this branch: | bzr merge lp:~ramana/gcc-linaro/47-smin-umin-idiom |
Related bugs: | |
Related blueprints: |
Detect smin / umin idiom
(Medium)
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Linaro Toolchain Developers | Pending | ||
Review via email: mp+104327@code.launchpad.net |
Description of the change
Proposed patch modifies code on the left as the equivalent code on the right. Pushing this for some regression testing before asking upstream.
foo: foo:
@ args = 0, pretend = 0, frame = 0 @ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0 @ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated. @ link register save eliminated.
cmp r2, r1 <
movcs r2, r1 <
cmp r2, r0 cmp r2, r0
> cmpcs r1, r0
movls r0, #0 movls r0, #0
movhi r0, #1 movhi r0, #1
bx lr bx lr
.size foo, .-foo .size foo, .-foo
.align 2 .align 2
.global bar .global bar
.type bar, %function .type bar, %function
bar: bar:
@ args = 0, pretend = 0, frame = 0 @ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0 @ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated. @ link register save eliminated.
cmp r2, r1 <
movge r2, r1 <
cmp r2, r0 cmp r2, r0
> cmpge r1, r0
movle r0, #0 movle r0, #0
movgt r0, #1 movgt r0, #1
bx lr bx lr
Better diff below :)
/* { dg-options "-O2" } */
/* { dg-skip-if "" { arm_thumb1_ok } } */
/* { dg-final { scan-assembler "cmpge\t" } } */
/* { dg-final { scan-assembler "cmpcs\t" } } */
#define min(x, y) ((x) <= (y)) ? (x) : (y)
unsigned int foo (unsigned int i, unsigned int x ,unsigned int y)
{
return i < (min (x, y));
}
int bar (int i, int x, int y)
{
return i < (min (x, y));
}
@@ -19,9 +18,8 @@
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
- cmp r2, r1
- movcs r2, r1
cmp r2, r0
+ cmpcs r1, r0
movls r0, #0
movhi r0, #1
bx lr
@@ -33,12 +31,11 @@
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
- cmp r2, r1
- movge r2, r1
cmp r2, r0
+ cmpge r1, r0
movle r0, #0
movgt r0, #1
bx lr
@@ -19,9 +18,8 @@
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
- cmp r2, r1
- movcs r2, r1
cmp r2, r0
+ cmpcs r1, r0
movls r0, #0
movhi r0, #1
bx lr
@@ -33,12 +31,11 @@
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
- cmp r2, r1
- movge r2, r1
cmp r2, r0
+ cmpge r1, r0
movle r0, #0
movgt r0, #1
bx lr