Skip to content

Commit 6259257

Browse files
RDSVL tests
1 parent 0d9c0ce commit 6259257

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

llvm/test/CodeGen/AArch64/sme-intrinsics-rdsvl.ll

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,55 @@ define i64 @sme_cntsd() {
4040
ret i64 %v
4141
}
4242

43+
define i64 @sme_cntsb_mul() {
44+
; CHECK-LABEL: sme_cntsb_mul:
45+
; CHECK: // %bb.0:
46+
; CHECK-NEXT: rdsvl x8, #1
47+
; CHECK-NEXT: lsl x0, x8, #1
48+
; CHECK-NEXT: ret
49+
%v = call i64 @llvm.aarch64.sme.cntsb()
50+
%res = mul i64 %v, 2
51+
ret i64 %res
52+
}
53+
54+
define i64 @sme_cntsh_mul() {
55+
; CHECK-LABEL: sme_cntsh_mul:
56+
; CHECK: // %bb.0:
57+
; CHECK-NEXT: rdsvl x8, #1
58+
; CHECK-NEXT: lsr x8, x8, #1
59+
; CHECK-NEXT: add x0, x8, x8, lsl #2
60+
; CHECK-NEXT: ret
61+
%v = call i64 @llvm.aarch64.sme.cntsh()
62+
%res = mul i64 %v, 5
63+
ret i64 %res
64+
}
65+
66+
define i64 @sme_cntsw_mul() {
67+
; CHECK-LABEL: sme_cntsw_mul:
68+
; CHECK: // %bb.0:
69+
; CHECK-NEXT: rdsvl x8, #1
70+
; CHECK-NEXT: lsr x8, x8, #2
71+
; CHECK-NEXT: lsl x9, x8, #3
72+
; CHECK-NEXT: sub x0, x9, x8
73+
; CHECK-NEXT: ret
74+
%v = call i64 @llvm.aarch64.sme.cntsw()
75+
%res = mul i64 %v, 7
76+
ret i64 %res
77+
}
78+
79+
define i64 @sme_cntsd_mul() {
80+
; CHECK-LABEL: sme_cntsd_mul:
81+
; CHECK: // %bb.0:
82+
; CHECK-NEXT: rdsvl x8, #1
83+
; CHECK-NEXT: lsr x8, x8, #3
84+
; CHECK-NEXT: add x8, x8, x8, lsl #1
85+
; CHECK-NEXT: lsl x0, x8, #2
86+
; CHECK-NEXT: ret
87+
%v = call i64 @llvm.aarch64.sme.cntsd()
88+
%res = mul i64 %v, 12
89+
ret i64 %res
90+
}
91+
4392
declare i64 @llvm.aarch64.sme.cntsb()
4493
declare i64 @llvm.aarch64.sme.cntsh()
4594
declare i64 @llvm.aarch64.sme.cntsw()

0 commit comments

Comments
 (0)