[TTI] getTypeBasedIntrinsicInstrCost - add basic handling for strided load/store...
[llvm-project.git] / llvm / test / CodeGen / AArch64 / sme2-intrinsics-write-zt.ll
blobd877eff1d3ad92dcdb5031a5cddfcee574d69d8b
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2 ; RUN: llc -verify-machineinstrs -force-streaming < %s | FileCheck %s
4 target triple = "aarch64-linux"
7 define void @test_write_zt_i8_0(<vscale x 16 x i8> %zn) #0 {
8 ; CHECK-LABEL: test_write_zt_i8_0:
9 ; CHECK:       // %bb.0:
10 ; CHECK-NEXT:    movt zt0, z0
11 ; CHECK-NEXT:    ret
12  call void @llvm.aarch64.sme.write.lane.zt.nxv16i8(i32 0, <vscale x 16 x i8> %zn, i32 0)
13  ret void
16 define void @test_write_zt_i8_1(<vscale x 16 x i8> %zn) #0 {
17 ; CHECK-LABEL: test_write_zt_i8_1:
18 ; CHECK:       // %bb.0:
19 ; CHECK-NEXT:    movt zt0[1, mul vl], z0
20 ; CHECK-NEXT:    ret
21  call void @llvm.aarch64.sme.write.lane.zt.nxv16i8(i32 0, <vscale x 16 x i8> %zn, i32 1)
22  ret void
25 define void @test_write_zt_i16_2(<vscale x 8 x i16> %zn) #0 {
26 ; CHECK-LABEL: test_write_zt_i16_2:
27 ; CHECK:       // %bb.0:
28 ; CHECK-NEXT:    movt zt0[2, mul vl], z0
29 ; CHECK-NEXT:    ret
30  call void @llvm.aarch64.sme.write.lane.zt.nxv8i16(i32 0, <vscale x 8 x i16> %zn, i32 2)
31  ret void
34 define void @test_write_zt_i32_3(<vscale x 4 x i32> %zn) #0 {
35 ; CHECK-LABEL: test_write_zt_i32_3:
36 ; CHECK:       // %bb.0:
37 ; CHECK-NEXT:    movt zt0[3, mul vl], z0
38 ; CHECK-NEXT:    ret
39  call void @llvm.aarch64.sme.write.lane.zt.nxv4i32(i32 0, <vscale x 4 x i32> %zn, i32 3)
40  ret void
43 define void @test_write_zt_i64_1(<vscale x 2 x i64> %zn) #0 {
44 ; CHECK-LABEL: test_write_zt_i64_1:
45 ; CHECK:       // %bb.0:
46 ; CHECK-NEXT:    movt zt0[1, mul vl], z0
47 ; CHECK-NEXT:    ret
48  call void @llvm.aarch64.sme.write.lane.zt.nxv2i64(i32 0, <vscale x 2 x i64> %zn, i32 1)
49  ret void
52 define void @test_write_zt_f16_2(<vscale x 8 x half> %zn) #0 {
53 ; CHECK-LABEL: test_write_zt_f16_2:
54 ; CHECK:       // %bb.0:
55 ; CHECK-NEXT:    movt zt0[2, mul vl], z0
56 ; CHECK-NEXT:    ret
57  call void @llvm.aarch64.sme.write.lane.zt.nxv8f16(i32 0, <vscale x 8 x half> %zn, i32 2)
58  ret void
61 define void @test_write_zt_f32_3(<vscale x 4 x float> %zn) #0 {
62 ; CHECK-LABEL: test_write_zt_f32_3:
63 ; CHECK:       // %bb.0:
64 ; CHECK-NEXT:    movt zt0[3, mul vl], z0
65 ; CHECK-NEXT:    ret
66  call void @llvm.aarch64.sme.write.lane.zt.nxv4f32(i32 0, <vscale x 4 x float> %zn, i32 3)
67  ret void
70 define void @test_write_zt_f64_1(<vscale x 2 x double> %zn) #0 {
71 ; CHECK-LABEL: test_write_zt_f64_1:
72 ; CHECK:       // %bb.0:
73 ; CHECK-NEXT:    movt zt0[1, mul vl], z0
74 ; CHECK-NEXT:    ret
75  call void @llvm.aarch64.sme.write.lane.zt.nxv2f64(i32 0, <vscale x 2 x double> %zn, i32 1)
76  ret void
79 define void @test_write_zt_bf16_2(<vscale x 8 x bfloat> %zn) #0 {
80 ; CHECK-LABEL: test_write_zt_bf16_2:
81 ; CHECK:       // %bb.0:
82 ; CHECK-NEXT:    movt zt0[2, mul vl], z0
83 ; CHECK-NEXT:    ret
84  call void @llvm.aarch64.sme.write.lane.zt.nxv8bf16(i32 0, <vscale x 8 x bfloat> %zn, i32 2)
85  ret void
88 ;; ALIAS
90 define void @test_write_zt_i8(<vscale x 16 x i8> %v) #0 {
91 ; CHECK-LABEL: test_write_zt_i8:
92 ; CHECK:       // %bb.0:
93 ; CHECK-NEXT:    movt zt0, z0
94 ; CHECK-NEXT:    ret
95   tail call void @llvm.aarch64.sme.write.zt.nxv16i8(i32 0, <vscale x 16 x i8> %v)
96   ret void
99 define void @test_write_zt_i16(<vscale x 8 x i16> %v) #0 {
100 ; CHECK-LABEL: test_write_zt_i16:
101 ; CHECK:       // %bb.0:
102 ; CHECK-NEXT:    movt zt0, z0
103 ; CHECK-NEXT:    ret
104   tail call void @llvm.aarch64.sme.write.zt.nxv8i16(i32 0, <vscale x 8 x i16> %v)
105   ret void
108 define void @test_write_zt_i32(<vscale x 4 x i32> %v) #0 {
109 ; CHECK-LABEL: test_write_zt_i32:
110 ; CHECK:       // %bb.0:
111 ; CHECK-NEXT:    movt zt0, z0
112 ; CHECK-NEXT:    ret
113   tail call void @llvm.aarch64.sme.write.zt.nxv4i32(i32 0, <vscale x 4 x i32> %v)
114   ret void
117 define void @test_write_zt_i64(<vscale x 2 x i64> %v) #0 {
118 ; CHECK-LABEL: test_write_zt_i64:
119 ; CHECK:       // %bb.0:
120 ; CHECK-NEXT:    movt zt0, z0
121 ; CHECK-NEXT:    ret
122   tail call void @llvm.aarch64.sme.write.zt.nxv2i64(i32 0, <vscale x 2 x i64> %v)
123   ret void
126 define void @test_write_zt_f16(<vscale x 8 x half> %v) #0 {
127 ; CHECK-LABEL: test_write_zt_f16:
128 ; CHECK:       // %bb.0:
129 ; CHECK-NEXT:    movt zt0, z0
130 ; CHECK-NEXT:    ret
131   tail call void @llvm.aarch64.sme.write.zt.nxv8f16(i32 0, <vscale x 8 x half> %v)
132   ret void
135 define void @test_write_zt_bf16(<vscale x 8 x bfloat> %v) #0 {
136 ; CHECK-LABEL: test_write_zt_bf16:
137 ; CHECK:       // %bb.0:
138 ; CHECK-NEXT:    movt zt0, z0
139 ; CHECK-NEXT:    ret
140   tail call void @llvm.aarch64.sme.write.zt.nxv8bf16(i32 0, <vscale x 8 x bfloat> %v)
141   ret void
144 define void @test_write_zt_f32(<vscale x 4 x float> %v) #0 {
145 ; CHECK-LABEL: test_write_zt_f32:
146 ; CHECK:       // %bb.0:
147 ; CHECK-NEXT:    movt zt0, z0
148 ; CHECK-NEXT:    ret
149   tail call void @llvm.aarch64.sme.write.zt.nxv4f32(i32 0, <vscale x 4 x float> %v)
150   ret void
153 define void @test_write_zt_f64(<vscale x 2 x double> %v) #0 {
154 ; CHECK-LABEL: test_write_zt_f64:
155 ; CHECK:       // %bb.0:
156 ; CHECK-NEXT:    movt zt0, z0
157 ; CHECK-NEXT:    ret
158   tail call void @llvm.aarch64.sme.write.zt.nxv2f64(i32 0, <vscale x 2 x double> %v)
159   ret void
162 attributes #0 = { "target-features"="+sme2,+sme-lutv2" }