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:
10 ; CHECK-NEXT: movt zt0, z0
12 call void @llvm.aarch64.sme.write.lane.zt.nxv16i8(i32 0, <vscale x 16 x i8> %zn, i32 0)
16 define void @test_write_zt_i8_1(<vscale x 16 x i8> %zn) #0 {
17 ; CHECK-LABEL: test_write_zt_i8_1:
19 ; CHECK-NEXT: movt zt0[1, mul vl], z0
21 call void @llvm.aarch64.sme.write.lane.zt.nxv16i8(i32 0, <vscale x 16 x i8> %zn, i32 1)
25 define void @test_write_zt_i16_2(<vscale x 8 x i16> %zn) #0 {
26 ; CHECK-LABEL: test_write_zt_i16_2:
28 ; CHECK-NEXT: movt zt0[2, mul vl], z0
30 call void @llvm.aarch64.sme.write.lane.zt.nxv8i16(i32 0, <vscale x 8 x i16> %zn, i32 2)
34 define void @test_write_zt_i32_3(<vscale x 4 x i32> %zn) #0 {
35 ; CHECK-LABEL: test_write_zt_i32_3:
37 ; CHECK-NEXT: movt zt0[3, mul vl], z0
39 call void @llvm.aarch64.sme.write.lane.zt.nxv4i32(i32 0, <vscale x 4 x i32> %zn, i32 3)
43 define void @test_write_zt_i64_1(<vscale x 2 x i64> %zn) #0 {
44 ; CHECK-LABEL: test_write_zt_i64_1:
46 ; CHECK-NEXT: movt zt0[1, mul vl], z0
48 call void @llvm.aarch64.sme.write.lane.zt.nxv2i64(i32 0, <vscale x 2 x i64> %zn, i32 1)
52 define void @test_write_zt_f16_2(<vscale x 8 x half> %zn) #0 {
53 ; CHECK-LABEL: test_write_zt_f16_2:
55 ; CHECK-NEXT: movt zt0[2, mul vl], z0
57 call void @llvm.aarch64.sme.write.lane.zt.nxv8f16(i32 0, <vscale x 8 x half> %zn, i32 2)
61 define void @test_write_zt_f32_3(<vscale x 4 x float> %zn) #0 {
62 ; CHECK-LABEL: test_write_zt_f32_3:
64 ; CHECK-NEXT: movt zt0[3, mul vl], z0
66 call void @llvm.aarch64.sme.write.lane.zt.nxv4f32(i32 0, <vscale x 4 x float> %zn, i32 3)
70 define void @test_write_zt_f64_1(<vscale x 2 x double> %zn) #0 {
71 ; CHECK-LABEL: test_write_zt_f64_1:
73 ; CHECK-NEXT: movt zt0[1, mul vl], z0
75 call void @llvm.aarch64.sme.write.lane.zt.nxv2f64(i32 0, <vscale x 2 x double> %zn, i32 1)
79 define void @test_write_zt_bf16_2(<vscale x 8 x bfloat> %zn) #0 {
80 ; CHECK-LABEL: test_write_zt_bf16_2:
82 ; CHECK-NEXT: movt zt0[2, mul vl], z0
84 call void @llvm.aarch64.sme.write.lane.zt.nxv8bf16(i32 0, <vscale x 8 x bfloat> %zn, i32 2)
90 define void @test_write_zt_i8(<vscale x 16 x i8> %v) #0 {
91 ; CHECK-LABEL: test_write_zt_i8:
93 ; CHECK-NEXT: movt zt0, z0
95 tail call void @llvm.aarch64.sme.write.zt.nxv16i8(i32 0, <vscale x 16 x i8> %v)
99 define void @test_write_zt_i16(<vscale x 8 x i16> %v) #0 {
100 ; CHECK-LABEL: test_write_zt_i16:
102 ; CHECK-NEXT: movt zt0, z0
104 tail call void @llvm.aarch64.sme.write.zt.nxv8i16(i32 0, <vscale x 8 x i16> %v)
108 define void @test_write_zt_i32(<vscale x 4 x i32> %v) #0 {
109 ; CHECK-LABEL: test_write_zt_i32:
111 ; CHECK-NEXT: movt zt0, z0
113 tail call void @llvm.aarch64.sme.write.zt.nxv4i32(i32 0, <vscale x 4 x i32> %v)
117 define void @test_write_zt_i64(<vscale x 2 x i64> %v) #0 {
118 ; CHECK-LABEL: test_write_zt_i64:
120 ; CHECK-NEXT: movt zt0, z0
122 tail call void @llvm.aarch64.sme.write.zt.nxv2i64(i32 0, <vscale x 2 x i64> %v)
126 define void @test_write_zt_f16(<vscale x 8 x half> %v) #0 {
127 ; CHECK-LABEL: test_write_zt_f16:
129 ; CHECK-NEXT: movt zt0, z0
131 tail call void @llvm.aarch64.sme.write.zt.nxv8f16(i32 0, <vscale x 8 x half> %v)
135 define void @test_write_zt_bf16(<vscale x 8 x bfloat> %v) #0 {
136 ; CHECK-LABEL: test_write_zt_bf16:
138 ; CHECK-NEXT: movt zt0, z0
140 tail call void @llvm.aarch64.sme.write.zt.nxv8bf16(i32 0, <vscale x 8 x bfloat> %v)
144 define void @test_write_zt_f32(<vscale x 4 x float> %v) #0 {
145 ; CHECK-LABEL: test_write_zt_f32:
147 ; CHECK-NEXT: movt zt0, z0
149 tail call void @llvm.aarch64.sme.write.zt.nxv4f32(i32 0, <vscale x 4 x float> %v)
153 define void @test_write_zt_f64(<vscale x 2 x double> %v) #0 {
154 ; CHECK-LABEL: test_write_zt_f64:
156 ; CHECK-NEXT: movt zt0, z0
158 tail call void @llvm.aarch64.sme.write.zt.nxv2f64(i32 0, <vscale x 2 x double> %v)
162 attributes #0 = { "target-features"="+sme2,+sme-lutv2" }