[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / sve2p1-intrinsics-cntp.ll
blob5a56b86c3b422ff1bb2e7252ba7dee73e41f34a5
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve2p1 < %s | FileCheck %s
3 ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme2 < %s | FileCheck %s
5 define i64 @test_svcntp_c8_vlx2(target("aarch64.svcount") %pn) nounwind {
6 ; CHECK-LABEL: test_svcntp_c8_vlx2:
7 ; CHECK:       // %bb.0:
8 ; CHECK-NEXT:    cntp x0, pn0.b, vlx2
9 ; CHECK-NEXT:    ret
10   %res = call i64 @llvm.aarch64.sve.cntp.c8(target("aarch64.svcount") %pn, i32 2)
11   ret i64 %res
14 define i64 @test_svcntp_c8_vlx4(target("aarch64.svcount") %pn) nounwind {
15 ; CHECK-LABEL: test_svcntp_c8_vlx4:
16 ; CHECK:       // %bb.0:
17 ; CHECK-NEXT:    cntp x0, pn0.b, vlx4
18 ; CHECK-NEXT:    ret
19   %res = call i64 @llvm.aarch64.sve.cntp.c8(target("aarch64.svcount") %pn, i32 4)
20   ret i64 %res
23 define i64 @test_svcntp_c16_vlx2(target("aarch64.svcount") %pn) nounwind {
24 ; CHECK-LABEL: test_svcntp_c16_vlx2:
25 ; CHECK:       // %bb.0:
26 ; CHECK-NEXT:    cntp x0, pn0.h, vlx2
27 ; CHECK-NEXT:    ret
28   %res = call i64 @llvm.aarch64.sve.cntp.c16(target("aarch64.svcount") %pn, i32 2)
29   ret i64 %res
32 define i64 @test_svcntp_c16_vlx4(target("aarch64.svcount") %pn) nounwind {
33 ; CHECK-LABEL: test_svcntp_c16_vlx4:
34 ; CHECK:       // %bb.0:
35 ; CHECK-NEXT:    cntp x0, pn0.h, vlx4
36 ; CHECK-NEXT:    ret
37   %res = call i64 @llvm.aarch64.sve.cntp.c16(target("aarch64.svcount") %pn, i32 4)
38   ret i64 %res
41 define i64 @test_svcntp_c32_vlx2(target("aarch64.svcount") %pn) nounwind {
42 ; CHECK-LABEL: test_svcntp_c32_vlx2:
43 ; CHECK:       // %bb.0:
44 ; CHECK-NEXT:    cntp x0, pn0.s, vlx2
45 ; CHECK-NEXT:    ret
46   %res = call i64 @llvm.aarch64.sve.cntp.c32(target("aarch64.svcount") %pn, i32 2)
47   ret i64 %res
50 define i64 @test_svcntp_c32_vlx4(target("aarch64.svcount") %pn) nounwind {
51 ; CHECK-LABEL: test_svcntp_c32_vlx4:
52 ; CHECK:       // %bb.0:
53 ; CHECK-NEXT:    cntp x0, pn0.s, vlx4
54 ; CHECK-NEXT:    ret
55   %res = call i64 @llvm.aarch64.sve.cntp.c32(target("aarch64.svcount") %pn, i32 4)
56   ret i64 %res
59 define i64 @test_svcntp_c64_vlx2(target("aarch64.svcount") %pn) nounwind {
60 ; CHECK-LABEL: test_svcntp_c64_vlx2:
61 ; CHECK:       // %bb.0:
62 ; CHECK-NEXT:    cntp x0, pn0.d, vlx2
63 ; CHECK-NEXT:    ret
64   %res = call i64 @llvm.aarch64.sve.cntp.c64(target("aarch64.svcount") %pn, i32 2)
65   ret i64 %res
68 define i64 @test_svcntp_c64_vlx4(target("aarch64.svcount") %pn) nounwind {
69 ; CHECK-LABEL: test_svcntp_c64_vlx4:
70 ; CHECK:       // %bb.0:
71 ; CHECK-NEXT:    cntp x0, pn0.d, vlx4
72 ; CHECK-NEXT:    ret
73   %res = call i64 @llvm.aarch64.sve.cntp.c64(target("aarch64.svcount") %pn, i32 4)
74   ret i64 %res
78 declare i64 @llvm.aarch64.sve.cntp.c8(target("aarch64.svcount"), i32)
79 declare i64 @llvm.aarch64.sve.cntp.c16(target("aarch64.svcount"), i32)
80 declare i64 @llvm.aarch64.sve.cntp.c32(target("aarch64.svcount"), i32)
81 declare i64 @llvm.aarch64.sve.cntp.c64(target("aarch64.svcount"), i32)