| /* { dg-do compile } */ |
| /* { dg-options "-march=rv32gc_xtheadba" { target { rv32 } } } */ |
| /* { dg-options "-march=rv64gc_xtheadba" { target { rv64 } } } */ |
| /* { dg-skip-if "" { *-*-* } { "-O0" } } */ |
| |
| long |
| test_1 (long a, long b) |
| { |
| /* th.addsl aX, aX, 1 */ |
| return a + (b << 1); |
| } |
| |
| int |
| foos (short *x, int n) |
| { |
| /* th.addsl aX, aX, 1 */ |
| return x[n]; |
| } |
| |
| long |
| test_2 (long a, long b) |
| { |
| /* th.addsl aX, aX, 2 */ |
| return a + (b << 2); |
| } |
| |
| int |
| fooi (int *x, int n) |
| { |
| /* th.addsl aX, aX, 2 */ |
| return x[n]; |
| } |
| |
| long |
| test_3 (long a, long b) |
| { |
| /* th.addsl aX, aX, 3 */ |
| return a + (b << 3); |
| } |
| |
| long |
| fool (long *x, int n) |
| { |
| /* th.addsl aX, aX, 2 (rv32) */ |
| /* th.addsl aX, aX, 3 (rv64) */ |
| return x[n]; |
| } |
| |
| /* { dg-final { scan-assembler-times "th.addsl\[ \t\]*a\[0-9\]+,a\[0-9\]+,a\[0-9\]+,1" 2 } } */ |
| |
| /* { dg-final { scan-assembler-times "th.addsl\[ \t\]*a\[0-9\]+,a\[0-9\]+,a\[0-9\]+,2" 3 { target { rv32 } } } } */ |
| /* { dg-final { scan-assembler-times "th.addsl\[ \t\]*a\[0-9\]+,a\[0-9\]+,a\[0-9\]+,2" 2 { target { rv64 } } } } */ |
| |
| /* { dg-final { scan-assembler-times "th.addsl\[ \t\]*a\[0-9\]+,a\[0-9\]+,a\[0-9\]+,3" 1 { target { rv32 } } } } */ |
| /* { dg-final { scan-assembler-times "th.addsl\[ \t\]*a\[0-9\]+,a\[0-9\]+,a\[0-9\]+,3" 2 { target { rv64 } } } } */ |