; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 ; RUN: llc -mtriple=aarch64--linux-gnu -mattr=+sve2p1 < %s | FileCheck %s ; RUN: llc -mtriple=aarch64--linux-gnu -mattr=+sve,+sme2p1 < %s | FileCheck %s ; RUN: llc -mtriple=aarch64--linux-gnu -mattr=+sme2p1 -force-streaming < %s | FileCheck %s ; RUN: llc -mtriple=aarch64--linux-gnu -mattr=+sme,+sve2p1 -force-streaming < %s | FileCheck %s define @test_dupq_i8 ( %zn) { ; CHECK-LABEL: test_dupq_i8: ; CHECK: // %bb.0: ; CHECK-NEXT: dupq z0.b, z0.b[15] ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.dup.laneq.nxv16i8( %zn, i32 15) ret %res } define @test_dupq_i16 ( %zn) { ; CHECK-LABEL: test_dupq_i16: ; CHECK: // %bb.0: ; CHECK-NEXT: dupq z0.h, z0.h[7] ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.dup.laneq.nxv8i16( %zn, i32 7) ret %res } define @test_dupq__i32 ( %zn) { ; CHECK-LABEL: test_dupq__i32: ; CHECK: // %bb.0: ; CHECK-NEXT: dupq z0.s, z0.s[3] ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.dup.laneq.nxv4i32( %zn, i32 3) ret %res } define @test_dupq_i64 ( %zn) { ; CHECK-LABEL: test_dupq_i64: ; CHECK: // %bb.0: ; CHECK-NEXT: dupq z0.d, z0.d[1] ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.dup.laneq.nxv2i64( %zn, i32 1) ret %res } define @test_dupq_f16( %zn) { ; CHECK-LABEL: test_dupq_f16: ; CHECK: // %bb.0: ; CHECK-NEXT: dupq z0.h, z0.h[4] ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.dup.laneq.nxv8f16( %zn, i32 4) ret %res } define @test_dupq_f32( %zn) { ; CHECK-LABEL: test_dupq_f32: ; CHECK: // %bb.0: ; CHECK-NEXT: dupq z0.s, z0.s[2] ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.dup.laneq.nxv4f32( %zn, i32 2) ret %res } define @test_dupq_f64( %zn) { ; CHECK-LABEL: test_dupq_f64: ; CHECK: // %bb.0: ; CHECK-NEXT: dupq z0.d, z0.d[0] ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.dup.laneq.nxv2f64( %zn, i32 0) ret %res } define @test_dupq_bf16( %zn) { ; CHECK-LABEL: test_dupq_bf16: ; CHECK: // %bb.0: ; CHECK-NEXT: dupq z0.h, z0.h[1] ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.dup.laneq.nxv8bf16( %zn, i32 1) ret %res } declare @llvm.aarch64.sve.dup.laneq.nxv16i8(, i32) declare @llvm.aarch64.sve.dup.laneq.nxv8i16(, i32) declare @llvm.aarch64.sve.dup.laneq.nxv4i32(, i32) declare @llvm.aarch64.sve.dup.laneq.nxv2i64(, i32) declare @llvm.aarch64.sve.dup.laneq.nxv8f16(, i32) declare @llvm.aarch64.sve.dup.laneq.nxv4f32(, i32) declare @llvm.aarch64.sve.dup.laneq.nxv2f64(, i32) declare @llvm.aarch64.sve.dup.laneq.nxv8bf16(, i32)