Issue 61538
Summary [AArch64] optimization of "(1 + 2 * a * b > 0) ? a : a * b"
Labels
Assignees
Reporter k-arrows
    Test code:
```c
int foo(int a, int b)
{
    return (1 + 2 * a * b > 0) ? a : a * b ;
}
```

clang
```asm
foo(int, int): // @foo(int, int)
        mul     w8, w0, w1
 mov     w9, #1                          // =0x1
        orr     w8, w9, w8, lsl #1
        cmp     w8, #1
        csinc   w8, w1, wzr, lt
 mul     w0, w8, w0
 ret
```

gcc
```asm
foo(int, int):
        mul     w1, w0, w1
        cmp     w1, 0
        csel    w0, w1, w0, lt
 ret
```

https://godbolt.org/z/b79ehqG77
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to