[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / llvm / test / CodeGen / AArch64 / sme2p1-intrinsics-zero.ll
blobfe7e2138e72db505fe6ec69f222cd14a332b6a4a
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]
11 ; CHECK-NEXT:    ret
12 entry:
13   tail call void @llvm.aarch64.sme.zero.za64.vg1x2(i32 %slice)
14   ret void
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]
22 ; CHECK-NEXT:    ret
23 entry:
24   %slice.max = add i32 %slice, 7
25   tail call void @llvm.aarch64.sme.zero.za64.vg1x2(i32 %slice.max)
26   ret void
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]
34 ; CHECK-NEXT:    ret
35 entry:
36   tail call void @llvm.aarch64.sme.zero.za64.vg1x4(i32 %slice)
37   ret void
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]
45 ; CHECK-NEXT:    ret
46 entry:
47   %slice.min = add i32 %slice, 1
48   tail call void @llvm.aarch64.sme.zero.za64.vg1x4(i32 %slice.min)
49   ret void
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]
57 ; CHECK-NEXT:    ret
58 entry:
59   tail call void @llvm.aarch64.sme.zero.za64.vg2x1(i32 %slice)
60   ret void
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]
68 ; CHECK-NEXT:    ret
69 entry:
70   %slice.max = add i32 %slice, 6
71   tail call void @llvm.aarch64.sme.zero.za64.vg2x1(i32 %slice.max)
72   ret void
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]
80 ; CHECK-NEXT:    ret
81 entry:
82   tail call void @llvm.aarch64.sme.zero.za64.vg2x2(i32 %slice)
83   ret void
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]
91 ; CHECK-NEXT:    ret
92 entry:
93   %slice.max = add i32 %slice, 2
94   tail call void @llvm.aarch64.sme.zero.za64.vg2x2(i32 %slice.max)
95   ret void
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]
103 ; CHECK-NEXT:    ret
104 entry:
105   tail call void @llvm.aarch64.sme.zero.za64.vg2x4(i32 %slice)
106   ret void
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]
114 ; CHECK-NEXT:    ret
115 entry:
116   %slice.min = add i32 %slice, 1
117   tail call void @llvm.aarch64.sme.zero.za64.vg2x4(i32 %slice.min)
118   ret void
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]
126 ; CHECK-NEXT:    ret
127 entry:
128   tail call void @llvm.aarch64.sme.zero.za64.vg4x1(i32 %slice)
129   ret void
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]
137 ; CHECK-NEXT:    ret
138 entry:
139   %slice.max = add i32 %slice, 4
140   tail call void @llvm.aarch64.sme.zero.za64.vg4x1(i32 %slice.max)
141   ret void
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]
149 ; CHECK-NEXT:    ret
150 entry:
151   tail call void @llvm.aarch64.sme.zero.za64.vg4x2(i32 %slice)
152   ret void
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]
160 ; CHECK-NEXT:    ret
161 entry:
162   %slice.max = add i32 %slice, 0
163   tail call void @llvm.aarch64.sme.zero.za64.vg4x2(i32 %slice.max)
164   ret void
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]
172 ; CHECK-NEXT:    ret
173 entry:
174   tail call void @llvm.aarch64.sme.zero.za64.vg4x4(i32 %slice)
175   ret void
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]
183 ; CHECK-NEXT:    ret
184 entry:
185   %slice.min = add i32 %slice, 1
186   tail call void @llvm.aarch64.sme.zero.za64.vg4x4(i32 %slice.min)
187   ret void
190 attributes #0 = { nounwind "target-features" = "+sme2p1"}