70 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64--linux-gnu -mattr=+sve < %s | FileCheck %s3 4define void @dead_masked_store(<vscale x 4 x i32> %val, ptr %a, <vscale x 4 x i1> %mask) {5; CHECK-LABEL: dead_masked_store:6; CHECK: // %bb.0:7; CHECK-NEXT: st1w { z0.s }, p0, [x0]8; CHECK-NEXT: ret9 call void @llvm.masked.store.nxv4i32(<vscale x 4 x i32> %val, ptr %a, i32 4, <vscale x 4 x i1> %mask)10 call void @llvm.masked.store.nxv4i32(<vscale x 4 x i32> %val, ptr %a, i32 4, <vscale x 4 x i1> %mask)11 ret void12}13 14define void @dead_masked_store_alltrue_same(<vscale x 4 x i32> %val, ptr %a, <vscale x 4 x i1> %mask) {15; CHECK-LABEL: dead_masked_store_alltrue_same:16; CHECK: // %bb.0:17; CHECK-NEXT: str z0, [x0]18; CHECK-NEXT: ret19 call void @llvm.masked.store.nxv4i32(<vscale x 4 x i32> %val, ptr %a, i32 4, <vscale x 4 x i1> %mask)20 call void @llvm.masked.store.nxv4i32(<vscale x 4 x i32> %val, ptr %a, i32 4, <vscale x 4 x i1> splat(i1 true))21 ret void22}23 24define void @dead_masked_store_alltrue_bigger(<vscale x 4 x i16> %val, <vscale x 4 x i32> %val1, ptr %a, <vscale x 4 x i1> %mask) {25; CHECK-LABEL: dead_masked_store_alltrue_bigger:26; CHECK: // %bb.0:27; CHECK-NEXT: str z1, [x0]28; CHECK-NEXT: ret29 call void @llvm.masked.store.nxv4i16(<vscale x 4 x i16> %val, ptr %a, i32 4, <vscale x 4 x i1> %mask)30 call void @llvm.masked.store.nxv4i32(<vscale x 4 x i32> %val1, ptr %a, i32 4, <vscale x 4 x i1> splat(i1 true))31 ret void32}33 34define void @dead_masked_store_alltrue_smaller(<vscale x 4 x i32> %val, <vscale x 4 x i16> %val1, ptr %a, <vscale x 4 x i1> %mask) {35; CHECK-LABEL: dead_masked_store_alltrue_smaller:36; CHECK: // %bb.0:37; CHECK-NEXT: ptrue p1.s38; CHECK-NEXT: st1w { z0.s }, p0, [x0]39; CHECK-NEXT: st1h { z1.s }, p1, [x0]40; CHECK-NEXT: ret41 call void @llvm.masked.store.nxv4i32(<vscale x 4 x i32> %val, ptr %a, i32 4, <vscale x 4 x i1> %mask)42 call void @llvm.masked.store.nxv4i16(<vscale x 4 x i16> %val1, ptr %a, i32 4, <vscale x 4 x i1> splat(i1 true))43 ret void44}45 46define void @dead_masked_store_same_mask_smaller_type(<vscale x 4 x i32> %val, <vscale x 4 x i16> %val1, ptr %a, <vscale x 4 x i1> %mask) {47; CHECK-LABEL: dead_masked_store_same_mask_smaller_type:48; CHECK: // %bb.0:49; CHECK-NEXT: st1w { z0.s }, p0, [x0]50; CHECK-NEXT: st1h { z1.s }, p0, [x0]51; CHECK-NEXT: ret52 call void @llvm.masked.store.nxv4i32(<vscale x 4 x i32> %val, ptr %a, i32 4, <vscale x 4 x i1> %mask)53 call void @llvm.masked.store.nxv4i16(<vscale x 4 x i16> %val1, ptr %a, i32 4, <vscale x 4 x i1> %mask)54 ret void55}56 57define void @dead_masked_store_same_mask_bigger_type(<vscale x 4 x i16> %val, <vscale x 4 x i32> %val1, ptr %a, <vscale x 4 x i1> %mask) {58; CHECK-LABEL: dead_masked_store_same_mask_bigger_type:59; CHECK: // %bb.0:60; CHECK-NEXT: st1h { z0.s }, p0, [x0]61; CHECK-NEXT: st1w { z1.s }, p0, [x0]62; CHECK-NEXT: ret63 call void @llvm.masked.store.nxv4i16(<vscale x 4 x i16> %val, ptr %a, i32 4, <vscale x 4 x i1> %mask)64 call void @llvm.masked.store.nxv4i32(<vscale x 4 x i32> %val1, ptr %a, i32 4, <vscale x 4 x i1> %mask)65 ret void66}67 68declare void @llvm.masked.store.nxv4i16(<vscale x 4 x i16>, ptr, i32, <vscale x 4 x i1>)69declare void @llvm.masked.store.nxv4i32(<vscale x 4 x i32>, ptr, i32, <vscale x 4 x i1>)70