1 /* { dg-do compile } */
2 /* { dg-options "-march=rv64gc_zbs -mabi=lp64" } */
3 /* { dg-skip-if "" { *-*-* } { "-O0" } } */
4
5 /* bset */
6 long
7 sub0 (long i, long j)
8 {
9 return i | (1L << j);
10 }
11
12 /* bset_mask */
13 long
14 sub1 (long i, long j)
15 {
16 return i | (1L << (j & 0x3f));
17 }
18
19 /* bset_1 */
20 long
21 sub2 (long i)
22 {
23 return 1L << i;
24 }
25
26 /* bset_1_mask */
27 long
28 sub3 (long i)
29 {
30 return 1L << (i & 0x3f);
31 }
32
33 /* bseti */
34 long
35 sub4 (long i)
36 {
37 return i | (1L << 20);
38 }
39
40 /* { dg-final { scan-assembler-times "bset\t" 4 } } */
41 /* { dg-final { scan-assembler-times "bseti\t" 1 } } */
42 /* { dg-final { scan-assembler-not "andi" } } */