| /* { dg-do compile } */ |
| /* { dg-options "-O2" } */ |
| |
| /* |
| ** inv1: |
| ** cmp w0, 0 |
| ** csinv w0, w1, w2, ne |
| ** ret |
| */ |
| unsigned long long |
| inv1(unsigned a, unsigned b, unsigned c) |
| { |
| unsigned t = a ? b : ~c; |
| return t; |
| } |
| |
| /* |
| ** inv1_local: |
| ** cmp w0, 0 |
| ** csinv w0, w1, w2, ne |
| ** ret |
| */ |
| unsigned long long |
| inv1_local(unsigned a, unsigned b, unsigned c) |
| { |
| unsigned d = ~c; |
| unsigned t = a ? b : d; |
| return t; |
| } |
| |
| /* |
| ** inv_zero1: |
| ** cmp w0, 0 |
| ** csinv w0, wzr, w1, ne |
| ** ret |
| */ |
| unsigned long long |
| inv_zero1(unsigned a, unsigned b) |
| { |
| unsigned t = a ? 0 : ~b; |
| return t; |
| } |
| |
| /* |
| ** inv_zero2: |
| ** cmp w0, 0 |
| ** csinv w0, wzr, w1, eq |
| ** ret |
| */ |
| unsigned long long |
| inv_zero2(unsigned a, unsigned b) |
| { |
| unsigned t = a ? ~b : 0; |
| return t; |
| } |
| |
| |
| /* |
| ** inv2: |
| ** cmp w0, 0 |
| ** csinv w0, w2, w1, eq |
| ** ret |
| */ |
| unsigned long long |
| inv2(unsigned a, unsigned b, unsigned c) |
| { |
| unsigned t = a ? ~b : c; |
| return t; |
| } |
| |
| /* |
| ** inv2_local: |
| ** cmp w0, 0 |
| ** csinv w0, w2, w1, eq |
| ** ret |
| */ |
| unsigned long long |
| inv2_local(unsigned a, unsigned b, unsigned c) |
| { |
| unsigned d = ~b; |
| unsigned t = a ? d : c; |
| return t; |
| } |
| |
| /* |
| ** neg1: |
| ** cmp w0, 0 |
| ** csneg w0, w1, w2, ne |
| ** ret |
| */ |
| unsigned long long |
| neg1(unsigned a, unsigned b, unsigned c) |
| { |
| unsigned t = a ? b : -c; |
| return t; |
| } |
| |
| |
| /* |
| ** neg2: |
| ** cmp w0, 0 |
| ** csneg w0, w2, w1, eq |
| ** ret |
| */ |
| unsigned long long |
| neg2(unsigned a, unsigned b, unsigned c) |
| { |
| unsigned t = a ? -b : c; |
| return t; |
| } |
| |
| /* { dg-final { check-function-bodies "**" "" "" } } */ |