|
6 | 6 |
|
7 | 7 | #include <arm_sme.h>
|
8 | 8 |
|
9 |
| -// CHECK-C-LABEL: define dso_local i64 @test_svcntsb( |
| 9 | +// CHECK-C-LABEL: define dso_local range(i64 0, -9223372036854775808) i64 @test_svcntsb( |
10 | 10 | // CHECK-C-SAME: ) local_unnamed_addr #[[ATTR0:[0-9]+]] {
|
11 | 11 | // CHECK-C-NEXT: entry:
|
12 |
| -// CHECK-C-NEXT: [[TMP0:%.*]] = tail call i64 @llvm.aarch64.sme.cntsb() |
13 |
| -// CHECK-C-NEXT: ret i64 [[TMP0]] |
| 12 | +// CHECK-C-NEXT: [[TMP0:%.*]] = tail call i64 @llvm.aarch64.sme.cntsd() |
| 13 | +// CHECK-C-NEXT: [[MULSVL:%.*]] = shl nuw nsw i64 [[TMP0]], 3 |
| 14 | +// CHECK-C-NEXT: ret i64 [[MULSVL]] |
14 | 15 | //
|
15 |
| -// CHECK-CXX-LABEL: define dso_local noundef i64 @_Z12test_svcntsbv( |
| 16 | +// CHECK-CXX-LABEL: define dso_local noundef range(i64 0, -9223372036854775808) i64 @_Z12test_svcntsbv( |
16 | 17 | // CHECK-CXX-SAME: ) local_unnamed_addr #[[ATTR0:[0-9]+]] {
|
17 | 18 | // CHECK-CXX-NEXT: entry:
|
18 |
| -// CHECK-CXX-NEXT: [[TMP0:%.*]] = tail call i64 @llvm.aarch64.sme.cntsb() |
19 |
| -// CHECK-CXX-NEXT: ret i64 [[TMP0]] |
| 19 | +// CHECK-CXX-NEXT: [[TMP0:%.*]] = tail call i64 @llvm.aarch64.sme.cntsd() |
| 20 | +// CHECK-CXX-NEXT: [[MULSVL:%.*]] = shl nuw nsw i64 [[TMP0]], 3 |
| 21 | +// CHECK-CXX-NEXT: ret i64 [[MULSVL]] |
20 | 22 | //
|
21 | 23 | uint64_t test_svcntsb() {
|
22 | 24 | return svcntsb();
|
23 | 25 | }
|
24 | 26 |
|
25 |
| -// CHECK-C-LABEL: define dso_local i64 @test_svcntsh( |
| 27 | +// CHECK-C-LABEL: define dso_local range(i64 0, -9223372036854775808) i64 @test_svcntsh( |
26 | 28 | // CHECK-C-SAME: ) local_unnamed_addr #[[ATTR0]] {
|
27 | 29 | // CHECK-C-NEXT: entry:
|
28 |
| -// CHECK-C-NEXT: [[TMP0:%.*]] = tail call i64 @llvm.aarch64.sme.cntsh() |
29 |
| -// CHECK-C-NEXT: ret i64 [[TMP0]] |
| 30 | +// CHECK-C-NEXT: [[TMP0:%.*]] = tail call i64 @llvm.aarch64.sme.cntsd() |
| 31 | +// CHECK-C-NEXT: [[MULSVL:%.*]] = shl nuw nsw i64 [[TMP0]], 2 |
| 32 | +// CHECK-C-NEXT: ret i64 [[MULSVL]] |
30 | 33 | //
|
31 |
| -// CHECK-CXX-LABEL: define dso_local noundef i64 @_Z12test_svcntshv( |
| 34 | +// CHECK-CXX-LABEL: define dso_local noundef range(i64 0, -9223372036854775808) i64 @_Z12test_svcntshv( |
32 | 35 | // CHECK-CXX-SAME: ) local_unnamed_addr #[[ATTR0]] {
|
33 | 36 | // CHECK-CXX-NEXT: entry:
|
34 |
| -// CHECK-CXX-NEXT: [[TMP0:%.*]] = tail call i64 @llvm.aarch64.sme.cntsh() |
35 |
| -// CHECK-CXX-NEXT: ret i64 [[TMP0]] |
| 37 | +// CHECK-CXX-NEXT: [[TMP0:%.*]] = tail call i64 @llvm.aarch64.sme.cntsd() |
| 38 | +// CHECK-CXX-NEXT: [[MULSVL:%.*]] = shl nuw nsw i64 [[TMP0]], 2 |
| 39 | +// CHECK-CXX-NEXT: ret i64 [[MULSVL]] |
36 | 40 | //
|
37 | 41 | uint64_t test_svcntsh() {
|
38 | 42 | return svcntsh();
|
39 | 43 | }
|
40 | 44 |
|
41 |
| -// CHECK-C-LABEL: define dso_local i64 @test_svcntsw( |
| 45 | +// CHECK-C-LABEL: define dso_local range(i64 0, -9223372036854775808) i64 @test_svcntsw( |
42 | 46 | // CHECK-C-SAME: ) local_unnamed_addr #[[ATTR0]] {
|
43 | 47 | // CHECK-C-NEXT: entry:
|
44 |
| -// CHECK-C-NEXT: [[TMP0:%.*]] = tail call i64 @llvm.aarch64.sme.cntsw() |
45 |
| -// CHECK-C-NEXT: ret i64 [[TMP0]] |
| 48 | +// CHECK-C-NEXT: [[TMP0:%.*]] = tail call i64 @llvm.aarch64.sme.cntsd() |
| 49 | +// CHECK-C-NEXT: [[MULSVL:%.*]] = shl nuw nsw i64 [[TMP0]], 1 |
| 50 | +// CHECK-C-NEXT: ret i64 [[MULSVL]] |
46 | 51 | //
|
47 |
| -// CHECK-CXX-LABEL: define dso_local noundef i64 @_Z12test_svcntswv( |
| 52 | +// CHECK-CXX-LABEL: define dso_local noundef range(i64 0, -9223372036854775808) i64 @_Z12test_svcntswv( |
48 | 53 | // CHECK-CXX-SAME: ) local_unnamed_addr #[[ATTR0]] {
|
49 | 54 | // CHECK-CXX-NEXT: entry:
|
50 |
| -// CHECK-CXX-NEXT: [[TMP0:%.*]] = tail call i64 @llvm.aarch64.sme.cntsw() |
51 |
| -// CHECK-CXX-NEXT: ret i64 [[TMP0]] |
| 55 | +// CHECK-CXX-NEXT: [[TMP0:%.*]] = tail call i64 @llvm.aarch64.sme.cntsd() |
| 56 | +// CHECK-CXX-NEXT: [[MULSVL:%.*]] = shl nuw nsw i64 [[TMP0]], 1 |
| 57 | +// CHECK-CXX-NEXT: ret i64 [[MULSVL]] |
52 | 58 | //
|
53 | 59 | uint64_t test_svcntsw() {
|
54 | 60 | return svcntsw();
|
|
0 commit comments