; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s ; Zeroing. define @mov_z_b( %pg) { ; CHECK-LABEL: mov_z_b: ; CHECK: // %bb.0: ; CHECK-NEXT: mov z0.b, p0/z, #1 // =0x1 ; CHECK-NEXT: ret %r = tail call @llvm.aarch64.sve.dup.nxv16i8( zeroinitializer, %pg, i8 1) ret %r } define @mov_z_h( %pg) { ; CHECK-LABEL: mov_z_h: ; CHECK: // %bb.0: ; CHECK-NEXT: mov z0.h, p0/z, #1 // =0x1 ; CHECK-NEXT: ret %r = tail call @llvm.aarch64.sve.dup.nxv8i16( zeroinitializer, %pg, i16 1) ret %r } define @mov_z_s( %pg) { ; CHECK-LABEL: mov_z_s: ; CHECK: // %bb.0: ; CHECK-NEXT: mov z0.s, p0/z, #1 // =0x1 ; CHECK-NEXT: ret %r = tail call @llvm.aarch64.sve.dup.nxv4i32( zeroinitializer, %pg, i32 1) ret %r } define @mov_z_d( %pg) { ; CHECK-LABEL: mov_z_d: ; CHECK: // %bb.0: ; CHECK-NEXT: mov z0.d, p0/z, #1 // =0x1 ; CHECK-NEXT: ret %r = tail call @llvm.aarch64.sve.dup.nxv2i64( zeroinitializer, %pg, i64 1) ret %r } ; Merging. define @mov_m_b( %zd, %pg) { ; CHECK-LABEL: mov_m_b: ; CHECK: // %bb.0: ; CHECK-NEXT: mov z0.b, p0/m, #1 // =0x1 ; CHECK-NEXT: ret %r = tail call @llvm.aarch64.sve.dup.nxv16i8( %zd, %pg, i8 1) ret %r } define @mov_m_h( %zd, %pg) { ; CHECK-LABEL: mov_m_h: ; CHECK: // %bb.0: ; CHECK-NEXT: mov z0.h, p0/m, #1 // =0x1 ; CHECK-NEXT: ret %r = tail call @llvm.aarch64.sve.dup.nxv8i16( %zd, %pg, i16 1) ret %r } define @mov_m_s( %zd, %pg) { ; CHECK-LABEL: mov_m_s: ; CHECK: // %bb.0: ; CHECK-NEXT: mov z0.s, p0/m, #1 // =0x1 ; CHECK-NEXT: ret %r = tail call @llvm.aarch64.sve.dup.nxv4i32( %zd, %pg, i32 1) ret %r } define @mov_m_d( %zd, %pg) { ; CHECK-LABEL: mov_m_d: ; CHECK: // %bb.0: ; CHECK-NEXT: mov z0.d, p0/m, #1 // =0x1 ; CHECK-NEXT: ret %r = tail call @llvm.aarch64.sve.dup.nxv2i64( %zd, %pg, i64 1) ret %r } declare @llvm.aarch64.sve.dup.nxv16i8(, , i8) declare @llvm.aarch64.sve.dup.nxv8i16(, , i16) declare @llvm.aarch64.sve.dup.nxv4i32(, , i32) declare @llvm.aarch64.sve.dup.nxv2i64(, , i64)