1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2 ; RUN: llc -verify-machineinstrs -force-streaming < %s | FileCheck %s
4 target triple = "aarch64-linux"
6 define void @test_svzero_za64_vg1x2(i32 %slice) #0 {
7 ; CHECK-LABEL: test_svzero_za64_vg1x2:
8 ; CHECK: // %bb.0: // %entry
9 ; CHECK-NEXT: mov w8, w0
10 ; CHECK-NEXT: zero za.d[w8, 0, vgx2]
13 tail call void @llvm.aarch64.sme.zero.za64.vg1x2(i32 %slice)
17 define void @test_svzero_za64_vg1x2_offset(i32 %slice) #0 {
18 ; CHECK-LABEL: test_svzero_za64_vg1x2_offset:
19 ; CHECK: // %bb.0: // %entry
20 ; CHECK-NEXT: mov w8, w0
21 ; CHECK-NEXT: zero za.d[w8, 7, vgx2]
24 %slice.max = add i32 %slice, 7
25 tail call void @llvm.aarch64.sme.zero.za64.vg1x2(i32 %slice.max)
29 define void @test_svzero_za64_vg1x4(i32 %slice) #0 {
30 ; CHECK-LABEL: test_svzero_za64_vg1x4:
31 ; CHECK: // %bb.0: // %entry
32 ; CHECK-NEXT: mov w8, w0
33 ; CHECK-NEXT: zero za.d[w8, 0, vgx4]
36 tail call void @llvm.aarch64.sme.zero.za64.vg1x4(i32 %slice)
40 define void @test_svzero_za64_vg1x4_offset(i32 %slice) #0 {
41 ; CHECK-LABEL: test_svzero_za64_vg1x4_offset:
42 ; CHECK: // %bb.0: // %entry
43 ; CHECK-NEXT: mov w8, w0
44 ; CHECK-NEXT: zero za.d[w8, 1, vgx4]
47 %slice.min = add i32 %slice, 1
48 tail call void @llvm.aarch64.sme.zero.za64.vg1x4(i32 %slice.min)
52 define void @test_svzero_za64_vg2x1(i32 %slice) #0 {
53 ; CHECK-LABEL: test_svzero_za64_vg2x1:
54 ; CHECK: // %bb.0: // %entry
55 ; CHECK-NEXT: mov w8, w0
56 ; CHECK-NEXT: zero za.d[w8, 0:1]
59 tail call void @llvm.aarch64.sme.zero.za64.vg2x1(i32 %slice)
63 define void @test_svzero_za64_vg2x1_offset(i32 %slice) #0 {
64 ; CHECK-LABEL: test_svzero_za64_vg2x1_offset:
65 ; CHECK: // %bb.0: // %entry
66 ; CHECK-NEXT: mov w8, w0
67 ; CHECK-NEXT: zero za.d[w8, 6:7]
70 %slice.max = add i32 %slice, 6
71 tail call void @llvm.aarch64.sme.zero.za64.vg2x1(i32 %slice.max)
75 define void @test_svzero_za64_vg2x2(i32 %slice) #0 {
76 ; CHECK-LABEL: test_svzero_za64_vg2x2:
77 ; CHECK: // %bb.0: // %entry
78 ; CHECK-NEXT: mov w8, w0
79 ; CHECK-NEXT: zero za.d[w8, 0:1, vgx2]
82 tail call void @llvm.aarch64.sme.zero.za64.vg2x2(i32 %slice)
86 define void @test_svzero_za64_vg2x2_offset(i32 %slice) #0 {
87 ; CHECK-LABEL: test_svzero_za64_vg2x2_offset:
88 ; CHECK: // %bb.0: // %entry
89 ; CHECK-NEXT: mov w8, w0
90 ; CHECK-NEXT: zero za.d[w8, 2:3, vgx2]
93 %slice.max = add i32 %slice, 2
94 tail call void @llvm.aarch64.sme.zero.za64.vg2x2(i32 %slice.max)
98 define void @test_svzero_za64_vg2x4(i32 %slice) #0 {
99 ; CHECK-LABEL: test_svzero_za64_vg2x4:
100 ; CHECK: // %bb.0: // %entry
101 ; CHECK-NEXT: mov w8, w0
102 ; CHECK-NEXT: zero za.d[w8, 0:1, vgx4]
105 tail call void @llvm.aarch64.sme.zero.za64.vg2x4(i32 %slice)
109 define void @test_svzero_za64_vg2x4_offset(i32 %slice) #0 {
110 ; CHECK-LABEL: test_svzero_za64_vg2x4_offset:
111 ; CHECK: // %bb.0: // %entry
112 ; CHECK-NEXT: add w8, w0, #1
113 ; CHECK-NEXT: zero za.d[w8, 0:1, vgx4]
116 %slice.min = add i32 %slice, 1
117 tail call void @llvm.aarch64.sme.zero.za64.vg2x4(i32 %slice.min)
121 define void @test_svzero_za64_vg4x1(i32 %slice) #0 {
122 ; CHECK-LABEL: test_svzero_za64_vg4x1:
123 ; CHECK: // %bb.0: // %entry
124 ; CHECK-NEXT: mov w8, w0
125 ; CHECK-NEXT: zero za.d[w8, 0:3]
128 tail call void @llvm.aarch64.sme.zero.za64.vg4x1(i32 %slice)
132 define void @test_svzero_za64_vg4x1_offset(i32 %slice) #0 {
133 ; CHECK-LABEL: test_svzero_za64_vg4x1_offset:
134 ; CHECK: // %bb.0: // %entry
135 ; CHECK-NEXT: mov w8, w0
136 ; CHECK-NEXT: zero za.d[w8, 4:7]
139 %slice.max = add i32 %slice, 4
140 tail call void @llvm.aarch64.sme.zero.za64.vg4x1(i32 %slice.max)
144 define void @test_svzero_za64_vg4x2(i32 %slice) #0 {
145 ; CHECK-LABEL: test_svzero_za64_vg4x2:
146 ; CHECK: // %bb.0: // %entry
147 ; CHECK-NEXT: mov w8, w0
148 ; CHECK-NEXT: zero za.d[w8, 0:3, vgx2]
151 tail call void @llvm.aarch64.sme.zero.za64.vg4x2(i32 %slice)
155 define void @test_svzero_za64_vg4x2_offset(i32 %slice) #0 {
156 ; CHECK-LABEL: test_svzero_za64_vg4x2_offset:
157 ; CHECK: // %bb.0: // %entry
158 ; CHECK-NEXT: mov w8, w0
159 ; CHECK-NEXT: zero za.d[w8, 0:3, vgx2]
162 %slice.max = add i32 %slice, 0
163 tail call void @llvm.aarch64.sme.zero.za64.vg4x2(i32 %slice.max)
167 define void @test_svzero_za64_vg4x4(i32 %slice) #0 {
168 ; CHECK-LABEL: test_svzero_za64_vg4x4:
169 ; CHECK: // %bb.0: // %entry
170 ; CHECK-NEXT: mov w8, w0
171 ; CHECK-NEXT: zero za.d[w8, 0:3, vgx4]
174 tail call void @llvm.aarch64.sme.zero.za64.vg4x4(i32 %slice)
178 define void @test_svzero_za64_vg4x4_offset(i32 %slice) #0 {
179 ; CHECK-LABEL: test_svzero_za64_vg4x4_offset:
180 ; CHECK: // %bb.0: // %entry
181 ; CHECK-NEXT: add w8, w0, #1
182 ; CHECK-NEXT: zero za.d[w8, 0:3, vgx4]
185 %slice.min = add i32 %slice, 1
186 tail call void @llvm.aarch64.sme.zero.za64.vg4x4(i32 %slice.min)
190 attributes #0 = { nounwind "target-features" = "+sme2p1"}