; 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 {, , , } @luti4_i16( %x) { ; CHECK-LABEL: luti4_i16: ; CHECK: // %bb.0: ; CHECK-NEXT: luti4 { z0.h - z3.h }, zt0, z0[1] ; CHECK-NEXT: ret %res = call {, , , } @llvm.aarch64.sme.luti4.lane.zt.x4.nxv8i16(i32 0, %x, i32 1) ret {, , , } %res } define {, , , } @luti4_i32( %x) { ; CHECK-LABEL: luti4_i32: ; CHECK: // %bb.0: ; CHECK-NEXT: luti4 { z0.s - z3.s }, zt0, z0[1] ; CHECK-NEXT: ret %res = call {, , , } @llvm.aarch64.sme.luti4.lane.zt.x4.nxv4i32(i32 0, %x, i32 1) ret {, , , } %res } define {, , , } @luti4_bf16( %x) { ; CHECK-LABEL: luti4_bf16: ; CHECK: // %bb.0: ; CHECK-NEXT: luti4 { z0.h - z3.h }, zt0, z0[1] ; CHECK-NEXT: ret %res = call {, , , } @llvm.aarch64.sme.luti4.lane.zt.x4.nxv8bf16(i32 0, %x, i32 1) ret {, , , } %res } define {, , , } @luti4_f16( %x) { ; CHECK-LABEL: luti4_f16: ; CHECK: // %bb.0: ; CHECK-NEXT: luti4 { z0.h - z3.h }, zt0, z0[1] ; CHECK-NEXT: ret %res = call {, , , } @llvm.aarch64.sme.luti4.lane.zt.x4.nxv8f16(i32 0, %x, i32 1) ret {, , , } %res } define {, , , } @luti4_f32( %x) { ; CHECK-LABEL: luti4_f32: ; CHECK: // %bb.0: ; CHECK-NEXT: luti4 { z0.s - z3.s }, zt0, z0[1] ; CHECK-NEXT: ret %res = call {, , , } @llvm.aarch64.sme.luti4.lane.zt.x4.nxv4f32(i32 0, %x, i32 1) ret {, , , } %res } declare {, , , } @llvm.aarch64.sme.luti4.lane.zt.x4.nxv8i16(i32, , i32) declare {, , , } @llvm.aarch64.sme.luti4.lane.zt.x4.nxv4i32(i32, , i32) declare {, , , } @llvm.aarch64.sme.luti4.lane.zt.x4.nxv8bf16(i32, , i32) declare {, , , } @llvm.aarch64.sme.luti4.lane.zt.x4.nxv8f16(i32, , i32) declare {, , , } @llvm.aarch64.sme.luti4.lane.zt.x4.nxv4f32(i32, , i32)