; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme2 < %s | FileCheck %s ; lookup table expand one register define @luti2_i8( %x) { ; CHECK-LABEL: luti2_i8: ; CHECK: // %bb.0: ; CHECK-NEXT: luti2 z0.b, zt0, z0[15] ; CHECK-NEXT: ret %res = call @llvm.aarch64.sme.luti2.lane.zt.nxv16i8(i32 0, %x, i32 15) ret %res } define @luti2_i16( %x) { ; CHECK-LABEL: luti2_i16: ; CHECK: // %bb.0: ; CHECK-NEXT: luti2 z0.h, zt0, z0[15] ; CHECK-NEXT: ret %res = call @llvm.aarch64.sme.luti2.lane.zt.nxv8i16(i32 0, %x, i32 15) ret %res } define @luti2_i32( %x) { ; CHECK-LABEL: luti2_i32: ; CHECK: // %bb.0: ; CHECK-NEXT: luti2 z0.s, zt0, z0[15] ; CHECK-NEXT: ret %res = call @llvm.aarch64.sme.luti2.lane.zt.nxv4i32(i32 0, %x, i32 15) ret %res } define @luti2_f16( %x) { ; CHECK-LABEL: luti2_f16: ; CHECK: // %bb.0: ; CHECK-NEXT: luti2 z0.h, zt0, z0[15] ; CHECK-NEXT: ret %res = call @llvm.aarch64.sme.luti2.lane.zt.nxv8f16(i32 0, %x, i32 15) ret %res } define @luti2_bf16( %x) { ; CHECK-LABEL: luti2_bf16: ; CHECK: // %bb.0: ; CHECK-NEXT: luti2 z0.h, zt0, z0[15] ; CHECK-NEXT: ret %res = call @llvm.aarch64.sme.luti2.lane.zt.nxv8bf16(i32 0, %x, i32 15) ret %res } define @luti2_f32( %x) { ; CHECK-LABEL: luti2_f32: ; CHECK: // %bb.0: ; CHECK-NEXT: luti2 z0.s, zt0, z0[15] ; CHECK-NEXT: ret %res = call @llvm.aarch64.sme.luti2.lane.zt.nxv4f32(i32 0, %x, i32 15) ret %res } declare @llvm.aarch64.sme.luti2.lane.zt.nxv16i8(i32, , i32) declare @llvm.aarch64.sme.luti2.lane.zt.nxv8i16(i32, , i32) declare @llvm.aarch64.sme.luti2.lane.zt.nxv4i32(i32, , i32) declare @llvm.aarch64.sme.luti2.lane.zt.nxv8f16(i32, , i32) declare @llvm.aarch64.sme.luti2.lane.zt.nxv8bf16(i32, , i32) declare @llvm.aarch64.sme.luti2.lane.zt.nxv4f32(i32, , i32)