; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc -mtriple=aarch64--linux-gnu -mattr=+sve < %s | FileCheck %s define void @dead_masked_store( %val, ptr %a, %mask) { ; CHECK-LABEL: dead_masked_store: ; CHECK: // %bb.0: ; CHECK-NEXT: st1w { z0.s }, p0, [x0] ; CHECK-NEXT: ret call void @llvm.masked.store.nxv4i32( %val, ptr %a, i32 4, %mask) call void @llvm.masked.store.nxv4i32( %val, ptr %a, i32 4, %mask) ret void } define void @dead_masked_store_alltrue_same( %val, ptr %a, %mask) { ; CHECK-LABEL: dead_masked_store_alltrue_same: ; CHECK: // %bb.0: ; CHECK-NEXT: ptrue p0.s ; CHECK-NEXT: st1w { z0.s }, p0, [x0] ; CHECK-NEXT: ret %alltrue.ins = insertelement poison, i1 true, i32 0 %alltrue = shufflevector %alltrue.ins, poison, zeroinitializer call void @llvm.masked.store.nxv4i32( %val, ptr %a, i32 4, %mask) call void @llvm.masked.store.nxv4i32( %val, ptr %a, i32 4, %alltrue) ret void } define void @dead_masked_store_alltrue_bigger( %val, %val1, ptr %a, %mask) { ; CHECK-LABEL: dead_masked_store_alltrue_bigger: ; CHECK: // %bb.0: ; CHECK-NEXT: ptrue p0.s ; CHECK-NEXT: st1w { z1.s }, p0, [x0] ; CHECK-NEXT: ret %alltrue.ins = insertelement poison, i1 true, i32 0 %alltrue = shufflevector %alltrue.ins, poison, zeroinitializer call void @llvm.masked.store.nxv4i16( %val, ptr %a, i32 4, %mask) call void @llvm.masked.store.nxv4i32( %val1, ptr %a, i32 4, %alltrue) ret void } define void @dead_masked_store_alltrue_smaller( %val, %val1, ptr %a, %mask) { ; CHECK-LABEL: dead_masked_store_alltrue_smaller: ; CHECK: // %bb.0: ; CHECK-NEXT: ptrue p1.s ; CHECK-NEXT: st1w { z0.s }, p0, [x0] ; CHECK-NEXT: st1h { z1.s }, p1, [x0] ; CHECK-NEXT: ret %alltrue.ins = insertelement poison, i1 true, i32 0 %alltrue = shufflevector %alltrue.ins, poison, zeroinitializer call void @llvm.masked.store.nxv4i32( %val, ptr %a, i32 4, %mask) call void @llvm.masked.store.nxv4i16( %val1, ptr %a, i32 4, %alltrue) ret void } define void @dead_masked_store_same_mask_smaller_type( %val, %val1, ptr %a, %mask) { ; CHECK-LABEL: dead_masked_store_same_mask_smaller_type: ; CHECK: // %bb.0: ; CHECK-NEXT: st1w { z0.s }, p0, [x0] ; CHECK-NEXT: st1h { z1.s }, p0, [x0] ; CHECK-NEXT: ret call void @llvm.masked.store.nxv4i32( %val, ptr %a, i32 4, %mask) call void @llvm.masked.store.nxv4i16( %val1, ptr %a, i32 4, %mask) ret void } define void @dead_masked_store_same_mask_bigger_type( %val, %val1, ptr %a, %mask) { ; CHECK-LABEL: dead_masked_store_same_mask_bigger_type: ; CHECK: // %bb.0: ; CHECK-NEXT: st1h { z0.s }, p0, [x0] ; CHECK-NEXT: st1w { z1.s }, p0, [x0] ; CHECK-NEXT: ret call void @llvm.masked.store.nxv4i16( %val, ptr %a, i32 4, %mask) call void @llvm.masked.store.nxv4i32( %val1, ptr %a, i32 4, %mask) ret void } declare void @llvm.masked.store.nxv4i16(, *, i32, ) declare void @llvm.masked.store.nxv4i32(, *, i32, )