; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 ; RUN: llc -verify-machineinstrs -force-streaming < %s | FileCheck %s target triple = "aarch64-linux" define void @test_write_zt_i8_0( %zn) #0 { ; CHECK-LABEL: test_write_zt_i8_0: ; CHECK: // %bb.0: ; CHECK-NEXT: movt zt0, z0 ; CHECK-NEXT: ret call void @llvm.aarch64.sme.write.lane.zt.nxv16i8(i32 0, %zn, i32 0) ret void } define void @test_write_zt_i8_1( %zn) #0 { ; CHECK-LABEL: test_write_zt_i8_1: ; CHECK: // %bb.0: ; CHECK-NEXT: movt zt0[1, mul vl], z0 ; CHECK-NEXT: ret call void @llvm.aarch64.sme.write.lane.zt.nxv16i8(i32 0, %zn, i32 1) ret void } define void @test_write_zt_i16_2( %zn) #0 { ; CHECK-LABEL: test_write_zt_i16_2: ; CHECK: // %bb.0: ; CHECK-NEXT: movt zt0[2, mul vl], z0 ; CHECK-NEXT: ret call void @llvm.aarch64.sme.write.lane.zt.nxv8i16(i32 0, %zn, i32 2) ret void } define void @test_write_zt_i32_3( %zn) #0 { ; CHECK-LABEL: test_write_zt_i32_3: ; CHECK: // %bb.0: ; CHECK-NEXT: movt zt0[3, mul vl], z0 ; CHECK-NEXT: ret call void @llvm.aarch64.sme.write.lane.zt.nxv4i32(i32 0, %zn, i32 3) ret void } define void @test_write_zt_i64_1( %zn) #0 { ; CHECK-LABEL: test_write_zt_i64_1: ; CHECK: // %bb.0: ; CHECK-NEXT: movt zt0[1, mul vl], z0 ; CHECK-NEXT: ret call void @llvm.aarch64.sme.write.lane.zt.nxv2i64(i32 0, %zn, i32 1) ret void } define void @test_write_zt_f16_2( %zn) #0 { ; CHECK-LABEL: test_write_zt_f16_2: ; CHECK: // %bb.0: ; CHECK-NEXT: movt zt0[2, mul vl], z0 ; CHECK-NEXT: ret call void @llvm.aarch64.sme.write.lane.zt.nxv8f16(i32 0, %zn, i32 2) ret void } define void @test_write_zt_f32_3( %zn) #0 { ; CHECK-LABEL: test_write_zt_f32_3: ; CHECK: // %bb.0: ; CHECK-NEXT: movt zt0[3, mul vl], z0 ; CHECK-NEXT: ret call void @llvm.aarch64.sme.write.lane.zt.nxv4f32(i32 0, %zn, i32 3) ret void } define void @test_write_zt_f64_1( %zn) #0 { ; CHECK-LABEL: test_write_zt_f64_1: ; CHECK: // %bb.0: ; CHECK-NEXT: movt zt0[1, mul vl], z0 ; CHECK-NEXT: ret call void @llvm.aarch64.sme.write.lane.zt.nxv2f64(i32 0, %zn, i32 1) ret void } define void @test_write_zt_bf16_2( %zn) #0 { ; CHECK-LABEL: test_write_zt_bf16_2: ; CHECK: // %bb.0: ; CHECK-NEXT: movt zt0[2, mul vl], z0 ; CHECK-NEXT: ret call void @llvm.aarch64.sme.write.lane.zt.nxv8bf16(i32 0, %zn, i32 2) ret void } ;; ALIAS define void @test_write_zt_i8( %v) #0 { ; CHECK-LABEL: test_write_zt_i8: ; CHECK: // %bb.0: ; CHECK-NEXT: movt zt0, z0 ; CHECK-NEXT: ret tail call void @llvm.aarch64.sme.write.zt.nxv16i8(i32 0, %v) ret void } define void @test_write_zt_i16( %v) #0 { ; CHECK-LABEL: test_write_zt_i16: ; CHECK: // %bb.0: ; CHECK-NEXT: movt zt0, z0 ; CHECK-NEXT: ret tail call void @llvm.aarch64.sme.write.zt.nxv8i16(i32 0, %v) ret void } define void @test_write_zt_i32( %v) #0 { ; CHECK-LABEL: test_write_zt_i32: ; CHECK: // %bb.0: ; CHECK-NEXT: movt zt0, z0 ; CHECK-NEXT: ret tail call void @llvm.aarch64.sme.write.zt.nxv4i32(i32 0, %v) ret void } define void @test_write_zt_i64( %v) #0 { ; CHECK-LABEL: test_write_zt_i64: ; CHECK: // %bb.0: ; CHECK-NEXT: movt zt0, z0 ; CHECK-NEXT: ret tail call void @llvm.aarch64.sme.write.zt.nxv2i64(i32 0, %v) ret void } define void @test_write_zt_f16( %v) #0 { ; CHECK-LABEL: test_write_zt_f16: ; CHECK: // %bb.0: ; CHECK-NEXT: movt zt0, z0 ; CHECK-NEXT: ret tail call void @llvm.aarch64.sme.write.zt.nxv8f16(i32 0, %v) ret void } define void @test_write_zt_bf16( %v) #0 { ; CHECK-LABEL: test_write_zt_bf16: ; CHECK: // %bb.0: ; CHECK-NEXT: movt zt0, z0 ; CHECK-NEXT: ret tail call void @llvm.aarch64.sme.write.zt.nxv8bf16(i32 0, %v) ret void } define void @test_write_zt_f32( %v) #0 { ; CHECK-LABEL: test_write_zt_f32: ; CHECK: // %bb.0: ; CHECK-NEXT: movt zt0, z0 ; CHECK-NEXT: ret tail call void @llvm.aarch64.sme.write.zt.nxv4f32(i32 0, %v) ret void } define void @test_write_zt_f64( %v) #0 { ; CHECK-LABEL: test_write_zt_f64: ; CHECK: // %bb.0: ; CHECK-NEXT: movt zt0, z0 ; CHECK-NEXT: ret tail call void @llvm.aarch64.sme.write.zt.nxv2f64(i32 0, %v) ret void } attributes #0 = { "target-features"="+sme2,+sme-lutv2" }